diff --git a/Strategic/Queen Command.cpp b/Strategic/Queen Command.cpp index be29421ff..eb32fe440 100644 --- a/Strategic/Queen Command.cpp +++ b/Strategic/Queen Command.cpp @@ -3316,19 +3316,28 @@ bool RemoveOneTurncoat( INT16 sSectorX, INT16 sSectorY, UINT8 aSoldierClass, BOO case SOLDIER_CLASS_ADMINISTRATOR: pSector->ubNumAdmins_Turncoat--; if (alsoRemoveFromGroup) + { pSector->ubNumAdmins--; + pSector->ubAdminsInBattle -= (pSector->ubAdminsInBattle == 0 ? 0 : 1); + } return true; break; case SOLDIER_CLASS_ARMY: pSector->ubNumTroops_Turncoat--; if (alsoRemoveFromGroup) + { pSector->ubNumTroops--; + pSector->ubTroopsInBattle -= (pSector->ubTroopsInBattle == 0 ? 0 : 1); + } return true; break; case SOLDIER_CLASS_ELITE: pSector->ubNumElites_Turncoat--; if (alsoRemoveFromGroup) + { pSector->ubNumElites--; + pSector->ubElitesInBattle -= (pSector->ubElitesInBattle == 0 ? 0 : 1); + } return true; break; default: @@ -3351,6 +3360,7 @@ bool RemoveOneTurncoat( INT16 sSectorX, INT16 sSectorY, UINT8 aSoldierClass, BOO if (alsoRemoveFromGroup) { pGroup->pEnemyGroup->ubNumAdmins--; + pGroup->pEnemyGroup->ubAdminsInBattle -= (pGroup->pEnemyGroup->ubAdminsInBattle == 0 ? 0 : 1); pGroup->ubGroupSize--; } return true; @@ -3363,6 +3373,7 @@ bool RemoveOneTurncoat( INT16 sSectorX, INT16 sSectorY, UINT8 aSoldierClass, BOO if (alsoRemoveFromGroup) { pGroup->pEnemyGroup->ubNumTroops--; + pGroup->pEnemyGroup->ubTroopsInBattle -= (pGroup->pEnemyGroup->ubTroopsInBattle == 0 ? 0 : 1); pGroup->ubGroupSize--; } return true; @@ -3375,6 +3386,7 @@ bool RemoveOneTurncoat( INT16 sSectorX, INT16 sSectorY, UINT8 aSoldierClass, BOO if (alsoRemoveFromGroup) { pGroup->pEnemyGroup->ubNumElites--; + pGroup->pEnemyGroup->ubElitesInBattle -= (pGroup->pEnemyGroup->ubElitesInBattle == 0 ? 0 : 1); pGroup->ubGroupSize--; } return true; diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 8d45e49db..8f3a56825 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -4487,23 +4487,14 @@ void MakeCivHostile(SOLDIERTYPE *pSoldier) if ( oldclass == SOLDIER_CLASS_ARMY ) { pSoldier->ubSoldierClass = SOLDIER_CLASS_REG_MILITIA; - - SectorInfo[sector].ubNumTroops = max( 0, SectorInfo[sector].ubNumTroops - 1 ); - SectorInfo[sector].ubTroopsInBattle = max( 0, SectorInfo[sector].ubTroopsInBattle - 1 ); } else if ( oldclass == SOLDIER_CLASS_ELITE ) { pSoldier->ubSoldierClass = SOLDIER_CLASS_ELITE_MILITIA; - - SectorInfo[sector].ubNumElites = max( 0, SectorInfo[sector].ubNumElites - 1 ); - SectorInfo[sector].ubElitesInBattle = max( 0, SectorInfo[sector].ubElitesInBattle - 1 ); } else { pSoldier->ubSoldierClass = SOLDIER_CLASS_GREEN_MILITIA; - - SectorInfo[sector].ubNumAdmins = max( 0, SectorInfo[sector].ubNumAdmins - 1 ); - SectorInfo[sector].ubAdminsInBattle = max( 0, SectorInfo[sector].ubAdminsInBattle - 1 ); } StrategicAddMilitiaToSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->ubSoldierClass - 4, 1 );