pc-hack

PC HACK 3.61 source code (archival)
git clone http://frotz.net/git/pc-hack.git
Log | Files | Refs

objclass.h (1922B)


      1 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
      2 /* objclass.h - version 1.0.3 */
      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 #define	wldam		oc_oc1	/* for weapons and PICK_AXE */
     30 #define	wsdam		oc_oc2	/* for weapons and PICK_AXE */
     31 #define	g_val		oc_oi	/* for gems: value on exit */
     32 #ifdef MSDOS
     33 	int oc_descr_i;		/* where the description comes from */
     34 #endif
     35 };
     36 
     37 extern struct objclass objects[];
     38 
     39 /* definitions of all object-symbols */
     40 
     41 #define	ILLOBJ_SYM	'\\'
     42 #define	AMULET_SYM	'"'
     43 #define	FOOD_SYM	'%'
     44 #define	WEAPON_SYM	')'
     45 #define	TOOL_SYM	'('
     46 #define	BALL_SYM	'0'
     47 #define	CHAIN_SYM	'_'
     48 #define	ROCK_SYM	'`'
     49 #define	ARMOR_SYM	'['
     50 #define	POTION_SYM	'!'
     51 #define	SCROLL_SYM	'?'
     52 #define	WAND_SYM	'/'
     53 #define	RING_SYM	'='
     54 #define	GEM_SYM		'*'
     55 /* Other places with explicit knowledge of object symbols:
     56  * ....shk.c:	char shtypes[] = "=/)%?![";
     57  * mklev.c:	"=/)%?![<>"
     58  * mkobj.c:	char mkobjstr[] = "))[[!!!!????%%%%/=**";
     59  * apply.c:   otmp = getobj("0#%", "put in");
     60  * eat.c:     otmp = getobj("%", "eat");
     61  * invent.c:          if(index("!%?[)=*(0/\"", sym)){
     62  * invent.c:    || index("%?!*",otmp->olet))){
     63  */