From 568ee070a829f3e0bfd398cc151e82abc1ba354c Mon Sep 17 00:00:00 2001 From: rftrdev <102184004+rftrdev@users.noreply.github.com> Date: Thu, 3 Nov 2022 00:08:03 -0700 Subject: [PATCH] Disrupt ASD now blocks upgrades --- Strategic/ASD.cpp | 6 +++--- Strategic/Rebel Command.cpp | 16 ++++++++++++++++ Strategic/Rebel Command.h | 1 + 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Strategic/ASD.cpp b/Strategic/ASD.cpp index 6d5861de..ceee99cf 100644 --- a/Strategic/ASD.cpp +++ b/Strategic/ASD.cpp @@ -1514,7 +1514,7 @@ UINT32 ASDResourceCostFuel( UINT8 aType ) // if ASD has tanks, it can allow the queen to upgrade soldiers to tanks BOOLEAN ASDSoldierUpgradeToTank( ) { - if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsTanks ) + if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsTanks && RebelCommand::GetASDCanDeployUnits() ) { if ( gASD_Flags & ASDFACT_TANK_UNLOCKED ) { @@ -1531,7 +1531,7 @@ BOOLEAN ASDSoldierUpgradeToTank( ) BOOLEAN ASDSoldierUpgradeToJeep( ) { - if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsJeeps ) + if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsJeeps && RebelCommand::GetASDCanDeployUnits() ) { if ( gASD_Flags & ASDFACT_JEEP_UNLOCKED ) { @@ -1548,7 +1548,7 @@ BOOLEAN ASDSoldierUpgradeToJeep( ) BOOLEAN ASDSoldierUpgradeToRobot( ) { - if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsRobots ) + if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsRobots && RebelCommand::GetASDCanDeployUnits() ) { if ( gASD_Flags & ASDFACT_ROBOT_UNLOCKED ) { diff --git a/Strategic/Rebel Command.cpp b/Strategic/Rebel Command.cpp index ee75993f..d95d3afc 100644 --- a/Strategic/Rebel Command.cpp +++ b/Strategic/Rebel Command.cpp @@ -4671,6 +4671,22 @@ INT16 GetAdditionalDeployRange(const UINT8 insertionCode) return 0; } +BOOLEAN GetASDCanDeployUnits() +{ + if (!gGameExternalOptions.fRebelCommandEnabled) + return TRUE; + + const std::unordered_map::iterator iter = missionMap.find(RCAM_DISRUPT_ASD); + + if (iter == missionMap.end()) + return TRUE; + + MissionSecondEvent evt; + DeserialiseMissionSecondEvent(iter->second, evt); + + return evt.isSecondEvent ? FALSE : TRUE; +} + FLOAT GetASDIncomeModifier() { if (!gGameExternalOptions.fRebelCommandEnabled) diff --git a/Strategic/Rebel Command.h b/Strategic/Rebel Command.h index 1009f723..f8c9bc24 100644 --- a/Strategic/Rebel Command.h +++ b/Strategic/Rebel Command.h @@ -209,6 +209,7 @@ BOOLEAN CanAssignTraitsToMilitia(); BOOLEAN CanTrainMilitiaAnywhere(); UINT8 GetMaxTrainersForTrainMilitiaAnywhere(); INT16 GetAdditionalDeployRange(const UINT8 insertionCode); +BOOLEAN GetASDCanDeployUnits(); FLOAT GetASDIncomeModifier(); INT8 GetEnemyEquipmentCoolnessModifier(); INT8 GetEnemyEquipmentStatusModifier(const INT8 initialStatus);