From 6089e9a3b8059907e094c64be5e2740f9ae4b248 Mon Sep 17 00:00:00 2001 From: Flugente Date: Sun, 3 Apr 2016 14:41:52 +0000 Subject: [PATCH] Fix: CTD when tring to check for panic triggers if no enemy is present git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8133 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- TacticalAI/PanicButtons.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/TacticalAI/PanicButtons.cpp b/TacticalAI/PanicButtons.cpp index 9c868ab8..008993c8 100644 --- a/TacticalAI/PanicButtons.cpp +++ b/TacticalAI/PanicButtons.cpp @@ -187,7 +187,7 @@ void PossiblyMakeThisEnemyChosenOne( SOLDIERTYPE * pSoldier ) //INT8 bOldKeys; INT8 bPanicTrigger; INT32 sPanicTriggerGridNo; - UINT32 uiPercentEnemiesKilled; + UINT32 uiPercentEnemiesKilled = 0; if ( ! (gTacticalStatus.fPanicFlags & PANIC_TRIGGERS_HERE) ) { @@ -200,7 +200,6 @@ void PossiblyMakeThisEnemyChosenOne( SOLDIERTYPE * pSoldier ) return; } - bPanicTrigger = ClosestPanicTrigger( pSoldier ); if (bPanicTrigger == -1) { @@ -209,7 +208,9 @@ void PossiblyMakeThisEnemyChosenOne( SOLDIERTYPE * pSoldier ) sPanicTriggerGridNo = gTacticalStatus.sPanicTriggerGridNo[ bPanicTrigger ]; - uiPercentEnemiesKilled = (UINT32)( 100 * (UINT32)(gTacticalStatus.ubArmyGuysKilled) / (UINT32)( gTacticalStatus.Team[ ENEMY_TEAM ].bMenInSector + gTacticalStatus.ubArmyGuysKilled ) ); + if ( gTacticalStatus.Team[ENEMY_TEAM].bMenInSector + gTacticalStatus.ubArmyGuysKilled > 0 ) + uiPercentEnemiesKilled = (UINT32)( 100 * (UINT32)(gTacticalStatus.ubArmyGuysKilled) / (UINT32)( gTacticalStatus.Team[ ENEMY_TEAM ].bMenInSector + gTacticalStatus.ubArmyGuysKilled ) ); + if ( gTacticalStatus.ubPanicTolerance[ bPanicTrigger ] > uiPercentEnemiesKilled ) { // not yet... not yet @@ -426,15 +427,15 @@ INT8 ClosestPanicTrigger( SOLDIERTYPE * pSoldier ) INT16 sDistance; INT16 sClosestDistance = 1000; INT8 bClosestTrigger = -1; - UINT32 uiPercentEnemiesKilled; + UINT32 uiPercentEnemiesKilled = 0; - uiPercentEnemiesKilled = (UINT32)( 100 * (UINT32)(gTacticalStatus.ubArmyGuysKilled) / (UINT32)( gTacticalStatus.Team[ ENEMY_TEAM ].bMenInSector + gTacticalStatus.ubArmyGuysKilled ) ); + if ( gTacticalStatus.Team[ENEMY_TEAM].bMenInSector + gTacticalStatus.ubArmyGuysKilled > 0 ) + uiPercentEnemiesKilled = (UINT32)(100 * (UINT32)(gTacticalStatus.ubArmyGuysKilled) / (UINT32)(gTacticalStatus.Team[ENEMY_TEAM].bMenInSector + gTacticalStatus.ubArmyGuysKilled)); - for ( bLoop = 0; bLoop < NUM_PANIC_TRIGGERS; bLoop++ ) + for ( bLoop = 0; bLoop < NUM_PANIC_TRIGGERS; ++bLoop ) { if (!TileIsOutOfBounds(gTacticalStatus.sPanicTriggerGridNo[ bLoop ])) { - if ( gTacticalStatus.ubPanicTolerance[ bLoop ] > uiPercentEnemiesKilled ) { // not yet... not yet...