bugfix(weapon): Fix missing Aurora Alpha second explosion on structures - #3057
bugfix(weapon): Fix missing Aurora Alpha second explosion on structures#3057Okladnoj wants to merge 1 commit into
Conversation
SupW_AuroraFuelBombWeapon does not specify MissileCallsOnDie in INI, so getDieOnDetonate() returns false and MissileAIUpdate::detonate() skips the attemptDamage() call that runs the die modules of the projectile. The second explosion then never happens when the target is a structure. The fix belongs in the game data, which does not live in this repository, so the flag is forced for that one weapon behind PRESERVE_MISSING_AURORA_SECOND_EXPLOSION. Retail builds are unaffected.
4714607 to
19408c4
Compare
|
Considering this is a data issue, I think the fix belongs in Patch2 @Stubbjax rather than a hack in the code. |
|
I agree with Skyaero. We do some hacks for UI, but not these kind of hacks for gameplay bugs. We will fix them in INI instead. |
|
The core issue is broader than just Patch2. Because the retail Aurora Alpha omitted MissileCallsOnDie = Yes, any custom mod weapon inspired by or copy-pasted from it over the last 20 years inherited the exact same bug once the deterministic math pr gets merged. |
|
I think key is
Need to understand why. |
|
I do not understand what the root problem is from the given description. My impression right now is if |
That from your's repo |
|
That is Generals Online Repo. |
After all, our ultimate goal is to unite GOD-Team and TSH. If we are talking about determinism in this broader context, shouldn’t we be targeting the GO services? We’ll have to take this Aurora implementation and do something with it anyway. It would be better to make everything a little more synchronized now, ahead of the future merge. This hack will also serve as a reminder of where the set of INI files still needs to be improved. |
|
Can you explain what the cross play bug with MissileCallsOnDie is, if anything? |
|
GO allows more hacks compared to TSH considering one has a live service to run and the other has 20 years of backwards compatibility to consider. (I actually have a test port of "TSH on GO" running locally right now that only includes the networking changes, zero gameplay changes). Instead of looking at this as a data/INI issue, I want to ask: is there a truly fundamental fix we could apply to this in-engine that doesn't involve hardcoding exceptions or altering how the data structure is read?" |
SupW_AuroraFuelBombWeaponhas noMissileCallsOnDiein INI, sogetDieOnDetonate()returns false andMissileAIUpdate::detonateskips theattemptDamagecall that runs the projectile's die modules. Thesecond explosion never happens when the target is a structure.
The fix belongs in the game data (
MissileCallsOnDie = Yes), which does not live in this repository, sothe flag is forced for that one weapon in
WeaponStore::newWeaponTemplate, behindPRESERVE_MISSING_AURORA_SECOND_EXPLOSION. Retail builds keep the old behaviour either way.I defaulted the toggle to 0 so the fix is active in non-retail builds — happy to flip it to 1 if the Game
Design Committee should decide first.
On a general engine fix instead:
MissileCallsOnDieis opt-in and most weapons ship without it. CallingattemptDamagefor every detonating projectile would fire die modules across the whole arsenal — extra FX,CreateObjectDiespawns shifting every following ObjectID,SlowDeathBehaviorkeeping projectiles alive.That is long-standing behaviour a lot of content relies on, and no CI covers it: the retail replay job
builds with
RETAIL_COMPATIBLE_CRC=1and would not even compile the branch, while a cross-platform runonly proves both sides computed the same thing, not the right thing. Happy to open a separate issue for it.
This also matters for macOS/Windows parity: the client used for cross-platform determinism testing forces
the same flag, so without it the two builds desync on any replay containing an Aurora Alpha.
Todo:
MissileCallsOnDieare Zero Hour only