mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
Fix: overflow in EliminateAllEnemies(...) (by anv)
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7322 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -438,23 +438,34 @@ void EliminateAllEnemies( UINT8 ubSectorX, UINT8 ubSectorY )
|
|||||||
pGroup = gpGroupList;
|
pGroup = gpGroupList;
|
||||||
pSector = &SectorInfo[ SECTOR( ubSectorX, ubSectorY ) ];
|
pSector = &SectorInfo[ SECTOR( ubSectorX, ubSectorY ) ];
|
||||||
|
|
||||||
|
UINT8 ubNumTanks = 0;
|
||||||
|
|
||||||
// if we're doing this from the Pre-Battle interface, gpAR is NULL, and RemoveAutoResolveInterface(0 won't happen, so
|
// if we're doing this from the Pre-Battle interface, gpAR is NULL, and RemoveAutoResolveInterface(0 won't happen, so
|
||||||
// we must process the enemies killed right here & give out loyalty bonuses as if the battle had been fought & won
|
// we must process the enemies killed right here & give out loyalty bonuses as if the battle had been fought & won
|
||||||
if( !gpAR )
|
if( !gpAR )
|
||||||
{
|
{
|
||||||
GetNumberOfEnemiesInSector( ubSectorX, ubSectorY, &ubNumEnemies[ 0 ], &ubNumEnemies[ 1 ], &ubNumEnemies[ 2 ], &ubNumEnemies[ 3 ] );
|
GetNumberOfEnemiesInSector( ubSectorX, ubSectorY, &ubNumEnemies[ 0 ], &ubNumEnemies[ 1 ], &ubNumEnemies[ 2 ], &ubNumTanks );
|
||||||
|
|
||||||
for ( ubRankIndex = 0; ubRankIndex < NUM_ENEMY_RANKS; ubRankIndex++ )
|
for ( ubRankIndex = 0; ubRankIndex < NUM_ENEMY_RANKS; ++ubRankIndex )
|
||||||
{
|
{
|
||||||
for ( i = 0; i < ubNumEnemies[ ubRankIndex ]; i++ )
|
for ( i = 0; i < ubNumEnemies[ ubRankIndex ]; ++i )
|
||||||
{
|
{
|
||||||
if( ProcessLoyalty() )HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_ENEMY_KILLED, ubSectorX, ubSectorY, 0 );
|
if( ProcessLoyalty() )
|
||||||
|
HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_ENEMY_KILLED, ubSectorX, ubSectorY, 0 );
|
||||||
|
|
||||||
TrackEnemiesKilled( ENEMY_KILLED_IN_AUTO_RESOLVE, RankIndexToSoldierClass( ubRankIndex ) );
|
TrackEnemiesKilled( ENEMY_KILLED_IN_AUTO_RESOLVE, RankIndexToSoldierClass( ubRankIndex ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ProcessLoyalty() )HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_BATTLE_WON, ubSectorX, ubSectorY, 0 );
|
if ( ProcessLoyalty( ) )
|
||||||
|
{
|
||||||
|
for ( i = 0; i < ubNumTanks; ++i )
|
||||||
|
{
|
||||||
|
HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_ENEMY_KILLED, ubSectorX, ubSectorY, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_BATTLE_WON, ubSectorX, ubSectorY, 0 );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !gpAR || gpAR->ubBattleStatus != BATTLE_IN_PROGRESS )
|
if( !gpAR || gpAR->ubBattleStatus != BATTLE_IN_PROGRESS )
|
||||||
|
|||||||
Reference in New Issue
Block a user