From: Pasi Kallinen Date: Thu, 10 Feb 2022 11:41:50 +0000 (+0200) Subject: Monsters should growl even if you can't hear it X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c036c59b0014614e2b65c08effd797ce0f8f48bf;p=nethack Monsters should growl even if you can't hear it Call growl even if you are deaf, because growling also wakes up nearby monsters. Just make growl not show the message if you can't hear or see the monster. --- diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index 3d1353d86..1e69edf7a 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -774,6 +774,7 @@ magic traps can toggle intrinsic invisibility Death attacking a monster does drain life attack add unique Rider revival messages don't dereference NULL u.ustuck in dobuzz() when hero has been swallowed +monsters should growl even if you can't hear it Fixes to 3.7.0-x Problems that Were Exposed Via git Repository diff --git a/src/mon.c b/src/mon.c index 137cd2ed5..03f6a763a 100644 --- a/src/mon.c +++ b/src/mon.c @@ -3509,11 +3509,11 @@ setmangry(struct monst* mtmp, boolean via_attack) adjalign(2); } else adjalign(-1); /* attacking peaceful monsters is bad */ - if (couldsee(mtmp->mx, mtmp->my)) { - if (humanoid(mtmp->data) || mtmp->isshk || mtmp->isgd) + if (humanoid(mtmp->data) || mtmp->isshk || mtmp->isgd) { + if (couldsee(mtmp->mx, mtmp->my)) pline("%s gets angry!", Monnam(mtmp)); - else if (flags.verbose && !Deaf) - growl(mtmp); + } else { + growl(mtmp); } /* attacking your own quest leader will anger his or her guardians */ @@ -3613,7 +3613,7 @@ setmangry(struct monst* mtmp, boolean via_attack) } else if (mon->data->mlet == mtmp->data->mlet && big_little_match(mndx, monsndx(mon->data)) && !rn2(3)) { - if (!Deaf && !rn2(4)) { + if (!rn2(4)) { growl(mon); exclaimed = (iflags.last_msg == PLNMSG_GROWL); } diff --git a/src/sounds.c b/src/sounds.c index aced134ac..04de94c5c 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -348,7 +348,7 @@ growl(register struct monst* mtmp) { register const char *growl_verb = 0; - if (mtmp->msleeping || !mtmp->mcanmove || !mtmp->data->msound) + if (mtmp->msleeping || !mtmp->mcanmove || mtmp->data->msound == MS_SILENT) return; /* presumably nearness and soundok checks have already been made */ @@ -357,10 +357,12 @@ growl(register struct monst* mtmp) else growl_verb = growl_sound(mtmp); if (growl_verb) { - pline("%s %s!", Monnam(mtmp), vtense((char *) 0, growl_verb)); - iflags.last_msg = PLNMSG_GROWL; - if (g.context.run) - nomul(0); + if (canseemon(mtmp) || !Deaf) { + pline("%s %s!", Monnam(mtmp), vtense((char *) 0, growl_verb)); + iflags.last_msg = PLNMSG_GROWL; + if (g.context.run) + nomul(0); + } wake_nearto(mtmp->mx, mtmp->my, mtmp->data->mlevel * 18); } }