OSDN Git Service

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