-/* NetHack 3.6 monst.c $NHDT-Date: 1445556875 2015/10/22 23:34:35 $ $NHDT-Branch: master $:$NHDT-Revision: 1.53 $ */
+/* NetHack 3.6 monst.c $NHDT-Date: 1510531569 2017/11/13 00:06:09 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.59 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
+/*-Copyright (c) Michael Allison, 2006. */
/* NetHack may be freely redistributed. See license for details. */
#include "config.h"
void NDECL(monst_init);
/*
- * Entry Format: (from permonst.h)
+ * Entry Format: (from permonst.h)
*
- * name, symbol (S_* defines),
- * difficulty 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)
- * symbol color (C(x) macro)
+ * name, symbol (S_* defines),
+ * difficulty 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)
+ * symbol color (C(x) macro)
+ *
+ * For AT_BREA attacks, '# sides' is ignored; 6 is used for most
+ * damage types, 25 for sleep, not applicable for death or poison.
*/
#define MON(nam, sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, col) \
{ \
}
/*
- * Rule #1: monsters of a given class are contiguous in the
- * mons[] array.
+ * 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 #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 #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.
+ * 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 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.
+ * * 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.
+ * * 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.).
+ * * 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).
+ * * 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
M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE, CLR_BROWN),
MON("\93~\98T\82Ì\8eq", S_DOG, LVL(5, 12, 4, 0, -5),
(G_NOHELL | G_GENO | G_SGROUP | 2),
- A(ATTK(AT_BITE, AD_PHYS, 1, 8), ATTK(AT_BREA, AD_COLD, 1, 8), NO_ATTK,
+ 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, CLR_CYAN),
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, HI_ZAP),
#if 0 /* not yet implemented */
MON("\83r\83z\83\8b\83_\81[", 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, CLR_BROWN),
+ 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, CLR_BROWN),
#endif
/*
* felines
M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, CLR_CYAN),
MON("\83G\83l\83\8b\83M\81[\82Ì\89Q", 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, 4, 6),
+ 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,
M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, DRAGON_SILVER),
#if 0 /* DEFERRED */
MON("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, CLR_CYAN),
+ 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, CLR_CYAN),
#endif
MON("\90Ô\90F\83h\83\89\83S\83\93\82Ì\8eq\8b\9f", 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,
0, DRAGON_SILVER),
#if 0 /* DEFERRED */
MON("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, CLR_CYAN),
+ 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, CLR_CYAN),
#endif
MON("\90Ô\90F\83h\83\89\83S\83\93", 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),
| M1_CARNIVORE,
M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
0, CLR_ORANGE),
+ /* disintegration breath is actually all or nothing, not 1d255 */
MON("\8d\95\83h\83\89\83S\83\93", S_DRAGON, LVL(15, 9, -1, 20, -6), (G_GENO | 1),
- A(ATTK(AT_BREA, AD_DISN, 4, 10), ATTK(AT_BITE, AD_PHYS, 3, 8),
+ 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,
CLR_ORANGE),
#if 0 /* DEFERRED */
MON("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,
+ 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,
HI_LORD),
#endif
/*
M3_INFRAVISIBLE, CLR_BLUE),
#if 0 /* DEFERRED */
MON("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
+ 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, HI_ZAP),
#endif
- MON("\8bz\8c\8c\8bS\83\94\83\89\83h", S_VAMPIRE, LVL(14, 18, -3, 80, -10),
+ MON("\8bz\8c\8c\8bS\83\94\83\89\83h", S_VAMPIRE, LVL(28, 26, -6, 80, -10),
(G_NOGEN | G_NOCORPSE | G_UNIQ),
- A(ATTK(AT_WEAP, AD_PHYS, 1, 10), ATTK(AT_BITE, AD_DRLI, 1, 10),
+ 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,
/*
* 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("\89\8e", 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_CARNIVORE, 0, M3_INFRAVISIBLE, CLR_GRAY),
+ M1_ANIMAL | M1_HUMANOID | M1_OMNIVORE, 0, M3_INFRAVISIBLE, CLR_GRAY),
MON("\97Þ\90l\89\8e", 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_CARNIVORE, M2_STRONG, M3_INFRAVISIBLE,
+ M1_ANIMAL | M1_HUMANOID | M1_OMNIVORE, M2_STRONG, M3_INFRAVISIBLE,
CLR_BROWN),
MON("\83A\83E\83\8b\83x\83A", 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),
M1_HUMANOID | M1_POIS | M1_SWIM,
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_COLLECT,
M3_INFRAVISIBLE | M3_INFRAVISION, CLR_BLUE),
-/* standard demons & devils
- */
+ /* 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)
MR_FIRE | MR_POISON, 0, M1_HUMANOID | M1_FLY | M1_POIS,
M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_MALE,
M3_INFRAVISIBLE | M3_INFRAVISION, CLR_GRAY),
- /* Used by AD&D for a type of demon, originally one of the Furies */
- /* and spelled this way */
+ /* Used by AD&D for a type of demon, originally one of the Furies
+ and spelled this way */
MON("\83C\83\8a\83j\83X", S_DEMON, LVL(7, 12, 2, 30, 10),
(G_HELL | G_NOCORPSE | G_SGROUP | 2),
A(ATTK(AT_WEAP, AD_DRST, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
| M2_PRINCE | M2_MALE,
M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION, HI_LORD),
- /* Riders -- the Four Horsemen of the Apocalypse ("War" == player)
+ /* Riders -- the Four Horsemen of the Apocalypse ("War" == player);
+ * depicted with '&' but do not have M2_DEMON set.
*/
MON("\83f\83X", 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,
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, HI_LORD),
-/* other demons
- */
+ /* other demons
+ */
#ifdef MAIL
MON("\83\81\83C\83\8b\83f\81[\83\82\83\93", S_DEMON, LVL(56, 24, 10, 127, 0),
(G_NOGEN | G_NOCORPSE),
/*
* dummy monster needed for visual interface
- */
- /* (marking it unique prevents figurines)
+ * (marking it unique prevents figurines)
*/
MON("\83\8d\83\93\83O\83\8f\81[\83\80\82Ì\90K\94ö", 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, CLR_BROWN),
-
/* Note:
* Worm tail must be between the normal monsters and the special
* quest & pseudo-character ones because an optimization in the
| M2_COLLECT | M2_MAGIC,
M3_CLOSE | M3_INFRAVISIBLE, HI_LORD),
#if 0 /* OBSOLETE */
- /* Two for elves - one of each sex.
- */
+ /* Two for elves - one of each sex.
+ */
MON("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
+ 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, HI_LORD),
+ M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE, HI_LORD),
MON("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
+ 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, HI_LORD),
+ M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE, HI_LORD),
#endif
MON("\83q\83|\83N\83\89\83e\83X", S_HUMAN, LVL(20, 12, 0, 40, 0), (G_NOGEN | G_UNIQ),
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
*/
MON("\83N\83\8d\83}\83e\83B\83b\83N\81E\83h\83\89\83S\83\93", S_DRAGON, LVL(16, 12, 0, 30, -14),
(G_NOGEN | G_UNIQ),
- A(ATTK(AT_BREA, AD_RBRE, 6, 8), ATTK(AT_MAGC, AD_SPEL, 0, 0),
+ 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),
M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, HI_LORD),
#if 0 /* OBSOLETE */
MON("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
+ 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,
+ M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
HI_LORD),
#endif
MON("\83T\83C\83N\83\8d\83v\83X", S_GIANT, LVL(18, 12, 0, 0, -15), (G_NOGEN | G_UNIQ),
M3_INFRAVISIBLE, HI_DOMESTIC),
#if 0 /* OBSOLETE */
MON("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, HI_DOMESTIC),
+ 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, HI_DOMESTIC),
#endif
MON("\90\8f\8ds\88õ", 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,
struct attack sa_yes[NATTK] = SEDUCTION_ATTACKS_YES;
struct attack sa_no[NATTK] = SEDUCTION_ATTACKS_NO;
-
#endif
/*monst.c*/