games: Massive style(9) cleanup commit. Reduces differences to NetBSD.
[dragonfly.git] / games / hack / def.monst.h
1 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
2 /* def.monst.h - version 1.0.2 */
3 /* $DragonFly: src/games/hack/def.monst.h,v 1.3 2006/08/21 19:45:32 pavalos Exp $ */
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 /* NOWORM */
39         unsigned mtrapseen;     /* bitmap of traps we've been trapped in */
40         long mlstmv;            /* prevent two moves at once */
41         struct obj *minvent;
42         long mgold;
43         unsigned mxlth;         /* length of following data */
44         /* in order to prevent alignment problems mextra should
45            be (or follow) a long int */
46         long mextra[1];         /* monster dependent info */
47 };
48
49 #define newmonst(xl)    alloc((unsigned)(xl) + sizeof(struct monst))
50
51 extern struct monst *fmon;
52 extern struct monst *fallen_down;
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 "