ShitboxInfinity/levels/kangaroo_point
m3ultra 0c13c82eac Pursuit, drag and derby modes; crash-damage paint; junction fixes
Three new modes, all our own code:
- Pursuit (Simpsons Hit & Run's meter): smashing in cruise fills heat, at full
  the police hunt you. Open 250 m for 6 s to escape, get pinned 4 s to be busted.
  Heat decays, so picking a fight is a choice not a timer.
- Drag (NFSU2's): the gearbox IS the event. The builder finds each level's
  longest genuinely straight run of wide road (442-628 m across the five OSM
  levels) and drops DragStart/DragEnd, so no level needs hand-authored coords.
- Derby: five opponents in the carpark, last one running. Reuses the pursuit AI,
  each hunting a different car so it's a brawl not a mob.

Crash damage now shows: total control-point travel drives paint dulling,
roughness and a scratch layer, so scuffs and crumple can never disagree.

Junction generator fixes, all found by measurement rather than inspection:
- streams[:6] truncated after street A's ways, so junctions where A yielded 3+
  usable ways shipped with ZERO cross traffic. Interleaved before capping;
  every event now has 2-4 crossing streams.
- RADIUS 170 -> 95 spread the convoy over a 340 m window, so you threaded the
  intersection through a 20 m gap. Margaret x Edward was unwinnable: 27 convoy
  cars alive, zero collisions, $0.
- Launch points now walk the street to exactly SPAWN_DIST and pick the busiest
  shared node, and _clear_spawn() unblocks a buried start. Albert x Adelaide
  went from $0 (drove 1 m into a building) to $91k.
- build_all_junctions.sh records the street pairs, which existed nowhere before.

Fixes from an adversarial review (23 confirmed findings), the worst being:
- Derby could only ever be LOST: wrecked opponents un-wrecked 2.2 s later via
  Car._recover, so "last one running" was unreachable and the kill bounty could
  be farmed to the boost cap off one revived car. They now hold their wreck.
- Drag reported WON to a beaten player: the AI's lookahead wrapped on a 2-point
  path, U-turning before the line so its distance-to-finish grew again.
- The scratch layer used BLEND_MODE_MIX, whose mask defaults to white -- it
  replaced the paint entirely rather than scuffing it. Now MUL.
- Drag on a level with no strip left the car at the origin, half-buried, unable
  to end. Cop spawns used an unflattened basis. Stale "WANTED" HUD text.

Test harness: smoke covers all seven modes, and failures now exit instead of
hanging -- a failed assert in a headless SceneTree halts the script but leaves
the tree spinning, which cost 53 minutes of wall clock to notice.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 23:07:41 +10:00
..
junctions.json Pursuit, drag and derby modes; crash-damage paint; junction fixes 2026-07-28 23:07:41 +10:00
level_asphalt.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_asphalt.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_awning_cream.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_awning_cream.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_awning_green.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_awning_green.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_awning_grey.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_awning_grey.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_bark.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_bark.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_billboard_ad3.jpg Scenery v4: traffic signals, power lines, local FLUX fallback 2026-07-28 17:21:35 +10:00
level_billboard_ad3.jpg.import Scenery v4: traffic signals, power lines, local FLUX fallback 2026-07-28 17:21:35 +10:00
level_billboard_ad.jpg Scenery v4: traffic signals, power lines, local FLUX fallback 2026-07-28 17:21:35 +10:00
level_billboard_ad.jpg.import Scenery v4: traffic signals, power lines, local FLUX fallback 2026-07-28 17:21:35 +10:00
level_concrete_ground.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_concrete_ground.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_corrugated_iron.jpg Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_corrugated_iron.jpg.import Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_facade_brick.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_facade_brick.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_facade_concrete.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_facade_concrete.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_facade_deco.jpg Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_facade_deco.jpg.import Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_facade_glass2.jpg Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_facade_glass2.jpg.import Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_facade_glass.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_facade_glass.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_facade_heritage.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_facade_heritage.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_foliage_jacaranda.jpg Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_foliage_jacaranda.jpg.import Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_foliage.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_foliage.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_footpath.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_footpath.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_grass.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_grass.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_pavers.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_pavers.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_planter.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_planter.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_rock.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_rock.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_roof_deck.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_roof_deck.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_sandstone.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_sandstone.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_shopfront.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_shopfront.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_signage_strip.jpg Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_signage_strip.jpg.import Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_water.jpg Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_water.jpg.import Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass 2026-07-28 14:13:29 +10:00
level_weatherboard.jpg Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level_weatherboard.jpg.import Scenery v3: smashable street life, Brisbane colour, Southbank landmarks 2026-07-28 16:42:14 +10:00
level.glb Pursuit, drag and derby modes; crash-damage paint; junction fixes 2026-07-28 23:07:41 +10:00
level.glb.import Pursuit, drag and derby modes; crash-damage paint; junction fixes 2026-07-28 23:07:41 +10:00