Prevent AI deadlock when they try to shoot and player gets an interrupt

This commit is contained in:
Asdow
2023-08-17 19:41:41 +03:00
parent e502727828
commit bacad9b4c0
+7
View File
@@ -675,6 +675,13 @@ void HandleSoldierAI( SOLDIERTYPE *pSoldier ) // FIXME - this function is named
// make sure we're not using combat AI
pSoldier->aiData.bAlertStatus = STATUS_GREEN;
}
// Poor hack to prevent AI deadlocking in case they change stance before firing and player gets an interrupt.
// Without this, if player doesn't move any mercs, the AI soldier won't fire and will wait until the deadlock is broken
// By canceling the AI action, the AI can reconsider actions and oddly enough, usually decides to fire but this time successfully.
if (pSoldier->aiData.bAction == AI_ACTION_FIRE_GUN && pSoldier->aiData.bLastAction == AI_ACTION_NONE)
{
CancelAIAction(pSoldier, FALSE);
}
pSoldier->aiData.bNewSituation = WAS_NEW_SITUATION;
}
}