1 /* NetHack 3.7	monst.c	$NHDT-Date: 1616891049 2021/03/28 00:24:09 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.85 $ */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /*-Copyright (c) Michael Allison, 2006. */
4 /* NetHack may be freely redistributed.  See license for details. */
5 
6 #include "config.h"
7 #include "permonst.h"
8 #include "monsym.h"
9 
10 #define NO_ATTK    \
11     {              \
12         0, 0, 0, 0 \
13     }
14 
15 #define WT_ELF 800
16 #define WT_DRAGON 4500
17 
18 #ifdef C
19 #undef C
20 #endif
21 #ifdef TEXTCOLOR
22 #include "color.h"
23 #define C(color) color
24 #define HI_DOMESTIC CLR_WHITE /* use for player + friendlies */
25 #define HI_LORD CLR_MAGENTA
26 #define HI_BOSS CLR_BRIGHT_MAGENTA
27 #else
28 #define C(color)
29 #endif
30 
31 /*
32  *      Entry Format:   (from permonst.h)
33  *
34  *      name, symbol (S_* defines),
35  *      base monster level, move rate, armor class, magic resistance,
36  *      alignment, creation/geno flags (G_* defines),
37  *      6 * attack structs ( type , damage-type, # dice, # sides ),
38  *      weight (WT_* defines), nutritional value, extension length,
39  *      sounds made (MS_* defines), physical size (MZ_* defines),
40  *      resistances, resistances conferred (both MR_* defines),
41  *      3 * flag bitmaps (M1_*, M2_*, and M3_* defines respectively),
42  *      difficulty, symbol color (C(x) macro)
43  *
44  *      For AT_BREA attacks, '# sides' is ignored; 6 is used for most
45  *      damage types, 25 for sleep, not applicable for death or poison.
46  */
47 #define MON(nam, sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, col) \
48     {                                                                      \
49         {(const char *) 0, (const char *) 0, nam}, \
50         sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, C(col)   \
51     }
52 #define MON3(namm, namf, namn, sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, col) \
53     {                                                                      \
54         {namm, namf, namn}, \
55         sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, C(col)   \
56     }
57 /* LVL() and SIZ() collect several fields to cut down on number of args
58  * for MON()
59  */
60 #define LVL(lvl, mov, ac, mr, aln) lvl, mov, ac, mr, aln
61 #define SIZ(wt, nut, snd, siz) wt, nut, snd, siz
62 /* ATTK() and A() are to avoid braces and commas within args to MON() */
63 #define ATTK(at, ad, n, d) \
64     {                      \
65         at, ad, n, d       \
66     }
67 #define A(a1, a2, a3, a4, a5, a6) \
68     {                             \
69         a1, a2, a3, a4, a5, a6    \
70     }
71 
72 /*
73  *      Rule #1:        monsters of a given class are contiguous in the
74  *                      mons[] array.
75  *
76  *      Rule #2:        monsters of a given class are presented in ascending
77  *                      order of strength.
78  *
79  *      Rule #3:        monster frequency is included in the geno mask;
80  *                      the frequency can be from 0 to 7.  0's will also
81  *                      be skipped during generation.
82  *
83  *      Rule #4:        monster subclasses (e.g. giants) should be kept
84  *                      together, unless it violates Rule 2.  NOGEN monsters
85  *                      won't violate Rule 2.
86  *
87  * Guidelines for color assignment:
88  *
89  *      * Use the same color for all `growth stages' of a monster (ex.
90  *        little dog/big dog, baby naga/full-grown naga.
91  *
92  *      * Use colors given in names wherever possible. If the class has `real'
93  *        members with strong color associations, use those.
94  *
95  *      * Favor `cool' colors for cold-resistant monsters, `warm' ones for
96  *        fire-resistant ones.
97  *
98  *      * Try to reserve purple (magenta) for powerful `ruler' monsters (queen
99  *        bee, kobold lord, &c.).
100  *
101  *      * Subject to all these constraints, try to use color to make as many
102  *        distinctions as the / command (that is, within a monster letter
103  *        distinct names should map to distinct colors).
104  *
105  * The aim in assigning colors is to be consistent enough so a player can
106  * become `intuitive' about them, deducing some or all of these rules
107  * unconsciously. Use your common sense.
108  */
109 
110 #ifndef SPLITMON_2
111 NEARDATA struct permonst mons_init[] = {
112     /*
113      * ants
114      */
115     MON("giant ant", S_ANT, LVL(2, 18, 3, 0, 0), (G_GENO | G_SGROUP | 3),
116         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
117           NO_ATTK),
118         SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0,
119         M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE, M2_HOSTILE, 0,
120         4, CLR_BROWN),
121     MON("killer bee", S_ANT, LVL(1, 18, -1, 0, 0), (G_GENO | G_LGROUP | 2),
122         A(ATTK(AT_STNG, AD_DRST, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
123           NO_ATTK),
124         SIZ(1, 5, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
125         M1_ANIMAL | M1_FLY | M1_NOHANDS | M1_POIS, M2_HOSTILE | M2_FEMALE, 0,
126         5, CLR_YELLOW),
127     MON("soldier ant", S_ANT, LVL(3, 18, 3, 0, 0), (G_GENO | G_SGROUP | 2),
128         A(ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_STNG, AD_DRST, 3, 4), NO_ATTK,
129           NO_ATTK, NO_ATTK, NO_ATTK),
130         SIZ(20, 5, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
131         M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS | M1_CARNIVORE,
132         M2_HOSTILE, 0, 6, CLR_BLUE),
133     MON("fire ant", S_ANT, LVL(3, 18, 3, 10, 0), (G_GENO | G_SGROUP | 1),
134         A(ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_BITE, AD_FIRE, 2, 4), NO_ATTK,
135           NO_ATTK, NO_ATTK, NO_ATTK),
136         SIZ(30, 10, MS_SILENT, MZ_TINY), MR_FIRE, MR_FIRE,
137         M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE, M2_HOSTILE,
138         M3_INFRAVISIBLE, 6, CLR_RED),
139     MON("giant beetle", S_ANT, LVL(5, 6, 4, 0, 0), (G_GENO | 3),
140         A(ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
141           NO_ATTK),
142         SIZ(200, 50, MS_SILENT, MZ_LARGE), MR_POISON, MR_POISON,
143         M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_CARNIVORE, M2_HOSTILE, 0,
144         6, CLR_BLACK),
145     MON("queen bee", S_ANT, LVL(9, 24, -4, 0, 0), (G_GENO | G_NOGEN),
146         A(ATTK(AT_STNG, AD_DRST, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
147           NO_ATTK),
148         SIZ(1, 5, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
149         M1_ANIMAL | M1_FLY | M1_NOHANDS | M1_OVIPAROUS | M1_POIS,
150         M2_HOSTILE | M2_FEMALE | M2_PRINCE, 0, 12, HI_LORD),
151     /*
152      * blobs
153      */
154     MON("acid blob", S_BLOB, LVL(1, 3, 8, 0, 0), (G_GENO | 2),
155         A(ATTK(AT_NONE, AD_ACID, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
156           NO_ATTK),
157         SIZ(30, 10, MS_SILENT, MZ_TINY),
158         MR_SLEEP | MR_POISON | MR_ACID | MR_STONE, MR_STONE,
159         M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
160             | M1_MINDLESS | M1_ACID,
161         M2_WANDER | M2_NEUTER, 0, 2, CLR_BRIGHT_GREEN),
162     MON("quivering blob", S_BLOB, LVL(5, 1, 8, 0, 0), (G_GENO | 2),
163         A(ATTK(AT_TUCH, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
164           NO_ATTK),
165         SIZ(200, 100, MS_SILENT, MZ_SMALL), MR_SLEEP | MR_POISON, MR_POISON,
166         M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
167         M2_WANDER | M2_HOSTILE | M2_NEUTER, 0, 6, CLR_WHITE),
168     MON("gelatinous cube", S_BLOB, LVL(6, 6, 8, 0, 0), (G_GENO | 2),
169         A(ATTK(AT_TUCH, AD_PLYS, 2, 4), ATTK(AT_NONE, AD_PLYS, 1, 4), NO_ATTK,
170           NO_ATTK, NO_ATTK, NO_ATTK),
171         SIZ(600, 150, MS_SILENT, MZ_LARGE),
172         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_ACID
173             | MR_STONE,
174         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP,
175         M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_OMNIVORE
176             | M1_ACID,
177         M2_WANDER | M2_HOSTILE | M2_NEUTER, 0, 8, CLR_CYAN),
178     /*
179      * cockatrice
180      */
181     MON("chickatrice", S_COCKATRICE, LVL(4, 4, 8, 30, 0),
182         (G_GENO | G_SGROUP | 1),
183         A(ATTK(AT_BITE, AD_PHYS, 1, 2), ATTK(AT_TUCH, AD_STON, 0, 0),
184           ATTK(AT_NONE, AD_STON, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
185         SIZ(10, 10, MS_HISS, MZ_TINY), MR_POISON | MR_STONE,
186         MR_POISON | MR_STONE, M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE,
187         M2_HOSTILE, M3_INFRAVISIBLE, 7, CLR_BROWN),
188     MON("cockatrice", S_COCKATRICE, LVL(5, 6, 6, 30, 0), (G_GENO | 5),
189         A(ATTK(AT_BITE, AD_PHYS, 1, 3), ATTK(AT_TUCH, AD_STON, 0, 0),
190           ATTK(AT_NONE, AD_STON, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
191         SIZ(30, 30, MS_HISS, MZ_SMALL), MR_POISON | MR_STONE,
192         MR_POISON | MR_STONE,
193         M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE | M1_OVIPAROUS, M2_HOSTILE,
194         M3_INFRAVISIBLE, 8, CLR_YELLOW),
195     MON("pyrolisk", S_COCKATRICE, LVL(6, 6, 6, 30, 0), (G_GENO | 1),
196         A(ATTK(AT_GAZE, AD_FIRE, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
197           NO_ATTK),
198         SIZ(30, 30, MS_HISS, MZ_SMALL), MR_POISON | MR_FIRE,
199         MR_POISON | MR_FIRE,
200         M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE | M1_OVIPAROUS, M2_HOSTILE,
201         M3_INFRAVISIBLE, 8, CLR_RED),
202     /*
203      * dogs & other canines
204      */
205     MON("jackal", S_DOG, LVL(0, 12, 7, 0, 0), (G_GENO | G_SGROUP | 3),
206         A(ATTK(AT_BITE, AD_PHYS, 1, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
207           NO_ATTK),
208         SIZ(300, 250, MS_BARK, MZ_SMALL), 0, 0,
209         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
210         1, CLR_BROWN),
211     MON("fox", S_DOG, LVL(0, 15, 7, 0, 0), (G_GENO | 1),
212         A(ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
213           NO_ATTK),
214         SIZ(300, 250, MS_BARK, MZ_SMALL), 0, 0,
215         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
216         1, CLR_RED),
217     MON("coyote", S_DOG, LVL(1, 12, 7, 0, 0), (G_GENO | G_SGROUP | 1),
218         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
219           NO_ATTK),
220         SIZ(300, 250, MS_BARK, MZ_SMALL), 0, 0,
221         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
222         2, CLR_BLUE),
223     MON("werejackal", S_DOG, LVL(2, 12, 7, 10, -7), (G_NOGEN | G_NOCORPSE),
224         A(ATTK(AT_BITE, AD_WERE, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
225           NO_ATTK),
226         SIZ(300, 250, MS_BARK, MZ_SMALL), MR_POISON, 0,
227         M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
228         M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE, 4, CLR_GREEN),
229     MON("little dog", S_DOG, LVL(2, 18, 6, 0, 0), (G_GENO | 1),
230         A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
231           NO_ATTK),
232         SIZ(150, 150, MS_BARK, MZ_SMALL), 0, 0,
233         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_DOMESTIC, M3_INFRAVISIBLE,
234         3, HI_DOMESTIC),
235     MON("dingo", S_DOG, LVL(4, 16, 5, 0, 0), (G_GENO | 1),
236         A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
237           NO_ATTK),
238         SIZ(400, 200, MS_BARK, MZ_MEDIUM), 0, 0,
239         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
240         5, CLR_YELLOW),
241     MON("dog", S_DOG, LVL(4, 16, 5, 0, 0), (G_GENO | 1),
242         A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
243           NO_ATTK),
244         SIZ(400, 200, MS_BARK, MZ_MEDIUM), 0, 0,
245         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_DOMESTIC, M3_INFRAVISIBLE,
246         5, HI_DOMESTIC),
247     MON("large dog", S_DOG, LVL(6, 15, 4, 0, 0), (G_GENO | 1),
248         A(ATTK(AT_BITE, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
249           NO_ATTK),
250         SIZ(800, 250, MS_BARK, MZ_MEDIUM), 0, 0,
251         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_STRONG | M2_DOMESTIC,
252         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
253     MON("wolf", S_DOG, LVL(5, 12, 4, 0, 0), (G_GENO | G_SGROUP | 2),
254         A(ATTK(AT_BITE, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
255           NO_ATTK),
256         SIZ(500, 250, MS_BARK, MZ_MEDIUM), 0, 0,
257         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
258         6, CLR_GRAY),
259     MON("werewolf", S_DOG, LVL(5, 12, 4, 20, -7), (G_NOGEN | G_NOCORPSE),
260         A(ATTK(AT_BITE, AD_WERE, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
261           NO_ATTK),
262         SIZ(500, 250, MS_BARK, MZ_MEDIUM), MR_POISON | MR_SLEEP, 0,
263         M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
264         M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE, 7, CLR_ORANGE),
265     MON("winter wolf cub", S_DOG, LVL(5, 12, 4, 0, -5),
266         (G_NOHELL | G_GENO | G_SGROUP | 2),
267         A(ATTK(AT_BITE, AD_PHYS, 1, 8), ATTK(AT_BREA, AD_COLD, 1, 6), NO_ATTK,
268           NO_ATTK, NO_ATTK, NO_ATTK),
269         SIZ(250, 200, MS_BARK, MZ_SMALL), MR_COLD, MR_COLD,
270         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 7, CLR_CYAN),
271     MON("warg", S_DOG, LVL(7, 12, 4, 0, -5), (G_GENO | G_SGROUP | 2),
272         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
273           NO_ATTK),
274         SIZ(850, 350, MS_BARK, MZ_MEDIUM), 0, 0,
275         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
276         8, CLR_BLACK),
277     MON("winter wolf", S_DOG, LVL(7, 12, 4, 20, 0), (G_NOHELL | G_GENO | 1),
278         A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BREA, AD_COLD, 2, 6), NO_ATTK,
279           NO_ATTK, NO_ATTK, NO_ATTK),
280         SIZ(700, 300, MS_BARK, MZ_LARGE), MR_COLD, MR_COLD,
281         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE | M2_STRONG, 0,
282         9, CLR_CYAN),
283     MON("hell hound pup", S_DOG, LVL(7, 12, 4, 20, -5),
284         (G_HELL | G_GENO | G_SGROUP | 1),
285         A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BREA, AD_FIRE, 2, 6), NO_ATTK,
286           NO_ATTK, NO_ATTK, NO_ATTK),
287         SIZ(200, 200, MS_BARK, MZ_SMALL), MR_FIRE, MR_FIRE,
288         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
289         9, CLR_RED),
290     MON("hell hound", S_DOG, LVL(12, 14, 2, 20, 0), (G_HELL | G_GENO | 1),
291         A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_BREA, AD_FIRE, 3, 6), NO_ATTK,
292           NO_ATTK, NO_ATTK, NO_ATTK),
293         SIZ(600, 300, MS_BARK, MZ_MEDIUM), MR_FIRE, MR_FIRE,
294         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE | M2_STRONG,
295         M3_INFRAVISIBLE, 14, CLR_RED),
296 #ifdef CHARON
297     MON("Cerberus", S_DOG, LVL(12, 10, 2, 20, -7),
298         (G_NOGEN | G_UNIQ | G_HELL),
299         A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_BITE, AD_PHYS, 3, 6),
300           ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK),
301         SIZ(1000, 350, MS_BARK, MZ_LARGE), MR_FIRE, MR_FIRE,
302         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
303         M2_NOPOLY | M2_HOSTILE | M2_STRONG | M2_PNAME | M2_MALE,
304         M3_INFRAVISIBLE, 14, CLR_RED),
305 #endif
306     /*
307      * eyes
308      */
309     MON("gas spore", S_EYE, LVL(1, 3, 10, 0, 0), (G_NOCORPSE | G_GENO | 1),
310         A(ATTK(AT_BOOM, AD_PHYS, 4, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
311           NO_ATTK),
312         SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0,
313         M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
314         M2_HOSTILE | M2_NEUTER, 0, 2, CLR_GRAY),
315     MON("floating eye", S_EYE, LVL(2, 1, 9, 10, 0), (G_GENO | 5),
316         A(ATTK(AT_NONE, AD_PLYS, 0, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
317           NO_ATTK),
318         SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0,
319         M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_NOTAKE,
320         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 3, CLR_CYAN),
321     MON("freezing sphere", S_EYE, LVL(6, 13, 4, 0, 0),
322         (G_NOCORPSE | G_NOHELL | G_GENO | 2),
323         A(ATTK(AT_EXPL, AD_COLD, 4, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
324           NO_ATTK),
325         SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD, MR_COLD,
326         M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
327             | M1_NOTAKE,
328         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 9, CLR_WHITE),
329     MON("flaming sphere", S_EYE, LVL(6, 13, 4, 0, 0),
330         (G_NOCORPSE | G_GENO | 2), A(ATTK(AT_EXPL, AD_FIRE, 4, 6), NO_ATTK,
331                                      NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
332         SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_FIRE, MR_FIRE,
333         M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
334             | M1_NOTAKE,
335         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 9, CLR_RED),
336     MON("shocking sphere", S_EYE, LVL(6, 13, 4, 0, 0),
337         (G_NOCORPSE | G_GENO | 2), A(ATTK(AT_EXPL, AD_ELEC, 4, 6), NO_ATTK,
338                                      NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
339         SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_ELEC, MR_ELEC,
340         M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
341             | M1_NOTAKE,
342         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 10, HI_ZAP),
343 #if 0 /* not yet implemented */
344     MON("beholder", S_EYE,
345         LVL(6, 3, 4, 0, -10), (G_GENO | 2),
346         A(ATTK(AT_GAZE, AD_SLOW, 0, 0), ATTK(AT_GAZE, AD_SLEE, 2,25),
347           ATTK(AT_GAZE, AD_DISN, 0, 0), ATTK(AT_GAZE, AD_STON, 0, 0),
348           ATTK(AT_GAZE, AD_CNCL, 2, 4), ATTK(AT_BITE, AD_PHYS, 2, 4)),
349         SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD, 0,
350         M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
351         M2_NOPOLY | M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 13, CLR_BROWN),
352 #endif
353     /*
354      * felines
355      */
356     MON("kitten", S_FELINE, LVL(2, 18, 6, 0, 0), (G_GENO | 1),
357         A(ATTK(AT_BITE, AD_PHYS, 1, 6),
358           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
359         SIZ(150, 150, MS_MEW, MZ_SMALL), 0, 0,
360         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_WANDER | M2_DOMESTIC,
361         M3_INFRAVISIBLE | M3_INFRAVISION, 3, HI_DOMESTIC),
362     MON("housecat", S_FELINE, LVL(4, 16, 5, 0, 0), (G_GENO | 1),
363         A(ATTK(AT_BITE, AD_PHYS, 1, 6),
364           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
365         SIZ(200, 200, MS_MEW, MZ_SMALL), 0, 0,
366         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_DOMESTIC,
367         M3_INFRAVISIBLE | M3_INFRAVISION, 5, HI_DOMESTIC),
368     MON("jaguar", S_FELINE, LVL(4, 15, 6, 0, 0), (G_GENO | 2),
369         A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
370           ATTK(AT_BITE, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
371         SIZ(600, 300, MS_GROWL, MZ_LARGE), 0, 0,
372         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE,
373         M3_INFRAVISIBLE | M3_INFRAVISION, 6, CLR_BROWN),
374     MON("lynx", S_FELINE, LVL(5, 15, 6, 0, 0), (G_GENO | 1),
375         A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
376           ATTK(AT_BITE, AD_PHYS, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK),
377         SIZ(600, 300, MS_GROWL, MZ_SMALL), 0, 0,
378         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE,
379         M3_INFRAVISIBLE | M3_INFRAVISION, 7, CLR_CYAN),
380     MON("panther", S_FELINE, LVL(5, 15, 6, 0, 0), (G_GENO | 1),
381         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
382           ATTK(AT_BITE, AD_PHYS, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK),
383         SIZ(600, 300, MS_GROWL, MZ_LARGE), 0, 0,
384         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE,
385         M3_INFRAVISIBLE | M3_INFRAVISION, 7, CLR_BLACK),
386     MON("large cat", S_FELINE, LVL(6, 15, 4, 0, 0), (G_GENO | 1),
387         A(ATTK(AT_BITE, AD_PHYS, 2, 4),
388           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
389         SIZ(250, 250, MS_MEW, MZ_SMALL), 0, 0,
390         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_STRONG | M2_DOMESTIC,
391         M3_INFRAVISIBLE | M3_INFRAVISION, 7, HI_DOMESTIC),
392     MON("tiger", S_FELINE, LVL(6, 12, 6, 0, 0), (G_GENO | 2),
393         A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
394           ATTK(AT_BITE, AD_PHYS, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK),
395         SIZ(600, 300, MS_GROWL, MZ_LARGE), 0, 0,
396         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE,
397         M3_INFRAVISIBLE | M3_INFRAVISION, 8, CLR_YELLOW),
398     MON("displacer beast", S_FELINE, LVL(12, 12, -10, 0, -3), (G_GENO | 1),
399         A(ATTK(AT_CLAW, AD_PHYS, 4, 4), ATTK(AT_CLAW, AD_PHYS, 4, 4),
400           ATTK(AT_BITE, AD_PHYS, 2, 10), NO_ATTK, NO_ATTK, NO_ATTK),
401         SIZ(750, 400, MS_GROWL, MZ_LARGE), 0, 0,
402         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE | M2_NASTY,
403         M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 14, CLR_BLUE),
404     /*
405      * gremlins and gargoyles
406      */
407     MON("gremlin", S_GREMLIN, LVL(5, 12, 2, 25, -9), (G_GENO | 2),
408         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
409           ATTK(AT_BITE, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_CURS, 0, 0), NO_ATTK,
410           NO_ATTK),
411         SIZ(100, 20, MS_LAUGH, MZ_SMALL), MR_POISON, MR_POISON,
412         M1_SWIM | M1_HUMANOID | M1_POIS, M2_STALK, M3_INFRAVISIBLE,
413         8, CLR_GREEN),
414     MON("gargoyle", S_GREMLIN, LVL(6, 10, -4, 0, -9), (G_GENO | 2),
415         A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_PHYS, 2, 6),
416           ATTK(AT_BITE, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
417         SIZ(1000, 200, MS_GRUNT, MZ_HUMAN), MR_STONE, MR_STONE,
418         M1_HUMANOID | M1_THICK_HIDE | M1_BREATHLESS, M2_HOSTILE | M2_STRONG,
419         0, 8, CLR_BROWN),
420     MON("winged gargoyle", S_GREMLIN, LVL(9, 15, -2, 0, -12), (G_GENO | 1),
421         A(ATTK(AT_CLAW, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 3, 6),
422           ATTK(AT_BITE, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK),
423         SIZ(1200, 300, MS_GRUNT, MZ_HUMAN), MR_STONE, MR_STONE,
424         M1_FLY | M1_HUMANOID | M1_THICK_HIDE | M1_BREATHLESS | M1_OVIPAROUS,
425         M2_LORD | M2_HOSTILE | M2_STRONG | M2_MAGIC, 0, 11, HI_LORD),
426     /*
427      * humanoids
428      */
429     MON("hobbit", S_HUMANOID, LVL(1, 9, 10, 0, 6), (G_GENO | 2),
430         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
431           NO_ATTK),
432         SIZ(500, 200, MS_HUMANOID, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
433         M2_COLLECT, M3_INFRAVISIBLE | M3_INFRAVISION, 2, CLR_GREEN),
434     MON("dwarf", S_HUMANOID, LVL(2, 6, 10, 10, 4), (G_GENO | 3),
435         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
436           NO_ATTK),
437         SIZ(900, 300, MS_HUMANOID, MZ_HUMAN), 0, 0,
438         M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
439         M2_NOPOLY | M2_DWARF | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
440         M3_INFRAVISIBLE | M3_INFRAVISION, 4, CLR_RED),
441     MON3("dwarf lord", "dwarf lady", "dwarf leader",
442         S_HUMANOID, LVL(4, 6, 10, 10, 5), (G_GENO | 2),
443         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK,
444           NO_ATTK, NO_ATTK, NO_ATTK),
445         SIZ(900, 300, MS_HUMANOID, MZ_HUMAN), 0, 0,
446         M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
447         M2_DWARF | M2_STRONG | M2_LORD | M2_GREEDY | M2_JEWELS | M2_COLLECT,
448         M3_INFRAVISIBLE | M3_INFRAVISION, 6, CLR_BLUE),
449     MON3("dwarf king", "dwarf queen", "dwarf ruler",
450         S_HUMANOID, LVL(6, 6, 10, 20, 6), (G_GENO | 1),
451         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6), NO_ATTK,
452           NO_ATTK, NO_ATTK, NO_ATTK),
453         SIZ(900, 300, MS_HUMANOID, MZ_HUMAN), 0, 0,
454         M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
455         M2_DWARF | M2_STRONG | M2_PRINCE | M2_GREEDY | M2_JEWELS
456             | M2_COLLECT,
457         M3_INFRAVISIBLE | M3_INFRAVISION, 8, HI_LORD),
458     /*
459      * imps & other minor demons/devils
460      */
461     MON("manes", S_IMP, LVL(1, 3, 7, 0, -7),
462         (G_GENO | G_LGROUP | G_NOCORPSE | 1),
463         A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
464           ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
465         SIZ(100, 100, MS_SILENT, MZ_SMALL), MR_SLEEP | MR_POISON, 0, M1_POIS,
466         M2_HOSTILE | M2_STALK, M3_INFRAVISIBLE | M3_INFRAVISION, 3, CLR_RED),
467     MON("homunculus", S_IMP, LVL(2, 12, 6, 10, -7), (G_GENO | 2),
468         A(ATTK(AT_BITE, AD_SLEE, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
469           NO_ATTK),
470         SIZ(60, 100, MS_SILENT, MZ_TINY), MR_SLEEP | MR_POISON,
471         MR_SLEEP | MR_POISON, M1_FLY | M1_POIS | M1_CARNIVORE, M2_STALK,
472         M3_INFRAVISIBLE | M3_INFRAVISION, 3, CLR_GREEN),
473     MON("imp", S_IMP, LVL(3, 12, 2, 20, -7), (G_GENO | 1),
474         A(ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
475           NO_ATTK),
476         SIZ(20, 10, MS_CUSS, MZ_TINY), 0, 0, M1_REGEN | M1_CARNIVORE,
477         M2_WANDER | M2_STALK, M3_INFRAVISIBLE | M3_INFRAVISION, 4, CLR_ORANGE),
478     MON("lemure", S_IMP, LVL(3, 3, 7, 0, -7),
479         (G_HELL | G_GENO | G_LGROUP | G_NOCORPSE | 1),
480         A(ATTK(AT_CLAW, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
481           NO_ATTK),
482         SIZ(150, 100, MS_SILENT, MZ_SMALL), MR_SLEEP | MR_POISON, MR_SLEEP,
483         M1_POIS | M1_REGEN, M2_HOSTILE | M2_WANDER | M2_STALK | M2_NEUTER,
484         M3_INFRAVISIBLE | M3_INFRAVISION, 5, CLR_BROWN),
485     MON("quasit", S_IMP, LVL(3, 18, 2, 20, -7), (G_GENO | G_SGROUP | 2),
486         A(ATTK(AT_CLAW, AD_DRDX, 1, 4), ATTK(AT_CLAW, AD_DRDX, 1, 4),
487           ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
488         SIZ(200, 200, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
489         M1_REGEN | M1_CARNIVORE | M1_SEE_INVIS, M2_STALK,
490         M3_INFRAVISIBLE | M3_INFRAVISION, 9, CLR_BLUE),
491     MON("tengu", S_IMP, LVL(6, 13, 5, 30, 7), (G_GENO | 3),
492         A(ATTK(AT_BITE, AD_PHYS, 1, 7), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
493           NO_ATTK),
494         SIZ(300, 200, MS_SQAWK, MZ_SMALL), MR_POISON, MR_POISON,
495         M1_TPORT | M1_TPORT_CNTRL | M1_CARNIVORE, M2_STALK,
496         M3_INFRAVISIBLE | M3_INFRAVISION, 7, CLR_CYAN),
497     /*
498      * jellies
499      */
500     MON("blue jelly", S_JELLY, LVL(4, 0, 8, 10, 0), (G_GENO | 2),
501         A(ATTK(AT_NONE, AD_COLD, 0, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
502           NO_ATTK),
503         SIZ(50, 20, MS_SILENT, MZ_MEDIUM), MR_COLD | MR_POISON,
504         MR_COLD | MR_POISON,
505         M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
506             | M1_MINDLESS | M1_NOTAKE,
507         M2_HOSTILE | M2_NEUTER, 0, 5, CLR_BLUE),
508     MON("spotted jelly", S_JELLY, LVL(5, 0, 8, 10, 0), (G_GENO | 1),
509         A(ATTK(AT_NONE, AD_ACID, 0, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
510           NO_ATTK),
511         SIZ(50, 20, MS_SILENT, MZ_MEDIUM), MR_ACID | MR_STONE, 0,
512         M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
513             | M1_MINDLESS | M1_ACID | M1_NOTAKE,
514         M2_HOSTILE | M2_NEUTER, 0, 6, CLR_GREEN),
515     MON("ochre jelly", S_JELLY, LVL(6, 3, 8, 20, 0), (G_GENO | 2),
516         A(ATTK(AT_ENGL, AD_ACID, 3, 6), ATTK(AT_NONE, AD_ACID, 3, 6), NO_ATTK,
517           NO_ATTK, NO_ATTK, NO_ATTK),
518         SIZ(50, 20, MS_SILENT, MZ_MEDIUM), MR_ACID | MR_STONE, 0,
519         M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
520             | M1_MINDLESS | M1_ACID | M1_NOTAKE,
521         M2_HOSTILE | M2_NEUTER, 0, 8, CLR_BROWN),
522     /*
523      * kobolds
524      */
525     MON("kobold", S_KOBOLD, LVL(0, 6, 10, 0, -2), (G_GENO | 1),
526         A(ATTK(AT_WEAP, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
527           NO_ATTK),
528         SIZ(400, 100, MS_ORC, MZ_SMALL), MR_POISON, 0,
529         M1_HUMANOID | M1_POIS | M1_OMNIVORE, M2_HOSTILE | M2_COLLECT,
530         M3_INFRAVISIBLE | M3_INFRAVISION, 1, CLR_GRAY),
531     MON("large kobold", S_KOBOLD, LVL(1, 6, 10, 0, -3), (G_GENO | 1),
532         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
533           NO_ATTK),
534         SIZ(450, 150, MS_ORC, MZ_SMALL), MR_POISON, 0,
535         M1_HUMANOID | M1_POIS | M1_OMNIVORE, M2_HOSTILE | M2_COLLECT,
536         M3_INFRAVISIBLE | M3_INFRAVISION, 2, CLR_RED),
537     MON3("kobold lord", "kobold lady", "kobold leader",
538         S_KOBOLD, LVL(2, 6, 10, 0, -4), (G_GENO | 1),
539         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
540           NO_ATTK),
541         SIZ(500, 200, MS_ORC, MZ_SMALL), MR_POISON, 0,
542         M1_HUMANOID | M1_POIS | M1_OMNIVORE,
543         M2_HOSTILE | M2_LORD | M2_COLLECT,
544         M3_INFRAVISIBLE | M3_INFRAVISION, 3, HI_LORD),
545     MON("kobold shaman", S_KOBOLD, LVL(2, 6, 6, 10, -4), (G_GENO | 1),
546         A(ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
547           NO_ATTK),
548         SIZ(450, 150, MS_ORC, MZ_SMALL), MR_POISON, 0,
549         M1_HUMANOID | M1_POIS | M1_OMNIVORE, M2_HOSTILE | M2_MAGIC,
550         M3_INFRAVISIBLE | M3_INFRAVISION, 4, HI_ZAP),
551     /*
552      * leprechauns
553      */
554     MON("leprechaun", S_LEPRECHAUN, LVL(5, 15, 8, 20, 0), (G_GENO | 4),
555         A(ATTK(AT_CLAW, AD_SGLD, 1, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
556           NO_ATTK),
557         SIZ(60, 30, MS_LAUGH, MZ_TINY), 0, 0,
558         M1_HUMANOID | M1_TPORT | M1_CARNIVORE, M2_HOSTILE | M2_GREEDY,
559         M3_INFRAVISIBLE, 4, CLR_BRIGHT_GREEN),
560     /*
561      * mimics
562      */
563     MON("small mimic", S_MIMIC, LVL(7, 3, 7, 0, 0), (G_GENO | 2),
564         A(ATTK(AT_CLAW, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
565           NO_ATTK),
566         SIZ(300, 200, MS_SILENT, MZ_MEDIUM), MR_ACID, 0,
567         M1_BREATHLESS | M1_AMORPHOUS | M1_HIDE | M1_ANIMAL | M1_NOEYES
568             | M1_NOHEAD | M1_NOLIMBS | M1_THICK_HIDE | M1_CARNIVORE,
569         M2_HOSTILE, 0, 8, CLR_BROWN),
570     MON("large mimic", S_MIMIC, LVL(8, 3, 7, 10, 0), (G_GENO | 1),
571         A(ATTK(AT_CLAW, AD_STCK, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
572           NO_ATTK),
573         SIZ(600, 400, MS_SILENT, MZ_LARGE), MR_ACID, 0,
574         M1_CLING | M1_BREATHLESS | M1_AMORPHOUS | M1_HIDE | M1_ANIMAL
575             | M1_NOEYES | M1_NOHEAD | M1_NOLIMBS | M1_THICK_HIDE
576             | M1_CARNIVORE,
577         M2_HOSTILE | M2_STRONG, 0, 9, CLR_RED),
578     MON("giant mimic", S_MIMIC, LVL(9, 3, 7, 20, 0), (G_GENO | 1),
579         A(ATTK(AT_CLAW, AD_STCK, 3, 6), ATTK(AT_CLAW, AD_STCK, 3, 6), NO_ATTK,
580           NO_ATTK, NO_ATTK, NO_ATTK),
581         SIZ(800, 500, MS_SILENT, MZ_LARGE), MR_ACID, 0,
582         M1_CLING | M1_BREATHLESS | M1_AMORPHOUS | M1_HIDE | M1_ANIMAL
583             | M1_NOEYES | M1_NOHEAD | M1_NOLIMBS | M1_THICK_HIDE
584             | M1_CARNIVORE,
585         M2_HOSTILE | M2_STRONG, 0, 11, HI_LORD),
586     /*
587      * nymphs
588      */
589     MON("wood nymph", S_NYMPH, LVL(3, 10, 9, 20, 0), (G_GENO | 2),
590         A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0), NO_ATTK,
591           NO_ATTK, NO_ATTK, NO_ATTK),
592         SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0,
593         M1_HUMANOID | M1_TPORT | M1_HERBIVORE,
594         M2_HOSTILE | M2_FEMALE | M2_COLLECT, M3_INFRAVISIBLE, 5, CLR_GREEN),
595     MON("water nymph", S_NYMPH, LVL(4, 12, 9, 20, 0), (G_GENO | 2),
596         A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0), NO_ATTK,
597           NO_ATTK, NO_ATTK, NO_ATTK),
598         SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0,
599         M1_HUMANOID | M1_TPORT | M1_SWIM | M1_HERBIVORE,
600         M2_HOSTILE | M2_FEMALE | M2_COLLECT, M3_INFRAVISIBLE, 6, CLR_BLUE),
601     MON("mountain nymph", S_NYMPH, LVL(5, 15, 9, 20, 0), (G_GENO | 2),
602         A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0), NO_ATTK,
603           NO_ATTK, NO_ATTK, NO_ATTK),
604         SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0,
605         M1_HUMANOID | M1_TPORT | M1_HERBIVORE,
606         M2_HOSTILE | M2_FEMALE | M2_COLLECT, M3_INFRAVISIBLE, 7, CLR_BROWN),
607     /*
608      * orcs
609      */
610     MON("goblin", S_ORC, LVL(0, 6, 10, 0, -3), (G_GENO | G_SGROUP | 2),
611         A(ATTK(AT_WEAP, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
612           NO_ATTK),
613         SIZ(400, 100, MS_ORC, MZ_SMALL), MR_POISON, 0,
614         M1_HUMANOID | M1_OMNIVORE, M2_ORC | M2_COLLECT,
615         M3_INFRAVISIBLE | M3_INFRAVISION, 1, CLR_GRAY),
616     MON("hobgoblin", S_ORC, LVL(1, 9, 10, 0, -4), (G_GENO | 2),
617         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
618           NO_ATTK),
619         SIZ(1000, 200, MS_ORC, MZ_HUMAN), MR_POISON, 0,
620         M1_HUMANOID | M1_OMNIVORE, M2_ORC | M2_STRONG | M2_COLLECT,
621         M3_INFRAVISIBLE | M3_INFRAVISION, 3, CLR_BROWN),
622     MON("bugbear", S_ORC, LVL(3, 9, 5, 0, -6), (G_GENO | 1),
623         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
624           NO_ATTK),
625         SIZ(1250, 250, MS_ORC, MZ_LARGE), MR_POISON, 0,
626         M1_HUMANOID | M1_OMNIVORE, M2_ORC | M2_STRONG | M2_COLLECT,
627         M3_INFRAVISIBLE | M3_INFRAVISION, 4, CLR_ORANGE),
628     /* plain "orc" for zombie corpses only; not created at random
629      */
630     MON("orc", S_ORC, LVL(1, 9, 10, 0, -3), (G_GENO | G_NOGEN | G_LGROUP),
631         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
632           NO_ATTK),
633         SIZ(850, 150, MS_ORC, MZ_HUMAN), MR_POISON, 0,
634         M1_HUMANOID | M1_OMNIVORE,
635         M2_NOPOLY | M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
636         M3_INFRAVISIBLE | M3_INFRAVISION, 3, CLR_BLUE),
637     MON("hill orc", S_ORC, LVL(2, 9, 10, 0, -4), (G_GENO | G_LGROUP | 2),
638         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
639           NO_ATTK),
640         SIZ(1000, 200, MS_ORC, MZ_HUMAN), MR_POISON, 0,
641         M1_HUMANOID | M1_OMNIVORE,
642         M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
643         M3_INFRAVISIBLE | M3_INFRAVISION, 4, CLR_YELLOW),
644     MON("Mordor orc", S_ORC, LVL(3, 5, 10, 0, -5), (G_GENO | G_LGROUP | 1),
645         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
646           NO_ATTK),
647         SIZ(1200, 200, MS_ORC, MZ_HUMAN), MR_POISON, 0,
648         M1_HUMANOID | M1_OMNIVORE,
649         M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
650         M3_INFRAVISIBLE | M3_INFRAVISION, 5, CLR_RED),
651     MON("Uruk-hai", S_ORC, LVL(3, 7, 10, 0, -4), (G_GENO | G_LGROUP | 1),
652         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
653           NO_ATTK),
654         SIZ(1300, 300, MS_ORC, MZ_HUMAN), MR_POISON, 0,
655         M1_HUMANOID | M1_OMNIVORE,
656         M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
657         M3_INFRAVISIBLE | M3_INFRAVISION, 5, CLR_BLACK),
658     MON("orc shaman", S_ORC, LVL(3, 9, 5, 10, -5), (G_GENO | 1),
659         A(ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
660           NO_ATTK),
661         SIZ(1000, 300, MS_ORC, MZ_HUMAN), MR_POISON, 0,
662         M1_HUMANOID | M1_OMNIVORE,
663         M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_MAGIC,
664         M3_INFRAVISIBLE | M3_INFRAVISION, 5, HI_ZAP),
665     MON("orc-captain", S_ORC, LVL(5, 9, 10, 0, -5), (G_GENO | 1),
666         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK,
667           NO_ATTK, NO_ATTK, NO_ATTK),
668         SIZ(1350, 350, MS_ORC, MZ_HUMAN), MR_POISON, 0,
669         M1_HUMANOID | M1_OMNIVORE,
670         M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT | M2_LORD,
671         M3_INFRAVISIBLE | M3_INFRAVISION, 7, HI_LORD),
672     /*
673      * piercers
674      */
675     MON("rock piercer", S_PIERCER, LVL(3, 1, 3, 0, 0), (G_GENO | 4),
676         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
677           NO_ATTK),
678         SIZ(200, 200, MS_SILENT, MZ_SMALL), 0, 0,
679         M1_CLING | M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_CARNIVORE
680             | M1_NOTAKE,
681         M2_HOSTILE, 0, 4, CLR_GRAY),
682     MON("iron piercer", S_PIERCER, LVL(5, 1, 0, 0, 0), (G_GENO | 2),
683         A(ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
684           NO_ATTK),
685         SIZ(400, 300, MS_SILENT, MZ_MEDIUM), 0, 0,
686         M1_CLING | M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_CARNIVORE
687             | M1_NOTAKE,
688         M2_HOSTILE, 0, 6, CLR_CYAN),
689     MON("glass piercer", S_PIERCER, LVL(7, 1, 0, 0, 0), (G_GENO | 1),
690         A(ATTK(AT_BITE, AD_PHYS, 4, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
691           NO_ATTK),
692         SIZ(400, 300, MS_SILENT, MZ_MEDIUM), MR_ACID, 0,
693         M1_CLING | M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_CARNIVORE
694             | M1_NOTAKE,
695         M2_HOSTILE, 0, 9, CLR_WHITE),
696     /*
697      * quadrupeds
698      */
699     MON("rothe", S_QUADRUPED, LVL(2, 9, 7, 0, 0), (G_GENO | G_SGROUP | 4),
700         A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_BITE, AD_PHYS, 1, 3),
701           ATTK(AT_BITE, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
702         SIZ(400, 100, MS_MOO, MZ_LARGE), 0, 0,
703         M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
704         4, CLR_BROWN),
705     MON("leocrotta", S_QUADRUPED, LVL(6, 18, 4, 10, 0), (G_GENO | 2),
706         A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_BITE, AD_PHYS, 2, 6),
707           ATTK(AT_CLAW, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
708         SIZ(1200, 500, MS_IMITATE, MZ_LARGE), 0, 0,
709         M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE, M2_HOSTILE | M2_STRONG,
710         M3_INFRAVISIBLE, 8, CLR_RED),
711     MON("wumpus", S_QUADRUPED, LVL(8, 3, 2, 10, 0), (G_GENO | 1),
712         A(ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
713           NO_ATTK),
714         SIZ(2500, 500, MS_BURBLE, MZ_LARGE), 0, 0,
715         M1_CLING | M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE,
716         M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE, 9, CLR_CYAN),
717     MON("titanothere", S_QUADRUPED, LVL(12, 12, 6, 0, 0), (G_GENO | 2),
718         A(ATTK(AT_CLAW, AD_PHYS, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
719           NO_ATTK),
720         SIZ(2650, 650, MS_SILENT, MZ_LARGE), 0, 0,
721         M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_HERBIVORE,
722         M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE, 13, CLR_YELLOW),
723     MON("baluchitherium", S_QUADRUPED, LVL(14, 12, 5, 0, 0), (G_GENO | 2),
724         A(ATTK(AT_CLAW, AD_PHYS, 5, 4), ATTK(AT_CLAW, AD_PHYS, 5, 4), NO_ATTK,
725           NO_ATTK, NO_ATTK, NO_ATTK),
726         SIZ(3800, 800, MS_SILENT, MZ_LARGE), 0, 0,
727         M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_HERBIVORE,
728         M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE, 15, CLR_ORANGE),
729     MON("mumak", S_QUADRUPED, LVL(10, 9, 0, 0, -2), (G_GENO | 1),
730         A(ATTK(AT_BUTT, AD_PHYS, 4, 12), ATTK(AT_BITE, AD_PHYS, 2, 6),
731           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
732         SIZ(2500, 500, MS_TRUMPET, MZ_GIGANTIC), 0, 0,
733         M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_HERBIVORE,
734         M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE, 15, CLR_GRAY),
735     MON("mastodon", S_QUADRUPED, LVL(20, 12, 5, 0, 0), (G_GENO | 1),
736         A(ATTK(AT_BUTT, AD_PHYS, 4, 8), ATTK(AT_BUTT, AD_PHYS, 4, 8), NO_ATTK,
737           NO_ATTK, NO_ATTK, NO_ATTK),
738         SIZ(3800, 800, MS_TRUMPET, MZ_HUGE), 0, 0,
739         M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_HERBIVORE,
740         M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE, 22, CLR_BLACK),
741     /*
742      * rodents
743      */
744     MON("sewer rat", S_RODENT, LVL(0, 12, 7, 0, 0), (G_GENO | G_SGROUP | 1),
745         A(ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
746           NO_ATTK),
747         SIZ(20, 12, MS_SQEEK, MZ_TINY), 0, 0,
748         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE | M1_CONCEAL, M2_HOSTILE,
749         M3_INFRAVISIBLE, 1, CLR_BROWN),
750     MON("giant rat", S_RODENT, LVL(1, 10, 7, 0, 0), (G_GENO | G_SGROUP | 2),
751         A(ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
752           NO_ATTK),
753         SIZ(30, 30, MS_SQEEK, MZ_SMALL), 0, 0,
754         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
755         2, CLR_RED),
756     MON("rabid rat", S_RODENT, LVL(2, 12, 6, 0, 0), (G_GENO | 1),
757         A(ATTK(AT_BITE, AD_DRCO, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
758           NO_ATTK),
759         SIZ(30, 5, MS_SQEEK, MZ_TINY), MR_POISON, 0,
760         M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_CARNIVORE | M1_CONCEAL,
761         M2_HOSTILE, M3_INFRAVISIBLE, 4, CLR_GREEN),
762     MON("wererat", S_RODENT, LVL(2, 12, 6, 10, -7), (G_NOGEN | G_NOCORPSE),
763         A(ATTK(AT_BITE, AD_WERE, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
764           NO_ATTK),
765         SIZ(40, 30, MS_SQEEK, MZ_TINY), MR_POISON, 0,
766         M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
767         M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE, 4, CLR_YELLOW),
768     MON("rock mole", S_RODENT, LVL(3, 3, 0, 20, 0), (G_GENO | 2),
769         A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
770           NO_ATTK),
771         SIZ(30, 30, MS_SILENT, MZ_SMALL), 0, 0,
772         M1_TUNNEL | M1_ANIMAL | M1_NOHANDS | M1_METALLIVORE,
773         M2_HOSTILE | M2_GREEDY | M2_JEWELS | M2_COLLECT, M3_INFRAVISIBLE,
774         4, CLR_GRAY),
775     MON("woodchuck", S_RODENT, LVL(3, 3, 0, 20, 0), (G_NOGEN | G_GENO),
776         A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
777           NO_ATTK),
778         SIZ(30, 30, MS_SILENT, MZ_SMALL), 0, 0,
779         M1_TUNNEL /*LOGGING*/ | M1_ANIMAL | M1_NOHANDS | M1_SWIM
780             | M1_HERBIVORE,
781         /* In reality, they tunnel instead of cutting lumber.  Oh, well. */
782         M2_WANDER | M2_HOSTILE, M3_INFRAVISIBLE, 4, CLR_BROWN),
783     /*
784      * spiders & scorpions (keep webmaker() in sync if new critters are added)
785      */
786     MON("cave spider", S_SPIDER, LVL(1, 12, 3, 0, 0), (G_GENO | G_SGROUP | 2),
787         A(ATTK(AT_BITE, AD_PHYS, 1, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
788           NO_ATTK),
789         SIZ(50, 50, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
790         M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
791         M2_HOSTILE, 0, 3, CLR_GRAY),
792     MON("centipede", S_SPIDER, LVL(2, 4, 3, 0, 0), (G_GENO | 1),
793         A(ATTK(AT_BITE, AD_DRST, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
794           NO_ATTK),
795         SIZ(50, 50, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
796         M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
797         M2_HOSTILE, 0, 4, CLR_YELLOW),
798     MON("giant spider", S_SPIDER, LVL(5, 15, 4, 0, 0), (G_GENO | 1),
799         A(ATTK(AT_BITE, AD_DRST, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
800           NO_ATTK),
801         SIZ(200, 100, MS_SILENT, MZ_LARGE), MR_POISON, MR_POISON,
802         M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS | M1_CARNIVORE,
803         M2_HOSTILE | M2_STRONG, 0, 7, CLR_MAGENTA),
804     MON("scorpion", S_SPIDER, LVL(5, 15, 3, 0, 0), (G_GENO | 2),
805         A(ATTK(AT_CLAW, AD_PHYS, 1, 2), ATTK(AT_CLAW, AD_PHYS, 1, 2),
806           ATTK(AT_STNG, AD_DRST, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
807         SIZ(50, 100, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
808         M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS
809             | M1_CARNIVORE,
810         M2_HOSTILE, 0, 8, CLR_RED),
811     /*
812      * trappers, lurkers, &c
813      */
814     MON("lurker above", S_TRAPPER, LVL(10, 3, 3, 0, 0), (G_GENO | 2),
815         A(ATTK(AT_ENGL, AD_DGST, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
816           NO_ATTK),
817         SIZ(800, 350, MS_SILENT, MZ_HUGE), 0, 0,
818         M1_HIDE | M1_FLY | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
819             | M1_CARNIVORE,
820         M2_HOSTILE | M2_STALK | M2_STRONG, 0, 12, CLR_GRAY),
821     MON("trapper", S_TRAPPER, LVL(12, 3, 3, 0, 0), (G_GENO | 2),
822         A(ATTK(AT_ENGL, AD_DGST, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
823           NO_ATTK),
824         SIZ(800, 350, MS_SILENT, MZ_HUGE), 0, 0,
825         M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
826             | M1_CARNIVORE,
827         M2_HOSTILE | M2_STALK | M2_STRONG, 0, 14, CLR_GREEN),
828     /*
829      * unicorns and horses
830      */
831     MON("pony", S_UNICORN, LVL(3, 16, 6, 0, 0), (G_GENO | 2),
832         A(ATTK(AT_KICK, AD_PHYS, 1, 6), ATTK(AT_BITE, AD_PHYS, 1, 2), NO_ATTK,
833           NO_ATTK, NO_ATTK, NO_ATTK),
834         SIZ(1300, 250, MS_NEIGH, MZ_MEDIUM), 0, 0,
835         M1_ANIMAL | M1_NOHANDS | M1_HERBIVORE,
836         M2_WANDER | M2_STRONG | M2_DOMESTIC, M3_INFRAVISIBLE, 4, CLR_BROWN),
837     MON("white unicorn", S_UNICORN, LVL(4, 24, 2, 70, 7), (G_GENO | 2),
838         A(ATTK(AT_BUTT, AD_PHYS, 1, 12), ATTK(AT_KICK, AD_PHYS, 1, 6),
839           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
840         SIZ(1300, 300, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
841         M1_NOHANDS | M1_HERBIVORE, M2_WANDER | M2_STRONG | M2_JEWELS,
842         M3_INFRAVISIBLE, 6, CLR_WHITE),
843     MON("gray unicorn", S_UNICORN, LVL(4, 24, 2, 70, 0), (G_GENO | 1),
844         A(ATTK(AT_BUTT, AD_PHYS, 1, 12), ATTK(AT_KICK, AD_PHYS, 1, 6),
845           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
846         SIZ(1300, 300, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
847         M1_NOHANDS | M1_HERBIVORE, M2_WANDER | M2_STRONG | M2_JEWELS,
848         M3_INFRAVISIBLE, 6, CLR_GRAY),
849     MON("black unicorn", S_UNICORN, LVL(4, 24, 2, 70, -7), (G_GENO | 1),
850         A(ATTK(AT_BUTT, AD_PHYS, 1, 12), ATTK(AT_KICK, AD_PHYS, 1, 6),
851           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
852         SIZ(1300, 300, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
853         M1_NOHANDS | M1_HERBIVORE, M2_WANDER | M2_STRONG | M2_JEWELS,
854         M3_INFRAVISIBLE, 6, CLR_BLACK),
855     MON("horse", S_UNICORN, LVL(5, 20, 5, 0, 0), (G_GENO | 2),
856         A(ATTK(AT_KICK, AD_PHYS, 1, 8), ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK,
857           NO_ATTK, NO_ATTK, NO_ATTK),
858         SIZ(1500, 300, MS_NEIGH, MZ_LARGE), 0, 0,
859         M1_ANIMAL | M1_NOHANDS | M1_HERBIVORE,
860         M2_WANDER | M2_STRONG | M2_DOMESTIC, M3_INFRAVISIBLE, 7, CLR_BROWN),
861     MON("warhorse", S_UNICORN, LVL(7, 24, 4, 0, 0), (G_GENO | 2),
862         A(ATTK(AT_KICK, AD_PHYS, 1, 10), ATTK(AT_BITE, AD_PHYS, 1, 4),
863           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
864         SIZ(1800, 350, MS_NEIGH, MZ_LARGE), 0, 0,
865         M1_ANIMAL | M1_NOHANDS | M1_HERBIVORE,
866         M2_WANDER | M2_STRONG | M2_DOMESTIC, M3_INFRAVISIBLE, 9, CLR_BROWN),
867     /*
868      * vortices
869      */
870     MON("fog cloud", S_VORTEX, LVL(3, 1, 0, 0, 0), (G_GENO | G_NOCORPSE | 2),
871         A(ATTK(AT_ENGL, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
872           NO_ATTK),
873         SIZ(0, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
874         M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
875             | M1_MINDLESS | M1_AMORPHOUS | M1_UNSOLID,
876         M2_HOSTILE | M2_NEUTER, 0, 4, CLR_GRAY),
877     MON("dust vortex", S_VORTEX, LVL(4, 20, 2, 30, 0),
878         (G_GENO | G_NOCORPSE | 2), A(ATTK(AT_ENGL, AD_BLND, 2, 8), NO_ATTK,
879                                      NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
880         SIZ(0, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
881         M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
882             | M1_MINDLESS,
883         M2_HOSTILE | M2_NEUTER, 0, 6, CLR_BROWN),
884     MON("ice vortex", S_VORTEX, LVL(5, 20, 2, 30, 0),
885         (G_NOHELL | G_GENO | G_NOCORPSE | 1),
886         A(ATTK(AT_ENGL, AD_COLD, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
887           NO_ATTK),
888         SIZ(0, 0, MS_SILENT, MZ_LARGE),
889         MR_COLD | MR_SLEEP | MR_POISON | MR_STONE, 0,
890         M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
891             | M1_MINDLESS,
892         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 7, CLR_CYAN),
893     MON("energy vortex", S_VORTEX, LVL(6, 20, 2, 30, 0),
894         (G_GENO | G_NOCORPSE | 1),
895         A(ATTK(AT_ENGL, AD_ELEC, 1, 6), ATTK(AT_ENGL, AD_DREN, 2, 6),
896           ATTK(AT_NONE, AD_ELEC, 0, 4), NO_ATTK, NO_ATTK, NO_ATTK),
897         SIZ(0, 0, MS_SILENT, MZ_LARGE),
898         MR_ELEC | MR_SLEEP | MR_DISINT | MR_POISON | MR_STONE, 0,
899         M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
900             | M1_MINDLESS | M1_UNSOLID,
901         M2_HOSTILE | M2_NEUTER, 0, 9, HI_ZAP),
902     MON("steam vortex", S_VORTEX, LVL(7, 22, 2, 30, 0),
903         (G_HELL | G_GENO | G_NOCORPSE | 2),
904         A(ATTK(AT_ENGL, AD_FIRE, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
905           NO_ATTK),
906         SIZ(0, 0, MS_SILENT, MZ_LARGE),
907         MR_FIRE | MR_SLEEP | MR_POISON | MR_STONE, 0,
908         M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
909             | M1_MINDLESS | M1_UNSOLID,
910         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 9, CLR_BLUE),
911     MON("fire vortex", S_VORTEX, LVL(8, 22, 2, 30, 0),
912         (G_HELL | G_GENO | G_NOCORPSE | 1),
913         A(ATTK(AT_ENGL, AD_FIRE, 1, 10), ATTK(AT_NONE, AD_FIRE, 0, 4),
914           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
915         SIZ(0, 0, MS_SILENT, MZ_LARGE),
916         MR_FIRE | MR_SLEEP | MR_POISON | MR_STONE, 0,
917         M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
918             | M1_MINDLESS | M1_UNSOLID,
919         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 10, CLR_RED),
920     /*
921      * worms
922      */
923     MON("baby long worm", S_WORM, LVL(5, 3, 5, 0, 0), G_GENO,
924         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
925           NO_ATTK),
926         SIZ(600, 250, MS_SILENT, MZ_LARGE), 0, 0,
927         M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_CARNIVORE | M1_NOTAKE,
928         M2_HOSTILE, 0, 6, CLR_BROWN),
929     MON("baby purple worm", S_WORM, LVL(8, 3, 5, 0, 0), G_GENO,
930         A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
931           NO_ATTK),
932         SIZ(600, 250, MS_SILENT, MZ_LARGE), 0, 0,
933         M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_CARNIVORE, M2_HOSTILE, 0,
934         9, CLR_MAGENTA),
935     MON("long worm", S_WORM, LVL(9, 3, 5, 10, 0), (G_GENO | 2),
936         A(ATTK(AT_BITE, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
937           NO_ATTK),
938         SIZ(1500, 500, MS_SILENT, MZ_GIGANTIC), 0, 0,
939         M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_OVIPAROUS | M1_CARNIVORE
940             | M1_NOTAKE,
941         M2_HOSTILE | M2_STRONG | M2_NASTY, 0, 10, CLR_BROWN),
942     MON("purple worm", S_WORM, LVL(15, 9, 6, 20, 0), (G_GENO | 2),
943         A(ATTK(AT_BITE, AD_PHYS, 2, 8), ATTK(AT_ENGL, AD_DGST, 1, 10),
944           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
945         SIZ(2700, 700, MS_SILENT, MZ_GIGANTIC), 0, 0,
946         M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_OVIPAROUS | M1_CARNIVORE,
947         M2_HOSTILE | M2_STRONG | M2_NASTY, 0, 17, CLR_MAGENTA),
948     /*
949      * xan, &c
950      */
951     MON("grid bug", S_XAN, LVL(0, 12, 9, 0, 0),
952         (G_GENO | G_SGROUP | G_NOCORPSE | 3),
953         A(ATTK(AT_BITE, AD_ELEC, 1, 1), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
954           NO_ATTK),
955         SIZ(15, 10, MS_BUZZ, MZ_TINY), MR_ELEC | MR_POISON, 0, M1_ANIMAL,
956         M2_HOSTILE, M3_INFRAVISIBLE, 1, CLR_MAGENTA),
957     MON("xan", S_XAN, LVL(7, 18, -4, 0, 0), (G_GENO | 3),
958         A(ATTK(AT_STNG, AD_LEGS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
959           NO_ATTK),
960         SIZ(300, 300, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
961         M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_POIS, M2_HOSTILE,
962         M3_INFRAVISIBLE, 9, CLR_RED),
963     /*
964      * lights
965      */
966     MON("yellow light", S_LIGHT, LVL(3, 15, 0, 0, 0),
967         (G_NOCORPSE | G_GENO | 4), A(ATTK(AT_EXPL, AD_BLND, 10, 20), NO_ATTK,
968                                      NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
969         SIZ(0, 0, MS_SILENT, MZ_SMALL),
970         MR_FIRE | MR_COLD | MR_ELEC | MR_DISINT | MR_SLEEP | MR_POISON
971             | MR_ACID | MR_STONE,
972         0, M1_FLY | M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS
973                | M1_NOHEAD | M1_MINDLESS | M1_UNSOLID | M1_NOTAKE,
974         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 5, CLR_YELLOW),
975     MON("black light", S_LIGHT, LVL(5, 15, 0, 0, 0),
976         (G_NOCORPSE | G_GENO | 2), A(ATTK(AT_EXPL, AD_HALU, 10, 12), NO_ATTK,
977                                      NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
978         SIZ(0, 0, MS_SILENT, MZ_SMALL),
979         MR_FIRE | MR_COLD | MR_ELEC | MR_DISINT | MR_SLEEP | MR_POISON
980             | MR_ACID | MR_STONE,
981         0,
982         M1_FLY | M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS
983             | M1_NOHEAD | M1_MINDLESS | M1_UNSOLID | M1_SEE_INVIS | M1_NOTAKE,
984         M2_HOSTILE | M2_NEUTER, 0, 7, CLR_BLACK),
985     /*
986      * zruty
987      */
988     MON("zruty", S_ZRUTY, LVL(9, 8, 3, 0, 0), (G_GENO | 2),
989         A(ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_CLAW, AD_PHYS, 3, 4),
990           ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK),
991         SIZ(1200, 600, MS_SILENT, MZ_LARGE), 0, 0,
992         M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE, M2_HOSTILE | M2_STRONG,
993         M3_INFRAVISIBLE, 11, CLR_BROWN),
994     /*
995      * Angels and other lawful minions
996      */
997     MON("couatl", S_ANGEL, LVL(8, 10, 5, 30, 7),
998         (G_NOHELL | G_SGROUP | G_NOCORPSE | 1),
999         A(ATTK(AT_BITE, AD_DRST, 2, 4), ATTK(AT_BITE, AD_PHYS, 1, 3),
1000           ATTK(AT_HUGS, AD_WRAP, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
1001         SIZ(900, 400, MS_HISS, MZ_LARGE),
1002         MR_ELEC | MR_SLEEP | MR_POISON, 0,
1003         M1_FLY | M1_NOHANDS | M1_SLITHY | M1_POIS,
1004         M2_MINION | M2_STALK | M2_STRONG | M2_NASTY,
1005         M3_INFRAVISIBLE | M3_INFRAVISION, 11, CLR_GREEN),
1006     MON("Aleax", S_ANGEL, LVL(10, 8, 0, 30, 7), (G_NOHELL | G_NOCORPSE | 1),
1007         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
1008           ATTK(AT_KICK, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
1009         SIZ(WT_HUMAN, 400, MS_IMITATE, MZ_HUMAN),
1010         MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
1011         M1_HUMANOID | M1_SEE_INVIS,
1012         M2_MINION | M2_STALK | M2_NASTY | M2_COLLECT,
1013         M3_INFRAVISIBLE | M3_INFRAVISION, 12, CLR_GRAY),
1014     /* Angels start with the emin extension attached, and usually have
1015        the isminion flag set; however, non-minion Angels can be tamed
1016        and will switch to edog (guardian Angel is handled specially and
1017        always sticks with emin) */
1018     MON("Angel", S_ANGEL, LVL(14, 10, -4, 55, 12),
1019         (G_NOHELL | G_NOCORPSE | 1),
1020         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
1021           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_MAGC, AD_MAGM, 2, 6), NO_ATTK,
1022           NO_ATTK),
1023         SIZ(WT_HUMAN, 400, MS_CUSS, MZ_HUMAN),
1024         MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
1025         M1_FLY | M1_HUMANOID | M1_SEE_INVIS,
1026         M2_NOPOLY | M2_MINION | M2_STALK | M2_STRONG | M2_NASTY | M2_COLLECT,
1027         M3_INFRAVISIBLE | M3_INFRAVISION, 19, CLR_WHITE),
1028     /* the AD&D Monster Manual depicts ki-rin as very similar to unicorns
1029        except that they fly (without wings) and can cast spells */
1030     MON("ki-rin", S_ANGEL, LVL(16, 18, -5, 90, 15),
1031         (G_NOHELL | G_NOCORPSE | 1),
1032         A(ATTK(AT_KICK, AD_PHYS, 2, 4), ATTK(AT_KICK, AD_PHYS, 2, 4),
1033           ATTK(AT_BUTT, AD_PHYS, 3, 6), ATTK(AT_MAGC, AD_SPEL, 2, 6), NO_ATTK,
1034           NO_ATTK),
1035         SIZ(WT_HUMAN, 400, MS_SPELL, MZ_LARGE),
1036         MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
1037         M1_FLY | M1_NOHANDS | M1_SEE_INVIS,
1038         M2_NOPOLY | M2_MINION | M2_STALK | M2_STRONG | M2_NASTY | M2_LORD,
1039         M3_INFRAVISIBLE | M3_INFRAVISION, 21, HI_GOLD),
1040     MON("Archon", S_ANGEL, LVL(19, 16, -6, 80, 15),
1041         (G_NOHELL | G_NOCORPSE | 1),
1042         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
1043           ATTK(AT_GAZE, AD_BLND, 2, 6), ATTK(AT_CLAW, AD_PHYS, 1, 8),
1044           ATTK(AT_MAGC, AD_SPEL, 4, 6), NO_ATTK),
1045         SIZ(WT_HUMAN, 400, MS_CUSS, MZ_LARGE),
1046         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
1047         M1_FLY | M1_HUMANOID | M1_SEE_INVIS | M1_REGEN,
1048         M2_NOPOLY | M2_MINION | M2_STALK | M2_STRONG | M2_NASTY | M2_LORD
1049             | M2_COLLECT | M2_MAGIC,
1050         M3_INFRAVISIBLE | M3_INFRAVISION, 26, HI_LORD),
1051     /*
1052      * Bats
1053      */
1054     MON("bat", S_BAT, LVL(0, 22, 8, 0, 0), (G_GENO | G_SGROUP | 1),
1055         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1056           NO_ATTK),
1057         SIZ(20, 20, MS_SQEEK, MZ_TINY), 0, 0,
1058         M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_WANDER,
1059         M3_INFRAVISIBLE, 2, CLR_BROWN),
1060     MON("giant bat", S_BAT, LVL(2, 22, 7, 0, 0), (G_GENO | 2),
1061         A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1062           NO_ATTK),
1063         SIZ(30, 30, MS_SQEEK, MZ_SMALL), 0, 0,
1064         M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
1065         M2_WANDER | M2_HOSTILE, M3_INFRAVISIBLE, 3, CLR_RED),
1066     MON("raven", S_BAT, LVL(4, 20, 6, 0, 0), (G_GENO | 2),
1067         A(ATTK(AT_BITE, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_BLND, 1, 6), NO_ATTK,
1068           NO_ATTK, NO_ATTK, NO_ATTK),
1069         SIZ(40, 20, MS_SQAWK, MZ_SMALL), 0, 0,
1070         M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
1071         M2_WANDER | M2_HOSTILE, M3_INFRAVISIBLE, 6, CLR_BLACK),
1072     MON("vampire bat", S_BAT, LVL(5, 20, 6, 0, 0), (G_GENO | 2),
1073         A(ATTK(AT_BITE, AD_PHYS, 1, 6), ATTK(AT_BITE, AD_DRST, 0, 0), NO_ATTK,
1074           NO_ATTK, NO_ATTK, NO_ATTK),
1075         SIZ(30, 20, MS_SQEEK, MZ_SMALL), MR_SLEEP | MR_POISON, 0,
1076         M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_REGEN | M1_OMNIVORE,
1077         M2_HOSTILE, M3_INFRAVISIBLE, 7, CLR_BLACK),
1078     /*
1079      * Centaurs
1080      */
1081     MON("plains centaur", S_CENTAUR, LVL(4, 18, 4, 0, 0), (G_GENO | 1),
1082         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_KICK, AD_PHYS, 1, 6), NO_ATTK,
1083           NO_ATTK, NO_ATTK, NO_ATTK),
1084         SIZ(2500, 500, MS_HUMANOID, MZ_LARGE), 0, 0,
1085         M1_HUMANOID | M1_OMNIVORE, M2_STRONG | M2_GREEDY | M2_COLLECT,
1086         M3_INFRAVISIBLE, 6, CLR_BROWN),
1087     MON("forest centaur", S_CENTAUR, LVL(5, 18, 3, 10, -1), (G_GENO | 1),
1088         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_KICK, AD_PHYS, 1, 6), NO_ATTK,
1089           NO_ATTK, NO_ATTK, NO_ATTK),
1090         SIZ(2550, 600, MS_HUMANOID, MZ_LARGE), 0, 0,
1091         M1_HUMANOID | M1_OMNIVORE, M2_STRONG | M2_GREEDY | M2_COLLECT,
1092         M3_INFRAVISIBLE, 8, CLR_GREEN),
1093     MON("mountain centaur", S_CENTAUR, LVL(6, 20, 2, 10, -3), (G_GENO | 1),
1094         A(ATTK(AT_WEAP, AD_PHYS, 1, 10), ATTK(AT_KICK, AD_PHYS, 1, 6),
1095           ATTK(AT_KICK, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
1096         SIZ(2550, 500, MS_HUMANOID, MZ_LARGE), 0, 0,
1097         M1_HUMANOID | M1_OMNIVORE, M2_STRONG | M2_GREEDY | M2_COLLECT,
1098         M3_INFRAVISIBLE, 9, CLR_CYAN),
1099     /*
1100      * Dragons
1101      */
1102     /* The order of the dragons is VERY IMPORTANT.
1103      * The code depends on the *order* being the same as that for dragon scales
1104      * in objects.c.  Baby dragons cannot confer intrinsics, to avoid
1105      * polyself/egg abuse.
1106      *
1107      * As reptiles, dragons are cold-blooded and thus aren't seen
1108      * with infravision.  Red dragons are the exception.
1109      */
1110     MON("baby gray dragon", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
1111         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1112           NO_ATTK),
1113         SIZ(1500, 500, MS_ROAR, MZ_LARGE), 0, 0,
1114         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
1115         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, 13, CLR_GRAY),
1116     MON("baby silver dragon", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
1117         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1118           NO_ATTK),
1119         SIZ(1500, 500, MS_ROAR, MZ_LARGE), 0, 0,
1120         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
1121         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, 13, DRAGON_SILVER),
1122 #if 0 /* DEFERRED */
1123     MON("baby shimmering dragon", S_DRAGON,
1124         LVL(12, 9, 2, 10, 0), G_GENO,
1125         A(ATTK(AT_BITE, AD_PHYS, 2, 6),
1126           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
1127         SIZ(1500, 500, MS_ROAR, MZ_LARGE), 0, 0,
1128         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
1129         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, 13, CLR_CYAN),
1130 #endif
1131     MON("baby red dragon", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
1132         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1133           NO_ATTK),
1134         SIZ(1500, 500, MS_ROAR, MZ_LARGE), MR_FIRE, 0,
1135         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
1136         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, M3_INFRAVISIBLE,
1137         13, CLR_RED),
1138     MON("baby white dragon", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
1139         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1140           NO_ATTK),
1141         SIZ(1500, 500, MS_ROAR, MZ_LARGE), MR_COLD, 0,
1142         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
1143         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, 13, CLR_WHITE),
1144     MON("baby orange dragon", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
1145         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1146           NO_ATTK),
1147         SIZ(1500, 500, MS_ROAR, MZ_LARGE), MR_SLEEP, 0,
1148         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
1149         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, 13, CLR_ORANGE),
1150     MON("baby black dragon", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
1151         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1152           NO_ATTK),
1153         SIZ(1500, 500, MS_ROAR, MZ_LARGE), MR_DISINT, 0,
1154         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
1155         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, 13, CLR_BLACK),
1156     MON("baby blue dragon", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
1157         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1158           NO_ATTK),
1159         SIZ(1500, 500, MS_ROAR, MZ_LARGE), MR_ELEC, 0,
1160         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
1161         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, 13, CLR_BLUE),
1162     MON("baby green dragon", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
1163         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1164           NO_ATTK),
1165         SIZ(1500, 500, MS_ROAR, MZ_LARGE), MR_POISON, 0,
1166         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_POIS,
1167         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, 13, CLR_GREEN),
1168     MON("baby yellow dragon", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
1169         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1170           NO_ATTK),
1171         SIZ(1500, 500, MS_ROAR, MZ_LARGE), MR_ACID | MR_STONE, 0,
1172         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_ACID,
1173         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, 13, CLR_YELLOW),
1174     MON("gray dragon", S_DRAGON, LVL(15, 9, -1, 20, 4), (G_GENO | 1),
1175         A(ATTK(AT_BREA, AD_MAGM, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
1176           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
1177           NO_ATTK),
1178         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), 0, 0,
1179         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
1180             | M1_CARNIVORE,
1181         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1182         0, 20, CLR_GRAY),
1183     MON("silver dragon", S_DRAGON, LVL(15, 9, -1, 20, 4), (G_GENO | 1),
1184         A(ATTK(AT_BREA, AD_COLD, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
1185           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
1186           NO_ATTK),
1187         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_COLD, 0,
1188         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
1189             | M1_CARNIVORE,
1190         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1191         0, 20, DRAGON_SILVER),
1192 #if 0 /* DEFERRED */
1193     MON("shimmering dragon", S_DRAGON,
1194         LVL(15, 9, -1, 20, 4), (G_GENO | 1),
1195         A(ATTK(AT_BREA, AD_MAGM, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
1196           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
1197           NO_ATTK, NO_ATTK),
1198         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), 0, 0,
1199         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
1200           | M1_CARNIVORE,
1201         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1202         0, 20, CLR_CYAN),
1203 #endif
1204     MON("red dragon", S_DRAGON, LVL(15, 9, -1, 20, -4), (G_GENO | 1),
1205         A(ATTK(AT_BREA, AD_FIRE, 6, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
1206           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
1207           NO_ATTK),
1208         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_FIRE, MR_FIRE,
1209         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
1210             | M1_CARNIVORE,
1211         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1212         M3_INFRAVISIBLE, 20, CLR_RED),
1213     MON("white dragon", S_DRAGON, LVL(15, 9, -1, 20, -5), (G_GENO | 1),
1214         A(ATTK(AT_BREA, AD_COLD, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
1215           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
1216           NO_ATTK),
1217         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_COLD, MR_COLD,
1218         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
1219             | M1_CARNIVORE,
1220         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1221         0, 20, CLR_WHITE),
1222     MON("orange dragon", S_DRAGON, LVL(15, 9, -1, 20, 5), (G_GENO | 1),
1223         A(ATTK(AT_BREA, AD_SLEE, 4, 25), ATTK(AT_BITE, AD_PHYS, 3, 8),
1224           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
1225           NO_ATTK),
1226         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_SLEEP, MR_SLEEP,
1227         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
1228             | M1_CARNIVORE,
1229         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1230         0, 20, CLR_ORANGE),
1231     /* disintegration breath is actually all or nothing, not 1d255 */
1232     MON("black dragon", S_DRAGON, LVL(15, 9, -1, 20, -6), (G_GENO | 1),
1233         A(ATTK(AT_BREA, AD_DISN, 1, 255), ATTK(AT_BITE, AD_PHYS, 3, 8),
1234           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
1235           NO_ATTK),
1236         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_DISINT, MR_DISINT,
1237         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
1238             | M1_CARNIVORE,
1239         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1240         0, 20, CLR_BLACK),
1241     MON("blue dragon", S_DRAGON, LVL(15, 9, -1, 20, -7), (G_GENO | 1),
1242         A(ATTK(AT_BREA, AD_ELEC, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
1243           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
1244           NO_ATTK),
1245         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_ELEC, MR_ELEC,
1246         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
1247             | M1_CARNIVORE,
1248         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1249         0, 20, CLR_BLUE),
1250     MON("green dragon", S_DRAGON, LVL(15, 9, -1, 20, 6), (G_GENO | 1),
1251         A(ATTK(AT_BREA, AD_DRST, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
1252           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
1253           NO_ATTK),
1254         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_POISON, MR_POISON,
1255         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
1256             | M1_CARNIVORE | M1_POIS,
1257         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1258         0, 20, CLR_GREEN),
1259     MON("yellow dragon", S_DRAGON, LVL(15, 9, -1, 20, 7), (G_GENO | 1),
1260         A(ATTK(AT_BREA, AD_ACID, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
1261           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
1262           NO_ATTK),
1263         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_ACID | MR_STONE,
1264         MR_STONE, M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS
1265                       | M1_OVIPAROUS | M1_CARNIVORE | M1_ACID,
1266         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
1267         0, 20, CLR_YELLOW),
1268     /*
1269      * Elementals
1270      */
1271     MON("stalker", S_ELEMENTAL, LVL(8, 12, 3, 0, 0), (G_GENO | 3),
1272         A(ATTK(AT_CLAW, AD_PHYS, 4, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1273           NO_ATTK),
1274         SIZ(900, 400, MS_SILENT, MZ_LARGE), 0, 0,
1275         M1_ANIMAL | M1_FLY | M1_SEE_INVIS,
1276         M2_WANDER | M2_STALK | M2_HOSTILE | M2_STRONG, M3_INFRAVISION,
1277         9, CLR_WHITE),
1278     MON("air elemental", S_ELEMENTAL, LVL(8, 36, 2, 30, 0), (G_NOCORPSE | 1),
1279         A(ATTK(AT_ENGL, AD_PHYS, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1280           NO_ATTK),
1281         SIZ(0, 0, MS_SILENT, MZ_LARGE), MR_POISON | MR_STONE, 0,
1282         M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_BREATHLESS
1283             | M1_UNSOLID | M1_FLY,
1284         M2_STRONG | M2_NEUTER, 0, 10, CLR_CYAN),
1285     MON("fire elemental", S_ELEMENTAL, LVL(8, 12, 2, 30, 0), (G_NOCORPSE | 1),
1286         A(ATTK(AT_CLAW, AD_FIRE, 3, 6), ATTK(AT_NONE, AD_FIRE, 0, 4), NO_ATTK,
1287           NO_ATTK, NO_ATTK, NO_ATTK),
1288         SIZ(0, 0, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON | MR_STONE, 0,
1289         M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_BREATHLESS
1290             | M1_UNSOLID | M1_FLY | M1_NOTAKE,
1291         M2_STRONG | M2_NEUTER, M3_INFRAVISIBLE, 10, CLR_RED),
1292     MON("earth elemental", S_ELEMENTAL, LVL(8, 6, 2, 30, 0), (G_NOCORPSE | 1),
1293         A(ATTK(AT_CLAW, AD_PHYS, 4, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1294           NO_ATTK),
1295         SIZ(2500, 0, MS_SILENT, MZ_LARGE),
1296         MR_FIRE | MR_COLD | MR_POISON | MR_STONE, 0,
1297         M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_BREATHLESS
1298             | M1_WALLWALK | M1_THICK_HIDE,
1299         M2_STRONG | M2_NEUTER, 0, 10, CLR_BROWN),
1300     MON("water elemental", S_ELEMENTAL, LVL(8, 6, 2, 30, 0), (G_NOCORPSE | 1),
1301         A(ATTK(AT_CLAW, AD_PHYS, 5, 6), ATTK(AT_NONE, AD_RUST, 0, 0),
1302           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
1303         SIZ(2500, 0, MS_SILENT, MZ_LARGE), MR_POISON | MR_STONE, 0,
1304         M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_BREATHLESS
1305             | M1_UNSOLID | M1_AMPHIBIOUS | M1_SWIM,
1306         M2_STRONG | M2_NEUTER, 0, 10, CLR_BLUE),
1307     /*
1308      * Fungi
1309      */
1310     MON("lichen", S_FUNGUS, LVL(0, 1, 9, 0, 0), (G_GENO | 4),
1311         A(ATTK(AT_TUCH, AD_STCK, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1312           NO_ATTK),
1313         SIZ(20, 200, MS_SILENT, MZ_SMALL), 0, 0,
1314         M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
1315             | M1_NOTAKE,
1316         M2_HOSTILE | M2_NEUTER, 0, 1, CLR_BRIGHT_GREEN),
1317     MON("brown mold", S_FUNGUS, LVL(1, 0, 9, 0, 0), (G_GENO | 1),
1318         A(ATTK(AT_NONE, AD_COLD, 0, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1319           NO_ATTK),
1320         SIZ(50, 30, MS_SILENT, MZ_SMALL), MR_COLD | MR_POISON,
1321         MR_COLD | MR_POISON, M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS
1322                                  | M1_NOHEAD | M1_MINDLESS | M1_NOTAKE,
1323         M2_HOSTILE | M2_NEUTER, 0, 2, CLR_BROWN),
1324     MON("yellow mold", S_FUNGUS, LVL(1, 0, 9, 0, 0), (G_GENO | 2),
1325         A(ATTK(AT_NONE, AD_STUN, 0, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1326           NO_ATTK),
1327         SIZ(50, 30, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
1328         M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
1329             | M1_POIS | M1_NOTAKE,
1330         M2_HOSTILE | M2_NEUTER, 0, 2, CLR_YELLOW),
1331     MON("green mold", S_FUNGUS, LVL(1, 0, 9, 0, 0), (G_GENO | 1),
1332         A(ATTK(AT_NONE, AD_ACID, 0, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1333           NO_ATTK),
1334         SIZ(50, 30, MS_SILENT, MZ_SMALL), MR_ACID | MR_STONE, MR_STONE,
1335         M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
1336             | M1_ACID | M1_NOTAKE,
1337         M2_HOSTILE | M2_NEUTER, 0, 2, CLR_GREEN),
1338     MON("red mold", S_FUNGUS, LVL(1, 0, 9, 0, 0), (G_GENO | 1),
1339         A(ATTK(AT_NONE, AD_FIRE, 0, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1340           NO_ATTK),
1341         SIZ(50, 30, MS_SILENT, MZ_SMALL), MR_FIRE | MR_POISON,
1342         MR_FIRE | MR_POISON, M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS
1343                                  | M1_NOHEAD | M1_MINDLESS | M1_NOTAKE,
1344         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 2, CLR_RED),
1345     MON("shrieker", S_FUNGUS, LVL(3, 1, 7, 0, 0), (G_GENO | 1),
1346         A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
1347         SIZ(100, 100, MS_SHRIEK, MZ_SMALL), MR_POISON, MR_POISON,
1348         M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
1349             | M1_NOTAKE,
1350         M2_HOSTILE | M2_NEUTER, 0, 2, CLR_BRIGHT_MAGENTA),
1351     MON("violet fungus", S_FUNGUS, LVL(3, 1, 7, 0, 0), (G_GENO | 2),
1352         A(ATTK(AT_TUCH, AD_PHYS, 1, 4), ATTK(AT_TUCH, AD_STCK, 0, 0), NO_ATTK,
1353           NO_ATTK, NO_ATTK, NO_ATTK),
1354         SIZ(100, 100, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
1355         M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
1356             | M1_NOTAKE,
1357         M2_HOSTILE | M2_NEUTER, 0, 5, CLR_MAGENTA),
1358     /*
1359      * Gnomes
1360      */
1361     MON("gnome", S_GNOME, LVL(1, 6, 10, 4, 0), (G_GENO | G_SGROUP | 1),
1362         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1363           NO_ATTK),
1364         SIZ(650, 100, MS_ORC, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
1365         M2_NOPOLY | M2_GNOME | M2_COLLECT, M3_INFRAVISIBLE | M3_INFRAVISION,
1366         3, CLR_BROWN),
1367     MON3("gnome lord", "gnome lady", "gnome leader",
1368         S_GNOME, LVL(3, 8, 10, 4, 0), (G_GENO | 2),
1369         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1370           NO_ATTK),
1371         SIZ(700, 120, MS_ORC, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
1372         M2_GNOME | M2_LORD | M2_COLLECT,
1373         M3_INFRAVISIBLE | M3_INFRAVISION, 4, CLR_BLUE),
1374     MON("gnomish wizard", S_GNOME, LVL(3, 10, 4, 10, 0), (G_GENO | 1),
1375         A(ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1376           NO_ATTK),
1377         SIZ(700, 120, MS_ORC, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
1378         M2_GNOME | M2_MAGIC, M3_INFRAVISIBLE | M3_INFRAVISION, 5, HI_ZAP),
1379     MON3("gnome king", "gnome queen", "gnome ruler",
1380         S_GNOME, LVL(5, 10, 10, 20, 0), (G_GENO | 1),
1381         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1382           NO_ATTK),
1383         SIZ(750, 150, MS_ORC, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
1384         M2_GNOME | M2_PRINCE | M2_COLLECT,
1385         M3_INFRAVISIBLE | M3_INFRAVISION, 6, HI_LORD),
1386 #ifdef SPLITMON_1
1387 };
1388 #endif
1389 #endif /* !SPLITMON_2 */
1390 
1391 /* horrible kludge alert:
1392  * This is a compiler-specific kludge to allow the compilation of monst.o in
1393  * two pieces, by defining first SPLITMON_1 and then SPLITMON_2. The
1394  * resulting assembler files (monst1.s and monst2.s) are then run through
1395  * sed to change local symbols, concatenated together, and assembled to
1396  * produce monst.o. THIS ONLY WORKS WITH THE ATARI GCC, and should only
1397  * be done if you don't have enough memory to compile monst.o the "normal"
1398  * way.  --ERS
1399  */
1400 
1401 #ifndef SPLITMON_1
1402 #ifdef SPLITMON_2
1403 struct permonst _mons2[] = {
1404 #endif
1405     /*
1406      * giant Humanoids
1407      */
1408     MON("giant", S_GIANT, LVL(6, 6, 0, 0, 2), (G_GENO | G_NOGEN | 1),
1409         A(ATTK(AT_WEAP, AD_PHYS, 2, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1410           NO_ATTK),
1411         SIZ(2250, 750, MS_BOAST, MZ_HUGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
1412         M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY | M2_COLLECT
1413             | M2_JEWELS,
1414         M3_INFRAVISIBLE | M3_INFRAVISION, 8, CLR_CYAN),
1415     MON("stone giant", S_GIANT, LVL(6, 6, 0, 0, 2), (G_GENO | G_SGROUP | 1),
1416         A(ATTK(AT_WEAP, AD_PHYS, 2, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1417           NO_ATTK),
1418         SIZ(2250, 750, MS_BOAST, MZ_HUGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
1419         M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY | M2_COLLECT
1420             | M2_JEWELS,
1421         M3_INFRAVISIBLE | M3_INFRAVISION, 8, CLR_GRAY),
1422     MON("hill giant", S_GIANT, LVL(8, 10, 6, 0, -2), (G_GENO | G_SGROUP | 1),
1423         A(ATTK(AT_WEAP, AD_PHYS, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1424           NO_ATTK),
1425         SIZ(2200, 700, MS_BOAST, MZ_HUGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
1426         M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY | M2_COLLECT
1427             | M2_JEWELS,
1428         M3_INFRAVISIBLE | M3_INFRAVISION, 10, CLR_CYAN),
1429     MON("fire giant", S_GIANT, LVL(9, 12, 4, 5, 2), (G_GENO | G_SGROUP | 1),
1430         A(ATTK(AT_WEAP, AD_PHYS, 2, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1431           NO_ATTK),
1432         SIZ(2250, 750, MS_BOAST, MZ_HUGE), MR_FIRE, MR_FIRE,
1433         M1_HUMANOID | M1_CARNIVORE, M2_GIANT | M2_STRONG | M2_ROCKTHROW
1434                                         | M2_NASTY | M2_COLLECT | M2_JEWELS,
1435         M3_INFRAVISIBLE | M3_INFRAVISION, 11, CLR_RED),
1436     MON("frost giant", S_GIANT, LVL(10, 12, 3, 10, -3),
1437         (G_NOHELL | G_GENO | G_SGROUP | 1),
1438         A(ATTK(AT_WEAP, AD_PHYS, 2, 12), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1439           NO_ATTK),
1440         SIZ(2250, 750, MS_BOAST, MZ_HUGE), MR_COLD, MR_COLD,
1441         M1_HUMANOID | M1_CARNIVORE, M2_GIANT | M2_STRONG | M2_ROCKTHROW
1442                                         | M2_NASTY | M2_COLLECT | M2_JEWELS,
1443         M3_INFRAVISIBLE | M3_INFRAVISION, 13, CLR_WHITE),
1444     MON("ettin", S_GIANT, LVL(10, 12, 3, 0, 0), (G_GENO | 1),
1445         A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_WEAP, AD_PHYS, 3, 6), NO_ATTK,
1446           NO_ATTK, NO_ATTK, NO_ATTK),
1447         SIZ(1700, 500, MS_GRUNT, MZ_HUGE), 0, 0,
1448         M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE,
1449         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT,
1450         M3_INFRAVISIBLE | M3_INFRAVISION, 13, CLR_YELLOW),
1451     MON("storm giant", S_GIANT, LVL(16, 12, 3, 10, -3),
1452         (G_GENO | G_SGROUP | 1), A(ATTK(AT_WEAP, AD_PHYS, 2, 12), NO_ATTK,
1453                                    NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
1454         SIZ(2250, 750, MS_BOAST, MZ_HUGE), MR_ELEC, MR_ELEC,
1455         M1_HUMANOID | M1_CARNIVORE, M2_GIANT | M2_STRONG | M2_ROCKTHROW
1456                                         | M2_NASTY | M2_COLLECT | M2_JEWELS,
1457         M3_INFRAVISIBLE | M3_INFRAVISION, 19, CLR_BLUE),
1458     MON("titan", S_GIANT, LVL(16, 18, -3, 70, 9), (1),
1459         A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK,
1460           NO_ATTK, NO_ATTK, NO_ATTK),
1461         SIZ(2300, 900, MS_SPELL, MZ_HUGE), 0, 0,
1462         M1_FLY | M1_HUMANOID | M1_OMNIVORE,
1463         M2_STRONG | M2_ROCKTHROW | M2_NASTY | M2_COLLECT | M2_MAGIC,
1464         M3_INFRAVISIBLE | M3_INFRAVISION, 20, CLR_MAGENTA),
1465     MON("minotaur", S_GIANT, LVL(15, 15, 6, 0, 0), (G_GENO | G_NOGEN),
1466         A(ATTK(AT_CLAW, AD_PHYS, 3, 10), ATTK(AT_CLAW, AD_PHYS, 3, 10),
1467           ATTK(AT_BUTT, AD_PHYS, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK),
1468         SIZ(1500, 700, MS_MOO, MZ_LARGE), 0, 0,
1469         M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE,
1470         M2_HOSTILE | M2_STRONG | M2_NASTY, M3_INFRAVISIBLE | M3_INFRAVISION,
1471         17, CLR_ORANGE),
1472 
1473     /*
1474      * Invisible
1475      * S_invisible=='I' is a visual marker for all invisible monsters
1476      * and must be not be used for any specific monster types.  Long
1477      * time 'invisible stalker' was changed to 'stalker', an Elemental.
1478      */
1479 
1480     /*
1481      * Jabberwock
1482      */
1483     /* the illustration from _Through_the_Looking_Glass_
1484        depicts hands as well as wings */
1485     MON("jabberwock", S_JABBERWOCK, LVL(15, 12, -2, 50, 0), (G_GENO | 1),
1486         A(ATTK(AT_BITE, AD_PHYS, 2, 10), ATTK(AT_BITE, AD_PHYS, 2, 10),
1487           ATTK(AT_CLAW, AD_PHYS, 2, 10), ATTK(AT_CLAW, AD_PHYS, 2, 10),
1488           NO_ATTK, NO_ATTK),
1489         SIZ(1300, 600, MS_BURBLE, MZ_LARGE), 0, 0,
1490         M1_ANIMAL | M1_FLY | M1_CARNIVORE,
1491         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT, M3_INFRAVISIBLE,
1492         18, CLR_ORANGE),
1493 #if 0 /* DEFERRED */
1494     MON("vorpal jabberwock", S_JABBERWOCK,
1495         LVL(20, 12, -2, 50, 0), (G_GENO | 1),
1496         A(ATTK(AT_BITE, AD_PHYS, 3, 10), ATTK(AT_BITE, AD_PHYS, 3, 10),
1497           ATTK(AT_CLAW, AD_PHYS, 3, 10), ATTK(AT_CLAW, AD_PHYS, 3, 10),
1498           NO_ATTK, NO_ATTK),
1499         SIZ(1300, 600, MS_BURBLE, MZ_LARGE), 0, 0,
1500         M1_ANIMAL | M1_FLY | M1_CARNIVORE,
1501         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT, M3_INFRAVISIBLE,
1502         25, HI_LORD),
1503 #endif
1504     /*
1505      * Kops
1506      */
1507     MON("Keystone Kop", S_KOP, LVL(1, 6, 10, 10, 9),
1508         (G_GENO | G_LGROUP | G_NOGEN),
1509         A(ATTK(AT_WEAP, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1510           NO_ATTK),
1511         SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0,
1512         M1_HUMANOID | M1_CARNIVORE,
1513         M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_MALE | M2_COLLECT,
1514         M3_INFRAVISIBLE, 3, CLR_GRAY),
1515     MON("Kop Sergeant", S_KOP, LVL(2, 8, 10, 10, 10),
1516         (G_GENO | G_SGROUP | G_NOGEN),
1517         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1518           NO_ATTK),
1519         SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0,
1520         M1_HUMANOID | M1_CARNIVORE,
1521         M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_STRONG | M2_MALE | M2_COLLECT,
1522         M3_INFRAVISIBLE, 4, CLR_BLUE),
1523     MON("Kop Lieutenant", S_KOP, LVL(3, 10, 10, 20, 11), (G_GENO | G_NOGEN),
1524         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1525           NO_ATTK),
1526         SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0,
1527         M1_HUMANOID | M1_CARNIVORE,
1528         M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_STRONG | M2_MALE | M2_COLLECT,
1529         M3_INFRAVISIBLE, 5, CLR_CYAN),
1530     MON("Kop Kaptain", S_KOP, LVL(4, 12, 10, 20, 12), (G_GENO | G_NOGEN),
1531         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1532           NO_ATTK),
1533         SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0,
1534         M1_HUMANOID | M1_CARNIVORE,
1535         M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_STRONG | M2_MALE | M2_COLLECT,
1536         M3_INFRAVISIBLE, 6, HI_LORD),
1537     /*
1538      * Liches
1539      */
1540     MON("lich", S_LICH, LVL(11, 6, 0, 30, -9), (G_GENO | G_NOCORPSE | 1),
1541         A(ATTK(AT_TUCH, AD_COLD, 1, 10), ATTK(AT_MAGC, AD_SPEL, 0, 0),
1542           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
1543         SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
1544         MR_COLD, M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
1545         M2_UNDEAD | M2_HOSTILE | M2_MAGIC, M3_INFRAVISION, 14, CLR_BROWN),
1546     MON("demilich", S_LICH, LVL(14, 9, -2, 60, -12),
1547         (G_GENO | G_NOCORPSE | 1),
1548         A(ATTK(AT_TUCH, AD_COLD, 3, 4), ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK,
1549           NO_ATTK, NO_ATTK, NO_ATTK),
1550         SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
1551         MR_COLD, M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
1552         M2_UNDEAD | M2_HOSTILE | M2_MAGIC, M3_INFRAVISION, 18, CLR_RED),
1553     MON("master lich", S_LICH, LVL(17, 9, -4, 90, -15),
1554         (G_HELL | G_GENO | G_NOCORPSE | 1),
1555         A(ATTK(AT_TUCH, AD_COLD, 3, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK,
1556           NO_ATTK, NO_ATTK, NO_ATTK),
1557         SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN),
1558         MR_FIRE | MR_COLD | MR_SLEEP | MR_POISON, MR_FIRE | MR_COLD,
1559         M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
1560         M2_UNDEAD | M2_HOSTILE | M2_MAGIC, M3_WANTSBOOK | M3_INFRAVISION,
1561         21, HI_LORD),
1562     MON("arch-lich", S_LICH, LVL(25, 9, -6, 90, -15),
1563         (G_HELL | G_GENO | G_NOCORPSE | 1),
1564         A(ATTK(AT_TUCH, AD_COLD, 5, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK,
1565           NO_ATTK, NO_ATTK, NO_ATTK),
1566         SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN),
1567         MR_FIRE | MR_COLD | MR_SLEEP | MR_ELEC | MR_POISON, MR_FIRE | MR_COLD,
1568         M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
1569         M2_UNDEAD | M2_HOSTILE | M2_MAGIC, M3_WANTSBOOK | M3_INFRAVISION,
1570         29, CLR_BRIGHT_MAGENTA),
1571     /*
1572      * Mummies
1573      */
1574     MON("kobold mummy", S_MUMMY, LVL(3, 8, 6, 20, -2),
1575         (G_GENO | G_NOCORPSE | 1),
1576         A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_TUCH, AD_WTHR, 1, 4), NO_ATTK,
1577           NO_ATTK, NO_ATTK, NO_ATTK),
1578         SIZ(400, 50, MS_SILENT, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
1579         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
1580         M2_UNDEAD | M2_HOSTILE, M3_INFRAVISION, 7, CLR_GRAY),
1581     MON("gnome mummy", S_MUMMY, LVL(4, 10, 6, 20, -3),
1582         (G_GENO | G_NOCORPSE | 1),
1583         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_TUCH, AD_WTHR, 1, 6), NO_ATTK,
1584           NO_ATTK, NO_ATTK, NO_ATTK),
1585         SIZ(650, 50, MS_SILENT, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
1586         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
1587         M2_UNDEAD | M2_HOSTILE | M2_GNOME, M3_INFRAVISION, 8, CLR_BROWN),
1588     MON("orc mummy", S_MUMMY, LVL(5, 10, 5, 20, -4),
1589         (G_GENO | G_NOCORPSE | 1),
1590         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_TUCH, AD_WTHR, 1, 8), NO_ATTK,
1591           NO_ATTK, NO_ATTK, NO_ATTK),
1592         SIZ(850, 75, MS_SILENT, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
1593         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
1594         M2_UNDEAD | M2_HOSTILE | M2_ORC | M2_GREEDY | M2_JEWELS,
1595         M3_INFRAVISION, 9, CLR_BLUE),
1596     MON("dwarf mummy", S_MUMMY, LVL(5, 10, 5, 20, -4),
1597         (G_GENO | G_NOCORPSE | 1),
1598         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_TUCH, AD_WTHR, 2, 4), NO_ATTK,
1599           NO_ATTK, NO_ATTK, NO_ATTK),
1600         SIZ(900, 150, MS_SILENT, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
1601         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
1602         M2_UNDEAD | M2_HOSTILE | M2_DWARF | M2_GREEDY | M2_JEWELS,
1603         M3_INFRAVISION, 9, CLR_RED),
1604     MON("elf mummy", S_MUMMY, LVL(6, 12, 4, 30, -5),
1605         (G_GENO | G_NOCORPSE | 1),
1606         A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_TUCH, AD_WTHR, 3, 4), NO_ATTK,
1607           NO_ATTK, NO_ATTK, NO_ATTK),
1608         SIZ(WT_ELF, 175, MS_SILENT, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
1609         0, M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
1610         M2_UNDEAD | M2_HOSTILE | M2_ELF, M3_INFRAVISION, 10, CLR_GREEN),
1611     MON("human mummy", S_MUMMY, LVL(6, 12, 4, 30, -5),
1612         (G_GENO | G_NOCORPSE | 1),
1613         A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
1614           ATTK(AT_TUCH, AD_WTHR, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK),
1615         SIZ(WT_HUMAN, 200, MS_SILENT, MZ_HUMAN),
1616         MR_COLD | MR_SLEEP | MR_POISON, 0,
1617         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
1618         M2_UNDEAD | M2_HOSTILE, M3_INFRAVISION, 11, HI_DOMESTIC),
1619     MON("ettin mummy", S_MUMMY, LVL(7, 12, 4, 30, -6),
1620         (G_GENO | G_NOCORPSE | 1),
1621         A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_PHYS, 2, 6),
1622           ATTK(AT_TUCH, AD_WTHR, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK),
1623         SIZ(1700, 250, MS_SILENT, MZ_HUGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
1624         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
1625         M2_UNDEAD | M2_HOSTILE | M2_STRONG, M3_INFRAVISION, 12, CLR_YELLOW),
1626     MON("giant mummy", S_MUMMY, LVL(8, 14, 3, 30, -7),
1627         (G_GENO | G_NOCORPSE | 1),
1628         A(ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_CLAW, AD_PHYS, 3, 4),
1629           ATTK(AT_TUCH, AD_WTHR, 5, 4), NO_ATTK, NO_ATTK, NO_ATTK),
1630         SIZ(2050, 375, MS_SILENT, MZ_HUGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
1631         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
1632         M2_UNDEAD | M2_HOSTILE | M2_GIANT | M2_STRONG | M2_JEWELS,
1633         M3_INFRAVISION, 13, CLR_CYAN),
1634     /*
1635      * Nagas
1636      */
1637     MON("red naga hatchling", S_NAGA, LVL(3, 10, 6, 0, 0), G_GENO,
1638         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1639           NO_ATTK),
1640         SIZ(500, 100, MS_MUMBLE, MZ_SMALL), MR_FIRE | MR_POISON,
1641         MR_FIRE | MR_POISON,
1642         M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_NOTAKE | M1_OMNIVORE,
1643         M2_STRONG, M3_INFRAVISIBLE, 4, CLR_RED),
1644     MON("black naga hatchling", S_NAGA, LVL(3, 10, 6, 0, 0), G_GENO,
1645         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1646           NO_ATTK),
1647         SIZ(500, 100, MS_MUMBLE, MZ_SMALL), MR_POISON | MR_ACID | MR_STONE,
1648         MR_POISON | MR_STONE, M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_ACID
1649                                   | M1_NOTAKE | M1_CARNIVORE,
1650         M2_STRONG, 0, 4, CLR_BLACK),
1651     MON("golden naga hatchling", S_NAGA, LVL(3, 10, 6, 0, 0), G_GENO,
1652         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1653           NO_ATTK),
1654         SIZ(500, 100, MS_MUMBLE, MZ_SMALL), MR_POISON, MR_POISON,
1655         M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_NOTAKE | M1_OMNIVORE,
1656         M2_STRONG, 0, 4, HI_GOLD),
1657     MON("guardian naga hatchling", S_NAGA, LVL(3, 10, 6, 0, 0), G_GENO,
1658         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1659           NO_ATTK),
1660         SIZ(500, 100, MS_MUMBLE, MZ_SMALL), MR_POISON, MR_POISON,
1661         M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_NOTAKE | M1_OMNIVORE,
1662         M2_STRONG, 0, 4, CLR_GREEN),
1663     MON("red naga", S_NAGA, LVL(6, 12, 4, 0, -4), (G_GENO | 1),
1664         A(ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_BREA, AD_FIRE, 2, 6), NO_ATTK,
1665           NO_ATTK, NO_ATTK, NO_ATTK),
1666         SIZ(2600, 400, MS_MUMBLE, MZ_HUGE), MR_FIRE | MR_POISON,
1667         MR_FIRE | MR_POISON, M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE
1668                                  | M1_OVIPAROUS | M1_NOTAKE | M1_OMNIVORE,
1669         M2_STRONG, M3_INFRAVISIBLE, 8, CLR_RED),
1670     MON("black naga", S_NAGA, LVL(8, 14, 2, 10, 4), (G_GENO | 1),
1671         A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_SPIT, AD_ACID, 0, 0), NO_ATTK,
1672           NO_ATTK, NO_ATTK, NO_ATTK),
1673         SIZ(2600, 400, MS_MUMBLE, MZ_HUGE), MR_POISON | MR_ACID | MR_STONE,
1674         MR_POISON | MR_STONE,
1675         M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_OVIPAROUS | M1_ACID
1676             | M1_NOTAKE | M1_CARNIVORE,
1677         M2_STRONG, 0, 10, CLR_BLACK),
1678     MON("golden naga", S_NAGA, LVL(10, 14, 2, 70, 5), (G_GENO | 1),
1679         A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_MAGC, AD_SPEL, 4, 6), NO_ATTK,
1680           NO_ATTK, NO_ATTK, NO_ATTK),
1681         SIZ(2600, 400, MS_MUMBLE, MZ_HUGE), MR_POISON, MR_POISON,
1682         M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_OVIPAROUS | M1_NOTAKE
1683             | M1_OMNIVORE,
1684         M2_STRONG, 0, 13, HI_GOLD),
1685     MON("guardian naga", S_NAGA, LVL(12, 16, 0, 50, 7), (G_GENO | 1),
1686         A(ATTK(AT_BITE, AD_PLYS, 1, 6), ATTK(AT_SPIT, AD_DRST, 1, 6),
1687           ATTK(AT_HUGS, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
1688         SIZ(2600, 400, MS_MUMBLE, MZ_HUGE), MR_POISON, MR_POISON,
1689         M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_OVIPAROUS | M1_POIS
1690             | M1_NOTAKE | M1_OMNIVORE,
1691         M2_STRONG, 0, 16, CLR_GREEN),
1692     /*
1693      * Ogres
1694      */
1695     MON("ogre", S_OGRE, LVL(5, 10, 5, 0, -3), (G_SGROUP | G_GENO | 1),
1696         A(ATTK(AT_WEAP, AD_PHYS, 2, 5), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1697           NO_ATTK),
1698         SIZ(1600, 500, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
1699         M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
1700         M3_INFRAVISIBLE | M3_INFRAVISION, 7, CLR_BROWN),
1701     MON3("ogre lord", "ogre lady", "ogre leader",
1702         S_OGRE, LVL(7, 12, 3, 30, -5), (G_GENO | 2),
1703         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1704           NO_ATTK),
1705         SIZ(1700, 700, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
1706         M2_STRONG | M2_LORD | M2_GREEDY | M2_JEWELS | M2_COLLECT,
1707         M3_INFRAVISIBLE | M3_INFRAVISION, 9, CLR_RED),
1708     MON3("ogre king", "ogre queen", "ogre tyrant",
1709         S_OGRE, LVL(9, 14, 4, 60, -7), (G_GENO | 2),
1710         A(ATTK(AT_WEAP, AD_PHYS, 3, 5), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1711           NO_ATTK),
1712         SIZ(1700, 750, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
1713         M2_STRONG | M2_PRINCE | M2_GREEDY | M2_JEWELS | M2_COLLECT,
1714         M3_INFRAVISIBLE | M3_INFRAVISION, 11, HI_LORD),
1715     /*
1716      * Puddings
1717      *
1718      * must be in the same order as the pudding globs in objects.c
1719      */
1720     MON("gray ooze", S_PUDDING, LVL(3, 1, 8, 0, 0), (G_GENO | G_NOCORPSE | 2),
1721         A(ATTK(AT_BITE, AD_RUST, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1722           NO_ATTK),
1723         SIZ(500, 250, MS_SILENT, MZ_MEDIUM),
1724         MR_FIRE | MR_COLD | MR_POISON | MR_ACID | MR_STONE,
1725         MR_FIRE | MR_COLD | MR_POISON,
1726         M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
1727             | M1_MINDLESS | M1_OMNIVORE | M1_ACID,
1728         M2_HOSTILE | M2_NEUTER, 0, 4, CLR_GRAY),
1729     MON("brown pudding", S_PUDDING, LVL(5, 3, 8, 0, 0),
1730         (G_GENO | G_NOCORPSE | 1), A(ATTK(AT_BITE, AD_DCAY, 0, 0), NO_ATTK,
1731                                      NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
1732         SIZ(500, 250, MS_SILENT, MZ_MEDIUM),
1733         MR_COLD | MR_ELEC | MR_POISON | MR_ACID | MR_STONE,
1734         MR_COLD | MR_ELEC | MR_POISON,
1735         M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
1736             | M1_MINDLESS | M1_OMNIVORE | M1_ACID,
1737         M2_HOSTILE | M2_NEUTER, 0, 6, CLR_BROWN),
1738     MON("green slime", S_PUDDING, LVL(6, 6, 6, 0, 0),
1739         (G_HELL | G_GENO | G_NOCORPSE | 1),
1740         A(ATTK(AT_TUCH, AD_SLIM, 1, 4), ATTK(AT_ENGL, AD_SLIM, 1, 1),
1741           ATTK(AT_NONE, AD_SLIM, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
1742         SIZ(400, 150, MS_SILENT, MZ_LARGE),
1743         MR_COLD | MR_ELEC | MR_POISON | MR_ACID | MR_STONE, 0,
1744         M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
1745             | M1_MINDLESS | M1_OMNIVORE | M1_ACID | M1_POIS,
1746         M2_HOSTILE | M2_NEUTER, 0, 8, CLR_GREEN),
1747     MON("black pudding", S_PUDDING, LVL(10, 6, 6, 0, 0),
1748         (G_GENO | G_NOCORPSE | 1),
1749         A(ATTK(AT_BITE, AD_CORR, 3, 8), ATTK(AT_NONE, AD_CORR, 0, 0), NO_ATTK,
1750           NO_ATTK, NO_ATTK, NO_ATTK),
1751         SIZ(900, 250, MS_SILENT, MZ_LARGE),
1752         MR_COLD | MR_ELEC | MR_POISON | MR_ACID | MR_STONE,
1753         MR_COLD | MR_ELEC | MR_POISON,
1754         M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
1755             | M1_MINDLESS | M1_OMNIVORE | M1_ACID,
1756         M2_HOSTILE | M2_NEUTER, 0, 12, CLR_BLACK),
1757     /*
1758      * Q - elves (Quendi)
1759      */
1760     MON("elf", S_ELF, LVL(10, 12, 10, 2, -3), G_NOGEN, /* for corpses */
1761         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1762           NO_ATTK),
1763         SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
1764         M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS,
1765         M2_NOPOLY | M2_ELF | M2_STRONG | M2_COLLECT,
1766         M3_INFRAVISION | M3_INFRAVISIBLE, 12, HI_DOMESTIC),
1767     MON("Woodland-elf", S_ELF, LVL(4, 12, 10, 10, -5),
1768         (G_GENO | G_SGROUP | 2), A(ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK,
1769                                    NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
1770         SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
1771         M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS, M2_ELF | M2_COLLECT,
1772         M3_INFRAVISIBLE | M3_INFRAVISION, 6, CLR_GREEN),
1773     MON("Green-elf", S_ELF, LVL(5, 12, 10, 10, -6), (G_GENO | G_SGROUP | 2),
1774         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1775           NO_ATTK),
1776         SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
1777         M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS, M2_ELF | M2_COLLECT,
1778         M3_INFRAVISIBLE | M3_INFRAVISION, 7, CLR_BRIGHT_GREEN),
1779     MON("Grey-elf", S_ELF, LVL(6, 12, 10, 10, -7), (G_GENO | G_SGROUP | 2),
1780         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1781           NO_ATTK),
1782         SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
1783         M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS, M2_ELF | M2_COLLECT,
1784         M3_INFRAVISIBLE | M3_INFRAVISION, 8, CLR_GRAY),
1785     MON3("elf-lord", "elf-queen", "elf-noble",
1786         S_ELF, LVL(8, 12, 10, 20, -9), (G_GENO | G_SGROUP | 2),
1787         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK,
1788           NO_ATTK, NO_ATTK, NO_ATTK),
1789         SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
1790         M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS,
1791         M2_ELF | M2_STRONG | M2_LORD | M2_COLLECT,
1792         M3_INFRAVISIBLE | M3_INFRAVISION, 11, CLR_BRIGHT_BLUE),
1793     MON3("Elvenking", "Elvenqueen", "elven monarch",
1794         S_ELF, LVL(9, 12, 10, 25, -10), (G_GENO | 1),
1795         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK,
1796           NO_ATTK, NO_ATTK, NO_ATTK),
1797         SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
1798         M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS,
1799         M2_ELF | M2_STRONG | M2_PRINCE | M2_COLLECT,
1800         M3_INFRAVISIBLE | M3_INFRAVISION, 11, HI_LORD),
1801     /*
1802      * Rust monster or disenchanter
1803      */
1804     MON("rust monster", S_RUSTMONST, LVL(5, 18, 2, 0, 0), (G_GENO | 2),
1805         A(ATTK(AT_TUCH, AD_RUST, 0, 0), ATTK(AT_TUCH, AD_RUST, 0, 0),
1806           ATTK(AT_NONE, AD_RUST, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
1807         SIZ(1000, 250, MS_SILENT, MZ_MEDIUM), 0, 0,
1808         M1_SWIM | M1_ANIMAL | M1_NOHANDS | M1_METALLIVORE, M2_HOSTILE,
1809         M3_INFRAVISIBLE, 8, CLR_BROWN),
1810     MON("disenchanter", S_RUSTMONST, LVL(12, 12, -10, 0, -3),
1811         (G_HELL | G_GENO | 2),
1812         A(ATTK(AT_CLAW, AD_ENCH, 4, 4), ATTK(AT_NONE, AD_ENCH, 0, 0), NO_ATTK,
1813           NO_ATTK, NO_ATTK, NO_ATTK),
1814         SIZ(750, 200, MS_GROWL, MZ_LARGE), 0, 0, M1_ANIMAL | M1_CARNIVORE,
1815         M2_HOSTILE, M3_INFRAVISIBLE, 14, CLR_BLUE),
1816     /*
1817      * Snakes
1818      */
1819     MON("garter snake", S_SNAKE, LVL(1, 8, 8, 0, 0), (G_LGROUP | G_GENO | 1),
1820         A(ATTK(AT_BITE, AD_PHYS, 1, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1821           NO_ATTK),
1822         SIZ(50, 60, MS_HISS, MZ_TINY), 0, 0,
1823         M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY
1824             | M1_OVIPAROUS | M1_CARNIVORE | M1_NOTAKE,
1825         0, 0, 3, CLR_GREEN),
1826     MON("snake", S_SNAKE, LVL(4, 15, 3, 0, 0), (G_GENO | 2),
1827         A(ATTK(AT_BITE, AD_DRST, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1828           NO_ATTK),
1829         SIZ(100, 80, MS_HISS, MZ_SMALL), MR_POISON, MR_POISON,
1830         M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_POIS
1831             | M1_OVIPAROUS | M1_CARNIVORE | M1_NOTAKE,
1832         M2_HOSTILE, 0, 6, CLR_BROWN),
1833     MON("water moccasin", S_SNAKE, LVL(4, 15, 3, 0, 0),
1834         (G_GENO | G_NOGEN | G_LGROUP),
1835         A(ATTK(AT_BITE, AD_DRST, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1836           NO_ATTK),
1837         SIZ(150, 80, MS_HISS, MZ_SMALL), MR_POISON, MR_POISON,
1838         M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_POIS
1839             | M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
1840         M2_HOSTILE, 0, 7, CLR_RED),
1841     MON("python", S_SNAKE, LVL(6, 3, 5, 0, 0), (G_GENO | 1),
1842         A(ATTK(AT_BITE, AD_PHYS, 1, 4), ATTK(AT_TUCH, AD_PHYS, 0, 0),
1843           ATTK(AT_HUGS, AD_WRAP, 1, 4), ATTK(AT_HUGS, AD_PHYS, 2, 4), NO_ATTK,
1844           NO_ATTK),
1845         SIZ(250, 100, MS_HISS, MZ_LARGE), 0, 0,
1846         M1_SWIM | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_CARNIVORE
1847             | M1_OVIPAROUS | M1_NOTAKE,
1848         M2_HOSTILE | M2_STRONG, M3_INFRAVISION, 8, CLR_MAGENTA),
1849     MON("pit viper", S_SNAKE, LVL(6, 15, 2, 0, 0), (G_GENO | 1),
1850         A(ATTK(AT_BITE, AD_DRST, 1, 4), ATTK(AT_BITE, AD_DRST, 1, 4), NO_ATTK,
1851           NO_ATTK, NO_ATTK, NO_ATTK),
1852         SIZ(100, 60, MS_HISS, MZ_MEDIUM), MR_POISON, MR_POISON,
1853         M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_POIS
1854             | M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
1855         M2_HOSTILE, M3_INFRAVISION, 9, CLR_BLUE),
1856     MON("cobra", S_SNAKE, LVL(6, 18, 2, 0, 0), (G_GENO | 1),
1857         A(ATTK(AT_BITE, AD_DRST, 2, 4), ATTK(AT_SPIT, AD_BLND, 0, 0), NO_ATTK,
1858           NO_ATTK, NO_ATTK, NO_ATTK),
1859         SIZ(250, 100, MS_HISS, MZ_LARGE), MR_POISON, MR_POISON,
1860         M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_POIS
1861             | M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
1862         M2_HOSTILE, 0, 10, CLR_BRIGHT_BLUE),
1863     /*
1864      * Trolls
1865      */
1866     MON("troll", S_TROLL, LVL(7, 12, 4, 0, -3), (G_GENO | 2),
1867         A(ATTK(AT_WEAP, AD_PHYS, 4, 2), ATTK(AT_CLAW, AD_PHYS, 4, 2),
1868           ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
1869         SIZ(800, 350, MS_GRUNT, MZ_LARGE), 0, 0,
1870         M1_HUMANOID | M1_REGEN | M1_CARNIVORE,
1871         M2_STRONG | M2_STALK | M2_HOSTILE, M3_INFRAVISIBLE | M3_INFRAVISION,
1872         9, CLR_BROWN),
1873     MON("ice troll", S_TROLL, LVL(9, 10, 2, 20, -3), (G_NOHELL | G_GENO | 1),
1874         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_COLD, 2, 6),
1875           ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
1876         SIZ(1000, 300, MS_GRUNT, MZ_LARGE), MR_COLD, MR_COLD,
1877         M1_HUMANOID | M1_REGEN | M1_CARNIVORE,
1878         M2_STRONG | M2_STALK | M2_HOSTILE, M3_INFRAVISIBLE | M3_INFRAVISION,
1879         12, CLR_WHITE),
1880     MON("rock troll", S_TROLL, LVL(9, 12, 0, 0, -3), (G_GENO | 1),
1881         A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 2, 8),
1882           ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
1883         SIZ(1200, 300, MS_GRUNT, MZ_LARGE), 0, 0,
1884         M1_HUMANOID | M1_REGEN | M1_CARNIVORE,
1885         M2_STRONG | M2_STALK | M2_HOSTILE | M2_COLLECT,
1886         M3_INFRAVISIBLE | M3_INFRAVISION, 12, CLR_CYAN),
1887     MON("water troll", S_TROLL, LVL(11, 14, 4, 40, -3), (G_NOGEN | G_GENO),
1888         A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8),
1889           ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
1890         SIZ(1200, 350, MS_GRUNT, MZ_LARGE), 0, 0,
1891         M1_HUMANOID | M1_REGEN | M1_CARNIVORE | M1_SWIM,
1892         M2_STRONG | M2_STALK | M2_HOSTILE, M3_INFRAVISIBLE | M3_INFRAVISION,
1893         13, CLR_BLUE),
1894     MON("Olog-hai", S_TROLL, LVL(13, 12, -4, 0, -7), (G_GENO | 1),
1895         A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 2, 8),
1896           ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
1897         SIZ(1500, 400, MS_GRUNT, MZ_LARGE), 0, 0,
1898         M1_HUMANOID | M1_REGEN | M1_CARNIVORE,
1899         M2_STRONG | M2_STALK | M2_HOSTILE | M2_COLLECT,
1900         M3_INFRAVISIBLE | M3_INFRAVISION, 16, HI_LORD),
1901     /*
1902      * U - aberrations
1903      */
1904     MON("umber hulk", S_ABERRATION, LVL(9, 6, 2, 25, 0), (G_GENO | 2),
1905         A(ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_CLAW, AD_PHYS, 3, 4),
1906           ATTK(AT_BITE, AD_PHYS, 2, 5), ATTK(AT_GAZE, AD_CONF, 0, 0), NO_ATTK,
1907           NO_ATTK),
1908         SIZ(1200, 500, MS_SILENT, MZ_LARGE), 0, 0, M1_TUNNEL | M1_CARNIVORE,
1909         M2_STRONG, M3_INFRAVISIBLE, 12, CLR_BROWN),
1910     MON("quantum mechanic", S_ABERRATION, LVL(7, 12, 3, 10, 0), (G_GENO | 3),
1911         A(ATTK(AT_CLAW, AD_TLPT, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1912           NO_ATTK),
1913         SIZ(WT_HUMAN, 20, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
1914         M1_HUMANOID | M1_OMNIVORE | M1_POIS | M1_TPORT, M2_HOSTILE,
1915         M3_INFRAVISIBLE, 9, CLR_CYAN),
1916     MON("mind flayer", S_ABERRATION, LVL(9, 12, 5, 90, -8), (G_GENO | 1),
1917         A(ATTK(AT_WEAP, AD_PHYS, 1, 4), ATTK(AT_TENT, AD_DRIN, 2, 1),
1918           ATTK(AT_TENT, AD_DRIN, 2, 1), ATTK(AT_TENT, AD_DRIN, 2, 1), NO_ATTK,
1919           NO_ATTK),
1920         SIZ(1450, 400, MS_HISS, MZ_HUMAN), 0, 0,
1921         M1_HUMANOID | M1_FLY | M1_SEE_INVIS | M1_OMNIVORE,
1922         M2_HOSTILE | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_COLLECT,
1923         M3_INFRAVISIBLE | M3_INFRAVISION, 13, CLR_MAGENTA),
1924     MON("genetic engineer", S_ABERRATION, LVL(12, 12, 3, 10, 0), (G_GENO | 1),
1925         A(ATTK(AT_CLAW, AD_POLY, 1, 4),
1926           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
1927         SIZ(WT_HUMAN, 20, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
1928         M1_HUMANOID | M1_OMNIVORE | M1_POIS | M1_TPORT, M2_HOSTILE | M2_NASTY,
1929         M3_INFRAVISIBLE, 14, CLR_GREEN),
1930     MON("master mind flayer", S_ABERRATION, LVL(13, 12, 0, 90, -8),
1931         (G_GENO | 1),
1932         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_TENT, AD_DRIN, 2, 1),
1933           ATTK(AT_TENT, AD_DRIN, 2, 1), ATTK(AT_TENT, AD_DRIN, 2, 1),
1934           ATTK(AT_TENT, AD_DRIN, 2, 1), ATTK(AT_TENT, AD_DRIN, 2, 1)),
1935         SIZ(1450, 400, MS_HISS, MZ_HUMAN), 0, 0,
1936         M1_HUMANOID | M1_FLY | M1_SEE_INVIS | M1_OMNIVORE,
1937         M2_HOSTILE | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_COLLECT,
1938         M3_INFRAVISIBLE | M3_INFRAVISION, 19, CLR_BRIGHT_MAGENTA),
1939     /*
1940      * Vampires
1941      */
1942     MON("vampire", S_VAMPIRE, LVL(10, 12, 1, 25, -8),
1943         (G_GENO | G_NOCORPSE | 1),
1944         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_BITE, AD_DRLI, 1, 6), NO_ATTK,
1945           NO_ATTK, NO_ATTK, NO_ATTK),
1946         SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
1947         M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
1948         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY
1949             | M2_SHAPESHIFTER,
1950         M3_INFRAVISIBLE, 12, CLR_RED),
1951     MON3("vampire lord", "vampire lady", "vampire leader",
1952         S_VAMPIRE, LVL(12, 14, 0, 50, -9),
1953         (G_GENO | G_NOCORPSE | 1),
1954         A(ATTK(AT_CLAW, AD_PHYS, 1, 8), ATTK(AT_BITE, AD_DRLI, 1, 8), NO_ATTK,
1955           NO_ATTK, NO_ATTK, NO_ATTK),
1956         SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
1957         M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
1958         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_LORD
1959             | M2_SHAPESHIFTER,
1960         M3_INFRAVISIBLE, 14, CLR_BLUE),
1961 #if 0 /* DEFERRED */
1962     MON("vampire mage", S_VAMPIRE,
1963         LVL(20, 14, -4, 50, -9), (G_GENO | G_NOCORPSE | 1),
1964         A(ATTK(AT_CLAW, AD_DRLI, 2, 8), ATTK(AT_BITE, AD_DRLI, 1, 8),
1965           ATTK(AT_MAGC, AD_SPEL, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
1966         SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
1967         M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
1968         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_LORD
1969           | M2_MALE | M2_MAGIC | M2_SHAPESHIFTER,
1970         M3_INFRAVISIBLE, 26, HI_ZAP),
1971 #endif
1972     MON("Vlad the Impaler", S_VAMPIRE, LVL(28, 26, -6, 80, -10),
1973         (G_NOGEN | G_NOCORPSE | G_UNIQ),
1974         A(ATTK(AT_WEAP, AD_PHYS, 2, 10), ATTK(AT_BITE, AD_DRLI, 1, 12),
1975           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
1976         SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
1977         M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
1978         M2_NOPOLY | M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG
1979             | M2_NASTY | M2_PRINCE | M2_MALE | M2_SHAPESHIFTER,
1980         M3_WAITFORU | M3_WANTSCAND | M3_INFRAVISIBLE, 32, HI_LORD),
1981     /*
1982      * Wraiths
1983      */
1984     MON("barrow wight", S_WRAITH, LVL(3, 12, 5, 5, -3),
1985         (G_GENO | G_NOCORPSE | 1),
1986         A(ATTK(AT_WEAP, AD_DRLI, 0, 0), ATTK(AT_MAGC, AD_SPEL, 0, 0),
1987           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_TUCH, AD_COLD, 1, 4),
1988           NO_ATTK, NO_ATTK),
1989         SIZ(1200, 0, MS_SPELL, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
1990         M1_BREATHLESS | M1_HUMANOID,
1991         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_COLLECT, 0, 8, HI_ZAP),
1992     MON("wraith", S_WRAITH, LVL(6, 12, 4, 15, -6), (G_GENO | 2),
1993         A(ATTK(AT_TUCH, AD_DRLI, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
1994           NO_ATTK),
1995         SIZ(0, 0, MS_SILENT, MZ_HUMAN),
1996         MR_COLD | MR_SLEEP | MR_POISON | MR_STONE, 0,
1997         M1_BREATHLESS | M1_FLY | M1_HUMANOID | M1_UNSOLID,
1998         M2_UNDEAD | M2_STALK | M2_HOSTILE, 0, 8, CLR_GRAY),
1999     MON("Nazgul", S_WRAITH, LVL(13, 12, 0, 25, -17), (G_NOCORPSE | 1),
2000         A(ATTK(AT_WEAP, AD_DRLI, 1, 4), ATTK(AT_BREA, AD_SLEE, 2, 25),
2001           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2002         SIZ(WT_HUMAN, 0, MS_SPELL, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
2003         0, M1_BREATHLESS | M1_HUMANOID,
2004         M2_NOPOLY | M2_UNDEAD | M2_STALK | M2_STRONG | M2_HOSTILE | M2_MALE
2005             | M2_COLLECT,
2006         0, 17, HI_LORD),
2007     MON("ghost", S_WRAITH, LVL(4, 5, 5, 80, -5), (G_NOCORPSE | G_NOGEN),
2008         A(ATTK(AT_TUCH, AD_PLYS, 1, 1), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2009           NO_ATTK),
2010         SIZ(WT_HUMAN, 0, MS_SILENT, MZ_HUMAN),
2011         MR_COLD | MR_DISINT | MR_SLEEP | MR_POISON | MR_STONE, 0,
2012         M1_FLY | M1_BREATHLESS | M1_WALLWALK | M1_HUMANOID | M1_UNSOLID,
2013         M2_NOPOLY | M2_UNDEAD | M2_STALK | M2_HOSTILE,
2014         M3_INFRAVISION | M3_NONCORPOREAL, 12, CLR_WHITE),
2015     MON("shade", S_WRAITH, LVL(12, 10, 10, 0, 0), (G_NOCORPSE | G_NOGEN),
2016         A(ATTK(AT_TUCH, AD_PLYS, 2, 6), ATTK(AT_TUCH, AD_SLOW, 1, 6), NO_ATTK,
2017           NO_ATTK, NO_ATTK, NO_ATTK),
2018         SIZ(WT_HUMAN, 0, MS_WAIL, MZ_HUMAN),
2019         MR_COLD | MR_DISINT | MR_SLEEP | MR_POISON | MR_STONE, 0,
2020         M1_FLY | M1_BREATHLESS | M1_WALLWALK | M1_HUMANOID | M1_UNSOLID
2021             | M1_SEE_INVIS,
2022         M2_NOPOLY | M2_UNDEAD | M2_WANDER | M2_STALK | M2_HOSTILE | M2_NASTY,
2023         M3_INFRAVISION | M3_NONCORPOREAL, 14, CLR_BLACK),
2024     /*
2025      * Xorn
2026      */
2027     MON("xorn", S_XORN, LVL(8, 9, -2, 20, 0), (G_GENO | 1),
2028         A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
2029           ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_BITE, AD_PHYS, 4, 6), NO_ATTK,
2030           NO_ATTK),
2031         SIZ(1200, 700, MS_ROAR, MZ_LARGE), MR_FIRE | MR_COLD | MR_STONE,
2032         MR_STONE,
2033         M1_BREATHLESS | M1_WALLWALK | M1_THICK_HIDE | M1_METALLIVORE,
2034         M2_HOSTILE | M2_STRONG, 0, 11, CLR_BROWN),
2035     /*
2036      * Apelike beasts
2037      */
2038     /* tameable via banana; does not grow up into ape...
2039        not flagged as domestic, so no guilt penalty for eating non-pet one */
2040     MON("monkey", S_YETI, LVL(2, 12, 6, 0, 0), (G_GENO | 1),
2041         A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK,
2042           NO_ATTK, NO_ATTK, NO_ATTK),
2043         SIZ(100, 50, MS_GROWL, MZ_SMALL), 0, 0,
2044         M1_ANIMAL | M1_HUMANOID | M1_OMNIVORE, 0, M3_INFRAVISIBLE,
2045         4, CLR_GRAY),
2046     MON("ape", S_YETI, LVL(4, 12, 6, 0, 0), (G_GENO | G_SGROUP | 2),
2047         A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
2048           ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
2049         SIZ(1100, 500, MS_GROWL, MZ_LARGE), 0, 0,
2050         M1_ANIMAL | M1_HUMANOID | M1_OMNIVORE, M2_STRONG, M3_INFRAVISIBLE,
2051         6, CLR_BROWN),
2052     MON("owlbear", S_YETI, LVL(5, 12, 5, 0, 0), (G_GENO | 3),
2053         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
2054           ATTK(AT_HUGS, AD_PHYS, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK),
2055         SIZ(1700, 700, MS_ROAR, MZ_LARGE), 0, 0,
2056         M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE,
2057         M2_HOSTILE | M2_STRONG | M2_NASTY, M3_INFRAVISIBLE, 7, CLR_ORANGE),
2058     MON("yeti", S_YETI, LVL(5, 15, 6, 0, 0), (G_GENO | 2),
2059         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
2060           ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
2061         SIZ(1600, 700, MS_GROWL, MZ_LARGE), MR_COLD, MR_COLD,
2062         M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE, M2_HOSTILE | M2_STRONG,
2063         M3_INFRAVISIBLE, 7, CLR_WHITE),
2064     MON("carnivorous ape", S_YETI, LVL(6, 12, 6, 0, 0), (G_GENO | 1),
2065         A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
2066           ATTK(AT_HUGS, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
2067         SIZ(1250, 550, MS_GROWL, MZ_LARGE), 0, 0,
2068         M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE, M2_HOSTILE | M2_STRONG,
2069         M3_INFRAVISIBLE, 8, CLR_BLACK),
2070     MON("sasquatch", S_YETI, LVL(7, 15, 6, 0, 2), (G_GENO | 1),
2071         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
2072           ATTK(AT_KICK, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
2073         SIZ(1550, 750, MS_GROWL, MZ_LARGE), 0, 0,
2074         M1_ANIMAL | M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE, M2_STRONG,
2075         M3_INFRAVISIBLE, 9, CLR_RED),
2076     /*
2077      * Zombies
2078      */
2079     MON("kobold zombie", S_ZOMBIE, LVL(0, 6, 10, 0, -2),
2080         (G_GENO | G_NOCORPSE | 1), A(ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
2081                                      NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2082         SIZ(400, 50, MS_GROAN, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
2083         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
2084         M2_UNDEAD | M2_STALK | M2_HOSTILE, M3_INFRAVISION, 1, CLR_GRAY),
2085     MON("gnome zombie", S_ZOMBIE, LVL(1, 6, 10, 0, -2),
2086         (G_GENO | G_NOCORPSE | 1), A(ATTK(AT_CLAW, AD_PHYS, 1, 5), NO_ATTK,
2087                                      NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2088         SIZ(650, 50, MS_GROAN, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
2089         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
2090         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_GNOME, M3_INFRAVISION,
2091         2, CLR_BROWN),
2092     MON("orc zombie", S_ZOMBIE, LVL(2, 6, 9, 0, -3),
2093         (G_GENO | G_SGROUP | G_NOCORPSE | 1),
2094         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2095           NO_ATTK),
2096         SIZ(850, 75, MS_GROAN, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
2097         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
2098         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_ORC, M3_INFRAVISION, 3,
2099         CLR_BLUE),
2100     MON("dwarf zombie", S_ZOMBIE, LVL(2, 6, 9, 0, -3),
2101         (G_GENO | G_SGROUP | G_NOCORPSE | 1),
2102         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2103           NO_ATTK),
2104         SIZ(900, 150, MS_GROAN, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
2105         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
2106         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_DWARF, M3_INFRAVISION,
2107         3, CLR_RED),
2108     MON("elf zombie", S_ZOMBIE, LVL(3, 6, 9, 0, -3),
2109         (G_GENO | G_SGROUP | G_NOCORPSE | 1),
2110         A(ATTK(AT_CLAW, AD_PHYS, 1, 7), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2111           NO_ATTK),
2112         SIZ(WT_ELF, 175, MS_GROAN, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
2113         0, M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID,
2114         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_ELF, M3_INFRAVISION,
2115         4, CLR_GREEN),
2116     MON("human zombie", S_ZOMBIE, LVL(4, 6, 8, 0, -3),
2117         (G_GENO | G_SGROUP | G_NOCORPSE | 1),
2118         A(ATTK(AT_CLAW, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2119           NO_ATTK),
2120         SIZ(WT_HUMAN, 200, MS_GROAN, MZ_HUMAN),
2121         MR_COLD | MR_SLEEP | MR_POISON, 0,
2122         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID,
2123         M2_UNDEAD | M2_STALK | M2_HOSTILE, M3_INFRAVISION, 5, HI_DOMESTIC),
2124     MON("ettin zombie", S_ZOMBIE, LVL(6, 8, 6, 0, -4),
2125         (G_GENO | G_NOCORPSE | 1),
2126         A(ATTK(AT_CLAW, AD_PHYS, 1, 10), ATTK(AT_CLAW, AD_PHYS, 1, 10),
2127           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2128         SIZ(1700, 250, MS_GROAN, MZ_HUGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
2129         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID,
2130         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG, M3_INFRAVISION,
2131         7, CLR_YELLOW),
2132     MON("ghoul", S_ZOMBIE, LVL(3, 6, 10, 0, -2), (G_GENO | G_NOCORPSE | 1),
2133         A(ATTK(AT_CLAW, AD_PLYS, 1, 2), ATTK(AT_CLAW, AD_PHYS, 1, 3), NO_ATTK,
2134           NO_ATTK, NO_ATTK, NO_ATTK),
2135         SIZ(400, 50, MS_SILENT, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
2136         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS | M1_OMNIVORE,
2137         M2_UNDEAD | M2_WANDER | M2_HOSTILE, M3_INFRAVISION, 5, CLR_BLACK),
2138     MON("giant zombie", S_ZOMBIE, LVL(8, 8, 6, 0, -4),
2139         (G_GENO | G_NOCORPSE | 1),
2140         A(ATTK(AT_CLAW, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8), NO_ATTK,
2141           NO_ATTK, NO_ATTK, NO_ATTK),
2142         SIZ(2050, 375, MS_GROAN, MZ_HUGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
2143         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID,
2144         M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_GIANT | M2_STRONG,
2145         M3_INFRAVISION, 9, CLR_CYAN),
2146     MON("skeleton", S_ZOMBIE, LVL(12, 8, 4, 0, 0), (G_NOCORPSE | G_NOGEN),
2147         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_TUCH, AD_SLOW, 1, 6), NO_ATTK,
2148           NO_ATTK, NO_ATTK, NO_ATTK),
2149         SIZ(300, 5, MS_BONES, MZ_HUMAN),
2150         MR_COLD | MR_SLEEP | MR_POISON | MR_STONE, 0,
2151         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
2152         M2_UNDEAD | M2_WANDER | M2_HOSTILE | M2_STRONG | M2_COLLECT
2153             | M2_NASTY,
2154         M3_INFRAVISION, 14, CLR_WHITE),
2155     /*
2156      * golems
2157      */
2158     MON("straw golem", S_GOLEM, LVL(3, 12, 10, 0, 0), (G_NOCORPSE | 1),
2159         A(ATTK(AT_CLAW, AD_PHYS, 1, 2), ATTK(AT_CLAW, AD_PHYS, 1, 2), NO_ATTK,
2160           NO_ATTK, NO_ATTK, NO_ATTK),
2161         SIZ(400, 0, MS_SILENT, MZ_LARGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
2162         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_NEUTER, 0,
2163         4, CLR_BRIGHT_BLUE),
2164     MON("paper golem", S_GOLEM, LVL(3, 12, 10, 0, 0), (G_NOCORPSE | 1),
2165         A(ATTK(AT_CLAW, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2166           NO_ATTK),
2167         SIZ(400, 0, MS_SILENT, MZ_LARGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
2168         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_NEUTER, 0,
2169         4, HI_PAPER),
2170     MON("rope golem", S_GOLEM, LVL(4, 9, 8, 0, 0), (G_NOCORPSE | 1),
2171         A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
2172           ATTK(AT_HUGS, AD_PHYS, 6, 1), NO_ATTK, NO_ATTK, NO_ATTK),
2173         SIZ(450, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON, 0,
2174         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_NEUTER, 0,
2175         6, CLR_BLACK),
2176     MON("gold golem", S_GOLEM, LVL(5, 9, 6, 0, 0), (G_NOCORPSE | 1),
2177         A(ATTK(AT_CLAW, AD_PHYS, 2, 3), ATTK(AT_CLAW, AD_PHYS, 2, 3), NO_ATTK,
2178           NO_ATTK, NO_ATTK, NO_ATTK),
2179         SIZ(450, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON | MR_ACID, 0,
2180         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
2181         M2_HOSTILE | M2_NEUTER, 0, 6, HI_GOLD),
2182     MON("leather golem", S_GOLEM, LVL(6, 6, 6, 0, 0), (G_NOCORPSE | 1),
2183         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6), NO_ATTK,
2184           NO_ATTK, NO_ATTK, NO_ATTK),
2185         SIZ(800, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON, 0,
2186         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_NEUTER, 0,
2187         7, HI_LEATHER),
2188     MON("wood golem", S_GOLEM, LVL(7, 3, 4, 0, 0), (G_NOCORPSE | 1),
2189         A(ATTK(AT_CLAW, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2190           NO_ATTK),
2191         SIZ(900, 0, MS_SILENT, MZ_LARGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
2192         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
2193         M2_HOSTILE | M2_NEUTER, 0, 8, HI_WOOD),
2194     MON("flesh golem", S_GOLEM, LVL(9, 8, 9, 30, 0), (1),
2195         A(ATTK(AT_CLAW, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8), NO_ATTK,
2196           NO_ATTK, NO_ATTK, NO_ATTK),
2197         SIZ(1400, 600, MS_SILENT, MZ_LARGE),
2198         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON,
2199         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON,
2200         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_STRONG, 0,
2201         10, CLR_RED),
2202     MON("clay golem", S_GOLEM, LVL(11, 7, 7, 40, 0), (G_NOCORPSE | 1),
2203         A(ATTK(AT_CLAW, AD_PHYS, 3, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2204           NO_ATTK),
2205         SIZ(1550, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON, 0,
2206         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
2207         M2_HOSTILE | M2_STRONG, 0, 12, CLR_ORANGE),
2208     MON("stone golem", S_GOLEM, LVL(14, 6, 5, 50, 0), (G_NOCORPSE | 1),
2209         A(ATTK(AT_CLAW, AD_PHYS, 3, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2210           NO_ATTK),
2211         SIZ(1900, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
2212         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
2213         M2_HOSTILE | M2_STRONG, 0, 15, CLR_GRAY),
2214     MON("glass golem", S_GOLEM, LVL(16, 6, 1, 50, 0), (G_NOCORPSE | 1),
2215         A(ATTK(AT_CLAW, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8), NO_ATTK,
2216           NO_ATTK, NO_ATTK, NO_ATTK),
2217         SIZ(1800, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON | MR_ACID, 0,
2218         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
2219         M2_HOSTILE | M2_STRONG, 0, 18, CLR_BRIGHT_CYAN),
2220     MON("iron golem", S_GOLEM, LVL(18, 6, 3, 60, 0), (G_NOCORPSE | 1),
2221         A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_BREA, AD_DRST, 4, 6),
2222           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2223         SIZ(2000, 0, MS_SILENT, MZ_LARGE),
2224         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
2225         M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE | M1_POIS,
2226         M2_HOSTILE | M2_STRONG | M2_COLLECT, 0, 22, HI_METAL),
2227     /*
2228      * humans, including elves and were-critters;
2229      *  the '@' class does not obey rule #2.
2230      */
2231     MON("human", S_HUMAN, LVL(0, 12, 10, 0, 0), G_NOGEN, /* for corpses */
2232         A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
2233           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2234         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2235         M1_HUMANOID | M1_OMNIVORE,
2236         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
2237         2, HI_DOMESTIC),
2238     MON("wererat", S_HUMAN, LVL(2, 12, 10, 10, -7), (1),
2239         A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
2240           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2241         SIZ(WT_HUMAN, 400, MS_WERE, MZ_HUMAN), MR_POISON, 0,
2242         M1_HUMANOID | M1_POIS | M1_REGEN | M1_OMNIVORE,
2243         M2_NOPOLY | M2_WERE | M2_HOSTILE | M2_HUMAN | M2_COLLECT,
2244         M3_INFRAVISIBLE, 3, CLR_YELLOW),
2245     MON("werejackal", S_HUMAN, LVL(2, 12, 10, 10, -7), (1),
2246         A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
2247           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2248         SIZ(WT_HUMAN, 400, MS_WERE, MZ_HUMAN), MR_POISON, 0,
2249         M1_HUMANOID | M1_POIS | M1_REGEN | M1_OMNIVORE,
2250         M2_NOPOLY | M2_WERE | M2_HOSTILE | M2_HUMAN | M2_COLLECT,
2251         M3_INFRAVISIBLE, 3, CLR_GREEN),
2252     MON("werewolf", S_HUMAN, LVL(5, 12, 10, 20, -7), (1),
2253         A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
2254           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2255         SIZ(WT_HUMAN, 400, MS_WERE, MZ_HUMAN), MR_POISON | MR_SLEEP, 0,
2256         M1_HUMANOID | M1_POIS | M1_REGEN | M1_OMNIVORE,
2257         M2_NOPOLY | M2_WERE | M2_HOSTILE | M2_HUMAN | M2_COLLECT,
2258         M3_INFRAVISIBLE, 6, CLR_ORANGE),
2259     MON("doppelganger", S_HUMAN, LVL(9, 12, 5, 20, 0), (G_GENO | 1),
2260         A(ATTK(AT_WEAP, AD_PHYS, 1, 12),
2261           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2262         SIZ(WT_HUMAN, 400, MS_IMITATE, MZ_HUMAN), MR_SLEEP, 0,
2263         M1_HUMANOID | M1_OMNIVORE,
2264         M2_NOPOLY | M2_HUMAN | M2_HOSTILE | M2_STRONG | M2_COLLECT
2265             | M2_SHAPESHIFTER,
2266         M3_INFRAVISIBLE, 11, HI_DOMESTIC),
2267     MON("shopkeeper", S_HUMAN, LVL(13, 18, 0, 50, 0), G_NOGEN,
2268         A(ATTK(AT_WEAP, AD_PHYS, 4, 4), ATTK(AT_WEAP, AD_PHYS, 4, 4),
2269           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2270         SIZ(WT_HUMAN, 400, MS_SELL, MZ_HUMAN), 0, 0,
2271         M1_HUMANOID | M1_OMNIVORE,
2272         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
2273             | M2_STRONG | M2_COLLECT | M2_MAGIC,
2274         M3_INFRAVISIBLE, 15, HI_DOMESTIC),
2275     MON("guard", S_HUMAN, LVL(12, 12, 10, 40, 10), G_NOGEN,
2276         A(ATTK(AT_WEAP, AD_PHYS, 4, 10),
2277           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2278         SIZ(WT_HUMAN, 400, MS_GUARD, MZ_HUMAN), 0, 0,
2279         M1_HUMANOID | M1_OMNIVORE,
2280         M2_NOPOLY | M2_HUMAN | M2_MERC | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
2281         M3_INFRAVISIBLE, 14, CLR_BLUE),
2282     /* prisoner is used on some special levels */
2283     MON("prisoner", S_HUMAN, LVL(12, 12, 10, 0, 0), G_NOGEN,
2284         A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
2285           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2286         SIZ(WT_HUMAN, 400, MS_DJINNI, MZ_HUMAN), 0, 0,
2287         M1_HUMANOID | M1_OMNIVORE,
2288         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
2289         M3_INFRAVISIBLE | M3_CLOSE, 14, HI_DOMESTIC),
2290     MON("Oracle", S_HUMAN, LVL(12, 0, 0, 50, 0), (G_NOGEN | G_UNIQ),
2291         A(ATTK(AT_NONE, AD_MAGM, 0, 4),
2292           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2293         SIZ(WT_HUMAN, 400, MS_ORACLE, MZ_HUMAN), 0, 0,
2294         M1_HUMANOID | M1_OMNIVORE,
2295         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_FEMALE, M3_INFRAVISIBLE,
2296         13, HI_ZAP),
2297     /* aligned priests always have the epri extension attached;
2298        individual instantiations should always have either ispriest
2299        or isminion set */
2300     MON3("priest", "priestess", "aligned cleric",
2301         S_HUMAN, LVL(12, 12, 10, 50, 0), G_NOGEN,
2302         A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_KICK, AD_PHYS, 1, 4),
2303           ATTK(AT_MAGC, AD_CLRC, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
2304         SIZ(WT_HUMAN, 400, MS_PRIEST, MZ_HUMAN), MR_ELEC, 0,
2305         M1_HUMANOID | M1_OMNIVORE,
2306         M2_NOPOLY | M2_HUMAN | M2_LORD | M2_PEACEFUL | M2_COLLECT,
2307         M3_INFRAVISIBLE, 15, CLR_WHITE),
2308     /* high priests always have epri and always have ispriest set */
2309     MON3("high priest", "high priestess", "high cleric",
2310         S_HUMAN, LVL(25, 15, 7, 70, 0), (G_NOGEN | G_UNIQ),
2311         A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_KICK, AD_PHYS, 2, 8),
2312           ATTK(AT_MAGC, AD_CLRC, 2, 8), ATTK(AT_MAGC, AD_CLRC, 2, 8), NO_ATTK,
2313           NO_ATTK),
2314         SIZ(WT_HUMAN, 400, MS_PRIEST, MZ_HUMAN),
2315         MR_FIRE | MR_ELEC | MR_SLEEP | MR_POISON, 0,
2316         M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
2317         M2_NOPOLY | M2_HUMAN | M2_MINION | M2_PRINCE | M2_NASTY | M2_COLLECT
2318             | M2_MAGIC,
2319         M3_INFRAVISIBLE, 30, CLR_WHITE),
2320     MON("soldier", S_HUMAN, LVL(6, 10, 10, 0, -2), (G_SGROUP | G_GENO | 1),
2321         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2322           NO_ATTK),
2323         SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
2324         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
2325                                        | M2_HOSTILE | M2_STRONG | M2_COLLECT,
2326         M3_INFRAVISIBLE, 8, CLR_GRAY),
2327     MON("sergeant", S_HUMAN, LVL(8, 10, 10, 5, -3), (G_SGROUP | G_GENO | 1),
2328         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2329           NO_ATTK),
2330         SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
2331         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
2332                                        | M2_HOSTILE | M2_STRONG | M2_COLLECT,
2333         M3_INFRAVISIBLE, 10, CLR_RED),
2334     MON("nurse", S_HUMAN, LVL(11, 6, 0, 0, 0), (G_GENO | 3),
2335         A(ATTK(AT_CLAW, AD_HEAL, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2336           NO_ATTK),
2337         SIZ(WT_HUMAN, 400, MS_NURSE, MZ_HUMAN), MR_POISON, MR_POISON,
2338         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_HOSTILE,
2339         M3_INFRAVISIBLE, 13, HI_DOMESTIC),
2340     MON("lieutenant", S_HUMAN, LVL(10, 10, 10, 15, -4), (G_GENO | 1),
2341         A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_WEAP, AD_PHYS, 3, 4), NO_ATTK,
2342           NO_ATTK, NO_ATTK, NO_ATTK),
2343         SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
2344         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
2345                              | M2_LORD | M2_HOSTILE | M2_STRONG | M2_COLLECT,
2346         M3_INFRAVISIBLE, 12, CLR_GREEN),
2347     MON("captain", S_HUMAN, LVL(12, 10, 10, 15, -5), (G_GENO | 1),
2348         A(ATTK(AT_WEAP, AD_PHYS, 4, 4), ATTK(AT_WEAP, AD_PHYS, 4, 4), NO_ATTK,
2349           NO_ATTK, NO_ATTK, NO_ATTK),
2350         SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
2351         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
2352                            | M2_PRINCE | M2_HOSTILE | M2_STRONG | M2_COLLECT,
2353         M3_INFRAVISIBLE, 14, CLR_BLUE),
2354     MON("watchman", S_HUMAN, LVL(6, 10, 10, 0, -2),
2355         (G_SGROUP | G_NOGEN | G_GENO | 1),
2356         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2357           NO_ATTK),
2358         SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
2359         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
2360                                        | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
2361         M3_INFRAVISIBLE, 8, CLR_GRAY),
2362     MON("watch captain", S_HUMAN, LVL(10, 10, 10, 15, -4),
2363         (G_NOGEN | G_GENO | 1),
2364         A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_WEAP, AD_PHYS, 3, 4), NO_ATTK,
2365           NO_ATTK, NO_ATTK, NO_ATTK),
2366         SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
2367         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
2368                                        | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
2369         M3_INFRAVISIBLE, 12, CLR_GREEN),
2370     /* Unique humans not tied to quests.
2371      */
2372     MON("Medusa", S_HUMAN, LVL(20, 12, 2, 50, -15), (G_NOGEN | G_UNIQ),
2373         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 1, 8),
2374           ATTK(AT_GAZE, AD_STON, 0, 0), ATTK(AT_BITE, AD_DRST, 1, 6), NO_ATTK,
2375           NO_ATTK),
2376         SIZ(WT_HUMAN, 400, MS_HISS, MZ_HUMAN), MR_POISON | MR_STONE,
2377         MR_POISON | MR_STONE, M1_FLY | M1_SWIM | M1_AMPHIBIOUS | M1_HUMANOID
2378                                   | M1_POIS | M1_OMNIVORE,
2379         M2_NOPOLY | M2_HOSTILE | M2_STRONG | M2_PNAME | M2_FEMALE,
2380         M3_WAITFORU | M3_INFRAVISIBLE, 25, CLR_BRIGHT_GREEN),
2381     MON("Wizard of Yendor", S_HUMAN, LVL(30, 12, -8, 100, A_NONE),
2382         (G_NOGEN | G_UNIQ),
2383         A(ATTK(AT_CLAW, AD_SAMU, 2, 12), ATTK(AT_WEAP, AD_PHYS, 2, 6),
2384           ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
2385         SIZ(WT_HUMAN, 400, MS_CUSS, MZ_HUMAN), MR_FIRE | MR_POISON,
2386         MR_FIRE | MR_POISON,
2387         M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS
2388             | M1_TPORT | M1_TPORT_CNTRL | M1_OMNIVORE,
2389         M2_NOPOLY | M2_HUMAN | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_PRINCE
2390             | M2_MALE | M2_MAGIC,
2391         M3_COVETOUS | M3_WAITFORU | M3_INFRAVISIBLE, 34, HI_BOSS),
2392     MON("Croesus", S_HUMAN, LVL(20, 15, 0, 40, 15), (G_UNIQ | G_NOGEN),
2393         A(ATTK(AT_WEAP, AD_PHYS, 4, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2394           NO_ATTK),
2395         SIZ(WT_HUMAN, 400, MS_GUARD, MZ_HUMAN), 0, 0,
2396         M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
2397         M2_NOPOLY | M2_HUMAN | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY
2398             | M2_PNAME | M2_PRINCE | M2_MALE | M2_GREEDY | M2_JEWELS
2399             | M2_COLLECT | M2_MAGIC,
2400         M3_INFRAVISIBLE, 22, HI_LORD),
2401 #ifdef CHARON
2402     MON("Charon", S_HUMAN, LVL(76, 18, -5, 120, 0),
2403         (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
2404         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_TUCH, AD_PLYS, 1, 8), NO_ATTK,
2405           NO_ATTK, NO_ATTK, NO_ATTK),
2406         SIZ(WT_HUMAN, 400, MS_FERRY, MZ_HUMAN),
2407         MR_FIRE | MR_COLD | MR_POISON | MR_STONE, 0,
2408         M1_BREATHLESS | M1_SEE_INVIS | M1_HUMANOID,
2409         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_PNAME | M2_MALE | M2_GREEDY
2410             | M2_COLLECT,
2411         M3_INFRAVISIBLE, 38, CLR_WHITE),
2412 #endif
2413     /*
2414      * (major) demons
2415      */
2416     MON("water demon", S_DEMON, LVL(8, 12, -4, 30, -7),
2417         (G_NOCORPSE | G_NOGEN),
2418         A(ATTK(AT_WEAP, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
2419           ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK),
2420         SIZ(WT_HUMAN, 400, MS_DJINNI, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
2421         M1_HUMANOID | M1_POIS | M1_SWIM,
2422         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_COLLECT,
2423         M3_INFRAVISIBLE | M3_INFRAVISION, 11, CLR_BLUE),
2424     /* standard demons & devils
2425      */
2426 #define SEDUCTION_ATTACKS_YES                                     \
2427     A(ATTK(AT_BITE, AD_SSEX, 0, 0), ATTK(AT_CLAW, AD_PHYS, 1, 3), \
2428       ATTK(AT_CLAW, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK)
2429 #define SEDUCTION_ATTACKS_NO                                      \
2430     A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3), \
2431       ATTK(AT_BITE, AD_DRLI, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK)
2432     /* incubus and succubus */
2433     MON3("incubus", "succubus", "amorous demon",
2434         S_DEMON, LVL(6, 12, 0, 70, -9), (G_NOCORPSE | 1),
2435         SEDUCTION_ATTACKS_YES, SIZ(WT_HUMAN, 400, MS_SEDUCE, MZ_HUMAN),
2436         MR_FIRE | MR_POISON, 0, M1_HUMANOID | M1_FLY | M1_POIS,
2437         M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
2438         M3_INFRAVISIBLE | M3_INFRAVISION, 8, CLR_GRAY),
2439     MON("horned devil", S_DEMON, LVL(6, 9, -5, 50, 11),
2440         (G_HELL | G_NOCORPSE | 2),
2441         A(ATTK(AT_WEAP, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
2442           ATTK(AT_BITE, AD_PHYS, 2, 3), ATTK(AT_STNG, AD_PHYS, 1, 3), NO_ATTK,
2443           NO_ATTK),
2444         SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
2445         M1_POIS | M1_THICK_HIDE, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
2446         M3_INFRAVISIBLE | M3_INFRAVISION, 9, CLR_BROWN),
2447     /* Used by AD&D for a type of demon, originally one of the Furies
2448        and spelled this way */
2449     MON("erinys", S_DEMON, LVL(7, 12, 2, 30, 10),
2450         (G_HELL | G_NOCORPSE | G_SGROUP | 2),
2451         A(ATTK(AT_WEAP, AD_DRST, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2452           NO_ATTK),
2453         SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
2454         M1_HUMANOID | M1_POIS,
2455         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY
2456             | M2_FEMALE | M2_COLLECT,
2457         M3_INFRAVISIBLE | M3_INFRAVISION, 10, CLR_GREEN),
2458     MON("barbed devil", S_DEMON, LVL(8, 12, 0, 35, 8),
2459         (G_HELL | G_NOCORPSE | G_SGROUP | 2),
2460         A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
2461           ATTK(AT_STNG, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK),
2462         SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
2463         M1_POIS | M1_THICK_HIDE, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
2464         M3_INFRAVISIBLE | M3_INFRAVISION, 10, CLR_CYAN),
2465     MON("marilith", S_DEMON, LVL(7, 12, -6, 80, -12),
2466         (G_HELL | G_NOCORPSE | 1),
2467         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
2468           ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
2469           ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4)),
2470         SIZ(WT_HUMAN, 400, MS_CUSS, MZ_LARGE), MR_FIRE | MR_POISON, 0,
2471         M1_HUMANOID | M1_SLITHY | M1_SEE_INVIS | M1_POIS,
2472         M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_FEMALE | M2_COLLECT,
2473         M3_INFRAVISIBLE | M3_INFRAVISION, 11, CLR_BRIGHT_CYAN),
2474     MON("vrock", S_DEMON, LVL(8, 12, 0, 50, -9),
2475         (G_HELL | G_NOCORPSE | G_SGROUP | 2),
2476         A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
2477           ATTK(AT_CLAW, AD_PHYS, 1, 8), ATTK(AT_CLAW, AD_PHYS, 1, 8),
2478           ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK),
2479         SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON, 0,
2480         M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
2481         M3_INFRAVISIBLE | M3_INFRAVISION, 11, CLR_ORANGE),
2482     MON("hezrou", S_DEMON, LVL(9, 6, -2, 55, -10),
2483         (G_HELL | G_NOCORPSE | G_SGROUP | 2),
2484         A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
2485           ATTK(AT_BITE, AD_PHYS, 4, 4), NO_ATTK, NO_ATTK, NO_ATTK),
2486         SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON, 0,
2487         M1_HUMANOID | M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
2488         M3_INFRAVISIBLE | M3_INFRAVISION, 12, CLR_YELLOW),
2489     MON("bone devil", S_DEMON, LVL(9, 15, -1, 40, -9),
2490         (G_HELL | G_NOCORPSE | G_SGROUP | 2),
2491         A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_STNG, AD_DRST, 2, 4), NO_ATTK,
2492           NO_ATTK, NO_ATTK, NO_ATTK),
2493         SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON, 0,
2494         M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_COLLECT,
2495         M3_INFRAVISIBLE | M3_INFRAVISION, 13, CLR_GRAY),
2496     MON("ice devil", S_DEMON, LVL(11, 6, -4, 55, -12),
2497         (G_HELL | G_NOCORPSE | 2),
2498         A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
2499           ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_STNG, AD_COLD, 3, 4), NO_ATTK,
2500           NO_ATTK),
2501         SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE),
2502         MR_FIRE | MR_COLD | MR_POISON, 0, M1_SEE_INVIS | M1_POIS,
2503         M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
2504         M3_INFRAVISIBLE | M3_INFRAVISION, 14, CLR_WHITE),
2505     MON("nalfeshnee", S_DEMON, LVL(11, 9, -1, 65, -11),
2506         (G_HELL | G_NOCORPSE | 1),
2507         A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
2508           ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK,
2509           NO_ATTK),
2510         SIZ(WT_HUMAN, 400, MS_SPELL, MZ_LARGE), MR_FIRE | MR_POISON, 0,
2511         M1_HUMANOID | M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
2512         M3_INFRAVISIBLE | M3_INFRAVISION, 15, HI_ZAP),
2513     MON("pit fiend", S_DEMON, LVL(13, 6, -3, 65, -13),
2514         (G_HELL | G_NOCORPSE | 2),
2515         A(ATTK(AT_WEAP, AD_PHYS, 4, 2), ATTK(AT_WEAP, AD_PHYS, 4, 2),
2516           ATTK(AT_HUGS, AD_PITS, 4, 4), NO_ATTK, NO_ATTK, NO_ATTK),
2517         SIZ(WT_HUMAN, 400, MS_GROWL, MZ_LARGE), MR_FIRE | MR_POISON, 0,
2518         M1_SEE_INVIS | M1_POIS,
2519         M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_COLLECT,
2520         M3_INFRAVISIBLE | M3_INFRAVISION, 16, CLR_BLACK),
2521     MON("sandestin", S_DEMON, LVL(13, 12, 4, 60, -5),
2522         (G_HELL | G_NOCORPSE | 1),
2523         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6), NO_ATTK,
2524           NO_ATTK, NO_ATTK, NO_ATTK),
2525         SIZ(1500, 400, MS_CUSS, MZ_HUMAN), MR_STONE, 0, M1_HUMANOID,
2526         M2_NOPOLY | M2_STALK | M2_STRONG | M2_COLLECT | M2_SHAPESHIFTER,
2527         M3_INFRAVISIBLE | M3_INFRAVISION, 15, CLR_GRAY),
2528     MON("balrog", S_DEMON, LVL(16, 5, -2, 75, -14), (G_HELL | G_NOCORPSE | 1),
2529         A(ATTK(AT_WEAP, AD_PHYS, 8, 4), ATTK(AT_WEAP, AD_PHYS, 4, 6), NO_ATTK,
2530           NO_ATTK, NO_ATTK, NO_ATTK),
2531         SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUGE), MR_FIRE | MR_POISON, 0,
2532         M1_FLY | M1_SEE_INVIS | M1_POIS,
2533         M2_DEMON | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT,
2534         M3_INFRAVISIBLE | M3_INFRAVISION, 20, CLR_RED),
2535     /* Named demon lords & princes plus Arch-Devils.
2536      * (their order matters; see minion.c)
2537      */
2538     MON("Juiblex", S_DEMON, LVL(50, 3, -7, 65, -15),
2539         (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
2540         A(ATTK(AT_ENGL, AD_DISE, 4, 10), ATTK(AT_SPIT, AD_ACID, 3, 6),
2541           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2542         SIZ(1500, 0, MS_GURGLE, MZ_GIGANTIC),
2543         MR_FIRE | MR_POISON | MR_ACID | MR_STONE, 0,
2544         M1_AMPHIBIOUS | M1_AMORPHOUS | M1_NOHEAD | M1_FLY | M1_SEE_INVIS
2545             | M1_ACID | M1_POIS,
2546         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
2547             | M2_LORD | M2_MALE,
2548         M3_WAITFORU | M3_WANTSAMUL | M3_INFRAVISION, 26, CLR_BRIGHT_GREEN),
2549     MON("Yeenoghu", S_DEMON, LVL(56, 18, -5, 80, -15),
2550         (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
2551         A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_WEAP, AD_CONF, 2, 8),
2552           ATTK(AT_CLAW, AD_PLYS, 1, 6), ATTK(AT_MAGC, AD_MAGM, 6, 6), NO_ATTK,
2553           NO_ATTK),
2554         SIZ(900, 500, MS_ORC, MZ_LARGE), MR_FIRE | MR_POISON, 0,
2555         M1_FLY | M1_SEE_INVIS | M1_POIS,
2556         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
2557             | M2_LORD | M2_MALE | M2_COLLECT,
2558         M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION, 31, HI_BOSS),
2559     MON("Orcus", S_DEMON, LVL(66, 9, -6, 85, -20),
2560         (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
2561         A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 3, 4),
2562           ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_MAGC, AD_SPEL, 8, 6),
2563           ATTK(AT_STNG, AD_DRST, 2, 4), NO_ATTK),
2564         SIZ(1500, 500, MS_ORC, MZ_HUGE), MR_FIRE | MR_POISON, 0,
2565         M1_FLY | M1_SEE_INVIS | M1_POIS,
2566         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
2567             | M2_PRINCE | M2_MALE | M2_COLLECT,
2568         M3_WAITFORU | M3_WANTSBOOK | M3_WANTSAMUL | M3_INFRAVISIBLE
2569             | M3_INFRAVISION,
2570         36, HI_BOSS),
2571     MON("Geryon", S_DEMON, LVL(72, 3, -3, 75, 15),
2572         (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
2573         A(ATTK(AT_CLAW, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 3, 6),
2574           ATTK(AT_STNG, AD_DRST, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
2575         SIZ(1500, 500, MS_BRIBE, MZ_HUGE), MR_FIRE | MR_POISON, 0,
2576         M1_FLY | M1_SEE_INVIS | M1_POIS | M1_SLITHY,
2577         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
2578             | M2_PRINCE | M2_MALE,
2579         M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION, 36, HI_BOSS),
2580     MON("Dispater", S_DEMON, LVL(78, 15, -2, 80, 15),
2581         (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
2582         A(ATTK(AT_WEAP, AD_PHYS, 4, 6), ATTK(AT_MAGC, AD_SPEL, 6, 6), NO_ATTK,
2583           NO_ATTK, NO_ATTK, NO_ATTK),
2584         SIZ(1500, 500, MS_BRIBE, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
2585         M1_FLY | M1_SEE_INVIS | M1_POIS | M1_HUMANOID,
2586         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
2587             | M2_PRINCE | M2_MALE | M2_COLLECT,
2588         M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION, 40, HI_BOSS),
2589     MON("Baalzebub", S_DEMON, LVL(89, 9, -5, 85, 20),
2590         (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
2591         A(ATTK(AT_BITE, AD_DRST, 2, 6), ATTK(AT_GAZE, AD_STUN, 2, 6), NO_ATTK,
2592           NO_ATTK, NO_ATTK, NO_ATTK),
2593         SIZ(1500, 500, MS_BRIBE, MZ_LARGE), MR_FIRE | MR_POISON, 0,
2594         M1_FLY | M1_SEE_INVIS | M1_POIS,
2595         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
2596             | M2_PRINCE | M2_MALE,
2597         M3_WANTSAMUL | M3_WAITFORU | M3_INFRAVISIBLE | M3_INFRAVISION,
2598         45, HI_BOSS),
2599     MON("Asmodeus", S_DEMON, LVL(105, 12, -7, 90, 20),
2600         (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
2601         A(ATTK(AT_CLAW, AD_PHYS, 4, 4), ATTK(AT_MAGC, AD_COLD, 6, 6), NO_ATTK,
2602           NO_ATTK, NO_ATTK, NO_ATTK),
2603         SIZ(1500, 500, MS_BRIBE, MZ_HUGE), MR_FIRE | MR_COLD | MR_POISON, 0,
2604         M1_FLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS,
2605         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG
2606             | M2_NASTY | M2_PRINCE | M2_MALE,
2607         M3_WANTSAMUL | M3_WAITFORU | M3_INFRAVISIBLE | M3_INFRAVISION,
2608         53, HI_BOSS),
2609     MON("Demogorgon", S_DEMON, LVL(106, 15, -8, 95, -20),
2610         (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
2611         A(ATTK(AT_MAGC, AD_SPEL, 8, 6), ATTK(AT_STNG, AD_DRLI, 1, 4),
2612           ATTK(AT_CLAW, AD_DISE, 1, 6), ATTK(AT_CLAW, AD_DISE, 1, 6), NO_ATTK,
2613           NO_ATTK),
2614         SIZ(1500, 500, MS_GROWL, MZ_HUGE), MR_FIRE | MR_POISON, 0,
2615         M1_FLY | M1_SEE_INVIS | M1_NOHANDS | M1_POIS,
2616         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
2617             | M2_PRINCE | M2_MALE,
2618         M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION, 57, HI_BOSS),
2619     /* Riders -- the Four Horsemen of the Apocalypse ("War" == player);
2620      * depicted with '&' but do not have M2_DEMON set.
2621      */
2622     MON("Death", S_DEMON, LVL(30, 12, -5, 100, 0), (G_UNIQ | G_NOGEN),
2623         A(ATTK(AT_TUCH, AD_DETH, 8, 8), ATTK(AT_TUCH, AD_DETH, 8, 8), NO_ATTK,
2624           NO_ATTK, NO_ATTK, NO_ATTK),
2625         SIZ(WT_HUMAN, 1, MS_RIDER, MZ_HUMAN),
2626         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
2627         M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
2628         M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
2629         M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 34, HI_BOSS),
2630     MON("Pestilence", S_DEMON, LVL(30, 12, -5, 100, 0), (G_UNIQ | G_NOGEN),
2631         A(ATTK(AT_TUCH, AD_PEST, 8, 8), ATTK(AT_TUCH, AD_PEST, 8, 8), NO_ATTK,
2632           NO_ATTK, NO_ATTK, NO_ATTK),
2633         SIZ(WT_HUMAN, 1, MS_RIDER, MZ_HUMAN),
2634         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
2635         M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
2636         M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
2637         M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 34, HI_BOSS),
2638     MON("Famine", S_DEMON, LVL(30, 12, -5, 100, 0), (G_UNIQ | G_NOGEN),
2639         A(ATTK(AT_TUCH, AD_FAMN, 8, 8), ATTK(AT_TUCH, AD_FAMN, 8, 8), NO_ATTK,
2640           NO_ATTK, NO_ATTK, NO_ATTK),
2641         SIZ(WT_HUMAN, 1, MS_RIDER, MZ_HUMAN),
2642         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
2643         M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
2644         M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
2645         M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 34, HI_BOSS),
2646     /* other demons
2647      */
2648 #ifdef MAIL_STRUCTURES
2649     MON("mail daemon", S_DEMON, LVL(56, 24, 10, 127, 0),
2650         (G_NOGEN | G_NOCORPSE),
2651         A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2652         SIZ(600, 300, MS_SILENT, MZ_HUMAN),
2653         MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
2654         M1_FLY | M1_SWIM | M1_BREATHLESS | M1_SEE_INVIS | M1_HUMANOID
2655             | M1_POIS,
2656         M2_NOPOLY | M2_STALK | M2_PEACEFUL, M3_INFRAVISIBLE | M3_INFRAVISION,
2657         26, CLR_BRIGHT_BLUE),
2658 #endif
2659     MON("djinni", S_DEMON, LVL(7, 12, 4, 30, 0), (G_NOGEN | G_NOCORPSE),
2660         A(ATTK(AT_WEAP, AD_PHYS, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2661           NO_ATTK),
2662         SIZ(1500, 400, MS_DJINNI, MZ_HUMAN), MR_POISON | MR_STONE, 0,
2663         M1_HUMANOID | M1_FLY | M1_POIS, M2_NOPOLY | M2_STALK | M2_COLLECT,
2664         M3_INFRAVISIBLE, 8, CLR_YELLOW),
2665     /*
2666      * sea monsters
2667      */
2668     MON("jellyfish", S_EEL, LVL(3, 3, 6, 0, 0), (G_GENO | G_NOGEN | 2),
2669         A(ATTK(AT_STNG, AD_DRST, 3, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2670           NO_ATTK),
2671         SIZ(80, 20, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
2672         M1_SWIM | M1_AMPHIBIOUS | M1_SLITHY | M1_NOLIMBS | M1_NOHEAD
2673             | M1_NOTAKE | M1_POIS,
2674         M2_HOSTILE, 0, 5, CLR_BLUE),
2675     MON("piranha", S_EEL, LVL(5, 18, 4, 0, 0), (G_GENO | G_NOGEN | G_SGROUP | 3),
2676         A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BITE, AD_PHYS, 2, 6),
2677           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2678         SIZ(60, 30, MS_SILENT, MZ_SMALL), 0, 0,
2679         M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_SLITHY | M1_NOLIMBS
2680             | M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
2681         M2_HOSTILE, 0, 6, CLR_ORANGE),
2682     MON("shark", S_EEL, LVL(7, 12, 2, 0, 0), (G_GENO | G_NOGEN | 2),
2683         A(ATTK(AT_BITE, AD_PHYS, 5, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2684           NO_ATTK),
2685         SIZ(500, 350, MS_SILENT, MZ_LARGE), 0, 0,
2686         M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_SLITHY | M1_NOLIMBS
2687             | M1_CARNIVORE | M1_OVIPAROUS | M1_THICK_HIDE | M1_NOTAKE,
2688         M2_HOSTILE, 0, 9, CLR_GRAY),
2689     MON("giant eel", S_EEL, LVL(5, 9, -1, 0, 0), (G_GENO | G_NOGEN | 4),
2690         A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_TUCH, AD_WRAP, 0, 0), NO_ATTK,
2691           NO_ATTK, NO_ATTK, NO_ATTK),
2692         SIZ(200, 250, MS_SILENT, MZ_HUGE), 0, 0,
2693         M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_SLITHY | M1_NOLIMBS
2694             | M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
2695         M2_HOSTILE, M3_INFRAVISIBLE, 7, CLR_CYAN),
2696     MON("electric eel", S_EEL, LVL(7, 10, -3, 0, 0), (G_GENO | G_NOGEN | 2),
2697         A(ATTK(AT_BITE, AD_ELEC, 4, 6), ATTK(AT_TUCH, AD_WRAP, 0, 0), NO_ATTK,
2698           NO_ATTK, NO_ATTK, NO_ATTK),
2699         SIZ(200, 250, MS_SILENT, MZ_LARGE), MR_ELEC, MR_ELEC,
2700         M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_SLITHY | M1_NOLIMBS
2701             | M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
2702         M2_HOSTILE, M3_INFRAVISIBLE, 10, CLR_BRIGHT_BLUE),
2703     MON("kraken", S_EEL, LVL(20, 3, 6, 0, -3), (G_GENO | G_NOGEN | 1),
2704         A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
2705           ATTK(AT_HUGS, AD_WRAP, 2, 6), ATTK(AT_BITE, AD_PHYS, 5, 4), NO_ATTK,
2706           NO_ATTK),
2707         SIZ(1800, 1000, MS_SILENT, MZ_GIGANTIC), 0, 0,
2708         M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
2709         M2_NOPOLY | M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE, 22, CLR_RED),
2710     /*
2711      * lizards, &c
2712      */
2713     MON("newt", S_LIZARD, LVL(0, 6, 8, 0, 0), (G_GENO | 5),
2714         A(ATTK(AT_BITE, AD_PHYS, 1, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2715           NO_ATTK),
2716         SIZ(10, 20, MS_SILENT, MZ_TINY), 0, 0,
2717         M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
2718         M2_HOSTILE, 0, 1, CLR_YELLOW),
2719     MON("gecko", S_LIZARD, LVL(1, 6, 8, 0, 0), (G_GENO | 5),
2720         A(ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2721           NO_ATTK),
2722         SIZ(10, 20, MS_SQEEK, MZ_TINY), 0, 0,
2723         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 2,
2724         CLR_BRIGHT_GREEN),
2725     MON("iguana", S_LIZARD, LVL(2, 6, 7, 0, 0), (G_GENO | 5),
2726         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2727           NO_ATTK),
2728         SIZ(30, 30, MS_SILENT, MZ_TINY), 0, 0,
2729         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 3, CLR_BROWN),
2730     MON("baby crocodile", S_LIZARD, LVL(3, 6, 7, 0, 0), G_GENO,
2731         A(ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2732           NO_ATTK),
2733         SIZ(200, 200, MS_SILENT, MZ_SMALL), 0, 0,
2734         M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
2735         M2_HOSTILE, 0, 4, CLR_RED),
2736     MON("lizard", S_LIZARD, LVL(5, 6, 6, 10, 0), (G_GENO | 5),
2737         A(ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2738           NO_ATTK),
2739         SIZ(10, 40, MS_SILENT, MZ_TINY), MR_STONE, MR_STONE,
2740         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, 6, CLR_GREEN),
2741     MON("chameleon", S_LIZARD, LVL(6, 5, 6, 10, 0), (G_GENO | 2),
2742         A(ATTK(AT_BITE, AD_PHYS, 4, 2), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2743           NO_ATTK),
2744         SIZ(100, 100, MS_SILENT, MZ_TINY), 0, 0,
2745         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
2746         M2_NOPOLY | M2_HOSTILE | M2_SHAPESHIFTER, 0, 7, CLR_GRAY),
2747     MON("crocodile", S_LIZARD, LVL(6, 9, 5, 0, 0), (G_GENO | 1),
2748         A(ATTK(AT_BITE, AD_PHYS, 4, 2), ATTK(AT_CLAW, AD_PHYS, 1, 12),
2749           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2750         SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), 0, 0,
2751         M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS
2752             | M1_OVIPAROUS | M1_CARNIVORE,
2753         M2_STRONG | M2_HOSTILE, 0, 7, CLR_RED),
2754     MON("salamander", S_LIZARD, LVL(8, 12, -1, 0, -9), (G_HELL | 1),
2755         A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_TUCH, AD_FIRE, 1, 6),
2756           ATTK(AT_HUGS, AD_PHYS, 2, 6), ATTK(AT_HUGS, AD_FIRE, 3, 6), NO_ATTK,
2757           NO_ATTK),
2758         SIZ(1500, 400, MS_MUMBLE, MZ_HUMAN), MR_SLEEP | MR_FIRE, MR_FIRE,
2759         M1_HUMANOID | M1_SLITHY | M1_THICK_HIDE | M1_POIS | M1_CARNIVORE,
2760         M2_STALK | M2_HOSTILE | M2_COLLECT | M2_MAGIC, M3_INFRAVISIBLE,
2761         12, CLR_ORANGE),
2762 
2763     /*
2764      * dummy monster needed for visual interface
2765      * (marking it unique prevents figurines)
2766      */
2767     MON("long worm tail", S_WORM_TAIL, LVL(0, 0, 0, 0, 0),
2768         (G_NOGEN | G_NOCORPSE | G_UNIQ),
2769         A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2770         SIZ(0, 0, 0, 0), 0, 0, 0L, M2_NOPOLY, 0, 1, CLR_BROWN),
2771     /* Note:
2772      * Worm tail must be between the normal monsters and the special
2773      * quest & pseudo-character ones because an optimization in the
2774      * random monster selection code assumes everything beyond here
2775      * has the G_NOGEN and M2_NOPOLY attributes.
2776      */
2777 
2778     /*
2779      * character classes
2780      */
2781     MON("archeologist", S_HUMAN, LVL(10, 12, 10, 1, 3), G_NOGEN,
2782         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
2783           NO_ATTK, NO_ATTK, NO_ATTK),
2784         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2785         M1_HUMANOID | M1_TUNNEL | M1_NEEDPICK | M1_OMNIVORE,
2786         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
2787         12, HI_DOMESTIC),
2788     MON("barbarian", S_HUMAN, LVL(10, 12, 10, 1, 0), G_NOGEN,
2789         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
2790           NO_ATTK, NO_ATTK, NO_ATTK),
2791         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
2792         M1_HUMANOID | M1_OMNIVORE,
2793         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
2794         12, HI_DOMESTIC),
2795     MON3("caveman", "cavewoman", "cave dweller",
2796         S_HUMAN, LVL(10, 12, 10, 0, 1), G_NOGEN,
2797         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2798           NO_ATTK),
2799         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2800         M1_HUMANOID | M1_OMNIVORE,
2801         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT,
2802         M3_INFRAVISIBLE, 12, HI_DOMESTIC),
2803     MON("healer", S_HUMAN, LVL(10, 12, 10, 1, 0), G_NOGEN,
2804         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2805           NO_ATTK),
2806         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
2807         M1_HUMANOID | M1_OMNIVORE,
2808         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
2809         12, HI_DOMESTIC),
2810     MON("knight", S_HUMAN, LVL(10, 12, 10, 1, 3), G_NOGEN,
2811         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
2812           NO_ATTK, NO_ATTK, NO_ATTK),
2813         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2814         M1_HUMANOID | M1_OMNIVORE,
2815         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
2816         12, HI_DOMESTIC),
2817     MON("monk", S_HUMAN, LVL(10, 12, 10, 2, 0), G_NOGEN,
2818         A(ATTK(AT_CLAW, AD_PHYS, 1, 8), ATTK(AT_KICK, AD_PHYS, 1, 8), NO_ATTK,
2819           NO_ATTK, NO_ATTK, NO_ATTK),
2820         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2821         M1_HUMANOID | M1_HERBIVORE,
2822         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT,
2823         M3_INFRAVISIBLE, 11, HI_DOMESTIC),
2824     MON3("priest", "priestess", "cleric",
2825         S_HUMAN, LVL(10, 12, 10, 2, 0), G_NOGEN,
2826         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2827           NO_ATTK),
2828         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2829         M1_HUMANOID | M1_OMNIVORE,
2830         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT,
2831         M3_INFRAVISIBLE, 12, HI_DOMESTIC),
2832     MON("ranger", S_HUMAN, LVL(10, 12, 10, 2, -3), G_NOGEN,
2833         A(ATTK(AT_WEAP, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2834           NO_ATTK),
2835         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2836         M1_HUMANOID | M1_OMNIVORE,
2837         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
2838         12, HI_DOMESTIC),
2839     MON("rogue", S_HUMAN, LVL(10, 12, 10, 1, -3), G_NOGEN,
2840         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
2841           NO_ATTK, NO_ATTK, NO_ATTK),
2842         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2843         M1_HUMANOID | M1_OMNIVORE,
2844         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
2845         M3_INFRAVISIBLE, 12, HI_DOMESTIC),
2846     MON("samurai", S_HUMAN, LVL(10, 12, 10, 1, 3), G_NOGEN,
2847         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK,
2848           NO_ATTK, NO_ATTK, NO_ATTK),
2849         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2850         M1_HUMANOID | M1_OMNIVORE,
2851         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
2852         12, HI_DOMESTIC),
2853     MON("tourist", S_HUMAN, LVL(10, 12, 10, 1, 0), G_NOGEN,
2854         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
2855           NO_ATTK, NO_ATTK, NO_ATTK),
2856         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2857         M1_HUMANOID | M1_OMNIVORE,
2858         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
2859         12, HI_DOMESTIC),
2860     MON("valkyrie", S_HUMAN, LVL(10, 12, 10, 1, -1), G_NOGEN,
2861         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK,
2862           NO_ATTK, NO_ATTK, NO_ATTK),
2863         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_COLD, 0,
2864         M1_HUMANOID | M1_OMNIVORE,
2865         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_FEMALE | M2_COLLECT,
2866         M3_INFRAVISIBLE, 12, HI_DOMESTIC),
2867     MON("wizard", S_HUMAN, LVL(10, 12, 10, 3, 0), G_NOGEN,
2868         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2869           NO_ATTK),
2870         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
2871         M1_HUMANOID | M1_OMNIVORE,
2872         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT | M2_MAGIC,
2873         M3_INFRAVISIBLE, 12, HI_DOMESTIC),
2874     /*
2875      * quest leaders
2876      */
2877     MON("Lord Carnarvon", S_HUMAN, LVL(20, 12, 0, 30, 20), (G_NOGEN | G_UNIQ),
2878         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2879           NO_ATTK),
2880         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
2881         M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
2882         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
2883             | M2_COLLECT | M2_MAGIC,
2884         M3_CLOSE | M3_INFRAVISIBLE, 22, HI_LORD),
2885     MON("Pelias", S_HUMAN, LVL(20, 12, 0, 30, 0), (G_NOGEN | G_UNIQ),
2886         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2887           NO_ATTK),
2888         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_POISON, 0,
2889         M1_HUMANOID | M1_OMNIVORE,
2890         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
2891             | M2_COLLECT | M2_MAGIC,
2892         M3_CLOSE | M3_INFRAVISIBLE, 22, HI_LORD),
2893     MON("Shaman Karnov", S_HUMAN, LVL(20, 12, 0, 30, 20), (G_NOGEN | G_UNIQ),
2894         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2895           NO_ATTK),
2896         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
2897         M1_HUMANOID | M1_OMNIVORE,
2898         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
2899             | M2_COLLECT | M2_MAGIC,
2900         M3_CLOSE | M3_INFRAVISIBLE, 22, HI_LORD),
2901 #if 0 /* OBSOLETE */
2902     /* Two for elves - one of each sex.
2903      */
2904     MON("Earendil", S_HUMAN,
2905         LVL(20, 12, 0, 50, -20), (G_NOGEN | G_UNIQ),
2906         A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
2907           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2908         SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
2909         M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
2910         M2_NOPOLY | M2_ELF | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG
2911           | M2_MALE | M2_COLLECT | M2_MAGIC,
2912         M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE, 22, HI_LORD),
2913     MON("Elwing", S_HUMAN,
2914         LVL(20, 12, 0, 50, -20), (G_NOGEN | G_UNIQ),
2915         A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
2916           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
2917         SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
2918         M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
2919         M2_NOPOLY | M2_ELF | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG
2920           | M2_FEMALE | M2_COLLECT | M2_MAGIC,
2921         M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE, 22, HI_LORD),
2922 #endif
2923     MON("Hippocrates", S_HUMAN, LVL(20, 12, 0, 40, 0), (G_NOGEN | G_UNIQ),
2924         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2925           NO_ATTK),
2926         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_POISON, 0,
2927         M1_HUMANOID | M1_OMNIVORE,
2928         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
2929             | M2_COLLECT | M2_MAGIC,
2930         M3_CLOSE | M3_INFRAVISIBLE, 22, HI_LORD),
2931     MON("King Arthur", S_HUMAN, LVL(20, 12, 0, 40, 20), (G_NOGEN | G_UNIQ),
2932         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
2933           NO_ATTK, NO_ATTK, NO_ATTK),
2934         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
2935         M1_HUMANOID | M1_OMNIVORE,
2936         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
2937             | M2_COLLECT | M2_MAGIC,
2938         M3_CLOSE | M3_INFRAVISIBLE, 23, HI_LORD),
2939     MON("Grand Master", S_HUMAN, LVL(25, 12, 0, 70, 0), (G_NOGEN | G_UNIQ),
2940         A(ATTK(AT_CLAW, AD_PHYS, 4, 10), ATTK(AT_KICK, AD_PHYS, 2, 8),
2941           ATTK(AT_MAGC, AD_CLRC, 2, 8), ATTK(AT_MAGC, AD_CLRC, 2, 8), NO_ATTK,
2942           NO_ATTK),
2943         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN),
2944         MR_FIRE | MR_ELEC | MR_SLEEP | MR_POISON, 0,
2945         M1_HUMANOID | M1_SEE_INVIS | M1_HERBIVORE,
2946         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_MALE | M2_NASTY
2947             | M2_MAGIC,
2948         M3_CLOSE | M3_INFRAVISIBLE, 30, CLR_BLACK),
2949     MON("Arch Priest", S_HUMAN, LVL(25, 12, 7, 70, 0), (G_NOGEN | G_UNIQ),
2950         A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_KICK, AD_PHYS, 2, 8),
2951           ATTK(AT_MAGC, AD_CLRC, 2, 8), ATTK(AT_MAGC, AD_CLRC, 2, 8), NO_ATTK,
2952           NO_ATTK),
2953         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN),
2954         MR_FIRE | MR_ELEC | MR_SLEEP | MR_POISON, 0,
2955         M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
2956         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_MALE | M2_COLLECT
2957             | M2_MAGIC,
2958         M3_CLOSE | M3_INFRAVISIBLE, 30, CLR_WHITE),
2959     MON("Orion", S_HUMAN, LVL(20, 12, 0, 30, 0), (G_NOGEN | G_UNIQ),
2960         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
2961           NO_ATTK),
2962         SIZ(2200, 700, MS_LEADER, MZ_HUGE), 0, 0,
2963         M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS | M1_SWIM | M1_AMPHIBIOUS,
2964         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
2965             | M2_COLLECT | M2_MAGIC,
2966         M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE, 22, HI_LORD),
2967     /* Note: Master of Thieves is also the Tourist's nemesis.
2968      */
2969     MON("Master of Thieves", S_HUMAN, LVL(20, 12, 0, 30, -20),
2970         (G_NOGEN | G_UNIQ),
2971         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
2972           ATTK(AT_CLAW, AD_SAMU, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
2973         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_STONE, 0,
2974         M1_HUMANOID | M1_OMNIVORE,
2975         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_MALE | M2_GREEDY
2976             | M2_JEWELS | M2_COLLECT | M2_MAGIC,
2977         M3_CLOSE | M3_INFRAVISIBLE, 24, HI_LORD),
2978     MON("Lord Sato", S_HUMAN, LVL(20, 12, 0, 30, 20), (G_NOGEN | G_UNIQ),
2979         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
2980           NO_ATTK, NO_ATTK, NO_ATTK),
2981         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
2982         M1_HUMANOID | M1_OMNIVORE,
2983         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
2984             | M2_COLLECT | M2_MAGIC,
2985         M3_CLOSE | M3_INFRAVISIBLE, 23, HI_LORD),
2986     MON("Twoflower", S_HUMAN, LVL(20, 12, 10, 20, 0), (G_NOGEN | G_UNIQ),
2987         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
2988           NO_ATTK, NO_ATTK, NO_ATTK),
2989         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
2990         M1_HUMANOID | M1_OMNIVORE,
2991         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
2992             | M2_COLLECT | M2_MAGIC,
2993         M3_CLOSE | M3_INFRAVISIBLE, 22, HI_DOMESTIC),
2994     MON("Norn", S_HUMAN, LVL(20, 12, 0, 80, 0), (G_NOGEN | G_UNIQ),
2995         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
2996           NO_ATTK, NO_ATTK, NO_ATTK),
2997         SIZ(1800, 550, MS_LEADER, MZ_HUGE), MR_COLD, 0,
2998         M1_HUMANOID | M1_OMNIVORE,
2999         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_FEMALE
3000             | M2_COLLECT | M2_MAGIC,
3001         M3_CLOSE | M3_INFRAVISIBLE, 23, HI_LORD),
3002     MON("Neferet the Green", S_HUMAN, LVL(20, 12, 0, 60, 0),
3003         (G_NOGEN | G_UNIQ),
3004         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 2, 8), NO_ATTK,
3005           NO_ATTK, NO_ATTK, NO_ATTK),
3006         SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
3007         M1_HUMANOID | M1_OMNIVORE,
3008         M2_NOPOLY | M2_HUMAN | M2_FEMALE | M2_PNAME | M2_PEACEFUL | M2_STRONG
3009             | M2_COLLECT | M2_MAGIC,
3010         M3_CLOSE | M3_INFRAVISIBLE, 23, CLR_GREEN),
3011     /*
3012      * quest nemeses
3013      */
3014     MON("Schliemann", S_HUMAN, LVL(16, 12, 0, 5, -14),
3015         (G_NOGEN | G_UNIQ),
3016         A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_WEAP, AD_PHYS, 2, 8),
3017           ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
3018         SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN),
3019         MR_POISON | MR_STONE, 0,
3020         M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
3021         M2_NOPOLY | M2_HUMAN | M2_MALE | M2_PNAME | M2_STALK | M2_HOSTILE
3022             | M2_STRONG | M2_NASTY | M2_GREEDY | M2_COLLECT | M2_MAGIC,
3023         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE,
3024         23, HI_LORD),
3025     MON("Thoth Amon", S_HUMAN, LVL(16, 12, 0, 10, -14),
3026         (G_NOGEN | G_UNIQ | G_NOCORPSE),
3027         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
3028           ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_SAMU, 1, 4), NO_ATTK,
3029           NO_ATTK),
3030         SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_POISON | MR_STONE, 0,
3031         M1_HUMANOID | M1_OMNIVORE,
3032         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_STRONG | M2_MALE | M2_STALK
3033             | M2_HOSTILE | M2_NASTY | M2_COLLECT | M2_MAGIC,
3034         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, 22, HI_LORD),
3035     /* Multi-headed, possessing the breath attacks of all the other dragons
3036      * (selected at random when attacking).
3037      */
3038     MON("Tiamat", S_DRAGON, LVL(16, 12, 0, 30, -14),
3039         (G_NOGEN | G_UNIQ),
3040         A(ATTK(AT_BREA, AD_RBRE, 6, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
3041           ATTK(AT_CLAW, AD_SAMU, 2, 8), ATTK(AT_BITE, AD_PHYS, 4, 8),
3042           ATTK(AT_BITE, AD_PHYS, 4, 8), ATTK(AT_STNG, AD_PHYS, 1, 6)),
3043         SIZ(WT_DRAGON, 1700, MS_NEMESIS, MZ_GIGANTIC),
3044         MR_FIRE | MR_COLD | MR_SLEEP | MR_DISINT | MR_ELEC | MR_POISON
3045             | MR_ACID | MR_STONE,
3046         MR_FIRE | MR_COLD | MR_SLEEP | MR_DISINT | MR_ELEC | MR_POISON
3047             | MR_STONE,
3048         M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_SEE_INVIS | M1_POIS,
3049         M2_NOPOLY | M2_HOSTILE | M2_FEMALE | M2_STALK | M2_PNAME | M2_STRONG
3050             | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
3051         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, 23, HI_LORD),
3052 #if 0 /* OBSOLETE */
3053     MON("Goblin King", S_ORC,
3054         LVL(15, 12, 10, 0, -15), (G_NOGEN | G_UNIQ),
3055         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
3056           ATTK(AT_CLAW, AD_SAMU, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
3057         SIZ(750, 350, MS_NEMESIS, MZ_HUMAN), 0, 0,
3058         M1_HUMANOID | M1_OMNIVORE,
3059         M2_NOPOLY | M2_ORC | M2_HOSTILE | M2_STRONG | M2_STALK | M2_NASTY
3060           | M2_MALE | M2_GREEDY | M2_JEWELS | M2_COLLECT | M2_MAGIC,
3061         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
3062         18, HI_LORD),
3063 #endif
3064     MON("Cyclops", S_GIANT, LVL(18, 12, 0, 0, -15), (G_NOGEN | G_UNIQ),
3065         A(ATTK(AT_WEAP, AD_PHYS, 4, 8), ATTK(AT_WEAP, AD_PHYS, 4, 8),
3066           ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
3067         SIZ(1900, 700, MS_NEMESIS, MZ_HUGE), MR_STONE, 0,
3068         M1_HUMANOID | M1_OMNIVORE,
3069         M2_NOPOLY | M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_STALK
3070             | M2_HOSTILE | M2_NASTY | M2_MALE | M2_JEWELS | M2_COLLECT,
3071         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
3072         23, CLR_GRAY),
3073     MON("Ixoth", S_DRAGON, LVL(15, 12, -1, 20, -14), (G_NOGEN | G_UNIQ),
3074         A(ATTK(AT_BREA, AD_FIRE, 8, 6), ATTK(AT_BITE, AD_PHYS, 4, 8),
3075           ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_PHYS, 2, 4),
3076           ATTK(AT_CLAW, AD_SAMU, 2, 4), NO_ATTK),
3077         SIZ(WT_DRAGON, 1600, MS_NEMESIS, MZ_GIGANTIC), MR_FIRE | MR_STONE,
3078         MR_FIRE,
3079         M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_SEE_INVIS,
3080         M2_NOPOLY | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_NASTY
3081             | M2_STALK | M2_GREEDY | M2_JEWELS | M2_MAGIC,
3082         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, 22, CLR_RED),
3083     MON("Master Kaen", S_HUMAN, LVL(25, 12, -10, 10, -20), (G_NOGEN | G_UNIQ),
3084         A(ATTK(AT_CLAW, AD_PHYS, 16, 2), ATTK(AT_CLAW, AD_PHYS, 16, 2),
3085           ATTK(AT_MAGC, AD_CLRC, 0, 0), ATTK(AT_CLAW, AD_SAMU, 1, 4), NO_ATTK,
3086           NO_ATTK),
3087         SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_POISON | MR_STONE,
3088         MR_POISON, M1_HUMANOID | M1_HERBIVORE | M1_SEE_INVIS,
3089         M2_NOPOLY | M2_HUMAN | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STRONG
3090             | M2_NASTY | M2_STALK | M2_COLLECT | M2_MAGIC,
3091         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, 31, HI_LORD),
3092     MON("Nalzok", S_DEMON, LVL(16, 12, -2, 85, -127),
3093         (G_NOGEN | G_UNIQ | G_NOCORPSE),
3094         A(ATTK(AT_WEAP, AD_PHYS, 8, 4), ATTK(AT_WEAP, AD_PHYS, 4, 6),
3095           ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK,
3096           NO_ATTK),
3097         SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_LARGE),
3098         MR_FIRE | MR_POISON | MR_STONE, 0, M1_FLY | M1_SEE_INVIS | M1_POIS,
3099         M2_NOPOLY | M2_DEMON | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STRONG
3100             | M2_STALK | M2_NASTY | M2_COLLECT,
3101         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
3102         23, CLR_RED),
3103     MON("Scorpius", S_SPIDER, LVL(15, 12, 10, 0, -15), (G_NOGEN | G_UNIQ),
3104         A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_SAMU, 2, 6),
3105           ATTK(AT_STNG, AD_DISE, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
3106         SIZ(750, 350, MS_NEMESIS, MZ_HUMAN), MR_POISON | MR_STONE, MR_POISON,
3107         M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS | M1_CARNIVORE,
3108         M2_NOPOLY | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_STALK
3109             | M2_NASTY | M2_COLLECT | M2_MAGIC,
3110         M3_WANTSARTI | M3_WAITFORU, 17, HI_LORD),
3111     MON("Master Assassin", S_HUMAN, LVL(15, 12, 0, 30, 18),
3112         (G_NOGEN | G_UNIQ),
3113         A(ATTK(AT_WEAP, AD_DRST, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 8),
3114           ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
3115         SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
3116         M1_HUMANOID | M1_OMNIVORE,
3117         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_MALE | M2_HOSTILE | M2_STALK
3118             | M2_NASTY | M2_COLLECT | M2_MAGIC,
3119         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, 20, HI_LORD),
3120     /* A renegade daimyo who led a 13 year civil war against the shogun
3121      * of his time.
3122      */
3123     MON("Ashikaga Takauji", S_HUMAN, LVL(15, 12, 0, 40, -13),
3124         (G_NOGEN | G_UNIQ | G_NOCORPSE),
3125         A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
3126           ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
3127         SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
3128         M1_HUMANOID | M1_OMNIVORE,
3129         M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_STALK
3130             | M2_NASTY | M2_MALE | M2_COLLECT | M2_MAGIC,
3131         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, 19, HI_LORD),
3132     /*
3133      * Note: the Master of Thieves was defined above.
3134      */
3135     MON("Lord Surtur", S_GIANT, LVL(15, 12, 2, 50, 12), (G_NOGEN | G_UNIQ),
3136         A(ATTK(AT_WEAP, AD_PHYS, 2, 10), ATTK(AT_WEAP, AD_PHYS, 2, 10),
3137           ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
3138         SIZ(2250, 850, MS_NEMESIS, MZ_HUGE), MR_FIRE | MR_STONE, MR_FIRE,
3139         M1_HUMANOID | M1_OMNIVORE,
3140         M2_NOPOLY | M2_GIANT | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STALK
3141             | M2_STRONG | M2_NASTY | M2_ROCKTHROW | M2_JEWELS | M2_COLLECT,
3142         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
3143         19, HI_LORD),
3144     MON("Anaraxis the Black", S_HUMAN, LVL(15, 12, 0, 80, -10),
3145         (G_NOGEN | G_UNIQ | G_NOCORPSE),
3146         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
3147           ATTK(AT_CLAW, AD_SAMU, 1, 4), ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK,
3148           NO_ATTK),
3149         SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
3150         M1_HUMANOID | M1_OMNIVORE,
3151         M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_PNAME | M2_HOSTILE | M2_STALK
3152             | M2_NASTY | M2_COLLECT | M2_MAGIC,
3153         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, 20, CLR_BLACK),
3154     /*
3155      * quest "guardians"
3156      */
3157     MON("student", S_HUMAN, LVL(5, 12, 10, 10, 3), G_NOGEN,
3158         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
3159           NO_ATTK),
3160         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3161         M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
3162         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
3163         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3164     MON("chieftain", S_HUMAN, LVL(5, 12, 10, 10, 0), G_NOGEN,
3165         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
3166           NO_ATTK),
3167         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), MR_POISON, 0,
3168         M1_HUMANOID | M1_OMNIVORE,
3169         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
3170         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3171     MON("neanderthal", S_HUMAN, LVL(5, 12, 10, 10, 1), G_NOGEN,
3172         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
3173           NO_ATTK),
3174         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3175         M1_HUMANOID | M1_OMNIVORE,
3176         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
3177         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3178 #if 0 /* OBSOLETE */
3179     MON("High-elf", S_HUMAN,
3180         LVL(5, 12, 10, 10, -7), G_NOGEN,
3181         A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_MAGC, AD_CLRC, 0, 0),
3182           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
3183         SIZ(WT_ELF, 350, MS_GUARDIAN, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
3184         M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
3185         M2_NOPOLY | M2_ELF | M2_PEACEFUL | M2_COLLECT,
3186         M3_INFRAVISION | M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3187 #endif
3188     MON("attendant", S_HUMAN, LVL(5, 12, 10, 10, 3), G_NOGEN,
3189         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
3190           NO_ATTK),
3191         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), MR_POISON, 0,
3192         M1_HUMANOID | M1_OMNIVORE,
3193         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
3194         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3195     MON("page", S_HUMAN, LVL(5, 12, 10, 10, 3), G_NOGEN,
3196         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
3197           NO_ATTK, NO_ATTK, NO_ATTK),
3198         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3199         M1_HUMANOID | M1_OMNIVORE,
3200         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
3201         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3202     MON("abbot", S_HUMAN, LVL(5, 12, 10, 20, 0), G_NOGEN,
3203         A(ATTK(AT_CLAW, AD_PHYS, 8, 2), ATTK(AT_KICK, AD_STUN, 3, 2),
3204           ATTK(AT_MAGC, AD_CLRC, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
3205         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3206         M1_HUMANOID | M1_HERBIVORE,
3207         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
3208         M3_INFRAVISIBLE, 8, HI_DOMESTIC),
3209     MON("acolyte", S_HUMAN, LVL(5, 12, 10, 20, 0), G_NOGEN,
3210         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_CLRC, 0, 0), NO_ATTK,
3211           NO_ATTK, NO_ATTK, NO_ATTK),
3212         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3213         M1_HUMANOID | M1_OMNIVORE,
3214         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
3215         M3_INFRAVISIBLE, 8, HI_DOMESTIC),
3216     MON("hunter", S_HUMAN, LVL(5, 12, 10, 10, -7), G_NOGEN,
3217         A(ATTK(AT_WEAP, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
3218           NO_ATTK),
3219         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3220         M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
3221         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
3222         M3_INFRAVISION | M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3223     MON("thug", S_HUMAN, LVL(5, 12, 10, 10, -3), G_NOGEN,
3224         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK,
3225           NO_ATTK, NO_ATTK, NO_ATTK),
3226         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3227         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
3228                                        | M2_STRONG | M2_GREEDY | M2_COLLECT,
3229         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3230     MON("ninja", S_HUMAN, LVL(5, 12, 10, 10, 3), G_NOGEN,
3231         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK,
3232           NO_ATTK, NO_ATTK, NO_ATTK),
3233         SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
3234         M1_HUMANOID | M1_OMNIVORE,
3235         M2_NOPOLY | M2_HUMAN | M2_HOSTILE | M2_STRONG | M2_COLLECT,
3236         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3237     MON("roshi", S_HUMAN, LVL(5, 12, 10, 10, 3), G_NOGEN,
3238         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK,
3239           NO_ATTK, NO_ATTK, NO_ATTK),
3240         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3241         M1_HUMANOID | M1_OMNIVORE,
3242         M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
3243         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3244     MON("guide", S_HUMAN, LVL(5, 12, 10, 20, 0), G_NOGEN,
3245         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK,
3246           NO_ATTK, NO_ATTK, NO_ATTK),
3247         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3248         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
3249                                        | M2_STRONG | M2_COLLECT | M2_MAGIC,
3250         M3_INFRAVISIBLE, 8, HI_DOMESTIC),
3251     MON("warrior", S_HUMAN, LVL(5, 12, 10, 10, -1), G_NOGEN,
3252         A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK,
3253           NO_ATTK, NO_ATTK, NO_ATTK),
3254         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3255         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
3256                                        | M2_STRONG | M2_COLLECT | M2_FEMALE,
3257         M3_INFRAVISIBLE, 7, HI_DOMESTIC),
3258     MON("apprentice", S_HUMAN, LVL(5, 12, 10, 30, 0), G_NOGEN,
3259         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK,
3260           NO_ATTK, NO_ATTK, NO_ATTK),
3261         SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
3262         M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
3263                                        | M2_STRONG | M2_COLLECT | M2_MAGIC,
3264         M3_INFRAVISIBLE, 8, HI_DOMESTIC),
3265     /*
3266      * array terminator
3267      */
3268     MON("", 0, LVL(0, 0, 0, 0, 0), (0),
3269         A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
3270         SIZ(0, 0, 0, 0), 0, 0, 0L, 0L, 0, 0, 0)
3271 };
3272 #endif /* !SPLITMON_1 */
3273 
3274 #ifndef SPLITMON_1
3275 
3276 void monst_globals_init(void); /* in hack.h but we're using config.h */
3277 
3278 struct permonst mons[SIZE(mons_init)];
3279 
3280 void
monst_globals_init(void)3281 monst_globals_init(void)
3282 {
3283     memcpy(mons, mons_init, sizeof(mons));
3284     return;
3285 }
3286 
3287 const struct attack c_sa_yes[NATTK] = SEDUCTION_ATTACKS_YES;
3288 const struct attack c_sa_no[NATTK] = SEDUCTION_ATTACKS_NO;
3289 #endif
3290 
3291 /*monst.c*/
3292