Merge from vendor branch OPENSSH:
[dragonfly.git] / games / hack / def.objects.h
1 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
2 /* def.objects.h - version 1.0.3 */
3
4 /* objects have letter " % ) ( 0 _ ` [ ! ? / = * */
5 #include "config.h"
6 #include "def.objclass.h"
7
8 struct objclass objects[] = {
9
10         { "strange object", NULL, NULL, 1, 0,
11                 ILLOBJ_SYM, 0, 0, 0, 0, 0, 0 },
12         { "amulet of Yendor", NULL, NULL, 1, 0,
13                 AMULET_SYM, 100, 0, 2, 0, 0, 0 },
14
15 #define FOOD(name,prob,delay,weight,nutrition)  { name, NULL, NULL, 1, 1,\
16                 FOOD_SYM, prob, delay, weight, 0, 0, nutrition }
17
18 /* dog eats foods 0-4 but prefers 1 above 0,2,3,4 */
19 /* food 4 can be read */
20 /* food 5 improves your vision */
21 /* food 6 makes you stronger (like Popeye) */
22 /* foods CORPSE up to CORPSE+52 are cadavers */
23
24         FOOD("food ration",     50, 5, 4, 800),
25         FOOD("tripe ration",    20, 1, 2, 200),
26         FOOD("pancake",         3, 1, 1, 200),
27         FOOD("dead lizard",     3, 0, 1, 40),
28         FOOD("fortune cookie",  7, 0, 1, 40),
29         FOOD("carrot",          2, 0, 1, 50),
30         FOOD("tin",             7, 0, 1, 0),
31         FOOD("orange",          1, 0, 1, 80),
32         FOOD("apple",           1, 0, 1, 50),
33         FOOD("pear",            1, 0, 1, 50),
34         FOOD("melon",           1, 0, 1, 100),
35         FOOD("banana",          1, 0, 1, 80),
36         FOOD("candy bar",       1, 0, 1, 100),
37         FOOD("egg",             1, 0, 1, 80),
38         FOOD("clove of garlic", 1, 0, 1, 40),
39         FOOD("lump of royal jelly", 0, 0, 1, 200),
40
41         FOOD("dead human",      0, 4, 40, 400),
42         FOOD("dead giant ant",  0, 1, 3, 30),
43         FOOD("dead giant bat",  0, 1, 3, 30),
44         FOOD("dead centaur",    0, 5, 50, 500),
45         FOOD("dead dragon",     0, 15, 150, 1500),
46         FOOD("dead floating eye",       0, 1, 1, 10),
47         FOOD("dead freezing sphere",    0, 1, 1, 10),
48         FOOD("dead gnome",      0, 1, 10, 100),
49         FOOD("dead hobgoblin",  0, 2, 20, 200),
50         FOOD("dead stalker",    0, 4, 40, 400),
51         FOOD("dead jackal",     0, 1, 10, 100),
52         FOOD("dead kobold",     0, 1, 10, 100),
53         FOOD("dead leprechaun", 0, 4, 40, 400),
54         FOOD("dead mimic",      0, 4, 40, 400),
55         FOOD("dead nymph",      0, 4, 40, 400),
56         FOOD("dead orc",        0, 2, 20, 200),
57         FOOD("dead purple worm",        0, 7, 70, 700),
58         FOOD("dead quasit",     0, 2, 20, 200),
59         FOOD("dead rust monster",       0, 5, 50, 500),
60         FOOD("dead snake",      0, 1, 10, 100),
61         FOOD("dead troll",      0, 4, 40, 400),
62         FOOD("dead umber hulk", 0, 5, 50, 500),
63         FOOD("dead vampire",    0, 4, 40, 400),
64         FOOD("dead wraith",     0, 1, 1, 10),
65         FOOD("dead xorn",       0, 7, 70, 700),
66         FOOD("dead yeti",       0, 7, 70, 700),
67         FOOD("dead zombie",     0, 1, 3, 30),
68         FOOD("dead acid blob",  0, 1, 3, 30),
69         FOOD("dead giant beetle",       0, 1, 1, 10),
70         FOOD("dead cockatrice", 0, 1, 3, 30),
71         FOOD("dead dog",        0, 2, 20, 200),
72         FOOD("dead ettin",      0, 1, 3, 30),
73         FOOD("dead fog cloud",  0, 1, 1, 10),
74         FOOD("dead gelatinous cube",    0, 1, 10, 100),
75         FOOD("dead homunculus", 0, 2, 20, 200),
76         FOOD("dead imp",        0, 1, 1, 10),
77         FOOD("dead jaguar",     0, 3, 30, 300),
78         FOOD("dead killer bee", 0, 1, 1, 10),
79         FOOD("dead leocrotta",  0, 5, 50, 500),
80         FOOD("dead minotaur",   0, 7, 70, 700),
81         FOOD("dead nurse",      0, 4, 40, 400),
82         FOOD("dead owlbear",    0, 7, 70, 700),
83         FOOD("dead piercer",    0, 2, 20, 200),
84         FOOD("dead quivering blob",     0, 1, 10, 100),
85         FOOD("dead giant rat",  0, 1, 3, 30),
86         FOOD("dead giant scorpion",     0, 1, 10, 100),
87         FOOD("dead tengu",      0, 3, 30, 300),
88         FOOD("dead unicorn",    0, 3, 30, 300),
89         FOOD("dead violet fungi",       0, 1, 10, 100),
90         FOOD("dead long worm",  0, 5, 50, 500),
91 /* %% wt of long worm should be proportional to its length */
92         FOOD("dead xan",        0, 3, 30, 300),
93         FOOD("dead yellow light",       0, 1, 1, 10),
94         FOOD("dead zruty",      0, 6, 60, 600),
95
96 /* weapons ... - ROCK come several at a time */
97 /* weapons ... - (ROCK-1) are shot using idem+(BOW-ARROW) */
98 /* weapons AXE, SWORD, THSWORD are good for worm-cutting */
99 /* weapons (PICK-)AXE, DAGGER, CRYSKNIFE are good for tin-opening */
100 #define WEAPON(name,prob,wt,ldam,sdam)  { name, NULL, NULL, 1, 0 /*%%*/,\
101                 WEAPON_SYM, prob, 0, wt, ldam, sdam, 0 }
102
103         WEAPON("arrow",         7, 0, 6, 6),
104         WEAPON("sling bullet",  7, 0, 4, 6),
105         WEAPON("crossbow bolt", 7, 0, 4, 6),
106         WEAPON("dart",          7, 0, 3, 2),
107         WEAPON("rock",          6, 1, 3, 3),
108         WEAPON("boomerang",     2, 3, 9, 9),
109         WEAPON("mace",          9, 3, 6, 7),
110         WEAPON("axe",           6, 3, 6, 4),
111         WEAPON("flail",         6, 3, 6, 5),
112         WEAPON("long sword",    8, 3, 8, 12),
113         WEAPON("two handed sword",      6, 4, 12, 6),
114         WEAPON("dagger",        6, 3, 4, 3),
115         WEAPON("worm tooth",    0, 4, 2, 2),
116         WEAPON("crysknife",     0, 3, 10, 10),
117         WEAPON("spear",         6, 3, 6, 8),
118         WEAPON("bow",           6, 3, 4, 6),
119         WEAPON("sling",         5, 3, 6, 6),
120         WEAPON("crossbow",      6, 3, 4, 6),
121
122         { "whistle", "whistle", NULL, 0, 0,
123                 TOOL_SYM, 90, 0, 2, 0, 0, 0 },
124         { "magic whistle", "whistle", NULL, 0, 0,
125                 TOOL_SYM, 10, 0, 2, 0, 0, 0 },
126         { "expensive camera", NULL, NULL, 1, 1,
127                 TOOL_SYM, 0, 0, 3, 0, 0, 0 },
128         { "ice box", "large box", NULL, 0, 0,
129                 TOOL_SYM, 0, 0, 40, 0, 0, 0 },
130         { "pick-axe", NULL, NULL, 1, 1,
131                 TOOL_SYM, 0, 0, 5, 6, 3, 0 },
132         { "can opener", NULL, NULL, 1, 1,
133                 TOOL_SYM, 0, 0, 1, 0, 0, 0 },
134         { "heavy iron ball", NULL, NULL, 1, 0,
135                 BALL_SYM, 100, 0, 20, 0, 0, 0 },
136         { "iron chain", NULL, NULL, 1, 0,
137                 CHAIN_SYM, 100, 0, 20, 0, 0, 0 },
138         { "enormous rock", NULL, NULL, 1, 0,
139                 ROCK_SYM, 100, 0, 200 /* > MAX_CARR_CAP */, 0, 0, 0 },
140
141 #define ARMOR(name,prob,delay,ac,can)   { name, NULL, NULL, 1, 0,\
142                 ARMOR_SYM, prob, delay, 8, ac, can, 0 }
143         ARMOR("helmet",          3, 1, 9, 0),
144         ARMOR("plate mail",              5, 5, 3, 2),
145         ARMOR("splint mail",     8, 5, 4, 1),
146         ARMOR("banded mail",    10, 5, 4, 0),
147         ARMOR("chain mail",             10, 5, 5, 1),
148         ARMOR("scale mail",             10, 5, 6, 0),
149         ARMOR("ring mail",              15, 5, 7, 0),
150         /* the armors below do not rust */
151         ARMOR("studded leather armor", 13, 3, 7, 1),
152         ARMOR("leather armor",  17, 3, 8, 0),
153         ARMOR("elven cloak",     5, 0, 9, 3),
154         ARMOR("shield",          3, 0, 9, 0),
155         ARMOR("pair of gloves",  1, 1, 9, 0),
156
157 #define POTION(name,color)      { name, color, NULL, 0, 1,\
158                 POTION_SYM, 0, 0, 2, 0, 0, 0 }
159
160         POTION("restore strength",      "orange"),
161         POTION("booze",         "bubbly"),
162         POTION("invisibility",  "glowing"),
163         POTION("fruit juice",   "smoky"),
164         POTION("healing",       "pink"),
165         POTION("paralysis",     "puce"),
166         POTION("monster detection",     "purple"),
167         POTION("object detection",      "yellow"),
168         POTION("sickness",      "white"),
169         POTION("confusion",     "swirly"),
170         POTION("gain strength", "purple-red"),
171         POTION("speed",         "ruby"),
172         POTION("blindness",     "dark green"),
173         POTION("gain level",    "emerald"),
174         POTION("extra healing", "sky blue"),
175         POTION("levitation",    "brown"),
176         POTION(NULL,    "brilliant blue"),
177         POTION(NULL,    "clear"),
178         POTION(NULL,    "magenta"),
179         POTION(NULL,    "ebony"),
180
181 #define SCROLL(name,text,prob) { name, text, NULL, 0, 1,\
182                 SCROLL_SYM, prob, 0, 3, 0, 0, 0 }
183         SCROLL("mail",  "KIRJE", 0),
184         SCROLL("enchant armor", "ZELGO MER", 6),
185         SCROLL("destroy armor", "JUYED AWK YACC", 5),
186         SCROLL("confuse monster", "NR 9", 5),
187         SCROLL("scare monster", "XIXAXA XOXAXA XUXAXA", 4),
188         SCROLL("blank paper", "READ ME", 3),
189         SCROLL("remove curse", "PRATYAVAYAH", 6),
190         SCROLL("enchant weapon", "DAIYEN FOOELS", 6),
191         SCROLL("damage weapon", "HACKEM MUCHE", 5),
192         SCROLL("create monster", "LEP GEX VEN ZEA", 5),
193         SCROLL("taming", "PRIRUTSENIE", 1),
194         SCROLL("genocide", "ELBIB YLOH",2),
195         SCROLL("light", "VERR YED HORRE", 10),
196         SCROLL("teleportation", "VENZAR BORGAVVE", 5),
197         SCROLL("gold detection", "THARR", 4),
198         SCROLL("food detection", "YUM YUM", 1),
199         SCROLL("identify", "KERNOD WEL", 18),
200         SCROLL("magic mapping", "ELAM EBOW", 5),
201         SCROLL("amnesia", "DUAM XNAHT", 3),
202         SCROLL("fire", "ANDOVA BEGARIN", 5),
203         SCROLL("punishment", "VE FORBRYDERNE", 1),
204         SCROLL(NULL, "VELOX NEB", 0),
205         SCROLL(NULL, "FOOBIE BLETCH", 0),
206         SCROLL(NULL, "TEMOV", 0),
207         SCROLL(NULL, "GARVEN DEH", 0),
208
209 #define WAND(name,metal,prob,flags)     { name, metal, NULL, 0, 0,\
210                 WAND_SYM, prob, 0, 3, flags, 0, 0 }
211
212         WAND("light",   "iridium",              10,     NODIR),
213         WAND("secret door detection",   "tin",  5,      NODIR),
214         WAND("create monster",  "platinum",     5,      NODIR),
215         WAND("wishing",         "glass",        1,      NODIR),
216         WAND("striking",        "zinc",         9,      IMMEDIATE),
217         WAND("slow monster",    "balsa",        5,      IMMEDIATE),
218         WAND("speed monster",   "copper",       5,      IMMEDIATE),
219         WAND("undead turning",  "silver",       5,      IMMEDIATE),
220         WAND("polymorph",       "brass",        5,      IMMEDIATE),
221         WAND("cancellation",    "maple",        5,      IMMEDIATE),
222         WAND("teleportation",   "pine",         5,      IMMEDIATE),
223         WAND("make invisible",  "marble",       9,      IMMEDIATE),
224         WAND("digging",         "iron",         5,      RAY),
225         WAND("magic missile",   "aluminium",    10,     RAY),
226         WAND("fire",    "steel",        5,      RAY),
227         WAND("sleep",   "curved",       5,      RAY),
228         WAND("cold",    "short",        5,      RAY),
229         WAND("death",   "long",         1,      RAY),
230         WAND(NULL,      "oak",          0,      0),
231         WAND(NULL,      "ebony",        0,      0),
232         WAND(NULL,      "runed",        0,      0),
233
234 #define RING(name,stone,spec)   { name, stone, NULL, 0, 0,\
235                 RING_SYM, 0, 0, 1, spec, 0, 0 }
236
237         RING("adornment",       "engagement",   0),
238         RING("teleportation",   "wooden",       0),
239         RING("regeneration",    "black onyx",   0),
240         RING("searching",       "topaz",        0),
241         RING("see invisible",   "pearl",        0),
242         RING("stealth",         "sapphire",     0),
243         RING("levitation",      "moonstone",    0),
244         RING("poison resistance", "agate",      0),
245         RING("aggravate monster", "tiger eye",  0),
246         RING("hunger",          "shining",      0),
247         RING("fire resistance", "gold",         0),
248         RING("cold resistance", "copper",       0),
249         RING("protection from shape changers", "diamond", 0),
250         RING("conflict",        "jade",         0),
251         RING("gain strength",   "ruby",         SPEC),
252         RING("increase damage", "silver",       SPEC),
253         RING("protection",      "granite",      SPEC),
254         RING("warning",         "wire",         0),
255         RING("teleport control", "iron",        0),
256         RING(NULL,              "ivory",        0),
257         RING(NULL,              "blackened",    0),
258
259 /* gems ************************************************************/
260 #define GEM(name,color,prob,gval)       { name, color, NULL, 0, 1,\
261                 GEM_SYM, prob, 0, 1, 0, 0, gval }
262         GEM("diamond", "blue", 1, 4000),
263         GEM("ruby", "red", 1, 3500),
264         GEM("sapphire", "blue", 1, 3000),
265         GEM("emerald", "green", 1, 2500),
266         GEM("turquoise", "green", 1, 2000),
267         GEM("aquamarine", "blue", 1, 1500),
268         GEM("tourmaline", "green", 1, 1000),
269         GEM("topaz", "yellow", 1, 900),
270         GEM("opal", "yellow", 1, 800),
271         GEM("garnet", "dark", 1, 700),
272         GEM("amethyst", "violet", 2, 650),
273         GEM("agate", "green", 2, 600),
274         GEM("onyx", "white", 2, 550),
275         GEM("jasper", "yellowish brown", 2, 500),
276         GEM("jade", "green", 2, 450),
277         GEM("worthless piece of blue glass", "blue", 20, 0),
278         GEM("worthless piece of red glass", "red", 20, 0),
279         GEM("worthless piece of yellow glass", "yellow", 20, 0),
280         GEM("worthless piece of green glass", "green", 20, 0),
281         { NULL, NULL, NULL, 0, 0, ILLOBJ_SYM, 0, 0, 0, 0, 0, 0 }
282 };
283
284 char obj_symbols[] = {
285         ILLOBJ_SYM, AMULET_SYM, FOOD_SYM, WEAPON_SYM, TOOL_SYM,
286         BALL_SYM, CHAIN_SYM, ROCK_SYM, ARMOR_SYM, POTION_SYM, SCROLL_SYM,
287         WAND_SYM, RING_SYM, GEM_SYM, 0 };
288 int bases[sizeof(obj_symbols)];