fix(game): restore effect-seven multiball
Arm effect 7 after the wheel-reset target, select it on the next effect line, and spawn a second visible live ball when record 149 is consumed. Advance the second ball through recovered line, circle, ball-ball, magnetic, and scoring collisions independently. During multiball, draining one ball leaves the other active without consuming a remaining player ball. Include secondary state in deterministic traces and finite-state validation. Test Plan: - `cargo test --all-targets` -- 52 passed - `cargo clippy --all-targets -- -D warnings` -- passed - production build plus Windows GNU and macOS checks -- passed - effect-seven spawn, movement, and single-drain lifecycle test -- passed - `git diff --cached --check` -- passed
This commit is contained in:
@@ -188,6 +188,12 @@ per-player effect word, and activated type-4 record 149. `1000:c4e1` maps effect
|
||||
the accumulated bonus to score. Entering record 149 also awards its static 500,
|
||||
clears the selection, and disables the record until line 84 is hit again.
|
||||
|
||||
After record 148 sets `DAT_1028_399a`, the next flagged line-84 selection uses
|
||||
effect 7 instead of random 1-6. The effect-7 branch in `1000:c4e1` schedules the
|
||||
timer's second-ball path and raises the active-ball count to two. The Rust port
|
||||
now keeps and renders a second live ball, applies recovered physical collisions
|
||||
and scores to it, and removes only the drained ball while multiball is active.
|
||||
|
||||
The score-addition path at `1000:bc36` indexes the initialized 32-bit threshold
|
||||
table at DGROUP `0x825` using media state 1-4. The exact thresholds are 140,000,
|
||||
650,000, 1,300,000, and 4,000,000. Crossing each threshold increments the media
|
||||
|
||||
Reference in New Issue
Block a user