Source:NetHack 2.2a/objclass.h

Below is the full text to objclass.h from the source code of NetHack 2.2a. To link to a particular line, write [[NetHack 2.2a/objclass.h#line123 ]], for example.

Warning! This is the source code from an old release. For the latest release, see Source code

1.   /*	SCCS Id: @(#)objclass.h	2.1	87/09/23 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.     4.    /* definition of a class of objects */ 5.    6.    struct objclass { 7.   	char *oc_name;		/* actual name */ 8.   	char *oc_descr;		/* description when name unknown */ 9.   	char *oc_uname;		/* called by user */ 10.  	Bitfield(oc_name_known,1); 11.  	Bitfield(oc_merge,1);	/* merge otherwise equal objects */ 12.  	char oc_olet; 13.  	schar oc_prob;		/* probability for mkobj */ 14.  	schar oc_delay;		/* delay when using such an object */ 15.  	uchar oc_weight; 16.  	schar oc_oc1, oc_oc2; 17.  	int oc_oi; 18.  #define	nutrition	oc_oi	/* for foods */ 19.  #define	a_ac		oc_oc1	/* for armors - only used in ARM_BONUS */ 20.  #define ARM_BONUS(obj)	((10 - objects[obj->otyp].a_ac) + obj->spe) 21.  #define	a_can		oc_oc2	/* for armors */ 22.  #define bits		oc_oc1	/* for wands and rings */ 23.  				/* wands */ 24.  #define		NODIR		1 25.  #define		IMMEDIATE	2 26.  #define		RAY		4 27.  				/* rings */ 28.  #define		SPEC		1	/* +n is meaningful */ 29.    /* Check the AD&D rules! The FIRST is small monster damage. */ 30.   #define	wsdam		oc_oc1	/* for weapons and PICK_AXE */ 31.  #define	wldam		oc_oc2	/* for weapons and PICK_AXE */ 32.   33.   #define	g_val		oc_oi	/* for gems: value on exit */ 34.  #ifdef MSDOS 35.  	int oc_descr_i;		/* where the description comes from */ 36.  #endif 37.  #ifdef SPELLS 38.  #define spl_lev		oc_oi	/* for books: spell level */ 39.  #endif 40.  };  41.    42.   extern struct objclass objects[]; 43.   44.   /* definitions of all object-symbols */ 45.   46.   #define	RANDOM_SYM	'\0'	/* used for generating random objects */ 47.  #define	ILLOBJ_SYM	'\\' 48.  #define	AMULET_SYM	'"'  49.   #define	FOOD_SYM	'%'  50.   #define	WEAPON_SYM	')'  51.   #define	TOOL_SYM	'('  52.   #define	BALL_SYM	'0'  53.   #define	CHAIN_SYM	'_'  54.   #define	ROCK_SYM	'`'  55.   #define	ARMOR_SYM	'['  56.   #define	POTION_SYM	'!'  57.   #define	SCROLL_SYM	'?'  58.   #define	WAND_SYM	'/'  59.   #define	RING_SYM	'='  60.   #define	GEM_SYM		'*'  61.   #define	GOLD_SYM	'$'  62.   #ifdef SPELLS  63.   #define	SPBOOK_SYM	'+'	/* actually SPELL-book */  64.   #endif  65.   /* Other places with explicit knowledge of object symbols:  66.    * mklev.c:	"=/)%?![<>+"	(used for calculating Amulet apperances)  67.    * mkobj.c:	char mkobjstr[] = "))[[!!!!????%%%%/=**+";  68.    * apply.c:   otmp = getobj("0#%", "put in");  69.    * eat.c:     otmp = getobj("%", "eat");  70.    * invent.c:          if(index("!%?[)=*(0/+\"", sym)){  71.    * invent.c:    || index("%?!*+",otmp->olet))){  72.    */