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>
398 lines
6.0 KiB
JSON
398 lines
6.0 KiB
JSON
[
|
|
{
|
|
"name": "Albert x Adelaide",
|
|
"spawn": {
|
|
"x": 18.671705882497893,
|
|
"z": -22.919507778110138,
|
|
"dx": -0.6633868531476461,
|
|
"dz": -0.7482766086621067
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
-58.84614846630014,
|
|
-114.42417420924829
|
|
],
|
|
[
|
|
-53.880474905008,
|
|
-108.39185473942744
|
|
],
|
|
[
|
|
-51.24051503498836,
|
|
-105.52578654474546
|
|
],
|
|
[
|
|
-20.352984240690695,
|
|
-70.76962163514554
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-86.70325250389301,
|
|
-94.08771386994844
|
|
],
|
|
[
|
|
-77.60701968874399,
|
|
-101.92094169090129
|
|
],
|
|
[
|
|
-72.06522503228508,
|
|
-106.94786296530025
|
|
],
|
|
[
|
|
-68.79209061830386,
|
|
-109.50838129624599
|
|
],
|
|
[
|
|
-62.692661313561906,
|
|
-114.75385541597699
|
|
],
|
|
[
|
|
-56.45081914916183,
|
|
-120.13849830634709
|
|
],
|
|
[
|
|
-53.14418135326541,
|
|
-122.9809049049611
|
|
],
|
|
[
|
|
-38.75486932340002,
|
|
-135.5677577748611
|
|
],
|
|
[
|
|
-8.138880164463979,
|
|
-163.05430391717795
|
|
],
|
|
[
|
|
7.537426213222782,
|
|
-176.88629254786764
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-24.38938905950134,
|
|
-67.18250076477023
|
|
],
|
|
[
|
|
-55.272013374374126,
|
|
-101.93315225504524
|
|
],
|
|
[
|
|
-57.98533525129133,
|
|
-104.88327646076375
|
|
],
|
|
[
|
|
-63.01508813331892,
|
|
-110.99198219061685
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
11.110167779562063,
|
|
-172.83715465195058
|
|
],
|
|
[
|
|
-4.543064055336218,
|
|
-159.02564328250827
|
|
],
|
|
[
|
|
-35.16387720923361,
|
|
-131.5347966250365
|
|
],
|
|
[
|
|
-49.59536988091847,
|
|
-118.91077749494814
|
|
],
|
|
[
|
|
-52.92601130212681,
|
|
-116.04756569366813
|
|
],
|
|
[
|
|
-59.168575286057155,
|
|
-110.66230098388816
|
|
],
|
|
[
|
|
-65.33626025215173,
|
|
-105.35901550369637
|
|
],
|
|
[
|
|
-68.5423745958537,
|
|
-102.85524463438601
|
|
],
|
|
[
|
|
-74.0429581637501,
|
|
-97.86416150877923
|
|
],
|
|
[
|
|
-83.17948939242227,
|
|
-89.9958813300908
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-63.049013950748005,
|
|
-111.03404120330288
|
|
],
|
|
[
|
|
-67.67311197746825,
|
|
-116.88556835863362
|
|
],
|
|
[
|
|
-69.33640432781439,
|
|
-119.01651536179543
|
|
],
|
|
[
|
|
-72.74965354025018,
|
|
-122.55658461736515
|
|
],
|
|
[
|
|
-98.24408864239251,
|
|
-142.51997682349207
|
|
],
|
|
[
|
|
-106.03262882232805,
|
|
-149.46281622691504
|
|
],
|
|
[
|
|
-127.2548410984026,
|
|
-167.5083127878196
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-123.7567869560363,
|
|
-171.62214521234466
|
|
],
|
|
[
|
|
-102.50831375382124,
|
|
-153.55417337313145
|
|
],
|
|
[
|
|
-94.84937670776534,
|
|
-146.71949237661244
|
|
],
|
|
[
|
|
-69.3394816295263,
|
|
-126.74355578269574
|
|
],
|
|
[
|
|
-65.32529933336386,
|
|
-122.63190423762802
|
|
],
|
|
[
|
|
-63.432906391639634,
|
|
-120.22931724123647
|
|
],
|
|
[
|
|
-58.81222264887106,
|
|
-114.38211519656227
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
},
|
|
{
|
|
"name": "Edward x Elizabeth",
|
|
"spawn": {
|
|
"x": 173.87950117253465,
|
|
"z": -177.50987452854054,
|
|
"dx": 0.688388502507091,
|
|
"dz": 0.7253421741606128
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
228.7426016851313,
|
|
-123.80938841141814
|
|
],
|
|
[
|
|
250.48785179439338,
|
|
-101.12418691157934
|
|
],
|
|
[
|
|
253.19184475779528,
|
|
-98.13216139604938
|
|
],
|
|
[
|
|
258.48528328991137,
|
|
-92.28343983096748
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
184.8196819904455,
|
|
-31.59973983603264
|
|
],
|
|
[
|
|
200.9901724381037,
|
|
-45.56696118289086
|
|
],
|
|
[
|
|
206.29822476676847,
|
|
-50.115127103271014
|
|
],
|
|
[
|
|
208.01277161716473,
|
|
-51.59585061763732
|
|
],
|
|
[
|
|
243.56749157860247,
|
|
-82.55471207644285
|
|
],
|
|
[
|
|
246.1313684904348,
|
|
-84.84463727526342
|
|
],
|
|
[
|
|
254.68470539632878,
|
|
-92.48524564052305
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
254.4815819963581,
|
|
-88.65985376851496
|
|
],
|
|
[
|
|
249.1869798707451,
|
|
-94.50986140343801
|
|
],
|
|
[
|
|
246.5771986992584,
|
|
-97.40037268829819
|
|
],
|
|
[
|
|
224.8443191668579,
|
|
-120.07262598818004
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
258.28215988994066,
|
|
-88.4580479589594
|
|
],
|
|
[
|
|
249.72869976275985,
|
|
-80.81732952477397
|
|
],
|
|
[
|
|
247.11707918748664,
|
|
-78.48526152300741
|
|
],
|
|
[
|
|
211.55809324014456,
|
|
-47.52268298180012
|
|
],
|
|
[
|
|
209.81572383420533,
|
|
-46.017908496633005
|
|
],
|
|
[
|
|
204.51598169911696,
|
|
-41.47689161686228
|
|
],
|
|
[
|
|
188.34948976520272,
|
|
-27.51312056415722
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
258.4805413787254,
|
|
-92.28866542876725
|
|
],
|
|
[
|
|
262.2737122591504,
|
|
-88.11954201221562
|
|
],
|
|
[
|
|
266.8273793037693,
|
|
-83.1100839184909
|
|
],
|
|
[
|
|
270.87333374760516,
|
|
-78.65784777138674
|
|
],
|
|
[
|
|
298.08928934155523,
|
|
-47.30427629341134
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
254.70925209424783,
|
|
-92.50690682734246
|
|
],
|
|
[
|
|
259.70303711688206,
|
|
-96.8600914480509
|
|
],
|
|
[
|
|
263.66545095997486,
|
|
-100.3447248693
|
|
],
|
|
[
|
|
288.61557906385735,
|
|
-122.1176793727558
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
}
|
|
] |