bugfix: Restore retail compatibility after retail behavior flags change#2727
Conversation
|
| Filename | Overview |
|---|---|
| GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/StealthUpdate.cpp | Adds RETAIL_COMPATIBLE_CRC to the structure-stealth repair guard, enabling the healing-damage exception in retail mode; properly paired with the ActiveBody.cpp timestamp change. |
| GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Body/ActiveBody.cpp | Same real behavior change as Generals: m_lastDamageTimestamp now updated during healing when RETAIL_COMPATIBLE_CRC=1, paired with the matching StealthUpdate fix in this PR. |
| Generals/Code/GameEngine/Source/GameLogic/Object/Body/ActiveBody.cpp | Adds RETAIL_COMPATIBLE_CRC to the stealth-repair guard so m_lastDamageTimestamp is set during healing events under retail mode; safe because Generals has no STEALTH_NOT_WHILE_TAKING_DAMAGE flag. |
| GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Collide/CrateCollide/CrateCollide.cpp | Same m_allowMultiPickup change as Generals — correct retail compatibility restoration. |
| Generals/Code/GameEngine/Source/GameLogic/Object/Collide/CrateCollide/CrateCollide.cpp | Extends m_allowMultiPickup default to be true when RETAIL_COMPATIBLE_CRC=1, restoring retail crate behavior. |
| Generals/Code/GameEngine/Source/Common/RTS/Player.cpp | Rewrites !PRESERVE_TUNNEL_HEAL_STACKING && !RETAIL_COMPATIBLE_CRC as !(RETAIL_COMPATIBLE_CRC |
| GeneralsMD/Code/GameEngine/Source/Common/RTS/Player.cpp | Same De Morgan rewrite as Generals Player.cpp — no behavioral difference. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
RC[RETAIL_COMPATIBLE_CRC = 1]
PS[PRESERVE_* flag = 1]
RC -->|OR| TH[Tunnel heal stacking path\nTunnelTracker / TunnelContain / Player]
PS -->|OR| TH
RC -->|OR| SS[Structure stealth-during-repair\nActiveBody + StealthUpdate MD]
PS2[PRESERVE_STRUCTURE_STEALTH_DURING_REPAIR] -->|OR| SS
RC -->|OR| MP[Multi-crate pickup default\nCrateCollide]
PS3[PRESERVE_MULTI_CRATE_PICKUP] -->|OR| MP
RC -->|NOR| XPP[XP from poison kills fix DISABLED\nPoisonedBehavior]
PS4[PRESERVE_NO_XP_FROM_POISON_KILLS] -->|NOR| XPP
RC -->|NOR| XPO[XP from OCL kills fix DISABLED\nObjectCreationList]
PS5[PRESERVE_NO_XP_FROM_OCL_KILLS] -->|NOR| XPO
Reviews (4): Last reviewed commit: "Replicated in Generals." | Re-trigger Greptile
Mauller
left a comment
There was a problem hiding this comment.
If we do add the overall preserve retail flag pattern, it might be better to split out the custom configuration into a cmake file for the pre configured flags that we are setting.
d48d2c9 to
9ec6877
Compare
|
Every use of a |
|
https://github.com/TheSuperHackers/GeneralsGameCode/actions/runs/26116319211/job/76806993700?pr=2730 Tested this merged with #2730. LGTM |
|
Replicated in Generals. Generals has one fewer change because this only exists in Zero Hour: |
#2691 Turned off some retail behavior which introduces mismatches. This PR aims to fix that.
TODO:
Generals has one fewer change because this only exists in Zero Hour:
RETAIL_COMPATIBLE_CRC || PRESERVE_STRUCTURE_STEALTH_DURING_REPAIRinStealthUpdate::allowedToStealth.