Fix monsters ignoring the player under certain circumstances

In ai_checkattack() is a check against AI_SOUND_TARGET. If the player
made a noice and the the monster noticed this noise it's true. If
that noice was more than 5 seconds ago the monster forgets that event
and continues with it's search for the player. Otherwise it informs
the surrounding monsters that something interesting has happened and
then returns false. So the problem is: Even if the monster heard the
player and can see him, it aborts at this point.

Fix this by adding an additional visibility check. Do the sound
checking only if the player is not visible, otherwise just continue.

This was reported by shoober420 and debbuged by maraakate. This fix
was DanielGibons idea. This commit fixes yquake2 issue #162.
This commit is contained in:
Yamagi Burmeister 2016-12-18 09:15:21 +01:00
parent 60321a282f
commit 20cdbfe1c0

View file

@ -913,7 +913,7 @@ ai_checkattack(edict_t *self, float dist)
return false;
}
if (self->monsterinfo.aiflags & AI_SOUND_TARGET)
if (!visible(self, self->goalentity) && (self->monsterinfo.aiflags & AI_SOUND_TARGET))
{
if ((level.time - self->enemy->teleport_time) > 5.0)
{