1/*	$NetBSD: def.objects.h,v 1.5 2001/03/25 20:43:58 jsm Exp $	*/
2
3/*
4 * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
5 * Amsterdam
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are
10 * met:
11 *
12 * - Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
14 *
15 * - Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 *
19 * - Neither the name of the Stichting Centrum voor Wiskunde en
20 * Informatica, nor the names of its contributors may be used to endorse or
21 * promote products derived from this software without specific prior
22 * written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
25 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
26 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
27 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
28 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
30 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
31 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
32 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 */
36
37/*
38 * Copyright (c) 1982 Jay Fenlason <hack@gnu.org>
39 * All rights reserved.
40 *
41 * Redistribution and use in source and binary forms, with or without
42 * modification, are permitted provided that the following conditions
43 * are met:
44 * 1. Redistributions of source code must retain the above copyright
45 *    notice, this list of conditions and the following disclaimer.
46 * 2. Redistributions in binary form must reproduce the above copyright
47 *    notice, this list of conditions and the following disclaimer in the
48 *    documentation and/or other materials provided with the distribution.
49 * 3. The name of the author may not be used to endorse or promote products
50 *    derived from this software without specific prior written permission.
51 *
52 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
53 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
54 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
55 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
56 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
57 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
58 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
59 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
60 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
61 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
62 */
63
64#ifndef _DEF_OBJECTS_H_
65#define _DEF_OBJECTS_H_
66/* objects have letter " % ) ( 0 _ ` [ ! ? / = * */
67#include "config.h"
68#include "def.objclass.h"
69
70struct objclass objects[] = {
71
72	{ "strange object", NULL, NULL, 1, 0,
73		ILLOBJ_SYM, 0, 0, 0, 0, 0, 0 },
74	{ "amulet of Yendor", NULL, NULL, 1, 0,
75		AMULET_SYM, 100, 0, 2, 0, 0, 0 },
76
77#define	FOOD(name,prob,delay,weight,nutrition)	{ name, NULL, NULL, 1, 1,\
78		FOOD_SYM, prob, delay, weight, 0, 0, nutrition }
79
80/* dog eats foods 0-4 but prefers 1 above 0,2,3,4 */
81/* food 4 can be read */
82/* food 5 improves your vision */
83/* food 6 makes you stronger (like Popeye) */
84/* foods CORPSE up to CORPSE+52 are cadavers */
85
86	FOOD("food ration", 	50, 5, 4, 800),
87	FOOD("tripe ration",	20, 1, 2, 200),
88	FOOD("pancake",		3, 1, 1, 200),
89	FOOD("dead lizard",	3, 0, 1, 40),
90	FOOD("fortune cookie",	7, 0, 1, 40),
91	FOOD("carrot",		2, 0, 1, 50),
92	FOOD("tin",		7, 0, 1, 0),
93	FOOD("orange",		1, 0, 1, 80),
94	FOOD("apple",		1, 0, 1, 50),
95	FOOD("pear",		1, 0, 1, 50),
96	FOOD("melon",		1, 0, 1, 100),
97	FOOD("banana",		1, 0, 1, 80),
98	FOOD("candy bar",	1, 0, 1, 100),
99	FOOD("egg",		1, 0, 1, 80),
100	FOOD("clove of garlic",	1, 0, 1, 40),
101	FOOD("lump of royal jelly", 0, 0, 1, 200),
102
103	FOOD("dead human",	0, 4, 40, 400),
104	FOOD("dead giant ant",	0, 1, 3, 30),
105	FOOD("dead giant bat",	0, 1, 3, 30),
106	FOOD("dead centaur",	0, 5, 50, 500),
107	FOOD("dead dragon",	0, 15, 150, 1500),
108	FOOD("dead floating eye",	0, 1, 1, 10),
109	FOOD("dead freezing sphere",	0, 1, 1, 10),
110	FOOD("dead gnome",	0, 1, 10, 100),
111	FOOD("dead hobgoblin",	0, 2, 20, 200),
112	FOOD("dead stalker",	0, 4, 40, 400),
113	FOOD("dead jackal",	0, 1, 10, 100),
114	FOOD("dead kobold",	0, 1, 10, 100),
115	FOOD("dead leprechaun",	0, 4, 40, 400),
116	FOOD("dead mimic",	0, 4, 40, 400),
117	FOOD("dead nymph",	0, 4, 40, 400),
118	FOOD("dead orc",	0, 2, 20, 200),
119	FOOD("dead purple worm",	0, 7, 70, 700),
120	FOOD("dead quasit",	0, 2, 20, 200),
121	FOOD("dead rust monster",	0, 5, 50, 500),
122	FOOD("dead snake",	0, 1, 10, 100),
123	FOOD("dead troll",	0, 4, 40, 400),
124	FOOD("dead umber hulk",	0, 5, 50, 500),
125	FOOD("dead vampire",	0, 4, 40, 400),
126	FOOD("dead wraith",	0, 1, 1, 10),
127	FOOD("dead xorn",	0, 7, 70, 700),
128	FOOD("dead yeti",	0, 7, 70, 700),
129	FOOD("dead zombie",	0, 1, 3, 30),
130	FOOD("dead acid blob",	0, 1, 3, 30),
131	FOOD("dead giant beetle",	0, 1, 1, 10),
132	FOOD("dead cockatrice",	0, 1, 3, 30),
133	FOOD("dead dog",	0, 2, 20, 200),
134	FOOD("dead ettin",	0, 1, 3, 30),
135	FOOD("dead fog cloud",	0, 1, 1, 10),
136	FOOD("dead gelatinous cube",	0, 1, 10, 100),
137	FOOD("dead homunculus",	0, 2, 20, 200),
138	FOOD("dead imp",	0, 1, 1, 10),
139	FOOD("dead jaguar",	0, 3, 30, 300),
140	FOOD("dead killer bee",	0, 1, 1, 10),
141	FOOD("dead leocrotta",	0, 5, 50, 500),
142	FOOD("dead minotaur",	0, 7, 70, 700),
143	FOOD("dead nurse",	0, 4, 40, 400),
144	FOOD("dead owlbear",	0, 7, 70, 700),
145	FOOD("dead piercer",	0, 2, 20, 200),
146	FOOD("dead quivering blob",	0, 1, 10, 100),
147	FOOD("dead giant rat",	0, 1, 3, 30),
148	FOOD("dead giant scorpion",	0, 1, 10, 100),
149	FOOD("dead tengu",	0, 3, 30, 300),
150	FOOD("dead unicorn",	0, 3, 30, 300),
151	FOOD("dead violet fungi",	0, 1, 10, 100),
152	FOOD("dead long worm",	0, 5, 50, 500),
153/* %% wt of long worm should be proportional to its length */
154	FOOD("dead xan",	0, 3, 30, 300),
155	FOOD("dead yellow light",	0, 1, 1, 10),
156	FOOD("dead zruty",	0, 6, 60, 600),
157
158/* weapons ... - ROCK come several at a time */
159/* weapons ... - (ROCK-1) are shot using idem+(BOW-ARROW) */
160/* weapons AXE, SWORD, THSWORD are good for worm-cutting */
161/* weapons (PICK-)AXE, DAGGER, CRYSKNIFE are good for tin-opening */
162#define WEAPON(name,prob,wt,ldam,sdam)	{ name, NULL, NULL, 1, 0 /*%%*/,\
163		WEAPON_SYM, prob, 0, wt, ldam, sdam, 0 }
164
165	WEAPON("arrow",		7, 0, 6, 6),
166	WEAPON("sling bullet",	7, 0, 4, 6),
167	WEAPON("crossbow bolt",	7, 0, 4, 6),
168	WEAPON("dart",		7, 0, 3, 2),
169	WEAPON("rock",		6, 1, 3, 3),
170	WEAPON("boomerang",	2, 3, 9, 9),
171	WEAPON("mace",		9, 3, 6, 7),
172	WEAPON("axe",		6, 3, 6, 4),
173	WEAPON("flail",		6, 3, 6, 5),
174	WEAPON("long sword",	8, 3, 8, 12),
175	WEAPON("two handed sword",	6, 4, 12, 6),
176	WEAPON("dagger",	6, 3, 4, 3),
177	WEAPON("worm tooth",	0, 4, 2, 2),
178	WEAPON("crysknife",	0, 3, 10, 10),
179	WEAPON("spear",		6, 3, 6, 8),
180	WEAPON("bow",		6, 3, 4, 6),
181	WEAPON("sling",		5, 3, 6, 6),
182	WEAPON("crossbow",	6, 3, 4, 6),
183
184	{ "whistle", "whistle", NULL, 0, 0,
185		TOOL_SYM, 90, 0, 2, 0, 0, 0 },
186	{ "magic whistle", "whistle", NULL, 0, 0,
187		TOOL_SYM, 10, 0, 2, 0, 0, 0 },
188	{ "expensive camera", NULL, NULL, 1, 1,
189		TOOL_SYM, 0, 0, 3, 0, 0, 0 },
190	{ "ice box", "large box", NULL, 0, 0,
191		TOOL_SYM, 0, 0, 40, 0, 0, 0 },
192	{ "pick-axe", NULL, NULL, 1, 1,
193		TOOL_SYM, 0, 0, 5, 6, 3, 0 },
194	{ "can opener", NULL, NULL, 1, 1,
195		TOOL_SYM, 0, 0, 1, 0, 0, 0 },
196	{ "heavy iron ball", NULL, NULL, 1, 0,
197		BALL_SYM, 100, 0, 20, 0, 0, 0 },
198	{ "iron chain", NULL, NULL, 1, 0,
199		CHAIN_SYM, 100, 0, 20, 0, 0, 0 },
200	{ "enormous rock", NULL, NULL, 1, 0,
201		ROCK_SYM, 100, 0, 200 /* > MAX_CARR_CAP */, 0, 0, 0 },
202
203#define ARMOR(name,prob,delay,ac,can)	{ name, NULL, NULL, 1, 0,\
204		ARMOR_SYM, prob, delay, 8, ac, can, 0 }
205	ARMOR("helmet",		 3, 1, 9, 0),
206	ARMOR("plate mail",		 5, 5, 3, 2),
207	ARMOR("splint mail",	 8, 5, 4, 1),
208	ARMOR("banded mail",	10, 5, 4, 0),
209	ARMOR("chain mail",		10, 5, 5, 1),
210	ARMOR("scale mail",		10, 5, 6, 0),
211	ARMOR("ring mail",		15, 5, 7, 0),
212	/* the armors below do not rust */
213	ARMOR("studded leather armor", 13, 3, 7, 1),
214	ARMOR("leather armor",	17, 3, 8, 0),
215	ARMOR("elven cloak",	 5, 0, 9, 3),
216	ARMOR("shield",		 3, 0, 9, 0),
217	ARMOR("pair of gloves",	 1, 1, 9, 0),
218
219#define POTION(name,color)	{ name, color, NULL, 0, 1,\
220		POTION_SYM, 0, 0, 2, 0, 0, 0 }
221
222	POTION("restore strength",	"orange"),
223	POTION("booze",		"bubbly"),
224	POTION("invisibility",	"glowing"),
225	POTION("fruit juice",	"smoky"),
226	POTION("healing",	"pink"),
227	POTION("paralysis",	"puce"),
228	POTION("monster detection",	"purple"),
229	POTION("object detection",	"yellow"),
230	POTION("sickness",	"white"),
231	POTION("confusion",	"swirly"),
232	POTION("gain strength",	"purple-red"),
233	POTION("speed",		"ruby"),
234	POTION("blindness",	"dark green"),
235	POTION("gain level",	"emerald"),
236	POTION("extra healing",	"sky blue"),
237	POTION("levitation",	"brown"),
238	POTION(NULL,	"brilliant blue"),
239	POTION(NULL,	"clear"),
240	POTION(NULL,	"magenta"),
241	POTION(NULL,	"ebony"),
242
243#define SCROLL(name,text,prob) { name, text, NULL, 0, 1,\
244		SCROLL_SYM, prob, 0, 3, 0, 0, 0 }
245	SCROLL("mail",	"KIRJE", 0),
246	SCROLL("enchant armor", "ZELGO MER", 6),
247	SCROLL("destroy armor", "JUYED AWK YACC", 5),
248	SCROLL("confuse monster", "NR 9", 5),
249	SCROLL("scare monster", "XIXAXA XOXAXA XUXAXA", 4),
250	SCROLL("blank paper", "READ ME", 3),
251	SCROLL("remove curse", "PRATYAVAYAH", 6),
252	SCROLL("enchant weapon", "DAIYEN FOOELS", 6),
253	SCROLL("damage weapon", "HACKEM MUCHE", 5),
254	SCROLL("create monster", "LEP GEX VEN ZEA", 5),
255	SCROLL("taming", "PRIRUTSENIE", 1),
256	SCROLL("genocide", "ELBIB YLOH",2),
257	SCROLL("light", "VERR YED HORRE", 10),
258	SCROLL("teleportation", "VENZAR BORGAVVE", 5),
259	SCROLL("gold detection", "THARR", 4),
260	SCROLL("food detection", "YUM YUM", 1),
261	SCROLL("identify", "KERNOD WEL", 18),
262	SCROLL("magic mapping", "ELAM EBOW", 5),
263	SCROLL("amnesia", "DUAM XNAHT", 3),
264	SCROLL("fire", "ANDOVA BEGARIN", 5),
265	SCROLL("punishment", "VE FORBRYDERNE", 1),
266	SCROLL(NULL, "VELOX NEB", 0),
267	SCROLL(NULL, "FOOBIE BLETCH", 0),
268	SCROLL(NULL, "TEMOV", 0),
269	SCROLL(NULL, "GARVEN DEH", 0),
270
271#define	WAND(name,metal,prob,flags)	{ name, metal, NULL, 0, 0,\
272		WAND_SYM, prob, 0, 3, flags, 0, 0 }
273
274	WAND("light",	"iridium",		10,	NODIR),
275	WAND("secret door detection",	"tin",	5,	NODIR),
276	WAND("create monster",	"platinum",	5,	NODIR),
277	WAND("wishing",		"glass",	1,	NODIR),
278	WAND("striking",	"zinc",		9,	IMMEDIATE),
279	WAND("slow monster",	"balsa",	5,	IMMEDIATE),
280	WAND("speed monster",	"copper",	5,	IMMEDIATE),
281	WAND("undead turning",	"silver",	5,	IMMEDIATE),
282	WAND("polymorph",	"brass",	5,	IMMEDIATE),
283	WAND("cancellation",	"maple",	5,	IMMEDIATE),
284	WAND("teleportation",	"pine",		5,	IMMEDIATE),
285	WAND("make invisible",	"marble",	9,	IMMEDIATE),
286	WAND("digging",		"iron",		5,	RAY),
287	WAND("magic missile",	"aluminium",	10,	RAY),
288	WAND("fire",	"steel",	5,	RAY),
289	WAND("sleep",	"curved",	5,	RAY),
290	WAND("cold",	"short",	5,	RAY),
291	WAND("death",	"long",		1,	RAY),
292	WAND(NULL,	"oak",		0,	0),
293	WAND(NULL,	"ebony",	0,	0),
294	WAND(NULL,	"runed",	0,	0),
295
296#define	RING(name,stone,spec)	{ name, stone, NULL, 0, 0,\
297		RING_SYM, 0, 0, 1, spec, 0, 0 }
298
299	RING("adornment",	"engagement",	0),
300	RING("teleportation",	"wooden",	0),
301	RING("regeneration",	"black onyx",	0),
302	RING("searching",	"topaz",	0),
303	RING("see invisible",	"pearl",	0),
304	RING("stealth",		"sapphire",	0),
305	RING("levitation",	"moonstone",	0),
306	RING("poison resistance", "agate",	0),
307	RING("aggravate monster", "tiger eye",	0),
308	RING("hunger",		"shining",	0),
309	RING("fire resistance",	"gold",		0),
310	RING("cold resistance",	"copper",	0),
311	RING("protection from shape changers", "diamond", 0),
312	RING("conflict",	"jade",		0),
313	RING("gain strength",	"ruby",		SPEC),
314	RING("increase damage",	"silver",	SPEC),
315	RING("protection",	"granite",	SPEC),
316	RING("warning",		"wire",		0),
317	RING("teleport control", "iron",	0),
318	RING(NULL,		"ivory",	0),
319	RING(NULL,		"blackened",	0),
320
321/* gems ************************************************************/
322#define	GEM(name,color,prob,gval)	{ name, color, NULL, 0, 1,\
323		GEM_SYM, prob, 0, 1, 0, 0, gval }
324	GEM("diamond", "blue", 1, 4000),
325	GEM("ruby", "red", 1, 3500),
326	GEM("sapphire", "blue", 1, 3000),
327	GEM("emerald", "green", 1, 2500),
328	GEM("turquoise", "green", 1, 2000),
329	GEM("aquamarine", "blue", 1, 1500),
330	GEM("tourmaline", "green", 1, 1000),
331	GEM("topaz", "yellow", 1, 900),
332	GEM("opal", "yellow", 1, 800),
333	GEM("garnet", "dark", 1, 700),
334	GEM("amethyst", "violet", 2, 650),
335	GEM("agate", "green", 2, 600),
336	GEM("onyx", "white", 2, 550),
337	GEM("jasper", "yellowish brown", 2, 500),
338	GEM("jade", "green", 2, 450),
339	GEM("worthless piece of blue glass", "blue", 20, 0),
340	GEM("worthless piece of red glass", "red", 20, 0),
341	GEM("worthless piece of yellow glass", "yellow", 20, 0),
342	GEM("worthless piece of green glass", "green", 20, 0),
343	{ NULL, NULL, NULL, 0, 0, ILLOBJ_SYM, 0, 0, 0, 0, 0, 0 }
344};
345
346const char obj_symbols[] = {
347	ILLOBJ_SYM, AMULET_SYM, FOOD_SYM, WEAPON_SYM, TOOL_SYM,
348	BALL_SYM, CHAIN_SYM, ROCK_SYM, ARMOR_SYM, POTION_SYM, SCROLL_SYM,
349	WAND_SYM, RING_SYM, GEM_SYM, 0 };
350int bases[sizeof(obj_symbols)];
351#endif /* _DEF_OBJECTS_H_ */
352