Skip to content

chore(crcdebug): Log DieOnDetonate on projectile detonation - #3056

Closed
Okladnoj wants to merge 1 commit into
TheSuperHackers:mainfrom
Okladnoj:okji/debug/crc-dieondetonate
Closed

chore(crcdebug): Log DieOnDetonate on projectile detonation#3056
Okladnoj wants to merge 1 commit into
TheSuperHackers:mainfrom
Okladnoj:okji/debug/crc-dieondetonate

Conversation

@Okladnoj

@Okladnoj Okladnoj commented Aug 3, 2026

Copy link
Copy Markdown

addCRCDebugLineNoCounter exists but has no macro wrapper, so it cannot be used. This adds
CRCDEBUG_LOG_NOCOUNTER next to CRCDEBUG_LOG.

MissileAIUpdate::detonate uses it to record the weapon's DieOnDetonate flag. The flag decides whether
the projectile dies right there or a frame later in doKillSelfState, which moves its die modules to a
different frame. Two clients that disagree on it desync at that frame, and nothing in the CRC dump pointed
at the flag. The no-counter variant keeps the ordinals in the frame identical to a client without this
change, so the log itself cannot shift a comparison.

Debug builds only, no effect on release.

Todo:

  • Replicate to Generals — N/A, MissileCallsOnDie does not exist in Generals

addCRCDebugLineNoCounter had no macro wrapper, so it could not be used. Add
CRCDEBUG_LOG_NOCOUNTER next to CRCDEBUG_LOG and use it in
MissileAIUpdate::detonate to record the weapon's DieOnDetonate flag.

The flag decides whether the projectile dies right there or a frame later in
doKillSelfState, which moves its die modules to a different frame, so two
clients that disagree on it desync at that frame. The no-counter variant keeps
the ordinals in the frame identical to a client without this change.
@Okladnoj Okladnoj closed this Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants