fix github issue #894 - guardian nagas can't grab

Issue reported by eakaye:  for a 'hugs' attack to succeed, the
monster must have at least three attacks and the two preceding the
hug attack need to both hit.  Guardian nagas had three attacks but
the first was melee 'bite' and the second was ranged 'spit'.  Those
are mutually exclusive, so they would never both hit and nagas never
grabbed their prey.

Make the spit attack be first, the bite attack be second, insert a
touch attack for 0 damage third, and make the hug be fourth.  Also,
change their hug damage type from 'phys' to 'wrap'.  The first and
2nd+3rd+4th are still mutually exclusive.

The resulting message feedback left something to be desired and has
been tweaked.

The difficulty-level formula used by deprecated 'makedefs -m' now
generates 17 rather than 16 for guardian naga so I changed revised
monster to match.  They are definitely more difficult now that their
constriction attack has a chance to hit.

Fixes #894
This commit is contained in:
PatR
2022-10-07 01:07:43 -07:00
parent 14ef7b6005
commit 01dea35a22
3 changed files with 49 additions and 28 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 monsters.h $NHDT-Date: 1648318980 2022/03/26 18:23:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.97 $ */
/* NetHack 3.7 monsters.h $NHDT-Date: 1665130023 2022/10/07 08:07:03 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.103 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Michael Allison, 2006. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1707,8 +1707,8 @@
M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_NOTAKE | M1_OMNIVORE,
M2_STRONG, 0, 4, CLR_GREEN, GUARDIAN_NAGA_HATCHLING),
MON("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),
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,
@@ -1722,19 +1722,25 @@
| M1_NOTAKE | M1_CARNIVORE,
M2_STRONG, 0, 10, CLR_BLACK, BLACK_NAGA),
MON("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),
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 its 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("guardian naga", S_NAGA, LVL(12, 16, 0, 50, 7), (G_GENO | 1),
A(ATTK(AT_BITE, AD_PLYS, 1, 6), ATTK(AT_SPIT, AD_DRST, 1, 6),
ATTK(AT_HUGS, AD_PHYS, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK),
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, 16, CLR_GREEN, GUARDIAN_NAGA),
M2_STRONG, 0, 17, CLR_GREEN, GUARDIAN_NAGA),
/*
* Ogres
*/