home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / hack / 2_3 / monst.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-20  |  2.3 KB  |  70 lines

  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 "
  70.