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