Source:NetHack 1.3d/obj.h

Below is the full text to obj.h from the source code of NetHack 1.3d. To link to a particular line, write [[NetHack 1.3d/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	1.3	87/07/14 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* obj.h - version 1.0.3 */ 4.    5.    #ifndef OBJ_H 6.   #define OBJ_H 7.    8.    struct obj { 9.   	struct obj *nobj; 10.  	unsigned o_id; 11.  	unsigned o_cnt_id;		/* id of container object is in */ 12.  	xchar ox,oy; 13.  	xchar odx,ody; 14.  	unsigned otyp; 15.  #ifdef DGK 16.  	unsigned int	owt; 17.  	unsigned int	quan; 18.  #else 19.  	uchar owt; 20.  	uchar quan;		/* use oextra for tmp gold objects */ 21.  #endif 22.  	schar spe;		/* quality of weapon, armor or ring (+ or -) 23.  				   number of charges for wand ( >= -1 ) 24.  				   special for uball and amulet %% BAH */ 25.  	char olet; 26.  	char invlet; 27.  	Bitfield(oinvis,1);	/* not yet implemented */ 28.  	Bitfield(odispl,1); 29.  	Bitfield(known,1);	/* exact nature known */ 30.  	Bitfield(dknown,1);	/* color or text known */ 31.  	Bitfield(cursed,1); 32.  	Bitfield(unpaid,1);	/* on some bill */ 33.  	Bitfield(rustfree,1); 34.  	Bitfield(no_charge, 1);	/* if shk shouldn't charge for this */ 35.  	Bitfield(onamelth,6); 36.  	long age;		/* creation date */ 37.  	long owornmask; 38.  #define	W_ARM	01L 39.  #define	W_ARM2	02L 40.  #define	W_ARMH	04L 41.  #define	W_ARMS	010L 42.  #define	W_ARMG	020L 43.  #define	W_ARMOR		(W_ARM | W_ARM2 | W_ARMH | W_ARMS | W_ARMG) 44.  #define	W_RINGL	010000L	/* make W_RINGL = RING_LEFT (see uprop) */ 45.  #define	W_RINGR	020000L 46.  #define	W_RING		(W_RINGL | W_RINGR) 47.  #define	W_WEP	01000L 48.  #define	W_BALL	02000L 49.  #define	W_CHAIN	04000L 50.  	long oextra[1];		/* used for name of ordinary objects - length 51.  				   is flexible; amount for tmp gold objects */ 52.  };  53.    54.   extern struct obj *fobj; 55.   56.   #define newobj(xl)	(struct obj *) alloc((unsigned)(xl) + sizeof(struct obj)) 57.  #define	ONAME(otmp)	((char *) otmp->oextra) 58.  #define	OGOLD(otmp)	(otmp->oextra[0]) 59.   60.   #endif