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