mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-26 14:30:48 +00:00
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.
This commit is contained in:
parent
5c17eb0132
commit
5136ceb123
1 changed files with 2 additions and 3 deletions
|
@ -1131,7 +1131,7 @@ ai_run(edict_t *self, float dist)
|
||||||
float left, center, right;
|
float left, center, right;
|
||||||
vec3_t left_target, right_target;
|
vec3_t left_target, right_target;
|
||||||
|
|
||||||
if (!self || !self->enemy || !self->enemy->inuse)
|
if (!self)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1149,8 +1149,7 @@ ai_run(edict_t *self, float dist)
|
||||||
|
|
||||||
if (VectorLength(v) < 64)
|
if (VectorLength(v) < 64)
|
||||||
{
|
{
|
||||||
self->monsterinfo.aiflags |=
|
self->monsterinfo.aiflags |= (AI_STAND_GROUND | AI_TEMP_STAND_GROUND);
|
||||||
(AI_STAND_GROUND | AI_TEMP_STAND_GROUND);
|
|
||||||
self->monsterinfo.stand(self);
|
self->monsterinfo.stand(self);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue