Capture current mission, AI, map and administration development

Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
2026-10-13 22:52:53 +02:00
parent a951a96edc
commit 6a667d8deb
8104 changed files with 2124945 additions and 2061 deletions
@@ -0,0 +1,59 @@
--- /dev/null
+++ b/docs/mission-starts.md
@@ -0,0 +1,29 @@
+# Mission starts
+
+Prison remains the default. Administrators can choose a static crash aftermath for the next round in `/esc menu` → Settings, or through chat:
+
+| Command | Effect |
+| --- | --- |
+| `/esc mission start show` | Show the saved next start and this round’s selected start |
+| `/esc mission start set prison` | Save Prison for the next round |
+| `/esc mission start set crash` | Save Crash for the next round |
+
+Numeric `0` and `1` are also accepted. There is no random start or reroll. Changing the saved choice does not move current players, replace the start site, or restart the mission.
+
+The server freezes the selection before preparing sites and replicates it to clients. Late joins and reconnects use that same round selection. A new round adopts the saved choice. The server stores it as integer `mission.startMode` in [`$profile:Escapists.json`](configuration.md#one-server-configuration); older files without this field select Prison. For manual edits, stop the mission, preserve the rest of the configuration, change only that field, and restart.
+
+## Playing from the crash site
+
+Crash mode places you on foot beside a static helicopter wreck. Search the salvage backpack for weapons and a field map, then follow the marked clue sites to find the radio. There is no prison gate to unlock. This is an aftermath scene: it does not fly or crash an aircraft, seat players, apply crash injuries, or grant a second life.
+
+The start cache and map retain their finite authored stock. Clue folders, radio defence, medical recovery and extraction use the existing mission rules; changing start type does not refill supplies or reveal the radio. Existing one-life admission and reconnect rules still apply. New arrivals use the normal survivor-near placement, with the starting area as fallback.
+
+Extraction distance is measured from the starting area in either mode. Gather everyone intended for rescue before flying beyond the boundary; only living prisoners aboard escape, including unconscious passengers. Players left behind do not escape.
+
+Placement checks the admission/cache area and the measured wreck footprint before spawning. If the configured composition or terrain cannot satisfy preparation, spawning is withheld with the normal administrator diagnosis; there is no silent fallback to Prison.
+
+## Resources and validation
+
+The aftermath uses an audited vanilla static wreck and successor-owned start setup. It adds no new external addon dependency. The current project still requires its declared RHS, WCS Armament, WCS BMP and Parachute Framework dependencies and their dependency closure; choosing Prison does not unload them. See the [external addon inventory](external-addons.json) for exact identities.
+
+The [native geometry run](evidence/native-2026-10-03-crash-geometry/report.json) passed 32 assertions and one completion with no script failures, while retaining 13 engine/resource errors. It measured the inert wreck’s bounds and verified owned probe cleanup. That run predates the integrated crash-start flow and does not prove crash terrain placement, player admission, a full escape, manual UI use, multiplayer or FPS. Focused settings and core-policy tests use native boundaries represented by test doubles. A native crash-start flow check is still pending; hideout starts and animated helicopter crashes are not implemented by this feature.
--- a/docs/original-feature-coverage.json
+++ b/docs/original-feature-coverage.json
@@ -6,15 +6,21 @@
"id": "alternate_starts",
"title": "Helicopter-crash and hideout starts",
"scope": "later",
- "status": "pending",
+ "status": "partial",
"original_scripts": [
"Scripts/Game/Components/ESCT_HelicrashHelicopterComponent.c",
"Scripts/Game/Components/Start/ESCT_HelicrashStartComponent.c",
"Scripts/Game/Components/Start/ESCT_HideoutStartComponent.c",
"Scripts/Game/Entities/ESCT_HelicrashLocationHolder.c"
],
- "replacement_files": [],
- "remaining": "Author separate layouts and progression rules after the prison release."
+ "replacement_files": [
+ "addons/core/Scripts/Game/ERR/00_Core/ERR_StartRules.c",
+ "addons/core/Scripts/Game/ERR/00_Core/ERR_StartSetup.c",
+ "addons/core/Scripts/Game/ERR/00_Core/ERR_CrashSiteResources.c",
+ "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c",
+ "docs/mission-starts.md"
+ ],
+ "remaining": "Independent static on-foot crash aftermath and persisted next-round Prison/Crash choice are implemented. Native geometry measurement passes; integrated native crash-start flow, full human escape and multiplayer remain unqualified. Hideout starts and animated helicopter crashes remain absent; no equivalence to protected original crash logic is claimed."
},
{
"id": "spectators",