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