fix(divergence): release the parked ball during multiball
Bug: with crazy-mode balls on the table, hitting the effect target while "release ball" (effect seven) was lit did nothing. The ball parked in the special hole stayed there. Cause: the release kept the original two-slot guard "only when no second ball exists" (balls.len() == 1), plus a check that the triggering ball's slot number differs from the hole's contact word. Both made sense when the released ball could only ever become slot two, but they block the release whenever more balls are in play. Fix: - Effect seven now releases whenever the special hole actually holds a parked ball (special_hole_active: multiball Ready and contact set), at most once per callback. The slot-number check is gone; with one ball it never mattered, and with more balls it blocked slot two. - publish_spawned_balls appends the released ball and makes it the owner of the special-hole contact under its real slot number, so it clears the contact itself as it rolls out. With one ball in play that number is 2, identical to the original's contact word. - While multiball is Active, remove_ball renumbers (or clears) that owner when an earlier ball leaves, like the claw and lock-hole owners. In Ready the word is the "ball parked" marker and stays untouched. The single-ball release path is unchanged; all existing special-hole and effect-seven tests still pass. Test Plan: - cargo test release_ball_frees_the_parked_ball_during_multiball: three balls in play, release spawns a fourth at the hole, the owner follows a removal, and the released ball leaves the hole and clears it. - Manual: in crazy mode, park a ball in the special hole (top left), light release ball, hit the effect target; a new ball rolls out.
This commit is contained in:
1 parent
a8cc0fc5fc
commit
0e8121d027
3 files changed
+77
-17
No files matched your search
@@ -31,6 +31,9 @@ and this project adheres to
|
||||
|
||||
- Free a ball that was settling into a lock hole when another ball filled it,
|
||||
and release a lock hole whose settling ball left the table.
|
||||
- The release-ball effect frees the ball parked in the special hole even when
|
||||
several balls are already in play; the released ball keeps ownership of the
|
||||
hole until it rolls out.
|
||||
|
||||
## [1.2.1] - 2026-09-01
|
||||
|
||||
|
||||
Reference in new issue
Block a user