Source:NetHack 3.1.0/obj.h

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

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

1.   /*	SCCS Id: @(#)obj.h	3.1	92/10/18	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.     5.    #ifndef OBJ_H 6.   #define OBJ_H 7.    8.    /* #define obj obj_nh	/* uncomment for SCO UNIX, which has a conflicting 9.   			 * typedef for "obj" in  */ 10.   11.   struct obj { 12.  	struct obj *nobj; 13.  	struct obj *nexthere;	/* for location lists */ 14.  	struct obj *cobj;	/* contents list for containers */ 15.  /*	unsigned o_cwt;		/* container weight capacity */ 16.  	unsigned o_id; 17.  	xchar ox,oy; 18.  	short otyp;		/* object class number */ 19.  	unsigned owt; 20.  	long quan;		/* number of items */ 21.   22.   	schar spe;		/* quality of weapon, armor or ring (+ or -) 23.  				   number of charges for wand ( >= -1 ) 24.  				   marks your eggs, spinach tins 25.  				   indicates statues have spellbooks inside 26.  				   tells which fruit a fruit is  27. marks diluted potions 28.  				   special for uball and amulet %% BAH */ 29.  	char	oclass;		/* object class */ 30.  	char	invlet;		/* designation in inventory */ 31.  	char	oartifact;	/* artifact array index */ 32.   33.   	Bitfield(cursed,1); 34.  	Bitfield(blessed,1); 35.  	Bitfield(unpaid,1);	/* on some bill */ 36.  	Bitfield(no_charge,1);	/* if shk shouldn't charge for this */ 37.  	Bitfield(known,1);	/* exact nature known */ 38.  	Bitfield(dknown,1);	/* color or text known */ 39.  	Bitfield(bknown,1);	/* blessing or curse known */ 40.  	Bitfield(rknown,1);	/* rustproof or not known */ 41.   42.   	Bitfield(oeroded,2);	/* rusted/corroded/burnt/rotted weapon/armor */ 43.  #define MAX_ERODE 3 44.  #define orotten oeroded		/* rotten food */ 45.  	Bitfield(oerodeproof,1); /* erodeproof weapon/armor */ 46.  	Bitfield(olocked,1);	/* object is locked */ 47.  #define recharged olocked	/* recharged once */ 48.  	Bitfield(obroken,1);	/* lock has been broken */ 49.  	Bitfield(otrapped,1);	/* container is trapped */ 50.  #define opoisoned otrapped	/* object (weapon) is coated with poison */ 51.  	Bitfield(oldcorpse,1);	/* for troll corpses too old to revive */ 52.  #ifndef NO_SIGNAL 53.  # define in_use oldcorpse	/* for magic items before useup items */ 54.  #endif 55.  	Bitfield(lamplit,1);    /* a light-source -- can be lit */ 56.   57.   	Bitfield(oinvis,1);	/* not yet implemented */ 58.  	Bitfield(greased,1);	/* covered with grease */ 59.  	Bitfield(onamelth,6); 60.   61.   	int	corpsenm;	/* type of corpse is mons[corpsenm] */ 62.  #define leashmon  corpsenm	/* gets m_id of attached pet */ 63.  #define spestudied corpsenm	/* how many times a spellbook has been studied */ 64.  	unsigned oeaten;	/* nutrition left in food, if partly eaten */ 65.  	long age;		/* creation date */ 66.  	long owornmask; 67.   68.   /* note that TIMEOUT in you.h is defined as 07777L; no bits for items that 69.   * confer properties may overlap that mask, or timeout.c will happily 70.   * rearrange the bits behind the back of the property code 71.   * shirts, balls, and chains are currently safe 72.   * FROMOUTSIDE and FROMEXPER in you.h are defined as 020000000L and 0400000000L 73.   * respectively. Declarations here should not overlap with those bits either. 74.   */  75.   #define W_BALL	02000L 76.  #define W_CHAIN	04000L 77.  #define W_RINGL	010000L		/* make W_RINGL = RING_LEFT (see uprop) */ 78.  #define W_RINGR	020000L 79.  #define W_RING	(W_RINGL | W_RINGR) 80.  #define W_ARM	040000L 81.  #define W_ARMC	0100000L 82.  #define W_ARMH	0200000L 83.  #define W_ARMS	0400000L 84.  #define W_ARMG	01000000L 85.  #define W_ARMF	02000000L 86.  #define W_AMUL	04000000L 87.  #define W_TOOL	010000000L	/* wearing another tool (see uprop) */ 88.  #define W_WEP	020000000L 89.  #define W_ART	040000000L	/* _carrying_ an artifact, not really worn */ 90.  #define W_ARTI	0100000000L	/* an invoked artifact, not really worn */ 91.  #ifdef TOURIST 92.  #define W_ARMU	01000L 93.  #define W_ARMOR	(W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF | W_ARMU) 94.  #else 95.  #define W_ARMOR	(W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF) 96.  #endif 97.  	long oextra[1];		/* used for name of ordinary objects - length 98.  				   is flexible; amount for tmp gold objects */ 99.  };  100.   101.  #define newobj(xl)	(struct obj *)alloc((unsigned)(xl) + sizeof(struct obj)) 102. #define dealloc_obj(obj) free((genericptr_t) (obj)) 103. #define ONAME(otmp)	((char *)(otmp)->oextra) 104.  105.  #define Is_container(otmp) (otmp->otyp >= LARGE_BOX && \  106.  			    otmp->otyp <= BAG_OF_TRICKS) 107. #define Is_box(otmp)	(otmp->otyp == LARGE_BOX || otmp->otyp == CHEST) 108. #define Is_mbag(otmp)	(otmp->otyp == BAG_OF_HOLDING || \  109.  			 otmp->otyp == BAG_OF_TRICKS) 110.  111.  #define is_sword(otmp)	(otmp->otyp >= SHORT_SWORD && \  112.  			 otmp->otyp <= RUNESWORD) 113. #define is_blade(otmp)	(otmp->otyp >= DAGGER && \  114.  			 otmp->otyp <= BILL_GUISARME) 115. #define bimanual(otmp)	((otmp->oclass == WEAPON_CLASS || \ 116. 			  otmp->otyp == UNICORN_HORN) && \  117.  			 objects[otmp->otyp].oc_bimanual) 118.  119.  #define Is_candle(otmp)	(otmp->otyp == TALLOW_CANDLE || \  120.  			 otmp->otyp == WAX_CANDLE) 121.  122.  #endif /* OBJ_H */