|
|
1.1 ! root 1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ ! 2: /* def.monst.h - version 1.0.2 */ ! 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(msleep,1); ! 22: Bitfield(mfroz,1); ! 23: Bitfield(mconf,1); ! 24: Bitfield(mflee,1); /* fleeing */ ! 25: Bitfield(mfleetim,7); /* timeout for mflee */ ! 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 NOWORM ! 38: unsigned mtrapseen; /* bitmap of traps we've been trapped in */ ! 39: long mlstmv; /* prevent two moves at once */ ! 40: struct obj *minvent; ! 41: long mgold; ! 42: unsigned mxlth; /* length of following data */ ! 43: /* in order to prevent alignment problems mextra should ! 44: be (or follow) a long int */ ! 45: long mextra[1]; /* monster dependent info */ ! 46: }; ! 47: ! 48: #define newmonst(xl) (struct monst *) alloc((unsigned)(xl) + sizeof(struct monst)) ! 49: ! 50: extern struct monst *fmon; ! 51: extern struct monst *fallen_down; ! 52: struct monst *m_at(); ! 53: ! 54: /* these are in mspeed */ ! 55: #define MSLOW 1 /* slow monster */ ! 56: #define MFAST 2 /* speeded monster */ ! 57: ! 58: #define NAME(mtmp) (((char *) mtmp->mextra) + mtmp->mxlth) ! 59: #define MREGEN "TVi1" ! 60: #define UNDEAD "ZVW "
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.