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.