Skip to content

The floor rules count the time each beat covered, up to one second (#1613) - #2578

Merged
sdubois777 merged 3 commits into
developmentfrom
fix/beat-rules-count-real-time-1
Oct 28, 2026
Merged

sdubois777 merged 3 commits into
developmentfrom
fix/beat-rules-count-real-time-1

Conversation

@sdubois777

Copy link
Copy Markdown
Owner

The dungeon's floor rules now count the time each beat actually covered, up to one second, instead of taking every beat as 0.25 s. A slow frame no longer slows them, and a long stall costs at most one second of a rule's effect (#1613).

What changed

  • game/Source/Cataclysm/Dungeon/CataclysmDungeonGameMode.h and .cpp, the dungeon game mode: Tick records BeatSeconds, the time the beat covered, before the wave-check accumulator resets, and clamps it to 1.0 s. The 79 uses of the fixed 0.25 s in the floor rules read it instead. The waves are unchanged.
  • game/Source/Cataclysm/Tests/CataclysmDungeonModifierEffectsTests.cpp: three tests -- Mortal Decay's rate is the same at four and at two frames a second, a three-second frame costs one second, and Death's Embrace's clock counts the same at both frame rates.
  • docs/DECISIONS.md: the entry and window w77's record.

Evidence: window w77, at 3f6b0af on development c120310

  • Build: 72 actions, 62 files compiled.
  • The three new tests alone: 3 performed, 3 succeeded. Printed: "a frame of one second cost 5.100 and a frame of three cost 5.100"; "Mortal Decay over one second cost 5.100 at four frames a second and 5.100 at two"; "Death's Embrace cut 0.0 then 10.0 at four frames a second, 0.0 then 10.0 at two".
  • Whole Unreal suite: 4347 performed, 4347 succeeded, 0 failed (registered 4347; 4347 declared in the tree, gap 0). Memory: peak 8,086 MB, final 7,777 MB.
  • Python: "7022 passed, 8 skipped"; JUnit tests=7030, failures=0, errors=0, skipped=8. ruff: "All checks passed!".
  • Proof P1 (BeatSeconds set back to 0.25 s): PROVED. With the break in, ABeatCountsItsOwnTimeSoMortalDecaySapsItsRateAtTwoFramesASecond failed; restored, it passed.
  • Proof P2 (the one-second limit removed): PROVED. With the break in, ABeatCountsAtMostOneSecondSoALongFrameCostsOneSecondOfMortalDecay failed; restored, it passed.

After the tested commit, only docs/DECISIONS.md changed (the record).

🤖 Generated with Claude Code

sdubois777 and others added 3 commits October 28, 2026 15:49
…o a slow frame no longer slows them (#1613)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…registered at 4347 on c120310

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s record -- 4347 tests, both proofs PROVED

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sdubois777
sdubois777 merged commit 4e8d2b7 into development Oct 28, 2026
3 checks passed
@sdubois777
sdubois777 deleted the fix/beat-rules-count-real-time-1 branch October 28, 2026 22:37
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.

1 participant