diff --git a/doc/fixes35.0 b/doc/fixes35.0 index ca413c19d..f315ef025 100644 --- a/doc/fixes35.0 +++ b/doc/fixes35.0 @@ -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 diff --git a/include/patchlevel.h b/include/patchlevel.h index 3ab6a90d5..9b888efca 100644 --- a/include/patchlevel.h +++ b/include/patchlevel.h @@ -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" diff --git a/src/monst.c b/src/monst.c index 03356569c..904e3d620 100644 --- a/src/monst.c +++ b/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 */