Source:NetHack 1.4f/monst.h

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