monster order rules
<Someone> wrote: > From the mkclass() comments: > > /* Assumption #2: monsters of a given class are presented in ascending > * order of strength. > */ > > And monst.c: > > * Rule #2: monsters of a given class are presented in ascending > * order of strength. > > * Rule #4: monster subclasses (e.g. giants) should be kept > * together, unless it violates Rule 2. NOGEN monsters > * won't violate Rule 2. > > Inspecting my monster-difficulty spoiler, I see the following places > that these precepts are violated: do they cause potential problems? > (Insofar as occasionally incorrectly miscalculating the probabilities > for monster generation is a "problem", that is...) > > SPECIES DIF > ~~~~~~~~~~~~~~~~~~~~~~ ~~~ > d dog 5 > d large dog 7 > d dingo 5 > > d warg 8 > d winter wolf cub 7 > d winter wolf 9 > > u white unicorn 6 > u gray unicorn 6 > u black unicorn 6 > u pony 4 > > H frost giant 13 > H storm giant 19 > H ettin 13 > > P black pudding 12 > P green slime 8 > > S pit viper 9 > S python 8 > S cobra 10 > > Z giant zombie 9 > Z ghoul 5 > > @ nurse 13 > @ soldier 8 > @ sergeant 10 > > & horned devil 9 > & succubus 8 > > & balrog 20 > & sandestin 15 > > (I've just realised that these may have already been fixed, and > waiting on a file-compatibility-breaking release; if so, ignore me :-)
This commit is contained in:
@@ -136,4 +136,5 @@ move all flags that are system or port specific from flag struct to sysflags
|
||||
struct which is used only if SYSFLAGS is defined
|
||||
all fields in flags struct are unconditionally present
|
||||
monst cham field now a short and uses mons[] index
|
||||
rearrange some monster ordering to follow rule #2 listed at top of monst.c
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)patchlevel.h 3.4 2004/12/15 */
|
||||
/* SCCS Id: @(#)patchlevel.h 3.4 2004/12/16 */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
||||
* and save files.
|
||||
*/
|
||||
#define EDITLEVEL 15
|
||||
#define EDITLEVEL 16
|
||||
|
||||
#define COPYRIGHT_BANNER_A \
|
||||
"NetHack, Copyright 1985-2004"
|
||||
|
||||
154
src/monst.c
154
src/monst.c
@@ -231,6 +231,13 @@ NEARDATA struct permonst mons[] = {
|
||||
SIZ(150, 150, 0, MS_BARK, MZ_SMALL), 0, 0,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_DOMESTIC, M3_INFRAVISIBLE,
|
||||
HI_DOMESTIC),
|
||||
MON("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, 0, MS_BARK, MZ_MEDIUM), 0, 0,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
||||
CLR_YELLOW),
|
||||
MON("dog", S_DOG,
|
||||
LVL(4, 16, 5, 0, 0), (G_GENO|1),
|
||||
A(ATTK(AT_BITE, AD_PHYS, 1 ,6),
|
||||
@@ -245,13 +252,6 @@ NEARDATA struct permonst mons[] = {
|
||||
SIZ(800, 250, 0, MS_BARK, MZ_MEDIUM), 0, 0,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE,
|
||||
M2_STRONG|M2_DOMESTIC, M3_INFRAVISIBLE, HI_DOMESTIC),
|
||||
MON("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, 0, MS_BARK, MZ_MEDIUM), 0, 0,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
||||
CLR_YELLOW),
|
||||
MON("wolf", S_DOG,
|
||||
LVL(5, 12, 4, 0, 0), (G_GENO|G_SGROUP|2),
|
||||
A(ATTK(AT_BITE, AD_PHYS, 2, 4),
|
||||
@@ -266,6 +266,12 @@ NEARDATA struct permonst mons[] = {
|
||||
SIZ(500, 250, 0, MS_BARK, MZ_MEDIUM), MR_POISON, 0,
|
||||
M1_NOHANDS|M1_POIS|M1_REGEN|M1_CARNIVORE,
|
||||
M2_NOPOLY|M2_WERE|M2_HOSTILE, M3_INFRAVISIBLE, CLR_BROWN),
|
||||
MON("winter wolf cub", 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, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
SIZ(250, 200, 0, MS_BARK, MZ_SMALL), MR_COLD, MR_COLD,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, 0, CLR_CYAN),
|
||||
MON("warg", S_DOG,
|
||||
LVL(7, 12, 4, 0, -5), (G_GENO|G_SGROUP|2),
|
||||
A(ATTK(AT_BITE, AD_PHYS, 2, 6),
|
||||
@@ -273,12 +279,6 @@ NEARDATA struct permonst mons[] = {
|
||||
SIZ(850, 350, 0, MS_BARK, MZ_MEDIUM), 0, 0,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, M3_INFRAVISIBLE,
|
||||
CLR_BROWN),
|
||||
MON("winter wolf cub", 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, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
SIZ(250, 200, 0, MS_BARK, MZ_SMALL), MR_COLD, MR_COLD,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_CARNIVORE, M2_HOSTILE, 0, CLR_CYAN),
|
||||
MON("winter wolf", S_DOG,
|
||||
LVL(7, 12, 4, 20, 0), (G_NOHELL|G_GENO|1),
|
||||
A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BREA, AD_COLD, 2, 6),
|
||||
@@ -890,6 +890,13 @@ NEARDATA struct permonst mons[] = {
|
||||
/*
|
||||
* unicorns and horses
|
||||
*/
|
||||
MON("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, 0, MS_NEIGH, MZ_MEDIUM), 0, 0,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_HERBIVORE, M2_WANDER|M2_STRONG|M2_DOMESTIC,
|
||||
M3_INFRAVISIBLE, CLR_BROWN),
|
||||
MON("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),
|
||||
@@ -911,13 +918,6 @@ NEARDATA struct permonst mons[] = {
|
||||
SIZ(1300, 300, 0, MS_NEIGH, MZ_LARGE), MR_POISON, MR_POISON,
|
||||
M1_NOHANDS|M1_HERBIVORE, M2_WANDER|M2_STRONG|M2_JEWELS,
|
||||
M3_INFRAVISIBLE, CLR_BLACK),
|
||||
MON("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, 0, MS_NEIGH, MZ_MEDIUM), 0, 0,
|
||||
M1_ANIMAL|M1_NOHANDS|M1_HERBIVORE, M2_WANDER|M2_STRONG|M2_DOMESTIC,
|
||||
M3_INFRAVISIBLE, CLR_BROWN),
|
||||
MON("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),
|
||||
@@ -1538,14 +1538,6 @@ struct permonst _mons2[] = {
|
||||
M1_HUMANOID|M1_CARNIVORE,
|
||||
M2_GIANT|M2_STRONG|M2_ROCKTHROW|M2_NASTY|M2_COLLECT|M2_JEWELS,
|
||||
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_WHITE),
|
||||
MON("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, 0, 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, CLR_BLUE),
|
||||
MON("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),
|
||||
@@ -1554,6 +1546,14 @@ struct permonst _mons2[] = {
|
||||
M1_ANIMAL|M1_HUMANOID|M1_CARNIVORE,
|
||||
M2_HOSTILE|M2_STRONG|M2_NASTY|M2_COLLECT,
|
||||
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BROWN),
|
||||
MON("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, 0, 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, CLR_BLUE),
|
||||
MON("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),
|
||||
@@ -1836,15 +1836,6 @@ struct permonst _mons2[] = {
|
||||
M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
|
||||
M1_MINDLESS|M1_OMNIVORE|M1_ACID,
|
||||
M2_HOSTILE|M2_NEUTER, 0, CLR_BROWN),
|
||||
MON("black pudding", S_PUDDING,
|
||||
LVL(10, 6, 6, 0, 0), (G_GENO|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, 0, 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, CLR_BLACK),
|
||||
MON("green slime", S_PUDDING,
|
||||
LVL(6, 6, 6, 0, 0), (G_HELL|G_GENO|1),
|
||||
A(ATTK(AT_TUCH, AD_SLIM, 1, 4), ATTK(AT_NONE, AD_SLIM, 0, 0),
|
||||
@@ -1854,6 +1845,15 @@ struct permonst _mons2[] = {
|
||||
M1_BREATHLESS|M1_AMORPHOUS|M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|
|
||||
M1_MINDLESS|M1_OMNIVORE|M1_ACID|M1_POIS,
|
||||
M2_HOSTILE|M2_NEUTER, 0, CLR_GREEN),
|
||||
MON("black pudding", S_PUDDING,
|
||||
LVL(10, 6, 6, 0, 0), (G_GENO|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, 0, 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, CLR_BLACK),
|
||||
/*
|
||||
* Quantum mechanics
|
||||
*/
|
||||
@@ -1908,15 +1908,6 @@ struct permonst _mons2[] = {
|
||||
M1_SWIM|M1_CONCEAL|M1_NOLIMBS|M1_ANIMAL|M1_SLITHY|M1_POIS|
|
||||
M1_CARNIVORE|M1_OVIPAROUS|M1_NOTAKE,
|
||||
M2_HOSTILE, 0, CLR_RED),
|
||||
MON("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, 0, 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, CLR_BLUE),
|
||||
MON("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),
|
||||
@@ -1926,6 +1917,15 @@ struct permonst _mons2[] = {
|
||||
M1_SWIM|M1_NOLIMBS|M1_ANIMAL|M1_SLITHY|
|
||||
M1_CARNIVORE|M1_OVIPAROUS|M1_NOTAKE,
|
||||
M2_HOSTILE|M2_STRONG, M3_INFRAVISION, CLR_MAGENTA),
|
||||
MON("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, 0, 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, CLR_BLUE),
|
||||
MON("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),
|
||||
@@ -2163,6 +2163,14 @@ struct permonst _mons2[] = {
|
||||
MR_COLD|MR_SLEEP|MR_POISON, 0,
|
||||
M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
|
||||
M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_STRONG, M3_INFRAVISION, CLR_BLUE),
|
||||
MON("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, 0, MS_SILENT, MZ_SMALL),
|
||||
MR_COLD|MR_SLEEP|MR_POISON, 0,
|
||||
M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
|
||||
M2_UNDEAD|M2_WANDER|M2_HOSTILE, M3_INFRAVISION, CLR_BLACK),
|
||||
MON("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),
|
||||
@@ -2172,14 +2180,6 @@ struct permonst _mons2[] = {
|
||||
M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
|
||||
M2_UNDEAD|M2_STALK|M2_HOSTILE|M2_GIANT|M2_STRONG, M3_INFRAVISION,
|
||||
CLR_CYAN),
|
||||
MON("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, 0, MS_SILENT, MZ_SMALL),
|
||||
MR_COLD|MR_SLEEP|MR_POISON, 0,
|
||||
M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID|M1_POIS,
|
||||
M2_UNDEAD|M2_WANDER|M2_HOSTILE, M3_INFRAVISION, CLR_BLACK),
|
||||
MON("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),
|
||||
@@ -2360,13 +2360,6 @@ struct permonst _mons2[] = {
|
||||
M1_HUMANOID|M1_OMNIVORE,
|
||||
M2_NOPOLY|M2_HUMAN|M2_HOSTILE|M2_STRONG|M2_COLLECT|M2_SHAPESHIFTER,
|
||||
M3_INFRAVISIBLE, HI_DOMESTIC),
|
||||
MON("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, 0, MS_NURSE, MZ_HUMAN), MR_POISON, MR_POISON,
|
||||
M1_HUMANOID|M1_OMNIVORE, M2_NOPOLY|M2_HUMAN|M2_HOSTILE,
|
||||
M3_INFRAVISIBLE, HI_DOMESTIC),
|
||||
MON("shopkeeper", S_HUMAN,
|
||||
LVL(12, 18, 0, 50, 0), G_NOGEN,
|
||||
A(ATTK(AT_WEAP, AD_PHYS, 4, 4), ATTK(AT_WEAP, AD_PHYS, 4, 4),
|
||||
@@ -2432,6 +2425,13 @@ struct permonst _mons2[] = {
|
||||
M1_HUMANOID|M1_OMNIVORE,
|
||||
M2_NOPOLY|M2_HUMAN|M2_MERC|M2_STALK|M2_HOSTILE|M2_STRONG|M2_COLLECT,
|
||||
M3_INFRAVISIBLE, CLR_RED),
|
||||
MON("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, 0, MS_NURSE, MZ_HUMAN), MR_POISON, MR_POISON,
|
||||
M1_HUMANOID|M1_OMNIVORE, M2_NOPOLY|M2_HUMAN|M2_HOSTILE,
|
||||
M3_INFRAVISIBLE, HI_DOMESTIC),
|
||||
MON("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),
|
||||
@@ -2543,15 +2543,6 @@ struct permonst _mons2[] = {
|
||||
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_BLUE),
|
||||
/* standard demons & devils
|
||||
*/
|
||||
MON("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, 0, 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,
|
||||
CLR_BROWN),
|
||||
#ifdef SEDUCE
|
||||
# define SEDUCTION_ATTACKS \
|
||||
A(ATTK(AT_BITE, AD_SSEX, 0, 0), ATTK(AT_CLAW, AD_PHYS, 1, 3), \
|
||||
@@ -2568,6 +2559,15 @@ struct permonst _mons2[] = {
|
||||
M1_HUMANOID|M1_FLY|M1_POIS,
|
||||
M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_FEMALE,
|
||||
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
|
||||
MON("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, 0, 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,
|
||||
CLR_BROWN),
|
||||
MON("incubus", S_DEMON,
|
||||
LVL(6, 12, 0, 70, -9), (G_NOCORPSE|1),
|
||||
SEDUCTION_ATTACKS,
|
||||
@@ -2650,6 +2650,13 @@ struct permonst _mons2[] = {
|
||||
M1_SEE_INVIS|M1_POIS,
|
||||
M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_COLLECT,
|
||||
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_RED),
|
||||
MON("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, 0, MS_CUSS, MZ_HUMAN), MR_STONE, 0,
|
||||
M1_HUMANOID, M2_NOPOLY|M2_STALK|M2_STRONG|M2_COLLECT|M2_SHAPESHIFTER,
|
||||
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
|
||||
MON("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),
|
||||
@@ -2787,13 +2794,6 @@ struct permonst _mons2[] = {
|
||||
SIZ(1500, 400, 0, MS_DJINNI, MZ_HUMAN), MR_POISON|MR_STONE, 0,
|
||||
M1_HUMANOID|M1_FLY|M1_POIS,
|
||||
M2_NOPOLY|M2_STALK|M2_COLLECT, M3_INFRAVISIBLE, CLR_YELLOW),
|
||||
MON("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, 0, MS_CUSS, MZ_HUMAN), MR_STONE, 0,
|
||||
M1_HUMANOID, M2_NOPOLY|M2_STALK|M2_STRONG|M2_COLLECT|M2_SHAPESHIFTER,
|
||||
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
|
||||
/*
|
||||
* sea monsters
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user