home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / HACKSRC.ZIP / MONST.H < prev    next >
C/C++ Source or Header  |  1985-10-16  |  2KB  |  61 lines

  1. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  2. /* 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 "
  61.