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.
This commit is contained in:
Pasi Kallinen
2022-02-10 13:41:50 +02:00
parent 675fc39a06
commit c036c59b00
3 changed files with 13 additions and 10 deletions

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);
}
}