1 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
2 /* def.objects.h - version 1.0.3 */
4 /* objects have letter " % ) ( 0 _ ` [ ! ? / = * */
6 #include "def.objclass.h"
8 struct objclass objects
[] = {
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 },
15 #define FOOD(name,prob,delay,weight,nutrition) { name, NULL, NULL, 1, 1,\
16 FOOD_SYM, prob, delay, weight, 0, 0, nutrition }
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 */
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),
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),
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 }
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),
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 },
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),
157 #define POTION(name,color) { name, color, NULL, 0, 1,\
158 POTION_SYM, 0, 0, 2, 0, 0, 0 }
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"),
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),
209 #define WAND(name,metal,prob,flags) { name, metal, NULL, 0, 0,\
210 WAND_SYM, prob, 0, 3, flags, 0, 0 }
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),
234 #define RING(name,stone,spec) { name, stone, NULL, 0, 0,\
235 RING_SYM, 0, 0, 1, spec, 0, 0 }
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),
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 }
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
)];