Source:NetHack 2.3e/monst.h

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

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

1.   /*	SCCS Id: @(#)monst.h	2.3	88/02/11 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.     4.    struct monst { 5.   	struct monst *nmon; 6.   	struct permonst *data; 7.   	unsigned m_id; 8.   	xchar mx,my; 9.   	xchar mdx,mdy;		/* if mdispl then pos where last displayed */ 10.  #define	MTSZ	4 11.  	coord mtrack[MTSZ];	/* monster track */ 12.  	schar mhp,mhpmax; 13.  	char mappearance;	/* nonzero for undetected 'M's and for '1's */ 14.  	Bitfield(mimic,1);	/* undetected mimic */ 15.  	Bitfield(mdispl,1);	/* mdx,mdy valid */ 16.  	Bitfield(minvis,1);	/* invisible */ 17.  	Bitfield(cham,1);	/* shape-changer */ 18.  	Bitfield(mhide,1);	/* hides beneath objects */ 19.  	Bitfield(mundetected,1);	/* not seen in present hiding place */ 20.  	Bitfield(mspeed,2); 21.  	Bitfield(mflee,1);	/* fleeing */ 22.  	Bitfield(mfleetim,7);	/* timeout for mflee */ 23.  	Bitfield(msleep,1); 24.  	Bitfield(mfroz,1); 25.  	Bitfield(mconf,1); 26.  	Bitfield(mcan,1);	/* has been cancelled */ 27.  	Bitfield(mtame,1);	/* implies peaceful */ 28.  	Bitfield(mpeaceful,1);	/* does not attack unprovoked */ 29.  	Bitfield(isshk,1);	/* is shopkeeper */ 30.  	Bitfield(isgd,1);	/* is guard */ 31.  	Bitfield(mcansee,1);	/* cansee 1, temp.blinded 0, blind 0 */ 32.  	Bitfield(mblinded,7);	/* cansee 0, temp.blinded n, blind 0 */ 33.  	Bitfield(mtrapped,1);	/* trapped in a pit or bear trap */ 34.  	Bitfield(mnamelth,6);	/* length of name (following mxlth) */ 35.  #ifndef NOWORM 36.  	Bitfield(wormno,5);	/* at most 31 worms on any level */ 37.  #endif 38.  #ifdef WALKIES 39.  	Bitfield(mleashed,1);	/* monster is on a leash */ 40.  #endif 41.  	Bitfield(dragon,3);	/* multiple dragon type */ 42.  	Bitfield(isdjinni,1);	/* is djinni */ 43.  	Bitfield(isgremlin,1);	/* is gremlin */ 44.  #ifdef STOOGES 45.  	Bitfield(isstooge,1);	/* is stooge */ 46.  #endif 47.  	long mtrapseen;		/* bitmap of traps we've been trapped in */ 48.  	long mlstmv;		/* prevent two moves at once */ 49.  	struct obj *minvent; 50.  	long mgold; 51.  	unsigned mxlth;		/* length of following data */ 52.  	/* in order to prevent alignment problems mextra should 53.  	   be (or follow) a long int */ 54.  	long mextra[1];		/* monster dependent info */ 55.  };  56.    57.   #define newmonst(xl)	(struct monst *) alloc((unsigned)(xl) + sizeof(struct monst)) 58.   59.   extern struct monst *fmon; 60.  extern struct monst *fallen_down; 61.  struct monst *m_at; 62.   63.   /* these are in mspeed */ 64.  #define MSLOW 1 /* slow monster */ 65.  #define MFAST 2 /* speeded monster */ 66.   67.   #define	NAME(mtmp)	(((char *) mtmp->mextra) + mtmp->mxlth) 68.  #define	MREGEN		"TVi1" 69.  #define	UNDEAD		"ZVW "