OSDN Git Service

Initial Import
[nethackexpress/trunk.git] / include / monflag.h
1 /*      SCCS Id: @(#)monflag.h  3.4     1996/05/04      */
2 /* Copyright (c) 1989 Mike Threepoint                             */
3 /* NetHack may be freely redistributed.  See license for details. */
4
5 #ifndef MONFLAG_H
6 #define MONFLAG_H
7
8 #define MS_SILENT       0       /* makes no sound */
9 #define MS_BARK         1       /* if full moon, may howl */
10 #define MS_MEW          2       /* mews or hisses */
11 #define MS_ROAR         3       /* roars */
12 #define MS_GROWL        4       /* growls */
13 #define MS_SQEEK        5       /* squeaks, as a rodent */
14 #define MS_SQAWK        6       /* squawks, as a bird */
15 #define MS_HISS         7       /* hisses */
16 #define MS_BUZZ         8       /* buzzes (killer bee) */
17 #define MS_GRUNT        9       /* grunts (or speaks own language) */
18 #define MS_NEIGH        10      /* neighs, as an equine */
19 #define MS_WAIL         11      /* wails, as a tortured soul */
20 #define MS_GURGLE       12      /* gurgles, as liquid or through saliva */
21 #define MS_BURBLE       13      /* burbles (jabberwock) */
22 #define MS_ANIMAL       13      /* up to here are animal noises */
23 #define MS_SHRIEK       15      /* wakes up others */
24 #define MS_BONES        16      /* rattles bones (skeleton) */
25 #define MS_LAUGH        17      /* grins, smiles, giggles, and laughs */
26 #define MS_MUMBLE       18      /* says something or other */
27 #define MS_IMITATE      19      /* imitates others (leocrotta) */
28 #define MS_ORC          MS_GRUNT        /* intelligent brutes */
29 #define MS_HUMANOID     20      /* generic traveling companion */
30 #ifdef KOPS
31 #define MS_ARREST       21      /* "Stop in the name of the law!" (Kops) */
32 #endif
33 #define MS_SOLDIER      22      /* army and watchmen expressions */
34 #define MS_GUARD        23      /* "Please drop that gold and follow me." */
35 #define MS_DJINNI       24      /* "Thank you for freeing me!" */
36 #define MS_NURSE        25      /* "Take off your shirt, please." */
37 #define MS_SEDUCE       26      /* "Hello, sailor." (Nymphs) */
38 #define MS_VAMPIRE      27      /* vampiric seduction, Vlad's exclamations */
39 #define MS_BRIBE        28      /* asks for money, or berates you */
40 #define MS_CUSS         29      /* berates (demons) or intimidates (Wiz) */
41 #define MS_RIDER        30      /* astral level special monsters */
42 #define MS_LEADER       31      /* your class leader */
43 #define MS_NEMESIS      32      /* your nemesis */
44 #define MS_GUARDIAN     33      /* your leader's guards */
45 #define MS_SELL         34      /* demand payment, complain about shoplifters */
46 #define MS_ORACLE       35      /* do a consultation */
47 #define MS_PRIEST       36      /* ask for contribution; do cleansing */
48 #define MS_SPELL        37      /* spellcaster not matching any of the above */
49 #define MS_WERE         38      /* lycanthrope in human form */
50 #define MS_BOAST        39      /* giants */
51
52
53 #define MR_FIRE         0x01    /* resists fire */
54 #define MR_COLD         0x02    /* resists cold */
55 #define MR_SLEEP        0x04    /* resists sleep */
56 #define MR_DISINT       0x08    /* resists disintegration */
57 #define MR_ELEC         0x10    /* resists electricity */
58 #define MR_POISON       0x20    /* resists poison */
59 #define MR_ACID         0x40    /* resists acid */
60 #define MR_STONE        0x80    /* resists petrification */
61 /* other resistances: magic, sickness */
62 /* other conveyances: teleport, teleport control, telepathy */
63
64 /* individual resistances */
65 #define MR2_SEE_INVIS   0x0100  /* see invisible */
66 #define MR2_LEVITATE    0x0200  /* levitation */
67 #define MR2_WATERWALK   0x0400  /* water walking */
68 #define MR2_MAGBREATH   0x0800  /* magical breathing */
69 #define MR2_DISPLACED   0x1000  /* displaced */
70 #define MR2_STRENGTH    0x2000  /* gauntlets of power */
71 #define MR2_FUMBLING    0x4000  /* clumsy */
72
73
74 #define M1_FLY          0x00000001L     /* can fly or float */
75 #define M1_SWIM         0x00000002L     /* can traverse water */
76 #define M1_AMORPHOUS    0x00000004L     /* can flow under doors */
77 #define M1_WALLWALK     0x00000008L     /* can phase thru rock */
78 #define M1_CLING        0x00000010L     /* can cling to ceiling */
79 #define M1_TUNNEL       0x00000020L     /* can tunnel thru rock */
80 #define M1_NEEDPICK     0x00000040L     /* needs pick to tunnel */
81 #define M1_CONCEAL      0x00000080L     /* hides under objects */
82 #define M1_HIDE         0x00000100L     /* mimics, blends in with ceiling */
83 #define M1_AMPHIBIOUS   0x00000200L     /* can survive underwater */
84 #define M1_BREATHLESS   0x00000400L     /* doesn't need to breathe */
85 #define M1_NOTAKE       0x00000800L     /* cannot pick up objects */
86 #define M1_NOEYES       0x00001000L     /* no eyes to gaze into or blind */
87 #define M1_NOHANDS      0x00002000L     /* no hands to handle things */
88 #define M1_NOLIMBS      0x00006000L     /* no arms/legs to kick/wear on */
89 #define M1_NOHEAD       0x00008000L     /* no head to behead */
90 #define M1_MINDLESS     0x00010000L     /* has no mind--golem, zombie, mold */
91 #define M1_HUMANOID     0x00020000L     /* has humanoid head/arms/torso */
92 #define M1_ANIMAL       0x00040000L     /* has animal body */
93 #define M1_SLITHY       0x00080000L     /* has serpent body */
94 #define M1_UNSOLID      0x00100000L     /* has no solid or liquid body */
95 #define M1_THICK_HIDE   0x00200000L     /* has thick hide or scales */
96 #define M1_OVIPAROUS    0x00400000L     /* can lay eggs */
97 #define M1_REGEN        0x00800000L     /* regenerates hit points */
98 #define M1_SEE_INVIS    0x01000000L     /* can see invisible creatures */
99 #define M1_TPORT        0x02000000L     /* can teleport */
100 #define M1_TPORT_CNTRL  0x04000000L     /* controls where it teleports to */
101 #define M1_ACID         0x08000000L     /* acidic to eat */
102 #define M1_POIS         0x10000000L     /* poisonous to eat */
103 #define M1_CARNIVORE    0x20000000L     /* eats corpses */
104 #define M1_HERBIVORE    0x40000000L     /* eats fruits */
105 #define M1_OMNIVORE     0x60000000L     /* eats both */
106 #ifdef NHSTDC
107 #define M1_METALLIVORE  0x80000000UL    /* eats metal */
108 #else
109 #define M1_METALLIVORE  0x80000000L     /* eats metal */
110 #endif
111
112 #define M2_NOPOLY       0x00000001L     /* players mayn't poly into one */
113 #define M2_UNDEAD       0x00000002L     /* is walking dead */
114 #define M2_WERE         0x00000004L     /* is a lycanthrope */
115 #define M2_HUMAN        0x00000008L     /* is a human */
116 #define M2_ELF          0x00000010L     /* is an elf */
117 #define M2_DWARF        0x00000020L     /* is a dwarf */
118 #define M2_GNOME        0x00000040L     /* is a gnome */
119 #define M2_ORC          0x00000080L     /* is an orc */
120 #define M2_DEMON        0x00000100L     /* is a demon */
121 #define M2_MERC         0x00000200L     /* is a guard or soldier */
122 #define M2_LORD         0x00000400L     /* is a lord to its kind */
123 #define M2_PRINCE       0x00000800L     /* is an overlord to its kind */
124 #define M2_MINION       0x00001000L     /* is a minion of a deity */
125 #define M2_GIANT        0x00002000L     /* is a giant */
126 #define M2_MALE         0x00010000L     /* always male */
127 #define M2_FEMALE       0x00020000L     /* always female */
128 #define M2_NEUTER       0x00040000L     /* neither male nor female */
129 #define M2_PNAME        0x00080000L     /* monster name is a proper name */
130 #define M2_HOSTILE      0x00100000L     /* always starts hostile */
131 #define M2_PEACEFUL     0x00200000L     /* always starts peaceful */
132 #define M2_DOMESTIC     0x00400000L     /* can be tamed by feeding */
133 #define M2_WANDER       0x00800000L     /* wanders randomly */
134 #define M2_STALK        0x01000000L     /* follows you to other levels */
135 #define M2_NASTY        0x02000000L     /* extra-nasty monster (more xp) */
136 #define M2_STRONG       0x04000000L     /* strong (or big) monster */
137 #define M2_ROCKTHROW    0x08000000L     /* throws boulders */
138 #define M2_GREEDY       0x10000000L     /* likes gold */
139 #define M2_JEWELS       0x20000000L     /* likes gems */
140 #define M2_COLLECT      0x40000000L     /* picks up weapons and food */
141 #ifdef NHSTDC
142 #define M2_MAGIC        0x80000000UL    /* picks up magic items */
143 #else
144 #define M2_MAGIC        0x80000000L     /* picks up magic items */
145 #endif
146
147 #define M3_WANTSAMUL    0x0001          /* would like to steal the amulet */
148 #define M3_WANTSBELL    0x0002          /* wants the bell */
149 #define M3_WANTSBOOK    0x0004          /* wants the book */
150 #define M3_WANTSCAND    0x0008          /* wants the candelabrum */
151 #define M3_WANTSARTI    0x0010          /* wants the quest artifact */
152 #define M3_WANTSALL     0x001f          /* wants any major artifact */
153 #define M3_WAITFORU     0x0040          /* waits to see you or get attacked */
154 #define M3_CLOSE        0x0080          /* lets you close unless attacked */
155
156 #define M3_COVETOUS     0x001f          /* wants something */
157 #define M3_WAITMASK     0x00c0          /* waiting... */
158
159 /* Infravision is currently implemented for players only */
160 #define M3_INFRAVISION  0x0100          /* has infravision */
161 #define M3_INFRAVISIBLE 0x0200          /* visible by infravision */
162
163 #define MZ_TINY         0               /* < 2' */
164 #define MZ_SMALL        1               /* 2-4' */
165 #define MZ_MEDIUM       2               /* 4-7' */
166 #define MZ_HUMAN        MZ_MEDIUM       /* human-sized */
167 #define MZ_LARGE        3               /* 7-12' */
168 #define MZ_HUGE         4               /* 12-25' */
169 #define MZ_GIGANTIC     7               /* off the scale */
170
171
172 /* Monster races -- must stay within ROLE_RACEMASK */
173 /* Eventually this may become its own field */
174 #define MH_HUMAN        M2_HUMAN
175 #define MH_ELF          M2_ELF
176 #define MH_DWARF        M2_DWARF
177 #define MH_GNOME        M2_GNOME
178 #define MH_ORC          M2_ORC
179
180
181 /* for mons[].geno (constant during game) */
182 #define G_UNIQ          0x1000          /* generated only once */
183 #define G_NOHELL        0x0800          /* not generated in "hell" */
184 #define G_HELL          0x0400          /* generated only in "hell" */
185 #define G_NOGEN         0x0200          /* generated only specially */
186 #define G_SGROUP        0x0080          /* appear in small groups normally */
187 #define G_LGROUP        0x0040          /* appear in large groups normally */
188 #define G_GENO          0x0020          /* can be genocided */
189 #define G_NOCORPSE      0x0010          /* no corpse left ever */
190 #define G_FREQ          0x0007          /* creation frequency mask */
191
192 /* for mvitals[].mvflags (variant during game), along with G_NOCORPSE */
193 #define G_KNOWN         0x0004          /* have been encountered */
194 #define G_GONE          (G_GENOD|G_EXTINCT)
195 #define G_GENOD         0x0002          /* have been genocided */
196 #define G_EXTINCT       0x0001          /* have been extinguished as
197                                            population control */
198 #define MV_KNOWS_EGG    0x0008          /* player recognizes egg of this
199                                            monster type */
200
201 #endif /* MONFLAG_H */