Fix convoy coordination, AI combat and spectator recovery

This commit is contained in:
2026-09-27 22:28:07 +02:00
parent 2551d171b3
commit c5629f7f4f
108 changed files with 4337 additions and 282 deletions
+30 -6
View File
@@ -1,13 +1,15 @@
# Generated starts and radio camps
Everon now chooses a new prison, radio camp and four mortar sites at preparation time. Other caches,
outposts retain their authored positions. The extraction helicopter uses the validated
Everon chooses a new prison, radio camp, four mortar sites and optional field
hospitals/camps at preparation time. The supply cache retains its authored position.
The extraction helicopter uses the validated
Everon airfield pad (4800.953 / 11487.412), with no off-airfield fallback. The server
resolves the prison first, then the radio, before creating any site entities.
Joining clients receive the real replicated locations; intel keeps the same
stable destination IDs.
Site authors can use `RandomClear 1` on a prison, radio or mortar definition. `Heading`
Site authors can use `RandomClear 1` on a prison, radio, mortar, hospital, outpost
or depot definition. `Heading`
sets the authored fallback heading; `RootHeight` offsets a composition above its
surveyed ground (the radio/table composition uses 0.8 m). Runtime placement never
rewrites the configuration file. Existing definitions default to authored sites.
@@ -17,11 +19,17 @@ terrain varying by more than 0.6 m, nearby roads (12 m), and unsafe guard footin
Prisons avoid physical runway/control-tower anchors by 1,500 m. The radio stays
at least 1 km from the prison and 300 m from other sites. The extraction pickup
must remain inside the prison-relative escape boundary with 100 m clearance.
Sampling yields after an 8 ms work budget, with a 30-second overall deadline and
Sampling yields after an 8 ms work budget, with a 30-second deadline and
12,000 candidate limit per site. The budget is checked between native terrain
queries, so a single engine query can exceed it. Authored fallback positions
must pass the same checks; otherwise preparation reports failure instead of
spawning an incomplete camp or waiting forever.
must pass the same checks. If both search and fallback fail, an optional outpost,
hospital or depot is omitted for that round and preparation continues. The
`[site skipped]` log identifies its label, ID and attempt count. Removal happens
before spawning, map registration or AI intel assignment, leaving no empty site.
Every following site gets a fresh search budget. Required prison/radio/extraction
and mortar sites remain mandatory. An otherwise optional site also remains
mandatory if removing it would invalidate the scenario, for example by losing
the minimum accessible radio-intel sources. No unsafe placement is accepted.
The existing prison composition, gate, backpack and guards move together.
Player slots and escape-boundary tests use the same rotation. Admission still
@@ -63,6 +71,22 @@ definitions. Other Workbench smoke outcomes explicitly load
fixtures, including the retired western cache and old extraction position.
Ordinary Workbench play and dedicated servers use the live definitions.
`--project core --smoke optional-site-skip` uses current randomized definitions,
forces camp 5 to fail both random and authored terrain checks, and verifies that
the camp has no runtime, required objectives/mortars remain and a player is
admitted. The failure injection exists only in the opt-in Workbench fixture.
On 2026-09-26, this fixture compiled and completed after camp 5 exhausted 12,000
candidates and failed its fallback. The camp was omitted and player admission
succeeded with prison, radio, extraction and all four mortars retained. The full
repository check passed. The runner reported a terminating-process classification
race at shutdown; independent follow-up confirmed the private prefix idle and
the addon source manifest unchanged. External inputs were unchanged. Existing
loaded asset errors remain; the completed scenario had no script/runtime failures. Evidence,
including the earlier test-selector compile failure, is retained under
`.local/analysis/optional-site-skip-2026-09-26/`. This validates local startup,
not a published or dedicated-server update.
On 2026-09-22, the full `python3 tools/check.py` suite passed. The final native
`generated-sites` fixture passed 39 assertions at a randomized Everon start:
prison at approximately (5100, 9137), heading 89 degrees; radio at (5991, 5659).