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