From 501ed1e71a7e5a4ff5e1e44bbdd44d57ea879543 Mon Sep 17 00:00:00 2001 From: Yamagi Burmeister Date: Sat, 31 Aug 2019 11:11:04 +0200 Subject: [PATCH] Try to fix monsters getting stuck by waiting forever for their enemy. 44472722e added some sanity checks to the AI code. The checks in ai_run() are likely wrong because the enemy entity might be already NULL if we arrive their. By aborting early the code is unable to determine a new enemy or return the monster to idle state, so the monster will wait forever for an enemy that'll never come. This happens only in monster vs. monster fights. Never in monster vs. player, that game ends if the player dies. In theory this change should be harmless, because if the enemy entity is gone it won't generate sound targets now be visible. If the game crashes by self->enemy being NULL we've got a problem elsewere. This was reported by @BjossiAlfreds in #483. He also suggested the fix --- src/g_ai.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_ai.c b/src/g_ai.c index e9314f6..4ad1df3 100644 --- a/src/g_ai.c +++ b/src/g_ai.c @@ -1375,7 +1375,7 @@ ai_run(edict_t *self, float dist) qboolean gotcha = false; edict_t *realEnemy; - if (!self || !self->enemy || !self->enemy->inuse) + if (!self) { return; }