Home | History | Annotate | Line # | Download | only in hack
def.objclass.h revision 1.2
      1  1.2  mycroft /*
      2  1.2  mycroft  * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
      3  1.2  mycroft  *
      4  1.2  mycroft  *	$Id: def.objclass.h,v 1.2 1993/08/02 17:16:50 mycroft Exp $
      5  1.2  mycroft  */
      6  1.1      cgd 
      7  1.1      cgd /* definition of a class of objects */
      8  1.1      cgd 
      9  1.1      cgd struct objclass {
     10  1.1      cgd 	char *oc_name;		/* actual name */
     11  1.1      cgd 	char *oc_descr;		/* description when name unknown */
     12  1.1      cgd 	char *oc_uname;		/* called by user */
     13  1.1      cgd 	Bitfield(oc_name_known,1);
     14  1.1      cgd 	Bitfield(oc_merge,1);	/* merge otherwise equal objects */
     15  1.1      cgd 	char oc_olet;
     16  1.1      cgd 	schar oc_prob;		/* probability for mkobj() */
     17  1.1      cgd 	schar oc_delay;		/* delay when using such an object */
     18  1.1      cgd 	uchar oc_weight;
     19  1.1      cgd 	schar oc_oc1, oc_oc2;
     20  1.1      cgd 	int oc_oi;
     21  1.1      cgd #define	nutrition	oc_oi	/* for foods */
     22  1.1      cgd #define	a_ac		oc_oc1	/* for armors - only used in ARM_BONUS */
     23  1.1      cgd #define ARM_BONUS(obj)	((10 - objects[obj->otyp].a_ac) + obj->spe)
     24  1.1      cgd #define	a_can		oc_oc2	/* for armors */
     25  1.1      cgd #define bits		oc_oc1	/* for wands and rings */
     26  1.1      cgd 				/* wands */
     27  1.1      cgd #define		NODIR		1
     28  1.1      cgd #define		IMMEDIATE	2
     29  1.1      cgd #define		RAY		4
     30  1.1      cgd 				/* rings */
     31  1.1      cgd #define		SPEC		1	/* +n is meaningful */
     32  1.1      cgd #define	wldam		oc_oc1	/* for weapons and PICK_AXE */
     33  1.1      cgd #define	wsdam		oc_oc2	/* for weapons and PICK_AXE */
     34  1.1      cgd #define	g_val		oc_oi	/* for gems: value on exit */
     35  1.1      cgd };
     36  1.1      cgd 
     37  1.1      cgd extern struct objclass objects[];
     38  1.1      cgd 
     39  1.1      cgd /* definitions of all object-symbols */
     40  1.1      cgd 
     41  1.1      cgd #define	ILLOBJ_SYM	'\\'
     42  1.1      cgd #define	AMULET_SYM	'"'
     43  1.1      cgd #define	FOOD_SYM	'%'
     44  1.1      cgd #define	WEAPON_SYM	')'
     45  1.1      cgd #define	TOOL_SYM	'('
     46  1.1      cgd #define	BALL_SYM	'0'
     47  1.1      cgd #define	CHAIN_SYM	'_'
     48  1.1      cgd #define	ROCK_SYM	'`'
     49  1.1      cgd #define	ARMOR_SYM	'['
     50  1.1      cgd #define	POTION_SYM	'!'
     51  1.1      cgd #define	SCROLL_SYM	'?'
     52  1.1      cgd #define	WAND_SYM	'/'
     53  1.1      cgd #define	RING_SYM	'='
     54  1.1      cgd #define	GEM_SYM		'*'
     55  1.1      cgd /* Other places with explicit knowledge of object symbols:
     56  1.1      cgd  * ....shk.c:	char shtypes[] = "=/)%?![";
     57  1.1      cgd  * mklev.c:	"=/)%?![<>"
     58  1.1      cgd  * hack.mkobj.c:	char mkobjstr[] = "))[[!!!!????%%%%/=**";
     59  1.1      cgd  * hack.apply.c:   otmp = getobj("0#%", "put in");
     60  1.1      cgd  * hack.eat.c:     otmp = getobj("%", "eat");
     61  1.1      cgd  * hack.invent.c:          if(index("!%?[)=*(0/\"", sym)){
     62  1.1      cgd  * hack.invent.c:    || index("%?!*",otmp->olet))){
     63  1.1      cgd  */
     64