fix(game): restore one-shot magnetic fields

Replace the global timed magnet and drain teleport with the three recovered
field records. Map top targets 150-152 to center field 6 and outlane fields
153-154, apply upward pull only inside each registered rectangle, and deactivate
the field after it pulls the ball through its upper boundary.

Render each active field from its exact original active-table rectangle instead
of drawing invented yellow triangles.

Test Plan:
- `cargo test --all-targets` -- 48 passed
- `cargo clippy --all-targets -- -D warnings` -- passed
- production build plus Windows GNU and macOS checks -- passed
- live field-153 entry direction matched and Rust field lifecycle test passed
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-22 21:43:13 +02:00
parent b86810ebed
commit 4b56a23fb4
4 changed files with 81 additions and 29 deletions
+6
View File
@@ -170,3 +170,9 @@ was 10,000, 30,000, 70,000, and 150,000; the fifth hole transferred the full
310,000 to score and cleared bonus. Each hole returned the ball to `(325,413)`
without consuming it and retained contact state 99. Entering record 148 then
cleared all five hole states, confirming its wheel-reset role.
Top type-4 targets activate persistent field records rather than a shared timer:
150 enables 153 (left), 151 enables 6 (center), and 152 enables 154 (right).
Entering active record 153 at `(15,350)` changed `(0,2015)` to `(0,-3039)`
millipixels per substep in the live original. The field continued pulling upward
inside its registered bounds and deactivated after the ball exited above them.