fix(multiball): match capture collapse timing
Capture removal and ordinary drains do not clear the original game's shared multiball flag at the same point. The clone treated both transitions alike, which could end double scoring before ball two's remaining slot pass or leave it active after ball two entered a capture hole. It also failed to pause the returning claw until collapse and to clear the flag on a fifth lock. Collapse capture-driven multiball state at the next timer callback, retain the immediate drain behavior, and end the mode explicitly when all five lock contacts complete. Calculate lock awards from the live contact words so a second ball still settling in another hole is counted. Stage effect-seven slot creation until the primary substep batch returns, matching the timer's spawn request ordering. The original leaves a multiball capture contact as value 2, so a later single ball may enter that same wheel slot once more and convert it to the permanent 99 sentinel. This possibly unintended original-game quirk remains for binary parity. Test Plan: - `just test` -- passed (141 game tests and 8 service tests) - `just clippy` -- passed - `just build-production` -- passed - `cargo +nightly fmt --all -- --check` -- passed - `rumdl check --flavor commonmark CHANGELOG.md` -- passed - `git diff --cached --check` -- passed
This commit is contained in:
@@ -8,6 +8,20 @@ and this project adheres to
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Fixed
|
||||
|
||||
- Match capture-driven multiball collapse timing so the surviving slot keeps
|
||||
double scoring through the current callback, then returns to normal scoring
|
||||
on the next callback and the returning claw remains paused until that
|
||||
collapse; completing the fifth wheel lock still ends multiball scoring
|
||||
immediately.
|
||||
- Derive wheel-lock awards from the original live contact words so two balls
|
||||
settling into different slots at once receive the same accumulated award as
|
||||
the original game.
|
||||
- Stage an effect-seven reserve-ball request until ball 1's full substep batch
|
||||
has returned, preventing the new slot from participating in collision and
|
||||
capture rules before the original creates it.
|
||||
|
||||
## [1.1.0] - 2026-08-29
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user