ShitboxInfinity/tests
m3ultra a5158bf6ec Wrench phase 1: 3D jobs on your car in your shed -- your hands are the tune
The repair game grows its 3D half (src/wrench.gd): flat tyre, oil
change and dead battery are done on the player's actual car model,
parked in the actual shed level, through five mouse verbs on projected
3D anchor points:

  GRAB   part follows the cursor on a ray-plane, drop at the target
  TWIST  circle the mouse around the anchor; torque steps have a seat
         window (release inside = clean) and blowing past it STRIPS
         the thread -- quality hit plus an extraction step inserted
  PUMP   rhythm clicks (jack up, jack down)
  YANK   press and flick (pop the wheel, bonnet up)
  STEADY keep the cursor inside a wandering ring (line up the studs,
         pour the oil)

Camera presets per step (wheel / under-car / bonnet), a screen-space
ring overlay with a live torque arc, and props spawned per job (spare,
tray, bottle, batteries). The battery job enforces RED THEN BLACK --
backwards earns a spark shower and commentary.

Workmanship is a stat: every job scores 0-100, and an 85+ fix BUFFS the
car through Garage.apply (tyres +0.2 grip, oil +3% power, battery +0.15
boost) until that fault recurs -- add_fault clears its quality entry, so
your last good fix is exactly as durable as your driving.

Faults now have gameplay sources: a red light at the tree flat-spots
the fronts, every 4th wreck rattles the sump loose (oil light, not in
junctions where wrecking is the game), and getting busted kills the
battery. All three are suite-inert by construction. New faults route to
the wrench scene via FAULTS[id].scene; gearbox/gasket keep the 2D panel
until phase 2. Wounds: flat -0.35 grip, oil -7% power, battery -0.3
boost (boost floor clamped at 0.4 -- the old ba>0 guard never subtracted).

Smoke plays a clean flat-tyre job through the API (7 steps, quality
90+, grip buff verified on the next boot) and a sabotaged oil job (blown
torque window -> stripped thread -> extraction step appears). The same
Variant-inference parse trap struck a third time (Dictionary index this
time); the suite caught it before it cost anything.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 15:36:05 +10:00
..
probe.gd Brisbane: Queen Street Mall crash-run level from OpenStreetMap 2026-07-27 23:33:51 +10:00
probe.gd.uid Brisbane: Queen Street Mall crash-run level from OpenStreetMap 2026-07-27 23:33:51 +10:00
screenshot.gd FLOORED LAZZA 1.5: John's actual first car, '82 KA Laser hatch 2026-07-28 16:16:32 +10:00
screenshot.gd.uid Gameplay systems + procedural Blender car fleet 2026-07-27 21:29:42 +10:00
smoke.gd Wrench phase 1: 3D jobs on your car in your shed -- your hands are the tune 2026-07-31 15:36:05 +10:00
smoke.gd.uid Engine v0: Godot 4.6 data-driven arcade racer scaffold 2026-07-27 21:03:45 +10:00