macrosoft3dpinball/godot/scripts
m3ultra 7347ec4db7 Pinball: Rules, Juice, HUD, a table probe — and the three bugs it found
Four lanes built in parallel onto the data-driven spine:

- Rules.gd (509) — score with a decaying combo multiplier, 3 balls, ball save,
  escalating drop-bank bonuses, lit rollover lanes that level up when swept,
  saucer-lock multiball, two-warning tilt, end-of-ball bonus, per-table high
  scores in user://pinball_scores.cfg.
- Juice.gd (784) — 12 procedural voices synthesized at boot, no assets. The
  spinner ratchet is timed to Table.gd bleeding spin_left at 6.0/s so the ticking
  stops exactly when the blade does. Pooled voices/lights/sparks, quadratic-falloff
  shake, and a damped spring for nudge. Palette-tinted lights with a value floor,
  because a light the colour of a near-black saucer illuminates nothing.
- Hud.gd (935) — score that ROLLS UP rather than snapping, combo, award callouts,
  plunger meter, tilt banner, ball save, game over panel.
- dev/probe_tables.gd (480) — the gate: builds every table and checks parts, part
  overlaps, playfield bounds, flipper swing, that the ball actually DRAINS, and
  that everything settles.

The probe immediately found three real bugs the flipper autotest could not see:

1. The drain sat 3 cm PAST the playfield lip, so on four of five tables the ball
   rolled off the end into the void and the trigger never fired. A table you cannot
   lose a ball on is not a table. Moved inside the slab.
2. Inlane posts were level with the slingshots and interpenetrated them on three
   tables — on a real table the posts sit below. Moved down-table.
3. THE DIG's counter ramp ran through the crate bank, and a 15 deg yaw over a 28 cm
   ramp swings its far end 7 cm sideways, which then walked it through the left rail.
   Less yaw, tucked in, crates slid right.

PROBE_TABLES: PASS 5/5. AUTOTEST: ALL TABLES OK.

Still open, and it is an ENGINE finding not a table one: godot-box3d does not enforce
HingeJoint3D angular limits — flippers swing 147-160 deg against a 62 deg limit. The
probe reports it as a NOTE per table. Worth an upstream issue alongside the motor-sign
inversion already in the README.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 18:18:15 +10:00
..
Hud.gd Pinball: Rules, Juice, HUD, a table probe — and the three bugs it found 2026-08-09 18:18:15 +10:00
Hud.gd.uid Pinball: Rules, Juice, HUD, a table probe — and the three bugs it found 2026-08-09 18:18:15 +10:00
Juice.gd Pinball: Rules, Juice, HUD, a table probe — and the three bugs it found 2026-08-09 18:18:15 +10:00
Juice.gd.uid Pinball: Rules, Juice, HUD, a table probe — and the three bugs it found 2026-08-09 18:18:15 +10:00
Main.gd Pinball: data-driven table spine (3 tables, 11 part kinds) 2026-08-09 17:24:07 +10:00
Main.gd.uid Pinball: data-driven table spine (3 tables, 11 part kinds) 2026-08-09 17:24:07 +10:00
Rules.gd Pinball: Rules, Juice, HUD, a table probe — and the three bugs it found 2026-08-09 18:18:15 +10:00
Rules.gd.uid Pinball: Rules, Juice, HUD, a table probe — and the three bugs it found 2026-08-09 18:18:15 +10:00
Table.gd Pinball: Rules, Juice, HUD, a table probe — and the three bugs it found 2026-08-09 18:18:15 +10:00
Table.gd.uid Pinball: data-driven table spine (3 tables, 11 part kinds) 2026-08-09 17:24:07 +10:00
Tables.gd Pinball: Rules, Juice, HUD, a table probe — and the three bugs it found 2026-08-09 18:18:15 +10:00
Tables.gd.uid Pinball: data-driven table spine (3 tables, 11 part kinds) 2026-08-09 17:24:07 +10:00