diff --git a/Generals/Code/GameEngine/Source/Common/RTS/Player.cpp b/Generals/Code/GameEngine/Source/Common/RTS/Player.cpp index 25596036b7b..bed9c8895aa 100644 --- a/Generals/Code/GameEngine/Source/Common/RTS/Player.cpp +++ b/Generals/Code/GameEngine/Source/Common/RTS/Player.cpp @@ -3152,7 +3152,16 @@ void Player::applyBattlePlanBonusesForPlayerObjects( const BattlePlanBonusesData } DUMPBATTLEPLANBONUSES(m_battlePlanBonuses, this, nullptr); +#if RETAIL_COMPATIBLE_CRC iterateObjects( localApplyBattlePlanBonusesToObject, const_cast(bonus) ); +#else + // TheSuperHackers @bugfix Stubbjax 05/02/2026 Apply all bonuses the player has rather than just the most recent. + BattlePlanBonusesData newBonus = *m_battlePlanBonuses; + newBonus.m_armorScalar = bonus->m_armorScalar; + newBonus.m_sightRangeScalar = bonus->m_sightRangeScalar; + + iterateObjects(localApplyBattlePlanBonusesToObject, &newBonus); +#endif } diff --git a/GeneralsMD/Code/GameEngine/Source/Common/RTS/Player.cpp b/GeneralsMD/Code/GameEngine/Source/Common/RTS/Player.cpp index f7a676be93b..fff38be87e8 100644 --- a/GeneralsMD/Code/GameEngine/Source/Common/RTS/Player.cpp +++ b/GeneralsMD/Code/GameEngine/Source/Common/RTS/Player.cpp @@ -3643,7 +3643,16 @@ void Player::applyBattlePlanBonusesForPlayerObjects( const BattlePlanBonusesData } DUMPBATTLEPLANBONUSES(m_battlePlanBonuses, this, nullptr); +#if RETAIL_COMPATIBLE_CRC iterateObjects( localApplyBattlePlanBonusesToObject, const_cast(bonus) ); +#else + // TheSuperHackers @bugfix Stubbjax 05/02/2026 Apply all bonuses the player has rather than just the most recent. + BattlePlanBonusesData newBonus = *m_battlePlanBonuses; + newBonus.m_armorScalar = bonus->m_armorScalar; + newBonus.m_sightRangeScalar = bonus->m_sightRangeScalar; + + iterateObjects(localApplyBattlePlanBonusesToObject, &newBonus); +#endif }