From 474df6ffb5907310029bf554602d050ce4803813 Mon Sep 17 00:00:00 2001 From: Flugente Date: Tue, 6 Jan 2015 19:54:29 +0000 Subject: [PATCH] - removed UINT8 NumFreeMilitiaSlots() - militia groups can reinforce battles in neighbouring sectors git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7711 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Strategic/Queen Command.cpp | 6 ++++++ Strategic/Reinforcement.cpp | 23 +++++------------------ Strategic/Strategic Movement.cpp | 2 ++ 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/Strategic/Queen Command.cpp b/Strategic/Queen Command.cpp index 98a1a21a..650fe237 100644 --- a/Strategic/Queen Command.cpp +++ b/Strategic/Queen Command.cpp @@ -548,6 +548,12 @@ UINT8 NumFreeSlots( UINT8 ubTeam ) ++ubNumFreeSlots; } + // the militia team size can be restricted by the ini + if ( ubTeam == MILITIA_TEAM ) + { + ubNumFreeSlots = (UINT8)max( 0, (INT8)ubNumFreeSlots - (INT8)(gGameExternalOptions.ubGameMaximumNumberOfRebels - gGameExternalOptions.iMaxMilitiaPerSector) ); + } + return ubNumFreeSlots; } diff --git a/Strategic/Reinforcement.cpp b/Strategic/Reinforcement.cpp index fb75ddc5..e8012dd0 100644 --- a/Strategic/Reinforcement.cpp +++ b/Strategic/Reinforcement.cpp @@ -277,22 +277,6 @@ UINT8 DoReinforcementAsPendingEnemy( INT16 sMapX, INT16 sMapY ) return 255; } - -UINT8 NumFreeMilitiaSlots() -{ - UINT8 ubNumFreeSlots = 0; - INT32 i; - SOLDIERTYPE *pSoldier; - //Count the number of free militia slots. It is possible to have multiple groups exceed the maximum. - for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM].bLastID; i++ ) - { - pSoldier = &Menptr[ i ]; - if( !pSoldier->bActive ) - ubNumFreeSlots++; - } - return max( 0 , ubNumFreeSlots - ( gGameExternalOptions.ubGameMaximumNumberOfRebels - gGameExternalOptions.iMaxMilitiaPerSector ) ); -} - UINT8 DoReinforcementAsPendingMilitia( INT16 sMapX, INT16 sMapY, UINT8 *pubRank ) { UINT16 pusMoveDir[4][3]; @@ -310,7 +294,9 @@ UINT8 DoReinforcementAsPendingMilitia( INT16 sMapX, INT16 sMapY, UINT8 *pubRank { *pubRank = 255; return 255; - }else + } + else + { for(;;) { ubIndex = Random(ubDirNumber); @@ -338,6 +324,7 @@ UINT8 DoReinforcementAsPendingMilitia( INT16 sMapX, INT16 sMapY, UINT8 *pubRank return (UINT8)pusMoveDir[ ubIndex ][ 2 ]; } } + } } @@ -369,7 +356,7 @@ void AddPossiblePendingMilitiaToBattle() ) return; //gGameExternalOptions.guiMaxMilitiaSquadSize - CountAllMilitiaInSector( gWorldSectorX, gWorldSectorY ); - ubSlots = NumFreeMilitiaSlots(); + ubSlots = NumFreeSlots( MILITIA_TEAM ); if(gGameExternalOptions.sMinDelayMilitiaReinforcements)//dnl ch68 090913 { if(gTacticalStatus.Team[MILITIA_TEAM].bAwareOfOpposition == TRUE) diff --git a/Strategic/Strategic Movement.cpp b/Strategic/Strategic Movement.cpp index f74beb85..d6ea9c08 100644 --- a/Strategic/Strategic Movement.cpp +++ b/Strategic/Strategic Movement.cpp @@ -48,6 +48,7 @@ #include "GameSettings.h" #include "Quests.h" #include "Interface.h" // added by Flugente for zBackground + #include "Reinforcement.h" // added by Flugente for AddPossiblePendingMilitiaToBattle() #endif #include "MilitiaSquads.h" @@ -3494,6 +3495,7 @@ void HandleArrivalOfReinforcements( GROUP *pGroup ) ResetMortarsOnTeamCount(); ResetNumSquadleadersInArmyGroup(); // added by SANDRO AddPossiblePendingEnemiesToBattle(); + AddPossiblePendingMilitiaToBattle( ); } //Update the known number of enemies in the sector.