From 8be3688b1aee54438a5fba90624aa39250ad7012 Mon Sep 17 00:00:00 2001 From: Yamagi Burmeister Date: Sat, 31 Aug 2019 11:08:44 +0200 Subject: [PATCH] Fix berserker fidget animation aborting attack. M_MoveFrame() calls first the AI functions that decide if a monster should attack or not. After that the monsters think function is called which walks through berserk_frames_stand[]. Even if the AI function found an enemy and decided to attack, the monster is still standing for this frame and berserker_fidget() is called. It may override the earlier earlier decision, aborting the attack. Even worse this may let the berserker stuck, because AI_STAND_GROUND may be cleared which prevents further attacks. This bug was present in the original code, so this is small gameplay change. It's likely also present in both addons. Reported and analyzed by @BjossiAlfreds in issue #433. He also suggested the fix. --- src/monster/berserker/berserker.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/monster/berserker/berserker.c b/src/monster/berserker/berserker.c index cfc864b..01e71ba 100644 --- a/src/monster/berserker/berserker.c +++ b/src/monster/berserker/berserker.c @@ -103,6 +103,11 @@ berserk_fidget(edict_t *self) return; } + if (self->enemy) + { + return; + } + if (self->monsterinfo.aiflags & AI_STAND_GROUND) { return;