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
This commit is contained in:
Flugente
2016-04-03 14:41:52 +00:00
parent 01ffd3eaf2
commit 6089e9a3b8
+8 -7
View File
@@ -187,7 +187,7 @@ void PossiblyMakeThisEnemyChosenOne( SOLDIERTYPE * pSoldier )
//INT8 bOldKeys; //INT8 bOldKeys;
INT8 bPanicTrigger; INT8 bPanicTrigger;
INT32 sPanicTriggerGridNo; INT32 sPanicTriggerGridNo;
UINT32 uiPercentEnemiesKilled; UINT32 uiPercentEnemiesKilled = 0;
if ( ! (gTacticalStatus.fPanicFlags & PANIC_TRIGGERS_HERE) ) if ( ! (gTacticalStatus.fPanicFlags & PANIC_TRIGGERS_HERE) )
{ {
@@ -200,7 +200,6 @@ void PossiblyMakeThisEnemyChosenOne( SOLDIERTYPE * pSoldier )
return; return;
} }
bPanicTrigger = ClosestPanicTrigger( pSoldier ); bPanicTrigger = ClosestPanicTrigger( pSoldier );
if (bPanicTrigger == -1) if (bPanicTrigger == -1)
{ {
@@ -209,7 +208,9 @@ void PossiblyMakeThisEnemyChosenOne( SOLDIERTYPE * pSoldier )
sPanicTriggerGridNo = gTacticalStatus.sPanicTriggerGridNo[ bPanicTrigger ]; 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 ) if ( gTacticalStatus.ubPanicTolerance[ bPanicTrigger ] > uiPercentEnemiesKilled )
{ {
// not yet... not yet // not yet... not yet
@@ -426,15 +427,15 @@ INT8 ClosestPanicTrigger( SOLDIERTYPE * pSoldier )
INT16 sDistance; INT16 sDistance;
INT16 sClosestDistance = 1000; INT16 sClosestDistance = 1000;
INT8 bClosestTrigger = -1; 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 (!TileIsOutOfBounds(gTacticalStatus.sPanicTriggerGridNo[ bLoop ]))
{ {
if ( gTacticalStatus.ubPanicTolerance[ bLoop ] > uiPercentEnemiesKilled ) if ( gTacticalStatus.ubPanicTolerance[ bLoop ] > uiPercentEnemiesKilled )
{ {
// not yet... not yet... // not yet... not yet...