Issue reported by k21971: winter wolf cub and hellhound pup were defined with alignment -5 (chaotic) while winter wolf and hellhound were 0 (neutral). K2 suggested that winter wolf plus cub both be neutral and hellhound plus pup both be chaotic but I've gone another way: both cub and pup are now 0 and both adults are -5. Fixes #1340
3926 lines
186 KiB
C
3926 lines
186 KiB
C
/* NetHack 3.7 monsters.h $NHDT-Date: 1723945838 2024/08/18 01:50:38 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.124 $ */
|
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
|
/*-Copyright (c) Michael Allison, 2006. */
|
|
/* NetHack may be freely redistributed. See license for details. */
|
|
|
|
#if defined(MONS_ENUM)
|
|
#define MON(nam, sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, \
|
|
col, bn) PM_##bn
|
|
|
|
#elif defined(DUMP_ENUMS)
|
|
#define MON(nam, sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, \
|
|
col, bn) { PM_##bn, #bn}
|
|
|
|
#elif !defined(MON)
|
|
#error Non-productive inclusion of monsters.h
|
|
#endif
|
|
|
|
/*
|
|
* Entry Format: (from permonst.h)
|
|
*
|
|
* name, symbol (S_* defines),
|
|
* base monster level, move rate, armor class, magic resistance,
|
|
* alignment, creation/geno flags (G_* defines),
|
|
* 6 * attack structs ( type , damage-type, # dice, # sides ),
|
|
* weight (WT_* defines), nutritional value, extension length,
|
|
* sounds made (MS_* defines), physical size (MZ_* defines),
|
|
* resistances, resistances conferred (both MR_* defines),
|
|
* 3 * flag bitmaps (M1_*, M2_*, and M3_* defines respectively),
|
|
* difficulty, symbol color.
|
|
*
|
|
* The difficulty was generated in separate array monstr[] with
|
|
* values calculated by makedefs, but has been moved into mons[]
|
|
* since it rarely changes. If a new monster is added or an old
|
|
* one undergoes significant change, 'makedefs -m' can be used to
|
|
* create a dummy monstr.c containing the calculated difficulty
|
|
* (of everything in mons[], not just any new or changed ones),
|
|
* then the value(s) can be plugged in here and monstr.c deleted.
|
|
* [Note that some monsters might warrant manually calculated
|
|
* difficulty, on a case by case basis, instead of blindly using
|
|
* the default value produced by makedefs. Or fix the algorithm
|
|
* used by makedefs to generate a more appropriate value....]
|
|
*
|
|
* TODO: difficulty is closely related to level; its field ought
|
|
* to be moved sooner in the permonst struct so that it can become
|
|
* part of LVL() instead of remaining an orphan near the end.
|
|
*
|
|
* Rule #1: monsters of a given class are contiguous in the
|
|
* mons[] array.
|
|
*
|
|
* Rule #2: monsters of a given class are presented in ascending
|
|
* order of strength.
|
|
*
|
|
* Rule #3: monster frequency is included in the geno mask;
|
|
* the frequency can be from 0 to 7. 0's will also
|
|
* be skipped during generation.
|
|
*
|
|
* Rule #4: monster subclasses (e.g. giants) should be kept
|
|
* together, unless it violates Rule 2. NOGEN monsters
|
|
* won't violate Rule 2.
|
|
*
|
|
* Guidelines for color assignment:
|
|
*
|
|
* * Use the same color for all `growth stages' of a monster (ex.
|
|
* little dog/big dog, baby naga/full-grown naga.
|
|
*
|
|
* * Use colors given in names wherever possible. If the class has `real'
|
|
* members with strong color associations, use those.
|
|
*
|
|
* * Favor `cool' colors for cold-resistant monsters, `warm' ones for
|
|
* fire-resistant ones.
|
|
*
|
|
* * Try to reserve purple (magenta) for powerful `ruler' monsters (queen
|
|
* bee, kobold lord, &c.).
|
|
*
|
|
* * Subject to all these constraints, try to use color to make as many
|
|
* distinctions as the / command (that is, within a monster letter
|
|
* distinct names should map to distinct colors).
|
|
*
|
|
* The aim in assigning colors is to be consistent enough so a player can
|
|
* become `intuitive' about them, deducing some or all of these rules
|
|
* unconsciously. Use your common sense.
|
|
*/
|
|
|
|
/*
|
|
* ants
|
|
*/
|
|
MON(NAM("giant ant"), S_ANT,
|
|
LVL(2, 18, 3, 0, 0), (G_GENO | G_SGROUP | 3),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 10, MS_SILENT, MZ_TINY), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE, M2_HOSTILE, 0,
|
|
4, CLR_BROWN, GIANT_ANT),
|
|
MON(NAM("killer bee"), S_ANT,
|
|
LVL(1, 18, -1, 0, 0), (G_GENO | G_LGROUP | 2),
|
|
A(ATTK(AT_STNG, AD_DRST, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1, 5, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
|
|
M1_ANIMAL | M1_FLY | M1_NOHANDS | M1_POIS, M2_HOSTILE | M2_FEMALE, 0,
|
|
5, CLR_YELLOW, KILLER_BEE),
|
|
MON(NAM("soldier ant"), S_ANT,
|
|
LVL(3, 18, 3, 0, 0), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_STNG, AD_DRST, 3, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(20, 5, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
|
|
M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS | M1_CARNIVORE,
|
|
M2_HOSTILE, 0,
|
|
6, CLR_BLUE, SOLDIER_ANT),
|
|
MON(NAM("fire ant"), S_ANT,
|
|
LVL(3, 18, 3, 10, 0), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_BITE, AD_FIRE, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 10, MS_SILENT, MZ_TINY), MR_FIRE, MR_FIRE,
|
|
M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE, M2_HOSTILE,
|
|
M3_INFRAVISIBLE,
|
|
6, CLR_RED, FIRE_ANT),
|
|
MON(NAM("giant beetle"), S_ANT,
|
|
LVL(5, 6, 4, 0, 0), (G_GENO | 3),
|
|
A(ATTK(AT_BITE, AD_PHYS, 3, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 50, MS_SILENT, MZ_LARGE), MR_POISON, MR_POISON,
|
|
M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_CARNIVORE, M2_HOSTILE, 0,
|
|
6, CLR_BLACK, GIANT_BEETLE),
|
|
MON(NAM("queen bee"), S_ANT,
|
|
LVL(9, 24, -4, 0, 0), (G_GENO | G_NOGEN),
|
|
A(ATTK(AT_STNG, AD_DRST, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1, 5, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
|
|
M1_ANIMAL | M1_FLY | M1_NOHANDS | M1_OVIPAROUS | M1_POIS,
|
|
M2_HOSTILE | M2_FEMALE | M2_PRINCE, 0,
|
|
12, HI_LORD, QUEEN_BEE),
|
|
/*
|
|
* blobs
|
|
*/
|
|
MON(NAM("acid blob"), S_BLOB,
|
|
LVL(1, 3, 8, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_NONE, AD_ACID, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 10, MS_SILENT, MZ_TINY),
|
|
MR_SLEEP | MR_POISON | MR_ACID | MR_STONE, MR_ACID | MR_STONE,
|
|
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_ACID,
|
|
M2_WANDER | M2_NEUTER, 0,
|
|
2, CLR_GREEN, ACID_BLOB),
|
|
MON(NAM("quivering blob"), S_BLOB,
|
|
LVL(5, 1, 8, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_TUCH, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 100, MS_SILENT, MZ_SMALL), MR_SLEEP | MR_POISON, MR_POISON,
|
|
M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
|
|
M2_WANDER | M2_HOSTILE | M2_NEUTER, 0,
|
|
6, CLR_WHITE, QUIVERING_BLOB),
|
|
MON(NAM("gelatinous cube"), S_BLOB,
|
|
LVL(6, 6, 8, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_TUCH, AD_PLYS, 2, 4), ATTK(AT_NONE, AD_PLYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 150, MS_SILENT, MZ_LARGE),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_ACID
|
|
| MR_STONE,
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP,
|
|
M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_OMNIVORE
|
|
| M1_ACID,
|
|
M2_WANDER | M2_HOSTILE | M2_NEUTER, 0,
|
|
8, CLR_CYAN, GELATINOUS_CUBE),
|
|
/*
|
|
* cockatrice
|
|
*/
|
|
MON(NAM("chickatrice"), S_COCKATRICE,
|
|
LVL(4, 4, 8, 30, 0), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 2), ATTK(AT_TUCH, AD_STON, 0, 0),
|
|
ATTK(AT_NONE, AD_STON, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 10, MS_HISS, MZ_TINY), MR_POISON | MR_STONE,
|
|
MR_POISON | MR_STONE, M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE,
|
|
M2_HOSTILE, M3_INFRAVISIBLE,
|
|
7, CLR_BROWN, CHICKATRICE),
|
|
MON(NAM("cockatrice"), S_COCKATRICE,
|
|
LVL(5, 6, 6, 30, 0), (G_GENO | 5),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 3), ATTK(AT_TUCH, AD_STON, 0, 0),
|
|
ATTK(AT_NONE, AD_STON, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 30, MS_HISS, MZ_SMALL), MR_POISON | MR_STONE,
|
|
MR_POISON | MR_STONE,
|
|
M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE | M1_OVIPAROUS, M2_HOSTILE,
|
|
M3_INFRAVISIBLE,
|
|
8, CLR_YELLOW, COCKATRICE),
|
|
MON(NAM("pyrolisk"), S_COCKATRICE,
|
|
LVL(6, 6, 6, 30, 0), (G_GENO | 1),
|
|
A(ATTK(AT_GAZE, AD_FIRE, 2, 6), ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 30, MS_HISS, MZ_SMALL), MR_POISON | MR_FIRE,
|
|
MR_POISON | MR_FIRE,
|
|
M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE | M1_OVIPAROUS, M2_HOSTILE,
|
|
M3_INFRAVISIBLE,
|
|
8, CLR_RED, PYROLISK),
|
|
/*
|
|
* dogs & other canines
|
|
*/
|
|
MON(NAM("jackal"), S_DOG,
|
|
LVL(0, 12, 7, 0, 0), (G_GENO | G_SGROUP | 3),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 2),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(300, 250, MS_BARK, MZ_SMALL), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
1, CLR_BROWN, JACKAL),
|
|
MON(NAM("fox"), S_DOG,
|
|
LVL(0, 15, 7, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(300, 250, MS_BARK, MZ_SMALL), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
1, CLR_RED, FOX),
|
|
MON(NAM("coyote"), S_DOG,
|
|
LVL(1, 12, 7, 0, 0), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(300, 250, MS_BARK, MZ_SMALL), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
2, CLR_BROWN, COYOTE),
|
|
MON(NAM("werejackal"), S_DOG,
|
|
LVL(2, 12, 7, 10, -7), (G_NOGEN | G_NOCORPSE),
|
|
A(ATTK(AT_BITE, AD_WERE, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(300, 250, MS_BARK, MZ_SMALL), MR_POISON, 0,
|
|
M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
|
|
M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE,
|
|
4, CLR_BROWN, WEREJACKAL),
|
|
MON(NAM("little dog"), S_DOG,
|
|
LVL(2, 18, 6, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(150, 150, MS_BARK, MZ_SMALL), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_DOMESTIC, M3_INFRAVISIBLE,
|
|
3, HI_DOMESTIC, LITTLE_DOG),
|
|
MON(NAM("dingo"), S_DOG,
|
|
LVL(4, 16, 5, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 200, MS_BARK, MZ_MEDIUM), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
5, CLR_YELLOW, DINGO),
|
|
MON(NAM("dog"), S_DOG,
|
|
LVL(4, 16, 5, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 200, MS_BARK, MZ_MEDIUM), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_DOMESTIC, M3_INFRAVISIBLE,
|
|
5, HI_DOMESTIC, DOG),
|
|
MON(NAM("large dog"), S_DOG,
|
|
LVL(6, 15, 4, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(800, 250, MS_BARK, MZ_MEDIUM), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_STRONG | M2_DOMESTIC,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, LARGE_DOG),
|
|
MON(NAM("wolf"), S_DOG,
|
|
LVL(5, 12, 4, 0, 0), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 250, MS_BARK, MZ_MEDIUM), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
6, CLR_GRAY, WOLF),
|
|
/* werewolf in wolf form; one in human form uses a different monster
|
|
type (in the S_HUMAN section below); switching back and forth is
|
|
a shape-change that sets monst->data to the appropriate monster */
|
|
MON(NAM("werewolf"), S_DOG,
|
|
LVL(5, 12, 4, 20, -7), (G_NOGEN | G_NOCORPSE),
|
|
A(ATTK(AT_BITE, AD_WERE, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 250, MS_BARK, MZ_MEDIUM), MR_POISON, 0,
|
|
M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
|
|
M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE,
|
|
7, CLR_GRAY, WEREWOLF),
|
|
MON(NAM("winter wolf cub"), S_DOG,
|
|
LVL(5, 12, 4, 0, 0),
|
|
(G_NOHELL | G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 8), ATTK(AT_BREA, AD_COLD, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(250, 200, MS_BARK, MZ_SMALL), MR_COLD, MR_COLD,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0,
|
|
7, CLR_CYAN, WINTER_WOLF_CUB),
|
|
MON(NAM("warg"), S_DOG,
|
|
LVL(7, 12, 4, 0, -5), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(850, 350, MS_BARK, MZ_MEDIUM), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
8, CLR_BLACK, WARG),
|
|
MON(NAM("winter wolf"), S_DOG,
|
|
LVL(7, 12, 4, 20, -5), (G_NOHELL | G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BREA, AD_COLD, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(700, 300, MS_BARK, MZ_LARGE), MR_COLD, MR_COLD,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE | M2_STRONG, 0,
|
|
9, CLR_CYAN, WINTER_WOLF),
|
|
MON(NAM("hell hound pup"), S_DOG,
|
|
LVL(7, 12, 4, 20, 0), (G_HELL | G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BREA, AD_FIRE, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 200, MS_BARK, MZ_SMALL), MR_FIRE, MR_FIRE,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
9, CLR_RED, HELL_HOUND_PUP),
|
|
MON(NAM("hell hound"), S_DOG,
|
|
LVL(12, 14, 2, 20, -5), (G_HELL | G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_BREA, AD_FIRE, 3, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 300, MS_BARK, MZ_MEDIUM), MR_FIRE, MR_FIRE,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE | M2_STRONG,
|
|
M3_INFRAVISIBLE, 14, CLR_RED, HELL_HOUND),
|
|
#ifdef CHARON
|
|
MON(NAM("Cerberus"), S_DOG,
|
|
LVL(12, 10, 2, 20, -7), (G_NOGEN | G_UNIQ | G_HELL),
|
|
A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_BITE, AD_PHYS, 3, 6),
|
|
ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1000, 350, MS_BARK, MZ_LARGE), MR_FIRE, MR_FIRE,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_NOPOLY | M2_HOSTILE | M2_STRONG | M2_PNAME | M2_MALE,
|
|
M3_INFRAVISIBLE,
|
|
14, CLR_RED, CERBERUS),
|
|
#endif
|
|
/*
|
|
* eyes
|
|
*/
|
|
MON(NAM("gas spore"), S_EYE,
|
|
LVL(1, 3, 10, 0, 0), (G_NOCORPSE | G_GENO | 1),
|
|
A(ATTK(AT_BOOM, AD_PHYS, 4, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
2, CLR_GRAY, GAS_SPORE),
|
|
MON(NAM("floating eye"), S_EYE,
|
|
LVL(2, 1, 9, 10, 0), (G_GENO | 5),
|
|
A(ATTK(AT_NONE, AD_PLYS, 0, 70),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0,
|
|
M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE,
|
|
3, CLR_BLUE, FLOATING_EYE),
|
|
MON(NAM("freezing sphere"), S_EYE,
|
|
LVL(6, 13, 4, 0, 0), (G_NOCORPSE | G_NOHELL | G_GENO | 2),
|
|
A(ATTK(AT_EXPL, AD_COLD, 4, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD, MR_COLD,
|
|
M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE,
|
|
9, CLR_WHITE, FREEZING_SPHERE),
|
|
MON(NAM("flaming sphere"), S_EYE,
|
|
LVL(6, 13, 4, 0, 0), (G_NOCORPSE | G_GENO | 2),
|
|
A(ATTK(AT_EXPL, AD_FIRE, 4, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_FIRE, MR_FIRE,
|
|
M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 9, CLR_RED, FLAMING_SPHERE),
|
|
MON(NAM("shocking sphere"), S_EYE,
|
|
LVL(6, 13, 4, 0, 0), (G_NOCORPSE | G_GENO | 2),
|
|
A(ATTK(AT_EXPL, AD_ELEC, 4, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_ELEC, MR_ELEC,
|
|
M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE,
|
|
10, HI_ZAP, SHOCKING_SPHERE),
|
|
#if 0 /* not yet implemented */
|
|
MON(NAM("beholder"), S_EYE,
|
|
LVL(6, 3, 4, 0, -10), (G_GENO | 2),
|
|
A(ATTK(AT_GAZE, AD_SLOW, 0, 0), ATTK(AT_GAZE, AD_SLEE, 2,25),
|
|
ATTK(AT_GAZE, AD_DISN, 0, 0), ATTK(AT_GAZE, AD_STON, 0, 0),
|
|
ATTK(AT_GAZE, AD_CNCL, 2, 4), ATTK(AT_BITE, AD_PHYS, 2, 4)),
|
|
SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
|
|
M2_NOPOLY | M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE,
|
|
13, CLR_BROWN, BEHOLDER),
|
|
#endif
|
|
/*
|
|
* felines
|
|
*/
|
|
MON(NAM("kitten"), S_FELINE,
|
|
LVL(2, 18, 6, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(150, 150, MS_MEW, MZ_SMALL), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_WANDER | M2_DOMESTIC,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
3, HI_DOMESTIC, KITTEN),
|
|
MON(NAM("housecat"), S_FELINE,
|
|
LVL(4, 16, 5, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 200, MS_MEW, MZ_SMALL), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_DOMESTIC,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
5, HI_DOMESTIC, HOUSECAT),
|
|
MON(NAM("jaguar"), S_FELINE,
|
|
LVL(4, 15, 6, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 300, MS_GROWL, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
6, CLR_BROWN, JAGUAR),
|
|
MON(NAM("lynx"), S_FELINE,
|
|
LVL(5, 15, 6, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 300, MS_GROWL, MZ_SMALL), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
7, CLR_CYAN, LYNX),
|
|
MON(NAM("panther"), S_FELINE,
|
|
LVL(5, 15, 6, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 300, MS_GROWL, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
7, CLR_BLACK, PANTHER),
|
|
MON(NAM("large cat"), S_FELINE,
|
|
LVL(6, 15, 4, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(250, 250, MS_MEW, MZ_SMALL), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_STRONG | M2_DOMESTIC,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
7, HI_DOMESTIC, LARGE_CAT),
|
|
MON(NAM("tiger"), S_FELINE,
|
|
LVL(6, 12, 6, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 10), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 300, MS_GROWL, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
8, CLR_YELLOW, TIGER),
|
|
MON(NAM("displacer beast"), S_FELINE,
|
|
LVL(12, 12, -10, 0, -3), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 4, 4), ATTK(AT_CLAW, AD_PHYS, 4, 4),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 10), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(750, 400, MS_GROWL, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES,
|
|
14, CLR_BLUE, DISPLACER_BEAST),
|
|
/*
|
|
* gremlins and gargoyles
|
|
*/
|
|
MON(NAM("gremlin"), S_GREMLIN,
|
|
LVL(5, 12, 2, 25, -9), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_CURS, 0, 0),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(100, 20, MS_LAUGH, MZ_SMALL), MR_POISON, MR_POISON,
|
|
M1_SWIM | M1_HUMANOID | M1_POIS, M2_STALK, M3_INFRAVISIBLE,
|
|
8, CLR_GREEN, GREMLIN),
|
|
/* gargoyle and winged gargoyle are inspired by a cheesy made-for-TV
|
|
horror movie (starring Cornel Wilde and Jennifer Salt, 1972) */
|
|
MON(NAM("gargoyle"), S_GREMLIN,
|
|
LVL(6, 10, -4, 0, -9), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_PHYS, 2, 6),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1000, 200, MS_GRUNT, MZ_HUMAN), MR_STONE, MR_STONE,
|
|
M1_HUMANOID | M1_THICK_HIDE | M1_BREATHLESS,
|
|
M2_HOSTILE | M2_STRONG, 0,
|
|
8, CLR_BROWN, GARGOYLE),
|
|
MON(NAM("winged gargoyle"), S_GREMLIN,
|
|
LVL(9, 15, -2, 0, -12), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 3, 6),
|
|
ATTK(AT_BITE, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 300, MS_GRUNT, MZ_HUMAN), MR_STONE, MR_STONE,
|
|
M1_FLY | M1_HUMANOID | M1_THICK_HIDE | M1_BREATHLESS | M1_OVIPAROUS,
|
|
M2_LORD | M2_HOSTILE | M2_STRONG | M2_MAGIC, 0,
|
|
11, HI_LORD, WINGED_GARGOYLE),
|
|
/*
|
|
* humanoids
|
|
*/
|
|
MON(NAM("hobbit"), S_HUMANOID,
|
|
LVL(1, 9, 10, 0, 6), (G_GENO | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 200, MS_HUMANOID, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
|
|
M2_COLLECT, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
2, CLR_GREEN, HOBBIT),
|
|
/* unlike plain human|elf|orc, plain "dwarf" is an ordinary monster */
|
|
MON(NAM("dwarf"), S_HUMANOID,
|
|
LVL(2, 6, 10, 10, 4), (G_GENO | 3),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(900, 300, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
|
|
M2_DWARF | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
4, CLR_RED, DWARF),
|
|
MON(NAM("bugbear"), S_HUMANOID,
|
|
LVL(3, 9, 5, 0, -6), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1250, 250, MS_GROWL, MZ_LARGE), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
5, CLR_BROWN, BUGBEAR),
|
|
MON(NAMS("dwarf lord", "dwarf lady", "dwarf leader"), S_HUMANOID,
|
|
LVL(4, 6, 10, 10, 5), (G_GENO | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(900, 300, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
|
|
M2_DWARF | M2_STRONG | M2_LORD | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
6, CLR_BLUE, DWARF_LEADER),
|
|
MON(NAMS("dwarf king", "dwarf queen", "dwarf ruler"),
|
|
S_HUMANOID, LVL(6, 6, 10, 20, 6), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(900, 300, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
|
|
M2_DWARF | M2_STRONG | M2_PRINCE | M2_GREEDY | M2_JEWELS
|
|
| M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
8, HI_LORD, DWARF_RULER),
|
|
MON(NAM("mind flayer"), S_HUMANOID,
|
|
LVL(9, 12, 5, 90, -8), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 4), ATTK(AT_TENT, AD_DRIN, 2, 1),
|
|
ATTK(AT_TENT, AD_DRIN, 2, 1), ATTK(AT_TENT, AD_DRIN, 2, 1),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(1450, 400, MS_HISS, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_FLY | M1_SEE_INVIS | M1_OMNIVORE,
|
|
M2_HOSTILE | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
13, CLR_BRIGHT_MAGENTA, MIND_FLAYER),
|
|
MON(NAM("master mind flayer"), S_HUMANOID,
|
|
LVL(13, 12, 0, 90, -8), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_TENT, AD_DRIN, 2, 1),
|
|
ATTK(AT_TENT, AD_DRIN, 2, 1), ATTK(AT_TENT, AD_DRIN, 2, 1),
|
|
ATTK(AT_TENT, AD_DRIN, 2, 1), ATTK(AT_TENT, AD_DRIN, 2, 1)),
|
|
SIZ(1450, 400, MS_HISS, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_FLY | M1_SEE_INVIS | M1_OMNIVORE,
|
|
M2_HOSTILE | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
19, CLR_BRIGHT_MAGENTA, MASTER_MIND_FLAYER),
|
|
/*
|
|
* imps & other minor demons/devils
|
|
*/
|
|
MON(NAM("manes"), S_IMP,
|
|
LVL(1, 3, 7, 0, -7), (G_GENO | G_LGROUP | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(100, 100, MS_SILENT, MZ_SMALL), MR_SLEEP | MR_POISON, 0, M1_POIS,
|
|
M2_HOSTILE | M2_STALK, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
3, CLR_RED, MANES),
|
|
MON(NAM("homunculus"), S_IMP,
|
|
LVL(2, 12, 6, 10, -7), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_SLEE, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(60, 100, MS_SILENT, MZ_TINY), MR_SLEEP | MR_POISON,
|
|
MR_SLEEP | MR_POISON, M1_FLY | M1_POIS, M2_STALK,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
3, CLR_GREEN, HOMUNCULUS),
|
|
MON(NAM("imp"), S_IMP,
|
|
LVL(3, 12, 2, 20, -7), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(20, 10, MS_CUSS, MZ_TINY), 0, 0, M1_REGEN, M2_WANDER | M2_STALK,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
4, CLR_RED, IMP),
|
|
MON(NAM("lemure"), S_IMP,
|
|
LVL(3, 3, 7, 0, -7), (G_HELL | G_GENO | G_LGROUP | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(150, 100, MS_SILENT, MZ_MEDIUM), MR_SLEEP | MR_POISON, MR_SLEEP,
|
|
M1_POIS | M1_REGEN, M2_HOSTILE | M2_WANDER | M2_STALK | M2_NEUTER,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
5, CLR_BROWN, LEMURE),
|
|
MON(NAM("quasit"), S_IMP,
|
|
LVL(3, 15, 2, 20, -7), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_DRDX, 1, 2), ATTK(AT_CLAW, AD_DRDX, 1, 2),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 200, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON, M1_REGEN,
|
|
M2_STALK, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
7, CLR_BLUE, QUASIT),
|
|
MON(NAM("tengu"), S_IMP,
|
|
LVL(6, 13, 5, 30, 7), (G_GENO | 3),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 7),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(300, 200, MS_SQAWK, MZ_SMALL), MR_POISON, MR_POISON,
|
|
M1_TPORT | M1_TPORT_CNTRL, M2_STALK, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
7, CLR_CYAN, TENGU),
|
|
/*
|
|
* jellies
|
|
*/
|
|
MON(NAM("blue jelly"), S_JELLY,
|
|
LVL(4, 0, 8, 10, 0), (G_GENO | 2),
|
|
A(ATTK(AT_NONE, AD_COLD, 0, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 20, MS_SILENT, MZ_MEDIUM), MR_COLD | MR_POISON,
|
|
MR_COLD | MR_POISON,
|
|
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
5, CLR_BLUE, BLUE_JELLY),
|
|
MON(NAM("spotted jelly"), S_JELLY,
|
|
LVL(5, 0, 8, 10, 0), (G_GENO | 1),
|
|
A(ATTK(AT_NONE, AD_ACID, 0, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 20, MS_SILENT, MZ_MEDIUM),
|
|
MR_ACID | MR_STONE, MR_ACID | MR_STONE,
|
|
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_ACID | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
6, CLR_GREEN, SPOTTED_JELLY),
|
|
MON(NAM("ochre jelly"), S_JELLY,
|
|
LVL(6, 3, 8, 20, 0), (G_GENO | 2),
|
|
A(ATTK(AT_ENGL, AD_ACID, 3, 6), ATTK(AT_NONE, AD_ACID, 3, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 20, MS_SILENT, MZ_MEDIUM),
|
|
MR_ACID | MR_STONE, MR_ACID | MR_STONE,
|
|
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_ACID | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
8, CLR_BROWN, OCHRE_JELLY),
|
|
/*
|
|
* kobolds
|
|
*/
|
|
MON(NAM("kobold"), S_KOBOLD,
|
|
LVL(0, 6, 10, 0, -2), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 100, MS_ORC, MZ_SMALL), MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS | M1_OMNIVORE, M2_HOSTILE | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
1, CLR_BROWN, KOBOLD),
|
|
MON(NAM("large kobold"), S_KOBOLD,
|
|
LVL(1, 6, 10, 0, -3), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(450, 150, MS_ORC, MZ_SMALL), MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS | M1_OMNIVORE, M2_HOSTILE | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
2, CLR_RED, LARGE_KOBOLD),
|
|
MON(NAMS("kobold lord", "kobold lady", "kobold leader"), S_KOBOLD,
|
|
LVL(2, 6, 10, 0, -4), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 200, MS_ORC, MZ_SMALL), MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS | M1_OMNIVORE,
|
|
M2_HOSTILE | M2_LORD | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
3, HI_LORD, KOBOLD_LEADER),
|
|
MON(NAM("kobold shaman"), S_KOBOLD,
|
|
LVL(2, 6, 6, 10, -4), (G_GENO | 1),
|
|
A(ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(450, 150, MS_ORC, MZ_SMALL), MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS | M1_OMNIVORE, M2_HOSTILE | M2_MAGIC,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
4, HI_ZAP, KOBOLD_SHAMAN),
|
|
/*
|
|
* leprechauns
|
|
*/
|
|
MON(NAM("leprechaun"), S_LEPRECHAUN,
|
|
LVL(5, 15, 8, 20, 0), (G_GENO | 4),
|
|
A(ATTK(AT_CLAW, AD_SGLD, 1, 2),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(60, 30, MS_LAUGH, MZ_TINY), 0, 0, M1_HUMANOID | M1_TPORT,
|
|
M2_HOSTILE | M2_GREEDY, M3_INFRAVISIBLE,
|
|
4, CLR_GREEN, LEPRECHAUN),
|
|
/*
|
|
* mimics
|
|
*/
|
|
MON(NAM("small mimic"), S_MIMIC,
|
|
LVL(7, 3, 7, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(300, 200, MS_SILENT, MZ_MEDIUM), MR_ACID, 0,
|
|
M1_BREATHLESS | M1_AMORPHOUS | M1_HIDE | M1_ANIMAL | M1_NOEYES
|
|
| M1_NOHEAD | M1_NOLIMBS | M1_THICK_HIDE | M1_CARNIVORE,
|
|
M2_HOSTILE, 0,
|
|
8, CLR_BROWN, SMALL_MIMIC),
|
|
MON(NAM("large mimic"), S_MIMIC,
|
|
LVL(8, 3, 7, 10, 0), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_STCK, 3, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 400, MS_SILENT, MZ_LARGE), MR_ACID, 0,
|
|
M1_CLING | M1_BREATHLESS | M1_AMORPHOUS | M1_HIDE | M1_ANIMAL
|
|
| M1_NOEYES | M1_NOHEAD | M1_NOLIMBS | M1_THICK_HIDE
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG, 0,
|
|
9, CLR_RED, LARGE_MIMIC),
|
|
MON(NAM("giant mimic"), S_MIMIC,
|
|
LVL(9, 3, 7, 20, 0), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_STCK, 3, 6), ATTK(AT_CLAW, AD_STCK, 3, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(800, 500, MS_SILENT, MZ_LARGE), MR_ACID, 0,
|
|
M1_CLING | M1_BREATHLESS | M1_AMORPHOUS | M1_HIDE | M1_ANIMAL
|
|
| M1_NOEYES | M1_NOHEAD | M1_NOLIMBS | M1_THICK_HIDE
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG, 0,
|
|
11, HI_LORD, GIANT_MIMIC),
|
|
/*
|
|
* nymphs
|
|
*/
|
|
MON(NAM("wood nymph"), S_NYMPH,
|
|
LVL(3, 12, 9, 20, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_TPORT,
|
|
M2_HOSTILE | M2_FEMALE | M2_COLLECT, M3_INFRAVISIBLE,
|
|
5, CLR_GREEN, WOOD_NYMPH),
|
|
MON(NAM("water nymph"), S_NYMPH,
|
|
LVL(3, 12, 9, 20, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_TPORT | M1_SWIM, M2_HOSTILE | M2_FEMALE | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
5, CLR_BLUE, WATER_NYMPH),
|
|
MON(NAM("mountain nymph"), S_NYMPH,
|
|
LVL(3, 12, 9, 20, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_CLAW, AD_SEDU, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_TPORT,
|
|
M2_HOSTILE | M2_FEMALE | M2_COLLECT, M3_INFRAVISIBLE,
|
|
5, CLR_BROWN, MOUNTAIN_NYMPH),
|
|
/*
|
|
* orcs
|
|
*/
|
|
MON(NAM("goblin"), S_ORC,
|
|
LVL(0, 6, 10, 0, -3), (G_GENO | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 100, MS_ORC, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
|
|
M2_ORC | M2_COLLECT, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
1, CLR_GRAY, GOBLIN),
|
|
MON(NAM("hobgoblin"), S_ORC, LVL(1, 9, 10, 0, -4), (G_GENO | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1000, 200, MS_ORC, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_OMNIVORE,
|
|
M2_ORC | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
3, CLR_BROWN, HOBGOBLIN),
|
|
/* Plain "orc" for zombie and mummy corpses only; not created at random.
|
|
* Orcs (but not goblins and hobgoblins) are granted poison resistance;
|
|
* however, their corpses don't confer it. */
|
|
MON(NAM("orc"), S_ORC,
|
|
LVL(1, 9, 10, 0, -3), (G_GENO | G_NOGEN | G_LGROUP),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(850, 150, MS_ORC, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
3, CLR_RED, ORC),
|
|
MON(NAM("hill orc"), S_ORC,
|
|
LVL(2, 9, 10, 0, -4), (G_GENO | G_LGROUP | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1000, 200, MS_ORC, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
4, CLR_YELLOW, HILL_ORC),
|
|
MON(NAM("Mordor orc"), S_ORC,
|
|
LVL(3, 5, 10, 0, -5), (G_GENO | G_LGROUP | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 200, MS_ORC, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
5, CLR_BLUE, MORDOR_ORC),
|
|
MON(NAM("Uruk-hai"), S_ORC,
|
|
LVL(3, 7, 10, 0, -4), (G_GENO | G_LGROUP | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1300, 300, MS_ORC, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
5, CLR_BLACK, URUK_HAI),
|
|
MON(NAM("orc shaman"), S_ORC,
|
|
LVL(3, 9, 5, 10, -5), (G_GENO | 1),
|
|
A(ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1000, 300, MS_ORC, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_ORC | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
5, HI_ZAP, ORC_SHAMAN),
|
|
MON(NAM("orc-captain"), S_ORC,
|
|
LVL(5, 5, 10, 0, -5), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1350, 350, MS_ORC, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_ORC | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
7, HI_LORD, ORC_CAPTAIN),
|
|
/*
|
|
* piercers
|
|
*/
|
|
MON(NAM("rock piercer"), S_PIERCER,
|
|
LVL(3, 1, 3, 0, 0), (G_GENO | 4),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 200, MS_SILENT, MZ_SMALL), 0, 0,
|
|
M1_CLING | M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_CARNIVORE
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE, 0,
|
|
4, CLR_GRAY, ROCK_PIERCER),
|
|
MON(NAM("iron piercer"), S_PIERCER,
|
|
LVL(5, 1, 0, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 3, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 300, MS_SILENT, MZ_MEDIUM), 0, 0,
|
|
M1_CLING | M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_CARNIVORE
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE, 0,
|
|
6, CLR_CYAN, IRON_PIERCER),
|
|
MON(NAM("glass piercer"), S_PIERCER,
|
|
LVL(7, 1, 0, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 4, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 300, MS_SILENT, MZ_MEDIUM), MR_ACID, 0,
|
|
M1_CLING | M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_CARNIVORE
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE, 0,
|
|
9, CLR_WHITE, GLASS_PIERCER),
|
|
/*
|
|
* quadrupeds
|
|
* (note: horses are grouped with unicorns in another section below)
|
|
*/
|
|
MON(NAM("rothe"), S_QUADRUPED,
|
|
LVL(2, 9, 7, 0, 0), (G_GENO | G_SGROUP | 4),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_BITE, AD_PHYS, 1, 3),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 100, MS_MOO, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
4, CLR_BROWN, ROTHE),
|
|
MON(NAM("mumak"), S_QUADRUPED,
|
|
LVL(5, 9, 0, 0, -2), (G_GENO | 1),
|
|
A(ATTK(AT_BUTT, AD_PHYS, 4, 12), ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2500, 500, MS_TRUMPET, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_HERBIVORE,
|
|
M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE,
|
|
7, CLR_GRAY, MUMAK),
|
|
MON(NAM("leocrotta"), S_QUADRUPED,
|
|
LVL(6, 18, 4, 10, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
ATTK(AT_CLAW, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 500, MS_IMITATE, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE, M2_HOSTILE | M2_STRONG,
|
|
M3_INFRAVISIBLE,
|
|
8, CLR_RED, LEOCROTTA),
|
|
MON(NAM("wumpus"), S_QUADRUPED,
|
|
LVL(8, 3, 2, 10, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 3, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2500, 500, MS_BURBLE, MZ_LARGE), 0, 0,
|
|
M1_CLING | M1_ANIMAL | M1_NOHANDS | M1_OMNIVORE,
|
|
M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE,
|
|
9, CLR_CYAN, WUMPUS),
|
|
MON(NAM("titanothere"), S_QUADRUPED,
|
|
LVL(12, 12, 6, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2650, 650, MS_BELLOW, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_HERBIVORE,
|
|
M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE,
|
|
13, CLR_GRAY, TITANOTHERE),
|
|
MON(NAM("baluchitherium"), S_QUADRUPED,
|
|
LVL(14, 12, 5, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 5, 4), ATTK(AT_CLAW, AD_PHYS, 5, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(3800, 800, MS_BELLOW, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_HERBIVORE,
|
|
M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE,
|
|
15, CLR_GRAY, BALUCHITHERIUM),
|
|
MON(NAM("mastodon"), S_QUADRUPED,
|
|
LVL(20, 12, 5, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BUTT, AD_PHYS, 4, 8), ATTK(AT_BUTT, AD_PHYS, 4, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(3800, 800, MS_TRUMPET, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_HERBIVORE,
|
|
M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE,
|
|
22, CLR_BLACK, MASTODON),
|
|
/*
|
|
* rodents
|
|
*/
|
|
MON(NAM("sewer rat"), S_RODENT,
|
|
LVL(0, 12, 7, 0, 0), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(20, 12, MS_SQEEK, MZ_TINY), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
1, CLR_BROWN, SEWER_RAT),
|
|
MON(NAM("giant rat"), S_RODENT,
|
|
LVL(1, 10, 7, 0, 0), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 30, MS_SQEEK, MZ_TINY), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
|
2, CLR_BROWN, GIANT_RAT),
|
|
MON(NAM("rabid rat"), S_RODENT,
|
|
LVL(2, 12, 6, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_DRCO, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 5, MS_SQEEK, MZ_TINY), MR_POISON, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_CARNIVORE, M2_HOSTILE,
|
|
M3_INFRAVISIBLE,
|
|
4, CLR_BROWN, RABID_RAT),
|
|
MON(NAM("wererat"), S_RODENT,
|
|
LVL(2, 12, 6, 10, -7), (G_NOGEN | G_NOCORPSE),
|
|
A(ATTK(AT_BITE, AD_WERE, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(40, 30, MS_SQEEK, MZ_TINY), MR_POISON, 0,
|
|
M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
|
|
M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE,
|
|
4, CLR_BROWN, WERERAT),
|
|
MON(NAM("rock mole"), S_RODENT,
|
|
LVL(3, 3, 0, 20, 0), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 30, MS_SILENT, MZ_SMALL), 0, 0,
|
|
M1_TUNNEL | M1_ANIMAL | M1_NOHANDS | M1_METALLIVORE,
|
|
M2_HOSTILE | M2_GREEDY | M2_JEWELS | M2_COLLECT, M3_INFRAVISIBLE,
|
|
4, CLR_GRAY, ROCK_MOLE),
|
|
MON(NAM("woodchuck"), S_RODENT,
|
|
LVL(3, 3, 0, 20, 0), (G_NOGEN | G_GENO),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 30, MS_SILENT, MZ_SMALL), 0, 0,
|
|
M1_TUNNEL /*LOGGING*/ | M1_ANIMAL | M1_NOHANDS | M1_SWIM
|
|
| M1_HERBIVORE,
|
|
/* In reality, they tunnel instead of cutting lumber. Oh, well. */
|
|
M2_WANDER | M2_HOSTILE, M3_INFRAVISIBLE,
|
|
4, CLR_BROWN, WOODCHUCK),
|
|
/*
|
|
* spiders & scorpions (keep webmaker() in sync if new critters are added)
|
|
*/
|
|
MON(NAM("cave spider"), S_SPIDER,
|
|
LVL(1, 12, 3, 0, 0), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 2),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 50, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
|
|
M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
|
|
M2_HOSTILE, 0,
|
|
3, CLR_GRAY, CAVE_SPIDER),
|
|
MON(NAM("centipede"), S_SPIDER,
|
|
LVL(2, 4, 3, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_DRST, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 50, MS_SILENT, MZ_TINY), MR_POISON, MR_POISON,
|
|
M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
|
|
M2_HOSTILE, 0,
|
|
4, CLR_YELLOW, CENTIPEDE),
|
|
MON(NAM("giant spider"), S_SPIDER,
|
|
LVL(5, 15, 4, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_DRST, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 100, MS_SILENT, MZ_LARGE), MR_POISON, MR_POISON,
|
|
M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG, 0,
|
|
7, CLR_MAGENTA, GIANT_SPIDER),
|
|
MON(NAM("scorpion"), S_SPIDER,
|
|
LVL(5, 15, 3, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 2), ATTK(AT_CLAW, AD_PHYS, 1, 2),
|
|
ATTK(AT_STNG, AD_DRST, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 100, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
|
|
M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE, 0,
|
|
8, CLR_RED, SCORPION),
|
|
/*
|
|
* trappers, lurkers, &c
|
|
* Note: prior to 3.7, these were defined to do AD_DGST damage,
|
|
* but they don't swallow their victims into their stomachs and
|
|
* digest, they enfold and crush or suffocate.
|
|
* The Monster Manual states that someone engulfed by a trapper
|
|
* can't use weapons but we do not enforce that.
|
|
*/
|
|
MON(NAM("lurker above"), S_TRAPPER,
|
|
LVL(10, 3, 3, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_ENGL, AD_WRAP, 1, 6), ATTK(AT_ENGL, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(800, 350, MS_SILENT, MZ_HUGE), 0, 0,
|
|
M1_HIDE | M1_FLY | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STALK | M2_STRONG, 0,
|
|
12, CLR_GRAY, LURKER_ABOVE),
|
|
MON(NAM("trapper"), S_TRAPPER,
|
|
LVL(12, 3, 3, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_ENGL, AD_WRAP, 1, 8), ATTK(AT_ENGL, AD_PHYS, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(800, 350, MS_SILENT, MZ_HUGE), 0, 0,
|
|
M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STALK | M2_STRONG, 0,
|
|
14, CLR_GREEN, TRAPPER),
|
|
/*
|
|
* unicorns and horses
|
|
*/
|
|
MON(NAM("pony"), S_UNICORN,
|
|
LVL(3, 16, 6, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_KICK, AD_PHYS, 1, 6), ATTK(AT_BITE, AD_PHYS, 1, 2),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1300, 250, MS_NEIGH, MZ_MEDIUM), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_HERBIVORE,
|
|
M2_WANDER | M2_STRONG | M2_DOMESTIC, M3_INFRAVISIBLE,
|
|
4, CLR_BROWN, PONY),
|
|
MON(NAM("white unicorn"), S_UNICORN,
|
|
LVL(4, 24, 2, 70, 7), (G_GENO | 2),
|
|
A(ATTK(AT_BUTT, AD_PHYS, 1, 12), ATTK(AT_KICK, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1300, 300, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
|
|
M1_NOHANDS | M1_HERBIVORE, M2_WANDER | M2_STRONG | M2_JEWELS,
|
|
M3_INFRAVISIBLE,
|
|
6, CLR_WHITE, WHITE_UNICORN),
|
|
MON(NAM("gray unicorn"), S_UNICORN,
|
|
LVL(4, 24, 2, 70, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BUTT, AD_PHYS, 1, 12), ATTK(AT_KICK, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1300, 300, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
|
|
M1_NOHANDS | M1_HERBIVORE, M2_WANDER | M2_STRONG | M2_JEWELS,
|
|
M3_INFRAVISIBLE,
|
|
6, CLR_GRAY, GRAY_UNICORN),
|
|
MON(NAM("black unicorn"), S_UNICORN,
|
|
LVL(4, 24, 2, 70, -7), (G_GENO | 1),
|
|
A(ATTK(AT_BUTT, AD_PHYS, 1, 12), ATTK(AT_KICK, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1300, 300, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
|
|
M1_NOHANDS | M1_HERBIVORE, M2_WANDER | M2_STRONG | M2_JEWELS,
|
|
M3_INFRAVISIBLE,
|
|
6, CLR_BLACK, BLACK_UNICORN),
|
|
MON(NAM("horse"), S_UNICORN,
|
|
LVL(5, 20, 5, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_KICK, AD_PHYS, 1, 8), ATTK(AT_BITE, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 300, MS_NEIGH, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_HERBIVORE,
|
|
M2_WANDER | M2_STRONG | M2_DOMESTIC, M3_INFRAVISIBLE,
|
|
7, CLR_BROWN, HORSE),
|
|
MON(NAM("warhorse"), S_UNICORN,
|
|
LVL(7, 24, 4, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_KICK, AD_PHYS, 1, 10), ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1800, 350, MS_NEIGH, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_HERBIVORE,
|
|
M2_WANDER | M2_STRONG | M2_DOMESTIC, M3_INFRAVISIBLE,
|
|
9, CLR_BROWN, WARHORSE),
|
|
/*
|
|
* vortices
|
|
*/
|
|
MON(NAM("fog cloud"), S_VORTEX,
|
|
LVL(3, 1, 0, 0, 0), (G_GENO | G_NOCORPSE | 2),
|
|
A(ATTK(AT_ENGL, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_AMORPHOUS | M1_UNSOLID,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
4, CLR_GRAY, FOG_CLOUD),
|
|
MON(NAM("dust vortex"), S_VORTEX,
|
|
LVL(4, 20, 2, 30, 0), (G_GENO | G_NOCORPSE | 2),
|
|
A(ATTK(AT_ENGL, AD_BLND, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
6, CLR_BROWN, DUST_VORTEX),
|
|
MON(NAM("ice vortex"), S_VORTEX,
|
|
LVL(5, 20, 2, 30, 0), (G_NOHELL | G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_ENGL, AD_COLD, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_HUGE),
|
|
MR_COLD | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS,
|
|
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE,
|
|
7, CLR_CYAN, ICE_VORTEX),
|
|
MON(NAM("energy vortex"), S_VORTEX,
|
|
LVL(6, 20, 2, 30, 0), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_ENGL, AD_ELEC, 1, 6), ATTK(AT_ENGL, AD_DREN, 2, 6),
|
|
ATTK(AT_NONE, AD_ELEC, 0, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_HUGE),
|
|
MR_ELEC | MR_SLEEP | MR_DISINT | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_UNSOLID,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
9, HI_ZAP, ENERGY_VORTEX),
|
|
MON(NAM("steam vortex"), S_VORTEX,
|
|
LVL(7, 22, 2, 30, 0), (G_HELL | G_GENO | G_NOCORPSE | 2),
|
|
A(ATTK(AT_ENGL, AD_FIRE, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_HUGE),
|
|
MR_FIRE | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_UNSOLID,
|
|
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE,
|
|
9, CLR_BLUE, STEAM_VORTEX),
|
|
MON(NAM("fire vortex"), S_VORTEX,
|
|
LVL(8, 22, 2, 30, 0), (G_HELL | G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_ENGL, AD_FIRE, 1, 10), ATTK(AT_NONE, AD_FIRE, 0, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_HUGE),
|
|
MR_FIRE | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_UNSOLID,
|
|
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE,
|
|
10, CLR_YELLOW, FIRE_VORTEX),
|
|
/*
|
|
* worms
|
|
*/
|
|
MON(NAM("baby long worm"), S_WORM,
|
|
LVL(5, 3, 5, 0, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 250, MS_SILENT, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_CARNIVORE | M1_NOTAKE,
|
|
M2_HOSTILE, 0,
|
|
6, CLR_BROWN, BABY_LONG_WORM),
|
|
MON(NAM("baby purple worm"), S_WORM,
|
|
LVL(8, 3, 5, 0, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 250, MS_SILENT, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_CARNIVORE, M2_HOSTILE, 0,
|
|
9, CLR_MAGENTA, BABY_PURPLE_WORM),
|
|
MON(NAM("long worm"), S_WORM,
|
|
LVL(9, 3, 5, 10, 0), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_SILENT, MZ_GIGANTIC), 0, 0,
|
|
M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_OVIPAROUS | M1_CARNIVORE
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY, 0,
|
|
10, CLR_BROWN, LONG_WORM),
|
|
MON(NAM("purple worm"), S_WORM,
|
|
LVL(15, 9, 6, 20, 0), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 8), ATTK(AT_ENGL, AD_DGST, 1, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2700, 700, MS_SILENT, MZ_GIGANTIC), 0, 0,
|
|
M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_OVIPAROUS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY, 0,
|
|
17, CLR_MAGENTA, PURPLE_WORM),
|
|
/*
|
|
* xan, &c
|
|
*/
|
|
MON(NAM("grid bug"), S_XAN,
|
|
LVL(0, 12, 9, 0, 0), (G_GENO | G_SGROUP | G_NOCORPSE | 3),
|
|
A(ATTK(AT_BITE, AD_ELEC, 1, 1),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(15, 10, MS_BUZZ, MZ_TINY), MR_ELEC | MR_POISON, 0,
|
|
M1_ANIMAL | M1_NOHANDS,
|
|
M2_HOSTILE, M3_INFRAVISIBLE,
|
|
1, CLR_MAGENTA, GRID_BUG),
|
|
MON(NAM("xan"), S_XAN,
|
|
LVL(7, 18, -4, 0, 0), (G_GENO | 3),
|
|
A(ATTK(AT_STNG, AD_LEGS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(300, 300, MS_BUZZ, MZ_TINY), MR_POISON, MR_POISON,
|
|
M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_POIS, M2_HOSTILE,
|
|
M3_INFRAVISIBLE,
|
|
9, CLR_RED, XAN),
|
|
/*
|
|
* lights
|
|
*/
|
|
/* yellow light is visible and its suicidal explosion causes blindness */
|
|
MON(NAM("yellow light"), S_LIGHT,
|
|
LVL(3, 15, 0, 0, 0), (G_NOCORPSE | G_GENO | 4),
|
|
A(ATTK(AT_EXPL, AD_BLND, 10, 20),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_SMALL),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_DISINT | MR_SLEEP | MR_POISON
|
|
| MR_ACID | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS
|
|
| M1_NOHEAD | M1_MINDLESS | M1_UNSOLID | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE,
|
|
5, CLR_YELLOW, YELLOW_LIGHT),
|
|
/* black light is invisible and causes hallucination */
|
|
MON(NAM("black light"), S_LIGHT,
|
|
LVL(5, 15, 0, 0, 0), (G_NOCORPSE | G_GENO | 2),
|
|
A(ATTK(AT_EXPL, AD_HALU, 10, 12),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_SMALL),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_DISINT | MR_SLEEP | MR_POISON
|
|
| MR_ACID | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS
|
|
| M1_NOHEAD | M1_MINDLESS | M1_UNSOLID | M1_SEE_INVIS | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
7, CLR_BLACK, BLACK_LIGHT),
|
|
/*
|
|
* zruty
|
|
*/
|
|
MON(NAM("zruty"), S_ZRUTY,
|
|
LVL(9, 8, 3, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_CLAW, AD_PHYS, 3, 4),
|
|
ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 600, MS_SILENT, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE, M2_HOSTILE | M2_STRONG,
|
|
M3_INFRAVISIBLE,
|
|
11, CLR_BROWN, ZRUTY),
|
|
/*
|
|
* Angels and other lawful minions
|
|
*/
|
|
MON(NAM("couatl"), S_ANGEL,
|
|
LVL(8, 10, 5, 30, 7), (G_NOHELL | G_SGROUP | G_NOCORPSE | 1),
|
|
A(ATTK(AT_BITE, AD_DRST, 2, 4), ATTK(AT_BITE, AD_PHYS, 1, 3),
|
|
ATTK(AT_HUGS, AD_WRAP, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(900, 400, MS_HISS, MZ_LARGE), MR_POISON, 0,
|
|
M1_FLY | M1_NOHANDS | M1_SLITHY | M1_POIS,
|
|
M2_MINION | M2_STALK | M2_STRONG | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
11, CLR_GREEN, COUATL),
|
|
MON(NAM("Aleax"), S_ANGEL,
|
|
LVL(10, 8, 0, 30, 7), (G_NOHELL | G_NOCORPSE | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
ATTK(AT_KICK, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_IMITATE, MZ_HUMAN),
|
|
MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
|
|
M1_HUMANOID | M1_SEE_INVIS,
|
|
M2_MINION | M2_STALK | M2_NASTY | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
12, CLR_YELLOW, ALEAX),
|
|
/* Angels start with the emin extension attached, and usually have
|
|
the isminion flag set; however, non-minion Angels can be tamed
|
|
and will switch to edog (guardian Angel is handled specially and
|
|
always sticks with emin) */
|
|
MON(NAM("Angel"), S_ANGEL,
|
|
LVL(14, 10, -4, 55, 12), (G_NOHELL | G_NOCORPSE | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_MAGC, AD_MAGM, 2, 6),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_CUSS, MZ_HUMAN),
|
|
MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
|
|
M1_FLY | M1_HUMANOID | M1_SEE_INVIS,
|
|
M2_NOPOLY | M2_MINION | M2_STALK | M2_STRONG | M2_NASTY | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
19, CLR_WHITE, ANGEL),
|
|
/* the AD&D Monster Manual depicts ki-rin as very similar to unicorns
|
|
except that they fly (without wings) and can cast spells; nethack's
|
|
ki-rin doesn't leave its horn when killed, but it can use the horn
|
|
while alive to cure itself of various maladies */
|
|
MON(NAM("ki-rin"), S_ANGEL,
|
|
LVL(16, 18, -5, 90, 15), (G_NOHELL | G_NOCORPSE | 1),
|
|
A(ATTK(AT_KICK, AD_PHYS, 2, 4), ATTK(AT_KICK, AD_PHYS, 2, 4),
|
|
ATTK(AT_BUTT, AD_PHYS, 3, 6), ATTK(AT_MAGC, AD_SPEL, 2, 6),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SPELL, MZ_LARGE), MR_POISON, 0,
|
|
M1_FLY | M1_NOHANDS | M1_SEE_INVIS,
|
|
M2_NOPOLY | M2_MINION | M2_STALK | M2_STRONG | M2_NASTY | M2_LORD,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
21, HI_GOLD, KI_RIN),
|
|
MON(NAM("Archon"), S_ANGEL,
|
|
LVL(19, 16, -6, 80, 15), (G_NOHELL | G_NOCORPSE | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
ATTK(AT_GAZE, AD_BLND, 2, 6), ATTK(AT_CLAW, AD_PHYS, 1, 8),
|
|
ATTK(AT_MAGC, AD_SPEL, 4, 6), NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_CUSS, MZ_LARGE),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
|
|
M1_FLY | M1_HUMANOID | M1_SEE_INVIS | M1_REGEN,
|
|
M2_NOPOLY | M2_MINION | M2_STALK | M2_STRONG | M2_NASTY | M2_LORD
|
|
| M2_COLLECT | M2_MAGIC,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
26, HI_LORD, ARCHON),
|
|
/*
|
|
* Bats and birds
|
|
*/
|
|
MON(NAM("bat"), S_BAT,
|
|
LVL(0, 22, 8, 0, 0), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(20, 20, MS_SQEEK, MZ_TINY), 0, 0,
|
|
M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_WANDER,
|
|
M3_INFRAVISIBLE, 2, CLR_BROWN, BAT),
|
|
MON(NAM("giant bat"), S_BAT,
|
|
LVL(2, 22, 7, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 30, MS_SQEEK, MZ_SMALL), 0, 0,
|
|
M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_WANDER | M2_HOSTILE, M3_INFRAVISIBLE,
|
|
3, CLR_RED, GIANT_BAT),
|
|
MON(NAM("raven"), S_BAT,
|
|
LVL(4, 20, 6, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_BLND, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(40, 20, MS_SQAWK, MZ_SMALL), 0, 0,
|
|
M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
|
|
M2_WANDER | M2_HOSTILE, M3_INFRAVISIBLE, 6, CLR_BLACK, RAVEN),
|
|
MON(NAM("vampire bat"), S_BAT, LVL(5, 20, 6, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6), ATTK(AT_BITE, AD_DRST, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 20, MS_SQEEK, MZ_SMALL), MR_SLEEP | MR_POISON, 0,
|
|
M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_REGEN | M1_OMNIVORE,
|
|
M2_HOSTILE, M3_INFRAVISIBLE,
|
|
7, CLR_BLACK, VAMPIRE_BAT),
|
|
/*
|
|
* Centaurs
|
|
*/
|
|
MON(NAM("plains centaur"), S_CENTAUR,
|
|
LVL(4, 18, 4, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_KICK, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2500, 500, MS_HUMANOID, MZ_LARGE), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_STRONG | M2_GREEDY | M2_COLLECT,
|
|
M3_INFRAVISIBLE, 6, CLR_BROWN, PLAINS_CENTAUR),
|
|
MON(NAM("forest centaur"), S_CENTAUR,
|
|
LVL(5, 18, 3, 10, -1), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_KICK, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2550, 600, MS_HUMANOID, MZ_LARGE), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_STRONG | M2_GREEDY | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
8, CLR_GREEN, FOREST_CENTAUR),
|
|
MON(NAM("mountain centaur"), S_CENTAUR,
|
|
LVL(6, 20, 2, 10, -3), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 10), ATTK(AT_KICK, AD_PHYS, 1, 6),
|
|
ATTK(AT_KICK, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2550, 500, MS_HUMANOID, MZ_LARGE), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_STRONG | M2_GREEDY | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
9, CLR_CYAN, MOUNTAIN_CENTAUR),
|
|
/*
|
|
* Dragons
|
|
*/
|
|
/* The order of the dragons is VERY IMPORTANT. Quite a few
|
|
* pieces of code depend on gray being first and yellow being last.
|
|
* The code also depends on the *order* being the same as that for
|
|
* dragon scale mail and dragon scales in objects.c. [Also,
|
|
* 'tilemap' assumes that shimmering dragon follows silver dragon.]
|
|
*
|
|
* Adult dragons are all lawful or chaotic; baby dragons are all
|
|
* neutral. This affects monster generation on some special levels.
|
|
* Baby dragons cannot confer intrinsics, to avoid polyself/egg abuse.
|
|
*
|
|
* As reptiles, dragons are cold-blooded and thus aren't seen with
|
|
* infravision. Red and gold dragons (also Chromatic Dragon) are
|
|
* the exceptions because they breathe fire.
|
|
*/
|
|
MON(NAM("baby gray dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
|
|
13, CLR_GRAY, BABY_GRAY_DRAGON),
|
|
MON(NAM("baby gold dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, M3_INFRAVISIBLE,
|
|
13, HI_GOLD, BABY_GOLD_DRAGON),
|
|
MON(NAM("baby silver dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
|
|
13, DRAGON_SILVER, BABY_SILVER_DRAGON),
|
|
#if 0 /* DEFERRED */
|
|
/* [see "shimmering dragon" below] */
|
|
MON(NAM("baby shimmering dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
|
|
13, CLR_CYAN, BABY_SHIMMERING_DRAGON),
|
|
#endif
|
|
MON(NAM("baby red dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_FIRE, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, M3_INFRAVISIBLE,
|
|
13, CLR_RED, BABY_RED_DRAGON),
|
|
MON(NAM("baby white dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_COLD, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
|
|
13, CLR_WHITE, BABY_WHITE_DRAGON),
|
|
MON(NAM("baby orange dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_SLEEP, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
|
|
13, CLR_ORANGE, BABY_ORANGE_DRAGON),
|
|
MON(NAM("baby black dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_DISINT, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
|
|
13, CLR_BLACK, BABY_BLACK_DRAGON),
|
|
MON(NAM("baby blue dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_ELEC, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
|
|
13, CLR_BLUE, BABY_BLUE_DRAGON),
|
|
MON(NAM("baby green dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_POISON, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_POIS,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
|
|
13, CLR_GREEN, BABY_GREEN_DRAGON),
|
|
MON(NAM("baby yellow dragon"), S_DRAGON,
|
|
LVL(12, 9, 2, 10, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_ROAR, MZ_HUGE), MR_ACID | MR_STONE, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_ACID,
|
|
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0,
|
|
13, CLR_YELLOW, BABY_YELLOW_DRAGON),
|
|
MON(NAM("gray dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, 4), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_MAGM, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), 0, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
0,
|
|
20, CLR_GRAY, GRAY_DRAGON),
|
|
/* gold dragon can be seen via infravision but doesn't have infravision */
|
|
MON(NAM("gold dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, 4), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_FIRE, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_FIRE, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
M3_INFRAVISIBLE,
|
|
20, HI_GOLD, GOLD_DRAGON),
|
|
MON(NAM("silver dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, 4), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_COLD, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_COLD, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
0,
|
|
20, DRAGON_SILVER, SILVER_DRAGON),
|
|
#if 0 /* DEFERRED */
|
|
/* shimmering scales/scale-mail would confer displacement when worn by
|
|
the hero, so shimmering dragon ought to be displaced (hero who can
|
|
see one might misjudge its location) but monster displacement hasn't
|
|
been implemented so we don't include it */
|
|
MON(NAM("shimmering dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, 4), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_MAGM, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), 0, 0,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
0,
|
|
20, CLR_CYAN, SHIMMERING_DRAGON),
|
|
#endif
|
|
/* red dragon has infravision and can be seen via infravision */
|
|
MON(NAM("red dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, -4), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_FIRE, 6, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_FIRE, MR_FIRE,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
20, CLR_RED, RED_DRAGON),
|
|
MON(NAM("white dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, -5), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_COLD, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_COLD, MR_COLD,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
0,
|
|
20, CLR_WHITE, WHITE_DRAGON),
|
|
MON(NAM("orange dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, 5), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_SLEE, 4, 25), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_SLEEP, MR_SLEEP,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
0,
|
|
20, CLR_ORANGE, ORANGE_DRAGON),
|
|
/* disintegration breath is actually all or nothing, not 1d255 */
|
|
MON(NAM("black dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, -6), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_DISN, 1, 255), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_DISINT, MR_DISINT,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
0,
|
|
20, CLR_BLACK, BLACK_DRAGON),
|
|
MON(NAM("blue dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, -7), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_ELEC, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_ELEC, MR_ELEC,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
0,
|
|
20, CLR_BLUE, BLUE_DRAGON),
|
|
MON(NAM("green dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, 6), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_DRST, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_POISON, MR_POISON,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
|
|
| M1_CARNIVORE | M1_POIS,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
0,
|
|
20, CLR_GREEN, GREEN_DRAGON),
|
|
MON(NAM("yellow dragon"), S_DRAGON,
|
|
LVL(15, 9, -1, 20, 7), (G_GENO | 1),
|
|
A(ATTK(AT_BREA, AD_ACID, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC),
|
|
MR_ACID | MR_STONE, MR_ACID | MR_STONE,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS
|
|
| M1_OVIPAROUS | M1_CARNIVORE | M1_ACID,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
0,
|
|
20, CLR_YELLOW, YELLOW_DRAGON),
|
|
/*
|
|
* Elementals
|
|
*/
|
|
MON(NAM("stalker"), S_ELEMENTAL,
|
|
LVL(8, 12, 3, 0, 0), (G_GENO | 3),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 4, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(900, 400, MS_SILENT, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_FLY | M1_SEE_INVIS,
|
|
M2_WANDER | M2_STALK | M2_HOSTILE | M2_STRONG, M3_INFRAVISION,
|
|
9, CLR_WHITE, STALKER),
|
|
MON(NAM("air elemental"), S_ELEMENTAL,
|
|
LVL(8, 36, 2, 30, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_ENGL, AD_PHYS, 1, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_POISON | MR_STONE, 0,
|
|
M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_BREATHLESS
|
|
| M1_UNSOLID | M1_FLY,
|
|
M2_STRONG | M2_NEUTER, 0,
|
|
10, CLR_CYAN, AIR_ELEMENTAL),
|
|
MON(NAM("fire elemental"), S_ELEMENTAL,
|
|
LVL(8, 12, 2, 30, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_FIRE, 3, 6), ATTK(AT_NONE, AD_FIRE, 0, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_FIRE | MR_POISON | MR_STONE, 0,
|
|
M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_BREATHLESS
|
|
| M1_UNSOLID | M1_FLY | M1_NOTAKE,
|
|
M2_STRONG | M2_NEUTER, M3_INFRAVISIBLE,
|
|
10, CLR_YELLOW, FIRE_ELEMENTAL),
|
|
MON(NAM("earth elemental"), S_ELEMENTAL,
|
|
LVL(8, 6, 2, 30, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 4, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2500, 0, MS_SILENT, MZ_HUGE),
|
|
MR_FIRE | MR_COLD | MR_POISON | MR_STONE, 0,
|
|
M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_BREATHLESS
|
|
| M1_WALLWALK | M1_THICK_HIDE,
|
|
M2_STRONG | M2_NEUTER, 0,
|
|
10, CLR_BROWN, EARTH_ELEMENTAL),
|
|
MON(NAM("water elemental"), S_ELEMENTAL,
|
|
LVL(8, 6, 2, 30, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 5, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2500, 0, MS_SILENT, MZ_HUGE), MR_POISON | MR_STONE, 0,
|
|
M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_BREATHLESS
|
|
| M1_UNSOLID | M1_AMPHIBIOUS | M1_SWIM,
|
|
M2_STRONG | M2_NEUTER, 0,
|
|
10, CLR_BLUE, WATER_ELEMENTAL),
|
|
/*
|
|
* Fungi
|
|
*/
|
|
MON(NAM("lichen"), S_FUNGUS,
|
|
LVL(0, 1, 9, 0, 0), (G_GENO | 4),
|
|
A(ATTK(AT_TUCH, AD_STCK, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(20, 200, MS_SILENT, MZ_SMALL), 0, 0,
|
|
M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
1, CLR_BRIGHT_GREEN, LICHEN),
|
|
MON(NAM("brown mold"), S_FUNGUS,
|
|
LVL(1, 0, 9, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_NONE, AD_COLD, 0, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 30, MS_SILENT, MZ_SMALL), MR_COLD | MR_POISON,
|
|
MR_COLD | MR_POISON, M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS
|
|
| M1_NOHEAD | M1_MINDLESS | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
2, CLR_BROWN, BROWN_MOLD),
|
|
MON(NAM("yellow mold"), S_FUNGUS,
|
|
LVL(1, 0, 9, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_NONE, AD_STUN, 0, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 30, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
|
|
M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
|
|
| M1_POIS | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
2, CLR_YELLOW, YELLOW_MOLD),
|
|
MON(NAM("green mold"), S_FUNGUS,
|
|
LVL(1, 0, 9, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_NONE, AD_ACID, 0, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 30, MS_SILENT, MZ_SMALL),
|
|
MR_ACID | MR_STONE, MR_ACID | MR_STONE,
|
|
M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
|
|
| M1_ACID | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
2, CLR_GREEN, GREEN_MOLD),
|
|
MON(NAM("red mold"), S_FUNGUS,
|
|
LVL(1, 0, 9, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_NONE, AD_FIRE, 0, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 30, MS_SILENT, MZ_SMALL), MR_FIRE | MR_POISON,
|
|
MR_FIRE | MR_POISON, M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS
|
|
| M1_NOHEAD | M1_MINDLESS | M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE,
|
|
2, CLR_RED, RED_MOLD),
|
|
MON(NAM("shrieker"), S_FUNGUS,
|
|
LVL(3, 1, 7, 0, 0), (G_GENO | 1),
|
|
A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(100, 100, MS_SHRIEK, MZ_SMALL), MR_POISON, MR_POISON,
|
|
M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
2, CLR_MAGENTA, SHRIEKER),
|
|
MON(NAM("violet fungus"), S_FUNGUS,
|
|
LVL(3, 1, 7, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_TUCH, AD_PHYS, 1, 4), ATTK(AT_TUCH, AD_STCK, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(100, 100, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
|
|
M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS
|
|
| M1_NOTAKE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
5, CLR_MAGENTA, VIOLET_FUNGUS),
|
|
/*
|
|
* Gnomes
|
|
* Unlike plain human|elf|orc, plain "gnome" is an ordinary monster.
|
|
*/
|
|
MON(NAM("gnome"), S_GNOME,
|
|
LVL(1, 6, 10, 4, 0), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(650, 100, MS_ORC, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
|
|
M2_GNOME | M2_COLLECT, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
3, CLR_BROWN, GNOME),
|
|
MON(NAMS("gnome lord", "gnome lady", "gnome leader"),
|
|
S_GNOME, LVL(3, 8, 10, 4, 0), (G_GENO | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(700, 120, MS_ORC, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
|
|
M2_GNOME | M2_LORD | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION, 4, CLR_BLUE, GNOME_LEADER),
|
|
MON(NAM("gnomish wizard"), S_GNOME,
|
|
LVL(3, 10, 4, 10, 0), (G_GENO | 1),
|
|
A(ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(700, 120, MS_ORC, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
|
|
M2_GNOME | M2_MAGIC, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
5, HI_ZAP, GNOMISH_WIZARD),
|
|
MON(NAMS("gnome king", "gnome queen", "gnome ruler"),
|
|
S_GNOME, LVL(5, 10, 10, 20, 0), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(750, 150, MS_ORC, MZ_SMALL), 0, 0, M1_HUMANOID | M1_OMNIVORE,
|
|
M2_GNOME | M2_PRINCE | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
6, HI_LORD, GNOME_RULER),
|
|
/*
|
|
* giant Humanoids
|
|
*/
|
|
/* plain giant is a placeholder for zombie and mummy corpses */
|
|
MON(NAM("giant"), S_GIANT,
|
|
LVL(6, 6, 0, 0, 2), (G_GENO | G_NOGEN | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2250, 750, MS_BOAST, MZ_HUGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
|
|
M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY | M2_COLLECT
|
|
| M2_JEWELS,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION, 8, CLR_RED, GIANT),
|
|
MON(NAM("stone giant"), S_GIANT,
|
|
LVL(6, 6, 0, 0, 2), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2250, 750, MS_BOAST, MZ_HUGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
|
|
M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY | M2_COLLECT
|
|
| M2_JEWELS,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
8, CLR_GRAY, STONE_GIANT),
|
|
MON(NAM("hill giant"), S_GIANT,
|
|
LVL(8, 10, 6, 0, -2), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2200, 700, MS_BOAST, MZ_HUGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
|
|
M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY | M2_COLLECT
|
|
| M2_JEWELS,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
10, CLR_CYAN, HILL_GIANT),
|
|
MON(NAM("fire giant"), S_GIANT,
|
|
LVL(9, 12, 4, 5, 2), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2250, 750, MS_BOAST, MZ_HUGE), MR_FIRE, MR_FIRE,
|
|
M1_HUMANOID | M1_CARNIVORE, M2_GIANT | M2_STRONG | M2_ROCKTHROW
|
|
| M2_NASTY | M2_COLLECT | M2_JEWELS,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
11, CLR_YELLOW, FIRE_GIANT),
|
|
MON(NAM("frost giant"), S_GIANT,
|
|
LVL(10, 12, 3, 10, -3), (G_NOHELL | G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 12),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2250, 750, MS_BOAST, MZ_HUGE), MR_COLD, MR_COLD,
|
|
M1_HUMANOID | M1_CARNIVORE, M2_GIANT | M2_STRONG | M2_ROCKTHROW
|
|
| M2_NASTY | M2_COLLECT | M2_JEWELS,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
13, CLR_WHITE, FROST_GIANT),
|
|
/* ettin is a two-headed giant but its corpse doesn't confer strength */
|
|
MON(NAM("ettin"), S_GIANT,
|
|
LVL(10, 12, 3, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_WEAP, AD_PHYS, 3, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1700, 500, MS_GRUNT, MZ_HUGE), 0, 0,
|
|
M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
13, CLR_BROWN, ETTIN),
|
|
MON(NAM("storm giant"), S_GIANT,
|
|
LVL(16, 12, 3, 10, -3), (G_GENO | G_SGROUP | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 12),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2250, 750, MS_BOAST, MZ_HUGE), MR_ELEC, MR_ELEC,
|
|
M1_HUMANOID | M1_CARNIVORE, M2_GIANT | M2_STRONG | M2_ROCKTHROW
|
|
| M2_NASTY | M2_COLLECT | M2_JEWELS,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
19, CLR_BLUE, STORM_GIANT),
|
|
MON(NAM("titan"), S_GIANT,
|
|
LVL(16, 18, -3, 70, 9), (1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2300, 900, MS_SPELL, MZ_HUGE), 0, 0,
|
|
M1_FLY | M1_HUMANOID | M1_OMNIVORE,
|
|
M2_STRONG | M2_ROCKTHROW | M2_NASTY | M2_COLLECT | M2_MAGIC,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
20, CLR_MAGENTA, TITAN),
|
|
MON(NAM("minotaur"), S_GIANT,
|
|
LVL(15, 15, 6, 0, 0), (G_GENO | G_NOGEN),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 10), ATTK(AT_CLAW, AD_PHYS, 3, 10),
|
|
ATTK(AT_BUTT, AD_PHYS, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 700, MS_MOO, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
17, CLR_BROWN, MINOTAUR),
|
|
/*
|
|
* Invisible
|
|
* S_invisible=='I' is a visual marker for all invisible monsters
|
|
* and must be not be used for any specific monster types. Long
|
|
* time 'invisible stalker' was changed to 'stalker', an Elemental.
|
|
*/
|
|
|
|
/*
|
|
* Jabberwock
|
|
*/
|
|
/* the illustration from _Through_the_Looking_Glass_
|
|
depicts hands as well as wings */
|
|
MON(NAM("jabberwock"), S_JABBERWOCK,
|
|
LVL(15, 12, -2, 50, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 10), ATTK(AT_BITE, AD_PHYS, 2, 10),
|
|
ATTK(AT_CLAW, AD_PHYS, 2, 10), ATTK(AT_CLAW, AD_PHYS, 2, 10),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(1300, 600, MS_BURBLE, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_FLY | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT, M3_INFRAVISIBLE,
|
|
18, CLR_ORANGE, JABBERWOCK),
|
|
#if 0 /* DEFERRED */
|
|
MON(NAM("vorpal jabberwock"), S_JABBERWOCK,
|
|
LVL(20, 12, -2, 50, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 3, 10), ATTK(AT_BITE, AD_PHYS, 3, 10),
|
|
ATTK(AT_CLAW, AD_PHYS, 3, 10), ATTK(AT_CLAW, AD_PHYS, 3, 10),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(1300, 600, MS_BURBLE, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_FLY | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT, M3_INFRAVISIBLE,
|
|
25, HI_LORD, VORPAL_JABBERWOCK),
|
|
#endif
|
|
/*
|
|
* Kops
|
|
*/
|
|
MON(NAM("Keystone Kop"), S_KOP,
|
|
LVL(1, 6, 10, 10, 9), (G_GENO | G_LGROUP | G_NOGEN),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
|
|
M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_MALE | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
3, CLR_BLUE, KEYSTONE_KOP),
|
|
MON(NAM("Kop Sergeant"), S_KOP,
|
|
LVL(2, 8, 10, 10, 10), (G_GENO | G_SGROUP | G_NOGEN),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
|
|
M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_STRONG | M2_MALE | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
4, CLR_BLUE, KOP_SERGEANT),
|
|
MON(NAM("Kop Lieutenant"), S_KOP,
|
|
LVL(3, 10, 10, 20, 11), (G_GENO | G_NOGEN),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
|
|
M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_STRONG | M2_MALE | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
5, CLR_CYAN, KOP_LIEUTENANT),
|
|
MON(NAM("Kop Kaptain"), S_KOP,
|
|
LVL(4, 12, 10, 20, 12), (G_GENO | G_NOGEN),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 200, MS_ARREST, MZ_HUMAN), 0, 0, M1_HUMANOID,
|
|
M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_STRONG | M2_MALE | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
6, HI_LORD, KOP_KAPTAIN),
|
|
/*
|
|
* Liches
|
|
*/
|
|
MON(NAM("lich"), S_LICH,
|
|
LVL(11, 6, 0, 30, -9), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_TUCH, AD_COLD, 1, 10), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
|
|
MR_COLD, M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
|
|
M2_UNDEAD | M2_HOSTILE | M2_MAGIC, M3_INFRAVISION,
|
|
14, CLR_BROWN, LICH),
|
|
MON(NAM("demilich"), S_LICH,
|
|
LVL(14, 9, -2, 60, -12), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_TUCH, AD_COLD, 3, 4), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
|
|
MR_COLD, M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
|
|
M2_UNDEAD | M2_HOSTILE | M2_MAGIC, M3_INFRAVISION,
|
|
18, CLR_RED, DEMILICH),
|
|
MON(NAM("master lich"), S_LICH,
|
|
LVL(17, 9, -4, 90, -15), (G_HELL | G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_TUCH, AD_COLD, 3, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN),
|
|
MR_FIRE | MR_COLD | MR_SLEEP | MR_POISON, MR_FIRE | MR_COLD,
|
|
M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
|
|
M2_UNDEAD | M2_HOSTILE | M2_MAGIC, M3_WANTSBOOK | M3_INFRAVISION,
|
|
21, HI_LORD, MASTER_LICH),
|
|
MON(NAM("arch-lich"), S_LICH,
|
|
LVL(25, 9, -6, 90, -15), (G_HELL | G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_TUCH, AD_COLD, 5, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 100, MS_MUMBLE, MZ_HUMAN),
|
|
MR_FIRE | MR_COLD | MR_SLEEP | MR_ELEC | MR_POISON, MR_FIRE | MR_COLD,
|
|
M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
|
|
M2_UNDEAD | M2_HOSTILE | M2_MAGIC, M3_WANTSBOOK | M3_INFRAVISION,
|
|
29, HI_LORD, ARCH_LICH),
|
|
/*
|
|
* Mummies
|
|
*/
|
|
MON(NAM("kobold mummy"), S_MUMMY,
|
|
LVL(3, 8, 6, 20, -2), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 50, MS_SILENT, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_HOSTILE, M3_INFRAVISION,
|
|
4, CLR_BROWN, KOBOLD_MUMMY),
|
|
MON(NAM("gnome mummy"), S_MUMMY,
|
|
LVL(4, 10, 6, 20, -3), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(650, 50, MS_SILENT, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_HOSTILE | M2_GNOME, M3_INFRAVISION,
|
|
5, CLR_RED, GNOME_MUMMY),
|
|
MON(NAM("orc mummy"), S_MUMMY,
|
|
LVL(5, 10, 5, 20, -4), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(850, 75, MS_SILENT, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_HOSTILE | M2_STRONG | M2_ORC | M2_GREEDY | M2_JEWELS,
|
|
M3_INFRAVISION,
|
|
6, CLR_GRAY, ORC_MUMMY),
|
|
MON(NAM("dwarf mummy"), S_MUMMY,
|
|
LVL(5, 10, 5, 20, -4), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(900, 150, MS_SILENT, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_HOSTILE | M2_DWARF | M2_GREEDY | M2_JEWELS,
|
|
M3_INFRAVISION,
|
|
6, CLR_RED, DWARF_MUMMY),
|
|
MON(NAM("elf mummy"), S_MUMMY,
|
|
LVL(6, 12, 4, 30, -5), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 175, MS_SILENT, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
|
|
0, M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_HOSTILE | M2_ELF, M3_INFRAVISION,
|
|
7, CLR_GREEN, ELF_MUMMY),
|
|
MON(NAM("human mummy"), S_MUMMY,
|
|
LVL(6, 12, 4, 30, -5), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 200, MS_SILENT, MZ_HUMAN),
|
|
MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_HOSTILE, M3_INFRAVISION,
|
|
7, CLR_GRAY, HUMAN_MUMMY),
|
|
MON(NAM("ettin mummy"), S_MUMMY,
|
|
LVL(7, 12, 4, 30, -6), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1700, 250, MS_SILENT, MZ_HUGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_HOSTILE | M2_STRONG, M3_INFRAVISION,
|
|
8, CLR_BLUE, ETTIN_MUMMY),
|
|
MON(NAM("giant mummy"), S_MUMMY,
|
|
LVL(8, 14, 3, 30, -7), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_CLAW, AD_PHYS, 3, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2050, 375, MS_SILENT, MZ_HUGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_HOSTILE | M2_GIANT | M2_STRONG | M2_JEWELS,
|
|
M3_INFRAVISION,
|
|
10, CLR_CYAN, GIANT_MUMMY),
|
|
/*
|
|
* Nagas
|
|
*/
|
|
MON(NAM("red naga hatchling"), S_NAGA,
|
|
LVL(3, 10, 6, 0, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 100, MS_MUMBLE, MZ_LARGE), MR_FIRE | MR_POISON, MR_POISON,
|
|
M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_NOTAKE | M1_OMNIVORE,
|
|
M2_STRONG, M3_INFRAVISIBLE,
|
|
4, CLR_RED, RED_NAGA_HATCHLING),
|
|
MON(NAM("black naga hatchling"), S_NAGA,
|
|
LVL(3, 10, 6, 0, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 100, MS_MUMBLE, MZ_LARGE),
|
|
MR_POISON | MR_ACID | MR_STONE, MR_POISON,
|
|
M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_ACID | M1_NOTAKE
|
|
| M1_CARNIVORE,
|
|
M2_STRONG, 0,
|
|
4, CLR_BLACK, BLACK_NAGA_HATCHLING),
|
|
MON(NAM("golden naga hatchling"), S_NAGA,
|
|
LVL(3, 10, 6, 0, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 100, MS_MUMBLE, MZ_LARGE), MR_POISON, MR_POISON,
|
|
M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_NOTAKE | M1_OMNIVORE,
|
|
M2_STRONG, 0,
|
|
4, HI_GOLD, GOLDEN_NAGA_HATCHLING),
|
|
MON(NAM("guardian naga hatchling"), S_NAGA,
|
|
LVL(3, 10, 6, 0, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 100, MS_MUMBLE, MZ_LARGE), MR_POISON, MR_POISON,
|
|
M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_NOTAKE | M1_OMNIVORE,
|
|
M2_STRONG, 0,
|
|
4, CLR_GREEN, GUARDIAN_NAGA_HATCHLING),
|
|
MON(NAM("red naga"), S_NAGA,
|
|
LVL(6, 12, 4, 0, -4), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_BREA, AD_FIRE, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2600, 400, MS_MUMBLE, MZ_HUGE), MR_FIRE | MR_POISON,
|
|
MR_FIRE | MR_POISON, M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE
|
|
| M1_OVIPAROUS | M1_NOTAKE | M1_OMNIVORE,
|
|
M2_STRONG, M3_INFRAVISIBLE,
|
|
8, CLR_RED, RED_NAGA),
|
|
MON(NAM("black naga"), S_NAGA,
|
|
LVL(8, 14, 2, 10, 4), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_SPIT, AD_ACID, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2600, 400, MS_MUMBLE, MZ_HUGE),
|
|
MR_POISON | MR_ACID | MR_STONE, MR_POISON | MR_ACID | MR_STONE,
|
|
M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_OVIPAROUS | M1_ACID
|
|
| M1_NOTAKE | M1_CARNIVORE,
|
|
M2_STRONG, 0,
|
|
10, CLR_BLACK, BLACK_NAGA),
|
|
MON(NAM("golden naga"), S_NAGA,
|
|
LVL(10, 14, 2, 70, 5), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_MAGC, AD_SPEL, 4, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2600, 400, MS_MUMBLE, MZ_HUGE), MR_POISON, MR_POISON,
|
|
M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_OVIPAROUS | M1_NOTAKE
|
|
| M1_OMNIVORE,
|
|
M2_STRONG, 0,
|
|
13, HI_GOLD, GOLDEN_NAGA),
|
|
/* 3.7: guardian naga used to have three attacks: bite, spit, hug
|
|
but in order for the hug to succeed the two preceding attacks had
|
|
to have hit, and it's not possible to both bite and spit, hence
|
|
the hug never hit; change to spit, bite, touch, hug; if the bite
|
|
and touch hit, the hug will too */
|
|
MON(NAM("guardian naga"), S_NAGA,
|
|
LVL(12, 16, 0, 50, 7), (G_GENO | 1),
|
|
A(ATTK(AT_SPIT, AD_DRST, 1, 6), ATTK(AT_BITE, AD_PLYS, 1, 6),
|
|
ATTK(AT_TUCH, AD_PHYS, 0, 0), ATTK(AT_HUGS, AD_WRAP, 2, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(2600, 400, MS_MUMBLE, MZ_HUGE), MR_POISON, MR_POISON,
|
|
M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_OVIPAROUS | M1_POIS
|
|
| M1_NOTAKE | M1_OMNIVORE,
|
|
M2_STRONG, 0,
|
|
17, CLR_GREEN, GUARDIAN_NAGA),
|
|
/*
|
|
* Ogres
|
|
*/
|
|
MON(NAM("ogre"), S_OGRE,
|
|
LVL(5, 10, 5, 0, -3), (G_SGROUP | G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 5),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1600, 500, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
|
|
M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
7, CLR_BROWN, OGRE),
|
|
MON(NAMS("ogre lord", "ogre lady", "ogre leader"), S_OGRE,
|
|
LVL(7, 12, 3, 30, -5), (G_GENO | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1700, 700, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
|
|
M2_STRONG | M2_LORD | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
9, CLR_RED, OGRE_LEADER),
|
|
MON(NAMS("ogre king", "ogre queen", "ogre tyrant"), S_OGRE,
|
|
LVL(9, 14, 4, 60, -7), (G_GENO | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 3, 5),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1700, 750, MS_GRUNT, MZ_LARGE), 0, 0, M1_HUMANOID | M1_CARNIVORE,
|
|
M2_STRONG | M2_PRINCE | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
11, HI_LORD, OGRE_TYRANT),
|
|
/*
|
|
* Puddings
|
|
*
|
|
* must be in the same order as the pudding globs in objects.c
|
|
*/
|
|
MON(NAM("gray ooze"), S_PUDDING,
|
|
LVL(3, 1, 8, 0, 0), (G_GENO | G_NOCORPSE | 2),
|
|
A(ATTK(AT_BITE, AD_RUST, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 250, MS_SILENT, MZ_MEDIUM),
|
|
MR_FIRE | MR_COLD | MR_POISON | MR_ACID | MR_STONE,
|
|
MR_FIRE | MR_COLD | MR_POISON,
|
|
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_OMNIVORE | M1_ACID,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
4, CLR_GRAY, GRAY_OOZE),
|
|
MON(NAM("brown pudding"), S_PUDDING,
|
|
LVL(5, 3, 8, 0, 0), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_BITE, AD_DCAY, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 250, MS_SILENT, MZ_MEDIUM),
|
|
MR_COLD | MR_ELEC | MR_POISON | MR_ACID | MR_STONE,
|
|
MR_COLD | MR_ELEC | MR_POISON,
|
|
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_OMNIVORE | M1_ACID,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
6, CLR_BROWN, BROWN_PUDDING),
|
|
MON(NAM("green slime"), S_PUDDING,
|
|
LVL(6, 6, 6, 0, 0), (G_HELL | G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_TUCH, AD_SLIM, 1, 4), ATTK(AT_NONE, AD_SLIM, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 150, MS_SILENT, MZ_LARGE),
|
|
MR_COLD | MR_ELEC | MR_POISON | MR_ACID | MR_STONE, MR_ACID | MR_STONE,
|
|
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_OMNIVORE | M1_ACID | M1_POIS,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
8, CLR_GREEN, GREEN_SLIME),
|
|
MON(NAM("black pudding"), S_PUDDING,
|
|
LVL(10, 6, 6, 0, 0), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_BITE, AD_CORR, 3, 8), ATTK(AT_NONE, AD_CORR, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(900, 250, MS_SILENT, MZ_LARGE),
|
|
MR_COLD | MR_ELEC | MR_POISON | MR_ACID | MR_STONE,
|
|
MR_COLD | MR_ELEC | MR_POISON,
|
|
M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_MINDLESS | M1_OMNIVORE | M1_ACID,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
12, CLR_BLACK, BLACK_PUDDING),
|
|
/*
|
|
* Quantum mechanics
|
|
*/
|
|
MON(NAM("quantum mechanic"), S_QUANTMECH,
|
|
LVL(7, 12, 3, 10, 0), (G_GENO | 3),
|
|
A(ATTK(AT_CLAW, AD_TLPT, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 20, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE | M1_POIS | M1_TPORT, M2_HOSTILE,
|
|
M3_INFRAVISIBLE,
|
|
9, CLR_CYAN, QUANTUM_MECHANIC),
|
|
/* 3.7: from slash'em, to expand Q class; hit polymorphs target */
|
|
MON(NAM("genetic engineer"), S_QUANTMECH,
|
|
LVL(12, 12, 3, 10, 0), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_POLY, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 20, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE | M1_POIS | M1_TPORT, M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISIBLE,
|
|
14, CLR_GREEN, GENETIC_ENGINEER),
|
|
/*
|
|
* Rust monster or disenchanter
|
|
*/
|
|
MON(NAM("rust monster"), S_RUSTMONST,
|
|
LVL(5, 18, 2, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_TUCH, AD_RUST, 0, 0), ATTK(AT_TUCH, AD_RUST, 0, 0),
|
|
ATTK(AT_NONE, AD_RUST, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1000, 250, MS_SILENT, MZ_MEDIUM), 0, 0,
|
|
M1_SWIM | M1_ANIMAL | M1_NOHANDS | M1_METALLIVORE, M2_HOSTILE,
|
|
M3_INFRAVISIBLE,
|
|
8, CLR_BROWN, RUST_MONSTER),
|
|
MON(NAM("disenchanter"), S_RUSTMONST,
|
|
LVL(12, 12, -10, 0, -3), (G_HELL | G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_ENCH, 4, 4), ATTK(AT_NONE, AD_ENCH, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(750, 200, MS_GROWL, MZ_LARGE), 0, 0, M1_ANIMAL | M1_CARNIVORE,
|
|
M2_HOSTILE, M3_INFRAVISIBLE,
|
|
14, CLR_BLUE, DISENCHANTER),
|
|
/*
|
|
* Snakes
|
|
* Note: in the real world, most snakes are oviparous but some aren't;
|
|
* we treat all of these as if they are.
|
|
*/
|
|
MON(NAM("garter snake"), S_SNAKE,
|
|
LVL(1, 8, 8, 0, 0), (G_LGROUP | G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 2),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(50, 60, MS_HISS, MZ_TINY), 0, 0,
|
|
M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY
|
|
| M1_OVIPAROUS | M1_CARNIVORE | M1_NOTAKE,
|
|
0, 0,
|
|
3, CLR_GREEN, GARTER_SNAKE),
|
|
MON(NAM("snake"), S_SNAKE,
|
|
LVL(4, 15, 3, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_DRST, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(100, 80, MS_HISS, MZ_SMALL), MR_POISON, MR_POISON,
|
|
M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_POIS
|
|
| M1_OVIPAROUS | M1_CARNIVORE | M1_NOTAKE,
|
|
M2_HOSTILE, 0,
|
|
6, CLR_BROWN, SNAKE),
|
|
MON(NAM("water moccasin"), S_SNAKE,
|
|
LVL(4, 15, 3, 0, 0), (G_GENO | G_NOGEN | G_LGROUP),
|
|
A(ATTK(AT_BITE, AD_DRST, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(150, 80, MS_HISS, MZ_SMALL), MR_POISON, MR_POISON,
|
|
M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_POIS
|
|
| M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
|
|
M2_HOSTILE, 0,
|
|
7, CLR_RED, WATER_MOCCASIN),
|
|
MON(NAM("python"), S_SNAKE,
|
|
LVL(6, 3, 5, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4), ATTK(AT_TUCH, AD_PHYS, 0, 0),
|
|
ATTK(AT_HUGS, AD_WRAP, 1, 4), ATTK(AT_HUGS, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(250, 100, MS_HISS, MZ_LARGE), 0, 0,
|
|
M1_SWIM | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_CARNIVORE
|
|
| M1_OVIPAROUS | M1_NOTAKE,
|
|
M2_HOSTILE | M2_STRONG, M3_INFRAVISION,
|
|
8, CLR_MAGENTA, PYTHON),
|
|
MON(NAM("pit viper"), S_SNAKE,
|
|
LVL(6, 15, 2, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_DRST, 1, 4), ATTK(AT_BITE, AD_DRST, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(100, 60, MS_HISS, MZ_MEDIUM), MR_POISON, MR_POISON,
|
|
M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_POIS
|
|
| M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
|
|
M2_HOSTILE, M3_INFRAVISION,
|
|
9, CLR_BLUE, PIT_VIPER),
|
|
MON(NAM("cobra"), S_SNAKE,
|
|
LVL(6, 18, 2, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_DRST, 2, 4), ATTK(AT_SPIT, AD_BLND, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(250, 100, MS_HISS, MZ_MEDIUM), MR_POISON, MR_POISON,
|
|
M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_POIS
|
|
| M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
|
|
M2_HOSTILE, 0,
|
|
10, CLR_BLUE, COBRA),
|
|
/*
|
|
* Trolls
|
|
*/
|
|
MON(NAM("troll"), S_TROLL,
|
|
LVL(7, 12, 4, 0, -3), (G_GENO | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 2), ATTK(AT_CLAW, AD_PHYS, 4, 2),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(800, 350, MS_GRUNT, MZ_LARGE), 0, 0,
|
|
M1_HUMANOID | M1_REGEN | M1_CARNIVORE,
|
|
M2_STRONG | M2_STALK | M2_HOSTILE, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
9, CLR_BROWN, TROLL),
|
|
MON(NAM("ice troll"), S_TROLL,
|
|
LVL(9, 10, 2, 20, -3), (G_NOHELL | G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_COLD, 2, 6),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1000, 300, MS_GRUNT, MZ_LARGE), MR_COLD, MR_COLD,
|
|
M1_HUMANOID | M1_REGEN | M1_CARNIVORE,
|
|
M2_STRONG | M2_STALK | M2_HOSTILE, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
12, CLR_WHITE, ICE_TROLL),
|
|
MON(NAM("rock troll"), S_TROLL,
|
|
LVL(9, 12, 0, 0, -3), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 2, 8),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 300, MS_GRUNT, MZ_LARGE), 0, 0,
|
|
M1_HUMANOID | M1_REGEN | M1_CARNIVORE,
|
|
M2_STRONG | M2_STALK | M2_HOSTILE | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
12, CLR_CYAN, ROCK_TROLL),
|
|
MON(NAM("water troll"), S_TROLL,
|
|
LVL(11, 14, 4, 40, -3), (G_NOGEN | G_GENO),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 350, MS_GRUNT, MZ_LARGE), 0, 0,
|
|
M1_HUMANOID | M1_REGEN | M1_CARNIVORE | M1_SWIM,
|
|
M2_STRONG | M2_STALK | M2_HOSTILE, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
13, CLR_BLUE, WATER_TROLL),
|
|
MON(NAM("Olog-hai"), S_TROLL,
|
|
LVL(13, 12, -4, 0, -7), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 2, 8),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 400, MS_GRUNT, MZ_LARGE), 0, 0,
|
|
M1_HUMANOID | M1_REGEN | M1_CARNIVORE,
|
|
M2_STRONG | M2_STALK | M2_HOSTILE | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
16, HI_LORD, OLOG_HAI),
|
|
/*
|
|
* Umber hulk
|
|
*/
|
|
MON(NAM("umber hulk"), S_UMBER,
|
|
LVL(9, 6, 2, 25, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_CLAW, AD_PHYS, 3, 4),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 5), ATTK(AT_GAZE, AD_CONF, 0, 0),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 500, MS_SILENT, MZ_LARGE), 0, 0, M1_TUNNEL | M1_CARNIVORE,
|
|
M2_STRONG, M3_INFRAVISIBLE,
|
|
12, CLR_BROWN, UMBER_HULK),
|
|
/*
|
|
* Vampires
|
|
*/
|
|
MON(NAM("vampire"), S_VAMPIRE,
|
|
LVL(10, 12, 1, 25, -8), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_BITE, AD_DRLI, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY
|
|
| M2_SHAPESHIFTER,
|
|
M3_INFRAVISIBLE,
|
|
12, CLR_RED, VAMPIRE),
|
|
MON(NAMS("vampire lord", "vampire lady", "vampire leader"), S_VAMPIRE,
|
|
LVL(12, 14, 0, 50, -9), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 8), ATTK(AT_BITE, AD_DRLI, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_LORD
|
|
| M2_SHAPESHIFTER,
|
|
M3_INFRAVISIBLE,
|
|
14, CLR_BLUE, VAMPIRE_LEADER),
|
|
#if 0 /* DEFERRED */
|
|
MON(NAM("vampire mage"), S_VAMPIRE,
|
|
LVL(20, 14, -4, 50, -9), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_DRLI, 2, 8), ATTK(AT_BITE, AD_DRLI, 1, 8),
|
|
ATTK(AT_MAGC, AD_SPEL, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_LORD
|
|
| M2_MALE | M2_MAGIC | M2_SHAPESHIFTER,
|
|
M3_INFRAVISIBLE,
|
|
26, HI_ZAP, VAMPIRE_MAGE),
|
|
#endif
|
|
MON(NAM("Vlad the Impaler"), S_VAMPIRE,
|
|
LVL(28, 26, -6, 80, -10), (G_NOGEN | G_NOCORPSE | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 10), ATTK(AT_BITE, AD_DRLI, 1, 12),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
|
|
M2_NOPOLY | M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG
|
|
| M2_NASTY | M2_PRINCE | M2_MALE | M2_SHAPESHIFTER,
|
|
M3_WAITFORU | M3_WANTSCAND | M3_INFRAVISIBLE,
|
|
32, HI_LORD, VLAD_THE_IMPALER),
|
|
/*
|
|
* Wraiths
|
|
*/
|
|
MON(NAM("barrow wight"), S_WRAITH,
|
|
LVL(3, 12, 5, 5, -3), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_WEAP, AD_DRLI, 0, 0), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_TUCH, AD_COLD, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 0, MS_SPELL, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_HUMANOID,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_COLLECT, 0,
|
|
8, CLR_GRAY, BARROW_WIGHT),
|
|
/* wraiths weigh 0 but can leave corpses */
|
|
MON(NAM("wraith"), S_WRAITH,
|
|
LVL(6, 12, 4, 15, -6), (G_GENO | 2),
|
|
A(ATTK(AT_TUCH, AD_DRLI, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, MS_SILENT, MZ_HUMAN),
|
|
MR_COLD | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_BREATHLESS | M1_FLY | M1_HUMANOID | M1_UNSOLID,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE, 0,
|
|
8, CLR_BLACK, WRAITH),
|
|
MON(NAM("Nazgul"), S_WRAITH,
|
|
LVL(13, 12, 0, 25, -17), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_WEAP, AD_DRLI, 1, 4), ATTK(AT_BREA, AD_SLEE, 2, 25),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 0, MS_SPELL, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
|
|
0, M1_BREATHLESS | M1_HUMANOID | M1_SEE_INVIS,
|
|
M2_NOPOLY | M2_UNDEAD | M2_STALK | M2_STRONG | M2_HOSTILE | M2_MALE
|
|
| M2_COLLECT,
|
|
0, 17, HI_LORD, NAZGUL),
|
|
/*
|
|
* Xorn
|
|
*/
|
|
MON(NAM("xorn"), S_XORN,
|
|
LVL(8, 9, -2, 20, 0), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_BITE, AD_PHYS, 4, 6),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(1200, 700, MS_ROAR, MZ_MEDIUM), MR_FIRE | MR_COLD | MR_STONE,
|
|
MR_STONE,
|
|
M1_BREATHLESS | M1_WALLWALK | M1_THICK_HIDE | M1_METALLIVORE,
|
|
M2_HOSTILE | M2_STRONG, 0,
|
|
11, CLR_BROWN, XORN),
|
|
/*
|
|
* Apelike beasts
|
|
*/
|
|
/* tameable via banana; does not grow up into ape...
|
|
not flagged as domestic, so no guilt penalty for eating non-pet one */
|
|
MON(NAM("monkey"), S_YETI,
|
|
LVL(2, 12, 6, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_BITE, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(100, 50, MS_GROWL, MZ_SMALL), 0, 0,
|
|
M1_ANIMAL | M1_HUMANOID | M1_OMNIVORE, 0, M3_INFRAVISIBLE,
|
|
4, CLR_GRAY, MONKEY),
|
|
MON(NAM("ape"), S_YETI,
|
|
LVL(4, 12, 6, 0, 0), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1100, 500, MS_GROWL, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_HUMANOID | M1_OMNIVORE, M2_STRONG, M3_INFRAVISIBLE,
|
|
6, CLR_BROWN, APE),
|
|
MON(NAM("owlbear"), S_YETI,
|
|
LVL(5, 12, 5, 0, 0), (G_GENO | 3),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
ATTK(AT_HUGS, AD_PHYS, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1700, 700, MS_ROAR, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE,
|
|
M2_HOSTILE | M2_STRONG | M2_NASTY, M3_INFRAVISIBLE,
|
|
7, CLR_BROWN, OWLBEAR),
|
|
MON(NAM("yeti"), S_YETI,
|
|
LVL(5, 15, 6, 0, 0), (G_GENO | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1600, 700, MS_GROWL, MZ_LARGE), MR_COLD, MR_COLD,
|
|
M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE, M2_HOSTILE | M2_STRONG,
|
|
M3_INFRAVISIBLE,
|
|
7, CLR_WHITE, YETI),
|
|
MON(NAM("carnivorous ape"), S_YETI,
|
|
LVL(6, 12, 6, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
ATTK(AT_HUGS, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1250, 550, MS_GROWL, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE, M2_HOSTILE | M2_STRONG,
|
|
M3_INFRAVISIBLE,
|
|
8, CLR_BLACK, CARNIVOROUS_APE),
|
|
MON(NAM("sasquatch"), S_YETI,
|
|
LVL(7, 15, 6, 0, 2), (G_GENO | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
ATTK(AT_KICK, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1550, 750, MS_GROWL, MZ_LARGE), 0, 0,
|
|
M1_ANIMAL | M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE, M2_STRONG,
|
|
M3_INFRAVISIBLE,
|
|
9, CLR_GRAY, SASQUATCH),
|
|
/*
|
|
* Zombies
|
|
*/
|
|
MON(NAM("kobold zombie"), S_ZOMBIE,
|
|
LVL(0, 6, 10, 0, -2), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 50, MS_GROAN, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE, M3_INFRAVISION,
|
|
1, CLR_BROWN, KOBOLD_ZOMBIE),
|
|
MON(NAM("gnome zombie"), S_ZOMBIE,
|
|
LVL(1, 6, 10, 0, -2), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 5),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(650, 50, MS_GROAN, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_GNOME, M3_INFRAVISION,
|
|
2, CLR_BROWN, GNOME_ZOMBIE),
|
|
MON(NAM("orc zombie"), S_ZOMBIE,
|
|
LVL(2, 6, 9, 0, -3), (G_GENO | G_SGROUP | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(850, 75, MS_GROAN, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_ORC, M3_INFRAVISION,
|
|
3, CLR_GRAY, ORC_ZOMBIE),
|
|
MON(NAM("dwarf zombie"), S_ZOMBIE,
|
|
LVL(2, 6, 9, 0, -3), (G_GENO | G_SGROUP | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(900, 150, MS_GROAN, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_DWARF, M3_INFRAVISION,
|
|
3, CLR_RED, DWARF_ZOMBIE),
|
|
MON(NAM("elf zombie"), S_ZOMBIE,
|
|
LVL(3, 6, 9, 0, -3), (G_GENO | G_SGROUP | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 7),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 175, MS_GROAN, MZ_HUMAN), MR_COLD | MR_SLEEP | MR_POISON,
|
|
0, M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_ELF, M3_INFRAVISION,
|
|
4, CLR_GREEN, ELF_ZOMBIE),
|
|
MON(NAM("human zombie"), S_ZOMBIE,
|
|
LVL(4, 6, 8, 0, -3), (G_GENO | G_SGROUP | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 200, MS_GROAN, MZ_HUMAN),
|
|
MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE, M3_INFRAVISION,
|
|
5, HI_DOMESTIC, HUMAN_ZOMBIE),
|
|
MON(NAM("ettin zombie"), S_ZOMBIE,
|
|
LVL(6, 8, 6, 0, -4), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 10), ATTK(AT_CLAW, AD_PHYS, 1, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1700, 250, MS_GROAN, MZ_HUGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG, M3_INFRAVISION,
|
|
7, CLR_BLUE, ETTIN_ZOMBIE),
|
|
MON(NAM("ghoul"), S_ZOMBIE,
|
|
LVL(3, 6, 10, 0, -2), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PLYS, 1, 2), ATTK(AT_CLAW, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 50, MS_SILENT, MZ_SMALL), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_POIS | M1_OMNIVORE,
|
|
M2_UNDEAD | M2_WANDER | M2_HOSTILE, M3_INFRAVISION,
|
|
5, CLR_BLACK, GHOUL),
|
|
MON(NAM("giant zombie"), S_ZOMBIE,
|
|
LVL(8, 8, 6, 0, -4), (G_GENO | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2050, 375, MS_GROAN, MZ_HUGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID,
|
|
M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_GIANT | M2_STRONG,
|
|
M3_INFRAVISION,
|
|
9, CLR_CYAN, GIANT_ZOMBIE),
|
|
MON(NAM("skeleton"), S_ZOMBIE,
|
|
LVL(12, 8, 4, 0, 0), (G_NOCORPSE | G_NOGEN),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_TUCH, AD_SLOW, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(300, 5, MS_BONES, MZ_HUMAN),
|
|
MR_COLD | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
|
|
M2_UNDEAD | M2_WANDER | M2_HOSTILE | M2_STRONG | M2_COLLECT
|
|
| M2_NASTY,
|
|
M3_INFRAVISION,
|
|
14, CLR_WHITE, SKELETON),
|
|
/*
|
|
* golems
|
|
*/
|
|
MON(NAM("straw golem"), S_GOLEM,
|
|
LVL(3, 12, 10, 0, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 2), ATTK(AT_CLAW, AD_PHYS, 1, 2),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 0, MS_SILENT, MZ_LARGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_NEUTER, 0,
|
|
4, CLR_YELLOW, STRAW_GOLEM),
|
|
MON(NAM("paper golem"), S_GOLEM,
|
|
LVL(3, 12, 10, 0, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(400, 0, MS_SILENT, MZ_LARGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_NEUTER, 0,
|
|
4, HI_PAPER, PAPER_GOLEM),
|
|
MON(NAM("rope golem"), S_GOLEM,
|
|
LVL(4, 9, 8, 0, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
ATTK(AT_HUGS, AD_PHYS, 6, 1), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(450, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_NEUTER, 0,
|
|
6, CLR_BROWN, ROPE_GOLEM),
|
|
MON(NAM("gold golem"), S_GOLEM,
|
|
LVL(5, 9, 6, 0, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 3), ATTK(AT_CLAW, AD_PHYS, 2, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(450, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON | MR_ACID, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
6, HI_GOLD, GOLD_GOLEM),
|
|
MON(NAM("leather golem"), S_GOLEM,
|
|
LVL(6, 6, 6, 0, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(800, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_NEUTER, 0,
|
|
7, HI_LEATHER, LEATHER_GOLEM),
|
|
MON(NAM("wood golem"), S_GOLEM,
|
|
LVL(7, 3, 4, 0, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(900, 0, MS_SILENT, MZ_LARGE), MR_COLD | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
|
|
M2_HOSTILE | M2_NEUTER, 0,
|
|
8, HI_WOOD, WOOD_GOLEM),
|
|
MON(NAM("flesh golem"), S_GOLEM,
|
|
LVL(9, 8, 9, 30, 0), (1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1400, 600, MS_SILENT, MZ_LARGE),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON,
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID, M2_HOSTILE | M2_STRONG, 0,
|
|
10, CLR_RED, FLESH_GOLEM),
|
|
MON(NAM("clay golem"), S_GOLEM,
|
|
LVL(11, 7, 7, 40, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1550, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
|
|
M2_HOSTILE | M2_STRONG, 0,
|
|
12, CLR_BROWN, CLAY_GOLEM),
|
|
MON(NAM("stone golem"), S_GOLEM,
|
|
LVL(14, 6, 5, 50, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1900, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
|
|
M2_HOSTILE | M2_STRONG, 0,
|
|
15, CLR_GRAY, STONE_GOLEM),
|
|
MON(NAM("glass golem"), S_GOLEM,
|
|
LVL(16, 6, 1, 50, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 8), ATTK(AT_CLAW, AD_PHYS, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1800, 0, MS_SILENT, MZ_LARGE), MR_SLEEP | MR_POISON | MR_ACID, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE,
|
|
M2_HOSTILE | M2_STRONG, 0,
|
|
18, CLR_CYAN, GLASS_GOLEM),
|
|
MON(NAM("iron golem"), S_GOLEM,
|
|
LVL(18, 6, 3, 60, 0), (G_NOCORPSE | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_BREA, AD_DRST, 4, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2000, 0, MS_SILENT, MZ_LARGE),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
|
|
M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE | M1_POIS,
|
|
M2_HOSTILE | M2_STRONG | M2_COLLECT, 0,
|
|
22, HI_METAL, IRON_GOLEM),
|
|
/*
|
|
* humans, including elves and were-critters;
|
|
* the '@' class does not obey rule #2.
|
|
* Plain "human" is a placeholder, not a normal monster.
|
|
*/
|
|
MON(NAM("human"), S_HUMAN, /* for corpses */
|
|
LVL(0, 12, 10, 0, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
2, HI_DOMESTIC, HUMAN),
|
|
MON(NAM("wererat"), S_HUMAN,
|
|
LVL(2, 12, 10, 10, -7), (1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_WERE, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS | M1_REGEN | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_WERE | M2_HOSTILE | M2_HUMAN | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
3, CLR_BROWN, HUMAN_WERERAT),
|
|
MON(NAM("werejackal"), S_HUMAN,
|
|
LVL(2, 12, 10, 10, -7), (1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_WERE, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS | M1_REGEN | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_WERE | M2_HOSTILE | M2_HUMAN | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
3, CLR_RED, HUMAN_WEREJACKAL),
|
|
MON(NAM("werewolf"), S_HUMAN,
|
|
LVL(5, 12, 10, 20, -7), (1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_WERE, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS | M1_REGEN | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_WERE | M2_HOSTILE | M2_HUMAN | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
6, CLR_ORANGE, HUMAN_WEREWOLF),
|
|
/* plain "elf" is a placeholder, not a normal monster */
|
|
MON(NAM("elf"), S_HUMAN, /* for corpses */
|
|
LVL(0, 12, 10, 2, -3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
|
|
M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS,
|
|
M2_NOPOLY | M2_ELF | M2_COLLECT,
|
|
M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
1, HI_DOMESTIC, ELF),
|
|
MON(NAM("Woodland-elf"), S_HUMAN,
|
|
LVL(4, 12, 10, 10, -5), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4), NO_ATTK,
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
|
|
M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS, M2_ELF | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
6, CLR_GREEN, WOODLAND_ELF),
|
|
MON(NAM("Green-elf"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, -6), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
|
|
M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS, M2_ELF | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
7, CLR_BRIGHT_GREEN, GREEN_ELF),
|
|
MON(NAM("Grey-elf"), S_HUMAN,
|
|
LVL(6, 12, 10, 10, -7), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
|
|
M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS, M2_ELF | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
8, CLR_GRAY, GREY_ELF),
|
|
MON(NAMS("elf-lord", "elf-lady", "elf-noble"), S_HUMAN,
|
|
LVL(8, 12, 10, 20, -9), (G_GENO | G_SGROUP | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
|
|
M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS,
|
|
M2_ELF | M2_STRONG | M2_LORD | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
11, CLR_BRIGHT_BLUE, ELF_NOBLE),
|
|
MON(NAMS("Elvenking", "Elvenqueen", "elven monarch"), S_HUMAN,
|
|
LVL(9, 12, 10, 25, -10), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 350, MS_HUMANOID, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
|
|
M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS,
|
|
M2_ELF | M2_STRONG | M2_PRINCE | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
11, HI_LORD, ELVEN_MONARCH),
|
|
MON(NAM("doppelganger"), S_HUMAN,
|
|
LVL(9, 12, 5, 20, 0), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 12),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_IMITATE, MZ_HUMAN), MR_SLEEP, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_HOSTILE | M2_STRONG | M2_COLLECT
|
|
| M2_SHAPESHIFTER,
|
|
M3_INFRAVISIBLE,
|
|
11, HI_DOMESTIC, DOPPELGANGER),
|
|
/* 3.7: shopkeepers used to have speed 18, but if/when they were
|
|
hasted they always got 2 moves per turn and had a tendency to move
|
|
away from blocking the door and then move right back; since they
|
|
might start with a potion of speed and drink that as soon as the
|
|
hero gets close, once inside the shop the hero could have trouble
|
|
getting out again; also, being slowed still guaranteed one move
|
|
per turn; reduce their innate speed from 18 to 16 for a hasted
|
|
speed of 22 rather than 24 and slowed speed of 11 rather than 12;
|
|
they will still block the shop door, but not as tenaciously */
|
|
MON(NAM("shopkeeper"), S_HUMAN,
|
|
LVL(12, 16, 0, 50, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 4), ATTK(AT_WEAP, AD_PHYS, 4, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SELL, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
|
|
| M2_STRONG | M2_COLLECT | M2_MAGIC,
|
|
M3_INFRAVISIBLE,
|
|
15, HI_DOMESTIC, SHOPKEEPER),
|
|
/* vault guard */
|
|
MON(NAM("guard"), S_HUMAN,
|
|
LVL(12, 12, 10, 40, 10), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARD, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_MERC | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
14, CLR_BLUE, GUARD),
|
|
/* prisoner is used on some special levels */
|
|
MON(NAM("prisoner"), S_HUMAN,
|
|
LVL(12, 12, 10, 0, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_DJINNI, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_CLOSE,
|
|
14, HI_DOMESTIC, PRISONER),
|
|
/* the Oracle of Delphi doesn't move */
|
|
MON(NAM("Oracle"), S_HUMAN,
|
|
LVL(12, 0, 0, 50, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_NONE, AD_MAGM, 0, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_ORACLE, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_FEMALE, M3_INFRAVISIBLE,
|
|
13, HI_ZAP, ORACLE),
|
|
/* aligned priests always have the epri extension attached;
|
|
individual instantiations should always have either ispriest
|
|
or isminion set; role monster priests are separate (below) */
|
|
MON(NAMS("priest", "priestess", "aligned cleric"), S_HUMAN,
|
|
LVL(12, 12, 10, 50, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_KICK, AD_PHYS, 1, 4),
|
|
ATTK(AT_MAGC, AD_CLRC, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_PRIEST, MZ_HUMAN), MR_ELEC, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_LORD | M2_PEACEFUL | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
15, CLR_WHITE, ALIGNED_CLERIC),
|
|
/* high priests always have epri and always have ispriest set;
|
|
they are flagged as unique even through they aren't */
|
|
MON(NAMS("high priest", "high priestess", "high cleric"), S_HUMAN,
|
|
LVL(25, 15, 7, 70, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_KICK, AD_PHYS, 2, 8),
|
|
ATTK(AT_MAGC, AD_CLRC, 2, 8), ATTK(AT_MAGC, AD_CLRC, 2, 8),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_PRIEST, MZ_HUMAN),
|
|
MR_FIRE | MR_ELEC | MR_SLEEP | MR_POISON, 0,
|
|
M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_MINION | M2_PRINCE | M2_NASTY | M2_COLLECT
|
|
| M2_MAGIC,
|
|
M3_INFRAVISIBLE,
|
|
30, CLR_WHITE, HIGH_CLERIC),
|
|
MON(NAM("soldier"), S_HUMAN,
|
|
LVL(6, 10, 10, 0, -2), (G_SGROUP | G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
|
|
| M2_HOSTILE | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
8, CLR_GRAY, SOLDIER),
|
|
MON(NAM("sergeant"), S_HUMAN,
|
|
LVL(8, 10, 10, 5, -3), (G_SGROUP | G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
|
|
| M2_HOSTILE | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
10, CLR_RED, SERGEANT),
|
|
MON(NAM("nurse"), S_HUMAN,
|
|
LVL(11, 6, 0, 0, 0), (G_GENO | 3),
|
|
A(ATTK(AT_CLAW, AD_HEAL, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_NURSE, MZ_HUMAN), MR_POISON, MR_POISON,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_HOSTILE,
|
|
M3_INFRAVISIBLE,
|
|
13, HI_DOMESTIC, NURSE),
|
|
MON(NAM("lieutenant"), S_HUMAN,
|
|
LVL(10, 10, 10, 15, -4), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_WEAP, AD_PHYS, 3, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
|
|
| M2_HOSTILE | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
12, CLR_GREEN, LIEUTENANT),
|
|
MON(NAM("captain"), S_HUMAN,
|
|
LVL(12, 10, 10, 15, -5), (G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 4), ATTK(AT_WEAP, AD_PHYS, 4, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
|
|
| M2_HOSTILE | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
14, CLR_BLUE, CAPTAIN),
|
|
MON(NAM("watchman"), S_HUMAN,
|
|
LVL(6, 10, 10, 0, -2), (G_SGROUP | G_NOGEN | G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
|
|
| M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
8, CLR_GRAY, WATCHMAN),
|
|
MON(NAM("watch captain"), S_HUMAN,
|
|
LVL(10, 10, 10, 15, -4), (G_NOGEN | G_GENO | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_WEAP, AD_PHYS, 3, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_MERC | M2_STALK
|
|
| M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
12, CLR_GREEN, WATCH_CAPTAIN),
|
|
/* Unique humans not tied to quests.
|
|
*/
|
|
MON(NAM("Medusa"), S_HUMAN,
|
|
LVL(20, 12, 2, 50, -15), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 1, 8),
|
|
ATTK(AT_GAZE, AD_STON, 0, 0), ATTK(AT_BITE, AD_DRST, 1, 6),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HISS, MZ_LARGE),
|
|
MR_POISON | MR_STONE, MR_POISON | MR_STONE,
|
|
M1_FLY | M1_SWIM | M1_AMPHIBIOUS | M1_HUMANOID | M1_POIS | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HOSTILE | M2_STRONG | M2_PNAME | M2_FEMALE,
|
|
M3_WAITFORU | M3_INFRAVISIBLE,
|
|
25, CLR_BRIGHT_GREEN, MEDUSA),
|
|
MON(NAM("Wizard of Yendor"), S_HUMAN,
|
|
LVL(30, 12, -8, 100, A_NONE), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_CLAW, AD_SAMU, 2, 12), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_CUSS, MZ_HUMAN), MR_FIRE | MR_POISON,
|
|
MR_FIRE | MR_POISON,
|
|
M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS
|
|
| M1_TPORT | M1_TPORT_CNTRL | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_PRINCE
|
|
| M2_MALE | M2_MAGIC,
|
|
M3_COVETOUS | M3_WAITFORU | M3_INFRAVISIBLE,
|
|
34, HI_OVERLORD, WIZARD_OF_YENDOR),
|
|
MON(NAM("Croesus"), S_HUMAN,
|
|
LVL(20, 15, 0, 40, 15), (G_UNIQ | G_NOGEN),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARD, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY
|
|
| M2_PNAME | M2_PRINCE | M2_MALE | M2_GREEDY | M2_JEWELS
|
|
| M2_COLLECT | M2_MAGIC,
|
|
M3_INFRAVISIBLE,
|
|
22, HI_LORD, CROESUS),
|
|
#ifdef CHARON
|
|
MON(NAM("Charon"), S_HUMAN,
|
|
LVL(76, 18, -5, 120, 0), (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_TUCH, AD_PLYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_FERRY, MZ_HUMAN),
|
|
MR_FIRE | MR_COLD | MR_POISON | MR_STONE, 0,
|
|
M1_BREATHLESS | M1_SEE_INVIS | M1_HUMANOID,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_PNAME | M2_MALE | M2_GREEDY
|
|
| M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
38, CLR_WHITE, CHARON),
|
|
#endif
|
|
/*
|
|
* ghosts
|
|
* ghosts and shades don't leave corpses; assigning human weight
|
|
* to them matters for statues
|
|
*/
|
|
MON(NAM("ghost"), S_GHOST,
|
|
LVL(10, 3, -5, 50, -5), (G_NOCORPSE | G_NOGEN),
|
|
A(ATTK(AT_TUCH, AD_PHYS, 1, 1),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 0, MS_SILENT, MZ_HUMAN),
|
|
MR_COLD | MR_DISINT | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_WALLWALK | M1_HUMANOID | M1_UNSOLID,
|
|
M2_NOPOLY | M2_UNDEAD | M2_STALK | M2_HOSTILE, M3_INFRAVISION,
|
|
12, CLR_GRAY, GHOST),
|
|
MON(NAM("shade"), S_GHOST,
|
|
LVL(12, 10, 10, 0, 0), (G_NOCORPSE | G_NOGEN),
|
|
A(ATTK(AT_TUCH, AD_PLYS, 2, 6), ATTK(AT_TUCH, AD_SLOW, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 0, MS_WAIL, MZ_HUMAN),
|
|
MR_COLD | MR_DISINT | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_BREATHLESS | M1_WALLWALK | M1_HUMANOID | M1_UNSOLID
|
|
| M1_SEE_INVIS,
|
|
M2_NOPOLY | M2_UNDEAD | M2_WANDER | M2_STALK | M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISION,
|
|
14, CLR_BLACK, SHADE),
|
|
/*
|
|
* (major) demons
|
|
*/
|
|
MON(NAM("water demon"), S_DEMON,
|
|
LVL(8, 12, -4, 30, -7), (G_NOCORPSE | G_NOGEN),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_DJINNI, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS | M1_SWIM,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
11, CLR_BLUE, WATER_DEMON),
|
|
/* standard demons & devils
|
|
*/
|
|
#define SEDUCTION_ATTACKS_YES \
|
|
A(ATTK(AT_BITE, AD_SSEX, 0, 0), ATTK(AT_CLAW, AD_PHYS, 1, 3), \
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK)
|
|
#define SEDUCTION_ATTACKS_NO \
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3), \
|
|
ATTK(AT_BITE, AD_DRLI, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK)
|
|
/* incubus and succubus; prior to 3.7, succubus and incubus were
|
|
distinct monsters; "amorous demon" is considered to be a temporary
|
|
placeholder but may be here to stay... */
|
|
MON(NAMS("incubus", "succubus", "amorous demon"), S_DEMON,
|
|
LVL(6, 12, 0, 70, -9), (G_NOCORPSE | 1),
|
|
SEDUCTION_ATTACKS_YES,
|
|
SIZ(WT_HUMAN, 400, MS_SEDUCE, MZ_HUMAN),
|
|
MR_FIRE | MR_POISON, 0, M1_HUMANOID | M1_FLY | M1_POIS,
|
|
M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
8, CLR_GRAY, AMOROUS_DEMON),
|
|
MON(NAM("horned devil"), S_DEMON,
|
|
LVL(6, 9, -5, 50, 11), (G_HELL | G_NOCORPSE | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 3), ATTK(AT_STNG, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
|
|
M1_POIS | M1_THICK_HIDE, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
9, CLR_BROWN, HORNED_DEVIL),
|
|
/* Used by AD&D for a type of demon, originally one of the Furies
|
|
and spelled this way; plural is erinyes */
|
|
MON(NAM("erinys"), S_DEMON,
|
|
LVL(7, 12, 2, 30, 10), (G_HELL | G_NOCORPSE | G_SGROUP | 2),
|
|
/* erinys attacks (among other things) are variable depending on your
|
|
alignment abuse, can be increased from here by adj_erinys(mon.c) */
|
|
A(ATTK(AT_WEAP, AD_DRST, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_STRONG | M2_NASTY | M2_FEMALE
|
|
| M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
10, CLR_RED, ERINYS),
|
|
MON(NAM("barbed devil"), S_DEMON,
|
|
LVL(8, 12, 0, 35, 8), (G_HELL | G_NOCORPSE | G_SGROUP | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_STCK, 2, 4),
|
|
ATTK(AT_STNG, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
|
|
M1_POIS | M1_THICK_HIDE, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
11, CLR_RED, BARBED_DEVIL),
|
|
MON(NAM("marilith"), S_DEMON,
|
|
LVL(7, 12, -6, 80, -12), (G_HELL | G_NOCORPSE | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
|
|
ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4)),
|
|
SIZ(WT_HUMAN, 400, MS_CUSS, MZ_LARGE), MR_FIRE | MR_POISON, 0,
|
|
M1_HUMANOID | M1_SLITHY | M1_SEE_INVIS | M1_POIS,
|
|
M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_FEMALE | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
11, CLR_RED, MARILITH),
|
|
MON(NAM("vrock"), S_DEMON,
|
|
LVL(8, 12, 0, 50, -9), (G_HELL | G_NOCORPSE | G_SGROUP | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
ATTK(AT_CLAW, AD_PHYS, 1, 8), ATTK(AT_CLAW, AD_PHYS, 1, 8),
|
|
ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON, 0,
|
|
M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
11, CLR_GREEN, VROCK),
|
|
MON(NAM("hezrou"), S_DEMON,
|
|
LVL(9, 6, -2, 55, -10), (G_HELL | G_NOCORPSE | G_SGROUP | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
|
|
ATTK(AT_BITE, AD_PHYS, 4, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
12, CLR_GREEN, HEZROU),
|
|
MON(NAM("bone devil"), S_DEMON,
|
|
LVL(9, 15, -1, 40, -9), (G_HELL | G_NOCORPSE | G_SGROUP | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_STNG, AD_DRST, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON, 0,
|
|
M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
13, CLR_GRAY, BONE_DEVIL),
|
|
MON(NAM("ice devil"), S_DEMON,
|
|
LVL(11, 6, -4, 55, -12), (G_HELL | G_NOCORPSE | 2),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_STNG, AD_COLD, 3, 4),
|
|
ATTK(AT_TUCH, AD_SLOW, 1, 1), NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE),
|
|
MR_FIRE | MR_COLD | MR_POISON, 0, M1_SEE_INVIS | M1_POIS,
|
|
M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
15, CLR_WHITE, ICE_DEVIL),
|
|
MON(NAM("nalfeshnee"), S_DEMON,
|
|
LVL(11, 9, -1, 65, -11), (G_HELL | G_NOCORPSE | 1),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
|
|
ATTK(AT_BITE, AD_PHYS, 2, 4), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SPELL, MZ_LARGE), MR_FIRE | MR_POISON, 0,
|
|
M1_HUMANOID | M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
15, CLR_RED, NALFESHNEE),
|
|
MON(NAM("pit fiend"), S_DEMON,
|
|
LVL(13, 6, -3, 65, -13), (G_HELL | G_NOCORPSE | 2),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 2), ATTK(AT_WEAP, AD_PHYS, 4, 2),
|
|
ATTK(AT_HUGS, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GROWL, MZ_LARGE), MR_FIRE | MR_POISON, 0,
|
|
M1_SEE_INVIS | M1_POIS,
|
|
M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
16, CLR_RED, PIT_FIEND),
|
|
/* from Jack Vance's _Rhialto_the_Marvellous_, one of the sequels
|
|
to _The_Dying_Earth_ */
|
|
MON(NAM("sandestin"), S_DEMON,
|
|
LVL(13, 12, 4, 60, -5), (G_HELL | G_NOCORPSE | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 400, MS_CUSS, MZ_HUMAN), MR_STONE, 0, M1_HUMANOID,
|
|
M2_NOPOLY | M2_STALK | M2_STRONG | M2_COLLECT | M2_SHAPESHIFTER,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
15, CLR_GRAY, SANDESTIN),
|
|
MON(NAM("balrog"), S_DEMON,
|
|
LVL(16, 5, -2, 75, -14), (G_HELL | G_NOCORPSE | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 8, 4), ATTK(AT_WEAP, AD_PHYS, 4, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON, 0,
|
|
M1_FLY | M1_SEE_INVIS | M1_POIS,
|
|
M2_DEMON | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
20, CLR_RED, BALROG),
|
|
/* Named demon lords & princes plus Arch-Devils.
|
|
* (their order matters; see minion.c)
|
|
*/
|
|
MON(NAM("Juiblex"), S_DEMON, LVL(50, 3, -7, 65, -15),
|
|
(G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_ENGL, AD_DISE, 4, 10), ATTK(AT_SPIT, AD_ACID, 3, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 0, MS_GURGLE, MZ_LARGE),
|
|
MR_FIRE | MR_POISON | MR_ACID | MR_STONE, 0,
|
|
M1_AMPHIBIOUS | M1_AMORPHOUS | M1_NOHEAD | M1_FLY | M1_SEE_INVIS
|
|
| M1_ACID | M1_POIS,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
|
|
| M2_LORD | M2_MALE,
|
|
M3_WAITFORU | M3_WANTSAMUL | M3_INFRAVISION,
|
|
26, CLR_BRIGHT_GREEN, JUIBLEX),
|
|
MON(NAM("Yeenoghu"), S_DEMON,
|
|
LVL(56, 18, -5, 80, -15), (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_WEAP, AD_CONF, 2, 8),
|
|
ATTK(AT_CLAW, AD_PLYS, 1, 6), ATTK(AT_MAGC, AD_MAGM, 2, 6),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(900, 500, MS_ORC, MZ_LARGE), MR_FIRE | MR_POISON, 0,
|
|
M1_FLY | M1_SEE_INVIS | M1_POIS,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
|
|
| M2_LORD | M2_MALE | M2_COLLECT,
|
|
M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
31, HI_LORD, YEENOGHU),
|
|
MON(NAM("Orcus"), S_DEMON,
|
|
LVL(66, 9, -6, 85, -20), (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 3, 4),
|
|
ATTK(AT_CLAW, AD_PHYS, 3, 4), ATTK(AT_MAGC, AD_SPEL, 8, 6),
|
|
ATTK(AT_STNG, AD_DRST, 2, 4), NO_ATTK),
|
|
SIZ(1500, 500, MS_ORC, MZ_HUGE), MR_FIRE | MR_POISON, 0,
|
|
M1_FLY | M1_SEE_INVIS | M1_POIS,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
|
|
| M2_PRINCE | M2_MALE | M2_COLLECT,
|
|
M3_WAITFORU | M3_WANTSBOOK | M3_WANTSAMUL | M3_INFRAVISIBLE
|
|
| M3_INFRAVISION,
|
|
36, HI_LORD, ORCUS),
|
|
MON(NAM("Geryon"), S_DEMON,
|
|
LVL(72, 3, -3, 75, 15), (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 3, 6), ATTK(AT_CLAW, AD_PHYS, 3, 6),
|
|
ATTK(AT_STNG, AD_DRST, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_BRIBE, MZ_HUGE), MR_FIRE | MR_POISON, 0,
|
|
M1_FLY | M1_SEE_INVIS | M1_POIS | M1_SLITHY,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
|
|
| M2_PRINCE | M2_MALE,
|
|
M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
36, HI_LORD, GERYON),
|
|
MON(NAM("Dispater"), S_DEMON,
|
|
LVL(78, 15, -2, 80, 15), (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 6), ATTK(AT_MAGC, AD_SPEL, 6, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_BRIBE, MZ_HUMAN), MR_FIRE | MR_POISON, 0,
|
|
M1_FLY | M1_SEE_INVIS | M1_POIS | M1_HUMANOID,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
|
|
| M2_PRINCE | M2_MALE | M2_COLLECT,
|
|
M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
40, HI_LORD, DISPATER),
|
|
MON(NAM("Baalzebub"), S_DEMON,
|
|
LVL(89, 9, -5, 85, 20), (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_BITE, AD_DRST, 2, 6), ATTK(AT_GAZE, AD_STUN, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_BRIBE, MZ_LARGE), MR_FIRE | MR_POISON, 0,
|
|
M1_FLY | M1_SEE_INVIS | M1_POIS,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
|
|
| M2_PRINCE | M2_MALE,
|
|
M3_WANTSAMUL | M3_WAITFORU | M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
45, HI_LORD, BAALZEBUB),
|
|
MON(NAM("Asmodeus"), S_DEMON,
|
|
LVL(105, 12, -7, 90, 20), (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 4, 4), ATTK(AT_MAGC, AD_COLD, 6, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_BRIBE, MZ_HUGE), MR_FIRE | MR_COLD | MR_POISON, 0,
|
|
M1_FLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG
|
|
| M2_NASTY | M2_PRINCE | M2_MALE,
|
|
M3_WANTSAMUL | M3_WAITFORU | M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
53, HI_LORD, ASMODEUS),
|
|
MON(NAM("Demogorgon"), S_DEMON,
|
|
LVL(106, 15, -8, 95, -20), (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_MAGC, AD_SPEL, 8, 6), ATTK(AT_STNG, AD_DRLI, 1, 4),
|
|
ATTK(AT_CLAW, AD_DISE, 1, 6), ATTK(AT_CLAW, AD_DISE, 1, 6),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 500, MS_GROWL, MZ_HUGE), MR_FIRE | MR_POISON, 0,
|
|
M1_FLY | M1_SEE_INVIS | M1_NOHANDS | M1_POIS,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
|
|
| M2_PRINCE | M2_MALE,
|
|
M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
57, HI_LORD, DEMOGORGON),
|
|
/* Riders -- the Four Horsemen of the Apocalypse ("War" == player);
|
|
* depicted with '&' but do not have M2_DEMON set.
|
|
*/
|
|
MON(NAM("Death"), S_DEMON,
|
|
LVL(30, 12, -5, 100, 0), (G_UNIQ | G_NOGEN),
|
|
A(ATTK(AT_TUCH, AD_DETH, 8, 8), ATTK(AT_TUCH, AD_DETH, 8, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 1, MS_RIDER, MZ_HUMAN),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
|
|
M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES,
|
|
34, HI_OVERLORD, DEATH),
|
|
MON(NAM("Pestilence"), S_DEMON,
|
|
LVL(30, 12, -5, 100, 0), (G_UNIQ | G_NOGEN),
|
|
A(ATTK(AT_TUCH, AD_PEST, 8, 8), ATTK(AT_TUCH, AD_PEST, 8, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 1, MS_RIDER, MZ_HUMAN),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
|
|
M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES,
|
|
34, HI_OVERLORD, PESTILENCE),
|
|
MON(NAM("Famine"), S_DEMON,
|
|
LVL(30, 12, -5, 100, 0), (G_UNIQ | G_NOGEN),
|
|
A(ATTK(AT_TUCH, AD_FAMN, 8, 8), ATTK(AT_TUCH, AD_FAMN, 8, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 1, MS_RIDER, MZ_HUMAN),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
|
|
M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
|
|
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES,
|
|
34, HI_OVERLORD, FAMINE),
|
|
/* other demons
|
|
*/
|
|
#ifdef MAIL_STRUCTURES
|
|
MON(NAM("mail daemon"), S_DEMON,
|
|
LVL(56, 24, 10, 127, 0), (G_NOGEN | G_NOCORPSE),
|
|
A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(600, 300, MS_SILENT, MZ_HUMAN),
|
|
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
|
|
M1_FLY | M1_SWIM | M1_BREATHLESS | M1_SEE_INVIS | M1_HUMANOID
|
|
| M1_POIS,
|
|
M2_NOPOLY | M2_STALK | M2_PEACEFUL, M3_INFRAVISIBLE | M3_INFRAVISION,
|
|
26, CLR_BRIGHT_BLUE, MAIL_DAEMON),
|
|
#endif
|
|
/* djinni is singular; plural is djinn */
|
|
MON(NAM("djinni"), S_DEMON,
|
|
LVL(7, 12, 4, 30, 0), (G_NOGEN | G_NOCORPSE),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 400, MS_DJINNI, MZ_HUMAN), MR_POISON | MR_STONE, 0,
|
|
M1_HUMANOID | M1_FLY | M1_POIS, M2_NOPOLY | M2_STALK | M2_COLLECT,
|
|
M3_INFRAVISIBLE, 8, CLR_YELLOW, DJINNI),
|
|
/*
|
|
* sea monsters
|
|
*
|
|
* 3.7: all the fish except kraken used to specify M1_SLITHY, presumably
|
|
* cloned from giant eel. Using "slither" to describe their movement
|
|
* wasn't appropriate. Unfortunately, locomotion() isn't able to choose
|
|
* "swim" as their movement description because it is only passed a
|
|
* monster type, not a specific monster (for <mx,my>) or the relevant
|
|
* location, and therefore doesn't know whether water is involved.
|
|
*/
|
|
MON(NAM("jellyfish"), S_EEL,
|
|
LVL(3, 3, 6, 0, 0), (G_GENO | G_NOGEN),
|
|
A(ATTK(AT_STNG, AD_DRST, 3, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(80, 20, MS_SILENT, MZ_SMALL), MR_POISON, MR_POISON,
|
|
M1_SWIM | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD
|
|
| M1_NOTAKE | M1_POIS, M2_HOSTILE, 0,
|
|
5, CLR_BLUE, JELLYFISH),
|
|
MON(NAM("piranha"), S_EEL,
|
|
LVL(5, 18, 4, 0, 0), (G_GENO | G_NOGEN | G_SGROUP),
|
|
A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BITE, AD_PHYS, 2, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(60, 30, MS_SILENT, MZ_SMALL), 0, 0,
|
|
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOLIMBS
|
|
| M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE, M2_HOSTILE, 0,
|
|
7, CLR_RED, PIRANHA),
|
|
MON(NAM("shark"), S_EEL,
|
|
LVL(7, 12, 2, 0, 0), (G_GENO | G_NOGEN),
|
|
A(ATTK(AT_BITE, AD_PHYS, 5, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(500, 350, MS_SILENT, MZ_LARGE), 0, 0,
|
|
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOLIMBS
|
|
| M1_CARNIVORE | M1_OVIPAROUS | M1_THICK_HIDE | M1_NOTAKE,
|
|
M2_HOSTILE, 0,
|
|
9, CLR_GRAY, SHARK),
|
|
MON(NAM("giant eel"), S_EEL,
|
|
LVL(5, 9, -1, 0, 0), (G_GENO | G_NOGEN),
|
|
A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_TUCH, AD_WRAP, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 250, MS_SILENT, MZ_HUGE), 0, 0,
|
|
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_SLITHY | M1_NOLIMBS
|
|
| M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
|
|
M2_HOSTILE, M3_INFRAVISIBLE,
|
|
7, CLR_CYAN, GIANT_EEL),
|
|
MON(NAM("electric eel"), S_EEL,
|
|
LVL(7, 10, -3, 0, 0), (G_GENO | G_NOGEN),
|
|
A(ATTK(AT_BITE, AD_ELEC, 4, 6), ATTK(AT_TUCH, AD_WRAP, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 250, MS_SILENT, MZ_HUGE), MR_ELEC, MR_ELEC,
|
|
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_SLITHY | M1_NOLIMBS
|
|
| M1_CARNIVORE | M1_OVIPAROUS | M1_NOTAKE,
|
|
M2_HOSTILE, M3_INFRAVISIBLE,
|
|
10, CLR_BRIGHT_BLUE, ELECTRIC_EEL),
|
|
MON(NAM("kraken"), S_EEL,
|
|
LVL(20, 3, 6, 0, -3), (G_GENO | G_NOGEN),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4),
|
|
ATTK(AT_HUGS, AD_WRAP, 2, 6), ATTK(AT_BITE, AD_PHYS, 5, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(1800, 1000, MS_SILENT, MZ_HUGE), 0, 0,
|
|
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_NOPOLY | M2_HOSTILE | M2_STRONG, M3_INFRAVISIBLE,
|
|
22, CLR_RED, KRAKEN),
|
|
/*
|
|
* lizards, &c
|
|
*/
|
|
MON(NAM("newt"), S_LIZARD,
|
|
LVL(0, 6, 8, 0, 0), (G_GENO | 5),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 2),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 20, MS_SILENT, MZ_TINY), 0, 0,
|
|
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE, 0,
|
|
1, CLR_YELLOW, NEWT),
|
|
MON(NAM("gecko"), S_LIZARD,
|
|
LVL(1, 6, 8, 0, 0), (G_GENO | 5),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 3),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 20, MS_SQEEK, MZ_TINY), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0,
|
|
2, CLR_GREEN, GECKO),
|
|
MON(NAM("iguana"), S_LIZARD,
|
|
LVL(2, 6, 7, 0, 0), (G_GENO | 5),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(30, 30, MS_SILENT, MZ_TINY), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0,
|
|
3, CLR_BROWN, IGUANA),
|
|
MON(NAM("baby crocodile"), S_LIZARD,
|
|
LVL(3, 6, 7, 0, 0), G_GENO,
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(200, 200, MS_CHIRP, MZ_MEDIUM), 0, 0,
|
|
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_HOSTILE, 0,
|
|
4, CLR_BROWN, BABY_CROCODILE),
|
|
/* trivia: before monster corpses were implemented, "lizard corpse"
|
|
was a specific type of item */
|
|
MON(NAM("lizard"), S_LIZARD,
|
|
LVL(5, 6, 6, 10, 0), (G_GENO | 5),
|
|
A(ATTK(AT_BITE, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(10, 40, MS_SILENT, MZ_TINY), MR_STONE, MR_STONE,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0,
|
|
6, CLR_GREEN, LIZARD),
|
|
MON(NAM("chameleon"), S_LIZARD,
|
|
LVL(6, 5, 6, 10, 0), (G_GENO | 2),
|
|
A(ATTK(AT_BITE, AD_PHYS, 4, 2),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(100, 100, MS_SILENT, MZ_TINY), 0, 0,
|
|
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
|
|
M2_NOPOLY | M2_HOSTILE | M2_SHAPESHIFTER, 0,
|
|
7, CLR_BROWN, CHAMELEON),
|
|
MON(NAM("crocodile"), S_LIZARD,
|
|
LVL(6, 9, 5, 0, 0), (G_GENO | 1),
|
|
A(ATTK(AT_BITE, AD_PHYS, 4, 2), ATTK(AT_CLAW, AD_PHYS, 1, 12),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_BELLOW, MZ_LARGE), 0, 0,
|
|
M1_SWIM | M1_AMPHIBIOUS | M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS
|
|
| M1_OVIPAROUS | M1_CARNIVORE,
|
|
M2_STRONG | M2_HOSTILE, 0,
|
|
7, CLR_BROWN, CROCODILE),
|
|
MON(NAM("salamander"), S_LIZARD,
|
|
LVL(8, 12, -1, 0, -9), (G_HELL | 1),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 8), ATTK(AT_TUCH, AD_FIRE, 1, 6),
|
|
ATTK(AT_HUGS, AD_PHYS, 2, 6), ATTK(AT_HUGS, AD_FIRE, 3, 6),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(1500, 400, MS_MUMBLE, MZ_HUMAN), MR_SLEEP | MR_FIRE, MR_FIRE,
|
|
M1_HUMANOID | M1_SLITHY | M1_THICK_HIDE | M1_POIS,
|
|
M2_STALK | M2_HOSTILE | M2_COLLECT | M2_MAGIC, M3_INFRAVISIBLE,
|
|
12, CLR_ORANGE, SALAMANDER),
|
|
|
|
/*
|
|
* dummy monster needed for visual interface
|
|
* (marking it unique prevents figurines)
|
|
*/
|
|
MON(NAM("long worm tail"), S_WORM_TAIL,
|
|
LVL(0, 0, 0, 0, 0), (G_NOGEN | G_NOCORPSE | G_UNIQ),
|
|
A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(0, 0, 0, 0), 0, 0, 0L, M2_NOPOLY, 0,
|
|
1, CLR_BROWN, LONG_WORM_TAIL),
|
|
/* Note:
|
|
* Worm tail must be between the normal monsters and the special
|
|
* quest & pseudo-character ones because an optimization in the
|
|
* random monster selection code assumes everything beyond here
|
|
* has the G_NOGEN and M2_NOPOLY attributes.
|
|
*/
|
|
|
|
/*
|
|
* character classes
|
|
*/
|
|
MON(NAM("archeologist"), S_HUMAN,
|
|
LVL(10, 12, 10, 1, 3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_TUNNEL | M1_NEEDPICK | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, ARCHEOLOGIST),
|
|
MON(NAM("barbarian"), S_HUMAN,
|
|
LVL(10, 12, 10, 1, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, BARBARIAN),
|
|
MON(NAMS("caveman", "cavewoman", "cave dweller"), S_HUMAN,
|
|
LVL(10, 12, 10, 0, 1), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, CAVE_DWELLER),
|
|
MON(NAM("healer"), S_HUMAN,
|
|
LVL(10, 12, 10, 1, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, HEALER),
|
|
MON(NAM("knight"), S_HUMAN,
|
|
LVL(10, 12, 10, 1, 3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, KNIGHT),
|
|
MON(NAM("monk"), S_HUMAN,
|
|
LVL(10, 12, 10, 2, 0), G_NOGEN,
|
|
A(ATTK(AT_CLAW, AD_PHYS, 1, 8), ATTK(AT_KICK, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_HERBIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
11, HI_DOMESTIC, MONK),
|
|
/* monster priests are separate monsters (above; "aligned cleric") */
|
|
MON(NAMS("priest", "priestess", "cleric"), S_HUMAN,
|
|
LVL(10, 12, 10, 2, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, CLERIC),
|
|
MON(NAM("ranger"), S_HUMAN,
|
|
LVL(10, 12, 10, 2, -3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, RANGER),
|
|
MON(NAM("rogue"), S_HUMAN,
|
|
LVL(10, 12, 10, 1, -3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, ROGUE),
|
|
MON(NAM("samurai"), S_HUMAN,
|
|
LVL(10, 12, 10, 1, 3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, SAMURAI),
|
|
MON(NAM("tourist"), S_HUMAN,
|
|
LVL(10, 12, 10, 1, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, TOURIST),
|
|
/* valk is lawful by default; player valk can be neutral, in which case
|
|
role_init() will change this monster and 'warrior' to be neutral too;
|
|
if a neutral valk leaves a bones file containing neutral warriors,
|
|
the latter will magically turn lawful if encountered by a lawful valk
|
|
or any non-valk (for bones on the dungeon side of the portal) */
|
|
MON(NAM("valkyrie"), S_HUMAN,
|
|
LVL(10, 12, 10, 1, 1), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_COLD, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_FEMALE | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, VALKYRIE),
|
|
MON(NAM("wizard"), S_HUMAN,
|
|
LVL(10, 12, 10, 3, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT | M2_MAGIC,
|
|
M3_INFRAVISIBLE,
|
|
12, HI_DOMESTIC, WIZARD),
|
|
/*
|
|
* quest leaders
|
|
*/
|
|
MON(NAM("Lord Carnarvon"), S_HUMAN,
|
|
LVL(20, 15, 0, 90, 20), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_MAGC, AD_SPEL, 4, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
|
|
M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
|
|
| M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
24, HI_LORD, LORD_CARNARVON),
|
|
MON(NAM("Pelias"), S_HUMAN,
|
|
LVL(20, 15, 0, 90, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_WEAP, AD_PHYS, 4, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
|
|
| M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
24, HI_LORD, PELIAS),
|
|
MON(NAM("Shaman Karnov"), S_HUMAN,
|
|
LVL(20, 15, 0, 90, 20), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_MAGC, AD_CLRC, 2, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
|
|
| M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
24, HI_LORD, SHAMAN_KARNOV),
|
|
#if 0 /* OBSOLETE -- leaders for 3.1.x/3.2.x elf quest when elf was a role */
|
|
/* Two for elves - one of each sex.
|
|
*/
|
|
MON(NAM("Earendil"), S_HUMAN,
|
|
LVL(20, 12, 0, 50, -20), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
|
|
M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_ELF | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG
|
|
| M2_MALE | M2_COLLECT | M2_MAGIC,
|
|
M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
22, HI_LORD, EARENDIL),
|
|
MON(NAM("Elwing"), S_HUMAN,
|
|
LVL(20, 12, 0, 50, -20), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
|
|
M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_ELF | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG
|
|
| M2_FEMALE | M2_COLLECT | M2_MAGIC,
|
|
M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
22, HI_LORD, ELWING),
|
|
#endif
|
|
MON(NAM("Hippocrates"), S_HUMAN,
|
|
LVL(20, 15, 0, 90, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_CLRC, 3, 8),
|
|
ATTK(AT_MAGC, AD_CLRC, 3, 8), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
|
|
| M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
26, HI_LORD, HIPPOCRATES),
|
|
MON(NAM("King Arthur"), S_HUMAN,
|
|
LVL(20, 15, 0, 90, 20), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_WEAP, AD_PHYS, 4, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
|
|
| M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
24, HI_LORD, KING_ARTHUR),
|
|
MON(NAM("Grand Master"), S_HUMAN,
|
|
LVL(25, 15, 0, 90, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 4, 10), ATTK(AT_KICK, AD_PHYS, 2, 8),
|
|
ATTK(AT_MAGC, AD_CLRC, 2, 8), ATTK(AT_MAGC, AD_CLRC, 2, 8),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN),
|
|
MR_FIRE | MR_ELEC | MR_SLEEP | MR_POISON, 0,
|
|
M1_HUMANOID | M1_SEE_INVIS | M1_HERBIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_MALE | M2_NASTY
|
|
| M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
30, CLR_BLACK, GRAND_MASTER),
|
|
MON(NAM("Arch Priest"), S_HUMAN,
|
|
LVL(25, 15, 7, 90, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_KICK, AD_PHYS, 2, 8),
|
|
ATTK(AT_MAGC, AD_CLRC, 2, 8), ATTK(AT_MAGC, AD_CLRC, 2, 8),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN),
|
|
MR_FIRE | MR_ELEC | MR_SLEEP | MR_POISON, 0,
|
|
M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_MALE | M2_COLLECT
|
|
| M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
30, CLR_WHITE, ARCH_PRIEST),
|
|
MON(NAM("Orion"), S_HUMAN, LVL(20, 15, 0, 90, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_MAGC, AD_SPEL, 4, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2200, 700, MS_LEADER, MZ_HUGE), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE | M1_SEE_INVIS | M1_SWIM | M1_AMPHIBIOUS,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
|
|
| M2_COLLECT | M2_MAGIC,
|
|
M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
24, HI_LORD, ORION),
|
|
/* Note: Master of Thieves is also the Tourist's nemesis.
|
|
*/
|
|
MON(NAM("Master of Thieves"), S_HUMAN,
|
|
LVL(20, 15, 0, 90, -20), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_WEAP, AD_PHYS, 2, 6),
|
|
ATTK(AT_CLAW, AD_SAMU, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), MR_STONE, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_MALE | M2_GREEDY
|
|
| M2_JEWELS | M2_COLLECT | M2_MAGIC,
|
|
M3_CLOSE | M3_INFRAVISIBLE,
|
|
24, HI_LORD, MASTER_OF_THIEVES),
|
|
MON(NAM("Lord Sato"), S_HUMAN, LVL(20, 15, 0, 90, 20), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_WEAP, AD_PHYS, 4, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
|
|
| M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
24, HI_LORD, LORD_SATO),
|
|
MON(NAM("Twoflower"), S_HUMAN,
|
|
LVL(20, 15, 10, 90, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE
|
|
| M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
22, HI_DOMESTIC, TWOFLOWER),
|
|
/* for a valkyrie hero, Norn's alignment will be changed to match hero's
|
|
starting alignment */
|
|
MON(NAM("Norn"), S_HUMAN,
|
|
LVL(20, 15, 0, 90, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_WEAP, AD_PHYS, 4, 10),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1800, 550, MS_LEADER, MZ_HUGE), MR_COLD, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_FEMALE
|
|
| M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
24, HI_LORD, NORN),
|
|
MON(NAM("Neferet the Green"), S_HUMAN,
|
|
LVL(20, 15, 0, 90, 0), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), ATTK(AT_MAGC, AD_SPEL, 2, 8),
|
|
ATTK(AT_MAGC, AD_SPEL, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_FEMALE | M2_PNAME | M2_PEACEFUL | M2_STRONG
|
|
| M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE,
|
|
25, CLR_GREEN, NEFERET_THE_GREEN),
|
|
/*
|
|
* quest nemeses
|
|
*/
|
|
MON(NAM("Minion of Huhetotl"), S_DEMON,
|
|
LVL(16, 12, -2, 75, -14), (G_NOCORPSE | G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 8, 4), ATTK(AT_WEAP, AD_PHYS, 4, 6),
|
|
ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_SAMU, 2, 6),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_LARGE),
|
|
MR_FIRE | MR_POISON | MR_STONE, 0, M1_FLY | M1_SEE_INVIS | M1_POIS,
|
|
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY
|
|
| M2_COLLECT,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
23, CLR_ORANGE, MINION_OF_HUHETOTL),
|
|
MON(NAM("Thoth Amon"), S_HUMAN,
|
|
LVL(16, 12, 0, 10, -14), (G_NOGEN | G_UNIQ | G_NOCORPSE),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_SAMU, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_POISON | MR_STONE, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_STRONG | M2_MALE | M2_STALK
|
|
| M2_HOSTILE | M2_NASTY | M2_COLLECT | M2_MAGIC,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE,
|
|
22, HI_LORD, THOTH_AMON),
|
|
/* Multi-headed, possessing the breath attacks of all the other dragons
|
|
* (selected at random when attacking). Despite being a superset of
|
|
* gold dragon, does not emit light. Also does not fly.
|
|
*/
|
|
MON(NAM("Chromatic Dragon"), S_DRAGON,
|
|
LVL(16, 12, 0, 30, -14), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_BREA, AD_RBRE, 6, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
ATTK(AT_CLAW, AD_SAMU, 2, 8), ATTK(AT_BITE, AD_PHYS, 4, 8),
|
|
ATTK(AT_BITE, AD_PHYS, 4, 8), ATTK(AT_STNG, AD_PHYS, 1, 6)),
|
|
SIZ(WT_DRAGON, 1700, MS_NEMESIS, MZ_GIGANTIC),
|
|
MR_FIRE | MR_COLD | MR_SLEEP | MR_DISINT | MR_ELEC | MR_POISON
|
|
| MR_ACID | MR_STONE,
|
|
MR_FIRE | MR_COLD | MR_SLEEP | MR_DISINT | MR_ELEC | MR_POISON
|
|
| MR_ACID | MR_STONE,
|
|
M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_SEE_INVIS | M1_POIS,
|
|
M2_NOPOLY | M2_HOSTILE | M2_FEMALE | M2_STALK | M2_STRONG | M2_NASTY
|
|
| M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
23, HI_LORD, CHROMATIC_DRAGON),
|
|
#if 0 /* OBSOLETE -- nemesis for 3.1.x/3.2.x elf quest when elf was a role */
|
|
MON(NAM("Goblin King"), S_ORC,
|
|
LVL(15, 12, 10, 0, -15), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
|
|
ATTK(AT_CLAW, AD_SAMU, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(750, 350, MS_NEMESIS, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_ORC | M2_HOSTILE | M2_STRONG | M2_STALK | M2_NASTY
|
|
| M2_MALE | M2_GREEDY | M2_JEWELS | M2_COLLECT | M2_MAGIC,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
18, HI_LORD, GOBLIN_KING),
|
|
#endif
|
|
MON(NAM("Cyclops"), S_GIANT,
|
|
LVL(18, 12, 0, 0, -15), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 4, 8), ATTK(AT_WEAP, AD_PHYS, 4, 8),
|
|
ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(1900, 700, MS_NEMESIS, MZ_HUGE), MR_STONE, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_STALK
|
|
| M2_HOSTILE | M2_NASTY | M2_MALE | M2_JEWELS | M2_COLLECT,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
23, CLR_GRAY, CYCLOPS),
|
|
MON(NAM("Ixoth"), S_DRAGON,
|
|
LVL(15, 12, -1, 20, -14), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_BREA, AD_FIRE, 8, 6), ATTK(AT_BITE, AD_PHYS, 4, 8),
|
|
ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_PHYS, 2, 4),
|
|
ATTK(AT_CLAW, AD_SAMU, 2, 4), NO_ATTK),
|
|
SIZ(WT_DRAGON, 1600, MS_NEMESIS, MZ_GIGANTIC), MR_FIRE | MR_STONE,
|
|
MR_FIRE,
|
|
M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_SEE_INVIS,
|
|
M2_NOPOLY | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_NASTY
|
|
| M2_STALK | M2_GREEDY | M2_JEWELS | M2_MAGIC,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE,
|
|
22, CLR_RED, IXOTH),
|
|
MON(NAM("Master Kaen"), S_HUMAN,
|
|
LVL(25, 12, -10, 10, -20), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 16, 2), ATTK(AT_CLAW, AD_PHYS, 16, 2),
|
|
ATTK(AT_MAGC, AD_CLRC, 0, 0), ATTK(AT_CLAW, AD_SAMU, 1, 4),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_POISON | MR_STONE,
|
|
MR_POISON, M1_HUMANOID | M1_HERBIVORE | M1_SEE_INVIS,
|
|
M2_NOPOLY | M2_HUMAN | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STRONG
|
|
| M2_NASTY | M2_STALK | M2_COLLECT | M2_MAGIC,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE,
|
|
31, HI_LORD, MASTER_KAEN),
|
|
MON(NAM("Nalzok"), S_DEMON, LVL(16, 12, -2, 85, -127),
|
|
(G_NOGEN | G_UNIQ | G_NOCORPSE),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 8, 4), ATTK(AT_WEAP, AD_PHYS, 4, 6),
|
|
ATTK(AT_MAGC, AD_SPEL, 0, 0), ATTK(AT_CLAW, AD_SAMU, 2, 6),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_LARGE),
|
|
MR_FIRE | MR_POISON | MR_STONE, 0, M1_FLY | M1_SEE_INVIS | M1_POIS,
|
|
M2_NOPOLY | M2_DEMON | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STRONG
|
|
| M2_STALK | M2_NASTY | M2_COLLECT,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
23, CLR_ORANGE, NALZOK),
|
|
MON(NAM("Scorpius"), S_SPIDER,
|
|
LVL(15, 12, 10, 0, -15), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_SAMU, 2, 6),
|
|
ATTK(AT_STNG, AD_DISE, 1, 4), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(750, 350, MS_NEMESIS, MZ_HUMAN), MR_POISON | MR_STONE, MR_POISON,
|
|
M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS | M1_CARNIVORE,
|
|
M2_NOPOLY | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_STALK
|
|
| M2_NASTY | M2_COLLECT | M2_MAGIC,
|
|
M3_WANTSARTI | M3_WAITFORU,
|
|
17, HI_LORD, SCORPIUS),
|
|
MON(NAM("Master Assassin"), S_HUMAN,
|
|
LVL(15, 12, 0, 30, 18), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_DRST, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 8),
|
|
ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_MALE | M2_HOSTILE | M2_STALK
|
|
| M2_NASTY | M2_COLLECT | M2_MAGIC,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE,
|
|
20, HI_LORD, MASTER_ASSASSIN),
|
|
/* A renegade daimyo who led a 13 year civil war against the shogun
|
|
* of his time.
|
|
*/
|
|
MON(NAM("Ashikaga Takauji"), S_HUMAN,
|
|
LVL(15, 12, 0, 40, -13), (G_NOGEN | G_UNIQ | G_NOCORPSE),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
|
|
ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_STALK
|
|
| M2_NASTY | M2_MALE | M2_COLLECT | M2_MAGIC,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE,
|
|
19, HI_LORD, ASHIKAGA_TAKAUJI),
|
|
/*
|
|
* Note: the Master of Thieves was defined above.
|
|
*/
|
|
MON(NAM("Lord Surtur"), S_GIANT,
|
|
LVL(15, 12, 2, 50, 12), (G_NOGEN | G_UNIQ),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 10), ATTK(AT_WEAP, AD_PHYS, 2, 10),
|
|
ATTK(AT_CLAW, AD_SAMU, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(2250, 850, MS_NEMESIS, MZ_HUGE), MR_FIRE | MR_STONE, MR_FIRE,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_GIANT | M2_MALE | M2_PNAME | M2_HOSTILE | M2_STALK
|
|
| M2_STRONG | M2_NASTY | M2_ROCKTHROW | M2_JEWELS | M2_COLLECT,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
19, HI_LORD, LORD_SURTUR),
|
|
MON(NAM("Dark One"), S_HUMAN,
|
|
LVL(15, 12, 0, 80, -10), (G_NOGEN | G_UNIQ | G_NOCORPSE),
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
ATTK(AT_CLAW, AD_SAMU, 1, 4), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_HOSTILE | M2_STALK | M2_NASTY
|
|
| M2_COLLECT | M2_MAGIC,
|
|
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE,
|
|
20, CLR_BLACK, DARK_ONE),
|
|
/*
|
|
* quest "guardians"
|
|
*/
|
|
MON(NAM("student"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, 3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, STUDENT),
|
|
MON(NAM("chieftain"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, CHIEFTAIN),
|
|
MON(NAM("neanderthal"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, 1), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, NEANDERTHAL),
|
|
#if 0 /* OBSOLETE -- guardian for 3.1.x/3.2.x elf quest when elf was a role */
|
|
MON(NAM("High-elf"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, -7), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_MAGC, AD_CLRC, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_ELF, 350, MS_GUARDIAN, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
|
|
M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_ELF | M2_PEACEFUL | M2_COLLECT,
|
|
M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, HIGH_ELF),
|
|
#endif
|
|
/* attendants used to be lawful but have been changed to neutral because
|
|
grow_up() promotes them to healer and the latter is always neutral */
|
|
MON(NAM("attendant"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), MR_POISON, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, ATTENDANT),
|
|
MON(NAM("page"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, 3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, PAGE),
|
|
MON(NAM("abbot"), S_HUMAN,
|
|
LVL(5, 12, 10, 20, 0), G_NOGEN,
|
|
A(ATTK(AT_CLAW, AD_PHYS, 8, 2), ATTK(AT_KICK, AD_STUN, 3, 2),
|
|
ATTK(AT_MAGC, AD_CLRC, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_HERBIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
8, HI_DOMESTIC, ABBOT),
|
|
MON(NAM("acolyte"), S_HUMAN,
|
|
LVL(5, 12, 10, 20, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_CLRC, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
8, HI_DOMESTIC, ACOLYTE),
|
|
MON(NAM("hunter"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, -7), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 4),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISION | M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, HUNTER),
|
|
MON(NAM("thug"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, -3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
|
|
| M2_STRONG | M2_GREEDY | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, THUG),
|
|
MON(NAM("ninja"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, 3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_HOSTILE | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, NINJA),
|
|
MON(NAM("roshi"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, 3), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE,
|
|
M2_NOPOLY | M2_HUMAN | M2_PEACEFUL | M2_STRONG | M2_COLLECT,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, ROSHI),
|
|
MON(NAM("guide"), S_HUMAN,
|
|
LVL(5, 12, 10, 20, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0), NO_ATTK,
|
|
NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
|
|
| M2_STRONG | M2_COLLECT | M2_MAGIC,
|
|
M3_INFRAVISIBLE,
|
|
8, HI_DOMESTIC, GUIDE),
|
|
/* warriors used to be chaotic but have been changed to lawful because
|
|
grow_up() promotes them to valkyrie; for a valkyrie hero, they might
|
|
be changed to neutral at game start; see the valkyrie comment above */
|
|
MON(NAM("warrior"), S_HUMAN,
|
|
LVL(5, 12, 10, 10, 1), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
|
|
| M2_STRONG | M2_COLLECT | M2_FEMALE,
|
|
M3_INFRAVISIBLE,
|
|
7, HI_DOMESTIC, WARRIOR),
|
|
MON(NAM("apprentice"), S_HUMAN,
|
|
LVL(5, 12, 10, 30, 0), G_NOGEN,
|
|
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
|
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
|
SIZ(WT_HUMAN, 400, MS_GUARDIAN, MZ_HUMAN), 0, 0,
|
|
M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_HUMAN | M2_PEACEFUL
|
|
| M2_STRONG | M2_COLLECT | M2_MAGIC,
|
|
M3_INFRAVISIBLE,
|
|
8, HI_DOMESTIC, APPRENTICE),
|
|
|
|
/*
|
|
* mons_init() in monst.c adds a terminator here, mons[NUMMONS].
|
|
* It is part of the mons[] array without introducing another type
|
|
* of monster.
|
|
*/
|
|
|
|
#if defined(MONS_ENUM) || defined(DUMP_ENUMS)
|
|
#undef MON
|
|
#undef MON3
|
|
#endif
|
|
|
|
/*monsters.h*/
|