Conversation
Previously the crit ceremony (gold burst, camera flash, ring) deferred until every die settled, so an exploding cascade played out silent until the very end. Now a maxed die on an exploding term celebrates the instant it comes to rest — before its sibling drops — while plain pools keep their single batched chord at settle. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The mid-roll crit ceremony rings once per explosion wave; an insta roll fast-forwards the whole cascade into a single frame, so those per-wave rings piled up and drain_sounds played them all at once (a bell choir). insta_roll now keeps a single Crit. Also unifies the (kept · settled · max-face) crit predicate behind a new Die::is_crit() shared by crit_dice, the settle-time flare, and the end-of-roll pass, and corrects two comments (a 1 can explode via !=1/!<2; the crit ring now fires per wave, only the fumble thud is once per roll). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CI runs clippy --all-targets -D warnings, which lints test code; the manual_contains lint flagged sounds.iter().any(|s| *s == Crit). Match the existing tests' sounds.contains(&Crit). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Exploding-dice crits used to withhold the whole ceremony — gold burst, camera flash, and ring — until every die in the chain settled, so a
d6!cascade played out silent until the very end. This makes a maxed die on an exploding term celebrate the instant it comes to rest (before its sibling drops), while plain non-exploding pools keep their single batched chord at settle so a fistful of sixes stays one flare, not a bell choir. A newcelebratedflag on each die stops the end-of-roll pass from re-bursting a die that already flared. The change is confined totinhorn-core's sim timing — the RNG/seed contract is untouched, so insta and animated rolls still settle bit-identically. Two new tests pin the behavior: a crit rings while the chain is still live, and each crit is celebrated exactly once.