diff --git a/README.md b/README.md index 9cad199..5281410 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,46 @@ -# Escapists Rereintroduced +# Escapists Reintroduced + +Author: **Jakub Jim Žáček**. An independently authored replacement for the abandoned Escapists base mission, targeting Everon and up to twelve players. This is a separate repository and **not a completed or release-ready replacement**. The base rewrite is the primary deliverable; companion migration supports it. -The current base supplies prison spawning, two independent scavenging/clue routes, finite medical and outpost stock, an optional ground vehicle, physical radio documents, named discovery markers, native objectives, a separate radio-defence service, capacity-checked helicopter extraction, identity-based partial results, early helicopter-loss defeat, saved mission time/speed, defeat/restart, identity-based lives and local spectator following. Authored site definitions and an injected vanilla faction/asset catalog own the initial physical population. Core provides administration and startup diagnostics; the optional AI, Intel, Chat and Map addons extend its interfaces. HQ coordinates enemy responses through physical radios and available forces. +The current base supplies prison spawning, two independent scavenging/clue routes, finite medical and outpost stock, an optional ground vehicle, physical radio documents, named discovery markers, native objectives, a separate radio-defence service, capacity-checked helicopter extraction, identity-based partial results, early helicopter-loss defeat, saved mission time/speed, defeat/restart, identity-based lives and local spectator following. Authored site definitions and an injected vanilla faction/asset catalog own the initial physical population. Core provides administration and startup diagnostics; the AI, Intel, Chat and Map modules extend its interfaces inside one addon. HQ coordinates enemy responses through physical radios and available forces. The [local development playtest handoff](docs/playtest-build.md) contains the earlier `5e74269` checkpoint: five native addon packages, matching source and separate manual launch scripts. It does not contain the newer HQ memory or RHS/WCS/BMP integration. Two scripted Core escape/restart rounds pass616 assertions; packaged Core and full-companion startup both pass. Full human completion and multiplayer remain to be tested. -The [AI migration checkpoint](docs/ai-migration-progress.md) adds delivered-report memory, bounded trajectory prediction, physical infantry pursuit, status checks, body observations and finite equipment. Native memory and actual-sighting response fixtures pass their assertions, with four retained upstream localization errors. See [current development status](docs/current-status.md) for source-bound checkpoints. The ordinary game loads all five addons and shows the [real prisoner view and starting objective](docs/evidence/game-2026-09-19-125906-integrated-prison/ordinary-prison-view.png). Native tests cover scripted escape/restart, finite mortar support, physical radio delivery, shared-map ownership, and the reusable aircraft controller's vertical flight, airborne cancellation and an isolated 20 m fixed route. Archived five-addon packages pass ordinary Chat startup without loose successor source and compile/prepare the empty mission on an isolated Linux server. The latter retains four installed-asset errors reproduced by a vanilla control. +The [AI migration checkpoint](docs/ai-migration-progress.md) adds delivered-report memory, bounded trajectory prediction, physical infantry pursuit, status checks, body observations and finite equipment. Native memory and actual-sighting response fixtures pass their assertions, with four retained upstream localization errors. See [current development status](docs/current-status.md) for source-bound checkpoints. The earlier five-addon checkpoint shows the [real prisoner view and starting objective](docs/evidence/game-2026-09-19-125906-integrated-prison/ordinary-prison-view.png). Native tests cover scripted escape/restart, finite mortar support, physical radio delivery, shared-map ownership, and the reusable aircraft controller's vertical flight, airborne cancellation and an isolated 20 m fixed route. Archived five-addon packages pass ordinary Chat startup without loose successor source and compile/prepare the empty mission on an isolated Linux server. The latter retains four installed-asset errors reproduced by a vanilla control. Native game-over now stops successor services and queued preparation before vanilla restart; unknown personal results use neutral wording. Two-round preparation/active-end regressions pass at their archived source checkpoint. Current Core/companion escape/restart and ordinary startup also pass after the guidance and route changes; the ordinary read-only sampler is separate from player-input acceptance. Later ordinary input checks demonstrate walking, clean inventory interaction and selecting the original prison lock. Automated held-action testing and experimental AI aircraft work are paused in favor of concrete base gameplay bugs and a playable development build. The complete player-controlled escape, real multiplayer, operational HQ aircraft routes and measured FPS improvement remain unfinished. Native packaging still produces [UI shutdown errors also reproduced by an empty-addon control](docs/native-packaging-control.md); successful packed startup does not qualify that build process. All seventeen first-release acceptance cases remain pending. The [original responsibility inventory](docs/original-feature-coverage.md) tracks the unfinished scope. -## Projects and scenarios +## Workbench project and scenario -Five Workbench projects live in `addons/core`, `addons/ai`, `addons/intel`, `addons/chat` and `addons/map`: +Open **`addons/core/addon.gproj`**, titled **Escapists Reintroduced**. This is the +single project to develop, package and eventually publish as one Workshop mod. +Use **`Missions/ERR_Everon.conf`** (`{C1E20667DCE324ED}`) for the full scenario. +The Core directory and addon GUID `2528466DE220D91C` are retained for continuity. -- Open `addons/core/addon.gproj` for the independent base scenario, `{AD62322D5213C440}Missions/ERR_Everon_Base.conf`. -- Open `addons/chat/addon.gproj` for full companion integration, `{C1E20667DCE324ED}Missions/ERR_Everon.conf`. +Scripts are organized under `addons/core/Scripts/Game/ERR/`: -Both use the newly authored Everon child world. Core depends only on vanilla Arma Reforger. AI and the full Chat scenario additionally require the authorized RHS: Status Quo, WCS Armaments and WCS BMP-1 closure; exact identities and setup are recorded in [external dependencies](docs/external-addons.md). All successor-authored resources are inside this repository. External assets are referenced, not redistributed; original restricted Escapists code, compositions, UI and audio are not included. +- `00_Core`: mission, players, settings and administration +- `10_AI`: HQ, patrols, logistics and support +- `20_Intel`: enemy documents and discovery feedback +- `30_Map`: shared field map +- `40_Chat`: command integration and full-scenario test fixtures + +The prefixes preserve Enforce script extension order. All modules load together. +Resources retain their existing paths and GUIDs within the combined project. + +Register only this project and its external dependencies in Workbench. Remove stale +AI/Intel/Map/Chat project entries if you previously added them. RHS: Status Quo, +WCS Armaments and WCS BMP-1 (including their dependencies) remain separate, +author-supplied mods; see [external dependencies](docs/external-addons.md). +Their assets are referenced, never redistributed. + +See the [single-mod migration and current commands](docs/single-mod.md). +Earlier five-addon build reports below are historical evidence, not validation of +the merged project. Nothing has been published to Workshop. See the [player route playtest guide](docs/player-route.md), [player lifecycle](docs/player-lifecycle.md), [manual gameplay gaps](docs/base-gameplay-gaps.md), [release qualification](docs/release-qualification.md), [performance comparison tooling](docs/performance-comparison.md), [configuration and commands](docs/configuration.md), [site authoring](docs/site-authoring.md), [architecture](docs/architecture.md) and [migration priorities](docs/base-replacement.md). @@ -35,4 +56,4 @@ For bounded hidden, muted local native tests, see [runtime testing](docs/runtime These scripted local fixtures manipulate positions and selected native states. They do not establish manual escape/piloting, real remote reconnects, twelve connected players or improved FPS. Separate regular-game runs establish standalone startup/admission; an isolated native Linux run establishes empty-server preparation, with inherited resource errors reproduced by a vanilla control. [Current status](docs/current-status.md) separates those gaps from demonstrated development behavior. [Validation evidence](docs/validation.md) preserves exact source checkpoints and failed iterations; `docs/acceptance.json` keeps unverified release requirements pending. -The [development source bundle tool](docs/development-source-bundle.md) previews a deterministic handoff of the five editable projects and writes only an explicitly requested new ZIP. It is **DEVELOPMENT SOURCE BUNDLE**, not a native `.pak` or qualified release; release-mode requests remain blocked by pending acceptance. No release package has been published. +The [development source bundle tool](docs/development-source-bundle.md) previews a deterministic handoff of the single editable project and writes only an explicitly requested new ZIP. It is **DEVELOPMENT SOURCE BUNDLE**, not a native `.pak` or qualified release; release-mode requests remain blocked by pending acceptance. No release package has been published. diff --git a/addons/ai/addon.gproj b/addons/ai/addon.gproj deleted file mode 100644 index 34c42e8..0000000 --- a/addons/ai/addon.gproj +++ /dev/null @@ -1,12 +0,0 @@ -GameProject { - ID "ERR_Ai" - GUID "5192138CB9D5B911" - TITLE "Escapists Rereintroduced - Ai" - Dependencies { - "58D0FB3206B6F859" - "2528466DE220D91C" - "595F2BF2F44836FB" - "629B2BA37EFFD577" - "5E524E4FEECCA92B" - } -} diff --git a/addons/chat/addon.gproj b/addons/chat/addon.gproj deleted file mode 100644 index d2e277c..0000000 --- a/addons/chat/addon.gproj +++ /dev/null @@ -1,12 +0,0 @@ -GameProject { - ID "ERR_Chat" - GUID "FA804F411BDDF2C6" - TITLE "Escapists Rereintroduced - Chat" - Dependencies { - "58D0FB3206B6F859" - "2528466DE220D91C" - "5192138CB9D5B911" - "D31039C7C53E348A" - "9AAEE9041D79809E" - } -} diff --git a/addons/map/Materials/ERRM_MapRenderTarget.emat b/addons/core/Materials/ERRM_MapRenderTarget.emat similarity index 100% rename from addons/map/Materials/ERRM_MapRenderTarget.emat rename to addons/core/Materials/ERRM_MapRenderTarget.emat diff --git a/addons/map/Materials/ERRM_MapRenderTarget.emat.meta b/addons/core/Materials/ERRM_MapRenderTarget.emat.meta similarity index 100% rename from addons/map/Materials/ERRM_MapRenderTarget.emat.meta rename to addons/core/Materials/ERRM_MapRenderTarget.emat.meta diff --git a/addons/chat/Missions/ERR_Everon.conf b/addons/core/Missions/ERR_Everon.conf similarity index 78% rename from addons/chat/Missions/ERR_Everon.conf rename to addons/core/Missions/ERR_Everon.conf index d63df9d..600d417 100644 --- a/addons/chat/Missions/ERR_Everon.conf +++ b/addons/core/Missions/ERR_Everon.conf @@ -1,8 +1,8 @@ SCR_MissionHeader { World "{B6C516F86302C679}Worlds/ERR_Everon.ent" SystemsConfig "{C50579A2EC48E8EF}Configs/Systems/MissionSystems.conf" - m_sName "Rereintroduced: Everon (development)" - m_sAuthor "Rereintroduced contributors" + m_sName "Escapists Reintroduced — Everon" + m_sAuthor "Jakub Jim Žáček" m_sDescription "Independent escape prototype. Development scenario; runtime validation in progress." m_sGameMode "Escape" m_iPlayerCount 12 diff --git a/addons/chat/Missions/ERR_Everon.conf.meta b/addons/core/Missions/ERR_Everon.conf.meta similarity index 100% rename from addons/chat/Missions/ERR_Everon.conf.meta rename to addons/core/Missions/ERR_Everon.conf.meta diff --git a/addons/core/Missions/ERR_Everon_Base.conf b/addons/core/Missions/ERR_Everon_Base.conf index b44da89..3d6bbbe 100644 --- a/addons/core/Missions/ERR_Everon_Base.conf +++ b/addons/core/Missions/ERR_Everon_Base.conf @@ -1,11 +1,11 @@ SCR_MissionHeader { World "{B6C516F86302C679}Worlds/ERR_Everon.ent" SystemsConfig "{C50579A2EC48E8EF}Configs/Systems/MissionSystems.conf" - m_sName "Rereintroduced: Everon Base (development)" - m_sAuthor "Rereintroduced contributors" - m_sDescription "Independent base escape mission using vanilla Reforger. Companion addons optional. Development scenario." + m_sName "Escapists Reintroduced — Everon" + m_sAuthor "Jakub Jim Žáček" + m_sDescription "Legacy diagnostic header for the integrated Escapists Reintroduced mod." m_sGameMode "Escape" m_iPlayerCount 12 m_eSaveTypes 0 - m_bShowInScenarioMenu 1 + m_bShowInScenarioMenu 0 } diff --git a/addons/ai/Prefabs/ERR/ConvoyCrew.et b/addons/core/Prefabs/ERR/ConvoyCrew.et similarity index 85% rename from addons/ai/Prefabs/ERR/ConvoyCrew.et rename to addons/core/Prefabs/ERR/ConvoyCrew.et index 46cd3dc..75c4c18 100644 --- a/addons/ai/Prefabs/ERR/ConvoyCrew.et +++ b/addons/core/Prefabs/ERR/ConvoyCrew.et @@ -1,4 +1,5 @@ SCR_AIGroup : "{000CD338713F2B5A}Prefabs/AI/Groups/Group_Base.et" { + ID "781266D87A305AA9" m_faction "USSR" m_bSpawnImmediately 0 m_aUnitPrefabSlots { diff --git a/addons/ai/Prefabs/ERR/ConvoyCrew.et.meta b/addons/core/Prefabs/ERR/ConvoyCrew.et.meta similarity index 100% rename from addons/ai/Prefabs/ERR/ConvoyCrew.et.meta rename to addons/core/Prefabs/ERR/ConvoyCrew.et.meta diff --git a/addons/core/Prefabs/ERR/Extraction.et b/addons/core/Prefabs/ERR/Extraction.et index 2ad6dc1..d1640a9 100644 --- a/addons/core/Prefabs/ERR/Extraction.et +++ b/addons/core/Prefabs/ERR/Extraction.et @@ -1,4 +1,5 @@ GenericEntity { + ID "B7DDF3A8A8C387D1" components { ERR_LocationComponent "{C17CA14398A1CD7E}" { m_Kind 2 } RplComponent "{0BF5BAAA5FBFEECE}" { Streamable Disabled } diff --git a/addons/core/Prefabs/ERR/FactionManager.et b/addons/core/Prefabs/ERR/FactionManager.et index b2c8f02..d944b02 100644 --- a/addons/core/Prefabs/ERR/FactionManager.et +++ b/addons/core/Prefabs/ERR/FactionManager.et @@ -1,4 +1,5 @@ SCR_FactionManager : "{A242612865F2A48E}Prefabs/MP/Managers/Factions/FactionManager_Base.et" { + ID "9D8B772E349A5ED5" Factions { SCR_Faction : "{5C67A1DDE0044806}Configs/ERR/Factions/US.conf" { m_sFactionBackground "{F8AC305446D5D480}UI/Textures/DeployMenu/Loadout-BG/Loadout_US_BG.imageset" diff --git a/addons/core/Prefabs/ERR/FieldCover.et b/addons/core/Prefabs/ERR/FieldCover.et index ec18f1f..290b1b2 100644 --- a/addons/core/Prefabs/ERR/FieldCover.et +++ b/addons/core/Prefabs/ERR/FieldCover.et @@ -1,4 +1,5 @@ GenericEntity { + ID "8F6EFB31A8BEAB20" components { MeshObject "{A557F6DC012E5101}" { Object "{268DBDABB3C94AD7}Assets/Props/Military/Sandbags/Sandbag_01_short.xob" diff --git a/addons/core/Prefabs/ERR/GameMode.et b/addons/core/Prefabs/ERR/GameMode.et index 41a9d62..c269e9a 100644 --- a/addons/core/Prefabs/ERR/GameMode.et +++ b/addons/core/Prefabs/ERR/GameMode.et @@ -1,4 +1,5 @@ ERR_GameMode : "{0F307326459A1395}Prefabs/MP/Modes/GameMode_Base.et" { + ID "17B3CC49610F4ADE" components { SCR_GameOverScreenManagerComponent "{56DEC646298AD219}" { m_GameOverScreenConfig SCR_GameOverScreenConfig "{56DEC6462FFDD82D}" : "{F6633922A25F9441}Configs/ERR/GameOverScreens.conf" {} @@ -10,5 +11,5 @@ ERR_GameMode : "{0F307326459A1395}Prefabs/MP/Modes/GameMode_Base.et" { m_SpawnLogic ERR_SpawnLogic "{79AD722B2EFD595F}" {} } } - m_bUseSpawnPreload 0 + m_bUseSpawnPreload 1 } diff --git a/addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et b/addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et index 23e371f..8cbccde 100644 --- a/addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et +++ b/addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et @@ -1,4 +1,5 @@ GenericEntity : "{33B2DFDCD0EBA3DB}Prefabs/Items/Equipment/Kits/RepairKit_01/RepairKit_01_wrench.et" { + ID "D4FD26777E598970" components { InventoryItemComponent "{5222EB4D0C73006B}" { Attributes SCR_ItemAttributeCollection "{5222EB4D0A2B466B}" { diff --git a/addons/ai/Prefabs/ERR/MortarCrew.et b/addons/core/Prefabs/ERR/MortarCrew.et similarity index 95% rename from addons/ai/Prefabs/ERR/MortarCrew.et rename to addons/core/Prefabs/ERR/MortarCrew.et index 1159fe9..60947e5 100644 --- a/addons/ai/Prefabs/ERR/MortarCrew.et +++ b/addons/core/Prefabs/ERR/MortarCrew.et @@ -1,4 +1,5 @@ SCR_AIGroup : "{8DE0C0830FE0C33D}Prefabs/Groups/OPFOR/Group_USSR_Base.et" { + ID "2550CE58718BC634" m_aUnitPrefabSlots { "{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" "{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" diff --git a/addons/ai/Prefabs/ERR/MortarCrew.et.meta b/addons/core/Prefabs/ERR/MortarCrew.et.meta similarity index 100% rename from addons/ai/Prefabs/ERR/MortarCrew.et.meta rename to addons/core/Prefabs/ERR/MortarCrew.et.meta diff --git a/addons/core/Prefabs/ERR/ObjectiveDocument.et b/addons/core/Prefabs/ERR/ObjectiveDocument.et index 850c6c1..eab28ec 100644 --- a/addons/core/Prefabs/ERR/ObjectiveDocument.et +++ b/addons/core/Prefabs/ERR/ObjectiveDocument.et @@ -1,4 +1,5 @@ GenericEntity : "{6D56FED1E55A8F84}Prefabs/Items/Misc/IntelligenceFolder_E_01/IntelligenceFolder_E_01.et" { + ID "7F01099866C4E054" components { ERR_DocumentComponent "{E4598D0BE2C251A3}" {} } diff --git a/addons/core/Prefabs/ERR/Patrol.et b/addons/core/Prefabs/ERR/Patrol.et index 7295625..93a4d8f 100644 --- a/addons/core/Prefabs/ERR/Patrol.et +++ b/addons/core/Prefabs/ERR/Patrol.et @@ -1,4 +1,5 @@ SCR_AIGroup : "{E552DABF3636C2AD}Prefabs/Groups/OPFOR/Group_USSR_RifleSquad.et" { + ID "B31BA06A7D5A2E37" m_aUnitPrefabSlots { "{5436629450D8387A}Prefabs/Characters/Factions/OPFOR/USSR_Army/Character_USSR_SL.et" "{612F43A4D5AE765F}Prefabs/Characters/Factions/OPFOR/USSR_Army/Character_USSR_RTO.et" diff --git a/addons/core/Prefabs/ERR/Prison.et b/addons/core/Prefabs/ERR/Prison.et index 047a5ed..f818268 100644 --- a/addons/core/Prefabs/ERR/Prison.et +++ b/addons/core/Prefabs/ERR/Prison.et @@ -1,4 +1,5 @@ GenericEntity { + ID "287E3009E495A14F" components { ERR_LocationComponent "{3B60CBEB3C04333C}" { m_Kind 0 } Hierarchy "{30ADADE77D1EC3B8}" {} @@ -72,7 +73,7 @@ GenericEntity { } GenericEntity : "{A67420C1FB91856E}Prefabs/ERR/PrisonWall.et" { ID "2735B52246DD6213" - coords -3 0 -6 + coords -3.72 0 -6.04 angles 0 0 0 } GenericEntity : "{A67420C1FB91856E}Prefabs/ERR/PrisonWall.et" { @@ -80,10 +81,14 @@ GenericEntity { coords 3 0 -6 angles 0 0 0 } + GenericEntity : "{A67420C1FB91856E}Prefabs/ERR/PrisonWall.et" { + ID "48971F16E1F34412" + coords 0.72 0 -6.04 + angles 0 0 0 + } GenericEntity : "{C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et" { ID "54D8F96ECC743335" - scale 1.5 - coords 0 -0.1 -6 + coords 0 0 -6 angles 0 0 0 } DecalEntity : "{4AD6EB80A8B1FA3A}Prefabs/Decals/Dirt/Decal_Dirt_Patch_03.et" { diff --git a/addons/core/Prefabs/ERR/PrisonDoor.et b/addons/core/Prefabs/ERR/PrisonDoor.et index 2725dd5..7d8f892 100644 --- a/addons/core/Prefabs/ERR/PrisonDoor.et +++ b/addons/core/Prefabs/ERR/PrisonDoor.et @@ -1,17 +1,39 @@ -GenericEntity : "{34B08027DBDE322A}Prefabs/Structures/BuildingParts/Doors/Door_MetalGate_01_Short_LEFT_EXT_ST_B.et" { +GenericEntity : "{87CADB5ADC989993}Prefabs/Structures/BuildingParts/Doors/DoorSet_Base.et" { + ID "779BF460CE27BEF7" components { - DoorComponent "{221C667A9F7D4B69}" { - DoorAction ERR_PrisonDoorAction "{50888D3646A61640}" { - ParentContextList { "SCR_DoorUserAction" } - } + MeshObject "{61B367470698533A}" { + Object "{E3BC73BFBC7AA497}Assets/Structures/BuildingsParts/Doors/DoorFrame_door_metal_A_RIGHT_EXT_B.xob" } - ActionsManagerComponent "{F32B667C3C823800}" { - ActionContexts { UserActionContext "{50888D37F529F720}" { ContextName "SCR_DoorUserAction" Radius 2 } } - additionalActions { - ERR_UnlockPrisonAction "{CA7918FEA177BFB8}" { - ParentContextList { "SCR_DoorUserAction" } - UIInfo SCR_ActionUIInfo "{F734C81E11AA6BEF}" { Name "Pick prison lock" } - Duration 4 + RplComponent "{82AC07E74327438F}" {} + } + { + GenericEntity : "{67F17696FF278AE0}Prefabs/Structures/BuildingParts/Doors/Door_Metal_A_RIGHT_EXT_COV_B.et" { + ID "A14F618EC4C14ECB" + components { + Hierarchy "{7642683606C70747}" { PivotID "socket_door" } + DoorComponent "{221C667A9F7D4B69}" { + DoorAction ERR_PrisonDoorAction "{50888D3646A61640}" { + ParentContextList { "SCR_DoorUserAction" } + } + } + ActionsManagerComponent "{F32B667C3C823800}" { + ActionContexts { + UserActionContext "{50888D37F529F720}" { + ContextName "SCR_DoorUserAction" + Radius 2 + } + } + additionalActions { + ERR_UnlockPrisonAction "{CA7918FEA177BFB8}" { + ParentContextList { "SCR_DoorUserAction" } + UIInfo SCR_ActionUIInfo "{F734C81E11AA6BEF}" { + Name "Pick prison lock" + m_sIconName "tools" + } + Duration 4 + "Sort Priority" -1 + } + } } } } diff --git a/addons/core/Prefabs/ERR/PrisonWall.et b/addons/core/Prefabs/ERR/PrisonWall.et index 90d2735..b38c33f 100644 --- a/addons/core/Prefabs/ERR/PrisonWall.et +++ b/addons/core/Prefabs/ERR/PrisonWall.et @@ -1,4 +1,5 @@ GenericEntity { + ID "124B3922375D4E58" components { Hierarchy "{4F20A90EDBD625A4}" {} MeshObject "{4F20A90EDBD625A1}" { Object "{0B96D139FEBCA006}Assets/Structures/Walls/Concrete/ConcreteWall_01_3m.xob" } diff --git a/addons/core/Prefabs/ERR/Prisoner.et b/addons/core/Prefabs/ERR/Prisoner.et index 8b8d49f..18e9fba 100644 --- a/addons/core/Prefabs/ERR/Prisoner.et +++ b/addons/core/Prefabs/ERR/Prisoner.et @@ -1,4 +1,5 @@ SCR_ChimeraCharacter : "{836E7E39AAC5888B}Prefabs/Characters/Factions/BLUFOR/US_Army/Character_US_Base.et" { + ID "33B18E530DB189C6" components { ActionsManagerComponent "{520EA1D2F659CE02}" { additionalActions { diff --git a/addons/core/Prefabs/ERR/Radio.et b/addons/core/Prefabs/ERR/Radio.et index 8fd6e6b..c73b0ea 100644 --- a/addons/core/Prefabs/ERR/Radio.et +++ b/addons/core/Prefabs/ERR/Radio.et @@ -1,4 +1,5 @@ GenericEntity { + ID "83D9280A866F0092" components { MeshObject "{111C06CB740ED195}" { Object "{77C9FCF3FB1246E9}Assets/Items/Equipment/Radios/Radio_R107M/Radio_R107M_01_item.xob" } RigidBody "{4C174A44D07B91BA}" { ModelGeometry 1 Static 1 } diff --git a/addons/core/Prefabs/ERR/SpectatorCamera.et b/addons/core/Prefabs/ERR/SpectatorCamera.et index db6fbed..a211966 100644 --- a/addons/core/Prefabs/ERR/SpectatorCamera.et +++ b/addons/core/Prefabs/ERR/SpectatorCamera.et @@ -1,4 +1,5 @@ SCR_ManualCamera { + ID "634904BCEDA1A285" m_bInputEnabled 0 m_bStartAtEntity 1 m_aComponents { diff --git a/addons/core/Prefabs/ERR/SupplyCache.et b/addons/core/Prefabs/ERR/SupplyCache.et index de68b39..9a1da0b 100644 --- a/addons/core/Prefabs/ERR/SupplyCache.et +++ b/addons/core/Prefabs/ERR/SupplyCache.et @@ -1,4 +1,5 @@ GenericEntity : "{EBBC859CCD94D96D}Prefabs/Props/EmptyStorages/USSR_AmmoBox_empty.et" { + ID "53884C37C0729BF6" components { MeshObject "{6530845A09309E37}" { Object "{819ED3266EE5113B}Assets/Props/Military/AmmoBox/EquipmentBoxWooden_01/EquipmentBoxWooden_Weapon_01.xob" diff --git a/addons/core/Prefabs/ERR/SupplySite.et b/addons/core/Prefabs/ERR/SupplySite.et index 118178f..4b9a55c 100644 --- a/addons/core/Prefabs/ERR/SupplySite.et +++ b/addons/core/Prefabs/ERR/SupplySite.et @@ -1,4 +1,5 @@ GenericEntity { + ID "11E225C720271170" components { ERR_LocationComponent "{8E7CFEA92C1811F0}" { m_Kind 4 } RplComponent "{98A4A31435A9CA04}" { Streamable Disabled } diff --git a/addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et b/addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et index b7e07c7..27e38f0 100644 --- a/addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et +++ b/addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et @@ -1,4 +1,5 @@ Vehicle : "{259EE7B78C51B624}Prefabs/Vehicles/Wheeled/UAZ469/UAZ469.et" { + ID "E0C2C9683B1B68D4" components { ERR_VehicleSecurityComponent "{E51E9F624DB28C37}" { m_LockAnchor -0.95 1.05 0.3 diff --git a/addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et b/addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et index de6dbda..736b00b 100644 --- a/addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et +++ b/addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et @@ -1,4 +1,5 @@ GenericEntity : "{780AAF0A51AEE61A}Prefabs/Vehicles/Wheeled/UAZ469/VehParts/Seats/UAZ469_seats_rear.et" { + ID "32BA78DE126813F5" components { SCR_BaseCompartmentManagerComponent "{2CD4A765A7D52986}" { CompartmentSlots { diff --git a/addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et b/addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et similarity index 100% rename from addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et rename to addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et diff --git a/addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta b/addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta similarity index 100% rename from addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta rename to addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta diff --git a/addons/core/Scripts/Game/ERR/ERR_Actions.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_Actions.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c diff --git a/addons/core/Scripts/Game/ERR/ERR_Actors.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_Actors.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c diff --git a/addons/core/Scripts/Game/ERR/ERR_AdminMenu.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_AdminMenu.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c diff --git a/addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c diff --git a/addons/core/Scripts/Game/ERR/ERR_AdminProvider.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_AdminProvider.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c diff --git a/addons/core/Scripts/Game/ERR/ERR_AdminService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_AdminService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c diff --git a/addons/core/Scripts/Game/ERR/ERR_AdminSession.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_AdminSession.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c diff --git a/addons/core/Scripts/Game/ERR/ERR_CasualtyGroundSupport.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_CasualtyGroundSupport.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c diff --git a/addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingFeedback.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingFeedback.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c diff --git a/addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingGameMode.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingGameMode.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c diff --git a/addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingOwner.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingOwner.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c diff --git a/addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c similarity index 99% rename from addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c index 75d4229..5934ebd 100644 --- a/addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c @@ -280,7 +280,7 @@ class ERR_CasualtyLoadingService ERR_CasualtyLoadTicket ticket = Ticket(controller, nonce); if (!ticket || !ticket.Committed || ticket.OwnerReported) return; ticket.OwnerReported = true; - if (!accepted) Print("Rereintroduced [casualty]: owner declined loading; observing physical outcome until expiry."); + if (!accepted) Print("Reintroduced [casualty]: owner declined loading; observing physical outcome until expiry."); // Neither positive nor negative client acknowledgements release a reserved // seat while an authorized owner command could still be in flight. } diff --git a/addons/core/Scripts/Game/ERR/ERR_ChatClient.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_ChatClient.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c diff --git a/addons/core/Scripts/Game/ERR/ERR_DiscoveryMap.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_DiscoveryMap.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c diff --git a/addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c similarity index 94% rename from addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c index edf56e6..5d26f66 100644 --- a/addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c @@ -70,7 +70,7 @@ class ERR_DiscoveryService ERR_LocationComponent chosen = eligible.GetRandomElement(); if (!chosen.Discover(Math.RandomInt(0, 100), m_Mode.Settings().Get("intelRevealChancePercent"))) continue; m_Spent.Insert(folder); - PrintFormat("Rereintroduced [intel]: player %1 recovered folder; location=%2 knowledge=%3", GetGame().GetPlayerManager().GetPlayerIdFromControlledEntity(player), chosen.Id(), chosen.Knowledge()); + PrintFormat("Reintroduced [intel]: player %1 recovered folder; location=%2 knowledge=%3", GetGame().GetPlayerManager().GetPlayerIdFromControlledEntity(player), chosen.Id(), chosen.Knowledge()); } } diff --git a/addons/core/Scripts/Game/ERR/ERR_DocumentComponent.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c similarity index 68% rename from addons/core/Scripts/Game/ERR/ERR_DocumentComponent.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c index 4572814..d948126 100644 --- a/addons/core/Scripts/Game/ERR/ERR_DocumentComponent.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c @@ -1,4 +1,4 @@ -[ComponentEditorProps(category: "Rereintroduced", description: "Physical document identifying one authored objective")] +[ComponentEditorProps(category: "Reintroduced", description: "Physical document identifying one authored objective")] class ERR_DocumentComponentClass : ScriptComponentClass {} class ERR_DocumentComponent : ScriptComponent { diff --git a/addons/core/Scripts/Game/ERR/ERR_EnvironmentService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c similarity index 98% rename from addons/core/Scripts/Game/ERR/ERR_EnvironmentService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c index 440a7b9..36339d4 100644 --- a/addons/core/Scripts/Game/ERR/ERR_EnvironmentService.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c @@ -108,7 +108,7 @@ class ERR_EnvironmentService m_DateCode = dateCode; m_Profile = profile; m_Started = true; - PrintFormat("Rereintroduced [environment]: date=%1 weather=%2", Date(dateCode), ProfileName(profile)); + PrintFormat("Reintroduced [environment]: date=%1 weather=%2", Date(dateCode), ProfileName(profile)); return true; } bool Started() { return m_Started && !m_Stopped; } diff --git a/addons/core/Scripts/Game/ERR/ERR_EscapeGameOverScreenInfo.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_EscapeGameOverScreenInfo.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c diff --git a/addons/core/Scripts/Game/ERR/ERR_ExtractionPlacement.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c similarity index 95% rename from addons/core/Scripts/Game/ERR/ERR_ExtractionPlacement.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c index 5d70758..ea58883 100644 --- a/addons/core/Scripts/Game/ERR/ERR_ExtractionPlacement.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c @@ -41,7 +41,7 @@ class ERR_ExtractionPlacement protected ERR_PrepareResult Fail(string reason) { m_Failure = reason; m_Result = ERR_PrepareResult.FAILED; - Print("Rereintroduced [extraction placement]: " + reason, LogLevel.ERROR); + Print("Reintroduced [extraction placement]: " + reason, LogLevel.ERROR); return m_Result; } protected void Diagnostic(bool ready) @@ -98,7 +98,7 @@ class ERR_ExtractionPlacement if (Stable(m_StableSince, m_LastObservation, now)) { if (!QualificationAllowed(m_Result == ERR_PrepareResult.READY, now, m_Deadline)) return Fail("initial aircraft stable qualification missed the 30-second preparation deadline"); - if (m_Result != ERR_PrepareResult.READY) Print("Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake"); + if (m_Result != ERR_PrepareResult.READY) Print("Reintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake"); m_Result = ERR_PrepareResult.READY; m_LastObservation = now; return m_Result; diff --git a/addons/core/Scripts/Game/ERR/ERR_ExtractionService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_ExtractionService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c diff --git a/addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c diff --git a/addons/core/Scripts/Game/ERR/ERR_ForceLedger.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c similarity index 98% rename from addons/core/Scripts/Game/ERR/ERR_ForceLedger.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c index 4381bc8..617bc72 100644 --- a/addons/core/Scripts/Game/ERR/ERR_ForceLedger.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c @@ -106,7 +106,7 @@ class ERR_ForceLedger // formation cannot replace its casualties with a fresh full-strength unit. if (m_Records.Count() >= 128 || m_Sources.Count() >= 128) { - if (!m_CapLogged) Print("Rereintroduced [ledger]: 128-formation registration cap reached."); + if (!m_CapLogged) Print("Reintroduced [ledger]: 128-formation registration cap reached."); m_CapLogged = true; return null; } diff --git a/addons/core/Scripts/Game/ERR/ERR_ForceSimulation.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_ForceSimulation.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c diff --git a/addons/core/Scripts/Game/ERR/ERR_GameMode.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c similarity index 96% rename from addons/core/Scripts/Game/ERR/ERR_GameMode.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c index f42a699..da97302 100644 --- a/addons/core/Scripts/Game/ERR/ERR_GameMode.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c @@ -153,7 +153,7 @@ class ERR_GameMode : SCR_BaseGameMode if (!Replication.IsServer() || m_Phase != ERR_Phase.PREPARING || !m_PreparationError.IsEmpty()) return; m_PreparationError = detail; Replication.BumpMe(); - Print("Rereintroduced: scenario preparation failed; spawning remains disabled: " + detail, LogLevel.ERROR); + Print("Reintroduced: scenario preparation failed; spawning remains disabled: " + detail, LogLevel.ERROR); StopServices(); ERR_SiteService sites = Sites(); if (sites) sites.Rollback(); @@ -184,7 +184,7 @@ class ERR_GameMode : SCR_BaseGameMode { if (existing.Id() == location.Id()) { - Print("Rereintroduced: duplicate location ID " + location.Id(), LogLevel.ERROR); + Print("Reintroduced: duplicate location ID " + location.Id(), LogLevel.ERROR); return; } } @@ -222,7 +222,7 @@ class ERR_GameMode : SCR_BaseGameMode { m_ForceSerial++; ERR_ForceRecord record = m_Forces.Register("formation-" + m_ForceSerial.ToString(), ERR_ForceKind.GARRISON, group.GetOrigin(), strength, null, group, GetGame().GetWorld().GetWorldTime()); - if (!record) { Print("Rereintroduced: force ledger refused physical formation", LogLevel.ERROR); return; } + if (!record) { Print("Reintroduced: force ledger refused physical formation", LogLevel.ERROR); return; } } } if (m_Command) m_Command.RegisterGroup(group); @@ -259,10 +259,19 @@ class ERR_GameMode : SCR_BaseGameMode if (!Replication.IsServer() || !m_PreparationError.IsEmpty() || !ERR_MissionRules.CanTransition(m_Phase, phase)) return false; ERR_Phase previous = m_Phase; m_Phase = phase; + if (previous == ERR_Phase.PRISON && phase == ERR_Phase.RADIO_SEARCH) + { + // Dormant patrols must not catch up the time spent waiting in prison. + for (int i = 0; i < m_Forces.Count(); i++) + { + ERR_ForceRecord force = m_Forces.At(i); + if (force) force.LastSimulatedAt = GetWorld().GetWorldTime(); + } + } RefreshRadioFeedback(); if (ERR_MissionRules.Terminal(phase)) PublishEscapeResults(); Replication.BumpMe(); - PrintFormat("Rereintroduced [mission]: phase %1 -> %2", previous, phase); + PrintFormat("Reintroduced [mission]: phase %1 -> %2", previous, phase); m_OnPhaseChanged.Invoke(previous, phase); if (ERR_MissionRules.Terminal(phase)) { @@ -451,7 +460,7 @@ class ERR_GameMode : SCR_BaseGameMode if (m_Command) m_Command.Maintain(now); // Maintenance can finish or stop the round; do not resume tactical work. if (!Active()) return; - TickForces(now); + if (m_Phase >= ERR_Phase.RADIO_SEARCH) TickForces(now); if (GetGame().GetPlayerManager().GetPlayerCount() == 0) { m_NoSurvivorsSince = -1; @@ -476,7 +485,7 @@ class ERR_GameMode : SCR_BaseGameMode SCR_PlayerController controller = SCR_PlayerController.Cast(GetGame().GetPlayerManager().GetPlayerController(id)); if (controller) controller.ERR_UpdateObserverServer(); } - if (m_Command) m_Command.Tick(now); + if (m_Command && m_Phase >= ERR_Phase.RADIO_SEARCH) m_Command.Tick(now); m_OnTick.Invoke(now); } diff --git a/addons/core/Scripts/Game/ERR/ERR_InitialGuardRules.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_InitialGuardRules.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c diff --git a/addons/core/Scripts/Game/ERR/ERR_Inventory.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_Inventory.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c diff --git a/addons/core/Scripts/Game/ERR/ERR_InventoryLayout.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_InventoryLayout.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c diff --git a/addons/core/Scripts/Game/ERR/ERR_ItemStationTeardown.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_ItemStationTeardown.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c diff --git a/addons/core/Scripts/Game/ERR/ERR_LoadCasualtyAction.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_LoadCasualtyAction.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c diff --git a/addons/core/Scripts/Game/ERR/ERR_LocalAdmission.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c similarity index 96% rename from addons/core/Scripts/Game/ERR/ERR_LocalAdmission.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c index 55bd09f..d423fbe 100644 --- a/addons/core/Scripts/Game/ERR/ERR_LocalAdmission.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c @@ -67,7 +67,7 @@ class ERR_LocalAdmission m_Selected = true; if (m_Key.IsNull()) { m_Key = UUID.GenV4(); m_LocalKey = true; } if (m_Key.IsNull()) { m_Failed = true; return UUID.NULL_UUID; } - if (m_LocalKey) Print("Rereintroduced [admission]: sole offline controller uses a generated local-round roster key; backend identity and permissions unchanged."); + if (m_LocalKey) Print("Reintroduced [admission]: sole offline controller uses a generated local-round roster key; backend identity and permissions unchanged."); return m_Key; } bool Validate() diff --git a/addons/core/Scripts/Game/ERR/ERR_Location.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c similarity index 94% rename from addons/core/Scripts/Game/ERR/ERR_Location.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c index bff1193..b26d4f2 100644 --- a/addons/core/Scripts/Game/ERR/ERR_Location.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c @@ -1,6 +1,6 @@ enum ERR_LocationKind { PRISON, RADIO, EXTRACTION, OUTPOST, DEPOT } -[ComponentEditorProps(category: "Rereintroduced", description: "Server-owned location with replicated discovery state")] +[ComponentEditorProps(category: "Reintroduced", description: "Server-owned location with replicated discovery state")] class ERR_LocationComponentClass : ScriptComponentClass {} class ERR_LocationComponent : ScriptComponent { diff --git a/addons/core/Scripts/Game/ERR/ERR_MissionRules.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_MissionRules.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeAdminMenuProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeAdminMenuProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeAdminSettingsProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeAdminSettingsProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeCasualtyGroundProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeCasualtyGroundProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeCasualtyLoadProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeCasualtyLoadProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeCasualtyRemoveProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeCasualtyRemoveProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeCasualtyServiceProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeCasualtyServiceProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeContractsProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeContractsProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeDefinitionProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeDefinitionProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeDiscoveryMapProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeDiscoveryMapProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeEndProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeEndProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentRestartProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentRestartProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeExtractionProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeExtractionProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeFactionCatalogProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeFactionCatalogProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeFlightFootprint.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeFlightFootprint.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeFlightInputDiagnostics.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeFlightInputDiagnostics.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeGuardCancelProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeGuardCancelProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeItemStationTeardownProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeItemStationTeardownProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeLifecycleProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeLifecycleProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeLocalAdmissionProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeLocalAdmissionProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeMedicalProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeMedicalProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeObjectiveLossProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeObjectiveLossProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeObjectiveProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeObjectiveProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativePatrolProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativePatrolProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativePoweredFlightProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativePoweredFlightProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativePreparationStatusProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativePreparationStatusProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativePrisonBreachProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c similarity index 88% rename from addons/core/Scripts/Game/ERR/ERR_NativePrisonBreachProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c index 7cd8883..c55c985 100644 --- a/addons/core/Scripts/Game/ERR/ERR_NativePrisonBreachProbe.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c @@ -99,11 +99,21 @@ class ERR_NativePrisonBreachProbe if (gate) door = BaseDoorComponent.Cast(gate.FindComponent(BaseDoorComponent)); if (!Check(door && !escape.GateLost() && Math.AbsFloat(door.GetNormalizedDoorState()) < 0.01 && !door.IsOpening() && m_Mode.Phase() == ERR_Phase.PRISON && m_Transitions == 0, "direct AI/player PerformAction cannot open locked native gate or advance progression")) return -1; SCR_DestructionMultiPhaseComponent damage = SCR_DestructionMultiPhaseComponent.Cast(gate.FindComponent(SCR_DestructionMultiPhaseComponent)); - if (!Check(damage && damage.GetDefaultHitZone(), "actual gate has its inherited multiphase destruction component and hit zone")) return -1; - PrintFormat("ERR PRISON BREACH DAMAGE: health=%1 enabled=%2 threshold=%3", damage.GetHealth(), damage.IsDamageHandlingEnabled(), damage.GetTotalDestructionThreshold()); - vector hit[3]; hit[0] = gate.GetOrigin(); hit[1] = "0 0 1"; hit[2] = "0 0 -1"; - SCR_DamageContext context = new SCR_DamageContext(EDamageType.TRUE, 100000, hit, gate, damage.GetDefaultHitZone(), Instigator.CreateInstigator(m_Player), null, -1, -1); - damage.HandleDamage(context); + if (damage) + { + if (!Check(damage.GetDefaultHitZone() != null, "destructible gate has its native hit zone")) return -1; + PrintFormat("ERR PRISON BREACH DAMAGE: health=%1 enabled=%2 threshold=%3", damage.GetHealth(), damage.IsDamageHandlingEnabled(), damage.GetTotalDestructionThreshold()); + vector hit[3]; hit[0] = gate.GetOrigin(); hit[1] = "0 0 1"; hit[2] = "0 0 -1"; + SCR_DamageContext context = new SCR_DamageContext(EDamageType.TRUE, 100000, hit, gate, damage.GetDefaultHitZone(), Instigator.CreateInstigator(m_Player), null, -1, -1); + damage.HandleDamage(context); + } + else + { + // The original framed metal door is not destructible. Exercise actual + // entity loss explicitly; this is not evidence of a damage-driven breach. + Print("ERR PRISON BREACH: deleting non-destructible original metal door for gate-loss fixture"); + SCR_EntityHelper.DeleteEntityAndChildren(gate); + } m_Step = 2; m_Wait = now + 1500; return 0; } @@ -116,7 +126,7 @@ class ERR_NativePrisonBreachProbe bool refusedLate = !late.Registered() && !late.GateLost(); late.Stop(); if (!Check(refusedLate, "fresh registration after native gate loss stays unregistered and cannot grant escape")) return -1; - if (!Check(m_Mode.Phase() == ERR_Phase.PRISON && m_Transitions == 0, "native gate destruction alone cannot advance the round")) return -1; + if (!Check(m_Mode.Phase() == ERR_Phase.PRISON && m_Transitions == 0, "native gate loss alone cannot advance the round")) return -1; Move("1.5 0 -60"); m_Step = 3; m_Wait = now + 2500; return 0; diff --git a/addons/core/Scripts/Game/ERR/ERR_NativePrisonerProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativePrisonerProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeProgressionIdentityProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeProgressionIdentityProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeRadioDefenceProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeRadioDefenceProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeRecoveryProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeRecoveryProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeResultProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeResultProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeSiteSurvey.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeSiteSurvey.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeStationTeardownDiagnostic.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeStationTeardownDiagnostic.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeTimeProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeTimeProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeTransportProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeTransportProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeTransportSurvey.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeTransportSurvey.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c diff --git a/addons/core/Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c diff --git a/addons/core/Scripts/Game/ERR/ERR_ObjectiveDetails.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_ObjectiveDetails.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c diff --git a/addons/core/Scripts/Game/ERR/ERR_ObjectiveText.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_ObjectiveText.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c diff --git a/addons/core/Scripts/Game/ERR/ERR_Objectives.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c similarity index 91% rename from addons/core/Scripts/Game/ERR/ERR_Objectives.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c index b01ef91..2661d30 100644 --- a/addons/core/Scripts/Game/ERR/ERR_Objectives.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c @@ -15,7 +15,7 @@ class ERR_Objectives { if (!Replication.IsServer() || m_Stopped) return; SCR_TaskSystem tasks = SCR_TaskSystem.GetInstance(); - if (!tasks) { Print("Rereintroduced: native task system missing", LogLevel.ERROR); return; } + if (!tasks) { Print("Reintroduced: native task system missing", LogLevel.ERROR); return; } if (m_Current) { SCR_ETaskState result = SCR_ETaskState.COMPLETED; @@ -27,7 +27,7 @@ class ERR_Objectives string title = ERR_ObjectiveText.Title(current); if (title.IsEmpty()) return; m_Current = tasks.CreateTask("{1D0F815858EE24AD}Prefabs/Tasks/BaseTask.et", Id(current), title, Description()); - if (!m_Current) { Print("Rereintroduced: objective creation failed", LogLevel.ERROR); return; } + if (!m_Current) { Print("Reintroduced: objective creation failed", LogLevel.ERROR); return; } // Location markers use the discovery registry. A task cannot expose an unknown site. tasks.SetTaskUIVisibility(m_Current, SCR_ETaskUIVisibility.LIST_ONLY); m_Mode.Own(m_Current); diff --git a/addons/core/Scripts/Game/ERR/ERR_Observer.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_Observer.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c diff --git a/addons/core/Scripts/Game/ERR/ERR_OrdinaryGateObserver.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_OrdinaryGateObserver.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c diff --git a/addons/core/Scripts/Game/ERR/ERR_OrdinaryInputObserver.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_OrdinaryInputObserver.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c diff --git a/addons/core/Scripts/Game/ERR/ERR_OrdinaryLookObserver.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_OrdinaryLookObserver.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c diff --git a/addons/core/Scripts/Game/ERR/ERR_OrdinaryScenarioLaunch.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_OrdinaryScenarioLaunch.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c diff --git a/addons/core/Scripts/Game/ERR/ERR_PlayerAdminCommands.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_PlayerAdminCommands.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c diff --git a/addons/core/Scripts/Game/ERR/ERR_PlayerEscapeResult.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_PlayerEscapeResult.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c diff --git a/addons/core/Scripts/Game/ERR/ERR_PlayerGuide.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_PlayerGuide.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c diff --git a/addons/core/Scripts/Game/ERR/ERR_PlayerRoster.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_PlayerRoster.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c diff --git a/addons/core/Scripts/Game/ERR/ERR_PreparationStatus.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c similarity index 78% rename from addons/core/Scripts/Game/ERR/ERR_PreparationStatus.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c index a7e3604..3485856 100644 --- a/addons/core/Scripts/Game/ERR/ERR_PreparationStatus.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c @@ -11,6 +11,22 @@ modded class SCR_RespawnSystemComponent protected bool m_ERRPreparationSpinnerWasVisible; protected string m_ERRPreparationLastTitle; protected string m_ERRPreparationLastDescription; + protected bool m_ERRKeepSpawnSceneLoading; + + void ERR_KeepSpawnSceneLoading(bool keep) { m_ERRKeepSpawnSceneLoading = keep; } + void ERR_ShowSpawnSceneLoading() + { + ERR_GameMode mode = ERR_GameMode.Get(); + if (System.IsConsoleApp() || !mode || m_pGameMode != mode) return; + if (!m_wLoadingPlaceholder) CreateLoadingPlaceholder(); + UpdateLoadingPlaceholder(0); + } + + protected string ERR_PreparationDescription(ERR_GameMode mode) + { + if (mode.Phase() == ERR_Phase.PREPARING) return ERR_ObjectiveText.Description(mode, false); + return "Please wait while your spawn area and equipment finish loading. You will take control when preparation is complete."; + } protected void ERR_ClearPreparationStatus() { @@ -32,7 +48,10 @@ modded class SCR_RespawnSystemComponent super.UpdateLoadingPlaceholder(dt); // Vanilla OnInit(IEntity owner) stores its owning mode in m_pGameMode. ERR_GameMode mode = ERR_GameMode.Get(); - if (System.IsConsoleApp() || !mode || m_pGameMode != mode || mode.Phase() != ERR_Phase.PREPARING || !m_wLoadingPlaceholder) + // Server preparation can finish before this client's spawn-area preload. + // Keep the message on the native black placeholder until the native spawn + // response (or spectator handoff) destroys it, including late arrivals. + if (System.IsConsoleApp() || !mode || m_pGameMode != mode || (mode.Phase() != ERR_Phase.PREPARING && !mode.Active()) || !m_wLoadingPlaceholder) { ERR_ClearPreparationStatus(); return; @@ -52,7 +71,7 @@ modded class SCR_RespawnSystemComponent bool failed = !mode.PreparationError().IsEmpty(); string title = "Preparing mission"; if (failed) title = "Mission could not start"; - string description = ERR_ObjectiveText.Description(mode, false); + string description = ERR_PreparationDescription(mode); if (title != m_ERRPreparationLastTitle) { m_ERRPreparationTitle.SetText(title); @@ -78,6 +97,7 @@ modded class SCR_RespawnSystemComponent override void DestroyLoadingPlaceholder() { + if (m_ERRKeepSpawnSceneLoading) return; ERR_ClearPreparationStatus(); super.DestroyLoadingPlaceholder(); } @@ -97,7 +117,7 @@ modded class SCR_RespawnSystemComponent if (!m_ERRPreparationRoot || m_ERRPreparationParent != m_wLoadingPlaceholder || m_ERRPreparationRoot.GetParent() != m_wLoadingPlaceholder || !m_ERRPreparationRoot.IsVisible()) return false; if (!ERR_PreparationWidgetVisible(m_ERRPreparationTitle) || !ERR_PreparationWidgetVisible(m_ERRPreparationDescription) || !ERR_PreparationWidgetVisible(m_ERRPreparationRoot)) return false; string title = "Preparing mission"; if (failed) title = "Mission could not start"; - if (m_ERRPreparationTitle.GetText() != title || m_ERRPreparationDescription.GetText() != ERR_ObjectiveText.Description(mode, false)) return false; + if (m_ERRPreparationTitle.GetText() != title || m_ERRPreparationDescription.GetText() != ERR_PreparationDescription(mode)) return false; if (failed) return m_ERRPreparationSpinner && m_ERRPreparationSpinnerHidden && !m_ERRPreparationSpinner.IsVisible(); return !m_ERRPreparationSpinnerHidden; } diff --git a/addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonAI.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonAI.c new file mode 100644 index 0000000..05d0322 --- /dev/null +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonAI.c @@ -0,0 +1,79 @@ +// Match the original opening: physical enemies exist for preparation/streaming, +// but their character AI stays disabled until the prison objective completes. +// Scope the hooks to this mission and its enemy faction, including RHS units. +modded class SCR_ChimeraAIAgent +{ + protected ERR_GameMode m_ERRPrisonMode; + + void ERR_HoldForPrison() + { + if (!Replication.IsServer() || SCR_Global.IsEditMode()) return; + ERR_GameMode mode = ERR_GameMode.Get(); + IEntity actor = GetControlledEntity(); + if (!mode || mode.Phase() > ERR_Phase.PRISON || !actor || ERR_Actors.Player(actor) || IsPlayerPending_S()) return; + if (!mode.EnemyFaction() || SCR_FactionManager.SGetFaction(actor) != mode.EnemyFaction()) return; + DeactivateAI(); + if (m_ERRPrisonMode) return; + m_ERRPrisonMode = mode; + mode.OnPhaseChanged().Insert(ERR_PrisonPhaseChanged); + mode.OnStop().Insert(ERR_PrisonStopped); + } + + protected void ERR_PrisonUnsubscribe() + { + if (!m_ERRPrisonMode) return; + m_ERRPrisonMode.OnPhaseChanged().Remove(ERR_PrisonPhaseChanged); + m_ERRPrisonMode.OnStop().Remove(ERR_PrisonStopped); + m_ERRPrisonMode = null; + } + + protected void ERR_PrisonPhaseChanged(ERR_Phase previous, ERR_Phase current) + { + if (current != ERR_Phase.RADIO_SEARCH) return; + ERR_PrisonUnsubscribe(); + IEntity actor = GetControlledEntity(); + if (actor && !ERR_Actors.Player(actor) && !IsPlayerPending_S() && ERR_Actors.CanFight(actor)) ActivateAI(); + } + + protected void ERR_PrisonStopped() + { + ERR_PrisonUnsubscribe(); + // Aborted preparation/end of round must not wake the waiting enemies. + DeactivateAI(); + } + + override void EOnInit(IEntity owner) + { + super.EOnInit(owner); + ERR_HoldForPrison(); + // Native group population activates the character after its init callback. + if (Replication.IsServer() && !SCR_Global.IsEditMode()) GetGame().GetCallqueue().Call(ERR_HoldForPrison); + } + + override void OnLifeStateChanged(ECharacterLifeState previousLifeState, ECharacterLifeState newLifeState) + { + super.OnLifeStateChanged(previousLifeState, newLifeState); + ERR_HoldForPrison(); + } + + void ~SCR_ChimeraAIAgent() + { + if (GetGame()) GetGame().GetCallqueue().Remove(ERR_HoldForPrison); + ERR_PrisonUnsubscribe(); + } +} + +modded class SCR_AIGroup +{ + override bool AddAIEntityToGroup(IEntity entity) + { + bool added = super.AddAIEntityToGroup(entity); + if (added) + { + AIControlComponent control = AIControlComponent.Cast(entity.FindComponent(AIControlComponent)); + SCR_ChimeraAIAgent agent = SCR_ChimeraAIAgent.Cast(control.GetControlAIAgent()); + if (agent) agent.ERR_HoldForPrison(); + } + return added; + } +} diff --git a/addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c similarity index 90% rename from addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c index 90e745a..d108e35 100644 --- a/addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c @@ -73,7 +73,7 @@ class ERR_PrisonEscapeService { ResourceName raw; if (entity.GetPrefabData()) raw = entity.GetPrefabData().GetPrefabName(); - PrintFormat("Rereintroduced [prison]: gate candidate raw=%1 resolved=%2 lock=%3 door=%4 position=%5", raw, SCR_ResourceNameUtils.GetPrefabName(entity), lock, door, entity.GetOrigin()); + PrintFormat("Reintroduced [prison]: gate candidate raw=%1 resolved=%2 lock=%3 door=%4 position=%5", raw, SCR_ResourceNameUtils.GetPrefabName(entity), lock, door, entity.GetOrigin()); } if (entity != prison && lock && door) { found = entity; matches++; } IEntity child = entity.GetChildren(); @@ -112,25 +112,28 @@ class ERR_PrisonEscapeService if (prisons != 1) return; ResourceName raw; if (prison.GetPrefabData()) raw = prison.GetPrefabData().GetPrefabName(); - PrintFormat("Rereintroduced [prison]: owned composition raw=%1 resolved=%2 position=%3", raw, SCR_ResourceNameUtils.GetPrefabName(prison), prison.GetOrigin()); + PrintFormat("Reintroduced [prison]: owned composition raw=%1 resolved=%2 position=%3", raw, SCR_ResourceNameUtils.GetPrefabName(prison), prison.GetOrigin()); IEntity found; int gates; bool bounded = FindGate(prison, found, gates); SCR_DestructionMultiPhaseComponent damage; if (found) damage = SCR_DestructionMultiPhaseComponent.Cast(found.FindComponent(SCR_DestructionMultiPhaseComponent)); - bool intact = damage && damage.GetDefaultHitZone() && !damage.GetDestroyed() && !damage.IsDestructionQueued(); - if (damage) PrintFormat("Rereintroduced [prison]: destruction health=%1 destroyed=%2 queued=%3", damage.GetHealth(), damage.GetDestroyed(), damage.IsDestructionQueued()); + // The original framed metal door has no destruction component. It is still + // an intact physical lock; deletion/crossing remain observable below. + bool intact = found != null; + if (damage) intact = damage.GetDefaultHitZone() && !damage.GetDestroyed() && !damage.IsDestructionQueued(); + if (damage) PrintFormat("Reintroduced [prison]: destruction health=%1 destroyed=%2 queued=%3", damage.GetHealth(), damage.GetDestroyed(), damage.IsDestructionQueued()); if (!ERR_PrisonEscapeRules.Registration(true, gates, bounded, intact)) { m_RegistrationReason = string.Format("gate registration refused: candidates=%1 bounded=%2 intact=%3", gates, bounded, intact); - Print("Rereintroduced [prison]: " + m_RegistrationReason); + Print("Reintroduced [prison]: " + m_RegistrationReason); return; } m_Gate = found; m_Center = prison.GetOrigin(); m_Registered = true; m_RegistrationReason = "one intact successor lock in owned prison"; - Print("Rereintroduced [prison]: " + m_RegistrationReason); + Print("Reintroduced [prison]: " + m_RegistrationReason); } void RosterChanged(int connection) { diff --git a/addons/core/Scripts/Game/ERR/ERR_RadioDefenceService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_RadioDefenceService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c diff --git a/addons/core/Scripts/Game/ERR/ERR_RadioFeedback.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_RadioFeedback.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c diff --git a/addons/core/Scripts/Game/ERR/ERR_RecoveryService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_RecoveryService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c diff --git a/addons/core/Scripts/Game/ERR/ERR_Resources.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_Resources.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c diff --git a/addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c similarity index 94% rename from addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c index 97afabd..5df7ee6 100644 --- a/addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c @@ -1,4 +1,4 @@ -[ComponentEditorProps(category: "Rereintroduced", description: "Authored scenario definition and finite population lifecycle")] +[ComponentEditorProps(category: "Reintroduced", description: "Authored scenario definition and finite population lifecycle")] class ERR_ScenarioComponentClass : ScriptComponentClass {} class ERR_ScenarioComponent : ScriptComponent { diff --git a/addons/core/Scripts/Game/ERR/ERR_Settings.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c similarity index 98% rename from addons/core/Scripts/Game/ERR/ERR_Settings.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c index 9ee79e4..2ee2d56 100644 --- a/addons/core/Scripts/Game/ERR/ERR_Settings.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c @@ -75,7 +75,7 @@ class ERR_Settings else if (FileIO.FileExists(m_Path) || FileIO.FileExists(m_Path + ".bak")) { m_ReadOnly = true; - Print("Rereintroduced: invalid settings; defaults active, existing files preserved", LogLevel.ERROR); + Print("Reintroduced: invalid settings; defaults active, existing files preserved", LogLevel.ERROR); } } diff --git a/addons/core/Scripts/Game/ERR/ERR_SiteDefinition.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_SiteDefinition.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c diff --git a/addons/core/Scripts/Game/ERR/ERR_SiteDiscoveryRules.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_SiteDiscoveryRules.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c diff --git a/addons/core/Scripts/Game/ERR/ERR_SiteService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c similarity index 90% rename from addons/core/Scripts/Game/ERR/ERR_SiteService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c index a92c22a..46f3a0b 100644 --- a/addons/core/Scripts/Game/ERR/ERR_SiteService.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c @@ -44,6 +44,28 @@ class ERR_SiteService void ERR_SiteService(ERR_GameMode mode) { m_Mode = mode; } int Count() { return m_Sites.Count(); } bool Owns(IEntity entity) { return entity && m_Entities.Contains(entity); } + // Snapshot only nearby mission-owned objects. Distant sites must not block + // arrival, and vanilla map streaming remains the native preload's job. + bool SpawnScene(vector position, out array result) + { + result = {}; + array pending = {}; + foreach (IEntity root : m_Entities) + if (root && vector.DistanceXZ(root.GetOrigin(), position) <= 120) pending.Insert(root); + int visited; + while (!pending.IsEmpty()) + { + if (++visited > 512) return false; + IEntity entity = pending[0]; pending.Remove(0); + if (!entity) continue; + RplComponent component = RplComponent.Cast(entity.FindComponent(RplComponent)); + if (component && !result.Contains(entity)) result.Insert(entity); + if (result.Count() > 256) return false; + IEntity child = entity.GetChildren(); + while (child) { pending.Insert(child); child = child.GetSibling(); } + } + return true; + } int TransportCount() { int count; @@ -75,7 +97,7 @@ class ERR_SiteService m_Obstructed = false; vector ground = ERR_Actors.Ground(position); GetGame().GetWorld().QueryEntitiesByAABB(ground + "-1.3 0.1 -1.3", ground + "1.3 2 1.3", CheckClearance); - PrintFormat("Rereintroduced [sites]: cache clearance position=%1 clear=%2", ground, !m_Obstructed); + PrintFormat("Reintroduced [sites]: cache clearance position=%1 clear=%2", ground, !m_Obstructed); return !m_Obstructed; } protected bool CreateGuardOrders(ERR_SiteRuntime site, vector anchor) @@ -149,7 +171,7 @@ class ERR_SiteService vector high = Vector(position[0] + radius, highest + 3, position[2] + radius); GetGame().GetWorld().QueryEntitiesByAABB(low, high, CheckClearance); bool clear = lowest >= 1 && highest - lowest <= maximumRange && !m_Obstructed; - PrintFormat("Rereintroduced [sites]: transport parking=%1 radius=%2 terrainRange=%3 obstructed=%4 clear=%5", ERR_Actors.Ground(position), radius, highest - lowest, m_Obstructed, clear); + PrintFormat("Reintroduced [sites]: transport parking=%1 radius=%2 terrainRange=%3 obstructed=%4 clear=%5", ERR_Actors.Ground(position), radius, highest - lowest, m_Obstructed, clear); return clear; } protected bool CreateTransport(ERR_SiteRuntime site, vector sitePosition) @@ -181,13 +203,13 @@ class ERR_SiteService float radius = site.Definition.Transport.ClearanceRadius - 0.5; if (Math.AbsFloat(low[0] - center[0]) > radius || Math.AbsFloat(high[0] - center[0]) > radius || Math.AbsFloat(low[2] - center[2]) > radius || Math.AbsFloat(high[2] - center[2]) > radius) { - if (GetGame().GetWorld().GetWorldTime() > m_Deadline) PrintFormat("Rereintroduced [sites]: transport footprint low=%1 high=%2 surveyedCenter=%3 origin=%4 allowedRadius=%5", low, high, center, vehicle.GetOrigin(), radius); + if (GetGame().GetWorld().GetWorldTime() > m_Deadline) PrintFormat("Reintroduced [sites]: transport footprint low=%1 high=%2 surveyedCenter=%3 origin=%4 allowedRadius=%5", low, high, center, vehicle.GetOrigin(), radius); return false; } FuelManagerComponent fuel = FuelManagerComponent.Cast(vehicle.FindComponent(FuelManagerComponent)); if (!fuel || !fuel.HasFuel()) { - if (GetGame().GetWorld().GetWorldTime() > m_Deadline) PrintFormat("Rereintroduced [sites]: transport fuel manager=%1 hasFuel=%2", fuel != null, fuel && fuel.HasFuel()); + if (GetGame().GetWorld().GetWorldTime() > m_Deadline) PrintFormat("Reintroduced [sites]: transport fuel manager=%1 hasFuel=%2", fuel != null, fuel && fuel.HasFuel()); return false; } BaseCompartmentManagerComponent manager = BaseCompartmentManagerComponent.Cast(vehicle.FindComponent(BaseCompartmentManagerComponent)); @@ -202,13 +224,13 @@ class ERR_SiteService if (type == ECompartmentType.PILOT) driver = true; if (type == ECompartmentType.CARGO) passenger = true; } - if ((!driver || !passenger) && GetGame().GetWorld().GetWorldTime() > m_Deadline) PrintFormat("Rereintroduced [sites]: transport seats=%1 driver=%2 passenger=%3", seats.Count(), driver, passenger); + if ((!driver || !passenger) && GetGame().GetWorld().GetWorldTime() > m_Deadline) PrintFormat("Reintroduced [sites]: transport seats=%1 driver=%2 passenger=%3", seats.Count(), driver, passenger); return driver && passenger; } protected bool Fail(string reason) { m_FailureReason = reason; - Print("Rereintroduced [sites]: preparation failed: " + reason, LogLevel.ERROR); + Print("Reintroduced [sites]: preparation failed: " + reason, LogLevel.ERROR); Rollback(); m_State = ERR_PrepareResult.FAILED; return false; @@ -301,7 +323,7 @@ class ERR_SiteService if (member.IsEmpty()) return Fail("guard profile has an empty member resource: " + spec.Id); if (!CreateGuardOrders(site, guardPosition)) return Fail("guard initial orders: " + spec.Id); } - PrintFormat("Rereintroduced [sites]: authored %1 at %2", spec.Id, position); + PrintFormat("Reintroduced [sites]: authored %1 at %2", spec.Id, position); } return true; } @@ -340,7 +362,7 @@ class ERR_SiteService bool complete = site.Group.IsExpandComplete(); if (site.LastInitialPhysical != physical.Count() || site.LastInitialConscious != conscious) { - PrintFormat("Rereintroduced [guards]: initial site=%1 requested=%2 physical=%3 conscious=%4 nativeComplete=%5", site.Definition.Id, site.InitialGuardCount, physical.Count(), conscious, complete); + PrintFormat("Reintroduced [guards]: initial site=%1 requested=%2 physical=%3 conscious=%4 nativeComplete=%5", site.Definition.Id, site.InitialGuardCount, physical.Count(), conscious, complete); site.LastInitialPhysical = physical.Count(); site.LastInitialConscious = conscious; } @@ -356,7 +378,7 @@ class ERR_SiteService tileLoaded = navmesh.IsTileLoaded(site.Group.GetOrigin()); tileRequested = navmesh.IsTileRequested(site.Group.GetOrigin()); } - PrintFormat("Rereintroduced [guards]: timeout detail site=%1 navmesh=%2 tileLoaded=%3 tileRequested=%4 dormantAlive=%5 dormantDead=%6", site.Definition.Id, navmesh != null, tileLoaded, tileRequested, site.Group.GetDormantAliveCount(), site.Group.GetDormantDeadCount()); + PrintFormat("Reintroduced [guards]: timeout detail site=%1 navmesh=%2 tileLoaded=%3 tileRequested=%4 dormantAlive=%5 dormantDead=%6", site.Definition.Id, navmesh != null, tileLoaded, tileRequested, site.Group.GetDormantAliveCount(), site.Group.GetDormantDeadCount()); Fail(string.Format("initial guard population incomplete or invalid: site=%1 requested=%2 physical=%3 conscious=%4 nativeComplete=%5; limit=90s; no replacement requested", site.Definition.Id, site.InitialGuardCount, physical.Count(), conscious, complete)); } return result; @@ -419,7 +441,7 @@ class ERR_SiteService if (pendingGuards > 0 || aircraftPlacement == ERR_PrepareResult.PENDING) return m_State; foreach (IEntity entity : m_Entities) m_Mode.Own(entity); m_State = ERR_PrepareResult.READY; - PrintFormat("Rereintroduced [sites]: %1 sites and %2 physical stock items ready", m_Sites.Count(), m_Placements.Count()); + PrintFormat("Reintroduced [sites]: %1 sites and %2 physical stock items ready", m_Sites.Count(), m_Placements.Count()); m_Placements.Clear(); return m_State; } diff --git a/addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnClientScene.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnClientScene.c new file mode 100644 index 0000000..a9820d6 --- /dev/null +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnClientScene.c @@ -0,0 +1,139 @@ +// A native resource preload can finish before runtime replication delivers the +// prison. Keep the existing admission pending until the owner resolves every +// required replication node. No client can choose the server's spawn contents. +modded class SCR_SpawnRequestComponent +{ + protected int m_ERRSceneToken; + protected bool m_ERRScenePending; + protected bool m_ERRSceneAcknowledged; + protected bool m_ERRSceneTimedOut; + protected float m_ERRSceneDeadline; + protected ref array m_ERRSceneEntities = {}; + protected int m_ERRClientSceneToken; + protected bool m_ERRClientScenePending; + protected ref array m_ERRClientSceneNodes = {}; + + protected void ERR_StreamScene(IEntity entity, bool normalStreaming) + { + if (!entity || !GetPlayerController()) return; + RplIdentity identity = GetPlayerController().GetRplIdentity(); + if (!identity.IsValid() || identity == RplIdentity.Local()) return; + RplComponent component = RplComponent.Cast(entity.FindComponent(RplComponent)); + if (component) component.EnableStreamingConNode(identity, normalStreaming); + } + + void ERR_BeginSpawnScene(array entities, bool valid) + { + if (!Replication.IsServer()) return; + ERR_EndSpawnScene(); + m_ERRSceneToken++; + m_ERRScenePending = true; + m_ERRSceneDeadline = GetGame().GetWorld().GetWorldTime() + 60000; + array nodes = {}; + foreach (IEntity entity : entities) + { + RplComponent component; + if (entity) component = RplComponent.Cast(entity.FindComponent(RplComponent)); + if (!component || component.Id() == RplId.Invalid()) { valid = false; break; } + if (nodes.Contains(component.Id())) continue; + nodes.Insert(component.Id()); + m_ERRSceneEntities.Insert(entity); + ERR_StreamScene(entity, false); + } + if (!valid) + { + m_ERRSceneTimedOut = true; + Print("Reintroduced [spawn scene]: invalid server scene snapshot; admission withheld", LogLevel.ERROR); + return; + } + PrintFormat("Reintroduced [spawn scene]: player=%1 token=%2 waiting for %3 replicated objects", GetPlayerId(), m_ERRSceneToken, nodes.Count()); + Rpc(ERR_ReceiveSpawnScene, m_ERRSceneToken, nodes); + } + + bool ERR_SpawnSceneReady() + { + return m_ERRScenePending && m_ERRSceneAcknowledged && !m_ERRSceneTimedOut; + } + bool ERR_SpawnSceneMayFinish() + { + if (!m_ERRScenePending) return true; + if (!m_ERRSceneAcknowledged && !m_ERRSceneTimedOut && GetGame().GetWorld().GetWorldTime() >= m_ERRSceneDeadline) + { + m_ERRSceneTimedOut = true; + PrintFormat("Reintroduced [spawn scene]: player=%1 token=%2 timed out; refusing assignment and retrying", GetPlayerId(), m_ERRSceneToken); + } + // A timeout reaches the existing failure/actor-cleanup path, never assignment. + return m_ERRSceneAcknowledged || m_ERRSceneTimedOut; + } + + void ERR_EndSpawnScene() + { + if (!Replication.IsServer()) return; + foreach (IEntity entity : m_ERRSceneEntities) ERR_StreamScene(entity, true); + m_ERRSceneEntities.Clear(); + if (m_ERRScenePending) Rpc(ERR_CancelClientSpawnScene, m_ERRSceneToken); + m_ERRScenePending = false; + m_ERRSceneAcknowledged = false; + m_ERRSceneTimedOut = false; + } + + [RplRpc(RplChannel.Reliable, RplRcver.Owner)] + protected void ERR_ReceiveSpawnScene(int token, array nodes) + { + ERR_ClearClientSpawnScene(); + m_ERRClientSceneToken = token; + m_ERRClientScenePending = true; + m_ERRClientSceneNodes.Copy(nodes); + SCR_RespawnSystemComponent respawn = SCR_RespawnSystemComponent.GetInstance(); + if (respawn) respawn.ERR_ShowSpawnSceneLoading(); + PrintFormat("Reintroduced [spawn scene]: client token=%1 waiting for %2 replicated objects", token, nodes.Count()); + GetGame().GetCallqueue().CallLater(ERR_CheckClientSpawnScene, 100, true); + } + protected void ERR_CheckClientSpawnScene() + { + if (!m_ERRClientScenePending || !ERR_GameMode.Get()) { ERR_ClearClientSpawnScene(); return; } + foreach (RplId id : m_ERRClientSceneNodes) + { + RplComponent component = RplComponent.Cast(Replication.FindItem(id)); + if (!component || !component.GetEntity()) return; + } + int token = m_ERRClientSceneToken; + PrintFormat("Reintroduced [spawn scene]: client token=%1 all %2 replicated objects present", token, m_ERRClientSceneNodes.Count()); + ERR_ClearClientSpawnScene(); + Rpc(ERR_AcknowledgeSpawnScene, token); + } + [RplRpc(RplChannel.Reliable, RplRcver.Server)] + protected void ERR_AcknowledgeSpawnScene(int token) + { + if (!Replication.IsServer() || !m_ERRScenePending || m_ERRSceneTimedOut || token != m_ERRSceneToken) return; + m_ERRSceneAcknowledged = true; + } + protected void ERR_ClearClientSpawnScene() + { + if (GetGame()) GetGame().GetCallqueue().Remove(ERR_CheckClientSpawnScene); + m_ERRClientScenePending = false; + m_ERRClientSceneNodes.Clear(); + } + [RplRpc(RplChannel.Reliable, RplRcver.Owner)] + protected void ERR_CancelClientSpawnScene(int token) + { + if (token == m_ERRClientSceneToken) ERR_ClearClientSpawnScene(); + } + + protected override void Rpc_SendResponse_O(SCR_ESpawnResult response) + { + ERR_ClearClientSpawnScene(); + SCR_RespawnSystemComponent respawn = SCR_RespawnSystemComponent.GetInstance(); + ERR_GameMode mode = ERR_GameMode.Get(); + bool retry = mode && mode.Active() && response != SCR_ESpawnResult.OK; + if (respawn) respawn.ERR_KeepSpawnSceneLoading(retry); + super.Rpc_SendResponse_O(response); + if (respawn) respawn.ERR_KeepSpawnSceneLoading(false); + } + void ~SCR_SpawnRequestComponent() + { + if (!GetGame()) return; + ERR_ClearClientSpawnScene(); + ERR_EndSpawnScene(); + } +} diff --git a/addons/core/Scripts/Game/ERR/ERR_SpawnFinalization.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c similarity index 78% rename from addons/core/Scripts/Game/ERR/ERR_SpawnFinalization.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c index 9bad5e3..d493b6f 100644 --- a/addons/core/Scripts/Game/ERR/ERR_SpawnFinalization.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c @@ -28,6 +28,7 @@ modded class SCR_SpawnRequestComponent void ERR_CancelAdmission(SCR_SpawnData data, bool notifyOwner) { if (!GetGame()) return; + ERR_EndSpawnScene(); GetGame().GetCallqueue().Remove(AwaitFinalization_S); if (!Replication.IsServer()) return; if (notifyOwner && GetPlayerController() && GetRespawnComponent()) SendResponse_S(SCR_ESpawnResult.SPAWN_NOT_ALLOWED, data); @@ -36,6 +37,23 @@ modded class SCR_SpawnRequestComponent modded class SCR_FreeSpawnHandlerComponent { + override void OnFinalizeBegin_S(SCR_SpawnRequestComponent requestComponent, SCR_SpawnData data, IEntity entity) + { + ERR_GameMode mode = ERR_GameMode.Get(); + if (mode && requestComponent && data && entity) + { + array scene = {}; + bool valid = mode.Sites() && mode.Sites().SpawnScene(data.GetPosition(), scene); + scene.Insert(entity); + requestComponent.ERR_BeginSpawnScene(scene, valid); + } + super.OnFinalizeBegin_S(requestComponent, data, entity); + } + override bool CanFinalize_S(SCR_SpawnRequestComponent requestComponent, SCR_SpawnData data, IEntity entity) + { + if (ERR_GameMode.Get() && requestComponent && !requestComponent.ERR_SpawnSceneMayFinish()) return false; + return super.CanFinalize_S(requestComponent, data, entity); + } protected ERR_SpawnLogic ERR_AdmissionLogic() { SCR_RespawnSystemComponent system = GetRespawnSystemComponent(); @@ -72,12 +90,14 @@ modded class SCR_FreeSpawnHandlerComponent if (logic) ticket = logic.TakeSpawnTicket(requestComponent, data, entity); // No ticket means no ownership proof: reject without deleting arbitrary input. if (!ticket) return SCR_ESpawnResult.SPAWN_NOT_ALLOWED; - if (!logic.MayFinalizeSpawn(ticket)) + if (!requestComponent.ERR_SpawnSceneReady() || !logic.MayFinalizeSpawn(ticket)) { + requestComponent.ERR_EndSpawnScene(); ERR_RejectOwnedActor(requestComponent, entity, data); return SCR_ESpawnResult.SPAWN_NOT_ALLOWED; } SCR_ESpawnResult result = super.FinalizeRequest_S(requestComponent, data, entity); + requestComponent.ERR_EndSpawnScene(); if (result != SCR_ESpawnResult.OK) ERR_RejectOwnedActor(requestComponent, entity, data); return result; } diff --git a/addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c similarity index 99% rename from addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c index d1e76ac..50ea2a8 100644 --- a/addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c @@ -79,7 +79,7 @@ class ERR_SpawnLogic : SCR_SpawnLogic } if (!mode || !mode.Players().Bind(playerId, identity)) { - Print("Rereintroduced: player identity could not be bound; spawn withheld", LogLevel.ERROR); + Print("Reintroduced: player identity could not be bound; spawn withheld", LogLevel.ERROR); return; } if (resultController) @@ -331,7 +331,7 @@ class ERR_SpawnLogic : SCR_SpawnLogic if (mode) mode.PlayerSpawned(playerId, entity); SCR_PlayerController controller = SCR_PlayerController.Cast(GetGame().GetPlayerManager().GetPlayerController(playerId)); if (controller) controller.ERR_SetObserver(ERR_ObserverReason.NONE); - PrintFormat("Rereintroduced [spawn]: player %1 at %2", playerId, entity.GetOrigin()); + PrintFormat("Reintroduced [spawn]: player %1 at %2", playerId, entity.GetOrigin()); } override void OnPlayerDisconnected_S(int playerId, KickCauseCode cause, int timeout) { diff --git a/addons/core/Scripts/Game/ERR/ERR_SpawnPlacement.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_SpawnPlacement.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c diff --git a/addons/core/Scripts/Game/ERR/ERR_Supplies.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_Supplies.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c diff --git a/addons/core/Scripts/Game/ERR/ERR_TimeService.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c similarity index 96% rename from addons/core/Scripts/Game/ERR/ERR_TimeService.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c index 56b4f6d..6285b01 100644 --- a/addons/core/Scripts/Game/ERR/ERR_TimeService.c +++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c @@ -61,7 +61,7 @@ class ERR_TimeService m_StartMinutes = startMinutes; m_Multiplier = multiplier; m_Started = true; - PrintFormat("Rereintroduced [time]: started at %1 with %2x progression", Clock(m_StartMinutes), m_Multiplier); + PrintFormat("Reintroduced [time]: started at %1 with %2x progression", Clock(m_StartMinutes), m_Multiplier); return true; } bool Started() { return m_Started; } diff --git a/addons/core/Scripts/Game/ERR/ERR_VehicleSecurityActions.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_VehicleSecurityActions.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c diff --git a/addons/core/Scripts/Game/ERR/ERR_VehicleSecurityComponent.c b/addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c similarity index 100% rename from addons/core/Scripts/Game/ERR/ERR_VehicleSecurityComponent.c rename to addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_AircraftControlBridge.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_AircraftControlBridge.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_AircraftFieldEnvelope.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_AircraftFieldEnvelope.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_AircraftFieldFlight.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_AircraftFieldFlight.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_AircraftFieldRules.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_AircraftFieldRules.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_AircraftFlightEnvelope.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_AircraftFlightEnvelope.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_AircraftService.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_AircraftService.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_ConvoyBudget.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_ConvoyBudget.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_ConvoyCombat.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_ConvoyCombat.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_ConvoyPlacement.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_ConvoyPlacement.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_ConvoyRoadPlan.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_ConvoyRoadPlan.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_ConvoyStartup.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_ConvoyStartup.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_EnemyGunnerSkill.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_EnemyGunnerSkill.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_EnemyOptics.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_EnemyOptics.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_EnemyRadio.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_EnemyRadio.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQ.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQ.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQBodyObserver.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c similarity index 98% rename from addons/ai/Scripts/Game/ERR/ERR_HQBodyObserver.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c index 668d544..20eb3d2 100644 --- a/addons/ai/Scripts/Game/ERR/ERR_HQBodyObserver.c +++ b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c @@ -60,7 +60,7 @@ class ERR_HQBodyObserver { if (m_CapLogged) return; m_CapLogged = true; - Print("Rereintroduced [body observer]: finite local registry limit reached; no discovery work added."); + Print("Reintroduced [body observer]: finite local registry limit reached; no discovery work added."); } protected void Prune() { diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQCoverage.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQCoverage.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQDeliveredCasualties.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQDeliveredCasualties.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQDoctrine.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQDoctrine.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQJournal.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQJournal.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQLocalHandoff.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQLocalHandoff.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQMemory.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQMemory.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQObservation.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQObservation.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQReport.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQReport.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQRoadIntercept.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQRoadIntercept.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQStatusSampler.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQStatusSampler.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQTask.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HQTask.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQWatch.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c similarity index 99% rename from addons/ai/Scripts/Game/ERR/ERR_HQWatch.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c index 686e15a..a1f278f 100644 --- a/addons/ai/Scripts/Game/ERR/ERR_HQWatch.c +++ b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c @@ -104,7 +104,7 @@ class ERR_HQWatch // Closed identities remain tombstones: replays cannot recreate a formation. if (m_Entries.Count() >= 128) { - if (!m_CapLogged) Print("Rereintroduced [watch]: 128-formation check-in cap reached."); + if (!m_CapLogged) Print("Reintroduced [watch]: 128-formation check-in cap reached."); m_CapLogged = true; return null; } diff --git a/addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoAccess.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoAccess.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarAimSolution.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarAimSolution.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarCourierTransfer.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarCourierTransfer.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarFiring.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarFiring.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarRefresh.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarRefresh.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarReportLedger.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarReportLedger.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarSupplyTransfer.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarSupplyTransfer.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_NativeAircraftControlProbe.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_NativeAircraftControlProbe.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_NativeAircraftFieldProbe.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_NativeAircraftFieldProbe.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_NativeAircraftRouteProbe.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_NativeAircraftRouteProbe.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_NativeMortarCourierProbe.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_NativeMortarCourierProbe.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_NativeMortarFiringProbe.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_NativeMortarFiringProbe.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_NativeMortarSalvoProbe.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_NativeMortarSalvoProbe.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_NativeMortarTransferProbe.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_NativeMortarTransferProbe.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_NativePatrolHQProbe.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_NativePatrolHQProbe.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_SettlementSafety.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_SettlementSafety.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c diff --git a/addons/ai/Scripts/Game/ERR/ERR_SupportScenario.c b/addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c similarity index 100% rename from addons/ai/Scripts/Game/ERR/ERR_SupportScenario.c rename to addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c diff --git a/addons/intel/Scripts/Game/ERR/ERR_IntelAdminProvider.c b/addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c similarity index 100% rename from addons/intel/Scripts/Game/ERR/ERR_IntelAdminProvider.c rename to addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c diff --git a/addons/intel/Scripts/Game/ERR/ERR_IntelDiscoveryFeedback.c b/addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c similarity index 100% rename from addons/intel/Scripts/Game/ERR/ERR_IntelDiscoveryFeedback.c rename to addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c diff --git a/addons/intel/Scripts/Game/ERR/ERR_IntelReroll.c b/addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c similarity index 97% rename from addons/intel/Scripts/Game/ERR/ERR_IntelReroll.c rename to addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c index 142ade4..57e6c5d 100644 --- a/addons/intel/Scripts/Game/ERR/ERR_IntelReroll.c +++ b/addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c @@ -66,7 +66,7 @@ class ERR_IntelReroll protected void Fail(ERR_IntelRerollEntry entry, string reason) { - Print(string.Format("Rereintroduced [intel]: reroll failed reason=%1 actor=%2 attempts=%3", reason, entry.Actor.GetID(), entry.Attempts), LogLevel.WARNING); + Print(string.Format("Reintroduced [intel]: reroll failed reason=%1 actor=%2 attempts=%3", reason, entry.Actor.GetID(), entry.Attempts), LogLevel.WARNING); Finish(entry, true); } diff --git a/addons/intel/Scripts/Game/ERR/ERR_IntelService.c b/addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c similarity index 98% rename from addons/intel/Scripts/Game/ERR/ERR_IntelService.c rename to addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c index 3115911..f429cdd 100644 --- a/addons/intel/Scripts/Game/ERR/ERR_IntelService.c +++ b/addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c @@ -74,7 +74,7 @@ class ERR_IntelService request.Attempts++; if (request.Attempts > 30) { - Print("Rereintroduced [intel]: bounded assignment failed", LogLevel.WARNING); + Print("Reintroduced [intel]: bounded assignment failed", LogLevel.WARNING); if (request.Accepted) Unsettled(request.Actor); m_Requests.Remove(i); continue; } diff --git a/addons/map/Scripts/Game/ERRMap/ERRM_NativeMapOwnershipProbe.c b/addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c similarity index 100% rename from addons/map/Scripts/Game/ERRMap/ERRM_NativeMapOwnershipProbe.c rename to addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c diff --git a/addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c b/addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c similarity index 100% rename from addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c rename to addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c diff --git a/addons/map/Scripts/Game/ERR/ERR_ScenarioMap.c b/addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c similarity index 100% rename from addons/map/Scripts/Game/ERR/ERR_ScenarioMap.c rename to addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_AdminCommands.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_AdminCommands.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeConvoyCoverProbe.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_NativeConvoyCoverProbe.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeConvoyProbe.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_NativeConvoyProbe.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeHQBodyProbe.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_NativeHQBodyProbe.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeHQMemoryProbe.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_NativeHQMemoryProbe.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeHQResponseProof.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_NativeHQResponseProof.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeInfantryTransferProbe.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_NativeInfantryTransferProbe.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeLocalHandoffProbe.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_NativeLocalHandoffProbe.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeMortarProbe.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_NativeMortarProbe.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeRadioProbe.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c similarity index 100% rename from addons/chat/Scripts/Game/ERR/ERR_NativeRadioProbe.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c diff --git a/addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c similarity index 95% rename from addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c index bdd7dc8..1772dbf 100644 --- a/addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c +++ b/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c @@ -12,6 +12,8 @@ modded class ERR_GameMode protected BaseDoorComponent m_ERRGate; protected ERR_LocationComponent m_ERRSmokeRadio; protected bool m_ERRSmokeDone; + protected bool m_ERRSpawnPreloadRequested; + protected bool m_ERRSpawnPreloadUIObserved; protected bool m_ERRTestLostHelicopter; protected bool m_ERRTestPlayerDeath; protected bool m_ERRTestRadioNetwork; @@ -57,6 +59,12 @@ modded class ERR_GameMode protected ref array m_ERRRetiredIntel = {}; + override void StartSpawnPreload(vector position) + { + m_ERRSpawnPreloadRequested = true; + super.StartSpawnPreload(position); + } + protected override void EOnInit(IEntity owner) { super.EOnInit(owner); @@ -361,6 +369,25 @@ modded class ERR_GameMode return true; } protected void ERR_PrisonScreenshot() { System.MakeScreenshot("$logs:err-prison"); } + protected bool ERR_PrisonAIState(bool active) + { + int checked; + for (int i = 0; i < Forces().Count(); i++) + { + ERR_ForceRecord record = Forces().At(i); + if (!record.Group) continue; + array agents = {}; + record.Group.GetAgents(agents); + foreach (AIAgent agent : agents) + { + if (!agent || !ERR_Actors.CanFight(agent.GetControlledEntity())) continue; + checked++; + if (agent.IsAIActivated() != active) return false; + } + } + PrintFormat("ERR PRISON AI: checked=%1 active=%2", checked, active); + return checked > 0; + } protected void ERR_EndScreenshot() { System.MakeScreenshot("$logs:err-result"); } protected void ERR_SmokeTick() { @@ -444,9 +471,16 @@ modded class ERR_GameMode } if (m_ERRSmokeStep == 0) { + if (m_SpawnPreload && Phase() == ERR_Phase.PRISON && !m_ERRSpawnPreloadUIObserved) + { + SCR_RespawnSystemComponent respawn = SCR_RespawnSystemComponent.GetInstance(); + if (!ERR_Check(respawn && respawn.ERR_ProbePreparationVisible(this, false), "native spawn preload retains preparation text after server sites are ready")) return; + m_ERRSpawnPreloadUIObserved = true; + } array players = {}; ERR_Actors.Players(players, true); if (players.Count() != 1 || Phase() != ERR_Phase.PRISON) return; + if (!ERR_Check(CanStartSpawnPreload() && m_ERRSpawnPreloadRequested && !m_SpawnPreload, "prisoner admitted only after enabled native spawn preload finishes")) return; m_ERRSmokePlayer = players[0]; if (!ERR_CheckRoster() || !ERR_NativeContractsProbe.Run(this, m_ERRSmokePlayer) || !ERR_CheckCompanionCommands()) return; if (m_ERRTestAircraftField) @@ -560,6 +594,16 @@ modded class ERR_GameMode if (m_ERRTestHQMemory) { DamageManagerComponent.Cast(m_ERRSmokePlayer.FindComponent(DamageManagerComponent)).EnableDamageHandling(false); + ERR_UnlockPrisonAction openingLock; + foreach (IEntity trackedEntity : m_OwnedEntities) + { + if (trackedEntity) openingLock = ERR_FindLock(trackedEntity); + if (openingLock) break; + } + if (!ERR_Check(openingLock && ERR_PrisonAIState(false), "HQ fixture enemies wait for actual prison lockpick")) return; + ERR_MovePlayer(openingLock.GetOwner().GetOrigin() + "1 0 1"); + openingLock.PerformAction(openingLock.GetOwner(), m_ERRSmokePlayer); + if (!ERR_Check(Phase() == ERR_Phase.RADIO_SEARCH && ERR_PrisonAIState(true), "HQ fixture unlock releases existing enemies")) return; m_ERRHQMemoryProbe = new ERR_NativeHQMemoryProbe(this); m_ERRSmokeStep = 105; return; @@ -590,11 +634,12 @@ modded class ERR_GameMode if (lock) break; } if (!ERR_Check(lock != null, "authored gate exposes lock action")) return; + if (!ERR_Check(ERR_PrisonAIState(false), "physical enemies stay inactive until prison lockpick")) return; ERR_MovePlayer(lock.GetOwner().GetOrigin() + "1 0 1"); vector gateLow, gateHigh; lock.GetOwner().GetWorldBounds(gateLow, gateHigh); PrintFormat("ERR GEOMETRY: gate low=%1 high=%2", gateLow, gateHigh); - IEntity wall = lock.GetOwner().GetParent().GetChildren(); + IEntity wall = lock.GetOwner().GetParent().GetParent().GetChildren(); while (wall) { vector wallLow, wallHigh; @@ -607,6 +652,7 @@ modded class ERR_GameMode m_ERRGate = BaseDoorComponent.Cast(lock.GetOwner().FindComponent(BaseDoorComponent)); lock.PerformAction(lock.GetOwner(), m_ERRSmokePlayer); if (!ERR_Check(Phase() == ERR_Phase.RADIO_SEARCH, "lock action advances mission")) return; + if (!ERR_Check(ERR_PrisonAIState(true), "lockpick reactivates the existing physical enemies")) return; array cacheStock = {}; ERR_Inventory.Items(InventoryStorageManagerComponent.Cast(Sites().Find("everon-supply-1").Container.FindComponent(InventoryStorageManagerComponent)), cacheStock); foreach (IEntity tracked : cacheStock) diff --git a/addons/chat/Scripts/Game/ERRChat/ERR_OrdinaryScenarioLaunchChat.c b/addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c similarity index 87% rename from addons/chat/Scripts/Game/ERRChat/ERR_OrdinaryScenarioLaunchChat.c rename to addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c index bc6fb76..c45381d 100644 --- a/addons/chat/Scripts/Game/ERRChat/ERR_OrdinaryScenarioLaunchChat.c +++ b/addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c @@ -9,7 +9,7 @@ modded class ArmaReforgerScripted override protected string ERR_DiagnosticAddon(string project) { - if (project == "chat") return "FA804F411BDDF2C6"; + if (project == "chat") return "2528466DE220D91C"; return super.ERR_DiagnosticAddon(project); } } diff --git a/addons/core/Scripts/GameLib/ERR/ERR_DiagnosticNoSplash.c b/addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c similarity index 100% rename from addons/core/Scripts/GameLib/ERR/ERR_DiagnosticNoSplash.c rename to addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c diff --git a/addons/core/Scripts/WorkbenchGame/ERR/ERR_ValidateBaseWorldPlugin.c b/addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c similarity index 88% rename from addons/core/Scripts/WorkbenchGame/ERR/ERR_ValidateBaseWorldPlugin.c rename to addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c index ec3ade0..2adbd5a 100644 --- a/addons/core/Scripts/WorkbenchGame/ERR/ERR_ValidateBaseWorldPlugin.c +++ b/addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c @@ -1,4 +1,4 @@ -[WorkbenchPluginAttribute(name: "Validate Rereintroduced base", wbModules: {"WorldEditor"})] +[WorkbenchPluginAttribute(name: "Validate Reintroduced base", wbModules: {"WorldEditor"})] class ERR_ValidateBaseWorldPlugin : WorldEditorPlugin { override void RunCommandline() diff --git a/addons/chat/Scripts/WorkbenchGame/ERR/ERR_ValidateWorldPlugin.c b/addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c similarity index 95% rename from addons/chat/Scripts/WorkbenchGame/ERR/ERR_ValidateWorldPlugin.c rename to addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c index 2702220..ee8c11e 100644 --- a/addons/chat/Scripts/WorkbenchGame/ERR/ERR_ValidateWorldPlugin.c +++ b/addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c @@ -1,4 +1,4 @@ -[WorkbenchPluginAttribute(name: "Validate Rereintroduced scenario", wbModules: {"WorldEditor"})] +[WorkbenchPluginAttribute(name: "Validate Reintroduced scenario", wbModules: {"WorldEditor"})] class ERR_ValidateWorldPlugin : WorldEditorPlugin { protected bool m_Obstructed; diff --git a/addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout b/addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout similarity index 100% rename from addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout rename to addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout diff --git a/addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta b/addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta similarity index 100% rename from addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta rename to addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta diff --git a/addons/core/Worlds/ERR_Everon_Layers/default.layer b/addons/core/Worlds/ERR_Everon_Layers/default.layer index b664d8d..d135f49 100644 --- a/addons/core/Worlds/ERR_Everon_Layers/default.layer +++ b/addons/core/Worlds/ERR_Everon_Layers/default.layer @@ -1,4 +1,4 @@ -ERR_GameMode Rereintroduced : "{978E045E53EF36C8}Prefabs/ERR/GameMode.et" { +ERR_GameMode Reintroduced : "{978E045E53EF36C8}Prefabs/ERR/GameMode.et" { } SCR_AIWorld AIWorld : "{E0A05C76552E7F58}Prefabs/AI/SCR_AIWorld.et" { components { diff --git a/addons/core/addon.gproj b/addons/core/addon.gproj index 630215d..8773a4f 100644 --- a/addons/core/addon.gproj +++ b/addons/core/addon.gproj @@ -1,9 +1,12 @@ GameProject { ID "ERR_Core" GUID "2528466DE220D91C" - TITLE "Escapists Rereintroduced - Core" + TITLE "Escapists Reintroduced" Dependencies { "58D0FB3206B6F859" + "595F2BF2F44836FB" + "629B2BA37EFFD577" + "5E524E4FEECCA92B" } Configurations { GameProjectConfig PC { diff --git a/addons/intel/addon.gproj b/addons/intel/addon.gproj deleted file mode 100644 index 5b29a17..0000000 --- a/addons/intel/addon.gproj +++ /dev/null @@ -1,9 +0,0 @@ -GameProject { - ID "ERR_Intel" - GUID "D31039C7C53E348A" - TITLE "Escapists Rereintroduced - Intel" - Dependencies { - "58D0FB3206B6F859" - "2528466DE220D91C" - } -} diff --git a/addons/map/addon.gproj b/addons/map/addon.gproj deleted file mode 100644 index 5d0a4d2..0000000 --- a/addons/map/addon.gproj +++ /dev/null @@ -1,9 +0,0 @@ -GameProject { - ID "ERR_Map" - GUID "9AAEE9041D79809E" - TITLE "Escapists Rereintroduced - Map" - Dependencies { - "58D0FB3206B6F859" - "2528466DE220D91C" - } -} diff --git a/docs/addons.json b/docs/addons.json index 11c6b5f..e2e62f5 100644 --- a/docs/addons.json +++ b/docs/addons.json @@ -1,7 +1,3 @@ { - "core": "2528466DE220D91C", - "ai": "5192138CB9D5B911", - "intel": "D31039C7C53E348A", - "chat": "FA804F411BDDF2C6", - "map": "9AAEE9041D79809E" + "core": "2528466DE220D91C" } diff --git a/docs/ai-feature-migration.json b/docs/ai-feature-migration.json index 2f4dbeb..a5df3ba 100644 --- a/docs/ai-feature-migration.json +++ b/docs/ai-feature-migration.json @@ -29,8 +29,8 @@ "Scripts/Game/EscapistsAI/EAI_HQSettings.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_Settings.c", - "addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c" ], "behavior": [ "Unified config/defaults/backups/migration", @@ -70,9 +70,9 @@ "Scripts/Game/EscapistsAI/EAI_NativeRadioCall.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQ.c", - "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c", - "addons/ai/Scripts/Game/ERR/ERR_HQReport.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c" ], "behavior": [ "Real basic/manpack inventory", @@ -98,9 +98,9 @@ "Scripts/Game/EscapistsAI/EAI_HQ.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQObservation.c", - "addons/ai/Scripts/Game/ERR/ERR_HQReport.c", - "addons/ai/Scripts/Game/ERR/ERR_HQ.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c" ], "behavior": [ "Current native LOS", @@ -122,7 +122,7 @@ "Scripts/Game/EscapistsAI/EAI_HQ.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQ.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c" ], "behavior": [ "Approach/flank-left/flank-right/intercept roles", @@ -145,8 +145,8 @@ "Scripts/Game/EscapistsAI/EAI_HQ.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQ.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c" ], "behavior": [ "Three-minute roster/position/status check-ins", @@ -205,8 +205,8 @@ "Scripts/Game/EscapistsAI/EAI_HQ.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQReport.c", - "addons/ai/Scripts/Game/ERR/ERR_HQ.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c" ], "behavior": [ "Ten-minute ground trail", @@ -246,8 +246,8 @@ "Scripts/Game/EscapistsAI/EAI_SupplyConvoys.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQ.c", - "addons/ai/Scripts/Game/ERR/ERR_AircraftService.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c" ], "behavior": [ "Check nested turret seats/player crew membership", @@ -291,9 +291,9 @@ "Scripts/Game/EscapistsAI/EAI_AirRecon.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_AircraftService.c", - "addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c", - "addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c" ], "behavior": [ "Incremental airport discovery", @@ -397,9 +397,9 @@ "Scripts/Game/EscapistsAI/EAI_LogisticsVehicle.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c", - "addons/ai/Scripts/Game/ERR/ERR_AircraftService.c", - "addons/ai/Scripts/Game/ERR/ERR_AircraftFlightEnvelope.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c" ], "behavior": [ "20s startup grace;60s prolonged grounding", @@ -443,9 +443,9 @@ "Scripts/Game/EscapistsAI/EAI_LogisticsVehicle.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarCourierTransfer.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarSupplyTransfer.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c" ], "behavior": [ "One request per group", @@ -543,8 +543,8 @@ "Scripts/Game/EscapistsAI/EAI_MortarSystem.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c" ], "behavior": [ "Four quadrant sites;3crew+RTO;27physicalHE each", @@ -567,11 +567,11 @@ "Scripts/Game/EscapistsAI/EAI_MortarSalvo.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarFiring.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarReportLedger.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c" ], "behavior": [ "HQ-delivered<=60s snapshots", @@ -595,9 +595,9 @@ "Scripts/Game/EscapistsAI/EAI_MortarEngagement.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_SettlementSafety.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c" ], "behavior": [ "200m settlement exclusion;100m predicted friendly-path buffer", @@ -618,7 +618,7 @@ "Scripts/Game/EscapistsAI/EAI_LogisticsVehicle.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c", "tools/compare_performance.py" ], "behavior": [ @@ -642,8 +642,8 @@ "Scripts/Game/EscapistsAI/EAI_DisableAmbientEvents.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQ.c", - "addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c" ], "behavior": [ "Suppress original random ambient events", @@ -662,8 +662,8 @@ "Scripts/Game/EscapistsAI/EAI_FactionRelations.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c", - "addons/ai/Scripts/Game/ERR/ERR_HQ.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c" ], "behavior": [ "Normalize US/UK->NATO and USSR->USSR_NI aliases after every-member checks", @@ -682,8 +682,8 @@ "Scripts/Game/EscapistsAI/EAI_ImprovisedPrisons.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c", - "addons/core/Scripts/Game/ERR/ERR_SiteService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c", "addons/core/Configs/ERR/EveronSites.conf" ], "behavior": [ @@ -719,8 +719,8 @@ "Scripts/Game/EscapistsAI/EAI_StartingOutfit.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c", - "addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c", "addons/core/Prefabs/ERR/Prisoner.et" ], "behavior": [ @@ -782,8 +782,8 @@ "Scripts/Game/EscapistsAI/EAI_RuntimeGuards.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c", - "addons/core/Scripts/Game/ERR/ERR_InitialGuardRules.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c" ], "behavior": [ "Null-controller delayed spawn guards", @@ -836,10 +836,10 @@ "Scripts/Game/EscapistsAI/EAI_HQ.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQJournal.c", - "addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c", - "addons/core/Scripts/Game/ERR/ERR_AdminSession.c", - "addons/core/Scripts/Game/ERR/ERR_AdminMenu.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c" ], "behavior": [ "Session/message/sequence correlation;300recentlines/4096pending;5MiB rotation;30s file retry", @@ -860,7 +860,7 @@ "Scripts/Game/EscapistsAI/EAI_GroupLookup.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c" ], "behavior": [ "Catalog-backed physical group composition" diff --git a/docs/ai-feature-migration.md b/docs/ai-feature-migration.md index 47ad667..1b85025 100644 --- a/docs/ai-feature-migration.md +++ b/docs/ai-feature-migration.md @@ -102,7 +102,7 @@ Original: [EAI_AIConfig.c](/home/jakub/devel/escapists/escapists-ai/Scripts/Game Behavior: Unified config/defaults/backups/migration; bounded validation; runtime HQ settings; next-round frozen convoy/start/simulation choices. -Successor: [ERR_Settings.c](../addons/core/Scripts/Game/ERR/ERR_Settings.c), [ERR_HQAdminProvider.c](../addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c). +Successor: [ERR_Settings.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c), [ERR_HQAdminProvider.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c). Evidence boundary: latest packaged startup + native admin fixture. Asset scope: vanilla. @@ -122,7 +122,7 @@ Original: [EAI_HQ.c](/home/jakub/devel/escapists/escapists-ai/Scripts/Game/Escap Behavior: Real basic/manpack inventory; 500m short links/up to3 hops; 2s per leg; interrupted sender/receiver rules; 100m local observation handoff; 3s originating call; one-time basic/manpack fitting; aircraft uplink; broadcast-only awareness. -Successor: [ERR_HQ.c](../addons/ai/Scripts/Game/ERR/ERR_HQ.c), [ERR_HQNetwork.c](../addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c), [ERR_HQReport.c](../addons/ai/Scripts/Game/ERR/ERR_HQReport.c). +Successor: [ERR_HQ.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c), [ERR_HQNetwork.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c), [ERR_HQReport.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c). Evidence boundary: native real-sighting HQ response + network regression. Asset scope: vanilla. @@ -132,7 +132,7 @@ Original: [EAI_HQObservation.c](/home/jakub/devel/escapists/escapists-ai/Scripts Behavior: Current native LOS; observed count/travel/drawn weapons; timestamped immutable snapshots; velocity from sightings; per-squad fair multi-contact reporting. -Successor: [ERR_HQObservation.c](../addons/ai/Scripts/Game/ERR/ERR_HQObservation.c), [ERR_HQReport.c](../addons/ai/Scripts/Game/ERR/ERR_HQReport.c), [ERR_HQ.c](../addons/ai/Scripts/Game/ERR/ERR_HQ.c). +Successor: [ERR_HQObservation.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c), [ERR_HQReport.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c), [ERR_HQ.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c). Evidence boundary: native HQ response; 186-assertion owned AI/Intel integration. Asset scope: vanilla. @@ -142,7 +142,7 @@ Original: [EAI_GroupTactics.c](/home/jakub/devel/escapists/escapists-ai/Scripts/ Behavior: Approach/flank-left/flank-right/intercept roles; growing45–110m search; 120s freshness expiry; native combat preemption; restore original patrol; fair nearest squad allocation. -Successor: [ERR_HQ.c](../addons/ai/Scripts/Game/ERR/ERR_HQ.c). +Successor: [ERR_HQ.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c). Evidence boundary: native original-squad movement + patrol/HQ fixture. Asset scope: vanilla. @@ -152,7 +152,7 @@ Original: [EAI_HQStatus.c](/home/jakub/devel/escapists/escapists-ai/Scripts/Game Behavior: Three-minute roster/position/status check-ins; early low-ammo reports; snapshot casualties; in-flight evidence preservation; disconnected/overdue diagnostics. -Successor: [ERR_HQ.c](../addons/ai/Scripts/Game/ERR/ERR_HQ.c), [ERR_MortarLogistics.c](../addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c). +Successor: [ERR_HQ.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c), [ERR_MortarLogistics.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c). Evidence boundary: native mortar courier reports only. Asset scope: vanilla. @@ -182,7 +182,7 @@ Original: [EAI_HQBodySearch.c](/home/jakub/devel/escapists/escapists-ai/Scripts/ Behavior: Ten-minute ground trail; snapshot ahead guesses300–1200m; road-aware vehicle hypotheses; casualty-location fallback; two-loss wave threshold/three-minute spacing/three living search groups. -Successor: [ERR_HQReport.c](../addons/ai/Scripts/Game/ERR/ERR_HQReport.c), [ERR_HQ.c](../addons/ai/Scripts/Game/ERR/ERR_HQ.c). +Successor: [ERR_HQReport.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c), [ERR_HQ.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c). Evidence boundary: projection policy only; persistent belief not implemented. Asset scope: vanilla. @@ -202,7 +202,7 @@ Original: [EAI_ResponseSafety.c](/home/jakub/devel/escapists/escapists-ai/Script Behavior: Check nested turret seats/player crew membership; immediate permanent release after capture; retain living vehicles/crews/wrecks; first stop reason; restore detail/locks. -Successor: [ERR_HQ.c](../addons/ai/Scripts/Game/ERR/ERR_HQ.c), [ERR_AircraftService.c](../addons/ai/Scripts/Game/ERR/ERR_AircraftService.c). +Successor: [ERR_HQ.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c), [ERR_AircraftService.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c). Evidence boundary: code guards; no migrated convoy runtime. Asset scope: vanilla. @@ -224,7 +224,7 @@ Original: [EAI_AirRecon.c](/home/jakub/devel/escapists/escapists-ai/Scripts/Game Behavior: Incremental airport discovery; clear pads;15min initial/loss delay; one active armed Mi8; real sightings into HQ;300m orbit/150m minimum horizontal standoff; runway return/landing retry; player takeover release. -Successor: [ERR_AircraftService.c](../addons/ai/Scripts/Game/ERR/ERR_AircraftService.c), [ERR_AircraftFlight.c](../addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c), [ERR_AircraftRouteFlight.c](../addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c). +Successor: [ERR_AircraftService.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c), [ERR_AircraftFlight.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c), [ERR_AircraftRouteFlight.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c). Evidence boundary: isolated20m flight only; no operational recon. Asset scope: vanilla Mi8 candidate; original recon wrapper must be rebuilt. @@ -274,7 +274,7 @@ Original: [EAI_HelicopterAvailability.c](/home/jakub/devel/escapists/escapists-a Behavior: 20s startup grace;60s prolonged grounding; separate damage/pilot/takeover states; stable landing; obstacle/friendly pad holds; temporary active crew detail and lock release. -Successor: [ERR_HelicopterAvailability.c](../addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c), [ERR_AircraftService.c](../addons/ai/Scripts/Game/ERR/ERR_AircraftService.c), [ERR_AircraftFlightEnvelope.c](../addons/ai/Scripts/Game/ERR/ERR_AircraftFlightEnvelope.c). +Successor: [ERR_HelicopterAvailability.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c), [ERR_AircraftService.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c), [ERR_AircraftFlightEnvelope.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c). Evidence boundary: native vertical/20m mechanisms; broader airborne operation unqualified. Asset scope: vanilla. @@ -294,7 +294,7 @@ Original: [EAI_Resupply.c](/home/jakub/devel/escapists/escapists-ai/Scripts/Game Behavior: One request per group; refresh destination from delivered status; one truck+one transportMi8; rotate4queue entries/30s; prefer air beyond2.5km/no road/stalled truck;15s unloading/60m living recipient range;3min expiry/retry;15min destroyed-carrier replacement; surviving carrier reuse. -Successor: [ERR_MortarLogistics.c](../addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c), [ERR_MortarCourierTransfer.c](../addons/ai/Scripts/Game/ERR/ERR_MortarCourierTransfer.c), [ERR_MortarSupplyTransfer.c](../addons/ai/Scripts/Game/ERR/ERR_MortarSupplyTransfer.c). +Successor: [ERR_MortarLogistics.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c), [ERR_MortarCourierTransfer.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c), [ERR_MortarSupplyTransfer.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c). Evidence boundary: native finite courier transfer; not vehicle logistics. Asset scope: vanilla. @@ -344,7 +344,7 @@ Original: [EAI_MortarSystem.c](/home/jakub/devel/escapists/escapists-ai/Scripts/ Behavior: Four quadrant sites;3crew+RTO;27physicalHE each; incremental16placement candidates/5s; terrain/road/spacing safety;2min quadrant fallback; no loss respawn. -Successor: [ERR_MortarSystem.c](../addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c), [ERR_MortarReadiness.c](../addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c). +Successor: [ERR_MortarSystem.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c), [ERR_MortarReadiness.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c). Evidence boundary: native one-battery readiness and transfer. Asset scope: vanilla. @@ -354,7 +354,7 @@ Original: [EAI_MortarPrediction.c](/home/jakub/devel/escapists/escapists-ai/Scri Behavior: HQ-delivered<=60s snapshots; native aim/charge/flight solve; road-bounded velocity projection<=90s/1800m;8shot salvo/40m spread; actual projectile accounting; refreshed reports; final-transfer revalidation;120s deadline; stale/no-ammo/capture cancellation. -Successor: [ERR_MortarPrediction.c](../addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c), [ERR_MortarSystem.c](../addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c), [ERR_MortarSalvo.c](../addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c), [ERR_MortarFiring.c](../addons/ai/Scripts/Game/ERR/ERR_MortarFiring.c), [ERR_MortarReportLedger.c](../addons/ai/Scripts/Game/ERR/ERR_MortarReportLedger.c). +Successor: [ERR_MortarPrediction.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c), [ERR_MortarSystem.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c), [ERR_MortarSalvo.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c), [ERR_MortarFiring.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c), [ERR_MortarReportLedger.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c). Evidence boundary: native8actualprojectiles55assertions; stale expiry48assertions. Asset scope: vanilla. @@ -364,7 +364,7 @@ Original: [EAI_SettlementSafety.c](/home/jakub/devel/escapists/escapists-ai/Scri Behavior: 200m settlement exclusion;100m predicted friendly-path buffer; per-shell repeated checks; cached identical positions; aircraft/drop600m reservation through flight impact+10s. -Successor: [ERR_SettlementSafety.c](../addons/ai/Scripts/Game/ERR/ERR_SettlementSafety.c), [ERR_MortarPrediction.c](../addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c), [ERR_MortarSystem.c](../addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c). +Successor: [ERR_SettlementSafety.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c), [ERR_MortarPrediction.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c), [ERR_MortarSystem.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c). Evidence boundary: native firing safety gates; not full combined-arms qualification. Asset scope: vanilla. @@ -374,7 +374,7 @@ Original: [EAI_Performance.c](/home/jakub/devel/escapists/escapists-ai/Scripts/G Behavior: Bounded radio spatial graph; staggered30s ammo scans; system timing; cargo-only sleeping beyond1.5km; drivers/gunners active; reboard/combat wakes; preserve normal detail after stop. -Successor: [ERR_HQNetwork.c](../addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c), [compare_performance.py](../tools/compare_performance.py). +Successor: [ERR_HQNetwork.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c), [compare_performance.py](../tools/compare_performance.py). Evidence boundary: policy/runtime component bounds; no FPS improvement. Asset scope: vanilla. @@ -384,7 +384,7 @@ Original: [EAI_DisableAmbientEvents.c](/home/jakub/devel/escapists/escapists-ai/ Behavior: Suppress original random ambient events; no virtual mortar/rocket barrages; HQ coordinates strategic response while native tactical combat continues. -Successor: [ERR_HQ.c](../addons/ai/Scripts/Game/ERR/ERR_HQ.c), [ERR_ScenarioComponent.c](../addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c). +Successor: [ERR_HQ.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c), [ERR_ScenarioComponent.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c). Evidence boundary: independent packed Core/Chat startup. Asset scope: vanilla. @@ -394,7 +394,7 @@ Original: [EAI_FactionRelations.c](/home/jakub/devel/escapists/escapists-ai/Scri Behavior: Normalize US/UK->NATO and USSR->USSR_NI aliases after every-member checks; exclude players/slaves/mixed unrelated/civilian/selectedside conflicts; late member support. -Successor: [ERR_FactionCatalog.c](../addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c), [ERR_HQ.c](../addons/ai/Scripts/Game/ERR/ERR_HQ.c). +Successor: [ERR_FactionCatalog.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c), [ERR_HQ.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c). Evidence boundary: vanilla runtime only. Asset scope: RHS/composite-original catalog dependencies not migrated. @@ -404,7 +404,7 @@ Original: [EAI_ImprovisedPrisons.c](/home/jakub/devel/escapists/escapists-ai/Scr Behavior: Random clear10x10m concrete camp;<=0.6m terrain variation;3–5guards/16spawnpositions; native metaldoor;5pistols/8sparemagazines finite backpack;>=1500mairfield/12mroad clearance;12000boundedcandidate search/fallback. -Successor: [ERR_PrisonEscapeService.c](../addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c), [ERR_SiteService.c](../addons/core/Scripts/Game/ERR/ERR_SiteService.c), [EveronSites.conf](../addons/core/Configs/ERR/EveronSites.conf). +Successor: [ERR_PrisonEscapeService.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c), [ERR_SiteService.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c), [EveronSites.conf](../addons/core/Configs/ERR/EveronSites.conf). Evidence boundary: native base loop; ordinary full human route still pending. Asset scope: vanilla. @@ -424,7 +424,7 @@ Original: [EAI_StartingOutfit.c](/home/jakub/devel/escapists/escapists-ai/Script Behavior: One-time delayed equipped helmet/jacket after spawn; latejoin/respawn; preserve other equipment; no ongoing re-equip. -Successor: [ERR_SpawnLogic.c](../addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c), [ERR_AdminPlayerTools.c](../addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c), [Prisoner.et](../addons/core/Prefabs/ERR/Prisoner.et). +Successor: [ERR_SpawnLogic.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c), [ERR_AdminPlayerTools.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c), [Prisoner.et](../addons/core/Prefabs/ERR/Prisoner.et). Evidence boundary: native prisoner kit + admin utilities. Asset scope: owned Escapists-Patch custom skull outfit; vanilla PASGT/BDU available. @@ -454,7 +454,7 @@ Original: [EAI_DependencyGuards.c](/home/jakub/devel/escapists/escapists-ai/Scri Behavior: Null-controller delayed spawn guards; stale defend-waypoint guard; tooltip lifetime guard; original civilian random bounds/head collider bounds; arsenal replication startup guard; invalid supportstation setup; enhanced default-magazine probe cleanup. -Successor: [ERR_SpawnLogic.c](../addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c), [ERR_InitialGuardRules.c](../addons/core/Scripts/Game/ERR/ERR_InitialGuardRules.c). +Successor: [ERR_SpawnLogic.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c), [ERR_InitialGuardRules.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c). Evidence boundary: successor spawn/admission and teardown fixtures. Asset scope: original Escapists/Enhanced hooks intentionally absent. @@ -474,7 +474,7 @@ Original: [EAI_HQJournal.c](/home/jakub/devel/escapists/escapists-ai/Scripts/Gam Behavior: Session/message/sequence correlation;300recentlines/4096pending;5MiB rotation;30s file retry; gap notices; chat8entries/2s; menu40entries/1s; pause/latest/scroll state. -Successor: [ERR_HQJournal.c](../addons/ai/Scripts/Game/ERR/ERR_HQJournal.c), [ERR_HQAdminProvider.c](../addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c), [ERR_AdminSession.c](../addons/core/Scripts/Game/ERR/ERR_AdminSession.c), [ERR_AdminMenu.c](../addons/core/Scripts/Game/ERR/ERR_AdminMenu.c). +Successor: [ERR_HQJournal.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c), [ERR_HQAdminProvider.c](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c), [ERR_AdminSession.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c), [ERR_AdminMenu.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c). Evidence boundary: native menu/journal fixture + packaged startup. Asset scope: vanilla. @@ -484,7 +484,7 @@ Original: [EAI_GroupLookup.c](/home/jakub/devel/escapists/escapists-ai/Scripts/G Behavior: Catalog-backed physical group composition. -Successor: [ERR_FactionCatalog.c](../addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c). +Successor: [ERR_FactionCatalog.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c). Evidence boundary: vanilla startup only. Asset scope: excluded protected-derived source. diff --git a/docs/ai-migration-progress.md b/docs/ai-migration-progress.md index 2a04fed..4992ca8 100644 --- a/docs/ai-migration-progress.md +++ b/docs/ai-migration-progress.md @@ -16,15 +16,15 @@ history remains in [current status](current-status.md). | Area | Actual behavior and boundary | | --- | --- | -| Core force ledger | [Ledger](../addons/core/Scripts/Game/ERR/ERR_ForceLedger.c) and [simulation](../addons/core/Scripts/Game/ERR/ERR_ForceSimulation.c) retain up to 128 formation identities, initial strength, casualties, duty, home position and authored routes. Six existing site groups register before HQ consumes them; other ready physical enemy groups register through GameMode. Physical snapshots count unconscious members as living. Eliminated/retired identities cannot restore strength through re-registration. | +| Core force ledger | [Ledger](../addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c) and [simulation](../addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c) retain up to 128 formation identities, initial strength, casualties, duty, home position and authored routes. Six existing site groups register before HQ consumes them; other ready physical enemy groups register through GameMode. Physical snapshots count unconscious members as living. Eliminated/retired identities cannot restore strength through re-registration. | | Dormant arithmetic | A pure route simulator advances nonphysical records on a staggered two-second schedule, with 1.4 m/s walking and 11 m/s convoy rules, authored elevation interpolation and bounded whole-lap skipping. It performs no terrain, navigation, player or entity queries. This supplies the arithmetic foundation; production presence arbitration and member materialization are still missing. | -| Delivered belief | [Memory](../addons/ai/Scripts/Game/ERR/ERR_HQMemory.c) retains up to 64 delivered tracks independently of short-lived fire contacts. Sightings decay with a 600-second confidence half-life and widening uncertainty. Credible successive reports infer motion; extrapolation is capped at 30 seconds/300 metres. Body and distress reports begin weaker and do not infer a moving enemy. Target handles are identity keys, not live-position sources. | -| Pursuit and objectives | [Pursuit rules](../addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c), [doctrine](../addons/ai/Scripts/Game/ERR/ERR_HQDoctrine.c) and HQ assign existing eligible infantry to intercept, search or contain objectives. Age/confidence restrict precision, travel distance affects task lifetime, and stale/new report revisions control replacement orders. Actual downlink delivery precedes native waypoint changes. Home guards, busy/support units, two approach sectors and finite task lifetimes constrain commitments. Doctrine uses authored objectives and reported headings; it does not claim road-route or player-goal knowledge. | -| Searched areas | [Coverage](../addons/ai/Scripts/Game/ERR/ERR_HQCoverage.c) records at most 128 visited 500 m cells for 900 seconds, using delivered completed sweeps. Replay/revision guards prevent repeated or outdated negative reports from reducing a newer belief. Fresh positive sightings reopen their cell. Reserved destinations prevent concurrent reuse. A coarse visited cell is not proof every building or hiding place was searched. | -| Routine status | [Sampler](../addons/ai/Scripts/Game/ERR/ERR_HQStatusSampler.c) retains each formation's initial roster, up to 32 members. Only valid retained corpses with explicit destroyed damage state count as local confirmed deaths; missing references, transferred members and unconsciousness do not. A detached status needs a surviving original owned radio caller. [Watch](../addons/ai/Scripts/Game/ERR/ERR_HQWatch.c) changes HQ's roster only after uplink delivery. | +| Delivered belief | [Memory](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c) retains up to 64 delivered tracks independently of short-lived fire contacts. Sightings decay with a 600-second confidence half-life and widening uncertainty. Credible successive reports infer motion; extrapolation is capped at 30 seconds/300 metres. Body and distress reports begin weaker and do not infer a moving enemy. Target handles are identity keys, not live-position sources. | +| Pursuit and objectives | [Pursuit rules](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c), [doctrine](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c) and HQ assign existing eligible infantry to intercept, search or contain objectives. Age/confidence restrict precision, travel distance affects task lifetime, and stale/new report revisions control replacement orders. Actual downlink delivery precedes native waypoint changes. Home guards, busy/support units, two approach sectors and finite task lifetimes constrain commitments. Doctrine uses authored objectives and reported headings; it does not claim road-route or player-goal knowledge. | +| Searched areas | [Coverage](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c) records at most 128 visited 500 m cells for 900 seconds, using delivered completed sweeps. Replay/revision guards prevent repeated or outdated negative reports from reducing a newer belief. Fresh positive sightings reopen their cell. Reserved destinations prevent concurrent reuse. A coarse visited cell is not proof every building or hiding place was searched. | +| Routine status | [Sampler](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c) retains each formation's initial roster, up to 32 members. Only valid retained corpses with explicit destroyed damage state count as local confirmed deaths; missing references, transferred members and unconsciousness do not. A detached status needs a surviving original owned radio caller. [Watch](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c) changes HQ's roster only after uplink delivery. | | Missing patrols | Routine check-ins are scheduled every 180 seconds. After two missed check-ins, HQ attempts a request and allows 30 seconds for a reply, even if no route exists. One existing eligible patrol may investigate the missing unit's **last delivered** position. Source/status/request identities reject late completions; a fresh check-in resolves the case and cancellation travels through radio. Silence never proves a death or creates an exact enemy target. | -| Body discovery | [Body observer](../addons/ai/Scripts/Game/ERR/ERR_HQBodyObserver.c) uses a bounded own-force registry, a rotating window of at most 16 corpses, a 15-second per-group scan cadence and a shared trace budget. Physical observers need range/facing and native visibility checks. Discovery becomes low-confidence casualty evidence only through radio, with cause unknown; it cannot authorize precise fire. | -| Skill and rare anti-air equipment | [Equipment service](../addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c) binds an Expert minimum only to eligible registered enemy actors and restores the captured skill on release. Finite startup Stinger selection defaults to one in 15; `/esc hq stinger show\|set N` supports disabling or changing future selections. Pending/late inventory callbacks do not cause replenishment after success, firing, dropping or looting. See the [equipment audit](ai-equipment-migration.md) for owned-source hashes and exact limitations. | +| Body discovery | [Body observer](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c) uses a bounded own-force registry, a rotating window of at most 16 corpses, a 15-second per-group scan cadence and a shared trace budget. Physical observers need range/facing and native visibility checks. Discovery becomes low-confidence casualty evidence only through radio, with cause unknown; it cannot authorize precise fire. | +| Skill and rare anti-air equipment | [Equipment service](../addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c) binds an Expert minimum only to eligible registered enemy actors and restores the captured skill on release. Finite startup Stinger selection defaults to one in 15; `/esc hq stinger show\|set N` supports disabling or changing future selections. Pending/late inventory callbacks do not cause replenishment after success, firing, dropping or looting. See the [equipment audit](ai-equipment-migration.md) for owned-source hashes and exact limitations. | The original owned `SquadLimit` behavior **raises**, rather than shrinks, the shared commitment ceiling: `baseline + floor(confirmed losses / 2)`, capped at diff --git a/docs/aircraft-field-route-plan.md b/docs/aircraft-field-route-plan.md index 214c01f..278bf66 100644 --- a/docs/aircraft-field-route-plan.md +++ b/docs/aircraft-field-route-plan.md @@ -29,7 +29,7 @@ Additional negative evidence is concrete but bounded. `Prefabs/Vehicles/Core/Hel The existing [route comparison](evidence/route-comparison-2026-09-19-192238/comparison.json) measured 20 m translation plus hold in 69.293 s, with sampled cruise progress about 0.322 m/s after the route-only gain change. This proves physical movement and improvement in that one run; it cannot justify a 100 m duration estimate from a requested speed alone. At the observed cruise speed, 100 m already takes about 311 seconds before startup and landing, exceeding the unchanged 240-second flight lease. -Concrete dependencies in `addons/ai/Scripts/Game/ERR/`: +Concrete dependencies in `addons/core/Scripts/Game/ERR/10_AI/`: - `ERR_AircraftRouteEnvelope.c:4–17` accepts 18–20.05 m, requests at most 0.5 m/s horizontal speed, uses velocity-error gain 0.10 and caps cyclic demand magnitude at 0.03. Autohover remains active. There is no identified autohover velocity-response model, so simply raising desired speed may only saturate demand. - `ERR_AircraftRouteEnvelope.c:44–98` qualifies a near-level rectangle, including possible cancellation landings, with terrain variation at most 0.3 m and at most 35×35 samples. Destination height is rebased to the original home height. This is intentionally incompatible with general Everon terrain. @@ -99,9 +99,9 @@ SHA-256 of the exact local files read for the main API and controller findings. | `installed: scripts/Game/generated/Vehicle/HelicopterControllerComponent.c` | `951495d96470347af1520641a0e4c7ca7aea8722e4ad5eb06d45f6f3da25040d` | | `installed: scripts/Game/generated/Vehicle/VehicleHelicopterSimulation.c` | `af5a7b44d7303a0eec458478d4049a49546df1f3801b7295966d8d0a10c26c57` | | `installed: scripts/Game/AI/ScriptedNodes/Behavior/SCR_AIGetActionParameters.c` | `7ed819265aa2b3b82960a3d2c4dbc83160dd10c2116c44f9c3e52776524fecf8` | -| `actual successor: addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c` | `1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9` | -| `actual successor: addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c` | `e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511` | -| `staged successor: addons/ai/Scripts/Game/ERR/ERR_AircraftService.c` | `bf52361c9d07b2c632d6ad755cbca76683f5ad4a8208e6eec690c367efa44549` | +| `actual successor: addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c` | `1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9` | +| `actual successor: addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c` | `e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511` | +| `staged successor: addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c` | `bf52361c9d07b2c632d6ad755cbca76683f5ad4a8208e6eec690c367efa44549` | ## Dormant implementation checkpoint diff --git a/docs/architecture.md b/docs/architecture.md index d6817f8..23178e3 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -2,7 +2,13 @@ ## Dependencies -`core -> ArmaReforger`; `ai -> core`; `intel -> core`; `map -> core`; `chat -> core, ai, intel, map`. Every project declares the vanilla dependency explicitly. Addon GUIDs are listed in `addons.json`; metadata supplies new resource GUIDs. `tools/check.py` rejects external addon dependencies, duplicate resource identities, unresolved resources and legacy Escapists symbols. +One project, `addons/core/addon.gproj` (`ERR_Core`, `2528466DE220D91C`), contains +Core, AI, Intel, Map and Chat modules. It directly depends on vanilla Reforger, +RHS: Status Quo, WCS Armaments and WCS BMP-1; the external closure is recorded in +`external-addons.json`. The numbered script folders preserve extension order. +`tools/check.py` validates the single identity, dependency graph, unique resource +GUIDs and exact authored/vanilla/authorized external resource references. +See [single-mod setup](single-mod.md). Core owns `ERR_GameMode`, mission rules, native spawn lifecycle integration, settings, the location registry, the vanilla faction catalog and authored scenario construction. `ERR_Phase` transitions are checked centrally. `ERR_LocationComponent` registers stable location IDs and replicates discovery. Mission phase, discovery and persistent settings mutations are server-owned. diff --git a/docs/casualty-ground-support.md b/docs/casualty-ground-support.md index 3eea340..382909e 100644 --- a/docs/casualty-ground-support.md +++ b/docs/casualty-ground-support.md @@ -12,8 +12,8 @@ Native PointInfo bone resolution, actual tire-to-ground gaps, awake state and tr New files: -- `addons/core/Scripts/Game/ERR/ERR_CasualtyGroundSupport.c` -- `addons/core/Scripts/Game/ERR/ERR_NativeCasualtyGroundProbe.c` +- `addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c` +- `addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c` - `tests/test_casualty_ground_policy.py` Apply `ground-support-integration.patch` only to the indicated AircraftReady/Nearby and native casualty-fixture hunks. Its latest central-service baseline preserves the separately reviewed committed-lifecycle changes. Add `test_casualty_ground_policy.py` to the parent's `tools/check.py` test list. No new outcome or BaseSmoke steps are required: the existing `casualty-service` readiness stage runs the bounded ground probe before causing unconsciousness. diff --git a/docs/casualty-loading.md b/docs/casualty-loading.md index 9889e5e..9f0540a 100644 --- a/docs/casualty-loading.md +++ b/docs/casualty-loading.md @@ -25,10 +25,10 @@ The mode adapter owns Tick/Stop/roster subscriptions and replicates only the cur New production files: -- `addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c` -- `addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingOwner.c` -- `addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingGameMode.c` -- `addons/core/Scripts/Game/ERR/ERR_LoadCasualtyAction.c` +- `addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c` +- `addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c` +- `addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c` +- `addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c` The successor Prisoner prefab owns the action and `tools/check.py` includes the casualty policy regression. The action reuses the existing Prisoner resource identity; new nested action/UI component IDs are successor-authored. diff --git a/docs/convoy-migration.md b/docs/convoy-migration.md index 3530cd8..8cf40aa 100644 --- a/docs/convoy-migration.md +++ b/docs/convoy-migration.md @@ -92,7 +92,7 @@ convoy. It does not change the six-vehicle receipt, nineteen original crew, finite initial cargo or opt-in manual dispatch. The earlier native driving archive above predates these combat commands. -[HQ planning](../addons/ai/Scripts/Game/ERR/ERR_HQ.c) uses two delivered inputs: +[HQ planning](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c) uses two delivered inputs: a living, nonclosed original crew's own status position no older than 180 seconds, and a positive sighting less than 60 seconds old within 400 m of that reported position. Exactly 400 m and exactly 180 seconds are accepted; exactly 60 seconds @@ -102,7 +102,7 @@ Neither the planner nor a silent crew substitutes a live vehicle or hidden enemy position for those reports. Body/distress beliefs do not become convoy fire targets. Each original crew uses its existing shared HQ downlink. A queued -[combat command](../addons/ai/Scripts/Game/ERR/ERR_ConvoyCombat.c) contains the +[combat command](../addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c) contains the convoy source ID, original group, vehicle index, monotonically increasing command ID, originating sighting ID/time, issue time and an expiry at most 30 seconds later. Queuing does not stop travel. Only successful physical radio delivery can @@ -124,7 +124,7 @@ a held vehicle. A successful RESUME creates one native move waypoint at the preserved route index. Failed native recreation consumes that command ID and releases the vehicle's order instead of retrying the same command. -At admission, [ConvoyService](../addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c) +At admission, [ConvoyService](../addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c) calls the native `utility.AddUsableVehicle(usage)` helper after vehicle-manager admission. This registers the native deletion/damage callbacks and mounted combat activity omitted by raw manager insertion alone. Native perception, weapon aiming diff --git a/docs/current-status.md b/docs/current-status.md index 4d7db0f..3c6e325 100644 --- a/docs/current-status.md +++ b/docs/current-status.md @@ -1,5 +1,14 @@ # Current development status +Current source now uses one combined addon. Open `addons/core/addon.gproj` and +`Missions/ERR_Everon.conf`; see [single-mod migration](single-mod.md). The older +five-addon checkpoints below retain their original scope and do not qualify the +merged source. +The merged Workbench HQ-memory run completes 101 assertions with no script/runtime +failures; all 191 offline regression programs pass. Four existing external +localization resource errors remain in the strict native verdict. + + **20 September 2026 — report-driven road interception:** HQ can now use fresh delivered movement history to select a forward point on an authored road and order an existing infantry group to hold it temporarily. The bounded selector respects reserved destinations, physical clearance and elevated-road geometry; old or weak evidence falls back to search. Existing radio delivery, force limits, home guards and absolute task expiry remain in charge. No barricades, vehicles, mines or new troops are created. [Implementation and scope](road-interception.md). All repository checks pass. The [native113607 raw checkpoint](evidence/native-2026-09-20-113607-road-interception-raw/README.md) completes101 assertions/one round with zero script/runtime failures, including an actual Everon road selection and stale-belief refusal from arranged private-memory reports. Four external localization errors remain. A process-exit race prevented the runner's final cleanup seal; its failed verdict is retained. A later independent read-only check found the reported PID absent, the private prefix idle and source bytes unchanged. This is not infantry-arrival, natural-interception, multiplayer or FPS evidence. The [refreshed development handoff](../.build/playtest-2026-09-20-road-interception/README.md) now contains all five packages and matching editable source:261 authored files,222 exact PAK payload entries and15 verified runtime files. [Packed Core](evidence/packed-core-2026-09-20-road-interception/report.json) starts cleanly. [Full external startup](evidence/raw-packed-chat-external-2026-09-20-road-interception/README.md) verifies the13-addon paths, ordinary modules, mission header and local prisoner admission without script/runtime failures, but remains failed on four external localization errors appearing twice. Both packed runs confirm unchanged inputs and hidden/muted cleanup. [Build/handoff record](evidence/package-2026-09-20-road-interception/handoff.json). All533 reference sources are unchanged; previous handoffs remain intact. Native packaging shutdown failures, full human escape, multiplayer and FPS acceptance remain unqualified. diff --git a/docs/development-source-bundle.md b/docs/development-source-bundle.md index fd81a33..74855f7 100644 --- a/docs/development-source-bundle.md +++ b/docs/development-source-bundle.md @@ -1,6 +1,6 @@ # Development source handoff -`tools/source_bundle.py` assembles the five independently identified successor projects into a deterministic **DEVELOPMENT SOURCE BUNDLE**. This is an editable ZIP, not a native `.pak`, an engine build, a qualified release or a Workshop publication. It does not launch tools, load accounts or change acceptance records. +`tools/source_bundle.py` assembles the single combined successor project into a deterministic **DEVELOPMENT SOURCE BUNDLE**. This is an editable ZIP, not a native `.pak`, an engine build, a qualified release or a Workshop publication. It does not launch tools, load accounts or change acceptance records. Preview is the default and writes no archive: @@ -18,9 +18,9 @@ Existing destinations, symlinks, traversal and missing parent directories are re ## Included content and validation -The archive contains the exact authored bytes under `addons/core`, `addons/ai`, `addons/intel`, `addons/chat` and `addons/map`, plus generated `BUNDLE-README.md` and `BUNDLE-MANIFEST.json`. The README explains opening the base/companion projects, the installed vanilla dependency, scenario identifiers, extraction into a new development folder and current validation limits. The manifest records all payload SHA-256 hashes (excluding its own self-reference), pinned project IDs/GUIDs and their complete dependency lists. No absolute source path, machine/user name or timestamp is embedded. +The archive contains the exact authored bytes under `addons/core`, plus generated `BUNDLE-README.md`, `BUNDLE-MANIFEST.json` and `EXTERNAL-ADDONS.json`. The README explains opening the combined project, its vanilla and RHS/WCS dependencies, scenario identifiers, extraction into a new development folder and current validation limits. The manifest records all payload SHA-256 hashes (excluding its own self-reference), pinned project IDs/GUIDs and their complete dependency lists. No absolute source path, machine/user name or timestamp is embedded. -Project identities must match the maintained successor catalog and the five fixed identities in the tool. Dependencies are exactly vanilla plus the project's current successor dependency set. Metadata GUIDs must be unique, refer to an included matching resource, and differ from vanilla identities. Referenced successor resources must be visible through the declared dependencies; external resource references must match `docs/vanilla-resources.json`. Original ecosystem symbols are rejected. These checks protect the known source structure; they cannot establish authorship or license rights for arbitrarily renamed/copied code. The repository's provenance review remains necessary. +Project identities must match the maintained successor catalog and the single fixed identity in the tool. Dependencies are exactly vanilla plus the authorized RHS/WCS direct dependencies. Metadata GUIDs must be unique, refer to an included matching resource, and differ from vanilla identities. Referenced successor resources must be visible through the declared dependencies; vanilla and external resource references must match `docs/vanilla-resources.json` or the authorized `docs/external-addons.json` catalog. Original ecosystem symbols are rejected. These checks protect the known source structure; they cannot establish authorship or license rights for arbitrarily renamed/copied code. The repository's provenance review remains necessary. The tool reuses the authored addon manifest helper, with a narrower packaging schema covering current text scripts, prefabs, configurations, world/layer, UI/material and resource metadata formats. An unknown asset format or unreviewed directory fails instead of silently dropping a newly required asset. Extend the reviewed schema when intentionally adding another asset kind. Vanilla assets are referenced, never copied from their installation. @@ -38,4 +38,4 @@ This invokes the existing `release_check.audit` before and after collection and ## Tests -`python3 tests/test_source_bundle.py` exercises the real five-project tree in disposable copies: deterministic bytes and member hashes, timestamp/permission independence, exclusions, changed source, identity/dependency failures, resource visibility and metadata, unknown assets, symlinks/FIFOs, unsafe/case-colliding names, no-overwrite publication, publication cleanup, validation refusal with an output argument, concurrent collection mutation, preview and actual pending-release refusal. The tests create only temporary archives; no engine or network is used. Add this test to the existing `tools/check.py` test list when integrating. +`python3 tests/test_source_bundle.py` exercises the real single-project tree in disposable copies: deterministic bytes and member hashes, timestamp/permission independence, exclusions, changed source, identity/dependency failures, resource visibility and metadata, unknown assets, symlinks/FIFOs, unsafe/case-colliding names, no-overwrite publication, publication cleanup, validation refusal with an output argument, concurrent collection mutation, preview and actual pending-release refusal. The tests create only temporary archives; no engine or network is used. This test is included in `tools/check.py`. diff --git a/docs/evidence/native-2026-09-20-merged-mod/console.log.txt b/docs/evidence/native-2026-09-20-merged-mod/console.log.txt new file mode 100644 index 0000000..add2a25 --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/console.log.txt @@ -0,0 +1,694 @@ +--------------------------------------------- +Log Z:\tmp\erri-merged-workbench-final\logs\logs_2026-09-20_13-28-18\console.log started at 2026-09-20 13:28:18 (2026-09-20 11:28:18 UTC) + +13:28:18.751 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-merged-workbench-final\logs\logs_2026-09-20_13-28-18' to filesystem under name logs +13:28:18.751 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-merged-workbench-final\profile' to filesystem under name profile +13:28:18.751 ENGINE : FileSystem: Current working directory: 'Z:\home\jakub\.local\share\Steam\steamapps\common\Arma Reforger Tools\Workbench\' +13:28:18.753 PROFILING : Workbench Create Engine took: 9.154000 ms +13:28:19.783 INIT : INIT : Workbench Init Engine +13:28:19.783 ENGINE : Initializing engine, version 192142 +13:28:19.783 ENGINE : CLI Params: -gproj Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj -addonsDir Z:/home/jakub/devel/escapistsrereintroduced/addons -profile Z:/tmp/erri-merged-workbench-final -logconsole -wbModule WorldEditor -load Worlds/ERR_Everon.ent -plugin ERR_ValidateWorldPlugin -errPlay 1 -errSmoke 1 -errSmokeOutcome hq-memory -noThrow -disableCrashReporter +13:28:19.795 ENGINE : Addon dirs: +13:28:19.795 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/' +13:28:19.795 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons' +13:28:19.795 ENGINE : dir: './addons' +13:28:19.795 ENGINE : dir: 'Z:/tmp/erri-merged-workbench-final/addons' +13:28:19.795 ENGINE : Available addons: +13:28:19.795 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +13:28:19.795 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed) +13:28:19.795 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed) +13:28:19.795 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed) +13:28:19.795 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed) +13:28:19.795 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed) +13:28:19.795 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed) +13:28:19.795 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed) +13:28:19.795 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed) +13:28:19.796 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\core' to filesystem under name ERR_Core +13:28:19.797 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1 +13:28:19.798 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore +13:28:19.800 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments +13:28:19.805 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core +13:28:19.806 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02 +13:28:19.812 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01 +13:28:19.926 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-merged-workbench-final/addons/ArmaReforger/' (pak count: 14) to filesystem under name ArmaReforger +13:28:19.929 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core +13:28:19.929 ENGINE : CPU vendor : AuthenticAMD +13:28:19.929 ENGINE : CPU type : 2 +13:28:19.929 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor +13:28:19.929 ENGINE : CPU cache info : L1 [Inst 32KB, Data 32KB], L2 [Unif 512KB], L3 [Unif 16384KB] +13:28:19.929 ENGINE : CPU count logical : 16 +13:28:19.929 ENGINE : CPU count physical : 8 +13:28:19.929 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2 +13:28:19.929 RESOURCES : ResourceDB: loading cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +13:28:19.930 RESOURCES : ResourceDB: loading cache (id=1 name=WCS_BMP-1 path=Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb) +13:28:19.930 RESOURCES : ResourceDB: loading cache (id=2 name=WCS_SpaceCore path=Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb) +13:28:19.931 RESOURCES : ResourceDB: loading cache (id=3 name=WCS_Armaments path=Z:/tmp/erri-merged-workbench-final/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb) +13:28:19.934 RESOURCES : ResourceDB: loading cache (id=4 name=RHS_Core path=Z:/tmp/erri-merged-workbench-final/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb) +13:28:19.946 RESOURCES : ResourceDB: loading cache (id=5 name=RHS_Content_02 path=Z:/tmp/erri-merged-workbench-final/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb) +13:28:19.949 RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Content_01 path=Z:/tmp/erri-merged-workbench-final/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb) +13:28:19.956 RESOURCES : ResourceDB: loading cache (id=7 name=ArmaReforger path=Z:/tmp/erri-merged-workbench-final/addons/ArmaReforger/resourceDatabase.rdb) +13:28:20.106 RESOURCES : ResourceDB: loading cache (id=8 name=core path=./addons/core/resourceDatabase.rdb) +13:28:20.108 RESOURCES : ResourceDB: loading cache (id=9 name=profile path=Z:\tmp\erri-merged-workbench-final\profile/resourceDatabase.rdb) +13:28:20.108 RESOURCES : ResourceDB: loading cache (id=10 name=logs path=Z:\tmp\erri-merged-workbench-final\logs\logs_2026-09-20_13-28-18/resourceDatabase.rdb) +13:28:20.282 RESOURCES : RESOURCES : ResourceDB: full scan +13:28:20.288 RESOURCES : RESOURCES : scanning... +13:28:20.288 RESOURCES : RESOURCES : scanning @"ERR_Core" +13:28:20.304 RESOURCES : RESOURCES : scanning @"WCS_BMP-1" +13:28:20.307 RESOURCES : RESOURCES : scanning @"WCS_SpaceCore" +13:28:20.311 RESOURCES : RESOURCES : scanning @"WCS_Armaments" +13:28:20.315 RESOURCES : RESOURCES : scanning @"RHS_Core" +13:28:20.328 RESOURCES : RESOURCES : scanning @"RHS_Content_02" +13:28:20.332 RESOURCES : RESOURCES : scanning @"RHS_Content_01" +13:28:20.339 RESOURCES : RESOURCES : scanning @"ArmaReforger" +13:28:20.542 RESOURCES : RESOURCES : scanning @"core" +13:28:20.545 RESOURCES : RESOURCES : scanning @"profile" +13:28:20.545 RESOURCES : RESOURCES : scanning @"logs" +13:28:20.546 RESOURCES : RESOURCES : processing meta-files... +13:28:20.610 RESOURCES : RESOURCES : processing files... +13:28:20.611 INIT : Workbench startup +13:28:20.611 INIT : Workbench Init Engine +13:28:20.611 RESOURCES : ResourceDB: full scan +13:28:20.611 RESOURCES : processing files... +13:28:20.611 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +13:28:20.622 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +13:28:20.622 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +13:28:20.622 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +13:28:20.622 RESOURCES : RESOURCES : processing folders... +13:28:20.630 RESOURCES : RESOURCES : creating GUID-item mapping... +13:28:20.645 RESOURCES : RESOURCES : building tree... +13:28:20.700 PROFILING : ResourceDB: full scan took: 417.510400 ms +13:28:20.701 RESOURCES : ResourceDB: saving cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +13:28:20.702 RESOURCES : ResourceDB: written 15688/15688 bytes +13:28:20.702 RESOURCES : ResourceDB: cache successfully saved +13:28:20.702 RESOURCES : ResourceDB: saving cache (id=9 name=profile path=Z:\tmp\erri-merged-workbench-final\profile/resourceDatabase.rdb) +13:28:20.704 RESOURCES : ResourceDB: written 51/51 bytes +13:28:20.704 RESOURCES : ResourceDB: cache successfully saved +13:28:20.704 RESOURCES : ResourceDB: saving cache (id=10 name=logs path=Z:\tmp\erri-merged-workbench-final\logs\logs_2026-09-20_13-28-18/resourceDatabase.rdb) +13:28:20.705 RESOURCES : ResourceDB: written 208/208 bytes +13:28:20.705 RESOURCES : ResourceDB: cache successfully saved +13:28:20.705 ENGINE : GameProject load +13:28:20.705 ENGINE : Loaded addons: +13:28:20.705 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' +13:28:20.705 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' +13:28:20.705 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' +13:28:20.705 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' +13:28:20.705 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' +13:28:20.705 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' +13:28:20.705 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' +13:28:20.705 ENGINE : gproj: 'Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' +13:28:20.705 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +13:28:20.707 ENGINE : GameProject load +13:28:20.707 INIT : GameProject load project data @"Z:/tmp/erri-merged-workbench-final/addons/ERRI_595F2BF2F44836FB/addon.gproj" +13:28:20.707 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +13:28:20.707 INIT : GameProject load project data @"Z:/tmp/erri-merged-workbench-final/addons/ERRI_629B2BA37EFFD577/addon.gproj" +13:28:20.707 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +13:28:20.708 INIT : GameProject load project data @"Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +13:28:20.708 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +13:28:20.708 INIT : GameProject load project data @"Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +13:28:20.708 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +13:28:20.709 ENGINE : Loading custom engine user config '$profile:.save/app1874910_user76561198020202999/settings/ReforgerEngineSettings.conf' +13:28:20.709 ENGINE : No Enfusion settings file loaded. Continuing with defaults +13:28:20.816 RENDER : (OK) Adapter 'AMD Radeon RX 6950 XT (RADV NAVI21)' supports feature level 12_0 +13:28:20.817 RENDER : Basic screen setup: +13:28:20.817 RENDER : Back buffer format : TEXFMT_R8G8B8A8_SRGB (29) +13:28:20.817 RENDER : MSAA : none +13:28:20.831 RENDER : AMD AGS library initialized, version 6.1.0 x DLL 6.1.0 +13:28:20.831 RENDER : Extendeded AMD info for AMD Radeon RX 6950 XT (RADV NAVI21) (primary device) +13:28:20.831 RENDER : * architecture RDNA2, 80 CUs, 40 WGPs (for RDNA), 64 ROPs +13:28:20.831 RENDER : * core clocks 2720 MHz, memory 1124 MHz +13:28:20.831 RENDER : * TFlops 27.9, memory bandwidth (562.0 GB/s) +13:28:20.831 RENDER : AMD AGS correctly initialized +13:28:20.831 RENDER : GPU_ATI (0x1002) (AMD Radeon RX 6950 XT (RADV NAVI21)) with 1 GPU detected, VRAM 16128MB (fast 0MB), shared 64362MB, driver version 99.19.02-230831a-396538C-AMD-Software-Adrenalin-Edition +13:28:20.831 RENDER : Detected output devices: +13:28:20.831 RENDER : * 1 device/s connected to AMD Radeon RX 6950 XT (RADV NAVI21): +13:28:20.831 RENDER : Generic Non-PnP Monitor (\\.\DISPLAY1), 1280x720 (offset 0x0), 30Hz +13:28:20.831 RENDER : Concurrent frames limit 2 +13:28:20.908 RENDER : DX12 device successfully created by AMD AGS library +13:28:20.908 RENDER : * user markers not supported in this version AMD SW +13:28:20.908 RENDER : Graphics device features +13:28:20.908 RENDER : Needed: +13:28:20.908 RENDER : * Highest supported shader model: 6.8 (6.0 needed) +13:28:20.908 RENDER : Optional: +13:28:20.908 RENDER : * Allow tearing (VSYNC) : 1 +13:28:20.908 RENDER : * 16 bits : 1 +13:28:20.908 RENDER : * Resource heap tier : 3 +13:28:20.908 RENDER : * Persistent heaps (DRED) : 1 +13:28:20.908 RENDER : * DRED 1.2 is supported by compiler +13:28:20.927 RENDER : Main RT format setup. +13:28:20.927 RENDER : Main RT format for quality 0 : TEXFMT_R11G11B10_FLOAT (26) +13:28:20.927 RENDER : Main RT format for quality 1 : TEXFMT_R16G16B16A16_FLOAT (10) +13:28:20.929 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=16 +13:28:20.964 PROFILING : Settings changed took: 0.012600 ms +13:28:21.319 AUDIO : Endpoint: Speakers (PulseAudio Output) +13:28:21.319 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +13:28:21.319 AUDIO : Audio client: +13:28:21.319 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +13:28:21.322 RENDER : RENDER : Reload shaders +13:28:21.322 RENDER : Enfusion shader version 13 +13:28:21.322 INIT : INIT : ShaderListReload +13:28:21.322 PROFILING : ShaderListReload took: 0.000400 ms +13:28:21.456 AUDIO : Endpoint: Speakers (PulseAudio Output) +13:28:21.456 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +13:28:21.456 AUDIO : Audio client: +13:28:21.456 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +13:28:21.543 RENDER : Loaded 3752 newer shader binaries +13:28:21.543 PROFILING : Reload shaders took: 221.472400 ms +13:28:21.543 ENGINE : Initializing inputs. +13:28:21.554 NETWORK : Initializing networking. +13:28:21.554 NETWORK : Using new GameRplScheduler. +13:28:21.554 SCRIPT : SCRIPT : Initializing scripts +13:28:21.555 SCRIPT : SCRIPT : ScriptProjectManager init +13:28:23.236 PROFILING : ScriptProjectManager init took: 1681.299900 ms +13:28:23.268 PROFILING : Initializing scripts took: 1713.535100 ms +13:28:23.286 ENGINE : Enfusion engine successfully created. +13:28:23.287 PROFILING : Workbench Init Engine took: 3503.376600 ms +13:28:23.287 INIT : INIT : Workbench Create Game +13:28:23.297 GUI : Using default language (en_us) +13:28:23.297 GUI : Loading 'en_us' localization file. +13:28:23.297 INIT : INIT : Loading StringTable +13:28:23.322 PROFILING : Loading StringTable took: 24.641100 ms +13:28:23.322 SCRIPT : SCRIPT : Compiling GameLib scripts +13:28:23.371 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +13:28:23.371 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +13:28:23.371 PROFILING : Compiling GameLib scripts took: 49.487000 ms +13:28:23.372 SCRIPT : SCRIPT : Compiling Game scripts +13:28:24.531 INIT : Workbench Create Game +13:28:24.531 SCRIPT : Compiling Game scripts +13:28:24.531 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +13:28:24.531 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +13:28:24.834 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:24.845 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +13:28:24.884 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +13:28:25.022 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.032 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +13:28:25.094 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +13:28:25.094 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +13:28:25.095 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +13:28:25.126 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.145 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.145 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.146 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +13:28:25.146 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +13:28:25.173 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.200 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +13:28:25.560 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 436d9397 +13:28:25.568 SCRIPT : Module: Game; loaded 6506x files; 13190x classes; used 39262K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: bb2782cb +13:28:25.614 PROFILING : Compiling Game scripts took: 2242.833700 ms +13:28:25.620 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +13:28:25.667 ENGINE : Game successfully created. +13:28:25.668 PROFILING : Workbench Create Game took: 2381.448400 ms +13:28:25.676 DEFAULT : Using thumbnail cache directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/thumbnails +13:28:26.463 INIT : INIT : Workbench Reload Game +13:28:26.465 ENGINE : Game destroyed. +13:28:26.471 GUI : Using default language (en_us) +13:28:26.471 GUI : Loading 'en_us' localization file. +13:28:26.472 INIT : INIT : Loading StringTable +13:28:26.483 PROFILING : Loading StringTable took: 11.712900 ms +13:28:26.483 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +13:28:26.490 SCRIPT : Unable to register a script command due keyword duplicity: ban +13:28:26.490 SCRIPT : Unable to register a script command due keyword duplicity: kick +13:28:26.490 ENGINE : Game successfully created. +13:28:26.490 ENGINE : Game successfully initialized. +13:28:26.490 PROFILING : Workbench Reload Game took: 26.940200 ms +13:28:27.154 WORLD : WORLD : Entities load '$ERR_Core:Worlds/ERR_Everon.ent' +13:28:28.118 PROFILING : Entities load took: 962.920400 ms +13:28:28.128 WORLD : WORLD : CreateEntities +13:28:28.133 WORLD : WORLD : NotifyBeforeEntitiesCreated +13:28:28.134 PROFILING : NotifyBeforeEntitiesCreated took: 0.002600 ms +13:28:28.134 WORLD : WORLD : Wait for preloading data +13:28:28.134 PROFILING : Wait for preloading data took: 0.003600 ms +13:28:28.241 ENTITY : Create entity @"ENTITY:2" ('Eden', GenericTerrainEntity) at <0.000000 0.000000 0.000000> @"{5AD924374E8C7AF6}Prefabs/World/Game/Eden/GenericTerrain_Eden.et" +13:28:28.241 PROFILING : PROFILING : Terrain load +13:28:29.756 PROFILING : Terrain load took: 1514.198300 ms +13:28:33.411 WORLD : CreateEntities +13:28:33.411 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +13:28:33.412 ENTITY : CreateComponent 'ScriptedRadioComponent' +13:28:33.412 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +13:28:42.352 WORLD : WORLD : NotifyBeforeEntitiesInitialized +13:28:42.353 PROFILING : NotifyBeforeEntitiesInitialized took: 0.005600 ms +13:28:42.760 WORLD : WORLD : NotifyEntitiesInitialized +13:28:42.760 TERRAIN : TERRAIN : Initializing road networks... +13:28:42.762 PROFILING : Initializing road networks... took: 2.143700 ms +13:28:42.763 PROFILING : NotifyEntitiesInitialized took: 2.443800 ms +13:28:42.763 PROFILING : CreateEntities took: 14634.940800 ms +13:28:42.922 PROFILING : * WorldEditor: LoadWorld: 15785.886600 ms +13:28:44.285 TERRAIN : Loading tile map config (worlds/Eden/Eden/tileMap.conf) +13:28:44.285 TERRAIN : Loading minimap config (worlds/Eden/Eden/miniMap.conf) +13:28:44.286 TERRAIN : The default minimap texture ('worlds/Eden/EdenRasterized.edds') not found. Trying 'worlds/Eden/Eden.edds'... +13:28:44.287 TERRAIN : The default minimap texture ('worlds/Eden/Eden.edds') not found. Skipping... +13:28:44.372 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +13:28:44.398 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +13:28:44.421 BACKEND : Attempting online Game Config instead. +13:28:47.179 INIT : INIT : Workbench Reload Game +13:28:47.181 ENGINE : Game destroyed. +13:28:47.186 GUI : Using default language (en_us) +13:28:47.186 GUI : Loading 'en_us' localization file. +13:28:47.186 INIT : INIT : Loading StringTable +13:28:47.208 PROFILING : Loading StringTable took: 21.148400 ms +13:28:47.208 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +13:28:47.216 SCRIPT : Unable to register a script command due keyword duplicity: ban +13:28:47.216 SCRIPT : Unable to register a script command due keyword duplicity: kick +13:28:47.216 ENGINE : Game successfully created. +13:28:47.216 ENGINE : Game successfully initialized. +13:28:47.216 PROFILING : Workbench Reload Game took: 37.636500 ms +13:28:47.218 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +13:28:47.262 PLATFORM : Save data from container 'settings' have been loaded +13:28:47.352 PLATFORM : Save data from container 'sessions' have been loaded +13:28:47.504 DEFAULT : [SaveGameManager] Starting new playthrough nr.0 '' for mission '{B6C516F86302C679}Worlds/ERR_Everon.ent'. +13:28:47.510 WORLD : WORLD : Game::LoadEntities +13:28:47.510 WORLD : WORLD : Initializing world systems @"{1C60D2EDA2B468B8}Configs/Systems/BaseGameModeSystems.conf" +13:28:47.511 NETWORK : Enabled lag compensation, 29 frames with 100 FPS and 280 ms rewind limits. +13:28:47.511 WORLD : WORLD : CreateEntities +13:28:47.511 WORLD : WORLD : CreateEntities +13:28:47.511 WORLD : WORLD : NotifyBeforeEntitiesCreated +13:28:47.517 RESOURCES : Loaded mission headers from 9 addon(s)! +13:28:47.517 PROFILING : NotifyBeforeEntitiesCreated took: 5.733800 ms +13:28:47.517 WORLD : WORLD : Wait for preloading data +13:28:47.517 PROFILING : Wait for preloading data took: 0.000400 ms +13:28:51.396 WORLD : Game::LoadEntities +13:28:51.396 WORLD : CreateEntities +13:28:51.396 WORLD : CreateEntities +13:28:51.396 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +13:28:51.396 ENTITY : CreateComponent 'ScriptedRadioComponent' +13:28:51.396 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +13:28:52.668 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +13:28:52.668 ENTITY : CreateComponent 'Hierarchy' +13:28:52.668 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +13:28:52.668 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +13:28:52.668 ENTITY : CreateComponent 'Hierarchy' +13:28:52.668 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +13:28:52.668 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +13:28:52.668 ENTITY : CreateComponent 'Hierarchy' +13:28:52.668 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +13:28:52.673 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +13:28:52.673 ENTITY : CreateComponent 'Hierarchy' +13:28:52.673 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +13:28:52.673 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +13:28:52.673 ENTITY : CreateComponent 'Hierarchy' +13:28:52.673 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +13:28:52.673 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +13:28:52.673 ENTITY : CreateComponent 'Hierarchy' +13:28:52.673 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +13:28:52.676 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +13:28:52.676 ENTITY : CreateComponent 'Hierarchy' +13:28:52.676 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +13:28:52.676 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +13:28:52.676 ENTITY : CreateComponent 'Hierarchy' +13:28:52.676 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +13:28:52.677 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +13:28:52.677 ENTITY : CreateComponent 'Hierarchy' +13:28:52.677 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +13:28:57.151 WORLD : WORLD : NotifyBeforeEntitiesInitialized +13:28:57.151 PROFILING : NotifyBeforeEntitiesInitialized took: 0.035600 ms +13:28:59.020 WORLD : InitEntities 'world' +13:28:59.020 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +13:28:59.020 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +13:28:59.045 WORLD : InitEntities 'world' +13:28:59.045 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +13:28:59.045 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +13:28:59.046 WORLD : WORLD : NotifyEntitiesInitialized +13:28:59.046 TERRAIN : TERRAIN : Initializing road networks... +13:28:59.048 PROFILING : Initializing road networks... took: 2.263000 ms +13:28:59.048 DEFAULT : DEFAULT : WorldVolumesCollection +13:28:59.101 PROFILING : WorldVolumesCollection took: 52.990200 ms +13:28:59.101 INIT : INIT : SoundWorldInit +13:28:59.115 PROFILING : SoundWorldInit took: 13.780200 ms +13:28:59.115 PROFILING : NotifyEntitiesInitialized took: 69.195000 ms +13:28:59.115 PROFILING : CreateEntities took: 11603.357300 ms +13:28:59.115 PROFILING : CreateEntities took: 11603.512200 ms +13:28:59.116 WORLD : WORLD : Wait for preloading data around camera +13:28:59.116 PROFILING : Wait for preloading data around camera took: 0.000800 ms +13:28:59.116 WORLD : WORLD : EOnActivate +13:28:59.146 PROFILING : EOnActivate took: 29.989300 ms +13:28:59.146 PROFILING : Game::LoadEntities took: 11635.301000 ms +13:28:59.468 DEFAULT : Entered offline game state. +13:29:03.042 SCRIPT : Map load time: 2165ms +13:29:03.043 NETWORK : Player connected: connectionID=2147483646 +13:29:03.043 NETWORK : ### Connecting player: connectionID=2147483646, Name= +13:29:03.043 NETWORK : ### Creating player: PlayerId=1, Name=jakub +13:29:03.048 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +13:29:03.048 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +13:29:03.048 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +13:29:03.048 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +13:29:03.049 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +13:29:03.050 SCRIPT (W): Can't open config file "" +13:29:03.055 WORLD : InitEntities 'world' +13:29:03.055 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +13:29:03.055 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +13:29:03.055 SCRIPT (W): Slot_WeaponInfo Has no Content! +13:29:03.056 SCRIPT (W): Slot_Chat Has no Content! +13:29:03.056 SCRIPT (W): Slot_VON Has no Content! +13:29:03.056 SCRIPT (W): Slot_AvailableActions Has no Content! +13:29:03.056 SCRIPT (W): Slot_Vehicle Has no Content! +13:29:03.056 SCRIPT (W): Slot_GameVersion Has no Content! +13:29:03.056 SCRIPT (W): Slot_Notifications Has no Content! +13:29:03.056 SCRIPT (W): Slot_Hints Has no Content! +13:29:03.065 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +13:29:03.066 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +13:29:03.066 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +13:29:03.066 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +13:29:03.066 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +13:29:03.069 NETWORK : ### Updating player: PlayerId=1, Name=jakub, rplIdentity=0xFFFFFFFE, IdentityId=00000000-0000-0000-0000-000000000000 +13:29:03.069 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +13:29:03.069 NETWORK : Players connecting: 0 +13:29:03.070 NETWORK : Players connected: 1 / 1 +13:29:03.095 DEFAULT : Using autosave directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/autosaves +13:29:03.097 PROFILING : Workbench startup took: 44405.825000 ms +13:29:03.119 WORLD : Frame start +13:29:03.120 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +13:29:03.131 WORLD : UpdateEntities +13:29:03.131 WORLD : Frame +13:29:03.131 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +13:29:03.300 WORLD : UpdateEntities +13:29:03.300 WORLD : PostFrame +13:29:03.300 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +13:29:03.300 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +13:29:03.344 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +13:29:03.344 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +13:29:03.344 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +13:29:03.344 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +13:29:03.491 RENDER : RENDER : ObjectsHeightMap::Build +13:29:03.491 RENDER : RENDER : MeshOccupancyGridManager::GenerateAllForWorld +13:29:03.634 PROFILING : MeshOccupancyGridManager::GenerateAllForWorld took: 143.093100 ms +13:29:03.641 PROFILING : ObjectsHeightMap::Build took: 149.926500 ms +13:29:04.772 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +13:29:04.793 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +13:29:04.793 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +13:29:04.821 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +13:29:04.823 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +13:29:04.867 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +13:29:04.867 WORLD : InitEntities 'world' +13:29:04.868 ENTITY : Init entity @"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +13:29:04.868 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +13:29:04.869 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +13:29:04.870 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +13:29:04.877 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +13:29:04.923 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +13:29:04.923 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +13:29:04.925 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +13:29:04.925 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +13:29:04.928 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +13:29:04.929 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +13:29:04.929 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +13:29:04.931 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +13:29:04.931 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +13:29:04.931 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +13:29:04.931 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +13:29:04.931 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +13:29:04.931 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +13:29:04.932 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +13:29:04.932 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +13:29:04.932 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +13:29:04.932 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +13:29:04.932 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +13:29:04.932 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +13:29:04.932 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:05.727 WORLD : UpdateEntities +13:29:05.727 WORLD : AfterPostSimulate +13:29:05.727 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +13:29:05.792 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:05.792 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:05.792 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:05.792 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:06.044 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.09,63.5227,7499.71> up=0.995636 +13:29:06.044 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.261345 angularSpeed=0.0334652 +13:29:06.045 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +13:29:06.045 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.06,63.6118,7501.98> +13:29:06.045 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.06,63.3118,7501.98> terrainY=63.3155 tireTerrainGap=-0.00367737 +13:29:06.045 SCRIPT : ERR GEAR SUPPORT: center=<7012.06,63.6118,7501.98> radius=0.3 bottom=<7012.06,63.3118,7501.98> fraction=0.438095 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.00362015 +13:29:06.045 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.6,7497.71> +13:29:06.045 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.15,7497.71> terrainY=64.1538 tireTerrainGap=-0.00384521 +13:29:06.046 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.6,7497.71> radius=0.45 bottom=<7009.89,64.15,7497.71> fraction=0.436904 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00387573 +13:29:06.046 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2612,7497.76> +13:29:06.046 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8112,7497.76> terrainY=63.8169 tireTerrainGap=-0.00570297 +13:29:06.046 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2612,7497.76> radius=0.45 bottom=<7014.43,63.8112,7497.76> fraction=0.428611 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00570679 +13:29:06.046 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:06.300 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:06.300 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:06.300 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:06.300 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:06.807 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:06.808 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:06.808 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:07.057 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.11,63.5357,7499.72> up=0.994387 +13:29:07.058 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0956592 angularSpeed=0.06973 +13:29:07.058 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +13:29:07.058 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6185,7501.99> +13:29:07.058 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3186,7501.99> terrainY=63.3133 tireTerrainGap=0.00528717 +13:29:07.058 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6185,7501.99> radius=0.3 bottom=<7012.08,63.3186,7501.99> fraction=0.478992 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00537872 +13:29:07.058 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.94,64.6008,7497.72> +13:29:07.058 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.94,64.1508,7497.72> terrainY=64.147 tireTerrainGap=0.00382996 +13:29:07.059 SCRIPT : ERR GEAR SUPPORT: center=<7009.94,64.6008,7497.72> radius=0.45 bottom=<7009.94,64.1508,7497.72> fraction=0.471973 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00383759 +13:29:07.059 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.48,64.2649,7497.79> +13:29:07.059 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.48,63.8149,7497.79> terrainY=63.8148 tireTerrainGap=0.000133514 +13:29:07.059 SCRIPT : ERR GEAR SUPPORT: center=<7014.48,64.2649,7497.79> radius=0.45 bottom=<7014.48,63.8149,7497.79> fraction=0.455 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=9.91821e-05 +13:29:07.059 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:07.308 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:07.308 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:07.309 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:07.309 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:07.560 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +13:29:07.815 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:07.815 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:07.815 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:08.066 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5308,7499.75> up=0.994279 +13:29:08.066 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0501342 angularSpeed=0.0608202 +13:29:08.066 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +13:29:08.066 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6126,7502.03> +13:29:08.066 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3126,7502.03> terrainY=63.3105 tireTerrainGap=0.00208282 +13:29:08.066 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6126,7502.03> radius=0.3 bottom=<7012.09,63.3126,7502.03> fraction=0.463829 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00204086 +13:29:08.067 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5922,7497.73> +13:29:08.067 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1422,7497.73> terrainY=64.1403 tireTerrainGap=0.00185394 +13:29:08.067 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5922,7497.73> radius=0.45 bottom=<7009.98,64.1422,7497.73> fraction=0.463264 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00192261 +13:29:08.067 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2596,7497.84> +13:29:08.067 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8096,7497.84> terrainY=63.812 tireTerrainGap=-0.00248337 +13:29:08.067 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2596,7497.84> radius=0.45 bottom=<7014.52,63.8096,7497.84> fraction=0.443333 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00246811 +13:29:08.068 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:08.321 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:08.321 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:08.322 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:08.322 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:08.830 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:08.830 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:08.830 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:08.830 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:09.084 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5276,7499.77> up=0.994323 +13:29:09.084 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +13:29:09.084 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +13:29:09.084 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6101,7502.04> +13:29:09.084 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3101,7502.04> terrainY=63.3095 tireTerrainGap=0.000637054 +13:29:09.084 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6101,7502.04> radius=0.3 bottom=<7012.09,63.3101,7502.04> fraction=0.457278 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000602722 +13:29:09.085 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.99,64.5916,7497.74> +13:29:09.085 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.99,64.1416,7497.74> terrainY=64.1387 tireTerrainGap=0.00288391 +13:29:09.085 SCRIPT : ERR GEAR SUPPORT: center=<7009.99,64.5916,7497.74> radius=0.45 bottom=<7009.99,64.1416,7497.74> fraction=0.467751 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.0029068 +13:29:09.085 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.53,64.2594,7497.85> +13:29:09.085 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.53,63.8094,7497.85> terrainY=63.8111 tireTerrainGap=-0.00168228 +13:29:09.085 SCRIPT : ERR GEAR SUPPORT: center=<7014.53,64.2594,7497.85> radius=0.45 bottom=<7014.53,63.8094,7497.85> fraction=0.446667 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00173187 +13:29:09.085 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:09.335 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:09.335 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:09.335 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:09.336 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:09.842 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:09.843 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:09.843 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:09.843 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:10.097 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5276,7499.77> up=0.994323 +13:29:10.097 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +13:29:10.097 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +13:29:10.097 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6101,7502.04> +13:29:10.097 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3101,7502.04> terrainY=63.3095 tireTerrainGap=0.000637054 +13:29:10.098 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6101,7502.04> radius=0.3 bottom=<7012.09,63.3101,7502.04> fraction=0.457278 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000602722 +13:29:10.098 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.99,64.5916,7497.74> +13:29:10.098 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.99,64.1416,7497.74> terrainY=64.1387 tireTerrainGap=0.00288391 +13:29:10.098 SCRIPT : ERR GEAR SUPPORT: center=<7009.99,64.5916,7497.74> radius=0.45 bottom=<7009.99,64.1416,7497.74> fraction=0.467751 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.0029068 +13:29:10.098 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.53,64.2594,7497.85> +13:29:10.098 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.53,63.8094,7497.85> terrainY=63.8111 tireTerrainGap=-0.00168228 +13:29:10.099 SCRIPT : ERR GEAR SUPPORT: center=<7014.53,64.2594,7497.85> radius=0.45 bottom=<7014.53,63.8094,7497.85> fraction=0.446667 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00173187 +13:29:10.099 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:10.351 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:10.352 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:10.352 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +13:29:10.365 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +13:29:10.365 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +13:29:10.366 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +13:29:10.366 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +13:29:10.366 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +13:29:10.366 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +13:29:10.366 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +13:29:11.300 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +13:29:11.337 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.491,7158.5> +13:29:11.522 SCRIPT : ERR SMOKE PASS: new identity may enter prison +13:29:11.522 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +13:29:11.522 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +13:29:11.523 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +13:29:11.523 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +13:29:11.523 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +13:29:11.523 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +13:29:11.523 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +13:29:11.523 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +13:29:11.526 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +13:29:11.526 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +13:29:11.527 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +13:29:11.527 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +13:29:11.529 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +13:29:11.529 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +13:29:11.531 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +13:29:41.579 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +13:29:41.579 ENTITY : Create entity @"ENTITY:4611686018427391335" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +13:29:41.579 ENTITY : CreateComponent 'BaseRadioComponent' +13:29:41.579 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427391335" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +13:29:49.175 SCRIPT : ERR SMOKE PASS: HQ memory automatic startup owns one canonical six-vehicle task +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 0 +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 1 +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 2 +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 3 +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 4 +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.180 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.180 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.180 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.180 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 5 +13:29:49.181 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.181 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.181 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.181 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy includes confirmed native turret gunners +13:29:49.182 SCRIPT : ERR SMOKE PASS: HQ memory automatic nineteen-body convoy respects shared physical budget +13:29:49.182 SCRIPT : ERR SMOKE PASS: HQ memory manual request after automatic startup cannot duplicate the convoy +13:29:49.182 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +13:29:49.182 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory road fixture has native Everon road manager +13:29:49.185 SCRIPT : ERR SMOKE PASS: HQ memory road fixture native query stays within bounded road count +13:29:49.185 SCRIPT : ERR SMOKE PASS: HQ memory arranged detached road snapshots accepted by private memory +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory native road choice is forward, nearby, dry and physically clear +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory chosen intercept lies on an actual native road segment +13:29:49.186 SCRIPT : ERR ROAD FIXTURE: arranged origin=<5896.23,149.499,6644.17> velocity=<2.25769,0,1.97559> chosen=<5941.39,149.611,6683.68> attempts=1 +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory same arranged belief aged46seconds refuses road interception +13:29:49.187 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +13:29:49.187 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +13:29:49.187 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +13:29:51.191 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +13:29:51.191 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +13:29:57.251 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +13:29:57.251 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +13:30:04.870 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +13:30:04.871 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +13:30:12.965 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +13:30:12.966 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +13:30:21.066 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +13:30:29.175 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +13:30:29.176 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +13:30:29.177 SCRIPT : INFO: KILL SUICIDE: jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) from US faction at <6088.5, 211.389, 7158.5> killed himself! +13:30:33.768 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +13:30:33.768 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +13:30:33.768 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +13:31:00.137 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +13:31:00.138 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +13:31:00.138 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +13:31:00.139 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +13:31:00.275 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +13:31:00.277 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +13:31:00.278 SCRIPT (W): Slot_Chat Has no Content! +13:31:00.278 SCRIPT (W): Slot_VON Has no Content! +13:31:00.278 SCRIPT (W): Slot_GameVersion Has no Content! +13:31:00.278 SCRIPT (W): Slot_Notifications Has no Content! +13:31:02.352 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +13:31:02.353 SCRIPT : -- Stack trace -- +13:31:02.353 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +13:31:02.353 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +13:31:02.353 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +13:31:02.353 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +13:31:02.353 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +13:31:02.353 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +13:31:02.353 SCRIPT : ----------------- +13:31:02.353 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +13:31:02.354 SCRIPT : -- Stack trace -- +13:31:02.354 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +13:31:02.354 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +13:31:02.354 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +13:31:02.354 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +13:31:02.354 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +13:31:02.354 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +13:31:02.354 SCRIPT : ----------------- +13:31:02.356 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +13:31:02.356 SCRIPT (W): Slot_Chat Has no Content! +13:31:02.356 SCRIPT (W): Slot_VON Has no Content! +13:31:02.356 SCRIPT (W): Slot_GameVersion Has no Content! +13:31:02.356 SCRIPT (W): Slot_Notifications Has no Content! +13:31:04.244 RESOURCES : Screenshot saved to $logs:err-result.png diff --git a/docs/evidence/native-2026-09-20-merged-mod/err-result.png b/docs/evidence/native-2026-09-20-merged-mod/err-result.png new file mode 100644 index 0000000..48a39ce Binary files /dev/null and b/docs/evidence/native-2026-09-20-merged-mod/err-result.png differ diff --git a/docs/evidence/native-2026-09-20-merged-mod/error.log.txt b/docs/evidence/native-2026-09-20-merged-mod/error.log.txt new file mode 100644 index 0000000..aae48f8 --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/error.log.txt @@ -0,0 +1,138 @@ +--------------------------------------------- +Log Z:\tmp\erri-merged-workbench-final\logs\logs_2026-09-20_13-28-18\error.log started at 2026-09-20 13:28:20 (2026-09-20 11:28:20 UTC) + +13:28:20.611 INIT : Workbench startup +13:28:20.611 INIT : Workbench Init Engine +13:28:20.611 RESOURCES : ResourceDB: full scan +13:28:20.611 RESOURCES : processing files... +13:28:20.611 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +13:28:20.622 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +13:28:20.622 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +13:28:20.622 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +13:28:20.707 ENGINE : GameProject load +13:28:20.707 INIT : GameProject load project data @"Z:/tmp/erri-merged-workbench-final/addons/ERRI_595F2BF2F44836FB/addon.gproj" +13:28:20.707 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +13:28:20.707 INIT : GameProject load project data @"Z:/tmp/erri-merged-workbench-final/addons/ERRI_629B2BA37EFFD577/addon.gproj" +13:28:20.707 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +13:28:20.708 INIT : GameProject load project data @"Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +13:28:20.708 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +13:28:20.708 INIT : GameProject load project data @"Z:/tmp/erri-merged-workbench-final/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +13:28:20.708 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +13:28:24.531 INIT : Workbench Create Game +13:28:24.531 SCRIPT : Compiling Game scripts +13:28:24.531 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +13:28:24.531 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +13:28:24.834 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:24.845 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +13:28:24.884 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +13:28:25.022 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.032 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +13:28:25.094 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +13:28:25.094 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +13:28:25.095 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +13:28:25.126 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.145 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.145 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.146 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +13:28:25.146 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +13:28:25.173 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.200 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +13:28:33.411 WORLD : CreateEntities +13:28:33.411 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +13:28:33.412 ENTITY : CreateComponent 'ScriptedRadioComponent' +13:28:33.412 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +13:28:47.218 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +13:28:51.396 WORLD : Game::LoadEntities +13:28:51.396 WORLD : CreateEntities +13:28:51.396 WORLD : CreateEntities +13:28:51.396 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +13:28:51.396 ENTITY : CreateComponent 'ScriptedRadioComponent' +13:28:51.396 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +13:28:52.668 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +13:28:52.668 ENTITY : CreateComponent 'Hierarchy' +13:28:52.668 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +13:28:52.668 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +13:28:52.668 ENTITY : CreateComponent 'Hierarchy' +13:28:52.668 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +13:28:52.668 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +13:28:52.668 ENTITY : CreateComponent 'Hierarchy' +13:28:52.668 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +13:28:52.673 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +13:28:52.673 ENTITY : CreateComponent 'Hierarchy' +13:28:52.673 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +13:28:52.673 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +13:28:52.673 ENTITY : CreateComponent 'Hierarchy' +13:28:52.673 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +13:28:52.673 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +13:28:52.673 ENTITY : CreateComponent 'Hierarchy' +13:28:52.673 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +13:28:52.676 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +13:28:52.676 ENTITY : CreateComponent 'Hierarchy' +13:28:52.676 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +13:28:52.676 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +13:28:52.676 ENTITY : CreateComponent 'Hierarchy' +13:28:52.676 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +13:28:52.677 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +13:28:52.677 ENTITY : CreateComponent 'Hierarchy' +13:28:52.677 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +13:28:59.020 WORLD : InitEntities 'world' +13:28:59.020 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +13:28:59.020 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +13:29:03.048 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +13:29:03.048 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +13:29:03.048 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +13:29:03.048 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +13:29:03.049 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +13:29:03.050 SCRIPT (W): Can't open config file "" +13:29:03.055 WORLD : InitEntities 'world' +13:29:03.055 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +13:29:03.055 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +13:29:03.055 SCRIPT (W): Slot_WeaponInfo Has no Content! +13:29:03.056 SCRIPT (W): Slot_Chat Has no Content! +13:29:03.056 SCRIPT (W): Slot_VON Has no Content! +13:29:03.056 SCRIPT (W): Slot_AvailableActions Has no Content! +13:29:03.056 SCRIPT (W): Slot_Vehicle Has no Content! +13:29:03.056 SCRIPT (W): Slot_GameVersion Has no Content! +13:29:03.056 SCRIPT (W): Slot_Notifications Has no Content! +13:29:03.056 SCRIPT (W): Slot_Hints Has no Content! +13:29:03.065 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +13:29:03.066 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +13:29:03.066 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +13:29:03.066 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +13:29:03.066 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +13:29:03.069 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +13:29:03.300 WORLD : UpdateEntities +13:29:03.300 WORLD : PostFrame +13:29:03.300 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +13:29:03.300 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +13:29:03.344 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +13:29:03.344 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +13:29:03.344 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +13:29:03.344 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +13:29:04.867 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +13:29:04.867 WORLD : InitEntities 'world' +13:29:04.868 ENTITY : Init entity @"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +13:29:04.868 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +13:29:05.727 WORLD : UpdateEntities +13:29:05.727 WORLD : AfterPostSimulate +13:29:05.727 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +13:29:41.579 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +13:29:41.579 ENTITY : Create entity @"ENTITY:4611686018427391335" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +13:29:41.579 ENTITY : CreateComponent 'BaseRadioComponent' +13:29:41.579 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427391335" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +13:31:00.277 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +13:31:00.278 SCRIPT (W): Slot_Chat Has no Content! +13:31:00.278 SCRIPT (W): Slot_VON Has no Content! +13:31:00.278 SCRIPT (W): Slot_GameVersion Has no Content! +13:31:00.278 SCRIPT (W): Slot_Notifications Has no Content! +13:31:02.352 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +13:31:02.353 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +13:31:02.356 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +13:31:02.356 SCRIPT (W): Slot_Chat Has no Content! +13:31:02.356 SCRIPT (W): Slot_VON Has no Content! +13:31:02.356 SCRIPT (W): Slot_GameVersion Has no Content! +13:31:02.356 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-merged-mod/external-addons-inputs.json.txt b/docs/evidence/native-2026-09-20-merged-mod/external-addons-inputs.json.txt new file mode 100644 index 0000000..f2f3ae2 --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/external-addons-inputs.json.txt @@ -0,0 +1,744 @@ +{ + "1337C0DE5DABBEEF": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF", + "title": "RHS: Status Quo - Content Pack 01", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 916830, + 209, + 1789670354123815627, + 1789670354123815627 + ], + "sha256": "c5d88d82138bc80c95f364075c3a0fc2228f9c15c6230398f3728a13d25b418c" + }, + "addon.gproj": { + "stat": [ + 46, + 26917910, + 335, + 1789670330884205142, + 1789670353823807747 + ], + "sha256": "65197c50ff6e906a5732564e8b440d80ef1cdbcffead9eb388e1e2b56c1322bc" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917892, + 362, + 1789670307618593786, + 1789670307618593786 + ], + "sha256": "17b87e0976ac2da1032f1661a884f6d59b56c00823b2fcfdc2a698ea8bcc92cc" + }, + "data.pak": { + "stat": [ + 46, + 26917928, + 1992582478, + 1789670344310557863, + 1789670353824807774 + ], + "sha256": "e5db31f571782997640a67601ebd3bd6e6615c1548274c71b6ab0cdd794f8bf5" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917893, + 232459, + 1789670307954602617, + 1789670307954602617 + ], + "sha256": "855813254cd72dc87515f4c395e7c7defe4b145ac809a740f81c85ca546b36fe" + }, + "data001.pak": { + "stat": [ + 46, + 26917986, + 1993657251, + 1789670345496589019, + 1789670354029813158 + ], + "sha256": "2bda9c533834dfa2b8e29f4a2a905c30639dabe250554e1346cf1f5dae3f2db3" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917900, + 349870, + 1789670308754623642, + 1789670308754623642 + ], + "sha256": "d4ec79f2a5cf03dd44bcc4513199056195dfda3c7a5c6bbfd17b2c709b746cdc" + }, + "data002.pak": { + "stat": [ + 46, + 26917956, + 1992567795, + 1789670345532589964, + 1789670353970811608 + ], + "sha256": "dfbd716c2a0849910a8058b1f008b8403b8c506fe18c3168d2844383ac02988c" + }, + "data002.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917897, + 332016, + 1789670308247610318, + 1789670308247610318 + ], + "sha256": "3de05138d1d635f1ba5bcbd74a0f91028bfd59082f45c740051381bd054404b5" + }, + "data003.pak": { + "stat": [ + 46, + 26917964, + 364877149, + 1789670333444272402, + 1789670354017812842 + ], + "sha256": "6225936ebc266825bbd1c79e4e0020c9f2fb55c3d3501ed66e72d87436ccd015" + }, + "data003.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917898, + 96448, + 1789670308423614944, + 1789670308423614944 + ], + "sha256": "8ca2504191def96715ddd6ee98a8df1e3f0951e5755592801eab662657289dd0" + }, + "meta": { + "stat": [ + 46, + 911092, + 8188, + 1789670354121815574, + 1789670354121815574 + ], + "sha256": "cb4f4296d087ea5fe2e849b0fc960748bfede7ea3071eeb545bd7bd309be6bfb" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26917967, + 566987, + 1789670331096210712, + 1789670354028813131 + ], + "sha256": "e8706d6b9bb2474b65f7c588de9fcfad4516bd26dc12e7b6b687e7973a41e7a6" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917899, + 368, + 1789670308546618176, + 1789670308546618176 + ], + "sha256": "336f9160ad955caa88d286915195699d3ac36f3363391967a178be0fd2ccd914" + }, + "thumbnail.png": { + "stat": [ + 46, + 26917907, + 18180, + 1789670330627887201, + 1789670353823807747 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917891, + 366, + 1789670307490590423, + 1789670307490590423 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "595F2BF2F44836FB": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB", + "title": "RHS: Status Quo", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 910012, + 2789, + 1789670389999757705, + 1789670389999757705 + ], + "sha256": "0432a068d8d77e34afd10432d1459df1334238e1ec416c896f13b84bae5a3ac5" + }, + "addon.gproj": { + "stat": [ + 46, + 26919135, + 1100, + 1789670379744488450, + 1789670389873754397 + ], + "sha256": "1b83e9df126db639cfcdb6d5119e65a1581c028becd6c09998143ed527ad0721" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919120, + 364, + 1789670378419453659, + 1789670378419453659 + ], + "sha256": "d232c4cfc959267482bbf261eb2e5121c76b6bf7d8893c58c520a763df5ca5f8" + }, + "data.pak": { + "stat": [ + 46, + 26919141, + 203378761, + 1789670389138735100, + 1789670389946756313 + ], + "sha256": "985d0cde7b09ee860086cb386cf624fcfd94b5e82b26af0b33bab83f21d06988" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919122, + 1409173, + 1789670378781463164, + 1789670378781463164 + ], + "sha256": "041c8ebdf035c69aed7c04bb55be839fbdbd7bc8501862dd4939c1d71cdfe8c5" + }, + "meta": { + "stat": [ + 46, + 902077, + 12209, + 1789670389989757443, + 1789670389989757443 + ], + "sha256": "1b62c97002078af393f23508c3b03cfe22f590130345ac44926b06940f27f269" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919132, + 823768, + 1789670379822490498, + 1789670389872754371 + ], + "sha256": "25f6405084fd228ff400868b21f033c4c43d44162ce73de562e06d8003b94a49" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919119, + 368, + 1789670378283450088, + 1789670378283450088 + ], + "sha256": "986f0280a79b0e4ff6d9a3ad60570bebd86ce68869c9f3d5954141f7d5060cb1" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919138, + 18180, + 1789670379618193709, + 1789670389873754397 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919121, + 366, + 1789670378550457099, + 1789670378550457099 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "5E389BB9F58B79A6": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6", + "title": "WCS_SpaceCore", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 919166, + 197, + 1789670369327462097, + 1789670369327462097 + ], + "sha256": "4bcd7610056ed1d366e9b6d0600e80c622a1af35caecf5c9ecf2c7b9e2b626f7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918585, + 2957, + 1789670367793432952, + 1789670369299906650 + ], + "sha256": "2db2e318e6f45bede0d1173d77af03314f888aedfb31bc767d569ccfb6e70a34" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918576, + 364, + 1789670367178158473, + 1789670367178158473 + ], + "sha256": "67d15a8e8623130546332c6d6433314cbdf38e034a66330b9c7a739a94731e21" + }, + "data.pak": { + "stat": [ + 46, + 26918592, + 43626712, + 1789670369105209079, + 1789670369315214594 + ], + "sha256": "80e9810c9b7c873187660d0ddf002a63d1a382e81fc3611baa0ae8fdfff29d3d" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918578, + 66352, + 1789670367560168505, + 1789670367560168505 + ], + "sha256": "6635291a1f1aa9cffdb844e241c36cdc04114574279bab66e21613410f5e5686" + }, + "meta": { + "stat": [ + 46, + 918678, + 2338, + 1789670369325214856, + 1789670369325214856 + ], + "sha256": "dd1c683c086efb292e6cc927bd6522a1ea97ebd454e8148356f66554ebcdd4dc" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918588, + 44111, + 1789670367937178405, + 1789670369300214199 + ], + "sha256": "c4293fef30948a3538751533cc52c9ce449ffada931b47a8fdf1ca48c1618e75" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918577, + 366, + 1789670367326162360, + 1789670367326162360 + ], + "sha256": "df8cd07ff81263e4108688883b9f20568041f067dbad74402464ec2f88432b69" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918582, + 689401, + 1789670367794174651, + 1789670369299906650 + ], + "sha256": "8da2e133303f21bb16a2abd25d5bd6c2a4a6f5eccedae74a98358db485a170d1" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918574, + 368, + 1789670367051155138, + 1789670367051155138 + ], + "sha256": "5aaa5989b5f44b48ff03082a0d4004ae71420db6eebeb56282af7d98f36c7000" + } + } + }, + "5E524E4FEECCA92B": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B", + "title": "WCS_BMP-1", + "version": "8.2.0", + "files": { + "ServerData.json": { + "stat": [ + 46, + 918673, + 193, + 1789670366131482045, + 1789670366131482045 + ], + "sha256": "92ff4ae6fec8afc679726186f424bb31c9918d182f321afca4696654844e39c7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918544, + 2900, + 1789670364825147789, + 1789670366119130662 + ], + "sha256": "ad44151140adf62e99eaa639984c2b9c400be17481e934186d61c307b5221259" + }, + "addon.gproj_8.2.0_manifest.json": { + "stat": [ + 46, + 26918530, + 364, + 1789670364263081920, + 1789670364263081920 + ], + "sha256": "3065c7c353cb7623ee85f83d462d4dac37c92efad1a0255f2661470e6cedfd0f" + }, + "data.pak": { + "stat": [ + 46, + 26918541, + 119808197, + 1789670365649118318, + 1789670366115130557 + ], + "sha256": "f715ad5fa3de788061a66a3ccd933feead5cc1631507ca63e9061049c538fab6" + }, + "data.pak_8.2.0_manifest.json": { + "stat": [ + 46, + 26918528, + 25795, + 1789670364132078479, + 1789670364132078479 + ], + "sha256": "24a7f735e55ccfacc5cdacbb39fb76a6fac294f4cdc47dca0fcb6e3f1919f1e6" + }, + "gallery0_776x436.jpg": { + "stat": [ + 46, + 23106914, + 64588, + 1788720671481676966, + 1788720671481676966 + ], + "sha256": "63649f5239059dd12234250b8c8e313b14ca134e30e4309fbd1eb45f92e77097" + }, + "gallery1_776x436.jpg": { + "stat": [ + 46, + 23106915, + 47808, + 1788720671495639547, + 1788720671495639547 + ], + "sha256": "81f89b026a1bf341f8cd3bb19facd67e8d0f56073c924e026983836fee6bfb4c" + }, + "meta": { + "stat": [ + 46, + 918496, + 2928, + 1789670366129130924, + 1789670366129130924 + ], + "sha256": "ad0f9baa154a250712c94b50c5edcb25200002bdc186d35453b5e8c32c0b6ee5" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918535, + 16514, + 1789670364934099542, + 1789670366080129638 + ], + "sha256": "c65677e8767d92c96c6f35b482350d56e3dccfa026a3c5470b332120990f047c" + }, + "resourceDatabase.rdb_8.2.0_manifest.json": { + "stat": [ + 46, + 26918527, + 366, + 1789670364004075117, + 1789670364004075117 + ], + "sha256": "fdc44be4e1523db5965b015a7ea511623399a5fb3548aaaf8b2a4807fc6ade7d" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918547, + 708338, + 1789670364826600016, + 1789670366119130662 + ], + "sha256": "103a98bf476d510ab3081abb371170ae6cf65aea65b9095636d651170a5b0038" + }, + "thumbnail.png_8.2.0_manifest.json": { + "stat": [ + 46, + 26918531, + 368, + 1789670364388085202, + 1789670364388085202 + ], + "sha256": "5bf1e0f8794a4e2e862658a10071360df63ed6a440ee2ca5514afbc2e97e375e" + } + } + }, + "629B2BA37EFFD577": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577", + "title": "WCS_Armaments", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 920134, + 197, + 1789670377639162612, + 1789670377639162612 + ], + "sha256": "8e5e6b2fe4099ca90bb4498c9479924e775ca0eac411c8230114143ff1a8297a" + }, + "addon.gproj": { + "stat": [ + 46, + 26918715, + 2926, + 1789670371305266851, + 1789670377499241577 + ], + "sha256": "e6ffcf559a2e7898848349c090300ea8eca8cb2e13ecef456a108bcc82efc8b1" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918707, + 364, + 1789670369590221815, + 1789670369590221815 + ], + "sha256": "ba8f2b36575408f11b2107fc4b0f9449c9dc057629ebf894c7bdbc77f53cbc1f" + }, + "data.pak": { + "stat": [ + 46, + 26918730, + 395962643, + 1789670376182394919, + 1789670377620432679 + ], + "sha256": "84a2cf01e2d17a06f8d775ca542a0cc98739f9f4b75b79826017e1387faedb18" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918711, + 214221, + 1789670370007232766, + 1789670370007232766 + ], + "sha256": "dc3ff832bce708121c61a5dfe09be8504352556c50341f9878f4b457e165ade2" + }, + "meta": { + "stat": [ + 46, + 919170, + 2504, + 1789670377637433125, + 1789670377637433125 + ], + "sha256": "2863bb2bdb586286f8aedc34d5dfb6adbdaafd5fca0f8f21136c7a5351d1ce88" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918718, + 141469, + 1789670371389269057, + 1789670377499429501 + ], + "sha256": "7f38b7ed578b0b47864648a7b70288fe49dae4cc2556d5754377a1c28b2b6532" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918708, + 368, + 1789670369714225072, + 1789670369714225072 + ], + "sha256": "2ffa1cf6f8c07600147ae779ee3be1ccec8da23cb1c10d8c73e0c5c5d3dc6d06" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918721, + 689544, + 1789670371307273812, + 1789670377500429528 + ], + "sha256": "ccd771dba7f3f222e9733e688e6dd9e4c5edae2accdd80a6876241094e23f3dd" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918710, + 368, + 1789670369835228249, + 1789670369835228249 + ], + "sha256": "e58ef73e4a794e56ecd04bfd84940ec539e5ca481d6b69ffb20f9fedcd3c2e77" + } + } + }, + "BADC0DEDABBEDA5E": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E", + "title": "RHS: Status Quo - Content Pack 02", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 911088, + 209, + 1789670428409812415, + 1789670428409812415 + ], + "sha256": "90353d1b4ab072f7844bf24d8066031efd69feb76ddcbf66dea34b52ddfe0a1c" + }, + "addon.gproj": { + "stat": [ + 46, + 26919414, + 336, + 1789670399470006320, + 1789670428369764835 + ], + "sha256": "6ebd73d663ed6dbf981cd8bc7d19cfd5bcd3c9dec3b9a706fa331d992ef200b4" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919383, + 362, + 1789670390797778656, + 1789670390797778656 + ], + "sha256": "72d988d5881efdf7d8781b2dc978a0243e1a3d587ced56563299855724137232" + }, + "data.pak": { + "stat": [ + 46, + 26919411, + 1992445813, + 1789670421137575039, + 1789670428335763943 + ], + "sha256": "5b28362571e396c008eb2286dc5a76b4ccf869c0a279916209fb0ef20d6b145e" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919381, + 170934, + 1789670390675775453, + 1789670390675775453 + ], + "sha256": "7cde302270a1e5c3a88517ff8b08a5b50bbe63e7392434d8245542f81b0bfdf8" + }, + "data001.pak": { + "stat": [ + 46, + 26919421, + 238642257, + 1789670400589035695, + 1789670428370764861 + ], + "sha256": "fb2aecbde5668c4d431ea74d64f6d15f7a9f608fefe01838d7c85fb0c818499f" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919384, + 29970, + 1789670390937782332, + 1789670390937782332 + ], + "sha256": "e6fb290c2f9d8dcd0c0ac95c3dee054377a525e00129abc766defa079385d6ea" + }, + "meta": { + "stat": [ + 46, + 910016, + 7720, + 1789670428407765832, + 1789670428407765832 + ], + "sha256": "e9ba58307cb931026c5c59654f3b4b7f92ac6e0682a1e94fd2eb1d5b75c214cf" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919388, + 111601, + 1789670399484558966, + 1789670428260761974 + ], + "sha256": "736bcd2e60177e5af99d93c6b5f07ad79a950899aaca23000f33ad405cd1b74e" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919379, + 368, + 1789670390384767813, + 1789670390384767813 + ], + "sha256": "9a4f54837a83d2acc2bdc62288b62fe7f24876a374f1270d5a5d2a497bb5de8f" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919391, + 18180, + 1789670398997629625, + 1789670428260761974 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919380, + 366, + 1789670390509771095, + 1789670390509771095 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + } +} diff --git a/docs/evidence/native-2026-09-20-merged-mod/headless-launch.log.txt b/docs/evidence/native-2026-09-20-merged-mod/headless-launch.log.txt new file mode 100644 index 0000000..d18ad7c --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/headless-launch.log.txt @@ -0,0 +1,151 @@ +[gamescope] [Info] console: gamescope version 3.16.29 (gcc 16.2.1) +No CAP_SYS_NICE, falling back to regular-priority compute and threads. +Performance will be affected. +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts' +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts/00-gamescope' +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts/00-gamescope/common' +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/common/inspect.lua' (id: 0) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/common/modegen.lua' (id: 1) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/common/util.lua' (id: 2) +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts/00-gamescope/displays' +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/asus.rogally.lcd.lua' (id: 3) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/deckhd.steamdeck.deckhd-lcd.lua' (id: 4) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/gpd.win4.lcd.lua' (id: 5) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/lenovo.legiongo.lcd.lua' (id: 6) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/lenovo.legiongo2.oled.lua' (id: 7) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua' (id: 8) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/onexplayer.f1.oled.lua' (id: 9) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.lcd.lua' (id: 10) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.oled.lua' (id: 11) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/zotac.zone.oled.lua' (id: 12) +[gamescope] [Info] scriptmgr: Loading scripts from: '/etc/gamescope/scripts' +[gamescope] [Warn] scriptmgr: Directory '/etc/gamescope/scripts' does not exist +[gamescope] [Info] scriptmgr: Loading scripts from: '/home/jakub/.config/gamescope/scripts' +[gamescope] [Warn] scriptmgr: Directory '/home/jakub/.config/gamescope/scripts' does not exist +[gamescope] [Info] vulkan: selecting physical device 'AMD Radeon RX 6950 XT (RADV NAVI21)': queue family 1 (general queue family 0) +[gamescope] [Info] vulkan: physical device supports DRM format modifiers +[gamescope] [Info] wlserver: [backend/headless/backend.c:60] Creating headless backend +[gamescope] [Info] vulkan: supported DRM formats for sampling usage: +[gamescope] [Info] vulkan: AR24 (0x34325241) +[gamescope] [Info] vulkan: XR24 (0x34325258) +[gamescope] [Info] vulkan: AB24 (0x34324241) +[gamescope] [Info] vulkan: XB24 (0x34324258) +[gamescope] [Info] vulkan: RG16 (0x36314752) +[gamescope] [Info] vulkan: NV12 (0x3231564E) +[gamescope] [Info] vulkan: AB4H (0x48344241) +[gamescope] [Info] vulkan: XB4H (0x48344258) +[gamescope] [Info] vulkan: AB48 (0x38344241) +[gamescope] [Info] vulkan: XB48 (0x38344258) +[gamescope] [Info] vulkan: AB30 (0x30334241) +[gamescope] [Info] vulkan: XB30 (0x30334258) +[gamescope] [Info] vulkan: AR30 (0x30335241) +[gamescope] [Info] vulkan: XR30 (0x30335258) +[gamescope] [Info] wlserver: Using explicit sync when available +[gamescope] [Info] wlserver: Running compositor on wayland display 'gamescope-0' +[gamescope] [Info] wlserver: [backend/headless/backend.c:17] Starting headless backend +[gamescope] [Info] wlserver: Successfully initialized libei for input emulation! +[gamescope] [Error] wlserver: [xwayland/sockets.c:47] Failed to bind socket @/tmp/.X11-unix/X0: Address already in use +[gamescope] [Info] wlserver: [xwayland/server.c:108] Starting Xwayland on :2 +The XKEYBOARD keymap compiler (xkbcomp) reports: +> Warning: Multiple symbols for level 1/group 1 on key +> Using F23, ignoring XF86TouchpadOff +> Warning: Symbol map for key redefined +> Using last definition for conflicting fields +> Warning: Symbol map for key redefined +> Using last definition for conflicting fields +> Warning: Could not resolve keysym XF86ElectronicPrivacyScreenOn +> Warning: Could not resolve keysym XF86ElectronicPrivacyScreenOff +> Warning: Could not resolve keysym XF86ActionOnSelection +> Warning: Could not resolve keysym XF86ContextualInsert +> Warning: Could not resolve keysym XF86ContextualQuery +Errors from xkbcomp are not fatal to the X server +[gamescope] [Info] pipewire: stream state changed: connecting +[gamescope] [Info] pipewire: stream state changed: paused +[gamescope] [Info] pipewire: stream available on node ID: 133 +[gamescope] [Info] vblank: Using timerfd. +fsync: up and running. +[Gamescope WSI] No application info given. +[Gamescope WSI] Executable name: explorer.exe +The XKEYBOARD keymap compiler (xkbcomp) reports: +> Warning: Unsupported maximum keycode 709, clipping. +> X11 cannot support keycodes above 255. +> Warning: Virtual modifier Hyper multiply defined +> Using 0, ignoring 0 +> Warning: Virtual modifier ScrollLock multiply defined +> Using 0, ignoring 0 +Errors from xkbcomp are not fatal to the X server +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: xalia.exe + applicationVersion: 0 + pEngineName: DXVK + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Executable name: xalia.exe +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] No application info given. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 1 + pEngineName: DXVK + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Executable name: ArmaReforgerWorkbenchSteamDiag.exe +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] No application info given. +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 0 + pEngineName: DXVK + engineVersion: 12587008 + apiVersion: 4206592 +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 0 + pEngineName: vkd3d + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1. +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] No application info given. +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 0 + pEngineName: vkd3d + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1. +[Gamescope WSI] Creating Gamescope surface: xid: 0x1a001a4 +[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL. +[Gamescope WSI] Made gamescope surface for xid: 0x1a001a4 +[Gamescope WSI] Surface state: + steam app id: 1874910 + window xid: 0x1a001a4 + wayland surface res id: 6 + layer client flags: 0x4 + server hdr output enabled: false + hdr formats exposed to client: false +[Gamescope WSI] Creating Gamescope surface: xid: 0x1a003a4 +[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL. +[Gamescope WSI] Made gamescope surface for xid: 0x1a003a4 +[Gamescope WSI] Surface state: + steam app id: 1874910 + window xid: 0x1a003a4 + wayland surface res id: 13 + layer client flags: 0x4 + server hdr output enabled: false + hdr formats exposed to client: false +[Gamescope WSI] Creating swapchain for xid: 0x1a003a4 - oldSwapchain: (nil) - provided minImageCount: 3 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false +[Gamescope WSI] Created swapchain for xid: 0x1a003a4 swapchain: 0x55555a55a010 - imageCount: 4 +[Gamescope WSI] Destroying swapchain: 0x55555a55a010 +[Gamescope WSI] Destroyed swapchain: 0x55555a55a010 +[Gamescope WSI] Creating swapchain for xid: 0x1a003a4 - oldSwapchain: (nil) - provided minImageCount: 3 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false +[Gamescope WSI] Created swapchain for xid: 0x1a003a4 swapchain: 0x55555a55a010 - imageCount: 4 +[Gamescope WSI] Destroying swapchain: 0x55555a55a010 +[Gamescope WSI] Destroyed swapchain: 0x55555a55a010 +[Gamescope WSI] Creating swapchain for xid: 0x1a003a4 - oldSwapchain: (nil) - provided minImageCount: 3 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false +[Gamescope WSI] Created swapchain for xid: 0x1a003a4 swapchain: 0x55555a582ac0 - imageCount: 4 +[gamescope] [Info] launch: Primary child shut down! diff --git a/docs/evidence/native-2026-09-20-merged-mod/launch-source-sha256.json b/docs/evidence/native-2026-09-20-merged-mod/launch-source-sha256.json new file mode 100644 index 0000000..ec2408c --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/launch-source-sha256.json @@ -0,0 +1,259 @@ +{ + "addons/core/Configs/ERR/AdminMenus.conf": "a7f889f260e43656136fc159342129e5f48748d28c426f65f9faac37b624cf94", + "addons/core/Configs/ERR/AdminMenus.conf.meta": "5faf5ddc0a51c1d0f82d60af00d91edc22fe9c39aac50d8d04b772a2c9271be1", + "addons/core/Configs/ERR/EveronSites.conf": "3e04698421ce989c996097ecf24214e7d926d2998918d60573aa403c4012b079", + "addons/core/Configs/ERR/EveronSites.conf.meta": "d5fe68025ef4e7c1e16082cf5873b7c7172eacbfaef4ab29b7e0e3c98f8dca56", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf": "5f74f4a7089c7e7b54ad62463159ce8f0bab25a6b85268dc3872ea6001e048fb", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf.meta": "00c368b6271d3440cc8bf627b03a384d247635723923fc5ad2104b8b4007b035", + "addons/core/Configs/ERR/Factions/US.conf": "4c3da063abb6e3ee39a6e4e0c5a9ffd5eae9d209d58470ea18b45dba5528db1b", + "addons/core/Configs/ERR/Factions/US.conf.meta": "a05469aef028e9e17eba545e81e2af2887b59f0fef17dac51a23c7b8155e381b", + "addons/core/Configs/ERR/Factions/USSR.conf": "407ea27f80a64c5184c089d43cdd0bdabfc5974c84f1d2a245081fdf2afa3f30", + "addons/core/Configs/ERR/Factions/USSR.conf.meta": "057397d97096346791b51b7b13fbe18af218bcf78e9984d9c01b49a2403de611", + "addons/core/Configs/ERR/GameOverScreens.conf": "45231061911a1462d45fb6db0fecc2b0793f17b5ae71017174954ff4fbd20236", + "addons/core/Configs/ERR/GameOverScreens.conf.meta": "eb654b745c0b97b41c991694569ef4877a3c2315e0826f9556337cd68690843e", + "addons/core/Configs/ERR/VanillaFactions.conf": "db890b61b48ee15484041fd2245a862d9fa9e7ba21b1229c281ff37c448a35b1", + "addons/core/Configs/ERR/VanillaFactions.conf.meta": "ac77725c0c21974991ef47a466b88122e939de8b46fd23e68889e7674cbb2bfd", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Missions/ERR_Everon_Base.conf": "c035afca636653b7751c49f85620edac23f7217fd135b98f8f891192f66c967a", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "addons/core/Prefabs/ERR/ConvoyCrew.et": "434d9bef9a9fcf0376604a9fbd547204cc544f5ed1a5b75228245151f02323ab", + "addons/core/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/core/Prefabs/ERR/Extraction.et": "1aa286ef253c5410f09fa641e4be91a7be8ec834487a7fbb74cfb45cab60ee1e", + "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", + "addons/core/Prefabs/ERR/FactionManager.et": "425f916b890019c537f6b2f72b1af9e7be54b0a476320da969e1f313a7ac5ea5", + "addons/core/Prefabs/ERR/FactionManager.et.meta": "9bf53d5e4bcbe60dd1a4ece1409fc23c349055c860708620f5f6e9716290a97d", + "addons/core/Prefabs/ERR/FieldCover.et": "20f8095e69dbfe3db74ff19078e528ea75405362b335e03560ccd61f8df2e7f3", + "addons/core/Prefabs/ERR/FieldCover.et.meta": "83461ffa76244e1d69f20b053a9741ccdf7d127009182bd540a7e5ba6150c3d9", + "addons/core/Prefabs/ERR/GameMode.et": "385c97a5b8067091d92aa60c2d4fcf02002cf606b95523866ead65c96b8c0029", + "addons/core/Prefabs/ERR/GameMode.et.meta": "106769cd34525c9d440057072836cb7401a6752148c40edd7fe61c03bd58328c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et": "a6e4ddb7f583c3bf82b5583d890bfbbd559e6b0e7176d36ba0ab3a0a2879915c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et.meta": "da6f065cb2414b5a4cbe9ef0f0b1295b2466f26ad406c0bddb83845d4598efb3", + "addons/core/Prefabs/ERR/MortarCrew.et": "05d3e7353ff9fe5523218a1487b31b7b742b0be8adbcb060c7099978cf008bce", + "addons/core/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/core/Prefabs/ERR/ObjectiveDocument.et": "2e72270bf186654af12d2c3ff9bf940690b03fb17fca44f873c1fde5d11384c0", + "addons/core/Prefabs/ERR/ObjectiveDocument.et.meta": "eaba9903be147b98a1106e2273e2270773df73b9b22f2cd4e20136a8e281382e", + "addons/core/Prefabs/ERR/Patrol.et": "c5685a8bc311cc5563fb3334beec9408d3d7a1069152fddeeb7df4f1b7f9e6ce", + "addons/core/Prefabs/ERR/Patrol.et.meta": "7c5da568fa2fcf0709ee2959253cb068d7c7ed7c2467af3b247a7e70efd96b69", + "addons/core/Prefabs/ERR/Prison.et": "dcd3f4dfd453303d026e68b64f7de6125bd3390822d8432dd95a3710a5b3df89", + "addons/core/Prefabs/ERR/Prison.et.meta": "2e426ef3de68f4107907854b51e818bc11d84649a01c538e3f18dd9ebec766bb", + "addons/core/Prefabs/ERR/PrisonDoor.et": "fc66be9d36f1f01084de59f1b0a1e8817f9e46547ead33d4fafaac0107446c40", + "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", + "addons/core/Prefabs/ERR/PrisonWall.et": "8009d19365ae72a4749d7ad4fa04662575b06c65c6bf06507d380d57258b5eed", + "addons/core/Prefabs/ERR/PrisonWall.et.meta": "0294bc5dbb56f90f8153d62459bb0a6ad91d76a479812bbec9c7db182fdb58d6", + "addons/core/Prefabs/ERR/Prisoner.et": "198b5badabb12f218f86df7eb4dc268fd830769dc3de7eef6362cfaee4d6fc8d", + "addons/core/Prefabs/ERR/Prisoner.et.meta": "974278ba49fafeed70b619a0067bbc70ae4d534be441c812ce2bef4a5fb3c022", + "addons/core/Prefabs/ERR/Radio.et": "b4b5cfe125b39019855816c9a1c508ca4d65d435b5546fdaa6c1fa3c8c9b1165", + "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", + "addons/core/Prefabs/ERR/SpectatorCamera.et": "b5b87d5b7b707f3745741aebe7c923067c8a74f8fbb2a4711834bab03bb5a812", + "addons/core/Prefabs/ERR/SpectatorCamera.et.meta": "2a16558f93915e31908a674509e9c89976470f78a84a1174a64b94b68b8f77ad", + "addons/core/Prefabs/ERR/SupplyCache.et": "bccf7afbaae97cfcdd78dd6dbbf4be5b2c045d348f50fe4581962e556c0044d7", + "addons/core/Prefabs/ERR/SupplyCache.et.meta": "2f5de3a4aab1e9d0e35521f48dc57b95bd6e449c383dec4f1c258e10295904cb", + "addons/core/Prefabs/ERR/SupplySite.et": "dc5decce5cabf39b6116e8794ec3960cb1e35761854fdbe69740da118787ded4", + "addons/core/Prefabs/ERR/SupplySite.et.meta": "b41944b12eb3528ff7a3ac94258b18c66ef161aa6a38894aee300a1ac4798630", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et": "ea177fff89ec82bfebce0fdb26699e5c3af4999cdb50bf7cc7771a6d2e70d684", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et.meta": "544c94cf1c26757a10654de7856cd6cc48b821ce3bdc02add13cfe6514269915", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et": "7f7dfcd3460d0100fd893dabe930baf1032ce6879f1e8bfccb4d086a8234e80a", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et.meta": "123955da03462befb90e293b3bb856d49cc761166611b38ff47cb48ec2fbe95c", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c": "8a5ccf1fff1442dfe7ab4cb3cc858ee16adb073119144187155ade558b8c4c5f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c": "6cfb7de35bbbc18bd6d35c63da01284ffb08b8641527d49283d9b9b0cb94f8c2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "e17bd68f82012bff7c1953cf1adc86fe1cdefbc01d3b5eb88fa96f956bb4f135", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c": "1d8987d2dcc1db2a030e095b33d50f07877181037d339624156291d8317bfa5d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "41a35f806d925d025534247b0705d7eb47f134d181e5b819a149be7909ba4cc1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "a47a1ee3a62d170a06b54cce3c42fac7c3645cf6a89c827a1dfe51ae0a99ce12", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "2e295b0f225208c5414728ba83333e5e0ab6eef3a708ce39eb1dfce5400c94c9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c": "360228fd45aa6ecd9426e36120b5e637d2feee1e3a4a89aac8207526b871c87e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c": "b16a8b31be20271c37c4d68c169f08b28d88993d296308b80de00715ea2b4dfe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c": "0c8ce2f3d2642999a7158000e60d8c491ed3e4b6d9c0d3d18b3e3ecc3e557196", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "0921c04c313f36f23aaab35fdea05bb479a81f01acc62c715ca3b3e366d67f81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c": "298ae30d1db1191d680a5a8f60253f9344e0e19fe9c17242c757382042364341", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c": "d5337ce8073335ccb4b03d447550a38e03d6fc9e428008be3a7b042c078f4835", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "85e4d2cb27426c07b8631ca411f4b8f5c821f9f331c8c2719cbfa71b3687f08e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c": "0897e82d7805ef56f05f2b9c23903280285ea6bfa51796a2df86bb564ece78f7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c": "53cd74d121292f6f6813c2b69e475f29dba9239bc10cbaf55ce1d7f8fb3674f6", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c": "917f9df36b93258a30b7af24b0ee52b65c5205405d8056bb721a9868010d64d1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c": "84cec6457132eff6d195bc6fc8fcee267685693edbb987cbeafaece0f7537992", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c": "5d9b5d4b1d22d57145e79b5a740863a5233706fd8b11046d2512a681f8a615a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "9f8f0844862ef98b0878290238a410d501ea99622cd5e517fcacd9a9187f889a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c": "7379cb65bde95bd1e7ffc2203a7fb7957435d379560e08b470e73a89ea6b59cf", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c": "4493c6b6070cd7d768a2fcba2d8934b782c9a221ae257a530aa6b52fa40d88a8", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c": "0d4d61c424a16008595f86fa61f3b848caf9bd6e9ebbacea9c10254d88ba378e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "2ceeae7c7c373fbf894f491903b29d51543949c323b06ce9989c68282129166e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c": "a747af09599ce4d0c52051f18f00c4624d24d137e328341b580b82e896c6bf65", + "addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/core/UI/layouts/ERR/AdminMenu.layout": "26db9780c0afffa8429602c27ee347a4e665a19a6872b15f4178d684de7e23b6", + "addons/core/UI/layouts/ERR/AdminMenu.layout.meta": "9deeece996f43b1f1fed6b5ec89279645c7b6424250200a42580cc088142e9bf", + "addons/core/UI/layouts/ERR/PreparationStatus.layout": "bd269cf8dc6f27735423743dd5b78242550518414448a0256e5e12fa6b92c459", + "addons/core/UI/layouts/ERR/PreparationStatus.layout.meta": "75b12176a443bb911fc4ad446982d762201fda42ed38736b79bc5439fca31ccc", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", + "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", + "addons/core/Worlds/ERR_Everon_Layers/default.layer": "17105538007199bfc419aa04a64debaf2da0a7b77a1dc3ba983e92bf747c862e", + "addons/core/addon.gproj": "683a522c7f7f5d5ff41c57b0f0947f3cd2ec866b656a5f449af55688956eb5fa" +} diff --git a/docs/evidence/native-2026-09-20-merged-mod/launch-source.json b/docs/evidence/native-2026-09-20-merged-mod/launch-source.json new file mode 100644 index 0000000..e7bc436 --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/launch-source.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "launch_id": "11367535-2848-4d80-ac4e-0395a8207d8f", + "captured_unix": 1789903697.2081594, + "source_root": "/home/jakub/devel/escapistsrereintroduced", + "command": [ + "gamescope", + "--backend", + "headless", + "-W", + "1280", + "-H", + "720", + "-w", + "1280", + "-h", + "720", + "-r", + "30", + "--", + "/home/jakub/.local/share/Steam/steamapps/common/Proton - Experimental/proton", + "run", + "/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger Tools/Workbench/ArmaReforgerWorkbenchSteamDiag.exe", + "-gproj", + "Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj", + "-addonsDir", + "Z:/home/jakub/devel/escapistsrereintroduced/addons", + "-profile", + "Z:/tmp/erri-merged-workbench-final", + "-logconsole", + "-wbModule=WorldEditor", + "-load", + "Worlds/ERR_Everon.ent", + "-plugin=ERR_ValidateWorldPlugin", + "-errPlay", + "1", + "-errSmoke", + "1", + "-errSmokeOutcome", + "hq-memory", + "-noThrow", + "-disableCrashReporter" + ], + "manifest_sha256": "6ae12551b182d08065c4c9cc3aaf2e23e9405c094bdbb26bfd306555c428cdc7" +} diff --git a/docs/evidence/native-2026-09-20-merged-mod/report.json b/docs/evidence/native-2026-09-20-merged-mod/report.json new file mode 100644 index 0000000..5b75f90 --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/report.json @@ -0,0 +1,14 @@ +{ + "log": "docs/evidence/native-2026-09-20-merged-mod/console.log.txt", + "smoke_completions": 1, + "assertions_passed": 101, + "script_or_runtime_failures": [], + "engine_errors": [ + "13:28:20.707 RESOURCES (E): Wrong GUID/name for resource @\"{0AFDD005CD669892}Language/rhs_localization.st\" in property \"StringTableSource\"", + "13:28:20.707 RESOURCES (E): Wrong GUID/name for resource @\"{41FA2A08B6971D4C}Language/wcs_armament_localization.st\" in property \"StringTableSource\"", + "13:28:20.708 RESOURCES (E): Wrong GUID/name for resource @\"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st\" in property \"StringTableSource\"", + "13:28:20.708 RESOURCES (E): Wrong GUID/name for resource @\"{E50E557B468C7073}Language/wcs_bmp1_localization.st\" in property \"StringTableSource\"" + ], + "missing_end_screen": [], + "scope": "scripted local Workbench integration only; no multiplayer, piloting or FPS claim" +} diff --git a/docs/evidence/native-2026-09-20-merged-mod/rereintroduced-hq.log.txt b/docs/evidence/native-2026-09-20-merged-mod/rereintroduced-hq.log.txt new file mode 100644 index 0000000..bf3d30a --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/rereintroduced-hq.log.txt @@ -0,0 +1,254 @@ +#1 t=6.8s M0 REGISTER group 1 [session=1789903739-1] +#2 t=6.8s M0 MORTAR DEPLOY site=1 order=0 radio=M0 source=M0 position=<6000,202.788,7000>; authored gun and four-person crew; finite ammunition initialization pending [session=1789903739-1] +#3 t=7.7s M0 CONVOY STARTUP startup grace; [session=1789903739-1] +#4 t=7.7s M0 COURIER READY trip=0 state=1 delivered=0; 12 distinct original HE shells physically confirmed in existing western cache [session=1789903739-1] +#5 t=8.8s M0 REGISTER group 2 [session=1789903739-1] +#6 t=8.8s M0 REGISTER group 3 [session=1789903739-1] +#7 t=8.8s M0 REGISTER group 4 [session=1789903739-1] +#8 t=8.8s M0 REGISTER group 5 [session=1789903739-1] +#9 t=8.8s M0 REGISTER group 6 [session=1789903739-1] +#10 t=8.8s M0 REGISTER group 7 [session=1789903739-1] +#11 t=13.7s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789903739-1] +#12 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789903739-1] +#13 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789903739-1] +#14 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789903739-1] +#15 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789903739-1] +#16 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789903739-1] +#17 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789903739-1] +#18 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#19 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#20 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#21 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#22 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#23 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#24 t=16.7s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789903739-1] +#25 t=18.7s M0 MORTAR CREW READY site=1 order=0 radio=M0 source=M0 position=<6000,202.788,7000>; four original physical members, one manpack, 27 confirmed HE; new shell requests=27; allocation permanently closed [session=1789903739-1] +#26 t=19.7s M5 STATUS REPORT status everon-extraction-1: 6 living, 6 fit, 0 confirmed losses; sampled=19749; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789903739-1] +#27 t=19.7s M7 STATUS REPORT status formation-1: 4 living, 4 fit, 0 confirmed losses; sampled=19749; small-arms ammunition=596 magazine rounds, 4 chambered [session=1789903739-1] +#28 t=20.8s M8 STATUS REPORT status everon-supply-2: 6 living, 6 fit, 0 confirmed losses; sampled=20756.6; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789903739-1] +#29 t=20.8s M5 CALL unit 5 originating report; three seconds before transmission [session=1789903739-1] +#30 t=20.8s M7 CALL unit 1 originating report; three seconds before transmission [session=1789903739-1] +#31 t=21.8s M9 STATUS REPORT status everon-outpost-1: 6 living, 6 fit, 0 confirmed losses; sampled=21757.2; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789903739-1] +#32 t=21.8s M8 CALL unit 6 originating report; three seconds before transmission [session=1789903739-1] +#33 t=21.8s M10 STATUS REPORT status everon-prison-1: 6 living, 6 fit, 0 confirmed losses; sampled=21757.2; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789903739-1] +#34 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#35 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#36 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#37 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#38 t=22.8s M9 CALL unit 7 originating report; three seconds before transmission [session=1789903739-1] +#39 t=22.8s M11 STATUS REPORT status everon-radio-1: 6 living, 6 fit, 0 confirmed losses; sampled=22765.8; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789903739-1] +#40 t=22.8s M12 STATUS REPORT status everon-supply-1: 6 living, 6 fit, 0 confirmed losses; sampled=22765.8; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789903739-1] +#41 t=22.8s M10 CALL unit 2 originating report; three seconds before transmission [session=1789903739-1] +#42 t=23.8s M5 CALL COMPLETE unit 5 completed originating report [session=1789903739-1] +#43 t=23.8s M5 TRANSMIT unit 5 -> HQ (long-range) [session=1789903739-1] +#44 t=23.8s M11 CALL unit 4 originating report; three seconds before transmission [session=1789903739-1] +#45 t=23.8s M12 CALL unit 3 originating report; three seconds before transmission [session=1789903739-1] +#46 t=23.8s M7 CALL COMPLETE unit 1 completed originating report [session=1789903739-1] +#47 t=23.8s M7 TRANSMIT unit 1 -> HQ (long-range) [session=1789903739-1] +#48 t=24.8s M8 CALL COMPLETE unit 6 completed originating report [session=1789903739-1] +#49 t=24.8s M8 TRANSMIT unit 6 -> HQ (long-range) [session=1789903739-1] +#50 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#51 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#52 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#53 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#54 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#55 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#56 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#57 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#58 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#59 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#60 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#61 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#62 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#63 t=25.8s M0 STINGER startup deadline reached; unresolved insertion quarantined for this actor [session=1789903739-1] +#64 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#65 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#66 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#67 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#68 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#69 t=25.8s M0 STINGER startup deadline reached; unresolved insertion quarantined for this actor [session=1789903739-1] +#70 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#71 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#72 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#73 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#74 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#75 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#76 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#77 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#78 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#79 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#80 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#81 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#82 t=25.8s M9 CALL COMPLETE unit 7 completed originating report [session=1789903739-1] +#83 t=25.8s M9 TRANSMIT unit 7 -> HQ (long-range) [session=1789903739-1] +#84 t=25.8s M5 RECEIVE HQ received from unit 5 [session=1789903739-1] +#85 t=25.8s M10 CALL COMPLETE unit 2 completed originating report [session=1789903739-1] +#86 t=25.8s M10 TRANSMIT unit 2 -> HQ (long-range) [session=1789903739-1] +#87 t=25.8s M7 RECEIVE HQ received from unit 1 [session=1789903739-1] +#88 t=26.8s M8 RECEIVE HQ received from unit 6 [session=1789903739-1] +#89 t=26.8s M11 CALL COMPLETE unit 4 completed originating report [session=1789903739-1] +#90 t=26.8s M11 TRANSMIT unit 4 -> HQ (long-range) [session=1789903739-1] +#91 t=26.8s M12 CALL COMPLETE unit 3 completed originating report [session=1789903739-1] +#92 t=26.8s M12 TRANSMIT unit 3 -> HQ (long-range) [session=1789903739-1] +#93 t=27.8s M9 RECEIVE HQ received from unit 7 [session=1789903739-1] +#94 t=27.8s M10 RECEIVE HQ received from unit 2 [session=1789903739-1] +#95 t=28.8s M11 RECEIVE HQ received from unit 4 [session=1789903739-1] +#96 t=28.8s M12 RECEIVE HQ received from unit 3 [session=1789903739-1] +#97 t=37.8s M0 CONVOY CREATED six physical vehicles and 19 finite crew; native readiness and ledger admission pending [session=1789903739-1] +#98 t=37.8s M0 CONVOY STARTUP canonical convoy dispatched; [session=1789903739-1] +#99 t=38.8s M0 CONVOY READINESS vehicle=0 reason=readiness guards satisfied; awaiting admission members=2 agents=2 activeAgents=2 activeGroup=1 seats=2 registered=0 [session=1789903739-1] +#100 t=38.8s M0 CONVOY READINESS vehicle=1 reason=readiness guards satisfied; awaiting admission members=1 agents=1 activeAgents=1 activeGroup=1 seats=1 registered=0 [session=1789903739-1] +#101 t=38.8s M0 CONVOY READINESS vehicle=2 reason=readiness guards satisfied; awaiting admission members=9 agents=9 activeAgents=9 activeGroup=1 seats=9 registered=0 [session=1789903739-1] +#102 t=38.8s M0 CONVOY READINESS vehicle=3 reason=readiness guards satisfied; awaiting admission members=2 agents=2 activeAgents=2 activeGroup=1 seats=2 registered=0 [session=1789903739-1] +#103 t=38.8s M0 CONVOY READINESS vehicle=4 reason=readiness guards satisfied; awaiting admission members=3 agents=3 activeAgents=3 activeGroup=1 seats=3 registered=0 [session=1789903739-1] +#104 t=38.8s M0 CONVOY READINESS vehicle=5 reason=readiness guards satisfied; awaiting admission members=2 agents=2 activeAgents=2 activeGroup=1 seats=2 registered=0 [session=1789903739-1] +#105 t=38.8s M0 REGISTER group 8 [session=1789903739-1] +#106 t=38.8s M0 REGISTER group 9 [session=1789903739-1] +#107 t=38.8s M0 REGISTER group 10 [session=1789903739-1] +#108 t=38.8s M0 REGISTER group 11 [session=1789903739-1] +#109 t=38.8s M0 REGISTER group 12 [session=1789903739-1] +#110 t=38.8s M0 REGISTER group 13 [session=1789903739-1] +#111 t=38.8s M0 CONVOY CARGO finite target submitted once: eight AK74 and 48 magazines; native capacity/completion may reduce actual stock [session=1789903739-1] +#112 t=39.8s M0 INFANTRY SUPPLY trip=0 state=1 moved=0 spent=0/48; truck magazine identities captured once after startup; absent/looted stock is never replaced [session=1789903739-1] +#113 t=41.8s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#114 t=41.8s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#115 t=41.8s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#116 t=41.8s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789903739-1] +#117 t=44.8s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789903739-1] +#118 t=44.8s M0 RADIO EQUIPMENT native radio completion recorded; original group allocation terminal, no replenishment [session=1789903739-1] +#119 t=44.8s M0 RADIO EQUIPMENT native radio completion recorded; original group allocation terminal, no replenishment [session=1789903739-1] +#120 t=45.2s M15 CALL unit 2 originating report; three seconds before transmission [session=1789903739-1] +#121 t=46.8s M15 LOST originating call lost its living owned radio carrier; FIXTURE synthetic observed position; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (0s ago) [session=1789903739-1] +#122 t=47.8s M16 CALL unit 3 originating report; three seconds before transmission [session=1789903739-1] +#123 t=48.8s M17 STATUS REPORT status everon-supply-convoy-1-vehicle-2: 9 living, 9 fit, 0 confirmed losses; sampled=48783.7; small-arms ammunition=1881 magazine rounds, 9 chambered [session=1789903739-1] +#124 t=49.8s M19 STATUS REPORT status everon-supply-convoy-1-vehicle-3: 2 living, 2 fit, 0 confirmed losses; sampled=49789.4; small-arms ammunition=418 magazine rounds, 2 chambered [session=1789903739-1] +#125 t=49.8s M17 CALL unit 10 originating report; three seconds before transmission [session=1789903739-1] +#126 t=50.8s M22 STATUS REPORT status everon-supply-convoy-1-vehicle-4: 3 living, 3 fit, 0 confirmed losses; sampled=50794.7; small-arms ammunition=627 magazine rounds, 3 chambered [session=1789903739-1] +#127 t=50.8s M19 CALL unit 11 originating report; three seconds before transmission [session=1789903739-1] +#128 t=50.8s M16 CALL COMPLETE unit 3 completed originating report [session=1789903739-1] +#129 t=50.8s M16 TRANSMIT unit 3 -> HQ (long-range) [session=1789903739-1] +#130 t=51.8s M24 STATUS REPORT status everon-supply-convoy-1-vehicle-5: 2 living, 2 fit, 0 confirmed losses; sampled=51807.1; small-arms ammunition=418 magazine rounds, 2 chambered [session=1789903739-1] +#131 t=51.8s M22 CALL unit 12 originating report; three seconds before transmission [session=1789903739-1] +#132 t=51.8s M25 STATUS REPORT status everon-supply-convoy-1-vehicle-0: 2 living, 2 fit, 0 confirmed losses; sampled=51807.1; small-arms ammunition=418 magazine rounds, 2 chambered [session=1789903739-1] +#133 t=52.8s M24 CALL unit 13 originating report; three seconds before transmission [session=1789903739-1] +#134 t=52.8s M17 CALL COMPLETE unit 10 completed originating report [session=1789903739-1] +#135 t=52.8s M17 TRANSMIT unit 10 -> unit 1 (125m short-range) [session=1789903739-1] +#136 t=52.8s M28 STATUS REPORT status everon-supply-convoy-1-vehicle-1: 1 living, 1 fit, 0 confirmed losses; sampled=52814.4; small-arms ammunition=209 magazine rounds, 1 chambered [session=1789903739-1] +#137 t=52.8s M25 CALL unit 8 originating report; three seconds before transmission [session=1789903739-1] +#138 t=52.8s M16 RECEIVE HQ received from unit 3 [session=1789903739-1] +#139 t=52.8s M16 BELIEF delivered report M16 retained; tracks=1 [session=1789903739-1] +#140 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#141 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#142 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#143 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#144 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#145 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#146 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#147 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#148 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#149 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#150 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#151 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#152 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#153 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#154 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#155 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#156 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#157 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#158 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789903739-1] +#159 t=53.8s M19 CALL COMPLETE unit 11 completed originating report [session=1789903739-1] +#160 t=53.8s M19 TRANSMIT unit 11 -> unit 1 (132m short-range) [session=1789903739-1] +#161 t=53.8s M28 CALL unit 9 originating report; three seconds before transmission [session=1789903739-1] +#162 t=53.8s M31 CALL unit 2 originating report; three seconds before transmission [session=1789903739-1] +#163 t=53.8s M32 ORDER QUEUED group 7 search; belief=1 from report M16; destination=<6390,211.444,7460> [session=1789903739-1] +#164 t=54.8s M22 CALL COMPLETE unit 12 completed originating report [session=1789903739-1] +#165 t=54.8s M22 TRANSMIT unit 12 -> unit 1 (180m short-range) [session=1789903739-1] +#166 t=54.8s M17 RECEIVE unit 1 received from unit 10 [session=1789903739-1] +#167 t=54.8s M17 TRANSMIT unit 1 -> HQ (long-range) [session=1789903739-1] +#168 t=54.8s M32 TRANSMIT HQ -> unit 7 (long-range) [session=1789903739-1] +#169 t=55.8s M24 CALL COMPLETE unit 13 completed originating report [session=1789903739-1] +#170 t=55.8s M24 TRANSMIT unit 13 -> HQ (long-range) [session=1789903739-1] +#171 t=55.8s M19 RECEIVE unit 1 received from unit 11 [session=1789903739-1] +#172 t=55.8s M19 TRANSMIT unit 1 -> HQ (long-range) [session=1789903739-1] +#173 t=55.8s M25 CALL COMPLETE unit 8 completed originating report [session=1789903739-1] +#174 t=55.8s M25 TRANSMIT unit 8 -> unit 1 (69m short-range) [session=1789903739-1] +#175 t=56.8s M22 RECEIVE unit 1 received from unit 12 [session=1789903739-1] +#176 t=56.8s M22 TRANSMIT unit 1 -> HQ (long-range) [session=1789903739-1] +#177 t=56.8s M17 RECEIVE HQ received from unit 1 [session=1789903739-1] +#178 t=56.8s M28 CALL COMPLETE unit 9 completed originating report [session=1789903739-1] +#179 t=56.8s M28 TRANSMIT unit 9 -> HQ (long-range) [session=1789903739-1] +#180 t=56.8s M32 RECEIVE unit 7 received from HQ [session=1789903739-1] +#181 t=56.8s M32 ORDER DELIVERED group 7 search from report M16; belief=1 destination=<6390,211.444,7460> [session=1789903739-1] +#182 t=56.8s M31 CALL COMPLETE unit 2 completed originating report [session=1789903739-1] +#183 t=56.8s M31 TRANSMIT unit 2 -> unit 1 (223m short-range) [session=1789903739-1] +#184 t=57.8s M24 RECEIVE HQ received from unit 13 [session=1789903739-1] +#185 t=57.8s M19 RECEIVE HQ received from unit 1 [session=1789903739-1] +#186 t=57.8s M25 RECEIVE unit 1 received from unit 8 [session=1789903739-1] +#187 t=57.8s M25 TRANSMIT unit 1 -> HQ (long-range) [session=1789903739-1] +#188 t=58.8s M22 RECEIVE HQ received from unit 1 [session=1789903739-1] +#189 t=58.8s M28 RECEIVE HQ received from unit 9 [session=1789903739-1] +#190 t=58.8s M31 RECEIVE unit 1 received from unit 2 [session=1789903739-1] +#191 t=58.8s M31 TRANSMIT unit 1 -> HQ (long-range) [session=1789903739-1] +#192 t=58.8s M33 ORDER QUEUED MORTAR ORDER from report M16; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (12s ago) [session=1789903739-1] +#193 t=58.8s M0 MORTAR COMMAND site=1 order=1 radio=M0 source=M16 position=<6000,202.788,7000>; requested rounds=8 HE radius=40m; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (12s ago) [session=1789903739-1] +#194 t=59.9s M25 RECEIVE HQ received from unit 1 [session=1789903739-1] +#195 t=59.9s M33 TRANSMIT HQ -> unit 1 (long-range) [session=1789903739-1] +#196 t=60.9s M31 RECEIVE HQ received from unit 1 [session=1789903739-1] +#197 t=60.9s M31 BELIEF delivered report M31 retained; tracks=1 [session=1789903739-1] +#198 t=61.9s M34 CALL unit 2 originating report; three seconds before transmission [session=1789903739-1] +#199 t=61.9s M33 RECEIVE unit 1 received from HQ [session=1789903739-1] +#200 t=61.9s M33 MORTAR AIM site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; native activity created; latest source=M16 observed=X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (15s ago) [session=1789903739-1] +#201 t=62.9s M33 MORTAR ACTIVITY site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=native state=1; age=1.00069s aim age=62.8786s committed=0 shots=0; previous= repeated polls omitted=0 [session=1789903739-1] +#202 t=63.9s M35 ORDER QUEUED MORTAR UPDATE from report M31; X=6414 Z=7460: count unknown; on foot; 13 km/h, azimuth 90 degrees (E); seen weapons: unknown; vector X/Z=[3.7,0] m/s (10s ago) [session=1789903739-1] +#203 t=63.9s M33 MORTAR UPDATE QUEUED site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; same order; update radio=M35 newer observation=M31 observed=53801.5 [session=1789903739-1] +#204 t=64.9s M34 CALL COMPLETE unit 2 completed originating report [session=1789903739-1] +#205 t=64.9s M34 TRANSMIT unit 2 -> unit 1 (223m short-range) [session=1789903739-1] +#206 t=64.9s M35 TRANSMIT HQ -> unit 1 (long-range) [session=1789903739-1] +#207 t=65.5s M33 MORTAR AIM START site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=solving moving intercept; latest source=M16; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (18s ago); previous= repeated polls omitted=0 [session=1789903739-1] +#208 t=65.5s M33 MORTAR AIM SOLUTION site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=ready; predicted impact=<6397.07,175.092,7447.75> flight=18.5667s charge index=1 aim target=<6397.07,1766.22,7447.75> latest source=M16; previous= repeated polls omitted=0 [session=1789903739-1] +#209 t=66.9s M34 RECEIVE unit 1 received from unit 2 [session=1789903739-1] +#210 t=66.9s M34 TRANSMIT unit 1 -> HQ (long-range) [session=1789903739-1] +#211 t=66.9s M35 RECEIVE unit 1 received from HQ [session=1789903739-1] +#212 t=66.9s M33 MORTAR WITHHELD site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=target update requires a different native aim command; ; previous= repeated polls omitted=0 [session=1789903739-1] +#213 t=66.9s M33 MORTAR UPDATE REJECTED site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; delivered update cannot preserve the original native aim command [session=1789903739-1] +#214 t=67.9s M33 MORTAR REPEATS site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; phase=ACTIVITY reason=native state=1 repeated polls omitted=4 [session=1789903739-1] +#215 t=67.9s M33 MORTAR ORDER END site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=native aim or firing authorization rejected observed shots=0 shell committed=0 elapsed=6.01902s last failure=delivered update cannot preserve the original native aim command [session=1789903739-1] +#216 t=68.9s M34 RECEIVE HQ received from unit 1 [session=1789903739-1] +#217 t=68.9s M34 AREA SWEPT group 2 reported no contact at <6414,211.444,7460>; belief=1 [session=1789903739-1] +#218 t=69.9s M36 CALL unit 2 originating report; three seconds before transmission [session=1789903739-1] +#219 t=72.9s M36 CALL COMPLETE unit 2 completed originating report [session=1789903739-1] +#220 t=72.9s M36 TRANSMIT unit 2 -> unit 1 (223m short-range) [session=1789903739-1] +#221 t=74.9s M36 RECEIVE unit 1 received from unit 2 [session=1789903739-1] +#222 t=74.9s M36 TRANSMIT unit 1 -> HQ (long-range) [session=1789903739-1] +#223 t=76.9s M36 RECEIVE HQ received from unit 1 [session=1789903739-1] +#224 t=76.9s M36 BELIEF delivered report M36 retained; tracks=1 [session=1789903739-1] +#225 t=78s M37 CALL unit 2 originating report; three seconds before transmission [session=1789903739-1] +#226 t=79s M39 ORDER QUEUED MORTAR ORDER from report M36; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (9s ago) [session=1789903739-1] +#227 t=79s M0 MORTAR COMMAND site=1 order=2 radio=M0 source=M36 position=<6000,202.788,7000>; requested rounds=8 HE radius=40m; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (9s ago) [session=1789903739-1] +#228 t=80s M39 TRANSMIT HQ -> unit 1 (long-range) [session=1789903739-1] +#229 t=81s M37 CALL COMPLETE unit 2 completed originating report [session=1789903739-1] +#230 t=81s M37 TRANSMIT unit 2 -> unit 1 (223m short-range) [session=1789903739-1] +#231 t=82s M39 RECEIVE unit 1 received from HQ [session=1789903739-1] +#232 t=82s M39 MORTAR AIM site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; native activity created; latest source=M36 observed=X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (12s ago) [session=1789903739-1] +#233 t=82.4s M39 MORTAR AIM START site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=solving moving intercept; latest source=M36; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (13s ago); previous= repeated polls omitted=0 [session=1789903739-1] +#234 t=82.4s M39 MORTAR AIM SOLUTION site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=ready; predicted impact=<6400.98,175.568,7454.47> flight=18.5001s charge index=1 aim target=<6400.98,1759.39,7454.47> latest source=M36; previous= repeated polls omitted=0 [session=1789903739-1] +#235 t=83s M37 RECEIVE unit 1 received from unit 2 [session=1789903739-1] +#236 t=83s M37 TRANSMIT unit 1 -> HQ (long-range) [session=1789903739-1] +#237 t=83s M39 MORTAR ACTIVITY site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=native state=1; age=1.00175s aim age=0.609484s committed=0 shots=0; previous= repeated polls omitted=0 [session=1789903739-1] +#238 t=85s M37 RECEIVE HQ received from unit 1 [session=1789903739-1] +#239 t=88s M39 MORTAR SHOOT NODE site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=native result=2; authorization passed; node result does not confirm a physical shot; previous= repeated polls omitted=0 [session=1789903739-1] +#240 t=88.9s M39 MORTAR SHELL COMMIT site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; final safety passed; gunner=SCR_ChimeraCharacter<0x0000000086944B00> @"ENTITY:4611686018427390854" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.876953 202.692978 7000.011719> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" predicted impact=<6400.98,175.568,7454.47> flight=18.5001s; invoking native transfer, awaiting projectile event [session=1789903739-1] +#241 t=89.9s M39 MORTAR FIRED site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; physical projectile=Projectile<0x00000001A895B800> @"ENTITY:4611686018427391089" ('Projectile','Assets/Weapons/Ammo/Shells/82mm_Mortar_2B14/Shell_82mm_HE_O832DU.xob') at <6000.331055 204.006668 7000.377930> @"{98EC9C526AFBA282}Prefabs/Weapons/Ammo/Ammo_Shell_82mm_HE_O832DU.et" origin=<6000.33,204.007,7000.38> order shots=1 total shots=1 predicted impact=<6400.98,175.568,7454.47> predicted flight=18.5001s gunner=SCR_ChimeraCharacter<0x0000000086944B00> @"ENTITY:4611686018427390854" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.876953 202.691391 7000.011719> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" (impact not observed) [session=1789903739-1] +#242 t=98.4s M39 MORTAR SHELL COMMIT site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; final safety passed; gunner=SCR_ChimeraCharacter<0x0000000086944B00> @"ENTITY:4611686018427390854" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.902832 202.696228 7000.041504> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" predicted impact=<6422.29,177.023,7478.2> flight=18.3001s; invoking native transfer, awaiting projectile event [session=1789903739-1] +#243 t=99.4s M39 MORTAR FIRED site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; physical projectile=Projectile<0x00000001A895B910> @"ENTITY:4611686018427391094" ('Projectile','Assets/Weapons/Ammo/Shells/82mm_Mortar_2B14/Shell_82mm_HE_O832DU.xob') at <6000.351562 203.993759 7000.402344> @"{98EC9C526AFBA282}Prefabs/Weapons/Ammo/Ammo_Shell_82mm_HE_O832DU.et" origin=<6000.35,203.994,7000.4> order shots=2 total shots=2 predicted impact=<6422.29,177.023,7478.2> predicted flight=18.3001s gunner=SCR_ChimeraCharacter<0x0000000086944B00> @"ENTITY:4611686018427390854" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.902832 202.696136 7000.041504> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" (impact not observed) [session=1789903739-1] +#244 t=110.4s M39 MORTAR SHELL COMMIT site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; final safety passed; gunner=SCR_ChimeraCharacter<0x0000000086944B00> @"ENTITY:4611686018427390854" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.877930 202.687546 6999.978516> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" predicted impact=<6421.57,175.198,7436.7> flight=18.5001s; invoking native transfer, awaiting projectile event [session=1789903739-1] +#245 t=111.4s M39 MORTAR FIRED site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; physical projectile=Projectile<0x00000001A895BA20> @"ENTITY:4611686018427391099" ('Projectile','Assets/Weapons/Ammo/Shells/82mm_Mortar_2B14/Shell_82mm_HE_O832DU.xob') at <6000.347168 204.006012 7000.365723> @"{98EC9C526AFBA282}Prefabs/Weapons/Ammo/Ammo_Shell_82mm_HE_O832DU.et" origin=<6000.35,204.006,7000.37> order shots=3 total shots=3 predicted impact=<6421.57,175.198,7436.7> predicted flight=18.5001s gunner=SCR_ChimeraCharacter<0x0000000086944B00> @"ENTITY:4611686018427390854" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.877930 202.687180 6999.978516> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" (impact not observed) [session=1789903739-1] +#246 t=113s M39 MORTAR ACTIVITY site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=native state=1; age=31.0486s aim age=113.019s committed=0 shots=3; previous=native state=1 repeated polls omitted=29 [session=1789903739-1] +#247 t=115.4s M39 MORTAR AIM START site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=solving moving intercept; latest source=M36; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (46s ago); previous=solving moving intercept repeated polls omitted=2 [session=1789903739-1] +#248 t=115.4s M39 MORTAR AIM SOLUTION site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=ready; predicted impact=<6389.38,176.1,7473.93> flight=18.4667s charge index=1 aim target=<6389.38,1749.26,7473.93> latest source=M36; previous=ready repeated polls omitted=2 [session=1789903739-1] +#249 t=116s M0 INFANTRY SUPPLY trip=0 state=1 moved=0 spent=0/48; service stopped; original forces and all remaining cargo retained [session=1789903739-1] +#250 t=116s M0 CONVOY STOP HQ ended convoy task service; surviving entities and cargo preserved [session=1789903739-1] +#251 t=116s M39 MORTAR REPEATS site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; phase=SHOOT NODE reason=native result=2 repeated polls omitted=2 [session=1789903739-1] +#252 t=116s M39 MORTAR REPEATS site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; phase=ACTIVITY reason=native state=1 repeated polls omitted=2 [session=1789903739-1] +#253 t=116s M39 MORTAR ORDER END site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=HQ stopped observed shots=3 shell committed=0 elapsed=34.069s last failure= [session=1789903739-1] +#254 t=116s M0 STOP HQ stopped; tactical orders released [session=1789903739-1] diff --git a/docs/evidence/native-2026-09-20-merged-mod/runner.json.txt b/docs/evidence/native-2026-09-20-merged-mod/runner.json.txt new file mode 100644 index 0000000..93eab27 --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/runner.json.txt @@ -0,0 +1,34 @@ +{ + "stopped_unix": 1789903867.4172647, + "console_sha256": "dce516f7e37963093803ada437e933e6a9f8040e930de01fea73a365e58d931e", + "end_source_sha256": "6ae12551b182d08065c4c9cc3aaf2e23e9405c094bdbb26bfd306555c428cdc7", + "source_unchanged_after_run": true, + "source_provenance": "launch_snapshot", + "launch_id": "11367535-2848-4d80-ac4e-0395a8207d8f", + "launch_source_manifest": "launch-source-sha256.json", + "launch_source_metadata": "launch-source.json", + "launch_source_sha256": "6ae12551b182d08065c4c9cc3aaf2e23e9405c094bdbb26bfd306555c428cdc7", + "external_addons_unchanged_after_run": true, + "external_addon_count": 6, + "external_addon_inputs": "external-addons-inputs.json", + "started_unix": 1789903697.208224, + "result": "smoke-completed", + "result_before_cleanup": "smoke-completed", + "cleanup_confirmed": true, + "cleanup_report": { + "cleanup_confirmed": true, + "idle_verified": true, + "errors": [], + "orphan_cleanup": { + "attempted": false, + "reason": "noncanonical-private-prefix" + } + }, + "runner_error": null, + "session": "/tmp/erri-merged-workbench-final/logs/logs_2026-09-20_13-28-18", + "rounds_required": 1, + "project": "chat", + "display": "headless Gamescope 1280x720/30Hz", + "dedicated_server": false, + "audio": "silent sink and per-test-stream mute" +} diff --git a/docs/evidence/native-2026-09-20-merged-mod/script.log.txt b/docs/evidence/native-2026-09-20-merged-mod/script.log.txt new file mode 100644 index 0000000..1502012 --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/script.log.txt @@ -0,0 +1,362 @@ +--------------------------------------------- +Log Z:\tmp\erri-merged-workbench-final\logs\logs_2026-09-20_13-28-18\script.log started at 2026-09-20 13:28:21 (2026-09-20 11:28:21 UTC) + +13:28:21.555 SCRIPT : SCRIPT : Initializing scripts +13:28:21.555 SCRIPT : SCRIPT : ScriptProjectManager init +13:28:23.322 SCRIPT : SCRIPT : Compiling GameLib scripts +13:28:23.371 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +13:28:23.371 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +13:28:23.372 SCRIPT : SCRIPT : Compiling Game scripts +13:28:24.531 SCRIPT : Compiling Game scripts +13:28:24.531 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +13:28:24.531 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +13:28:24.834 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:24.845 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +13:28:24.884 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +13:28:24.999 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +13:28:25.022 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.032 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +13:28:25.094 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +13:28:25.094 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +13:28:25.095 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +13:28:25.126 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.145 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.145 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.146 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +13:28:25.146 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +13:28:25.173 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +13:28:25.200 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +13:28:25.560 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 436d9397 +13:28:25.568 SCRIPT : Module: Game; loaded 6506x files; 13190x classes; used 39262K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: bb2782cb +13:28:26.490 SCRIPT : Unable to register a script command due keyword duplicity: ban +13:28:26.490 SCRIPT : Unable to register a script command due keyword duplicity: kick +13:28:44.372 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +13:28:44.373 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +13:28:44.374 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +13:28:44.375 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +13:28:44.398 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +13:28:47.216 SCRIPT : Unable to register a script command due keyword duplicity: ban +13:28:47.216 SCRIPT : Unable to register a script command due keyword duplicity: kick +13:28:59.020 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +13:28:59.045 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +13:29:03.042 SCRIPT : Map load time: 2165ms +13:29:03.048 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +13:29:03.049 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +13:29:03.050 SCRIPT (W): Can't open config file "" +13:29:03.055 SCRIPT (W): Slot_WeaponInfo Has no Content! +13:29:03.056 SCRIPT (W): Slot_Chat Has no Content! +13:29:03.056 SCRIPT (W): Slot_VON Has no Content! +13:29:03.056 SCRIPT (W): Slot_AvailableActions Has no Content! +13:29:03.056 SCRIPT (W): Slot_Vehicle Has no Content! +13:29:03.056 SCRIPT (W): Slot_GameVersion Has no Content! +13:29:03.056 SCRIPT (W): Slot_Notifications Has no Content! +13:29:03.056 SCRIPT (W): Slot_Hints Has no Content! +13:29:03.066 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +13:29:03.066 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +13:29:03.069 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +13:29:03.120 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +13:29:03.131 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +13:29:03.300 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +13:29:04.772 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +13:29:04.793 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +13:29:04.793 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +13:29:04.821 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +13:29:04.823 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +13:29:04.869 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +13:29:04.870 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +13:29:04.877 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +13:29:04.923 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +13:29:04.923 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +13:29:04.925 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +13:29:04.925 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +13:29:04.928 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +13:29:04.929 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +13:29:04.929 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +13:29:04.931 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +13:29:04.931 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +13:29:04.931 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +13:29:04.931 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +13:29:04.931 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +13:29:04.931 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +13:29:04.932 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +13:29:04.932 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +13:29:04.932 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +13:29:04.932 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +13:29:04.932 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +13:29:04.932 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +13:29:04.932 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:04.933 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +13:29:05.792 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:05.792 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:05.792 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:05.792 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:06.044 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.09,63.5227,7499.71> up=0.995636 +13:29:06.044 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.261345 angularSpeed=0.0334652 +13:29:06.045 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +13:29:06.045 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.06,63.6118,7501.98> +13:29:06.045 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.06,63.3118,7501.98> terrainY=63.3155 tireTerrainGap=-0.00367737 +13:29:06.045 SCRIPT : ERR GEAR SUPPORT: center=<7012.06,63.6118,7501.98> radius=0.3 bottom=<7012.06,63.3118,7501.98> fraction=0.438095 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.00362015 +13:29:06.045 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.6,7497.71> +13:29:06.045 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.15,7497.71> terrainY=64.1538 tireTerrainGap=-0.00384521 +13:29:06.046 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.6,7497.71> radius=0.45 bottom=<7009.89,64.15,7497.71> fraction=0.436904 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00387573 +13:29:06.046 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2612,7497.76> +13:29:06.046 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8112,7497.76> terrainY=63.8169 tireTerrainGap=-0.00570297 +13:29:06.046 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2612,7497.76> radius=0.45 bottom=<7014.43,63.8112,7497.76> fraction=0.428611 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00570679 +13:29:06.046 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:06.300 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:06.300 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:06.300 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:06.300 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +13:29:06.807 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:06.808 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:06.808 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:07.057 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.11,63.5357,7499.72> up=0.994387 +13:29:07.058 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0956592 angularSpeed=0.06973 +13:29:07.058 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +13:29:07.058 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6185,7501.99> +13:29:07.058 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3186,7501.99> terrainY=63.3133 tireTerrainGap=0.00528717 +13:29:07.058 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6185,7501.99> radius=0.3 bottom=<7012.08,63.3186,7501.99> fraction=0.478992 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00537872 +13:29:07.058 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.94,64.6008,7497.72> +13:29:07.058 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.94,64.1508,7497.72> terrainY=64.147 tireTerrainGap=0.00382996 +13:29:07.059 SCRIPT : ERR GEAR SUPPORT: center=<7009.94,64.6008,7497.72> radius=0.45 bottom=<7009.94,64.1508,7497.72> fraction=0.471973 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00383759 +13:29:07.059 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.48,64.2649,7497.79> +13:29:07.059 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.48,63.8149,7497.79> terrainY=63.8148 tireTerrainGap=0.000133514 +13:29:07.059 SCRIPT : ERR GEAR SUPPORT: center=<7014.48,64.2649,7497.79> radius=0.45 bottom=<7014.48,63.8149,7497.79> fraction=0.455 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=9.91821e-05 +13:29:07.059 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:07.308 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:07.308 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:07.309 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +13:29:07.309 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:07.560 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +13:29:07.815 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:07.815 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:07.815 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:08.066 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5308,7499.75> up=0.994279 +13:29:08.066 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0501342 angularSpeed=0.0608202 +13:29:08.066 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +13:29:08.066 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6126,7502.03> +13:29:08.066 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3126,7502.03> terrainY=63.3105 tireTerrainGap=0.00208282 +13:29:08.067 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6126,7502.03> radius=0.3 bottom=<7012.09,63.3126,7502.03> fraction=0.463829 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00204086 +13:29:08.067 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5922,7497.73> +13:29:08.067 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1422,7497.73> terrainY=64.1403 tireTerrainGap=0.00185394 +13:29:08.067 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5922,7497.73> radius=0.45 bottom=<7009.98,64.1422,7497.73> fraction=0.463264 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00192261 +13:29:08.067 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2596,7497.84> +13:29:08.067 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8096,7497.84> terrainY=63.812 tireTerrainGap=-0.00248337 +13:29:08.067 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2596,7497.84> radius=0.45 bottom=<7014.52,63.8096,7497.84> fraction=0.443333 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00246811 +13:29:08.068 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:08.321 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:08.321 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +13:29:08.322 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:08.322 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:08.830 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:08.830 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:08.830 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:08.830 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +13:29:09.084 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5276,7499.77> up=0.994323 +13:29:09.084 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +13:29:09.084 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +13:29:09.084 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6101,7502.04> +13:29:09.084 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3101,7502.04> terrainY=63.3095 tireTerrainGap=0.000637054 +13:29:09.084 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6101,7502.04> radius=0.3 bottom=<7012.09,63.3101,7502.04> fraction=0.457278 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000602722 +13:29:09.085 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.99,64.5916,7497.74> +13:29:09.085 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.99,64.1416,7497.74> terrainY=64.1387 tireTerrainGap=0.00288391 +13:29:09.085 SCRIPT : ERR GEAR SUPPORT: center=<7009.99,64.5916,7497.74> radius=0.45 bottom=<7009.99,64.1416,7497.74> fraction=0.467751 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.0029068 +13:29:09.085 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.53,64.2594,7497.85> +13:29:09.085 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.53,63.8094,7497.85> terrainY=63.8111 tireTerrainGap=-0.00168228 +13:29:09.085 SCRIPT : ERR GEAR SUPPORT: center=<7014.53,64.2594,7497.85> radius=0.45 bottom=<7014.53,63.8094,7497.85> fraction=0.446667 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00173187 +13:29:09.085 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:09.335 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:09.335 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:09.335 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:09.336 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:09.842 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +13:29:09.843 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:09.843 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:09.843 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:10.097 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5276,7499.77> up=0.994323 +13:29:10.097 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +13:29:10.097 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +13:29:10.097 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6101,7502.04> +13:29:10.097 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3101,7502.04> terrainY=63.3095 tireTerrainGap=0.000637054 +13:29:10.098 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6101,7502.04> radius=0.3 bottom=<7012.09,63.3101,7502.04> fraction=0.457278 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000602722 +13:29:10.098 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.99,64.5916,7497.74> +13:29:10.098 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.99,64.1416,7497.74> terrainY=64.1387 tireTerrainGap=0.00288391 +13:29:10.098 SCRIPT : ERR GEAR SUPPORT: center=<7009.99,64.5916,7497.74> radius=0.45 bottom=<7009.99,64.1416,7497.74> fraction=0.467751 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.0029068 +13:29:10.098 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.53,64.2594,7497.85> +13:29:10.098 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.53,63.8094,7497.85> terrainY=63.8111 tireTerrainGap=-0.00168228 +13:29:10.099 SCRIPT : ERR GEAR SUPPORT: center=<7014.53,64.2594,7497.85> radius=0.45 bottom=<7014.53,63.8094,7497.85> fraction=0.446667 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00173187 +13:29:10.099 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +13:29:10.351 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:10.352 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +13:29:10.352 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +13:29:10.365 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +13:29:10.365 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +13:29:10.366 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +13:29:10.366 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +13:29:10.366 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +13:29:10.366 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +13:29:10.366 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +13:29:11.300 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +13:29:11.337 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.491,7158.5> +13:29:11.522 SCRIPT : ERR SMOKE PASS: new identity may enter prison +13:29:11.522 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +13:29:11.522 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +13:29:11.523 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +13:29:11.523 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +13:29:11.523 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +13:29:11.523 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +13:29:11.523 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +13:29:11.523 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +13:29:11.524 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +13:29:11.526 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +13:29:11.526 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +13:29:11.527 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +13:29:11.527 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +13:29:11.529 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +13:29:11.529 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +13:29:11.530 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +13:29:11.531 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +13:29:49.175 SCRIPT : ERR SMOKE PASS: HQ memory automatic startup owns one canonical six-vehicle task +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 0 +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 1 +13:29:49.176 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 2 +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.177 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 3 +13:29:49.178 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 4 +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.179 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.180 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.180 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.180 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.181 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 5 +13:29:49.181 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.181 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +13:29:49.181 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +13:29:49.181 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy includes confirmed native turret gunners +13:29:49.182 SCRIPT : ERR SMOKE PASS: HQ memory automatic nineteen-body convoy respects shared physical budget +13:29:49.182 SCRIPT : ERR SMOKE PASS: HQ memory manual request after automatic startup cannot duplicate the convoy +13:29:49.182 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +13:29:49.182 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +13:29:49.183 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +13:29:49.184 SCRIPT : ERR SMOKE PASS: HQ memory road fixture has native Everon road manager +13:29:49.185 SCRIPT : ERR SMOKE PASS: HQ memory road fixture native query stays within bounded road count +13:29:49.185 SCRIPT : ERR SMOKE PASS: HQ memory arranged detached road snapshots accepted by private memory +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory native road choice is forward, nearby, dry and physically clear +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory chosen intercept lies on an actual native road segment +13:29:49.186 SCRIPT : ERR ROAD FIXTURE: arranged origin=<5896.23,149.499,6644.17> velocity=<2.25769,0,1.97559> chosen=<5941.39,149.611,6683.68> attempts=1 +13:29:49.186 SCRIPT : ERR SMOKE PASS: HQ memory same arranged belief aged46seconds refuses road interception +13:29:49.187 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +13:29:49.187 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +13:29:49.187 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +13:29:51.191 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +13:29:51.191 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +13:29:57.251 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +13:29:57.251 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +13:30:04.870 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +13:30:04.871 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +13:30:12.965 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +13:30:12.966 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +13:30:21.066 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +13:30:29.175 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +13:30:29.176 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +13:30:29.177 SCRIPT : INFO: KILL SUICIDE: jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) from US faction at <6088.5, 211.389, 7158.5> killed himself! +13:30:33.768 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +13:30:33.768 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +13:30:33.768 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +13:31:00.137 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +13:31:00.138 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +13:31:00.138 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +13:31:00.139 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +13:31:00.275 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +13:31:00.278 SCRIPT (W): Slot_Chat Has no Content! +13:31:00.278 SCRIPT (W): Slot_VON Has no Content! +13:31:00.278 SCRIPT (W): Slot_GameVersion Has no Content! +13:31:00.278 SCRIPT (W): Slot_Notifications Has no Content! +13:31:02.352 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +13:31:02.353 SCRIPT : -- Stack trace -- +13:31:02.353 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +13:31:02.353 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +13:31:02.353 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +13:31:02.353 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +13:31:02.353 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +13:31:02.353 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +13:31:02.353 SCRIPT : ----------------- +13:31:02.353 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +13:31:02.354 SCRIPT : -- Stack trace -- +13:31:02.354 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +13:31:02.354 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +13:31:02.354 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +13:31:02.354 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +13:31:02.354 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +13:31:02.354 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +13:31:02.354 SCRIPT : ----------------- +13:31:02.356 SCRIPT (W): Slot_Chat Has no Content! +13:31:02.356 SCRIPT (W): Slot_VON Has no Content! +13:31:02.356 SCRIPT (W): Slot_GameVersion Has no Content! +13:31:02.356 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-merged-mod/source-provenance.json b/docs/evidence/native-2026-09-20-merged-mod/source-provenance.json new file mode 100644 index 0000000..5fa4cc7 --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/source-provenance.json @@ -0,0 +1,4 @@ +{ + "schema_version": 1, + "kind": "launch_snapshot" +} diff --git a/docs/evidence/native-2026-09-20-merged-mod/source-sha256.json b/docs/evidence/native-2026-09-20-merged-mod/source-sha256.json new file mode 100644 index 0000000..ec2408c --- /dev/null +++ b/docs/evidence/native-2026-09-20-merged-mod/source-sha256.json @@ -0,0 +1,259 @@ +{ + "addons/core/Configs/ERR/AdminMenus.conf": "a7f889f260e43656136fc159342129e5f48748d28c426f65f9faac37b624cf94", + "addons/core/Configs/ERR/AdminMenus.conf.meta": "5faf5ddc0a51c1d0f82d60af00d91edc22fe9c39aac50d8d04b772a2c9271be1", + "addons/core/Configs/ERR/EveronSites.conf": "3e04698421ce989c996097ecf24214e7d926d2998918d60573aa403c4012b079", + "addons/core/Configs/ERR/EveronSites.conf.meta": "d5fe68025ef4e7c1e16082cf5873b7c7172eacbfaef4ab29b7e0e3c98f8dca56", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf": "5f74f4a7089c7e7b54ad62463159ce8f0bab25a6b85268dc3872ea6001e048fb", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf.meta": "00c368b6271d3440cc8bf627b03a384d247635723923fc5ad2104b8b4007b035", + "addons/core/Configs/ERR/Factions/US.conf": "4c3da063abb6e3ee39a6e4e0c5a9ffd5eae9d209d58470ea18b45dba5528db1b", + "addons/core/Configs/ERR/Factions/US.conf.meta": "a05469aef028e9e17eba545e81e2af2887b59f0fef17dac51a23c7b8155e381b", + "addons/core/Configs/ERR/Factions/USSR.conf": "407ea27f80a64c5184c089d43cdd0bdabfc5974c84f1d2a245081fdf2afa3f30", + "addons/core/Configs/ERR/Factions/USSR.conf.meta": "057397d97096346791b51b7b13fbe18af218bcf78e9984d9c01b49a2403de611", + "addons/core/Configs/ERR/GameOverScreens.conf": "45231061911a1462d45fb6db0fecc2b0793f17b5ae71017174954ff4fbd20236", + "addons/core/Configs/ERR/GameOverScreens.conf.meta": "eb654b745c0b97b41c991694569ef4877a3c2315e0826f9556337cd68690843e", + "addons/core/Configs/ERR/VanillaFactions.conf": "db890b61b48ee15484041fd2245a862d9fa9e7ba21b1229c281ff37c448a35b1", + "addons/core/Configs/ERR/VanillaFactions.conf.meta": "ac77725c0c21974991ef47a466b88122e939de8b46fd23e68889e7674cbb2bfd", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Missions/ERR_Everon_Base.conf": "c035afca636653b7751c49f85620edac23f7217fd135b98f8f891192f66c967a", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "addons/core/Prefabs/ERR/ConvoyCrew.et": "434d9bef9a9fcf0376604a9fbd547204cc544f5ed1a5b75228245151f02323ab", + "addons/core/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/core/Prefabs/ERR/Extraction.et": "1aa286ef253c5410f09fa641e4be91a7be8ec834487a7fbb74cfb45cab60ee1e", + "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", + "addons/core/Prefabs/ERR/FactionManager.et": "425f916b890019c537f6b2f72b1af9e7be54b0a476320da969e1f313a7ac5ea5", + "addons/core/Prefabs/ERR/FactionManager.et.meta": "9bf53d5e4bcbe60dd1a4ece1409fc23c349055c860708620f5f6e9716290a97d", + "addons/core/Prefabs/ERR/FieldCover.et": "20f8095e69dbfe3db74ff19078e528ea75405362b335e03560ccd61f8df2e7f3", + "addons/core/Prefabs/ERR/FieldCover.et.meta": "83461ffa76244e1d69f20b053a9741ccdf7d127009182bd540a7e5ba6150c3d9", + "addons/core/Prefabs/ERR/GameMode.et": "385c97a5b8067091d92aa60c2d4fcf02002cf606b95523866ead65c96b8c0029", + "addons/core/Prefabs/ERR/GameMode.et.meta": "106769cd34525c9d440057072836cb7401a6752148c40edd7fe61c03bd58328c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et": "a6e4ddb7f583c3bf82b5583d890bfbbd559e6b0e7176d36ba0ab3a0a2879915c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et.meta": "da6f065cb2414b5a4cbe9ef0f0b1295b2466f26ad406c0bddb83845d4598efb3", + "addons/core/Prefabs/ERR/MortarCrew.et": "05d3e7353ff9fe5523218a1487b31b7b742b0be8adbcb060c7099978cf008bce", + "addons/core/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/core/Prefabs/ERR/ObjectiveDocument.et": "2e72270bf186654af12d2c3ff9bf940690b03fb17fca44f873c1fde5d11384c0", + "addons/core/Prefabs/ERR/ObjectiveDocument.et.meta": "eaba9903be147b98a1106e2273e2270773df73b9b22f2cd4e20136a8e281382e", + "addons/core/Prefabs/ERR/Patrol.et": "c5685a8bc311cc5563fb3334beec9408d3d7a1069152fddeeb7df4f1b7f9e6ce", + "addons/core/Prefabs/ERR/Patrol.et.meta": "7c5da568fa2fcf0709ee2959253cb068d7c7ed7c2467af3b247a7e70efd96b69", + "addons/core/Prefabs/ERR/Prison.et": "dcd3f4dfd453303d026e68b64f7de6125bd3390822d8432dd95a3710a5b3df89", + "addons/core/Prefabs/ERR/Prison.et.meta": "2e426ef3de68f4107907854b51e818bc11d84649a01c538e3f18dd9ebec766bb", + "addons/core/Prefabs/ERR/PrisonDoor.et": "fc66be9d36f1f01084de59f1b0a1e8817f9e46547ead33d4fafaac0107446c40", + "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", + "addons/core/Prefabs/ERR/PrisonWall.et": "8009d19365ae72a4749d7ad4fa04662575b06c65c6bf06507d380d57258b5eed", + "addons/core/Prefabs/ERR/PrisonWall.et.meta": "0294bc5dbb56f90f8153d62459bb0a6ad91d76a479812bbec9c7db182fdb58d6", + "addons/core/Prefabs/ERR/Prisoner.et": "198b5badabb12f218f86df7eb4dc268fd830769dc3de7eef6362cfaee4d6fc8d", + "addons/core/Prefabs/ERR/Prisoner.et.meta": "974278ba49fafeed70b619a0067bbc70ae4d534be441c812ce2bef4a5fb3c022", + "addons/core/Prefabs/ERR/Radio.et": "b4b5cfe125b39019855816c9a1c508ca4d65d435b5546fdaa6c1fa3c8c9b1165", + "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", + "addons/core/Prefabs/ERR/SpectatorCamera.et": "b5b87d5b7b707f3745741aebe7c923067c8a74f8fbb2a4711834bab03bb5a812", + "addons/core/Prefabs/ERR/SpectatorCamera.et.meta": "2a16558f93915e31908a674509e9c89976470f78a84a1174a64b94b68b8f77ad", + "addons/core/Prefabs/ERR/SupplyCache.et": "bccf7afbaae97cfcdd78dd6dbbf4be5b2c045d348f50fe4581962e556c0044d7", + "addons/core/Prefabs/ERR/SupplyCache.et.meta": "2f5de3a4aab1e9d0e35521f48dc57b95bd6e449c383dec4f1c258e10295904cb", + "addons/core/Prefabs/ERR/SupplySite.et": "dc5decce5cabf39b6116e8794ec3960cb1e35761854fdbe69740da118787ded4", + "addons/core/Prefabs/ERR/SupplySite.et.meta": "b41944b12eb3528ff7a3ac94258b18c66ef161aa6a38894aee300a1ac4798630", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et": "ea177fff89ec82bfebce0fdb26699e5c3af4999cdb50bf7cc7771a6d2e70d684", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et.meta": "544c94cf1c26757a10654de7856cd6cc48b821ce3bdc02add13cfe6514269915", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et": "7f7dfcd3460d0100fd893dabe930baf1032ce6879f1e8bfccb4d086a8234e80a", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et.meta": "123955da03462befb90e293b3bb856d49cc761166611b38ff47cb48ec2fbe95c", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c": "8a5ccf1fff1442dfe7ab4cb3cc858ee16adb073119144187155ade558b8c4c5f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c": "6cfb7de35bbbc18bd6d35c63da01284ffb08b8641527d49283d9b9b0cb94f8c2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "e17bd68f82012bff7c1953cf1adc86fe1cdefbc01d3b5eb88fa96f956bb4f135", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c": "1d8987d2dcc1db2a030e095b33d50f07877181037d339624156291d8317bfa5d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "41a35f806d925d025534247b0705d7eb47f134d181e5b819a149be7909ba4cc1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "a47a1ee3a62d170a06b54cce3c42fac7c3645cf6a89c827a1dfe51ae0a99ce12", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "2e295b0f225208c5414728ba83333e5e0ab6eef3a708ce39eb1dfce5400c94c9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c": "360228fd45aa6ecd9426e36120b5e637d2feee1e3a4a89aac8207526b871c87e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c": "b16a8b31be20271c37c4d68c169f08b28d88993d296308b80de00715ea2b4dfe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c": "0c8ce2f3d2642999a7158000e60d8c491ed3e4b6d9c0d3d18b3e3ecc3e557196", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "0921c04c313f36f23aaab35fdea05bb479a81f01acc62c715ca3b3e366d67f81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c": "298ae30d1db1191d680a5a8f60253f9344e0e19fe9c17242c757382042364341", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c": "d5337ce8073335ccb4b03d447550a38e03d6fc9e428008be3a7b042c078f4835", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "85e4d2cb27426c07b8631ca411f4b8f5c821f9f331c8c2719cbfa71b3687f08e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c": "0897e82d7805ef56f05f2b9c23903280285ea6bfa51796a2df86bb564ece78f7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c": "53cd74d121292f6f6813c2b69e475f29dba9239bc10cbaf55ce1d7f8fb3674f6", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c": "917f9df36b93258a30b7af24b0ee52b65c5205405d8056bb721a9868010d64d1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c": "84cec6457132eff6d195bc6fc8fcee267685693edbb987cbeafaece0f7537992", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c": "5d9b5d4b1d22d57145e79b5a740863a5233706fd8b11046d2512a681f8a615a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "9f8f0844862ef98b0878290238a410d501ea99622cd5e517fcacd9a9187f889a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c": "7379cb65bde95bd1e7ffc2203a7fb7957435d379560e08b470e73a89ea6b59cf", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c": "4493c6b6070cd7d768a2fcba2d8934b782c9a221ae257a530aa6b52fa40d88a8", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c": "0d4d61c424a16008595f86fa61f3b848caf9bd6e9ebbacea9c10254d88ba378e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "2ceeae7c7c373fbf894f491903b29d51543949c323b06ce9989c68282129166e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c": "a747af09599ce4d0c52051f18f00c4624d24d137e328341b580b82e896c6bf65", + "addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/core/UI/layouts/ERR/AdminMenu.layout": "26db9780c0afffa8429602c27ee347a4e665a19a6872b15f4178d684de7e23b6", + "addons/core/UI/layouts/ERR/AdminMenu.layout.meta": "9deeece996f43b1f1fed6b5ec89279645c7b6424250200a42580cc088142e9bf", + "addons/core/UI/layouts/ERR/PreparationStatus.layout": "bd269cf8dc6f27735423743dd5b78242550518414448a0256e5e12fa6b92c459", + "addons/core/UI/layouts/ERR/PreparationStatus.layout.meta": "75b12176a443bb911fc4ad446982d762201fda42ed38736b79bc5439fca31ccc", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", + "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", + "addons/core/Worlds/ERR_Everon_Layers/default.layer": "17105538007199bfc419aa04a64debaf2da0a7b77a1dc3ba983e92bf747c862e", + "addons/core/addon.gproj": "683a522c7f7f5d5ff41c57b0f0947f3cd2ec866b656a5f449af55688956eb5fa" +} diff --git a/docs/evidence/native-2026-09-20-prefab-ids/console.log.txt b/docs/evidence/native-2026-09-20-prefab-ids/console.log.txt new file mode 100644 index 0000000..c33ced1 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/console.log.txt @@ -0,0 +1,694 @@ +--------------------------------------------- +Log Z:\tmp\erri-prefab-ids-combined\logs\logs_2026-09-20_14-12-15\console.log started at 2026-09-20 14:12:15 (2026-09-20 12:12:15 UTC) + +14:12:15.702 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-prefab-ids-combined\logs\logs_2026-09-20_14-12-15' to filesystem under name logs +14:12:15.703 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-prefab-ids-combined\profile' to filesystem under name profile +14:12:15.703 ENGINE : FileSystem: Current working directory: 'Z:\home\jakub\.local\share\Steam\steamapps\common\Arma Reforger Tools\Workbench\' +14:12:15.704 PROFILING : Workbench Create Engine took: 8.554800 ms +14:12:16.738 INIT : INIT : Workbench Init Engine +14:12:16.739 ENGINE : Initializing engine, version 192142 +14:12:16.739 ENGINE : CLI Params: -gproj Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj -addonsDir Z:/home/jakub/devel/escapistsrereintroduced/addons -profile Z:/tmp/erri-prefab-ids-combined -logconsole -wbModule WorldEditor -load Worlds/ERR_Everon.ent -plugin ERR_ValidateWorldPlugin -errPlay 1 -errSmoke 1 -errSmokeOutcome hq-memory -noThrow -disableCrashReporter +14:12:16.751 ENGINE : Addon dirs: +14:12:16.751 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/' +14:12:16.751 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons' +14:12:16.751 ENGINE : dir: './addons' +14:12:16.751 ENGINE : dir: 'Z:/tmp/erri-prefab-ids-combined/addons' +14:12:16.751 ENGINE : Available addons: +14:12:16.751 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +14:12:16.751 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed) +14:12:16.751 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed) +14:12:16.751 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed) +14:12:16.751 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed) +14:12:16.751 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed) +14:12:16.751 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed) +14:12:16.751 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed) +14:12:16.751 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed) +14:12:16.752 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\core' to filesystem under name ERR_Core +14:12:16.753 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1 +14:12:16.754 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore +14:12:16.756 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments +14:12:16.761 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core +14:12:16.763 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02 +14:12:16.769 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01 +14:12:16.879 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prefab-ids-combined/addons/ArmaReforger/' (pak count: 14) to filesystem under name ArmaReforger +14:12:16.883 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core +14:12:16.883 ENGINE : CPU vendor : AuthenticAMD +14:12:16.883 ENGINE : CPU type : 2 +14:12:16.883 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor +14:12:16.883 ENGINE : CPU cache info : L1 [Inst 32KB, Data 32KB], L2 [Unif 512KB], L3 [Unif 16384KB] +14:12:16.883 ENGINE : CPU count logical : 16 +14:12:16.883 ENGINE : CPU count physical : 8 +14:12:16.883 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2 +14:12:16.883 RESOURCES : ResourceDB: loading cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +14:12:16.883 RESOURCES : ResourceDB: loading cache (id=1 name=WCS_BMP-1 path=Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb) +14:12:16.884 RESOURCES : ResourceDB: loading cache (id=2 name=WCS_SpaceCore path=Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb) +14:12:16.885 RESOURCES : ResourceDB: loading cache (id=3 name=WCS_Armaments path=Z:/tmp/erri-prefab-ids-combined/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb) +14:12:16.888 RESOURCES : ResourceDB: loading cache (id=4 name=RHS_Core path=Z:/tmp/erri-prefab-ids-combined/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb) +14:12:16.899 RESOURCES : ResourceDB: loading cache (id=5 name=RHS_Content_02 path=Z:/tmp/erri-prefab-ids-combined/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb) +14:12:16.901 RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Content_01 path=Z:/tmp/erri-prefab-ids-combined/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb) +14:12:16.907 RESOURCES : ResourceDB: loading cache (id=7 name=ArmaReforger path=Z:/tmp/erri-prefab-ids-combined/addons/ArmaReforger/resourceDatabase.rdb) +14:12:17.039 RESOURCES : ResourceDB: loading cache (id=8 name=core path=./addons/core/resourceDatabase.rdb) +14:12:17.041 RESOURCES : ResourceDB: loading cache (id=9 name=profile path=Z:\tmp\erri-prefab-ids-combined\profile/resourceDatabase.rdb) +14:12:17.041 RESOURCES : ResourceDB: loading cache (id=10 name=logs path=Z:\tmp\erri-prefab-ids-combined\logs\logs_2026-09-20_14-12-15/resourceDatabase.rdb) +14:12:17.197 RESOURCES : RESOURCES : ResourceDB: full scan +14:12:17.202 RESOURCES : RESOURCES : scanning... +14:12:17.202 RESOURCES : RESOURCES : scanning @"ERR_Core" +14:12:17.219 RESOURCES : RESOURCES : scanning @"WCS_BMP-1" +14:12:17.222 RESOURCES : RESOURCES : scanning @"WCS_SpaceCore" +14:12:17.226 RESOURCES : RESOURCES : scanning @"WCS_Armaments" +14:12:17.231 RESOURCES : RESOURCES : scanning @"RHS_Core" +14:12:17.242 RESOURCES : RESOURCES : scanning @"RHS_Content_02" +14:12:17.246 RESOURCES : RESOURCES : scanning @"RHS_Content_01" +14:12:17.254 RESOURCES : RESOURCES : scanning @"ArmaReforger" +14:12:17.473 RESOURCES : RESOURCES : scanning @"core" +14:12:17.477 RESOURCES : RESOURCES : scanning @"profile" +14:12:17.477 RESOURCES : RESOURCES : scanning @"logs" +14:12:17.478 RESOURCES : RESOURCES : processing meta-files... +14:12:17.549 RESOURCES : RESOURCES : processing files... +14:12:17.550 INIT : Workbench startup +14:12:17.550 INIT : Workbench Init Engine +14:12:17.550 RESOURCES : ResourceDB: full scan +14:12:17.550 RESOURCES : processing files... +14:12:17.550 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +14:12:17.562 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +14:12:17.562 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +14:12:17.562 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +14:12:17.562 RESOURCES : RESOURCES : processing folders... +14:12:17.571 RESOURCES : RESOURCES : creating GUID-item mapping... +14:12:17.590 RESOURCES : RESOURCES : building tree... +14:12:17.650 PROFILING : ResourceDB: full scan took: 453.572300 ms +14:12:17.651 RESOURCES : ResourceDB: saving cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +14:12:17.653 RESOURCES : ResourceDB: written 15688/15688 bytes +14:12:17.653 RESOURCES : ResourceDB: cache successfully saved +14:12:17.653 RESOURCES : ResourceDB: saving cache (id=9 name=profile path=Z:\tmp\erri-prefab-ids-combined\profile/resourceDatabase.rdb) +14:12:17.655 RESOURCES : ResourceDB: written 51/51 bytes +14:12:17.655 RESOURCES : ResourceDB: cache successfully saved +14:12:17.655 RESOURCES : ResourceDB: saving cache (id=10 name=logs path=Z:\tmp\erri-prefab-ids-combined\logs\logs_2026-09-20_14-12-15/resourceDatabase.rdb) +14:12:17.656 RESOURCES : ResourceDB: written 208/208 bytes +14:12:17.656 RESOURCES : ResourceDB: cache successfully saved +14:12:17.656 ENGINE : GameProject load +14:12:17.656 ENGINE : Loaded addons: +14:12:17.656 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' +14:12:17.656 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' +14:12:17.656 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' +14:12:17.656 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' +14:12:17.656 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' +14:12:17.656 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' +14:12:17.656 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' +14:12:17.656 ENGINE : gproj: 'Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' +14:12:17.656 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +14:12:17.659 ENGINE : GameProject load +14:12:17.659 INIT : GameProject load project data @"Z:/tmp/erri-prefab-ids-combined/addons/ERRI_595F2BF2F44836FB/addon.gproj" +14:12:17.659 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +14:12:17.659 INIT : GameProject load project data @"Z:/tmp/erri-prefab-ids-combined/addons/ERRI_629B2BA37EFFD577/addon.gproj" +14:12:17.659 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +14:12:17.660 INIT : GameProject load project data @"Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +14:12:17.660 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +14:12:17.660 INIT : GameProject load project data @"Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +14:12:17.660 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +14:12:17.660 ENGINE : Loading custom engine user config '$profile:.save/app1874910_user76561198020202999/settings/ReforgerEngineSettings.conf' +14:12:17.660 ENGINE : No Enfusion settings file loaded. Continuing with defaults +14:12:17.756 RENDER : (OK) Adapter 'AMD Radeon RX 6950 XT (RADV NAVI21)' supports feature level 12_0 +14:12:17.757 RENDER : Basic screen setup: +14:12:17.757 RENDER : Back buffer format : TEXFMT_R8G8B8A8_SRGB (29) +14:12:17.757 RENDER : MSAA : none +14:12:17.771 RENDER : AMD AGS library initialized, version 6.1.0 x DLL 6.1.0 +14:12:17.771 RENDER : Extendeded AMD info for AMD Radeon RX 6950 XT (RADV NAVI21) (primary device) +14:12:17.771 RENDER : * architecture RDNA2, 80 CUs, 40 WGPs (for RDNA), 64 ROPs +14:12:17.771 RENDER : * core clocks 2720 MHz, memory 1124 MHz +14:12:17.771 RENDER : * TFlops 27.9, memory bandwidth (562.0 GB/s) +14:12:17.771 RENDER : AMD AGS correctly initialized +14:12:17.771 RENDER : GPU_ATI (0x1002) (AMD Radeon RX 6950 XT (RADV NAVI21)) with 1 GPU detected, VRAM 16128MB (fast 0MB), shared 64362MB, driver version 99.19.02-230831a-396538C-AMD-Software-Adrenalin-Edition +14:12:17.771 RENDER : Detected output devices: +14:12:17.771 RENDER : * 1 device/s connected to AMD Radeon RX 6950 XT (RADV NAVI21): +14:12:17.771 RENDER : Generic Non-PnP Monitor (\\.\DISPLAY1), 1280x720 (offset 0x0), 30Hz +14:12:17.771 RENDER : Concurrent frames limit 2 +14:12:17.849 RENDER : DX12 device successfully created by AMD AGS library +14:12:17.849 RENDER : * user markers not supported in this version AMD SW +14:12:17.849 RENDER : Graphics device features +14:12:17.849 RENDER : Needed: +14:12:17.849 RENDER : * Highest supported shader model: 6.8 (6.0 needed) +14:12:17.849 RENDER : Optional: +14:12:17.849 RENDER : * Allow tearing (VSYNC) : 1 +14:12:17.849 RENDER : * 16 bits : 1 +14:12:17.849 RENDER : * Resource heap tier : 3 +14:12:17.849 RENDER : * Persistent heaps (DRED) : 1 +14:12:17.849 RENDER : * DRED 1.2 is supported by compiler +14:12:17.870 RENDER : Main RT format setup. +14:12:17.870 RENDER : Main RT format for quality 0 : TEXFMT_R11G11B10_FLOAT (26) +14:12:17.870 RENDER : Main RT format for quality 1 : TEXFMT_R16G16B16A16_FLOAT (10) +14:12:17.871 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=16 +14:12:17.899 PROFILING : Settings changed took: 0.019400 ms +14:12:18.373 AUDIO : Endpoint: Speakers (PulseAudio Output) +14:12:18.373 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +14:12:18.373 AUDIO : Audio client: +14:12:18.373 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +14:12:18.376 RENDER : RENDER : Reload shaders +14:12:18.376 RENDER : Enfusion shader version 13 +14:12:18.376 INIT : INIT : ShaderListReload +14:12:18.376 PROFILING : ShaderListReload took: 0.000400 ms +14:12:18.520 AUDIO : Endpoint: Speakers (PulseAudio Output) +14:12:18.520 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +14:12:18.520 AUDIO : Audio client: +14:12:18.520 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +14:12:18.637 RENDER : Loaded 3752 newer shader binaries +14:12:18.637 PROFILING : Reload shaders took: 260.900200 ms +14:12:18.637 ENGINE : Initializing inputs. +14:12:18.652 NETWORK : Initializing networking. +14:12:18.652 NETWORK : Using new GameRplScheduler. +14:12:18.653 SCRIPT : SCRIPT : Initializing scripts +14:12:18.653 SCRIPT : SCRIPT : ScriptProjectManager init +14:12:20.398 PROFILING : ScriptProjectManager init took: 1745.309200 ms +14:12:20.432 PROFILING : Initializing scripts took: 1778.554900 ms +14:12:20.448 ENGINE : Enfusion engine successfully created. +14:12:20.448 PROFILING : Workbench Init Engine took: 3709.483700 ms +14:12:20.448 INIT : INIT : Workbench Create Game +14:12:20.458 GUI : Using default language (en_us) +14:12:20.458 GUI : Loading 'en_us' localization file. +14:12:20.458 INIT : INIT : Loading StringTable +14:12:20.485 PROFILING : Loading StringTable took: 26.604600 ms +14:12:20.485 SCRIPT : SCRIPT : Compiling GameLib scripts +14:12:20.533 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +14:12:20.533 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +14:12:20.534 PROFILING : Compiling GameLib scripts took: 48.980600 ms +14:12:20.534 SCRIPT : SCRIPT : Compiling Game scripts +14:12:21.731 INIT : Workbench Create Game +14:12:21.731 SCRIPT : Compiling Game scripts +14:12:21.731 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +14:12:21.731 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +14:12:22.060 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.072 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +14:12:22.111 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +14:12:22.258 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.270 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +14:12:22.336 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +14:12:22.336 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +14:12:22.338 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +14:12:22.372 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.394 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.394 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.396 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +14:12:22.396 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +14:12:22.423 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.450 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +14:12:22.824 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 436d9397 +14:12:22.831 SCRIPT : Module: Game; loaded 6506x files; 13190x classes; used 39262K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: bb2782cb +14:12:22.877 PROFILING : Compiling Game scripts took: 2344.208500 ms +14:12:22.882 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +14:12:22.930 ENGINE : Game successfully created. +14:12:22.931 PROFILING : Workbench Create Game took: 2484.271000 ms +14:12:22.939 DEFAULT : Using thumbnail cache directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/thumbnails +14:12:23.784 INIT : INIT : Workbench Reload Game +14:12:23.786 ENGINE : Game destroyed. +14:12:23.792 GUI : Using default language (en_us) +14:12:23.792 GUI : Loading 'en_us' localization file. +14:12:23.792 INIT : INIT : Loading StringTable +14:12:23.803 PROFILING : Loading StringTable took: 10.789800 ms +14:12:23.803 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +14:12:23.811 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:12:23.811 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:12:23.811 ENGINE : Game successfully created. +14:12:23.811 ENGINE : Game successfully initialized. +14:12:23.811 PROFILING : Workbench Reload Game took: 27.203700 ms +14:12:24.523 WORLD : WORLD : Entities load '$ERR_Core:Worlds/ERR_Everon.ent' +14:12:25.517 PROFILING : Entities load took: 994.165700 ms +14:12:25.527 WORLD : WORLD : CreateEntities +14:12:25.532 WORLD : WORLD : NotifyBeforeEntitiesCreated +14:12:25.532 PROFILING : NotifyBeforeEntitiesCreated took: 0.003300 ms +14:12:25.532 WORLD : WORLD : Wait for preloading data +14:12:25.532 PROFILING : Wait for preloading data took: 0.003000 ms +14:12:25.637 ENTITY : Create entity @"ENTITY:2" ('Eden', GenericTerrainEntity) at <0.000000 0.000000 0.000000> @"{5AD924374E8C7AF6}Prefabs/World/Game/Eden/GenericTerrain_Eden.et" +14:12:25.637 PROFILING : PROFILING : Terrain load +14:12:27.221 PROFILING : Terrain load took: 1583.320400 ms +14:12:31.094 WORLD : CreateEntities +14:12:31.094 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:12:31.094 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:12:31.094 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:12:40.599 WORLD : WORLD : NotifyBeforeEntitiesInitialized +14:12:40.599 PROFILING : NotifyBeforeEntitiesInitialized took: 0.005400 ms +14:12:41.023 WORLD : WORLD : NotifyEntitiesInitialized +14:12:41.023 TERRAIN : TERRAIN : Initializing road networks... +14:12:41.026 PROFILING : Initializing road networks... took: 2.532800 ms +14:12:41.026 PROFILING : NotifyEntitiesInitialized took: 2.932700 ms +14:12:41.026 PROFILING : CreateEntities took: 15497.195100 ms +14:12:41.199 PROFILING : * WorldEditor: LoadWorld: 16680.626700 ms +14:12:42.621 TERRAIN : Loading tile map config (worlds/Eden/Eden/tileMap.conf) +14:12:42.621 TERRAIN : Loading minimap config (worlds/Eden/Eden/miniMap.conf) +14:12:42.622 TERRAIN : The default minimap texture ('worlds/Eden/EdenRasterized.edds') not found. Trying 'worlds/Eden/Eden.edds'... +14:12:42.622 TERRAIN : The default minimap texture ('worlds/Eden/Eden.edds') not found. Skipping... +14:12:42.711 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +14:12:42.736 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +14:12:42.758 BACKEND : Attempting online Game Config instead. +14:12:45.616 INIT : INIT : Workbench Reload Game +14:12:45.618 ENGINE : Game destroyed. +14:12:45.624 GUI : Using default language (en_us) +14:12:45.624 GUI : Loading 'en_us' localization file. +14:12:45.625 INIT : INIT : Loading StringTable +14:12:45.646 PROFILING : Loading StringTable took: 20.866400 ms +14:12:45.646 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +14:12:45.654 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:12:45.654 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:12:45.654 ENGINE : Game successfully created. +14:12:45.654 ENGINE : Game successfully initialized. +14:12:45.654 PROFILING : Workbench Reload Game took: 37.937800 ms +14:12:45.656 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +14:12:45.703 PLATFORM : Save data from container 'settings' have been loaded +14:12:45.854 PLATFORM : Save data from container 'sessions' have been loaded +14:12:45.891 DEFAULT : [SaveGameManager] Starting new playthrough nr.0 '' for mission '{B6C516F86302C679}Worlds/ERR_Everon.ent'. +14:12:45.900 WORLD : WORLD : Game::LoadEntities +14:12:45.900 WORLD : WORLD : Initializing world systems @"{1C60D2EDA2B468B8}Configs/Systems/BaseGameModeSystems.conf" +14:12:45.901 NETWORK : Enabled lag compensation, 29 frames with 100 FPS and 280 ms rewind limits. +14:12:45.901 WORLD : WORLD : CreateEntities +14:12:45.901 WORLD : WORLD : CreateEntities +14:12:45.901 WORLD : WORLD : NotifyBeforeEntitiesCreated +14:12:45.906 RESOURCES : Loaded mission headers from 9 addon(s)! +14:12:45.906 PROFILING : NotifyBeforeEntitiesCreated took: 5.486400 ms +14:12:45.906 WORLD : WORLD : Wait for preloading data +14:12:45.906 PROFILING : Wait for preloading data took: 0.000600 ms +14:12:49.952 WORLD : Game::LoadEntities +14:12:49.952 WORLD : CreateEntities +14:12:49.952 WORLD : CreateEntities +14:12:49.952 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:12:49.952 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:12:49.952 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:12:51.336 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +14:12:51.336 ENTITY : CreateComponent 'Hierarchy' +14:12:51.336 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +14:12:51.336 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +14:12:51.336 ENTITY : CreateComponent 'Hierarchy' +14:12:51.336 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +14:12:51.336 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +14:12:51.336 ENTITY : CreateComponent 'Hierarchy' +14:12:51.336 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +14:12:51.341 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +14:12:51.341 ENTITY : CreateComponent 'Hierarchy' +14:12:51.341 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +14:12:51.341 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +14:12:51.341 ENTITY : CreateComponent 'Hierarchy' +14:12:51.341 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +14:12:51.341 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +14:12:51.341 ENTITY : CreateComponent 'Hierarchy' +14:12:51.341 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +14:12:51.345 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +14:12:51.346 ENTITY : CreateComponent 'Hierarchy' +14:12:51.346 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +14:12:51.346 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +14:12:51.346 ENTITY : CreateComponent 'Hierarchy' +14:12:51.346 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +14:12:51.346 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +14:12:51.346 ENTITY : CreateComponent 'Hierarchy' +14:12:51.346 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +14:12:55.983 WORLD : WORLD : NotifyBeforeEntitiesInitialized +14:12:55.983 PROFILING : NotifyBeforeEntitiesInitialized took: 0.041400 ms +14:12:57.916 WORLD : InitEntities 'world' +14:12:57.916 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +14:12:57.916 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +14:12:57.940 WORLD : InitEntities 'world' +14:12:57.940 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +14:12:57.940 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +14:12:57.941 WORLD : WORLD : NotifyEntitiesInitialized +14:12:57.941 TERRAIN : TERRAIN : Initializing road networks... +14:12:57.943 PROFILING : Initializing road networks... took: 2.315900 ms +14:12:57.943 DEFAULT : DEFAULT : WorldVolumesCollection +14:12:57.997 PROFILING : WorldVolumesCollection took: 53.370100 ms +14:12:57.997 INIT : INIT : SoundWorldInit +14:12:58.011 PROFILING : SoundWorldInit took: 13.658500 ms +14:12:58.011 PROFILING : NotifyEntitiesInitialized took: 69.548400 ms +14:12:58.011 PROFILING : CreateEntities took: 12110.464000 ms +14:12:58.011 PROFILING : CreateEntities took: 12110.664500 ms +14:12:58.011 WORLD : WORLD : Wait for preloading data around camera +14:12:58.011 PROFILING : Wait for preloading data around camera took: 0.000900 ms +14:12:58.011 WORLD : WORLD : EOnActivate +14:12:58.043 PROFILING : EOnActivate took: 31.608900 ms +14:12:58.043 PROFILING : Game::LoadEntities took: 12144.206900 ms +14:12:58.336 DEFAULT : Entered offline game state. +14:13:02.176 SCRIPT : Map load time: 2264ms +14:13:02.176 NETWORK : Player connected: connectionID=2147483646 +14:13:02.177 NETWORK : ### Connecting player: connectionID=2147483646, Name= +14:13:02.177 NETWORK : ### Creating player: PlayerId=1, Name=jakub +14:13:02.182 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:13:02.182 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +14:13:02.182 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:13:02.182 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +14:13:02.183 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +14:13:02.184 SCRIPT (W): Can't open config file "" +14:13:02.190 WORLD : InitEntities 'world' +14:13:02.190 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:13:02.190 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +14:13:02.190 SCRIPT (W): Slot_WeaponInfo Has no Content! +14:13:02.191 SCRIPT (W): Slot_Chat Has no Content! +14:13:02.191 SCRIPT (W): Slot_VON Has no Content! +14:13:02.191 SCRIPT (W): Slot_AvailableActions Has no Content! +14:13:02.191 SCRIPT (W): Slot_Vehicle Has no Content! +14:13:02.191 SCRIPT (W): Slot_GameVersion Has no Content! +14:13:02.191 SCRIPT (W): Slot_Notifications Has no Content! +14:13:02.191 SCRIPT (W): Slot_Hints Has no Content! +14:13:02.202 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:13:02.203 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +14:13:02.203 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:13:02.203 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:13:02.203 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:13:02.207 NETWORK : ### Updating player: PlayerId=1, Name=jakub, rplIdentity=0xFFFFFFFE, IdentityId=00000000-0000-0000-0000-000000000000 +14:13:02.207 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +14:13:02.207 NETWORK : Players connecting: 0 +14:13:02.207 NETWORK : Players connected: 1 / 1 +14:13:02.233 DEFAULT : Using autosave directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/autosaves +14:13:02.235 PROFILING : Workbench startup took: 46589.706000 ms +14:13:02.257 WORLD : Frame start +14:13:02.257 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +14:13:02.269 WORLD : UpdateEntities +14:13:02.269 WORLD : Frame +14:13:02.270 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +14:13:02.440 WORLD : UpdateEntities +14:13:02.440 WORLD : PostFrame +14:13:02.440 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +14:13:02.440 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +14:13:02.481 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:13:02.481 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:13:02.482 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +14:13:02.482 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +14:13:02.629 RENDER : RENDER : ObjectsHeightMap::Build +14:13:02.629 RENDER : RENDER : MeshOccupancyGridManager::GenerateAllForWorld +14:13:02.769 PROFILING : MeshOccupancyGridManager::GenerateAllForWorld took: 140.269900 ms +14:13:02.777 PROFILING : ObjectsHeightMap::Build took: 147.528200 ms +14:13:03.909 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +14:13:03.929 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +14:13:03.929 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +14:13:03.957 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +14:13:03.959 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +14:13:04.008 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:13:04.009 WORLD : InitEntities 'world' +14:13:04.009 ENTITY : Init entity @"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:13:04.009 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +14:13:04.011 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +14:13:04.011 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +14:13:04.019 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +14:13:04.065 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +14:13:04.065 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +14:13:04.067 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +14:13:04.067 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +14:13:04.070 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +14:13:04.072 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +14:13:04.072 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +14:13:04.073 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +14:13:04.073 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +14:13:04.073 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +14:13:04.074 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +14:13:04.074 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +14:13:04.074 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +14:13:04.074 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:13:04.074 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +14:13:04.074 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +14:13:04.075 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:13:04.075 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +14:13:04.075 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +14:13:04.075 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:13:04.075 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.075 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.076 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.076 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.076 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.076 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.871 WORLD : UpdateEntities +14:13:04.871 WORLD : AfterPostSimulate +14:13:04.871 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +14:13:04.929 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:04.930 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:04.930 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:04.930 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:05.182 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.09,63.5287,7499.71> up=0.995672 +14:13:05.183 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.288032 angularSpeed=0.0798343 +14:13:05.183 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:05.183 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6136,7501.98> +14:13:05.183 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3136,7501.98> terrainY=63.3155 tireTerrainGap=-0.0018692 +14:13:05.184 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6136,7501.98> radius=0.3 bottom=<7012.07,63.3136,7501.98> fraction=0.446499 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.00177002 +14:13:05.184 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.6002,7497.71> +14:13:05.184 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.1502,7497.71> terrainY=64.1543 tireTerrainGap=-0.00406647 +14:13:05.184 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.6002,7497.71> radius=0.45 bottom=<7009.89,64.1502,7497.71> fraction=0.436099 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00405884 +14:13:05.184 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2623,7497.76> +14:13:05.184 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8123,7497.76> terrainY=63.8172 tireTerrainGap=-0.00490952 +14:13:05.185 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2623,7497.76> radius=0.45 bottom=<7014.43,63.8123,7497.76> fraction=0.432222 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00490952 +14:13:05.185 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:05.433 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:05.434 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:05.434 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:05.434 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:05.942 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:05.943 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:05.943 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:06.194 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.1,63.5333,7499.72> up=0.994245 +14:13:06.194 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.092914 angularSpeed=0.0323928 +14:13:06.195 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:06.195 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6176,7502> +14:13:06.195 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3176,7502> terrainY=63.3132 tireTerrainGap=0.0043869 +14:13:06.195 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6176,7502> radius=0.3 bottom=<7012.07,63.3176,7502> fraction=0.47451 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00439072 +14:13:06.195 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.93,64.6009,7497.72> +14:13:06.196 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.93,64.1509,7497.72> terrainY=64.1477 tireTerrainGap=0.00318909 +14:13:06.196 SCRIPT : ERR GEAR SUPPORT: center=<7009.93,64.6009,7497.72> radius=0.45 bottom=<7009.93,64.1509,7497.72> fraction=0.469136 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00321198 +14:13:06.196 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.47,64.2645,7497.79> +14:13:06.196 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.47,63.8145,7497.79> terrainY=63.8147 tireTerrainGap=-0.000209808 +14:13:06.196 SCRIPT : ERR GEAR SUPPORT: center=<7014.47,64.2645,7497.79> radius=0.45 bottom=<7014.47,63.8145,7497.79> fraction=0.453333 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.000267029 +14:13:06.196 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:06.444 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:06.444 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:06.444 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:06.444 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:06.698 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +14:13:06.953 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:06.953 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:06.954 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:06.954 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:07.209 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.12,63.5307,7499.75> up=0.993898 +14:13:07.209 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0482005 angularSpeed=0.0172409 +14:13:07.210 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:07.210 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6119,7502.02> +14:13:07.210 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3119,7502.02> terrainY=63.311 tireTerrainGap=0.000865936 +14:13:07.210 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6119,7502.02> radius=0.3 bottom=<7012.07,63.3119,7502.02> fraction=0.458264 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00082016 +14:13:07.210 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.97,64.5939,7497.73> +14:13:07.211 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.97,64.1439,7497.73> terrainY=64.1416 tireTerrainGap=0.00229645 +14:13:07.211 SCRIPT : ERR GEAR SUPPORT: center=<7009.97,64.5939,7497.73> radius=0.45 bottom=<7009.97,64.1439,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:13:07.211 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.51,64.2603,7497.84> +14:13:07.211 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.51,63.8103,7497.84> terrainY=63.8119 tireTerrainGap=-0.00164413 +14:13:07.211 SCRIPT : ERR GEAR SUPPORT: center=<7014.51,64.2603,7497.84> radius=0.45 bottom=<7014.51,63.8103,7497.84> fraction=0.446944 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00167084 +14:13:07.211 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:07.460 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:07.461 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:07.461 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:07.461 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:07.968 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:07.969 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:07.969 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:07.969 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:08.224 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993805 +14:13:08.224 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:13:08.224 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:08.225 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6122,7502.02> +14:13:08.225 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3122,7502.02> terrainY=63.3109 tireTerrainGap=0.00127029 +14:13:08.225 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6122,7502.02> radius=0.3 bottom=<7012.08,63.3122,7502.02> fraction=0.46034 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00127411 +14:13:08.226 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5929,7497.73> +14:13:08.226 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1429,7497.73> terrainY=64.1406 tireTerrainGap=0.00226593 +14:13:08.226 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5929,7497.73> radius=0.45 bottom=<7009.98,64.1429,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:13:08.226 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2598,7497.84> +14:13:08.226 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8098,7497.84> terrainY=63.8117 tireTerrainGap=-0.00190353 +14:13:08.226 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2598,7497.84> radius=0.45 bottom=<7014.52,63.8098,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +14:13:08.226 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:08.478 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:08.479 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:08.479 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:08.479 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:08.992 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:08.992 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:08.992 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:08.992 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:09.245 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993805 +14:13:09.245 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:13:09.245 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:09.246 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6122,7502.02> +14:13:09.246 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3122,7502.02> terrainY=63.3109 tireTerrainGap=0.00127029 +14:13:09.246 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6122,7502.02> radius=0.3 bottom=<7012.08,63.3122,7502.02> fraction=0.46034 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00127411 +14:13:09.247 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5929,7497.73> +14:13:09.248 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1429,7497.73> terrainY=64.1406 tireTerrainGap=0.00226593 +14:13:09.248 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5929,7497.73> radius=0.45 bottom=<7009.98,64.1429,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:13:09.248 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2598,7497.84> +14:13:09.248 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8098,7497.84> terrainY=63.8117 tireTerrainGap=-0.00190353 +14:13:09.248 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2598,7497.84> radius=0.45 bottom=<7014.52,63.8098,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +14:13:09.249 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:09.497 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:09.498 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +14:13:09.513 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +14:13:09.514 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +14:13:09.514 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +14:13:09.514 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +14:13:09.514 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +14:13:09.514 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +14:13:09.515 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +14:13:10.437 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +14:13:10.476 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.391,7158.5> +14:13:10.673 SCRIPT : ERR SMOKE PASS: new identity may enter prison +14:13:10.673 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +14:13:10.674 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +14:13:10.674 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +14:13:10.674 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +14:13:10.674 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +14:13:10.674 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +14:13:10.674 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +14:13:10.674 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +14:13:10.680 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +14:13:10.680 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +14:13:10.680 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +14:13:10.680 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +14:13:10.684 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +14:13:10.686 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +14:13:40.719 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:13:40.719 ENTITY : Create entity @"ENTITY:4611686018427391318" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:13:40.720 ENTITY : CreateComponent 'BaseRadioComponent' +14:13:40.720 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427391318" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +14:13:48.354 SCRIPT : ERR SMOKE PASS: HQ memory automatic startup owns one canonical six-vehicle task +14:13:48.354 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 0 +14:13:48.354 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.354 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 1 +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 2 +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.357 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 3 +14:13:48.357 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.357 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.358 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.358 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 4 +14:13:48.358 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.358 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 5 +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy includes confirmed native turret gunners +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory automatic nineteen-body convoy respects shared physical budget +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory manual request after automatic startup cannot duplicate the convoy +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +14:13:48.362 SCRIPT : ERR SMOKE PASS: HQ memory road fixture has native Everon road manager +14:13:48.362 SCRIPT : ERR SMOKE PASS: HQ memory road fixture native query stays within bounded road count +14:13:48.362 SCRIPT : ERR SMOKE PASS: HQ memory arranged detached road snapshots accepted by private memory +14:13:48.363 SCRIPT : ERR SMOKE PASS: HQ memory native road choice is forward, nearby, dry and physically clear +14:13:48.363 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:13:48.363 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:13:48.363 SCRIPT : ERR SMOKE PASS: HQ memory chosen intercept lies on an actual native road segment +14:13:48.364 SCRIPT : ERR ROAD FIXTURE: arranged origin=<5896.23,149.499,6644.17> velocity=<2.25769,0,1.97559> chosen=<5941.39,149.611,6683.68> attempts=1 +14:13:48.364 SCRIPT : ERR SMOKE PASS: HQ memory same arranged belief aged46seconds refuses road interception +14:13:48.364 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +14:13:48.364 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +14:13:48.365 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +14:13:50.376 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +14:13:50.376 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +14:13:56.466 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +14:13:56.466 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +14:14:04.095 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +14:14:04.096 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +14:14:12.228 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +14:14:12.228 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +14:14:20.347 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +14:14:28.450 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +14:14:28.450 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +14:14:28.452 SCRIPT : INFO: KILL SUICIDE: jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) from US faction at <6088.5, 211.389, 7158.5> killed himself! +14:14:32.514 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +14:14:32.514 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +14:14:32.514 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +14:14:59.337 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +14:14:59.338 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +14:14:59.338 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +14:14:59.339 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +14:14:59.501 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +14:14:59.504 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:14:59.504 SCRIPT (W): Slot_Chat Has no Content! +14:14:59.504 SCRIPT (W): Slot_VON Has no Content! +14:14:59.504 SCRIPT (W): Slot_GameVersion Has no Content! +14:14:59.504 SCRIPT (W): Slot_Notifications Has no Content! +14:15:01.610 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +14:15:01.610 SCRIPT : -- Stack trace -- +14:15:01.610 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:15:01.611 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:15:01.611 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +14:15:01.611 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:15:01.611 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:15:01.611 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:15:01.611 SCRIPT : ----------------- +14:15:01.611 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +14:15:01.611 SCRIPT : -- Stack trace -- +14:15:01.612 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:15:01.612 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:15:01.612 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +14:15:01.612 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:15:01.612 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:15:01.612 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:15:01.612 SCRIPT : ----------------- +14:15:01.615 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:15:01.615 SCRIPT (W): Slot_Chat Has no Content! +14:15:01.615 SCRIPT (W): Slot_VON Has no Content! +14:15:01.615 SCRIPT (W): Slot_GameVersion Has no Content! +14:15:01.615 SCRIPT (W): Slot_Notifications Has no Content! +14:15:03.486 RESOURCES : Screenshot saved to $logs:err-result.png diff --git a/docs/evidence/native-2026-09-20-prefab-ids/err-result.png b/docs/evidence/native-2026-09-20-prefab-ids/err-result.png new file mode 100644 index 0000000..345a6da Binary files /dev/null and b/docs/evidence/native-2026-09-20-prefab-ids/err-result.png differ diff --git a/docs/evidence/native-2026-09-20-prefab-ids/error.log.txt b/docs/evidence/native-2026-09-20-prefab-ids/error.log.txt new file mode 100644 index 0000000..95d627d --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/error.log.txt @@ -0,0 +1,138 @@ +--------------------------------------------- +Log Z:\tmp\erri-prefab-ids-combined\logs\logs_2026-09-20_14-12-15\error.log started at 2026-09-20 14:12:17 (2026-09-20 12:12:17 UTC) + +14:12:17.550 INIT : Workbench startup +14:12:17.550 INIT : Workbench Init Engine +14:12:17.550 RESOURCES : ResourceDB: full scan +14:12:17.550 RESOURCES : processing files... +14:12:17.550 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +14:12:17.562 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +14:12:17.562 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +14:12:17.562 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +14:12:17.659 ENGINE : GameProject load +14:12:17.659 INIT : GameProject load project data @"Z:/tmp/erri-prefab-ids-combined/addons/ERRI_595F2BF2F44836FB/addon.gproj" +14:12:17.659 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +14:12:17.659 INIT : GameProject load project data @"Z:/tmp/erri-prefab-ids-combined/addons/ERRI_629B2BA37EFFD577/addon.gproj" +14:12:17.659 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +14:12:17.660 INIT : GameProject load project data @"Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +14:12:17.660 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +14:12:17.660 INIT : GameProject load project data @"Z:/tmp/erri-prefab-ids-combined/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +14:12:17.660 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +14:12:21.731 INIT : Workbench Create Game +14:12:21.731 SCRIPT : Compiling Game scripts +14:12:21.731 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +14:12:21.731 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +14:12:22.060 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.072 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +14:12:22.111 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +14:12:22.258 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.270 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +14:12:22.336 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +14:12:22.336 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +14:12:22.338 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +14:12:22.372 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.394 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.394 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.396 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +14:12:22.396 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +14:12:22.423 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.450 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +14:12:31.094 WORLD : CreateEntities +14:12:31.094 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:12:31.094 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:12:31.094 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:12:45.656 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +14:12:49.952 WORLD : Game::LoadEntities +14:12:49.952 WORLD : CreateEntities +14:12:49.952 WORLD : CreateEntities +14:12:49.952 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:12:49.952 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:12:49.952 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:12:51.336 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +14:12:51.336 ENTITY : CreateComponent 'Hierarchy' +14:12:51.336 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +14:12:51.336 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +14:12:51.336 ENTITY : CreateComponent 'Hierarchy' +14:12:51.336 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +14:12:51.336 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +14:12:51.336 ENTITY : CreateComponent 'Hierarchy' +14:12:51.336 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +14:12:51.341 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +14:12:51.341 ENTITY : CreateComponent 'Hierarchy' +14:12:51.341 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +14:12:51.341 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +14:12:51.341 ENTITY : CreateComponent 'Hierarchy' +14:12:51.341 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +14:12:51.341 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +14:12:51.341 ENTITY : CreateComponent 'Hierarchy' +14:12:51.341 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +14:12:51.345 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +14:12:51.346 ENTITY : CreateComponent 'Hierarchy' +14:12:51.346 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +14:12:51.346 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +14:12:51.346 ENTITY : CreateComponent 'Hierarchy' +14:12:51.346 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +14:12:51.346 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +14:12:51.346 ENTITY : CreateComponent 'Hierarchy' +14:12:51.346 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +14:12:57.916 WORLD : InitEntities 'world' +14:12:57.916 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +14:12:57.916 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +14:13:02.182 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:13:02.182 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +14:13:02.182 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:13:02.182 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +14:13:02.183 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +14:13:02.184 SCRIPT (W): Can't open config file "" +14:13:02.190 WORLD : InitEntities 'world' +14:13:02.190 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:13:02.190 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +14:13:02.190 SCRIPT (W): Slot_WeaponInfo Has no Content! +14:13:02.191 SCRIPT (W): Slot_Chat Has no Content! +14:13:02.191 SCRIPT (W): Slot_VON Has no Content! +14:13:02.191 SCRIPT (W): Slot_AvailableActions Has no Content! +14:13:02.191 SCRIPT (W): Slot_Vehicle Has no Content! +14:13:02.191 SCRIPT (W): Slot_GameVersion Has no Content! +14:13:02.191 SCRIPT (W): Slot_Notifications Has no Content! +14:13:02.191 SCRIPT (W): Slot_Hints Has no Content! +14:13:02.202 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:13:02.203 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +14:13:02.203 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:13:02.203 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:13:02.203 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:13:02.207 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +14:13:02.440 WORLD : UpdateEntities +14:13:02.440 WORLD : PostFrame +14:13:02.440 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +14:13:02.440 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +14:13:02.481 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:13:02.481 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:13:02.482 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +14:13:02.482 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +14:13:04.008 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:13:04.009 WORLD : InitEntities 'world' +14:13:04.009 ENTITY : Init entity @"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:13:04.009 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +14:13:04.871 WORLD : UpdateEntities +14:13:04.871 WORLD : AfterPostSimulate +14:13:04.871 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +14:13:40.719 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:13:40.719 ENTITY : Create entity @"ENTITY:4611686018427391318" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:13:40.720 ENTITY : CreateComponent 'BaseRadioComponent' +14:13:40.720 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427391318" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +14:14:59.504 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:14:59.504 SCRIPT (W): Slot_Chat Has no Content! +14:14:59.504 SCRIPT (W): Slot_VON Has no Content! +14:14:59.504 SCRIPT (W): Slot_GameVersion Has no Content! +14:14:59.504 SCRIPT (W): Slot_Notifications Has no Content! +14:15:01.610 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +14:15:01.611 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +14:15:01.615 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:15:01.615 SCRIPT (W): Slot_Chat Has no Content! +14:15:01.615 SCRIPT (W): Slot_VON Has no Content! +14:15:01.615 SCRIPT (W): Slot_GameVersion Has no Content! +14:15:01.615 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-prefab-ids/external-addons-inputs.json.txt b/docs/evidence/native-2026-09-20-prefab-ids/external-addons-inputs.json.txt new file mode 100644 index 0000000..f2f3ae2 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/external-addons-inputs.json.txt @@ -0,0 +1,744 @@ +{ + "1337C0DE5DABBEEF": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF", + "title": "RHS: Status Quo - Content Pack 01", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 916830, + 209, + 1789670354123815627, + 1789670354123815627 + ], + "sha256": "c5d88d82138bc80c95f364075c3a0fc2228f9c15c6230398f3728a13d25b418c" + }, + "addon.gproj": { + "stat": [ + 46, + 26917910, + 335, + 1789670330884205142, + 1789670353823807747 + ], + "sha256": "65197c50ff6e906a5732564e8b440d80ef1cdbcffead9eb388e1e2b56c1322bc" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917892, + 362, + 1789670307618593786, + 1789670307618593786 + ], + "sha256": "17b87e0976ac2da1032f1661a884f6d59b56c00823b2fcfdc2a698ea8bcc92cc" + }, + "data.pak": { + "stat": [ + 46, + 26917928, + 1992582478, + 1789670344310557863, + 1789670353824807774 + ], + "sha256": "e5db31f571782997640a67601ebd3bd6e6615c1548274c71b6ab0cdd794f8bf5" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917893, + 232459, + 1789670307954602617, + 1789670307954602617 + ], + "sha256": "855813254cd72dc87515f4c395e7c7defe4b145ac809a740f81c85ca546b36fe" + }, + "data001.pak": { + "stat": [ + 46, + 26917986, + 1993657251, + 1789670345496589019, + 1789670354029813158 + ], + "sha256": "2bda9c533834dfa2b8e29f4a2a905c30639dabe250554e1346cf1f5dae3f2db3" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917900, + 349870, + 1789670308754623642, + 1789670308754623642 + ], + "sha256": "d4ec79f2a5cf03dd44bcc4513199056195dfda3c7a5c6bbfd17b2c709b746cdc" + }, + "data002.pak": { + "stat": [ + 46, + 26917956, + 1992567795, + 1789670345532589964, + 1789670353970811608 + ], + "sha256": "dfbd716c2a0849910a8058b1f008b8403b8c506fe18c3168d2844383ac02988c" + }, + "data002.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917897, + 332016, + 1789670308247610318, + 1789670308247610318 + ], + "sha256": "3de05138d1d635f1ba5bcbd74a0f91028bfd59082f45c740051381bd054404b5" + }, + "data003.pak": { + "stat": [ + 46, + 26917964, + 364877149, + 1789670333444272402, + 1789670354017812842 + ], + "sha256": "6225936ebc266825bbd1c79e4e0020c9f2fb55c3d3501ed66e72d87436ccd015" + }, + "data003.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917898, + 96448, + 1789670308423614944, + 1789670308423614944 + ], + "sha256": "8ca2504191def96715ddd6ee98a8df1e3f0951e5755592801eab662657289dd0" + }, + "meta": { + "stat": [ + 46, + 911092, + 8188, + 1789670354121815574, + 1789670354121815574 + ], + "sha256": "cb4f4296d087ea5fe2e849b0fc960748bfede7ea3071eeb545bd7bd309be6bfb" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26917967, + 566987, + 1789670331096210712, + 1789670354028813131 + ], + "sha256": "e8706d6b9bb2474b65f7c588de9fcfad4516bd26dc12e7b6b687e7973a41e7a6" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917899, + 368, + 1789670308546618176, + 1789670308546618176 + ], + "sha256": "336f9160ad955caa88d286915195699d3ac36f3363391967a178be0fd2ccd914" + }, + "thumbnail.png": { + "stat": [ + 46, + 26917907, + 18180, + 1789670330627887201, + 1789670353823807747 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917891, + 366, + 1789670307490590423, + 1789670307490590423 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "595F2BF2F44836FB": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB", + "title": "RHS: Status Quo", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 910012, + 2789, + 1789670389999757705, + 1789670389999757705 + ], + "sha256": "0432a068d8d77e34afd10432d1459df1334238e1ec416c896f13b84bae5a3ac5" + }, + "addon.gproj": { + "stat": [ + 46, + 26919135, + 1100, + 1789670379744488450, + 1789670389873754397 + ], + "sha256": "1b83e9df126db639cfcdb6d5119e65a1581c028becd6c09998143ed527ad0721" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919120, + 364, + 1789670378419453659, + 1789670378419453659 + ], + "sha256": "d232c4cfc959267482bbf261eb2e5121c76b6bf7d8893c58c520a763df5ca5f8" + }, + "data.pak": { + "stat": [ + 46, + 26919141, + 203378761, + 1789670389138735100, + 1789670389946756313 + ], + "sha256": "985d0cde7b09ee860086cb386cf624fcfd94b5e82b26af0b33bab83f21d06988" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919122, + 1409173, + 1789670378781463164, + 1789670378781463164 + ], + "sha256": "041c8ebdf035c69aed7c04bb55be839fbdbd7bc8501862dd4939c1d71cdfe8c5" + }, + "meta": { + "stat": [ + 46, + 902077, + 12209, + 1789670389989757443, + 1789670389989757443 + ], + "sha256": "1b62c97002078af393f23508c3b03cfe22f590130345ac44926b06940f27f269" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919132, + 823768, + 1789670379822490498, + 1789670389872754371 + ], + "sha256": "25f6405084fd228ff400868b21f033c4c43d44162ce73de562e06d8003b94a49" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919119, + 368, + 1789670378283450088, + 1789670378283450088 + ], + "sha256": "986f0280a79b0e4ff6d9a3ad60570bebd86ce68869c9f3d5954141f7d5060cb1" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919138, + 18180, + 1789670379618193709, + 1789670389873754397 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919121, + 366, + 1789670378550457099, + 1789670378550457099 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "5E389BB9F58B79A6": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6", + "title": "WCS_SpaceCore", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 919166, + 197, + 1789670369327462097, + 1789670369327462097 + ], + "sha256": "4bcd7610056ed1d366e9b6d0600e80c622a1af35caecf5c9ecf2c7b9e2b626f7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918585, + 2957, + 1789670367793432952, + 1789670369299906650 + ], + "sha256": "2db2e318e6f45bede0d1173d77af03314f888aedfb31bc767d569ccfb6e70a34" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918576, + 364, + 1789670367178158473, + 1789670367178158473 + ], + "sha256": "67d15a8e8623130546332c6d6433314cbdf38e034a66330b9c7a739a94731e21" + }, + "data.pak": { + "stat": [ + 46, + 26918592, + 43626712, + 1789670369105209079, + 1789670369315214594 + ], + "sha256": "80e9810c9b7c873187660d0ddf002a63d1a382e81fc3611baa0ae8fdfff29d3d" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918578, + 66352, + 1789670367560168505, + 1789670367560168505 + ], + "sha256": "6635291a1f1aa9cffdb844e241c36cdc04114574279bab66e21613410f5e5686" + }, + "meta": { + "stat": [ + 46, + 918678, + 2338, + 1789670369325214856, + 1789670369325214856 + ], + "sha256": "dd1c683c086efb292e6cc927bd6522a1ea97ebd454e8148356f66554ebcdd4dc" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918588, + 44111, + 1789670367937178405, + 1789670369300214199 + ], + "sha256": "c4293fef30948a3538751533cc52c9ce449ffada931b47a8fdf1ca48c1618e75" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918577, + 366, + 1789670367326162360, + 1789670367326162360 + ], + "sha256": "df8cd07ff81263e4108688883b9f20568041f067dbad74402464ec2f88432b69" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918582, + 689401, + 1789670367794174651, + 1789670369299906650 + ], + "sha256": "8da2e133303f21bb16a2abd25d5bd6c2a4a6f5eccedae74a98358db485a170d1" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918574, + 368, + 1789670367051155138, + 1789670367051155138 + ], + "sha256": "5aaa5989b5f44b48ff03082a0d4004ae71420db6eebeb56282af7d98f36c7000" + } + } + }, + "5E524E4FEECCA92B": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B", + "title": "WCS_BMP-1", + "version": "8.2.0", + "files": { + "ServerData.json": { + "stat": [ + 46, + 918673, + 193, + 1789670366131482045, + 1789670366131482045 + ], + "sha256": "92ff4ae6fec8afc679726186f424bb31c9918d182f321afca4696654844e39c7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918544, + 2900, + 1789670364825147789, + 1789670366119130662 + ], + "sha256": "ad44151140adf62e99eaa639984c2b9c400be17481e934186d61c307b5221259" + }, + "addon.gproj_8.2.0_manifest.json": { + "stat": [ + 46, + 26918530, + 364, + 1789670364263081920, + 1789670364263081920 + ], + "sha256": "3065c7c353cb7623ee85f83d462d4dac37c92efad1a0255f2661470e6cedfd0f" + }, + "data.pak": { + "stat": [ + 46, + 26918541, + 119808197, + 1789670365649118318, + 1789670366115130557 + ], + "sha256": "f715ad5fa3de788061a66a3ccd933feead5cc1631507ca63e9061049c538fab6" + }, + "data.pak_8.2.0_manifest.json": { + "stat": [ + 46, + 26918528, + 25795, + 1789670364132078479, + 1789670364132078479 + ], + "sha256": "24a7f735e55ccfacc5cdacbb39fb76a6fac294f4cdc47dca0fcb6e3f1919f1e6" + }, + "gallery0_776x436.jpg": { + "stat": [ + 46, + 23106914, + 64588, + 1788720671481676966, + 1788720671481676966 + ], + "sha256": "63649f5239059dd12234250b8c8e313b14ca134e30e4309fbd1eb45f92e77097" + }, + "gallery1_776x436.jpg": { + "stat": [ + 46, + 23106915, + 47808, + 1788720671495639547, + 1788720671495639547 + ], + "sha256": "81f89b026a1bf341f8cd3bb19facd67e8d0f56073c924e026983836fee6bfb4c" + }, + "meta": { + "stat": [ + 46, + 918496, + 2928, + 1789670366129130924, + 1789670366129130924 + ], + "sha256": "ad0f9baa154a250712c94b50c5edcb25200002bdc186d35453b5e8c32c0b6ee5" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918535, + 16514, + 1789670364934099542, + 1789670366080129638 + ], + "sha256": "c65677e8767d92c96c6f35b482350d56e3dccfa026a3c5470b332120990f047c" + }, + "resourceDatabase.rdb_8.2.0_manifest.json": { + "stat": [ + 46, + 26918527, + 366, + 1789670364004075117, + 1789670364004075117 + ], + "sha256": "fdc44be4e1523db5965b015a7ea511623399a5fb3548aaaf8b2a4807fc6ade7d" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918547, + 708338, + 1789670364826600016, + 1789670366119130662 + ], + "sha256": "103a98bf476d510ab3081abb371170ae6cf65aea65b9095636d651170a5b0038" + }, + "thumbnail.png_8.2.0_manifest.json": { + "stat": [ + 46, + 26918531, + 368, + 1789670364388085202, + 1789670364388085202 + ], + "sha256": "5bf1e0f8794a4e2e862658a10071360df63ed6a440ee2ca5514afbc2e97e375e" + } + } + }, + "629B2BA37EFFD577": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577", + "title": "WCS_Armaments", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 920134, + 197, + 1789670377639162612, + 1789670377639162612 + ], + "sha256": "8e5e6b2fe4099ca90bb4498c9479924e775ca0eac411c8230114143ff1a8297a" + }, + "addon.gproj": { + "stat": [ + 46, + 26918715, + 2926, + 1789670371305266851, + 1789670377499241577 + ], + "sha256": "e6ffcf559a2e7898848349c090300ea8eca8cb2e13ecef456a108bcc82efc8b1" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918707, + 364, + 1789670369590221815, + 1789670369590221815 + ], + "sha256": "ba8f2b36575408f11b2107fc4b0f9449c9dc057629ebf894c7bdbc77f53cbc1f" + }, + "data.pak": { + "stat": [ + 46, + 26918730, + 395962643, + 1789670376182394919, + 1789670377620432679 + ], + "sha256": "84a2cf01e2d17a06f8d775ca542a0cc98739f9f4b75b79826017e1387faedb18" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918711, + 214221, + 1789670370007232766, + 1789670370007232766 + ], + "sha256": "dc3ff832bce708121c61a5dfe09be8504352556c50341f9878f4b457e165ade2" + }, + "meta": { + "stat": [ + 46, + 919170, + 2504, + 1789670377637433125, + 1789670377637433125 + ], + "sha256": "2863bb2bdb586286f8aedc34d5dfb6adbdaafd5fca0f8f21136c7a5351d1ce88" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918718, + 141469, + 1789670371389269057, + 1789670377499429501 + ], + "sha256": "7f38b7ed578b0b47864648a7b70288fe49dae4cc2556d5754377a1c28b2b6532" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918708, + 368, + 1789670369714225072, + 1789670369714225072 + ], + "sha256": "2ffa1cf6f8c07600147ae779ee3be1ccec8da23cb1c10d8c73e0c5c5d3dc6d06" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918721, + 689544, + 1789670371307273812, + 1789670377500429528 + ], + "sha256": "ccd771dba7f3f222e9733e688e6dd9e4c5edae2accdd80a6876241094e23f3dd" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918710, + 368, + 1789670369835228249, + 1789670369835228249 + ], + "sha256": "e58ef73e4a794e56ecd04bfd84940ec539e5ca481d6b69ffb20f9fedcd3c2e77" + } + } + }, + "BADC0DEDABBEDA5E": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E", + "title": "RHS: Status Quo - Content Pack 02", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 911088, + 209, + 1789670428409812415, + 1789670428409812415 + ], + "sha256": "90353d1b4ab072f7844bf24d8066031efd69feb76ddcbf66dea34b52ddfe0a1c" + }, + "addon.gproj": { + "stat": [ + 46, + 26919414, + 336, + 1789670399470006320, + 1789670428369764835 + ], + "sha256": "6ebd73d663ed6dbf981cd8bc7d19cfd5bcd3c9dec3b9a706fa331d992ef200b4" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919383, + 362, + 1789670390797778656, + 1789670390797778656 + ], + "sha256": "72d988d5881efdf7d8781b2dc978a0243e1a3d587ced56563299855724137232" + }, + "data.pak": { + "stat": [ + 46, + 26919411, + 1992445813, + 1789670421137575039, + 1789670428335763943 + ], + "sha256": "5b28362571e396c008eb2286dc5a76b4ccf869c0a279916209fb0ef20d6b145e" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919381, + 170934, + 1789670390675775453, + 1789670390675775453 + ], + "sha256": "7cde302270a1e5c3a88517ff8b08a5b50bbe63e7392434d8245542f81b0bfdf8" + }, + "data001.pak": { + "stat": [ + 46, + 26919421, + 238642257, + 1789670400589035695, + 1789670428370764861 + ], + "sha256": "fb2aecbde5668c4d431ea74d64f6d15f7a9f608fefe01838d7c85fb0c818499f" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919384, + 29970, + 1789670390937782332, + 1789670390937782332 + ], + "sha256": "e6fb290c2f9d8dcd0c0ac95c3dee054377a525e00129abc766defa079385d6ea" + }, + "meta": { + "stat": [ + 46, + 910016, + 7720, + 1789670428407765832, + 1789670428407765832 + ], + "sha256": "e9ba58307cb931026c5c59654f3b4b7f92ac6e0682a1e94fd2eb1d5b75c214cf" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919388, + 111601, + 1789670399484558966, + 1789670428260761974 + ], + "sha256": "736bcd2e60177e5af99d93c6b5f07ad79a950899aaca23000f33ad405cd1b74e" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919379, + 368, + 1789670390384767813, + 1789670390384767813 + ], + "sha256": "9a4f54837a83d2acc2bdc62288b62fe7f24876a374f1270d5a5d2a497bb5de8f" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919391, + 18180, + 1789670398997629625, + 1789670428260761974 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919380, + 366, + 1789670390509771095, + 1789670390509771095 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + } +} diff --git a/docs/evidence/native-2026-09-20-prefab-ids/headless-launch.log.txt b/docs/evidence/native-2026-09-20-prefab-ids/headless-launch.log.txt new file mode 100644 index 0000000..ca0ac4a --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/headless-launch.log.txt @@ -0,0 +1,152 @@ +[gamescope] [Info] console: gamescope version 3.16.29 (gcc 16.2.1) +No CAP_SYS_NICE, falling back to regular-priority compute and threads. +Performance will be affected. +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts' +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts/00-gamescope' +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts/00-gamescope/common' +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/common/inspect.lua' (id: 0) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/common/modegen.lua' (id: 1) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/common/util.lua' (id: 2) +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts/00-gamescope/displays' +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/asus.rogally.lcd.lua' (id: 3) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/deckhd.steamdeck.deckhd-lcd.lua' (id: 4) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/gpd.win4.lcd.lua' (id: 5) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/lenovo.legiongo.lcd.lua' (id: 6) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/lenovo.legiongo2.oled.lua' (id: 7) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua' (id: 8) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/onexplayer.f1.oled.lua' (id: 9) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.lcd.lua' (id: 10) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.oled.lua' (id: 11) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/zotac.zone.oled.lua' (id: 12) +[gamescope] [Info] scriptmgr: Loading scripts from: '/etc/gamescope/scripts' +[gamescope] [Warn] scriptmgr: Directory '/etc/gamescope/scripts' does not exist +[gamescope] [Info] scriptmgr: Loading scripts from: '/home/jakub/.config/gamescope/scripts' +[gamescope] [Warn] scriptmgr: Directory '/home/jakub/.config/gamescope/scripts' does not exist +[gamescope] [Info] vulkan: selecting physical device 'AMD Radeon RX 6950 XT (RADV NAVI21)': queue family 1 (general queue family 0) +[gamescope] [Info] vulkan: physical device supports DRM format modifiers +[gamescope] [Info] wlserver: [backend/headless/backend.c:60] Creating headless backend +[gamescope] [Info] vulkan: supported DRM formats for sampling usage: +[gamescope] [Info] vulkan: AR24 (0x34325241) +[gamescope] [Info] vulkan: XR24 (0x34325258) +[gamescope] [Info] vulkan: AB24 (0x34324241) +[gamescope] [Info] vulkan: XB24 (0x34324258) +[gamescope] [Info] vulkan: RG16 (0x36314752) +[gamescope] [Info] vulkan: NV12 (0x3231564E) +[gamescope] [Info] vulkan: AB4H (0x48344241) +[gamescope] [Info] vulkan: XB4H (0x48344258) +[gamescope] [Info] vulkan: AB48 (0x38344241) +[gamescope] [Info] vulkan: XB48 (0x38344258) +[gamescope] [Info] vulkan: AB30 (0x30334241) +[gamescope] [Info] vulkan: XB30 (0x30334258) +[gamescope] [Info] vulkan: AR30 (0x30335241) +[gamescope] [Info] vulkan: XR30 (0x30335258) +[gamescope] [Info] wlserver: Using explicit sync when available +[gamescope] [Info] wlserver: [wayland] unable to lock lockfile /run/user/1000/gamescope-0.lock, maybe another compositor is running +[gamescope] [Info] wlserver: Running compositor on wayland display 'gamescope-1' +[gamescope] [Info] wlserver: [backend/headless/backend.c:17] Starting headless backend +[gamescope] [Info] wlserver: Successfully initialized libei for input emulation! +[gamescope] [Error] wlserver: [xwayland/sockets.c:47] Failed to bind socket @/tmp/.X11-unix/X0: Address already in use +[gamescope] [Info] wlserver: [xwayland/server.c:108] Starting Xwayland on :3 +The XKEYBOARD keymap compiler (xkbcomp) reports: +> Warning: Multiple symbols for level 1/group 1 on key +> Using F23, ignoring XF86TouchpadOff +> Warning: Symbol map for key redefined +> Using last definition for conflicting fields +> Warning: Symbol map for key redefined +> Using last definition for conflicting fields +> Warning: Could not resolve keysym XF86ElectronicPrivacyScreenOn +> Warning: Could not resolve keysym XF86ElectronicPrivacyScreenOff +> Warning: Could not resolve keysym XF86ActionOnSelection +> Warning: Could not resolve keysym XF86ContextualInsert +> Warning: Could not resolve keysym XF86ContextualQuery +Errors from xkbcomp are not fatal to the X server +[gamescope] [Info] pipewire: stream state changed: connecting +[gamescope] [Info] pipewire: stream state changed: paused +[gamescope] [Info] pipewire: stream available on node ID: 140 +[gamescope] [Info] vblank: Using timerfd. +fsync: up and running. +[Gamescope WSI] No application info given. +[Gamescope WSI] Executable name: explorer.exe +The XKEYBOARD keymap compiler (xkbcomp) reports: +> Warning: Unsupported maximum keycode 709, clipping. +> X11 cannot support keycodes above 255. +> Warning: Virtual modifier Hyper multiply defined +> Using 0, ignoring 0 +> Warning: Virtual modifier ScrollLock multiply defined +> Using 0, ignoring 0 +Errors from xkbcomp are not fatal to the X server +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: xalia.exe + applicationVersion: 0 + pEngineName: DXVK + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Executable name: xalia.exe +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] No application info given. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 1 + pEngineName: DXVK + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Executable name: ArmaReforgerWorkbenchSteamDiag.exe +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] No application info given. +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 0 + pEngineName: DXVK + engineVersion: 12587008 + apiVersion: 4206592 +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 0 + pEngineName: vkd3d + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1. +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] No application info given. +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 0 + pEngineName: vkd3d + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1. +[Gamescope WSI] Creating Gamescope surface: xid: 0x1a001a4 +[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL. +[Gamescope WSI] Made gamescope surface for xid: 0x1a001a4 +[Gamescope WSI] Surface state: + steam app id: 1874910 + window xid: 0x1a001a4 + wayland surface res id: 6 + layer client flags: 0x4 + server hdr output enabled: false + hdr formats exposed to client: false +[Gamescope WSI] Creating Gamescope surface: xid: 0x1a003a4 +[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL. +[Gamescope WSI] Made gamescope surface for xid: 0x1a003a4 +[Gamescope WSI] Surface state: + steam app id: 1874910 + window xid: 0x1a003a4 + wayland surface res id: 13 + layer client flags: 0x4 + server hdr output enabled: false + hdr formats exposed to client: false +[Gamescope WSI] Creating swapchain for xid: 0x1a003a4 - oldSwapchain: (nil) - provided minImageCount: 3 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false +[Gamescope WSI] Created swapchain for xid: 0x1a003a4 swapchain: 0x55556258a340 - imageCount: 4 +[Gamescope WSI] Destroying swapchain: 0x55556258a340 +[Gamescope WSI] Destroyed swapchain: 0x55556258a340 +[Gamescope WSI] Creating swapchain for xid: 0x1a003a4 - oldSwapchain: (nil) - provided minImageCount: 3 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false +[Gamescope WSI] Created swapchain for xid: 0x1a003a4 swapchain: 0x55556258a340 - imageCount: 4 +[Gamescope WSI] Destroying swapchain: 0x55556258a340 +[Gamescope WSI] Destroyed swapchain: 0x55556258a340 +[Gamescope WSI] Creating swapchain for xid: 0x1a003a4 - oldSwapchain: (nil) - provided minImageCount: 3 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false +[Gamescope WSI] Created swapchain for xid: 0x1a003a4 swapchain: 0x55556258a340 - imageCount: 4 +[gamescope] [Info] launch: Primary child shut down! diff --git a/docs/evidence/native-2026-09-20-prefab-ids/launch-source-sha256.json b/docs/evidence/native-2026-09-20-prefab-ids/launch-source-sha256.json new file mode 100644 index 0000000..235e800 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/launch-source-sha256.json @@ -0,0 +1,259 @@ +{ + "addons/core/Configs/ERR/AdminMenus.conf": "a7f889f260e43656136fc159342129e5f48748d28c426f65f9faac37b624cf94", + "addons/core/Configs/ERR/AdminMenus.conf.meta": "5faf5ddc0a51c1d0f82d60af00d91edc22fe9c39aac50d8d04b772a2c9271be1", + "addons/core/Configs/ERR/EveronSites.conf": "3e04698421ce989c996097ecf24214e7d926d2998918d60573aa403c4012b079", + "addons/core/Configs/ERR/EveronSites.conf.meta": "d5fe68025ef4e7c1e16082cf5873b7c7172eacbfaef4ab29b7e0e3c98f8dca56", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf": "5f74f4a7089c7e7b54ad62463159ce8f0bab25a6b85268dc3872ea6001e048fb", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf.meta": "00c368b6271d3440cc8bf627b03a384d247635723923fc5ad2104b8b4007b035", + "addons/core/Configs/ERR/Factions/US.conf": "4c3da063abb6e3ee39a6e4e0c5a9ffd5eae9d209d58470ea18b45dba5528db1b", + "addons/core/Configs/ERR/Factions/US.conf.meta": "a05469aef028e9e17eba545e81e2af2887b59f0fef17dac51a23c7b8155e381b", + "addons/core/Configs/ERR/Factions/USSR.conf": "407ea27f80a64c5184c089d43cdd0bdabfc5974c84f1d2a245081fdf2afa3f30", + "addons/core/Configs/ERR/Factions/USSR.conf.meta": "057397d97096346791b51b7b13fbe18af218bcf78e9984d9c01b49a2403de611", + "addons/core/Configs/ERR/GameOverScreens.conf": "45231061911a1462d45fb6db0fecc2b0793f17b5ae71017174954ff4fbd20236", + "addons/core/Configs/ERR/GameOverScreens.conf.meta": "eb654b745c0b97b41c991694569ef4877a3c2315e0826f9556337cd68690843e", + "addons/core/Configs/ERR/VanillaFactions.conf": "db890b61b48ee15484041fd2245a862d9fa9e7ba21b1229c281ff37c448a35b1", + "addons/core/Configs/ERR/VanillaFactions.conf.meta": "ac77725c0c21974991ef47a466b88122e939de8b46fd23e68889e7674cbb2bfd", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Missions/ERR_Everon_Base.conf": "c035afca636653b7751c49f85620edac23f7217fd135b98f8f891192f66c967a", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "addons/core/Prefabs/ERR/ConvoyCrew.et": "29a525a29605386dfcf292dc2316e9fc7650ce39db9fbaa4ce4372ad0de66db4", + "addons/core/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/core/Prefabs/ERR/Extraction.et": "4d24c7811415c06386205e5bf5c132a23fcf21e96c75c7657ccd5f3ac914ac50", + "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", + "addons/core/Prefabs/ERR/FactionManager.et": "3f8157aab44e124e8d5ab5e47e3d38ad7466638ae1e97be057aa2de74c360a85", + "addons/core/Prefabs/ERR/FactionManager.et.meta": "9bf53d5e4bcbe60dd1a4ece1409fc23c349055c860708620f5f6e9716290a97d", + "addons/core/Prefabs/ERR/FieldCover.et": "e403d5cb3a5966f0cea81f15e0e825d482ba1a7a27b12498319ba45a414963b0", + "addons/core/Prefabs/ERR/FieldCover.et.meta": "83461ffa76244e1d69f20b053a9741ccdf7d127009182bd540a7e5ba6150c3d9", + "addons/core/Prefabs/ERR/GameMode.et": "f744901d8ee8958d3fc1846315b1a29ba0136048412afb3e26c084096c17c3eb", + "addons/core/Prefabs/ERR/GameMode.et.meta": "106769cd34525c9d440057072836cb7401a6752148c40edd7fe61c03bd58328c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et": "0157bc235eeb78a0e1373b561fd22a1dcb225c833ff7c2d4abae688bca0ec92a", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et.meta": "da6f065cb2414b5a4cbe9ef0f0b1295b2466f26ad406c0bddb83845d4598efb3", + "addons/core/Prefabs/ERR/MortarCrew.et": "21086e886fe3199624208c9a866f883ec109f7d08746c2b56b497e59857fb656", + "addons/core/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/core/Prefabs/ERR/ObjectiveDocument.et": "5118ecaf9d2038eea44a4b785f05d2e78781dc1387249aa58a6782c7e6752e14", + "addons/core/Prefabs/ERR/ObjectiveDocument.et.meta": "eaba9903be147b98a1106e2273e2270773df73b9b22f2cd4e20136a8e281382e", + "addons/core/Prefabs/ERR/Patrol.et": "d3eca8fe9197c57a27a285cdb3baf168b037b198d92b39df28a338ae2cfd0c74", + "addons/core/Prefabs/ERR/Patrol.et.meta": "7c5da568fa2fcf0709ee2959253cb068d7c7ed7c2467af3b247a7e70efd96b69", + "addons/core/Prefabs/ERR/Prison.et": "24e942dea876aeeff5778c402098099a62f9a7efca61a08036e1d2bfeec9923f", + "addons/core/Prefabs/ERR/Prison.et.meta": "2e426ef3de68f4107907854b51e818bc11d84649a01c538e3f18dd9ebec766bb", + "addons/core/Prefabs/ERR/PrisonDoor.et": "c45d5aa239efa8934dc5d0367dc8e196c15ed04ad72efdaad574ce01dca91e84", + "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", + "addons/core/Prefabs/ERR/PrisonWall.et": "b0cb8fb38716f083f86e39fb4f84f275e17855d4d2558b2da2b488fb12b39121", + "addons/core/Prefabs/ERR/PrisonWall.et.meta": "0294bc5dbb56f90f8153d62459bb0a6ad91d76a479812bbec9c7db182fdb58d6", + "addons/core/Prefabs/ERR/Prisoner.et": "e6d345ac98ad9ec742bf6c3b8686839c3256df9833d31bb4bdf605cd41d0ba5c", + "addons/core/Prefabs/ERR/Prisoner.et.meta": "974278ba49fafeed70b619a0067bbc70ae4d534be441c812ce2bef4a5fb3c022", + "addons/core/Prefabs/ERR/Radio.et": "8e15f4795a7459e95dd5e5cb61940b7619452bee2dcdfb8eaa00154acb3308cb", + "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", + "addons/core/Prefabs/ERR/SpectatorCamera.et": "bffb102272eb888d1f8d8c32c7515e62751d3feb48ef4713227f040d59c42db6", + "addons/core/Prefabs/ERR/SpectatorCamera.et.meta": "2a16558f93915e31908a674509e9c89976470f78a84a1174a64b94b68b8f77ad", + "addons/core/Prefabs/ERR/SupplyCache.et": "4c97b0514fe7e723046f40f0b396f6573b12eb9981ca5df70b9e8aa3cf29323e", + "addons/core/Prefabs/ERR/SupplyCache.et.meta": "2f5de3a4aab1e9d0e35521f48dc57b95bd6e449c383dec4f1c258e10295904cb", + "addons/core/Prefabs/ERR/SupplySite.et": "f33681281d26676fac88736091834d5a7b87fe0fa01883582542df964dcfc694", + "addons/core/Prefabs/ERR/SupplySite.et.meta": "b41944b12eb3528ff7a3ac94258b18c66ef161aa6a38894aee300a1ac4798630", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et": "29f157849f413261494a63d4d5b0a97e8bbe61cb076efcd59d6c940653f23352", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et.meta": "544c94cf1c26757a10654de7856cd6cc48b821ce3bdc02add13cfe6514269915", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et": "cd4acdcecad299445952aea0adefc85f2b9e9b43f8186f100e0505c5621b3656", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et.meta": "123955da03462befb90e293b3bb856d49cc761166611b38ff47cb48ec2fbe95c", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c": "8a5ccf1fff1442dfe7ab4cb3cc858ee16adb073119144187155ade558b8c4c5f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c": "6cfb7de35bbbc18bd6d35c63da01284ffb08b8641527d49283d9b9b0cb94f8c2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "e17bd68f82012bff7c1953cf1adc86fe1cdefbc01d3b5eb88fa96f956bb4f135", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c": "1d8987d2dcc1db2a030e095b33d50f07877181037d339624156291d8317bfa5d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "41a35f806d925d025534247b0705d7eb47f134d181e5b819a149be7909ba4cc1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "a47a1ee3a62d170a06b54cce3c42fac7c3645cf6a89c827a1dfe51ae0a99ce12", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "2e295b0f225208c5414728ba83333e5e0ab6eef3a708ce39eb1dfce5400c94c9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c": "360228fd45aa6ecd9426e36120b5e637d2feee1e3a4a89aac8207526b871c87e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c": "b16a8b31be20271c37c4d68c169f08b28d88993d296308b80de00715ea2b4dfe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c": "0c8ce2f3d2642999a7158000e60d8c491ed3e4b6d9c0d3d18b3e3ecc3e557196", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "0921c04c313f36f23aaab35fdea05bb479a81f01acc62c715ca3b3e366d67f81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c": "298ae30d1db1191d680a5a8f60253f9344e0e19fe9c17242c757382042364341", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c": "d5337ce8073335ccb4b03d447550a38e03d6fc9e428008be3a7b042c078f4835", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "85e4d2cb27426c07b8631ca411f4b8f5c821f9f331c8c2719cbfa71b3687f08e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c": "0897e82d7805ef56f05f2b9c23903280285ea6bfa51796a2df86bb564ece78f7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c": "53cd74d121292f6f6813c2b69e475f29dba9239bc10cbaf55ce1d7f8fb3674f6", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c": "917f9df36b93258a30b7af24b0ee52b65c5205405d8056bb721a9868010d64d1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c": "84cec6457132eff6d195bc6fc8fcee267685693edbb987cbeafaece0f7537992", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c": "5d9b5d4b1d22d57145e79b5a740863a5233706fd8b11046d2512a681f8a615a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "9f8f0844862ef98b0878290238a410d501ea99622cd5e517fcacd9a9187f889a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c": "7379cb65bde95bd1e7ffc2203a7fb7957435d379560e08b470e73a89ea6b59cf", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c": "4493c6b6070cd7d768a2fcba2d8934b782c9a221ae257a530aa6b52fa40d88a8", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c": "0d4d61c424a16008595f86fa61f3b848caf9bd6e9ebbacea9c10254d88ba378e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "2ceeae7c7c373fbf894f491903b29d51543949c323b06ce9989c68282129166e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c": "a747af09599ce4d0c52051f18f00c4624d24d137e328341b580b82e896c6bf65", + "addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/core/UI/layouts/ERR/AdminMenu.layout": "26db9780c0afffa8429602c27ee347a4e665a19a6872b15f4178d684de7e23b6", + "addons/core/UI/layouts/ERR/AdminMenu.layout.meta": "9deeece996f43b1f1fed6b5ec89279645c7b6424250200a42580cc088142e9bf", + "addons/core/UI/layouts/ERR/PreparationStatus.layout": "bd269cf8dc6f27735423743dd5b78242550518414448a0256e5e12fa6b92c459", + "addons/core/UI/layouts/ERR/PreparationStatus.layout.meta": "75b12176a443bb911fc4ad446982d762201fda42ed38736b79bc5439fca31ccc", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", + "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", + "addons/core/Worlds/ERR_Everon_Layers/default.layer": "17105538007199bfc419aa04a64debaf2da0a7b77a1dc3ba983e92bf747c862e", + "addons/core/addon.gproj": "683a522c7f7f5d5ff41c57b0f0947f3cd2ec866b656a5f449af55688956eb5fa" +} diff --git a/docs/evidence/native-2026-09-20-prefab-ids/launch-source.json b/docs/evidence/native-2026-09-20-prefab-ids/launch-source.json new file mode 100644 index 0000000..c2db39f --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/launch-source.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "launch_id": "d4b4c0e2-2449-4a8e-931a-3031a20d35d1", + "captured_unix": 1789906334.1922934, + "source_root": "/home/jakub/devel/escapistsrereintroduced", + "command": [ + "gamescope", + "--backend", + "headless", + "-W", + "1280", + "-H", + "720", + "-w", + "1280", + "-h", + "720", + "-r", + "30", + "--", + "/home/jakub/.local/share/Steam/steamapps/common/Proton - Experimental/proton", + "run", + "/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger Tools/Workbench/ArmaReforgerWorkbenchSteamDiag.exe", + "-gproj", + "Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj", + "-addonsDir", + "Z:/home/jakub/devel/escapistsrereintroduced/addons", + "-profile", + "Z:/tmp/erri-prefab-ids-combined", + "-logconsole", + "-wbModule=WorldEditor", + "-load", + "Worlds/ERR_Everon.ent", + "-plugin=ERR_ValidateWorldPlugin", + "-errPlay", + "1", + "-errSmoke", + "1", + "-errSmokeOutcome", + "hq-memory", + "-noThrow", + "-disableCrashReporter" + ], + "manifest_sha256": "68510466f170d69d0a18c4c3c746c3f9ae6c168fdfc3cb53e9c2cac68c242aed" +} diff --git a/docs/evidence/native-2026-09-20-prefab-ids/report.json b/docs/evidence/native-2026-09-20-prefab-ids/report.json new file mode 100644 index 0000000..d9308d0 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/report.json @@ -0,0 +1,14 @@ +{ + "log": "docs/evidence/native-2026-09-20-prefab-ids/console.log.txt", + "smoke_completions": 1, + "assertions_passed": 101, + "script_or_runtime_failures": [], + "engine_errors": [ + "14:12:17.659 RESOURCES (E): Wrong GUID/name for resource @\"{0AFDD005CD669892}Language/rhs_localization.st\" in property \"StringTableSource\"", + "14:12:17.659 RESOURCES (E): Wrong GUID/name for resource @\"{41FA2A08B6971D4C}Language/wcs_armament_localization.st\" in property \"StringTableSource\"", + "14:12:17.660 RESOURCES (E): Wrong GUID/name for resource @\"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st\" in property \"StringTableSource\"", + "14:12:17.660 RESOURCES (E): Wrong GUID/name for resource @\"{E50E557B468C7073}Language/wcs_bmp1_localization.st\" in property \"StringTableSource\"" + ], + "missing_end_screen": [], + "scope": "scripted local Workbench integration only; no multiplayer, piloting or FPS claim" +} diff --git a/docs/evidence/native-2026-09-20-prefab-ids/repository-check.log.txt b/docs/evidence/native-2026-09-20-prefab-ids/repository-check.log.txt new file mode 100644 index 0000000..e4f296a --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/repository-check.log.txt @@ -0,0 +1,455 @@ +PASS: missing, child-only, malformed, zero and duplicate prefab root IDs rejected +PASS: actual delivered road eligibility, ahead projection without chords, reservations, stock road query bounds, terrain/water/obstruction refusal and clean outputs +PASS: actual delivered-task lineage, expiry, old-order retention, native commit, release, road precision expiry and duplicate delivery +PASS: actual original-roster local handoff,100m3D bound,busy carrier/budget exclusion,origin interruption including deletedsource,normal radio delivery and per-source replay history +PASS: actual visual intake retains source/time/position/id, rejects replay, prefers usable own route, excludes simultaneous callers and conservatively resets negative-sweep dwell +PASS: actual fixture local/radio gating, immutable source/time/position, interrupted-report exclusion and exact-owner cleanup +PASS: local-handoff runner refuses wrong project/round count/insufficient deadline before runtime work +PASS: actual fixture allocator terminal/unsubmitted guard, original-group lookup and both candidate gates +PASS: actual report-derived waypoint insertion/order and tighter positive radii; no formation navigation claim +PASS: actual Place/Stop waits native pose update, bounds four attempts, preserves original position, restores pending/settled placement and respects ownership/accepted-move quarantine +PASS: actual fixture current/original recipient ownership, unresolved transfer cleanup, exact-token release and idempotent Stop +PASS: actual authored storage anchors, native trace flags, own-hierarchy exclusion, external wall/vehicle obstruction, range, unknown geometry and bounded context refusal +PASS: actual stock capture, unique finite identities, original recipients, HQ reservations, delivered report replay/cooldown and failed-downlink cleanup +PASS: actual original turret identity, native/canonical guards, scoped >=80/>=100 profile, reset, dismount/reboard, requested-skill preservation and restoration +PASS: bounded150s startup followed by exactly one120s memory window; only HQ-memory outer deadline extended +PASS: actual read migrates old valid settings, preserves explicit disabled state, rejects invalid data; next-round feedback and fixed menu remain honest +PASS: actual automatic convoy timing/authority/admission/one-attempt/manual-task/stop policy; native deployment unproved +PASS: late authoritative failure reason refreshes open result; detach, mode change and success subscriptions preserved +infantry resupply actual rules, radio transitions, owned cleanup and unresolved-operation tests passed +PASS: actual resupply Roster preserves permanent release, original slot mapping and bounded ownership +PASS: actual single-item transfer, physical ownership/native callback proof, stop quarantine, compatibility and strict original actor/vehicle boundaries +PASS: actual early ammunition policy and status-first shared uplink; complete threshold, phases, cooldown, failures and requested check-ins +PASS: actual group radio startup preservation, finite native grants, callback quarantine, frozen selection/actor ownership and bounded observation +PASS: actual maintenance native-stock check rejects missing/duplicate/wrong-identity/unowned/depleted/malformed stock and is read-only; native runtime not executed +.................. +---------------------------------------------------------------------- +Ran 18 tests in 0.237s + +OK +PASS: actual radio node rejects current incapacitation, death, ownership and faction changes despite cached inventory; one-second capability refresh remains explicit +PASS: finite maintenance stock/resource identity, bounded scenario stock and preserved two-cache clue redundancy; native interaction not claimed +PASS: actual diagnostic fallback runs only on failed missing-context call, derives unique native pilot door, preserves stock eligibility and restores prior index on success/failure; diagnostics mutate no game state. +PASS: actual native-prelude cleanup restores only original changed damage, refuses stale/incapacitated/aboard teleport; bounded five-seat/four-door fixture wiring checked. Native execution remains pending. +PASS: actual CreateTransport requires successful scoped Configure after handbrake, preserves ordinary vehicles, tracks spawned entity before failures and never treats failed lock registration as ready. +PASS: actual preparation Configure guards/idempotence/breach preservation, security eligibility/final current-body server mutation and all scoped action guards; all five seat/four door resource overrides. Native hold, prefab merge, replication and boarding remain unverified. +PASS: actual convoy cover observation/snapshot/uplink/HOLD/RESUME/cleanup transitions; native boundaries mocked, non-convoy runner opt-in refused +Enemy optics actual-service ownership, preservation, callback, deadline and bounded-inspection policies passed +PASS: actual delivered cover freshness/lineage/replay and canonical executor; owned waypoint-only hold, one resume at preserved route index, invalid ownership/crew/ledger refusal and fail-closed native recreation +PASS: actual Stinger show/set/help state precise actor-roll effects; read-only help, bounded values, malformed syntax and failed-save preservation; no rerolls/gameplay edits and no native persistence claim +PASS: new/retasked search and radio delivery ammo gates; active tasks and delivered release preserved +HQ convoy delivered-report planning and downlink regressions passed +PASS: actual own-inventory ammo inspection deduplicates loaded/carried/shared wells, separates chambers/launchers, freezes scalar snapshots and treats unsupported/capped/foreign inventory as unknown +PASS: native body fixture uses existing immutable actors, real production LOS/queued uplink, pre-delivery isolation, actual status overlap, bounded cleanup and no fabricated reports/spawns +PASS: actual native fixture lookup selects exact BODY kind/identity/message from bounded evaluations, never sighting-only Get +PASS: actual ammo snapshot comparison checks every scalar/category flag; native probe requires real roster rescan, loaded-round lower bound and separate immutable pending/Watch objects +PASS: actual delivered slot-union bodies preserve overlap/disjoint evidence, replay idempotence, status subset integrity, full-wipe closure and formation-local bounds +test_review_added_allowed_media_invalidates_snapshot (__main__.ReviewTests.test_review_added_allowed_media_invalidates_snapshot) ... ok +test_review_added_source_directory_rejected (__main__.ReviewTests.test_review_added_source_directory_rejected) ... ok +test_review_loose_root_resource_and_symlink_rejected (__main__.ReviewTests.test_review_loose_root_resource_and_symlink_rejected) ... ok +test_review_metadata_media_and_sidecars_remain_allowed_and_bound (__main__.ReviewTests.test_review_metadata_media_and_sidecars_remain_allowed_and_bound) ... ok +test_review_missing_link_rejected (__main__.ReviewTests.test_review_missing_link_rejected) ... ok +test_review_package_guard_sees_new_scripts (__main__.ReviewTests.test_review_package_guard_sees_new_scripts) ... ok +test_review_retargeted_private_link_rejected (__main__.ReviewTests.test_review_retargeted_private_link_rejected) ... ok + +---------------------------------------------------------------------- +Ran 7 tests in 0.056s + +OK +PASS: actual report methods reproduce old starvation; status-first scheduler delivers check-ins and requires 30s without combat or actual visible contacts before negative reports +PASS: actual actor group lookup retains controlled character membership when seated/inherited vehicle agents differ; missing control or parent refuses +................. +---------------------------------------------------------------------- +Ran 17 tests in 2.196s + +OK +PASS: actual convoy motion thresholds, native-only proof boundaries, physical cargo/crew ownership and pre-launch runner restrictions +PASS: actual filled rotated-footprint TraceBox and nine terrain/water samples; broad tree/cable bounds alone accepted, actual collision/nonfinite trace refused, nonzero sweep and ENTS/OCEAN flags, bounded diagnostic query and reset +PASS: actual road interpolation/projection/orientation, six35m starts,200m forward tail, preserved bends, short/far/degenerate/nonfinite/overdense/hairpin refusal and deterministic candidate ties +PASS: actual authenticated convoy dispatch, active/ready admission gates, canonical receipt, safe unconsumed preflight retry, pool refusal, retained partial failure and consumed no-retry +PASS: actual native readiness exact membership, one-time per-vehicle ledger admission/reservation, partial readiness retry without duplicate records and one-pass56-item cargo allocation without replenishment +PASS: actual per-vehicle readiness reasons, native agent/activity counts, intended-seat diagnostics, five-second throttle and read-only observation +PASS: actual convoy dispatch validates before receipt consumption, consumes once before native mutation, retains all12 partial-failure paths, refuses implicit faction replacement, and allocates exact19 bodies without capacity shrinking +PASS: own memberless prefab disables automatic spawn before initialization; actual admission rejects populated, immediate or authored-slot templates before finite crew creation +PASS: actual native seated-group arrival outside35m, native waypoint removal, idempotent advance, and convoy waypoint idempotence/arrival/deadline, missing/dead/captured/reparented crew refusal, failed native waypoint release, original vehicle/member preservation and no replacement +PASS: actual convoy receipt identity/one-use, shared60-body and128-formation caps, outstanding/native-ledger accounting, exact19-body composition, source reuse, mode/client guards and no consumed receipt refunds +PASS: actual body observer enforces owned physical roster, local death-only candidates, native trace gating, budget/cadence/caps, immutable body-only snapshots, radio retries and confirmed suppression +PASS: own initial roster, explicit retained corpse evidence, unconscious/missing/ref transfer guards, fixed strength, no replacement adoption, detached samples and surviving radio sender requirement +PASS: delivered-only status snapshots, two missed check-ins/reply deadline, last reported coordinates, episode/replay guards, confirmed-loss idempotence and 128-record cap +PASS: actual assignment cancellation/release preserves radio ownership, native waypoint lifecycle and failed-order retry boundaries +PASS: actual force ledger, finite casualties/identity/cap, routes/arrival/elevation/overshoot, server and physical guards, staggered 128-record simulated hour without world queries +PASS: actual enemy eligibility, scoped native skill floor/reset/restoration, one-roll inventory issuance, completion/failure, timeout quarantine, actor capture and terminal stop; native inventory runtime unproven +PASS: actual equipment coordinator registration dedupe, startup delay, five member scans, finite component retries, unregister/stop terminal behavior and 128-group bound +PASS: actual objective heading/threat/approach rules, persistent doctrine weight, fresh-contact coverage invalidation, stale-sweep rejection and atomic radio retask ownership +PASS: actual bounded delivered-negative coverage, replay/freshness/expiry/invalid guards, oldest eviction, small-circle and nearest-unswept selection, reserved-cell exclusion and cleanup +PASS: actual bounded pursuit roles/objectives/scores, stale search degradation, physical/busy/home guards, finite lifetime and two-bearing escape gap; no hidden player reads or spawning +PASS: actual HQ memory rules/service preserve delivered snapshots, chronology, replay bounds, decay, motion limits, identity and negative-search revisions +....... +---------------------------------------------------------------------- +Ran 7 tests in 0.022s + +OK +PASS: actual session Tick + journal router delivers each grant completion and new HQ line once, without repeats on empty/unavailable feeds or unauthorized ticks +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.200s + +OK +PASS: actual current-controller/admin/mode authorization, per-round anti-replay, token-rotation refusal, command/snapshot throttles and client scope; owner-only replies and player-tool cleanup wiring +PASS: mission provider registration is idempotent, optional dispatch is ordered, status aggregates, journals preserve cursors, aliases stay with their addons and topic help is bounded +PASS: actual menu command routing covers all ten settings, rejects unsupported keys, gates companions, and matches unique authored widgets +PASS: actual admin body authorization, god restoration, vanilla item deposit, callback completion/failure, timeout quarantine and stop/revocation paths +PASS: same-body revoke/regrant preserves pending insertions and timeout quarantine; new-body binding isolates late callbacks and never inherits god mode +PASS: actual Intel commands distinguish status/start/failure, preserve authorization gate and reject malformed requests; spent ledger is idempotent, server-only and bounded +PASS: actual reroll snapshot, authority, cancellation, ownership, accepted operations, quarantine, bounded work and stop methods; no native runtime claim +PASS: production Intel feedback coalescing, rough secrecy, rate limit, bounded dedupe, local/remote delivery and round cleanup; native UI/RPC not exercised +PASS: actual per-squad bounded report selector rotates visible targets, survives ordering/turnover, records only queued attempts, and preserves radio intake ordering +PASS: actual action denial/clearing, server request failure, single submitted-result feedback, current rescuer identity and terminal/stop suppression; native UI/RPC pending +PASS: actual physical denial precedence and transport-seat occupancy/reservation/access/lock checks +PASS: actual initial admission exhaustion and ServerTick grace; new/pending/empty/controller/life guards, normal death preserved +...................... +---------------------------------------------------------------------- +Ran 22 tests in 0.246s + +OK +...................... +---------------------------------------------------------------------- +Ran 22 tests in 24.369s + +OK +.................. +---------------------------------------------------------------------- +Ran 18 tests in 2.785s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 2.162s + +OK +............... +---------------------------------------------------------------------- +Ran 15 tests in 1.098s + +OK +PASS: actual field result/braking observer and Chat dispatch rules; one finite fixed candidate, deferred callback failure and guarded cleanup; no native measurement +PASS: actual opt-in terrain audit records one fixed1681-point grid, preserves original survey refusal/success and exact no-allocation scope; malformed heights stop without retry; no native data acquired +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.563s + +OK +PASS: actual field PI/ramp/vector caps, antiwindup, braking hypothesis, immutable admission limits and segment bounds; no native physics tested +PASS: actual100m whole-field survey sampling/4096cap, rotated coverage, all-node terrain and native trace refusal; original certificate lineage retained; no native qualification +PASS: actual QualifyField preserves original identity/footprint/time, orders complete surveys before issuance, and refuses failed stages/moved body/expired or changed world; native boundaries faked +PASS: WORKBENCH first-refusal diagnostics preserve ordinary predicates, query order/count/budget and opt-in scope; no native logging run +PASS: actual field startup delegation, immutable lease/target, braking/settling/cancel transitions, early abort, callback scope, physical terminal policy and shared landing demand; native boundaries faked +PASS: actual inherited airborne pre-CLIMB cancellation enables verified native autohover once, refuses failed enable and never writes after capture +PASS: actual Core maintenance/default/tick/stop methods; empty/populated authority, terminal reentry, no tactical resume or new scheduler; native boundaries substituted +PASS: actual finite registration, unique claims/tokens, retention/cancel/stop, readiness gating, capture/expiry retirement and bounded cross-kind order history and typed field/route construction; native boundaries faked +PASS: actual WORKBENCH route observer returns exact retained route subtype and refuses absent/field controllers +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.595s + +OK +...................... +---------------------------------------------------------------------- +Ran 22 tests in 0.161s + +OK +................ +---------------------------------------------------------------------- +Ran 16 tests in 10.622s + +OK +...... +---------------------------------------------------------------------- +Ran 6 tests in 0.020s + +OK +PASS: actual production bridge lookup, lease/world/mode/seat/capture guards, no allocation, native super ordering and read-only fixture hooks +............... +---------------------------------------------------------------------- +Ran 15 tests in 0.060s + +OK +............. +---------------------------------------------------------------------- +Ran 13 tests in 5.295s + +OK +PASS: actual route gain/caps/braking, callback selection, old landing/cancellation control and matching read-only telemetry +.............................. +---------------------------------------------------------------------- +Ran 30 tests in 0.452s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 0.220s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.125s + +OK +PASS: actual gate observer binds native registered action/context and current life, reads accumulated progress, refuses stale bindings and never revives outside original bounds +PASS: actual read-only look observer methods enforce explicit scope, pinned native camera/body/identity, normalized pose, terminal cancellation and original sample/time bounds +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.073s + +OK +....................... +---------------------------------------------------------------------- +Ran 23 tests in 0.039s + +OK +PASS: actual initial WAITING task/guide copy, configured duration, unchanged interruption and rounded progress; native task assertion pending +........ +---------------------------------------------------------------------- +Ran 8 tests in 0.012s + +OK +PASS: actual inventory adapter scope, grid placement, sole compatible host, refresh reuse, rollback, foreign hierarchy refusal and exactly-once native delegation; native compatibility pending +................................................................................. +---------------------------------------------------------------------- +Ran 81 tests in 0.576s + +OK +...... +---------------------------------------------------------------------- +Ran 6 tests in 0.077s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 0.002s + +OK +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.086s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.379s + +OK +PASS: actual observer nonce, admission pins, baseline/menu sequencing, snapshots, bounded clocks/samples, cleanup and one-attempt latch; native untested +PASS: actual corridor caps/height/hold and whole-rectangle survey bounds, terrain refusal, native trace refusal and exact certificate lineage; native route unqualified +PASS: actual route entry, fixed corridor/target, hover hold, cancellation landing freeze, shared lease/capture/deadline gate and unchanged native startup/tick sequence +PASS: finite opt-in route fixture, original native input order, meaningful physical-arrival evidence and guarded cleanup; no native launch +PASS: actual Chat route step result dispatch and scoped completion/cleanup wiring; six real early-parser refusal paths leave no prefix/profile output +PASS: actual retained-service fixture entry, immutable controller/token/deadline/count bindings, observer getter and cleanup ownership ordering; native route validation pending +PASS: actual measured cancellation gate, one-shot retained service Stop, no premature drain, immutable lease, fresh real controller readback and separate physical cancellation result policy +PASS: actual rough-intel objective selection, exact precedence, source grid dimensions and unchanged other-phase dispatch; native UI pending +................................. +---------------------------------------------------------------------- +Ran 33 tests in 0.086s + +OK +............... +---------------------------------------------------------------------- +Ran 15 tests in 0.029s + +OK +PASS: actual preparation status scope, persistent updates, spinner restoration, placeholder replacement/deletion/destruction, native observation persistence/timeout; rendering remains native-pending +PASS: actual guide/observer monitors retry native refusal, cache successful delivery, deduplicate and preserve living/preparing/spectator boundaries; native UI not exercised +PASS: actual native-end shutdown, existing terminal snapshots, reentrancy, unchanged native end data and stale preparation guards +.... +---------------------------------------------------------------------- +Ran 4 tests in 1.229s + +OK +PASS: actual three-state result wording and UI refresh; stale winner IDs never manufacture escape +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.100s + +OK +PASS: actual immutable target, bounded autohover demand, drift refusal, five-second hold and unchanged qualification/deadline +PASS: actual admission attempt budget bounds blocked/missing prerequisites; preparation, spent life and async pending remain protected +PASS: actual action permission matrix unchanged; useful phase/intel/consciousness denials, stale reason cleared, native door denial preserved; no native UI claim +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.217s + +OK +PASS: actual aircraft cancellation/stage rules, ground-only completion, expiry/capture faults, input ownership and no physical shortcuts +PASS: actual exact-instance single-use qualification, native-clock staleness/movement refusal, footprint bounds and ownership-safe ground/fault cleanup +PASS: actual optional screenshot helper flag/identity/world/life revalidation, one queued attempt, delayed capture and mission/world cleanup; no native image/presentation claim +PASS: actual yard diagnostic exact registered prison ownership, eight native-bound corner projections, no root-sibling escape, bounded duplicate/deep/wide hierarchy traversal; native projection/mask still unmeasured +PASS: actual CurrentActor, SpawnPosition and observer-selection methods reject pending/unregistered/replaced/recycled/foreign/dead bodies; canonical selection/cycling, unconscious following and prison/geometry fallback preserved; native boundaries adapted +PASS: actual native-map fixture ownership, cleanup and callback evidence fail closed; native execution remains separate +PASS: actual shared-map callbacks bind exact map/config/root, preserve replacement UI/camera, defer focus, and remove only owned delayed work +PASS: actual Intel/HQ methods and one-shot qualified readiness handoff deliver late actors once; duplicate readiness, accepted spawn, pickup/drop, death and original negative rolls do not mint assignments +PASS: Workbench-only read accessor rejects unknown/nonserver identities; Chat observes all distinct ready crew before existing shell-depletion mutation +PASS: actual native-event latch survives deselection, requires exact activity/order, detaches before cleanup, preserves failure/timeout and never infers completion from physical shot count +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.105s + +OK +PASS: actual refresh-fixture gates pin immutable observations/actual downlinks/original activity, reject unaccepted or relabelled commits, stop queueing early and require all queued contacts claimed before replay +.......................... +---------------------------------------------------------------------- +Ran 26 tests in 0.190s + +OK +PASS: actual refresh scheduler/delivery/cancellation/projectile methods reject interrupted or replayed reports, retain committed ownership, preserve immutable snapshots/aim geometry and isolate stopped or replaced orders; native radio/crew behavior remains separate +..................... +---------------------------------------------------------------------- +Ran 21 tests in 0.032s + +OK +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.031s + +OK +PASS: actual full-salvo gates require eight fresh committed physical launches, natural closure and exact finite inventory; reject partial/extra/replayed events +PASS: actual reason/availability guidance and refresh matrix; no-target copy omits cycling, hint retry retained, existing command/admin paths unchanged; native UI pending +................usage: test_native_package.py [-h] [--project {core}] --session SESSION + --compat COMPAT [--steam STEAM] + [--timeout TIMEOUT] + [--external-addons EXTERNAL_ADDONS] + [--silent-workbench | --exit-after-init] + [--continue-on-failure] +test_native_package.py: error: argument --exit-after-init: not allowed with argument --silent-workbench +................................ +---------------------------------------------------------------------- +Ran 48 tests in 7.585s + +OK +....... +---------------------------------------------------------------------- +Ran 7 tests in 0.233s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 1.389s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.268s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.055s + +OK +PASS: actual finite-courier age, token, exact ownership/callback and delivered-status admission reject stale, replayed, captured, canceled and ambiguous work +PASS: actual native-gun ownership gate rejects player/foreign/replaced/dead occupant, faction change, missing seat and missing registry +PASS: 64 bounded distinct storage candidates; native gates, five-store barrier and finite-stock ownership retained; native placement pending +PASS: 128 coarse+80 local refinement+169 airport grid candidates retain all native clearance gates; real terrain untested +PASS: actual prison registration/crossing policies reject missing/duplicate/destroyed initial gate, incomplete ownership/scan, outside-only body, jumps and stale samples; physical exit independent of later gate damage +PASS: actual prison door execution blocks direct AI/UI bypass while locked and delegates unchanged native action once after unlock and permission approval +.................. +---------------------------------------------------------------------- +Ran 18 tests in 1.787s + +OK +..... +---------------------------------------------------------------------- +Ran 5 tests in 1.064s + +OK +PASS: native local-admission snapshot rejects changed life/key/body/participant/pending state; authentication is not simulated +PASS: actual mortar report ledger prevents duplicate response after cancellation, expiry and interleaved reports; native scheduler separate +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.013s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.143s + +OK +PASS: actual aim renewal requires fresh same-report solve and original-command equivalence; native firing untested +........ +---------------------------------------------------------------------- +Ran 8 tests in 0.011s + +OK +PASS: actual startup/generation/ownership/timeout/callback policies and native-counter wait; integration preserves one-shot allocation and pending-crew cancellation +PASS: actual probe binds native events to fresh immutable commits, permits delayed emission, rejects unrelated expiry closure and premature stop +PASS: actual noSplash Load body requires both explicit diagnostic and noSplash, preserves vanilla otherwise, and handles repeated Load/reload +PASS: actual fixture method permits one native resilience operation and restores either prior protection state, including failure paths +PASS: actual safe-exit boundary policy, native action/door selection, stop/cache cleanup, separate old mechanism and opt-in runner contracts +PASS: actual one-shot deadline/stability policies and preparation ownership, fuel, cleanup integration contracts +PASS: pending-only cancellation retires copied instance intent, preserves physical/control actors, and stops once +PASS: actual short-cast hit, upward support normal, no self support and no dynamic support +PASS: actual committed-ticket structure preserves reservation after death, rejects missing bodies/seats and ends at observation expiry +PASS: actual pending callback expires an empty-server reservation once, preserves its full lease, and cancels on completion/Stop +PASS: rescue lease expiry/reordering, fresh five-second settling, independent rescue ranges and grounded upright aircraft motion boundaries +PASS: requested guard population requires complete physical conscious membership before deadline +.................................... +---------------------------------------------------------------------- +Ran 36 tests in 0.019s + +OK +.......... +---------------------------------------------------------------------- +Ran 10 tests in 0.002s + +OK +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.892s + +OK +PASS: authored radio/optional-site bounds and physical horizontal/vertical boundaries +... +---------------------------------------------------------------------- +Ran 3 tests in 0.001s + +OK +PASS: all phase transitions, terminal states, defence boundaries, stale/future observations, intel discovery +PASS: Core document-discovery alias, companion-only alias exclusion, strict integer parsing and setting boundaries +PASS: player admission phase/life/identity/controller matrix, preload displacement limits, pending reservation overlap and owner exclusion +PASS: actual gate and pre-inventory document guards reject noncanonical/faction/life/disconnect/server mismatches; canonical reconnect and unconscious carried intel preserved +PASS: WB-only native fault injection restores both body mutations before checks/returns and requires eligible held-document negative/positive proof; runtime pending +PASS: actual discovery coordinates disclose stable 500m cell center until identified, then exact point, including negative/boundary coordinates +PASS: actual local admission context/selection/latch, same-round late identity, replacement/mode failure, fresh round and untouched network path +PASS: prison search packs 16 unique 3m-spaced inside-wall centers, prioritizes inner/edge positions and never bypasses clearance +PASS: recovery state excludes dead bodies, preserves reservations, requires controlled rescuers and distinguishes empty/all-dead teams +PASS: every minute round-trips, malformed clocks rejected, defaults limited to added keys, progression bounds and day duration aligned +PASS: native settings policy matches calendar boundaries 1900-2050, date/profile parsing is strict, authored defaults preserve old worlds +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.530s + +OK +. +---------------------------------------------------------------------- +Ran 1 test in 0.330s + +OK +PASS: radio authorization/discovery/phase matrix, exact distance limits, defender handover, interruption, empty samples, clock regression and duration boundary +PASS: actual radio feedback policy, initial wait, interruption persistence, resumption and terminal/new-round reset +............... +---------------------------------------------------------------------- +Ran 15 tests in 2.045s + +OK +.............................................. +---------------------------------------------------------------------- +Ran 46 tests in 0.823s + +OK +PASS: legacy values preserved, unsupported fields reported, invalid data rejected, existing files protected, runtime bounds aligned +PASS: real-carrier shortest-hop paths, 500m boundary, three-hop cap, no-manpack failure, three-second originating-call interruption, unchanged downlink hop timing, completed-hop survival, interrupted final uplink, radio loss, capture, motion, timeout, reset and network bounds +PASS: migrated aircraft availability policy (controller migration still pending) +PASS: migrated salvo offsets are deterministic, spread and bounded (native firing and complete salvo qualification are separate) +PASS: 20 prefabs have unique saved root entity IDs +PASS: 299 original script entries tracked across 18 unfinished responsibilities +PASS: 1 isolated addons, acyclic dependencies, 34 unique resources, exact vanilla/authorized external references +All repository checks passed. Native compilation and multiplayer tests are separate requirements. diff --git a/docs/evidence/native-2026-09-20-prefab-ids/rereintroduced-hq.log.txt b/docs/evidence/native-2026-09-20-prefab-ids/rereintroduced-hq.log.txt new file mode 100644 index 0000000..c9b6a2c --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/rereintroduced-hq.log.txt @@ -0,0 +1,250 @@ +#1 t=6.7s M0 REGISTER group 1 [session=1789906377-1] +#2 t=6.7s M0 MORTAR DEPLOY site=1 order=0 radio=M0 source=M0 position=<6000,202.788,7000>; authored gun and four-person crew; finite ammunition initialization pending [session=1789906377-1] +#3 t=7.7s M0 CONVOY STARTUP startup grace; [session=1789906377-1] +#4 t=7.7s M0 COURIER READY trip=0 state=1 delivered=0; 12 distinct original HE shells physically confirmed in existing western cache [session=1789906377-1] +#5 t=8.7s M0 REGISTER group 2 [session=1789906377-1] +#6 t=8.7s M0 REGISTER group 3 [session=1789906377-1] +#7 t=8.7s M0 REGISTER group 4 [session=1789906377-1] +#8 t=8.7s M0 REGISTER group 5 [session=1789906377-1] +#9 t=8.7s M0 REGISTER group 6 [session=1789906377-1] +#10 t=8.7s M0 REGISTER group 7 [session=1789906377-1] +#11 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789906377-1] +#12 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789906377-1] +#13 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789906377-1] +#14 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789906377-1] +#15 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789906377-1] +#16 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789906377-1] +#17 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#18 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#19 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#20 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#21 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#22 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#23 t=16.7s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789906377-1] +#24 t=18.7s M0 MORTAR CREW READY site=1 order=0 radio=M0 source=M0 position=<6000,202.788,7000>; four original physical members, one manpack, 27 confirmed HE; new shell requests=27; allocation permanently closed [session=1789906377-1] +#25 t=19.7s M5 STATUS REPORT status everon-supply-2: 6 living, 6 fit, 0 confirmed losses; sampled=19749.2; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789906377-1] +#26 t=19.7s M6 STATUS REPORT status everon-extraction-1: 6 living, 6 fit, 0 confirmed losses; sampled=19749.2; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789906377-1] +#27 t=19.7s M8 STATUS REPORT status formation-1: 4 living, 4 fit, 0 confirmed losses; sampled=19749.2; small-arms ammunition=596 magazine rounds, 4 chambered [session=1789906377-1] +#28 t=20.8s M9 STATUS REPORT status everon-outpost-1: 6 living, 6 fit, 0 confirmed losses; sampled=20750.4; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789906377-1] +#29 t=20.8s M5 CALL unit 6 originating report; three seconds before transmission [session=1789906377-1] +#30 t=20.8s M6 CALL unit 5 originating report; three seconds before transmission [session=1789906377-1] +#31 t=20.8s M10 STATUS REPORT status everon-prison-1: 6 living, 6 fit, 0 confirmed losses; sampled=20750.4; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789906377-1] +#32 t=20.8s M8 CALL unit 1 originating report; three seconds before transmission [session=1789906377-1] +#33 t=21.8s M9 CALL unit 7 originating report; three seconds before transmission [session=1789906377-1] +#34 t=21.8s M11 STATUS REPORT status everon-supply-1: 6 living, 6 fit, 0 confirmed losses; sampled=21756.3; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789906377-1] +#35 t=21.8s M10 CALL unit 2 originating report; three seconds before transmission [session=1789906377-1] +#36 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#37 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#38 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#39 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#40 t=22.8s M12 STATUS REPORT status everon-radio-1: 6 living, 6 fit, 0 confirmed losses; sampled=22758.8; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789906377-1] +#41 t=22.8s M11 CALL unit 3 originating report; three seconds before transmission [session=1789906377-1] +#42 t=23.8s M5 CALL COMPLETE unit 6 completed originating report [session=1789906377-1] +#43 t=23.8s M5 TRANSMIT unit 6 -> HQ (long-range) [session=1789906377-1] +#44 t=23.8s M6 CALL COMPLETE unit 5 completed originating report [session=1789906377-1] +#45 t=23.8s M6 TRANSMIT unit 5 -> HQ (long-range) [session=1789906377-1] +#46 t=23.8s M12 CALL unit 4 originating report; three seconds before transmission [session=1789906377-1] +#47 t=23.8s M8 CALL COMPLETE unit 1 completed originating report [session=1789906377-1] +#48 t=23.8s M8 TRANSMIT unit 1 -> HQ (long-range) [session=1789906377-1] +#49 t=24.8s M9 CALL COMPLETE unit 7 completed originating report [session=1789906377-1] +#50 t=24.8s M9 TRANSMIT unit 7 -> HQ (long-range) [session=1789906377-1] +#51 t=24.8s M10 CALL COMPLETE unit 2 completed originating report [session=1789906377-1] +#52 t=24.8s M10 TRANSMIT unit 2 -> HQ (long-range) [session=1789906377-1] +#53 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#54 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#55 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#56 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#57 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#58 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#59 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#60 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#61 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#62 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#63 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#64 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#65 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#66 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#67 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#68 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#69 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#70 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#71 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#72 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#73 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#74 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#75 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#76 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#77 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#78 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#79 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#80 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#81 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#82 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#83 t=25.8s M5 RECEIVE HQ received from unit 6 [session=1789906377-1] +#84 t=25.8s M6 RECEIVE HQ received from unit 5 [session=1789906377-1] +#85 t=25.8s M11 CALL COMPLETE unit 3 completed originating report [session=1789906377-1] +#86 t=25.8s M11 TRANSMIT unit 3 -> HQ (long-range) [session=1789906377-1] +#87 t=25.8s M8 RECEIVE HQ received from unit 1 [session=1789906377-1] +#88 t=26.8s M9 RECEIVE HQ received from unit 7 [session=1789906377-1] +#89 t=26.8s M12 CALL COMPLETE unit 4 completed originating report [session=1789906377-1] +#90 t=26.8s M12 TRANSMIT unit 4 -> HQ (long-range) [session=1789906377-1] +#91 t=26.8s M10 RECEIVE HQ received from unit 2 [session=1789906377-1] +#92 t=27.8s M11 RECEIVE HQ received from unit 3 [session=1789906377-1] +#93 t=28.8s M12 RECEIVE HQ received from unit 4 [session=1789906377-1] +#94 t=37.8s M0 CONVOY CREATED six physical vehicles and 19 finite crew; native readiness and ledger admission pending [session=1789906377-1] +#95 t=37.8s M0 CONVOY STARTUP canonical convoy dispatched; [session=1789906377-1] +#96 t=38.7s M0 CONVOY READINESS vehicle=0 reason=readiness guards satisfied; awaiting admission members=2 agents=2 activeAgents=2 activeGroup=1 seats=2 registered=0 [session=1789906377-1] +#97 t=38.7s M0 CONVOY READINESS vehicle=1 reason=readiness guards satisfied; awaiting admission members=1 agents=1 activeAgents=1 activeGroup=1 seats=1 registered=0 [session=1789906377-1] +#98 t=38.7s M0 CONVOY READINESS vehicle=2 reason=readiness guards satisfied; awaiting admission members=9 agents=9 activeAgents=9 activeGroup=1 seats=9 registered=0 [session=1789906377-1] +#99 t=38.7s M0 CONVOY READINESS vehicle=3 reason=readiness guards satisfied; awaiting admission members=2 agents=2 activeAgents=2 activeGroup=1 seats=2 registered=0 [session=1789906377-1] +#100 t=38.7s M0 CONVOY READINESS vehicle=4 reason=readiness guards satisfied; awaiting admission members=3 agents=3 activeAgents=3 activeGroup=1 seats=3 registered=0 [session=1789906377-1] +#101 t=38.7s M0 CONVOY READINESS vehicle=5 reason=readiness guards satisfied; awaiting admission members=2 agents=2 activeAgents=2 activeGroup=1 seats=2 registered=0 [session=1789906377-1] +#102 t=38.7s M0 REGISTER group 8 [session=1789906377-1] +#103 t=38.7s M0 REGISTER group 9 [session=1789906377-1] +#104 t=38.7s M0 REGISTER group 10 [session=1789906377-1] +#105 t=38.7s M0 REGISTER group 11 [session=1789906377-1] +#106 t=38.7s M0 REGISTER group 12 [session=1789906377-1] +#107 t=38.7s M0 REGISTER group 13 [session=1789906377-1] +#108 t=38.7s M0 CONVOY CARGO finite target submitted once: eight AK74 and 48 magazines; native capacity/completion may reduce actual stock [session=1789906377-1] +#109 t=39.8s M0 INFANTRY SUPPLY trip=0 state=1 moved=0 spent=0/48; truck magazine identities captured once after startup; absent/looted stock is never replaced [session=1789906377-1] +#110 t=41.8s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#111 t=41.8s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#112 t=41.8s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#113 t=41.8s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789906377-1] +#114 t=44.8s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789906377-1] +#115 t=44.8s M0 RADIO EQUIPMENT native radio completion recorded; original group allocation terminal, no replenishment [session=1789906377-1] +#116 t=44.8s M0 RADIO EQUIPMENT native radio completion recorded; original group allocation terminal, no replenishment [session=1789906377-1] +#117 t=45.2s M15 CALL unit 2 originating report; three seconds before transmission [session=1789906377-1] +#118 t=46.8s M15 LOST originating call lost its living owned radio carrier; FIXTURE synthetic observed position; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (0s ago) [session=1789906377-1] +#119 t=47.8s M16 CALL unit 3 originating report; three seconds before transmission [session=1789906377-1] +#120 t=48.8s M17 STATUS REPORT status everon-supply-convoy-1-vehicle-2: 9 living, 9 fit, 0 confirmed losses; sampled=48800.7; small-arms ammunition=1881 magazine rounds, 9 chambered [session=1789906377-1] +#121 t=49.8s M19 STATUS REPORT status everon-supply-convoy-1-vehicle-3: 2 living, 2 fit, 0 confirmed losses; sampled=49803.3; small-arms ammunition=418 magazine rounds, 2 chambered [session=1789906377-1] +#122 t=49.8s M17 CALL unit 10 originating report; three seconds before transmission [session=1789906377-1] +#123 t=50.8s M23 STATUS REPORT status everon-supply-convoy-1-vehicle-4: 3 living, 3 fit, 0 confirmed losses; sampled=50811.7; small-arms ammunition=627 magazine rounds, 3 chambered [session=1789906377-1] +#124 t=50.8s M19 CALL unit 11 originating report; three seconds before transmission [session=1789906377-1] +#125 t=50.8s M16 CALL COMPLETE unit 3 completed originating report [session=1789906377-1] +#126 t=50.8s M16 TRANSMIT unit 3 -> HQ (long-range) [session=1789906377-1] +#127 t=51.8s M26 STATUS REPORT status everon-supply-convoy-1-vehicle-5: 2 living, 2 fit, 0 confirmed losses; sampled=51823.7; small-arms ammunition=418 magazine rounds, 2 chambered [session=1789906377-1] +#128 t=51.8s M23 CALL unit 12 originating report; three seconds before transmission [session=1789906377-1] +#129 t=51.8s M27 STATUS REPORT status everon-supply-convoy-1-vehicle-0: 2 living, 2 fit, 0 confirmed losses; sampled=51823.7; small-arms ammunition=418 magazine rounds, 2 chambered [session=1789906377-1] +#130 t=52.8s M26 CALL unit 13 originating report; three seconds before transmission [session=1789906377-1] +#131 t=52.8s M17 CALL COMPLETE unit 10 completed originating report [session=1789906377-1] +#132 t=52.8s M17 TRANSMIT unit 10 -> unit 1 (122m short-range) [session=1789906377-1] +#133 t=52.8s M28 STATUS REPORT status everon-supply-convoy-1-vehicle-1: 1 living, 1 fit, 0 confirmed losses; sampled=52823.8; small-arms ammunition=209 magazine rounds, 1 chambered [session=1789906377-1] +#134 t=52.8s M27 CALL unit 8 originating report; three seconds before transmission [session=1789906377-1] +#135 t=52.8s M16 RECEIVE HQ received from unit 3 [session=1789906377-1] +#136 t=52.8s M16 BELIEF delivered report M16 retained; tracks=1 [session=1789906377-1] +#137 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#138 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#139 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#140 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#141 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#142 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#143 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#144 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#145 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#146 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#147 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#148 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#149 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#150 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#151 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#152 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#153 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#154 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#155 t=53.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789906377-1] +#156 t=53.8s M19 CALL COMPLETE unit 11 completed originating report [session=1789906377-1] +#157 t=53.8s M19 TRANSMIT unit 11 -> unit 1 (133m short-range) [session=1789906377-1] +#158 t=53.8s M28 CALL unit 9 originating report; three seconds before transmission [session=1789906377-1] +#159 t=53.8s M31 CALL unit 2 originating report; three seconds before transmission [session=1789906377-1] +#160 t=53.8s M32 ORDER QUEUED group 7 search; belief=1 from report M16; destination=<6390,211.444,7460> [session=1789906377-1] +#161 t=54.8s M23 CALL COMPLETE unit 12 completed originating report [session=1789906377-1] +#162 t=54.8s M23 TRANSMIT unit 12 -> unit 1 (184m short-range) [session=1789906377-1] +#163 t=54.8s M17 RECEIVE unit 1 received from unit 10 [session=1789906377-1] +#164 t=54.8s M17 TRANSMIT unit 1 -> HQ (long-range) [session=1789906377-1] +#165 t=54.8s M32 TRANSMIT HQ -> unit 7 (long-range) [session=1789906377-1] +#166 t=55.8s M26 CALL COMPLETE unit 13 completed originating report [session=1789906377-1] +#167 t=55.8s M26 TRANSMIT unit 13 -> HQ (long-range) [session=1789906377-1] +#168 t=55.8s M19 RECEIVE unit 1 received from unit 11 [session=1789906377-1] +#169 t=55.8s M19 TRANSMIT unit 1 -> HQ (long-range) [session=1789906377-1] +#170 t=55.8s M27 CALL COMPLETE unit 8 completed originating report [session=1789906377-1] +#171 t=55.8s M27 TRANSMIT unit 8 -> unit 1 (66m short-range) [session=1789906377-1] +#172 t=56.8s M23 RECEIVE unit 1 received from unit 12 [session=1789906377-1] +#173 t=56.8s M23 TRANSMIT unit 1 -> HQ (long-range) [session=1789906377-1] +#174 t=56.8s M17 RECEIVE HQ received from unit 1 [session=1789906377-1] +#175 t=56.8s M28 CALL COMPLETE unit 9 completed originating report [session=1789906377-1] +#176 t=56.8s M28 TRANSMIT unit 9 -> HQ (long-range) [session=1789906377-1] +#177 t=56.8s M32 RECEIVE unit 7 received from HQ [session=1789906377-1] +#178 t=56.8s M32 ORDER DELIVERED group 7 search from report M16; belief=1 destination=<6390,211.444,7460> [session=1789906377-1] +#179 t=56.8s M31 CALL COMPLETE unit 2 completed originating report [session=1789906377-1] +#180 t=56.8s M31 TRANSMIT unit 2 -> unit 1 (224m short-range) [session=1789906377-1] +#181 t=57.8s M26 RECEIVE HQ received from unit 13 [session=1789906377-1] +#182 t=57.8s M19 RECEIVE HQ received from unit 1 [session=1789906377-1] +#183 t=57.8s M27 RECEIVE unit 1 received from unit 8 [session=1789906377-1] +#184 t=57.8s M27 TRANSMIT unit 1 -> HQ (long-range) [session=1789906377-1] +#185 t=58.8s M23 RECEIVE HQ received from unit 1 [session=1789906377-1] +#186 t=58.8s M28 RECEIVE HQ received from unit 9 [session=1789906377-1] +#187 t=58.8s M31 RECEIVE unit 1 received from unit 2 [session=1789906377-1] +#188 t=58.8s M31 TRANSMIT unit 1 -> HQ (long-range) [session=1789906377-1] +#189 t=58.8s M33 ORDER QUEUED MORTAR ORDER from report M16; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (12s ago) [session=1789906377-1] +#190 t=58.8s M0 MORTAR COMMAND site=1 order=1 radio=M0 source=M16 position=<6000,202.788,7000>; requested rounds=8 HE radius=40m; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (12s ago) [session=1789906377-1] +#191 t=59.8s M27 RECEIVE HQ received from unit 1 [session=1789906377-1] +#192 t=59.8s M33 TRANSMIT HQ -> unit 1 (long-range) [session=1789906377-1] +#193 t=60.9s M31 RECEIVE HQ received from unit 1 [session=1789906377-1] +#194 t=60.9s M31 BELIEF delivered report M31 retained; tracks=1 [session=1789906377-1] +#195 t=61.9s M34 CALL unit 2 originating report; three seconds before transmission [session=1789906377-1] +#196 t=61.9s M33 RECEIVE unit 1 received from HQ [session=1789906377-1] +#197 t=61.9s M33 MORTAR AIM site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; native activity created; latest source=M16 observed=X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (15s ago) [session=1789906377-1] +#198 t=62.9s M33 MORTAR ACTIVITY site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=native state=1; age=1.00012s aim age=62.8645s committed=0 shots=0; previous= repeated polls omitted=0 [session=1789906377-1] +#199 t=63.9s M35 ORDER QUEUED MORTAR UPDATE from report M31; X=6414 Z=7460: count unknown; on foot; 13 km/h, azimuth 90 degrees (E); seen weapons: unknown; vector X/Z=[3.6,0] m/s (10s ago) [session=1789906377-1] +#200 t=63.9s M33 MORTAR UPDATE QUEUED site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; same order; update radio=M35 newer observation=M31 observed=53830.7 [session=1789906377-1] +#201 t=64.9s M34 CALL COMPLETE unit 2 completed originating report [session=1789906377-1] +#202 t=64.9s M34 TRANSMIT unit 2 -> unit 1 (224m short-range) [session=1789906377-1] +#203 t=64.9s M35 TRANSMIT HQ -> unit 1 (long-range) [session=1789906377-1] +#204 t=65.6s M33 MORTAR AIM START site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=solving moving intercept; latest source=M16; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (18s ago); previous= repeated polls omitted=0 [session=1789906377-1] +#205 t=65.6s M33 MORTAR AIM SOLUTION site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=ready; predicted impact=<6397.07,175.092,7447.75> flight=18.5667s charge index=1 aim target=<6397.07,1766.22,7447.75> latest source=M16; previous= repeated polls omitted=0 [session=1789906377-1] +#206 t=66.9s M34 RECEIVE unit 1 received from unit 2 [session=1789906377-1] +#207 t=66.9s M34 TRANSMIT unit 1 -> HQ (long-range) [session=1789906377-1] +#208 t=66.9s M35 RECEIVE unit 1 received from HQ [session=1789906377-1] +#209 t=66.9s M33 MORTAR WITHHELD site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=target update requires a different native aim command; ; previous= repeated polls omitted=0 [session=1789906377-1] +#210 t=66.9s M33 MORTAR UPDATE REJECTED site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; delivered update cannot preserve the original native aim command [session=1789906377-1] +#211 t=67.9s M33 MORTAR REPEATS site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; phase=ACTIVITY reason=native state=1 repeated polls omitted=4 [session=1789906377-1] +#212 t=67.9s M33 MORTAR ORDER END site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=native aim or firing authorization rejected observed shots=0 shell committed=0 elapsed=6.03301s last failure=delivered update cannot preserve the original native aim command [session=1789906377-1] +#213 t=68.9s M34 RECEIVE HQ received from unit 1 [session=1789906377-1] +#214 t=68.9s M34 AREA SWEPT group 2 reported no contact at <6414,211.444,7460>; belief=1 [session=1789906377-1] +#215 t=69.9s M36 CALL unit 2 originating report; three seconds before transmission [session=1789906377-1] +#216 t=72.9s M36 CALL COMPLETE unit 2 completed originating report [session=1789906377-1] +#217 t=72.9s M36 TRANSMIT unit 2 -> unit 1 (224m short-range) [session=1789906377-1] +#218 t=74.9s M36 RECEIVE unit 1 received from unit 2 [session=1789906377-1] +#219 t=74.9s M36 TRANSMIT unit 1 -> HQ (long-range) [session=1789906377-1] +#220 t=77s M36 RECEIVE HQ received from unit 1 [session=1789906377-1] +#221 t=77s M36 BELIEF delivered report M36 retained; tracks=1 [session=1789906377-1] +#222 t=78s M37 CALL unit 2 originating report; three seconds before transmission [session=1789906377-1] +#223 t=79s M39 ORDER QUEUED MORTAR ORDER from report M36; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (9s ago) [session=1789906377-1] +#224 t=79s M0 MORTAR COMMAND site=1 order=2 radio=M0 source=M36 position=<6000,202.788,7000>; requested rounds=8 HE radius=40m; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (9s ago) [session=1789906377-1] +#225 t=80s M39 TRANSMIT HQ -> unit 1 (long-range) [session=1789906377-1] +#226 t=81s M37 CALL COMPLETE unit 2 completed originating report [session=1789906377-1] +#227 t=81s M37 TRANSMIT unit 2 -> unit 1 (224m short-range) [session=1789906377-1] +#228 t=82s M39 RECEIVE unit 1 received from HQ [session=1789906377-1] +#229 t=82s M39 MORTAR AIM site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; native activity created; latest source=M36 observed=X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (12s ago) [session=1789906377-1] +#230 t=82.3s M39 MORTAR AIM START site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=solving moving intercept; latest source=M36; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (13s ago); previous= repeated polls omitted=0 [session=1789906377-1] +#231 t=82.3s M39 MORTAR AIM SOLUTION site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=ready; predicted impact=<6400.98,175.568,7454.47> flight=18.5001s charge index=1 aim target=<6400.98,1759.39,7454.47> latest source=M36; previous= repeated polls omitted=0 [session=1789906377-1] +#232 t=83s M37 RECEIVE unit 1 received from unit 2 [session=1789906377-1] +#233 t=83s M37 TRANSMIT unit 1 -> HQ (long-range) [session=1789906377-1] +#234 t=83s M39 MORTAR ACTIVITY site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=native state=1; age=1.0008s aim age=0.719125s committed=0 shots=0; previous= repeated polls omitted=0 [session=1789906377-1] +#235 t=85s M37 RECEIVE HQ received from unit 1 [session=1789906377-1] +#236 t=95.4s M39 MORTAR AIM REVALIDATED site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=same native command; fresh ballistic solve matched original; source=M36 observed age=25.8359s; previous= repeated polls omitted=0 [session=1789906377-1] +#237 t=95.4s M39 MORTAR SHOOT NODE site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=native result=2; authorization passed; node result does not confirm a physical shot; previous= repeated polls omitted=0 [session=1789906377-1] +#238 t=96.3s M39 MORTAR SHELL COMMIT site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; final safety passed; gunner=SCR_ChimeraCharacter<0x0000000085A94B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.875488 202.695953 7000.016602> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" predicted impact=<6400.98,175.568,7454.47> flight=18.5001s; invoking native transfer, awaiting projectile event [session=1789906377-1] +#239 t=97.3s M39 MORTAR FIRED site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; physical projectile=Projectile<0x00000001A897B6F0> @"ENTITY:4611686018427391071" ('Projectile','Assets/Weapons/Ammo/Shells/82mm_Mortar_2B14/Shell_82mm_HE_O832DU.xob') at <6000.330078 204.006302 7000.380371> @"{98EC9C526AFBA282}Prefabs/Weapons/Ammo/Ammo_Shell_82mm_HE_O832DU.et" origin=<6000.33,204.006,7000.38> order shots=1 total shots=1 predicted impact=<6400.98,175.568,7454.47> predicted flight=18.5001s gunner=SCR_ChimeraCharacter<0x0000000085A94B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.875488 202.691452 7000.016602> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" (impact not observed) [session=1789906377-1] +#240 t=105s M39 MORTAR SHELL COMMIT site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; final safety passed; gunner=SCR_ChimeraCharacter<0x0000000085A94B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.901855 202.697998 7000.042480> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" predicted impact=<6422.29,177.023,7478.2> flight=18.3001s; invoking native transfer, awaiting projectile event [session=1789906377-1] +#241 t=106s M39 MORTAR FIRED site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; physical projectile=Projectile<0x00000001A897B800> @"ENTITY:4611686018427391076" ('Projectile','Assets/Weapons/Ammo/Shells/82mm_Mortar_2B14/Shell_82mm_HE_O832DU.xob') at <6000.351074 203.993774 7000.402832> @"{98EC9C526AFBA282}Prefabs/Weapons/Ammo/Ammo_Shell_82mm_HE_O832DU.et" origin=<6000.35,203.994,7000.4> order shots=2 total shots=2 predicted impact=<6422.29,177.023,7478.2> predicted flight=18.3001s gunner=SCR_ChimeraCharacter<0x0000000085A94B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.901855 202.695312 7000.042480> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" (impact not observed) [session=1789906377-1] +#242 t=113.2s M39 MORTAR ACTIVITY site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=native state=1; age=31.1972s aim age=3.15615s committed=0 shots=2; previous=native state=1 repeated polls omitted=29 [session=1789906377-1] +#243 t=116.2s M0 INFANTRY SUPPLY trip=0 state=1 moved=0 spent=0/48; service stopped; original forces and all remaining cargo retained [session=1789906377-1] +#244 t=116.2s M0 CONVOY STOP HQ ended convoy task service; surviving entities and cargo preserved [session=1789906377-1] +#245 t=116.2s M39 MORTAR REPEATS site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; phase=SHOOT NODE reason=native result=2 repeated polls omitted=2 [session=1789906377-1] +#246 t=116.2s M39 MORTAR REPEATS site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; phase=AIM SOLUTION reason=ready repeated polls omitted=2 [session=1789906377-1] +#247 t=116.2s M39 MORTAR REPEATS site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; phase=ACTIVITY reason=native state=1 repeated polls omitted=2 [session=1789906377-1] +#248 t=116.2s M39 MORTAR REPEATS site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; phase=AIM START reason=solving moving intercept repeated polls omitted=2 [session=1789906377-1] +#249 t=116.2s M39 MORTAR ORDER END site=1 order=2 radio=M39 source=M36 position=<6000,202.788,7000>; reason=HQ stopped observed shots=2 shell committed=0 elapsed=34.213s last failure= [session=1789906377-1] +#250 t=116.2s M0 STOP HQ stopped; tactical orders released [session=1789906377-1] diff --git a/docs/evidence/native-2026-09-20-prefab-ids/runner.json.txt b/docs/evidence/native-2026-09-20-prefab-ids/runner.json.txt new file mode 100644 index 0000000..90d335f --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/runner.json.txt @@ -0,0 +1,34 @@ +{ + "stopped_unix": 1789906506.6288195, + "console_sha256": "82aa84a029282980478f38409ce6317e6aafc9526a3551844a923a47e8f724a1", + "end_source_sha256": "68510466f170d69d0a18c4c3c746c3f9ae6c168fdfc3cb53e9c2cac68c242aed", + "source_unchanged_after_run": true, + "source_provenance": "launch_snapshot", + "launch_id": "d4b4c0e2-2449-4a8e-931a-3031a20d35d1", + "launch_source_manifest": "launch-source-sha256.json", + "launch_source_metadata": "launch-source.json", + "launch_source_sha256": "68510466f170d69d0a18c4c3c746c3f9ae6c168fdfc3cb53e9c2cac68c242aed", + "external_addons_unchanged_after_run": true, + "external_addon_count": 6, + "external_addon_inputs": "external-addons-inputs.json", + "started_unix": 1789906334.1923733, + "result": "smoke-completed", + "result_before_cleanup": "smoke-completed", + "cleanup_confirmed": true, + "cleanup_report": { + "cleanup_confirmed": true, + "idle_verified": true, + "errors": [], + "orphan_cleanup": { + "attempted": false, + "reason": "noncanonical-private-prefix" + } + }, + "runner_error": null, + "session": "/tmp/erri-prefab-ids-combined/logs/logs_2026-09-20_14-12-15", + "rounds_required": 1, + "project": "chat", + "display": "headless Gamescope 1280x720/30Hz", + "dedicated_server": false, + "audio": "silent sink and per-test-stream mute" +} diff --git a/docs/evidence/native-2026-09-20-prefab-ids/script.log.txt b/docs/evidence/native-2026-09-20-prefab-ids/script.log.txt new file mode 100644 index 0000000..bf74ced --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/script.log.txt @@ -0,0 +1,362 @@ +--------------------------------------------- +Log Z:\tmp\erri-prefab-ids-combined\logs\logs_2026-09-20_14-12-15\script.log started at 2026-09-20 14:12:18 (2026-09-20 12:12:18 UTC) + +14:12:18.653 SCRIPT : SCRIPT : Initializing scripts +14:12:18.653 SCRIPT : SCRIPT : ScriptProjectManager init +14:12:20.485 SCRIPT : SCRIPT : Compiling GameLib scripts +14:12:20.533 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +14:12:20.533 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +14:12:20.534 SCRIPT : SCRIPT : Compiling Game scripts +14:12:21.731 SCRIPT : Compiling Game scripts +14:12:21.731 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +14:12:21.731 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +14:12:22.060 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.072 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +14:12:22.111 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +14:12:22.233 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +14:12:22.258 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.270 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +14:12:22.336 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +14:12:22.336 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +14:12:22.338 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +14:12:22.372 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.394 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.394 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.396 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +14:12:22.396 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +14:12:22.423 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:12:22.450 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +14:12:22.824 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 436d9397 +14:12:22.831 SCRIPT : Module: Game; loaded 6506x files; 13190x classes; used 39262K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: bb2782cb +14:12:23.811 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:12:23.811 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:12:42.711 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +14:12:42.712 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +14:12:42.713 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +14:12:42.714 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +14:12:42.736 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +14:12:45.654 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:12:45.654 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:12:57.916 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +14:12:57.940 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +14:13:02.176 SCRIPT : Map load time: 2264ms +14:13:02.182 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +14:13:02.183 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +14:13:02.184 SCRIPT (W): Can't open config file "" +14:13:02.190 SCRIPT (W): Slot_WeaponInfo Has no Content! +14:13:02.191 SCRIPT (W): Slot_Chat Has no Content! +14:13:02.191 SCRIPT (W): Slot_VON Has no Content! +14:13:02.191 SCRIPT (W): Slot_AvailableActions Has no Content! +14:13:02.191 SCRIPT (W): Slot_Vehicle Has no Content! +14:13:02.191 SCRIPT (W): Slot_GameVersion Has no Content! +14:13:02.191 SCRIPT (W): Slot_Notifications Has no Content! +14:13:02.191 SCRIPT (W): Slot_Hints Has no Content! +14:13:02.203 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:13:02.203 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:13:02.207 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +14:13:02.257 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +14:13:02.270 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +14:13:02.440 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +14:13:03.909 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +14:13:03.929 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +14:13:03.929 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +14:13:03.957 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +14:13:03.959 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +14:13:04.011 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +14:13:04.011 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +14:13:04.019 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +14:13:04.065 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +14:13:04.065 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +14:13:04.067 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +14:13:04.067 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +14:13:04.070 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +14:13:04.072 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +14:13:04.072 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +14:13:04.073 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +14:13:04.073 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +14:13:04.073 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +14:13:04.074 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +14:13:04.074 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +14:13:04.074 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +14:13:04.074 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:13:04.074 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +14:13:04.074 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +14:13:04.075 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:13:04.075 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +14:13:04.075 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +14:13:04.075 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:13:04.075 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.075 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.076 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.076 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.076 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.076 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:13:04.929 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:04.930 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:04.930 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:04.930 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:05.182 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.09,63.5287,7499.71> up=0.995672 +14:13:05.183 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.288032 angularSpeed=0.0798343 +14:13:05.183 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:05.183 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6136,7501.98> +14:13:05.183 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3136,7501.98> terrainY=63.3155 tireTerrainGap=-0.0018692 +14:13:05.184 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6136,7501.98> radius=0.3 bottom=<7012.07,63.3136,7501.98> fraction=0.446499 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.00177002 +14:13:05.184 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.6002,7497.71> +14:13:05.184 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.1502,7497.71> terrainY=64.1543 tireTerrainGap=-0.00406647 +14:13:05.184 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.6002,7497.71> radius=0.45 bottom=<7009.89,64.1502,7497.71> fraction=0.436099 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00405884 +14:13:05.184 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2623,7497.76> +14:13:05.184 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8123,7497.76> terrainY=63.8172 tireTerrainGap=-0.00490952 +14:13:05.185 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2623,7497.76> radius=0.45 bottom=<7014.43,63.8123,7497.76> fraction=0.432222 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00490952 +14:13:05.185 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:05.433 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:05.434 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:05.434 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:05.434 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:13:05.942 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:05.943 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:05.943 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:06.194 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.1,63.5333,7499.72> up=0.994245 +14:13:06.194 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.092914 angularSpeed=0.0323928 +14:13:06.195 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:06.195 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6176,7502> +14:13:06.195 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3176,7502> terrainY=63.3132 tireTerrainGap=0.0043869 +14:13:06.195 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6176,7502> radius=0.3 bottom=<7012.07,63.3176,7502> fraction=0.47451 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00439072 +14:13:06.195 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.93,64.6009,7497.72> +14:13:06.196 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.93,64.1509,7497.72> terrainY=64.1477 tireTerrainGap=0.00318909 +14:13:06.196 SCRIPT : ERR GEAR SUPPORT: center=<7009.93,64.6009,7497.72> radius=0.45 bottom=<7009.93,64.1509,7497.72> fraction=0.469136 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00321198 +14:13:06.196 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.47,64.2645,7497.79> +14:13:06.196 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.47,63.8145,7497.79> terrainY=63.8147 tireTerrainGap=-0.000209808 +14:13:06.196 SCRIPT : ERR GEAR SUPPORT: center=<7014.47,64.2645,7497.79> radius=0.45 bottom=<7014.47,63.8145,7497.79> fraction=0.453333 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.000267029 +14:13:06.196 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:06.444 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:06.444 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:06.444 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:13:06.444 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:06.698 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +14:13:06.953 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:06.953 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:06.954 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:06.954 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +14:13:07.209 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.12,63.5307,7499.75> up=0.993898 +14:13:07.210 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0482005 angularSpeed=0.0172409 +14:13:07.210 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:07.210 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6119,7502.02> +14:13:07.210 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3119,7502.02> terrainY=63.311 tireTerrainGap=0.000865936 +14:13:07.210 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6119,7502.02> radius=0.3 bottom=<7012.07,63.3119,7502.02> fraction=0.458264 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00082016 +14:13:07.210 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.97,64.5939,7497.73> +14:13:07.211 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.97,64.1439,7497.73> terrainY=64.1416 tireTerrainGap=0.00229645 +14:13:07.211 SCRIPT : ERR GEAR SUPPORT: center=<7009.97,64.5939,7497.73> radius=0.45 bottom=<7009.97,64.1439,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:13:07.211 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.51,64.2603,7497.84> +14:13:07.211 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.51,63.8103,7497.84> terrainY=63.8119 tireTerrainGap=-0.00164413 +14:13:07.211 SCRIPT : ERR GEAR SUPPORT: center=<7014.51,64.2603,7497.84> radius=0.45 bottom=<7014.51,63.8103,7497.84> fraction=0.446944 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00167084 +14:13:07.211 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:07.460 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:07.461 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:07.461 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:07.461 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:07.968 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:07.969 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:07.969 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:07.969 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:13:08.224 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993805 +14:13:08.224 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:13:08.224 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:08.225 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6122,7502.02> +14:13:08.225 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3122,7502.02> terrainY=63.3109 tireTerrainGap=0.00127029 +14:13:08.225 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6122,7502.02> radius=0.3 bottom=<7012.08,63.3122,7502.02> fraction=0.46034 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00127411 +14:13:08.226 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5929,7497.73> +14:13:08.226 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1429,7497.73> terrainY=64.1406 tireTerrainGap=0.00226593 +14:13:08.226 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5929,7497.73> radius=0.45 bottom=<7009.98,64.1429,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:13:08.226 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2598,7497.84> +14:13:08.226 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8098,7497.84> terrainY=63.8117 tireTerrainGap=-0.00190353 +14:13:08.226 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2598,7497.84> radius=0.45 bottom=<7014.52,63.8098,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +14:13:08.226 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:08.478 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:08.479 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:08.479 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:08.479 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:13:08.992 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:08.992 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:08.992 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:08.992 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:09.245 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993805 +14:13:09.245 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:13:09.245 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:13:09.246 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6122,7502.02> +14:13:09.246 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3122,7502.02> terrainY=63.3109 tireTerrainGap=0.00127029 +14:13:09.246 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6122,7502.02> radius=0.3 bottom=<7012.08,63.3122,7502.02> fraction=0.46034 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00127411 +14:13:09.247 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5929,7497.73> +14:13:09.248 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1429,7497.73> terrainY=64.1406 tireTerrainGap=0.00226593 +14:13:09.248 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5929,7497.73> radius=0.45 bottom=<7009.98,64.1429,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:13:09.248 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2598,7497.84> +14:13:09.248 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8098,7497.84> terrainY=63.8117 tireTerrainGap=-0.00190353 +14:13:09.248 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2598,7497.84> radius=0.45 bottom=<7014.52,63.8098,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +14:13:09.249 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:13:09.497 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:13:09.498 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +14:13:09.513 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +14:13:09.514 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +14:13:09.514 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +14:13:09.514 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +14:13:09.514 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +14:13:09.514 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +14:13:09.515 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +14:13:10.437 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +14:13:10.476 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.391,7158.5> +14:13:10.673 SCRIPT : ERR SMOKE PASS: new identity may enter prison +14:13:10.673 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +14:13:10.674 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +14:13:10.674 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +14:13:10.674 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +14:13:10.674 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +14:13:10.674 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +14:13:10.674 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +14:13:10.674 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +14:13:10.675 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +14:13:10.680 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +14:13:10.680 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +14:13:10.680 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +14:13:10.680 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +14:13:10.684 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +14:13:10.685 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +14:13:10.686 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +14:13:48.354 SCRIPT : ERR SMOKE PASS: HQ memory automatic startup owns one canonical six-vehicle task +14:13:48.354 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 0 +14:13:48.354 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.354 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 1 +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 2 +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.355 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.356 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.357 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 3 +14:13:48.357 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.357 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.358 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.358 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 4 +14:13:48.358 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.358 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 5 +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:13:48.359 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy includes confirmed native turret gunners +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory automatic nineteen-body convoy respects shared physical budget +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory manual request after automatic startup cannot duplicate the convoy +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +14:13:48.360 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +14:13:48.361 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +14:13:48.362 SCRIPT : ERR SMOKE PASS: HQ memory road fixture has native Everon road manager +14:13:48.362 SCRIPT : ERR SMOKE PASS: HQ memory road fixture native query stays within bounded road count +14:13:48.362 SCRIPT : ERR SMOKE PASS: HQ memory arranged detached road snapshots accepted by private memory +14:13:48.363 SCRIPT : ERR SMOKE PASS: HQ memory native road choice is forward, nearby, dry and physically clear +14:13:48.363 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:13:48.363 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:13:48.363 SCRIPT : ERR SMOKE PASS: HQ memory chosen intercept lies on an actual native road segment +14:13:48.364 SCRIPT : ERR ROAD FIXTURE: arranged origin=<5896.23,149.499,6644.17> velocity=<2.25769,0,1.97559> chosen=<5941.39,149.611,6683.68> attempts=1 +14:13:48.364 SCRIPT : ERR SMOKE PASS: HQ memory same arranged belief aged46seconds refuses road interception +14:13:48.364 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +14:13:48.364 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +14:13:48.365 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +14:13:50.376 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +14:13:50.376 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +14:13:56.466 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +14:13:56.466 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +14:14:04.095 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +14:14:04.096 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +14:14:12.228 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +14:14:12.228 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +14:14:20.347 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +14:14:28.450 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +14:14:28.450 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +14:14:28.452 SCRIPT : INFO: KILL SUICIDE: jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) from US faction at <6088.5, 211.389, 7158.5> killed himself! +14:14:32.514 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +14:14:32.514 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +14:14:32.514 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +14:14:59.337 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +14:14:59.338 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +14:14:59.338 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +14:14:59.339 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +14:14:59.501 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +14:14:59.504 SCRIPT (W): Slot_Chat Has no Content! +14:14:59.504 SCRIPT (W): Slot_VON Has no Content! +14:14:59.504 SCRIPT (W): Slot_GameVersion Has no Content! +14:14:59.504 SCRIPT (W): Slot_Notifications Has no Content! +14:15:01.610 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +14:15:01.610 SCRIPT : -- Stack trace -- +14:15:01.610 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:15:01.611 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:15:01.611 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +14:15:01.611 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:15:01.611 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:15:01.611 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:15:01.611 SCRIPT : ----------------- +14:15:01.611 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +14:15:01.611 SCRIPT : -- Stack trace -- +14:15:01.612 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:15:01.612 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:15:01.612 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +14:15:01.612 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:15:01.612 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:15:01.612 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:15:01.612 SCRIPT : ----------------- +14:15:01.615 SCRIPT (W): Slot_Chat Has no Content! +14:15:01.615 SCRIPT (W): Slot_VON Has no Content! +14:15:01.615 SCRIPT (W): Slot_GameVersion Has no Content! +14:15:01.615 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-prefab-ids/source-provenance.json b/docs/evidence/native-2026-09-20-prefab-ids/source-provenance.json new file mode 100644 index 0000000..5fa4cc7 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/source-provenance.json @@ -0,0 +1,4 @@ +{ + "schema_version": 1, + "kind": "launch_snapshot" +} diff --git a/docs/evidence/native-2026-09-20-prefab-ids/source-sha256.json b/docs/evidence/native-2026-09-20-prefab-ids/source-sha256.json new file mode 100644 index 0000000..235e800 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prefab-ids/source-sha256.json @@ -0,0 +1,259 @@ +{ + "addons/core/Configs/ERR/AdminMenus.conf": "a7f889f260e43656136fc159342129e5f48748d28c426f65f9faac37b624cf94", + "addons/core/Configs/ERR/AdminMenus.conf.meta": "5faf5ddc0a51c1d0f82d60af00d91edc22fe9c39aac50d8d04b772a2c9271be1", + "addons/core/Configs/ERR/EveronSites.conf": "3e04698421ce989c996097ecf24214e7d926d2998918d60573aa403c4012b079", + "addons/core/Configs/ERR/EveronSites.conf.meta": "d5fe68025ef4e7c1e16082cf5873b7c7172eacbfaef4ab29b7e0e3c98f8dca56", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf": "5f74f4a7089c7e7b54ad62463159ce8f0bab25a6b85268dc3872ea6001e048fb", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf.meta": "00c368b6271d3440cc8bf627b03a384d247635723923fc5ad2104b8b4007b035", + "addons/core/Configs/ERR/Factions/US.conf": "4c3da063abb6e3ee39a6e4e0c5a9ffd5eae9d209d58470ea18b45dba5528db1b", + "addons/core/Configs/ERR/Factions/US.conf.meta": "a05469aef028e9e17eba545e81e2af2887b59f0fef17dac51a23c7b8155e381b", + "addons/core/Configs/ERR/Factions/USSR.conf": "407ea27f80a64c5184c089d43cdd0bdabfc5974c84f1d2a245081fdf2afa3f30", + "addons/core/Configs/ERR/Factions/USSR.conf.meta": "057397d97096346791b51b7b13fbe18af218bcf78e9984d9c01b49a2403de611", + "addons/core/Configs/ERR/GameOverScreens.conf": "45231061911a1462d45fb6db0fecc2b0793f17b5ae71017174954ff4fbd20236", + "addons/core/Configs/ERR/GameOverScreens.conf.meta": "eb654b745c0b97b41c991694569ef4877a3c2315e0826f9556337cd68690843e", + "addons/core/Configs/ERR/VanillaFactions.conf": "db890b61b48ee15484041fd2245a862d9fa9e7ba21b1229c281ff37c448a35b1", + "addons/core/Configs/ERR/VanillaFactions.conf.meta": "ac77725c0c21974991ef47a466b88122e939de8b46fd23e68889e7674cbb2bfd", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Missions/ERR_Everon_Base.conf": "c035afca636653b7751c49f85620edac23f7217fd135b98f8f891192f66c967a", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "addons/core/Prefabs/ERR/ConvoyCrew.et": "29a525a29605386dfcf292dc2316e9fc7650ce39db9fbaa4ce4372ad0de66db4", + "addons/core/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/core/Prefabs/ERR/Extraction.et": "4d24c7811415c06386205e5bf5c132a23fcf21e96c75c7657ccd5f3ac914ac50", + "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", + "addons/core/Prefabs/ERR/FactionManager.et": "3f8157aab44e124e8d5ab5e47e3d38ad7466638ae1e97be057aa2de74c360a85", + "addons/core/Prefabs/ERR/FactionManager.et.meta": "9bf53d5e4bcbe60dd1a4ece1409fc23c349055c860708620f5f6e9716290a97d", + "addons/core/Prefabs/ERR/FieldCover.et": "e403d5cb3a5966f0cea81f15e0e825d482ba1a7a27b12498319ba45a414963b0", + "addons/core/Prefabs/ERR/FieldCover.et.meta": "83461ffa76244e1d69f20b053a9741ccdf7d127009182bd540a7e5ba6150c3d9", + "addons/core/Prefabs/ERR/GameMode.et": "f744901d8ee8958d3fc1846315b1a29ba0136048412afb3e26c084096c17c3eb", + "addons/core/Prefabs/ERR/GameMode.et.meta": "106769cd34525c9d440057072836cb7401a6752148c40edd7fe61c03bd58328c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et": "0157bc235eeb78a0e1373b561fd22a1dcb225c833ff7c2d4abae688bca0ec92a", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et.meta": "da6f065cb2414b5a4cbe9ef0f0b1295b2466f26ad406c0bddb83845d4598efb3", + "addons/core/Prefabs/ERR/MortarCrew.et": "21086e886fe3199624208c9a866f883ec109f7d08746c2b56b497e59857fb656", + "addons/core/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/core/Prefabs/ERR/ObjectiveDocument.et": "5118ecaf9d2038eea44a4b785f05d2e78781dc1387249aa58a6782c7e6752e14", + "addons/core/Prefabs/ERR/ObjectiveDocument.et.meta": "eaba9903be147b98a1106e2273e2270773df73b9b22f2cd4e20136a8e281382e", + "addons/core/Prefabs/ERR/Patrol.et": "d3eca8fe9197c57a27a285cdb3baf168b037b198d92b39df28a338ae2cfd0c74", + "addons/core/Prefabs/ERR/Patrol.et.meta": "7c5da568fa2fcf0709ee2959253cb068d7c7ed7c2467af3b247a7e70efd96b69", + "addons/core/Prefabs/ERR/Prison.et": "24e942dea876aeeff5778c402098099a62f9a7efca61a08036e1d2bfeec9923f", + "addons/core/Prefabs/ERR/Prison.et.meta": "2e426ef3de68f4107907854b51e818bc11d84649a01c538e3f18dd9ebec766bb", + "addons/core/Prefabs/ERR/PrisonDoor.et": "c45d5aa239efa8934dc5d0367dc8e196c15ed04ad72efdaad574ce01dca91e84", + "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", + "addons/core/Prefabs/ERR/PrisonWall.et": "b0cb8fb38716f083f86e39fb4f84f275e17855d4d2558b2da2b488fb12b39121", + "addons/core/Prefabs/ERR/PrisonWall.et.meta": "0294bc5dbb56f90f8153d62459bb0a6ad91d76a479812bbec9c7db182fdb58d6", + "addons/core/Prefabs/ERR/Prisoner.et": "e6d345ac98ad9ec742bf6c3b8686839c3256df9833d31bb4bdf605cd41d0ba5c", + "addons/core/Prefabs/ERR/Prisoner.et.meta": "974278ba49fafeed70b619a0067bbc70ae4d534be441c812ce2bef4a5fb3c022", + "addons/core/Prefabs/ERR/Radio.et": "8e15f4795a7459e95dd5e5cb61940b7619452bee2dcdfb8eaa00154acb3308cb", + "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", + "addons/core/Prefabs/ERR/SpectatorCamera.et": "bffb102272eb888d1f8d8c32c7515e62751d3feb48ef4713227f040d59c42db6", + "addons/core/Prefabs/ERR/SpectatorCamera.et.meta": "2a16558f93915e31908a674509e9c89976470f78a84a1174a64b94b68b8f77ad", + "addons/core/Prefabs/ERR/SupplyCache.et": "4c97b0514fe7e723046f40f0b396f6573b12eb9981ca5df70b9e8aa3cf29323e", + "addons/core/Prefabs/ERR/SupplyCache.et.meta": "2f5de3a4aab1e9d0e35521f48dc57b95bd6e449c383dec4f1c258e10295904cb", + "addons/core/Prefabs/ERR/SupplySite.et": "f33681281d26676fac88736091834d5a7b87fe0fa01883582542df964dcfc694", + "addons/core/Prefabs/ERR/SupplySite.et.meta": "b41944b12eb3528ff7a3ac94258b18c66ef161aa6a38894aee300a1ac4798630", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et": "29f157849f413261494a63d4d5b0a97e8bbe61cb076efcd59d6c940653f23352", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et.meta": "544c94cf1c26757a10654de7856cd6cc48b821ce3bdc02add13cfe6514269915", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et": "cd4acdcecad299445952aea0adefc85f2b9e9b43f8186f100e0505c5621b3656", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et.meta": "123955da03462befb90e293b3bb856d49cc761166611b38ff47cb48ec2fbe95c", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c": "8a5ccf1fff1442dfe7ab4cb3cc858ee16adb073119144187155ade558b8c4c5f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c": "6cfb7de35bbbc18bd6d35c63da01284ffb08b8641527d49283d9b9b0cb94f8c2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "e17bd68f82012bff7c1953cf1adc86fe1cdefbc01d3b5eb88fa96f956bb4f135", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c": "1d8987d2dcc1db2a030e095b33d50f07877181037d339624156291d8317bfa5d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "41a35f806d925d025534247b0705d7eb47f134d181e5b819a149be7909ba4cc1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "a47a1ee3a62d170a06b54cce3c42fac7c3645cf6a89c827a1dfe51ae0a99ce12", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "2e295b0f225208c5414728ba83333e5e0ab6eef3a708ce39eb1dfce5400c94c9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c": "360228fd45aa6ecd9426e36120b5e637d2feee1e3a4a89aac8207526b871c87e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c": "b16a8b31be20271c37c4d68c169f08b28d88993d296308b80de00715ea2b4dfe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c": "0c8ce2f3d2642999a7158000e60d8c491ed3e4b6d9c0d3d18b3e3ecc3e557196", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "0921c04c313f36f23aaab35fdea05bb479a81f01acc62c715ca3b3e366d67f81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c": "298ae30d1db1191d680a5a8f60253f9344e0e19fe9c17242c757382042364341", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c": "d5337ce8073335ccb4b03d447550a38e03d6fc9e428008be3a7b042c078f4835", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "85e4d2cb27426c07b8631ca411f4b8f5c821f9f331c8c2719cbfa71b3687f08e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c": "0897e82d7805ef56f05f2b9c23903280285ea6bfa51796a2df86bb564ece78f7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c": "53cd74d121292f6f6813c2b69e475f29dba9239bc10cbaf55ce1d7f8fb3674f6", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c": "917f9df36b93258a30b7af24b0ee52b65c5205405d8056bb721a9868010d64d1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c": "84cec6457132eff6d195bc6fc8fcee267685693edbb987cbeafaece0f7537992", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c": "5d9b5d4b1d22d57145e79b5a740863a5233706fd8b11046d2512a681f8a615a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "9f8f0844862ef98b0878290238a410d501ea99622cd5e517fcacd9a9187f889a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c": "7379cb65bde95bd1e7ffc2203a7fb7957435d379560e08b470e73a89ea6b59cf", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c": "4493c6b6070cd7d768a2fcba2d8934b782c9a221ae257a530aa6b52fa40d88a8", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c": "0d4d61c424a16008595f86fa61f3b848caf9bd6e9ebbacea9c10254d88ba378e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "2ceeae7c7c373fbf894f491903b29d51543949c323b06ce9989c68282129166e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c": "a747af09599ce4d0c52051f18f00c4624d24d137e328341b580b82e896c6bf65", + "addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/core/UI/layouts/ERR/AdminMenu.layout": "26db9780c0afffa8429602c27ee347a4e665a19a6872b15f4178d684de7e23b6", + "addons/core/UI/layouts/ERR/AdminMenu.layout.meta": "9deeece996f43b1f1fed6b5ec89279645c7b6424250200a42580cc088142e9bf", + "addons/core/UI/layouts/ERR/PreparationStatus.layout": "bd269cf8dc6f27735423743dd5b78242550518414448a0256e5e12fa6b92c459", + "addons/core/UI/layouts/ERR/PreparationStatus.layout.meta": "75b12176a443bb911fc4ad446982d762201fda42ed38736b79bc5439fca31ccc", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", + "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", + "addons/core/Worlds/ERR_Everon_Layers/default.layer": "17105538007199bfc419aa04a64debaf2da0a7b77a1dc3ba983e92bf747c862e", + "addons/core/addon.gproj": "683a522c7f7f5d5ff41c57b0f0947f3cd2ec866b656a5f449af55688956eb5fa" +} diff --git a/docs/evidence/native-2026-09-20-prison-opening/console.log.txt b/docs/evidence/native-2026-09-20-prison-opening/console.log.txt new file mode 100644 index 0000000..4fcc9c6 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/console.log.txt @@ -0,0 +1,760 @@ +--------------------------------------------- +Log Z:\tmp\erri-prison-original-victory2-20260920\logs\logs_2026-09-20_15-55-53\console.log started at 2026-09-20 15:55:53 (2026-09-20 13:55:53 UTC) + +15:55:53.551 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-prison-original-victory2-20260920\logs\logs_2026-09-20_15-55-53' to filesystem under name logs +15:55:53.551 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-prison-original-victory2-20260920\profile' to filesystem under name profile +15:55:53.551 ENGINE : FileSystem: Current working directory: 'Z:\home\jakub\.local\share\Steam\steamapps\common\Arma Reforger Tools\Workbench\' +15:55:53.553 PROFILING : Workbench Create Engine took: 8.887200 ms +15:55:54.575 INIT : INIT : Workbench Init Engine +15:55:54.576 ENGINE : Initializing engine, version 192142 +15:55:54.576 ENGINE : CLI Params: -gproj Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj -addonsDir Z:/home/jakub/devel/escapistsrereintroduced/addons -profile Z:/tmp/erri-prison-original-victory2-20260920 -logconsole -wbModule WorldEditor -load Worlds/ERR_Everon.ent -plugin ERR_ValidateWorldPlugin -errPlay 1 -errSmoke 1 -errSmokeOutcome victory -noThrow -disableCrashReporter +15:55:54.586 ENGINE : Addon dirs: +15:55:54.586 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/' +15:55:54.586 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons' +15:55:54.586 ENGINE : dir: './addons' +15:55:54.586 ENGINE : dir: 'Z:/tmp/erri-prison-original-victory2-20260920/addons' +15:55:54.586 ENGINE : Available addons: +15:55:54.586 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +15:55:54.586 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed) +15:55:54.586 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed) +15:55:54.586 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed) +15:55:54.586 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed) +15:55:54.586 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed) +15:55:54.586 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed) +15:55:54.586 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed) +15:55:54.586 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed) +15:55:54.586 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\core' to filesystem under name ERR_Core +15:55:54.587 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1 +15:55:54.588 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore +15:55:54.590 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments +15:55:54.594 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core +15:55:54.595 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02 +15:55:54.600 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01 +15:55:54.707 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ArmaReforger/' (pak count: 14) to filesystem under name ArmaReforger +15:55:54.710 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core +15:55:54.710 ENGINE : CPU vendor : AuthenticAMD +15:55:54.710 ENGINE : CPU type : 2 +15:55:54.710 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor +15:55:54.710 ENGINE : CPU cache info : L1 [Inst 32KB, Data 32KB], L2 [Unif 512KB], L3 [Unif 16384KB] +15:55:54.710 ENGINE : CPU count logical : 16 +15:55:54.710 ENGINE : CPU count physical : 8 +15:55:54.710 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2 +15:55:54.710 RESOURCES : ResourceDB: loading cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +15:55:54.710 RESOURCES : ResourceDB: loading cache (id=1 name=WCS_BMP-1 path=Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb) +15:55:54.711 RESOURCES : ResourceDB: loading cache (id=2 name=WCS_SpaceCore path=Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb) +15:55:54.711 RESOURCES : ResourceDB: loading cache (id=3 name=WCS_Armaments path=Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb) +15:55:54.713 RESOURCES : ResourceDB: loading cache (id=4 name=RHS_Core path=Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb) +15:55:54.723 RESOURCES : ResourceDB: loading cache (id=5 name=RHS_Content_02 path=Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb) +15:55:54.725 RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Content_01 path=Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb) +15:55:54.731 RESOURCES : ResourceDB: loading cache (id=7 name=ArmaReforger path=Z:/tmp/erri-prison-original-victory2-20260920/addons/ArmaReforger/resourceDatabase.rdb) +15:55:54.862 RESOURCES : ResourceDB: loading cache (id=8 name=core path=./addons/core/resourceDatabase.rdb) +15:55:54.863 RESOURCES : ResourceDB: loading cache (id=9 name=profile path=Z:\tmp\erri-prison-original-victory2-20260920\profile/resourceDatabase.rdb) +15:55:54.863 RESOURCES : ResourceDB: loading cache (id=10 name=logs path=Z:\tmp\erri-prison-original-victory2-20260920\logs\logs_2026-09-20_15-55-53/resourceDatabase.rdb) +15:55:55.017 RESOURCES : RESOURCES : ResourceDB: full scan +15:55:55.022 RESOURCES : RESOURCES : scanning... +15:55:55.022 RESOURCES : RESOURCES : scanning @"ERR_Core" +15:55:55.038 RESOURCES : RESOURCES : scanning @"WCS_BMP-1" +15:55:55.041 RESOURCES : RESOURCES : scanning @"WCS_SpaceCore" +15:55:55.044 RESOURCES : RESOURCES : scanning @"WCS_Armaments" +15:55:55.048 RESOURCES : RESOURCES : scanning @"RHS_Core" +15:55:55.060 RESOURCES : RESOURCES : scanning @"RHS_Content_02" +15:55:55.063 RESOURCES : RESOURCES : scanning @"RHS_Content_01" +15:55:55.071 RESOURCES : RESOURCES : scanning @"ArmaReforger" +15:55:55.285 RESOURCES : RESOURCES : scanning @"core" +15:55:55.289 RESOURCES : RESOURCES : scanning @"profile" +15:55:55.289 RESOURCES : RESOURCES : scanning @"logs" +15:55:55.289 RESOURCES : RESOURCES : processing meta-files... +15:55:55.358 RESOURCES : RESOURCES : processing files... +15:55:55.358 INIT : Workbench startup +15:55:55.358 INIT : Workbench Init Engine +15:55:55.358 RESOURCES : ResourceDB: full scan +15:55:55.358 RESOURCES : processing files... +15:55:55.358 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +15:55:55.371 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +15:55:55.371 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +15:55:55.371 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +15:55:55.371 RESOURCES : RESOURCES : processing folders... +15:55:55.379 RESOURCES : RESOURCES : creating GUID-item mapping... +15:55:55.396 RESOURCES : RESOURCES : building tree... +15:55:55.452 PROFILING : ResourceDB: full scan took: 435.145800 ms +15:55:55.453 RESOURCES : ResourceDB: saving cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +15:55:55.455 RESOURCES : ResourceDB: written 15812/15812 bytes +15:55:55.455 RESOURCES : ResourceDB: cache successfully saved +15:55:55.455 RESOURCES : ResourceDB: saving cache (id=9 name=profile path=Z:\tmp\erri-prison-original-victory2-20260920\profile/resourceDatabase.rdb) +15:55:55.456 RESOURCES : ResourceDB: written 51/51 bytes +15:55:55.456 RESOURCES : ResourceDB: cache successfully saved +15:55:55.456 RESOURCES : ResourceDB: saving cache (id=10 name=logs path=Z:\tmp\erri-prison-original-victory2-20260920\logs\logs_2026-09-20_15-55-53/resourceDatabase.rdb) +15:55:55.458 RESOURCES : ResourceDB: written 208/208 bytes +15:55:55.458 RESOURCES : ResourceDB: cache successfully saved +15:55:55.458 ENGINE : GameProject load +15:55:55.458 ENGINE : Loaded addons: +15:55:55.458 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' +15:55:55.458 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' +15:55:55.458 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' +15:55:55.458 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' +15:55:55.458 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' +15:55:55.458 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' +15:55:55.458 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' +15:55:55.458 ENGINE : gproj: 'Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' +15:55:55.458 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +15:55:55.460 ENGINE : GameProject load +15:55:55.460 INIT : GameProject load project data @"Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_595F2BF2F44836FB/addon.gproj" +15:55:55.460 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +15:55:55.460 INIT : GameProject load project data @"Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_629B2BA37EFFD577/addon.gproj" +15:55:55.460 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +15:55:55.461 INIT : GameProject load project data @"Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +15:55:55.461 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +15:55:55.461 INIT : GameProject load project data @"Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +15:55:55.461 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +15:55:55.461 ENGINE : Loading custom engine user config '$profile:.save/app1874910_user76561198020202999/settings/ReforgerEngineSettings.conf' +15:55:55.461 ENGINE : No Enfusion settings file loaded. Continuing with defaults +15:55:55.554 RENDER : (OK) Adapter 'AMD Radeon RX 6950 XT (RADV NAVI21)' supports feature level 12_0 +15:55:55.555 RENDER : Basic screen setup: +15:55:55.555 RENDER : Back buffer format : TEXFMT_R8G8B8A8_SRGB (29) +15:55:55.555 RENDER : MSAA : none +15:55:55.567 RENDER : AMD AGS library initialized, version 6.1.0 x DLL 6.1.0 +15:55:55.567 RENDER : Extendeded AMD info for AMD Radeon RX 6950 XT (RADV NAVI21) (primary device) +15:55:55.567 RENDER : * architecture RDNA2, 80 CUs, 40 WGPs (for RDNA), 64 ROPs +15:55:55.567 RENDER : * core clocks 2720 MHz, memory 1124 MHz +15:55:55.567 RENDER : * TFlops 27.9, memory bandwidth (562.0 GB/s) +15:55:55.567 RENDER : AMD AGS correctly initialized +15:55:55.567 RENDER : GPU_ATI (0x1002) (AMD Radeon RX 6950 XT (RADV NAVI21)) with 1 GPU detected, VRAM 16128MB (fast 0MB), shared 64362MB, driver version 99.19.02-230831a-396538C-AMD-Software-Adrenalin-Edition +15:55:55.567 RENDER : Detected output devices: +15:55:55.567 RENDER : * 1 device/s connected to AMD Radeon RX 6950 XT (RADV NAVI21): +15:55:55.567 RENDER : Generic Non-PnP Monitor (\\.\DISPLAY1), 1280x720 (offset 0x0), 30Hz +15:55:55.567 RENDER : Concurrent frames limit 2 +15:55:55.642 RENDER : DX12 device successfully created by AMD AGS library +15:55:55.642 RENDER : * user markers not supported in this version AMD SW +15:55:55.642 RENDER : Graphics device features +15:55:55.642 RENDER : Needed: +15:55:55.642 RENDER : * Highest supported shader model: 6.8 (6.0 needed) +15:55:55.642 RENDER : Optional: +15:55:55.642 RENDER : * Allow tearing (VSYNC) : 1 +15:55:55.642 RENDER : * 16 bits : 1 +15:55:55.642 RENDER : * Resource heap tier : 3 +15:55:55.642 RENDER : * Persistent heaps (DRED) : 1 +15:55:55.642 RENDER : * DRED 1.2 is supported by compiler +15:55:55.662 RENDER : Main RT format setup. +15:55:55.662 RENDER : Main RT format for quality 0 : TEXFMT_R11G11B10_FLOAT (26) +15:55:55.662 RENDER : Main RT format for quality 1 : TEXFMT_R16G16B16A16_FLOAT (10) +15:55:55.664 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=16 +15:55:55.696 PROFILING : Settings changed took: 0.018000 ms +15:55:56.124 AUDIO : Endpoint: Speakers (PulseAudio Output) +15:55:56.124 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +15:55:56.125 AUDIO : Audio client: +15:55:56.125 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +15:55:56.128 RENDER : RENDER : Reload shaders +15:55:56.128 RENDER : Enfusion shader version 13 +15:55:56.128 INIT : INIT : ShaderListReload +15:55:56.128 PROFILING : ShaderListReload took: 0.000900 ms +15:55:56.268 AUDIO : Endpoint: Speakers (PulseAudio Output) +15:55:56.268 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +15:55:56.268 AUDIO : Audio client: +15:55:56.268 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +15:55:56.392 RENDER : Loaded 3752 newer shader binaries +15:55:56.392 PROFILING : Reload shaders took: 263.401400 ms +15:55:56.392 ENGINE : Initializing inputs. +15:55:56.405 NETWORK : Initializing networking. +15:55:56.405 NETWORK : Using new GameRplScheduler. +15:55:56.405 SCRIPT : SCRIPT : Initializing scripts +15:55:56.406 SCRIPT : SCRIPT : ScriptProjectManager init +15:55:58.128 PROFILING : ScriptProjectManager init took: 1722.044400 ms +15:55:58.162 PROFILING : Initializing scripts took: 1756.196200 ms +15:55:58.179 ENGINE : Enfusion engine successfully created. +15:55:58.179 PROFILING : Workbench Init Engine took: 3602.435600 ms +15:55:58.179 INIT : INIT : Workbench Create Game +15:55:58.190 GUI : Using default language (en_us) +15:55:58.190 GUI : Loading 'en_us' localization file. +15:55:58.190 INIT : INIT : Loading StringTable +15:55:58.220 PROFILING : Loading StringTable took: 29.816200 ms +15:55:58.220 SCRIPT : SCRIPT : Compiling GameLib scripts +15:55:58.268 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +15:55:58.268 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +15:55:58.268 PROFILING : Compiling GameLib scripts took: 48.844400 ms +15:55:58.269 SCRIPT : SCRIPT : Compiling Game scripts +15:55:59.428 INIT : Workbench Create Game +15:55:59.428 SCRIPT : Compiling Game scripts +15:55:59.428 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +15:55:59.428 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +15:55:59.737 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,223": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:55:59.747 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +15:55:59.784 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +15:55:59.918 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:55:59.927 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +15:55:59.991 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +15:55:59.991 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +15:55:59.992 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +15:56:00.024 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.042 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.042 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.044 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +15:56:00.044 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +15:56:00.070 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.096 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +15:56:00.475 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 198cfb22 +15:56:00.482 SCRIPT : Module: Game; loaded 6508x files; 13193x classes; used 39272K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: 7be5a624 +15:56:00.532 PROFILING : Compiling Game scripts took: 2263.603000 ms +15:56:00.537 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +15:56:00.584 ENGINE : Game successfully created. +15:56:00.586 PROFILING : Workbench Create Game took: 2406.675500 ms +15:56:00.593 DEFAULT : Using thumbnail cache directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/thumbnails +15:56:01.498 INIT : INIT : Workbench Reload Game +15:56:01.500 ENGINE : Game destroyed. +15:56:01.508 GUI : Using default language (en_us) +15:56:01.508 GUI : Loading 'en_us' localization file. +15:56:01.508 INIT : INIT : Loading StringTable +15:56:01.523 PROFILING : Loading StringTable took: 13.721700 ms +15:56:01.523 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +15:56:01.532 SCRIPT : Unable to register a script command due keyword duplicity: ban +15:56:01.532 SCRIPT : Unable to register a script command due keyword duplicity: kick +15:56:01.532 ENGINE : Game successfully created. +15:56:01.532 ENGINE : Game successfully initialized. +15:56:01.532 PROFILING : Workbench Reload Game took: 33.775100 ms +15:56:02.254 WORLD : WORLD : Entities load '$ERR_Core:Worlds/ERR_Everon.ent' +15:56:03.274 PROFILING : Entities load took: 1020.112100 ms +15:56:03.284 WORLD : WORLD : CreateEntities +15:56:03.289 WORLD : WORLD : NotifyBeforeEntitiesCreated +15:56:03.289 PROFILING : NotifyBeforeEntitiesCreated took: 0.002800 ms +15:56:03.289 WORLD : WORLD : Wait for preloading data +15:56:03.289 PROFILING : Wait for preloading data took: 0.003500 ms +15:56:03.391 ENTITY : Create entity @"ENTITY:2" ('Eden', GenericTerrainEntity) at <0.000000 0.000000 0.000000> @"{5AD924374E8C7AF6}Prefabs/World/Game/Eden/GenericTerrain_Eden.et" +15:56:03.391 PROFILING : PROFILING : Terrain load +15:56:04.920 PROFILING : Terrain load took: 1528.937600 ms +15:56:08.698 WORLD : CreateEntities +15:56:08.698 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +15:56:08.698 ENTITY : CreateComponent 'ScriptedRadioComponent' +15:56:08.698 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +15:56:18.093 WORLD : WORLD : NotifyBeforeEntitiesInitialized +15:56:18.093 PROFILING : NotifyBeforeEntitiesInitialized took: 0.005100 ms +15:56:18.555 WORLD : WORLD : NotifyEntitiesInitialized +15:56:18.555 TERRAIN : TERRAIN : Initializing road networks... +15:56:18.558 PROFILING : Initializing road networks... took: 2.136500 ms +15:56:18.558 PROFILING : NotifyEntitiesInitialized took: 2.385300 ms +15:56:18.558 PROFILING : CreateEntities took: 15273.400000 ms +15:56:18.731 PROFILING : * WorldEditor: LoadWorld: 16483.547200 ms +15:56:20.164 TERRAIN : Loading tile map config (worlds/Eden/Eden/tileMap.conf) +15:56:20.164 TERRAIN : Loading minimap config (worlds/Eden/Eden/miniMap.conf) +15:56:20.165 TERRAIN : The default minimap texture ('worlds/Eden/EdenRasterized.edds') not found. Trying 'worlds/Eden/Eden.edds'... +15:56:20.166 TERRAIN : The default minimap texture ('worlds/Eden/Eden.edds') not found. Skipping... +15:56:20.256 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +15:56:20.280 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +15:56:20.302 BACKEND : Attempting online Game Config instead. +15:56:23.131 INIT : INIT : Workbench Reload Game +15:56:23.134 ENGINE : Game destroyed. +15:56:23.141 GUI : Using default language (en_us) +15:56:23.141 GUI : Loading 'en_us' localization file. +15:56:23.141 INIT : INIT : Loading StringTable +15:56:23.163 PROFILING : Loading StringTable took: 21.664100 ms +15:56:23.163 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +15:56:23.171 SCRIPT : Unable to register a script command due keyword duplicity: ban +15:56:23.171 SCRIPT : Unable to register a script command due keyword duplicity: kick +15:56:23.171 ENGINE : Game successfully created. +15:56:23.171 ENGINE : Game successfully initialized. +15:56:23.171 PROFILING : Workbench Reload Game took: 40.026700 ms +15:56:23.173 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +15:56:23.221 PLATFORM : Save data from container 'settings' have been loaded +15:56:23.373 PLATFORM : Save data from container 'sessions' have been loaded +15:56:23.409 DEFAULT : [SaveGameManager] Starting new playthrough nr.0 '' for mission '{B6C516F86302C679}Worlds/ERR_Everon.ent'. +15:56:23.417 WORLD : WORLD : Game::LoadEntities +15:56:23.417 WORLD : WORLD : Initializing world systems @"{1C60D2EDA2B468B8}Configs/Systems/BaseGameModeSystems.conf" +15:56:23.418 NETWORK : Enabled lag compensation, 29 frames with 100 FPS and 280 ms rewind limits. +15:56:23.418 WORLD : WORLD : CreateEntities +15:56:23.418 WORLD : WORLD : CreateEntities +15:56:23.418 WORLD : WORLD : NotifyBeforeEntitiesCreated +15:56:23.424 RESOURCES : Loaded mission headers from 9 addon(s)! +15:56:23.424 PROFILING : NotifyBeforeEntitiesCreated took: 6.405500 ms +15:56:23.424 WORLD : WORLD : Wait for preloading data +15:56:23.424 PROFILING : Wait for preloading data took: 0.000500 ms +15:56:27.518 WORLD : Game::LoadEntities +15:56:27.518 WORLD : CreateEntities +15:56:27.518 WORLD : CreateEntities +15:56:27.518 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +15:56:27.518 ENTITY : CreateComponent 'ScriptedRadioComponent' +15:56:27.518 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +15:56:29.050 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +15:56:29.050 ENTITY : CreateComponent 'Hierarchy' +15:56:29.050 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +15:56:29.050 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +15:56:29.050 ENTITY : CreateComponent 'Hierarchy' +15:56:29.050 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +15:56:29.050 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +15:56:29.050 ENTITY : CreateComponent 'Hierarchy' +15:56:29.050 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +15:56:29.055 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +15:56:29.055 ENTITY : CreateComponent 'Hierarchy' +15:56:29.055 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +15:56:29.055 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +15:56:29.055 ENTITY : CreateComponent 'Hierarchy' +15:56:29.055 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +15:56:29.056 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +15:56:29.056 ENTITY : CreateComponent 'Hierarchy' +15:56:29.056 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +15:56:29.060 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +15:56:29.060 ENTITY : CreateComponent 'Hierarchy' +15:56:29.060 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +15:56:29.060 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +15:56:29.060 ENTITY : CreateComponent 'Hierarchy' +15:56:29.060 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +15:56:29.060 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +15:56:29.060 ENTITY : CreateComponent 'Hierarchy' +15:56:29.060 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +15:56:34.277 WORLD : WORLD : NotifyBeforeEntitiesInitialized +15:56:34.277 PROFILING : NotifyBeforeEntitiesInitialized took: 0.042200 ms +15:56:36.172 WORLD : InitEntities 'world' +15:56:36.172 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Reintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +15:56:36.172 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +15:56:36.196 WORLD : InitEntities 'world' +15:56:36.196 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Reintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +15:56:36.196 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +15:56:36.197 WORLD : WORLD : NotifyEntitiesInitialized +15:56:36.197 TERRAIN : TERRAIN : Initializing road networks... +15:56:36.202 PROFILING : Initializing road networks... took: 5.033400 ms +15:56:36.202 DEFAULT : DEFAULT : WorldVolumesCollection +15:56:36.253 PROFILING : WorldVolumesCollection took: 51.134500 ms +15:56:36.253 INIT : INIT : SoundWorldInit +15:56:36.265 PROFILING : SoundWorldInit took: 12.457800 ms +15:56:36.265 PROFILING : NotifyEntitiesInitialized took: 68.810100 ms +15:56:36.265 PROFILING : CreateEntities took: 12848.268200 ms +15:56:36.266 PROFILING : CreateEntities took: 12848.436400 ms +15:56:36.266 WORLD : WORLD : Wait for preloading data around camera +15:56:36.266 PROFILING : Wait for preloading data around camera took: 0.001000 ms +15:56:36.266 WORLD : WORLD : EOnActivate +15:56:36.296 PROFILING : EOnActivate took: 30.215600 ms +15:56:36.297 PROFILING : Game::LoadEntities took: 12880.490300 ms +15:56:36.606 DEFAULT : Entered offline game state. +15:56:40.607 SCRIPT : Map load time: 2235ms +15:56:40.608 NETWORK : Player connected: connectionID=2147483646 +15:56:40.608 NETWORK : ### Connecting player: connectionID=2147483646, Name= +15:56:40.608 NETWORK : ### Creating player: PlayerId=1, Name=jakub +15:56:40.615 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +15:56:40.615 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +15:56:40.615 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +15:56:40.615 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +15:56:40.615 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +15:56:40.617 SCRIPT (W): Can't open config file "" +15:56:40.623 WORLD : InitEntities 'world' +15:56:40.623 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +15:56:40.623 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +15:56:40.623 SCRIPT (W): Slot_WeaponInfo Has no Content! +15:56:40.623 SCRIPT (W): Slot_Chat Has no Content! +15:56:40.623 SCRIPT (W): Slot_VON Has no Content! +15:56:40.623 SCRIPT (W): Slot_AvailableActions Has no Content! +15:56:40.624 SCRIPT (W): Slot_Vehicle Has no Content! +15:56:40.624 SCRIPT (W): Slot_GameVersion Has no Content! +15:56:40.624 SCRIPT (W): Slot_Notifications Has no Content! +15:56:40.624 SCRIPT (W): Slot_Hints Has no Content! +15:56:40.636 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +15:56:40.636 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +15:56:40.636 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +15:56:40.636 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +15:56:40.637 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +15:56:40.640 NETWORK : ### Updating player: PlayerId=1, Name=jakub, rplIdentity=0xFFFFFFFE, IdentityId=00000000-0000-0000-0000-000000000000 +15:56:40.640 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +15:56:40.640 NETWORK : Players connecting: 0 +15:56:40.640 NETWORK : Players connected: 1 / 1 +15:56:40.667 DEFAULT : Using autosave directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/autosaves +15:56:40.668 PROFILING : Workbench startup took: 47170.943600 ms +15:56:40.689 WORLD : Frame start +15:56:40.689 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +15:56:40.702 WORLD : UpdateEntities +15:56:40.702 WORLD : Frame +15:56:40.702 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +15:56:40.869 WORLD : UpdateEntities +15:56:40.869 WORLD : PostFrame +15:56:40.870 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +15:56:40.870 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:40.908 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +15:56:40.908 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +15:56:40.908 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +15:56:40.908 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +15:56:41.040 RENDER : RENDER : ObjectsHeightMap::Build +15:56:41.040 RENDER : RENDER : MeshOccupancyGridManager::GenerateAllForWorld +15:56:41.187 PROFILING : MeshOccupancyGridManager::GenerateAllForWorld took: 146.035400 ms +15:56:41.195 PROFILING : ObjectsHeightMap::Build took: 154.499200 ms +15:56:42.329 SCRIPT : Reintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +15:56:42.360 SCRIPT : Reintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +15:56:42.361 SCRIPT : Reintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +15:56:42.403 SCRIPT : Reintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +15:56:42.405 SCRIPT : Reintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +15:56:42.462 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +15:56:42.462 WORLD : InitEntities 'world' +15:56:42.462 ENTITY : Init entity @"ENTITY:4611686018427388494" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +15:56:42.463 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388494" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +15:56:42.464 SCRIPT : Reintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +15:56:42.465 SCRIPT : Reintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +15:56:42.478 SCRIPT : Reintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +15:56:42.541 SCRIPT : Reintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +15:56:42.541 SCRIPT : Reintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +15:56:42.544 SCRIPT : Reintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +15:56:42.544 SCRIPT : Reintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +15:56:42.551 SCRIPT : Reintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +15:56:42.552 SCRIPT : Reintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +15:56:42.553 SCRIPT : Reintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +15:56:42.554 SCRIPT : Reintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +15:56:42.555 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +15:56:42.555 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +15:56:42.555 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +15:56:42.555 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +15:56:42.555 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +15:56:42.556 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +15:56:42.556 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +15:56:42.556 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +15:56:42.556 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +15:56:42.556 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +15:56:42.557 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +15:56:42.557 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +15:56:42.557 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.557 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.557 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.558 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.558 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.558 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:43.419 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.420 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.420 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.420 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.428 WORLD : UpdateEntities +15:56:43.428 WORLD : AfterPostSimulate +15:56:43.429 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +15:56:43.663 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.09,63.5472,7499.71> up=0.995555 +15:56:43.664 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.364426 angularSpeed=0.073304 +15:56:43.664 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +15:56:43.664 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.617,7501.98> +15:56:43.664 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.317,7501.98> terrainY=63.315 tireTerrainGap=0.00205231 +15:56:43.665 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.617,7501.98> radius=0.3 bottom=<7012.07,63.317,7501.98> fraction=0.464126 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00210953 +15:56:43.665 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.6006,7497.71> +15:56:43.665 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.1506,7497.71> terrainY=64.1535 tireTerrainGap=-0.00285339 +15:56:43.665 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.6006,7497.71> radius=0.45 bottom=<7009.89,64.1506,7497.71> fraction=0.441704 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00282288 +15:56:43.665 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.44,64.2644,7497.76> +15:56:43.666 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.44,63.8144,7497.76> terrainY=63.8171 tireTerrainGap=-0.00271988 +15:56:43.666 SCRIPT : ERR GEAR SUPPORT: center=<7014.44,64.2644,7497.76> radius=0.45 bottom=<7014.44,63.8144,7497.76> fraction=0.441944 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00277328 +15:56:43.666 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:43.922 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:43.922 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:43.922 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.922 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:44.422 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:44.423 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:44.423 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:44.674 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.11,63.5278,7499.72> up=0.994249 +15:56:44.674 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0859798 angularSpeed=0.0382068 +15:56:44.674 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +15:56:44.674 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6192,7501.99> +15:56:44.674 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3192,7501.99> terrainY=63.3139 tireTerrainGap=0.00529099 +15:56:44.675 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6192,7501.99> radius=0.3 bottom=<7012.08,63.3192,7501.99> fraction=0.478992 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00537872 +15:56:44.675 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.94,64.6002,7497.72> +15:56:44.675 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.94,64.1502,7497.72> terrainY=64.1474 tireTerrainGap=0.00287628 +15:56:44.675 SCRIPT : ERR GEAR SUPPORT: center=<7009.94,64.6002,7497.72> radius=0.45 bottom=<7009.94,64.1502,7497.72> fraction=0.468312 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00302887 +15:56:44.675 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.48,64.2653,7497.79> +15:56:44.675 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.48,63.8153,7497.79> terrainY=63.815 tireTerrainGap=0.000286102 +15:56:44.676 SCRIPT : ERR GEAR SUPPORT: center=<7014.48,64.2653,7497.79> radius=0.45 bottom=<7014.48,63.8153,7497.79> fraction=0.455556 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=0.000221252 +15:56:44.676 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:44.676 SCRIPT : Reintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +15:56:44.931 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:44.931 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:44.931 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:44.932 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:45.445 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:45.445 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:45.446 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:45.446 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:45.687 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5334,7499.75> up=0.994073 +15:56:45.687 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0431915 angularSpeed=0.0399238 +15:56:45.688 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +15:56:45.688 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.615,7502.02> +15:56:45.688 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.315,7502.02> terrainY=63.3109 tireTerrainGap=0.00405502 +15:56:45.688 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.615,7502.02> radius=0.3 bottom=<7012.09,63.315,7502.02> fraction=0.473011 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00406265 +15:56:45.688 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5909,7497.73> +15:56:45.688 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1409,7497.73> terrainY=64.1407 tireTerrainGap=0.000175476 +15:56:45.689 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5909,7497.73> radius=0.45 bottom=<7009.98,64.1409,7497.73> fraction=0.455107 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00012207 +15:56:45.689 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2589,7497.83> +15:56:45.689 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8089,7497.83> terrainY=63.8123 tireTerrainGap=-0.00338364 +15:56:45.689 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2589,7497.83> radius=0.45 bottom=<7014.52,63.8089,7497.83> fraction=0.439167 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00338364 +15:56:45.689 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:45.950 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:45.951 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:45.951 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:45.951 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:46.459 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.460 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.460 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.460 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.710 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5277,7499.77> up=0.994326 +15:56:46.711 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +15:56:46.711 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +15:56:46.711 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6102,7502.04> +15:56:46.711 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3102,7502.04> terrainY=63.3095 tireTerrainGap=0.000751495 +15:56:46.711 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6102,7502.04> radius=0.3 bottom=<7012.09,63.3102,7502.04> fraction=0.457835 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000724792 +15:56:46.712 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.99,64.5915,7497.74> +15:56:46.712 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.99,64.1415,7497.74> terrainY=64.1387 tireTerrainGap=0.00279236 +15:56:46.712 SCRIPT : ERR GEAR SUPPORT: center=<7009.99,64.5915,7497.74> radius=0.45 bottom=<7009.99,64.1415,7497.74> fraction=0.467452 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00283813 +15:56:46.712 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.53,64.2594,7497.85> +15:56:46.712 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.53,63.8094,7497.85> terrainY=63.8111 tireTerrainGap=-0.00169754 +15:56:46.712 SCRIPT : ERR GEAR SUPPORT: center=<7014.53,64.2594,7497.85> radius=0.45 bottom=<7014.53,63.8094,7497.85> fraction=0.446667 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00173187 +15:56:46.712 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:46.972 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:46.972 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.973 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:46.973 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.477 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.477 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:47.477 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.728 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5277,7499.77> up=0.994326 +15:56:47.728 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +15:56:47.728 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +15:56:47.728 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6102,7502.04> +15:56:47.728 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3102,7502.04> terrainY=63.3095 tireTerrainGap=0.000751495 +15:56:47.728 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6102,7502.04> radius=0.3 bottom=<7012.09,63.3102,7502.04> fraction=0.457835 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000724792 +15:56:47.729 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.99,64.5915,7497.74> +15:56:47.729 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.99,64.1415,7497.74> terrainY=64.1387 tireTerrainGap=0.00279236 +15:56:47.729 SCRIPT : ERR GEAR SUPPORT: center=<7009.99,64.5915,7497.74> radius=0.45 bottom=<7009.99,64.1415,7497.74> fraction=0.467452 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00283813 +15:56:47.729 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.53,64.2594,7497.85> +15:56:47.729 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.53,63.8094,7497.85> terrainY=63.8111 tireTerrainGap=-0.00169754 +15:56:47.729 SCRIPT : ERR GEAR SUPPORT: center=<7014.53,64.2594,7497.85> radius=0.45 bottom=<7014.53,63.8094,7497.85> fraction=0.446667 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00173187 +15:56:47.730 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:47.982 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.982 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.983 SCRIPT : Reintroduced [sites]: 7 sites and 122 physical stock items ready +15:56:48.001 SCRIPT : Reintroduced [environment]: date=authored weather=authored +15:56:48.002 SCRIPT : Reintroduced [time]: started at 14:00 with 1x progression +15:56:48.002 SCRIPT : Reintroduced [mission]: phase 0 -> 1 +15:56:48.002 SCRIPT : Reintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +15:56:48.002 SCRIPT : Reintroduced [prison]: gate candidate raw= resolved={67F17696FF278AE0}Prefabs/Structures/BuildingParts/Doors/Door_Metal_A_RIGHT_EXT_COV_B.et lock=1 door=1 position=<6089.34,211.444,7154.05> +15:56:48.002 SCRIPT : Reintroduced [prison]: one intact successor lock in owned prison +15:56:48.961 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +15:56:48.994 SCRIPT : Reintroduced [spawn scene]: player=1 token=1 waiting for 41 replicated objects +15:56:48.994 SCRIPT : Reintroduced [spawn scene]: client token=1 waiting for 41 replicated objects +15:56:49.070 SCRIPT : Reintroduced [spawn scene]: client token=1 all 41 replicated objects present +15:56:49.148 SCRIPT : ERR SMOKE PASS: native spawn preload retains preparation text after server sites are ready +15:56:49.967 SCRIPT : Reintroduced [spawn]: player 1 at <6088.5,211.39,7158.5> +15:56:50.157 SCRIPT : ERR SMOKE PASS: prisoner admitted only after enabled native spawn preload finishes +15:56:50.157 SCRIPT : ERR SMOKE PASS: new identity may enter prison +15:56:50.157 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +15:56:50.157 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +15:56:50.158 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +15:56:50.158 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +15:56:50.158 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +15:56:50.158 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +15:56:50.158 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +15:56:50.160 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +15:56:50.160 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +15:56:50.161 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +15:56:50.163 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +15:56:50.164 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +15:56:50.164 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +15:56:50.164 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +15:56:50.167 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +15:56:50.168 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +15:56:50.168 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +15:56:50.168 SCRIPT : ERR SMOKE PASS: initial prisoner position +15:56:50.168 SCRIPT : ERR SMOKE PASS: radio and extraction vehicle exist +15:56:50.168 SCRIPT : ERR SMOKE PASS: authored gate exposes lock action +15:56:50.169 SCRIPT : ERR PRISON AI: checked=36 active=0 +15:56:50.169 SCRIPT : ERR SMOKE PASS: physical enemies stay inactive until prison lockpick +15:56:50.169 SCRIPT : ERR GEOMETRY: gate low=<6089.32,211.443,7153.9> high=<6090.65,213.821,7154.12> +15:56:50.169 SCRIPT : ERR GEOMETRY: child origin=<6090,211.444,7160> low=<6090,211.444,7160> high=<6090,211.444,7160> +15:56:50.169 SCRIPT : ERR GEOMETRY: child origin=<6090,211.444,7154> low=<6089.26,211.443,7153.96> high=<6090.74,213.918,7154.08> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6090.72,211.444,7153.96> low=<6090.72,210.641,7153.83> high=<6093.72,214.409,7154.09> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6093,211.444,7154> low=<6093,210.641,7153.87> high=<6096,214.409,7154.13> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6086.28,211.444,7153.96> low=<6086.28,210.641,7153.83> high=<6089.28,214.409,7154.09> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7154> low=<6084,210.641,7153.87> high=<6087,214.409,7154.13> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6096,211.444,7163> low=<6095.87,210.641,7163> high=<6096.13,214.409,7166> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7163> low=<6083.87,210.641,7163> high=<6084.13,214.409,7166> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6096,211.444,7160> low=<6095.87,210.641,7160> high=<6096.13,214.409,7163> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7160> low=<6083.87,210.641,7160> high=<6084.13,214.409,7163> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6096,211.444,7157> low=<6095.87,210.641,7157> high=<6096.13,214.409,7160> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7157> low=<6083.87,210.641,7157> high=<6084.13,214.409,7160> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6096,211.444,7154> low=<6095.87,210.641,7154> high=<6096.13,214.409,7157> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7154> low=<6083.87,210.641,7154> high=<6084.13,214.409,7157> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6093,211.444,7166> low=<6093,210.641,7165.87> high=<6096,214.409,7166.13> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6090,211.444,7166> low=<6090,210.641,7165.87> high=<6093,214.409,7166.13> +15:56:50.172 SCRIPT : ERR GEOMETRY: child origin=<6087,211.444,7166> low=<6087,210.641,7165.87> high=<6090,214.409,7166.13> +15:56:50.172 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7166> low=<6084,210.641,7165.87> high=<6087,214.409,7166.13> +15:56:50.172 SCRIPT : ERR SMOKE PASS: lock permits prisoner +15:56:50.172 SCRIPT : Reintroduced [mission]: phase 1 -> 2 +15:56:50.174 SCRIPT : ERR SMOKE PASS: lock action advances mission +15:56:50.174 SCRIPT : ERR PRISON AI: checked=36 active=1 +15:56:50.174 SCRIPT : ERR SMOKE PASS: lockpick reactivates the existing physical enemies +15:56:50.174 SCRIPT : ERR SMOKE PASS: two guaranteed physical cache documents +15:56:50.177 SCRIPT : ERR SMOKE PASS: test does not rely on random intel +15:56:50.183 SCRIPT : ERR SMOKE PASS: isolated test profile defence duration +15:56:50.665 SCRIPT : ERR SMOKE PASS: authored cache document recovered into inventory +15:56:50.982 SCRIPT : Reintroduced [intel]: player 1 recovered folder; location=everon-radio-1 knowledge=1 +15:56:52.188 RESOURCES : Screenshot saved to $logs:err-prison.png +15:56:53.198 SCRIPT : ERR SMOKE PASS: unlocked gate physically permits passage +15:56:53.198 SCRIPT : ERR SMOKE PASS: authored cache document recovered into inventory +15:56:54.022 SCRIPT : Reintroduced [intel]: player 1 recovered folder; location=everon-radio-1 knowledge=2 +15:56:55.742 GUI : Creating menu 'ERR_AdminPanel' +15:56:55.743 GUI : WidgetManager: CrateWidgets @"{AE761C0439D25FB8}UI/layouts/ERR/AdminMenu.layout" +15:56:55.743 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.743 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.744 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.744 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.744 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.745 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.745 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.746 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.746 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.747 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:56.244 SCRIPT : ERR SMOKE PASS: admin integration real owner RPC opens menu and returns current settings/capabilities +15:56:59.280 SCRIPT : ERR SMOKE PASS: admin integration background polling preserves editable draft +15:57:00.799 SCRIPT : ERR SMOKE PASS: admin integration native Apply control routes and saves only requested setting +15:57:00.825 RESOURCES : Screenshot saved to $logs:err-admin-settings.png +15:57:02.823 SCRIPT : ERR SMOKE PASS: admin integration test setting restored without resetting menu drafts +15:57:02.851 RESOURCES : Screenshot saved to $logs:err-admin-hq.png +15:57:05.870 SCRIPT : ERR ADMIN JOURNAL TEXT: lines=58 chars=6531 bounds=153.833,-128.333,188.333,273.75 +15:57:05.870 SCRIPT : ERR ADMIN JOURNAL VIEWPORT: bounds=152.167,64.5833,195,83.3333 +15:57:05.870 SCRIPT : ERR ADMIN JOURNAL FOLLOW: slider=0,1 overflow=190.417 +15:57:05.870 SCRIPT : ERR SMOKE PASS: admin integration HQ capability and journal page remain within current mission services +15:57:05.898 RESOURCES : Screenshot saved to $logs:err-admin-journal.png +15:57:07.399 SCRIPT : ERR SMOKE PASS: admin integration dialog closes and authenticated god command affects current body +15:57:08.914 SCRIPT : ERR SMOKE PASS: admin integration god off restores exact prior damage state +15:57:08.914 GUI : Creating menu 'ERR_AdminPanel' +15:57:08.914 GUI : WidgetManager: CrateWidgets @"{AE761C0439D25FB8}UI/layouts/ERR/AdminMenu.layout" +15:57:08.914 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.916 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.917 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.917 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.918 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.918 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:10.945 SCRIPT : ERR SMOKE PASS: admin integration repeated open works and denied snapshot closes dialog +15:57:10.945 SCRIPT : ERR SMOKE PASS: reroll cache group is ready +15:57:10.946 SCRIPT : ERR SMOKE PASS: reroll observes original living cache guards +15:57:10.946 SCRIPT : ERR SMOKE PASS: unauthorized reroll cannot start a batch +15:57:10.949 SCRIPT : ERR SMOKE PASS: native reroll captured chance configured +15:57:10.950 SCRIPT : ERR SMOKE PASS: administrator starts one batch; overlapping reroll rejected +15:57:10.952 SCRIPT : ERR SMOKE PASS: live setting change does not alter captured batch chance +15:57:21.326 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +15:57:21.326 ENTITY : Create entity @"ENTITY:4611686018427392941" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +15:57:21.326 ENTITY : CreateComponent 'BaseRadioComponent' +15:57:21.327 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427392941" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +15:57:30.268 SCRIPT : ERR INTEL REROLL: Intel reroll complete at 100 percent: 40/40 AI processed, 0 failed, 0 skipped. +15:57:30.269 SCRIPT : ERR SMOKE PASS: native inventory reroll completes without failed operations +15:57:30.269 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.269 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.269 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.269 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.269 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.270 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.270 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.270 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.270 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.271 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.271 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.271 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.271 SCRIPT : ERR SMOKE PASS: reroll preserves player's exact collected clue documents +15:57:30.271 SCRIPT : ERR SMOKE PASS: reroll preserves player's exact collected clue documents +15:57:30.271 SCRIPT : ERR SMOKE PASS: reroll preserves already identified radio +15:57:30.272 SCRIPT : ERR SMOKE PASS: next independent batch uses current zero probability +15:57:55.198 SCRIPT : ERR INTEL REROLL: Intel reroll complete at 0 percent: 59/59 AI processed, 0 failed, 0 skipped. +15:57:55.199 SCRIPT : ERR SMOKE PASS: native inventory reroll completes without failed operations +15:57:55.199 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.199 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.199 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.200 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.200 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.200 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.200 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.200 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.200 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.201 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.201 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.201 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.201 SCRIPT : ERR SMOKE PASS: reroll preserves player's exact collected clue documents +15:57:55.201 SCRIPT : ERR SMOKE PASS: reroll preserves player's exact collected clue documents +15:57:55.201 SCRIPT : ERR SMOKE PASS: reroll preserves already identified radio +15:57:55.201 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: carried intel identifies radio through intel service +15:57:55.202 SCRIPT : ERR SMOKE PASS: radio rejects distant player +15:57:56.207 SCRIPT : ERR SMOKE: radio=<6500,159.756,7200> player=<6502,159.53,7200> +15:57:56.207 SCRIPT : Reintroduced [mission]: phase 2 -> 3 +15:57:56.208 SCRIPT : ERR SMOKE PASS: identified radio starts defence +15:57:59.247 SCRIPT : ERR SMOKE PASS: occupied defence timer running +15:58:01.761 SCRIPT : ERR SMOKE PASS: leaving area resets defence +15:58:32.231 SCRIPT : Reintroduced [mission]: phase 3 -> 4 +15:58:35.153 SCRIPT : ERR SMOKE PASS: continuous occupied defence completes +15:58:35.154 SCRIPT : ERR SMOKE PASS: boarding extraction vehicle +15:58:39.186 SCRIPT : ERR SMOKE PASS: physical extraction occupancy +15:58:39.737 SCRIPT : Reintroduced [mission]: phase 4 -> 5 +15:58:39.737 SCRIPT : ERR SMOKE PASS: scripted escape reaches victory after physical vehicle occupancy +15:58:39.738 SCRIPT : ERR SMOKE COMPLETE: terminal=5 lostHelicopterCase=0 playerDeathCase=0 +15:58:39.875 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +15:58:39.878 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +15:58:39.878 SCRIPT (W): Slot_Chat Has no Content! +15:58:39.878 SCRIPT (W): Slot_VON Has no Content! +15:58:39.878 SCRIPT (W): Slot_GameVersion Has no Content! +15:58:39.878 SCRIPT (W): Slot_Notifications Has no Content! +15:58:41.956 SCRIPT : ERR RESULT UI: player=1 title=You escaped Everon +15:58:41.956 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +15:58:41.956 SCRIPT : -- Stack trace -- +15:58:41.956 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +15:58:41.956 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +15:58:41.957 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +15:58:41.957 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +15:58:41.957 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +15:58:41.957 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +15:58:41.957 SCRIPT : ----------------- +15:58:41.957 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +15:58:41.957 SCRIPT : -- Stack trace -- +15:58:41.958 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +15:58:41.958 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +15:58:41.958 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +15:58:41.958 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +15:58:41.958 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +15:58:41.958 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +15:58:41.958 SCRIPT : ----------------- +15:58:41.961 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +15:58:41.961 SCRIPT (W): Slot_Chat Has no Content! +15:58:41.961 SCRIPT (W): Slot_VON Has no Content! +15:58:41.961 SCRIPT (W): Slot_GameVersion Has no Content! +15:58:41.961 SCRIPT (W): Slot_Notifications Has no Content! +15:58:41.963 SCRIPT : ERR RESULT UI: player=1 title=You escaped Everon +15:58:43.835 RESOURCES : Screenshot saved to $logs:err-result.png diff --git a/docs/evidence/native-2026-09-20-prison-opening/error.log.txt b/docs/evidence/native-2026-09-20-prison-opening/error.log.txt new file mode 100644 index 0000000..a4a8f47 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/error.log.txt @@ -0,0 +1,162 @@ +--------------------------------------------- +Log Z:\tmp\erri-prison-original-victory2-20260920\logs\logs_2026-09-20_15-55-53\error.log started at 2026-09-20 15:55:55 (2026-09-20 13:55:55 UTC) + +15:55:55.358 INIT : Workbench startup +15:55:55.358 INIT : Workbench Init Engine +15:55:55.358 RESOURCES : ResourceDB: full scan +15:55:55.358 RESOURCES : processing files... +15:55:55.358 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +15:55:55.371 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +15:55:55.371 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +15:55:55.371 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +15:55:55.460 ENGINE : GameProject load +15:55:55.460 INIT : GameProject load project data @"Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_595F2BF2F44836FB/addon.gproj" +15:55:55.460 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +15:55:55.460 INIT : GameProject load project data @"Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_629B2BA37EFFD577/addon.gproj" +15:55:55.460 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +15:55:55.461 INIT : GameProject load project data @"Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +15:55:55.461 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +15:55:55.461 INIT : GameProject load project data @"Z:/tmp/erri-prison-original-victory2-20260920/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +15:55:55.461 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +15:55:59.428 INIT : Workbench Create Game +15:55:59.428 SCRIPT : Compiling Game scripts +15:55:59.428 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +15:55:59.428 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +15:55:59.737 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,223": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:55:59.747 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +15:55:59.784 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +15:55:59.918 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:55:59.927 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +15:55:59.991 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +15:55:59.991 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +15:55:59.992 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +15:56:00.024 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.042 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.042 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.044 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +15:56:00.044 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +15:56:00.070 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.096 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +15:56:08.698 WORLD : CreateEntities +15:56:08.698 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +15:56:08.698 ENTITY : CreateComponent 'ScriptedRadioComponent' +15:56:08.698 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +15:56:23.173 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +15:56:27.518 WORLD : Game::LoadEntities +15:56:27.518 WORLD : CreateEntities +15:56:27.518 WORLD : CreateEntities +15:56:27.518 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +15:56:27.518 ENTITY : CreateComponent 'ScriptedRadioComponent' +15:56:27.518 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +15:56:29.050 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +15:56:29.050 ENTITY : CreateComponent 'Hierarchy' +15:56:29.050 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +15:56:29.050 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +15:56:29.050 ENTITY : CreateComponent 'Hierarchy' +15:56:29.050 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +15:56:29.050 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +15:56:29.050 ENTITY : CreateComponent 'Hierarchy' +15:56:29.050 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +15:56:29.055 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +15:56:29.055 ENTITY : CreateComponent 'Hierarchy' +15:56:29.055 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +15:56:29.055 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +15:56:29.055 ENTITY : CreateComponent 'Hierarchy' +15:56:29.055 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +15:56:29.056 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +15:56:29.056 ENTITY : CreateComponent 'Hierarchy' +15:56:29.056 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +15:56:29.060 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +15:56:29.060 ENTITY : CreateComponent 'Hierarchy' +15:56:29.060 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +15:56:29.060 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +15:56:29.060 ENTITY : CreateComponent 'Hierarchy' +15:56:29.060 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +15:56:29.060 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +15:56:29.060 ENTITY : CreateComponent 'Hierarchy' +15:56:29.060 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +15:56:36.172 WORLD : InitEntities 'world' +15:56:36.172 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Reintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +15:56:36.172 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +15:56:40.615 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +15:56:40.615 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +15:56:40.615 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +15:56:40.615 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +15:56:40.615 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +15:56:40.617 SCRIPT (W): Can't open config file "" +15:56:40.623 WORLD : InitEntities 'world' +15:56:40.623 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +15:56:40.623 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +15:56:40.623 SCRIPT (W): Slot_WeaponInfo Has no Content! +15:56:40.623 SCRIPT (W): Slot_Chat Has no Content! +15:56:40.623 SCRIPT (W): Slot_VON Has no Content! +15:56:40.623 SCRIPT (W): Slot_AvailableActions Has no Content! +15:56:40.624 SCRIPT (W): Slot_Vehicle Has no Content! +15:56:40.624 SCRIPT (W): Slot_GameVersion Has no Content! +15:56:40.624 SCRIPT (W): Slot_Notifications Has no Content! +15:56:40.624 SCRIPT (W): Slot_Hints Has no Content! +15:56:40.636 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +15:56:40.636 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +15:56:40.636 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +15:56:40.636 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +15:56:40.637 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +15:56:40.640 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +15:56:40.869 WORLD : UpdateEntities +15:56:40.869 WORLD : PostFrame +15:56:40.870 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +15:56:40.870 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:40.908 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +15:56:40.908 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +15:56:40.908 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +15:56:40.908 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +15:56:42.462 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +15:56:42.462 WORLD : InitEntities 'world' +15:56:42.462 ENTITY : Init entity @"ENTITY:4611686018427388494" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +15:56:42.463 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388494" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +15:56:43.428 WORLD : UpdateEntities +15:56:43.428 WORLD : AfterPostSimulate +15:56:43.429 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +15:56:55.742 GUI : Creating menu 'ERR_AdminPanel' +15:56:55.743 GUI : WidgetManager: CrateWidgets @"{AE761C0439D25FB8}UI/layouts/ERR/AdminMenu.layout" +15:56:55.743 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.743 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.744 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.744 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.744 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.745 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.745 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.746 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.746 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.747 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.914 GUI : Creating menu 'ERR_AdminPanel' +15:57:08.914 GUI : WidgetManager: CrateWidgets @"{AE761C0439D25FB8}UI/layouts/ERR/AdminMenu.layout" +15:57:08.914 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.916 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.917 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.917 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.918 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.918 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:21.326 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +15:57:21.326 ENTITY : Create entity @"ENTITY:4611686018427392941" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +15:57:21.326 ENTITY : CreateComponent 'BaseRadioComponent' +15:57:21.327 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427392941" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +15:58:39.878 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +15:58:39.878 SCRIPT (W): Slot_Chat Has no Content! +15:58:39.878 SCRIPT (W): Slot_VON Has no Content! +15:58:39.878 SCRIPT (W): Slot_GameVersion Has no Content! +15:58:39.878 SCRIPT (W): Slot_Notifications Has no Content! +15:58:41.956 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +15:58:41.957 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +15:58:41.961 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +15:58:41.961 SCRIPT (W): Slot_Chat Has no Content! +15:58:41.961 SCRIPT (W): Slot_VON Has no Content! +15:58:41.961 SCRIPT (W): Slot_GameVersion Has no Content! +15:58:41.961 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-prison-opening/external-addons-inputs.json.txt b/docs/evidence/native-2026-09-20-prison-opening/external-addons-inputs.json.txt new file mode 100644 index 0000000..f2f3ae2 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/external-addons-inputs.json.txt @@ -0,0 +1,744 @@ +{ + "1337C0DE5DABBEEF": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF", + "title": "RHS: Status Quo - Content Pack 01", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 916830, + 209, + 1789670354123815627, + 1789670354123815627 + ], + "sha256": "c5d88d82138bc80c95f364075c3a0fc2228f9c15c6230398f3728a13d25b418c" + }, + "addon.gproj": { + "stat": [ + 46, + 26917910, + 335, + 1789670330884205142, + 1789670353823807747 + ], + "sha256": "65197c50ff6e906a5732564e8b440d80ef1cdbcffead9eb388e1e2b56c1322bc" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917892, + 362, + 1789670307618593786, + 1789670307618593786 + ], + "sha256": "17b87e0976ac2da1032f1661a884f6d59b56c00823b2fcfdc2a698ea8bcc92cc" + }, + "data.pak": { + "stat": [ + 46, + 26917928, + 1992582478, + 1789670344310557863, + 1789670353824807774 + ], + "sha256": "e5db31f571782997640a67601ebd3bd6e6615c1548274c71b6ab0cdd794f8bf5" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917893, + 232459, + 1789670307954602617, + 1789670307954602617 + ], + "sha256": "855813254cd72dc87515f4c395e7c7defe4b145ac809a740f81c85ca546b36fe" + }, + "data001.pak": { + "stat": [ + 46, + 26917986, + 1993657251, + 1789670345496589019, + 1789670354029813158 + ], + "sha256": "2bda9c533834dfa2b8e29f4a2a905c30639dabe250554e1346cf1f5dae3f2db3" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917900, + 349870, + 1789670308754623642, + 1789670308754623642 + ], + "sha256": "d4ec79f2a5cf03dd44bcc4513199056195dfda3c7a5c6bbfd17b2c709b746cdc" + }, + "data002.pak": { + "stat": [ + 46, + 26917956, + 1992567795, + 1789670345532589964, + 1789670353970811608 + ], + "sha256": "dfbd716c2a0849910a8058b1f008b8403b8c506fe18c3168d2844383ac02988c" + }, + "data002.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917897, + 332016, + 1789670308247610318, + 1789670308247610318 + ], + "sha256": "3de05138d1d635f1ba5bcbd74a0f91028bfd59082f45c740051381bd054404b5" + }, + "data003.pak": { + "stat": [ + 46, + 26917964, + 364877149, + 1789670333444272402, + 1789670354017812842 + ], + "sha256": "6225936ebc266825bbd1c79e4e0020c9f2fb55c3d3501ed66e72d87436ccd015" + }, + "data003.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917898, + 96448, + 1789670308423614944, + 1789670308423614944 + ], + "sha256": "8ca2504191def96715ddd6ee98a8df1e3f0951e5755592801eab662657289dd0" + }, + "meta": { + "stat": [ + 46, + 911092, + 8188, + 1789670354121815574, + 1789670354121815574 + ], + "sha256": "cb4f4296d087ea5fe2e849b0fc960748bfede7ea3071eeb545bd7bd309be6bfb" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26917967, + 566987, + 1789670331096210712, + 1789670354028813131 + ], + "sha256": "e8706d6b9bb2474b65f7c588de9fcfad4516bd26dc12e7b6b687e7973a41e7a6" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917899, + 368, + 1789670308546618176, + 1789670308546618176 + ], + "sha256": "336f9160ad955caa88d286915195699d3ac36f3363391967a178be0fd2ccd914" + }, + "thumbnail.png": { + "stat": [ + 46, + 26917907, + 18180, + 1789670330627887201, + 1789670353823807747 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917891, + 366, + 1789670307490590423, + 1789670307490590423 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "595F2BF2F44836FB": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB", + "title": "RHS: Status Quo", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 910012, + 2789, + 1789670389999757705, + 1789670389999757705 + ], + "sha256": "0432a068d8d77e34afd10432d1459df1334238e1ec416c896f13b84bae5a3ac5" + }, + "addon.gproj": { + "stat": [ + 46, + 26919135, + 1100, + 1789670379744488450, + 1789670389873754397 + ], + "sha256": "1b83e9df126db639cfcdb6d5119e65a1581c028becd6c09998143ed527ad0721" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919120, + 364, + 1789670378419453659, + 1789670378419453659 + ], + "sha256": "d232c4cfc959267482bbf261eb2e5121c76b6bf7d8893c58c520a763df5ca5f8" + }, + "data.pak": { + "stat": [ + 46, + 26919141, + 203378761, + 1789670389138735100, + 1789670389946756313 + ], + "sha256": "985d0cde7b09ee860086cb386cf624fcfd94b5e82b26af0b33bab83f21d06988" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919122, + 1409173, + 1789670378781463164, + 1789670378781463164 + ], + "sha256": "041c8ebdf035c69aed7c04bb55be839fbdbd7bc8501862dd4939c1d71cdfe8c5" + }, + "meta": { + "stat": [ + 46, + 902077, + 12209, + 1789670389989757443, + 1789670389989757443 + ], + "sha256": "1b62c97002078af393f23508c3b03cfe22f590130345ac44926b06940f27f269" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919132, + 823768, + 1789670379822490498, + 1789670389872754371 + ], + "sha256": "25f6405084fd228ff400868b21f033c4c43d44162ce73de562e06d8003b94a49" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919119, + 368, + 1789670378283450088, + 1789670378283450088 + ], + "sha256": "986f0280a79b0e4ff6d9a3ad60570bebd86ce68869c9f3d5954141f7d5060cb1" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919138, + 18180, + 1789670379618193709, + 1789670389873754397 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919121, + 366, + 1789670378550457099, + 1789670378550457099 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "5E389BB9F58B79A6": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6", + "title": "WCS_SpaceCore", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 919166, + 197, + 1789670369327462097, + 1789670369327462097 + ], + "sha256": "4bcd7610056ed1d366e9b6d0600e80c622a1af35caecf5c9ecf2c7b9e2b626f7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918585, + 2957, + 1789670367793432952, + 1789670369299906650 + ], + "sha256": "2db2e318e6f45bede0d1173d77af03314f888aedfb31bc767d569ccfb6e70a34" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918576, + 364, + 1789670367178158473, + 1789670367178158473 + ], + "sha256": "67d15a8e8623130546332c6d6433314cbdf38e034a66330b9c7a739a94731e21" + }, + "data.pak": { + "stat": [ + 46, + 26918592, + 43626712, + 1789670369105209079, + 1789670369315214594 + ], + "sha256": "80e9810c9b7c873187660d0ddf002a63d1a382e81fc3611baa0ae8fdfff29d3d" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918578, + 66352, + 1789670367560168505, + 1789670367560168505 + ], + "sha256": "6635291a1f1aa9cffdb844e241c36cdc04114574279bab66e21613410f5e5686" + }, + "meta": { + "stat": [ + 46, + 918678, + 2338, + 1789670369325214856, + 1789670369325214856 + ], + "sha256": "dd1c683c086efb292e6cc927bd6522a1ea97ebd454e8148356f66554ebcdd4dc" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918588, + 44111, + 1789670367937178405, + 1789670369300214199 + ], + "sha256": "c4293fef30948a3538751533cc52c9ce449ffada931b47a8fdf1ca48c1618e75" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918577, + 366, + 1789670367326162360, + 1789670367326162360 + ], + "sha256": "df8cd07ff81263e4108688883b9f20568041f067dbad74402464ec2f88432b69" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918582, + 689401, + 1789670367794174651, + 1789670369299906650 + ], + "sha256": "8da2e133303f21bb16a2abd25d5bd6c2a4a6f5eccedae74a98358db485a170d1" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918574, + 368, + 1789670367051155138, + 1789670367051155138 + ], + "sha256": "5aaa5989b5f44b48ff03082a0d4004ae71420db6eebeb56282af7d98f36c7000" + } + } + }, + "5E524E4FEECCA92B": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B", + "title": "WCS_BMP-1", + "version": "8.2.0", + "files": { + "ServerData.json": { + "stat": [ + 46, + 918673, + 193, + 1789670366131482045, + 1789670366131482045 + ], + "sha256": "92ff4ae6fec8afc679726186f424bb31c9918d182f321afca4696654844e39c7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918544, + 2900, + 1789670364825147789, + 1789670366119130662 + ], + "sha256": "ad44151140adf62e99eaa639984c2b9c400be17481e934186d61c307b5221259" + }, + "addon.gproj_8.2.0_manifest.json": { + "stat": [ + 46, + 26918530, + 364, + 1789670364263081920, + 1789670364263081920 + ], + "sha256": "3065c7c353cb7623ee85f83d462d4dac37c92efad1a0255f2661470e6cedfd0f" + }, + "data.pak": { + "stat": [ + 46, + 26918541, + 119808197, + 1789670365649118318, + 1789670366115130557 + ], + "sha256": "f715ad5fa3de788061a66a3ccd933feead5cc1631507ca63e9061049c538fab6" + }, + "data.pak_8.2.0_manifest.json": { + "stat": [ + 46, + 26918528, + 25795, + 1789670364132078479, + 1789670364132078479 + ], + "sha256": "24a7f735e55ccfacc5cdacbb39fb76a6fac294f4cdc47dca0fcb6e3f1919f1e6" + }, + "gallery0_776x436.jpg": { + "stat": [ + 46, + 23106914, + 64588, + 1788720671481676966, + 1788720671481676966 + ], + "sha256": "63649f5239059dd12234250b8c8e313b14ca134e30e4309fbd1eb45f92e77097" + }, + "gallery1_776x436.jpg": { + "stat": [ + 46, + 23106915, + 47808, + 1788720671495639547, + 1788720671495639547 + ], + "sha256": "81f89b026a1bf341f8cd3bb19facd67e8d0f56073c924e026983836fee6bfb4c" + }, + "meta": { + "stat": [ + 46, + 918496, + 2928, + 1789670366129130924, + 1789670366129130924 + ], + "sha256": "ad0f9baa154a250712c94b50c5edcb25200002bdc186d35453b5e8c32c0b6ee5" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918535, + 16514, + 1789670364934099542, + 1789670366080129638 + ], + "sha256": "c65677e8767d92c96c6f35b482350d56e3dccfa026a3c5470b332120990f047c" + }, + "resourceDatabase.rdb_8.2.0_manifest.json": { + "stat": [ + 46, + 26918527, + 366, + 1789670364004075117, + 1789670364004075117 + ], + "sha256": "fdc44be4e1523db5965b015a7ea511623399a5fb3548aaaf8b2a4807fc6ade7d" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918547, + 708338, + 1789670364826600016, + 1789670366119130662 + ], + "sha256": "103a98bf476d510ab3081abb371170ae6cf65aea65b9095636d651170a5b0038" + }, + "thumbnail.png_8.2.0_manifest.json": { + "stat": [ + 46, + 26918531, + 368, + 1789670364388085202, + 1789670364388085202 + ], + "sha256": "5bf1e0f8794a4e2e862658a10071360df63ed6a440ee2ca5514afbc2e97e375e" + } + } + }, + "629B2BA37EFFD577": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577", + "title": "WCS_Armaments", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 920134, + 197, + 1789670377639162612, + 1789670377639162612 + ], + "sha256": "8e5e6b2fe4099ca90bb4498c9479924e775ca0eac411c8230114143ff1a8297a" + }, + "addon.gproj": { + "stat": [ + 46, + 26918715, + 2926, + 1789670371305266851, + 1789670377499241577 + ], + "sha256": "e6ffcf559a2e7898848349c090300ea8eca8cb2e13ecef456a108bcc82efc8b1" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918707, + 364, + 1789670369590221815, + 1789670369590221815 + ], + "sha256": "ba8f2b36575408f11b2107fc4b0f9449c9dc057629ebf894c7bdbc77f53cbc1f" + }, + "data.pak": { + "stat": [ + 46, + 26918730, + 395962643, + 1789670376182394919, + 1789670377620432679 + ], + "sha256": "84a2cf01e2d17a06f8d775ca542a0cc98739f9f4b75b79826017e1387faedb18" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918711, + 214221, + 1789670370007232766, + 1789670370007232766 + ], + "sha256": "dc3ff832bce708121c61a5dfe09be8504352556c50341f9878f4b457e165ade2" + }, + "meta": { + "stat": [ + 46, + 919170, + 2504, + 1789670377637433125, + 1789670377637433125 + ], + "sha256": "2863bb2bdb586286f8aedc34d5dfb6adbdaafd5fca0f8f21136c7a5351d1ce88" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918718, + 141469, + 1789670371389269057, + 1789670377499429501 + ], + "sha256": "7f38b7ed578b0b47864648a7b70288fe49dae4cc2556d5754377a1c28b2b6532" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918708, + 368, + 1789670369714225072, + 1789670369714225072 + ], + "sha256": "2ffa1cf6f8c07600147ae779ee3be1ccec8da23cb1c10d8c73e0c5c5d3dc6d06" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918721, + 689544, + 1789670371307273812, + 1789670377500429528 + ], + "sha256": "ccd771dba7f3f222e9733e688e6dd9e4c5edae2accdd80a6876241094e23f3dd" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918710, + 368, + 1789670369835228249, + 1789670369835228249 + ], + "sha256": "e58ef73e4a794e56ecd04bfd84940ec539e5ca481d6b69ffb20f9fedcd3c2e77" + } + } + }, + "BADC0DEDABBEDA5E": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E", + "title": "RHS: Status Quo - Content Pack 02", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 911088, + 209, + 1789670428409812415, + 1789670428409812415 + ], + "sha256": "90353d1b4ab072f7844bf24d8066031efd69feb76ddcbf66dea34b52ddfe0a1c" + }, + "addon.gproj": { + "stat": [ + 46, + 26919414, + 336, + 1789670399470006320, + 1789670428369764835 + ], + "sha256": "6ebd73d663ed6dbf981cd8bc7d19cfd5bcd3c9dec3b9a706fa331d992ef200b4" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919383, + 362, + 1789670390797778656, + 1789670390797778656 + ], + "sha256": "72d988d5881efdf7d8781b2dc978a0243e1a3d587ced56563299855724137232" + }, + "data.pak": { + "stat": [ + 46, + 26919411, + 1992445813, + 1789670421137575039, + 1789670428335763943 + ], + "sha256": "5b28362571e396c008eb2286dc5a76b4ccf869c0a279916209fb0ef20d6b145e" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919381, + 170934, + 1789670390675775453, + 1789670390675775453 + ], + "sha256": "7cde302270a1e5c3a88517ff8b08a5b50bbe63e7392434d8245542f81b0bfdf8" + }, + "data001.pak": { + "stat": [ + 46, + 26919421, + 238642257, + 1789670400589035695, + 1789670428370764861 + ], + "sha256": "fb2aecbde5668c4d431ea74d64f6d15f7a9f608fefe01838d7c85fb0c818499f" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919384, + 29970, + 1789670390937782332, + 1789670390937782332 + ], + "sha256": "e6fb290c2f9d8dcd0c0ac95c3dee054377a525e00129abc766defa079385d6ea" + }, + "meta": { + "stat": [ + 46, + 910016, + 7720, + 1789670428407765832, + 1789670428407765832 + ], + "sha256": "e9ba58307cb931026c5c59654f3b4b7f92ac6e0682a1e94fd2eb1d5b75c214cf" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919388, + 111601, + 1789670399484558966, + 1789670428260761974 + ], + "sha256": "736bcd2e60177e5af99d93c6b5f07ad79a950899aaca23000f33ad405cd1b74e" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919379, + 368, + 1789670390384767813, + 1789670390384767813 + ], + "sha256": "9a4f54837a83d2acc2bdc62288b62fe7f24876a374f1270d5a5d2a497bb5de8f" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919391, + 18180, + 1789670398997629625, + 1789670428260761974 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919380, + 366, + 1789670390509771095, + 1789670390509771095 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + } +} diff --git a/docs/evidence/native-2026-09-20-prison-opening/launch-source-sha256.json b/docs/evidence/native-2026-09-20-prison-opening/launch-source-sha256.json new file mode 100644 index 0000000..5a61c7c --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/launch-source-sha256.json @@ -0,0 +1,261 @@ +{ + "addons/core/Configs/ERR/AdminMenus.conf": "a7f889f260e43656136fc159342129e5f48748d28c426f65f9faac37b624cf94", + "addons/core/Configs/ERR/AdminMenus.conf.meta": "5faf5ddc0a51c1d0f82d60af00d91edc22fe9c39aac50d8d04b772a2c9271be1", + "addons/core/Configs/ERR/EveronSites.conf": "3e04698421ce989c996097ecf24214e7d926d2998918d60573aa403c4012b079", + "addons/core/Configs/ERR/EveronSites.conf.meta": "d5fe68025ef4e7c1e16082cf5873b7c7172eacbfaef4ab29b7e0e3c98f8dca56", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf": "5f74f4a7089c7e7b54ad62463159ce8f0bab25a6b85268dc3872ea6001e048fb", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf.meta": "00c368b6271d3440cc8bf627b03a384d247635723923fc5ad2104b8b4007b035", + "addons/core/Configs/ERR/Factions/US.conf": "4c3da063abb6e3ee39a6e4e0c5a9ffd5eae9d209d58470ea18b45dba5528db1b", + "addons/core/Configs/ERR/Factions/US.conf.meta": "a05469aef028e9e17eba545e81e2af2887b59f0fef17dac51a23c7b8155e381b", + "addons/core/Configs/ERR/Factions/USSR.conf": "407ea27f80a64c5184c089d43cdd0bdabfc5974c84f1d2a245081fdf2afa3f30", + "addons/core/Configs/ERR/Factions/USSR.conf.meta": "057397d97096346791b51b7b13fbe18af218bcf78e9984d9c01b49a2403de611", + "addons/core/Configs/ERR/GameOverScreens.conf": "45231061911a1462d45fb6db0fecc2b0793f17b5ae71017174954ff4fbd20236", + "addons/core/Configs/ERR/GameOverScreens.conf.meta": "eb654b745c0b97b41c991694569ef4877a3c2315e0826f9556337cd68690843e", + "addons/core/Configs/ERR/VanillaFactions.conf": "db890b61b48ee15484041fd2245a862d9fa9e7ba21b1229c281ff37c448a35b1", + "addons/core/Configs/ERR/VanillaFactions.conf.meta": "ac77725c0c21974991ef47a466b88122e939de8b46fd23e68889e7674cbb2bfd", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Missions/ERR_Everon.conf": "db35c4ea8984f8f2fc9bbcea47e0100e97a46029305754ddbb576fde56e2fdab", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Missions/ERR_Everon_Base.conf": "42a78f236719dffcfa90a7d2d32f9442fc103bb3bc47531d15ab9d31289e5501", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "addons/core/Prefabs/ERR/ConvoyCrew.et": "29a525a29605386dfcf292dc2316e9fc7650ce39db9fbaa4ce4372ad0de66db4", + "addons/core/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/core/Prefabs/ERR/Extraction.et": "4d24c7811415c06386205e5bf5c132a23fcf21e96c75c7657ccd5f3ac914ac50", + "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", + "addons/core/Prefabs/ERR/FactionManager.et": "3f8157aab44e124e8d5ab5e47e3d38ad7466638ae1e97be057aa2de74c360a85", + "addons/core/Prefabs/ERR/FactionManager.et.meta": "9bf53d5e4bcbe60dd1a4ece1409fc23c349055c860708620f5f6e9716290a97d", + "addons/core/Prefabs/ERR/FieldCover.et": "e403d5cb3a5966f0cea81f15e0e825d482ba1a7a27b12498319ba45a414963b0", + "addons/core/Prefabs/ERR/FieldCover.et.meta": "83461ffa76244e1d69f20b053a9741ccdf7d127009182bd540a7e5ba6150c3d9", + "addons/core/Prefabs/ERR/GameMode.et": "4d3e5e2df28cbb8292c436ae05d4fc7e5ca789a123450a6968d9a718b6ecef20", + "addons/core/Prefabs/ERR/GameMode.et.meta": "106769cd34525c9d440057072836cb7401a6752148c40edd7fe61c03bd58328c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et": "0157bc235eeb78a0e1373b561fd22a1dcb225c833ff7c2d4abae688bca0ec92a", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et.meta": "da6f065cb2414b5a4cbe9ef0f0b1295b2466f26ad406c0bddb83845d4598efb3", + "addons/core/Prefabs/ERR/MortarCrew.et": "21086e886fe3199624208c9a866f883ec109f7d08746c2b56b497e59857fb656", + "addons/core/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/core/Prefabs/ERR/ObjectiveDocument.et": "5118ecaf9d2038eea44a4b785f05d2e78781dc1387249aa58a6782c7e6752e14", + "addons/core/Prefabs/ERR/ObjectiveDocument.et.meta": "eaba9903be147b98a1106e2273e2270773df73b9b22f2cd4e20136a8e281382e", + "addons/core/Prefabs/ERR/Patrol.et": "d3eca8fe9197c57a27a285cdb3baf168b037b198d92b39df28a338ae2cfd0c74", + "addons/core/Prefabs/ERR/Patrol.et.meta": "7c5da568fa2fcf0709ee2959253cb068d7c7ed7c2467af3b247a7e70efd96b69", + "addons/core/Prefabs/ERR/Prison.et": "b9c07f87ec08016c054edb2803f4187e437aa800116c26e1bccd78d42069738c", + "addons/core/Prefabs/ERR/Prison.et.meta": "2e426ef3de68f4107907854b51e818bc11d84649a01c538e3f18dd9ebec766bb", + "addons/core/Prefabs/ERR/PrisonDoor.et": "b0ff94443fe334032113a663917de23f920a8b73ffadc9c8e9f11b545022b3d2", + "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", + "addons/core/Prefabs/ERR/PrisonWall.et": "b0cb8fb38716f083f86e39fb4f84f275e17855d4d2558b2da2b488fb12b39121", + "addons/core/Prefabs/ERR/PrisonWall.et.meta": "0294bc5dbb56f90f8153d62459bb0a6ad91d76a479812bbec9c7db182fdb58d6", + "addons/core/Prefabs/ERR/Prisoner.et": "e6d345ac98ad9ec742bf6c3b8686839c3256df9833d31bb4bdf605cd41d0ba5c", + "addons/core/Prefabs/ERR/Prisoner.et.meta": "974278ba49fafeed70b619a0067bbc70ae4d534be441c812ce2bef4a5fb3c022", + "addons/core/Prefabs/ERR/Radio.et": "8e15f4795a7459e95dd5e5cb61940b7619452bee2dcdfb8eaa00154acb3308cb", + "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", + "addons/core/Prefabs/ERR/SpectatorCamera.et": "bffb102272eb888d1f8d8c32c7515e62751d3feb48ef4713227f040d59c42db6", + "addons/core/Prefabs/ERR/SpectatorCamera.et.meta": "2a16558f93915e31908a674509e9c89976470f78a84a1174a64b94b68b8f77ad", + "addons/core/Prefabs/ERR/SupplyCache.et": "4c97b0514fe7e723046f40f0b396f6573b12eb9981ca5df70b9e8aa3cf29323e", + "addons/core/Prefabs/ERR/SupplyCache.et.meta": "2f5de3a4aab1e9d0e35521f48dc57b95bd6e449c383dec4f1c258e10295904cb", + "addons/core/Prefabs/ERR/SupplySite.et": "f33681281d26676fac88736091834d5a7b87fe0fa01883582542df964dcfc694", + "addons/core/Prefabs/ERR/SupplySite.et.meta": "b41944b12eb3528ff7a3ac94258b18c66ef161aa6a38894aee300a1ac4798630", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et": "29f157849f413261494a63d4d5b0a97e8bbe61cb076efcd59d6c940653f23352", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et.meta": "544c94cf1c26757a10654de7856cd6cc48b821ce3bdc02add13cfe6514269915", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et": "cd4acdcecad299445952aea0adefc85f2b9e9b43f8186f100e0505c5621b3656", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et.meta": "123955da03462befb90e293b3bb856d49cc761166611b38ff47cb48ec2fbe95c", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c": "8a5ccf1fff1442dfe7ab4cb3cc858ee16adb073119144187155ade558b8c4c5f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c": "e6f22813f7a04e2c0ea000d054407191f2be8badfa6c51e062e9dbf84b95c67b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c": "a0434bcc957febbcaefe741582958f8b0799331e0075cbba258f1783f8c2a888", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c": "885c8ab4fc9e64c3f8b40056536096c8c32b011cb340b25ca00353a96da15c69", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c": "cb415058c9cf46a33051df377a4e4d7b1b78ee1c9ff3afd461d0965db80af045", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c": "6cfb7de35bbbc18bd6d35c63da01284ffb08b8641527d49283d9b9b0cb94f8c2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c": "6d388fe21f08b25cbdb5dfa4e198d94a4c80c5092f8d17630a4654e18bf8b3f5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c": "7aa1c5998e1b6b63bb4be9b02ad3f664b951a84e24647543f588a054bb71792a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "dabcdbc15fcab9c717e9bb832d2c87801767629cf9311701ca83bae7525a2ce6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c": "a076922d1ae966cf5cc67b198166ca6b1288358fb7f641207a4681e6a610a2ae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "a2a0fa36e711f1bffd53423278ad46fa6357074d99e687ae7f95a2f70740fc5d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c": "4889e0d3799a6a21b9f84bcb2f2ae78dce16269cccd1329f8d1fcc1a23e7c22c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c": "b9cd5bb3b193c20401175c4328405be1b121e8a60b7b5999910b6a71f834af8a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c": "43a406822a0361f916abc363f27e0c578ee94855036981d876bf47c68233c71a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonAI.c": "516d83e1669db0cef930b23d5de0718c0297ec012d20179ced857457463d5991", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c": "c710a41a42edde98b141d25f08d241730bd70d163e0b0ea7ab23c6fe68d1dc4f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "b9bfb070d862b5ff07e1ce9fba18687abce7b7aaf7622ef6c36991ebe1810501", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "1efa26d486a2ec5f0f8569a090f043262498b617164e51d53d686c01b377ad1e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "64ea8e5be3042fd40be3c1fb1b931f48bdc262b42defeb8c62fff334e405a704", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnClientScene.c": "1d9967edc54a3663d440794c6c7594ef37f12d18c794b66ad7142946618c8b7f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "4a3f3ff4737f30566519ec99b883d68d57b7e0557ca2dd39d7632229bd7be80a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "eaf753f8b8876af4d5cbc567bd88717c13b86e185e6d461080f05d685d2bf379", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c": "b6d14c2d8d86941d367cd802a0e68704e739e4ca3047ca7bd023e0f86e3c4bd1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c": "360228fd45aa6ecd9426e36120b5e637d2feee1e3a4a89aac8207526b871c87e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c": "b16a8b31be20271c37c4d68c169f08b28d88993d296308b80de00715ea2b4dfe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c": "0c8ce2f3d2642999a7158000e60d8c491ed3e4b6d9c0d3d18b3e3ecc3e557196", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "0921c04c313f36f23aaab35fdea05bb479a81f01acc62c715ca3b3e366d67f81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c": "298ae30d1db1191d680a5a8f60253f9344e0e19fe9c17242c757382042364341", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c": "20eca74721eda7f1f5b98ed8bd95035bf78080660b8695b7701af0a37e56fa41", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c": "d5337ce8073335ccb4b03d447550a38e03d6fc9e428008be3a7b042c078f4835", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "85e4d2cb27426c07b8631ca411f4b8f5c821f9f331c8c2719cbfa71b3687f08e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c": "0897e82d7805ef56f05f2b9c23903280285ea6bfa51796a2df86bb564ece78f7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c": "53cd74d121292f6f6813c2b69e475f29dba9239bc10cbaf55ce1d7f8fb3674f6", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c": "4219292f6b2247c36456f733ab3da8fb96efdfb5522ff4d9dc4d4b9ef9b814c3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c": "917f9df36b93258a30b7af24b0ee52b65c5205405d8056bb721a9868010d64d1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c": "84cec6457132eff6d195bc6fc8fcee267685693edbb987cbeafaece0f7537992", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c": "5d9b5d4b1d22d57145e79b5a740863a5233706fd8b11046d2512a681f8a615a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c": "39031a136fd2c6c06ef4fdc901dc395bd1b4756f14171fc280b30893dfc208c8", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "e1dc96c3c411e6793ed2902b3bb7245557379dd5e074a4ea33304999f13318d5", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "9f8f0844862ef98b0878290238a410d501ea99622cd5e517fcacd9a9187f889a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c": "7379cb65bde95bd1e7ffc2203a7fb7957435d379560e08b470e73a89ea6b59cf", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c": "4493c6b6070cd7d768a2fcba2d8934b782c9a221ae257a530aa6b52fa40d88a8", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c": "0d4d61c424a16008595f86fa61f3b848caf9bd6e9ebbacea9c10254d88ba378e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "134b4ec2ed24c771fce80fbf0949e8d7ce395db5e6998c40f23ff4d9eea1ebdb", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c": "a747af09599ce4d0c52051f18f00c4624d24d137e328341b580b82e896c6bf65", + "addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c": "49a38c37b51e5318c7dcbcb01543dd9a6300d053f0d39808b3974f4edc45b871", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "f567518b54f43b88747df2838cdfd6ebb34605c0919a3e7d271d28dd8b67a9b6", + "addons/core/UI/layouts/ERR/AdminMenu.layout": "26db9780c0afffa8429602c27ee347a4e665a19a6872b15f4178d684de7e23b6", + "addons/core/UI/layouts/ERR/AdminMenu.layout.meta": "9deeece996f43b1f1fed6b5ec89279645c7b6424250200a42580cc088142e9bf", + "addons/core/UI/layouts/ERR/PreparationStatus.layout": "bd269cf8dc6f27735423743dd5b78242550518414448a0256e5e12fa6b92c459", + "addons/core/UI/layouts/ERR/PreparationStatus.layout.meta": "75b12176a443bb911fc4ad446982d762201fda42ed38736b79bc5439fca31ccc", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", + "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", + "addons/core/Worlds/ERR_Everon_Layers/default.layer": "6bcb7fbb27b6282719dae8a37486e518d4cbaea385f2ea9af1918b36bb28b175", + "addons/core/addon.gproj": "e818cddde1c701458c10f26941edfbaf6955c0fe05bddb2940d7d52c7ed0fc36" +} diff --git a/docs/evidence/native-2026-09-20-prison-opening/launch-source.json b/docs/evidence/native-2026-09-20-prison-opening/launch-source.json new file mode 100644 index 0000000..3b92722 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/launch-source.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "launch_id": "18bd73da-e52c-4fed-874b-39f952f0d4fa", + "captured_unix": 1789912552.0922742, + "source_root": "/home/jakub/devel/escapistsrereintroduced", + "command": [ + "gamescope", + "--backend", + "headless", + "-W", + "1280", + "-H", + "720", + "-w", + "1280", + "-h", + "720", + "-r", + "30", + "--", + "/home/jakub/.local/share/Steam/steamapps/common/Proton - Experimental/proton", + "run", + "/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger Tools/Workbench/ArmaReforgerWorkbenchSteamDiag.exe", + "-gproj", + "Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj", + "-addonsDir", + "Z:/home/jakub/devel/escapistsrereintroduced/addons", + "-profile", + "Z:/tmp/erri-prison-original-victory2-20260920", + "-logconsole", + "-wbModule=WorldEditor", + "-load", + "Worlds/ERR_Everon.ent", + "-plugin=ERR_ValidateWorldPlugin", + "-errPlay", + "1", + "-errSmoke", + "1", + "-errSmokeOutcome", + "victory", + "-noThrow", + "-disableCrashReporter" + ], + "manifest_sha256": "0bc899c81fcedc40d43615a04ce7d6ecaf6d2e7d7e61d38ae0ec216ba2b5f999" +} diff --git a/docs/evidence/native-2026-09-20-prison-opening/report.json b/docs/evidence/native-2026-09-20-prison-opening/report.json new file mode 100644 index 0000000..462f201 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/report.json @@ -0,0 +1,14 @@ +{ + "log": "docs/evidence/native-2026-09-20-prison-opening/console.log.txt", + "smoke_completions": 1, + "assertions_passed": 105, + "script_or_runtime_failures": [], + "engine_errors": [ + "15:55:55.460 RESOURCES (E): Wrong GUID/name for resource @\"{0AFDD005CD669892}Language/rhs_localization.st\" in property \"StringTableSource\"", + "15:55:55.460 RESOURCES (E): Wrong GUID/name for resource @\"{41FA2A08B6971D4C}Language/wcs_armament_localization.st\" in property \"StringTableSource\"", + "15:55:55.461 RESOURCES (E): Wrong GUID/name for resource @\"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st\" in property \"StringTableSource\"", + "15:55:55.461 RESOURCES (E): Wrong GUID/name for resource @\"{E50E557B468C7073}Language/wcs_bmp1_localization.st\" in property \"StringTableSource\"" + ], + "missing_end_screen": [], + "scope": "scripted local Workbench integration only; no multiplayer, piloting or FPS claim" +} diff --git a/docs/evidence/native-2026-09-20-prison-opening/repository-check.log.txt b/docs/evidence/native-2026-09-20-prison-opening/repository-check.log.txt new file mode 100644 index 0000000..37fc93b --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/repository-check.log.txt @@ -0,0 +1,457 @@ +PASS: missing, child-only, malformed, zero and duplicate prefab root IDs rejected +PASS: delayed wall/gate replication withholds assignment; native preload, identity checks, stale replies, cancellation and timeout remain enforced +PASS: production prison AI hold/release, repeat activation, authority/faction/player exclusion, dead actor and stop cleanup +PASS: actual delivered road eligibility, ahead projection without chords, reservations, stock road query bounds, terrain/water/obstruction refusal and clean outputs +PASS: actual delivered-task lineage, expiry, old-order retention, native commit, release, road precision expiry and duplicate delivery +PASS: actual original-roster local handoff,100m3D bound,busy carrier/budget exclusion,origin interruption including deletedsource,normal radio delivery and per-source replay history +PASS: actual visual intake retains source/time/position/id, rejects replay, prefers usable own route, excludes simultaneous callers and conservatively resets negative-sweep dwell +PASS: actual fixture local/radio gating, immutable source/time/position, interrupted-report exclusion and exact-owner cleanup +PASS: local-handoff runner refuses wrong project/round count/insufficient deadline before runtime work +PASS: actual fixture allocator terminal/unsubmitted guard, original-group lookup and both candidate gates +PASS: actual report-derived waypoint insertion/order and tighter positive radii; no formation navigation claim +PASS: actual Place/Stop waits native pose update, bounds four attempts, preserves original position, restores pending/settled placement and respects ownership/accepted-move quarantine +PASS: actual fixture current/original recipient ownership, unresolved transfer cleanup, exact-token release and idempotent Stop +PASS: actual authored storage anchors, native trace flags, own-hierarchy exclusion, external wall/vehicle obstruction, range, unknown geometry and bounded context refusal +PASS: actual stock capture, unique finite identities, original recipients, HQ reservations, delivered report replay/cooldown and failed-downlink cleanup +PASS: actual original turret identity, native/canonical guards, scoped >=80/>=100 profile, reset, dismount/reboard, requested-skill preservation and restoration +PASS: bounded150s startup followed by exactly one120s memory window; only HQ-memory outer deadline extended +PASS: actual read migrates old valid settings, preserves explicit disabled state, rejects invalid data; next-round feedback and fixed menu remain honest +PASS: actual automatic convoy timing/authority/admission/one-attempt/manual-task/stop policy; native deployment unproved +PASS: late authoritative failure reason refreshes open result; detach, mode change and success subscriptions preserved +infantry resupply actual rules, radio transitions, owned cleanup and unresolved-operation tests passed +PASS: actual resupply Roster preserves permanent release, original slot mapping and bounded ownership +PASS: actual single-item transfer, physical ownership/native callback proof, stop quarantine, compatibility and strict original actor/vehicle boundaries +PASS: actual early ammunition policy and status-first shared uplink; complete threshold, phases, cooldown, failures and requested check-ins +PASS: actual group radio startup preservation, finite native grants, callback quarantine, frozen selection/actor ownership and bounded observation +PASS: actual maintenance native-stock check rejects missing/duplicate/wrong-identity/unowned/depleted/malformed stock and is read-only; native runtime not executed +.................. +---------------------------------------------------------------------- +Ran 18 tests in 0.252s + +OK +PASS: actual radio node rejects current incapacitation, death, ownership and faction changes despite cached inventory; one-second capability refresh remains explicit +PASS: finite maintenance stock/resource identity, bounded scenario stock and preserved two-cache clue redundancy; native interaction not claimed +PASS: actual diagnostic fallback runs only on failed missing-context call, derives unique native pilot door, preserves stock eligibility and restores prior index on success/failure; diagnostics mutate no game state. +PASS: actual native-prelude cleanup restores only original changed damage, refuses stale/incapacitated/aboard teleport; bounded five-seat/four-door fixture wiring checked. Native execution remains pending. +PASS: actual CreateTransport requires successful scoped Configure after handbrake, preserves ordinary vehicles, tracks spawned entity before failures and never treats failed lock registration as ready. +PASS: actual preparation Configure guards/idempotence/breach preservation, security eligibility/final current-body server mutation and all scoped action guards; all five seat/four door resource overrides. Native hold, prefab merge, replication and boarding remain unverified. +PASS: actual convoy cover observation/snapshot/uplink/HOLD/RESUME/cleanup transitions; native boundaries mocked, non-convoy runner opt-in refused +Enemy optics actual-service ownership, preservation, callback, deadline and bounded-inspection policies passed +PASS: actual delivered cover freshness/lineage/replay and canonical executor; owned waypoint-only hold, one resume at preserved route index, invalid ownership/crew/ledger refusal and fail-closed native recreation +PASS: actual Stinger show/set/help state precise actor-roll effects; read-only help, bounded values, malformed syntax and failed-save preservation; no rerolls/gameplay edits and no native persistence claim +PASS: new/retasked search and radio delivery ammo gates; active tasks and delivered release preserved +HQ convoy delivered-report planning and downlink regressions passed +PASS: actual own-inventory ammo inspection deduplicates loaded/carried/shared wells, separates chambers/launchers, freezes scalar snapshots and treats unsupported/capped/foreign inventory as unknown +PASS: native body fixture uses existing immutable actors, real production LOS/queued uplink, pre-delivery isolation, actual status overlap, bounded cleanup and no fabricated reports/spawns +PASS: actual native fixture lookup selects exact BODY kind/identity/message from bounded evaluations, never sighting-only Get +PASS: actual ammo snapshot comparison checks every scalar/category flag; native probe requires real roster rescan, loaded-round lower bound and separate immutable pending/Watch objects +PASS: actual delivered slot-union bodies preserve overlap/disjoint evidence, replay idempotence, status subset integrity, full-wipe closure and formation-local bounds +test_review_added_allowed_media_invalidates_snapshot (__main__.ReviewTests.test_review_added_allowed_media_invalidates_snapshot) ... ok +test_review_added_source_directory_rejected (__main__.ReviewTests.test_review_added_source_directory_rejected) ... ok +test_review_loose_root_resource_and_symlink_rejected (__main__.ReviewTests.test_review_loose_root_resource_and_symlink_rejected) ... ok +test_review_metadata_media_and_sidecars_remain_allowed_and_bound (__main__.ReviewTests.test_review_metadata_media_and_sidecars_remain_allowed_and_bound) ... ok +test_review_missing_link_rejected (__main__.ReviewTests.test_review_missing_link_rejected) ... ok +test_review_package_guard_sees_new_scripts (__main__.ReviewTests.test_review_package_guard_sees_new_scripts) ... ok +test_review_retargeted_private_link_rejected (__main__.ReviewTests.test_review_retargeted_private_link_rejected) ... ok + +---------------------------------------------------------------------- +Ran 7 tests in 0.069s + +OK +PASS: actual report methods reproduce old starvation; status-first scheduler delivers check-ins and requires 30s without combat or actual visible contacts before negative reports +PASS: actual actor group lookup retains controlled character membership when seated/inherited vehicle agents differ; missing control or parent refuses +................. +---------------------------------------------------------------------- +Ran 17 tests in 2.601s + +OK +PASS: actual convoy motion thresholds, native-only proof boundaries, physical cargo/crew ownership and pre-launch runner restrictions +PASS: actual filled rotated-footprint TraceBox and nine terrain/water samples; broad tree/cable bounds alone accepted, actual collision/nonfinite trace refused, nonzero sweep and ENTS/OCEAN flags, bounded diagnostic query and reset +PASS: actual road interpolation/projection/orientation, six35m starts,200m forward tail, preserved bends, short/far/degenerate/nonfinite/overdense/hairpin refusal and deterministic candidate ties +PASS: actual authenticated convoy dispatch, active/ready admission gates, canonical receipt, safe unconsumed preflight retry, pool refusal, retained partial failure and consumed no-retry +PASS: actual native readiness exact membership, one-time per-vehicle ledger admission/reservation, partial readiness retry without duplicate records and one-pass56-item cargo allocation without replenishment +PASS: actual per-vehicle readiness reasons, native agent/activity counts, intended-seat diagnostics, five-second throttle and read-only observation +PASS: actual convoy dispatch validates before receipt consumption, consumes once before native mutation, retains all12 partial-failure paths, refuses implicit faction replacement, and allocates exact19 bodies without capacity shrinking +PASS: own memberless prefab disables automatic spawn before initialization; actual admission rejects populated, immediate or authored-slot templates before finite crew creation +PASS: actual native seated-group arrival outside35m, native waypoint removal, idempotent advance, and convoy waypoint idempotence/arrival/deadline, missing/dead/captured/reparented crew refusal, failed native waypoint release, original vehicle/member preservation and no replacement +PASS: actual convoy receipt identity/one-use, shared60-body and128-formation caps, outstanding/native-ledger accounting, exact19-body composition, source reuse, mode/client guards and no consumed receipt refunds +PASS: actual body observer enforces owned physical roster, local death-only candidates, native trace gating, budget/cadence/caps, immutable body-only snapshots, radio retries and confirmed suppression +PASS: own initial roster, explicit retained corpse evidence, unconscious/missing/ref transfer guards, fixed strength, no replacement adoption, detached samples and surviving radio sender requirement +PASS: delivered-only status snapshots, two missed check-ins/reply deadline, last reported coordinates, episode/replay guards, confirmed-loss idempotence and 128-record cap +PASS: actual assignment cancellation/release preserves radio ownership, native waypoint lifecycle and failed-order retry boundaries +PASS: actual force ledger, finite casualties/identity/cap, routes/arrival/elevation/overshoot, server and physical guards, staggered 128-record simulated hour without world queries +PASS: actual enemy eligibility, scoped native skill floor/reset/restoration, one-roll inventory issuance, completion/failure, timeout quarantine, actor capture and terminal stop; native inventory runtime unproven +PASS: actual equipment coordinator registration dedupe, startup delay, five member scans, finite component retries, unregister/stop terminal behavior and 128-group bound +PASS: actual objective heading/threat/approach rules, persistent doctrine weight, fresh-contact coverage invalidation, stale-sweep rejection and atomic radio retask ownership +PASS: actual bounded delivered-negative coverage, replay/freshness/expiry/invalid guards, oldest eviction, small-circle and nearest-unswept selection, reserved-cell exclusion and cleanup +PASS: actual bounded pursuit roles/objectives/scores, stale search degradation, physical/busy/home guards, finite lifetime and two-bearing escape gap; no hidden player reads or spawning +PASS: actual HQ memory rules/service preserve delivered snapshots, chronology, replay bounds, decay, motion limits, identity and negative-search revisions +....... +---------------------------------------------------------------------- +Ran 7 tests in 0.024s + +OK +PASS: actual session Tick + journal router delivers each grant completion and new HQ line once, without repeats on empty/unavailable feeds or unauthorized ticks +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.223s + +OK +PASS: actual current-controller/admin/mode authorization, per-round anti-replay, token-rotation refusal, command/snapshot throttles and client scope; owner-only replies and player-tool cleanup wiring +PASS: mission provider registration is idempotent, optional dispatch is ordered, status aggregates, journals preserve cursors, aliases stay with their addons and topic help is bounded +PASS: actual menu command routing covers all ten settings, rejects unsupported keys, gates companions, and matches unique authored widgets +PASS: actual admin body authorization, god restoration, vanilla item deposit, callback completion/failure, timeout quarantine and stop/revocation paths +PASS: same-body revoke/regrant preserves pending insertions and timeout quarantine; new-body binding isolates late callbacks and never inherits god mode +PASS: actual Intel commands distinguish status/start/failure, preserve authorization gate and reject malformed requests; spent ledger is idempotent, server-only and bounded +PASS: actual reroll snapshot, authority, cancellation, ownership, accepted operations, quarantine, bounded work and stop methods; no native runtime claim +PASS: production Intel feedback coalescing, rough secrecy, rate limit, bounded dedupe, local/remote delivery and round cleanup; native UI/RPC not exercised +PASS: actual per-squad bounded report selector rotates visible targets, survives ordering/turnover, records only queued attempts, and preserves radio intake ordering +PASS: actual action denial/clearing, server request failure, single submitted-result feedback, current rescuer identity and terminal/stop suppression; native UI/RPC pending +PASS: actual physical denial precedence and transport-seat occupancy/reservation/access/lock checks +PASS: actual initial admission exhaustion and ServerTick grace; new/pending/empty/controller/life guards, normal death preserved +...................... +---------------------------------------------------------------------- +Ran 22 tests in 0.282s + +OK +...................... +---------------------------------------------------------------------- +Ran 22 tests in 26.105s + +OK +.................. +---------------------------------------------------------------------- +Ran 18 tests in 2.631s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 2.075s + +OK +............... +---------------------------------------------------------------------- +Ran 15 tests in 1.122s + +OK +PASS: actual field result/braking observer and Chat dispatch rules; one finite fixed candidate, deferred callback failure and guarded cleanup; no native measurement +PASS: actual opt-in terrain audit records one fixed1681-point grid, preserves original survey refusal/success and exact no-allocation scope; malformed heights stop without retry; no native data acquired +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.592s + +OK +PASS: actual field PI/ramp/vector caps, antiwindup, braking hypothesis, immutable admission limits and segment bounds; no native physics tested +PASS: actual100m whole-field survey sampling/4096cap, rotated coverage, all-node terrain and native trace refusal; original certificate lineage retained; no native qualification +PASS: actual QualifyField preserves original identity/footprint/time, orders complete surveys before issuance, and refuses failed stages/moved body/expired or changed world; native boundaries faked +PASS: WORKBENCH first-refusal diagnostics preserve ordinary predicates, query order/count/budget and opt-in scope; no native logging run +PASS: actual field startup delegation, immutable lease/target, braking/settling/cancel transitions, early abort, callback scope, physical terminal policy and shared landing demand; native boundaries faked +PASS: actual inherited airborne pre-CLIMB cancellation enables verified native autohover once, refuses failed enable and never writes after capture +PASS: actual Core maintenance/default/tick/stop methods; empty/populated authority, terminal reentry, no tactical resume or new scheduler; native boundaries substituted +PASS: actual finite registration, unique claims/tokens, retention/cancel/stop, readiness gating, capture/expiry retirement and bounded cross-kind order history and typed field/route construction; native boundaries faked +PASS: actual WORKBENCH route observer returns exact retained route subtype and refuses absent/field controllers +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.663s + +OK +...................... +---------------------------------------------------------------------- +Ran 22 tests in 0.169s + +OK +................ +---------------------------------------------------------------------- +Ran 16 tests in 9.794s + +OK +...... +---------------------------------------------------------------------- +Ran 6 tests in 0.016s + +OK +PASS: actual production bridge lookup, lease/world/mode/seat/capture guards, no allocation, native super ordering and read-only fixture hooks +............... +---------------------------------------------------------------------- +Ran 15 tests in 0.050s + +OK +............. +---------------------------------------------------------------------- +Ran 13 tests in 4.429s + +OK +PASS: actual route gain/caps/braking, callback selection, old landing/cancellation control and matching read-only telemetry +.............................. +---------------------------------------------------------------------- +Ran 30 tests in 0.444s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 0.192s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.108s + +OK +PASS: actual gate observer binds native registered action/context and current life, reads accumulated progress, refuses stale bindings and never revives outside original bounds +PASS: actual read-only look observer methods enforce explicit scope, pinned native camera/body/identity, normalized pose, terminal cancellation and original sample/time bounds +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.062s + +OK +....................... +---------------------------------------------------------------------- +Ran 23 tests in 0.036s + +OK +PASS: actual initial WAITING task/guide copy, configured duration, unchanged interruption and rounded progress; native task assertion pending +........ +---------------------------------------------------------------------- +Ran 8 tests in 0.012s + +OK +PASS: actual inventory adapter scope, grid placement, sole compatible host, refresh reuse, rollback, foreign hierarchy refusal and exactly-once native delegation; native compatibility pending +................................................................................. +---------------------------------------------------------------------- +Ran 81 tests in 0.535s + +OK +...... +---------------------------------------------------------------------- +Ran 6 tests in 0.070s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 0.002s + +OK +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.068s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.311s + +OK +PASS: actual observer nonce, admission pins, baseline/menu sequencing, snapshots, bounded clocks/samples, cleanup and one-attempt latch; native untested +PASS: actual corridor caps/height/hold and whole-rectangle survey bounds, terrain refusal, native trace refusal and exact certificate lineage; native route unqualified +PASS: actual route entry, fixed corridor/target, hover hold, cancellation landing freeze, shared lease/capture/deadline gate and unchanged native startup/tick sequence +PASS: finite opt-in route fixture, original native input order, meaningful physical-arrival evidence and guarded cleanup; no native launch +PASS: actual Chat route step result dispatch and scoped completion/cleanup wiring; six real early-parser refusal paths leave no prefix/profile output +PASS: actual retained-service fixture entry, immutable controller/token/deadline/count bindings, observer getter and cleanup ownership ordering; native route validation pending +PASS: actual measured cancellation gate, one-shot retained service Stop, no premature drain, immutable lease, fresh real controller readback and separate physical cancellation result policy +PASS: actual rough-intel objective selection, exact precedence, source grid dimensions and unchanged other-phase dispatch; native UI pending +................................. +---------------------------------------------------------------------- +Ran 33 tests in 0.098s + +OK +............... +---------------------------------------------------------------------- +Ran 15 tests in 0.029s + +OK +PASS: actual preparation status scope, persistent updates, spinner restoration, placeholder replacement/deletion/destruction, native observation persistence/timeout; rendering remains native-pending +PASS: actual guide/observer monitors retry native refusal, cache successful delivery, deduplicate and preserve living/preparing/spectator boundaries; native UI not exercised +PASS: actual native-end shutdown, existing terminal snapshots, reentrancy, unchanged native end data and stale preparation guards +.... +---------------------------------------------------------------------- +Ran 4 tests in 1.307s + +OK +PASS: actual three-state result wording and UI refresh; stale winner IDs never manufacture escape +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.100s + +OK +PASS: actual immutable target, bounded autohover demand, drift refusal, five-second hold and unchanged qualification/deadline +PASS: actual admission attempt budget bounds blocked/missing prerequisites; preparation, spent life and async pending remain protected +PASS: actual action permission matrix unchanged; useful phase/intel/consciousness denials, stale reason cleared, native door denial preserved; no native UI claim +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.202s + +OK +PASS: actual aircraft cancellation/stage rules, ground-only completion, expiry/capture faults, input ownership and no physical shortcuts +PASS: actual exact-instance single-use qualification, native-clock staleness/movement refusal, footprint bounds and ownership-safe ground/fault cleanup +PASS: actual optional screenshot helper flag/identity/world/life revalidation, one queued attempt, delayed capture and mission/world cleanup; no native image/presentation claim +PASS: actual yard diagnostic exact registered prison ownership, eight native-bound corner projections, no root-sibling escape, bounded duplicate/deep/wide hierarchy traversal; native projection/mask still unmeasured +PASS: actual CurrentActor, SpawnPosition and observer-selection methods reject pending/unregistered/replaced/recycled/foreign/dead bodies; canonical selection/cycling, unconscious following and prison/geometry fallback preserved; native boundaries adapted +PASS: actual native-map fixture ownership, cleanup and callback evidence fail closed; native execution remains separate +PASS: actual shared-map callbacks bind exact map/config/root, preserve replacement UI/camera, defer focus, and remove only owned delayed work +PASS: actual Intel/HQ methods and one-shot qualified readiness handoff deliver late actors once; duplicate readiness, accepted spawn, pickup/drop, death and original negative rolls do not mint assignments +PASS: Workbench-only read accessor rejects unknown/nonserver identities; Chat observes all distinct ready crew before existing shell-depletion mutation +PASS: actual native-event latch survives deselection, requires exact activity/order, detaches before cleanup, preserves failure/timeout and never infers completion from physical shot count +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.098s + +OK +PASS: actual refresh-fixture gates pin immutable observations/actual downlinks/original activity, reject unaccepted or relabelled commits, stop queueing early and require all queued contacts claimed before replay +.......................... +---------------------------------------------------------------------- +Ran 26 tests in 0.187s + +OK +PASS: actual refresh scheduler/delivery/cancellation/projectile methods reject interrupted or replayed reports, retain committed ownership, preserve immutable snapshots/aim geometry and isolate stopped or replaced orders; native radio/crew behavior remains separate +..................... +---------------------------------------------------------------------- +Ran 21 tests in 0.030s + +OK +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.031s + +OK +PASS: actual full-salvo gates require eight fresh committed physical launches, natural closure and exact finite inventory; reject partial/extra/replayed events +PASS: actual reason/availability guidance and refresh matrix; no-target copy omits cycling, hint retry retained, existing command/admin paths unchanged; native UI pending +................usage: test_native_package.py [-h] [--project {core}] --session SESSION + --compat COMPAT [--steam STEAM] + [--timeout TIMEOUT] + [--external-addons EXTERNAL_ADDONS] + [--silent-workbench | --exit-after-init] + [--continue-on-failure] +test_native_package.py: error: argument --exit-after-init: not allowed with argument --silent-workbench +................................ +---------------------------------------------------------------------- +Ran 48 tests in 7.911s + +OK +....... +---------------------------------------------------------------------- +Ran 7 tests in 0.209s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 1.434s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.296s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.053s + +OK +PASS: actual finite-courier age, token, exact ownership/callback and delivered-status admission reject stale, replayed, captured, canceled and ambiguous work +PASS: actual native-gun ownership gate rejects player/foreign/replaced/dead occupant, faction change, missing seat and missing registry +PASS: 64 bounded distinct storage candidates; native gates, five-store barrier and finite-stock ownership retained; native placement pending +PASS: 128 coarse+80 local refinement+169 airport grid candidates retain all native clearance gates; real terrain untested +PASS: actual prison registration/crossing policies reject missing/duplicate/destroyed initial gate, incomplete ownership/scan, outside-only body, jumps and stale samples; physical exit independent of later gate damage +PASS: actual prison door execution blocks direct AI/UI bypass while locked and delegates unchanged native action once after unlock and permission approval +.................. +---------------------------------------------------------------------- +Ran 18 tests in 1.905s + +OK +..... +---------------------------------------------------------------------- +Ran 5 tests in 1.084s + +OK +PASS: native local-admission snapshot rejects changed life/key/body/participant/pending state; authentication is not simulated +PASS: actual mortar report ledger prevents duplicate response after cancellation, expiry and interleaved reports; native scheduler separate +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.012s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.136s + +OK +PASS: actual aim renewal requires fresh same-report solve and original-command equivalence; native firing untested +........ +---------------------------------------------------------------------- +Ran 8 tests in 0.013s + +OK +PASS: actual startup/generation/ownership/timeout/callback policies and native-counter wait; integration preserves one-shot allocation and pending-crew cancellation +PASS: actual probe binds native events to fresh immutable commits, permits delayed emission, rejects unrelated expiry closure and premature stop +PASS: actual noSplash Load body requires both explicit diagnostic and noSplash, preserves vanilla otherwise, and handles repeated Load/reload +PASS: actual fixture method permits one native resilience operation and restores either prior protection state, including failure paths +PASS: actual safe-exit boundary policy, native action/door selection, stop/cache cleanup, separate old mechanism and opt-in runner contracts +PASS: actual one-shot deadline/stability policies and preparation ownership, fuel, cleanup integration contracts +PASS: pending-only cancellation retires copied instance intent, preserves physical/control actors, and stops once +PASS: actual short-cast hit, upward support normal, no self support and no dynamic support +PASS: actual committed-ticket structure preserves reservation after death, rejects missing bodies/seats and ends at observation expiry +PASS: actual pending callback expires an empty-server reservation once, preserves its full lease, and cancels on completion/Stop +PASS: rescue lease expiry/reordering, fresh five-second settling, independent rescue ranges and grounded upright aircraft motion boundaries +PASS: requested guard population requires complete physical conscious membership before deadline +.................................... +---------------------------------------------------------------------- +Ran 36 tests in 0.016s + +OK +.......... +---------------------------------------------------------------------- +Ran 10 tests in 0.002s + +OK +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.907s + +OK +PASS: authored radio/optional-site bounds and physical horizontal/vertical boundaries +... +---------------------------------------------------------------------- +Ran 3 tests in 0.001s + +OK +PASS: all phase transitions, terminal states, defence boundaries, stale/future observations, intel discovery +PASS: Core document-discovery alias, companion-only alias exclusion, strict integer parsing and setting boundaries +PASS: player admission phase/life/identity/controller matrix, preload displacement limits, pending reservation overlap and owner exclusion +PASS: actual gate and pre-inventory document guards reject noncanonical/faction/life/disconnect/server mismatches; canonical reconnect and unconscious carried intel preserved +PASS: WB-only native fault injection restores both body mutations before checks/returns and requires eligible held-document negative/positive proof; runtime pending +PASS: actual discovery coordinates disclose stable 500m cell center until identified, then exact point, including negative/boundary coordinates +PASS: actual local admission context/selection/latch, same-round late identity, replacement/mode failure, fresh round and untouched network path +PASS: prison search packs 16 unique 3m-spaced inside-wall centers, prioritizes inner/edge positions and never bypasses clearance +PASS: recovery state excludes dead bodies, preserves reservations, requires controlled rescuers and distinguishes empty/all-dead teams +PASS: every minute round-trips, malformed clocks rejected, defaults limited to added keys, progression bounds and day duration aligned +PASS: native settings policy matches calendar boundaries 1900-2050, date/profile parsing is strict, authored defaults preserve old worlds +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.580s + +OK +. +---------------------------------------------------------------------- +Ran 1 test in 0.339s + +OK +PASS: radio authorization/discovery/phase matrix, exact distance limits, defender handover, interruption, empty samples, clock regression and duration boundary +PASS: actual radio feedback policy, initial wait, interruption persistence, resumption and terminal/new-round reset +............... +---------------------------------------------------------------------- +Ran 15 tests in 2.102s + +OK +.............................................. +---------------------------------------------------------------------- +Ran 46 tests in 0.847s + +OK +PASS: legacy values preserved, unsupported fields reported, invalid data rejected, existing files protected, runtime bounds aligned +PASS: real-carrier shortest-hop paths, 500m boundary, three-hop cap, no-manpack failure, three-second originating-call interruption, unchanged downlink hop timing, completed-hop survival, interrupted final uplink, radio loss, capture, motion, timeout, reset and network bounds +PASS: migrated aircraft availability policy (controller migration still pending) +PASS: migrated salvo offsets are deterministic, spread and bounded (native firing and complete salvo qualification are separate) +PASS: 20 prefabs have unique saved root entity IDs +PASS: 299 original script entries tracked across 18 unfinished responsibilities +PASS: 1 isolated addons, acyclic dependencies, 34 unique resources, exact vanilla/authorized external references +All repository checks passed. Native compilation and multiplayer tests are separate requirements. diff --git a/docs/evidence/native-2026-09-20-prison-opening/runner.json.txt b/docs/evidence/native-2026-09-20-prison-opening/runner.json.txt new file mode 100644 index 0000000..53810c3 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/runner.json.txt @@ -0,0 +1,32 @@ +{ + "source_provenance": "launch_snapshot", + "launch_id": "18bd73da-e52c-4fed-874b-39f952f0d4fa", + "launch_source_manifest": "launch-source-sha256.json", + "launch_source_metadata": "launch-source.json", + "launch_source_sha256": "0bc899c81fcedc40d43615a04ce7d6ecaf6d2e7d7e61d38ae0ec216ba2b5f999", + "external_addons_unchanged_after_run": true, + "external_addon_count": 6, + "external_addon_inputs": "external-addons-inputs.json", + "started_unix": 1789912552.092343, + "result": "cleanup-failed", + "result_before_cleanup": "smoke-completed", + "cleanup_confirmed": false, + "cleanup_report": { + "cleanup_confirmed": false, + "idle_verified": false, + "errors": [ + "idle verification: Cannot verify disposable prefix is idle (PID 882038): Cannot classify possible Wine/runtime process 882038 (comm='enfMain', argv0='')" + ], + "orphan_cleanup": { + "attempted": false, + "reason": "noncanonical-private-prefix" + } + }, + "runner_error": "idle verification: Cannot verify disposable prefix is idle (PID 882038): Cannot classify possible Wine/runtime process 882038 (comm='enfMain', argv0='')", + "session": "/tmp/erri-prison-original-victory2-20260920/logs/logs_2026-09-20_15-55-53", + "rounds_required": 1, + "project": "chat", + "display": "headless Gamescope 1280x720/30Hz", + "dedicated_server": false, + "audio": "silent sink and per-test-stream mute" +} diff --git a/docs/evidence/native-2026-09-20-prison-opening/script.log.txt b/docs/evidence/native-2026-09-20-prison-opening/script.log.txt new file mode 100644 index 0000000..51aad4b --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/script.log.txt @@ -0,0 +1,420 @@ +--------------------------------------------- +Log Z:\tmp\erri-prison-original-victory2-20260920\logs\logs_2026-09-20_15-55-53\script.log started at 2026-09-20 15:55:56 (2026-09-20 13:55:56 UTC) + +15:55:56.406 SCRIPT : SCRIPT : Initializing scripts +15:55:56.406 SCRIPT : SCRIPT : ScriptProjectManager init +15:55:58.220 SCRIPT : SCRIPT : Compiling GameLib scripts +15:55:58.268 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +15:55:58.268 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +15:55:58.269 SCRIPT : SCRIPT : Compiling Game scripts +15:55:59.428 SCRIPT : Compiling Game scripts +15:55:59.428 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +15:55:59.428 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +15:55:59.737 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,223": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:55:59.747 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +15:55:59.784 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +15:55:59.894 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +15:55:59.918 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:55:59.927 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +15:55:59.991 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +15:55:59.991 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +15:55:59.992 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +15:56:00.024 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.042 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.042 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.044 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +15:56:00.044 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +15:56:00.070 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +15:56:00.096 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +15:56:00.475 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 198cfb22 +15:56:00.482 SCRIPT : Module: Game; loaded 6508x files; 13193x classes; used 39272K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: 7be5a624 +15:56:01.532 SCRIPT : Unable to register a script command due keyword duplicity: ban +15:56:01.532 SCRIPT : Unable to register a script command due keyword duplicity: kick +15:56:20.256 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +15:56:20.256 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +15:56:20.257 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +15:56:20.258 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +15:56:20.280 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +15:56:23.171 SCRIPT : Unable to register a script command due keyword duplicity: ban +15:56:23.171 SCRIPT : Unable to register a script command due keyword duplicity: kick +15:56:36.172 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +15:56:36.196 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +15:56:40.607 SCRIPT : Map load time: 2235ms +15:56:40.615 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +15:56:40.615 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +15:56:40.617 SCRIPT (W): Can't open config file "" +15:56:40.623 SCRIPT (W): Slot_WeaponInfo Has no Content! +15:56:40.623 SCRIPT (W): Slot_Chat Has no Content! +15:56:40.623 SCRIPT (W): Slot_VON Has no Content! +15:56:40.623 SCRIPT (W): Slot_AvailableActions Has no Content! +15:56:40.624 SCRIPT (W): Slot_Vehicle Has no Content! +15:56:40.624 SCRIPT (W): Slot_GameVersion Has no Content! +15:56:40.624 SCRIPT (W): Slot_Notifications Has no Content! +15:56:40.624 SCRIPT (W): Slot_Hints Has no Content! +15:56:40.636 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +15:56:40.637 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +15:56:40.640 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +15:56:40.689 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +15:56:40.702 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +15:56:40.870 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:42.329 SCRIPT : Reintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +15:56:42.360 SCRIPT : Reintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +15:56:42.361 SCRIPT : Reintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +15:56:42.403 SCRIPT : Reintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +15:56:42.405 SCRIPT : Reintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +15:56:42.464 SCRIPT : Reintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +15:56:42.465 SCRIPT : Reintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +15:56:42.478 SCRIPT : Reintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +15:56:42.541 SCRIPT : Reintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +15:56:42.541 SCRIPT : Reintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +15:56:42.544 SCRIPT : Reintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +15:56:42.544 SCRIPT : Reintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +15:56:42.551 SCRIPT : Reintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +15:56:42.552 SCRIPT : Reintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +15:56:42.553 SCRIPT : Reintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +15:56:42.554 SCRIPT : Reintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +15:56:42.555 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +15:56:42.555 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +15:56:42.555 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +15:56:42.555 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +15:56:42.555 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +15:56:42.556 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +15:56:42.556 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +15:56:42.556 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +15:56:42.556 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +15:56:42.556 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +15:56:42.557 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +15:56:42.557 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +15:56:42.557 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.557 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.557 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.558 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.558 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:42.558 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +15:56:43.419 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.420 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.420 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.420 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.663 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.09,63.5472,7499.71> up=0.995555 +15:56:43.664 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.364426 angularSpeed=0.073304 +15:56:43.664 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +15:56:43.664 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.617,7501.98> +15:56:43.664 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.317,7501.98> terrainY=63.315 tireTerrainGap=0.00205231 +15:56:43.665 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.617,7501.98> radius=0.3 bottom=<7012.07,63.317,7501.98> fraction=0.464126 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00210953 +15:56:43.665 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.6006,7497.71> +15:56:43.665 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.1506,7497.71> terrainY=64.1535 tireTerrainGap=-0.00285339 +15:56:43.665 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.6006,7497.71> radius=0.45 bottom=<7009.89,64.1506,7497.71> fraction=0.441704 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00282288 +15:56:43.665 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.44,64.2644,7497.76> +15:56:43.666 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.44,63.8144,7497.76> terrainY=63.8171 tireTerrainGap=-0.00271988 +15:56:43.666 SCRIPT : ERR GEAR SUPPORT: center=<7014.44,64.2644,7497.76> radius=0.45 bottom=<7014.44,63.8144,7497.76> fraction=0.441944 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00277328 +15:56:43.666 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:43.922 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:43.922 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:43.922 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:43.922 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +15:56:44.422 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:44.423 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:44.423 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:44.674 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.11,63.5278,7499.72> up=0.994249 +15:56:44.674 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0859798 angularSpeed=0.0382068 +15:56:44.674 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +15:56:44.674 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6192,7501.99> +15:56:44.674 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3192,7501.99> terrainY=63.3139 tireTerrainGap=0.00529099 +15:56:44.675 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6192,7501.99> radius=0.3 bottom=<7012.08,63.3192,7501.99> fraction=0.478992 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00537872 +15:56:44.675 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.94,64.6002,7497.72> +15:56:44.675 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.94,64.1502,7497.72> terrainY=64.1474 tireTerrainGap=0.00287628 +15:56:44.675 SCRIPT : ERR GEAR SUPPORT: center=<7009.94,64.6002,7497.72> radius=0.45 bottom=<7009.94,64.1502,7497.72> fraction=0.468312 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00302887 +15:56:44.675 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.48,64.2653,7497.79> +15:56:44.675 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.48,63.8153,7497.79> terrainY=63.815 tireTerrainGap=0.000286102 +15:56:44.676 SCRIPT : ERR GEAR SUPPORT: center=<7014.48,64.2653,7497.79> radius=0.45 bottom=<7014.48,63.8153,7497.79> fraction=0.455556 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=0.000221252 +15:56:44.676 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:44.676 SCRIPT : Reintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +15:56:44.931 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:44.931 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +15:56:44.931 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:44.932 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:45.445 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:45.445 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:45.446 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:45.446 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:45.687 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5334,7499.75> up=0.994073 +15:56:45.687 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0431915 angularSpeed=0.0399238 +15:56:45.688 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +15:56:45.688 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.615,7502.02> +15:56:45.688 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.315,7502.02> terrainY=63.3109 tireTerrainGap=0.00405502 +15:56:45.688 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.615,7502.02> radius=0.3 bottom=<7012.09,63.315,7502.02> fraction=0.473011 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00406265 +15:56:45.688 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5909,7497.73> +15:56:45.688 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1409,7497.73> terrainY=64.1407 tireTerrainGap=0.000175476 +15:56:45.689 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5909,7497.73> radius=0.45 bottom=<7009.98,64.1409,7497.73> fraction=0.455107 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00012207 +15:56:45.689 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2589,7497.83> +15:56:45.689 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8089,7497.83> terrainY=63.8123 tireTerrainGap=-0.00338364 +15:56:45.689 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2589,7497.83> radius=0.45 bottom=<7014.52,63.8089,7497.83> fraction=0.439167 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00338364 +15:56:45.689 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:45.950 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:45.951 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +15:56:45.951 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:45.951 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:46.459 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.460 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.460 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.460 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.710 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5277,7499.77> up=0.994326 +15:56:46.711 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +15:56:46.711 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +15:56:46.711 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6102,7502.04> +15:56:46.711 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3102,7502.04> terrainY=63.3095 tireTerrainGap=0.000751495 +15:56:46.711 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6102,7502.04> radius=0.3 bottom=<7012.09,63.3102,7502.04> fraction=0.457835 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000724792 +15:56:46.712 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.99,64.5915,7497.74> +15:56:46.712 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.99,64.1415,7497.74> terrainY=64.1387 tireTerrainGap=0.00279236 +15:56:46.712 SCRIPT : ERR GEAR SUPPORT: center=<7009.99,64.5915,7497.74> radius=0.45 bottom=<7009.99,64.1415,7497.74> fraction=0.467452 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00283813 +15:56:46.712 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.53,64.2594,7497.85> +15:56:46.712 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.53,63.8094,7497.85> terrainY=63.8111 tireTerrainGap=-0.00169754 +15:56:46.712 SCRIPT : ERR GEAR SUPPORT: center=<7014.53,64.2594,7497.85> radius=0.45 bottom=<7014.53,63.8094,7497.85> fraction=0.446667 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00173187 +15:56:46.712 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:46.972 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +15:56:46.972 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:46.973 SCRIPT : Reintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:46.973 SCRIPT : Reintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.477 SCRIPT : Reintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.477 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +15:56:47.477 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.728 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.14,63.5277,7499.77> up=0.994326 +15:56:47.728 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +15:56:47.728 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +15:56:47.728 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.09,63.6102,7502.04> +15:56:47.728 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.09,63.3102,7502.04> terrainY=63.3095 tireTerrainGap=0.000751495 +15:56:47.728 SCRIPT : ERR GEAR SUPPORT: center=<7012.09,63.6102,7502.04> radius=0.3 bottom=<7012.09,63.3102,7502.04> fraction=0.457835 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000724792 +15:56:47.729 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.99,64.5915,7497.74> +15:56:47.729 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.99,64.1415,7497.74> terrainY=64.1387 tireTerrainGap=0.00279236 +15:56:47.729 SCRIPT : ERR GEAR SUPPORT: center=<7009.99,64.5915,7497.74> radius=0.45 bottom=<7009.99,64.1415,7497.74> fraction=0.467452 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00283813 +15:56:47.729 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.53,64.2594,7497.85> +15:56:47.729 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.53,63.8094,7497.85> terrainY=63.8111 tireTerrainGap=-0.00169754 +15:56:47.729 SCRIPT : ERR GEAR SUPPORT: center=<7014.53,64.2594,7497.85> radius=0.45 bottom=<7014.53,63.8094,7497.85> fraction=0.446667 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00173187 +15:56:47.730 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +15:56:47.982 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.982 SCRIPT : Reintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +15:56:47.983 SCRIPT : Reintroduced [sites]: 7 sites and 122 physical stock items ready +15:56:48.001 SCRIPT : Reintroduced [environment]: date=authored weather=authored +15:56:48.002 SCRIPT : Reintroduced [time]: started at 14:00 with 1x progression +15:56:48.002 SCRIPT : Reintroduced [mission]: phase 0 -> 1 +15:56:48.002 SCRIPT : Reintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +15:56:48.002 SCRIPT : Reintroduced [prison]: gate candidate raw= resolved={67F17696FF278AE0}Prefabs/Structures/BuildingParts/Doors/Door_Metal_A_RIGHT_EXT_COV_B.et lock=1 door=1 position=<6089.34,211.444,7154.05> +15:56:48.002 SCRIPT : Reintroduced [prison]: one intact successor lock in owned prison +15:56:48.961 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +15:56:48.994 SCRIPT : Reintroduced [spawn scene]: player=1 token=1 waiting for 41 replicated objects +15:56:48.994 SCRIPT : Reintroduced [spawn scene]: client token=1 waiting for 41 replicated objects +15:56:49.070 SCRIPT : Reintroduced [spawn scene]: client token=1 all 41 replicated objects present +15:56:49.148 SCRIPT : ERR SMOKE PASS: native spawn preload retains preparation text after server sites are ready +15:56:49.967 SCRIPT : Reintroduced [spawn]: player 1 at <6088.5,211.39,7158.5> +15:56:50.157 SCRIPT : ERR SMOKE PASS: prisoner admitted only after enabled native spawn preload finishes +15:56:50.157 SCRIPT : ERR SMOKE PASS: new identity may enter prison +15:56:50.157 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +15:56:50.157 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +15:56:50.158 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +15:56:50.158 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +15:56:50.158 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +15:56:50.158 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +15:56:50.158 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +15:56:50.159 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +15:56:50.160 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +15:56:50.160 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +15:56:50.161 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +15:56:50.163 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +15:56:50.164 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +15:56:50.164 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +15:56:50.164 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +15:56:50.167 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +15:56:50.167 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +15:56:50.168 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +15:56:50.168 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +15:56:50.168 SCRIPT : ERR SMOKE PASS: initial prisoner position +15:56:50.168 SCRIPT : ERR SMOKE PASS: radio and extraction vehicle exist +15:56:50.168 SCRIPT : ERR SMOKE PASS: authored gate exposes lock action +15:56:50.169 SCRIPT : ERR PRISON AI: checked=36 active=0 +15:56:50.169 SCRIPT : ERR SMOKE PASS: physical enemies stay inactive until prison lockpick +15:56:50.169 SCRIPT : ERR GEOMETRY: gate low=<6089.32,211.443,7153.9> high=<6090.65,213.821,7154.12> +15:56:50.169 SCRIPT : ERR GEOMETRY: child origin=<6090,211.444,7160> low=<6090,211.444,7160> high=<6090,211.444,7160> +15:56:50.169 SCRIPT : ERR GEOMETRY: child origin=<6090,211.444,7154> low=<6089.26,211.443,7153.96> high=<6090.74,213.918,7154.08> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6090.72,211.444,7153.96> low=<6090.72,210.641,7153.83> high=<6093.72,214.409,7154.09> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6093,211.444,7154> low=<6093,210.641,7153.87> high=<6096,214.409,7154.13> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6086.28,211.444,7153.96> low=<6086.28,210.641,7153.83> high=<6089.28,214.409,7154.09> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7154> low=<6084,210.641,7153.87> high=<6087,214.409,7154.13> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6096,211.444,7163> low=<6095.87,210.641,7163> high=<6096.13,214.409,7166> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7163> low=<6083.87,210.641,7163> high=<6084.13,214.409,7166> +15:56:50.170 SCRIPT : ERR GEOMETRY: child origin=<6096,211.444,7160> low=<6095.87,210.641,7160> high=<6096.13,214.409,7163> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7160> low=<6083.87,210.641,7160> high=<6084.13,214.409,7163> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6096,211.444,7157> low=<6095.87,210.641,7157> high=<6096.13,214.409,7160> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7157> low=<6083.87,210.641,7157> high=<6084.13,214.409,7160> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6096,211.444,7154> low=<6095.87,210.641,7154> high=<6096.13,214.409,7157> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7154> low=<6083.87,210.641,7154> high=<6084.13,214.409,7157> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6093,211.444,7166> low=<6093,210.641,7165.87> high=<6096,214.409,7166.13> +15:56:50.171 SCRIPT : ERR GEOMETRY: child origin=<6090,211.444,7166> low=<6090,210.641,7165.87> high=<6093,214.409,7166.13> +15:56:50.172 SCRIPT : ERR GEOMETRY: child origin=<6087,211.444,7166> low=<6087,210.641,7165.87> high=<6090,214.409,7166.13> +15:56:50.172 SCRIPT : ERR GEOMETRY: child origin=<6084,211.444,7166> low=<6084,210.641,7165.87> high=<6087,214.409,7166.13> +15:56:50.172 SCRIPT : ERR SMOKE PASS: lock permits prisoner +15:56:50.172 SCRIPT : Reintroduced [mission]: phase 1 -> 2 +15:56:50.174 SCRIPT : ERR SMOKE PASS: lock action advances mission +15:56:50.174 SCRIPT : ERR PRISON AI: checked=36 active=1 +15:56:50.174 SCRIPT : ERR SMOKE PASS: lockpick reactivates the existing physical enemies +15:56:50.174 SCRIPT : ERR SMOKE PASS: two guaranteed physical cache documents +15:56:50.177 SCRIPT : ERR SMOKE PASS: test does not rely on random intel +15:56:50.183 SCRIPT : ERR SMOKE PASS: isolated test profile defence duration +15:56:50.665 SCRIPT : ERR SMOKE PASS: authored cache document recovered into inventory +15:56:50.982 SCRIPT : Reintroduced [intel]: player 1 recovered folder; location=everon-radio-1 knowledge=1 +15:56:53.198 SCRIPT : ERR SMOKE PASS: unlocked gate physically permits passage +15:56:53.198 SCRIPT : ERR SMOKE PASS: authored cache document recovered into inventory +15:56:54.022 SCRIPT : Reintroduced [intel]: player 1 recovered folder; location=everon-radio-1 knowledge=2 +15:56:55.743 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.743 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.744 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.744 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.744 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.745 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.745 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.746 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.746 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:55.747 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:56:56.244 SCRIPT : ERR SMOKE PASS: admin integration real owner RPC opens menu and returns current settings/capabilities +15:56:59.280 SCRIPT : ERR SMOKE PASS: admin integration background polling preserves editable draft +15:57:00.799 SCRIPT : ERR SMOKE PASS: admin integration native Apply control routes and saves only requested setting +15:57:02.823 SCRIPT : ERR SMOKE PASS: admin integration test setting restored without resetting menu drafts +15:57:05.870 SCRIPT : ERR ADMIN JOURNAL TEXT: lines=58 chars=6531 bounds=153.833,-128.333,188.333,273.75 +15:57:05.870 SCRIPT : ERR ADMIN JOURNAL VIEWPORT: bounds=152.167,64.5833,195,83.3333 +15:57:05.870 SCRIPT : ERR ADMIN JOURNAL FOLLOW: slider=0,1 overflow=190.417 +15:57:05.870 SCRIPT : ERR SMOKE PASS: admin integration HQ capability and journal page remain within current mission services +15:57:07.399 SCRIPT : ERR SMOKE PASS: admin integration dialog closes and authenticated god command affects current body +15:57:08.914 SCRIPT : ERR SMOKE PASS: admin integration god off restores exact prior damage state +15:57:08.914 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.915 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.916 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.917 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.917 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.918 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:08.918 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +15:57:10.945 SCRIPT : ERR SMOKE PASS: admin integration repeated open works and denied snapshot closes dialog +15:57:10.945 SCRIPT : ERR SMOKE PASS: reroll cache group is ready +15:57:10.946 SCRIPT : ERR SMOKE PASS: reroll observes original living cache guards +15:57:10.946 SCRIPT : ERR SMOKE PASS: unauthorized reroll cannot start a batch +15:57:10.949 SCRIPT : ERR SMOKE PASS: native reroll captured chance configured +15:57:10.950 SCRIPT : ERR SMOKE PASS: administrator starts one batch; overlapping reroll rejected +15:57:10.952 SCRIPT : ERR SMOKE PASS: live setting change does not alter captured batch chance +15:57:30.268 SCRIPT : ERR INTEL REROLL: Intel reroll complete at 100 percent: 40/40 AI processed, 0 failed, 0 skipped. +15:57:30.269 SCRIPT : ERR SMOKE PASS: native inventory reroll completes without failed operations +15:57:30.269 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.269 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.269 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.269 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.269 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.270 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.270 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.270 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.270 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.271 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.271 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:30.271 SCRIPT : ERR SMOKE PASS: captured 100 percent batch assigns one native folder despite live zero setting +15:57:30.271 SCRIPT : ERR SMOKE PASS: reroll preserves player's exact collected clue documents +15:57:30.271 SCRIPT : ERR SMOKE PASS: reroll preserves player's exact collected clue documents +15:57:30.271 SCRIPT : ERR SMOKE PASS: reroll preserves already identified radio +15:57:30.272 SCRIPT : ERR SMOKE PASS: next independent batch uses current zero probability +15:57:55.198 SCRIPT : ERR INTEL REROLL: Intel reroll complete at 0 percent: 59/59 AI processed, 0 failed, 0 skipped. +15:57:55.199 SCRIPT : ERR SMOKE PASS: native inventory reroll completes without failed operations +15:57:55.199 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.199 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.199 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.200 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.200 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.200 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.200 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.200 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.200 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.201 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.201 SCRIPT : ERR SMOKE PASS: original cache guard survives the reroll fixture +15:57:55.201 SCRIPT : ERR SMOKE PASS: zero percent reroll removes original native AI folders without replacements +15:57:55.201 SCRIPT : ERR SMOKE PASS: reroll preserves player's exact collected clue documents +15:57:55.201 SCRIPT : ERR SMOKE PASS: reroll preserves player's exact collected clue documents +15:57:55.201 SCRIPT : ERR SMOKE PASS: reroll preserves already identified radio +15:57:55.201 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: retired native document remains spent and owned for round cleanup +15:57:55.202 SCRIPT : ERR SMOKE PASS: carried intel identifies radio through intel service +15:57:55.202 SCRIPT : ERR SMOKE PASS: radio rejects distant player +15:57:56.207 SCRIPT : ERR SMOKE: radio=<6500,159.756,7200> player=<6502,159.53,7200> +15:57:56.207 SCRIPT : Reintroduced [mission]: phase 2 -> 3 +15:57:56.208 SCRIPT : ERR SMOKE PASS: identified radio starts defence +15:57:59.247 SCRIPT : ERR SMOKE PASS: occupied defence timer running +15:58:01.761 SCRIPT : ERR SMOKE PASS: leaving area resets defence +15:58:32.231 SCRIPT : Reintroduced [mission]: phase 3 -> 4 +15:58:35.153 SCRIPT : ERR SMOKE PASS: continuous occupied defence completes +15:58:35.154 SCRIPT : ERR SMOKE PASS: boarding extraction vehicle +15:58:39.186 SCRIPT : ERR SMOKE PASS: physical extraction occupancy +15:58:39.737 SCRIPT : Reintroduced [mission]: phase 4 -> 5 +15:58:39.737 SCRIPT : ERR SMOKE PASS: scripted escape reaches victory after physical vehicle occupancy +15:58:39.738 SCRIPT : ERR SMOKE COMPLETE: terminal=5 lostHelicopterCase=0 playerDeathCase=0 +15:58:39.875 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +15:58:39.878 SCRIPT (W): Slot_Chat Has no Content! +15:58:39.878 SCRIPT (W): Slot_VON Has no Content! +15:58:39.878 SCRIPT (W): Slot_GameVersion Has no Content! +15:58:39.878 SCRIPT (W): Slot_Notifications Has no Content! +15:58:41.956 SCRIPT : ERR RESULT UI: player=1 title=You escaped Everon +15:58:41.956 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +15:58:41.956 SCRIPT : -- Stack trace -- +15:58:41.956 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +15:58:41.956 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +15:58:41.957 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +15:58:41.957 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +15:58:41.957 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +15:58:41.957 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +15:58:41.957 SCRIPT : ----------------- +15:58:41.957 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +15:58:41.957 SCRIPT : -- Stack trace -- +15:58:41.958 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +15:58:41.958 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +15:58:41.958 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +15:58:41.958 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +15:58:41.958 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +15:58:41.958 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +15:58:41.958 SCRIPT : ----------------- +15:58:41.961 SCRIPT (W): Slot_Chat Has no Content! +15:58:41.961 SCRIPT (W): Slot_VON Has no Content! +15:58:41.961 SCRIPT (W): Slot_GameVersion Has no Content! +15:58:41.961 SCRIPT (W): Slot_Notifications Has no Content! +15:58:41.963 SCRIPT : ERR RESULT UI: player=1 title=You escaped Everon diff --git a/docs/evidence/native-2026-09-20-prison-opening/subsequent-idle-verification.json b/docs/evidence/native-2026-09-20-prison-opening/subsequent-idle-verification.json new file mode 100644 index 0000000..325ad91 --- /dev/null +++ b/docs/evidence/native-2026-09-20-prison-opening/subsequent-idle-verification.json @@ -0,0 +1,9 @@ +{ + "stopped_unix": 1789912767.9072492, + "console_sha256": "40919cc3dd62b3c8fa939b26a114e5fdb283de34556bb27ea4a22fa5dbc8a074", + "end_source_sha256": "0bc899c81fcedc40d43615a04ce7d6ecaf6d2e7d7e61d38ae0ec216ba2b5f999", + "source_unchanged_after_run": true, + "prefix": "/tmp/erri-merged-tools-prefix", + "idle_verified": true, + "note": "Subsequent verification after transient empty-argv enfMain exit; original runner metadata remains unchanged." +} diff --git a/docs/evidence/native-2026-09-20-spawn-preload/console.log.txt b/docs/evidence/native-2026-09-20-spawn-preload/console.log.txt new file mode 100644 index 0000000..b119d86 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/console.log.txt @@ -0,0 +1,696 @@ +--------------------------------------------- +Log Z:\tmp\erri-spawn-preload-workbench\logs\logs_2026-09-20_14-22-05\console.log started at 2026-09-20 14:22:05 (2026-09-20 12:22:05 UTC) + +14:22:05.338 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-spawn-preload-workbench\logs\logs_2026-09-20_14-22-05' to filesystem under name logs +14:22:05.338 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-spawn-preload-workbench\profile' to filesystem under name profile +14:22:05.338 ENGINE : FileSystem: Current working directory: 'Z:\home\jakub\.local\share\Steam\steamapps\common\Arma Reforger Tools\Workbench\' +14:22:05.340 PROFILING : Workbench Create Engine took: 10.037900 ms +14:22:06.467 INIT : INIT : Workbench Init Engine +14:22:06.467 ENGINE : Initializing engine, version 192142 +14:22:06.467 ENGINE : CLI Params: -gproj Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj -addonsDir Z:/home/jakub/devel/escapistsrereintroduced/addons -profile Z:/tmp/erri-spawn-preload-workbench -logconsole -wbModule WorldEditor -load Worlds/ERR_Everon.ent -plugin ERR_ValidateWorldPlugin -errPlay 1 -errSmoke 1 -errSmokeOutcome hq-memory -noThrow -disableCrashReporter +14:22:06.484 ENGINE : Addon dirs: +14:22:06.484 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/' +14:22:06.484 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons' +14:22:06.484 ENGINE : dir: './addons' +14:22:06.484 ENGINE : dir: 'Z:/tmp/erri-spawn-preload-workbench/addons' +14:22:06.484 ENGINE : Available addons: +14:22:06.484 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +14:22:06.484 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed) +14:22:06.484 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed) +14:22:06.484 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed) +14:22:06.484 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed) +14:22:06.484 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed) +14:22:06.484 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed) +14:22:06.484 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed) +14:22:06.484 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed) +14:22:06.485 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\core' to filesystem under name ERR_Core +14:22:06.486 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1 +14:22:06.488 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore +14:22:06.491 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments +14:22:06.497 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core +14:22:06.502 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02 +14:22:06.509 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01 +14:22:06.651 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-preload-workbench/addons/ArmaReforger/' (pak count: 14) to filesystem under name ArmaReforger +14:22:06.656 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core +14:22:06.656 ENGINE : CPU vendor : AuthenticAMD +14:22:06.656 ENGINE : CPU type : 2 +14:22:06.656 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor +14:22:06.656 ENGINE : CPU cache info : L1 [Inst 32KB, Data 32KB], L2 [Unif 512KB], L3 [Unif 16384KB] +14:22:06.656 ENGINE : CPU count logical : 16 +14:22:06.656 ENGINE : CPU count physical : 8 +14:22:06.656 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2 +14:22:06.656 RESOURCES : ResourceDB: loading cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +14:22:06.657 RESOURCES : ResourceDB: loading cache (id=1 name=WCS_BMP-1 path=Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb) +14:22:06.658 RESOURCES : ResourceDB: loading cache (id=2 name=WCS_SpaceCore path=Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb) +14:22:06.659 RESOURCES : ResourceDB: loading cache (id=3 name=WCS_Armaments path=Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb) +14:22:06.661 RESOURCES : ResourceDB: loading cache (id=4 name=RHS_Core path=Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb) +14:22:06.675 RESOURCES : ResourceDB: loading cache (id=5 name=RHS_Content_02 path=Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb) +14:22:06.677 RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Content_01 path=Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb) +14:22:06.686 RESOURCES : ResourceDB: loading cache (id=7 name=ArmaReforger path=Z:/tmp/erri-spawn-preload-workbench/addons/ArmaReforger/resourceDatabase.rdb) +14:22:06.857 RESOURCES : ResourceDB: loading cache (id=8 name=core path=./addons/core/resourceDatabase.rdb) +14:22:06.861 RESOURCES : ResourceDB: loading cache (id=9 name=profile path=Z:\tmp\erri-spawn-preload-workbench\profile/resourceDatabase.rdb) +14:22:06.862 RESOURCES : ResourceDB: loading cache (id=10 name=logs path=Z:\tmp\erri-spawn-preload-workbench\logs\logs_2026-09-20_14-22-05/resourceDatabase.rdb) +14:22:07.127 RESOURCES : RESOURCES : ResourceDB: full scan +14:22:07.134 RESOURCES : RESOURCES : scanning... +14:22:07.134 RESOURCES : RESOURCES : scanning @"ERR_Core" +14:22:07.153 RESOURCES : RESOURCES : scanning @"WCS_BMP-1" +14:22:07.161 RESOURCES : RESOURCES : scanning @"WCS_SpaceCore" +14:22:07.165 RESOURCES : RESOURCES : scanning @"WCS_Armaments" +14:22:07.176 RESOURCES : RESOURCES : scanning @"RHS_Core" +14:22:07.194 RESOURCES : RESOURCES : scanning @"RHS_Content_02" +14:22:07.200 RESOURCES : RESOURCES : scanning @"RHS_Content_01" +14:22:07.211 RESOURCES : RESOURCES : scanning @"ArmaReforger" +14:22:07.474 RESOURCES : RESOURCES : scanning @"core" +14:22:07.481 RESOURCES : RESOURCES : scanning @"profile" +14:22:07.481 RESOURCES : RESOURCES : scanning @"logs" +14:22:07.482 RESOURCES : RESOURCES : processing meta-files... +14:22:07.572 RESOURCES : RESOURCES : processing files... +14:22:07.574 INIT : Workbench startup +14:22:07.574 INIT : Workbench Init Engine +14:22:07.574 RESOURCES : ResourceDB: full scan +14:22:07.574 RESOURCES : processing files... +14:22:07.574 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +14:22:07.588 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +14:22:07.588 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +14:22:07.588 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +14:22:07.588 RESOURCES : RESOURCES : processing folders... +14:22:07.598 RESOURCES : RESOURCES : creating GUID-item mapping... +14:22:07.624 RESOURCES : RESOURCES : building tree... +14:22:07.706 PROFILING : ResourceDB: full scan took: 579.110800 ms +14:22:07.707 RESOURCES : ResourceDB: saving cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +14:22:07.709 RESOURCES : ResourceDB: written 15688/15688 bytes +14:22:07.709 RESOURCES : ResourceDB: cache successfully saved +14:22:07.710 RESOURCES : ResourceDB: saving cache (id=9 name=profile path=Z:\tmp\erri-spawn-preload-workbench\profile/resourceDatabase.rdb) +14:22:07.712 RESOURCES : ResourceDB: written 51/51 bytes +14:22:07.712 RESOURCES : ResourceDB: cache successfully saved +14:22:07.712 RESOURCES : ResourceDB: saving cache (id=10 name=logs path=Z:\tmp\erri-spawn-preload-workbench\logs\logs_2026-09-20_14-22-05/resourceDatabase.rdb) +14:22:07.714 RESOURCES : ResourceDB: written 208/208 bytes +14:22:07.714 RESOURCES : ResourceDB: cache successfully saved +14:22:07.714 ENGINE : GameProject load +14:22:07.714 ENGINE : Loaded addons: +14:22:07.714 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' +14:22:07.714 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' +14:22:07.714 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' +14:22:07.714 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' +14:22:07.714 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' +14:22:07.714 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' +14:22:07.714 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' +14:22:07.714 ENGINE : gproj: 'Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' +14:22:07.714 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +14:22:07.717 ENGINE : GameProject load +14:22:07.717 INIT : GameProject load project data @"Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_595F2BF2F44836FB/addon.gproj" +14:22:07.717 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +14:22:07.718 INIT : GameProject load project data @"Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_629B2BA37EFFD577/addon.gproj" +14:22:07.718 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +14:22:07.719 INIT : GameProject load project data @"Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +14:22:07.719 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +14:22:07.719 INIT : GameProject load project data @"Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +14:22:07.719 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +14:22:07.720 ENGINE : Loading custom engine user config '$profile:.save/app1874910_user76561198020202999/settings/ReforgerEngineSettings.conf' +14:22:07.720 ENGINE : No Enfusion settings file loaded. Continuing with defaults +14:22:07.838 RENDER : (OK) Adapter 'AMD Radeon RX 6950 XT (RADV NAVI21)' supports feature level 12_0 +14:22:07.840 RENDER : Basic screen setup: +14:22:07.840 RENDER : Back buffer format : TEXFMT_R8G8B8A8_SRGB (29) +14:22:07.840 RENDER : MSAA : none +14:22:07.854 RENDER : AMD AGS library initialized, version 6.1.0 x DLL 6.1.0 +14:22:07.854 RENDER : Extendeded AMD info for AMD Radeon RX 6950 XT (RADV NAVI21) (primary device) +14:22:07.854 RENDER : * architecture RDNA2, 80 CUs, 40 WGPs (for RDNA), 64 ROPs +14:22:07.854 RENDER : * core clocks 2720 MHz, memory 1124 MHz +14:22:07.854 RENDER : * TFlops 27.9, memory bandwidth (562.0 GB/s) +14:22:07.854 RENDER : AMD AGS correctly initialized +14:22:07.854 RENDER : GPU_ATI (0x1002) (AMD Radeon RX 6950 XT (RADV NAVI21)) with 1 GPU detected, VRAM 16128MB (fast 0MB), shared 64362MB, driver version 99.19.02-230831a-396538C-AMD-Software-Adrenalin-Edition +14:22:07.854 RENDER : Detected output devices: +14:22:07.854 RENDER : * 1 device/s connected to AMD Radeon RX 6950 XT (RADV NAVI21): +14:22:07.854 RENDER : Generic Non-PnP Monitor (\\.\DISPLAY1), 1280x720 (offset 0x0), 30Hz +14:22:07.854 RENDER : Concurrent frames limit 2 +14:22:07.949 RENDER : DX12 device successfully created by AMD AGS library +14:22:07.949 RENDER : * user markers not supported in this version AMD SW +14:22:07.949 RENDER : Graphics device features +14:22:07.949 RENDER : Needed: +14:22:07.949 RENDER : * Highest supported shader model: 6.8 (6.0 needed) +14:22:07.949 RENDER : Optional: +14:22:07.949 RENDER : * Allow tearing (VSYNC) : 1 +14:22:07.949 RENDER : * 16 bits : 1 +14:22:07.949 RENDER : * Resource heap tier : 3 +14:22:07.949 RENDER : * Persistent heaps (DRED) : 1 +14:22:07.949 RENDER : * DRED 1.2 is supported by compiler +14:22:07.977 RENDER : Main RT format setup. +14:22:07.977 RENDER : Main RT format for quality 0 : TEXFMT_R11G11B10_FLOAT (26) +14:22:07.977 RENDER : Main RT format for quality 1 : TEXFMT_R16G16B16A16_FLOAT (10) +14:22:07.981 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=16 +14:22:08.017 PROFILING : Settings changed took: 0.027400 ms +14:22:08.542 AUDIO : Endpoint: Speakers (PulseAudio Output) +14:22:08.542 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +14:22:08.542 AUDIO : Audio client: +14:22:08.542 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +14:22:08.546 RENDER : RENDER : Reload shaders +14:22:08.547 RENDER : Enfusion shader version 13 +14:22:08.547 INIT : INIT : ShaderListReload +14:22:08.547 PROFILING : ShaderListReload took: 0.000600 ms +14:22:08.691 AUDIO : Endpoint: Speakers (PulseAudio Output) +14:22:08.691 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +14:22:08.691 AUDIO : Audio client: +14:22:08.691 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +14:22:08.869 RENDER : Loaded 3752 newer shader binaries +14:22:08.869 PROFILING : Reload shaders took: 322.633300 ms +14:22:08.869 ENGINE : Initializing inputs. +14:22:08.883 NETWORK : Initializing networking. +14:22:08.883 NETWORK : Using new GameRplScheduler. +14:22:08.884 SCRIPT : SCRIPT : Initializing scripts +14:22:08.884 SCRIPT : SCRIPT : ScriptProjectManager init +14:22:10.846 PROFILING : ScriptProjectManager init took: 1961.723800 ms +14:22:10.886 PROFILING : Initializing scripts took: 2001.944100 ms +14:22:10.907 ENGINE : Enfusion engine successfully created. +14:22:10.907 PROFILING : Workbench Init Engine took: 4438.556800 ms +14:22:10.907 INIT : INIT : Workbench Create Game +14:22:10.920 GUI : Using default language (en_us) +14:22:10.920 GUI : Loading 'en_us' localization file. +14:22:10.920 INIT : INIT : Loading StringTable +14:22:10.953 PROFILING : Loading StringTable took: 32.945000 ms +14:22:10.953 SCRIPT : SCRIPT : Compiling GameLib scripts +14:22:11.018 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +14:22:11.019 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +14:22:11.020 PROFILING : Compiling GameLib scripts took: 66.824500 ms +14:22:11.020 SCRIPT : SCRIPT : Compiling Game scripts +14:22:12.641 INIT : Workbench Create Game +14:22:12.641 SCRIPT : Compiling Game scripts +14:22:12.641 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +14:22:12.641 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +14:22:13.065 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.079 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +14:22:13.130 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +14:22:13.319 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.333 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +14:22:13.418 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +14:22:13.418 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +14:22:13.420 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +14:22:13.462 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.487 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.487 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.489 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +14:22:13.489 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +14:22:13.525 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.560 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +14:22:14.016 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 436d9397 +14:22:14.026 SCRIPT : Module: Game; loaded 6506x files; 13190x classes; used 39263K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: 88525bf2 +14:22:14.078 PROFILING : Compiling Game scripts took: 3058.250200 ms +14:22:14.085 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +14:22:14.144 ENGINE : Game successfully created. +14:22:14.145 PROFILING : Workbench Create Game took: 3238.033000 ms +14:22:14.154 DEFAULT : Using thumbnail cache directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/thumbnails +14:22:15.163 INIT : INIT : Workbench Reload Game +14:22:15.165 ENGINE : Game destroyed. +14:22:15.173 GUI : Using default language (en_us) +14:22:15.173 GUI : Loading 'en_us' localization file. +14:22:15.173 INIT : INIT : Loading StringTable +14:22:15.185 PROFILING : Loading StringTable took: 11.542000 ms +14:22:15.185 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +14:22:15.194 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:22:15.194 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:22:15.195 ENGINE : Game successfully created. +14:22:15.195 ENGINE : Game successfully initialized. +14:22:15.195 PROFILING : Workbench Reload Game took: 31.918100 ms +14:22:16.139 WORLD : WORLD : Entities load '$ERR_Core:Worlds/ERR_Everon.ent' +14:22:17.319 PROFILING : Entities load took: 1180.023400 ms +14:22:17.332 WORLD : WORLD : CreateEntities +14:22:17.339 WORLD : WORLD : NotifyBeforeEntitiesCreated +14:22:17.340 PROFILING : NotifyBeforeEntitiesCreated took: 0.003700 ms +14:22:17.340 WORLD : WORLD : Wait for preloading data +14:22:17.340 PROFILING : Wait for preloading data took: 0.004100 ms +14:22:17.457 ENTITY : Create entity @"ENTITY:2" ('Eden', GenericTerrainEntity) at <0.000000 0.000000 0.000000> @"{5AD924374E8C7AF6}Prefabs/World/Game/Eden/GenericTerrain_Eden.et" +14:22:17.458 PROFILING : PROFILING : Terrain load +14:22:19.333 PROFILING : Terrain load took: 1875.143700 ms +14:22:24.410 WORLD : CreateEntities +14:22:24.410 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:22:24.410 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:22:24.410 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:22:36.163 WORLD : WORLD : NotifyBeforeEntitiesInitialized +14:22:36.163 PROFILING : NotifyBeforeEntitiesInitialized took: 0.006900 ms +14:22:36.716 WORLD : WORLD : NotifyEntitiesInitialized +14:22:36.717 TERRAIN : TERRAIN : Initializing road networks... +14:22:36.720 PROFILING : Initializing road networks... took: 3.158800 ms +14:22:36.720 PROFILING : NotifyEntitiesInitialized took: 3.690900 ms +14:22:36.721 PROFILING : CreateEntities took: 19388.693100 ms +14:22:36.974 PROFILING : * WorldEditor: LoadWorld: 20841.385800 ms +14:22:38.749 TERRAIN : Loading tile map config (worlds/Eden/Eden/tileMap.conf) +14:22:38.749 TERRAIN : Loading minimap config (worlds/Eden/Eden/miniMap.conf) +14:22:38.750 TERRAIN : The default minimap texture ('worlds/Eden/EdenRasterized.edds') not found. Trying 'worlds/Eden/Eden.edds'... +14:22:38.750 TERRAIN : The default minimap texture ('worlds/Eden/Eden.edds') not found. Skipping... +14:22:38.867 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +14:22:38.867 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +14:22:38.867 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +14:22:38.867 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +14:22:38.867 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +14:22:38.871 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +14:22:38.903 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +14:22:38.941 BACKEND : Attempting online Game Config instead. +14:22:42.762 INIT : INIT : Workbench Reload Game +14:22:42.766 ENGINE : Game destroyed. +14:22:42.775 GUI : Using default language (en_us) +14:22:42.775 GUI : Loading 'en_us' localization file. +14:22:42.775 INIT : INIT : Loading StringTable +14:22:42.801 PROFILING : Loading StringTable took: 25.208700 ms +14:22:42.801 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +14:22:42.812 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:22:42.813 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:22:42.813 ENGINE : Game successfully created. +14:22:42.813 ENGINE : Game successfully initialized. +14:22:42.813 PROFILING : Workbench Reload Game took: 50.424400 ms +14:22:42.817 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +14:22:42.893 PLATFORM : Save data from container 'settings' have been loaded +14:22:42.980 PLATFORM : Save data from container 'sessions' have been loaded +14:22:43.077 DEFAULT : [SaveGameManager] Starting new playthrough nr.0 '' for mission '{B6C516F86302C679}Worlds/ERR_Everon.ent'. +14:22:43.087 WORLD : WORLD : Game::LoadEntities +14:22:43.087 WORLD : WORLD : Initializing world systems @"{1C60D2EDA2B468B8}Configs/Systems/BaseGameModeSystems.conf" +14:22:43.088 NETWORK : Enabled lag compensation, 29 frames with 100 FPS and 280 ms rewind limits. +14:22:43.088 WORLD : WORLD : CreateEntities +14:22:43.088 WORLD : WORLD : CreateEntities +14:22:43.088 WORLD : WORLD : NotifyBeforeEntitiesCreated +14:22:43.095 RESOURCES : Loaded mission headers from 9 addon(s)! +14:22:43.095 PROFILING : NotifyBeforeEntitiesCreated took: 6.917900 ms +14:22:43.095 WORLD : WORLD : Wait for preloading data +14:22:43.095 PROFILING : Wait for preloading data took: 0.001100 ms +14:22:49.207 WORLD : Game::LoadEntities +14:22:49.207 WORLD : CreateEntities +14:22:49.207 WORLD : CreateEntities +14:22:49.207 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:22:49.207 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:22:49.207 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:22:51.096 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +14:22:51.096 ENTITY : CreateComponent 'Hierarchy' +14:22:51.096 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +14:22:51.096 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +14:22:51.096 ENTITY : CreateComponent 'Hierarchy' +14:22:51.096 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +14:22:51.096 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +14:22:51.096 ENTITY : CreateComponent 'Hierarchy' +14:22:51.097 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +14:22:51.103 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +14:22:51.103 ENTITY : CreateComponent 'Hierarchy' +14:22:51.104 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +14:22:51.104 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +14:22:51.104 ENTITY : CreateComponent 'Hierarchy' +14:22:51.104 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +14:22:51.104 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +14:22:51.104 ENTITY : CreateComponent 'Hierarchy' +14:22:51.104 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +14:22:51.109 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +14:22:51.109 ENTITY : CreateComponent 'Hierarchy' +14:22:51.109 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +14:22:51.109 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +14:22:51.109 ENTITY : CreateComponent 'Hierarchy' +14:22:51.109 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +14:22:51.109 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +14:22:51.109 ENTITY : CreateComponent 'Hierarchy' +14:22:51.109 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +14:22:57.200 WORLD : WORLD : NotifyBeforeEntitiesInitialized +14:22:57.200 PROFILING : NotifyBeforeEntitiesInitialized took: 0.136200 ms +14:22:59.649 WORLD : InitEntities 'world' +14:22:59.649 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +14:22:59.649 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +14:22:59.682 WORLD : InitEntities 'world' +14:22:59.682 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +14:22:59.682 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +14:22:59.682 WORLD : WORLD : NotifyEntitiesInitialized +14:22:59.682 TERRAIN : TERRAIN : Initializing road networks... +14:22:59.685 PROFILING : Initializing road networks... took: 3.042400 ms +14:22:59.685 DEFAULT : DEFAULT : WorldVolumesCollection +14:22:59.756 PROFILING : WorldVolumesCollection took: 70.686600 ms +14:22:59.756 INIT : INIT : SoundWorldInit +14:22:59.772 PROFILING : SoundWorldInit took: 16.121300 ms +14:22:59.772 PROFILING : NotifyEntitiesInitialized took: 90.146600 ms +14:22:59.772 PROFILING : CreateEntities took: 16682.502800 ms +14:22:59.772 PROFILING : CreateEntities took: 16682.663600 ms +14:22:59.773 WORLD : WORLD : Wait for preloading data around camera +14:22:59.773 PROFILING : Wait for preloading data around camera took: 0.001200 ms +14:22:59.773 WORLD : WORLD : EOnActivate +14:22:59.812 PROFILING : EOnActivate took: 39.337100 ms +14:22:59.813 PROFILING : Game::LoadEntities took: 16724.548500 ms +14:23:00.151 DEFAULT : Entered offline game state. +14:23:04.545 SCRIPT : Map load time: 2638ms +14:23:04.546 NETWORK : Player connected: connectionID=2147483646 +14:23:04.547 NETWORK : ### Connecting player: connectionID=2147483646, Name= +14:23:04.547 NETWORK : ### Creating player: PlayerId=1, Name=jakub +14:23:04.555 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:23:04.555 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +14:23:04.555 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:23:04.556 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +14:23:04.556 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +14:23:04.558 SCRIPT (W): Can't open config file "" +14:23:04.566 WORLD : InitEntities 'world' +14:23:04.566 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:23:04.566 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +14:23:04.567 SCRIPT (W): Slot_WeaponInfo Has no Content! +14:23:04.567 SCRIPT (W): Slot_Chat Has no Content! +14:23:04.567 SCRIPT (W): Slot_VON Has no Content! +14:23:04.567 SCRIPT (W): Slot_AvailableActions Has no Content! +14:23:04.567 SCRIPT (W): Slot_Vehicle Has no Content! +14:23:04.567 SCRIPT (W): Slot_GameVersion Has no Content! +14:23:04.567 SCRIPT (W): Slot_Notifications Has no Content! +14:23:04.567 SCRIPT (W): Slot_Hints Has no Content! +14:23:04.582 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:23:04.583 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +14:23:04.583 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:23:04.583 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:23:04.584 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:23:04.588 NETWORK : ### Updating player: PlayerId=1, Name=jakub, rplIdentity=0xFFFFFFFE, IdentityId=00000000-0000-0000-0000-000000000000 +14:23:04.589 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +14:23:04.589 NETWORK : Players connecting: 0 +14:23:04.589 NETWORK : Players connected: 1 / 1 +14:23:04.624 DEFAULT : Using autosave directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/autosaves +14:23:04.627 PROFILING : Workbench startup took: 59355.055600 ms +14:23:04.654 WORLD : Frame start +14:23:04.657 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +14:23:04.672 WORLD : UpdateEntities +14:23:04.672 WORLD : Frame +14:23:04.672 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +14:23:04.888 WORLD : UpdateEntities +14:23:04.889 WORLD : PostFrame +14:23:04.889 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +14:23:04.889 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +14:23:04.939 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:23:04.939 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:23:04.939 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +14:23:04.939 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +14:23:05.147 RENDER : RENDER : ObjectsHeightMap::Build +14:23:05.148 RENDER : RENDER : MeshOccupancyGridManager::GenerateAllForWorld +14:23:05.374 PROFILING : MeshOccupancyGridManager::GenerateAllForWorld took: 226.285500 ms +14:23:05.383 PROFILING : ObjectsHeightMap::Build took: 235.440700 ms +14:23:06.550 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +14:23:06.574 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +14:23:06.576 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +14:23:06.613 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +14:23:06.617 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +14:23:06.690 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:23:06.690 WORLD : InitEntities 'world' +14:23:06.690 ENTITY : Init entity @"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:23:06.691 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +14:23:06.693 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +14:23:06.694 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +14:23:06.706 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +14:23:06.776 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +14:23:06.776 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +14:23:06.779 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +14:23:06.780 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +14:23:06.784 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +14:23:06.787 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +14:23:06.787 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +14:23:06.789 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +14:23:06.789 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +14:23:06.789 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +14:23:06.790 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +14:23:06.790 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +14:23:06.790 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +14:23:06.790 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:23:06.791 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +14:23:06.791 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +14:23:06.791 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:23:06.791 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +14:23:06.792 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +14:23:06.792 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:23:06.792 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.792 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.793 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.793 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.793 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.793 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:07.471 WORLD : UpdateEntities +14:23:07.471 WORLD : AfterPostSimulate +14:23:07.471 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +14:23:07.810 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:07.810 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:07.810 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:07.810 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:08.056 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.08,63.5084,7499.7> up=0.995306 +14:23:08.056 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.114774 angularSpeed=0.0696385 +14:23:08.057 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:08.057 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.06,63.615,7501.97> +14:23:08.057 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.06,63.315,7501.97> terrainY=63.3161 tireTerrainGap=-0.00111771 +14:23:08.057 SCRIPT : ERR GEAR SUPPORT: center=<7012.06,63.615,7501.97> radius=0.3 bottom=<7012.06,63.315,7501.97> fraction=0.4493 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.00115204 +14:23:08.057 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.88,64.6077,7497.71> +14:23:08.058 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.88,64.1577,7497.71> terrainY=64.1547 tireTerrainGap=0.00295258 +14:23:08.058 SCRIPT : ERR GEAR SUPPORT: center=<7009.88,64.6077,7497.71> radius=0.45 bottom=<7009.88,64.1577,7497.71> fraction=0.468312 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00302887 +14:23:08.058 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2633,7497.76> +14:23:08.058 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8133,7497.76> terrainY=63.817 tireTerrainGap=-0.00372696 +14:23:08.058 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2633,7497.76> radius=0.45 bottom=<7014.43,63.8133,7497.76> fraction=0.4375 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00374985 +14:23:08.059 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:08.320 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:08.320 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:08.321 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:08.321 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:08.834 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:08.834 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:08.835 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:09.100 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.1,63.5416,7499.73> up=0.994238 +14:23:09.101 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0454444 angularSpeed=0.0231645 +14:23:09.101 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:09.101 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.06,63.6159,7502> +14:23:09.101 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.06,63.3159,7502> terrainY=63.3123 tireTerrainGap=0.0035553 +14:23:09.102 SCRIPT : ERR GEAR SUPPORT: center=<7012.06,63.6159,7502> radius=0.3 bottom=<7012.06,63.3159,7502> fraction=0.470785 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00357437 +14:23:09.102 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.94,64.6012,7497.72> +14:23:09.102 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.94,64.1512,7497.72> terrainY=64.147 tireTerrainGap=0.0042038 +14:23:09.102 SCRIPT : ERR GEAR SUPPORT: center=<7009.94,64.6012,7497.72> radius=0.45 bottom=<7009.94,64.1512,7497.72> fraction=0.473625 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00419617 +14:23:09.102 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.48,64.2631,7497.8> +14:23:09.103 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.48,63.8131,7497.8> terrainY=63.8142 tireTerrainGap=-0.0010643 +14:23:09.103 SCRIPT : ERR GEAR SUPPORT: center=<7014.48,64.2631,7497.8> radius=0.45 bottom=<7014.48,63.8131,7497.8> fraction=0.449597 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00108719 +14:23:09.103 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:09.103 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +14:23:09.352 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:09.353 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:09.353 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:09.354 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:09.870 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:09.871 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:09.871 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:09.871 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:10.129 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.12,63.5268,7499.75> up=0.993912 +14:23:10.129 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0351752 angularSpeed=0.0392251 +14:23:10.130 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:10.130 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6118,7502.02> +14:23:10.130 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3118,7502.02> terrainY=63.311 tireTerrainGap=0.000785828 +14:23:10.130 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6118,7502.02> radius=0.3 bottom=<7012.07,63.3118,7502.02> fraction=0.457986 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00075531 +14:23:10.130 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5938,7497.73> +14:23:10.131 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1438,7497.73> terrainY=64.1414 tireTerrainGap=0.00239563 +14:23:10.131 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5938,7497.73> radius=0.45 bottom=<7009.98,64.1438,7497.73> fraction=0.465769 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00247192 +14:23:10.131 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.26,7497.84> +14:23:10.131 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.81,7497.84> terrainY=63.8118 tireTerrainGap=-0.00181961 +14:23:10.131 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.26,7497.84> radius=0.45 bottom=<7014.52,63.81,7497.84> fraction=0.446111 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00185394 +14:23:10.131 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:10.384 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:10.385 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:10.385 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:10.386 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:10.893 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:10.894 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:10.894 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:10.895 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:11.399 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.527,7499.75> up=0.993819 +14:23:11.400 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:23:11.400 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:11.400 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6124,7502.02> +14:23:11.400 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3124,7502.02> terrainY=63.3109 tireTerrainGap=0.00150681 +14:23:11.401 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6124,7502.02> radius=0.3 bottom=<7012.08,63.3124,7502.02> fraction=0.461324 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00149155 +14:23:11.401 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5924,7497.73> +14:23:11.401 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1424,7497.73> terrainY=64.1405 tireTerrainGap=0.00190735 +14:23:11.401 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5924,7497.73> radius=0.45 bottom=<7009.98,64.1424,7497.73> fraction=0.463264 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00192261 +14:23:11.401 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2594,7497.84> +14:23:11.401 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8094,7497.84> terrainY=63.8117 tireTerrainGap=-0.0022316 +14:23:11.402 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2594,7497.84> radius=0.45 bottom=<7014.52,63.8094,7497.84> fraction=0.444444 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00222015 +14:23:11.402 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:11.402 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:11.402 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:11.403 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:11.403 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:11.906 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:11.907 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:11.907 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:11.908 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:12.422 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.527,7499.75> up=0.993819 +14:23:12.422 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:23:12.422 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:12.422 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6124,7502.02> +14:23:12.423 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3124,7502.02> terrainY=63.3109 tireTerrainGap=0.00150681 +14:23:12.423 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6124,7502.02> radius=0.3 bottom=<7012.08,63.3124,7502.02> fraction=0.461324 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00149155 +14:23:12.423 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5924,7497.73> +14:23:12.423 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1424,7497.73> terrainY=64.1405 tireTerrainGap=0.00190735 +14:23:12.423 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5924,7497.73> radius=0.45 bottom=<7009.98,64.1424,7497.73> fraction=0.463264 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00192261 +14:23:12.424 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2594,7497.84> +14:23:12.424 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8094,7497.84> terrainY=63.8117 tireTerrainGap=-0.0022316 +14:23:12.424 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2594,7497.84> radius=0.45 bottom=<7014.52,63.8094,7497.84> fraction=0.444444 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00222015 +14:23:12.424 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:12.424 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:12.425 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +14:23:12.445 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +14:23:12.446 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +14:23:12.446 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +14:23:12.447 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +14:23:12.447 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +14:23:12.447 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +14:23:12.447 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +14:23:13.180 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +14:23:13.438 SCRIPT : ERR SMOKE PASS: native spawn preload retains preparation text after server sites are ready +14:23:14.190 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.39,7158.5> +14:23:14.457 SCRIPT : ERR SMOKE PASS: prisoner admitted only after enabled native spawn preload finishes +14:23:14.458 SCRIPT : ERR SMOKE PASS: new identity may enter prison +14:23:14.458 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +14:23:14.458 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +14:23:14.458 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +14:23:14.458 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +14:23:14.458 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +14:23:14.458 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +14:23:14.460 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +14:23:14.460 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +14:23:14.460 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +14:23:14.460 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +14:23:14.464 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +14:23:14.464 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +14:23:14.465 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +14:23:14.465 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +14:23:14.470 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +14:23:14.470 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +14:23:14.470 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +14:23:14.470 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +14:23:14.470 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +14:23:14.471 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +14:23:14.471 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +14:23:14.471 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +14:23:43.701 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:23:43.701 ENTITY : Create entity @"ENTITY:4611686018427391326" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:23:43.701 ENTITY : CreateComponent 'BaseRadioComponent' +14:23:43.702 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427391326" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +14:23:51.515 SCRIPT : ERR SMOKE PASS: HQ memory automatic startup owns one canonical six-vehicle task +14:23:51.515 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 0 +14:23:51.515 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 1 +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 2 +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 3 +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 4 +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 5 +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy includes confirmed native turret gunners +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory automatic nineteen-body convoy respects shared physical budget +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory manual request after automatic startup cannot duplicate the convoy +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory road fixture has native Everon road manager +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory road fixture native query stays within bounded road count +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory arranged detached road snapshots accepted by private memory +14:23:51.523 SCRIPT : ERR SMOKE PASS: HQ memory native road choice is forward, nearby, dry and physically clear +14:23:51.523 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:23:51.524 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:23:51.524 SCRIPT : ERR SMOKE PASS: HQ memory chosen intercept lies on an actual native road segment +14:23:51.524 SCRIPT : ERR ROAD FIXTURE: arranged origin=<5896.23,149.499,6644.17> velocity=<2.25769,0,1.97559> chosen=<5941.39,149.611,6683.68> attempts=1 +14:23:51.524 SCRIPT : ERR SMOKE PASS: HQ memory same arranged belief aged46seconds refuses road interception +14:23:51.524 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +14:23:51.525 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +14:23:51.525 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +14:23:53.033 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +14:23:53.033 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +14:23:59.120 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +14:23:59.120 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +14:24:07.302 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +14:24:07.302 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +14:24:15.467 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +14:24:15.468 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +14:24:23.546 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +14:24:31.674 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +14:24:31.674 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +14:24:31.675 SCRIPT : INFO: KILL SUICIDE: jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) from US faction at <6088.5, 211.39, 7158.5> killed himself! +14:24:35.784 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +14:24:35.784 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +14:24:35.784 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +14:25:02.642 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +14:25:02.642 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +14:25:02.642 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +14:25:02.644 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +14:25:02.814 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +14:25:02.816 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:25:02.816 SCRIPT (W): Slot_Chat Has no Content! +14:25:02.817 SCRIPT (W): Slot_VON Has no Content! +14:25:02.817 SCRIPT (W): Slot_GameVersion Has no Content! +14:25:02.817 SCRIPT (W): Slot_Notifications Has no Content! +14:25:04.940 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +14:25:04.940 SCRIPT : -- Stack trace -- +14:25:04.941 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:25:04.941 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:25:04.941 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +14:25:04.941 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:25:04.941 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:25:04.941 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:25:04.941 SCRIPT : ----------------- +14:25:04.942 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +14:25:04.942 SCRIPT : -- Stack trace -- +14:25:04.942 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:25:04.942 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:25:04.942 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +14:25:04.942 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:25:04.942 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:25:04.942 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:25:04.942 SCRIPT : ----------------- +14:25:04.944 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:25:04.944 SCRIPT (W): Slot_Chat Has no Content! +14:25:04.944 SCRIPT (W): Slot_VON Has no Content! +14:25:04.944 SCRIPT (W): Slot_GameVersion Has no Content! +14:25:04.945 SCRIPT (W): Slot_Notifications Has no Content! +14:25:06.803 RESOURCES : Screenshot saved to $logs:err-result.png diff --git a/docs/evidence/native-2026-09-20-spawn-preload/error.log.txt b/docs/evidence/native-2026-09-20-spawn-preload/error.log.txt new file mode 100644 index 0000000..4e78849 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/error.log.txt @@ -0,0 +1,138 @@ +--------------------------------------------- +Log Z:\tmp\erri-spawn-preload-workbench\logs\logs_2026-09-20_14-22-05\error.log started at 2026-09-20 14:22:07 (2026-09-20 12:22:07 UTC) + +14:22:07.574 INIT : Workbench startup +14:22:07.574 INIT : Workbench Init Engine +14:22:07.574 RESOURCES : ResourceDB: full scan +14:22:07.574 RESOURCES : processing files... +14:22:07.574 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +14:22:07.588 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +14:22:07.588 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +14:22:07.588 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +14:22:07.717 ENGINE : GameProject load +14:22:07.717 INIT : GameProject load project data @"Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_595F2BF2F44836FB/addon.gproj" +14:22:07.717 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +14:22:07.718 INIT : GameProject load project data @"Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_629B2BA37EFFD577/addon.gproj" +14:22:07.718 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +14:22:07.719 INIT : GameProject load project data @"Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +14:22:07.719 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +14:22:07.719 INIT : GameProject load project data @"Z:/tmp/erri-spawn-preload-workbench/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +14:22:07.719 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +14:22:12.641 INIT : Workbench Create Game +14:22:12.641 SCRIPT : Compiling Game scripts +14:22:12.641 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +14:22:12.641 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +14:22:13.065 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.079 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +14:22:13.130 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +14:22:13.286 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +14:22:13.319 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.333 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +14:22:13.418 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +14:22:13.418 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +14:22:13.420 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +14:22:13.462 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.487 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.487 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.489 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +14:22:13.489 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +14:22:13.525 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.560 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +14:22:24.410 WORLD : CreateEntities +14:22:24.410 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:22:24.410 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:22:24.410 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:22:42.817 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +14:22:49.207 WORLD : Game::LoadEntities +14:22:49.207 WORLD : CreateEntities +14:22:49.207 WORLD : CreateEntities +14:22:49.207 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:22:49.207 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:22:49.207 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:22:51.096 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +14:22:51.096 ENTITY : CreateComponent 'Hierarchy' +14:22:51.096 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +14:22:51.096 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +14:22:51.096 ENTITY : CreateComponent 'Hierarchy' +14:22:51.096 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +14:22:51.096 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +14:22:51.096 ENTITY : CreateComponent 'Hierarchy' +14:22:51.097 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +14:22:51.103 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +14:22:51.103 ENTITY : CreateComponent 'Hierarchy' +14:22:51.104 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +14:22:51.104 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +14:22:51.104 ENTITY : CreateComponent 'Hierarchy' +14:22:51.104 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +14:22:51.104 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +14:22:51.104 ENTITY : CreateComponent 'Hierarchy' +14:22:51.104 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +14:22:51.109 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +14:22:51.109 ENTITY : CreateComponent 'Hierarchy' +14:22:51.109 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +14:22:51.109 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +14:22:51.109 ENTITY : CreateComponent 'Hierarchy' +14:22:51.109 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +14:22:51.109 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +14:22:51.109 ENTITY : CreateComponent 'Hierarchy' +14:22:51.109 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +14:22:59.649 WORLD : InitEntities 'world' +14:22:59.649 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +14:22:59.649 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +14:23:04.555 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:23:04.555 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +14:23:04.555 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:23:04.556 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +14:23:04.556 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +14:23:04.558 SCRIPT (W): Can't open config file "" +14:23:04.566 WORLD : InitEntities 'world' +14:23:04.566 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:23:04.566 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +14:23:04.567 SCRIPT (W): Slot_WeaponInfo Has no Content! +14:23:04.567 SCRIPT (W): Slot_Chat Has no Content! +14:23:04.567 SCRIPT (W): Slot_VON Has no Content! +14:23:04.567 SCRIPT (W): Slot_AvailableActions Has no Content! +14:23:04.567 SCRIPT (W): Slot_Vehicle Has no Content! +14:23:04.567 SCRIPT (W): Slot_GameVersion Has no Content! +14:23:04.567 SCRIPT (W): Slot_Notifications Has no Content! +14:23:04.567 SCRIPT (W): Slot_Hints Has no Content! +14:23:04.582 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:23:04.583 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +14:23:04.583 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:23:04.583 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:23:04.584 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:23:04.589 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +14:23:04.888 WORLD : UpdateEntities +14:23:04.889 WORLD : PostFrame +14:23:04.889 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +14:23:04.889 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +14:23:04.939 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:23:04.939 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:23:04.939 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +14:23:04.939 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +14:23:06.690 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:23:06.690 WORLD : InitEntities 'world' +14:23:06.690 ENTITY : Init entity @"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:23:06.691 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +14:23:07.471 WORLD : UpdateEntities +14:23:07.471 WORLD : AfterPostSimulate +14:23:07.471 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +14:23:43.701 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:23:43.701 ENTITY : Create entity @"ENTITY:4611686018427391326" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:23:43.701 ENTITY : CreateComponent 'BaseRadioComponent' +14:23:43.702 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427391326" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +14:25:02.816 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:25:02.816 SCRIPT (W): Slot_Chat Has no Content! +14:25:02.816 SCRIPT (W): Slot_VON Has no Content! +14:25:02.817 SCRIPT (W): Slot_GameVersion Has no Content! +14:25:02.817 SCRIPT (W): Slot_Notifications Has no Content! +14:25:04.940 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +14:25:04.942 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +14:25:04.944 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:25:04.944 SCRIPT (W): Slot_Chat Has no Content! +14:25:04.944 SCRIPT (W): Slot_VON Has no Content! +14:25:04.944 SCRIPT (W): Slot_GameVersion Has no Content! +14:25:04.945 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-spawn-preload/external-addons-inputs.json.txt b/docs/evidence/native-2026-09-20-spawn-preload/external-addons-inputs.json.txt new file mode 100644 index 0000000..f2f3ae2 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/external-addons-inputs.json.txt @@ -0,0 +1,744 @@ +{ + "1337C0DE5DABBEEF": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF", + "title": "RHS: Status Quo - Content Pack 01", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 916830, + 209, + 1789670354123815627, + 1789670354123815627 + ], + "sha256": "c5d88d82138bc80c95f364075c3a0fc2228f9c15c6230398f3728a13d25b418c" + }, + "addon.gproj": { + "stat": [ + 46, + 26917910, + 335, + 1789670330884205142, + 1789670353823807747 + ], + "sha256": "65197c50ff6e906a5732564e8b440d80ef1cdbcffead9eb388e1e2b56c1322bc" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917892, + 362, + 1789670307618593786, + 1789670307618593786 + ], + "sha256": "17b87e0976ac2da1032f1661a884f6d59b56c00823b2fcfdc2a698ea8bcc92cc" + }, + "data.pak": { + "stat": [ + 46, + 26917928, + 1992582478, + 1789670344310557863, + 1789670353824807774 + ], + "sha256": "e5db31f571782997640a67601ebd3bd6e6615c1548274c71b6ab0cdd794f8bf5" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917893, + 232459, + 1789670307954602617, + 1789670307954602617 + ], + "sha256": "855813254cd72dc87515f4c395e7c7defe4b145ac809a740f81c85ca546b36fe" + }, + "data001.pak": { + "stat": [ + 46, + 26917986, + 1993657251, + 1789670345496589019, + 1789670354029813158 + ], + "sha256": "2bda9c533834dfa2b8e29f4a2a905c30639dabe250554e1346cf1f5dae3f2db3" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917900, + 349870, + 1789670308754623642, + 1789670308754623642 + ], + "sha256": "d4ec79f2a5cf03dd44bcc4513199056195dfda3c7a5c6bbfd17b2c709b746cdc" + }, + "data002.pak": { + "stat": [ + 46, + 26917956, + 1992567795, + 1789670345532589964, + 1789670353970811608 + ], + "sha256": "dfbd716c2a0849910a8058b1f008b8403b8c506fe18c3168d2844383ac02988c" + }, + "data002.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917897, + 332016, + 1789670308247610318, + 1789670308247610318 + ], + "sha256": "3de05138d1d635f1ba5bcbd74a0f91028bfd59082f45c740051381bd054404b5" + }, + "data003.pak": { + "stat": [ + 46, + 26917964, + 364877149, + 1789670333444272402, + 1789670354017812842 + ], + "sha256": "6225936ebc266825bbd1c79e4e0020c9f2fb55c3d3501ed66e72d87436ccd015" + }, + "data003.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917898, + 96448, + 1789670308423614944, + 1789670308423614944 + ], + "sha256": "8ca2504191def96715ddd6ee98a8df1e3f0951e5755592801eab662657289dd0" + }, + "meta": { + "stat": [ + 46, + 911092, + 8188, + 1789670354121815574, + 1789670354121815574 + ], + "sha256": "cb4f4296d087ea5fe2e849b0fc960748bfede7ea3071eeb545bd7bd309be6bfb" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26917967, + 566987, + 1789670331096210712, + 1789670354028813131 + ], + "sha256": "e8706d6b9bb2474b65f7c588de9fcfad4516bd26dc12e7b6b687e7973a41e7a6" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917899, + 368, + 1789670308546618176, + 1789670308546618176 + ], + "sha256": "336f9160ad955caa88d286915195699d3ac36f3363391967a178be0fd2ccd914" + }, + "thumbnail.png": { + "stat": [ + 46, + 26917907, + 18180, + 1789670330627887201, + 1789670353823807747 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917891, + 366, + 1789670307490590423, + 1789670307490590423 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "595F2BF2F44836FB": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB", + "title": "RHS: Status Quo", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 910012, + 2789, + 1789670389999757705, + 1789670389999757705 + ], + "sha256": "0432a068d8d77e34afd10432d1459df1334238e1ec416c896f13b84bae5a3ac5" + }, + "addon.gproj": { + "stat": [ + 46, + 26919135, + 1100, + 1789670379744488450, + 1789670389873754397 + ], + "sha256": "1b83e9df126db639cfcdb6d5119e65a1581c028becd6c09998143ed527ad0721" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919120, + 364, + 1789670378419453659, + 1789670378419453659 + ], + "sha256": "d232c4cfc959267482bbf261eb2e5121c76b6bf7d8893c58c520a763df5ca5f8" + }, + "data.pak": { + "stat": [ + 46, + 26919141, + 203378761, + 1789670389138735100, + 1789670389946756313 + ], + "sha256": "985d0cde7b09ee860086cb386cf624fcfd94b5e82b26af0b33bab83f21d06988" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919122, + 1409173, + 1789670378781463164, + 1789670378781463164 + ], + "sha256": "041c8ebdf035c69aed7c04bb55be839fbdbd7bc8501862dd4939c1d71cdfe8c5" + }, + "meta": { + "stat": [ + 46, + 902077, + 12209, + 1789670389989757443, + 1789670389989757443 + ], + "sha256": "1b62c97002078af393f23508c3b03cfe22f590130345ac44926b06940f27f269" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919132, + 823768, + 1789670379822490498, + 1789670389872754371 + ], + "sha256": "25f6405084fd228ff400868b21f033c4c43d44162ce73de562e06d8003b94a49" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919119, + 368, + 1789670378283450088, + 1789670378283450088 + ], + "sha256": "986f0280a79b0e4ff6d9a3ad60570bebd86ce68869c9f3d5954141f7d5060cb1" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919138, + 18180, + 1789670379618193709, + 1789670389873754397 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919121, + 366, + 1789670378550457099, + 1789670378550457099 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "5E389BB9F58B79A6": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6", + "title": "WCS_SpaceCore", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 919166, + 197, + 1789670369327462097, + 1789670369327462097 + ], + "sha256": "4bcd7610056ed1d366e9b6d0600e80c622a1af35caecf5c9ecf2c7b9e2b626f7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918585, + 2957, + 1789670367793432952, + 1789670369299906650 + ], + "sha256": "2db2e318e6f45bede0d1173d77af03314f888aedfb31bc767d569ccfb6e70a34" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918576, + 364, + 1789670367178158473, + 1789670367178158473 + ], + "sha256": "67d15a8e8623130546332c6d6433314cbdf38e034a66330b9c7a739a94731e21" + }, + "data.pak": { + "stat": [ + 46, + 26918592, + 43626712, + 1789670369105209079, + 1789670369315214594 + ], + "sha256": "80e9810c9b7c873187660d0ddf002a63d1a382e81fc3611baa0ae8fdfff29d3d" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918578, + 66352, + 1789670367560168505, + 1789670367560168505 + ], + "sha256": "6635291a1f1aa9cffdb844e241c36cdc04114574279bab66e21613410f5e5686" + }, + "meta": { + "stat": [ + 46, + 918678, + 2338, + 1789670369325214856, + 1789670369325214856 + ], + "sha256": "dd1c683c086efb292e6cc927bd6522a1ea97ebd454e8148356f66554ebcdd4dc" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918588, + 44111, + 1789670367937178405, + 1789670369300214199 + ], + "sha256": "c4293fef30948a3538751533cc52c9ce449ffada931b47a8fdf1ca48c1618e75" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918577, + 366, + 1789670367326162360, + 1789670367326162360 + ], + "sha256": "df8cd07ff81263e4108688883b9f20568041f067dbad74402464ec2f88432b69" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918582, + 689401, + 1789670367794174651, + 1789670369299906650 + ], + "sha256": "8da2e133303f21bb16a2abd25d5bd6c2a4a6f5eccedae74a98358db485a170d1" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918574, + 368, + 1789670367051155138, + 1789670367051155138 + ], + "sha256": "5aaa5989b5f44b48ff03082a0d4004ae71420db6eebeb56282af7d98f36c7000" + } + } + }, + "5E524E4FEECCA92B": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B", + "title": "WCS_BMP-1", + "version": "8.2.0", + "files": { + "ServerData.json": { + "stat": [ + 46, + 918673, + 193, + 1789670366131482045, + 1789670366131482045 + ], + "sha256": "92ff4ae6fec8afc679726186f424bb31c9918d182f321afca4696654844e39c7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918544, + 2900, + 1789670364825147789, + 1789670366119130662 + ], + "sha256": "ad44151140adf62e99eaa639984c2b9c400be17481e934186d61c307b5221259" + }, + "addon.gproj_8.2.0_manifest.json": { + "stat": [ + 46, + 26918530, + 364, + 1789670364263081920, + 1789670364263081920 + ], + "sha256": "3065c7c353cb7623ee85f83d462d4dac37c92efad1a0255f2661470e6cedfd0f" + }, + "data.pak": { + "stat": [ + 46, + 26918541, + 119808197, + 1789670365649118318, + 1789670366115130557 + ], + "sha256": "f715ad5fa3de788061a66a3ccd933feead5cc1631507ca63e9061049c538fab6" + }, + "data.pak_8.2.0_manifest.json": { + "stat": [ + 46, + 26918528, + 25795, + 1789670364132078479, + 1789670364132078479 + ], + "sha256": "24a7f735e55ccfacc5cdacbb39fb76a6fac294f4cdc47dca0fcb6e3f1919f1e6" + }, + "gallery0_776x436.jpg": { + "stat": [ + 46, + 23106914, + 64588, + 1788720671481676966, + 1788720671481676966 + ], + "sha256": "63649f5239059dd12234250b8c8e313b14ca134e30e4309fbd1eb45f92e77097" + }, + "gallery1_776x436.jpg": { + "stat": [ + 46, + 23106915, + 47808, + 1788720671495639547, + 1788720671495639547 + ], + "sha256": "81f89b026a1bf341f8cd3bb19facd67e8d0f56073c924e026983836fee6bfb4c" + }, + "meta": { + "stat": [ + 46, + 918496, + 2928, + 1789670366129130924, + 1789670366129130924 + ], + "sha256": "ad0f9baa154a250712c94b50c5edcb25200002bdc186d35453b5e8c32c0b6ee5" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918535, + 16514, + 1789670364934099542, + 1789670366080129638 + ], + "sha256": "c65677e8767d92c96c6f35b482350d56e3dccfa026a3c5470b332120990f047c" + }, + "resourceDatabase.rdb_8.2.0_manifest.json": { + "stat": [ + 46, + 26918527, + 366, + 1789670364004075117, + 1789670364004075117 + ], + "sha256": "fdc44be4e1523db5965b015a7ea511623399a5fb3548aaaf8b2a4807fc6ade7d" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918547, + 708338, + 1789670364826600016, + 1789670366119130662 + ], + "sha256": "103a98bf476d510ab3081abb371170ae6cf65aea65b9095636d651170a5b0038" + }, + "thumbnail.png_8.2.0_manifest.json": { + "stat": [ + 46, + 26918531, + 368, + 1789670364388085202, + 1789670364388085202 + ], + "sha256": "5bf1e0f8794a4e2e862658a10071360df63ed6a440ee2ca5514afbc2e97e375e" + } + } + }, + "629B2BA37EFFD577": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577", + "title": "WCS_Armaments", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 920134, + 197, + 1789670377639162612, + 1789670377639162612 + ], + "sha256": "8e5e6b2fe4099ca90bb4498c9479924e775ca0eac411c8230114143ff1a8297a" + }, + "addon.gproj": { + "stat": [ + 46, + 26918715, + 2926, + 1789670371305266851, + 1789670377499241577 + ], + "sha256": "e6ffcf559a2e7898848349c090300ea8eca8cb2e13ecef456a108bcc82efc8b1" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918707, + 364, + 1789670369590221815, + 1789670369590221815 + ], + "sha256": "ba8f2b36575408f11b2107fc4b0f9449c9dc057629ebf894c7bdbc77f53cbc1f" + }, + "data.pak": { + "stat": [ + 46, + 26918730, + 395962643, + 1789670376182394919, + 1789670377620432679 + ], + "sha256": "84a2cf01e2d17a06f8d775ca542a0cc98739f9f4b75b79826017e1387faedb18" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918711, + 214221, + 1789670370007232766, + 1789670370007232766 + ], + "sha256": "dc3ff832bce708121c61a5dfe09be8504352556c50341f9878f4b457e165ade2" + }, + "meta": { + "stat": [ + 46, + 919170, + 2504, + 1789670377637433125, + 1789670377637433125 + ], + "sha256": "2863bb2bdb586286f8aedc34d5dfb6adbdaafd5fca0f8f21136c7a5351d1ce88" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918718, + 141469, + 1789670371389269057, + 1789670377499429501 + ], + "sha256": "7f38b7ed578b0b47864648a7b70288fe49dae4cc2556d5754377a1c28b2b6532" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918708, + 368, + 1789670369714225072, + 1789670369714225072 + ], + "sha256": "2ffa1cf6f8c07600147ae779ee3be1ccec8da23cb1c10d8c73e0c5c5d3dc6d06" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918721, + 689544, + 1789670371307273812, + 1789670377500429528 + ], + "sha256": "ccd771dba7f3f222e9733e688e6dd9e4c5edae2accdd80a6876241094e23f3dd" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918710, + 368, + 1789670369835228249, + 1789670369835228249 + ], + "sha256": "e58ef73e4a794e56ecd04bfd84940ec539e5ca481d6b69ffb20f9fedcd3c2e77" + } + } + }, + "BADC0DEDABBEDA5E": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E", + "title": "RHS: Status Quo - Content Pack 02", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 911088, + 209, + 1789670428409812415, + 1789670428409812415 + ], + "sha256": "90353d1b4ab072f7844bf24d8066031efd69feb76ddcbf66dea34b52ddfe0a1c" + }, + "addon.gproj": { + "stat": [ + 46, + 26919414, + 336, + 1789670399470006320, + 1789670428369764835 + ], + "sha256": "6ebd73d663ed6dbf981cd8bc7d19cfd5bcd3c9dec3b9a706fa331d992ef200b4" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919383, + 362, + 1789670390797778656, + 1789670390797778656 + ], + "sha256": "72d988d5881efdf7d8781b2dc978a0243e1a3d587ced56563299855724137232" + }, + "data.pak": { + "stat": [ + 46, + 26919411, + 1992445813, + 1789670421137575039, + 1789670428335763943 + ], + "sha256": "5b28362571e396c008eb2286dc5a76b4ccf869c0a279916209fb0ef20d6b145e" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919381, + 170934, + 1789670390675775453, + 1789670390675775453 + ], + "sha256": "7cde302270a1e5c3a88517ff8b08a5b50bbe63e7392434d8245542f81b0bfdf8" + }, + "data001.pak": { + "stat": [ + 46, + 26919421, + 238642257, + 1789670400589035695, + 1789670428370764861 + ], + "sha256": "fb2aecbde5668c4d431ea74d64f6d15f7a9f608fefe01838d7c85fb0c818499f" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919384, + 29970, + 1789670390937782332, + 1789670390937782332 + ], + "sha256": "e6fb290c2f9d8dcd0c0ac95c3dee054377a525e00129abc766defa079385d6ea" + }, + "meta": { + "stat": [ + 46, + 910016, + 7720, + 1789670428407765832, + 1789670428407765832 + ], + "sha256": "e9ba58307cb931026c5c59654f3b4b7f92ac6e0682a1e94fd2eb1d5b75c214cf" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919388, + 111601, + 1789670399484558966, + 1789670428260761974 + ], + "sha256": "736bcd2e60177e5af99d93c6b5f07ad79a950899aaca23000f33ad405cd1b74e" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919379, + 368, + 1789670390384767813, + 1789670390384767813 + ], + "sha256": "9a4f54837a83d2acc2bdc62288b62fe7f24876a374f1270d5a5d2a497bb5de8f" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919391, + 18180, + 1789670398997629625, + 1789670428260761974 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919380, + 366, + 1789670390509771095, + 1789670390509771095 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + } +} diff --git a/docs/evidence/native-2026-09-20-spawn-preload/launch-source-sha256.json b/docs/evidence/native-2026-09-20-spawn-preload/launch-source-sha256.json new file mode 100644 index 0000000..35f9dfa --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/launch-source-sha256.json @@ -0,0 +1,259 @@ +{ + "addons/core/Configs/ERR/AdminMenus.conf": "a7f889f260e43656136fc159342129e5f48748d28c426f65f9faac37b624cf94", + "addons/core/Configs/ERR/AdminMenus.conf.meta": "5faf5ddc0a51c1d0f82d60af00d91edc22fe9c39aac50d8d04b772a2c9271be1", + "addons/core/Configs/ERR/EveronSites.conf": "3e04698421ce989c996097ecf24214e7d926d2998918d60573aa403c4012b079", + "addons/core/Configs/ERR/EveronSites.conf.meta": "d5fe68025ef4e7c1e16082cf5873b7c7172eacbfaef4ab29b7e0e3c98f8dca56", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf": "5f74f4a7089c7e7b54ad62463159ce8f0bab25a6b85268dc3872ea6001e048fb", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf.meta": "00c368b6271d3440cc8bf627b03a384d247635723923fc5ad2104b8b4007b035", + "addons/core/Configs/ERR/Factions/US.conf": "4c3da063abb6e3ee39a6e4e0c5a9ffd5eae9d209d58470ea18b45dba5528db1b", + "addons/core/Configs/ERR/Factions/US.conf.meta": "a05469aef028e9e17eba545e81e2af2887b59f0fef17dac51a23c7b8155e381b", + "addons/core/Configs/ERR/Factions/USSR.conf": "407ea27f80a64c5184c089d43cdd0bdabfc5974c84f1d2a245081fdf2afa3f30", + "addons/core/Configs/ERR/Factions/USSR.conf.meta": "057397d97096346791b51b7b13fbe18af218bcf78e9984d9c01b49a2403de611", + "addons/core/Configs/ERR/GameOverScreens.conf": "45231061911a1462d45fb6db0fecc2b0793f17b5ae71017174954ff4fbd20236", + "addons/core/Configs/ERR/GameOverScreens.conf.meta": "eb654b745c0b97b41c991694569ef4877a3c2315e0826f9556337cd68690843e", + "addons/core/Configs/ERR/VanillaFactions.conf": "db890b61b48ee15484041fd2245a862d9fa9e7ba21b1229c281ff37c448a35b1", + "addons/core/Configs/ERR/VanillaFactions.conf.meta": "ac77725c0c21974991ef47a466b88122e939de8b46fd23e68889e7674cbb2bfd", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Missions/ERR_Everon_Base.conf": "c035afca636653b7751c49f85620edac23f7217fd135b98f8f891192f66c967a", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "addons/core/Prefabs/ERR/ConvoyCrew.et": "29a525a29605386dfcf292dc2316e9fc7650ce39db9fbaa4ce4372ad0de66db4", + "addons/core/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/core/Prefabs/ERR/Extraction.et": "4d24c7811415c06386205e5bf5c132a23fcf21e96c75c7657ccd5f3ac914ac50", + "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", + "addons/core/Prefabs/ERR/FactionManager.et": "3f8157aab44e124e8d5ab5e47e3d38ad7466638ae1e97be057aa2de74c360a85", + "addons/core/Prefabs/ERR/FactionManager.et.meta": "9bf53d5e4bcbe60dd1a4ece1409fc23c349055c860708620f5f6e9716290a97d", + "addons/core/Prefabs/ERR/FieldCover.et": "e403d5cb3a5966f0cea81f15e0e825d482ba1a7a27b12498319ba45a414963b0", + "addons/core/Prefabs/ERR/FieldCover.et.meta": "83461ffa76244e1d69f20b053a9741ccdf7d127009182bd540a7e5ba6150c3d9", + "addons/core/Prefabs/ERR/GameMode.et": "4d3e5e2df28cbb8292c436ae05d4fc7e5ca789a123450a6968d9a718b6ecef20", + "addons/core/Prefabs/ERR/GameMode.et.meta": "106769cd34525c9d440057072836cb7401a6752148c40edd7fe61c03bd58328c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et": "0157bc235eeb78a0e1373b561fd22a1dcb225c833ff7c2d4abae688bca0ec92a", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et.meta": "da6f065cb2414b5a4cbe9ef0f0b1295b2466f26ad406c0bddb83845d4598efb3", + "addons/core/Prefabs/ERR/MortarCrew.et": "21086e886fe3199624208c9a866f883ec109f7d08746c2b56b497e59857fb656", + "addons/core/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/core/Prefabs/ERR/ObjectiveDocument.et": "5118ecaf9d2038eea44a4b785f05d2e78781dc1387249aa58a6782c7e6752e14", + "addons/core/Prefabs/ERR/ObjectiveDocument.et.meta": "eaba9903be147b98a1106e2273e2270773df73b9b22f2cd4e20136a8e281382e", + "addons/core/Prefabs/ERR/Patrol.et": "d3eca8fe9197c57a27a285cdb3baf168b037b198d92b39df28a338ae2cfd0c74", + "addons/core/Prefabs/ERR/Patrol.et.meta": "7c5da568fa2fcf0709ee2959253cb068d7c7ed7c2467af3b247a7e70efd96b69", + "addons/core/Prefabs/ERR/Prison.et": "24e942dea876aeeff5778c402098099a62f9a7efca61a08036e1d2bfeec9923f", + "addons/core/Prefabs/ERR/Prison.et.meta": "2e426ef3de68f4107907854b51e818bc11d84649a01c538e3f18dd9ebec766bb", + "addons/core/Prefabs/ERR/PrisonDoor.et": "c45d5aa239efa8934dc5d0367dc8e196c15ed04ad72efdaad574ce01dca91e84", + "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", + "addons/core/Prefabs/ERR/PrisonWall.et": "b0cb8fb38716f083f86e39fb4f84f275e17855d4d2558b2da2b488fb12b39121", + "addons/core/Prefabs/ERR/PrisonWall.et.meta": "0294bc5dbb56f90f8153d62459bb0a6ad91d76a479812bbec9c7db182fdb58d6", + "addons/core/Prefabs/ERR/Prisoner.et": "e6d345ac98ad9ec742bf6c3b8686839c3256df9833d31bb4bdf605cd41d0ba5c", + "addons/core/Prefabs/ERR/Prisoner.et.meta": "974278ba49fafeed70b619a0067bbc70ae4d534be441c812ce2bef4a5fb3c022", + "addons/core/Prefabs/ERR/Radio.et": "8e15f4795a7459e95dd5e5cb61940b7619452bee2dcdfb8eaa00154acb3308cb", + "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", + "addons/core/Prefabs/ERR/SpectatorCamera.et": "bffb102272eb888d1f8d8c32c7515e62751d3feb48ef4713227f040d59c42db6", + "addons/core/Prefabs/ERR/SpectatorCamera.et.meta": "2a16558f93915e31908a674509e9c89976470f78a84a1174a64b94b68b8f77ad", + "addons/core/Prefabs/ERR/SupplyCache.et": "4c97b0514fe7e723046f40f0b396f6573b12eb9981ca5df70b9e8aa3cf29323e", + "addons/core/Prefabs/ERR/SupplyCache.et.meta": "2f5de3a4aab1e9d0e35521f48dc57b95bd6e449c383dec4f1c258e10295904cb", + "addons/core/Prefabs/ERR/SupplySite.et": "f33681281d26676fac88736091834d5a7b87fe0fa01883582542df964dcfc694", + "addons/core/Prefabs/ERR/SupplySite.et.meta": "b41944b12eb3528ff7a3ac94258b18c66ef161aa6a38894aee300a1ac4798630", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et": "29f157849f413261494a63d4d5b0a97e8bbe61cb076efcd59d6c940653f23352", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et.meta": "544c94cf1c26757a10654de7856cd6cc48b821ce3bdc02add13cfe6514269915", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et": "cd4acdcecad299445952aea0adefc85f2b9e9b43f8186f100e0505c5621b3656", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et.meta": "123955da03462befb90e293b3bb856d49cc761166611b38ff47cb48ec2fbe95c", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c": "8a5ccf1fff1442dfe7ab4cb3cc858ee16adb073119144187155ade558b8c4c5f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c": "6cfb7de35bbbc18bd6d35c63da01284ffb08b8641527d49283d9b9b0cb94f8c2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "e17bd68f82012bff7c1953cf1adc86fe1cdefbc01d3b5eb88fa96f956bb4f135", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c": "b85b96f3ba49098ea7188c106f73d559e64c3db3c19c1af47e2b9c127257191f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "41a35f806d925d025534247b0705d7eb47f134d181e5b819a149be7909ba4cc1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "a47a1ee3a62d170a06b54cce3c42fac7c3645cf6a89c827a1dfe51ae0a99ce12", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "2e295b0f225208c5414728ba83333e5e0ab6eef3a708ce39eb1dfce5400c94c9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c": "360228fd45aa6ecd9426e36120b5e637d2feee1e3a4a89aac8207526b871c87e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c": "b16a8b31be20271c37c4d68c169f08b28d88993d296308b80de00715ea2b4dfe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c": "0c8ce2f3d2642999a7158000e60d8c491ed3e4b6d9c0d3d18b3e3ecc3e557196", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "0921c04c313f36f23aaab35fdea05bb479a81f01acc62c715ca3b3e366d67f81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c": "298ae30d1db1191d680a5a8f60253f9344e0e19fe9c17242c757382042364341", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c": "d5337ce8073335ccb4b03d447550a38e03d6fc9e428008be3a7b042c078f4835", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "85e4d2cb27426c07b8631ca411f4b8f5c821f9f331c8c2719cbfa71b3687f08e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c": "0897e82d7805ef56f05f2b9c23903280285ea6bfa51796a2df86bb564ece78f7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c": "53cd74d121292f6f6813c2b69e475f29dba9239bc10cbaf55ce1d7f8fb3674f6", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c": "917f9df36b93258a30b7af24b0ee52b65c5205405d8056bb721a9868010d64d1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c": "84cec6457132eff6d195bc6fc8fcee267685693edbb987cbeafaece0f7537992", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c": "5d9b5d4b1d22d57145e79b5a740863a5233706fd8b11046d2512a681f8a615a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "9f8f0844862ef98b0878290238a410d501ea99622cd5e517fcacd9a9187f889a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c": "7379cb65bde95bd1e7ffc2203a7fb7957435d379560e08b470e73a89ea6b59cf", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c": "4493c6b6070cd7d768a2fcba2d8934b782c9a221ae257a530aa6b52fa40d88a8", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c": "0d4d61c424a16008595f86fa61f3b848caf9bd6e9ebbacea9c10254d88ba378e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "1f12f58e46b2a892d22d5ec03da4a03fbf24b3b362b6d8be7f4af3e6cc21e3d1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c": "a747af09599ce4d0c52051f18f00c4624d24d137e328341b580b82e896c6bf65", + "addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/core/UI/layouts/ERR/AdminMenu.layout": "26db9780c0afffa8429602c27ee347a4e665a19a6872b15f4178d684de7e23b6", + "addons/core/UI/layouts/ERR/AdminMenu.layout.meta": "9deeece996f43b1f1fed6b5ec89279645c7b6424250200a42580cc088142e9bf", + "addons/core/UI/layouts/ERR/PreparationStatus.layout": "bd269cf8dc6f27735423743dd5b78242550518414448a0256e5e12fa6b92c459", + "addons/core/UI/layouts/ERR/PreparationStatus.layout.meta": "75b12176a443bb911fc4ad446982d762201fda42ed38736b79bc5439fca31ccc", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", + "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", + "addons/core/Worlds/ERR_Everon_Layers/default.layer": "17105538007199bfc419aa04a64debaf2da0a7b77a1dc3ba983e92bf747c862e", + "addons/core/addon.gproj": "683a522c7f7f5d5ff41c57b0f0947f3cd2ec866b656a5f449af55688956eb5fa" +} diff --git a/docs/evidence/native-2026-09-20-spawn-preload/launch-source.json b/docs/evidence/native-2026-09-20-spawn-preload/launch-source.json new file mode 100644 index 0000000..fc989b8 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/launch-source.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "launch_id": "dea250fe-a726-4c34-8597-17389bce62e8", + "captured_unix": 1789906923.4548357, + "source_root": "/home/jakub/devel/escapistsrereintroduced", + "command": [ + "gamescope", + "--backend", + "headless", + "-W", + "1280", + "-H", + "720", + "-w", + "1280", + "-h", + "720", + "-r", + "30", + "--", + "/home/jakub/.local/share/Steam/steamapps/common/Proton - Experimental/proton", + "run", + "/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger Tools/Workbench/ArmaReforgerWorkbenchSteamDiag.exe", + "-gproj", + "Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj", + "-addonsDir", + "Z:/home/jakub/devel/escapistsrereintroduced/addons", + "-profile", + "Z:/tmp/erri-spawn-preload-workbench", + "-logconsole", + "-wbModule=WorldEditor", + "-load", + "Worlds/ERR_Everon.ent", + "-plugin=ERR_ValidateWorldPlugin", + "-errPlay", + "1", + "-errSmoke", + "1", + "-errSmokeOutcome", + "hq-memory", + "-noThrow", + "-disableCrashReporter" + ], + "manifest_sha256": "edb70931e7771ccfd6c8d46c2a6990e35b3f9ee2d93b1113c30a0e570ecce2f6" +} diff --git a/docs/evidence/native-2026-09-20-spawn-preload/report.json b/docs/evidence/native-2026-09-20-spawn-preload/report.json new file mode 100644 index 0000000..e0a76da --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/report.json @@ -0,0 +1,14 @@ +{ + "log": "docs/evidence/native-2026-09-20-spawn-preload/console.log.txt", + "smoke_completions": 1, + "assertions_passed": 103, + "script_or_runtime_failures": [], + "engine_errors": [ + "14:22:07.717 RESOURCES (E): Wrong GUID/name for resource @\"{0AFDD005CD669892}Language/rhs_localization.st\" in property \"StringTableSource\"", + "14:22:07.718 RESOURCES (E): Wrong GUID/name for resource @\"{41FA2A08B6971D4C}Language/wcs_armament_localization.st\" in property \"StringTableSource\"", + "14:22:07.719 RESOURCES (E): Wrong GUID/name for resource @\"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st\" in property \"StringTableSource\"", + "14:22:07.719 RESOURCES (E): Wrong GUID/name for resource @\"{E50E557B468C7073}Language/wcs_bmp1_localization.st\" in property \"StringTableSource\"" + ], + "missing_end_screen": [], + "scope": "scripted local Workbench integration only; no multiplayer, piloting or FPS claim" +} diff --git a/docs/evidence/native-2026-09-20-spawn-preload/repository-check.log.txt b/docs/evidence/native-2026-09-20-spawn-preload/repository-check.log.txt new file mode 100644 index 0000000..7dfa193 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/repository-check.log.txt @@ -0,0 +1,455 @@ +PASS: missing, child-only, malformed, zero and duplicate prefab root IDs rejected +PASS: actual delivered road eligibility, ahead projection without chords, reservations, stock road query bounds, terrain/water/obstruction refusal and clean outputs +PASS: actual delivered-task lineage, expiry, old-order retention, native commit, release, road precision expiry and duplicate delivery +PASS: actual original-roster local handoff,100m3D bound,busy carrier/budget exclusion,origin interruption including deletedsource,normal radio delivery and per-source replay history +PASS: actual visual intake retains source/time/position/id, rejects replay, prefers usable own route, excludes simultaneous callers and conservatively resets negative-sweep dwell +PASS: actual fixture local/radio gating, immutable source/time/position, interrupted-report exclusion and exact-owner cleanup +PASS: local-handoff runner refuses wrong project/round count/insufficient deadline before runtime work +PASS: actual fixture allocator terminal/unsubmitted guard, original-group lookup and both candidate gates +PASS: actual report-derived waypoint insertion/order and tighter positive radii; no formation navigation claim +PASS: actual Place/Stop waits native pose update, bounds four attempts, preserves original position, restores pending/settled placement and respects ownership/accepted-move quarantine +PASS: actual fixture current/original recipient ownership, unresolved transfer cleanup, exact-token release and idempotent Stop +PASS: actual authored storage anchors, native trace flags, own-hierarchy exclusion, external wall/vehicle obstruction, range, unknown geometry and bounded context refusal +PASS: actual stock capture, unique finite identities, original recipients, HQ reservations, delivered report replay/cooldown and failed-downlink cleanup +PASS: actual original turret identity, native/canonical guards, scoped >=80/>=100 profile, reset, dismount/reboard, requested-skill preservation and restoration +PASS: bounded150s startup followed by exactly one120s memory window; only HQ-memory outer deadline extended +PASS: actual read migrates old valid settings, preserves explicit disabled state, rejects invalid data; next-round feedback and fixed menu remain honest +PASS: actual automatic convoy timing/authority/admission/one-attempt/manual-task/stop policy; native deployment unproved +PASS: late authoritative failure reason refreshes open result; detach, mode change and success subscriptions preserved +infantry resupply actual rules, radio transitions, owned cleanup and unresolved-operation tests passed +PASS: actual resupply Roster preserves permanent release, original slot mapping and bounded ownership +PASS: actual single-item transfer, physical ownership/native callback proof, stop quarantine, compatibility and strict original actor/vehicle boundaries +PASS: actual early ammunition policy and status-first shared uplink; complete threshold, phases, cooldown, failures and requested check-ins +PASS: actual group radio startup preservation, finite native grants, callback quarantine, frozen selection/actor ownership and bounded observation +PASS: actual maintenance native-stock check rejects missing/duplicate/wrong-identity/unowned/depleted/malformed stock and is read-only; native runtime not executed +.................. +---------------------------------------------------------------------- +Ran 18 tests in 0.265s + +OK +PASS: actual radio node rejects current incapacitation, death, ownership and faction changes despite cached inventory; one-second capability refresh remains explicit +PASS: finite maintenance stock/resource identity, bounded scenario stock and preserved two-cache clue redundancy; native interaction not claimed +PASS: actual diagnostic fallback runs only on failed missing-context call, derives unique native pilot door, preserves stock eligibility and restores prior index on success/failure; diagnostics mutate no game state. +PASS: actual native-prelude cleanup restores only original changed damage, refuses stale/incapacitated/aboard teleport; bounded five-seat/four-door fixture wiring checked. Native execution remains pending. +PASS: actual CreateTransport requires successful scoped Configure after handbrake, preserves ordinary vehicles, tracks spawned entity before failures and never treats failed lock registration as ready. +PASS: actual preparation Configure guards/idempotence/breach preservation, security eligibility/final current-body server mutation and all scoped action guards; all five seat/four door resource overrides. Native hold, prefab merge, replication and boarding remain unverified. +PASS: actual convoy cover observation/snapshot/uplink/HOLD/RESUME/cleanup transitions; native boundaries mocked, non-convoy runner opt-in refused +Enemy optics actual-service ownership, preservation, callback, deadline and bounded-inspection policies passed +PASS: actual delivered cover freshness/lineage/replay and canonical executor; owned waypoint-only hold, one resume at preserved route index, invalid ownership/crew/ledger refusal and fail-closed native recreation +PASS: actual Stinger show/set/help state precise actor-roll effects; read-only help, bounded values, malformed syntax and failed-save preservation; no rerolls/gameplay edits and no native persistence claim +PASS: new/retasked search and radio delivery ammo gates; active tasks and delivered release preserved +HQ convoy delivered-report planning and downlink regressions passed +PASS: actual own-inventory ammo inspection deduplicates loaded/carried/shared wells, separates chambers/launchers, freezes scalar snapshots and treats unsupported/capped/foreign inventory as unknown +PASS: native body fixture uses existing immutable actors, real production LOS/queued uplink, pre-delivery isolation, actual status overlap, bounded cleanup and no fabricated reports/spawns +PASS: actual native fixture lookup selects exact BODY kind/identity/message from bounded evaluations, never sighting-only Get +PASS: actual ammo snapshot comparison checks every scalar/category flag; native probe requires real roster rescan, loaded-round lower bound and separate immutable pending/Watch objects +PASS: actual delivered slot-union bodies preserve overlap/disjoint evidence, replay idempotence, status subset integrity, full-wipe closure and formation-local bounds +test_review_added_allowed_media_invalidates_snapshot (__main__.ReviewTests.test_review_added_allowed_media_invalidates_snapshot) ... ok +test_review_added_source_directory_rejected (__main__.ReviewTests.test_review_added_source_directory_rejected) ... ok +test_review_loose_root_resource_and_symlink_rejected (__main__.ReviewTests.test_review_loose_root_resource_and_symlink_rejected) ... ok +test_review_metadata_media_and_sidecars_remain_allowed_and_bound (__main__.ReviewTests.test_review_metadata_media_and_sidecars_remain_allowed_and_bound) ... ok +test_review_missing_link_rejected (__main__.ReviewTests.test_review_missing_link_rejected) ... ok +test_review_package_guard_sees_new_scripts (__main__.ReviewTests.test_review_package_guard_sees_new_scripts) ... ok +test_review_retargeted_private_link_rejected (__main__.ReviewTests.test_review_retargeted_private_link_rejected) ... ok + +---------------------------------------------------------------------- +Ran 7 tests in 0.073s + +OK +PASS: actual report methods reproduce old starvation; status-first scheduler delivers check-ins and requires 30s without combat or actual visible contacts before negative reports +PASS: actual actor group lookup retains controlled character membership when seated/inherited vehicle agents differ; missing control or parent refuses +................. +---------------------------------------------------------------------- +Ran 17 tests in 2.668s + +OK +PASS: actual convoy motion thresholds, native-only proof boundaries, physical cargo/crew ownership and pre-launch runner restrictions +PASS: actual filled rotated-footprint TraceBox and nine terrain/water samples; broad tree/cable bounds alone accepted, actual collision/nonfinite trace refused, nonzero sweep and ENTS/OCEAN flags, bounded diagnostic query and reset +PASS: actual road interpolation/projection/orientation, six35m starts,200m forward tail, preserved bends, short/far/degenerate/nonfinite/overdense/hairpin refusal and deterministic candidate ties +PASS: actual authenticated convoy dispatch, active/ready admission gates, canonical receipt, safe unconsumed preflight retry, pool refusal, retained partial failure and consumed no-retry +PASS: actual native readiness exact membership, one-time per-vehicle ledger admission/reservation, partial readiness retry without duplicate records and one-pass56-item cargo allocation without replenishment +PASS: actual per-vehicle readiness reasons, native agent/activity counts, intended-seat diagnostics, five-second throttle and read-only observation +PASS: actual convoy dispatch validates before receipt consumption, consumes once before native mutation, retains all12 partial-failure paths, refuses implicit faction replacement, and allocates exact19 bodies without capacity shrinking +PASS: own memberless prefab disables automatic spawn before initialization; actual admission rejects populated, immediate or authored-slot templates before finite crew creation +PASS: actual native seated-group arrival outside35m, native waypoint removal, idempotent advance, and convoy waypoint idempotence/arrival/deadline, missing/dead/captured/reparented crew refusal, failed native waypoint release, original vehicle/member preservation and no replacement +PASS: actual convoy receipt identity/one-use, shared60-body and128-formation caps, outstanding/native-ledger accounting, exact19-body composition, source reuse, mode/client guards and no consumed receipt refunds +PASS: actual body observer enforces owned physical roster, local death-only candidates, native trace gating, budget/cadence/caps, immutable body-only snapshots, radio retries and confirmed suppression +PASS: own initial roster, explicit retained corpse evidence, unconscious/missing/ref transfer guards, fixed strength, no replacement adoption, detached samples and surviving radio sender requirement +PASS: delivered-only status snapshots, two missed check-ins/reply deadline, last reported coordinates, episode/replay guards, confirmed-loss idempotence and 128-record cap +PASS: actual assignment cancellation/release preserves radio ownership, native waypoint lifecycle and failed-order retry boundaries +PASS: actual force ledger, finite casualties/identity/cap, routes/arrival/elevation/overshoot, server and physical guards, staggered 128-record simulated hour without world queries +PASS: actual enemy eligibility, scoped native skill floor/reset/restoration, one-roll inventory issuance, completion/failure, timeout quarantine, actor capture and terminal stop; native inventory runtime unproven +PASS: actual equipment coordinator registration dedupe, startup delay, five member scans, finite component retries, unregister/stop terminal behavior and 128-group bound +PASS: actual objective heading/threat/approach rules, persistent doctrine weight, fresh-contact coverage invalidation, stale-sweep rejection and atomic radio retask ownership +PASS: actual bounded delivered-negative coverage, replay/freshness/expiry/invalid guards, oldest eviction, small-circle and nearest-unswept selection, reserved-cell exclusion and cleanup +PASS: actual bounded pursuit roles/objectives/scores, stale search degradation, physical/busy/home guards, finite lifetime and two-bearing escape gap; no hidden player reads or spawning +PASS: actual HQ memory rules/service preserve delivered snapshots, chronology, replay bounds, decay, motion limits, identity and negative-search revisions +....... +---------------------------------------------------------------------- +Ran 7 tests in 0.027s + +OK +PASS: actual session Tick + journal router delivers each grant completion and new HQ line once, without repeats on empty/unavailable feeds or unauthorized ticks +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.232s + +OK +PASS: actual current-controller/admin/mode authorization, per-round anti-replay, token-rotation refusal, command/snapshot throttles and client scope; owner-only replies and player-tool cleanup wiring +PASS: mission provider registration is idempotent, optional dispatch is ordered, status aggregates, journals preserve cursors, aliases stay with their addons and topic help is bounded +PASS: actual menu command routing covers all ten settings, rejects unsupported keys, gates companions, and matches unique authored widgets +PASS: actual admin body authorization, god restoration, vanilla item deposit, callback completion/failure, timeout quarantine and stop/revocation paths +PASS: same-body revoke/regrant preserves pending insertions and timeout quarantine; new-body binding isolates late callbacks and never inherits god mode +PASS: actual Intel commands distinguish status/start/failure, preserve authorization gate and reject malformed requests; spent ledger is idempotent, server-only and bounded +PASS: actual reroll snapshot, authority, cancellation, ownership, accepted operations, quarantine, bounded work and stop methods; no native runtime claim +PASS: production Intel feedback coalescing, rough secrecy, rate limit, bounded dedupe, local/remote delivery and round cleanup; native UI/RPC not exercised +PASS: actual per-squad bounded report selector rotates visible targets, survives ordering/turnover, records only queued attempts, and preserves radio intake ordering +PASS: actual action denial/clearing, server request failure, single submitted-result feedback, current rescuer identity and terminal/stop suppression; native UI/RPC pending +PASS: actual physical denial precedence and transport-seat occupancy/reservation/access/lock checks +PASS: actual initial admission exhaustion and ServerTick grace; new/pending/empty/controller/life guards, normal death preserved +...................... +---------------------------------------------------------------------- +Ran 22 tests in 0.281s + +OK +...................... +---------------------------------------------------------------------- +Ran 22 tests in 29.699s + +OK +.................. +---------------------------------------------------------------------- +Ran 18 tests in 3.521s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 2.774s + +OK +............... +---------------------------------------------------------------------- +Ran 15 tests in 1.366s + +OK +PASS: actual field result/braking observer and Chat dispatch rules; one finite fixed candidate, deferred callback failure and guarded cleanup; no native measurement +PASS: actual opt-in terrain audit records one fixed1681-point grid, preserves original survey refusal/success and exact no-allocation scope; malformed heights stop without retry; no native data acquired +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.876s + +OK +PASS: actual field PI/ramp/vector caps, antiwindup, braking hypothesis, immutable admission limits and segment bounds; no native physics tested +PASS: actual100m whole-field survey sampling/4096cap, rotated coverage, all-node terrain and native trace refusal; original certificate lineage retained; no native qualification +PASS: actual QualifyField preserves original identity/footprint/time, orders complete surveys before issuance, and refuses failed stages/moved body/expired or changed world; native boundaries faked +PASS: WORKBENCH first-refusal diagnostics preserve ordinary predicates, query order/count/budget and opt-in scope; no native logging run +PASS: actual field startup delegation, immutable lease/target, braking/settling/cancel transitions, early abort, callback scope, physical terminal policy and shared landing demand; native boundaries faked +PASS: actual inherited airborne pre-CLIMB cancellation enables verified native autohover once, refuses failed enable and never writes after capture +PASS: actual Core maintenance/default/tick/stop methods; empty/populated authority, terminal reentry, no tactical resume or new scheduler; native boundaries substituted +PASS: actual finite registration, unique claims/tokens, retention/cancel/stop, readiness gating, capture/expiry retirement and bounded cross-kind order history and typed field/route construction; native boundaries faked +PASS: actual WORKBENCH route observer returns exact retained route subtype and refuses absent/field controllers +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.875s + +OK +...................... +---------------------------------------------------------------------- +Ran 22 tests in 0.215s + +OK +................ +---------------------------------------------------------------------- +Ran 16 tests in 11.322s + +OK +...... +---------------------------------------------------------------------- +Ran 6 tests in 0.018s + +OK +PASS: actual production bridge lookup, lease/world/mode/seat/capture guards, no allocation, native super ordering and read-only fixture hooks +............... +---------------------------------------------------------------------- +Ran 15 tests in 0.055s + +OK +............. +---------------------------------------------------------------------- +Ran 13 tests in 5.100s + +OK +PASS: actual route gain/caps/braking, callback selection, old landing/cancellation control and matching read-only telemetry +.............................. +---------------------------------------------------------------------- +Ran 30 tests in 0.456s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 0.218s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.121s + +OK +PASS: actual gate observer binds native registered action/context and current life, reads accumulated progress, refuses stale bindings and never revives outside original bounds +PASS: actual read-only look observer methods enforce explicit scope, pinned native camera/body/identity, normalized pose, terminal cancellation and original sample/time bounds +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.082s + +OK +....................... +---------------------------------------------------------------------- +Ran 23 tests in 0.036s + +OK +PASS: actual initial WAITING task/guide copy, configured duration, unchanged interruption and rounded progress; native task assertion pending +........ +---------------------------------------------------------------------- +Ran 8 tests in 0.012s + +OK +PASS: actual inventory adapter scope, grid placement, sole compatible host, refresh reuse, rollback, foreign hierarchy refusal and exactly-once native delegation; native compatibility pending +................................................................................. +---------------------------------------------------------------------- +Ran 81 tests in 0.565s + +OK +...... +---------------------------------------------------------------------- +Ran 6 tests in 0.075s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 0.002s + +OK +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.080s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.365s + +OK +PASS: actual observer nonce, admission pins, baseline/menu sequencing, snapshots, bounded clocks/samples, cleanup and one-attempt latch; native untested +PASS: actual corridor caps/height/hold and whole-rectangle survey bounds, terrain refusal, native trace refusal and exact certificate lineage; native route unqualified +PASS: actual route entry, fixed corridor/target, hover hold, cancellation landing freeze, shared lease/capture/deadline gate and unchanged native startup/tick sequence +PASS: finite opt-in route fixture, original native input order, meaningful physical-arrival evidence and guarded cleanup; no native launch +PASS: actual Chat route step result dispatch and scoped completion/cleanup wiring; six real early-parser refusal paths leave no prefix/profile output +PASS: actual retained-service fixture entry, immutable controller/token/deadline/count bindings, observer getter and cleanup ownership ordering; native route validation pending +PASS: actual measured cancellation gate, one-shot retained service Stop, no premature drain, immutable lease, fresh real controller readback and separate physical cancellation result policy +PASS: actual rough-intel objective selection, exact precedence, source grid dimensions and unchanged other-phase dispatch; native UI pending +................................. +---------------------------------------------------------------------- +Ran 33 tests in 0.099s + +OK +............... +---------------------------------------------------------------------- +Ran 15 tests in 0.036s + +OK +PASS: actual preparation status scope, persistent updates, spinner restoration, placeholder replacement/deletion/destruction, native observation persistence/timeout; rendering remains native-pending +PASS: actual guide/observer monitors retry native refusal, cache successful delivery, deduplicate and preserve living/preparing/spectator boundaries; native UI not exercised +PASS: actual native-end shutdown, existing terminal snapshots, reentrancy, unchanged native end data and stale preparation guards +.... +---------------------------------------------------------------------- +Ran 4 tests in 1.624s + +OK +PASS: actual three-state result wording and UI refresh; stale winner IDs never manufacture escape +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.122s + +OK +PASS: actual immutable target, bounded autohover demand, drift refusal, five-second hold and unchanged qualification/deadline +PASS: actual admission attempt budget bounds blocked/missing prerequisites; preparation, spent life and async pending remain protected +PASS: actual action permission matrix unchanged; useful phase/intel/consciousness denials, stale reason cleared, native door denial preserved; no native UI claim +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.275s + +OK +PASS: actual aircraft cancellation/stage rules, ground-only completion, expiry/capture faults, input ownership and no physical shortcuts +PASS: actual exact-instance single-use qualification, native-clock staleness/movement refusal, footprint bounds and ownership-safe ground/fault cleanup +PASS: actual optional screenshot helper flag/identity/world/life revalidation, one queued attempt, delayed capture and mission/world cleanup; no native image/presentation claim +PASS: actual yard diagnostic exact registered prison ownership, eight native-bound corner projections, no root-sibling escape, bounded duplicate/deep/wide hierarchy traversal; native projection/mask still unmeasured +PASS: actual CurrentActor, SpawnPosition and observer-selection methods reject pending/unregistered/replaced/recycled/foreign/dead bodies; canonical selection/cycling, unconscious following and prison/geometry fallback preserved; native boundaries adapted +PASS: actual native-map fixture ownership, cleanup and callback evidence fail closed; native execution remains separate +PASS: actual shared-map callbacks bind exact map/config/root, preserve replacement UI/camera, defer focus, and remove only owned delayed work +PASS: actual Intel/HQ methods and one-shot qualified readiness handoff deliver late actors once; duplicate readiness, accepted spawn, pickup/drop, death and original negative rolls do not mint assignments +PASS: Workbench-only read accessor rejects unknown/nonserver identities; Chat observes all distinct ready crew before existing shell-depletion mutation +PASS: actual native-event latch survives deselection, requires exact activity/order, detaches before cleanup, preserves failure/timeout and never infers completion from physical shot count +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.113s + +OK +PASS: actual refresh-fixture gates pin immutable observations/actual downlinks/original activity, reject unaccepted or relabelled commits, stop queueing early and require all queued contacts claimed before replay +.......................... +---------------------------------------------------------------------- +Ran 26 tests in 0.220s + +OK +PASS: actual refresh scheduler/delivery/cancellation/projectile methods reject interrupted or replayed reports, retain committed ownership, preserve immutable snapshots/aim geometry and isolate stopped or replaced orders; native radio/crew behavior remains separate +..................... +---------------------------------------------------------------------- +Ran 21 tests in 0.039s + +OK +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.042s + +OK +PASS: actual full-salvo gates require eight fresh committed physical launches, natural closure and exact finite inventory; reject partial/extra/replayed events +PASS: actual reason/availability guidance and refresh matrix; no-target copy omits cycling, hint retry retained, existing command/admin paths unchanged; native UI pending +................usage: test_native_package.py [-h] [--project {core}] --session SESSION + --compat COMPAT [--steam STEAM] + [--timeout TIMEOUT] + [--external-addons EXTERNAL_ADDONS] + [--silent-workbench | --exit-after-init] + [--continue-on-failure] +test_native_package.py: error: argument --exit-after-init: not allowed with argument --silent-workbench +................................ +---------------------------------------------------------------------- +Ran 48 tests in 9.070s + +OK +....... +---------------------------------------------------------------------- +Ran 7 tests in 0.273s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 1.680s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.336s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.064s + +OK +PASS: actual finite-courier age, token, exact ownership/callback and delivered-status admission reject stale, replayed, captured, canceled and ambiguous work +PASS: actual native-gun ownership gate rejects player/foreign/replaced/dead occupant, faction change, missing seat and missing registry +PASS: 64 bounded distinct storage candidates; native gates, five-store barrier and finite-stock ownership retained; native placement pending +PASS: 128 coarse+80 local refinement+169 airport grid candidates retain all native clearance gates; real terrain untested +PASS: actual prison registration/crossing policies reject missing/duplicate/destroyed initial gate, incomplete ownership/scan, outside-only body, jumps and stale samples; physical exit independent of later gate damage +PASS: actual prison door execution blocks direct AI/UI bypass while locked and delegates unchanged native action once after unlock and permission approval +.................. +---------------------------------------------------------------------- +Ran 18 tests in 2.368s + +OK +..... +---------------------------------------------------------------------- +Ran 5 tests in 1.245s + +OK +PASS: native local-admission snapshot rejects changed life/key/body/participant/pending state; authentication is not simulated +PASS: actual mortar report ledger prevents duplicate response after cancellation, expiry and interleaved reports; native scheduler separate +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.016s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.181s + +OK +PASS: actual aim renewal requires fresh same-report solve and original-command equivalence; native firing untested +........ +---------------------------------------------------------------------- +Ran 8 tests in 0.014s + +OK +PASS: actual startup/generation/ownership/timeout/callback policies and native-counter wait; integration preserves one-shot allocation and pending-crew cancellation +PASS: actual probe binds native events to fresh immutable commits, permits delayed emission, rejects unrelated expiry closure and premature stop +PASS: actual noSplash Load body requires both explicit diagnostic and noSplash, preserves vanilla otherwise, and handles repeated Load/reload +PASS: actual fixture method permits one native resilience operation and restores either prior protection state, including failure paths +PASS: actual safe-exit boundary policy, native action/door selection, stop/cache cleanup, separate old mechanism and opt-in runner contracts +PASS: actual one-shot deadline/stability policies and preparation ownership, fuel, cleanup integration contracts +PASS: pending-only cancellation retires copied instance intent, preserves physical/control actors, and stops once +PASS: actual short-cast hit, upward support normal, no self support and no dynamic support +PASS: actual committed-ticket structure preserves reservation after death, rejects missing bodies/seats and ends at observation expiry +PASS: actual pending callback expires an empty-server reservation once, preserves its full lease, and cancels on completion/Stop +PASS: rescue lease expiry/reordering, fresh five-second settling, independent rescue ranges and grounded upright aircraft motion boundaries +PASS: requested guard population requires complete physical conscious membership before deadline +.................................... +---------------------------------------------------------------------- +Ran 36 tests in 0.020s + +OK +.......... +---------------------------------------------------------------------- +Ran 10 tests in 0.003s + +OK +..... +---------------------------------------------------------------------- +Ran 5 tests in 1.032s + +OK +PASS: authored radio/optional-site bounds and physical horizontal/vertical boundaries +... +---------------------------------------------------------------------- +Ran 3 tests in 0.001s + +OK +PASS: all phase transitions, terminal states, defence boundaries, stale/future observations, intel discovery +PASS: Core document-discovery alias, companion-only alias exclusion, strict integer parsing and setting boundaries +PASS: player admission phase/life/identity/controller matrix, preload displacement limits, pending reservation overlap and owner exclusion +PASS: actual gate and pre-inventory document guards reject noncanonical/faction/life/disconnect/server mismatches; canonical reconnect and unconscious carried intel preserved +PASS: WB-only native fault injection restores both body mutations before checks/returns and requires eligible held-document negative/positive proof; runtime pending +PASS: actual discovery coordinates disclose stable 500m cell center until identified, then exact point, including negative/boundary coordinates +PASS: actual local admission context/selection/latch, same-round late identity, replacement/mode failure, fresh round and untouched network path +PASS: prison search packs 16 unique 3m-spaced inside-wall centers, prioritizes inner/edge positions and never bypasses clearance +PASS: recovery state excludes dead bodies, preserves reservations, requires controlled rescuers and distinguishes empty/all-dead teams +PASS: every minute round-trips, malformed clocks rejected, defaults limited to added keys, progression bounds and day duration aligned +PASS: native settings policy matches calendar boundaries 1900-2050, date/profile parsing is strict, authored defaults preserve old worlds +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.641s + +OK +. +---------------------------------------------------------------------- +Ran 1 test in 0.423s + +OK +PASS: radio authorization/discovery/phase matrix, exact distance limits, defender handover, interruption, empty samples, clock regression and duration boundary +PASS: actual radio feedback policy, initial wait, interruption persistence, resumption and terminal/new-round reset +............... +---------------------------------------------------------------------- +Ran 15 tests in 2.343s + +OK +.............................................. +---------------------------------------------------------------------- +Ran 46 tests in 0.971s + +OK +PASS: legacy values preserved, unsupported fields reported, invalid data rejected, existing files protected, runtime bounds aligned +PASS: real-carrier shortest-hop paths, 500m boundary, three-hop cap, no-manpack failure, three-second originating-call interruption, unchanged downlink hop timing, completed-hop survival, interrupted final uplink, radio loss, capture, motion, timeout, reset and network bounds +PASS: migrated aircraft availability policy (controller migration still pending) +PASS: migrated salvo offsets are deterministic, spread and bounded (native firing and complete salvo qualification are separate) +PASS: 20 prefabs have unique saved root entity IDs +PASS: 299 original script entries tracked across 18 unfinished responsibilities +PASS: 1 isolated addons, acyclic dependencies, 34 unique resources, exact vanilla/authorized external references +All repository checks passed. Native compilation and multiplayer tests are separate requirements. diff --git a/docs/evidence/native-2026-09-20-spawn-preload/runner.json.txt b/docs/evidence/native-2026-09-20-spawn-preload/runner.json.txt new file mode 100644 index 0000000..9ed86c2 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/runner.json.txt @@ -0,0 +1,32 @@ +{ + "source_provenance": "launch_snapshot", + "launch_id": "dea250fe-a726-4c34-8597-17389bce62e8", + "launch_source_manifest": "launch-source-sha256.json", + "launch_source_metadata": "launch-source.json", + "launch_source_sha256": "edb70931e7771ccfd6c8d46c2a6990e35b3f9ee2d93b1113c30a0e570ecce2f6", + "external_addons_unchanged_after_run": true, + "external_addon_count": 6, + "external_addon_inputs": "external-addons-inputs.json", + "started_unix": 1789906923.454914, + "result": "cleanup-failed", + "result_before_cleanup": "smoke-completed", + "cleanup_confirmed": false, + "cleanup_report": { + "cleanup_confirmed": false, + "idle_verified": false, + "errors": [ + "idle verification: Cannot verify disposable prefix is idle (PID 523392): Cannot classify possible Wine/runtime process 523392 (comm='enfMain', argv0='')" + ], + "orphan_cleanup": { + "attempted": false, + "reason": "noncanonical-private-prefix" + } + }, + "runner_error": "idle verification: Cannot verify disposable prefix is idle (PID 523392): Cannot classify possible Wine/runtime process 523392 (comm='enfMain', argv0='')", + "session": "/tmp/erri-spawn-preload-workbench/logs/logs_2026-09-20_14-22-05", + "rounds_required": 1, + "project": "chat", + "display": "headless Gamescope 1280x720/30Hz", + "dedicated_server": false, + "audio": "silent sink and per-test-stream mute" +} diff --git a/docs/evidence/native-2026-09-20-spawn-preload/script.log.txt b/docs/evidence/native-2026-09-20-spawn-preload/script.log.txt new file mode 100644 index 0000000..1536783 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/script.log.txt @@ -0,0 +1,364 @@ +--------------------------------------------- +Log Z:\tmp\erri-spawn-preload-workbench\logs\logs_2026-09-20_14-22-05\script.log started at 2026-09-20 14:22:08 (2026-09-20 12:22:08 UTC) + +14:22:08.884 SCRIPT : SCRIPT : Initializing scripts +14:22:08.884 SCRIPT : SCRIPT : ScriptProjectManager init +14:22:10.953 SCRIPT : SCRIPT : Compiling GameLib scripts +14:22:11.018 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +14:22:11.019 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +14:22:11.020 SCRIPT : SCRIPT : Compiling Game scripts +14:22:12.641 SCRIPT : Compiling Game scripts +14:22:12.641 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +14:22:12.641 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +14:22:13.065 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.079 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +14:22:13.130 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +14:22:13.287 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +14:22:13.319 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.333 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +14:22:13.418 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +14:22:13.418 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +14:22:13.420 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +14:22:13.462 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.487 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.487 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.489 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +14:22:13.489 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +14:22:13.525 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:22:13.561 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +14:22:14.016 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 436d9397 +14:22:14.026 SCRIPT : Module: Game; loaded 6506x files; 13190x classes; used 39263K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: 88525bf2 +14:22:15.194 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:22:15.194 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:22:38.867 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +14:22:38.867 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +14:22:38.867 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +14:22:38.867 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +14:22:38.867 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +14:22:38.868 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +14:22:38.869 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +14:22:38.870 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +14:22:38.871 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +14:22:38.903 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +14:22:42.812 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:22:42.813 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:22:59.649 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +14:22:59.682 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +14:23:04.545 SCRIPT : Map load time: 2638ms +14:23:04.556 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +14:23:04.556 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +14:23:04.558 SCRIPT (W): Can't open config file "" +14:23:04.567 SCRIPT (W): Slot_WeaponInfo Has no Content! +14:23:04.567 SCRIPT (W): Slot_Chat Has no Content! +14:23:04.567 SCRIPT (W): Slot_VON Has no Content! +14:23:04.567 SCRIPT (W): Slot_AvailableActions Has no Content! +14:23:04.567 SCRIPT (W): Slot_Vehicle Has no Content! +14:23:04.567 SCRIPT (W): Slot_GameVersion Has no Content! +14:23:04.567 SCRIPT (W): Slot_Notifications Has no Content! +14:23:04.567 SCRIPT (W): Slot_Hints Has no Content! +14:23:04.583 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:23:04.584 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:23:04.589 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +14:23:04.657 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +14:23:04.672 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +14:23:04.889 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +14:23:06.550 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +14:23:06.574 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +14:23:06.576 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +14:23:06.613 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +14:23:06.617 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +14:23:06.694 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +14:23:06.694 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +14:23:06.706 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +14:23:06.776 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +14:23:06.776 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +14:23:06.779 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +14:23:06.780 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +14:23:06.784 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +14:23:06.787 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +14:23:06.787 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +14:23:06.789 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +14:23:06.789 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +14:23:06.789 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +14:23:06.790 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +14:23:06.790 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +14:23:06.790 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +14:23:06.790 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:23:06.791 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +14:23:06.791 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +14:23:06.791 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:23:06.791 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +14:23:06.792 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +14:23:06.792 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:23:06.792 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.792 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.793 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.793 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.793 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:06.793 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:23:07.810 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:07.810 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:07.810 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:07.810 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:08.056 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.08,63.5084,7499.7> up=0.995306 +14:23:08.056 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.114774 angularSpeed=0.0696385 +14:23:08.057 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:08.057 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.06,63.615,7501.97> +14:23:08.057 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.06,63.315,7501.97> terrainY=63.3161 tireTerrainGap=-0.00111771 +14:23:08.057 SCRIPT : ERR GEAR SUPPORT: center=<7012.06,63.615,7501.97> radius=0.3 bottom=<7012.06,63.315,7501.97> fraction=0.4493 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.00115204 +14:23:08.057 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.88,64.6077,7497.71> +14:23:08.058 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.88,64.1577,7497.71> terrainY=64.1547 tireTerrainGap=0.00295258 +14:23:08.058 SCRIPT : ERR GEAR SUPPORT: center=<7009.88,64.6077,7497.71> radius=0.45 bottom=<7009.88,64.1577,7497.71> fraction=0.468312 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00302887 +14:23:08.058 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2633,7497.76> +14:23:08.058 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8133,7497.76> terrainY=63.817 tireTerrainGap=-0.00372696 +14:23:08.058 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2633,7497.76> radius=0.45 bottom=<7014.43,63.8133,7497.76> fraction=0.4375 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00374985 +14:23:08.059 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:08.320 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:08.320 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:08.321 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:08.321 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:23:08.834 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:08.834 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:08.835 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:09.100 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.1,63.5416,7499.73> up=0.994238 +14:23:09.101 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0454444 angularSpeed=0.0231645 +14:23:09.101 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:09.101 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.06,63.6159,7502> +14:23:09.101 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.06,63.3159,7502> terrainY=63.3123 tireTerrainGap=0.0035553 +14:23:09.102 SCRIPT : ERR GEAR SUPPORT: center=<7012.06,63.6159,7502> radius=0.3 bottom=<7012.06,63.3159,7502> fraction=0.470785 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00357437 +14:23:09.102 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.94,64.6012,7497.72> +14:23:09.102 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.94,64.1512,7497.72> terrainY=64.147 tireTerrainGap=0.0042038 +14:23:09.102 SCRIPT : ERR GEAR SUPPORT: center=<7009.94,64.6012,7497.72> radius=0.45 bottom=<7009.94,64.1512,7497.72> fraction=0.473625 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00419617 +14:23:09.102 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.48,64.2631,7497.8> +14:23:09.103 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.48,63.8131,7497.8> terrainY=63.8142 tireTerrainGap=-0.0010643 +14:23:09.103 SCRIPT : ERR GEAR SUPPORT: center=<7014.48,64.2631,7497.8> radius=0.45 bottom=<7014.48,63.8131,7497.8> fraction=0.449597 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00108719 +14:23:09.103 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:09.103 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +14:23:09.352 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:09.353 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:09.353 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:23:09.354 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:09.870 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:09.871 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:09.871 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:09.871 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +14:23:10.129 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.12,63.5268,7499.75> up=0.993912 +14:23:10.129 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0351752 angularSpeed=0.0392251 +14:23:10.130 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:10.130 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6118,7502.02> +14:23:10.130 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3118,7502.02> terrainY=63.311 tireTerrainGap=0.000785828 +14:23:10.130 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6118,7502.02> radius=0.3 bottom=<7012.07,63.3118,7502.02> fraction=0.457986 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00075531 +14:23:10.130 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5938,7497.73> +14:23:10.131 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1438,7497.73> terrainY=64.1414 tireTerrainGap=0.00239563 +14:23:10.131 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5938,7497.73> radius=0.45 bottom=<7009.98,64.1438,7497.73> fraction=0.465769 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00247192 +14:23:10.131 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.26,7497.84> +14:23:10.131 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.81,7497.84> terrainY=63.8118 tireTerrainGap=-0.00181961 +14:23:10.131 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.26,7497.84> radius=0.45 bottom=<7014.52,63.81,7497.84> fraction=0.446111 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00185394 +14:23:10.131 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:10.384 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:10.385 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:10.385 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:10.386 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:10.893 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:10.894 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:10.894 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:10.895 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:23:11.400 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.527,7499.75> up=0.993819 +14:23:11.400 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:23:11.400 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:11.400 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6124,7502.02> +14:23:11.400 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3124,7502.02> terrainY=63.3109 tireTerrainGap=0.00150681 +14:23:11.401 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6124,7502.02> radius=0.3 bottom=<7012.08,63.3124,7502.02> fraction=0.461324 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00149155 +14:23:11.401 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5924,7497.73> +14:23:11.401 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1424,7497.73> terrainY=64.1405 tireTerrainGap=0.00190735 +14:23:11.401 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5924,7497.73> radius=0.45 bottom=<7009.98,64.1424,7497.73> fraction=0.463264 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00192261 +14:23:11.401 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2594,7497.84> +14:23:11.401 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8094,7497.84> terrainY=63.8117 tireTerrainGap=-0.0022316 +14:23:11.402 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2594,7497.84> radius=0.45 bottom=<7014.52,63.8094,7497.84> fraction=0.444444 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00222015 +14:23:11.402 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:11.402 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:11.402 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:11.403 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:11.403 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:23:11.907 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:11.907 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:11.907 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:11.908 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:12.422 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.527,7499.75> up=0.993819 +14:23:12.422 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:23:12.422 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:23:12.422 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6124,7502.02> +14:23:12.423 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3124,7502.02> terrainY=63.3109 tireTerrainGap=0.00150681 +14:23:12.423 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6124,7502.02> radius=0.3 bottom=<7012.08,63.3124,7502.02> fraction=0.461324 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00149155 +14:23:12.423 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5924,7497.73> +14:23:12.423 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1424,7497.73> terrainY=64.1405 tireTerrainGap=0.00190735 +14:23:12.423 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5924,7497.73> radius=0.45 bottom=<7009.98,64.1424,7497.73> fraction=0.463264 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00192261 +14:23:12.424 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2594,7497.84> +14:23:12.424 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8094,7497.84> terrainY=63.8117 tireTerrainGap=-0.0022316 +14:23:12.424 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2594,7497.84> radius=0.45 bottom=<7014.52,63.8094,7497.84> fraction=0.444444 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00222015 +14:23:12.424 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:23:12.424 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:23:12.425 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +14:23:12.445 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +14:23:12.446 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +14:23:12.446 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +14:23:12.447 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +14:23:12.447 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +14:23:12.447 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +14:23:12.447 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +14:23:13.180 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +14:23:13.438 SCRIPT : ERR SMOKE PASS: native spawn preload retains preparation text after server sites are ready +14:23:14.190 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.39,7158.5> +14:23:14.457 SCRIPT : ERR SMOKE PASS: prisoner admitted only after enabled native spawn preload finishes +14:23:14.458 SCRIPT : ERR SMOKE PASS: new identity may enter prison +14:23:14.458 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +14:23:14.458 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +14:23:14.458 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +14:23:14.458 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +14:23:14.458 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +14:23:14.458 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +14:23:14.459 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +14:23:14.460 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +14:23:14.460 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +14:23:14.460 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +14:23:14.460 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +14:23:14.464 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +14:23:14.464 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +14:23:14.465 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +14:23:14.465 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +14:23:14.470 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +14:23:14.470 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +14:23:14.470 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +14:23:14.470 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +14:23:14.470 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +14:23:14.471 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +14:23:14.471 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +14:23:14.471 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +14:23:51.515 SCRIPT : ERR SMOKE PASS: HQ memory automatic startup owns one canonical six-vehicle task +14:23:51.515 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 0 +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 1 +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.516 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 2 +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.517 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 3 +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.518 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 4 +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.519 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 5 +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy includes confirmed native turret gunners +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory automatic nineteen-body convoy respects shared physical budget +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory manual request after automatic startup cannot duplicate the convoy +14:23:51.520 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +14:23:51.521 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory road fixture has native Everon road manager +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory road fixture native query stays within bounded road count +14:23:51.522 SCRIPT : ERR SMOKE PASS: HQ memory arranged detached road snapshots accepted by private memory +14:23:51.523 SCRIPT : ERR SMOKE PASS: HQ memory native road choice is forward, nearby, dry and physically clear +14:23:51.523 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:23:51.524 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:23:51.524 SCRIPT : ERR SMOKE PASS: HQ memory chosen intercept lies on an actual native road segment +14:23:51.524 SCRIPT : ERR ROAD FIXTURE: arranged origin=<5896.23,149.499,6644.17> velocity=<2.25769,0,1.97559> chosen=<5941.39,149.611,6683.68> attempts=1 +14:23:51.524 SCRIPT : ERR SMOKE PASS: HQ memory same arranged belief aged46seconds refuses road interception +14:23:51.524 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +14:23:51.525 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +14:23:51.525 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +14:23:53.033 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +14:23:53.033 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +14:23:59.120 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +14:23:59.120 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +14:24:07.302 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +14:24:07.302 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +14:24:15.467 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +14:24:15.468 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +14:24:23.546 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +14:24:31.674 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +14:24:31.674 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +14:24:31.675 SCRIPT : INFO: KILL SUICIDE: jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) from US faction at <6088.5, 211.39, 7158.5> killed himself! +14:24:35.784 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +14:24:35.784 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +14:24:35.784 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +14:25:02.642 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +14:25:02.642 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +14:25:02.642 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +14:25:02.644 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +14:25:02.814 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +14:25:02.816 SCRIPT (W): Slot_Chat Has no Content! +14:25:02.817 SCRIPT (W): Slot_VON Has no Content! +14:25:02.817 SCRIPT (W): Slot_GameVersion Has no Content! +14:25:02.817 SCRIPT (W): Slot_Notifications Has no Content! +14:25:04.940 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +14:25:04.940 SCRIPT : -- Stack trace -- +14:25:04.941 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:25:04.941 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:25:04.941 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +14:25:04.941 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:25:04.941 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:25:04.941 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:25:04.941 SCRIPT : ----------------- +14:25:04.942 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +14:25:04.942 SCRIPT : -- Stack trace -- +14:25:04.942 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:25:04.942 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:25:04.942 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +14:25:04.942 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:25:04.942 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:25:04.942 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:25:04.943 SCRIPT : ----------------- +14:25:04.944 SCRIPT (W): Slot_Chat Has no Content! +14:25:04.944 SCRIPT (W): Slot_VON Has no Content! +14:25:04.944 SCRIPT (W): Slot_GameVersion Has no Content! +14:25:04.945 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-spawn-preload/subsequent-idle-verification.json b/docs/evidence/native-2026-09-20-spawn-preload/subsequent-idle-verification.json new file mode 100644 index 0000000..5759480 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-preload/subsequent-idle-verification.json @@ -0,0 +1,9 @@ +{ + "checked_unix": 1789907170.8800585, + "prefix": "/tmp/erri-merged-tools-prefix", + "prefix_idle": true, + "current_source_matches_launch": true, + "console_sha256": "0bd4434d284f52c7d6a0dcb22892b372605ad2295739492485ed5ede3f443838", + "runner_result_preserved": "cleanup-failed", + "note": "Supplemental check after the native runner exited. Original cleanup failure and dependency errors remain; this is not a clean native qualification." +} diff --git a/docs/evidence/native-2026-09-20-spawn-scene/console.log.txt b/docs/evidence/native-2026-09-20-spawn-scene/console.log.txt new file mode 100644 index 0000000..b3f4e32 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/console.log.txt @@ -0,0 +1,699 @@ +--------------------------------------------- +Log Z:\tmp\erri-spawn-scene-workbench-v2\logs\logs_2026-09-20_14-32-49\console.log started at 2026-09-20 14:32:49 (2026-09-20 12:32:49 UTC) + +14:32:49.009 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-spawn-scene-workbench-v2\logs\logs_2026-09-20_14-32-49' to filesystem under name logs +14:32:49.009 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-spawn-scene-workbench-v2\profile' to filesystem under name profile +14:32:49.009 ENGINE : FileSystem: Current working directory: 'Z:\home\jakub\.local\share\Steam\steamapps\common\Arma Reforger Tools\Workbench\' +14:32:49.010 PROFILING : Workbench Create Engine took: 8.804800 ms +14:32:50.051 INIT : INIT : Workbench Init Engine +14:32:50.051 ENGINE : Initializing engine, version 192142 +14:32:50.051 ENGINE : CLI Params: -gproj Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj -addonsDir Z:/home/jakub/devel/escapistsrereintroduced/addons -profile Z:/tmp/erri-spawn-scene-workbench-v2 -logconsole -wbModule WorldEditor -load Worlds/ERR_Everon.ent -plugin ERR_ValidateWorldPlugin -errPlay 1 -errSmoke 1 -errSmokeOutcome hq-memory -noThrow -disableCrashReporter +14:32:50.063 ENGINE : Addon dirs: +14:32:50.063 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/' +14:32:50.063 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons' +14:32:50.063 ENGINE : dir: './addons' +14:32:50.063 ENGINE : dir: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons' +14:32:50.063 ENGINE : Available addons: +14:32:50.063 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +14:32:50.063 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed) +14:32:50.063 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed) +14:32:50.063 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed) +14:32:50.063 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed) +14:32:50.063 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed) +14:32:50.063 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed) +14:32:50.063 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed) +14:32:50.063 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed) +14:32:50.063 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\core' to filesystem under name ERR_Core +14:32:50.064 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1 +14:32:50.065 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore +14:32:50.068 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments +14:32:50.072 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core +14:32:50.074 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02 +14:32:50.081 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01 +14:32:50.188 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ArmaReforger/' (pak count: 14) to filesystem under name ArmaReforger +14:32:50.191 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core +14:32:50.191 ENGINE : CPU vendor : AuthenticAMD +14:32:50.191 ENGINE : CPU type : 2 +14:32:50.191 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor +14:32:50.191 ENGINE : CPU cache info : L1 [Inst 32KB, Data 32KB], L2 [Unif 512KB], L3 [Unif 16384KB] +14:32:50.191 ENGINE : CPU count logical : 16 +14:32:50.191 ENGINE : CPU count physical : 8 +14:32:50.191 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2 +14:32:50.191 RESOURCES : ResourceDB: loading cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +14:32:50.192 RESOURCES : ResourceDB: loading cache (id=1 name=WCS_BMP-1 path=Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb) +14:32:50.192 RESOURCES : ResourceDB: loading cache (id=2 name=WCS_SpaceCore path=Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb) +14:32:50.193 RESOURCES : ResourceDB: loading cache (id=3 name=WCS_Armaments path=Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb) +14:32:50.196 RESOURCES : ResourceDB: loading cache (id=4 name=RHS_Core path=Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb) +14:32:50.206 RESOURCES : ResourceDB: loading cache (id=5 name=RHS_Content_02 path=Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb) +14:32:50.208 RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Content_01 path=Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb) +14:32:50.214 RESOURCES : ResourceDB: loading cache (id=7 name=ArmaReforger path=Z:/tmp/erri-spawn-scene-workbench-v2/addons/ArmaReforger/resourceDatabase.rdb) +14:32:50.356 RESOURCES : ResourceDB: loading cache (id=8 name=core path=./addons/core/resourceDatabase.rdb) +14:32:50.358 RESOURCES : ResourceDB: loading cache (id=9 name=profile path=Z:\tmp\erri-spawn-scene-workbench-v2\profile/resourceDatabase.rdb) +14:32:50.358 RESOURCES : ResourceDB: loading cache (id=10 name=logs path=Z:\tmp\erri-spawn-scene-workbench-v2\logs\logs_2026-09-20_14-32-49/resourceDatabase.rdb) +14:32:50.517 RESOURCES : RESOURCES : ResourceDB: full scan +14:32:50.522 RESOURCES : RESOURCES : scanning... +14:32:50.522 RESOURCES : RESOURCES : scanning @"ERR_Core" +14:32:50.539 RESOURCES : RESOURCES : scanning @"WCS_BMP-1" +14:32:50.542 RESOURCES : RESOURCES : scanning @"WCS_SpaceCore" +14:32:50.545 RESOURCES : RESOURCES : scanning @"WCS_Armaments" +14:32:50.550 RESOURCES : RESOURCES : scanning @"RHS_Core" +14:32:50.561 RESOURCES : RESOURCES : scanning @"RHS_Content_02" +14:32:50.565 RESOURCES : RESOURCES : scanning @"RHS_Content_01" +14:32:50.573 RESOURCES : RESOURCES : scanning @"ArmaReforger" +14:32:50.785 RESOURCES : RESOURCES : scanning @"core" +14:32:50.789 RESOURCES : RESOURCES : scanning @"profile" +14:32:50.790 RESOURCES : RESOURCES : scanning @"logs" +14:32:50.790 RESOURCES : RESOURCES : processing meta-files... +14:32:50.858 RESOURCES : RESOURCES : processing files... +14:32:50.859 INIT : Workbench startup +14:32:50.859 INIT : Workbench Init Engine +14:32:50.859 RESOURCES : ResourceDB: full scan +14:32:50.859 RESOURCES : processing files... +14:32:50.859 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +14:32:50.870 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +14:32:50.870 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +14:32:50.870 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +14:32:50.870 RESOURCES : RESOURCES : processing folders... +14:32:50.878 RESOURCES : RESOURCES : creating GUID-item mapping... +14:32:50.895 RESOURCES : RESOURCES : building tree... +14:32:50.951 PROFILING : ResourceDB: full scan took: 434.246200 ms +14:32:50.953 RESOURCES : ResourceDB: saving cache (id=0 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +14:32:50.954 RESOURCES : ResourceDB: written 15754/15754 bytes +14:32:50.954 RESOURCES : ResourceDB: cache successfully saved +14:32:50.955 RESOURCES : ResourceDB: saving cache (id=9 name=profile path=Z:\tmp\erri-spawn-scene-workbench-v2\profile/resourceDatabase.rdb) +14:32:50.956 RESOURCES : ResourceDB: written 51/51 bytes +14:32:50.956 RESOURCES : ResourceDB: cache successfully saved +14:32:50.956 RESOURCES : ResourceDB: saving cache (id=10 name=logs path=Z:\tmp\erri-spawn-scene-workbench-v2\logs\logs_2026-09-20_14-32-49/resourceDatabase.rdb) +14:32:50.957 RESOURCES : ResourceDB: written 208/208 bytes +14:32:50.957 RESOURCES : ResourceDB: cache successfully saved +14:32:50.957 ENGINE : GameProject load +14:32:50.957 ENGINE : Loaded addons: +14:32:50.957 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' +14:32:50.957 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' +14:32:50.957 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' +14:32:50.957 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' +14:32:50.957 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' +14:32:50.957 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' +14:32:50.957 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' +14:32:50.957 ENGINE : gproj: 'Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' +14:32:50.957 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +14:32:50.960 ENGINE : GameProject load +14:32:50.960 INIT : GameProject load project data @"Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_595F2BF2F44836FB/addon.gproj" +14:32:50.960 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +14:32:50.960 INIT : GameProject load project data @"Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_629B2BA37EFFD577/addon.gproj" +14:32:50.960 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +14:32:50.960 INIT : GameProject load project data @"Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +14:32:50.960 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +14:32:50.961 INIT : GameProject load project data @"Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +14:32:50.961 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +14:32:50.961 ENGINE : Loading custom engine user config '$profile:.save/app1874910_user76561198020202999/settings/ReforgerEngineSettings.conf' +14:32:50.961 ENGINE : No Enfusion settings file loaded. Continuing with defaults +14:32:51.055 RENDER : (OK) Adapter 'AMD Radeon RX 6950 XT (RADV NAVI21)' supports feature level 12_0 +14:32:51.057 RENDER : Basic screen setup: +14:32:51.057 RENDER : Back buffer format : TEXFMT_R8G8B8A8_SRGB (29) +14:32:51.057 RENDER : MSAA : none +14:32:51.068 RENDER : AMD AGS library initialized, version 6.1.0 x DLL 6.1.0 +14:32:51.068 RENDER : Extendeded AMD info for AMD Radeon RX 6950 XT (RADV NAVI21) (primary device) +14:32:51.068 RENDER : * architecture RDNA2, 80 CUs, 40 WGPs (for RDNA), 64 ROPs +14:32:51.068 RENDER : * core clocks 2720 MHz, memory 1124 MHz +14:32:51.068 RENDER : * TFlops 27.9, memory bandwidth (562.0 GB/s) +14:32:51.068 RENDER : AMD AGS correctly initialized +14:32:51.068 RENDER : GPU_ATI (0x1002) (AMD Radeon RX 6950 XT (RADV NAVI21)) with 1 GPU detected, VRAM 16128MB (fast 0MB), shared 64362MB, driver version 99.19.02-230831a-396538C-AMD-Software-Adrenalin-Edition +14:32:51.068 RENDER : Detected output devices: +14:32:51.068 RENDER : * 1 device/s connected to AMD Radeon RX 6950 XT (RADV NAVI21): +14:32:51.068 RENDER : Generic Non-PnP Monitor (\\.\DISPLAY1), 1280x720 (offset 0x0), 30Hz +14:32:51.068 RENDER : Concurrent frames limit 2 +14:32:51.143 RENDER : DX12 device successfully created by AMD AGS library +14:32:51.143 RENDER : * user markers not supported in this version AMD SW +14:32:51.143 RENDER : Graphics device features +14:32:51.143 RENDER : Needed: +14:32:51.143 RENDER : * Highest supported shader model: 6.8 (6.0 needed) +14:32:51.143 RENDER : Optional: +14:32:51.143 RENDER : * Allow tearing (VSYNC) : 1 +14:32:51.143 RENDER : * 16 bits : 1 +14:32:51.143 RENDER : * Resource heap tier : 3 +14:32:51.143 RENDER : * Persistent heaps (DRED) : 1 +14:32:51.143 RENDER : * DRED 1.2 is supported by compiler +14:32:51.164 RENDER : Main RT format setup. +14:32:51.164 RENDER : Main RT format for quality 0 : TEXFMT_R11G11B10_FLOAT (26) +14:32:51.164 RENDER : Main RT format for quality 1 : TEXFMT_R16G16B16A16_FLOAT (10) +14:32:51.166 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=16 +14:32:51.199 PROFILING : Settings changed took: 0.018400 ms +14:32:51.652 AUDIO : Endpoint: Speakers (PulseAudio Output) +14:32:51.652 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +14:32:51.653 AUDIO : Audio client: +14:32:51.653 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +14:32:51.656 RENDER : RENDER : Reload shaders +14:32:51.656 RENDER : Enfusion shader version 13 +14:32:51.656 INIT : INIT : ShaderListReload +14:32:51.656 PROFILING : ShaderListReload took: 0.000500 ms +14:32:51.796 AUDIO : Endpoint: Speakers (PulseAudio Output) +14:32:51.796 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +14:32:51.797 AUDIO : Audio client: +14:32:51.797 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +14:32:51.894 RENDER : Loaded 3752 newer shader binaries +14:32:51.894 PROFILING : Reload shaders took: 238.271300 ms +14:32:51.894 ENGINE : Initializing inputs. +14:32:51.908 NETWORK : Initializing networking. +14:32:51.908 NETWORK : Using new GameRplScheduler. +14:32:51.909 SCRIPT : SCRIPT : Initializing scripts +14:32:51.909 SCRIPT : SCRIPT : ScriptProjectManager init +14:32:53.632 PROFILING : ScriptProjectManager init took: 1723.424200 ms +14:32:53.665 PROFILING : Initializing scripts took: 1756.242300 ms +14:32:53.682 ENGINE : Enfusion engine successfully created. +14:32:53.682 PROFILING : Workbench Init Engine took: 3630.569400 ms +14:32:53.682 INIT : INIT : Workbench Create Game +14:32:53.692 GUI : Using default language (en_us) +14:32:53.693 GUI : Loading 'en_us' localization file. +14:32:53.693 INIT : INIT : Loading StringTable +14:32:53.719 PROFILING : Loading StringTable took: 26.146400 ms +14:32:53.719 SCRIPT : SCRIPT : Compiling GameLib scripts +14:32:53.773 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +14:32:53.773 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +14:32:53.774 PROFILING : Compiling GameLib scripts took: 55.297300 ms +14:32:53.774 SCRIPT : SCRIPT : Compiling Game scripts +14:32:55.100 INIT : Workbench Create Game +14:32:55.100 SCRIPT : Compiling Game scripts +14:32:55.100 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +14:32:55.100 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +14:32:55.426 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,223": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.436 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +14:32:55.478 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +14:32:55.618 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.628 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +14:32:55.693 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +14:32:55.693 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +14:32:55.695 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +14:32:55.726 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.745 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.745 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.747 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +14:32:55.747 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +14:32:55.774 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.801 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +14:32:56.175 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 436d9397 +14:32:56.183 SCRIPT : Module: Game; loaded 6507x files; 13191x classes; used 39266K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: e475ae05 +14:32:56.229 PROFILING : Compiling Game scripts took: 2454.767100 ms +14:32:56.236 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +14:32:56.281 ENGINE : Game successfully created. +14:32:56.282 PROFILING : Workbench Create Game took: 2600.362400 ms +14:32:56.290 DEFAULT : Using thumbnail cache directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/thumbnails +14:32:57.154 INIT : INIT : Workbench Reload Game +14:32:57.156 ENGINE : Game destroyed. +14:32:57.162 GUI : Using default language (en_us) +14:32:57.162 GUI : Loading 'en_us' localization file. +14:32:57.162 INIT : INIT : Loading StringTable +14:32:57.173 PROFILING : Loading StringTable took: 10.939100 ms +14:32:57.173 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +14:32:57.181 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:32:57.181 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:32:57.181 ENGINE : Game successfully created. +14:32:57.181 ENGINE : Game successfully initialized. +14:32:57.181 PROFILING : Workbench Reload Game took: 26.772000 ms +14:32:57.911 WORLD : WORLD : Entities load '$ERR_Core:Worlds/ERR_Everon.ent' +14:32:58.900 PROFILING : Entities load took: 987.791600 ms +14:32:58.910 WORLD : WORLD : CreateEntities +14:32:58.914 WORLD : WORLD : NotifyBeforeEntitiesCreated +14:32:58.914 PROFILING : NotifyBeforeEntitiesCreated took: 0.002300 ms +14:32:58.914 WORLD : WORLD : Wait for preloading data +14:32:58.914 PROFILING : Wait for preloading data took: 0.001700 ms +14:32:59.018 ENTITY : Create entity @"ENTITY:2" ('Eden', GenericTerrainEntity) at <0.000000 0.000000 0.000000> @"{5AD924374E8C7AF6}Prefabs/World/Game/Eden/GenericTerrain_Eden.et" +14:32:59.018 PROFILING : PROFILING : Terrain load +14:33:00.582 PROFILING : Terrain load took: 1563.615600 ms +14:33:04.498 WORLD : CreateEntities +14:33:04.498 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:33:04.498 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:33:04.498 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:33:14.095 WORLD : WORLD : NotifyBeforeEntitiesInitialized +14:33:14.096 PROFILING : NotifyBeforeEntitiesInitialized took: 0.005200 ms +14:33:14.532 WORLD : WORLD : NotifyEntitiesInitialized +14:33:14.532 TERRAIN : TERRAIN : Initializing road networks... +14:33:14.534 PROFILING : Initializing road networks... took: 2.217300 ms +14:33:14.534 PROFILING : NotifyEntitiesInitialized took: 2.499400 ms +14:33:14.535 PROFILING : CreateEntities took: 15625.399900 ms +14:33:14.707 PROFILING : * WorldEditor: LoadWorld: 16800.629200 ms +14:33:16.256 TERRAIN : Loading tile map config (worlds/Eden/Eden/tileMap.conf) +14:33:16.257 TERRAIN : Loading minimap config (worlds/Eden/Eden/miniMap.conf) +14:33:16.258 TERRAIN : The default minimap texture ('worlds/Eden/EdenRasterized.edds') not found. Trying 'worlds/Eden/Eden.edds'... +14:33:16.258 TERRAIN : The default minimap texture ('worlds/Eden/Eden.edds') not found. Skipping... +14:33:16.350 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +14:33:16.350 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +14:33:16.350 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +14:33:16.354 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +14:33:16.375 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +14:33:16.397 BACKEND : Attempting online Game Config instead. +14:33:19.371 INIT : INIT : Workbench Reload Game +14:33:19.373 ENGINE : Game destroyed. +14:33:19.380 GUI : Using default language (en_us) +14:33:19.380 GUI : Loading 'en_us' localization file. +14:33:19.380 INIT : INIT : Loading StringTable +14:33:19.402 PROFILING : Loading StringTable took: 21.042000 ms +14:33:19.402 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +14:33:19.410 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:33:19.410 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:33:19.410 ENGINE : Game successfully created. +14:33:19.411 ENGINE : Game successfully initialized. +14:33:19.411 PROFILING : Workbench Reload Game took: 39.669400 ms +14:33:19.413 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +14:33:19.522 PLATFORM : Save data from container 'settings' have been loaded +14:33:19.612 PLATFORM : Save data from container 'sessions' have been loaded +14:33:19.709 DEFAULT : [SaveGameManager] Starting new playthrough nr.0 '' for mission '{B6C516F86302C679}Worlds/ERR_Everon.ent'. +14:33:19.718 WORLD : WORLD : Game::LoadEntities +14:33:19.718 WORLD : WORLD : Initializing world systems @"{1C60D2EDA2B468B8}Configs/Systems/BaseGameModeSystems.conf" +14:33:19.719 NETWORK : Enabled lag compensation, 29 frames with 100 FPS and 280 ms rewind limits. +14:33:19.719 WORLD : WORLD : CreateEntities +14:33:19.719 WORLD : WORLD : CreateEntities +14:33:19.719 WORLD : WORLD : NotifyBeforeEntitiesCreated +14:33:19.726 RESOURCES : Loaded mission headers from 9 addon(s)! +14:33:19.726 PROFILING : NotifyBeforeEntitiesCreated took: 6.428000 ms +14:33:19.726 WORLD : WORLD : Wait for preloading data +14:33:19.726 PROFILING : Wait for preloading data took: 0.000600 ms +14:33:24.093 WORLD : Game::LoadEntities +14:33:24.093 WORLD : CreateEntities +14:33:24.093 WORLD : CreateEntities +14:33:24.093 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:33:24.093 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:33:24.093 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:33:25.452 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +14:33:25.452 ENTITY : CreateComponent 'Hierarchy' +14:33:25.452 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +14:33:25.452 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +14:33:25.452 ENTITY : CreateComponent 'Hierarchy' +14:33:25.452 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +14:33:25.452 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +14:33:25.452 ENTITY : CreateComponent 'Hierarchy' +14:33:25.452 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +14:33:25.457 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +14:33:25.457 ENTITY : CreateComponent 'Hierarchy' +14:33:25.457 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +14:33:25.458 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +14:33:25.458 ENTITY : CreateComponent 'Hierarchy' +14:33:25.458 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +14:33:25.458 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +14:33:25.458 ENTITY : CreateComponent 'Hierarchy' +14:33:25.458 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +14:33:25.462 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +14:33:25.462 ENTITY : CreateComponent 'Hierarchy' +14:33:25.462 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +14:33:25.462 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +14:33:25.462 ENTITY : CreateComponent 'Hierarchy' +14:33:25.462 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +14:33:25.462 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +14:33:25.462 ENTITY : CreateComponent 'Hierarchy' +14:33:25.462 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +14:33:30.322 WORLD : WORLD : NotifyBeforeEntitiesInitialized +14:33:30.322 PROFILING : NotifyBeforeEntitiesInitialized took: 0.055200 ms +14:33:32.347 WORLD : InitEntities 'world' +14:33:32.347 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +14:33:32.347 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +14:33:32.374 WORLD : InitEntities 'world' +14:33:32.374 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +14:33:32.374 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +14:33:32.374 WORLD : WORLD : NotifyEntitiesInitialized +14:33:32.374 TERRAIN : TERRAIN : Initializing road networks... +14:33:32.377 PROFILING : Initializing road networks... took: 2.639400 ms +14:33:32.377 DEFAULT : DEFAULT : WorldVolumesCollection +14:33:32.434 PROFILING : WorldVolumesCollection took: 57.150500 ms +14:33:32.434 INIT : INIT : SoundWorldInit +14:33:32.449 PROFILING : SoundWorldInit took: 14.743300 ms +14:33:32.449 PROFILING : NotifyEntitiesInitialized took: 74.815700 ms +14:33:32.449 PROFILING : CreateEntities took: 12728.650200 ms +14:33:32.449 PROFILING : CreateEntities took: 12728.845800 ms +14:33:32.450 WORLD : WORLD : Wait for preloading data around camera +14:33:32.450 PROFILING : Wait for preloading data around camera took: 0.001500 ms +14:33:32.450 WORLD : WORLD : EOnActivate +14:33:32.485 PROFILING : EOnActivate took: 34.924800 ms +14:33:32.485 PROFILING : Game::LoadEntities took: 12766.039300 ms +14:33:32.797 DEFAULT : Entered offline game state. +14:33:36.503 SCRIPT : Map load time: 2233ms +14:33:36.503 NETWORK : Player connected: connectionID=2147483646 +14:33:36.504 NETWORK : ### Connecting player: connectionID=2147483646, Name= +14:33:36.504 NETWORK : ### Creating player: PlayerId=1, Name=jakub +14:33:36.508 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:33:36.509 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +14:33:36.509 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:33:36.509 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +14:33:36.509 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +14:33:36.511 SCRIPT (W): Can't open config file "" +14:33:36.516 WORLD : InitEntities 'world' +14:33:36.517 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:33:36.517 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +14:33:36.517 SCRIPT (W): Slot_WeaponInfo Has no Content! +14:33:36.517 SCRIPT (W): Slot_Chat Has no Content! +14:33:36.517 SCRIPT (W): Slot_VON Has no Content! +14:33:36.517 SCRIPT (W): Slot_AvailableActions Has no Content! +14:33:36.517 SCRIPT (W): Slot_Vehicle Has no Content! +14:33:36.518 SCRIPT (W): Slot_GameVersion Has no Content! +14:33:36.518 SCRIPT (W): Slot_Notifications Has no Content! +14:33:36.518 SCRIPT (W): Slot_Hints Has no Content! +14:33:36.532 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:33:36.532 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +14:33:36.532 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:33:36.533 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:33:36.533 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:33:36.537 NETWORK : ### Updating player: PlayerId=1, Name=jakub, rplIdentity=0xFFFFFFFE, IdentityId=00000000-0000-0000-0000-000000000000 +14:33:36.537 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +14:33:36.537 NETWORK : Players connecting: 0 +14:33:36.537 NETWORK : Players connected: 1 / 1 +14:33:36.568 DEFAULT : Using autosave directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Core/autosaves +14:33:36.569 PROFILING : Workbench startup took: 47619.789900 ms +14:33:36.591 WORLD : Frame start +14:33:36.591 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +14:33:36.604 WORLD : UpdateEntities +14:33:36.605 WORLD : Frame +14:33:36.605 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +14:33:36.779 WORLD : UpdateEntities +14:33:36.779 WORLD : PostFrame +14:33:36.779 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +14:33:36.779 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +14:33:36.818 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:33:36.819 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:33:36.819 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +14:33:36.819 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +14:33:36.997 RENDER : RENDER : ObjectsHeightMap::Build +14:33:36.998 RENDER : RENDER : MeshOccupancyGridManager::GenerateAllForWorld +14:33:37.161 PROFILING : MeshOccupancyGridManager::GenerateAllForWorld took: 162.704600 ms +14:33:37.168 PROFILING : ObjectsHeightMap::Build took: 170.227800 ms +14:33:38.319 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +14:33:38.341 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +14:33:38.341 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +14:33:38.372 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +14:33:38.375 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +14:33:38.432 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:33:38.432 WORLD : InitEntities 'world' +14:33:38.432 ENTITY : Init entity @"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:33:38.433 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +14:33:38.434 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +14:33:38.434 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +14:33:38.443 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +14:33:38.489 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +14:33:38.489 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +14:33:38.491 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +14:33:38.492 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +14:33:38.495 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +14:33:38.496 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +14:33:38.497 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +14:33:38.498 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +14:33:38.498 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +14:33:38.498 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +14:33:38.498 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +14:33:38.498 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +14:33:38.499 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +14:33:38.499 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:33:38.499 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +14:33:38.499 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +14:33:38.499 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:33:38.500 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +14:33:38.500 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +14:33:38.500 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:33:38.500 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.500 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.500 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.501 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.501 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.501 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:39.169 WORLD : UpdateEntities +14:33:39.170 WORLD : AfterPostSimulate +14:33:39.170 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +14:33:39.402 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.402 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.402 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.402 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.651 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.08,63.5193,7499.71> up=0.995622 +14:33:39.651 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.209779 angularSpeed=0.0469593 +14:33:39.651 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:39.651 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.06,63.6129,7501.98> +14:33:39.652 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.06,63.3129,7501.98> terrainY=63.3155 tireTerrainGap=-0.00252533 +14:33:39.652 SCRIPT : ERR GEAR SUPPORT: center=<7012.06,63.6129,7501.98> radius=0.3 bottom=<7012.06,63.3129,7501.98> fraction=0.443386 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.00245667 +14:33:39.652 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.6024,7497.71> +14:33:39.652 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.1524,7497.71> terrainY=64.1544 tireTerrainGap=-0.00201416 +14:33:39.652 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.6024,7497.71> radius=0.45 bottom=<7009.89,64.1524,7497.71> fraction=0.445567 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00197601 +14:33:39.652 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2617,7497.76> +14:33:39.653 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8117,7497.76> terrainY=63.817 tireTerrainGap=-0.00534439 +14:33:39.653 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2617,7497.76> radius=0.45 bottom=<7014.43,63.8117,7497.76> fraction=0.430278 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00533676 +14:33:39.653 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:39.906 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:39.907 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:39.907 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.907 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:40.419 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:40.420 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:40.420 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:40.673 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.1,63.5374,7499.72> up=0.99428 +14:33:40.673 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0867247 angularSpeed=0.0687184 +14:33:40.673 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:40.673 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6187,7502> +14:33:40.673 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3187,7502> terrainY=63.3129 tireTerrainGap=0.00574112 +14:33:40.674 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6187,7502> radius=0.3 bottom=<7012.07,63.3187,7502> fraction=0.481232 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00587082 +14:33:40.674 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.94,64.6018,7497.72> +14:33:40.674 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.94,64.1518,7497.72> terrainY=64.1474 tireTerrainGap=0.00443268 +14:33:40.674 SCRIPT : ERR GEAR SUPPORT: center=<7009.94,64.6018,7497.72> radius=0.45 bottom=<7009.94,64.1518,7497.72> fraction=0.474747 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00444794 +14:33:40.674 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.48,64.2648,7497.8> +14:33:40.675 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.48,63.8148,7497.8> terrainY=63.8145 tireTerrainGap=0.000339508 +14:33:40.675 SCRIPT : ERR GEAR SUPPORT: center=<7014.48,64.2648,7497.8> radius=0.45 bottom=<7014.48,63.8148,7497.8> fraction=0.455984 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=0.00031662 +14:33:40.675 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:40.923 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:40.923 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:40.924 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:40.924 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.174 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +14:33:41.429 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.429 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.429 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.430 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.683 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.12,63.5293,7499.75> up=0.99391 +14:33:41.684 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0626557 angularSpeed=0.0127016 +14:33:41.684 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:41.684 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6116,7502.02> +14:33:41.684 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3116,7502.02> terrainY=63.311 tireTerrainGap=0.000598907 +14:33:41.684 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6116,7502.02> radius=0.3 bottom=<7012.07,63.3116,7502.02> fraction=0.457278 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000602722 +14:33:41.684 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.97,64.5934,7497.72> +14:33:41.685 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.97,64.1434,7497.72> terrainY=64.1415 tireTerrainGap=0.0018692 +14:33:41.685 SCRIPT : ERR GEAR SUPPORT: center=<7009.97,64.5934,7497.72> radius=0.45 bottom=<7009.97,64.1434,7497.72> fraction=0.463264 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00192261 +14:33:41.685 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.51,64.2599,7497.84> +14:33:41.685 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.51,63.8099,7497.84> terrainY=63.8119 tireTerrainGap=-0.00200272 +14:33:41.685 SCRIPT : ERR GEAR SUPPORT: center=<7014.51,64.2599,7497.84> radius=0.45 bottom=<7014.51,63.8099,7497.84> fraction=0.445278 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00203705 +14:33:41.685 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:41.938 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:41.938 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:41.939 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:41.939 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:42.449 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.449 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.450 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.450 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:42.706 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993805 +14:33:42.707 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:33:42.707 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:42.707 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6122,7502.02> +14:33:42.707 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3122,7502.02> terrainY=63.3109 tireTerrainGap=0.00126266 +14:33:42.708 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6122,7502.02> radius=0.3 bottom=<7012.08,63.3122,7502.02> fraction=0.46034 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00127411 +14:33:42.708 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5929,7497.73> +14:33:42.708 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1429,7497.73> terrainY=64.1406 tireTerrainGap=0.00226593 +14:33:42.708 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5929,7497.73> radius=0.45 bottom=<7009.98,64.1429,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:33:42.708 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2598,7497.84> +14:33:42.709 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8098,7497.84> terrainY=63.8117 tireTerrainGap=-0.00190353 +14:33:42.709 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2598,7497.84> radius=0.45 bottom=<7014.52,63.8098,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +14:33:42.709 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:42.959 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:42.961 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.961 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.962 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:43.463 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.463 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.463 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.464 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.715 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993805 +14:33:43.715 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:33:43.715 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:43.715 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6122,7502.02> +14:33:43.715 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3122,7502.02> terrainY=63.3109 tireTerrainGap=0.00126266 +14:33:43.716 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6122,7502.02> radius=0.3 bottom=<7012.08,63.3122,7502.02> fraction=0.46034 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00127411 +14:33:43.716 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5929,7497.73> +14:33:43.716 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1429,7497.73> terrainY=64.1406 tireTerrainGap=0.00226593 +14:33:43.716 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5929,7497.73> radius=0.45 bottom=<7009.98,64.1429,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:33:43.716 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2598,7497.84> +14:33:43.716 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8098,7497.84> terrainY=63.8117 tireTerrainGap=-0.00190353 +14:33:43.717 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2598,7497.84> radius=0.45 bottom=<7014.52,63.8098,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +14:33:43.717 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:43.966 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.967 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +14:33:43.982 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +14:33:43.983 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +14:33:43.983 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +14:33:43.983 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +14:33:43.983 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +14:33:43.983 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +14:33:43.983 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +14:33:44.927 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +14:33:44.949 SCRIPT : Rereintroduced [spawn scene]: player=1 token=1 waiting for 39 replicated objects +14:33:44.949 SCRIPT : Rereintroduced [spawn scene]: client token=1 waiting for 39 replicated objects +14:33:45.041 SCRIPT : Rereintroduced [spawn scene]: client token=1 all 39 replicated objects present +14:33:45.101 SCRIPT : ERR SMOKE PASS: native spawn preload retains preparation text after server sites are ready +14:33:45.932 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.389,7158.5> +14:33:46.112 SCRIPT : ERR SMOKE PASS: prisoner admitted only after enabled native spawn preload finishes +14:33:46.112 SCRIPT : ERR SMOKE PASS: new identity may enter prison +14:33:46.113 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +14:33:46.113 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +14:33:46.113 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +14:33:46.113 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +14:33:46.113 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +14:33:46.117 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +14:33:46.118 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +14:33:46.118 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +14:33:46.118 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +14:33:46.121 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +14:33:46.121 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +14:33:46.121 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +14:33:46.121 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +14:33:46.121 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +14:33:46.122 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +14:33:46.122 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +14:33:46.122 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +14:34:15.341 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:34:15.342 ENTITY : Create entity @"ENTITY:4611686018427391325" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:34:15.342 ENTITY : CreateComponent 'BaseRadioComponent' +14:34:15.342 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427391325" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +14:34:23.030 SCRIPT : ERR SMOKE PASS: HQ memory automatic startup owns one canonical six-vehicle task +14:34:23.030 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 0 +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 1 +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 2 +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 3 +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 4 +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 5 +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy includes confirmed native turret gunners +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory automatic nineteen-body convoy respects shared physical budget +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory manual request after automatic startup cannot duplicate the convoy +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory road fixture has native Everon road manager +14:34:23.038 SCRIPT : ERR SMOKE PASS: HQ memory road fixture native query stays within bounded road count +14:34:23.038 SCRIPT : ERR SMOKE PASS: HQ memory arranged detached road snapshots accepted by private memory +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory native road choice is forward, nearby, dry and physically clear +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory chosen intercept lies on an actual native road segment +14:34:23.039 SCRIPT : ERR ROAD FIXTURE: arranged origin=<5896.23,149.499,6644.17> velocity=<2.25769,0,1.97559> chosen=<5941.39,149.611,6683.68> attempts=1 +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory same arranged belief aged46seconds refuses road interception +14:34:23.040 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +14:34:23.040 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +14:34:23.041 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +14:34:25.072 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +14:34:25.072 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +14:34:31.200 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +14:34:31.200 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +14:34:39.840 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +14:34:39.840 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +14:34:47.999 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +14:34:48.000 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +14:34:56.132 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +14:35:04.298 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +14:35:04.299 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +14:35:04.300 SCRIPT : INFO: KILL SUICIDE: jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) from US faction at <6088.5, 211.389, 7158.5> killed himself! +14:35:08.379 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +14:35:08.379 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +14:35:08.379 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +14:35:35.407 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +14:35:35.408 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +14:35:35.408 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +14:35:35.409 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +14:35:35.576 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +14:35:35.579 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:35:35.579 SCRIPT (W): Slot_Chat Has no Content! +14:35:35.579 SCRIPT (W): Slot_VON Has no Content! +14:35:35.579 SCRIPT (W): Slot_GameVersion Has no Content! +14:35:35.579 SCRIPT (W): Slot_Notifications Has no Content! +14:35:37.731 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +14:35:37.731 SCRIPT : -- Stack trace -- +14:35:37.732 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:35:37.732 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:35:37.732 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +14:35:37.732 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:35:37.732 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:35:37.733 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:35:37.733 SCRIPT : ----------------- +14:35:37.733 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +14:35:37.733 SCRIPT : -- Stack trace -- +14:35:37.733 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:35:37.733 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:35:37.733 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +14:35:37.733 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:35:37.734 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:35:37.734 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:35:37.734 SCRIPT : ----------------- +14:35:37.735 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:35:37.736 SCRIPT (W): Slot_Chat Has no Content! +14:35:37.736 SCRIPT (W): Slot_VON Has no Content! +14:35:37.736 SCRIPT (W): Slot_GameVersion Has no Content! +14:35:37.736 SCRIPT (W): Slot_Notifications Has no Content! +14:35:39.579 RESOURCES : Screenshot saved to $logs:err-result.png diff --git a/docs/evidence/native-2026-09-20-spawn-scene/err-result.png b/docs/evidence/native-2026-09-20-spawn-scene/err-result.png new file mode 100644 index 0000000..36260f6 Binary files /dev/null and b/docs/evidence/native-2026-09-20-spawn-scene/err-result.png differ diff --git a/docs/evidence/native-2026-09-20-spawn-scene/error.log.txt b/docs/evidence/native-2026-09-20-spawn-scene/error.log.txt new file mode 100644 index 0000000..cd8882c --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/error.log.txt @@ -0,0 +1,138 @@ +--------------------------------------------- +Log Z:\tmp\erri-spawn-scene-workbench-v2\logs\logs_2026-09-20_14-32-49\error.log started at 2026-09-20 14:32:50 (2026-09-20 12:32:50 UTC) + +14:32:50.859 INIT : Workbench startup +14:32:50.859 INIT : Workbench Init Engine +14:32:50.859 RESOURCES : ResourceDB: full scan +14:32:50.859 RESOURCES : processing files... +14:32:50.859 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +14:32:50.870 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +14:32:50.870 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +14:32:50.870 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +14:32:50.960 ENGINE : GameProject load +14:32:50.960 INIT : GameProject load project data @"Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_595F2BF2F44836FB/addon.gproj" +14:32:50.960 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +14:32:50.960 INIT : GameProject load project data @"Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_629B2BA37EFFD577/addon.gproj" +14:32:50.960 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +14:32:50.960 INIT : GameProject load project data @"Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +14:32:50.960 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +14:32:50.961 INIT : GameProject load project data @"Z:/tmp/erri-spawn-scene-workbench-v2/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +14:32:50.961 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +14:32:55.100 INIT : Workbench Create Game +14:32:55.100 SCRIPT : Compiling Game scripts +14:32:55.100 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +14:32:55.100 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +14:32:55.426 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,223": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.436 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +14:32:55.478 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +14:32:55.618 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.628 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +14:32:55.693 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +14:32:55.693 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +14:32:55.695 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +14:32:55.726 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.745 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.745 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.747 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +14:32:55.747 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +14:32:55.774 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.801 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +14:33:04.498 WORLD : CreateEntities +14:33:04.498 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:33:04.498 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:33:04.498 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:33:19.413 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +14:33:24.093 WORLD : Game::LoadEntities +14:33:24.093 WORLD : CreateEntities +14:33:24.093 WORLD : CreateEntities +14:33:24.093 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et" +14:33:24.093 ENTITY : CreateComponent 'ScriptedRadioComponent' +14:33:24.093 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +14:33:25.452 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +14:33:25.452 ENTITY : CreateComponent 'Hierarchy' +14:33:25.452 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168>') +14:33:25.452 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +14:33:25.452 ENTITY : CreateComponent 'Hierarchy' +14:33:25.452 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055>') +14:33:25.452 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +14:33:25.452 ENTITY : CreateComponent 'Hierarchy' +14:33:25.452 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961>') +14:33:25.457 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +14:33:25.457 ENTITY : CreateComponent 'Hierarchy' +14:33:25.457 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344>') +14:33:25.458 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +14:33:25.458 ENTITY : CreateComponent 'Hierarchy' +14:33:25.458 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375>') +14:33:25.458 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +14:33:25.458 ENTITY : CreateComponent 'Hierarchy' +14:33:25.458 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516>') +14:33:25.462 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +14:33:25.462 ENTITY : CreateComponent 'Hierarchy' +14:33:25.462 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084>') +14:33:25.462 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +14:33:25.462 ENTITY : CreateComponent 'Hierarchy' +14:33:25.462 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421>') +14:33:25.462 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +14:33:25.462 ENTITY : CreateComponent 'Hierarchy' +14:33:25.462 ENTITY (W): Invalid PivotID 'socket_light_04' in Hierarchy component ('@"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869>') +14:33:32.347 WORLD : InitEntities 'world' +14:33:32.347 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +14:33:32.347 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +14:33:36.508 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:33:36.509 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +14:33:36.509 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:33:36.509 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +14:33:36.509 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +14:33:36.511 SCRIPT (W): Can't open config file "" +14:33:36.516 WORLD : InitEntities 'world' +14:33:36.517 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +14:33:36.517 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +14:33:36.517 SCRIPT (W): Slot_WeaponInfo Has no Content! +14:33:36.517 SCRIPT (W): Slot_Chat Has no Content! +14:33:36.517 SCRIPT (W): Slot_VON Has no Content! +14:33:36.517 SCRIPT (W): Slot_AvailableActions Has no Content! +14:33:36.517 SCRIPT (W): Slot_Vehicle Has no Content! +14:33:36.518 SCRIPT (W): Slot_GameVersion Has no Content! +14:33:36.518 SCRIPT (W): Slot_Notifications Has no Content! +14:33:36.518 SCRIPT (W): Slot_Hints Has no Content! +14:33:36.532 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:33:36.532 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +14:33:36.532 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +14:33:36.533 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:33:36.533 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:33:36.537 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +14:33:36.779 WORLD : UpdateEntities +14:33:36.779 WORLD : PostFrame +14:33:36.779 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +14:33:36.779 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +14:33:36.818 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:33:36.818 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +14:33:36.819 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +14:33:36.819 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +14:33:38.432 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:33:38.432 WORLD : InitEntities 'world' +14:33:38.432 ENTITY : Init entity @"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +14:33:38.433 DEFAULT (W): No weapon slot index corresponds to the default index on BaseWeaponManagerComponent(0). Either set the default index to -1 or change index value on a slot to be the same as the default one.(@"ENTITY:4611686018427388492" ('Vehicle','Assets/Vehicles/Helicopters/Mi8/Mi8MT_base.xob') at <7012.000000 63.724998 7500.000000> @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et") +14:33:39.169 WORLD : UpdateEntities +14:33:39.170 WORLD : AfterPostSimulate +14:33:39.170 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +14:34:15.341 ENTITY : SpawnEntityPrefab @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:34:15.342 ENTITY : Create entity @"ENTITY:4611686018427391325" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et" +14:34:15.342 ENTITY : CreateComponent 'BaseRadioComponent' +14:34:15.342 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427391325" ('Vehicle') at <6119.622559 200.287506 6973.364258> @"{3336BE330C4F355B}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et"). Only printing this message once. There're possibly more nodes with this requirement. +14:35:35.579 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:35:35.579 SCRIPT (W): Slot_Chat Has no Content! +14:35:35.579 SCRIPT (W): Slot_VON Has no Content! +14:35:35.579 SCRIPT (W): Slot_GameVersion Has no Content! +14:35:35.579 SCRIPT (W): Slot_Notifications Has no Content! +14:35:37.731 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +14:35:37.733 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +14:35:37.735 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +14:35:37.736 SCRIPT (W): Slot_Chat Has no Content! +14:35:37.736 SCRIPT (W): Slot_VON Has no Content! +14:35:37.736 SCRIPT (W): Slot_GameVersion Has no Content! +14:35:37.736 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-spawn-scene/external-addons-inputs.json.txt b/docs/evidence/native-2026-09-20-spawn-scene/external-addons-inputs.json.txt new file mode 100644 index 0000000..f2f3ae2 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/external-addons-inputs.json.txt @@ -0,0 +1,744 @@ +{ + "1337C0DE5DABBEEF": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF", + "title": "RHS: Status Quo - Content Pack 01", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 916830, + 209, + 1789670354123815627, + 1789670354123815627 + ], + "sha256": "c5d88d82138bc80c95f364075c3a0fc2228f9c15c6230398f3728a13d25b418c" + }, + "addon.gproj": { + "stat": [ + 46, + 26917910, + 335, + 1789670330884205142, + 1789670353823807747 + ], + "sha256": "65197c50ff6e906a5732564e8b440d80ef1cdbcffead9eb388e1e2b56c1322bc" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917892, + 362, + 1789670307618593786, + 1789670307618593786 + ], + "sha256": "17b87e0976ac2da1032f1661a884f6d59b56c00823b2fcfdc2a698ea8bcc92cc" + }, + "data.pak": { + "stat": [ + 46, + 26917928, + 1992582478, + 1789670344310557863, + 1789670353824807774 + ], + "sha256": "e5db31f571782997640a67601ebd3bd6e6615c1548274c71b6ab0cdd794f8bf5" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917893, + 232459, + 1789670307954602617, + 1789670307954602617 + ], + "sha256": "855813254cd72dc87515f4c395e7c7defe4b145ac809a740f81c85ca546b36fe" + }, + "data001.pak": { + "stat": [ + 46, + 26917986, + 1993657251, + 1789670345496589019, + 1789670354029813158 + ], + "sha256": "2bda9c533834dfa2b8e29f4a2a905c30639dabe250554e1346cf1f5dae3f2db3" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917900, + 349870, + 1789670308754623642, + 1789670308754623642 + ], + "sha256": "d4ec79f2a5cf03dd44bcc4513199056195dfda3c7a5c6bbfd17b2c709b746cdc" + }, + "data002.pak": { + "stat": [ + 46, + 26917956, + 1992567795, + 1789670345532589964, + 1789670353970811608 + ], + "sha256": "dfbd716c2a0849910a8058b1f008b8403b8c506fe18c3168d2844383ac02988c" + }, + "data002.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917897, + 332016, + 1789670308247610318, + 1789670308247610318 + ], + "sha256": "3de05138d1d635f1ba5bcbd74a0f91028bfd59082f45c740051381bd054404b5" + }, + "data003.pak": { + "stat": [ + 46, + 26917964, + 364877149, + 1789670333444272402, + 1789670354017812842 + ], + "sha256": "6225936ebc266825bbd1c79e4e0020c9f2fb55c3d3501ed66e72d87436ccd015" + }, + "data003.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917898, + 96448, + 1789670308423614944, + 1789670308423614944 + ], + "sha256": "8ca2504191def96715ddd6ee98a8df1e3f0951e5755592801eab662657289dd0" + }, + "meta": { + "stat": [ + 46, + 911092, + 8188, + 1789670354121815574, + 1789670354121815574 + ], + "sha256": "cb4f4296d087ea5fe2e849b0fc960748bfede7ea3071eeb545bd7bd309be6bfb" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26917967, + 566987, + 1789670331096210712, + 1789670354028813131 + ], + "sha256": "e8706d6b9bb2474b65f7c588de9fcfad4516bd26dc12e7b6b687e7973a41e7a6" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917899, + 368, + 1789670308546618176, + 1789670308546618176 + ], + "sha256": "336f9160ad955caa88d286915195699d3ac36f3363391967a178be0fd2ccd914" + }, + "thumbnail.png": { + "stat": [ + 46, + 26917907, + 18180, + 1789670330627887201, + 1789670353823807747 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26917891, + 366, + 1789670307490590423, + 1789670307490590423 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "595F2BF2F44836FB": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB", + "title": "RHS: Status Quo", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 910012, + 2789, + 1789670389999757705, + 1789670389999757705 + ], + "sha256": "0432a068d8d77e34afd10432d1459df1334238e1ec416c896f13b84bae5a3ac5" + }, + "addon.gproj": { + "stat": [ + 46, + 26919135, + 1100, + 1789670379744488450, + 1789670389873754397 + ], + "sha256": "1b83e9df126db639cfcdb6d5119e65a1581c028becd6c09998143ed527ad0721" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919120, + 364, + 1789670378419453659, + 1789670378419453659 + ], + "sha256": "d232c4cfc959267482bbf261eb2e5121c76b6bf7d8893c58c520a763df5ca5f8" + }, + "data.pak": { + "stat": [ + 46, + 26919141, + 203378761, + 1789670389138735100, + 1789670389946756313 + ], + "sha256": "985d0cde7b09ee860086cb386cf624fcfd94b5e82b26af0b33bab83f21d06988" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919122, + 1409173, + 1789670378781463164, + 1789670378781463164 + ], + "sha256": "041c8ebdf035c69aed7c04bb55be839fbdbd7bc8501862dd4939c1d71cdfe8c5" + }, + "meta": { + "stat": [ + 46, + 902077, + 12209, + 1789670389989757443, + 1789670389989757443 + ], + "sha256": "1b62c97002078af393f23508c3b03cfe22f590130345ac44926b06940f27f269" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919132, + 823768, + 1789670379822490498, + 1789670389872754371 + ], + "sha256": "25f6405084fd228ff400868b21f033c4c43d44162ce73de562e06d8003b94a49" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919119, + 368, + 1789670378283450088, + 1789670378283450088 + ], + "sha256": "986f0280a79b0e4ff6d9a3ad60570bebd86ce68869c9f3d5954141f7d5060cb1" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919138, + 18180, + 1789670379618193709, + 1789670389873754397 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919121, + 366, + 1789670378550457099, + 1789670378550457099 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + }, + "5E389BB9F58B79A6": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6", + "title": "WCS_SpaceCore", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 919166, + 197, + 1789670369327462097, + 1789670369327462097 + ], + "sha256": "4bcd7610056ed1d366e9b6d0600e80c622a1af35caecf5c9ecf2c7b9e2b626f7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918585, + 2957, + 1789670367793432952, + 1789670369299906650 + ], + "sha256": "2db2e318e6f45bede0d1173d77af03314f888aedfb31bc767d569ccfb6e70a34" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918576, + 364, + 1789670367178158473, + 1789670367178158473 + ], + "sha256": "67d15a8e8623130546332c6d6433314cbdf38e034a66330b9c7a739a94731e21" + }, + "data.pak": { + "stat": [ + 46, + 26918592, + 43626712, + 1789670369105209079, + 1789670369315214594 + ], + "sha256": "80e9810c9b7c873187660d0ddf002a63d1a382e81fc3611baa0ae8fdfff29d3d" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918578, + 66352, + 1789670367560168505, + 1789670367560168505 + ], + "sha256": "6635291a1f1aa9cffdb844e241c36cdc04114574279bab66e21613410f5e5686" + }, + "meta": { + "stat": [ + 46, + 918678, + 2338, + 1789670369325214856, + 1789670369325214856 + ], + "sha256": "dd1c683c086efb292e6cc927bd6522a1ea97ebd454e8148356f66554ebcdd4dc" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918588, + 44111, + 1789670367937178405, + 1789670369300214199 + ], + "sha256": "c4293fef30948a3538751533cc52c9ce449ffada931b47a8fdf1ca48c1618e75" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918577, + 366, + 1789670367326162360, + 1789670367326162360 + ], + "sha256": "df8cd07ff81263e4108688883b9f20568041f067dbad74402464ec2f88432b69" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918582, + 689401, + 1789670367794174651, + 1789670369299906650 + ], + "sha256": "8da2e133303f21bb16a2abd25d5bd6c2a4a6f5eccedae74a98358db485a170d1" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918574, + 368, + 1789670367051155138, + 1789670367051155138 + ], + "sha256": "5aaa5989b5f44b48ff03082a0d4004ae71420db6eebeb56282af7d98f36c7000" + } + } + }, + "5E524E4FEECCA92B": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B", + "title": "WCS_BMP-1", + "version": "8.2.0", + "files": { + "ServerData.json": { + "stat": [ + 46, + 918673, + 193, + 1789670366131482045, + 1789670366131482045 + ], + "sha256": "92ff4ae6fec8afc679726186f424bb31c9918d182f321afca4696654844e39c7" + }, + "addon.gproj": { + "stat": [ + 46, + 26918544, + 2900, + 1789670364825147789, + 1789670366119130662 + ], + "sha256": "ad44151140adf62e99eaa639984c2b9c400be17481e934186d61c307b5221259" + }, + "addon.gproj_8.2.0_manifest.json": { + "stat": [ + 46, + 26918530, + 364, + 1789670364263081920, + 1789670364263081920 + ], + "sha256": "3065c7c353cb7623ee85f83d462d4dac37c92efad1a0255f2661470e6cedfd0f" + }, + "data.pak": { + "stat": [ + 46, + 26918541, + 119808197, + 1789670365649118318, + 1789670366115130557 + ], + "sha256": "f715ad5fa3de788061a66a3ccd933feead5cc1631507ca63e9061049c538fab6" + }, + "data.pak_8.2.0_manifest.json": { + "stat": [ + 46, + 26918528, + 25795, + 1789670364132078479, + 1789670364132078479 + ], + "sha256": "24a7f735e55ccfacc5cdacbb39fb76a6fac294f4cdc47dca0fcb6e3f1919f1e6" + }, + "gallery0_776x436.jpg": { + "stat": [ + 46, + 23106914, + 64588, + 1788720671481676966, + 1788720671481676966 + ], + "sha256": "63649f5239059dd12234250b8c8e313b14ca134e30e4309fbd1eb45f92e77097" + }, + "gallery1_776x436.jpg": { + "stat": [ + 46, + 23106915, + 47808, + 1788720671495639547, + 1788720671495639547 + ], + "sha256": "81f89b026a1bf341f8cd3bb19facd67e8d0f56073c924e026983836fee6bfb4c" + }, + "meta": { + "stat": [ + 46, + 918496, + 2928, + 1789670366129130924, + 1789670366129130924 + ], + "sha256": "ad0f9baa154a250712c94b50c5edcb25200002bdc186d35453b5e8c32c0b6ee5" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918535, + 16514, + 1789670364934099542, + 1789670366080129638 + ], + "sha256": "c65677e8767d92c96c6f35b482350d56e3dccfa026a3c5470b332120990f047c" + }, + "resourceDatabase.rdb_8.2.0_manifest.json": { + "stat": [ + 46, + 26918527, + 366, + 1789670364004075117, + 1789670364004075117 + ], + "sha256": "fdc44be4e1523db5965b015a7ea511623399a5fb3548aaaf8b2a4807fc6ade7d" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918547, + 708338, + 1789670364826600016, + 1789670366119130662 + ], + "sha256": "103a98bf476d510ab3081abb371170ae6cf65aea65b9095636d651170a5b0038" + }, + "thumbnail.png_8.2.0_manifest.json": { + "stat": [ + 46, + 26918531, + 368, + 1789670364388085202, + 1789670364388085202 + ], + "sha256": "5bf1e0f8794a4e2e862658a10071360df63ed6a440ee2ca5514afbc2e97e375e" + } + } + }, + "629B2BA37EFFD577": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577", + "title": "WCS_Armaments", + "version": "8.2.1", + "files": { + "ServerData.json": { + "stat": [ + 46, + 920134, + 197, + 1789670377639162612, + 1789670377639162612 + ], + "sha256": "8e5e6b2fe4099ca90bb4498c9479924e775ca0eac411c8230114143ff1a8297a" + }, + "addon.gproj": { + "stat": [ + 46, + 26918715, + 2926, + 1789670371305266851, + 1789670377499241577 + ], + "sha256": "e6ffcf559a2e7898848349c090300ea8eca8cb2e13ecef456a108bcc82efc8b1" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 46, + 26918707, + 364, + 1789670369590221815, + 1789670369590221815 + ], + "sha256": "ba8f2b36575408f11b2107fc4b0f9449c9dc057629ebf894c7bdbc77f53cbc1f" + }, + "data.pak": { + "stat": [ + 46, + 26918730, + 395962643, + 1789670376182394919, + 1789670377620432679 + ], + "sha256": "84a2cf01e2d17a06f8d775ca542a0cc98739f9f4b75b79826017e1387faedb18" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 46, + 26918711, + 214221, + 1789670370007232766, + 1789670370007232766 + ], + "sha256": "dc3ff832bce708121c61a5dfe09be8504352556c50341f9878f4b457e165ade2" + }, + "meta": { + "stat": [ + 46, + 919170, + 2504, + 1789670377637433125, + 1789670377637433125 + ], + "sha256": "2863bb2bdb586286f8aedc34d5dfb6adbdaafd5fca0f8f21136c7a5351d1ce88" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26918718, + 141469, + 1789670371389269057, + 1789670377499429501 + ], + "sha256": "7f38b7ed578b0b47864648a7b70288fe49dae4cc2556d5754377a1c28b2b6532" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 46, + 26918708, + 368, + 1789670369714225072, + 1789670369714225072 + ], + "sha256": "2ffa1cf6f8c07600147ae779ee3be1ccec8da23cb1c10d8c73e0c5c5d3dc6d06" + }, + "thumbnail.png": { + "stat": [ + 46, + 26918721, + 689544, + 1789670371307273812, + 1789670377500429528 + ], + "sha256": "ccd771dba7f3f222e9733e688e6dd9e4c5edae2accdd80a6876241094e23f3dd" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 46, + 26918710, + 368, + 1789670369835228249, + 1789670369835228249 + ], + "sha256": "e58ef73e4a794e56ecd04bfd84940ec539e5ca481d6b69ffb20f9fedcd3c2e77" + } + } + }, + "BADC0DEDABBEDA5E": { + "path": "/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E", + "title": "RHS: Status Quo - Content Pack 02", + "version": "0.16.5208", + "files": { + "ServerData.json": { + "stat": [ + 46, + 911088, + 209, + 1789670428409812415, + 1789670428409812415 + ], + "sha256": "90353d1b4ab072f7844bf24d8066031efd69feb76ddcbf66dea34b52ddfe0a1c" + }, + "addon.gproj": { + "stat": [ + 46, + 26919414, + 336, + 1789670399470006320, + 1789670428369764835 + ], + "sha256": "6ebd73d663ed6dbf981cd8bc7d19cfd5bcd3c9dec3b9a706fa331d992ef200b4" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919383, + 362, + 1789670390797778656, + 1789670390797778656 + ], + "sha256": "72d988d5881efdf7d8781b2dc978a0243e1a3d587ced56563299855724137232" + }, + "data.pak": { + "stat": [ + 46, + 26919411, + 1992445813, + 1789670421137575039, + 1789670428335763943 + ], + "sha256": "5b28362571e396c008eb2286dc5a76b4ccf869c0a279916209fb0ef20d6b145e" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919381, + 170934, + 1789670390675775453, + 1789670390675775453 + ], + "sha256": "7cde302270a1e5c3a88517ff8b08a5b50bbe63e7392434d8245542f81b0bfdf8" + }, + "data001.pak": { + "stat": [ + 46, + 26919421, + 238642257, + 1789670400589035695, + 1789670428370764861 + ], + "sha256": "fb2aecbde5668c4d431ea74d64f6d15f7a9f608fefe01838d7c85fb0c818499f" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919384, + 29970, + 1789670390937782332, + 1789670390937782332 + ], + "sha256": "e6fb290c2f9d8dcd0c0ac95c3dee054377a525e00129abc766defa079385d6ea" + }, + "meta": { + "stat": [ + 46, + 910016, + 7720, + 1789670428407765832, + 1789670428407765832 + ], + "sha256": "e9ba58307cb931026c5c59654f3b4b7f92ac6e0682a1e94fd2eb1d5b75c214cf" + }, + "resourceDatabase.rdb": { + "stat": [ + 46, + 26919388, + 111601, + 1789670399484558966, + 1789670428260761974 + ], + "sha256": "736bcd2e60177e5af99d93c6b5f07ad79a950899aaca23000f33ad405cd1b74e" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919379, + 368, + 1789670390384767813, + 1789670390384767813 + ], + "sha256": "9a4f54837a83d2acc2bdc62288b62fe7f24876a374f1270d5a5d2a497bb5de8f" + }, + "thumbnail.png": { + "stat": [ + 46, + 26919391, + 18180, + 1789670398997629625, + 1789670428260761974 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 46, + 26919380, + 366, + 1789670390509771095, + 1789670390509771095 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + } +} diff --git a/docs/evidence/native-2026-09-20-spawn-scene/headless-launch.log.txt b/docs/evidence/native-2026-09-20-spawn-scene/headless-launch.log.txt new file mode 100644 index 0000000..13519da --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/headless-launch.log.txt @@ -0,0 +1,152 @@ +[gamescope] [Info] console: gamescope version 3.16.29 (gcc 16.2.1) +No CAP_SYS_NICE, falling back to regular-priority compute and threads. +Performance will be affected. +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts' +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts/00-gamescope' +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts/00-gamescope/common' +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/common/inspect.lua' (id: 0) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/common/modegen.lua' (id: 1) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/common/util.lua' (id: 2) +[gamescope] [Info] scriptmgr: Loading scripts from: '/usr/share/gamescope/scripts/00-gamescope/displays' +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/asus.rogally.lcd.lua' (id: 3) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/deckhd.steamdeck.deckhd-lcd.lua' (id: 4) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/gpd.win4.lcd.lua' (id: 5) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/lenovo.legiongo.lcd.lua' (id: 6) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/lenovo.legiongo2.oled.lua' (id: 7) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua' (id: 8) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/onexplayer.f1.oled.lua' (id: 9) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.lcd.lua' (id: 10) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.oled.lua' (id: 11) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/zotac.zone.oled.lua' (id: 12) +[gamescope] [Info] scriptmgr: Loading scripts from: '/etc/gamescope/scripts' +[gamescope] [Warn] scriptmgr: Directory '/etc/gamescope/scripts' does not exist +[gamescope] [Info] scriptmgr: Loading scripts from: '/home/jakub/.config/gamescope/scripts' +[gamescope] [Warn] scriptmgr: Directory '/home/jakub/.config/gamescope/scripts' does not exist +[gamescope] [Info] vulkan: selecting physical device 'AMD Radeon RX 6950 XT (RADV NAVI21)': queue family 1 (general queue family 0) +[gamescope] [Info] vulkan: physical device supports DRM format modifiers +[gamescope] [Info] wlserver: [backend/headless/backend.c:60] Creating headless backend +[gamescope] [Info] vulkan: supported DRM formats for sampling usage: +[gamescope] [Info] vulkan: AR24 (0x34325241) +[gamescope] [Info] vulkan: XR24 (0x34325258) +[gamescope] [Info] vulkan: AB24 (0x34324241) +[gamescope] [Info] vulkan: XB24 (0x34324258) +[gamescope] [Info] vulkan: RG16 (0x36314752) +[gamescope] [Info] vulkan: NV12 (0x3231564E) +[gamescope] [Info] vulkan: AB4H (0x48344241) +[gamescope] [Info] vulkan: XB4H (0x48344258) +[gamescope] [Info] vulkan: AB48 (0x38344241) +[gamescope] [Info] vulkan: XB48 (0x38344258) +[gamescope] [Info] vulkan: AB30 (0x30334241) +[gamescope] [Info] vulkan: XB30 (0x30334258) +[gamescope] [Info] vulkan: AR30 (0x30335241) +[gamescope] [Info] vulkan: XR30 (0x30335258) +[gamescope] [Info] wlserver: Using explicit sync when available +[gamescope] [Info] wlserver: [wayland] unable to lock lockfile /run/user/1000/gamescope-0.lock, maybe another compositor is running +[gamescope] [Info] wlserver: Running compositor on wayland display 'gamescope-1' +[gamescope] [Info] wlserver: [backend/headless/backend.c:17] Starting headless backend +[gamescope] [Info] wlserver: Successfully initialized libei for input emulation! +[gamescope] [Error] wlserver: [xwayland/sockets.c:47] Failed to bind socket @/tmp/.X11-unix/X0: Address already in use +[gamescope] [Info] wlserver: [xwayland/server.c:108] Starting Xwayland on :3 +The XKEYBOARD keymap compiler (xkbcomp) reports: +> Warning: Multiple symbols for level 1/group 1 on key +> Using F23, ignoring XF86TouchpadOff +> Warning: Symbol map for key redefined +> Using last definition for conflicting fields +> Warning: Symbol map for key redefined +> Using last definition for conflicting fields +> Warning: Could not resolve keysym XF86ElectronicPrivacyScreenOn +> Warning: Could not resolve keysym XF86ElectronicPrivacyScreenOff +> Warning: Could not resolve keysym XF86ActionOnSelection +> Warning: Could not resolve keysym XF86ContextualInsert +> Warning: Could not resolve keysym XF86ContextualQuery +Errors from xkbcomp are not fatal to the X server +[gamescope] [Info] pipewire: stream state changed: connecting +[gamescope] [Info] pipewire: stream state changed: paused +[gamescope] [Info] pipewire: stream available on node ID: 136 +[gamescope] [Info] vblank: Using timerfd. +fsync: up and running. +[Gamescope WSI] No application info given. +[Gamescope WSI] Executable name: explorer.exe +The XKEYBOARD keymap compiler (xkbcomp) reports: +> Warning: Unsupported maximum keycode 709, clipping. +> X11 cannot support keycodes above 255. +> Warning: Virtual modifier Hyper multiply defined +> Using 0, ignoring 0 +> Warning: Virtual modifier ScrollLock multiply defined +> Using 0, ignoring 0 +Errors from xkbcomp are not fatal to the X server +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: xalia.exe + applicationVersion: 0 + pEngineName: DXVK + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Executable name: xalia.exe +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] No application info given. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 1 + pEngineName: DXVK + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Executable name: ArmaReforgerWorkbenchSteamDiag.exe +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] No application info given. +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 0 + pEngineName: DXVK + engineVersion: 12587008 + apiVersion: 4206592 +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 0 + pEngineName: vkd3d + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1. +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] No application info given. +ATTENTION: default value of option vk_wsi_force_swapchain_to_current_extent overridden by environment. +[Gamescope WSI] Application info: + pApplicationName: ArmaReforgerWorkbenchSteamDiag.exe + applicationVersion: 0 + pEngineName: vkd3d + engineVersion: 12587008 + apiVersion: 4206592 +[Gamescope WSI] Forcing on VK_EXT_swapchain_maintenance1. +[Gamescope WSI] Creating Gamescope surface: xid: 0x1a001a4 +[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL. +[Gamescope WSI] Made gamescope surface for xid: 0x1a001a4 +[Gamescope WSI] Surface state: + steam app id: 1874910 + window xid: 0x1a001a4 + wayland surface res id: 6 + layer client flags: 0x4 + server hdr output enabled: false + hdr formats exposed to client: false +[Gamescope WSI] Creating Gamescope surface: xid: 0x1a003a4 +[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL. +[Gamescope WSI] Made gamescope surface for xid: 0x1a003a4 +[Gamescope WSI] Surface state: + steam app id: 1874910 + window xid: 0x1a003a4 + wayland surface res id: 13 + layer client flags: 0x4 + server hdr output enabled: false + hdr formats exposed to client: false +[Gamescope WSI] Creating swapchain for xid: 0x1a003a4 - oldSwapchain: (nil) - provided minImageCount: 3 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false +[Gamescope WSI] Created swapchain for xid: 0x1a003a4 swapchain: 0x55556052e940 - imageCount: 4 +[Gamescope WSI] Destroying swapchain: 0x55556052e940 +[Gamescope WSI] Destroyed swapchain: 0x55556052e940 +[Gamescope WSI] Creating swapchain for xid: 0x1a003a4 - oldSwapchain: (nil) - provided minImageCount: 3 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false +[Gamescope WSI] Created swapchain for xid: 0x1a003a4 swapchain: 0x55556052e940 - imageCount: 4 +[Gamescope WSI] Destroying swapchain: 0x55556052e940 +[Gamescope WSI] Destroyed swapchain: 0x55556052e940 +[Gamescope WSI] Creating swapchain for xid: 0x1a003a4 - oldSwapchain: (nil) - provided minImageCount: 3 - minImageCount: 3 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - flip: false +[Gamescope WSI] Created swapchain for xid: 0x1a003a4 swapchain: 0x5555604db710 - imageCount: 4 +[gamescope] [Info] launch: Primary child shut down! diff --git a/docs/evidence/native-2026-09-20-spawn-scene/launch-source-sha256.json b/docs/evidence/native-2026-09-20-spawn-scene/launch-source-sha256.json new file mode 100644 index 0000000..c21a4e4 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/launch-source-sha256.json @@ -0,0 +1,260 @@ +{ + "addons/core/Configs/ERR/AdminMenus.conf": "a7f889f260e43656136fc159342129e5f48748d28c426f65f9faac37b624cf94", + "addons/core/Configs/ERR/AdminMenus.conf.meta": "5faf5ddc0a51c1d0f82d60af00d91edc22fe9c39aac50d8d04b772a2c9271be1", + "addons/core/Configs/ERR/EveronSites.conf": "3e04698421ce989c996097ecf24214e7d926d2998918d60573aa403c4012b079", + "addons/core/Configs/ERR/EveronSites.conf.meta": "d5fe68025ef4e7c1e16082cf5873b7c7172eacbfaef4ab29b7e0e3c98f8dca56", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf": "5f74f4a7089c7e7b54ad62463159ce8f0bab25a6b85268dc3872ea6001e048fb", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf.meta": "00c368b6271d3440cc8bf627b03a384d247635723923fc5ad2104b8b4007b035", + "addons/core/Configs/ERR/Factions/US.conf": "4c3da063abb6e3ee39a6e4e0c5a9ffd5eae9d209d58470ea18b45dba5528db1b", + "addons/core/Configs/ERR/Factions/US.conf.meta": "a05469aef028e9e17eba545e81e2af2887b59f0fef17dac51a23c7b8155e381b", + "addons/core/Configs/ERR/Factions/USSR.conf": "407ea27f80a64c5184c089d43cdd0bdabfc5974c84f1d2a245081fdf2afa3f30", + "addons/core/Configs/ERR/Factions/USSR.conf.meta": "057397d97096346791b51b7b13fbe18af218bcf78e9984d9c01b49a2403de611", + "addons/core/Configs/ERR/GameOverScreens.conf": "45231061911a1462d45fb6db0fecc2b0793f17b5ae71017174954ff4fbd20236", + "addons/core/Configs/ERR/GameOverScreens.conf.meta": "eb654b745c0b97b41c991694569ef4877a3c2315e0826f9556337cd68690843e", + "addons/core/Configs/ERR/VanillaFactions.conf": "db890b61b48ee15484041fd2245a862d9fa9e7ba21b1229c281ff37c448a35b1", + "addons/core/Configs/ERR/VanillaFactions.conf.meta": "ac77725c0c21974991ef47a466b88122e939de8b46fd23e68889e7674cbb2bfd", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Missions/ERR_Everon_Base.conf": "c035afca636653b7751c49f85620edac23f7217fd135b98f8f891192f66c967a", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "addons/core/Prefabs/ERR/ConvoyCrew.et": "29a525a29605386dfcf292dc2316e9fc7650ce39db9fbaa4ce4372ad0de66db4", + "addons/core/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/core/Prefabs/ERR/Extraction.et": "4d24c7811415c06386205e5bf5c132a23fcf21e96c75c7657ccd5f3ac914ac50", + "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", + "addons/core/Prefabs/ERR/FactionManager.et": "3f8157aab44e124e8d5ab5e47e3d38ad7466638ae1e97be057aa2de74c360a85", + "addons/core/Prefabs/ERR/FactionManager.et.meta": "9bf53d5e4bcbe60dd1a4ece1409fc23c349055c860708620f5f6e9716290a97d", + "addons/core/Prefabs/ERR/FieldCover.et": "e403d5cb3a5966f0cea81f15e0e825d482ba1a7a27b12498319ba45a414963b0", + "addons/core/Prefabs/ERR/FieldCover.et.meta": "83461ffa76244e1d69f20b053a9741ccdf7d127009182bd540a7e5ba6150c3d9", + "addons/core/Prefabs/ERR/GameMode.et": "4d3e5e2df28cbb8292c436ae05d4fc7e5ca789a123450a6968d9a718b6ecef20", + "addons/core/Prefabs/ERR/GameMode.et.meta": "106769cd34525c9d440057072836cb7401a6752148c40edd7fe61c03bd58328c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et": "0157bc235eeb78a0e1373b561fd22a1dcb225c833ff7c2d4abae688bca0ec92a", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et.meta": "da6f065cb2414b5a4cbe9ef0f0b1295b2466f26ad406c0bddb83845d4598efb3", + "addons/core/Prefabs/ERR/MortarCrew.et": "21086e886fe3199624208c9a866f883ec109f7d08746c2b56b497e59857fb656", + "addons/core/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/core/Prefabs/ERR/ObjectiveDocument.et": "5118ecaf9d2038eea44a4b785f05d2e78781dc1387249aa58a6782c7e6752e14", + "addons/core/Prefabs/ERR/ObjectiveDocument.et.meta": "eaba9903be147b98a1106e2273e2270773df73b9b22f2cd4e20136a8e281382e", + "addons/core/Prefabs/ERR/Patrol.et": "d3eca8fe9197c57a27a285cdb3baf168b037b198d92b39df28a338ae2cfd0c74", + "addons/core/Prefabs/ERR/Patrol.et.meta": "7c5da568fa2fcf0709ee2959253cb068d7c7ed7c2467af3b247a7e70efd96b69", + "addons/core/Prefabs/ERR/Prison.et": "24e942dea876aeeff5778c402098099a62f9a7efca61a08036e1d2bfeec9923f", + "addons/core/Prefabs/ERR/Prison.et.meta": "2e426ef3de68f4107907854b51e818bc11d84649a01c538e3f18dd9ebec766bb", + "addons/core/Prefabs/ERR/PrisonDoor.et": "c45d5aa239efa8934dc5d0367dc8e196c15ed04ad72efdaad574ce01dca91e84", + "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", + "addons/core/Prefabs/ERR/PrisonWall.et": "b0cb8fb38716f083f86e39fb4f84f275e17855d4d2558b2da2b488fb12b39121", + "addons/core/Prefabs/ERR/PrisonWall.et.meta": "0294bc5dbb56f90f8153d62459bb0a6ad91d76a479812bbec9c7db182fdb58d6", + "addons/core/Prefabs/ERR/Prisoner.et": "e6d345ac98ad9ec742bf6c3b8686839c3256df9833d31bb4bdf605cd41d0ba5c", + "addons/core/Prefabs/ERR/Prisoner.et.meta": "974278ba49fafeed70b619a0067bbc70ae4d534be441c812ce2bef4a5fb3c022", + "addons/core/Prefabs/ERR/Radio.et": "8e15f4795a7459e95dd5e5cb61940b7619452bee2dcdfb8eaa00154acb3308cb", + "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", + "addons/core/Prefabs/ERR/SpectatorCamera.et": "bffb102272eb888d1f8d8c32c7515e62751d3feb48ef4713227f040d59c42db6", + "addons/core/Prefabs/ERR/SpectatorCamera.et.meta": "2a16558f93915e31908a674509e9c89976470f78a84a1174a64b94b68b8f77ad", + "addons/core/Prefabs/ERR/SupplyCache.et": "4c97b0514fe7e723046f40f0b396f6573b12eb9981ca5df70b9e8aa3cf29323e", + "addons/core/Prefabs/ERR/SupplyCache.et.meta": "2f5de3a4aab1e9d0e35521f48dc57b95bd6e449c383dec4f1c258e10295904cb", + "addons/core/Prefabs/ERR/SupplySite.et": "f33681281d26676fac88736091834d5a7b87fe0fa01883582542df964dcfc694", + "addons/core/Prefabs/ERR/SupplySite.et.meta": "b41944b12eb3528ff7a3ac94258b18c66ef161aa6a38894aee300a1ac4798630", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et": "29f157849f413261494a63d4d5b0a97e8bbe61cb076efcd59d6c940653f23352", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et.meta": "544c94cf1c26757a10654de7856cd6cc48b821ce3bdc02add13cfe6514269915", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et": "cd4acdcecad299445952aea0adefc85f2b9e9b43f8186f100e0505c5621b3656", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et.meta": "123955da03462befb90e293b3bb856d49cc761166611b38ff47cb48ec2fbe95c", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c": "8a5ccf1fff1442dfe7ab4cb3cc858ee16adb073119144187155ade558b8c4c5f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c": "6cfb7de35bbbc18bd6d35c63da01284ffb08b8641527d49283d9b9b0cb94f8c2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "e17bd68f82012bff7c1953cf1adc86fe1cdefbc01d3b5eb88fa96f956bb4f135", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c": "43a406822a0361f916abc363f27e0c578ee94855036981d876bf47c68233c71a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "41a35f806d925d025534247b0705d7eb47f134d181e5b819a149be7909ba4cc1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "2a0fa03b96ac5318427f23ff21185e693dd595b017fed6049cc99dbf88d76596", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnClientScene.c": "0a84f85cc53716f19cdb7af3e67cbfc87e8cb68a2897565163dd1b46b47ff214", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "4a3f3ff4737f30566519ec99b883d68d57b7e0557ca2dd39d7632229bd7be80a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c": "360228fd45aa6ecd9426e36120b5e637d2feee1e3a4a89aac8207526b871c87e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c": "b16a8b31be20271c37c4d68c169f08b28d88993d296308b80de00715ea2b4dfe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c": "0c8ce2f3d2642999a7158000e60d8c491ed3e4b6d9c0d3d18b3e3ecc3e557196", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "0921c04c313f36f23aaab35fdea05bb479a81f01acc62c715ca3b3e366d67f81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c": "298ae30d1db1191d680a5a8f60253f9344e0e19fe9c17242c757382042364341", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c": "d5337ce8073335ccb4b03d447550a38e03d6fc9e428008be3a7b042c078f4835", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "85e4d2cb27426c07b8631ca411f4b8f5c821f9f331c8c2719cbfa71b3687f08e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c": "0897e82d7805ef56f05f2b9c23903280285ea6bfa51796a2df86bb564ece78f7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c": "53cd74d121292f6f6813c2b69e475f29dba9239bc10cbaf55ce1d7f8fb3674f6", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c": "917f9df36b93258a30b7af24b0ee52b65c5205405d8056bb721a9868010d64d1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c": "84cec6457132eff6d195bc6fc8fcee267685693edbb987cbeafaece0f7537992", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c": "5d9b5d4b1d22d57145e79b5a740863a5233706fd8b11046d2512a681f8a615a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "9f8f0844862ef98b0878290238a410d501ea99622cd5e517fcacd9a9187f889a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c": "7379cb65bde95bd1e7ffc2203a7fb7957435d379560e08b470e73a89ea6b59cf", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c": "4493c6b6070cd7d768a2fcba2d8934b782c9a221ae257a530aa6b52fa40d88a8", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c": "0d4d61c424a16008595f86fa61f3b848caf9bd6e9ebbacea9c10254d88ba378e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "1f12f58e46b2a892d22d5ec03da4a03fbf24b3b362b6d8be7f4af3e6cc21e3d1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c": "a747af09599ce4d0c52051f18f00c4624d24d137e328341b580b82e896c6bf65", + "addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/core/UI/layouts/ERR/AdminMenu.layout": "26db9780c0afffa8429602c27ee347a4e665a19a6872b15f4178d684de7e23b6", + "addons/core/UI/layouts/ERR/AdminMenu.layout.meta": "9deeece996f43b1f1fed6b5ec89279645c7b6424250200a42580cc088142e9bf", + "addons/core/UI/layouts/ERR/PreparationStatus.layout": "bd269cf8dc6f27735423743dd5b78242550518414448a0256e5e12fa6b92c459", + "addons/core/UI/layouts/ERR/PreparationStatus.layout.meta": "75b12176a443bb911fc4ad446982d762201fda42ed38736b79bc5439fca31ccc", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", + "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", + "addons/core/Worlds/ERR_Everon_Layers/default.layer": "17105538007199bfc419aa04a64debaf2da0a7b77a1dc3ba983e92bf747c862e", + "addons/core/addon.gproj": "683a522c7f7f5d5ff41c57b0f0947f3cd2ec866b656a5f449af55688956eb5fa" +} diff --git a/docs/evidence/native-2026-09-20-spawn-scene/launch-source.json b/docs/evidence/native-2026-09-20-spawn-scene/launch-source.json new file mode 100644 index 0000000..dc96767 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/launch-source.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "launch_id": "316e3665-0256-47a5-8798-60e1a08f1040", + "captured_unix": 1789907567.4610453, + "source_root": "/home/jakub/devel/escapistsrereintroduced", + "command": [ + "gamescope", + "--backend", + "headless", + "-W", + "1280", + "-H", + "720", + "-w", + "1280", + "-h", + "720", + "-r", + "30", + "--", + "/home/jakub/.local/share/Steam/steamapps/common/Proton - Experimental/proton", + "run", + "/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger Tools/Workbench/ArmaReforgerWorkbenchSteamDiag.exe", + "-gproj", + "Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj", + "-addonsDir", + "Z:/home/jakub/devel/escapistsrereintroduced/addons", + "-profile", + "Z:/tmp/erri-spawn-scene-workbench-v2", + "-logconsole", + "-wbModule=WorldEditor", + "-load", + "Worlds/ERR_Everon.ent", + "-plugin=ERR_ValidateWorldPlugin", + "-errPlay", + "1", + "-errSmoke", + "1", + "-errSmokeOutcome", + "hq-memory", + "-noThrow", + "-disableCrashReporter" + ], + "manifest_sha256": "0b26e9516d0160a13c2dd74f48d3262699e2d436cf2a2534241942614b21629c" +} diff --git a/docs/evidence/native-2026-09-20-spawn-scene/report.json b/docs/evidence/native-2026-09-20-spawn-scene/report.json new file mode 100644 index 0000000..dbf301e --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/report.json @@ -0,0 +1,14 @@ +{ + "log": "docs/evidence/native-2026-09-20-spawn-scene/console.log.txt", + "smoke_completions": 1, + "assertions_passed": 103, + "script_or_runtime_failures": [], + "engine_errors": [ + "14:32:50.960 RESOURCES (E): Wrong GUID/name for resource @\"{0AFDD005CD669892}Language/rhs_localization.st\" in property \"StringTableSource\"", + "14:32:50.960 RESOURCES (E): Wrong GUID/name for resource @\"{41FA2A08B6971D4C}Language/wcs_armament_localization.st\" in property \"StringTableSource\"", + "14:32:50.960 RESOURCES (E): Wrong GUID/name for resource @\"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st\" in property \"StringTableSource\"", + "14:32:50.961 RESOURCES (E): Wrong GUID/name for resource @\"{E50E557B468C7073}Language/wcs_bmp1_localization.st\" in property \"StringTableSource\"" + ], + "missing_end_screen": [], + "scope": "scripted local Workbench integration only; no multiplayer, piloting or FPS claim" +} diff --git a/docs/evidence/native-2026-09-20-spawn-scene/repository-check.log.txt b/docs/evidence/native-2026-09-20-spawn-scene/repository-check.log.txt new file mode 100644 index 0000000..205b7d8 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/repository-check.log.txt @@ -0,0 +1,456 @@ +PASS: missing, child-only, malformed, zero and duplicate prefab root IDs rejected +PASS: delayed wall/gate replication withholds assignment; native preload, identity checks, stale replies, cancellation and timeout remain enforced +PASS: actual delivered road eligibility, ahead projection without chords, reservations, stock road query bounds, terrain/water/obstruction refusal and clean outputs +PASS: actual delivered-task lineage, expiry, old-order retention, native commit, release, road precision expiry and duplicate delivery +PASS: actual original-roster local handoff,100m3D bound,busy carrier/budget exclusion,origin interruption including deletedsource,normal radio delivery and per-source replay history +PASS: actual visual intake retains source/time/position/id, rejects replay, prefers usable own route, excludes simultaneous callers and conservatively resets negative-sweep dwell +PASS: actual fixture local/radio gating, immutable source/time/position, interrupted-report exclusion and exact-owner cleanup +PASS: local-handoff runner refuses wrong project/round count/insufficient deadline before runtime work +PASS: actual fixture allocator terminal/unsubmitted guard, original-group lookup and both candidate gates +PASS: actual report-derived waypoint insertion/order and tighter positive radii; no formation navigation claim +PASS: actual Place/Stop waits native pose update, bounds four attempts, preserves original position, restores pending/settled placement and respects ownership/accepted-move quarantine +PASS: actual fixture current/original recipient ownership, unresolved transfer cleanup, exact-token release and idempotent Stop +PASS: actual authored storage anchors, native trace flags, own-hierarchy exclusion, external wall/vehicle obstruction, range, unknown geometry and bounded context refusal +PASS: actual stock capture, unique finite identities, original recipients, HQ reservations, delivered report replay/cooldown and failed-downlink cleanup +PASS: actual original turret identity, native/canonical guards, scoped >=80/>=100 profile, reset, dismount/reboard, requested-skill preservation and restoration +PASS: bounded150s startup followed by exactly one120s memory window; only HQ-memory outer deadline extended +PASS: actual read migrates old valid settings, preserves explicit disabled state, rejects invalid data; next-round feedback and fixed menu remain honest +PASS: actual automatic convoy timing/authority/admission/one-attempt/manual-task/stop policy; native deployment unproved +PASS: late authoritative failure reason refreshes open result; detach, mode change and success subscriptions preserved +infantry resupply actual rules, radio transitions, owned cleanup and unresolved-operation tests passed +PASS: actual resupply Roster preserves permanent release, original slot mapping and bounded ownership +PASS: actual single-item transfer, physical ownership/native callback proof, stop quarantine, compatibility and strict original actor/vehicle boundaries +PASS: actual early ammunition policy and status-first shared uplink; complete threshold, phases, cooldown, failures and requested check-ins +PASS: actual group radio startup preservation, finite native grants, callback quarantine, frozen selection/actor ownership and bounded observation +PASS: actual maintenance native-stock check rejects missing/duplicate/wrong-identity/unowned/depleted/malformed stock and is read-only; native runtime not executed +.................. +---------------------------------------------------------------------- +Ran 18 tests in 0.242s + +OK +PASS: actual radio node rejects current incapacitation, death, ownership and faction changes despite cached inventory; one-second capability refresh remains explicit +PASS: finite maintenance stock/resource identity, bounded scenario stock and preserved two-cache clue redundancy; native interaction not claimed +PASS: actual diagnostic fallback runs only on failed missing-context call, derives unique native pilot door, preserves stock eligibility and restores prior index on success/failure; diagnostics mutate no game state. +PASS: actual native-prelude cleanup restores only original changed damage, refuses stale/incapacitated/aboard teleport; bounded five-seat/four-door fixture wiring checked. Native execution remains pending. +PASS: actual CreateTransport requires successful scoped Configure after handbrake, preserves ordinary vehicles, tracks spawned entity before failures and never treats failed lock registration as ready. +PASS: actual preparation Configure guards/idempotence/breach preservation, security eligibility/final current-body server mutation and all scoped action guards; all five seat/four door resource overrides. Native hold, prefab merge, replication and boarding remain unverified. +PASS: actual convoy cover observation/snapshot/uplink/HOLD/RESUME/cleanup transitions; native boundaries mocked, non-convoy runner opt-in refused +Enemy optics actual-service ownership, preservation, callback, deadline and bounded-inspection policies passed +PASS: actual delivered cover freshness/lineage/replay and canonical executor; owned waypoint-only hold, one resume at preserved route index, invalid ownership/crew/ledger refusal and fail-closed native recreation +PASS: actual Stinger show/set/help state precise actor-roll effects; read-only help, bounded values, malformed syntax and failed-save preservation; no rerolls/gameplay edits and no native persistence claim +PASS: new/retasked search and radio delivery ammo gates; active tasks and delivered release preserved +HQ convoy delivered-report planning and downlink regressions passed +PASS: actual own-inventory ammo inspection deduplicates loaded/carried/shared wells, separates chambers/launchers, freezes scalar snapshots and treats unsupported/capped/foreign inventory as unknown +PASS: native body fixture uses existing immutable actors, real production LOS/queued uplink, pre-delivery isolation, actual status overlap, bounded cleanup and no fabricated reports/spawns +PASS: actual native fixture lookup selects exact BODY kind/identity/message from bounded evaluations, never sighting-only Get +PASS: actual ammo snapshot comparison checks every scalar/category flag; native probe requires real roster rescan, loaded-round lower bound and separate immutable pending/Watch objects +PASS: actual delivered slot-union bodies preserve overlap/disjoint evidence, replay idempotence, status subset integrity, full-wipe closure and formation-local bounds +test_review_added_allowed_media_invalidates_snapshot (__main__.ReviewTests.test_review_added_allowed_media_invalidates_snapshot) ... ok +test_review_added_source_directory_rejected (__main__.ReviewTests.test_review_added_source_directory_rejected) ... ok +test_review_loose_root_resource_and_symlink_rejected (__main__.ReviewTests.test_review_loose_root_resource_and_symlink_rejected) ... ok +test_review_metadata_media_and_sidecars_remain_allowed_and_bound (__main__.ReviewTests.test_review_metadata_media_and_sidecars_remain_allowed_and_bound) ... ok +test_review_missing_link_rejected (__main__.ReviewTests.test_review_missing_link_rejected) ... ok +test_review_package_guard_sees_new_scripts (__main__.ReviewTests.test_review_package_guard_sees_new_scripts) ... ok +test_review_retargeted_private_link_rejected (__main__.ReviewTests.test_review_retargeted_private_link_rejected) ... ok + +---------------------------------------------------------------------- +Ran 7 tests in 0.071s + +OK +PASS: actual report methods reproduce old starvation; status-first scheduler delivers check-ins and requires 30s without combat or actual visible contacts before negative reports +PASS: actual actor group lookup retains controlled character membership when seated/inherited vehicle agents differ; missing control or parent refuses +................. +---------------------------------------------------------------------- +Ran 17 tests in 2.482s + +OK +PASS: actual convoy motion thresholds, native-only proof boundaries, physical cargo/crew ownership and pre-launch runner restrictions +PASS: actual filled rotated-footprint TraceBox and nine terrain/water samples; broad tree/cable bounds alone accepted, actual collision/nonfinite trace refused, nonzero sweep and ENTS/OCEAN flags, bounded diagnostic query and reset +PASS: actual road interpolation/projection/orientation, six35m starts,200m forward tail, preserved bends, short/far/degenerate/nonfinite/overdense/hairpin refusal and deterministic candidate ties +PASS: actual authenticated convoy dispatch, active/ready admission gates, canonical receipt, safe unconsumed preflight retry, pool refusal, retained partial failure and consumed no-retry +PASS: actual native readiness exact membership, one-time per-vehicle ledger admission/reservation, partial readiness retry without duplicate records and one-pass56-item cargo allocation without replenishment +PASS: actual per-vehicle readiness reasons, native agent/activity counts, intended-seat diagnostics, five-second throttle and read-only observation +PASS: actual convoy dispatch validates before receipt consumption, consumes once before native mutation, retains all12 partial-failure paths, refuses implicit faction replacement, and allocates exact19 bodies without capacity shrinking +PASS: own memberless prefab disables automatic spawn before initialization; actual admission rejects populated, immediate or authored-slot templates before finite crew creation +PASS: actual native seated-group arrival outside35m, native waypoint removal, idempotent advance, and convoy waypoint idempotence/arrival/deadline, missing/dead/captured/reparented crew refusal, failed native waypoint release, original vehicle/member preservation and no replacement +PASS: actual convoy receipt identity/one-use, shared60-body and128-formation caps, outstanding/native-ledger accounting, exact19-body composition, source reuse, mode/client guards and no consumed receipt refunds +PASS: actual body observer enforces owned physical roster, local death-only candidates, native trace gating, budget/cadence/caps, immutable body-only snapshots, radio retries and confirmed suppression +PASS: own initial roster, explicit retained corpse evidence, unconscious/missing/ref transfer guards, fixed strength, no replacement adoption, detached samples and surviving radio sender requirement +PASS: delivered-only status snapshots, two missed check-ins/reply deadline, last reported coordinates, episode/replay guards, confirmed-loss idempotence and 128-record cap +PASS: actual assignment cancellation/release preserves radio ownership, native waypoint lifecycle and failed-order retry boundaries +PASS: actual force ledger, finite casualties/identity/cap, routes/arrival/elevation/overshoot, server and physical guards, staggered 128-record simulated hour without world queries +PASS: actual enemy eligibility, scoped native skill floor/reset/restoration, one-roll inventory issuance, completion/failure, timeout quarantine, actor capture and terminal stop; native inventory runtime unproven +PASS: actual equipment coordinator registration dedupe, startup delay, five member scans, finite component retries, unregister/stop terminal behavior and 128-group bound +PASS: actual objective heading/threat/approach rules, persistent doctrine weight, fresh-contact coverage invalidation, stale-sweep rejection and atomic radio retask ownership +PASS: actual bounded delivered-negative coverage, replay/freshness/expiry/invalid guards, oldest eviction, small-circle and nearest-unswept selection, reserved-cell exclusion and cleanup +PASS: actual bounded pursuit roles/objectives/scores, stale search degradation, physical/busy/home guards, finite lifetime and two-bearing escape gap; no hidden player reads or spawning +PASS: actual HQ memory rules/service preserve delivered snapshots, chronology, replay bounds, decay, motion limits, identity and negative-search revisions +....... +---------------------------------------------------------------------- +Ran 7 tests in 0.024s + +OK +PASS: actual session Tick + journal router delivers each grant completion and new HQ line once, without repeats on empty/unavailable feeds or unauthorized ticks +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.227s + +OK +PASS: actual current-controller/admin/mode authorization, per-round anti-replay, token-rotation refusal, command/snapshot throttles and client scope; owner-only replies and player-tool cleanup wiring +PASS: mission provider registration is idempotent, optional dispatch is ordered, status aggregates, journals preserve cursors, aliases stay with their addons and topic help is bounded +PASS: actual menu command routing covers all ten settings, rejects unsupported keys, gates companions, and matches unique authored widgets +PASS: actual admin body authorization, god restoration, vanilla item deposit, callback completion/failure, timeout quarantine and stop/revocation paths +PASS: same-body revoke/regrant preserves pending insertions and timeout quarantine; new-body binding isolates late callbacks and never inherits god mode +PASS: actual Intel commands distinguish status/start/failure, preserve authorization gate and reject malformed requests; spent ledger is idempotent, server-only and bounded +PASS: actual reroll snapshot, authority, cancellation, ownership, accepted operations, quarantine, bounded work and stop methods; no native runtime claim +PASS: production Intel feedback coalescing, rough secrecy, rate limit, bounded dedupe, local/remote delivery and round cleanup; native UI/RPC not exercised +PASS: actual per-squad bounded report selector rotates visible targets, survives ordering/turnover, records only queued attempts, and preserves radio intake ordering +PASS: actual action denial/clearing, server request failure, single submitted-result feedback, current rescuer identity and terminal/stop suppression; native UI/RPC pending +PASS: actual physical denial precedence and transport-seat occupancy/reservation/access/lock checks +PASS: actual initial admission exhaustion and ServerTick grace; new/pending/empty/controller/life guards, normal death preserved +...................... +---------------------------------------------------------------------- +Ran 22 tests in 0.271s + +OK +...................... +---------------------------------------------------------------------- +Ran 22 tests in 27.581s + +OK +.................. +---------------------------------------------------------------------- +Ran 18 tests in 3.189s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 2.409s + +OK +............... +---------------------------------------------------------------------- +Ran 15 tests in 1.200s + +OK +PASS: actual field result/braking observer and Chat dispatch rules; one finite fixed candidate, deferred callback failure and guarded cleanup; no native measurement +PASS: actual opt-in terrain audit records one fixed1681-point grid, preserves original survey refusal/success and exact no-allocation scope; malformed heights stop without retry; no native data acquired +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.647s + +OK +PASS: actual field PI/ramp/vector caps, antiwindup, braking hypothesis, immutable admission limits and segment bounds; no native physics tested +PASS: actual100m whole-field survey sampling/4096cap, rotated coverage, all-node terrain and native trace refusal; original certificate lineage retained; no native qualification +PASS: actual QualifyField preserves original identity/footprint/time, orders complete surveys before issuance, and refuses failed stages/moved body/expired or changed world; native boundaries faked +PASS: WORKBENCH first-refusal diagnostics preserve ordinary predicates, query order/count/budget and opt-in scope; no native logging run +PASS: actual field startup delegation, immutable lease/target, braking/settling/cancel transitions, early abort, callback scope, physical terminal policy and shared landing demand; native boundaries faked +PASS: actual inherited airborne pre-CLIMB cancellation enables verified native autohover once, refuses failed enable and never writes after capture +PASS: actual Core maintenance/default/tick/stop methods; empty/populated authority, terminal reentry, no tactical resume or new scheduler; native boundaries substituted +PASS: actual finite registration, unique claims/tokens, retention/cancel/stop, readiness gating, capture/expiry retirement and bounded cross-kind order history and typed field/route construction; native boundaries faked +PASS: actual WORKBENCH route observer returns exact retained route subtype and refuses absent/field controllers +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.694s + +OK +...................... +---------------------------------------------------------------------- +Ran 22 tests in 0.188s + +OK +................ +---------------------------------------------------------------------- +Ran 16 tests in 11.190s + +OK +...... +---------------------------------------------------------------------- +Ran 6 tests in 0.019s + +OK +PASS: actual production bridge lookup, lease/world/mode/seat/capture guards, no allocation, native super ordering and read-only fixture hooks +............... +---------------------------------------------------------------------- +Ran 15 tests in 0.058s + +OK +............. +---------------------------------------------------------------------- +Ran 13 tests in 5.265s + +OK +PASS: actual route gain/caps/braking, callback selection, old landing/cancellation control and matching read-only telemetry +.............................. +---------------------------------------------------------------------- +Ran 30 tests in 0.447s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 0.216s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.117s + +OK +PASS: actual gate observer binds native registered action/context and current life, reads accumulated progress, refuses stale bindings and never revives outside original bounds +PASS: actual read-only look observer methods enforce explicit scope, pinned native camera/body/identity, normalized pose, terminal cancellation and original sample/time bounds +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.068s + +OK +....................... +---------------------------------------------------------------------- +Ran 23 tests in 0.035s + +OK +PASS: actual initial WAITING task/guide copy, configured duration, unchanged interruption and rounded progress; native task assertion pending +........ +---------------------------------------------------------------------- +Ran 8 tests in 0.011s + +OK +PASS: actual inventory adapter scope, grid placement, sole compatible host, refresh reuse, rollback, foreign hierarchy refusal and exactly-once native delegation; native compatibility pending +................................................................................. +---------------------------------------------------------------------- +Ran 81 tests in 0.552s + +OK +...... +---------------------------------------------------------------------- +Ran 6 tests in 0.075s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 0.002s + +OK +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.077s + +OK +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.351s + +OK +PASS: actual observer nonce, admission pins, baseline/menu sequencing, snapshots, bounded clocks/samples, cleanup and one-attempt latch; native untested +PASS: actual corridor caps/height/hold and whole-rectangle survey bounds, terrain refusal, native trace refusal and exact certificate lineage; native route unqualified +PASS: actual route entry, fixed corridor/target, hover hold, cancellation landing freeze, shared lease/capture/deadline gate and unchanged native startup/tick sequence +PASS: finite opt-in route fixture, original native input order, meaningful physical-arrival evidence and guarded cleanup; no native launch +PASS: actual Chat route step result dispatch and scoped completion/cleanup wiring; six real early-parser refusal paths leave no prefix/profile output +PASS: actual retained-service fixture entry, immutable controller/token/deadline/count bindings, observer getter and cleanup ownership ordering; native route validation pending +PASS: actual measured cancellation gate, one-shot retained service Stop, no premature drain, immutable lease, fresh real controller readback and separate physical cancellation result policy +PASS: actual rough-intel objective selection, exact precedence, source grid dimensions and unchanged other-phase dispatch; native UI pending +................................. +---------------------------------------------------------------------- +Ran 33 tests in 0.110s + +OK +............... +---------------------------------------------------------------------- +Ran 15 tests in 0.032s + +OK +PASS: actual preparation status scope, persistent updates, spinner restoration, placeholder replacement/deletion/destruction, native observation persistence/timeout; rendering remains native-pending +PASS: actual guide/observer monitors retry native refusal, cache successful delivery, deduplicate and preserve living/preparing/spectator boundaries; native UI not exercised +PASS: actual native-end shutdown, existing terminal snapshots, reentrancy, unchanged native end data and stale preparation guards +.... +---------------------------------------------------------------------- +Ran 4 tests in 1.300s + +OK +PASS: actual three-state result wording and UI refresh; stale winner IDs never manufacture escape +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.097s + +OK +PASS: actual immutable target, bounded autohover demand, drift refusal, five-second hold and unchanged qualification/deadline +PASS: actual admission attempt budget bounds blocked/missing prerequisites; preparation, spent life and async pending remain protected +PASS: actual action permission matrix unchanged; useful phase/intel/consciousness denials, stale reason cleared, native door denial preserved; no native UI claim +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.212s + +OK +PASS: actual aircraft cancellation/stage rules, ground-only completion, expiry/capture faults, input ownership and no physical shortcuts +PASS: actual exact-instance single-use qualification, native-clock staleness/movement refusal, footprint bounds and ownership-safe ground/fault cleanup +PASS: actual optional screenshot helper flag/identity/world/life revalidation, one queued attempt, delayed capture and mission/world cleanup; no native image/presentation claim +PASS: actual yard diagnostic exact registered prison ownership, eight native-bound corner projections, no root-sibling escape, bounded duplicate/deep/wide hierarchy traversal; native projection/mask still unmeasured +PASS: actual CurrentActor, SpawnPosition and observer-selection methods reject pending/unregistered/replaced/recycled/foreign/dead bodies; canonical selection/cycling, unconscious following and prison/geometry fallback preserved; native boundaries adapted +PASS: actual native-map fixture ownership, cleanup and callback evidence fail closed; native execution remains separate +PASS: actual shared-map callbacks bind exact map/config/root, preserve replacement UI/camera, defer focus, and remove only owned delayed work +PASS: actual Intel/HQ methods and one-shot qualified readiness handoff deliver late actors once; duplicate readiness, accepted spawn, pickup/drop, death and original negative rolls do not mint assignments +PASS: Workbench-only read accessor rejects unknown/nonserver identities; Chat observes all distinct ready crew before existing shell-depletion mutation +PASS: actual native-event latch survives deselection, requires exact activity/order, detaches before cleanup, preserves failure/timeout and never infers completion from physical shot count +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.100s + +OK +PASS: actual refresh-fixture gates pin immutable observations/actual downlinks/original activity, reject unaccepted or relabelled commits, stop queueing early and require all queued contacts claimed before replay +.......................... +---------------------------------------------------------------------- +Ran 26 tests in 0.197s + +OK +PASS: actual refresh scheduler/delivery/cancellation/projectile methods reject interrupted or replayed reports, retain committed ownership, preserve immutable snapshots/aim geometry and isolate stopped or replaced orders; native radio/crew behavior remains separate +..................... +---------------------------------------------------------------------- +Ran 21 tests in 0.034s + +OK +........... +---------------------------------------------------------------------- +Ran 11 tests in 0.032s + +OK +PASS: actual full-salvo gates require eight fresh committed physical launches, natural closure and exact finite inventory; reject partial/extra/replayed events +PASS: actual reason/availability guidance and refresh matrix; no-target copy omits cycling, hint retry retained, existing command/admin paths unchanged; native UI pending +................usage: test_native_package.py [-h] [--project {core}] --session SESSION + --compat COMPAT [--steam STEAM] + [--timeout TIMEOUT] + [--external-addons EXTERNAL_ADDONS] + [--silent-workbench | --exit-after-init] + [--continue-on-failure] +test_native_package.py: error: argument --exit-after-init: not allowed with argument --silent-workbench +................................ +---------------------------------------------------------------------- +Ran 48 tests in 7.782s + +OK +....... +---------------------------------------------------------------------- +Ran 7 tests in 0.282s + +OK +.............. +---------------------------------------------------------------------- +Ran 14 tests in 1.438s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.271s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.055s + +OK +PASS: actual finite-courier age, token, exact ownership/callback and delivered-status admission reject stale, replayed, captured, canceled and ambiguous work +PASS: actual native-gun ownership gate rejects player/foreign/replaced/dead occupant, faction change, missing seat and missing registry +PASS: 64 bounded distinct storage candidates; native gates, five-store barrier and finite-stock ownership retained; native placement pending +PASS: 128 coarse+80 local refinement+169 airport grid candidates retain all native clearance gates; real terrain untested +PASS: actual prison registration/crossing policies reject missing/duplicate/destroyed initial gate, incomplete ownership/scan, outside-only body, jumps and stale samples; physical exit independent of later gate damage +PASS: actual prison door execution blocks direct AI/UI bypass while locked and delegates unchanged native action once after unlock and permission approval +.................. +---------------------------------------------------------------------- +Ran 18 tests in 1.946s + +OK +..... +---------------------------------------------------------------------- +Ran 5 tests in 1.080s + +OK +PASS: native local-admission snapshot rejects changed life/key/body/participant/pending state; authentication is not simulated +PASS: actual mortar report ledger prevents duplicate response after cancellation, expiry and interleaved reports; native scheduler separate +......... +---------------------------------------------------------------------- +Ran 9 tests in 0.013s + +OK +.... +---------------------------------------------------------------------- +Ran 4 tests in 0.148s + +OK +PASS: actual aim renewal requires fresh same-report solve and original-command equivalence; native firing untested +........ +---------------------------------------------------------------------- +Ran 8 tests in 0.012s + +OK +PASS: actual startup/generation/ownership/timeout/callback policies and native-counter wait; integration preserves one-shot allocation and pending-crew cancellation +PASS: actual probe binds native events to fresh immutable commits, permits delayed emission, rejects unrelated expiry closure and premature stop +PASS: actual noSplash Load body requires both explicit diagnostic and noSplash, preserves vanilla otherwise, and handles repeated Load/reload +PASS: actual fixture method permits one native resilience operation and restores either prior protection state, including failure paths +PASS: actual safe-exit boundary policy, native action/door selection, stop/cache cleanup, separate old mechanism and opt-in runner contracts +PASS: actual one-shot deadline/stability policies and preparation ownership, fuel, cleanup integration contracts +PASS: pending-only cancellation retires copied instance intent, preserves physical/control actors, and stops once +PASS: actual short-cast hit, upward support normal, no self support and no dynamic support +PASS: actual committed-ticket structure preserves reservation after death, rejects missing bodies/seats and ends at observation expiry +PASS: actual pending callback expires an empty-server reservation once, preserves its full lease, and cancels on completion/Stop +PASS: rescue lease expiry/reordering, fresh five-second settling, independent rescue ranges and grounded upright aircraft motion boundaries +PASS: requested guard population requires complete physical conscious membership before deadline +.................................... +---------------------------------------------------------------------- +Ran 36 tests in 0.021s + +OK +.......... +---------------------------------------------------------------------- +Ran 10 tests in 0.002s + +OK +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.872s + +OK +PASS: authored radio/optional-site bounds and physical horizontal/vertical boundaries +... +---------------------------------------------------------------------- +Ran 3 tests in 0.001s + +OK +PASS: all phase transitions, terminal states, defence boundaries, stale/future observations, intel discovery +PASS: Core document-discovery alias, companion-only alias exclusion, strict integer parsing and setting boundaries +PASS: player admission phase/life/identity/controller matrix, preload displacement limits, pending reservation overlap and owner exclusion +PASS: actual gate and pre-inventory document guards reject noncanonical/faction/life/disconnect/server mismatches; canonical reconnect and unconscious carried intel preserved +PASS: WB-only native fault injection restores both body mutations before checks/returns and requires eligible held-document negative/positive proof; runtime pending +PASS: actual discovery coordinates disclose stable 500m cell center until identified, then exact point, including negative/boundary coordinates +PASS: actual local admission context/selection/latch, same-round late identity, replacement/mode failure, fresh round and untouched network path +PASS: prison search packs 16 unique 3m-spaced inside-wall centers, prioritizes inner/edge positions and never bypasses clearance +PASS: recovery state excludes dead bodies, preserves reservations, requires controlled rescuers and distinguishes empty/all-dead teams +PASS: every minute round-trips, malformed clocks rejected, defaults limited to added keys, progression bounds and day duration aligned +PASS: native settings policy matches calendar boundaries 1900-2050, date/profile parsing is strict, authored defaults preserve old worlds +..... +---------------------------------------------------------------------- +Ran 5 tests in 0.622s + +OK +. +---------------------------------------------------------------------- +Ran 1 test in 0.338s + +OK +PASS: radio authorization/discovery/phase matrix, exact distance limits, defender handover, interruption, empty samples, clock regression and duration boundary +PASS: actual radio feedback policy, initial wait, interruption persistence, resumption and terminal/new-round reset +............... +---------------------------------------------------------------------- +Ran 15 tests in 2.031s + +OK +.............................................. +---------------------------------------------------------------------- +Ran 46 tests in 0.805s + +OK +PASS: legacy values preserved, unsupported fields reported, invalid data rejected, existing files protected, runtime bounds aligned +PASS: real-carrier shortest-hop paths, 500m boundary, three-hop cap, no-manpack failure, three-second originating-call interruption, unchanged downlink hop timing, completed-hop survival, interrupted final uplink, radio loss, capture, motion, timeout, reset and network bounds +PASS: migrated aircraft availability policy (controller migration still pending) +PASS: migrated salvo offsets are deterministic, spread and bounded (native firing and complete salvo qualification are separate) +PASS: 20 prefabs have unique saved root entity IDs +PASS: 299 original script entries tracked across 18 unfinished responsibilities +PASS: 1 isolated addons, acyclic dependencies, 34 unique resources, exact vanilla/authorized external references +All repository checks passed. Native compilation and multiplayer tests are separate requirements. diff --git a/docs/evidence/native-2026-09-20-spawn-scene/rereintroduced-hq.log.txt b/docs/evidence/native-2026-09-20-spawn-scene/rereintroduced-hq.log.txt new file mode 100644 index 0000000..f368df4 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/rereintroduced-hq.log.txt @@ -0,0 +1,252 @@ +#1 t=6.7s M0 REGISTER group 1 [session=1789907612-1] +#2 t=6.7s M0 MORTAR DEPLOY site=1 order=0 radio=M0 source=M0 position=<6000,202.788,7000>; authored gun and four-person crew; finite ammunition initialization pending [session=1789907612-1] +#3 t=7.7s M0 CONVOY STARTUP startup grace; [session=1789907612-1] +#4 t=7.7s M0 COURIER READY trip=0 state=1 delivered=0; 12 distinct original HE shells physically confirmed in existing western cache [session=1789907612-1] +#5 t=8.7s M0 REGISTER group 2 [session=1789907612-1] +#6 t=8.7s M0 REGISTER group 3 [session=1789907612-1] +#7 t=8.7s M0 REGISTER group 4 [session=1789907612-1] +#8 t=8.7s M0 REGISTER group 5 [session=1789907612-1] +#9 t=8.7s M0 REGISTER group 6 [session=1789907612-1] +#10 t=8.7s M0 REGISTER group 7 [session=1789907612-1] +#11 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789907612-1] +#12 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789907612-1] +#13 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789907612-1] +#14 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789907612-1] +#15 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789907612-1] +#16 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789907612-1] +#17 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#18 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#19 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#20 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#21 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#22 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#23 t=16.7s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789907612-1] +#24 t=17.7s M0 MORTAR CREW READY site=1 order=0 radio=M0 source=M0 position=<6000,202.788,7000>; four original physical members, one manpack, 27 confirmed HE; new shell requests=27; allocation permanently closed [session=1789907612-1] +#25 t=18.7s M5 STATUS REPORT status everon-extraction-1: 6 living, 6 fit, 0 confirmed losses; sampled=18738.1; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789907612-1] +#26 t=18.7s M7 STATUS REPORT status formation-1: 4 living, 4 fit, 0 confirmed losses; sampled=18738.1; small-arms ammunition=596 magazine rounds, 4 chambered [session=1789907612-1] +#27 t=19.7s M8 STATUS REPORT status everon-supply-2: 6 living, 6 fit, 0 confirmed losses; sampled=19749.2; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789907612-1] +#28 t=19.7s M5 CALL unit 5 originating report; three seconds before transmission [session=1789907612-1] +#29 t=19.7s M7 CALL unit 1 originating report; three seconds before transmission [session=1789907612-1] +#30 t=20.7s M9 STATUS REPORT status everon-outpost-1: 6 living, 6 fit, 0 confirmed losses; sampled=20749.2; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789907612-1] +#31 t=20.7s M8 CALL unit 6 originating report; three seconds before transmission [session=1789907612-1] +#32 t=20.7s M10 STATUS REPORT status everon-prison-1: 6 living, 6 fit, 0 confirmed losses; sampled=20749.2; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789907612-1] +#33 t=21.8s M9 CALL unit 7 originating report; three seconds before transmission [session=1789907612-1] +#34 t=21.8s M11 STATUS REPORT status everon-supply-1: 6 living, 6 fit, 0 confirmed losses; sampled=21764.8; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789907612-1] +#35 t=21.8s M10 CALL unit 2 originating report; three seconds before transmission [session=1789907612-1] +#36 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#37 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#38 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#39 t=22.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#40 t=22.8s M5 CALL COMPLETE unit 5 completed originating report [session=1789907612-1] +#41 t=22.8s M5 TRANSMIT unit 5 -> HQ (long-range) [session=1789907612-1] +#42 t=22.8s M12 STATUS REPORT status everon-radio-1: 6 living, 6 fit, 0 confirmed losses; sampled=22783.3; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789907612-1] +#43 t=22.8s M11 CALL unit 3 originating report; three seconds before transmission [session=1789907612-1] +#44 t=22.8s M7 CALL COMPLETE unit 1 completed originating report [session=1789907612-1] +#45 t=22.8s M7 TRANSMIT unit 1 -> HQ (long-range) [session=1789907612-1] +#46 t=23.8s M8 CALL COMPLETE unit 6 completed originating report [session=1789907612-1] +#47 t=23.8s M8 TRANSMIT unit 6 -> HQ (long-range) [session=1789907612-1] +#48 t=23.8s M12 CALL unit 4 originating report; three seconds before transmission [session=1789907612-1] +#49 t=24.8s M9 CALL COMPLETE unit 7 completed originating report [session=1789907612-1] +#50 t=24.8s M9 TRANSMIT unit 7 -> HQ (long-range) [session=1789907612-1] +#51 t=24.8s M5 RECEIVE HQ received from unit 5 [session=1789907612-1] +#52 t=24.8s M10 CALL COMPLETE unit 2 completed originating report [session=1789907612-1] +#53 t=24.8s M10 TRANSMIT unit 2 -> HQ (long-range) [session=1789907612-1] +#54 t=24.8s M7 RECEIVE HQ received from unit 1 [session=1789907612-1] +#55 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#56 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#57 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#58 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#59 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#60 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#61 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#62 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#63 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#64 t=25.8s M0 STINGER startup deadline reached; unresolved insertion quarantined for this actor [session=1789907612-1] +#65 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#66 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#67 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#68 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#69 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#70 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#71 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#72 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#73 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#74 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#75 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#76 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#77 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#78 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#79 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#80 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#81 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#82 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#83 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#84 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#85 t=25.8s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#86 t=25.8s M8 RECEIVE HQ received from unit 6 [session=1789907612-1] +#87 t=25.8s M11 CALL COMPLETE unit 3 completed originating report [session=1789907612-1] +#88 t=25.8s M11 TRANSMIT unit 3 -> HQ (long-range) [session=1789907612-1] +#89 t=26.8s M9 RECEIVE HQ received from unit 7 [session=1789907612-1] +#90 t=26.8s M12 CALL COMPLETE unit 4 completed originating report [session=1789907612-1] +#91 t=26.8s M12 TRANSMIT unit 4 -> HQ (long-range) [session=1789907612-1] +#92 t=26.8s M10 RECEIVE HQ received from unit 2 [session=1789907612-1] +#93 t=27.8s M11 RECEIVE HQ received from unit 3 [session=1789907612-1] +#94 t=28.8s M12 RECEIVE HQ received from unit 4 [session=1789907612-1] +#95 t=37.9s M0 CONVOY CREATED six physical vehicles and 19 finite crew; native readiness and ledger admission pending [session=1789907612-1] +#96 t=37.9s M0 CONVOY STARTUP canonical convoy dispatched; [session=1789907612-1] +#97 t=38.8s M0 CONVOY READINESS vehicle=0 reason=readiness guards satisfied; awaiting admission members=2 agents=2 activeAgents=2 activeGroup=1 seats=2 registered=0 [session=1789907612-1] +#98 t=38.8s M0 CONVOY READINESS vehicle=1 reason=readiness guards satisfied; awaiting admission members=1 agents=1 activeAgents=1 activeGroup=1 seats=1 registered=0 [session=1789907612-1] +#99 t=38.8s M0 CONVOY READINESS vehicle=2 reason=readiness guards satisfied; awaiting admission members=9 agents=9 activeAgents=9 activeGroup=1 seats=9 registered=0 [session=1789907612-1] +#100 t=38.8s M0 CONVOY READINESS vehicle=3 reason=readiness guards satisfied; awaiting admission members=2 agents=2 activeAgents=2 activeGroup=1 seats=2 registered=0 [session=1789907612-1] +#101 t=38.8s M0 CONVOY READINESS vehicle=4 reason=readiness guards satisfied; awaiting admission members=3 agents=3 activeAgents=3 activeGroup=1 seats=3 registered=0 [session=1789907612-1] +#102 t=38.8s M0 CONVOY READINESS vehicle=5 reason=readiness guards satisfied; awaiting admission members=2 agents=2 activeAgents=2 activeGroup=1 seats=2 registered=0 [session=1789907612-1] +#103 t=38.8s M0 REGISTER group 8 [session=1789907612-1] +#104 t=38.8s M0 REGISTER group 9 [session=1789907612-1] +#105 t=38.8s M0 REGISTER group 10 [session=1789907612-1] +#106 t=38.8s M0 REGISTER group 11 [session=1789907612-1] +#107 t=38.8s M0 REGISTER group 12 [session=1789907612-1] +#108 t=38.8s M0 REGISTER group 13 [session=1789907612-1] +#109 t=38.8s M0 CONVOY CARGO finite target submitted once: eight AK74 and 48 magazines; native capacity/completion may reduce actual stock [session=1789907612-1] +#110 t=39.9s M0 INFANTRY SUPPLY trip=0 state=1 moved=0 spent=0/48; truck magazine identities captured once after startup; absent/looted stock is never replaced [session=1789907612-1] +#111 t=41.9s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#112 t=41.9s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#113 t=41.9s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#114 t=41.9s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789907612-1] +#115 t=44.9s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789907612-1] +#116 t=44.9s M0 RADIO EQUIPMENT native radio completion recorded; original group allocation terminal, no replenishment [session=1789907612-1] +#117 t=44.9s M0 RADIO EQUIPMENT native radio completion recorded; original group allocation terminal, no replenishment [session=1789907612-1] +#118 t=45.4s M15 CALL unit 2 originating report; three seconds before transmission [session=1789907612-1] +#119 t=46.9s M15 LOST originating call lost its living owned radio carrier; FIXTURE synthetic observed position; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (0s ago) [session=1789907612-1] +#120 t=48s M16 CALL unit 3 originating report; three seconds before transmission [session=1789907612-1] +#121 t=49s M17 STATUS REPORT status everon-supply-convoy-1-vehicle-2: 9 living, 9 fit, 0 confirmed losses; sampled=48973.6; small-arms ammunition=1881 magazine rounds, 9 chambered [session=1789907612-1] +#122 t=50s M21 STATUS REPORT status everon-supply-convoy-1-vehicle-3: 2 living, 2 fit, 0 confirmed losses; sampled=49987.3; small-arms ammunition=418 magazine rounds, 2 chambered [session=1789907612-1] +#123 t=50s M17 CALL unit 10 originating report; three seconds before transmission [session=1789907612-1] +#124 t=51s M23 STATUS REPORT status everon-supply-convoy-1-vehicle-4: 3 living, 3 fit, 0 confirmed losses; sampled=51002.4; small-arms ammunition=627 magazine rounds, 3 chambered [session=1789907612-1] +#125 t=51s M21 CALL unit 11 originating report; three seconds before transmission [session=1789907612-1] +#126 t=51s M16 CALL COMPLETE unit 3 completed originating report [session=1789907612-1] +#127 t=51s M16 TRANSMIT unit 3 -> HQ (long-range) [session=1789907612-1] +#128 t=52s M26 STATUS REPORT status everon-supply-convoy-1-vehicle-5: 2 living, 2 fit, 0 confirmed losses; sampled=52017.3; small-arms ammunition=418 magazine rounds, 2 chambered [session=1789907612-1] +#129 t=52s M23 CALL unit 12 originating report; three seconds before transmission [session=1789907612-1] +#130 t=52s M27 STATUS REPORT status everon-supply-convoy-1-vehicle-0: 2 living, 2 fit, 0 confirmed losses; sampled=52017.3; small-arms ammunition=418 magazine rounds, 2 chambered [session=1789907612-1] +#131 t=53s M26 CALL unit 13 originating report; three seconds before transmission [session=1789907612-1] +#132 t=53s M17 CALL COMPLETE unit 10 completed originating report [session=1789907612-1] +#133 t=53s M17 TRANSMIT unit 10 -> unit 1 (124m short-range) [session=1789907612-1] +#134 t=53s M28 STATUS REPORT status everon-supply-convoy-1-vehicle-1: 1 living, 1 fit, 0 confirmed losses; sampled=53025; small-arms ammunition=209 magazine rounds, 1 chambered [session=1789907612-1] +#135 t=53s M27 CALL unit 8 originating report; three seconds before transmission [session=1789907612-1] +#136 t=53s M16 RECEIVE HQ received from unit 3 [session=1789907612-1] +#137 t=53s M16 BELIEF delivered report M16 retained; tracks=1 [session=1789907612-1] +#138 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#139 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#140 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#141 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#142 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#143 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#144 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#145 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#146 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#147 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#148 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#149 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#150 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#151 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#152 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#153 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#154 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#155 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#156 t=54s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789907612-1] +#157 t=54s M21 CALL COMPLETE unit 11 completed originating report [session=1789907612-1] +#158 t=54s M21 TRANSMIT unit 11 -> unit 1 (132m short-range) [session=1789907612-1] +#159 t=54s M28 CALL unit 9 originating report; three seconds before transmission [session=1789907612-1] +#160 t=54s M31 ORDER QUEUED group 7 search; belief=1 from report M16; destination=<6390,211.444,7460> [session=1789907612-1] +#161 t=55s M23 CALL COMPLETE unit 12 completed originating report [session=1789907612-1] +#162 t=55s M23 TRANSMIT unit 12 -> unit 1 (198m short-range) [session=1789907612-1] +#163 t=55s M17 RECEIVE unit 1 received from unit 10 [session=1789907612-1] +#164 t=55s M17 TRANSMIT unit 1 -> HQ (long-range) [session=1789907612-1] +#165 t=55s M31 TRANSMIT HQ -> unit 7 (long-range) [session=1789907612-1] +#166 t=55s M32 CALL unit 2 originating report; three seconds before transmission [session=1789907612-1] +#167 t=56.1s M26 CALL COMPLETE unit 13 completed originating report [session=1789907612-1] +#168 t=56.1s M26 TRANSMIT unit 13 -> HQ (long-range) [session=1789907612-1] +#169 t=56.1s M21 RECEIVE unit 1 received from unit 11 [session=1789907612-1] +#170 t=56.1s M21 TRANSMIT unit 1 -> HQ (long-range) [session=1789907612-1] +#171 t=56.1s M27 CALL COMPLETE unit 8 completed originating report [session=1789907612-1] +#172 t=56.1s M27 TRANSMIT unit 8 -> unit 1 (67m short-range) [session=1789907612-1] +#173 t=57.1s M23 RECEIVE unit 1 received from unit 12 [session=1789907612-1] +#174 t=57.1s M23 TRANSMIT unit 1 -> HQ (long-range) [session=1789907612-1] +#175 t=57.1s M17 RECEIVE HQ received from unit 1 [session=1789907612-1] +#176 t=57.1s M28 CALL COMPLETE unit 9 completed originating report [session=1789907612-1] +#177 t=57.1s M28 TRANSMIT unit 9 -> HQ (long-range) [session=1789907612-1] +#178 t=57.1s M31 RECEIVE unit 7 received from HQ [session=1789907612-1] +#179 t=57.1s M31 ORDER DELIVERED group 7 search from report M16; belief=1 destination=<6390,211.444,7460> [session=1789907612-1] +#180 t=58.1s M26 RECEIVE HQ received from unit 13 [session=1789907612-1] +#181 t=58.1s M21 RECEIVE HQ received from unit 1 [session=1789907612-1] +#182 t=58.1s M27 RECEIVE unit 1 received from unit 8 [session=1789907612-1] +#183 t=58.1s M27 TRANSMIT unit 1 -> HQ (long-range) [session=1789907612-1] +#184 t=58.1s M32 CALL COMPLETE unit 2 completed originating report [session=1789907612-1] +#185 t=58.1s M32 TRANSMIT unit 2 -> unit 1 (224m short-range) [session=1789907612-1] +#186 t=58.1s M33 ORDER QUEUED MORTAR ORDER from report M16; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (11s ago) [session=1789907612-1] +#187 t=58.1s M0 MORTAR COMMAND site=1 order=1 radio=M0 source=M16 position=<6000,202.788,7000>; requested rounds=8 HE radius=40m; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (11s ago) [session=1789907612-1] +#188 t=59.1s M23 RECEIVE HQ received from unit 1 [session=1789907612-1] +#189 t=59.1s M28 RECEIVE HQ received from unit 9 [session=1789907612-1] +#190 t=59.1s M33 TRANSMIT HQ -> unit 1 (long-range) [session=1789907612-1] +#191 t=60.1s M27 RECEIVE HQ received from unit 1 [session=1789907612-1] +#192 t=60.1s M32 RECEIVE unit 1 received from unit 2 [session=1789907612-1] +#193 t=60.1s M32 TRANSMIT unit 1 -> HQ (long-range) [session=1789907612-1] +#194 t=61.1s M33 RECEIVE unit 1 received from HQ [session=1789907612-1] +#195 t=61.1s M33 MORTAR AIM site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; native activity created; latest source=M16 observed=X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (14s ago) [session=1789907612-1] +#196 t=62.1s M32 RECEIVE HQ received from unit 1 [session=1789907612-1] +#197 t=62.1s M32 BELIEF delivered report M32 retained; tracks=1 [session=1789907612-1] +#198 t=62.1s M33 MORTAR ACTIVITY site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=native state=1; age=1.01602s aim age=62.1339s committed=0 shots=0; previous= repeated polls omitted=0 [session=1789907612-1] +#199 t=63.1s M34 CALL unit 2 originating report; three seconds before transmission [session=1789907612-1] +#200 t=64.1s M35 ORDER QUEUED MORTAR UPDATE from report M32; X=6414 Z=7460: count unknown; on foot; 13 km/h, azimuth 90 degrees (E); seen weapons: unknown; vector X/Z=[3.6,0] m/s (10s ago) [session=1789907612-1] +#201 t=64.1s M33 MORTAR UPDATE QUEUED site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; same order; update radio=M35 newer observation=M32 observed=54039 [session=1789907612-1] +#202 t=64.6s M33 MORTAR AIM START site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=solving moving intercept; latest source=M16; X=6390 Z=7460: count unknown; on foot; speed/direction unknown; seen weapons: unknown; vector X/Z=unknown (17s ago); previous= repeated polls omitted=0 [session=1789907612-1] +#203 t=64.6s M33 MORTAR AIM SOLUTION site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=ready; predicted impact=<6397.07,175.092,7447.75> flight=18.5667s charge index=1 aim target=<6397.07,1766.22,7447.75> latest source=M16; previous= repeated polls omitted=0 [session=1789907612-1] +#204 t=65.1s M35 TRANSMIT HQ -> unit 1 (long-range) [session=1789907612-1] +#205 t=66.2s M34 CALL COMPLETE unit 2 completed originating report [session=1789907612-1] +#206 t=66.2s M34 TRANSMIT unit 2 -> unit 1 (221m short-range) [session=1789907612-1] +#207 t=67.2s M35 RECEIVE unit 1 received from HQ [session=1789907612-1] +#208 t=67.2s M33 MORTAR WITHHELD site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=target update requires a different native aim command; ; previous= repeated polls omitted=0 [session=1789907612-1] +#209 t=67.2s M33 MORTAR UPDATE REJECTED site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; delivered update cannot preserve the original native aim command [session=1789907612-1] +#210 t=68.2s M34 RECEIVE unit 1 received from unit 2 [session=1789907612-1] +#211 t=68.2s M34 TRANSMIT unit 1 -> HQ (long-range) [session=1789907612-1] +#212 t=68.2s M33 MORTAR REPEATS site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; phase=ACTIVITY reason=native state=1 repeated polls omitted=5 [session=1789907612-1] +#213 t=68.2s M33 MORTAR ORDER END site=1 order=1 radio=M33 source=M16 position=<6000,202.788,7000>; reason=native aim or firing authorization rejected observed shots=0 shell committed=0 elapsed=7.06277s last failure=delivered update cannot preserve the original native aim command [session=1789907612-1] +#214 t=70.2s M34 RECEIVE HQ received from unit 1 [session=1789907612-1] +#215 t=70.2s M34 AREA SWEPT group 2 reported no contact at <6414,211.444,7460>; belief=1 [session=1789907612-1] +#216 t=71.2s M36 CALL unit 2 originating report; three seconds before transmission [session=1789907612-1] +#217 t=74.3s M36 CALL COMPLETE unit 2 completed originating report [session=1789907612-1] +#218 t=74.3s M36 TRANSMIT unit 2 -> unit 1 (215m short-range) [session=1789907612-1] +#219 t=76.3s M36 RECEIVE unit 1 received from unit 2 [session=1789907612-1] +#220 t=76.3s M36 TRANSMIT unit 1 -> HQ (long-range) [session=1789907612-1] +#221 t=78.3s M36 RECEIVE HQ received from unit 1 [session=1789907612-1] +#222 t=78.3s M36 BELIEF delivered report M36 retained; tracks=1 [session=1789907612-1] +#223 t=78.3s M37 ORDER QUEUED MORTAR ORDER from report M36; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (7s ago) [session=1789907612-1] +#224 t=78.3s M0 MORTAR COMMAND site=1 order=2 radio=M0 source=M36 position=<6000,202.788,7000>; requested rounds=8 HE radius=40m; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (7s ago) [session=1789907612-1] +#225 t=79.3s M38 CALL unit 2 originating report; three seconds before transmission [session=1789907612-1] +#226 t=79.3s M37 TRANSMIT HQ -> unit 1 (long-range) [session=1789907612-1] +#227 t=81.3s M37 RECEIVE unit 1 received from HQ [session=1789907612-1] +#228 t=81.3s M37 MORTAR AIM site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; native activity created; latest source=M36 observed=X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (10s ago) [session=1789907612-1] +#229 t=81.9s M37 MORTAR AIM START site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; reason=solving moving intercept; latest source=M36; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (11s ago); previous= repeated polls omitted=0 [session=1789907612-1] +#230 t=81.9s M37 MORTAR AIM SOLUTION site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; reason=ready; predicted impact=<6400.98,175.568,7454.47> flight=18.5001s charge index=1 aim target=<6400.98,1759.39,7454.47> latest source=M36; previous= repeated polls omitted=0 [session=1789907612-1] +#231 t=82.3s M38 CALL COMPLETE unit 2 completed originating report [session=1789907612-1] +#232 t=82.3s M38 TRANSMIT unit 2 -> unit 1 (215m short-range) [session=1789907612-1] +#233 t=82.3s M37 MORTAR ACTIVITY site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; reason=native state=1; age=1.00723s aim age=0.373305s committed=0 shots=0; previous= repeated polls omitted=0 [session=1789907612-1] +#234 t=84.3s M38 RECEIVE unit 1 received from unit 2 [session=1789907612-1] +#235 t=84.3s M38 TRANSMIT unit 1 -> HQ (long-range) [session=1789907612-1] +#236 t=86.4s M38 RECEIVE HQ received from unit 1 [session=1789907612-1] +#237 t=89s M37 MORTAR SHOOT NODE site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; reason=native result=2; authorization passed; node result does not confirm a physical shot; previous= repeated polls omitted=0 [session=1789907612-1] +#238 t=89.9s M37 MORTAR SHELL COMMIT site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; final safety passed; gunner=SCR_ChimeraCharacter<0x0000000093944B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.874512 202.692963 7000.013672> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" predicted impact=<6400.98,175.568,7454.47> flight=18.5001s; invoking native transfer, awaiting projectile event [session=1789907612-1] +#239 t=91s M37 MORTAR FIRED site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; physical projectile=Projectile<0x00000001A868B800> @"ENTITY:4611686018427391079" ('Projectile','Assets/Weapons/Ammo/Shells/82mm_Mortar_2B14/Shell_82mm_HE_O832DU.xob') at <6000.332031 204.006165 7000.378906> @"{98EC9C526AFBA282}Prefabs/Weapons/Ammo/Ammo_Shell_82mm_HE_O832DU.et" origin=<6000.33,204.006,7000.38> order shots=1 total shots=1 predicted impact=<6400.98,175.568,7454.47> predicted flight=18.5001s gunner=SCR_ChimeraCharacter<0x0000000093944B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.874512 202.691696 7000.013672> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" (impact not observed) [session=1789907612-1] +#240 t=99.5s M37 MORTAR SHELL COMMIT site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; final safety passed; gunner=SCR_ChimeraCharacter<0x0000000093944B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.898438 202.696365 7000.041992> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" predicted impact=<6422.29,177.023,7478.2> flight=18.3001s; invoking native transfer, awaiting projectile event [session=1789907612-1] +#241 t=100.5s M37 MORTAR FIRED site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; physical projectile=Projectile<0x00000001A868B910> @"ENTITY:4611686018427391084" ('Projectile','Assets/Weapons/Ammo/Shells/82mm_Mortar_2B14/Shell_82mm_HE_O832DU.xob') at <6000.351562 203.993790 7000.402344> @"{98EC9C526AFBA282}Prefabs/Weapons/Ammo/Ammo_Shell_82mm_HE_O832DU.et" origin=<6000.35,203.994,7000.4> order shots=2 total shots=2 predicted impact=<6422.29,177.023,7478.2> predicted flight=18.3001s gunner=SCR_ChimeraCharacter<0x0000000093944B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.898438 202.695923 7000.041992> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" (impact not observed) [session=1789907612-1] +#242 t=110.9s M37 MORTAR SHELL COMMIT site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; final safety passed; gunner=SCR_ChimeraCharacter<0x0000000093944B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.876953 202.687683 6999.978516> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" predicted impact=<6421.57,175.198,7436.7> flight=18.5001s; invoking native transfer, awaiting projectile event [session=1789907612-1] +#243 t=111.9s M37 MORTAR FIRED site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; physical projectile=Projectile<0x00000001A868BA20> @"ENTITY:4611686018427391089" ('Projectile','Assets/Weapons/Ammo/Shells/82mm_Mortar_2B14/Shell_82mm_HE_O832DU.xob') at <6000.347168 204.006012 7000.365723> @"{98EC9C526AFBA282}Prefabs/Weapons/Ammo/Ammo_Shell_82mm_HE_O832DU.et" origin=<6000.35,204.006,7000.37> order shots=3 total shots=3 predicted impact=<6421.57,175.198,7436.7> predicted flight=18.5001s gunner=SCR_ChimeraCharacter<0x0000000093944B00> @"ENTITY:4611686018427390837" ('SCR_ChimeraCharacter','Assets/Characters/Basebody/Basebody_Male_01.xob') at <6000.876953 202.687103 6999.978516> @"{86E565387A634103}Prefabs/Characters/Campaign/Final/OPFOR/USSR_Army/Regular/Campaign_USSR_Player_MortarCrew.et" (impact not observed) [session=1789907612-1] +#244 t=112.7s M37 MORTAR ACTIVITY site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; reason=native state=1; age=31.3564s aim age=112.673s committed=0 shots=3; previous=native state=1 repeated polls omitted=29 [session=1789907612-1] +#245 t=115.8s M37 MORTAR AIM START site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; reason=solving moving intercept; latest source=M36; X=6414 Z=7460: count unknown; on foot; 0 km/h, azimuth 0 degrees (stationary); seen weapons: unknown; vector X/Z=[0,0] m/s (45s ago); previous=solving moving intercept repeated polls omitted=2 [session=1789907612-1] +#246 t=115.8s M37 MORTAR AIM SOLUTION site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; reason=ready; predicted impact=<6389.38,176.1,7473.93> flight=18.4667s charge index=1 aim target=<6389.38,1749.26,7473.93> latest source=M36; previous=ready repeated polls omitted=2 [session=1789907612-1] +#247 t=117.7s M0 INFANTRY SUPPLY trip=0 state=1 moved=0 spent=0/48; service stopped; original forces and all remaining cargo retained [session=1789907612-1] +#248 t=117.7s M0 CONVOY STOP HQ ended convoy task service; surviving entities and cargo preserved [session=1789907612-1] +#249 t=117.7s M37 MORTAR REPEATS site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; phase=SHOOT NODE reason=native result=2 repeated polls omitted=2 [session=1789907612-1] +#250 t=117.7s M37 MORTAR REPEATS site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; phase=ACTIVITY reason=native state=1 repeated polls omitted=4 [session=1789907612-1] +#251 t=117.7s M37 MORTAR ORDER END site=1 order=2 radio=M37 source=M36 position=<6000,202.788,7000>; reason=HQ stopped observed shots=3 shell committed=0 elapsed=36.4108s last failure= [session=1789907612-1] +#252 t=117.7s M0 STOP HQ stopped; tactical orders released [session=1789907612-1] diff --git a/docs/evidence/native-2026-09-20-spawn-scene/runner.json.txt b/docs/evidence/native-2026-09-20-spawn-scene/runner.json.txt new file mode 100644 index 0000000..f3f09b9 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/runner.json.txt @@ -0,0 +1,34 @@ +{ + "stopped_unix": 1789907743.0429945, + "console_sha256": "fb274bafb10eae415e4c712aaeebfcb871f1b1175341464013616315ac1bbc38", + "end_source_sha256": "0b26e9516d0160a13c2dd74f48d3262699e2d436cf2a2534241942614b21629c", + "source_unchanged_after_run": true, + "source_provenance": "launch_snapshot", + "launch_id": "316e3665-0256-47a5-8798-60e1a08f1040", + "launch_source_manifest": "launch-source-sha256.json", + "launch_source_metadata": "launch-source.json", + "launch_source_sha256": "0b26e9516d0160a13c2dd74f48d3262699e2d436cf2a2534241942614b21629c", + "external_addons_unchanged_after_run": true, + "external_addon_count": 6, + "external_addon_inputs": "external-addons-inputs.json", + "started_unix": 1789907567.4611092, + "result": "smoke-completed", + "result_before_cleanup": "smoke-completed", + "cleanup_confirmed": true, + "cleanup_report": { + "cleanup_confirmed": true, + "idle_verified": true, + "errors": [], + "orphan_cleanup": { + "attempted": false, + "reason": "noncanonical-private-prefix" + } + }, + "runner_error": null, + "session": "/tmp/erri-spawn-scene-workbench-v2/logs/logs_2026-09-20_14-32-49", + "rounds_required": 1, + "project": "chat", + "display": "headless Gamescope 1280x720/30Hz", + "dedicated_server": false, + "audio": "silent sink and per-test-stream mute" +} diff --git a/docs/evidence/native-2026-09-20-spawn-scene/script.log.txt b/docs/evidence/native-2026-09-20-spawn-scene/script.log.txt new file mode 100644 index 0000000..be9bbbd --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/script.log.txt @@ -0,0 +1,367 @@ +--------------------------------------------- +Log Z:\tmp\erri-spawn-scene-workbench-v2\logs\logs_2026-09-20_14-32-49\script.log started at 2026-09-20 14:32:51 (2026-09-20 12:32:51 UTC) + +14:32:51.909 SCRIPT : SCRIPT : Initializing scripts +14:32:51.909 SCRIPT : SCRIPT : ScriptProjectManager init +14:32:53.719 SCRIPT : SCRIPT : Compiling GameLib scripts +14:32:53.773 SCRIPT : Module: Workbench; loaded 18x files; 36x classes; used 125K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 90ce0460 +14:32:53.773 SCRIPT : Module: GameLib; loaded 466x files; 648x classes; used 828K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb +14:32:53.774 SCRIPT : SCRIPT : Compiling Game scripts +14:32:55.100 SCRIPT : Compiling Game scripts +14:32:55.100 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +14:32:55.100 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +14:32:55.426 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,223": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.436 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +14:32:55.478 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +14:32:55.594 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +14:32:55.618 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.628 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +14:32:55.693 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +14:32:55.693 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +14:32:55.695 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +14:32:55.726 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.745 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.745 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.747 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +14:32:55.747 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +14:32:55.774 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +14:32:55.801 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +14:32:56.175 SCRIPT : Module: WorkbenchGame; loaded 185x files; 657x classes; used 2755K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: 436d9397 +14:32:56.183 SCRIPT : Module: Game; loaded 6507x files; 13191x classes; used 39266K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: e475ae05 +14:32:57.181 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:32:57.181 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:33:16.350 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +14:33:16.350 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +14:33:16.350 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +14:33:16.351 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +14:33:16.352 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +14:33:16.353 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +14:33:16.354 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +14:33:16.375 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +14:33:19.410 SCRIPT : Unable to register a script command due keyword duplicity: ban +14:33:19.410 SCRIPT : Unable to register a script command due keyword duplicity: kick +14:33:32.347 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +14:33:32.374 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +14:33:36.503 SCRIPT : Map load time: 2233ms +14:33:36.509 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_PUNISHMENT_KILLING_SET'. There should only be one of each key! +14:33:36.509 SCRIPT (W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'EDITOR_PERCEIVED_FACTION_TYPE_DISABLED'. There should only be one of each key! +14:33:36.511 SCRIPT (W): Can't open config file "" +14:33:36.517 SCRIPT (W): Slot_WeaponInfo Has no Content! +14:33:36.517 SCRIPT (W): Slot_Chat Has no Content! +14:33:36.517 SCRIPT (W): Slot_VON Has no Content! +14:33:36.517 SCRIPT (W): Slot_AvailableActions Has no Content! +14:33:36.517 SCRIPT (W): Slot_Vehicle Has no Content! +14:33:36.518 SCRIPT (W): Slot_GameVersion Has no Content! +14:33:36.518 SCRIPT (W): Slot_Notifications Has no Content! +14:33:36.518 SCRIPT (W): Slot_Hints Has no Content! +14:33:36.533 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {259EE7B78C51B624}UAZ469.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:33:36.533 SCRIPT (W): SCR_EntityCatalogManagerComponent.GetFilteredEditorPrefabsOfAllFactions: Detected that {DF5CCB7C0FF049F4}Mi8MT_unarmed_transport.et is present in at least two different faction entity catalogs! Since this may cause issues, such as dupliacted entries in build mode, one of them will be discarded! This is only supported for items. Other things require creation of faction specific variants. +14:33:36.537 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +14:33:36.591 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +14:33:36.605 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +14:33:36.779 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +14:33:38.319 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +14:33:38.341 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +14:33:38.341 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +14:33:38.372 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +14:33:38.375 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +14:33:38.434 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +14:33:38.434 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +14:33:38.443 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +14:33:38.489 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +14:33:38.489 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +14:33:38.491 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +14:33:38.492 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +14:33:38.495 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +14:33:38.496 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +14:33:38.497 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +14:33:38.498 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +14:33:38.498 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +14:33:38.498 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +14:33:38.498 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +14:33:38.498 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +14:33:38.499 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +14:33:38.499 SCRIPT : ERR GEAR SUPPORT: center=<7012,64.0216,7502.25> radius=0.3 bottom=<7012,63.7216,7502.25> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:33:38.499 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +14:33:38.499 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +14:33:38.499 SCRIPT : ERR GEAR SUPPORT: center=<7009.72,64.4897,7497.97> radius=0.45 bottom=<7009.72,64.0397,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:33:38.500 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +14:33:38.500 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +14:33:38.500 SCRIPT : ERR GEAR SUPPORT: center=<7014.28,64.4898,7497.97> radius=0.45 bottom=<7014.28,64.0398,7497.97> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.119999 +14:33:38.500 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.500 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.500 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.501 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.501 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:38.501 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +14:33:39.402 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.402 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.402 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.402 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.651 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.08,63.5193,7499.71> up=0.995622 +14:33:39.651 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.209779 angularSpeed=0.0469593 +14:33:39.651 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:39.651 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.06,63.6129,7501.98> +14:33:39.652 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.06,63.3129,7501.98> terrainY=63.3155 tireTerrainGap=-0.00252533 +14:33:39.652 SCRIPT : ERR GEAR SUPPORT: center=<7012.06,63.6129,7501.98> radius=0.3 bottom=<7012.06,63.3129,7501.98> fraction=0.443386 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.00245667 +14:33:39.652 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.6024,7497.71> +14:33:39.652 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.1524,7497.71> terrainY=64.1544 tireTerrainGap=-0.00201416 +14:33:39.652 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.6024,7497.71> radius=0.45 bottom=<7009.89,64.1524,7497.71> fraction=0.445567 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00197601 +14:33:39.652 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2617,7497.76> +14:33:39.653 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8117,7497.76> terrainY=63.817 tireTerrainGap=-0.00534439 +14:33:39.653 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2617,7497.76> radius=0.45 bottom=<7014.43,63.8117,7497.76> fraction=0.430278 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00533676 +14:33:39.653 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:39.906 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:39.907 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:39.907 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:39.907 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +14:33:40.420 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:40.420 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:40.420 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:40.673 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.1,63.5374,7499.72> up=0.99428 +14:33:40.673 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0867247 angularSpeed=0.0687184 +14:33:40.673 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:40.673 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6187,7502> +14:33:40.673 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3187,7502> terrainY=63.3129 tireTerrainGap=0.00574112 +14:33:40.674 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6187,7502> radius=0.3 bottom=<7012.07,63.3187,7502> fraction=0.481232 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00587082 +14:33:40.674 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.94,64.6018,7497.72> +14:33:40.674 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.94,64.1518,7497.72> terrainY=64.1474 tireTerrainGap=0.00443268 +14:33:40.674 SCRIPT : ERR GEAR SUPPORT: center=<7009.94,64.6018,7497.72> radius=0.45 bottom=<7009.94,64.1518,7497.72> fraction=0.474747 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00444794 +14:33:40.674 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.48,64.2648,7497.8> +14:33:40.675 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.48,63.8148,7497.8> terrainY=63.8145 tireTerrainGap=0.000339508 +14:33:40.675 SCRIPT : ERR GEAR SUPPORT: center=<7014.48,64.2648,7497.8> radius=0.45 bottom=<7014.48,63.8148,7497.8> fraction=0.455984 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=0.00031662 +14:33:40.675 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:40.923 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:40.923 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:40.924 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +14:33:40.924 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.174 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +14:33:41.429 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.429 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.429 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.430 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +14:33:41.683 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.12,63.5293,7499.75> up=0.99391 +14:33:41.684 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0626557 angularSpeed=0.0127016 +14:33:41.684 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:41.684 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6116,7502.02> +14:33:41.684 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3116,7502.02> terrainY=63.311 tireTerrainGap=0.000598907 +14:33:41.684 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6116,7502.02> radius=0.3 bottom=<7012.07,63.3116,7502.02> fraction=0.457278 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.000602722 +14:33:41.684 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.97,64.5934,7497.72> +14:33:41.685 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.97,64.1434,7497.72> terrainY=64.1415 tireTerrainGap=0.0018692 +14:33:41.685 SCRIPT : ERR GEAR SUPPORT: center=<7009.97,64.5934,7497.72> radius=0.45 bottom=<7009.97,64.1434,7497.72> fraction=0.463264 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00192261 +14:33:41.685 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.51,64.2599,7497.84> +14:33:41.685 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.51,63.8099,7497.84> terrainY=63.8119 tireTerrainGap=-0.00200272 +14:33:41.685 SCRIPT : ERR GEAR SUPPORT: center=<7014.51,64.2599,7497.84> radius=0.45 bottom=<7014.51,63.8099,7497.84> fraction=0.445278 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00203705 +14:33:41.685 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:41.938 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:41.938 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:41.939 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:41.939 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:42.449 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.449 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.450 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.450 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +14:33:42.706 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993805 +14:33:42.707 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:33:42.707 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:42.707 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6122,7502.02> +14:33:42.707 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3122,7502.02> terrainY=63.3109 tireTerrainGap=0.00126266 +14:33:42.708 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6122,7502.02> radius=0.3 bottom=<7012.08,63.3122,7502.02> fraction=0.46034 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00127411 +14:33:42.708 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5929,7497.73> +14:33:42.708 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1429,7497.73> terrainY=64.1406 tireTerrainGap=0.00226593 +14:33:42.708 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5929,7497.73> radius=0.45 bottom=<7009.98,64.1429,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:33:42.708 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2598,7497.84> +14:33:42.709 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8098,7497.84> terrainY=63.8117 tireTerrainGap=-0.00190353 +14:33:42.709 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2598,7497.84> radius=0.45 bottom=<7014.52,63.8098,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +14:33:42.709 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:42.959 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:42.961 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.961 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:42.962 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +14:33:43.463 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.463 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.463 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.464 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.715 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993805 +14:33:43.715 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +14:33:43.715 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +14:33:43.715 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6122,7502.02> +14:33:43.715 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3122,7502.02> terrainY=63.3109 tireTerrainGap=0.00126266 +14:33:43.716 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6122,7502.02> radius=0.3 bottom=<7012.08,63.3122,7502.02> fraction=0.46034 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00127411 +14:33:43.716 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.5929,7497.73> +14:33:43.716 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.1429,7497.73> terrainY=64.1406 tireTerrainGap=0.00226593 +14:33:43.716 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.5929,7497.73> radius=0.45 bottom=<7009.98,64.1429,7497.73> fraction=0.464947 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00228882 +14:33:43.716 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2598,7497.84> +14:33:43.716 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8098,7497.84> terrainY=63.8117 tireTerrainGap=-0.00190353 +14:33:43.717 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2598,7497.84> radius=0.45 bottom=<7014.52,63.8098,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +14:33:43.717 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +14:33:43.966 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +14:33:43.967 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +14:33:43.982 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +14:33:43.983 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +14:33:43.983 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +14:33:43.983 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +14:33:43.983 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +14:33:43.983 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +14:33:43.983 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +14:33:44.927 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +14:33:44.949 SCRIPT : Rereintroduced [spawn scene]: player=1 token=1 waiting for 39 replicated objects +14:33:44.949 SCRIPT : Rereintroduced [spawn scene]: client token=1 waiting for 39 replicated objects +14:33:45.041 SCRIPT : Rereintroduced [spawn scene]: client token=1 all 39 replicated objects present +14:33:45.101 SCRIPT : ERR SMOKE PASS: native spawn preload retains preparation text after server sites are ready +14:33:45.932 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.389,7158.5> +14:33:46.112 SCRIPT : ERR SMOKE PASS: prisoner admitted only after enabled native spawn preload finishes +14:33:46.112 SCRIPT : ERR SMOKE PASS: new identity may enter prison +14:33:46.113 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +14:33:46.113 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +14:33:46.113 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +14:33:46.113 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +14:33:46.113 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +14:33:46.114 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +14:33:46.115 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +14:33:46.117 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +14:33:46.118 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +14:33:46.118 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +14:33:46.118 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +14:33:46.121 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +14:33:46.121 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +14:33:46.121 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +14:33:46.121 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +14:33:46.121 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +14:33:46.122 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +14:33:46.122 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +14:33:46.122 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +14:34:23.030 SCRIPT : ERR SMOKE PASS: HQ memory automatic startup owns one canonical six-vehicle task +14:34:23.030 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 0 +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 1 +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.031 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 2 +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.032 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 3 +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.033 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 4 +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.034 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy exact original seated crew 5 +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory original automatic crew has scoped expert floor +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory original native turret gunner has scoped skill100 +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory automatic convoy includes confirmed native turret gunners +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory automatic nineteen-body convoy respects shared physical budget +14:34:23.035 SCRIPT : ERR SMOKE PASS: HQ memory manual request after automatic startup cannot duplicate the convoy +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +14:34:23.036 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +14:34:23.037 SCRIPT : ERR SMOKE PASS: HQ memory road fixture has native Everon road manager +14:34:23.038 SCRIPT : ERR SMOKE PASS: HQ memory road fixture native query stays within bounded road count +14:34:23.038 SCRIPT : ERR SMOKE PASS: HQ memory arranged detached road snapshots accepted by private memory +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory native road choice is forward, nearby, dry and physically clear +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory road membership verification stays within segment budget +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory chosen intercept lies on an actual native road segment +14:34:23.039 SCRIPT : ERR ROAD FIXTURE: arranged origin=<5896.23,149.499,6644.17> velocity=<2.25769,0,1.97559> chosen=<5941.39,149.611,6683.68> attempts=1 +14:34:23.039 SCRIPT : ERR SMOKE PASS: HQ memory same arranged belief aged46seconds refuses road interception +14:34:23.040 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +14:34:23.040 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +14:34:23.041 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +14:34:25.072 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +14:34:25.072 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +14:34:31.200 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +14:34:31.200 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +14:34:39.840 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +14:34:39.840 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +14:34:47.999 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +14:34:48.000 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +14:34:56.132 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +14:35:04.298 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +14:35:04.299 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +14:35:04.300 SCRIPT : INFO: KILL SUICIDE: jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) from US faction at <6088.5, 211.389, 7158.5> killed himself! +14:35:08.379 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +14:35:08.379 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +14:35:08.379 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +14:35:35.407 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +14:35:35.408 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +14:35:35.408 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +14:35:35.409 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +14:35:35.576 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +14:35:35.579 SCRIPT (W): Slot_Chat Has no Content! +14:35:35.579 SCRIPT (W): Slot_VON Has no Content! +14:35:35.579 SCRIPT (W): Slot_GameVersion Has no Content! +14:35:35.579 SCRIPT (W): Slot_Notifications Has no Content! +14:35:37.731 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +14:35:37.731 SCRIPT : -- Stack trace -- +14:35:37.732 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:35:37.732 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:35:37.732 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +14:35:37.732 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:35:37.732 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:35:37.733 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:35:37.733 SCRIPT : ----------------- +14:35:37.733 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +14:35:37.733 SCRIPT : -- Stack trace -- +14:35:37.733 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +14:35:37.733 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +14:35:37.733 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +14:35:37.733 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +14:35:37.734 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +14:35:37.734 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +14:35:37.734 SCRIPT : ----------------- +14:35:37.736 SCRIPT (W): Slot_Chat Has no Content! +14:35:37.736 SCRIPT (W): Slot_VON Has no Content! +14:35:37.736 SCRIPT (W): Slot_GameVersion Has no Content! +14:35:37.736 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-spawn-scene/source-provenance.json b/docs/evidence/native-2026-09-20-spawn-scene/source-provenance.json new file mode 100644 index 0000000..5fa4cc7 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/source-provenance.json @@ -0,0 +1,4 @@ +{ + "schema_version": 1, + "kind": "launch_snapshot" +} diff --git a/docs/evidence/native-2026-09-20-spawn-scene/source-sha256.json b/docs/evidence/native-2026-09-20-spawn-scene/source-sha256.json new file mode 100644 index 0000000..c21a4e4 --- /dev/null +++ b/docs/evidence/native-2026-09-20-spawn-scene/source-sha256.json @@ -0,0 +1,260 @@ +{ + "addons/core/Configs/ERR/AdminMenus.conf": "a7f889f260e43656136fc159342129e5f48748d28c426f65f9faac37b624cf94", + "addons/core/Configs/ERR/AdminMenus.conf.meta": "5faf5ddc0a51c1d0f82d60af00d91edc22fe9c39aac50d8d04b772a2c9271be1", + "addons/core/Configs/ERR/EveronSites.conf": "3e04698421ce989c996097ecf24214e7d926d2998918d60573aa403c4012b079", + "addons/core/Configs/ERR/EveronSites.conf.meta": "d5fe68025ef4e7c1e16082cf5873b7c7172eacbfaef4ab29b7e0e3c98f8dca56", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf": "5f74f4a7089c7e7b54ad62463159ce8f0bab25a6b85268dc3872ea6001e048fb", + "addons/core/Configs/ERR/Factions/MissionVehicles.conf.meta": "00c368b6271d3440cc8bf627b03a384d247635723923fc5ad2104b8b4007b035", + "addons/core/Configs/ERR/Factions/US.conf": "4c3da063abb6e3ee39a6e4e0c5a9ffd5eae9d209d58470ea18b45dba5528db1b", + "addons/core/Configs/ERR/Factions/US.conf.meta": "a05469aef028e9e17eba545e81e2af2887b59f0fef17dac51a23c7b8155e381b", + "addons/core/Configs/ERR/Factions/USSR.conf": "407ea27f80a64c5184c089d43cdd0bdabfc5974c84f1d2a245081fdf2afa3f30", + "addons/core/Configs/ERR/Factions/USSR.conf.meta": "057397d97096346791b51b7b13fbe18af218bcf78e9984d9c01b49a2403de611", + "addons/core/Configs/ERR/GameOverScreens.conf": "45231061911a1462d45fb6db0fecc2b0793f17b5ae71017174954ff4fbd20236", + "addons/core/Configs/ERR/GameOverScreens.conf.meta": "eb654b745c0b97b41c991694569ef4877a3c2315e0826f9556337cd68690843e", + "addons/core/Configs/ERR/VanillaFactions.conf": "db890b61b48ee15484041fd2245a862d9fa9e7ba21b1229c281ff37c448a35b1", + "addons/core/Configs/ERR/VanillaFactions.conf.meta": "ac77725c0c21974991ef47a466b88122e939de8b46fd23e68889e7674cbb2bfd", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Missions/ERR_Everon_Base.conf": "c035afca636653b7751c49f85620edac23f7217fd135b98f8f891192f66c967a", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "addons/core/Prefabs/ERR/ConvoyCrew.et": "29a525a29605386dfcf292dc2316e9fc7650ce39db9fbaa4ce4372ad0de66db4", + "addons/core/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/core/Prefabs/ERR/Extraction.et": "4d24c7811415c06386205e5bf5c132a23fcf21e96c75c7657ccd5f3ac914ac50", + "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", + "addons/core/Prefabs/ERR/FactionManager.et": "3f8157aab44e124e8d5ab5e47e3d38ad7466638ae1e97be057aa2de74c360a85", + "addons/core/Prefabs/ERR/FactionManager.et.meta": "9bf53d5e4bcbe60dd1a4ece1409fc23c349055c860708620f5f6e9716290a97d", + "addons/core/Prefabs/ERR/FieldCover.et": "e403d5cb3a5966f0cea81f15e0e825d482ba1a7a27b12498319ba45a414963b0", + "addons/core/Prefabs/ERR/FieldCover.et.meta": "83461ffa76244e1d69f20b053a9741ccdf7d127009182bd540a7e5ba6150c3d9", + "addons/core/Prefabs/ERR/GameMode.et": "4d3e5e2df28cbb8292c436ae05d4fc7e5ca789a123450a6968d9a718b6ecef20", + "addons/core/Prefabs/ERR/GameMode.et.meta": "106769cd34525c9d440057072836cb7401a6752148c40edd7fe61c03bd58328c", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et": "0157bc235eeb78a0e1373b561fd22a1dcb225c833ff7c2d4abae688bca0ec92a", + "addons/core/Prefabs/ERR/Items/EmergencyRepairKit.et.meta": "da6f065cb2414b5a4cbe9ef0f0b1295b2466f26ad406c0bddb83845d4598efb3", + "addons/core/Prefabs/ERR/MortarCrew.et": "21086e886fe3199624208c9a866f883ec109f7d08746c2b56b497e59857fb656", + "addons/core/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/core/Prefabs/ERR/ObjectiveDocument.et": "5118ecaf9d2038eea44a4b785f05d2e78781dc1387249aa58a6782c7e6752e14", + "addons/core/Prefabs/ERR/ObjectiveDocument.et.meta": "eaba9903be147b98a1106e2273e2270773df73b9b22f2cd4e20136a8e281382e", + "addons/core/Prefabs/ERR/Patrol.et": "d3eca8fe9197c57a27a285cdb3baf168b037b198d92b39df28a338ae2cfd0c74", + "addons/core/Prefabs/ERR/Patrol.et.meta": "7c5da568fa2fcf0709ee2959253cb068d7c7ed7c2467af3b247a7e70efd96b69", + "addons/core/Prefabs/ERR/Prison.et": "24e942dea876aeeff5778c402098099a62f9a7efca61a08036e1d2bfeec9923f", + "addons/core/Prefabs/ERR/Prison.et.meta": "2e426ef3de68f4107907854b51e818bc11d84649a01c538e3f18dd9ebec766bb", + "addons/core/Prefabs/ERR/PrisonDoor.et": "c45d5aa239efa8934dc5d0367dc8e196c15ed04ad72efdaad574ce01dca91e84", + "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", + "addons/core/Prefabs/ERR/PrisonWall.et": "b0cb8fb38716f083f86e39fb4f84f275e17855d4d2558b2da2b488fb12b39121", + "addons/core/Prefabs/ERR/PrisonWall.et.meta": "0294bc5dbb56f90f8153d62459bb0a6ad91d76a479812bbec9c7db182fdb58d6", + "addons/core/Prefabs/ERR/Prisoner.et": "e6d345ac98ad9ec742bf6c3b8686839c3256df9833d31bb4bdf605cd41d0ba5c", + "addons/core/Prefabs/ERR/Prisoner.et.meta": "974278ba49fafeed70b619a0067bbc70ae4d534be441c812ce2bef4a5fb3c022", + "addons/core/Prefabs/ERR/Radio.et": "8e15f4795a7459e95dd5e5cb61940b7619452bee2dcdfb8eaa00154acb3308cb", + "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", + "addons/core/Prefabs/ERR/SpectatorCamera.et": "bffb102272eb888d1f8d8c32c7515e62751d3feb48ef4713227f040d59c42db6", + "addons/core/Prefabs/ERR/SpectatorCamera.et.meta": "2a16558f93915e31908a674509e9c89976470f78a84a1174a64b94b68b8f77ad", + "addons/core/Prefabs/ERR/SupplyCache.et": "4c97b0514fe7e723046f40f0b396f6573b12eb9981ca5df70b9e8aa3cf29323e", + "addons/core/Prefabs/ERR/SupplyCache.et.meta": "2f5de3a4aab1e9d0e35521f48dc57b95bd6e449c383dec4f1c258e10295904cb", + "addons/core/Prefabs/ERR/SupplySite.et": "f33681281d26676fac88736091834d5a7b87fe0fa01883582542df964dcfc694", + "addons/core/Prefabs/ERR/SupplySite.et.meta": "b41944b12eb3528ff7a3ac94258b18c66ef161aa6a38894aee300a1ac4798630", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et": "29f157849f413261494a63d4d5b0a97e8bbe61cb076efcd59d6c940653f23352", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZ.et.meta": "544c94cf1c26757a10654de7856cd6cc48b821ce3bdc02add13cfe6514269915", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et": "cd4acdcecad299445952aea0adefc85f2b9e9b43f8186f100e0505c5621b3656", + "addons/core/Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et.meta": "123955da03462befb90e293b3bb856d49cc761166611b38ff47cb48ec2fbe95c", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c": "8a5ccf1fff1442dfe7ab4cb3cc858ee16adb073119144187155ade558b8c4c5f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c": "6cfb7de35bbbc18bd6d35c63da01284ffb08b8641527d49283d9b9b0cb94f8c2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "e17bd68f82012bff7c1953cf1adc86fe1cdefbc01d3b5eb88fa96f956bb4f135", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c": "43a406822a0361f916abc363f27e0c578ee94855036981d876bf47c68233c71a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "41a35f806d925d025534247b0705d7eb47f134d181e5b819a149be7909ba4cc1", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "2a0fa03b96ac5318427f23ff21185e693dd595b017fed6049cc99dbf88d76596", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnClientScene.c": "0a84f85cc53716f19cdb7af3e67cbfc87e8cb68a2897565163dd1b46b47ff214", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "4a3f3ff4737f30566519ec99b883d68d57b7e0557ca2dd39d7632229bd7be80a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c": "360228fd45aa6ecd9426e36120b5e637d2feee1e3a4a89aac8207526b871c87e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c": "b16a8b31be20271c37c4d68c169f08b28d88993d296308b80de00715ea2b4dfe", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c": "0c8ce2f3d2642999a7158000e60d8c491ed3e4b6d9c0d3d18b3e3ecc3e557196", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "0921c04c313f36f23aaab35fdea05bb479a81f01acc62c715ca3b3e366d67f81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c": "298ae30d1db1191d680a5a8f60253f9344e0e19fe9c17242c757382042364341", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c": "d5337ce8073335ccb4b03d447550a38e03d6fc9e428008be3a7b042c078f4835", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "85e4d2cb27426c07b8631ca411f4b8f5c821f9f331c8c2719cbfa71b3687f08e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c": "0897e82d7805ef56f05f2b9c23903280285ea6bfa51796a2df86bb564ece78f7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQTask.c": "53cd74d121292f6f6813c2b69e475f29dba9239bc10cbaf55ce1d7f8fb3674f6", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c": "917f9df36b93258a30b7af24b0ee52b65c5205405d8056bb721a9868010d64d1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c": "84cec6457132eff6d195bc6fc8fcee267685693edbb987cbeafaece0f7537992", + "addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c": "5d9b5d4b1d22d57145e79b5a740863a5233706fd8b11046d2512a681f8a615a5", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "9f8f0844862ef98b0878290238a410d501ea99622cd5e517fcacd9a9187f889a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c": "7379cb65bde95bd1e7ffc2203a7fb7957435d379560e08b470e73a89ea6b59cf", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c": "4493c6b6070cd7d768a2fcba2d8934b782c9a221ae257a530aa6b52fa40d88a8", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c": "0d4d61c424a16008595f86fa61f3b848caf9bd6e9ebbacea9c10254d88ba378e", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "1f12f58e46b2a892d22d5ec03da4a03fbf24b3b362b6d8be7f4af3e6cc21e3d1", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c": "a747af09599ce4d0c52051f18f00c4624d24d137e328341b580b82e896c6bf65", + "addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/core/UI/layouts/ERR/AdminMenu.layout": "26db9780c0afffa8429602c27ee347a4e665a19a6872b15f4178d684de7e23b6", + "addons/core/UI/layouts/ERR/AdminMenu.layout.meta": "9deeece996f43b1f1fed6b5ec89279645c7b6424250200a42580cc088142e9bf", + "addons/core/UI/layouts/ERR/PreparationStatus.layout": "bd269cf8dc6f27735423743dd5b78242550518414448a0256e5e12fa6b92c459", + "addons/core/UI/layouts/ERR/PreparationStatus.layout.meta": "75b12176a443bb911fc4ad446982d762201fda42ed38736b79bc5439fca31ccc", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", + "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", + "addons/core/Worlds/ERR_Everon_Layers/default.layer": "17105538007199bfc419aa04a64debaf2da0a7b77a1dc3ba983e92bf747c862e", + "addons/core/addon.gproj": "683a522c7f7f5d5ff41c57b0f0947f3cd2ec866b656a5f449af55688956eb5fa" +} diff --git a/docs/external-addons.md b/docs/external-addons.md index aa1d6a0..569a448 100644 --- a/docs/external-addons.md +++ b/docs/external-addons.md @@ -1,5 +1,12 @@ # Authorized AI dependencies +**Current layout:** all owned modules now live in `addons/core/addon.gproj`. +Use [single-mod setup and commands](single-mod.md) for current builds. Both +Workbench fixture selectors (`core` and `chat`) load that same project and require +the external dependencies. Five-addon and vanilla-only build instructions/results +below describe the historical layout. + + The user authorized RHS, WCS and BMP integration on 2026-09-20. AI declares RHS Status Quo (`595F2BF2F44836FB`), WCS Armaments (`629B2BA37EFFD577`) and WCS BMP-1 (`5E524E4FEECCA92B`). The reviewed transitive closure adds RHS Content Pack01 (`1337C0DE5DABBEEF`), RHS Content Pack02 (`BADC0DEDABBEDA5E`) and WCS SpaceCore (`5E389BB9F58B79A6`). Exact locally inspected manifest hashes, versions and resource ownership are in [external-addons.json](external-addons.json). `62E71B6F101EB30D` is Escapists Enhanced, not WCS. It and original Escapists, ScrtCore and ScrtSharedContent are excluded. Neither the unrelated Patch addon nor Parachute Framework is admitted by this policy. Original workspaces and installed third-party assets remain unchanged; no third-party asset bytes are included in successor source bundles. diff --git a/docs/finite-mortar-courier-source-evidence.json b/docs/finite-mortar-courier-source-evidence.json index 67784e5..4595f44 100644 --- a/docs/finite-mortar-courier-source-evidence.json +++ b/docs/finite-mortar-courier-source-evidence.json @@ -4,19 +4,19 @@ "sha256": "3f0ab1e9d1314265a7cdea3535a9e81af441c1b7a5c9c925e84aa824a1730663" }, { - "path": "/tmp/erri-next-build/addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c", + "path": "/tmp/erri-next-build/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c", "sha256": "1a7282d9bd53dcd115d53c9b460ca62d3218931a74635cc516eac1a13b7d9347" }, { - "path": "/tmp/erri-next-build/addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c", + "path": "/tmp/erri-next-build/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c", "sha256": "3d20f2cf40be0f2891bb7e071cd838c891a8fb7677c235930fe290f581bb8b4c" }, { - "path": "/tmp/erri-next-build/addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c", + "path": "/tmp/erri-next-build/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c", "sha256": "86425bf8c609fc2030d5b972da30b921da506650f98fc309f8c7491f94e4e7d2" }, { - "path": "/tmp/erri-next-build/addons/ai/Scripts/Game/ERR/ERR_HQ.c", + "path": "/tmp/erri-next-build/addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c", "sha256": "ceafd6740ed277748744ce56ac0f0bb3a8521fcc060dafb2cdb99896aedf405a" }, { diff --git a/docs/finite-mortar-operations.md b/docs/finite-mortar-operations.md index 3a5af78..2cbfa63 100644 --- a/docs/finite-mortar-operations.md +++ b/docs/finite-mortar-operations.md @@ -30,8 +30,8 @@ The native ShootingLogic superclass increments its behavior shot counter. The su New production helpers: -- `addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c` -- `addons/ai/Scripts/Game/ERR/ERR_MortarSupplyTransfer.c` +- `addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c` +- `addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c` `mortar-finite-operations.patch` contains only Battery/System/Firing edits. No native probe, shared staging, Core source, resources or `check.py` was edited. New `tests/test_mortar_transactions.py` executes actual extracted population/allocation/order/ownership/cycle policies and the actual transfer Poll/Acknowledge control flow against narrow API fakes. Cases include zero/late/duplicate population, callback without inventory, wrong destination storage, simultaneous source/destination claims, stale order, cancellation, exact timeout, late completion, missing shell and repeated pending ticks without duplicate shot-counter increment. Source contracts additionally constrain allocation latching, single native move, cleanup and Firing's pre-super wait. Native inventory/expansion/firing remain separate qualification tasks. diff --git a/docs/hq-ammunition.md b/docs/hq-ammunition.md index c0e9323..8769b28 100644 --- a/docs/hq-ammunition.md +++ b/docs/hq-ammunition.md @@ -8,10 +8,10 @@ A controlled native radio/inventory run is recorded below; multiplayer and resup ## What the local sampler observes -[StatusSampler](../addons/ai/Scripts/Game/ERR/ERR_HQStatusSampler.c) enumerates the +[StatusSampler](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c) enumerates the same immutable original roster used for casualty accounting. Each living, still-owned member contributes to an -[AmmoSnapshot](../addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c); unconscious living +[AmmoSnapshot](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c); unconscious living members remain part of that roster. A surviving original owned radio caller is still required to send status. Unknown/deleted or transferred members do not become fabricated ammunition counts or replacement soldiers. @@ -45,7 +45,7 @@ an HQ check-in request can make the next status due sooner. Local scans every cooldown; only complete known stock qualifies. Busy radios and physical route delivery still govern arrival. Local inspection, queuing and an interrupted uplink do not update HQ ammunition knowledge. -[Watch](../addons/ai/Scripts/Game/ERR/ERR_HQWatch.c) validates and copies the payload +[Watch](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c) validates and copies the payload only on delivered status, keeping the status source, message ID and observation time. Later mutation of the sender's object cannot alter the delivered copy. An accepted status without ammunition payload clears a previous ammunition claim. @@ -62,7 +62,7 @@ interpret uncertainty as proof that ammunition exists or that it is exhausted. ## Effect on orders -[HQ](../addons/ai/Scripts/Game/ERR/ERR_HQ.c) checks the delivered empty-ammunition +[HQ](../addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c) checks the delivered empty-ammunition veto while selecting new pursuit/intercept/contain/search tasks, retasking a search, and selecting a missing-patrol investigator. It checks again before applying a newly delivered infantry order, so an empty status arriving during diff --git a/docs/living-island/OCCUPATION.md b/docs/living-island/OCCUPATION.md new file mode 100644 index 0000000..96229f5 --- /dev/null +++ b/docs/living-island/OCCUPATION.md @@ -0,0 +1,431 @@ +# Island occupation — agent brief + +**Hand this file to a coding agent as-is.** It is self-contained: concept, rules, +verified engine APIs, work breakdown, acceptance criteria and tests. + +Companion files (same directory) hold the supporting infrastructure this design +sits on: `README.md` (plan and rules), `T1-force-ledger.md`, +`T2-presence-budget.md`, `T3-checkpoints.md`, `T4-smart-actions.md`, +`T5-hq-integration.md`, `T6-ambient-signals.md`, `T7-performance.md`. +If the ledger (T1) and presence budget (T2) are not yet implemented, build those +first — this design assumes them. + +--- + +## 1. The concept + +The island does **not** start occupied. At mission start only the prison and its +immediate surroundings hold troops. Everything else — the radio station, the +helipad, the junctions, the depots — is empty ground with buildings on it. + +Then the alarm goes off, and the enemy *moves in while the player watches*. +Helicopters lift sections out to guard the objectives. Trucks drive to junctions +and the soldiers get out and **build roadblocks over several minutes**. Patrols +fan out along the roads. Over the next twenty to forty minutes the island closes +around the player. + +This gives three things at once: + +1. **Atmosphere.** Watching a transport helicopter flare and unload eight + soldiers onto the hill you were about to cross is worth more than finding + those eight soldiers already standing there. +2. **CPU.** Almost nothing exists at T+0. Deployments travel as ledger records + and only become real AI near players. Start cost is near zero, and the + steady-state cost is the same agent budget as before. +3. **Counterplay and pressure.** Every deployment is interruptible, every loss + is permanent, and an island left alone gets steadily harder to cross. Hiding + is punished; moving fast is rewarded. + +**The player must be able to change the outcome.** Shoot down the transport and +those eight soldiers never arrive — that junction stays open for the rest of the +round. That is the whole point of the design; protect it in every decision. + +--- + +## 2. Non-negotiable rules + +### Licensing + +This project is an independent successor. The original Escapists mod and its +`ScrtCore` / `ScrtSharedContent` dependencies are SCRT-ND licensed (an APL-ND +variant) which **forbids derivative works**. + +- Never copy code, configs, layouts, compositions or assets from the original + Escapists mod, from ScrtCore/ScrtSharedContent, or from `/home/jakub/devel/escapists`. +- Never introduce identifiers matching `ESCT*`, `SCRTC_*`, `SCRT_*`, `EAI_*`. + `tools/check.py:39` fails the build on these. +- Only vanilla Arma Reforger resources and resources owned by this repo may be + referenced. Reimplementing a mechanic from scratch is fine; copying an + implementation is not. + +### Addon boundaries + +Five addons only: `core`, `ai`, `intel`, `chat`, `map`. `ai`/`intel`/`map` +depend on `core`; `chat` depends on all. **`core` must never reference `ERR_HQ`, +`ERR_AircraftService`, or anything else from another addon.** + +Occupation logic lives in **`core`**, so the base scenario occupies the island +without the AI addon installed. Where it needs a companion capability it defines +an interface in core and lets `ai` register an implementation — the existing +`ERR_CommandService` and `ERR_AdminProvider` show the pattern. Without the AI +addon, occupation still happens by road and on foot; only air lift is missing. + +### Performance + +1. No per-frame work. Every tick here is ≥ 1 s, staggered by id (`id % N`). +2. No allocation inside loops. Reuse member arrays. +3. Spatial bucketing (500 m cells) for proximity — copy `ERR_HQNetwork.Add/Build`. +4. Hard caps everywhere, with a logged refusal when hit. +5. Issue waypoints and let the engine drive. No custom per-frame steering. +6. Hysteresis and dwell before any spawn/dormant flip. + +### Style and validation + +- Match surrounding indentation (older files use tabs). New lines under 120 chars. +- Decision logic goes in **pure static rule classes** (see `ERR_MissionRules`, + `ERR_DiscoveryMapRules`) so it is testable without the engine. Entity work + stays in the service. +- `python3 tools/check.py` must pass before you report done. +- Add tests with `tests/policy_harness.py`: `body(path, signature)` extracts a + real function body from the `.c` file and `run(code)` compiles and runs it as + C++. Follow `tests/test_admin_session.py`. +- Report honestly. Separate "compiles and passes scripted fixtures" from + "verified in the real game". Do not write evidence claiming runtime + verification you did not perform. + +--- + +## 3. The occupation timeline + +### T+0 — Dormant island + +| Location | State at start | +| --- | --- | +| Prison | Full garrison, physical (players are there) | +| Within 2 km of prison | 2 patrol records, dormant | +| Staging areas (1–2 authored) | The entire remaining force pool, as records | +| Everything else | Buildings and props only. **No troops.** | + +Authored staging areas are the military sites the occupation flows out of — pick +the existing barracks/airfield areas on Everon. They hold the pool and are where +transport originates. A staging area is itself a site that can be attacked. + +### T+alarm — Detection + +The occupation plan starts when HQ learns something is wrong, through the +existing systems, not a timer: an escape is witnessed, a body or breach is found, +or a guard check-in is missed. If nothing is detected, occupation still begins +on a long fallback (default 15 min, setting `occupationFallbackSeconds`) — a +missing prisoner count is noticed eventually. + +### T+alarm onward — Deployment + +HQ walks a priority list and issues deployment orders while the pool lasts: + +| Priority | Objective | Why | +| --- | --- | --- | +| 1 | Radio station(s) | Denies the player's first objective | +| 2 | Helipad / extraction site | Denies the escape | +| 3 | Road junctions and bridges on the ring road | Roadblocks, cordon | +| 4 | Medical and depot sites | Denies resupply | +| 5 | Overwatch positions near likely routes | Observation, HQ eyes | + +Cadence: one order every 90–180 s early, slowing as the pool depletes +(`occupationOrderSeconds`). At most **5 deployments in transit at once**. + +### T+20 to T+40 — Entrenchment + +Arrived sections build. Roadblocks go up over 6–10 minutes each. Checkpoints +become manned (T3). Patrol routes establish between occupied sites. The island +that was empty is now a network. + +### Continuous — Adaptation + +As HQ gains contacts (T5), it re-prioritises: the sector where players were seen +gets the next deployments and a cordon on its exits; quiet sectors are thinned, +not reinforced. With no contacts, occupation proceeds methodically down the +priority list — so hiding tightens the noose. + +--- + +## 4. Data model + +Add to `core`, next to the ledger: + +``` +class ERR_ForcePool // finite, permanent losses +{ + int Sections; // remaining uncommitted sections + int SectionStrength; // soldiers per section, default 4 + int TransportAircraft; // remaining flyable transports + int TransportVehicles; // remaining trucks +} + +enum ERR_OccupationPriority { RADIO, EXTRACTION, JUNCTION, SUPPLY, OVERWATCH } + +class ERR_OccupationObjective +{ + string SiteId; ERR_OccupationPriority Priority; + int RequiredSections; int AssignedSections; + bool Held; bool Contested; bool Abandoned; +} + +enum ERR_DeployMethod { FOOT, CONVOY, AIRLIFT } +enum ERR_DeployState { QUEUED, LOADING, IN_TRANSIT, UNLOADING, ARRIVED, LOST } + +class ERR_DeploymentOrder +{ + int Id; string ObjectiveId; ERR_DeployMethod Method; ERR_DeployState State; + int LedgerRecordId; // the travelling force (T1 record) + int TransportRecordId; // the aircraft/vehicle, -1 for foot + vector Origin; vector LandingZone; float StartedAt; float EtaSeconds; +} +``` + +`ERR_OccupationPlan` owns the pool, the objective list and the live orders, and +ticks every 5 s (staggered). It is created and ticked by `ERR_GameMode` on the +existing tick path — **do not add a timer**. + +--- + +## 5. Deployment methods + +Method selection is a pure rule (`ERR_DeployRules.Select`): urgency, distance, +and what transport remains. Roughly — under 1.5 km on foot, 1.5–6 km by convoy, +over 6 km or urgent by air, falling back down the list when transport is gone or +the AI addon is absent. + +### Foot + +The record's duty becomes `MOVE_TO`; it walks its route virtually and +materialises near players like anything else. No transport consumed. + +### Convoy + +Consumes a truck. A `CONVOY` record carries the section along an authored road +route. Slow (8–15 min) and ambushable — when physical, it is a real truck with +real soldiers in it. If destroyed, the section and the truck are **permanently** +lost from the pool. + +### Air lift + +Consumes an aircraft. Three rules make this affordable — read them before +implementing, because the naive version blows the whole agent budget at T+0. + +**Cargo is virtual in transit.** Passengers inside a fuselage are invisible. +Never spawn them for the flight. A physical lift is **1 vehicle + 1 pilot**; the +section spawns at the moment of unload. This takes a lift from ~10 agents to ~2 +with no visual difference, and it is the single most important optimisation in +this document. + +**Two aircraft in the air at once, not ten.** Queue as many lifts as the plan +needs — the island-wide occupation is real — but execute at most +`occupationConcurrentLifts` (default 2) physically. The rest fly as records with +real routes and real timings, and materialise if a player comes near. The player +is only ever in one place; ten simultaneous flights pay full price for drama +nobody witnesses. The existing `ERR_AircraftService.MAX_AIRCRAFT` is 4, and the +controller's demonstrated envelope is vertical flight plus a bounded 20 m route — +ten concurrent cross-map flights with landings is far outside what is proven. +Treat the concurrency as a dial: start at 2, measure with the T7 metrics, raise +it only if the numbers allow. + +**Aircraft get a far larger materialisation band than infantry.** A helicopter is +visible and audible at 2–3 km, so lifts materialise at `presenceAirMetres` +(default 2500 m) instead of the 600 m used for foot patrols. This is what +actually delivers "helicopters moving around the island" — they are seen +crossing the valley, not only overhead. + +A fleet of ten airframes in the pool is fine; ten in the air simultaneously is +not. Note also that ten AI helicopters converging on one staging area is where +collisions, failed landings and wrecks blocking your own LZs come from. + +Core cannot call the aircraft service directly, so: + +``` +// core +class ERR_TransportProvider // interface +{ + bool CanLift(vector from, vector to); + int Lift(int recordId, vector from, vector landingZone, float deadline); + int LiftState(int orderId); // queued / flying / landed / unloaded / lost + void CancelLift(int orderId); +} +``` + +`core` calls the registered provider; `ai` registers an implementation backed by +the existing `ERR_AircraftService` (`addons/ai/Scripts/Game/ERR/ERR_AircraftService.c`), +which already supports route flight, field flight, vertical flight, cancellation +and a `MAX_AIRCRAFT` cap of 4. **Reuse it — do not write a second flight +controller.** `{859B2A6A7DFA9EFB}` style GUIDs must come from +`docs/vanilla-resources.json`; the transport helicopter +`Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et` is already +registered there. + +Lift sequence — each stage is a state, none of it is per-frame: + +1. `LOADING` — section boards at the staging area (virtual unless observed). +2. `IN_TRANSIT` — aircraft flies the route. Physical when near observers; this + is the moment the design exists for, so let it be seen and heard. +3. `UNLOADING` — lands at the LZ, section disembarks, order is marked `ARRIVED`. +4. Aircraft returns to staging and is returned to the pool. + +**LZ selection:** flat ground within 150 m of the objective, not inside a +building footprint, not on the road. Choose from authored LZ points per site +rather than searching terrain at runtime — authoring is cheaper and more +reliable than a runtime flatness search. + +**Interruption:** if the aircraft is destroyed in any state before `ARRIVED`, +the section and the aircraft are permanently removed from the pool, the +objective returns to unassigned with a logged reason, and HQ must re-plan. +Same for a convoy. This must be tested, not assumed. + +--- + +## 6. Roadblock construction + +A roadblock is built, not spawned. State machine, advancing on the 5 s plan tick: + +| State | What exists | Duration | +| --- | --- | --- | +| `SURVEYED` | Nothing. Site reserved by an incoming order | — | +| `MATERIEL` | Flat-packed props: stacked barriers, crates, a parked truck | on arrival | +| `BUILDING` | Props appear in 3 stages as progress crosses 33/66/100% | 6–10 min | +| `MANNED` | Complete; becomes a T3 checkpoint with its garrison | — | +| `DAMAGED` | Partial props, reduced garrison | on attack | +| `ABANDONED` | Props remain, no garrison, never repopulated | garrison wiped | + +Rules: + +- Progress advances **whether or not anyone is watching**, and props spawn on + stage transitions regardless of observers. A player who leaves and returns + finds a finished roadblock. Props are static and cost nothing. +- Soldiers under construction use T4 smart actions so they look like they are + working. Never all of them — keep a sentry. +- Destroying props during `BUILDING` drops progress and can return the site to + `MATERIEL`. Destroying it repeatedly must not loop forever: after two resets + HQ abandons that junction and spends the section elsewhere. +- Leave a drivable gap. A roadblock that fully seals a road can soft-lock a + route; it should slow and expose the player, not wall them in. +- At most **4 construction sites at once** (`occupationBuildSites`). + +--- + +## 7. Interaction with HQ and fairness + +- Dormant records **never observe and never report**. Only physical units + generate contacts. Enforce in code. +- Deployment orders are HQ traffic: they travel the existing radio model + (`ERR_HQNetwork`) with its latency and failure rules. Severing HQ's radio chain + delays or loses deployment orders — killing radio operators slows the + occupation, which is exactly the intended counterplay. +- HQ's contact-driven re-prioritisation reuses the scored tasking from T5. The + occupation plan proposes; HQ's priorities re-order the queue. + +--- + +## 8. Caps (all settings, all enforced, all logged on refusal) + +| Setting | Default | Meaning | +| --- | --- | --- | +| `activeAgentBudget` | 60 | Global active enemy agents (T2 owns enforcement) | +| `occupationSections` | 16 | Total sections in the pool | +| `occupationTransportAir` | 2 | Transport aircraft | +| `occupationTransportRoad` | 3 | Trucks | +| `occupationConcurrentOrders` | 5 | Deployments in transit at once | +| `occupationConcurrentLifts` | 2 | Air lifts flown **physically** at once; others fly as records | +| `presenceAirMetres` | 2500 | Materialisation band for aircraft (infantry use 600) | +| `occupationBuildSites` | 4 | Simultaneous construction sites | +| `occupationOrderSeconds` | 120 | Cadence between new orders | +| `occupationFallbackSeconds` | 900 | Alarm fallback if nothing is detected | + +--- + +## 9. Work breakdown + +Implement in order. One agent per step is fine; steps O3 and O4 can run in +parallel after O2. + +- **O1 — Pool, objectives and plan skeleton.** `ERR_ForcePool`, + `ERR_OccupationObjective`, `ERR_OccupationPlan` with the priority queue and the + 5 s tick. Authored staging areas and objective list in `EveronSites.conf`. + Start state: prison garrison only, everything else empty. +- **O2 — Deployment orders and transit.** `ERR_DeploymentOrder`, + `ERR_DeployRules.Select`, foot and virtual transit, arrival handover to the + objective. Permanent pool loss on destruction. +- **O3 — Air lift.** The `ERR_TransportProvider` interface in core, the `ai` + implementation over `ERR_AircraftService`, authored LZ points, load/fly/unload + states, loss handling. +- **O4 — Convoy.** Road routes, truck + section as a `CONVOY` record, ambush and + loss handling, blocked-route fallback to foot. +- **O5 — Roadblock construction.** The state machine, staged props, progress, + damage and abandonment, handover to T3 checkpoints. +- **O6 — Adaptation and proof.** Contact-driven re-prioritisation, cordon + formation, plus the metrics and the measured comparison run from T7. + +--- + +## 10. Acceptance criteria + +1. At T+0 the island holds troops only at the prison and its two nearby patrols; + measured active agents at mission start are under 20. +2. Within 10 minutes of the alarm, the radio station and the helipad have + garrisons that **arrived**, and the journal shows how each got there. +3. A player positioned along a lift route sees a real helicopter fly, land, + unload soldiers and depart. +4. Destroying that helicopter before it unloads permanently removes those + soldiers and that aircraft from the pool; the objective is logged as + unassigned and is still empty ten minutes later. +5. A player watching a junction sees a roadblock built in stages over minutes, + not appear at once. Leaving and returning shows progress continued. +6. Active agents never exceed `activeAgentBudget` at any sample during a + 20-minute occupation, and never exceed 20 in the first minute after the alarm + despite the full deployment queue being issued. +7. A lift in transit costs 2 agents, not 10 — verified in the metrics output. +7. With the AI addon absent, occupation still completes by road and foot. +8. Restarting the mission leaves no deployment, aircraft, convoy or prop behind. +9. `python3 tools/check.py` passes. + +## 11. Tests + +`tests/test_occupation_plan.py` + +- Priority order is respected while the pool lasts, and objectives are refused + once the pool is empty rather than spawning free sections. +- Pool accounting: a lost deployment permanently decrements sections and + transport; totals never go negative and never regenerate. +- Cadence and concurrency caps hold under a burst of eligible objectives. + +`tests/test_deployment_rules.py` + +- `Select` picks foot under 1.5 km, convoy in the middle band, air over 6 km, and + falls back correctly when transport is exhausted or no provider is registered. +- ETA scales with method speed and distance. +- A destroyed transport moves the order to `LOST` and releases the objective. +- A lift in transit reports zero passenger agents; the section's agents appear + only on unload, and the count matches the section strength. +- The physical-lift cap holds: with 6 queued lifts and a cap of 2, exactly 2 are + flown physically and the other 4 remain records with valid ETAs. + +`tests/test_roadblock_build.py` + +- Progress crosses the three prop stages exactly once each, in order. +- Progress advances with no observers present. +- Two resets lead to abandonment, not an infinite rebuild loop. +- The drivable gap is preserved in every completed variant. + +--- + +## 12. Do not + +- Do not spawn the island's garrisons at mission start "for now" — the staged + arrival is the feature, not an optimisation to add later. +- Do not write a second flight controller; use `ERR_AircraftService` through the + provider interface. +- Do not launch a fleet of helicopters at once. Ten physical lifts is ~90 agents + before a single garrison exists, front-loads the whole occupation into five + minutes, and stages nine flights where no player can see or stop them. +- Do not spawn passengers for a flight. Cargo is virtual until unload. +- Do not let core reference `ai` classes. +- Do not make deployments invulnerable or teleport them on failure. If the player + breaks a deployment, it stays broken. +- Do not exceed the caps to make a demo look better. diff --git a/docs/living-island/README.md b/docs/living-island/README.md new file mode 100644 index 0000000..2ddaf4d --- /dev/null +++ b/docs/living-island/README.md @@ -0,0 +1,164 @@ +# Living island — plan and agent rules + +Goal: Everon should feel occupied — patrols that actually move, manned roadblocks, +soldiers doing something other than standing — **without** raising the active AI +count. The target is a constant, bounded agent budget (default 60 enemy agents) +regardless of how much "activity" exists on the map. + +## The core idea: simulate many, spawn few + +Most of the island's forces exist as **records, not entities**. A record has a +position, a route, a strength and a duty. A slow tick advances records along +their routes with plain arithmetic — no AI, no navmesh, no entity. A record is +materialised into a real `SCR_AIGroup` only when a player is close enough to +observe it, or when HQ needs it in contact. When the player leaves, it goes back +to being a record, keeping its position and losses. + +This is what buys the "living island" feeling cheaply: twelve patrols can be +crossing the map at once while only the two near players cost anything. + +``` +ERR_ForceLedger records: id, kind, position, route, strength, duty, importance + | + |-- ERR_ForceSimulation advances dormant records along routes (2 s tick, pure math) + |-- ERR_PresenceBudget decides which records are physical right now (3 s tick) + | |-- spawns -> SCR_AIGroup.SpawnMembers() + | |-- dormant -> SCR_AIGroup.DespawnMembers() + | + +-- consumed by ERR_HQ (ai addon) for tasking, ETA and availability +``` + +**Hard invariant — fairness:** only *physical* units observe and report contacts. +A dormant record never generates a sighting. This protects the HQ design, where +enemy knowledge must be earned through line of sight and radio. + +## Layer 2: presence without population + +A site feels occupied because of evidence, not head count. Evidence is free — +static props cost no CPU. So roadblocks, barriers, parked vehicles and lit +windows are **permanent**; the soldiers manning them are **conditional**. + +## Layer 3: soldiers doing something + +Vanilla smart actions (`SCR_AISmartActionComponent`) let an existing soldier lean +on a wall, smoke, or work on a vehicle instead of standing at a waypoint. This +costs no extra agents — it changes what the agents you already pay for are doing. + +## Task order + +Do these in order; each builds on the previous one. One agent per task. + +| Task | File | Depends on | +| --- | --- | --- | +| T1 | `T1-force-ledger.md` — records + route simulation | — | +| T2 | `T2-presence-budget.md` — spawn/dormant arbitration under a cap | T1 | +| T3 | `T3-checkpoints.md` — roadblocks and manned checkpoints | T1, T2 | +| T4 | `T4-smart-actions.md` — idle activity at sites | T2 | +| T5 | `T5-hq-integration.md` — HQ tasks ledger units, gets ETAs | T1, T2 | +| T6 | `T6-ambient-signals.md` — cheap signs of life | T2 | +| T7 | `T7-performance.md` — caps, metrics, thrash prevention | all | +| T8 | `T8-hq-memory.md` — HQ belief: decaying contacts, searched ground | T5 | +| T9 | `T9-pursuit.md` — alert states, hunting, air search, cordons | T5, T8 | +| T10 | `T10-ai-migration.md` — port the old AI mod's proven behaviour under HQ | T5, T8, T9 | +| O1–O6 | `OCCUPATION.md` — how the island gets occupied after the alarm | T1, T2 | + +T3 and T4 can run in parallel once T2 lands. T6 can run in parallel with T5. +T8 and T9 are what make the island *hunt* rather than merely be occupied; T9 +depends on T8, because HQ cannot search for what it does not remember. + +--- + +# Rules every agent must follow + +Paste this section into each agent along with its task file. + +## Licensing — non-negotiable + +This project is an independent successor. The original Escapists mod and its +`ScrtCore` / `ScrtSharedContent` dependencies are under SCRT-ND (an APL-ND +variant) which **forbids derivatives**. Therefore: + +- Never copy code, config, layouts or assets from the original Escapists mod, + from ScrtCore/ScrtSharedContent, or from `/home/jakub/devel/escapists`. +- Never introduce identifiers matching `ESCT*`, `SCRTC_*`, `SCRT_*`, `EAI_*`. + `tools/check.py` fails the build on these. +- Only vanilla Arma Reforger resources and resources owned by this repository + may be referenced. Every `{GUID}path` must either be in + `docs/vanilla-resources.json` or be owned by a `.meta` file in this repo. +- Reimplementing a *mechanic* from scratch is fine. Copying an implementation is not. + +## Project constraints + +- Five addons only: `core`, `ai`, `intel`, `chat`, `map`. Do not add addons or + external dependencies. +- Dependency direction: `ai`, `intel`, `map` depend on `core`; `chat` depends on + all. **`core` must never reference `ERR_HQ` or anything from another addon.** + Core defines interfaces (see `ERR_CommandService`); companions implement them. +- The living-island ledger belongs in **`core`**, because the base scenario must + work without the AI addon. HQ integration (T5) goes in **`ai`**. + +## Performance rules — the whole point of this work + +1. **No per-frame work.** Every tick in this subsystem is ≥ 1 s. Stagger work by + unit id (`id % N`) so all units never update on the same frame. +2. **No allocation inside loops.** Reuse member arrays; clear rather than + reallocate. Do not allocate an `array` per unit per tick. +3. **Spatial bucketing for proximity.** 500 m cells, as already done in + `ERR_HQNetwork.Add/Build`. Never do an all-pairs distance scan. +4. **Hard caps everywhere,** with a logged refusal when hit. Never let a count + grow unbounded. +5. **Prefer vanilla behaviour over custom steering.** Issue a waypoint and let + the engine drive; do not write per-frame movement code. +6. **Hysteresis and dwell time.** Spawn and despawn radii must differ, and a unit + must stay in its state a minimum time before flipping. Thrash is the main + performance risk in this design. + +## Code style + +- Match the surrounding file's indentation (older files use tabs). +- New lines stay under 120 characters. The repo already has 420 lines over 200 + characters; do not add more. +- Put decision logic in **pure static rule classes** (see `ERR_DiscoveryMapRules`, + `ERR_MissionRules`) so it can be tested without the engine. Entity manipulation + stays in the service class. +- Small classes. Do not extend `ERR_GameMode` or add another 100-field object. + +## Validation — required before you report done + +1. `python3 tools/check.py` must pass. +2. Add Python tests using `tests/policy_harness.py`: `body(path, signature)` + extracts a real function body from the `.c` file and `run(code)` compiles and + executes it as C++. Test the pure rule classes this way. Follow the pattern in + `tests/test_admin_session.py`. +3. Report honestly. This repo separates "compiles and passes scripted fixtures" + from "verified in the real game". If you did not run it in Workbench, say so. + Do not write evidence files claiming runtime verification you did not perform. + +## Verified engine APIs you will need + +All confirmed present in the installed vanilla scripts (1.6.30): + +| API | Where | Notes | +| --- | --- | --- | +| `SCR_AIGroup.SetLifecyclePolicy(policy, spawnDist, despawnDist, veryNearBlockDist)` | `Entities/SCR_AIGroup.c:2921` | `Manual` (default) or `ProximityDriven` | +| `SCR_AIGroup.SpawnMembers()` / `DespawnMembers()` | `:2783` / `:2870` | Dormant group **keeps its entity** and records alive/dead counts, so a later `SpawnMembers()` re-materialises the right number | +| `ChimeraAIGroup.SetImportance(int)` / `AIGroup.GetImportance()` | `generated/AI/ChimeraAIGroup.c:22` | Pass `SCR_EAISpawnImportance` values | +| `SCR_EAISpawnImportance` | `AI/SCR_EAISpawnImportance.c` | LOW 0.50, NORMAL 0.70, HIGH 0.90, CRITICAL 1.00 — fraction of AIWorld's active-AI limit the tier may consume, enforced by `AIWorld::CanActivateGroup` | +| `SCR_EAIGroupLifecyclePolicy` | `AI/SCR_EAIGroupLifecyclePolicy.c` | `Manual` = we drive it; `ProximityDriven` = group self-manages against `ObserversSystem` | +| `ObserversSystem.GetObservers(out array)` | `generated/System/ObserversSystem.c:59` | Cheap observer positions; also `GetObserversMP` | +| `SCR_AIGroup.SetEliminateWhenReached(true)` + `GetOnEliminatedWhenReached()` | used at `SCR_AmbientPatrolSpawnPointComponent.c:212` | If a player reaches a patrol that could not spawn (budget full), the area counts as cleared and the group retires instead of popping in later | +| `SCR_AISmartActionComponent` (`ReserveAction`, `ReleaseAction`, `GetOnActionEnd`, `GetOnActionFailed`) | `AI/Components/SCR_AISmartActionComponent.c` | Idle activities | +| `SCR_SmartActionWaypoint.SetSmartActionEntity(IEntity, string tag)` | `AI/Behavior/SCR_SmartActionWaypoint.c:31` | Sends a group to perform a tagged smart action | + +Reference implementation worth reading (vanilla, not the original mod — safe to +read and learn from): `Components/Locations/SCR_AmbientPatrolSpawnPointComponent.c` +and `Systems/SCR_AmbientPatrolSystem.c`. + +## Existing repo helpers — use these, do not reinvent + +- `ERR_Actors.Spawn/DeleteSpawned/Ground/Players/Alive/CanFight/Group` — `addons/core/Scripts/Game/ERR/ERR_Actors.c` +- `ERR_Resources.SearchWaypoint/MoveWaypoint/CycleWaypoint/DefendWaypoint` — waypoint prefab GUIDs +- `ERR_SiteService` / `ERR_SiteDefinition` / `ERR_LocationComponent` — authored sites and their guards +- `ERR_HQNetwork` — the 500 m spatial cell pattern to copy +- `ERR_Settings.Get("key")` — integer settings; add new keys here +- `ERR_HQJournal` via `ERR_HQ.Event(kind, message)` — **ai addon only**; core code logs with `PrintFormat("Reintroduced [ledger]: ...")` diff --git a/docs/living-island/T1-force-ledger.md b/docs/living-island/T1-force-ledger.md new file mode 100644 index 0000000..aa410bf --- /dev/null +++ b/docs/living-island/T1-force-ledger.md @@ -0,0 +1,93 @@ +# T1 — Force ledger and route simulation + +Read `docs/living-island/README.md` first, including the rules section. Follow it. + +## Goal + +Introduce a server-owned record of every enemy formation on the island that does +not require those formations to exist as entities. Dormant records move along +routes using arithmetic on a slow tick. This is the foundation for everything +else in the living-island work. + +## What to build + +Create `addons/core/Scripts/Game/ERR/ERR_ForceLedger.c`: + +``` +enum ERR_ForceKind { GARRISON, PATROL, CHECKPOINT, CONVOY } +enum ERR_ForceDuty { HOLD, PATROL_ROUTE, MOVE_TO, SEARCH, RETURN } + +class ERR_ForceRoute // ordered waypoints + loop flag +class ERR_ForceRecord // id, kind, position, heading, route, progress, + // strength, casualties, duty, dutyTarget, + // importance, radioCapability, group (null when dormant), + // lastSimulatedAt, stateSince +class ERR_ForceLedger // owns records; register/unregister/find/count/status +``` + +Create `addons/core/Scripts/Game/ERR/ERR_ForceSimulation.c` with a **pure rule +class** plus the tick that applies it: + +``` +class ERR_ForceRules +{ + // pure, engine-free, unit-testable + static float Speed(ERR_ForceKind kind, ERR_ForceDuty duty); // m/s + static int Advance(...); // returns new route index + static vector Step(vector from, vector to, float speed, float seconds, out bool arrived); + static bool Due(int id, float now, float lastSimulatedAt, float interval); // staggered +} +``` + +Rules: + +- Dormant records advance along their route polyline by `speed * elapsed`. + Walking speed default 1.4 m/s, vehicle convoy 11 m/s, a holding garrison 0. +- **Do not raycast, do not query the navmesh, do not touch the world** for + dormant records. Straight-line interpolation between authored route points is + the intended fidelity. Authored routes follow roads; that is the content's job, + not the simulation's. +- Y coordinate: keep the authored route point's Y. Only call `ERR_Actors.Ground()` + at the moment a record is materialised (that is T2's job, not yours). +- Tick interval default 2000 ms, staggered by `id % 8` so records do not all + update on the same frame. +- Cap the ledger at 128 records. Refuse beyond that and log once. + +## Wiring + +- `ERR_GameMode` owns the ledger, created next to the existing services + (`m_Sites`, `m_Discovery`, …). Expose `ERR_ForceLedger Forces()`. +- Tick it from the existing game-mode tick path. **Do not add a new timer or + `EOnFrame`.** +- `ERR_SiteService` registers a `GARRISON` record for each site guard group it + already creates, so the ledger has real content from day one. The site's + existing patrol cycle waypoints become the record's `ERR_ForceRoute`. +- Records whose group dies must be marked eliminated and stop simulating. + +## Acceptance criteria + +1. With five authored sites, the ledger holds five garrison records after + preparation, and `Status()` reports them. +2. A record with a 4-point looping route returns to its start after the expected + time, within 5% — verified by the Python test, not by eye. +3. Advancing 128 records for a simulated hour performs no world queries and no + per-record allocation. +4. `python3 tools/check.py` passes. + +## Tests to write + +`tests/test_force_ledger.py`, using `tests/policy_harness.py`: + +- Extract `ERR_ForceRules.Step` and `Advance` with `body()` and run them as C++: + a 4-leg loop advanced in 2 s steps arrives at each leg in the expected order + and wraps correctly. +- `Speed` returns 0 for `HOLD`, and a convoy outruns a foot patrol. +- `Due` staggers: across ids 0..7 at the same `now`, not all are due. +- Off-by-one on the final leg of a non-looping route ends at the last point and + reports arrival exactly once. + +## Do not + +- Do not spawn or despawn anything in this task. T2 owns materialisation. +- Do not reference `ERR_HQ` — this is core. +- Do not add a `ref array` member that grows without a cap. diff --git a/docs/living-island/T10-ai-migration.md b/docs/living-island/T10-ai-migration.md new file mode 100644 index 0000000..456d381 --- /dev/null +++ b/docs/living-island/T10-ai-migration.md @@ -0,0 +1,274 @@ +# T10 — Migrating the old AI mod's proven behaviour under HQ control + +Read `docs/living-island/README.md` first, including the rules section. +Depends on T1, T2, T5, T8, T9. Mostly **ai** addon. + +The predecessor project at `/home/jakub/devel/escapists/escapists-ai` already +implements much of what the living-island plan describes — hunting UAZ convoys, a +timed reconnaissance helicopter, reactive roadblocks, guard check-ins, body +discovery, mortar sites and supply convoys. That work is the maintainer's own +design and is the reference for this task. + +This brief says what to carry across, what the real parameters were, and — most +importantly — how the architecture must change on the way. + +--- + +## 1. Provenance and licensing — read before opening any source file + +| Category | Files | What you may do | +| --- | --- | --- | +| Maintainer's own design | Most of `escapists-ai` | Carry the **design**: timings, distances, sequences, failure handling. Re-express the code against vanilla and ERR interfaces. | +| Calls into protected API | 36 of 48 files reference `ESCT_*` | Those calls cannot come across — ERR has no Escapists dependency. Replace each with a vanilla or ERR equivalent. A call is not a copy, but the replacement must be written fresh. | +| **Contains copied protected code** | `EAI_GroupLookup.c` | **Do not port, do not adapt, do not read as a model.** An independent comparison found 666 matching token sequences with the protected `ESCT_GroupLookup` / `ESCT_CharacterLookup`. Build group composition from vanilla entity catalogs from scratch, as `ERR_FactionCatalog` already does. | + +Also binding: + +- `tools/check.py:39` rejects any `EAI_*`, `ESCT*`, `SCRTC_*`, `SCRT_*` identifier. + Everything is renamed to `ERR_*`, and no old prefix survives in a comment either. +- Every `{GUID}path` must be in `docs/vanilla-resources.json` or owned here. + The prefabs quoted below are vanilla and were verified against the installed + `resourceDatabase.rdb`; add any that are missing from the manifest. +- Do not copy the old files wholesale and rename the symbols. Each system below + is re-implemented against the ledger, the belief layer and the presence budget. + +--- + +## 2. The architectural change — this is the point of the task + +In the old mod, each behaviour was an **independent subsystem with its own timer +and its own spawning**: `EAI_AirReconSystem` ran a launch clock, the response +system held a five-minute radio cooldown, the roadblock planner ran its own +placement loop, mortars managed their own crews. They competed for the same world +with no shared budget and no shared picture. + +In this project every one of them becomes a **capability the HQ planner selects**, +under one force pool, one agent budget and one belief: + +``` +ERR_HQ ── belief (T8) ── what HQ thinks it knows + │ + ├── plans against objectives and beliefs (T5 scoring, T9 alert states) + │ + └── chooses a capability and spends the pool: + ground response · air search · roadblock · mortar fire · + supply convoy · garrison deployment (O1–O6) +``` + +Concretely, for every system below: + +- **No private timers.** A capability offers "available / not available, ETA, cost"; + the planner decides when. The old per-system cooldowns become availability + rules the planner reads. +- **No private spawning.** Units come from the ledger and the pool. A capability + requests a record; `ERR_PresenceBudget` decides what is physical. +- **No private world picture.** Capabilities act on beliefs (T8). Nothing queries + player positions directly. +- **Losses hit the shared pool.** A destroyed hunter UAZ is a section gone from + the same pool that garrisons checkpoints. + +Delete rather than port: `EAI_Performance.NearPlayer` / `ConvoyLOD`. That was an +embryonic presence system; T2 replaces it, and two competing presence systems is +worse than either alone. + +--- + +## M1 — Detection: check-ins, losses and bodies + +**Source:** `EAI_HQWatch.c`, `EAI_HQBodySearch.c`, `EAI_HQStatus.c` + +This is the missing trigger for the occupation alarm, and it already exists. + +- **Periodic check-ins.** Each unit owes HQ a status report every `CHECK_IN_MS` + (180 s), with `REPLY_MS` (30 s) to answer. A unit that misses its check-in is + not assumed dead — HQ opens an *investigation* and sends someone to look. That + is the mechanism `OCCUPATION.md` referred to as "a guard check-in missed". +- **Loss confirmation.** `OnControllableDestroyed` records a loss as unconfirmed; + HQ only *knows* once a unit reports it. `SquadLimit(baseline, confirmedLosses)` + shrinks what HQ can commit as its confirmed losses mount. +- **Body discovery.** Bodies are found by units that can actually see them — + `InView(distance, facing)` plus a visibility trace, scanned at most every 15 s + per unit, capped at 16 tracked bodies. A found body queues radio evidence: + *casualty evidence, cause unknown*. Quiet kills stay quiet until someone walks + past the corpse, which is exactly the stealth counterplay worth keeping. + +**Port as:** an ingest path into T8's belief and an alarm source for the +occupation plan. A discovered body creates a low-confidence belief at that +position; a missed check-in creates an investigation belief at the unit's last +known location. Keep the trace budget (`m_Traces`) — it is what stops body +scanning from costing a fortune. + +--- + +## M2 — Ground response: the hunter convoy + +**Source:** `EAI_AIResponseSystem.c` + +The proven behaviour, with its real numbers: + +- Two armed UAZs — `{0B4DEA8078B78A9B}Prefabs/Vehicles/Wheeled/UAZ469/UAZ469_PKM.et` + — spawned on roads `EAI_RESPONSE_DISTANCE` (1000 m, ±100 m tolerance) from the + contact, on **opposite sides**: candidate bearings must be at least 30° from + directly opposite (`dot ≤ -0.866`), up to 12 placement attempts. +- Each vehicle is filled with spec-ops and exactly one medic, all seats occupied. +- **One convoy is kept alive and re-tasked** when a later report gives a new + contact, rather than spawning a fresh one per sighting. It is replaced only + when a vehicle is lost. +- A global radio cooldown of 300 s gates how often a response can be triggered. +- Convoy gunners were given maximum AI skill. Keep a *deliberate* skill choice, + but make it a setting rather than a constant — see the pacing rules in T9. + +**Port as:** the ground hunting capability in T9. The 1000 m opposite-approach +placement is exactly T9's "at most two bearings, escape vector left open" rule — +implement it once, here, and have T9 use it. Respect T9's +`minHunterSpawnMetres` (700 m): never place a response vehicle closer than that +to any player, which the old `EAI_ResponseSafety` and `EAI_SettlementSafety` +checks were already approximating. + +--- + +## M3 — Air search: the reconnaissance helicopter + +**Source:** `EAI_AirRecon.c` (1335 lines — the richest system in the old mod) + +This *is* T9's hunter helicopter. Build one system, not two. + +Behaviour worth carrying: + +- **Launch timer.** `heliTimerMinutes` (default 15, range 1–1440) schedules the + first departure and each subsequent one. Losing the aircraft schedules a + replacement rather than ending air search permanently. +- **Airport discovery, spread over time.** The island is scanned in 2000 m + columns across successive updates — never in one frame — matching runway and + control-tower prefabs, clustering structures within 1000 m into one airport and + tracking the cluster centre. A named marker entity short-circuits the search. + **Keep the incremental scan pattern**; it is a good model for any map-wide + query in this project. +- **Landing pad selection.** 12 attempts at 35–220 m from the centre, rejecting + water, requiring flatness within 1.5 m across a 12 m cross, a 14 m radius + cylinder clear of low obstacles, and a clear box up to 150 m overhead. +- **Phased flight** with a landing retry: if a landing has not settled within + 180 s, search for a new pad (re-checked every 30 s within 150 m of home). +- **Air observation feeds HQ** through the same report path as ground units. + +**Change on the way across:** + +- Fold into T9's air search: one airborne at a time, endurance-capped, observing + under the same line-of-sight rules as infantry. +- The launch timer becomes *availability*, not a trigger. The planner asks for + air search when a belief justifies it; the timer only says whether an airframe + is ready. A helicopter must not launch into an empty sky because a clock fired. +- Draw the airframe from the shared pool, so searching competes with lifting. +- Replace `ESCT_Misc.IsPositionInWater` and `ESCT_RoadNavigation` calls with + vanilla equivalents (`SCR_TerrainHelper`, `SCR_WorldTools`, vanilla road API). + +--- + +## M4 — Reactive roadblocks + +**Source:** `EAI_HQRoadblocks.c` + +Distinct from T3's authored checkpoints: these are placed *in response to a +contact*, ahead of where HQ thinks the player is going. + +- `Ahead(position, velocity, site)` rejects any site that is not in front of the + contact's travel. `FreshDirection(distress, hasVelocity, age, speed)` decides + whether a heading estimate is trustworthy enough to predict from at all. +- Sites are snapped to real roads via a road-approach search, within 200 m of the + chosen point, with a 25 m probe to orient the block along the road. +- Placement requires ground clearance, distance from players, and being outside + settlements. + +**Port as:** the cordon mechanism in T9. T8's belief gives a better input than +the old raw velocity: use the uncertainty circle and the objective-route +inference to choose chokepoints between the belief and its likely destination. +Keep `Ahead` and `FreshDirection` as pure rules — they are good, testable logic. + +--- + +## M5 — Mortar sites + +**Source:** `EAI_MortarSystem.c`, `EAI_MortarEngagement.c`, `EAI_MortarFiring.c`, +`EAI_MortarPrediction.c`, `EAI_MortarSalvo.c` + +Much of this is already migrated (`ERR_Mortar*`). What is missing is **site +placement as an HQ capability**: the old system chose where a battery stands, +spawned a 2B14 with crew and an RTO, equipped nine HE shells per crewman, pulled +shells from nearby donors when the gunner ran dry, reserved airspace over the +impact area, and audited site status (claimed / startup / operational / crew +fighting / shells / radio connected / cooldown). + +**Port as:** a `MORTAR_SITE` objective in the occupation plan (O1). HQ deploys a +battery to a site like any other garrison — it costs a section from the pool, +travels by the normal methods, and takes time to become operational. A mortar +battery that is spent, overrun or out of shells stays spent. Keep the airspace +reservation and the existing fairness: a battery fires at *beliefs*, delivered by +radio, never at live player positions. + +--- + +## M6 — Logistics and the threat extras + +Lower priority; schedule after M1–M5. + +| Source | What it gives | Port as | +| --- | --- | --- | +| `EAI_SupplyConvoys.c` (1463 lines) | Road convoy logistics with real routing | The convoy method in O4; reuse the road-following and slot logic, not the ESCT calls | +| `EAI_Resupply.c`, `EAI_AmmoSupply.c`, `EAI_DepotLoading.c`, `EAI_LogisticsVehicle.c` | Ammunition and depot chains | A resupply capability that keeps garrisons and batteries fighting — finite, so cutting a depot matters | +| `EAI_StingerEquipment.c` | A rare `Launcher_FIM92_Stinger` on enemy infantry, one in N | Anti-air threat against the player's stolen helicopter — the escape must not be trivially safe. Keep it rare and keep it a setting | +| `EAI_ImprovisedPrisons.c` | Recapture rather than only killing | A strong escape-fiction feature: an unconscious escapist can be taken, not just killed. Worth its own task later | +| `EAI_Mines.c`, `EAI_MineTask.c` | Mines laid on routes | Optional; only with clear warning cues, or it is pure frustration | +| `EAI_AirAssault.c`, `EAI_AssaultParachute.c` | Airborne insertion | Already covered by O3 air lift; do not build a second insertion path | +| `EAI_HelicopterRecovery.c`, `EAI_Landing.c`, `EAI_AircraftAmmo.c` | Aircraft servicing and recovery | Feed into the transport provider rather than a separate system | + +--- + +## Acceptance criteria + +1. No `EAI_*`, `ESCT_*` or `SCRTC_*` identifier appears anywhere in `addons/`; + `python3 tools/check.py` passes. +2. `EAI_GroupLookup.c` has not been ported in any form; group composition comes + from vanilla catalogs through `ERR_FactionCatalog`. +3. Every migrated capability draws units from the ledger and the shared pool. + Grep proves it: no capability calls a spawn helper directly. +4. No migrated system owns a private timer that triggers behaviour. Timers only + report availability to the planner. +5. A missed check-in produces an investigation; a discovered body produces a + low-confidence belief; both are visible in the journal. +6. A contact triggers **one** re-taskable hunter convoy, not one per sighting, + and never places a vehicle within 700 m of a player. +7. Air search launches because a belief justifies it, never because a clock + fired into an empty sky. +8. Destroying hunters, the helicopter or a mortar battery permanently reduces + what HQ can do next — verified in the metrics. +9. Active agents stay inside `activeAgentBudget` with every capability in play. + +## Tests to write + +`tests/test_detection.py` — check-in timing and reply windows; `SquadLimit` +shrinks with confirmed losses; `InView` rejects a body behind the observer; +the body-scan interval and tracking cap hold. + +`tests/test_ground_response.py` — opposite-bearing placement satisfies the 30° +rule and the 1000 m ± 100 m band; the 700 m minimum to players holds; a second +contact re-tasks the existing convoy instead of spawning another; cooldown gates +repeats. + +`tests/test_air_search.py` — the launch timer reports availability but never +triggers a launch on its own; pad selection rejects water, slopes over 1.5 m and +obstructed overhead; landing retry fires after 180 s. + +`tests/test_roadblock_siting.py` — `Ahead` rejects sites behind the contact; +`FreshDirection` refuses a stale or speedless heading; chosen sites lie between +the belief and its inferred objective. + +## Do not + +- Do not port a file by renaming its symbols. Re-implement against the ledger, + the belief and the budget. +- Do not recreate the old parallel-subsystem architecture. One planner, one pool, + one budget, one picture. +- Do not port `EAI_GroupLookup.c`, and do not use it as a reference while writing + the replacement. +- Do not let any migrated capability read player positions directly. Everything + acts on beliefs earned through observation and radio. diff --git a/docs/living-island/T2-presence-budget.md b/docs/living-island/T2-presence-budget.md new file mode 100644 index 0000000..415f8ea --- /dev/null +++ b/docs/living-island/T2-presence-budget.md @@ -0,0 +1,97 @@ +# T2 — Presence budget: materialise few, simulate many + +Read `docs/living-island/README.md` first, including the rules section. Depends on T1. + +## Goal + +Decide, on a slow tick, which ledger records are physical `SCR_AIGroup`s right +now — under a hard agent budget, without thrashing, and without the player ever +seeing a unit appear or vanish in view. + +## What to build + +`addons/core/Scripts/Game/ERR/ERR_PresenceBudget.c`, again split into a pure +rule class and a service: + +``` +class ERR_PresenceRules +{ + static bool WantsPhysical(float nearestObserver, bool currentlyPhysical, + float spawnBand, float despawnBand); // hysteresis + static bool DwellSatisfied(float now, float stateSince, float minimumDwell); + static int Score(ERR_ForceKind kind, int importance, float nearestObserver, bool pinned); + static bool WithinBudget(int activeAgents, int requestedAgents, int budget); +} + +class ERR_PresenceBudget { ... } +``` + +## Required behaviour + +- **Observers:** use `ObserversSystem.GetObservers(out array)`. Bucket + observers into 500 m cells (copy the pattern from `ERR_HQNetwork.Add/Build`); + never scan all records against all observers. +- **Hysteresis:** spawn band 600 m, despawn band 900 m (settings + `presenceSpawnMetres`, `presenceDespawnMetres`). A record inside 600 m wants to + be physical; it only goes dormant past 900 m. +- **Dwell:** minimum 30 s in a state before it may flip (`presenceDwellSeconds`). +- **Budget:** `activeAgentBudget`, default 60. Count real agents, not records. + When a spawn would exceed it, refuse and log — do not spawn and hope. +- **Eviction:** when over budget, dormant the lowest-scoring physical records + first (farthest, least important, not pinned). Never evict a record that is in + combat (`SCR_AIGroupUtilityComponent.m_Perception.m_aTargets` non-empty), that + contains a player, or that is pinned by HQ. +- **Pinning:** expose `Pin(int recordId, bool pinned)` so T5 can force a record + physical while HQ has it tasked near players. +- **Never despawn in view:** if any observer is within the despawn band, the + record stays physical, full stop. The dwell timer does not override this. + +## Materialisation + +- Physical: create or re-use the group, `SetImportance(...)` from the record's + tier, `SetLifecyclePolicy(SCR_EAIGroupLifecyclePolicy.Manual, ...)` — **we** + drive spawn/despawn, not the engine's proximity policy, because the ledger is + the source of truth. +- Place the group at `ERR_Actors.Ground(record.Position)` — this is the only + place ground height is resolved. +- Dormant: `DespawnMembers()`. The group entity stays alive and remembers alive + and dead counts, so re-materialising restores the right strength. Write the + surviving strength back into the record. +- Casualties taken while physical must persist into the record, so a mauled + patrol stays mauled after going dormant. +- Set `SetEliminateWhenReached(true)` on ambient patrol records so that if a + player walks onto a record that could not spawn because the budget was full, + the area counts as cleared instead of the patrol popping in later. Hook + `GetOnEliminatedWhenReached()` to retire the record. + +## Acceptance criteria + +1. With a 60-agent budget and 30 records of 4 soldiers each, active agents never + exceed 60, and `Status()` reports refusals. +2. A player walking a straight line past three patrol routes sees each patrol + materialise before it is visible and never sees one disappear. +3. A patrol that loses two members while physical comes back with the reduced + strength after a dormant period. +4. No record flips state more than once per 30 s in a stationary-observer test. +5. `python3 tools/check.py` passes. + +## Tests to write + +`tests/test_presence_budget.py`: + +- `WantsPhysical` hysteresis: a record at 700 m stays in whichever state it is + already in; crossing 600 m spawns; crossing 900 m dormants. +- `DwellSatisfied` blocks a flip at 29 s and allows it at 31 s. +- `WithinBudget` refuses the spawn that would cross the cap, and a sequence of + 20 spawn requests against a 60 budget with 4-man groups accepts exactly 15. +- `Score` ranks a pinned distant record above an unpinned near one, and ranks + importance above distance for equal pinning. + +## Do not + +- Do not use `ProximityDriven` lifecycle for ledger records — it would let the + engine fight the ledger over who owns the decision. +- Do not delete group entities to go dormant; `DespawnMembers()` is the + mechanism that preserves strength. +- Do not add a per-frame check for "is the player looking at it". Distance bands + plus dwell are sufficient and cheap. diff --git a/docs/living-island/T3-checkpoints.md b/docs/living-island/T3-checkpoints.md new file mode 100644 index 0000000..838502d --- /dev/null +++ b/docs/living-island/T3-checkpoints.md @@ -0,0 +1,73 @@ +# T3 — Roadblocks and manned checkpoints + +Read `docs/living-island/README.md` first, including the rules section. Depends on T1, T2. + +## Goal + +Make the road network feel controlled. A checkpoint is **permanent evidence** +(barriers, a parked truck, sandbags, a light at night) plus a **conditional +garrison** (2–4 soldiers, materialised only when someone is near). The evidence +costs no CPU and is always there; the soldiers cost agents and are not. + +This is the single biggest "living island" win per CPU cycle: the player sees +occupied terrain everywhere and pays for soldiers only where they are. + +## What to build + +1. **Site kind.** Extend `ERR_LocationKind` with `CHECKPOINT`, and + `ERR_SiteDefinition` with the fields a checkpoint needs: prop layout choice, + garrison size, whether it blocks the road, and the approach direction. + Update `ERR_SiteDefinition` validation and its existing tests accordingly. + +2. **Static layout.** `addons/core/Scripts/Game/ERR/ERR_CheckpointLayout.c` + places vanilla props relative to the site origin and a road heading: barriers + angled across one lane, sandbag positions, a parked vehicle, a barrel. Keep + it to **one authored arrangement with a mirrored variant** — do not build a + procedural composition system. + - Use only vanilla prefabs. Every `{GUID}path` you add must be present in + `docs/vanilla-resources.json`, or `tools/check.py` will reject it. Find real + GUIDs by searching the installed vanilla data, not by guessing. + - Props are spawned once during preparation and never ticked. + +3. **Checkpoint records.** Each checkpoint registers a `CHECKPOINT` record with + `ERR_ForceDuty.HOLD`, importance `NORMAL`, and a small garrison. The record's + position is the checkpoint; it does not move. + +4. **Authored content.** Add 6–10 checkpoints to + `addons/core/Configs/ERR/EveronSites.conf` on the main road junctions between + the prison, the radio station and the helicopter site — the routes players + actually travel. Pick junctions, bridges and town entrances. + +5. **Behaviour when manned.** The garrison gets a `DefendWaypoint` at the + checkpoint. One soldier stands at the barrier, the rest hold nearby positions. + Idle activity comes from T4 — leave hooks, do not implement smart actions here. + +## Acceptance criteria + +1. Driving the prison → radio → helipad route, the player passes at least three + checkpoints, each visibly built and manned when approached. +2. With no players near any checkpoint, checkpoint garrisons contribute **zero** + active agents. +3. Props survive their garrison being wiped — a cleared checkpoint still looks + like a checkpoint, and the record is marked eliminated so it does not repopulate. +4. Checkpoint props never block the road so completely that a vanilla car cannot + pass; leave a drivable gap or a moveable barrier. +5. `python3 tools/check.py` passes, including the resource-GUID rules. + +## Tests to write + +`tests/test_checkpoint_layout.py`: + +- The pure placement function returns positions that are within the expected + radius of the site origin and correctly rotated for a given road heading. +- The mirrored variant is the mirror image, and the drivable gap is preserved in + both variants (assert a minimum clear width along the road axis). +- `ERR_SiteDefinition` validation rejects a checkpoint with zero garrison or a + garrison above the allowed maximum. + +## Do not + +- Do not import any composition, prefab or layout from the original mod. +- Do not spawn checkpoint props per-approach; they are placed once at preparation. +- Do not exceed 12 checkpoints on the first pass. Authoring more is cheap in + props but adds up in records and in preparation time. diff --git a/docs/living-island/T4-smart-actions.md b/docs/living-island/T4-smart-actions.md new file mode 100644 index 0000000..0cffec1 --- /dev/null +++ b/docs/living-island/T4-smart-actions.md @@ -0,0 +1,77 @@ +# T4 — Soldiers doing something + +Read `docs/living-island/README.md` first, including the rules section. Depends on T2. + +## Goal + +The soldiers you already pay for should look busy rather than standing at a +waypoint. This adds **zero** agents — it changes behaviour, not population, and +is the cheapest immersion in the whole plan. + +## What to build + +`addons/core/Scripts/Game/ERR/ERR_SiteActivity.c`. + +Use the vanilla smart-action system: + +- `SCR_AISmartActionComponent` — sits on a world entity that offers an action; + `ReserveAction(AIAgent)`, `ReleaseAction()`, `GetOnActionEnd()`, + `GetOnActionFailed()`. +- `SCR_SmartActionWaypoint.SetSmartActionEntity(IEntity entityWithSmartAction, + string smartActionTag)` — the waypoint that sends a group member to perform it. + +Per site, author a handful of **activity slots**: a position, a tag and which +site kinds use it. When a garrison is physical and not alerted, assign idle +members to free slots; when the site is alerted or the group is in combat, +release the slots immediately and let normal AI take over. + +Sensible slots to start with, by site kind: + +- **Checkpoint:** one soldier at the barrier facing the road, one leaning + against the parked vehicle, one seated. +- **Outpost / depot:** a sentry at the gate, someone working at a crate, someone + resting. +- **Radio station:** an operator near the equipment, a sentry on the door. +- **Prison:** a guard patrolling the walkway, a guard at the gate. + +## Rules + +- Activity assignment runs on the existing site tick, not a new one, and at most + once every 5 s per site. +- Never assign more than half a garrison to activities at once; the rest hold + defensive positions. A checkpoint where everyone is smoking is worse than one + where nobody is. +- Alert state wins instantly: on perception contact, release every slot for that + site in the same tick. +- Slots are reserved so two soldiers never claim the same one; release on + action end, action failure, death, and on going dormant. +- If the vanilla smart action fails or is unavailable for a slot, fall back to a + plain hold position and log once per site — never leave a soldier idle in a + broken state. + +## Acceptance criteria + +1. Approaching a manned checkpoint, at least one soldier is performing an + activity rather than standing. +2. Firing a shot near the site causes every activity to be released and the + garrison to respond, with no soldier stuck in an animation. +3. Active agent count is unchanged by this task — assert it in the admin status + output before and after. +4. A garrison that goes dormant and returns re-acquires activities without + leaking reservations (reservation count returns to zero while dormant). +5. `python3 tools/check.py` passes. + +## Tests to write + +`tests/test_site_activity.py`: + +- The pure selection rule never assigns more than half the garrison. +- A slot already reserved is not handed to a second agent. +- Alert state returns an empty assignment set regardless of free slots. +- Release-on-dormant leaves zero reservations. + +## Do not + +- Do not write custom animation code. Use the vanilla smart-action system only. +- Do not add activity slots to the ledger records; slots are site content. +- Do not let an activity survive an alert, a death, or a dormant transition. diff --git a/docs/living-island/T5-hq-integration.md b/docs/living-island/T5-hq-integration.md new file mode 100644 index 0000000..98031b7 --- /dev/null +++ b/docs/living-island/T5-hq-integration.md @@ -0,0 +1,96 @@ +# T5 — HQ commands the ledger + +Read `docs/living-island/README.md` first, including the rules section. Depends on T1, T2. +This task is in the **ai** addon. Core must not learn about HQ. + +## Goal + +Today `ERR_HQ.Assign()` can only task groups that physically exist near a +contact. After this task, HQ tasks **ledger records** — including dormant ones +far away — so a response can come from across the map, travel virtually, and +materialise when it arrives. This is what makes the island feel coordinated +rather than reactive, and it costs nothing while the responder is off-screen. + +## What to build + +1. **A core-side interface, implemented where the ledger lives.** Add to + `ERR_ForceLedger` (core): + + ``` + int Available(vector near, float radius, out array ids); + float EstimateSeconds(int recordId, vector destination); // distance / Speed() + bool Order(int recordId, ERR_ForceDuty duty, vector target); + bool Pin(int recordId, bool pinned); + ERR_ForceKind KindOf(int recordId); + int StrengthOf(int recordId); + ``` + + These are generic force-management calls, not HQ concepts, so core owning + them does not violate the dependency direction. + +2. **HQ uses them.** In `ERR_HQ.Assign()`, replace first-fit-within-radius with a + scored choice over ledger candidates: + + ``` + score = ContactPriority(report) / max(EstimateSeconds(id, target), 1) + - CostOfLeaving(KindOf(id)) + ``` + + `CostOfLeaving` is high for a `CHECKPOINT` or a garrison at an objective and + low for a roving `PATROL`. Put this in a pure `ERR_HQTaskingRules` class so it + is testable. + +3. **Ordering a dormant record.** A dormant record receives the order through the + ledger and changes duty to `MOVE_TO`/`SEARCH`; it travels virtually and + materialises through T2's normal proximity rules when it nears players. + HQ pins the record once it is within 1 km of the contact so it cannot go + dormant mid-engagement. + +4. **Radio realism is preserved.** The existing `ERR_HQNetwork` rules apply + unchanged to **physical** units — a carrier that dies mid-transmission still + kills the message. For a dormant record, evaluate the same relay geometry + against ledger positions and the record's `radioCapability`, with the same + hop limits and latency, but without entities. Log both paths to the journal + so the two are distinguishable. + +5. **Fairness invariant, unchanged:** dormant records never observe and never + generate contacts. They only receive orders and move. Enforce it in code, not + by convention — `Observe()` must refuse a record without a physical group. + +## Acceptance criteria + +1. A contact reported near the radio station can be answered by a patrol 3 km + away, which travels while dormant and appears as real AI on arrival. +2. Checkpoint garrisons are not stripped to chase distant contacts — verify that + `CostOfLeaving` keeps them in place unless nothing else is available. +3. HQ's journal shows the ETA it used and the record it chose, so the decision is + auditable after the fact. +4. Killing the radio operator of a physical reporting unit still severs the + report, exactly as today. +5. `python3 tools/check.py` passes. + +## Also fix while you are here + +`ERR_HQUnit.Eligible()` allocates a fresh `array` on every call, and +`Assign()` calls it inside a contacts × units nested loop every 5 s. Cache the +agent array on the unit and refresh it on the network tick instead. Likewise, +replace the six linear scans over `m_Units` keyed by group (`ReserveGroup`, +`LogisticsToken`, `ReserveLogistics`, `MortarConnected`, `Downlink`, +`QueueSupplyStatus`) with a `map` lookup. + +## Tests to write + +`tests/test_hq_tasking.py`: + +- `EstimateSeconds` scales with distance and with kind speed. +- The scored choice prefers a closer patrol over a distant one at equal priority, + and prefers a distant patrol over a checkpoint garrison at equal distance. +- With only checkpoint garrisons available and a high-priority contact, one is + eventually released — the cost is a weight, not a veto. +- A dormant record refuses to produce an observation. + +## Do not + +- Do not let HQ spawn units directly. It asks the ledger; the budget decides. +- Do not add `ERR_HQ` references to core files. +- Do not remove the existing radio latency or failure handling to simplify this. diff --git a/docs/living-island/T6-ambient-signals.md b/docs/living-island/T6-ambient-signals.md new file mode 100644 index 0000000..f1ed62c --- /dev/null +++ b/docs/living-island/T6-ambient-signals.md @@ -0,0 +1,87 @@ +# T6 — Cheap signs of life + +Read `docs/living-island/README.md` first, including the rules section. Depends on T2. + +## Goal + +Sell an occupied island through things that are not soldiers. Every item here is +either a static prop, a single entity, or a timed event — none of it adds a +standing AI presence. + +Budget for this whole task: **at most 4 active agents at any time, island-wide.** + +## What to build + +`addons/core/Scripts/Game/ERR/ERR_AmbientLife.c`. + +### 1. Static occupation markers (zero CPU) + +Placed once during preparation, never ticked: + +- Parked military vehicles at sites and checkpoints. +- Crates, barrels, tents, field tables at outposts. +- At night, lit windows and lamps at occupied sites; dark at abandoned ones. + Drive the light state from the site's eliminated flag, evaluated on the + existing environment tick, not a new one. + +This alone changes how the island reads at 300 m, for nothing. + +### 2. Road traffic that exists only when watched + +A `CONVOY` ledger record: a vehicle plus 2 crew travelling a long road route. +It simulates virtually like anything else and materialises only near players. +Two convoy records island-wide is enough — the player meets traffic occasionally +and it is real when they do. + +### 3. Distant transit + +Occasionally (every 8–15 minutes, settings `ambientTransitSeconds`), a single +helicopter flies a high-altitude route across the map, well above small-arms +range, and despawns at the far edge. One vehicle, one pilot, bounded lifetime, +hard cap of one at a time. It must never route over the extraction site while +extraction is active. + +### 4. Audio and radio texture + +- Use only vanilla sound prefabs. **No audio from the original mod** — see the + licensing rules. +- Occasional distant, non-hostile gunfire near enemy sites (a training burst) is + a strong cue. Gate it hard: never within 400 m of a player, never during an + alert, at most once per 3 minutes. + +## Rules + +- Everything in this task is skippable: if the budget is full or the mission is + in a terminal phase, ambient life is the first thing dropped. +- One tick, ≥ 10 s, shared by all ambient features. No feature gets its own timer. +- Every ambient entity is owned and tracked so `Stop()` removes all of it. Nothing + here may survive a restart — the repo already had restart-cleanup work; do not + regress it. +- Ambient units are `SCR_EAISpawnImportance.LOW` so they lose the budget contest + first. + +## Acceptance criteria + +1. Standing still in open terrain for 10 minutes, a player sees or hears at least + two distinct signs of occupation. +2. Ambient features contribute at most 4 active agents at any moment, verified in + the admin status output. +3. Restarting the mission leaves no ambient entity behind. +4. No ambient event fires during extraction over the extraction site. +5. `python3 tools/check.py` passes. + +## Tests to write + +`tests/test_ambient_life.py`: + +- The gating rule refuses a transit while one is already active, during a + terminal phase, and when the agent budget is full. +- The gunfire rule refuses within 400 m of a player and inside the cooldown. +- The ownership list is emptied by `Stop()`. + +## Do not + +- Do not add civilians in this task. A civilian population is a separate, much + larger piece of work with its own budget. +- Do not spawn ambient AI that patrols indefinitely; ambient means bounded. +- Do not reuse any audio, particle or composition asset from the original mod. diff --git a/docs/living-island/T7-performance.md b/docs/living-island/T7-performance.md new file mode 100644 index 0000000..6b763f9 --- /dev/null +++ b/docs/living-island/T7-performance.md @@ -0,0 +1,68 @@ +# T7 — Budget enforcement, metrics and anti-thrash + +Read `docs/living-island/README.md` first, including the rules section. Depends on T1–T6. + +## Goal + +Prove the living island stays inside its CPU budget, and make it obvious when it +does not. Without this task the rest is a plausible design with no evidence. + +## What to build + +1. **A metrics surface.** `addons/core/Scripts/Game/ERR/ERR_ForceMetrics.c`: + + - active agents, physical records, dormant records, refused spawns + - state flips in the last minute (the thrash indicator) + - simulation tick duration, presence tick duration (min / mean / max) + - budget headroom, and how long the budget has been saturated + + Expose through the existing admin menu and `ERR_HQ.Event` journal (ai side). + Reuse `ERR_AdminProvider`; do not build a new UI. + +2. **Thrash guard.** If any record flips state more than twice per minute, widen + that record's hysteresis bands automatically and log it. Repeated flipping is + the failure mode that turns this design from a saving into a cost. + +3. **Saturation policy.** When the budget stays full for more than 60 s, shed + load in a defined order and log each step: + `ambient (T6)` → `distant patrols` → `checkpoint garrisons beyond 1.5 km` → + never shed: objective garrisons, HQ-pinned records, anything in combat. + +4. **Tick cost discipline.** Measure the simulation and presence ticks. If either + exceeds its allowance (2 ms simulation, 3 ms presence) for 5 consecutive + ticks, halve the records processed per tick by increasing the stagger, and log. + Degrade smoothly rather than stuttering. + +5. **A measured comparison.** Extend the existing performance-comparison tooling + (`docs/performance-comparison.md`) with a living-island run: same route, same + duration, ledger enabled versus disabled. Record active agents and frame time. + This is the number that decides whether the design worked. + +## Acceptance criteria + +1. A 20-minute session with a player driving the full route keeps active agents + at or under `activeAgentBudget` at every sample. +2. Total state flips across all records stay under 2 per minute on average. +3. Simulation and presence ticks stay inside their allowances at 128 records. +4. The shed order is observable in the journal when the budget saturates. +5. The comparison run is recorded with real numbers, and the write-up states + plainly whether frame time improved, stayed flat, or regressed. +6. `python3 tools/check.py` passes. + +## Tests to write + +`tests/test_force_metrics.py`: + +- The thrash guard widens bands after the third flip inside a minute. +- The shed order never selects a pinned, in-combat or objective record, even when + everything else has already been shed. +- The tick-cost governor increases stagger after 5 consecutive overruns and + restores it after sustained headroom. + +## Reporting rules + +Follow the repo's evidence discipline. State which numbers came from a real +Workbench or server run and which came from scripted fixtures. If the comparison +was not run in the real game, say so in the write-up rather than implying it was. +A regression that is reported honestly is more useful than an improvement that is +not reproducible. diff --git a/docs/living-island/T8-hq-memory.md b/docs/living-island/T8-hq-memory.md new file mode 100644 index 0000000..0497ca3 --- /dev/null +++ b/docs/living-island/T8-hq-memory.md @@ -0,0 +1,117 @@ +# T8 — HQ memory: belief, not a 2-minute cache + +Read `docs/living-island/README.md` first, including the rules section. +This task is in the **ai** addon. Depends on T5. + +## The problem + +`ERR_HQ.Tick()` deletes every contact older than `ERR_MissionRules.ContactFresh` +(120 s), and `m_Contacts` is a flat array capped at 64. After two quiet minutes +HQ knows *nothing*. There is no record that a break happened, no last known +heading, no memory of which ground has already been searched. Velocity +extrapolation between two reports under 30 s apart is the only inference in the +system. + +A commander's main asset is an accumulated picture. HQ currently has a sliding +window. Everything that makes the enemy feel like a thinking opponent — sweeping +outward from a last sighting, cutting off a route, giving up on cleared ground — +is impossible without this task. + +## What to build + +`addons/ai/Scripts/Game/ERR/ERR_HQBelief.c`, with the usual split: a pure rule +class and the service that applies it. + +``` +class ERR_HQBeliefRules +{ + static float Confidence(float ageSeconds, float halfLife); // decays, never deletes + static float Radius(float ageSeconds, float growthPerSecond, float floor); + static bool Supersedes(float newConfidence, float oldConfidence, float distance); + static bool Actionable(float confidence, float radius); // worth tasking against + static int SweepCell(...); // next unsearched cell, nearest-first outward +} + +class ERR_HQBelief { ... } +``` + +### Contacts decay, they do not vanish + +Replace deletion with decay. A belief holds position, observation time, +confidence, an estimated heading, and the report that produced it. + +- Confidence falls on a half-life (`beliefHalfLifeSeconds`, default 600). +- **Uncertainty grows into a radius.** A contact 4 minutes old is not a point — + it is a circle the target could have reached, expanding at + `beliefRadiusGrowth` (default 1.2 m/s, roughly walking pace, faster if the last + sighting was in a vehicle). This single value is what lets HQ search *an area* + instead of chasing a stale pixel. +- Beliefs become useless by growing wide and faint, not by being deleted. Retire + one only when its radius exceeds a cap (default 2000 m) or a newer belief + supersedes it. +- Cap at 64 beliefs; merge rather than duplicate when a new report lands inside + an existing belief's radius. + +### Searched ground + +A coarse coverage grid, 500 m cells, each holding "last swept at" and "swept by". +A unit that completes a search waypoint marks its cells. HQ uses this to sweep +*outward* from a last sighting instead of re-walking ground it already cleared. +Cells decay back to unswept over `coverageDecaySeconds` (default 900) — ground +cleared twenty minutes ago is not cleared now. + +### Objective threat + +Per objective, a standing threat score from nearby beliefs plus **route +inference**: escapists need a radio and then a helicopter, so the radio station +and the helipad carry standing weight even with no contacts at all. This is the +plot of the mission, and HQ is allowed to know its own doctrine — it is not +allowed to know where the players are. + +### The fairness rule, enforced in code + +Belief is fed **only** by reports delivered through the radio network. Never by +player positions, never by a dormant record, never by a direct world query. +Write the ingest path so there is exactly one entry point and it takes a +delivered `ERR_HQReport`. If a report never arrives because its carrier was +killed, HQ never learns it — that is the whole design. + +## Wiring + +- `ERR_HQ` owns the belief service and feeds it from `Accept()`. +- `Assign()` (T5) tasks against beliefs rather than raw contacts. +- The journal writes belief changes at a coarse level: new belief, superseded, + retired, area swept. Not every decay tick. + +## Acceptance criteria + +1. Ten minutes after the last sighting, HQ still knows roughly where to look and + its search area has grown accordingly — it does not behave as though nothing + ever happened. +2. A unit that sweeps an area marks it; the next search order goes to adjacent + unswept ground, not the same cells. +3. With no contacts at all, the radio station and helipad still carry threat and + still attract garrisons. +4. Killing the reporting unit's radio operator prevents the belief from ever + forming — verified, not assumed. +5. Belief count stays capped and merges correctly under a burst of reports. +6. `python3 tools/check.py` passes. + +## Tests to write + +`tests/test_hq_belief.py`: + +- `Confidence` halves over the configured half-life and never returns negative. +- `Radius` at t=0 equals the floor and grows linearly; a vehicle sighting grows faster. +- `Supersedes` prefers a fresh nearby report over a stale wide one, and refuses + to replace a high-confidence belief with a distant low-confidence one. +- `SweepCell` returns nearest-first outward and never returns a cell swept + within the decay window. +- `Actionable` refuses a belief whose radius has outgrown the cap. + +## Do not + +- Do not delete beliefs on a timer. Decay is the mechanism. +- Do not let anything except a delivered report write into belief. +- Do not run belief decay per frame; recompute confidence and radius on read + from the stored timestamp. There is no decay tick at all. diff --git a/docs/living-island/T9-pursuit.md b/docs/living-island/T9-pursuit.md new file mode 100644 index 0000000..286b075 --- /dev/null +++ b/docs/living-island/T9-pursuit.md @@ -0,0 +1,127 @@ +# T9 — Pursuit: alert states, hunting, air search and cordons + +Read `docs/living-island/README.md` first, including the rules section. +Depends on T5 and T8. Belief (T8) must exist — you cannot hunt what you do not +remember. + +## The problem + +An occupied island is not a hunting island. Today HQ answers a sighting with one +`AIWaypoint_SearchAndDestroy` at a predicted position, and releases the unit the +moment it perceives anything. Nothing tracks a fleeing player, nothing searches +from the air, nothing cuts a route. This task is where the pressure comes from. + +## 1. Alert state + +Per sector (reuse the 500 m coverage grid, grouped into ~2 km sectors): + +| State | Trigger | Behaviour | +| --- | --- | --- | +| `CALM` | default | Garrisons hold, patrols run routes | +| `ALERTED` | a belief forms in the sector | Patrols tighten toward it, checkpoints check harder | +| `HUNTING` | actionable belief, confidence above threshold | Hunters dispatched, air search eligible | +| `CORDON` | high confidence and a known direction of travel | Chokepoints blocked between the contact and its likely objective | + +States decay downward on `alertDecaySeconds` (default 420) without new reports. +Escalation is the pacing dial for the whole mission — it is what makes the island +feel like it is closing in, and what lets it relax when the player breaks contact. + +## 2. Hunting on the ground + +Dispatch at most `huntMaxUnits` (default 3) against one belief. Hunters sweep the +**uncertainty circle**, not a point: take the nearest unswept cells from T8's +coverage grid and issue search waypoints outward from the last sighting. + +- A hunter that completes its sweep reports back — "area searched, nothing found" + — which marks the cells and lowers that belief's confidence. **HQ must be able + to learn that a search failed.** Today it cannot, and that is a core defect. +- Do not release the assignment the instant a unit perceives something. Combat + suspends the sweep; when combat ends the sweep resumes or is re-tasked. +- A belief that has been swept out returns the sector to `ALERTED`, then `CALM`. + +## 3. Air search — the hunter helicopter + +This is a **separate role from transport**. One at a time +(`airSearchConcurrent`, default 1), drawn from the same aircraft pool, so a +helicopter searching is a helicopter not lifting troops. + +- Flies a search pattern (expanding box or lane search) over the belief's + uncertainty circle at low altitude, using the existing `ERR_AircraftService` + through the same provider interface as air lift. +- It observes under the **normal fairness rules** — `ERR_HQObservation` line of + sight, exposure and distance gating apply to its crew exactly as to a foot + patrol. A helicopter sees more because it is high and moving, not because it + cheats. +- It reports by radio like any other unit. Shooting it down denies HQ its best + sensor, and the loss is permanent from the pool. +- Fuel/endurance cap (`airSearchSeconds`, default 420) then it returns to + staging. An unlimited eye in the sky is oppressive and expensive. + +## 4. Cordons + +When a sector reaches `CORDON`, place up to `cordonChokepoints` (default 4) +blocking positions **between the belief and the objective it is probably heading +for** — bridges, road junctions, ridge saddles. Not on top of the player. + +Cordon positions are authored chokepoints on the site map, selected by which ones +lie on plausible routes from the belief to the radio station or helipad. This is +the payoff of the staleness problem: HQ knows its picture is old, so it blocks +where the player must pass rather than chasing where the player was. + +## 5. Pacing — this decides whether the mission is fun or miserable + +Players start with nothing. Unbounded pressure is not difficulty, it is a +cutscene about dying. Enforce all of these: + +- **Never materialise a hunter within `minHunterSpawnMetres`** (default 700) of + any player. No unit ever appears close enough to feel teleported in. +- **No convergence from all sides.** Hunters approach from at most two bearings; + leave an escape vector open. A closing ring with no gap is a death sentence. +- **Cooldown after contact is lost** (`huntCooldownSeconds`, default 180) before + a fresh hunt on the same belief. Breaking contact must be rewarded. +- **Hunting spends the pool.** Sections hunting are not garrisoning; if HQ + commits hard to a hunt, its checkpoints thin and routes open elsewhere. Do not + paper over this — it is the strategic trade that makes the system a game rather + than a pressure dial. +- Night reduces air search effectiveness and sighting range; it should be the + player's window. + +## Acceptance criteria + +1. Being seen and then breaking contact produces a visible search: units sweeping + outward from where you were, a helicopter overhead, and then — if you stay + hidden and still — the search moving away and the sector calming down. +2. A failed sweep lowers confidence; HQ does not re-search the same cells. +3. The hunter helicopter spots players only under the same LOS/exposure rules as + infantry; destroying it measurably degrades HQ's picture. +4. A cordon appears between the player and the objective, not around the player's + exact position. +5. No hunter ever materialises within 700 m of a player, and hunters never + approach from more than two bearings at once. +6. Heavy hunting visibly thins garrisons elsewhere — verify by checking a + checkpoint's strength during a major hunt. +7. Active agents stay inside `activeAgentBudget` throughout. +8. `python3 tools/check.py` passes. + +## Tests to write + +`tests/test_pursuit.py`: + +- Alert escalation and decay: state rises with confidence and falls after the + decay window with no new reports. +- Hunter dispatch respects `huntMaxUnits`, the cooldown, and the minimum spawn + distance. +- Bearing rule: given four candidate hunters around a belief, at most two + distinct approach bearings are selected and an escape vector remains. +- Cordon selection picks chokepoints on the belief→objective path, never the + belief's own cell. +- Air search respects concurrency and endurance, and returns to staging on + timeout. + +## Do not + +- Do not give hunters or the search helicopter any knowledge the fairness rules + would not produce. The pressure must come from good search, not from cheating. +- Do not stack hunts on multiple beliefs simultaneously beyond the unit cap. +- Do not let the cordon seal every route. There is always a way through; it + should be slow, exposed or unpleasant, never absent. diff --git a/docs/medical-kit-teardown-ownership.md b/docs/medical-kit-teardown-ownership.md index 6e38f1c..74a5adc 100644 --- a/docs/medical-kit-teardown-ownership.md +++ b/docs/medical-kit-teardown-ownership.md @@ -27,7 +27,7 @@ If ownership is established, the narrow implementation should track spawned **st ## Isolated diagnostic extension -The only code change in this handoff is `addons/core/Scripts/Game/ERR/ERR_NativeStationTeardownDiagnostic.c`, extending the existing WORKBENCH-only opt-in diagnostic. Use existing `--station-teardown-diagnostics` / `-errStationTeardownDiag 1` activation. It still invokes unchanged super in DelayedInit, OnDelete and InitValidSetup, and leaves all native errors visible. +The only code change in this handoff is `addons/core/Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c`, extending the existing WORKBENCH-only opt-in diagnostic. Use existing `--station-teardown-diagnostics` / `-errStationTeardownDiag 1` activation. It still invokes unchanged super in DelayedInit, OnDelete and InitValidSetup, and leaves all native errors visible. At native DelayedInit it captures scalar/string evidence: whether initialization was observed, successor mode present, owner world equals the current game world, whether the site service knows that exact owner, inventory-slot presence, and parent prefab. It prints at most 64 initialization records. Teardown's existing maximum 64 records gain those initial facts plus current world/site/inventory/parent observations. It stores no new entity/manager references and schedules no work. `initSiteOwned=false` alone does not prove permanent nonownership; an item could be adopted later. Likewise absence of GameMode at delete makes current ownership unavailable, so the initialization and world evidence must be interpreted together. diff --git a/docs/migration-provenance.json b/docs/migration-provenance.json index 1980151..f9acf26 100644 --- a/docs/migration-provenance.json +++ b/docs/migration-provenance.json @@ -2,151 +2,151 @@ { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_HQNetwork.c", "sha256": "1a7e279b050514bad86f18fdd233b7eb5728e99bab3daae3aedb31ceb571c271", - "destination": "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c", "changes": "New namespace; HQ network uses successor actor/faction interfaces; separate log file." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_HQJournal.c", "sha256": "0d714bc60940898dac560ee0902997ca82e324395dc2696c6424909a0a587c81", - "destination": "addons/ai/Scripts/Game/ERR/ERR_HQJournal.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c", "changes": "New namespace; HQ network uses successor actor/faction interfaces; separate log file." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_HelicopterAvailability.c", "sha256": "bb565c5c5f7d4e671a295ae7e951f9ebdde626ffdecc4ae7d92e0e776e1730e0", - "destination": "addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c", "changes": "New namespace; HQ network uses successor actor/faction interfaces; separate log file." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_MortarPrediction.c", "sha256": "b58d9ea6e211fc479a1674c380be4979ebacf46d14facae74257aa0937b6cd49", - "destination": "addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c", "changes": "New namespace; HQ network uses successor actor/faction interfaces; separate log file." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_MortarSalvo.c", "sha256": "f0235c4516eebd03e5721d259dabcb516a4e457e9909a1b8bb08553a0f7bc652", - "destination": "addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c", "changes": "New namespace; HQ network uses successor actor/faction interfaces; separate log file." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_HQObservation.c", "sha256": "735611603dbfa80218a42c6722dda09a3de8c7369aa5689cb8cb711851ede6dd", - "destination": "addons/ai/Scripts/Game/ERR/ERR_HQObservation.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c", "changes": "New namespace; HQ network uses successor actor/faction interfaces; separate log file." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_HQ.c", "sha256": "4898ac471fb16433fc5d98244a8cec89c5e8e006af2c94bbcd89113a2b7107c8", - "destination": "addons/ai/Scripts/Game/ERR/ERR_HQReport.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c", "changes": "Only radio inventory capability and report snapshot classes migrated." }, { "source": "escapists-map/Scripts/Game/EscapistsMap/ESM_SharedMapComponent.c", "sha256": "26201b9d2b04986b9684be81dff47200a631d8cd01b57e96788a153fb56e6b4d", - "destination": "addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c", + "destination": "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c", "changes": "Namespaced types, paths and resource identities; explicit shared map item only." }, { "source": "escapists-map/Materials/ESM_MapRenderTarget.emat", "sha256": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", - "destination": "addons/map/Materials/ERRM_MapRenderTarget.emat", + "destination": "addons/core/Materials/ERRM_MapRenderTarget.emat", "changes": "Namespaced types, paths and resource identities; explicit shared map item only." }, { "source": "escapists-map/Materials/ESM_MapRenderTarget.emat.meta", "sha256": "f46a7255d51af1b43d9f9fd8e884640fed9e87a610a8eac1778e27cc2c262e5a", - "destination": "addons/map/Materials/ERRM_MapRenderTarget.emat.meta", + "destination": "addons/core/Materials/ERRM_MapRenderTarget.emat.meta", "changes": "Namespaced types, paths and resource identities; explicit shared map item only." }, { "source": "escapists-map/UI/layouts/EscapistsMap/SharedMapRenderTarget.layout", "sha256": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", - "destination": "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout", + "destination": "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout", "changes": "Namespaced types, paths and resource identities; explicit shared map item only." }, { "source": "escapists-map/UI/layouts/EscapistsMap/SharedMapRenderTarget.layout.meta", "sha256": "3311c3d2163fa0a59eb98ca07cdf79814f1d5131e95231a0a49783e8dc455cf7", - "destination": "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta", + "destination": "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta", "changes": "Namespaced types, paths and resource identities; explicit shared map item only." }, { "source": "escapists-map/Prefabs/Items/Equipment/ESM_SharedFieldMap.et", "sha256": "8c0cdcf3e3af96eac710c75ccc54a7bbcb6713caf76a63a58f5519c009e747f7", - "destination": "addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et", + "destination": "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et", "changes": "Namespaced types, paths and resource identities; explicit shared map item only." }, { "source": "escapists-map/Prefabs/Items/Equipment/ESM_SharedFieldMap.et.meta", "sha256": "33457ec2ead243640e57dc12c969be0d59923455f89669024e50998f63cca690", - "destination": "addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta", + "destination": "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta", "changes": "Namespaced types, paths and resource identities; explicit shared map item only." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_MortarSystem.c", "sha256": "b355227b2b221147d35e1dacbc07cf650838229b9a6d22cd30cc1e304112b33f", - "destination": "addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c", "changes": "Only physical battery lifecycle, finite inventory, native activity and projectile accounting; successor creates authored group and gun. Original deployment and scheduler replaced." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_MortarFiring.c", "sha256": "aadd057a1f3f4326bd41500be7a12051a16de9d5925fca2452a46cdfbf0d6d12", - "destination": "addons/ai/Scripts/Game/ERR/ERR_MortarFiring.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarFiring.c", "changes": "Native ballistic and final loading hooks migrated; successor HQ-delivered snapshots gate firing." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_SettlementSafety.c", "sha256": "6961ad593d20f86c30b557542b4f67fd44d9579037776b07cd95616927eda83d", - "destination": "addons/ai/Scripts/Game/ERR/ERR_SettlementSafety.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c", "changes": "Use vanilla named settlements; original mission location dependency removed." }, { "source": "escapists-ai/Scripts/Game/EscapistsAI/EAI_HQ.c", "sha256": "4898ac471fb16433fc5d98244a8cec89c5e8e006af2c94bbcd89113a2b7107c8", - "destination": "addons/ai/Scripts/Game/ERR/ERR_HQObservation.c", + "destination": "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c", "changes": "Adapt least-recently-sent visible-contact selection to a per-squad bounded identity history; queued radio attempts rotate priority without retaining positions or changing delivery authority." }, { "source": "escapists-intel/Scripts/Game/EscapistsIntel/EI_IntelService.c", "sha256": "0009786c543c2758dcd55d3d6936feca5641dd4c4b2ff820564a38815e4cca57", - "destination": "addons/intel/Scripts/Game/ERR/ERR_IntelReroll.c", + "destination": "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c", "changes": "Adapt administrator reroll behavior: captured registered-enemy cohort/chance, bounded native inventory work and preserved player discoveries. Successor uses its own discovery ledger and retains retired spent folders for round cleanup instead of delayed world deletion." }, { "source": "escapists-intel/Scripts/Game/EscapistsIntel/EI_IntelService.c", "sha256": "0009786c543c2758dcd55d3d6936feca5641dd4c4b2ff820564a38815e4cca57", - "destination": "addons/intel/Scripts/Game/ERR/ERR_IntelService.c", + "destination": "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c", "changes": "Adapt reroll entry/status integration, accepted native-operation handling and one-roll lifecycle to successor registration/tick/stop interfaces; no original base dependencies." }, { "source": "escapists-intel/Scripts/Game/EscapistsIntel/EI_IntelService.c", "sha256": "0009786c543c2758dcd55d3d6936feca5641dd4c4b2ff820564a38815e4cca57", - "destination": "addons/intel/Scripts/Game/ERR/ERR_IntelDiscoveryFeedback.c", + "destination": "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c", "changes": "Adapt team discovery notification behavior using successor location events, bounded coalescing and rough-location secrecy." }, { "source": "escapists-intel/Scripts/Game/EscapistsIntel/EI_IntelLifecycle.c", "sha256": "7a987c65f0ec10ddcc138785409e370b9c1cc6abbda48027b7406459b42d00a9", - "destination": "addons/intel/Scripts/Game/ERR/ERR_IntelDiscoveryFeedback.c", + "destination": "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c", "changes": "Adapt native reliable discovery message transport to successor game-mode RPC with per-round local/broadcast deduplication; existing Core briefing retained." }, { "source": "escapists-chat/Scripts/Game/EscapistsChat/ECHAT_AdminCommands.c", "sha256": "2d69b740298650aca6be2f45785ae016b4087c3688525c0c3f5b50b680d2c9e6", - "destination": "addons/core/Scripts/Game/ERR/ERR_AdminSession.c", + "destination": "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c", "changes": "Adapt private authenticated command routing, journal paging/live feed and admin lifecycle into a per-controller Core service, with explicit mission scope and throttles." }, { "source": "escapists-chat/Scripts/Game/EscapistsChat/ECHAT_AdminCommands.c", "sha256": "2d69b740298650aca6be2f45785ae016b4087c3688525c0c3f5b50b680d2c9e6", - "destination": "addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c", + "destination": "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c", "changes": "Adapt current-admin equipment and god commands. Use vanilla deposits with completion callbacks; restore exact previous native damage flag instead of importing the periodic heal loop or patched clothing." }, { "source": "escapists-chat/Scripts/Game/EscapistsChat/ECHAT_AdminMenu.c", "sha256": "a50694429991ed0f00f310654142679e0d875babc721f0163fc3afa929ead7d8", - "destination": "addons/core/Scripts/Game/ERR/ERR_AdminMenu.c", + "destination": "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c", "changes": "Adapt native menu lifecycle, preserved drafts, server snapshots and bounded HQ journal presentation into a Core-owned dialog; expose only implemented successor settings." }, { diff --git a/docs/multiplayer-prefab-ids.md b/docs/multiplayer-prefab-ids.md new file mode 100644 index 0000000..62b8881 --- /dev/null +++ b/docs/multiplayer-prefab-ids.md @@ -0,0 +1,48 @@ +# RKS #2 replication kick, 2026-09-20 + +The client connected to RKS #2 with Workshop version 0.0.1 and failed at +13:59:59 local time. Its log names Patrol, SupplySite, Radio and Extraction: +the server's root entity ID does not exist in the client's copy of the prefab. +The final kick is `REPLICATION / SYSTEM_FAILURE`. + +SSH inspection of `RKSserver201` confirmed the game process remained running, +the mission was `{C1E20667DCE324ED}Missions/ERR_Everon.conf`, and the installed +mod was `2528466DE220D91C`. AMP recorded successful BattlEye RCON login after +the corrected mission started; its logs did not record the client-side kick. +Client and server SHA-256 hashes matched for `data.pak`, `addon.gproj` and +`resourceDatabase.rdb`. The old package's `data.pak` hash was +`fa63eb4214133b55dd24d527e8654f42a9dc8599a8f9369808804b2f52fb5f97`. + +Nineteen authored prefabs lacked a serialized root `ID`. Each now has a fixed, +nonzero 64-bit ID in the prefab source. The shared field map already had one +and remains unchanged. Existing child IDs, component IDs and resource GUIDs +remain unchanged. `tools/check.py` now rejects missing or duplicate root IDs; +the regression also rejects child-only IDs, malformed IDs and zero IDs. + +`python3 tools/check.py` passes all repository checks, including the new identity +regression. An initial `core/victory` Workbench attempt loaded the new prefabs +but hit the obsolete assertion that no companion HQ/support controller is loaded. +That isolation assumption no longer holds for the merged project. Its runner also +reported a transient process-classification failure during cleanup; a subsequent +prefix-idle check passed. This attempt is not counted as passing native evidence. + +The subsequent combined `chat/hq-memory` fixture completed with 101 passed +assertions, no script/runtime failures, unchanged source and confirmed cleanup. +The [archived report](evidence/native-2026-09-20-prefab-ids/report.json) retains +the four existing RHS/WCS localization errors, so its strict overall native +verdict remains failed. This verifies local loading and scripted gameplay with +the new IDs, not a remote multiplayer join. + +## Apply the update + +1. Reopen `addons/core/addon.gproj` in Workbench to reload the changed resources. +2. Publish an update to the existing Workshop item `2528466DE220D91C`, using + version `0.0.2` and [the prepared changelog](../publishing/changelog-0.0.2.txt). +3. Stop RKS #2, update/download the Workshop mod, and start it again. Keep the + current mission ID and Workshop item ID. +4. Update the client mod and join again. Confirm both sides use the new version, + then check for the previous prefab-ID errors and test reconnect/late join. + +Saving IDs in local source does not change the existing Workshop package. +A successful join with the updated package is still required to verify the +multiplayer fix. diff --git a/docs/native-casualty-remove.md b/docs/native-casualty-remove.md index 637b588..2222b26 100644 --- a/docs/native-casualty-remove.md +++ b/docs/native-casualty-remove.md @@ -20,7 +20,7 @@ The pre-removal isolated extraction check counts the seated casualty. Post-remov Merge: -- New `addons/core/Scripts/Game/ERR/ERR_NativeCasualtyRemoveProbe.c`. +- New `addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c`. - New `tests/test_casualty_remove_probe.py`. - Core smoke and the hidden runner expose `casualty-remove`; base-probe exit hooks preserve the earlier independent `casualty-bench` mechanism case. - This note may become `docs/native-casualty-remove.md`. diff --git a/docs/native-followup-snapshot.json b/docs/native-followup-snapshot.json index 689dac7..38d7c54 100644 --- a/docs/native-followup-snapshot.json +++ b/docs/native-followup-snapshot.json @@ -5,19 +5,19 @@ "initial_player_spawn": "passed", "full_escape": "not tested", "source_sha256": { - "addons/ai/Scripts/Game/ERR/ERR_HQ.c": "953d1a083c2828b11f927e29b6d3c482aaceca228126bc87e4322caa09a28285", - "addons/ai/Scripts/Game/ERR/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", - "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c": "92ff2caca52e94c2cc9642dfc8509ce6e9349b257012bade8650bace9231128c", - "addons/ai/Scripts/Game/ERR/ERR_HQObservation.c": "36c978ec5f052213ac1236e1398d85063efbfd7ef60fe04f1fc11447fefe1d68", - "addons/ai/Scripts/Game/ERR/ERR_HQReport.c": "5371fd6a4d9b0270420c9ad2d56d4623cc5dae834cc1fa9214ceba7fb1ae7129", - "addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", - "addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c": "470dd196ed64800c697d24c09d1344bacd2502587fac76af4ee0edae2563092d", - "addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "953d1a083c2828b11f927e29b6d3c482aaceca228126bc87e4322caa09a28285", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "92ff2caca52e94c2cc9642dfc8509ce6e9349b257012bade8650bace9231128c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "36c978ec5f052213ac1236e1398d85063efbfd7ef60fe04f1fc11447fefe1d68", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "5371fd6a4d9b0270420c9ad2d56d4623cc5dae834cc1fa9214ceba7fb1ae7129", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "470dd196ed64800c697d24c09d1344bacd2502587fac76af4ee0edae2563092d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", "addons/ai/addon.gproj": "5f559db8f526700db11e6ae763f5245f19b7006fc68c56e4c09fb6f940bdf2a1", - "addons/chat/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", - "addons/chat/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", - "addons/chat/Scripts/Game/ERR/ERR_AdminCommands.c": "618f17cbe62d5d68a310876e64920903d5d1a93814c81f7666f3a99fdefae38a", - "addons/chat/Scripts/WorkbenchGame/ERR/ERR_ValidateWorldPlugin.c": "1471d018ddc6202175fee1d7fcf6087d9eb605dd9303c94b4cb55a4eff38125b", + "addons/core/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "618f17cbe62d5d68a310876e64920903d5d1a93814c81f7666f3a99fdefae38a", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "1471d018ddc6202175fee1d7fcf6087d9eb605dd9303c94b4cb55a4eff38125b", "addons/chat/addon.gproj": "ea1587e0174cf795334d306c71d99b06797fc891427cd57b6cab6e21cf0e4e0e", "addons/core/Prefabs/ERR/Extraction.et": "d95d311de0231cf669440a10ef3d68014b70067e50b8bdfb05db637cfc7ed628", "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", @@ -29,31 +29,31 @@ "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", "addons/core/Prefabs/ERR/Radio.et": "5dd128f2bb0161830b201a415a160714871cc80d16029b84df5cecae2d361929", "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", - "addons/core/Scripts/Game/ERR/ERR_Actions.c": "adf93245e6d78c59b9839599d157a0d2b2b93ea93b3d1ae52e2904dd6c288266", - "addons/core/Scripts/Game/ERR/ERR_Actors.c": "17ec4e87858ba87175d890b2a6150f655378afe90e1d7cc3605bb16b5fc3b477", - "addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c": "1989948bf7658011e716820da80fbdd53880817a020a3055f4059fb5b233d62f", - "addons/core/Scripts/Game/ERR/ERR_GameMode.c": "6f2983cf2c5c411999a61e87be720b43658e79dee59cd1bc165be29dc9374f25", - "addons/core/Scripts/Game/ERR/ERR_Location.c": "7e6fa49a458643998ea26b0a9fa499670bbe998fc660301a6186f7dd2977c14a", - "addons/core/Scripts/Game/ERR/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", - "addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c": "7d4395aed4ef3b565435984d28db62771c0567cb913c13f2e5ec27d07735f008", - "addons/core/Scripts/Game/ERR/ERR_Settings.c": "349d0d9c5c13bd4dd528681180c78fa612418de2351030a002bab195ce981b7e", - "addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c": "6c3588569c7207930642a69ffc48c5fd0c18236afe0bd3575ffd55627c2d243c", - "addons/core/Scripts/Game/ERR/ERR_Supplies.c": "f39e7f534e6f306b3d8991187800f3a9a74b5771c505c05144439ef6f331eefb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "adf93245e6d78c59b9839599d157a0d2b2b93ea93b3d1ae52e2904dd6c288266", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "17ec4e87858ba87175d890b2a6150f655378afe90e1d7cc3605bb16b5fc3b477", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "1989948bf7658011e716820da80fbdd53880817a020a3055f4059fb5b233d62f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "6f2983cf2c5c411999a61e87be720b43658e79dee59cd1bc165be29dc9374f25", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "7e6fa49a458643998ea26b0a9fa499670bbe998fc660301a6186f7dd2977c14a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "7d4395aed4ef3b565435984d28db62771c0567cb913c13f2e5ec27d07735f008", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "349d0d9c5c13bd4dd528681180c78fa612418de2351030a002bab195ce981b7e", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "6c3588569c7207930642a69ffc48c5fd0c18236afe0bd3575ffd55627c2d243c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "f39e7f534e6f306b3d8991187800f3a9a74b5771c505c05144439ef6f331eefb", "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", "addons/core/Worlds/ERR_Everon_Layers/default.layer": "f1a058bd315c7d01d464715ac9f4e18ae3d2432551d094a9afbd4c9c5a2a9416", "addons/core/addon.gproj": "231274e6b62302f32c65f9ff31de2ce8a9e51e1c8d12c87deeec82ae1f40de46", - "addons/intel/Scripts/Game/ERR/ERR_IntelService.c": "ff8d49d9d662834125f51a55f375918d8c3212e0a1a660234e454bdf7213b7b5", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "ff8d49d9d662834125f51a55f375918d8c3212e0a1a660234e454bdf7213b7b5", "addons/intel/addon.gproj": "d0ced242cefb220a5cccd6779d61fda9bc55581701b9f78bcf13c09d92ddbcbe", - "addons/map/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", - "addons/map/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", - "addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", - "addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", - "addons/map/Scripts/Game/ERR/ERR_DiscoveryMap.c": "ee9be2d313488224b3d52853e3fbe36bb225611d6a69c628b2a6a8efca8fc104", - "addons/map/Scripts/Game/ERR/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", - "addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c": "ac7c2b72596bd655a389d4b9fdf7448e94cca137c009388eab0db1a9365ded02", - "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", - "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/30_Map/ERR_DiscoveryMap.c": "ee9be2d313488224b3d52853e3fbe36bb225611d6a69c628b2a6a8efca8fc104", + "addons/core/Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "ac7c2b72596bd655a389d4b9fdf7448e94cca137c009388eab0db1a9365ded02", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", "addons/map/addon.gproj": "1b371e5e01ea9fa46e76570fecb8aaa3a9298e34cba7ccca8a6bdb5ca86eb46a" } } diff --git a/docs/native-initial-snapshot.json b/docs/native-initial-snapshot.json index 4b4af7e..dc10142 100644 --- a/docs/native-initial-snapshot.json +++ b/docs/native-initial-snapshot.json @@ -4,19 +4,19 @@ "prison_phase_start": "passed", "full_escape": "not tested", "source_sha256": { - "addons/ai/Scripts/Game/ERR/ERR_HQ.c": "953d1a083c2828b11f927e29b6d3c482aaceca228126bc87e4322caa09a28285", - "addons/ai/Scripts/Game/ERR/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", - "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c": "92ff2caca52e94c2cc9642dfc8509ce6e9349b257012bade8650bace9231128c", - "addons/ai/Scripts/Game/ERR/ERR_HQObservation.c": "36c978ec5f052213ac1236e1398d85063efbfd7ef60fe04f1fc11447fefe1d68", - "addons/ai/Scripts/Game/ERR/ERR_HQReport.c": "5371fd6a4d9b0270420c9ad2d56d4623cc5dae834cc1fa9214ceba7fb1ae7129", - "addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", - "addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c": "470dd196ed64800c697d24c09d1344bacd2502587fac76af4ee0edae2563092d", - "addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "953d1a083c2828b11f927e29b6d3c482aaceca228126bc87e4322caa09a28285", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "92ff2caca52e94c2cc9642dfc8509ce6e9349b257012bade8650bace9231128c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "36c978ec5f052213ac1236e1398d85063efbfd7ef60fe04f1fc11447fefe1d68", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c": "5371fd6a4d9b0270420c9ad2d56d4623cc5dae834cc1fa9214ceba7fb1ae7129", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "470dd196ed64800c697d24c09d1344bacd2502587fac76af4ee0edae2563092d", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", "addons/ai/addon.gproj": "5f559db8f526700db11e6ae763f5245f19b7006fc68c56e4c09fb6f940bdf2a1", - "addons/chat/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", - "addons/chat/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", - "addons/chat/Scripts/Game/ERR/ERR_AdminCommands.c": "618f17cbe62d5d68a310876e64920903d5d1a93814c81f7666f3a99fdefae38a", - "addons/chat/Scripts/WorkbenchGame/ERR/ERR_ValidateWorldPlugin.c": "1471d018ddc6202175fee1d7fcf6087d9eb605dd9303c94b4cb55a4eff38125b", + "addons/core/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/core/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "618f17cbe62d5d68a310876e64920903d5d1a93814c81f7666f3a99fdefae38a", + "addons/core/Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "1471d018ddc6202175fee1d7fcf6087d9eb605dd9303c94b4cb55a4eff38125b", "addons/chat/addon.gproj": "ea1587e0174cf795334d306c71d99b06797fc891427cd57b6cab6e21cf0e4e0e", "addons/core/Prefabs/ERR/Extraction.et": "d95d311de0231cf669440a10ef3d68014b70067e50b8bdfb05db637cfc7ed628", "addons/core/Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853", @@ -28,30 +28,30 @@ "addons/core/Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2", "addons/core/Prefabs/ERR/Radio.et": "c10a112b7434e8c3e489d9a894460ee915b6b57bec90982e5572b2667c3c890d", "addons/core/Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f", - "addons/core/Scripts/Game/ERR/ERR_Actions.c": "adf93245e6d78c59b9839599d157a0d2b2b93ea93b3d1ae52e2904dd6c288266", - "addons/core/Scripts/Game/ERR/ERR_Actors.c": "17ec4e87858ba87175d890b2a6150f655378afe90e1d7cc3605bb16b5fc3b477", - "addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c": "1989948bf7658011e716820da80fbdd53880817a020a3055f4059fb5b233d62f", - "addons/core/Scripts/Game/ERR/ERR_GameMode.c": "6f2983cf2c5c411999a61e87be720b43658e79dee59cd1bc165be29dc9374f25", - "addons/core/Scripts/Game/ERR/ERR_Location.c": "7e6fa49a458643998ea26b0a9fa499670bbe998fc660301a6186f7dd2977c14a", - "addons/core/Scripts/Game/ERR/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", - "addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c": "04feefdb40f10653d1f8e5b5465018274f38efae25b1bf9b463ba0d6513091e4", - "addons/core/Scripts/Game/ERR/ERR_Settings.c": "912150d45833a91d446a10644be8a5758c23f17cebd84031787bc1538222bb0a", - "addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c": "db09584d32f6e9902414010f60f5d29af98b8abff04e1d14bcd04b5627f16051", - "addons/core/Scripts/Game/ERR/ERR_Supplies.c": "f39e7f534e6f306b3d8991187800f3a9a74b5771c505c05144439ef6f331eefb", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c": "adf93245e6d78c59b9839599d157a0d2b2b93ea93b3d1ae52e2904dd6c288266", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "17ec4e87858ba87175d890b2a6150f655378afe90e1d7cc3605bb16b5fc3b477", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "1989948bf7658011e716820da80fbdd53880817a020a3055f4059fb5b233d62f", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "6f2983cf2c5c411999a61e87be720b43658e79dee59cd1bc165be29dc9374f25", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Location.c": "7e6fa49a458643998ea26b0a9fa499670bbe998fc660301a6186f7dd2977c14a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "04feefdb40f10653d1f8e5b5465018274f38efae25b1bf9b463ba0d6513091e4", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c": "912150d45833a91d446a10644be8a5758c23f17cebd84031787bc1538222bb0a", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "db09584d32f6e9902414010f60f5d29af98b8abff04e1d14bcd04b5627f16051", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Supplies.c": "f39e7f534e6f306b3d8991187800f3a9a74b5771c505c05144439ef6f331eefb", "addons/core/Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87", "addons/core/Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83", "addons/core/Worlds/ERR_Everon_Layers/default.layer": "2ab127447e793eeea04893f7eb22718b56283fa446926944843c33d4f3de6d86", "addons/core/addon.gproj": "231274e6b62302f32c65f9ff31de2ce8a9e51e1c8d12c87deeec82ae1f40de46", - "addons/intel/Scripts/Game/ERR/ERR_IntelService.c": "ff8d49d9d662834125f51a55f375918d8c3212e0a1a660234e454bdf7213b7b5", + "addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "ff8d49d9d662834125f51a55f375918d8c3212e0a1a660234e454bdf7213b7b5", "addons/intel/addon.gproj": "d0ced242cefb220a5cccd6779d61fda9bc55581701b9f78bcf13c09d92ddbcbe", - "addons/map/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", - "addons/map/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", - "addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", - "addons/map/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", - "addons/map/Scripts/Game/ERR/ERR_DiscoveryMap.c": "4f59121bb4fed5da244472b30653eafc4b4e9b58807a7f155f47e215e85812f3", - "addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c": "ac7c2b72596bd655a389d4b9fdf7448e94cca137c009388eab0db1a9365ded02", - "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", - "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/core/Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc", + "addons/core/Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581", + "addons/core/Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d", + "addons/core/Scripts/Game/ERR/30_Map/ERR_DiscoveryMap.c": "4f59121bb4fed5da244472b30653eafc4b4e9b58807a7f155f47e215e85812f3", + "addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "ac7c2b72596bd655a389d4b9fdf7448e94cca137c009388eab0db1a9365ded02", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/core/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", "addons/map/addon.gproj": "1b371e5e01ea9fa46e76570fecb8aaa3a9298e34cba7ccca8a6bdb5ca86eb46a" } } diff --git a/docs/native-mortar-salvo.md b/docs/native-mortar-salvo.md index 2e56dde..55be1c5 100644 --- a/docs/native-mortar-salvo.md +++ b/docs/native-mortar-salvo.md @@ -14,7 +14,7 @@ This does not qualify actual enemy visual perception, donor-to-gunner resupply ( ## Original integration wiring -Keep the three new files, then make narrow changes to `addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c`: +Keep the three new files, then make narrow changes to `addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c`: 1. Add `protected bool m_ERRTestMortarSalvo;` and `protected ref ERR_NativeMortarSalvoProbe m_ERRMortarSalvo;`. 2. In `EOnInit`, set `m_ERRTestMortarSalvo = outcome == "mortar-salvo";`, and give it the same 330000 ms outer deadline as mortar-fire. Existing player-death flags must remain unchanged. Add `if (m_ERRMortarSalvo) m_ERRMortarSalvo.Stop();` to the existing `ERR_StopHQPatrol` cleanup. diff --git a/docs/native-packaging.md b/docs/native-packaging.md index 61af51e..cb2af7f 100644 --- a/docs/native-packaging.md +++ b/docs/native-packaging.md @@ -1,5 +1,12 @@ # Private native addon packaging +**Current layout:** all owned modules now live in `addons/core/addon.gproj`. +Use [single-mod setup and commands](single-mod.md) for current builds. Both +Workbench fixture selectors (`core` and `chat`) load that same project and require +the external dependencies. Five-addon and vanilla-only build instructions/results +below describe the historical layout. + + `tools/native_package.py` attempts the installed Workbench ResourceManager's real XPacker operation. It never publishes, changes addon identity, copies vanilla assets into the build input, or treats a development source ZIP as a PAK. A successful run produces **unqualified native package candidates**; resource contents, packed-only loading, gameplay and release acceptance remain separate. ## First bounded attempt diff --git a/docs/native-shared-map-ownership.md b/docs/native-shared-map-ownership.md index cb17780..d95b274 100644 --- a/docs/native-shared-map-ownership.md +++ b/docs/native-shared-map-ownership.md @@ -1,6 +1,6 @@ # Native shared-map replacement fixture -`addons/map/Scripts/Game/ERRMap/ERRM_NativeMapOwnershipProbe.c` is entirely +`addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c` is entirely `WORKBENCH` guarded and inert unless `-errSmoke 1 -errSmokeOutcome map-ownership` selects it. It does not change production map code, inventory, player state or settings. The first native execution compiled and passed both replacement/callback diff --git a/docs/original-feature-coverage.json b/docs/original-feature-coverage.json index aeae567..e475d93 100644 --- a/docs/original-feature-coverage.json +++ b/docs/original-feature-coverage.json @@ -34,7 +34,7 @@ "Scripts/Game/UI/ScreenEffects/ESCT_SpectatorBleedingScreenEffect.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_Observer.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c" ], "remaining": "Spectator reason messages and survivor-cycling guidance are added and compile. Verify visible presentation, remote streaming, target changes and death/reconnect on real clients." }, @@ -56,9 +56,9 @@ "Scripts/Game/UI/Menus/SetupMenuTabs/ESCT_EnvironmentTab.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_TimeService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_TimeService.c", "docs/mission-time.md", - "addons/core/Scripts/Game/ERR/ERR_EnvironmentService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c", "docs/environment.md" ], "remaining": "Local native clock, saved date/weather choices and two real restart rounds pass. Remote agreement, lighting and long-running day/night transitions still require validation." @@ -106,8 +106,8 @@ "Scripts/Game/UI/HUD/ESCT_UnconsciousInfoDisplay.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_Actors.c", - "addons/core/Scripts/Game/ERR/ERR_GameMode.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c" ], "remaining": "Local native blood-loss treatment, consumed supplies, consciousness recovery, ground casualty loading and vanilla door removal pass bounded fixtures. Verify ordinary input/animation, remote ownership, bleedout, interrupted treatment and flight with casualties." }, @@ -167,9 +167,9 @@ "Scripts/Game/Utility/ESCT_GroupDirector.c" ], "replacement_files": [ - "addons/ai/Scripts/Game/ERR/ERR_HQ.c", - "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c", - "addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c" + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c", + "addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c" ], "remaining": "HQ alone coordinates physical forces. Refreshed mortar firing, native completion and physical courier delivery have bounded native evidence. The reusable aircraft controller passes physical vertical flight and retained airborne cancellation; its optional fixed-target movement now also passes a bounded native test. Complete impact qualification, longer routes, operational HQ aircraft support, broader transport/rearming and losses without spawning responses; verify multiplayer." }, @@ -223,7 +223,7 @@ "Scripts/Game/Utility/ESCT_EntityCatalogHelper.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c", "addons/core/Configs/ERR/VanillaFactions.conf" ], "remaining": "Narrow successor vanilla catalogs compile and initialize without earlier vehicle-schema errors; preserve required faction, medical, item and radio behavior. Verify remote affiliation and full mission use. Alternative faction packs remain later scope." @@ -249,7 +249,7 @@ ], "replacement_files": [ "addons/core/Prefabs/ERR/Prison.et", - "addons/core/Scripts/Game/ERR/ERR_Actions.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c" ], "remaining": "Manual access, equipment for twelve players, layouts, threat balance and start placement need validation." }, @@ -266,8 +266,8 @@ "Scripts/Game/UI/GameOverScreens/ESCT_GameOverScreenEscapistsUIComponent.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_ExtractionService.c", - "addons/core/Scripts/Game/ERR/ERR_PlayerEscapeResult.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c", "addons/core/Configs/ERR/GameOverScreens.conf" ], "remaining": "Physical twelve-character occupancy, local identity/results, initial aircraft settling, ground loading and vanilla casualty removal have native evidence. Manual piloting/boarding, real reconnect, empty-server flight, remote rescue contention and loss/restart acceptance remain." @@ -301,11 +301,11 @@ "Scripts/Game/Utility/ESCT_TaskFuncs.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_Objectives.c", - "addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c", - "addons/core/Scripts/Game/ERR/ERR_DiscoveryMap.c", - "addons/core/Scripts/Game/ERR/ERR_RadioDefenceService.c", - "addons/core/Scripts/Game/ERR/ERR_ObjectiveDetails.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_Objectives.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c" ], "remaining": "Independent radio defence and native task-detail refresh are implemented. Validate visible task/map usability, simultaneous real clients, discovery replication and complete manual objective route." }, @@ -340,7 +340,7 @@ "Scripts/Game/State/ESCT_StorageState.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_SiteService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c", "addons/core/Prefabs/ERR/SupplyCache.et" ], "remaining": "Two independent clue caches and optional medical/outpost stock are authored. Manual access, route balance, medical treatment, destruction and network ownership remain unverified; finite stock replaces refill systems." @@ -370,7 +370,7 @@ "Scripts/Game/Vehicle/ESCT_VehicleControllerComponent.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_SiteService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c", "docs/ground-transport.md" ], "remaining": "Finite optional vanilla ground transport passes native parking, seats, engine, fuel depletion and loss checks. Manual driving/access, route navigation, repair, alarms and remote vehicle ownership remain validation/integration work." @@ -415,8 +415,8 @@ "Scripts/Game/Utility/ESCT_LocationFuncs.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_SiteDefinition.c", - "addons/core/Scripts/Game/ERR/ERR_SiteService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c", "addons/core/Prefabs/ERR/FieldCover.et" ], "remaining": "Seven sites and bounded proximity/discovery events are implemented. Expand towns/checkpoints and turret population, validate authored static cover, loss retention, manual access and multiplayer cleanup." @@ -443,10 +443,10 @@ "Scripts/Game/Global/ESCT_SpawnHelpers.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_PlayerRoster.c", - "addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c", - "addons/core/Scripts/Game/ERR/ERR_SpawnPlacement.c", - "addons/core/Scripts/Game/ERR/ERR_SpawnFinalization.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c" ], "remaining": "Native local slot reservations, final-assignment guards and owned pending cleanup pass. Active admission now counts blocked geometry and missing prerequisites toward its bounded retry budget; the actual-method regression passes. Real dedicated-server concurrent joins, preload races, reconnects, connection-ID reuse, spent lives, late arrivals and spectator streaming remain." }, @@ -474,8 +474,8 @@ "Scripts/Game/UI/Menus/SetupMenuTabs/ESCT_MiscTab.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_AdminService.c", - "addons/core/Scripts/Game/ERR/ERR_Settings.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c" ], "remaining": "Core administration/settings and saved environment changes pass local native checks, including two restart rounds. Ordinary local startup/admission passes for loose Chat and an exact archived packed Core candidate; the latter predates current mortar edits and does not qualify packaging. Verify current-source startup, remote authorization, player-facing pre-round setup and difficulty choices." }, @@ -494,8 +494,8 @@ "Scripts/Game/GameMode/ESCT_EscapistsManager.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_GameMode.c", - "addons/core/Scripts/Game/ERR/ERR_MissionRules.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c", + "addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c" ], "remaining": "Separate remaining objective/lifecycle policies, test mission failure reporting and multiplayer restart/cleanup." }, @@ -530,7 +530,7 @@ "Scripts/Game/Utility/ESCT_UI.c" ], "replacement_files": [ - "addons/core/Scripts/Game/ERR/ERR_Actors.c" + "addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c" ], "remaining": "Use vanilla utilities or small independent helpers as each consumer is replaced. A filename match does not establish equivalent behavior." } diff --git a/docs/packed-external-development.md b/docs/packed-external-development.md index a06fbc9..7699d9d 100644 --- a/docs/packed-external-development.md +++ b/docs/packed-external-development.md @@ -1,5 +1,12 @@ # External dependency development packages +**Current layout:** all owned modules now live in `addons/core/addon.gproj`. +Use [single-mod setup and commands](single-mod.md) for current builds. Both +Workbench fixture selectors (`core` and `chat`) load that same project and require +the external dependencies. Five-addon and vanilla-only build instructions/results +below describe the historical layout. + + The latest handoff is [road interception](../.build/playtest-2026-09-20-road-interception/README.md), with [exact build records](evidence/package-2026-09-20-road-interception/handoff.json). Five PAKs/222 payload entries match261 authored files and the editable ZIP. Core packed startup passes; the full external diagnostic now reaches ordinary local prisoner admission but retains its failed localization-error verdict. Packaging remains unqualified. Earlier radio/maintenance records below remain historical. Current AI/Chat requires the six installed dependencies in `external-addons.json`. Historical vanilla-only Core v1/Chat v2 packed contracts and evidence remain unchanged. Build only owned successor files; dependencies stay in their installed locations and are never bundled or published. diff --git a/docs/player-route.md b/docs/player-route.md index 48fcbb4..76eda7c 100644 --- a/docs/player-route.md +++ b/docs/player-route.md @@ -14,6 +14,6 @@ Action prompts now explain the locked gate, radio identification requirement, cu Record inventory transfers, map/task updates, interrupted defence, medical/casualty interactions, real piloting, partial results and restart. A completed local route still does not establish remote reconnects, twelve-player behavior or improved FPS. The separate automated vertical-flight fixture is not an extraction autopilot. [Current status](current-status.md) distinguishes those acceptance gaps from source-bound native evidence. -Source references: [objective text](../addons/core/Scripts/Game/ERR/ERR_ObjectiveText.c), [site stock](../addons/core/Configs/ERR/EveronSites.conf), [document recovery](../addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c), [radio rules](../addons/core/Scripts/Game/ERR/ERR_RadioDefenceService.c), [casualty loading](../addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c) and [extraction](../addons/core/Scripts/Game/ERR/ERR_ExtractionService.c). +Source references: [objective text](../addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c), [site stock](../addons/core/Configs/ERR/EveronSites.conf), [document recovery](../addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c), [radio rules](../addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c), [casualty loading](../addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c) and [extraction](../addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c). The rough-clue acknowledgement is source-policy tested for unknown, rough and exact radio states and multiple-site ordering. Its ordinary native task/hint presentation remains pending; it uses the existing shared objective text and adds no separate notification or inventory effect. The normal carried map is sufficient in Core; the optional Map addon is not required. diff --git a/docs/playtest-build.md b/docs/playtest-build.md index 3a3b6c0..91b2323 100644 --- a/docs/playtest-build.md +++ b/docs/playtest-build.md @@ -1,5 +1,12 @@ # Development playtest build — 20 September 2026 +**Current layout:** all owned modules now live in `addons/core/addon.gproj`. +Use [single-mod setup and commands](single-mod.md) for current builds. Both +Workbench fixture selectors (`core` and `chat`) load that same project and require +the external dependencies. Five-addon and vanilla-only build instructions/results +below describe the historical layout. + + For the latest five-addon source and packages with RHS/WCS/BMP, use the separate [road-interception handoff](../.build/playtest-2026-09-20-road-interception/README.md) and its player route. Core starts cleanly; the full external diagnostic reaches local prisoner admission but retains known localization errors. The instructions and evidence below describe an older vanilla-only snapshot. The handoff below is the historical `5e74269` vanilla-only candidate. Current AI/Chat source requires the audited RHS/WCS/BMP closure; use [the external development build workflow](packed-external-development.md) for a fresh build. Do not identify this older handoff as the current mission. @@ -93,7 +100,7 @@ Full companion scenario: -addonsDir Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/packages -addons FA804F411BDDF2C6 -profile Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/profile-chat -errOrdinaryScenario chat -noSplash -noBackend -noSound -logconsole ``` -The explicit ordinary launcher requests the native mission **header and MissionSystems**, once from the main menu. Do not substitute a bare `-world` load. The two headers are `{AD62322D5213C440}Missions/ERR_Everon_Base.conf` (“Rereintroduced: Everon Base (development)”) and `{C1E20667DCE324ED}Missions/ERR_Everon.conf` (“Rereintroduced: Everon (development)”). These names also identify the authored scenarios in the normal scenario menu. This local/offline setup uses `-noBackend`; it is not multiplayer hosting instructions. `-noSplash` avoids the separately documented stock splash path. These playtest arguments keep audio muted as requested and send no automated input. Quit through the game's normal menu before running another build/test. +The explicit ordinary launcher requests the native mission **header and MissionSystems**, once from the main menu. Do not substitute a bare `-world` load. The two headers are `{AD62322D5213C440}Missions/ERR_Everon_Base.conf` (“Reintroduced: Everon Base (development)”) and `{C1E20667DCE324ED}Missions/ERR_Everon.conf` (“Reintroduced: Everon (development)”). These names also identify the authored scenarios in the normal scenario menu. This local/offline setup uses `-noBackend`; it is not multiplayer hosting instructions. `-noSplash` avoids the separately documented stock splash path. These playtest arguments keep audio muted as requested and send no automated input. Quit through the game's normal menu before running another build/test. | Package folder | Project | GUID | Successor dependencies | | --- | --- | --- | --- | diff --git a/docs/preparation-status.md b/docs/preparation-status.md index 80c2312..e41f312 100644 --- a/docs/preparation-status.md +++ b/docs/preparation-status.md @@ -1,13 +1,71 @@ # Mission preparation presentation -The successor now places persistent status text inside the native respawn loading placeholder while its own mission remains `PREPARING`. Normal preparation displays **Preparing mission** and the existing shared explanation that the prisoner will spawn when sites and equipment are ready. A replicated preparation failure changes the title to **Mission could not start**, displays the shared restart/administrator guidance, and hides the loading spinner. The administrator's existing `/esc status` response retains the specific cause. This is presentation only: it neither retries preparation nor authorizes spawning or restart. +## Dedicated replication barrier (0.0.4) + +The user retested 0.0.3 on RKS #2 and reported that the black preparation screen +still disappeared before the walls arrived. Inspection of the installed package +confirmed that it contained both the enabled native preload and extended message. +The earlier local Workbench success did not establish runtime replication +readiness on a remote client. + +Each owned free-spawn request now takes a bounded server snapshot of nearby +mission-owned objects (120m around the requested position), recursively including +the prison's walls and gate, plus the pending player actor. Their replication +nodes are held in the joining client's stream until finalization or cancellation. +The owner receives their exact IDs and acknowledges the attempt only after every +node resolves to a local entity. `CanFinalize_S` requires both this acknowledgement +and the native resource preload. Final assignment retains all existing +ticket/account/phase/placement checks and separately requires scene readiness. + +Each attempt has its own token; stale or cancelled acknowledgements cannot open +a later attempt. A 60-second scene timeout makes that attempt ineligible for +assignment. Once native preloading has completed, it rejects the pending actor +through the existing failure/retry path; it never treats missing objects as ready. Failed responses +retain the native loading screen, and a new scene request restores it if absent. +Successful assignment, spectator handoff and normal teardown retain native screen +and audio cleanup. Destroyed objects are excluded when a retry takes a fresh +snapshot. Objects outside the nearby snapshot continue normal streaming. + +`tests/test_spawn_scene.py` executes production client checks, token/cancellation/ +timeout handling and handler finalization with native-boundary adapters. Missing +root/wall/gate nodes and a node without its entity prevent acknowledgement; +native preload and scene readiness are independently required. Timeout and failed +identity/life checks cannot assign an actor. These are controlled tests, not a +remote-network acceptance run. + +The [native 0.0.4 candidate run](evidence/native-2026-09-20-spawn-scene/report.json) +completed 103 assertions without script/runtime failures. Its log records a +39-object snapshot, receipt and acknowledgement on the local client, then +prisoner assignment after native preload completion. Cleanup and unchanged source +were verified. The same four external localization errors remain in the strict +native verdict. A dedicated fresh-join test with the published update is still +required; local RPC execution does not simulate network delivery delays. + +## Native preload and message (0.0.3) + +The successor places persistent status text inside the native respawn loading placeholder during server preparation and the joining client's spawn-area preload. Normal preparation displays **Preparing mission** and the shared explanation that the prisoner will spawn when sites and equipment are ready. Once the server is active, the message changes to **Please wait while your spawn area and equipment finish loading. You will take control when preparation is complete.** A replicated preparation failure changes the title to **Mission could not start**, displays the shared restart/administrator guidance, and hides the loading spinner. The administrator's existing `/esc status` response retains the specific cause. + +`Prefabs/ERR/GameMode.et` now enables native `m_bUseSpawnPreload`. Previously it explicitly disabled that handshake, allowing server-side readiness to assign a prisoner before the remote client loaded the surrounding prison. Installed vanilla `SCR_SpawnHandlerComponent.OnFinalizeBegin_S` starts a per-request spawn preload, which adds a replication observer at the spawn position. Its `CanFinalize_S` waits for the owning client to report preload completion before assigning the actor. Existing successor ticket, identity, life and placement checks still run at final assignment. This uses the engine's completion condition, not a new fixed sleep; it does not preload every distant part of the island. Previously the scenario inherited the vanilla opaque loading splash, but the only successor preparation/failure guidance was a 15-second hint. No native mission task is created before the first successful phase transition. Failed preparation stops admission and cannot activate the normal survivor observer path which removes the loading placeholder. The new status therefore belongs to that existing loading surface instead of relying on an expiring hint or a player camera. -`ERR_PreparationStatus.c` extends the installed `SCR_RespawnSystemComponent.UpdateLoadingPlaceholder(float dt)` callback. Vanilla's `DeployMenuSystem` already invokes it; no new timer is added. The adapter compares vanilla's protected `m_pGameMode` field (assigned from `owner` by `SCR_RespawnSystemComponent.OnInit(IEntity owner)`) with the exact current `ERR_GameMode`; it runs only for that owner, with a live native placeholder, outside a console application and during `PREPARING`. It preserves the superclass update and all other modes. The newly authored child layout uses its own identity, `{BCCAE287751344D9}UI/layouts/ERR/PreparationStatus.layout`, and native default fonts; it adds no vanilla resource reference. +`ERR_PreparationStatus.c` extends the installed `SCR_RespawnSystemComponent.UpdateLoadingPlaceholder(float dt)` callback. Vanilla's `DeployMenuSystem` already invokes it; no new timer is added. The adapter compares vanilla's protected `m_pGameMode` field (assigned from `owner` by `SCR_RespawnSystemComponent.OnInit(IEntity owner)`) with the exact current `ERR_GameMode`; it runs only for that owner, with a live native placeholder, outside a console application and during `PREPARING` or an active mission phase. Keeping the text during active phases also covers late arrivals. It preserves the superclass update and all other modes. The authored child layout uses its own identity, `{BCCAE287751344D9}UI/layouts/ERR/PreparationStatus.layout`, and native default fonts; it adds no vanilla resource reference. -The adapter remembers the exact placeholder, owned status widgets and original spinner visibility. Replacing or deleting the placeholder, moving the owned child away, leaving preparation, or calling native `DestroyLoadingPlaceholder` clears the child and cached text. A hidden spinner is restored to its recorded visibility when still alive. Normal native placeholder destruction remains responsible for its own audio and parent-widget lifecycle. No camera, audio, input, actor, mission state or inventory is changed by the adapter. +The adapter remembers the exact placeholder, owned status widgets and original spinner visibility. Replacing or deleting the placeholder, moving the owned child away, ending the mission, or calling native `DestroyLoadingPlaceholder` clears the child and cached text. A hidden spinner is restored to its recorded visibility when still alive. The native spawn response or existing spectator handoff destroys the placeholder and restores audio. The presentation adapter does not change camera, input, actor, mission state or inventory and never recreates a destroyed loading screen. -`tests/test_preparation_status.py` executes the actual presentation and cleanup methods through widget/native-boundary adapters. It checks unchanged behavior for unrelated/console modes, persistent text without repeated creation or text writes, preparation-to-failure changes, stale state clearing, missing UI resources/children, parent replacement, deleted weak widget references, reparenting, phase exit, native destruction and restoration of an initially hidden spinner. It also executes the actual native observation probe's continuous-time, reset and timeout rules. These are source-policy checks, not native rendering evidence. +`tests/test_preparation_status.py` executes the actual presentation and cleanup methods through widget/native-boundary adapters. It checks unchanged behavior for unrelated/console modes, persistent text without repeated creation or text writes, preparation-to-failure changes, stale state clearing, missing UI resources/children, parent replacement, deleted weak widget references, reparenting, server-ready/client-loading transitions, late arrivals, terminal phases, native destruction and restoration of an initially hidden spinner. It also verifies that the mission enables preloading and executes the native observation probe's continuous-time, reset and timeout rules. These are source-policy checks, not native rendering or network evidence. + +The combined Workbench smoke now records whether native `StartSpawnPreload` was called and checks that it completed before the initial prisoner was admitted. When the preload spans a smoke tick, it also checks the actual preparation widgets after the server reaches the prison phase. The code is Workbench-only. Dedicated-server verification still requires publishing the update, updating both server and client, then testing a fresh join and a late join with the new package. + +The [2026-09-20 native run](evidence/native-2026-09-20-spawn-preload/report.json) +completed 103 assertions with no script/runtime failures. At 14:23:13 it observed +the preparation widgets during native preloading in the active prison phase; +the prisoner was assigned at 14:23:14, after preload completion. All repository +checks passed. Four existing RHS/WCS localization errors remain. The runner also +reported a transient exiting-process classification failure during cleanup; +the [separate follow-up check](evidence/native-2026-09-20-spawn-preload/subsequent-idle-verification.json) +confirmed the prefix idle and source identical to the launch snapshot. The +original failed cleanup result is retained. This is local Workbench evidence, +not a successful dedicated join or a clean overall native verdict. The existing opt-in Core `startup-failure` fixture now waits up to 30 seconds for actual production-created loading widgets. It requires the expected title and shared body text, correct parent ownership, visible nonzero-sized title/body/root widgets, a visible loading parent and a hidden native spinner. It observes these continuously for 17 seconds, exceeding the old hint duration, then requests `$logs:err-preparation-failure` and waits another half-second before its original negative-path assertions complete. It does not create or update the widgets itself. The deliberate faction setup error remains a native ERROR and must retain the negative fixture's failed/error verdict; a successful UI assertion does not turn that run into a clean mission startup. The first native compilation rejected an assumed `GetOwner()` API, which this native respawn system does not expose. That call has been replaced with its installed vanilla `m_pGameMode` owner field; the second native run compiled and passed the continuous 17-second checks on the actual title/body/root widgets, parent ownership and hidden spinner. Its captured Workbench image was a blank blue editor viewport, so it provides no visual proof that the status is readable in an ordinary player view. Ordinary-player visual inspection remains pending; the deliberately failed setup still retains its negative engine-error verdict. diff --git a/docs/prison-input-proof-plan.md b/docs/prison-input-proof-plan.md index 0825030..9312a90 100644 --- a/docs/prison-input-proof-plan.md +++ b/docs/prison-input-proof-plan.md @@ -6,7 +6,7 @@ The ordinary run [game-2026-09-19-180423-inventory-ready/console.log.txt](evidence/game-2026-09-19-180423-inventory-ready/console.log.txt), line 490, records the original player at `<6088.5,211.389,7158.5>` with neutral inputs and zero velocity. Its nonce is `a75280fda4494a0ca7b14a693cf310e9`; this is historical starting-position evidence, never authorization for a later run. -[ERR_SpawnPlacement.c](../addons/core/Scripts/Game/ERR/ERR_SpawnPlacement.c), `Prison`, searches the four inner lattice positions first; its first candidate is prison centre minus `1.5` in X/Z. [ERR_SpawnLogic.c](../addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c), `DoSpawn_S`, constructs `SCR_FreeSpawnData` without angles. The installed vanilla `scripts/Game/Respawn/RequestHandling/Implementation/FreeSpawn/SCR_FreeSpawnData.c:27` defaults angles to `0 0 0`. Expected initial facing is +Z, but the experiment must read actual pose/view orientation before movement and refuse a different starting configuration rather than assume it. +[ERR_SpawnPlacement.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c), `Prison`, searches the four inner lattice positions first; its first candidate is prison centre minus `1.5` in X/Z. [ERR_SpawnLogic.c](../addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c), `DoSpawn_S`, constructs `SCR_FreeSpawnData` without angles. The installed vanilla `scripts/Game/Respawn/RequestHandling/Implementation/FreeSpawn/SCR_FreeSpawnData.c:27` defaults angles to `0 0 0`. Expected initial facing is +Z, but the experiment must read actual pose/view orientation before movement and refuse a different starting configuration rather than assume it. [EveronSites.conf](../addons/core/Configs/ERR/EveronSites.conf) places the prison at X/Z `6090/7160`. [Prison.et](../addons/core/Prefabs/ERR/Prison.et) places the gate hinge at local `0,-0.1,-6`, scale `1.5`. [PrisonDoor.et](../addons/core/Prefabs/ERR/PrisonDoor.et) inherits the concrete vanilla metal gate's handle context offset `1.845,1.255,0`, giving an expected world handle near `(6092.7675, siteY+1.7825, 7154)`. This is approximately 6.20 m horizontally from the recorded spawn. Native `UserActionContext.GetOrigin/GetRadius/GetTransformationWorld` must confirm the actual evaluated geometry; do not assume how scale affects the configured radius of 2. diff --git a/docs/prison-opening.md b/docs/prison-opening.md new file mode 100644 index 0000000..86345fd --- /dev/null +++ b/docs/prison-opening.md @@ -0,0 +1,13 @@ +# Original prison opening + +The opening uses the vanilla metal frame and right-hand covered metal door from the earlier improvised prison (`EAI_PrisonGate.et` in the read-only original extension). The owned resource IDs and four-second lockpick action remain unchanged. The gate is unscaled and the two adjacent wall ends match the original doorway offsets, within the existing 12 m prison. The frame has its own replication component and remains included in the spawn scene barrier. + +The original base mission disabled each character's AI during its pre-start/start phases and reactivated it when the lockpick advanced to radio search. `ERR_PrisonAI.c` applies that behavior to enemy characters in this game mode, including characters in external faction prefabs. It disables AI at initialization and after native group population activates a new member. Recovery from unconsciousness rechecks the hold. Phase and stop subscriptions are removed on release, deletion or shutdown. Release does not activate dead, unconscious, pending-player or player-controlled characters. + +HQ tactical ticks and virtual force movement also wait until radio search; lifecycle maintenance continues. Dormant force timestamps restart at escape so patrols do not jump forward by the time spent in prison. A valid alternate physical escape still completes the prison objective and releases enemies, preserving the existing escape rules. + +The original metal door has no native destruction component. Registration accepts this intact door while still rejecting a damaged gate when a destruction component exists. Gate disappearance alone does not complete the objective. + +Validation: the policy regression exercises the actual hold/release/stop methods with substituted engine boundaries, plus the existing tick scheduling and prison permission/crossing checks. The full repository check passed. The native combined-mod victory run passed 105 assertions and completed through victory. It measured all 36 initial enemies inactive immediately before the lockpick and active immediately afterward, registered the original door, and verified native open-door passage. Recorded bounds show the frame overlapping both adjacent wall ends. + +Evidence: [native report](evidence/native-2026-09-20-prison-opening/report.json). The run retained four existing RHS/WCS localization resource errors. Its cleanup check briefly encountered an exiting process with no command line; the separate follow-up verified the prefix idle and addon sources unchanged. The original runner result is preserved. This is local scripted Workbench evidence, not dedicated-server or ordinary held-input verification. diff --git a/docs/runtime-testing.md b/docs/runtime-testing.md index f52cb79..f619f16 100644 --- a/docs/runtime-testing.md +++ b/docs/runtime-testing.md @@ -1,7 +1,23 @@ # Runtime testing +**Current layout:** all owned modules now live in `addons/core/addon.gproj`. +Use [single-mod setup and commands](single-mod.md) for current builds. Both +Workbench fixture selectors (`core` and `chat`) load that same project and require +the external dependencies. Five-addon and vanilla-only build instructions/results +below describe the historical layout. + + ## Keep the desktop unobstructed +**Desktop placement override (2026-09-20):** the user requested temporarily +disabling the right-monitor enforcement. `erri-workbench-right-monitor` is removed +from KWin's active rule list; its definition is retained, and the configuration was +backed up to `~/.config/kwinrulesrc.erri-before-disable-20260920T133915`. No placement +guard was loaded when checked. Do not re-enable this rule or load +`tools/desktop/kwin-right-monitor.js` unless the user asks to restore it. The +right-monitor instructions below describe the previous setup. Automated native +tests should continue using their private headless display. + Use terminal/file checks by default. Do not repeatedly launch Workbench or game windows on the main monitor. A visible editor should use the user's selected spare output. The user authorized the right-hand display (HDMI-A-1, 1920×1080 on this machine). Keep primary DP-3 free of test windows. A KDE rule matching `steam_app_1874910` places both editor and in-editor game windows on screen 2 before mapping and disables fullscreen. The previous configuration was backed up to `~/.config/kwinrulesrc.erri-backup`. The rule is named `erri-workbench-right-monitor` and can be removed independently in KDE Window Rules. A later test found that Workbench can restore geometry after placement and still extend onto the main display. Automated local tests therefore now use a dedicated headless Gamescope display and a cloned disposable Wine prefix. The graphical application remains native Workbench; this is not a dedicated-server test. No performance comparison may use these headless results as equivalent to an ordinary client workload. diff --git a/docs/single-mod.md b/docs/single-mod.md new file mode 100644 index 0000000..3dc4482 --- /dev/null +++ b/docs/single-mod.md @@ -0,0 +1,102 @@ +# Single Workshop mod + +All five owned modules are now one project: `addons/core/addon.gproj`, titled +**Escapists Reintroduced**, with the existing Core GUID `2528466DE220D91C`. +There are no separate AI, Intel, Map or Chat project descriptors to publish. +The project ID `ERR_Core` is retained; it now identifies the complete mod. + +The supplied Workshop banner is [publishing/previewImage.png](../publishing/previewImage.png). +Select it in **Publish project → Preview Image** before publishing; see +[preview setup](../publishing/README.md) for the Proton file-picker path. + +For the post-publication RKS #2 join failure, see the +[prefab identity fix and update steps](multiplayer-prefab-ids.md). + +In Workbench, close the previous project, remove stale entries for the four removed +projects, and open the Core project again. Keep the installed RHS/WCS projects and +their dependencies registered. Launch `Missions/ERR_Everon.conf`. The old Base +mission header is retained for diagnostic scripts but hidden from the scenario +menu; it loads the same combined gameplay and dependencies. + +Scripts live in `Scripts/Game/ERR/{00_Core,10_AI,20_Intel,30_Map,40_Chat}`. +GameLib and WorkbenchGame retain their native script-module directories. The +numeric prefixes preserve the ordering required by `modded class` extensions, +including the full-scenario probes that use Core and Intel members. Moving those +folders into alphabetical feature order breaks native compilation. + +All 34 authored resource GUIDs and resource-relative paths are preserved. Non-script +assets remain in their native Prefabs, Configs, Missions, Worlds, Materials and UI +folders. RHS and WCS remain external dependencies, not copied assets. No Workshop +publication or release qualification is part of this migration. + +## Source and package checks + +```sh +python3 tools/check.py +python3 tools/source_bundle.py +``` + +The bundle contains one project. Native packaging builds only that project: + +```sh +python3 tools/native_package.py --project core \ + --session /tmp/erri-merged-package-NEW \ + --compat /tmp/YOUR-IDLE-DISPOSABLE-TOOLS-PREFIX \ + --external-addons /path/to/installed/workshop/addons \ + --timeout 300 +``` + +A successful packing attempt writes `packages/core`; inspect its PAK contents +before treating it as a playable artifact. Packaging does not publish anything. + +## Native verification + +The existing Workbench `--project core` and `--project chat` arguments select +**fixture families**, not separate addon projects. Both load the same combined +`.gproj` and require `--external-addons`. For the integrated HQ fixture: + +The historical `core/victory` fixture still asserts that companion HQ/support +controllers are absent and fails against the merged project. Use the combined +fixture below for this checkpoint; Core isolation results do not apply here. + +```sh +python3 tools/headless_workbench.py \ + --compat /tmp/YOUR-IDLE-DISPOSABLE-TOOLS-PREFIX \ + --profile /tmp/erri-merged-workbench-NEW \ + --external-addons /path/to/installed/workshop/addons \ + --project chat --smoke hq-memory --rounds 1 --timeout 360 +``` + +For ordinary packed startup, schema 4 validates one owned addon plus six external +addons (nine engine/vanilla/mod/dependency mounts in total): + +```sh +python3 tools/headless_game.py --project chat \ + --packed-addons /tmp/erri-merged-package-NEW/packages \ + --packed-session /tmp/erri-packed-chat-merged-NEW \ + --compat /tmp/YOUR-IDLE-DISPOSABLE-TOOLS-PREFIX \ + --external-addons /path/to/installed/workshop/addons \ + --timeout 180 --failure-grace 120 +``` + +Core v1 / Chat v2 packed validators remain frozen for historical artifacts and +reject the merged dependency graph. Older five-addon external v3 records are +historical; the current external runner uses schema 4. Native dedicated inputs +must also supply the external dependency closure; this migration does not establish +multiplayer acceptance. + +## Verified migration checkpoint + +`python3 tools/check.py` passes all 191 regression programs. A comparison with the +pre-merge tree preserves all 187 scripts and all 34 resource metadata identities +and paths; the only changed script body is the ordinary full-scenario launcher's +addon GUID. The base diagnostic mission header is now hidden from the menu. + +The [merged native run](evidence/native-2026-09-20-merged-mod/report.json) compiles +GameLib, Game and WorkbenchGame, loads Everon and completes the HQ-memory fixture +with 101 passed assertions and no script/runtime failures. Its +[runner record](evidence/native-2026-09-20-merged-mod/runner.json.txt) confirms owned +cleanup and unchanged authored/external inputs. The strict native verdict remains +failed because of the four previously documented RHS/WCS localization resource +errors, all retained in the raw log. This is local Workbench evidence, not a +Workshop release or multiplayer qualification. diff --git a/docs/vanilla-resources.json b/docs/vanilla-resources.json index 745e822..cc162e6 100644 --- a/docs/vanilla-resources.json +++ b/docs/vanilla-resources.json @@ -120,5 +120,7 @@ "Prefabs/Weapons/Attachments/Optics/Optic_4x20/Optic_4x20.et": "BD496EE1B40DC510", "Prefabs/Vehicles/Wheeled/UAZ469/VehParts/Seats/UAZ469_seats_rear.et": "780AAF0A51AEE61A", "Prefabs/Items/Equipment/Kits/RepairKit_01/RepairKit_01_wrench.et": "33B2DFDCD0EBA3DB", - "Prefabs/Items/Fuel/Jerrycan_01/Jerrycan_01_item.et": "12D5AD21E383B768" + "Prefabs/Items/Fuel/Jerrycan_01/Jerrycan_01_item.et": "12D5AD21E383B768", + "Prefabs/Structures/BuildingParts/Doors/DoorSet_Base.et": "87CADB5ADC989993", + "Assets/Structures/BuildingsParts/Doors/DoorFrame_door_metal_A_RIGHT_EXT_B.xob": "E3BC73BFBC7AA497" } diff --git a/publishing/README.md b/publishing/README.md new file mode 100644 index 0000000..7ff1624 --- /dev/null +++ b/publishing/README.md @@ -0,0 +1,27 @@ +# Workshop preview + +Project name: **Escapists Reintroduced**. Author: **Jakub Jim Žáček**. +Both scenario headers contain this author, including the loading-screen metadata. +The current scenario is **Escapists Reintroduced — Everon**. The project name +stays **Escapists Reintroduced**; each island's mission header supplies its own +island suffix and world resource. The island is scenario metadata, not a shared +UI label hardcoded across all maps. + +Use `previewImage.png` in Workbench's **Publish project → Preview Image** field. +It is the original 512×256 PNG supplied by the user, downloaded unchanged from +[CaptainPStar/co10_Escape](https://github.com/CaptainPStar/co10_Escape/blob/master/escape_banner.png). +The artwork retains its original **Co10 ESCAPE** title. + +On this Linux/Proton installation, the file-picker path is: + +```text +Z:\home\jakub\devel\escapistsrereintroduced\publishing\previewImage.png +``` + +Workbench also supports passing the image path using +[`-publishAddonPreviewImage`](https://community.bistudio.com/wiki/Arma_Reforger:Startup_Parameters#publishAddonPreviewImage). +Saving this file does not automatically select it in an already-open publishing +dialog. Select it before publishing. + +This directory holds publishing artwork separately from game resources, so the +PNG does not need Enfusion texture metadata or inclusion in the runtime PAK. diff --git a/publishing/changelog-0.0.2.txt b/publishing/changelog-0.0.2.txt new file mode 100644 index 0000000..22cb932 --- /dev/null +++ b/publishing/changelog-0.0.2.txt @@ -0,0 +1 @@ +Fix missing saved entity IDs in mission prefabs that caused players to disconnect with REPLICATION / SYSTEM_FAILURE when joining a dedicated server. diff --git a/publishing/changelog-0.0.3.txt b/publishing/changelog-0.0.3.txt new file mode 100644 index 0000000..fdd8910 --- /dev/null +++ b/publishing/changelog-0.0.3.txt @@ -0,0 +1 @@ +Enable client spawn-area preloading before giving players control on dedicated servers. Keep the preparation message on the black loading screen while the spawn area finishes loading, including players joining an already-running mission. diff --git a/publishing/changelog-0.0.4.txt b/publishing/changelog-0.0.4.txt new file mode 100644 index 0000000..bce32e8 --- /dev/null +++ b/publishing/changelog-0.0.4.txt @@ -0,0 +1 @@ +Keep players on the preparation screen until their client has received the nearby mission objects, including prison walls and the gate. Require both object readiness and native preloading before giving control. Preserve the loading screen through failed spawn retries. diff --git a/publishing/changelog-0.0.5.txt b/publishing/changelog-0.0.5.txt new file mode 100644 index 0000000..1068b0b --- /dev/null +++ b/publishing/changelog-0.0.5.txt @@ -0,0 +1,3 @@ +Correct the project name to Escapists Reintroduced and the current scenario title to Escapists Reintroduced — Everon, including the loading screen. Set the scenario author to Jakub Jim Žáček. Each island's scenario can use its own island suffix. + +Restore the framed metal prison gate used by the earlier improvised prison, including its original-size door and adjoining wall fit. Keep enemy AI inactive during preparation and imprisonment, then resume the existing soldiers when the prison objective completes through lockpicking (or a valid physical escape). Pause HQ tactical updates and dormant patrol movement until escape. diff --git a/publishing/previewImage.png b/publishing/previewImage.png new file mode 100644 index 0000000..f79687b Binary files /dev/null and b/publishing/previewImage.png differ diff --git a/tests/helicopter_availability_regression.py b/tests/helicopter_availability_regression.py index 58e24bd..1597340 100644 --- a/tests/helicopter_availability_regression.py +++ b/tests/helicopter_availability_regression.py @@ -1,7 +1,7 @@ from pathlib import Path from policy_harness import body,run ROOT=Path(__file__).resolve().parents[1] -s=body(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c','string Check(') +s=body(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c','string Check(') run('#include \n#include \nusing std::string;\nstruct Availability {float m_fGroundedSince=-1;\n'+s+'''}; int main(){ Availability a; diff --git a/tests/hq_network_regression.py b/tests/hq_network_regression.py index 7175f9e..37e3850 100644 --- a/tests/hq_network_regression.py +++ b/tests/hq_network_regression.py @@ -3,7 +3,7 @@ from pathlib import Path import os, re, subprocess, tempfile ROOT=Path(__file__).resolve().parents[1] -source=Path(os.environ.get('ERR_NETWORK_SOURCE', ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c')).read_text() +source=Path(os.environ.get('ERR_NETWORK_SOURCE', ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c')).read_text() def extract(signature): a=source.index(signature);b=source.index('{',a);end=b+1;depth=1 while depth:depth+=(source[end]=='{')-(source[end]=='}');end+=1 diff --git a/tests/mortar_salvo_regression.py b/tests/mortar_salvo_regression.py index b866b84..e2839f0 100644 --- a/tests/mortar_salvo_regression.py +++ b/tests/mortar_salvo_regression.py @@ -1,7 +1,7 @@ from pathlib import Path from policy_harness import body,run ROOT=Path(__file__).resolve().parents[1] -s=body(ROOT/'addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c','static vector Offset(').replace('Math.','Math::') +s=body(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c','static vector Offset(').replace('Math.','Math::') run('''#include #include struct vector { float x,y,z;}; diff --git a/tests/test_action_feedback.py b/tests/test_action_feedback.py index ed09012..e2758fb 100644 --- a/tests/test_action_feedback.py +++ b/tests/test_action_feedback.py @@ -1,6 +1,6 @@ """Execute actual action availability methods; native UI rendering is separate.""" from policy_harness import ROOT, body, run -source=(ROOT/'addons/core/Scripts/Game/ERR/ERR_Actions.c').read_text() +source=(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c').read_text() class Source: def __init__(self,name): self.text=source.split('class '+name+' :',1)[1].split('\nclass ',1)[0] def read_text(self): return self.text diff --git a/tests/test_actor_group.py b/tests/test_actor_group.py index 198f81a..b73c335 100644 --- a/tests/test_actor_group.py +++ b/tests/test_actor_group.py @@ -1,6 +1,6 @@ """Exercise actual actor-group lookup with distinct inherited vehicle and controlled character agents.""" from policy_harness import ROOT, body, run -source=body(ROOT/'addons/core/Scripts/Game/ERR/ERR_Actors.c','static SCR_AIGroup Group(') +source=body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c','static SCR_AIGroup Group(') source=source.replace('static SCR_AIGroup Group(IEntity actor)', 'static SCR_AIGroup* Group(IEntity* actor)') source=source.replace('AIControlComponent control', 'AIControlComponent* control') source=source.replace('AIControlComponent.Cast(', 'AIControlComponent::Cast(').replace('SCR_AIGroup.Cast(', 'SCR_AIGroup::Cast(') diff --git a/tests/test_admin_menu.py b/tests/test_admin_menu.py index 0115ced..3a637bd 100644 --- a/tests/test_admin_menu.py +++ b/tests/test_admin_menu.py @@ -6,10 +6,10 @@ import re,os from pathlib import Path BASE=Path(os.environ.get("ERR_CONVOY_SETTINGS_ROOT", Path(__file__).resolve().parents[1])) from policy_harness import ROOT, body, run -source = ROOT / 'addons/core/Scripts/Game/ERR/ERR_AdminMenu.c' +source = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c' layout = ROOT / 'addons/core/UI/layouts/ERR/AdminMenu.layout' keys = re.findall(r'"([A-Za-z]+)"', body(source, 'static array Keys(')) -settings = re.findall(r'"([A-Za-z]+)"', body(BASE / 'addons/core/Scripts/Game/ERR/ERR_Settings.c', 'static array Keys(')) +settings = re.findall(r'"([A-Za-z]+)"', body(BASE / 'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c', 'static array Keys(')) assert len(keys) == 10 and set(settings) - set(keys) == {"stingerChanceOneIn", "automaticConvoyEnabled"} assert set(keys) <= set(settings) # New text-command setting does not alter the fixed native menu. # Native layouts place child widget declarations inside an anonymous Children diff --git a/tests/test_admin_player_tools.py b/tests/test_admin_player_tools.py index 6b9b8fc..39326b2 100644 --- a/tests/test_admin_player_tools.py +++ b/tests/test_admin_player_tools.py @@ -1,6 +1,6 @@ """Exercise actual admin utility command/state methods through native API adapters.""" from policy_harness import ROOT, body, run -source=ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c' +source=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c' def adapt(s): s=s.replace('protected ', '').replace('null', 'nullptr') s=s.replace('array replies','Array& replies') @@ -100,8 +100,8 @@ assert 'protected override void OnFailed() { Finish(false); }' in s assert 'protected void Finish(bool success) { if (!Finished)' in s print('PASS: actual admin body authorization, god restoration, vanilla item deposit, callback completion/failure, timeout quarantine and stop/revocation paths') -bridge=(ROOT/'addons/core/Scripts/Game/ERR/ERR_PlayerAdminCommands.c').read_text() -session=(ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminSession.c').read_text() +bridge=(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c').read_text() +session=(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c').read_text() assert 'protected ref ERR_AdminGrantState m_ERRAdminGrants = new ERR_AdminGrantState();' in bridge assert 'new ERR_AdminSession(mode, this, token, m_ERRAdminGrants)' in bridge assert session.count('new ERR_AdminPlayerTools(m_Grants)')==2 diff --git a/tests/test_admin_providers.py b/tests/test_admin_providers.py index a3f3966..60bef87 100644 --- a/tests/test_admin_providers.py +++ b/tests/test_admin_providers.py @@ -2,14 +2,14 @@ Native script compilation and authenticated RPC tests remain separate checks. """ from policy_harness import ROOT, body, run -core = ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminService.c' -hq = ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c' -intel = ROOT/'addons/intel/Scripts/Game/ERR/ERR_IntelAdminProvider.c' +core = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c' +hq = ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c' +intel = ROOT/'addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c' source=core.read_text() assert 'ERR_HQ' not in source and 'ERR_IntelService' not in source -assert 'modded class' not in (ROOT/'addons/chat/Scripts/Game/ERR/ERR_AdminCommands.c').read_text() -assert 'Admin().Register(new ERR_HQAdminProvider(hq))' in (ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c').read_text() -assert 'Admin().Register(new ERR_IntelAdminProvider())' in (ROOT/'addons/intel/Scripts/Game/ERR/ERR_IntelService.c').read_text() +assert 'modded class' not in (ROOT/'addons/core/Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c').read_text() +assert 'Admin().Register(new ERR_HQAdminProvider(hq))' in (ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c').read_text() +assert 'Admin().Register(new ERR_IntelAdminProvider())' in (ROOT/'addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c').read_text() execute=body(core,'void Execute(') assert execute.index('if (!Replication.IsServer()') < execute.index('if (!authorized)') < execute.index('Extension(mode, arguments, replies)') assert 'arguments = "mission " + arguments' in execute diff --git a/tests/test_admin_session.py b/tests/test_admin_session.py index 2aab769..63cfdec 100644 --- a/tests/test_admin_session.py +++ b/tests/test_admin_session.py @@ -1,8 +1,8 @@ """Actual session authority, transport scope and throttle policies; RPC delivery is native.""" from policy_harness import ROOT, body, run -session=ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminSession.c' -bridge=ROOT/'addons/core/Scripts/Game/ERR/ERR_PlayerAdminCommands.c' -client=ROOT/'addons/core/Scripts/Game/ERR/ERR_ChatClient.c' +session=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c' +bridge=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c' +client=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c' valid=body(session,'bool Valid(') server=body(bridge,'protected ERR_AdminSession ERR_ServerSession(') # Execute the exact admission/token guard prefix, before session allocation. diff --git a/tests/test_admin_setting_policy.py b/tests/test_admin_setting_policy.py index c7b9f1b..e371efa 100644 --- a/tests/test_admin_setting_policy.py +++ b/tests/test_admin_setting_policy.py @@ -2,8 +2,8 @@ Native dispatch/storage and remote ownership remain separate tests. """ from policy_harness import ROOT,body,run -admin=ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminService.c' -settings=ROOT/'addons/core/Scripts/Game/ERR/ERR_Settings.c' +admin=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c' +settings=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c' rules='\n'.join(body(path,sig) for path,sig in ((admin,'static string CoreSetting('),(admin,'static bool Integer('),(settings,'static bool Valid('))) rules=(rules.replace('string ', 'std::string ').replace('out int ', 'int& ') .replace('text.Length()', 'int(text.size())').replace('.IsEmpty()', '.empty()') diff --git a/tests/test_admin_tick_delivery.py b/tests/test_admin_tick_delivery.py index 5ee056b..67bf54f 100644 --- a/tests/test_admin_tick_delivery.py +++ b/tests/test_admin_tick_delivery.py @@ -1,7 +1,7 @@ """Actual session Tick and journal router keep tool completions/feed deliveries separate.""" from policy_harness import ROOT, body, run -session=ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminSession.c' -admin=ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminService.c' +session=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminSession.c' +admin=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c' tick=body(session,'bool Tick(') reader=body(admin,'bool ReadJournal(') def adapt(s): diff --git a/tests/test_ai_stinger_admin.py b/tests/test_ai_stinger_admin.py index 33a6e1f..11b0625 100644 --- a/tests/test_ai_stinger_admin.py +++ b/tests/test_ai_stinger_admin.py @@ -2,10 +2,10 @@ from pathlib import Path import os from policy_harness import ROOT,body,run -P=Path(os.environ.get('ERR_HQ_ADMIN_SOURCE',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c'))) -S=ROOT/'addons/core/Scripts/Game/ERR/ERR_Settings.c' +P=Path(os.environ.get('ERR_HQ_ADMIN_SOURCE',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c'))) +S=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c' valid=body(S,'static bool Valid(').replace('string key','std::string key') -integer=body(ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminService.c','static bool Integer(') +integer=body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c','static bool Integer(') integer=(integer.replace('string text','std::string text').replace('out int value','int& value').replace('text.IsEmpty()','text.empty()').replace('text.Length()','int(text.size())').replace('text.Substring(','text.substr(').replace('"0123456789".IndexOf(', 'std::string("0123456789").find(').replace('< 0) return false;','== std::string::npos) return false;').replace('text.ToInt()','std::stoi(text)')) method=body(P,'protected void StingerSetting(') method=(method.replace('protected ','').replace('ERR_GameMode mode','ERR_GameMode* mode').replace('array','Array&').replace('mode.Settings().','mode->Settings()->').replace('ERR_CommandArguments.Integer','Integer').replace('mode->Settings()->Get(key).ToString()','std::to_string(mode->Settings()->Get(key))').replace('value.ToString()','std::to_string(value)').replace('int value;','int value=0;')) @@ -50,7 +50,7 @@ int main(){ execute=body(P,'override bool Execute(') assert execute.index('arguments.IndexOf("hq stinger ") == 0')') @@ -99,7 +99,7 @@ stop=body(P,'void Stop(') assert stop.index('s_Current = null')Active()').replace('aircraft.GetOrigin()', 'aircraft->GetOrigin()').replace('GetGame().GetWorld().GetWorldTime()', 'GetGame()->GetWorld()->GetWorldTime()').replace('GetGame().GetWorld()', 'GetGame()->GetWorld()') diff --git a/tests/test_aircraft_flight_policy.py b/tests/test_aircraft_flight_policy.py index 3c0f7ae..601a6f6 100644 --- a/tests/test_aircraft_flight_policy.py +++ b/tests/test_aircraft_flight_policy.py @@ -4,7 +4,7 @@ No native flight, callback ordering, collision or multiplayer claim. """ import re from policy_harness import ROOT, body, run -SOURCE=ROOT/'addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c' +SOURCE=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c' def cpp(s): return s.replace('protected ','').replace('ERR_AircraftFlightState.','State::').replace('ERR_AircraftFlightRules.','Rules::').replace('Math.','Math::').replace('CollectiveMode.','CollectiveMode::').replace('vector.','vector::').replace('SignalsManagerComponent signals','SignalsManagerComponent* signals').replace('signals.FindSignal','signals->FindSignal').replace('signals.GetSignalValue','signals->GetSignalValue') rules='\n'.join(cpp(body(SOURCE,s)) for s in ['static bool Terminal(', 'static bool Deadline(', 'static bool Envelope(', 'static bool Hover(', 'static bool Landed(', 'static float Vertical(', 'static int CancelAction(']) diff --git a/tests/test_aircraft_route_demand.py b/tests/test_aircraft_route_demand.py index 7695f53..0e1965c 100644 --- a/tests/test_aircraft_route_demand.py +++ b/tests/test_aircraft_route_demand.py @@ -1,10 +1,10 @@ """Execute actual route demand and control callback; native boundaries are fakes.""" from policy_harness import ROOT, body, run -BASE = ROOT / 'addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c' -ROUTE = ROOT / 'addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c' -RULES = ROOT / 'addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c' -PROBE = ROOT / 'addons/ai/Scripts/Game/ERR/ERR_NativeAircraftRouteProbe.c' +BASE = ROOT / 'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c' +ROUTE = ROOT / 'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c' +RULES = ROOT / 'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c' +PROBE = ROOT / 'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c' def cpp(text): diff --git a/tests/test_aircraft_route_envelope.py b/tests/test_aircraft_route_envelope.py index 335664e..0db5280 100644 --- a/tests/test_aircraft_route_envelope.py +++ b/tests/test_aircraft_route_envelope.py @@ -1,7 +1,7 @@ """Actual immutable corridor geometry and native-survey orchestration with fake traces.""" from policy_harness import ROOT, body, run -P=ROOT/'addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c' -BASE=ROOT/'addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c' +P=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c' +BASE=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c' def cpp(s): for name in ('Math','vector','ERR_AircraftRouteRules','ERR_AircraftFlightRules','SCR_TerrainHelper','TraceFlags'): s=s.replace(name+'.',name+'::') diff --git a/tests/test_aircraft_route_policy.py b/tests/test_aircraft_route_policy.py index cf796ff..7a4eed8 100644 --- a/tests/test_aircraft_route_policy.py +++ b/tests/test_aircraft_route_policy.py @@ -1,8 +1,8 @@ """Actual route entry/stage/cancellation bodies with physical/native boundaries stubbed.""" from policy_harness import ROOT, body, run -P=ROOT/'addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c' -BASE=ROOT/'addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c' -ENV=ROOT/'addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c' +P=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c' +BASE=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c' +ENV=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c' def cpp(s): s=s.replace('protected ','').replace('override ','').replace('super.', 'Base::') for a,b in [('ERR_AircraftFlightState.','State::'),('ERR_AircraftFlightRules.','FlightRules::'),('ERR_AircraftRouteRules.','RouteRules::'),('Math.','Math::'),('vector.','vector::')]:s=s.replace(a,b) diff --git a/tests/test_aircraft_route_probe.py b/tests/test_aircraft_route_probe.py index 4646e42..96b8424 100644 --- a/tests/test_aircraft_route_probe.py +++ b/tests/test_aircraft_route_probe.py @@ -1,6 +1,6 @@ """Execute route result policy and audit opt-in finite/native fixture boundaries.""" from policy_harness import ROOT, body, run -P=ROOT/'addons/ai/Scripts/Game/ERR/ERR_NativeAircraftRouteProbe.c' +P=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c' source=P.read_text() rules='\n'.join(body(P,k) for k in ('static bool Terminal(', 'static bool TranslateProof(', 'static bool PhysicalFinish(', 'static bool CanDispose(')).replace('ERR_AircraftFlightState.','State::') run('''#include @@ -61,7 +61,7 @@ for project,rounds,timeout,extra,message in cases: assert message in result.stderr, (project,rounds,timeout,extra,result.stderr) assert list(temporary.iterdir())==[], 'Refused route invocation must not create profiles or prefix locks' -chat=ROOT/'addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c' +chat=ROOT/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c' text=chat.read_text() assert 'm_ERRTestAircraftRoute = outcome == "aircraft-route";' in text assert 'if (m_ERRTestAircraftControl || m_ERRTestAircraftRoute || m_ERRTestAircraftField) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 330000;' in text @@ -167,7 +167,7 @@ for sig in ('void PrepareActions(', 'void PrepareHelicopter('): print('PASS: actual retained-service fixture entry, immutable controller/token/deadline/count bindings, observer getter and cleanup ownership ordering; native route validation pending') # Cancellation is a separate explicit variant; no arrival credit or second stop. -flight=ROOT/'addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c' +flight=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c' cancel_rules='\n'.join(body(P,k) for k in ('static bool CanStop(', 'static bool CancelProof(')).replace('ERR_AircraftFlightState.','State::').replace('ERR_AircraftFlightRules.Hover','Hover') run('''#include #include diff --git a/tests/test_aircraft_service.py b/tests/test_aircraft_service.py index 53a6927..eb59e30 100644 --- a/tests/test_aircraft_service.py +++ b/tests/test_aircraft_service.py @@ -1,7 +1,7 @@ """Actual finite service lifecycle methods; controller/physical APIs are fakes.""" from policy_harness import ROOT, body, run import re -P=ROOT/'addons/ai/Scripts/Game/ERR/ERR_AircraftService.c' +P=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftService.c' def cpp(s): s=s.replace('protected ','').replace('return null;', 'return nullptr;') @@ -135,7 +135,7 @@ print('PASS: actual finite registration, unique claims/tokens, retention/cancel/ # The existing route probe sees only its exact subtype; a field controller can # never be relabeled as route evidence through the shared retained base pointer. -route_probe=ROOT/'addons/ai/Scripts/Game/ERR/ERR_NativeAircraftRouteProbe.c' +route_probe=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c' getter=body(route_probe,'ERR_AircraftRouteFlight ERR_NativeOriginalFlight(') getter=getter.replace('ERR_AircraftRouteFlight.Cast(entry.Flight)','dynamic_cast(entry->Flight)').replace('ERR_AircraftRouteFlight ','Route* ').replace('ERR_AircraftServiceEntry entry','Entry* entry').replace('Vehicle aircraft','int aircraft').replace('null','nullptr') run(r'''#include diff --git a/tests/test_aircraft_translation.py b/tests/test_aircraft_translation.py index f2d36b0..ff94f44 100644 --- a/tests/test_aircraft_translation.py +++ b/tests/test_aircraft_translation.py @@ -1,6 +1,6 @@ """Actual bounded target/start/stage policy, with native boundaries substituted.""" from policy_harness import ROOT, body, run -SOURCE=ROOT/'addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c' +SOURCE=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c' def cpp(s): return s.replace('protected ','').replace('ERR_AircraftFlightState.','State::').replace('ERR_AircraftFlightRules.','FlightRules::').replace('ERR_AircraftTranslationRules.','Rules::').replace('Math.','Math::').replace('vector.','vector::').replace('SignalsManagerComponent signals','SignalsManagerComponent* signals').replace('signals.FindSignal','signals->FindSignal') rules='\n'.join(cpp(body(SOURCE,key)) for key in ('static bool Target(', 'static bool Reachable(', 'static vector Demand(', 'static bool Held(')) diff --git a/tests/test_archive_game_control.py b/tests/test_archive_game_control.py index 9d1dafa..ca8a5d7 100644 --- a/tests/test_archive_game_control.py +++ b/tests/test_archive_game_control.py @@ -13,7 +13,7 @@ from test_vanilla_game_control import BASE ORDINARY='''00 SCRIPT : Module: Game; defines: "PLATFORM_WINDOWS" 00 SCRIPT : ERR ORDINARY: header verified project=core systems=MissionSystems -00 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +00 SCRIPT : Reintroduced [mission]: phase 0 -> 1 00 SCRIPT : ERR ORDINARY: local participant verified project=core phase=prison ''' diff --git a/tests/test_archive_packed.py b/tests/test_archive_packed.py index 4a51896..410530f 100644 --- a/tests/test_archive_packed.py +++ b/tests/test_archive_packed.py @@ -156,7 +156,7 @@ class PackedChatArchiveTests(unittest.TestCase): for i,project in enumerate(archiver.ADDON_ORDER): name,guid,deps=runner.PACKED_PROJECTS[project] lines.extend([f"00 ENGINE : FileSystem: Adding package '{folder/project}/' (pak count: 1) to filesystem under name {name}", f"00 RESOURCES : ResourceDB: loading cache (id={i} name={name} path={folder/project}/resourceDatabase.rdb)"]) - lines.extend(['00 SCRIPT : Module: GameLib; defines: "PLATFORM_WINDOWS"','00 SCRIPT : Module: Game; defines: "PLATFORM_WINDOWS"','00 SCRIPT : ERR ORDINARY: header verified project=chat systems=MissionSystems','00 SCRIPT : ERR ORDINARY: local participant verified project=chat phase=prison','00 SCRIPT : Rereintroduced [mission]: phase 0 -> 1']) + lines.extend(['00 SCRIPT : Module: GameLib; defines: "PLATFORM_WINDOWS"','00 SCRIPT : Module: Game; defines: "PLATFORM_WINDOWS"','00 SCRIPT : ERR ORDINARY: header verified project=chat systems=MissionSystems','00 SCRIPT : ERR ORDINARY: local participant verified project=chat phase=prison','00 SCRIPT : Reintroduced [mission]: phase 0 -> 1']) return '\n'.join(lines)+'\n' def test_chat_preserves_all_fifteen_artifacts_and_schema(self): destination,status=archiver.archive(self.session,'packed-chat',self.root);self.assertEqual(status,0) diff --git a/tests/test_casualty_feedback.py b/tests/test_casualty_feedback.py index 7fa4cbd..372cd4b 100644 --- a/tests/test_casualty_feedback.py +++ b/tests/test_casualty_feedback.py @@ -1,8 +1,8 @@ """Execute production feedback control flow; no native UI or network claim.""" from policy_harness import ROOT, body, run -service = ROOT/'addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c' -action = ROOT/'addons/core/Scripts/Game/ERR/ERR_LoadCasualtyAction.c' -feedback = ROOT/'addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingFeedback.c' +service = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c' +action = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c' +feedback = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c' def convert(s): s=s.replace('protected ', '').replace('override ', '').replace('string.Empty','string{}').replace('.IsEmpty()', '.empty()') for ns in ['Replication','System','ERR_CasualtyFeedback','ERR_Phase','ERR_CasualtyLoadingRules']: diff --git a/tests/test_casualty_ground_policy.py b/tests/test_casualty_ground_policy.py index 775c4da..5ac7935 100644 --- a/tests/test_casualty_ground_policy.py +++ b/tests/test_casualty_ground_policy.py @@ -1,6 +1,6 @@ from policy_harness import ROOT, body, run import re -source = body(ROOT/'addons/core/Scripts/Game/ERR/ERR_CasualtyGroundSupport.c', 'static bool SupportHit(') +source = body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c', 'static bool SupportHit(') source = re.sub(r'(?\n' + source + ''' int main() { diff --git a/tests/test_casualty_incapacitation.py b/tests/test_casualty_incapacitation.py index 5fb514e..c5f1363 100644 --- a/tests/test_casualty_incapacitation.py +++ b/tests/test_casualty_incapacitation.py @@ -1,6 +1,6 @@ """Run the actual fixture method against a narrow native-damage API fake.""" from policy_harness import ROOT, body, run -p=ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeCasualtyLoadProbe.c' +p=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c' method=body(p,'protected bool IncapacitateGroundCasualty(') method=method.replace('protected bool','bool').replace('m_Damage.','m_Damage->').replace('resilience.','resilience->').replace('ERR_Actors.','ERR_Actors::').replace('null','nullptr') run(''' diff --git a/tests/test_casualty_loading_policy.py b/tests/test_casualty_loading_policy.py index 9243e9b..3bc6e62 100644 --- a/tests/test_casualty_loading_policy.py +++ b/tests/test_casualty_loading_policy.py @@ -1,6 +1,6 @@ from policy_harness import ROOT, body, run import re -path = ROOT/'addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c' +path = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c' source = '\n'.join(body(path, signature) for signature in [ 'static int RoundAction(', 'static bool ObserveTicket(', 'static bool Within(', 'static bool SettledFor(', 'static bool Ranges(', 'static bool AircraftMotion(']) # Enforce float literals are single precision; C++ otherwise promotes these to doubles. diff --git a/tests/test_casualty_remove_probe.py b/tests/test_casualty_remove_probe.py index 0671b4e..3c7dee8 100644 --- a/tests/test_casualty_remove_probe.py +++ b/tests/test_casualty_remove_probe.py @@ -1,7 +1,7 @@ """Fixture boundaries and actual safe-exit policy; not an engine substitute.""" from policy_harness import ROOT, body, run import re -source = ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeCasualtyRemoveProbe.c' +source = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c' method = body(source,'static bool SafeExit(') method = re.sub(r'(?\n'+method+''' @@ -29,11 +29,11 @@ assert 'if (m_RemoveStopped) return -1;' in body(source,'override int Tick(') for forbidden in ('GetOutVehicle(', 'GetOutVehicle_NoDoor(', 'KickFromVehicle(', 'SetUnconscious(', 'm_Casualty.Set', 'm_Casualty).Teleport', 'SetActive('): assert forbidden not in text,forbidden # Existing arbitrary-ground mechanism remains exactly its original contract. -base=ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeCasualtyLoadProbe.c' +base=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c' assert 'GetOutVehicle_NoDoor(exitTransform, true, false)' in body(base,'protected bool BeginExit(') assert 'exitTransform[3] = m_GroundPosition;' in body(base,'protected bool BeginExit(') assert body(base,'protected bool ExitSettled(').strip().endswith('return ERR_Actors.Alive(m_Casualty) && vector.Distance(m_Casualty.GetOrigin(), m_GroundPosition) < 4 && m_Seat.IsCompartmentAccessible();\n }') -base_text=(ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c').read_text() +base_text=(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c').read_text() assert base_text.count('m_ERRExtractionCase == "casualty-remove"') == 3 assert 'm_ERRCasualtyLoadProbe = new ERR_NativeCasualtyRemoveProbe(this);' in base_text assert 'm_ERRBaseStep = 802; Transition(ERR_Phase.DEFEAT);' in base_text diff --git a/tests/test_casualty_reservation_death.py b/tests/test_casualty_reservation_death.py index 4c599d9..6379abe 100644 --- a/tests/test_casualty_reservation_death.py +++ b/tests/test_casualty_reservation_death.py @@ -2,7 +2,7 @@ No synthetic fixture is claimed as network/owner-RPC proof. """ from policy_harness import ROOT, body, run -path = ROOT/'addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c' +path = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c' physical = body(path, 'protected bool PhysicalTicket(') physical = (physical.replace('protected ', '').replace('ERR_CasualtyLoadTicket ticket', 'Ticket* ticket') .replace('ticket.', 'ticket->').replace('m_Mode.', 'm_Mode->') diff --git a/tests/test_command_maintenance.py b/tests/test_command_maintenance.py index 1b7a5a0..3af0051 100644 --- a/tests/test_command_maintenance.py +++ b/tests/test_command_maintenance.py @@ -3,12 +3,12 @@ Checks scheduling/authority boundaries, not native aircraft, network or timing. """ from policy_harness import ROOT,body,run -MODE=ROOT/'addons/core/Scripts/Game/ERR/ERR_GameMode.c' -ACTORS=ROOT/'addons/core/Scripts/Game/ERR/ERR_Actors.c' +MODE=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c' +ACTORS=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c' def cpp(s): s=s.replace('protected ','').replace('Replication.IsServer()','server').replace('Replication.BumpMe()','Bump()') - s=s.replace('ERR_Phase.DEFEAT','5').replace('ERR_Phase.PRISON','1').replace('ERR_MissionRules.Terminal(m_Phase)','(m_Phase>=5)') + s=s.replace('ERR_Phase.DEFEAT','5').replace('ERR_Phase.PRISON','1').replace('ERR_Phase.RADIO_SEARCH','2').replace('ERR_MissionRules.Terminal(m_Phase)','(m_Phase>=5)') s=s.replace('array connected = {};','std::vector connected;').replace('foreach (int id : connected)','for (int id : connected)') s=s.replace('SCR_PlayerController controller = SCR_PlayerController.Cast(', 'Controller* controller = Controller::Cast(') s=s.replace('foreach (IEntity entity : m_OwnedEntities)','for (Entity* entity : m_OwnedEntities)') @@ -52,7 +52,7 @@ struct ForceBoundary {int clears=0;void Clear(){clears++;}}; struct Mode { ForceBoundary m_Forces,m_ForceAgents; int forceTicks=0;void TickForces(float){forceTicks++;} - bool m_Stopped=false,m_NativeEndHandled=false,m_StartedPlayers=false;int m_Phase=1; + bool m_Stopped=false,m_NativeEndHandled=false,m_StartedPlayers=false;int m_Phase=2; float m_NoSurvivorsSince=-1;std::string m_EndReason; Work extraction{0,"extraction",{}},radio{0,"radio",{}},recovery{0,"recovery",{}}; Work* m_Extraction=&extraction;Work* m_RadioDefence=&radio;Work* m_Recovery=&recovery; @@ -77,6 +77,12 @@ int main(){ assert((events==std::vector{"extraction","radio","recovery","maintain","observer","tactics","event"}));} // No command service is valid both with and without connected players. {reset();Mode m;m.ServerTick();players.count=1;m.ServerTick();assert(m.m_OnTick.calls==1);} + // During prison, maintenance/observers still work, but enemies receive no + // tactical updates or virtual route movement before the lockpick. + {reset();players.count=1;Mode m;m.m_Phase=1;Retained c;m.m_Command=&c; + m.ServerTick();assert(c.maintenance==1&&c.tactics==0&&m.forceTicks==0); + assert(players.controller.updates==1&&m.m_OnTick.calls==1); + m.m_Phase=2;m.ServerTick();assert(c.tactics==1&&m.forceTicks==1);} // Authority, preparation, terminal phase, native end and stopped service all // refuse maintenance as well as tactics. No stale clock/actor admission exists. for(int fault=0;fault<5;fault++){reset();Mode m;Retained c;m.m_Command=&c; diff --git a/tests/test_convoy_admission.py b/tests/test_convoy_admission.py index 1383dad..fa3265a 100644 --- a/tests/test_convoy_admission.py +++ b/tests/test_convoy_admission.py @@ -2,7 +2,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,body,run -path=Path(os.environ.get('ERR_CONVOY_SERVICE',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c'))) +path=Path(os.environ.get('ERR_CONVOY_SERVICE',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c'))) s=body(path,'protected bool Admit(').replace('protected ','') s=s.replace('SCR_AIVehicleUsageComponent.Cast(unit.Entity.FindComponent(SCR_AIVehicleUsageComponent))','&unit->Entity->usage').replace('ERR_HQ.Cast(m_Mode.Command())','m_Mode->Command()') s=s.replace('array','Array') diff --git a/tests/test_convoy_auto_settings.py b/tests/test_convoy_auto_settings.py index 3381c10..ee38954 100644 --- a/tests/test_convoy_auto_settings.py +++ b/tests/test_convoy_auto_settings.py @@ -3,7 +3,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,body,run BASE=Path(os.environ.get('ERR_CONVOY_SETTINGS_ROOT',ROOT)) -P=BASE/'addons/core/Scripts/Game/ERR/ERR_Settings.c' +P=BASE/'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c' keys=body(P,'static array Keys(').replace('array','std::vector') valid=body(P,'static bool Valid(') default=body(P,'static int AddedDefault(') @@ -44,14 +44,14 @@ int main(){ } ''') assert 'm_Values.Set("automaticConvoyEnabled", AddedDefault("automaticConvoyEnabled"));' in P.read_text() -admin=body(BASE/'addons/core/Scripts/Game/ERR/ERR_AdminService.c','void Execute(') +admin=body(BASE/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c','void Execute(') assert 'if (key == "automaticConvoyEnabled") line += " (saved for next round; current startup unchanged)";' in admin -provider=BASE/'addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c' +provider=BASE/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c' helper=body(provider,'protected void ConvoyAutoSetting(') for forbidden in ('StartConvoy','StartScenarioConvoy','Spawn','m_HQ.'): assert forbidden not in helper # Do not advertise this command-only setting as an editable field absent from the actual fixed menu. -menu=body(ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminMenu.c','static array Keys(') +menu=body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminMenu.c','static array Keys(') assert 'automaticConvoyEnabled' not in menu assert body(provider,'override bool Help(').count('replies.Insert(')<=4 print('PASS: actual read migrates old valid settings, preserves explicit disabled state, rejects invalid data; next-round feedback and fixed menu remain honest') diff --git a/tests/test_convoy_budget.py b/tests/test_convoy_budget.py index e8ffe86..01b884f 100644 --- a/tests/test_convoy_budget.py +++ b/tests/test_convoy_budget.py @@ -2,7 +2,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,run -p=Path(os.environ.get('ERR_CONVOY_BUDGET',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_ConvoyBudget.c'))) +p=Path(os.environ.get('ERR_CONVOY_BUDGET',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c'))) s=p.read_text();s=re.sub(r'//[^\n]*','',s).replace('protected ','').replace('ref ','').replace('class ','struct ') s=s.replace('array','Array').replace('array','Array') for typ in ['ERR_GameMode','ERR_ForceLedger','ERR_ForceRecord','ERR_ConvoyReceipt']: diff --git a/tests/test_convoy_combat.py b/tests/test_convoy_combat.py index 04fe81c..548f8a2 100644 --- a/tests/test_convoy_combat.py +++ b/tests/test_convoy_combat.py @@ -2,8 +2,8 @@ import os,re from pathlib import Path from policy_harness import ROOT,body,run -rules=Path(os.environ.get('ERR_CONVOY_COMBAT',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_ConvoyCombat.c'))) -service=Path(os.environ.get('ERR_CONVOY_SERVICE',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c'))) +rules=Path(os.environ.get('ERR_CONVOY_COMBAT',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c'))) +service=Path(os.environ.get('ERR_CONVOY_SERVICE',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c'))) accept=body(rules,'static bool Accept(') for cls in ['ERR_ConvoyCombatState','ERR_ConvoyCombatOrder']:accept=accept.replace(cls+' ',cls+'* ') accept=accept.replace('state.','state->').replace('order.','order->').replace('ERR_ForceRules.','ERR_ForceRules::') diff --git a/tests/test_convoy_dispatch.py b/tests/test_convoy_dispatch.py index 2caff08..0adb009 100644 --- a/tests/test_convoy_dispatch.py +++ b/tests/test_convoy_dispatch.py @@ -2,7 +2,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,body,run -path=Path(os.environ.get('ERR_CONVOY_SERVICE',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c'))) +path=Path(os.environ.get('ERR_CONVOY_SERVICE',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c'))) source=path.read_text() # Dispatch's native calls are doubled; budget behavior is executed separately. code=body(path,'ERR_ConvoyTask Dispatch(') @@ -107,7 +107,7 @@ print('PASS: actual convoy dispatch validates before receipt consumption, consum # The resource must suppress authored allocation before native EOnInit, not try # to purge a queued default squad after custom seat occupants have been added. -prefab=ROOT/'addons/ai/Prefabs/ERR/ConvoyCrew.et' +prefab=ROOT/'addons/core/Prefabs/ERR/ConvoyCrew.et' text=prefab.read_text() assert '"{000CD338713F2B5A}Prefabs/AI/Groups/Group_Base.et"' in text assert 'm_bSpawnImmediately 0' in text and 'm_faction "USSR"' in text diff --git a/tests/test_convoy_lifecycle.py b/tests/test_convoy_lifecycle.py index 98877c4..c44d0f8 100644 --- a/tests/test_convoy_lifecycle.py +++ b/tests/test_convoy_lifecycle.py @@ -2,7 +2,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,run -path=Path(os.environ.get('ERR_CONVOY_SERVICE',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c'))) +path=Path(os.environ.get('ERR_CONVOY_SERVICE',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyService.c'))) source=path.read_text();code=source[source.index('class ERR_ConvoyVehicle'):source.index('class ERR_ConvoyCargoCallback')] code=re.sub(r'//[^\n]*','',code).replace('class ERR_ConvoyVehicle','struct ERR_ConvoyVehicle').replace('ref ','') code=code.replace('array','Array').replace('array','Array').replace('array','Array') diff --git a/tests/test_convoy_placement.py b/tests/test_convoy_placement.py index ffedab2..52f85e4 100644 --- a/tests/test_convoy_placement.py +++ b/tests/test_convoy_placement.py @@ -1,7 +1,7 @@ """Execute actual footprint sampling and native query callback policy with API doubles.""" import re from policy_harness import ROOT,body,run -p=ROOT/'addons/ai/Scripts/Game/ERR/ERR_ConvoyPlacement.c' +p=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c' code='\n'.join(body(p,s) for s in ('protected bool Occupancy(', 'static bool Terrain(', 'bool Clear(')) code=code.replace('null','nullptr').replace('protected ','').replace('IEntity entity','IEntity* entity').replace('entity.GetVObject()', 'entity->GetVObject()') code=code.replace('TraceBox volume', 'TraceBox* volume').replace('volume.', 'volume->').replace('\"0 0.01 0\"', 'Vector(0,.01,0)') diff --git a/tests/test_convoy_road_plan.py b/tests/test_convoy_road_plan.py index b6a84ab..b58c136 100644 --- a/tests/test_convoy_road_plan.py +++ b/tests/test_convoy_road_plan.py @@ -2,7 +2,7 @@ import os,re from policy_harness import ROOT, body, run from pathlib import Path -p=Path(os.environ.get('ERR_CONVOY_ROAD_PLAN',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_ConvoyRoadPlan.c'))) +p=Path(os.environ.get('ERR_CONVOY_ROAD_PLAN',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c'))) code='\n'.join(body(p,s) for s in ('static bool Sample(', 'static bool CandidateStart(', 'static bool FromPolyline(', 'static bool Prefer(')) code=re.sub(r'//[^\n]*','',code) code=code.replace('out array','Array&').replace('array','Array') diff --git a/tests/test_convoy_startup.py b/tests/test_convoy_startup.py index 089e5aa..32d8faa 100644 --- a/tests/test_convoy_startup.py +++ b/tests/test_convoy_startup.py @@ -1,12 +1,12 @@ """Execute one-shot startup timing and actual HQ dispatch boundary; no native claim.""" from policy_harness import ROOT, body, run import re -p=ROOT/'addons/ai/Scripts/Game/ERR/ERR_ConvoyStartup.c' +p=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c' s=p.read_text().replace('protected ','').replace('ERR_ForceRules.','ERR_ForceRules::') s=s[s.index('class ERR_ConvoyStartup'):].replace('void ERR_ConvoyStartup(bool enabled)','void Initialize(bool enabled)') s=s.replace('bool m_Enabled;', 'bool m_Enabled=false;').replace('bool m_Finished;', 'bool m_Finished=false;').replace('float m_Next;', 'float m_Next=0;') s=s.replace('class ERR_ConvoyStartup', 'struct ERR_ConvoyStartup').rstrip()+';' -h=body(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c','protected void AutomaticConvoy(') +h=body(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c','protected void AutomaticConvoy(') h=h.replace('protected ','').replace('null','nullptr').replace('Replication.','Replication::').replace('ERR_GameMode.','ERR_GameMode::') for name in ('m_Mode','m_ConvoyStartup'):h=h.replace(name+'.',name+'->') run(r''' diff --git a/tests/test_dedicated_native.py b/tests/test_dedicated_native.py index b3f7e8f..6ef77e1 100644 --- a/tests/test_dedicated_native.py +++ b/tests/test_dedicated_native.py @@ -48,15 +48,15 @@ class DedicatedNativeTests(unittest.TestCase): self.assertEqual(runner.engine_args('header'), runner.engine_args('header', 'core')) expected = { 'core': ('2528466DE220D91C', '{AD62322D5213C440}Missions/ERR_Everon_Base.conf'), - 'chat': ('FA804F411BDDF2C6', '{C1E20667DCE324ED}Missions/ERR_Everon.conf'), + 'chat': ('2528466DE220D91C', '{C1E20667DCE324ED}Missions/ERR_Everon.conf'), } root = Path(__file__).parents[1] for project, (guid, header) in expected.items(): # Keep the CLI identities tied to the actual authored resources. - gproj = (root/'addons'/project/'addon.gproj').read_text() + gproj = (root/'addons/core'/'addon.gproj').read_text() self.assertIn('GUID "'+guid+'"', gproj) resource = header.split('}', 1)[1] - self.assertIn('Name "'+header+'"', (root/'addons'/project/(resource+'.meta')).read_text()) + self.assertIn('Name "'+header+'"', (root/'addons/core'/(resource+'.meta')).read_text()) for route in ('header', 'diag-world'): args = runner.engine_args(route, project) self.assertEqual(args[args.index('-addonsDir')+1], '/tmp/source/addons') @@ -74,14 +74,9 @@ class DedicatedNativeTests(unittest.TestCase): self.assertEqual(args[0], '/tmp/runtime/ArmaReforgerServerDiag') self.assertEqual(args[args.index('-server')+1], '{B6C516F86302C679}Worlds/ERR_Everon.ent') self.assertEqual(args[args.index('-worldSystemsConfig')+1], '{C50579A2EC48E8EF}Configs/Systems/MissionSystems.conf') - # Selecting Chat activates the existing declared closure, not invented - # runtime addons or an explicit list that could omit dependencies. - chat = (root/'addons/chat/addon.gproj').read_text().split('Dependencies', 1)[1] - dependencies = set(re.findall(r'"([A-F0-9]{16})"', chat)) - expected_dependencies = {'58D0FB3206B6F859'} - for project in ('core', 'ai', 'intel', 'map'): - expected_dependencies.add(re.search(r'GUID "([A-F0-9]{16})"', (root/'addons'/project/'addon.gproj').read_text())[1]) - self.assertEqual(dependencies, expected_dependencies) + definition = (root/'addons/core/addon.gproj').read_text() + dependencies = set(re.findall(r'"([A-F0-9]{16})"', re.search(r'Dependencies\s*\{([^}]+)', definition)[1])) + self.assertEqual(dependencies, {'58D0FB3206B6F859', '595F2BF2F44836FB', '629B2BA37EFFD577', '5E524E4FEECCA92B'}) def test_invalid_project_route_combinations_fail_before_files_or_processes(self): for route, project in [('vanilla-everon', 'chat'), ('unknown', 'core'), ('header', 'unknown')]: @@ -101,7 +96,7 @@ class DedicatedNativeTests(unittest.TestCase): launch.assert_not_called() self.assertIn('vanilla-everon cannot be combined with --project chat', stderr.getvalue()) - def addon_input(self, root, names=('core', 'ai', 'intel', 'map', 'chat')): + def addon_input(self, root, names=('core',)): repository = Path(__file__).parents[1] for addon in names: folder = root/'addons'/addon @@ -124,16 +119,15 @@ class DedicatedNativeTests(unittest.TestCase): source = Path(directory) self.addon_input(source, ('core',)) runner.preflight_addons(source, 'header') - with self.assertRaisesRegex(ValueError, 'ai'): - runner.preflight_addons(source, 'header', 'chat') + runner.preflight_addons(source, 'header', 'chat') runner.preflight_addons(Path('/not-a-real-addon-input'), 'vanilla-everon') def test_missing_core_dependency_and_empty_database_refuse_before_archive_or_process(self): for project, relative, empty in [ ('core', 'core/resourceDatabase.rdb', False), ('chat', 'core/addon.gproj', False), - ('chat', 'ai/resourceDatabase.rdb', False), - ('chat', 'map/resourceDatabase.rdb', True), + ('chat', 'core/resourceDatabase.rdb', False), + ('chat', 'core/resourceDatabase.rdb', True), ]: with self.subTest(project=project, relative=relative, empty=empty), tempfile.TemporaryDirectory() as directory: root = Path(directory); source=root/'source'; archive=root/'archive' @@ -163,7 +157,7 @@ class DedicatedNativeTests(unittest.TestCase): runner.preflight_addons(source, 'header') database.rmdir(); database.write_bytes(b'presence-only') project = source/'addons/core/addon.gproj' - project.write_text(project.read_text().replace('2528466DE220D91C', 'FA804F411BDDF2C6')) + project.write_text(project.read_text().replace('2528466DE220D91C', '1111111111111111')) with self.assertRaisesRegex(ValueError, 'identity mismatch'): runner.preflight_addons(source, 'header') with tempfile.TemporaryDirectory() as directory: diff --git a/tests/test_dedicated_preflight.py b/tests/test_dedicated_preflight.py index 6425bc0..b9515e3 100644 --- a/tests/test_dedicated_preflight.py +++ b/tests/test_dedicated_preflight.py @@ -17,9 +17,9 @@ class DedicatedPreflightTests(unittest.TestCase): self.source, self.runtime = root/'source', root/'runtime' self.runtime.mkdir() for project, header in tool.HEADERS.items(): - addon = self.source/'addons'/project + addon = self.source/'addons/core' path = addon/header - path.parent.mkdir(parents=True) + path.parent.mkdir(parents=True, exist_ok=True) (addon/'addon.gproj').write_text('GameProject { GUID "2528466DE220D91C" }') path.write_text('SCR_MissionHeader { World "'+tool.WORLD+'" SystemsConfig "'+tool.SYSTEMS+'" }') path.with_suffix('.conf.meta').write_text('MetaFileClass { Name "{AD62322D5213C440}'+header+'" }') diff --git a/tests/test_diagnostic_no_splash.py b/tests/test_diagnostic_no_splash.py index 03fe9e6..061f840 100644 --- a/tests/test_diagnostic_no_splash.py +++ b/tests/test_diagnostic_no_splash.py @@ -1,6 +1,6 @@ """Execute the actual opt-in Load body; no native engine or GUI is launched.""" from policy_harness import ROOT, body, run -source=ROOT/'addons/core/Scripts/GameLib/ERR/ERR_DiagnosticNoSplash.c' +source=ROOT/'addons/core/Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c' load=body(source,'override void Load()').replace('override void','void').replace('System.','System::').replace('super.Load()', 'Base::Load()') run('''#include #include diff --git a/tests/test_discovery_map_position.py b/tests/test_discovery_map_position.py index b80baec..71e62af 100644 --- a/tests/test_discovery_map_position.py +++ b/tests/test_discovery_map_position.py @@ -1,6 +1,6 @@ """Execute the production coordinate policy; native probe checks marker storage.""" from policy_harness import ROOT, body, run -source=ROOT/'addons/core/Scripts/Game/ERR/ERR_DiscoveryMap.c' +source=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c' policy=body(source,'static int Coordinate(').replace('Math.Round','std::round').replace('Math.Floor','std::floor') run('''#include #include diff --git a/tests/test_enemy_equipment.py b/tests/test_enemy_equipment.py index 8440658..8725380 100644 --- a/tests/test_enemy_equipment.py +++ b/tests/test_enemy_equipment.py @@ -2,7 +2,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,run -source=Path(os.environ.get('ERR_EQUIPMENT_SOURCE',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c'))).read_text() +source=Path(os.environ.get('ERR_EQUIPMENT_SOURCE',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c'))).read_text() code=source[:source.index('class ERR_EnemyEquipmentGroup')] code=re.sub(r'//[^\n]*','',code) code=code.replace('modded class SCR_AICombatComponent','struct SCR_AICombatComponent : NativeCombat') diff --git a/tests/test_enemy_gunner_skill.py b/tests/test_enemy_gunner_skill.py index 96489e4..13bdca5 100644 --- a/tests/test_enemy_gunner_skill.py +++ b/tests/test_enemy_gunner_skill.py @@ -2,8 +2,8 @@ import os,re from pathlib import Path from policy_harness import ROOT,run -helper=Path(os.environ.get('ERR_GUNNER_SOURCE', str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_EnemyGunnerSkill.c'))).read_text() -equipment=Path(os.environ.get('ERR_EQUIPMENT_SOURCE', str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c'))).read_text() +helper=Path(os.environ.get('ERR_GUNNER_SOURCE', str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c'))).read_text() +equipment=Path(os.environ.get('ERR_EQUIPMENT_SOURCE', str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c'))).read_text() def convert(s): s=re.sub(r'//[^\n]*','',s).replace('protected ','').replace('override ','') s=s.replace('ERR_HQ.Cast(mode.Command())','mode->Command()').replace('TurretCompartmentSlot.Cast(slot)','dynamic_cast(slot)') diff --git a/tests/test_enemy_optics.py b/tests/test_enemy_optics.py index 63167dc..ed6592c 100644 --- a/tests/test_enemy_optics.py +++ b/tests/test_enemy_optics.py @@ -2,10 +2,10 @@ from pathlib import Path import os,re from policy_harness import ROOT,run -P=Path(os.environ.get('ERR_OPTICS_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_EnemyOptics.c')) +P=Path(os.environ.get('ERR_OPTICS_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c')) s=P.read_text() assert 'GetGame(' not in s and 'CallLater' not in s and 'DeleteEntity' not in s -callback=(ROOT/'addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c').read_text().split('class ERR_EnemyEquipmentCallback',1)[1].split('class ERR_EnemyEquipmentEntry',1)[0] +callback=(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c').read_text().split('class ERR_EnemyEquipmentCallback',1)[1].split('class ERR_EnemyEquipmentEntry',1)[0] code='class ERR_EnemyEquipmentCallback'+callback+s code=re.sub(r'//[^\n]*','',code).replace('protected ','').replace('override ','').replace('class ','struct ') for src,dst in { diff --git a/tests/test_enemy_radio.py b/tests/test_enemy_radio.py index ea936f6..d165dd2 100644 --- a/tests/test_enemy_radio.py +++ b/tests/test_enemy_radio.py @@ -2,10 +2,10 @@ from pathlib import Path import os,re from policy_harness import ROOT,run -P=Path(os.environ.get('ERR_RADIO_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_EnemyRadio.c')) +P=Path(os.environ.get('ERR_RADIO_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c')) s=P.read_text() assert 'GetOrigin' not in s and 'CallLater' not in s and 'Math.Random' not in s -callback=(ROOT/'addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c').read_text().split('class ERR_EnemyEquipmentCallback',1)[1].split('class ERR_EnemyEquipmentEntry',1)[0] +callback=(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c').read_text().split('class ERR_EnemyEquipmentCallback',1)[1].split('class ERR_EnemyEquipmentEntry',1)[0] code='class ERR_EnemyEquipmentCallback'+callback+s code=re.sub(r'//[^\n]*','',code).replace('protected ','').replace('override ','').replace('class ','struct ') code=code.replace('InventoryStorageManagerComponent.Cast(actor.FindComponent(InventoryStorageManagerComponent))','actor->inventory') @@ -20,7 +20,7 @@ for name in ('actor','inventory','item','radio','agent','m_Group','m_Operation', code=re.sub(r'\b'+name+r'\.',name+'->',code) code=re.sub(r'\b(bool|int|IEntity|SCR_AIGroup|ERR_EnemyEquipmentCallback\*) (\w+);',r'\1 \2{};',code) code=code.replace('\n}\n','\n};\n') -equipment=Path(os.environ.get('ERR_EQUIPMENT_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c')).read_text() +equipment=Path(os.environ.get('ERR_EQUIPMENT_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c')).read_text() coordinator=equipment[equipment.index('class ERR_EnemyEquipmentGroup'):] coordinator=re.sub(r'//[^\n]*','',coordinator).replace('protected ','').replace('ref ','').replace('class ','struct ') coordinator=coordinator.replace('array','Array').replace('array','Array').replace('array','Array') diff --git a/tests/test_environment_policy.py b/tests/test_environment_policy.py index 477dd00..fb53c8f 100644 --- a/tests/test_environment_policy.py +++ b/tests/test_environment_policy.py @@ -4,9 +4,9 @@ Calendar validity expectations come from Python's independent datetime calendar. from datetime import date import re from policy_harness import ROOT, body, run -settings = ROOT/'addons/core/Scripts/Game/ERR/ERR_Settings.c' -service = ROOT/'addons/core/Scripts/Game/ERR/ERR_EnvironmentService.c' -admin = ROOT/'addons/core/Scripts/Game/ERR/ERR_AdminService.c' +settings = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c' +service = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c' +admin = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c' def translate(source): source = (source.replace('string ', 'std::string ').replace('out int ', 'int& ') diff --git a/tests/test_escape_result_wording.py b/tests/test_escape_result_wording.py index 5ad1663..cf8d1df 100644 --- a/tests/test_escape_result_wording.py +++ b/tests/test_escape_result_wording.py @@ -4,7 +4,7 @@ No native replication, end-screen rendering or multiplayer claim. import re from policy_harness import ROOT, body, run -SOURCE=ROOT/'addons/core/Scripts/Game/ERR/ERR_EscapeGameOverScreenInfo.c' +SOURCE=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c' methods='\n'.join(body(SOURCE, signature) for signature in ( 'protected ERR_PersonalEscapeResult PersonalResult(', 'override string GetTitle(', diff --git a/tests/test_external_addons.py b/tests/test_external_addons.py index c89aa91..cbcd421 100644 --- a/tests/test_external_addons.py +++ b/tests/test_external_addons.py @@ -32,7 +32,7 @@ class ExternalAddonsTests(unittest.TestCase): self.assertTrue(ext.resource_allowed(self.value,{item['addon']},item['guid'],path)) self.assertFalse(ext.resource_allowed(self.value,{'core'},item['guid'],path)) self.assertFalse(ext.resource_allowed(self.value,{item['addon']},'0000000000000000',path)) - self.assertEqual(ext.direct_for('core'),set());self.assertEqual(ext.direct_for('chat'),set()) + self.assertEqual(ext.direct_for('core'),set(ext.DIRECT));self.assertEqual(ext.direct_for('chat'),set()) def test_policy_rejects_original_transitive_dependency(self): root=self.home/'root';(root/'docs').mkdir(parents=True) value=copy.deepcopy(self.value);value['addons'][ext.DIRECT[0]]['dependencies'].append('5F16D7E4A1CBE075') diff --git a/tests/test_external_profile_review.py b/tests/test_external_profile_review.py index 175b87c..38fd420 100644 --- a/tests/test_external_profile_review.py +++ b/tests/test_external_profile_review.py @@ -40,7 +40,7 @@ class ReviewTests(existing.ExternalAddonsTests): from unittest.mock import patch self.home.joinpath('docs').mkdir();import json policy=self.home/'docs/external-addons.json';policy.write_text(json.dumps(self.value)) - context=n.external_request('ai',self.source,self.home);session=self.home/'session';session.mkdir() + context=n.external_request('core',self.source,self.home);session=self.home/'session';session.mkdir() with patch.object(n,'external_installed',ext.installed): n.capture_external(context,session) folder=self.source/ext.DIRECT[0]/'Scripts';folder.mkdir() diff --git a/tests/test_extraction_placement_policy.py b/tests/test_extraction_placement_policy.py index 45eba24..0015d7c 100644 --- a/tests/test_extraction_placement_policy.py +++ b/tests/test_extraction_placement_policy.py @@ -1,6 +1,6 @@ """Execute production time policies; do not claim native simulation coverage.""" from policy_harness import ROOT, body, run -source = ROOT/'addons/core/Scripts/Game/ERR/ERR_ExtractionPlacement.c' +source = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c' methods = '\n'.join(body(source, signature) for signature in ( 'static bool CanWake(', 'static bool Fresh(', 'static bool QualificationAllowed(', 'static bool Stable(')) run('#include \n' + methods + ''' @@ -40,12 +40,12 @@ assert poll.index('m_WakeCount = 1;') < poll.index('physics.SetActive(') assert 'fuel.HasFuel() && ERR_CasualtyLoadingRules.AircraftReady(m_Aircraft)' in poll for forbidden in ('SetVelocity(', 'SetAngularVelocity(', 'SetTransform(', 'SetWorldTransform(', 'Teleport(', 'ApplyImpulse', 'EnableDamageHandling('): assert forbidden not in text, forbidden -site = (ROOT/'addons/core/Scripts/Game/ERR/ERR_SiteService.c').read_text() +site = (ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c').read_text() assert 'if (m_ExtractionPlacement) m_ExtractionPlacement.Stop();' in site assert 'Fail(m_ExtractionPlacement.FailureReason())' in site assert 'pendingGuards > 0 || aircraftPlacement == ERR_PrepareResult.PENDING' in site assert 'SetSpawnImmediately(false)' in site and 'PurgeSpawnRequestsForGroup' in site -probe = (ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeCasualtyGroundProbe.c').read_text() +probe = (ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c').read_text() assert 'placement.Ready() && placement.WakeCount() == 1' in probe assert 'SetActive(' not in probe print('PASS: actual one-shot deadline/stability policies and preparation ownership, fuel, cleanup integration contracts') diff --git a/tests/test_failure_result_refresh.py b/tests/test_failure_result_refresh.py index ecc54a0..1f0ed69 100644 --- a/tests/test_failure_result_refresh.py +++ b/tests/test_failure_result_refresh.py @@ -4,8 +4,8 @@ from pathlib import Path REPO=Path(os.environ.get('ERR_REPO','/home/jakub/devel/escapistsrereintroduced')) sys.path.insert(0,str(REPO/'tests')) from policy_harness import body,run -SOURCE=Path(os.environ.get('ERR_RESULT_SOURCE',REPO/'addons/core/Scripts/Game/ERR/ERR_EscapeGameOverScreenInfo.c')) -MODE=Path(os.environ.get('ERR_MODE_SOURCE',REPO/'addons/core/Scripts/Game/ERR/ERR_GameMode.c')) +SOURCE=Path(os.environ.get('ERR_RESULT_SOURCE',REPO/'addons/core/Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c')) +MODE=Path(os.environ.get('ERR_MODE_SOURCE',REPO/'addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c')) def adapt(s): s=s.replace('protected ','').replace('override ','').replace('null','nullptr') s=s.replace('ERR_GameMode.Get()','Mode::Get()').replace('ERR_GameMode mode','Mode* mode') diff --git a/tests/test_force_ledger.py b/tests/test_force_ledger.py index a7485cd..4458cab 100644 --- a/tests/test_force_ledger.py +++ b/tests/test_force_ledger.py @@ -1,8 +1,8 @@ """Execute actual bounded force ledger and dormant route bodies without engine claims.""" from policy_harness import ROOT, body, run import re -L=ROOT/'addons/core/Scripts/Game/ERR/ERR_ForceLedger.c' -S=ROOT/'addons/core/Scripts/Game/ERR/ERR_ForceSimulation.c' +L=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_ForceLedger.c' +S=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c' def cpp(s): for old,new in [('protected ',''),('static ', 'static '),('Math.','Math::'),('vector.','vector::'), ('ERR_ForceRules.','ERR_ForceRules::'),('ERR_ForceKind.','ERR_ForceKind::'), diff --git a/tests/test_guard_cancellation_policy.py b/tests/test_guard_cancellation_policy.py index 06b4ab2..bb52f05 100644 --- a/tests/test_guard_cancellation_policy.py +++ b/tests/test_guard_cancellation_policy.py @@ -1,6 +1,6 @@ """Run actual ownership cancellation/Stop bodies with shared-array fixtures.""" from policy_harness import ROOT, body, run -p=ROOT/'addons/core/Scripts/Game/ERR/ERR_SiteService.c' +p=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c' s='\n'.join(body(p, sig) for sig in ('void CancelInitialGuardRequests(', 'void Stop(')) for old,new in [ ('GetGame().','GetGame()->'), diff --git a/tests/test_headless_game_runner.py b/tests/test_headless_game_runner.py index 25ea6fd..3fabcfb 100644 --- a/tests/test_headless_game_runner.py +++ b/tests/test_headless_game_runner.py @@ -187,7 +187,7 @@ class GameRunnerTests(unittest.TestCase): runner.validate_paths(base/'source', base/'steam', compat, profile) def test_command_is_ordinary_game_with_explicit_successor_identity(self): - for project, guid in [('core', '2528466DE220D91C'), ('chat', 'FA804F411BDDF2C6')]: + for project, guid in [('core', '2528466DE220D91C'), ('chat', '2528466DE220D91C')]: command = runner.command_for(runner.ROOT, Path('/Steam'), Path('/compat'), Path('/profile'), project) self.assertEqual(command[command.index('--')+3], '/Steam/steamapps/common/Arma Reforger/ArmaReforgerSteam.exe') self.assertFalse(any('ArmaReforger_BE.exe' in arg or 'ArmaReforgerSteamDiag.exe' in arg for arg in command)) @@ -213,17 +213,17 @@ class GameRunnerTests(unittest.TestCase): def test_ready_requires_game_module_without_workbench_and_normal_phase(self): module = 'SCRIPT : Module: Game; loaded 12x files; defines: "PLATFORM_WINDOWS,ENABLE_DIAG"; CRC32: a\n' - phase = 'SCRIPT : Rereintroduced [mission]: phase 0 -> 1\nSCRIPT : ERR ORDINARY: header verified project=core systems=MissionSystems\nSCRIPT : ERR ORDINARY: local participant verified project=core phase=prison\n' + phase = 'SCRIPT : Reintroduced [mission]: phase 0 -> 1\nSCRIPT : ERR ORDINARY: header verified project=core systems=MissionSystems\nSCRIPT : ERR ORDINARY: local participant verified project=core phase=prison\n' self.assertTrue(runner.game_evidence(module+phase)['ready']) self.assertFalse(runner.game_evidence(phase)['ready']) self.assertFalse(runner.game_evidence(module)['ready']) self.assertFalse(runner.game_evidence(module.replace('ENABLE_DIAG', 'WORKBENCH')+phase)['ready']) - for error in ['SCRIPT (E): failure', 'RESOURCES (E): missing', 'ERR SMOKE PASS: fixture leaked', 'Rereintroduced: scenario preparation failed']: + for error in ['SCRIPT (E): failure', 'RESOURCES (E): missing', 'ERR SMOKE PASS: fixture leaked', 'Reintroduced: scenario preparation failed']: self.assertTrue(runner.game_evidence(module+phase+error)['failed']) def test_startup_requires_selected_header_and_actual_systems_marker(self): module = 'SCRIPT : Module: Game; defines: "PLATFORM_WINDOWS"; CRC32: a\n' - phase = 'SCRIPT : Rereintroduced [mission]: phase 0 -> 1\n' + phase = 'SCRIPT : Reintroduced [mission]: phase 0 -> 1\n' core = 'SCRIPT : ERR ORDINARY: header verified project=core systems=MissionSystems\nSCRIPT : ERR ORDINARY: local participant verified project=core phase=prison\n' chat = 'SCRIPT : ERR ORDINARY: header verified project=chat systems=MissionSystems\nSCRIPT : ERR ORDINARY: local participant verified project=chat phase=prison\n' self.assertFalse(runner.game_evidence(module+phase, 'core')['ready']) @@ -238,7 +238,7 @@ class GameRunnerTests(unittest.TestCase): def test_world_without_normal_local_admission_is_not_ready(self): world = ('SCRIPT : Module: Game; defines: "PLATFORM_WINDOWS"; CRC32: a\n' - 'SCRIPT : Rereintroduced [mission]: phase 0 -> 1\n' + 'SCRIPT : Reintroduced [mission]: phase 0 -> 1\n' 'SCRIPT : ERR ORDINARY: header verified project=core systems=MissionSystems\n') result = runner.game_evidence(world, 'core') self.assertTrue(result['scenario_header_verified']) diff --git a/tests/test_hint_delivery.py b/tests/test_hint_delivery.py index a8fa18d..e055ac3 100644 --- a/tests/test_hint_delivery.py +++ b/tests/test_hint_delivery.py @@ -2,8 +2,8 @@ from policy_harness import ROOT, body, run from pathlib import Path import os -GUIDE=Path(os.environ.get('ERR_GUIDE_SOURCE', ROOT/'addons/core/Scripts/Game/ERR/ERR_PlayerGuide.c')) -OBSERVER=ROOT/'addons/core/Scripts/Game/ERR/ERR_Observer.c' +GUIDE=Path(os.environ.get('ERR_GUIDE_SOURCE', ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c')) +OBSERVER=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c' def cpp(text): text=text.replace('protected ', '').replace('override ', '').replace('super.OnControlledEntityChanged(from, to);', 'nativeChanges++;') for name in ('ERR_GameMode','ERR_Phase','ERR_ObserverReason','ERR_Actors','ERR_ObjectiveText','SCR_HintManagerComponent','ERR_ObserverGuidance','Resource','ETransformMode','SCR_ManualCamera','SCR_RespawnSystemComponent','RplId'): diff --git a/tests/test_hq_ammo_dispatch.py b/tests/test_hq_ammo_dispatch.py index db1d971..446bc0f 100644 --- a/tests/test_hq_ammo_dispatch.py +++ b/tests/test_hq_ammo_dispatch.py @@ -1,6 +1,6 @@ """Delivered ammo gates new tasks without becoming active-order cancellation.""" from policy_harness import ROOT, body, run -H=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c' +H=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c' for method in ('protected void Investigate(', 'protected void Retask(', 'protected void Assign('): s=body(H,method) assert 'if (m_Watch.ArmedSearchBlocked(unit.ForceSourceId, now)) continue;' in s diff --git a/tests/test_hq_ammo_reporting.py b/tests/test_hq_ammo_reporting.py index 1b6e52e..7a80b98 100644 --- a/tests/test_hq_ammo_reporting.py +++ b/tests/test_hq_ammo_reporting.py @@ -3,9 +3,9 @@ from pathlib import Path import os,re from policy_harness import ROOT,body,run BASE=Path(os.environ.get('ERR_AMMO_REPORTING_ROOT',ROOT)) -P=BASE/'addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c' -H=BASE/'addons/ai/Scripts/Game/ERR/ERR_HQ.c' -A=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c' +P=BASE/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c' +H=BASE/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c' +A=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c' def cpp(s): s=s.replace('protected ','').replace('ERR_HQPursuitRules.', 'ERR_HQPursuitRules::').replace('string.Format','Format') diff --git a/tests/test_hq_ammo_sampler.py b/tests/test_hq_ammo_sampler.py index 261555a..f6596ec 100644 --- a/tests/test_hq_ammo_sampler.py +++ b/tests/test_hq_ammo_sampler.py @@ -2,7 +2,7 @@ from pathlib import Path import os,re from policy_harness import ROOT,run -P=Path(os.environ.get('ERR_AMMO_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c')) +P=Path(os.environ.get('ERR_AMMO_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c')) s=P.read_text() for forbidden in ('Spawn','SetAmmoCount','GetOrigin','GetWorld','GetAgents','TryMove','DeleteEntity'): assert forbidden not in s,forbidden diff --git a/tests/test_hq_assignment_lifecycle.py b/tests/test_hq_assignment_lifecycle.py index 0c1daa6..5761bd1 100644 --- a/tests/test_hq_assignment_lifecycle.py +++ b/tests/test_hq_assignment_lifecycle.py @@ -1,7 +1,7 @@ """Execute actual HQ assignment ownership and failed-radio backoff bodies.""" from policy_harness import ROOT, body, run import re -p=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c' +p=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c' unit='\n'.join(body(p,s) for s in ('void CancelPending(', 'ERR_HQTask PlannedTask(', 'void ReleaseAssignment(', 'void Release()')) lost='\n'.join(body(p,s) for s in ('protected void FinishWatch(', 'protected void LostOrder(')).replace('protected ', '') def adapt(code): diff --git a/tests/test_hq_body_observer.py b/tests/test_hq_body_observer.py index 5029639..ec245bc 100644 --- a/tests/test_hq_body_observer.py +++ b/tests/test_hq_body_observer.py @@ -2,7 +2,7 @@ from policy_harness import ROOT, run from pathlib import Path import re, os -path=Path(os.environ.get('ERR_BODY_SOURCE', str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQBodyObserver.c'))) +path=Path(os.environ.get('ERR_BODY_SOURCE', str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c'))) s=path.read_text() assert 'GroupLookup' not in s and 'Spawn(' not in s and 'Accept(' not in s and 'm_Contacts' not in s assert 'GetPlayerManager' not in s and 'DeleteEntity' not in s and 'GetTargets' not in s diff --git a/tests/test_hq_convoy_combat.py b/tests/test_hq_convoy_combat.py index 5076665..de79387 100644 --- a/tests/test_hq_convoy_combat.py +++ b/tests/test_hq_convoy_combat.py @@ -1,7 +1,7 @@ """Execute production HQ convoy planning/delivery with detached reports and radio-boundary doubles.""" from policy_harness import ROOT, body, run import re -H = ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c' +H = ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c' def cpp(s): s=s.replace('protected ', '').replace('null','nullptr').replace('foreach (','for (') diff --git a/tests/test_hq_convoy_dispatch.py b/tests/test_hq_convoy_dispatch.py index 3a93467..ec318f0 100644 --- a/tests/test_hq_convoy_dispatch.py +++ b/tests/test_hq_convoy_dispatch.py @@ -2,10 +2,10 @@ from policy_harness import ROOT,body,run import re,os from pathlib import Path -H=Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c')) -P=Path(os.environ.get('ERR_HQ_ADMIN_SOURCE',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c'))) +H=Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c')) +P=Path(os.environ.get('ERR_HQ_ADMIN_SOURCE',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c'))) BASE=Path(os.environ.get('ERR_CONVOY_SETTINGS_ROOT', ROOT)) -A=BASE/'addons/core/Scripts/Game/ERR/ERR_AdminService.c' +A=BASE/'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c' def cpp(s): for old,new in [('protected ',''),('override ',''),('null','nullptr'),('Replication.','Replication::'), ('ERR_GameMode.','ERR_GameMode::'),('ERR_ConvoyRoadPlan.','ERR_ConvoyRoadPlan::'), @@ -30,7 +30,7 @@ hq='\n'.join(cpp(body(H,s)) for s in ('static bool MissionActive(', 'bool Prepar 'bool StartScenarioConvoy(', 'string ConvoyStatus(')) provider=cpp(body(P,'protected void ConvoyAutoSetting('))+cpp(body(P,'protected void StingerSetting('))+cpp(body(P,'override bool Execute(')) integer=cpp(body(A,'static bool Integer(')) -validator=cpp(body(BASE/'addons/core/Scripts/Game/ERR/ERR_Settings.c','static bool Valid(')) +validator=cpp(body(BASE/'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c','static bool Valid(')) extension=cpp(body(A,'protected bool Extension(')) # Execute the exact complete auth/normalization/extension-dispatch region. # Unrelated settings/help parsers after this boundary are covered by their own suites. diff --git a/tests/test_hq_coverage.py b/tests/test_hq_coverage.py index 8fd790a..4157819 100644 --- a/tests/test_hq_coverage.py +++ b/tests/test_hq_coverage.py @@ -1,7 +1,7 @@ """Actual bounded negative-search coverage rules; physical radio delivery is HQ's boundary.""" from policy_harness import ROOT, body, run -P=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQCoverage.c' -PURSUIT=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c' +P=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQCoverage.c' +PURSUIT=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c' def cpp(s): return (s.replace('protected ', '').replace('Math.', 'Math::').replace('vector.', 'vector::') diff --git a/tests/test_hq_delivered_casualties.py b/tests/test_hq_delivered_casualties.py index 4a1f1ed..88cb555 100644 --- a/tests/test_hq_delivered_casualties.py +++ b/tests/test_hq_delivered_casualties.py @@ -2,7 +2,7 @@ from pathlib import Path import re from policy_harness import ROOT, run -s=(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQDeliveredCasualties.c').read_text() +s=(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c').read_text() assert all(token not in s for token in ('IEntity','GetOrigin','GetWorld','GetPlayer','IsDestroyed','GetLifeState')) code=s.replace('class ','struct ').replace('protected ','').replace('ref ','').replace('Math.','Math::') code=code.replace('array slots','Array* slots').replace('slots.', 'slots->') diff --git a/tests/test_hq_delivered_task.py b/tests/test_hq_delivered_task.py index 32440f1..6788dd8 100644 --- a/tests/test_hq_delivered_task.py +++ b/tests/test_hq_delivered_task.py @@ -2,8 +2,8 @@ from pathlib import Path import os,re from policy_harness import ROOT,body,run -P=Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c')) -ROAD=Path(os.environ.get('ERR_HQ_ROAD_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQRoadIntercept.c')) +P=Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c')) +ROAD=Path(os.environ.get('ERR_HQ_ROAD_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c')) def cpp(s): s=s.replace('protected ','').replace('null','nullptr').replace('string.Format','Format') for name in ('Math','ERR_GameMode','SCR_EntityHelper','ERR_HQPursuitRules','AIWaypoint','ERR_Actors','ERR_Resources','ERR_ForceDuty','ERR_HQRoadIntercept','ERR_ForceRules','ERR_HQPursuitRole','ERR_HQMemoryKind'): @@ -20,7 +20,7 @@ def cpp(s): units='\n'.join(cpp(body(P,x)) for x in ('void CancelPending(', 'ERR_HQTask PlannedTask(', 'void ReleaseAssignment(', 'void Release()')) methods='\n'.join(cpp(body(P,x)) for x in ('protected void FinishWatch(', 'protected void ReleaseUnit(', 'protected void LostOrder(', 'protected void DeliverOrder(')) cleanup=cpp(body(P,' foreach (ERR_HQUnit unit : m_Units)\n {\n if (!unit.Assignment && !unit.PendingOrder) continue;\n if (!unit.PlanEligible || assigned > globalLimit)')) -R=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c' +R=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c' rules='\n'.join(cpp(body(R,x)) for x in ('static bool Finite(', 'static bool PositionValid(', 'static bool Actionable(', 'static bool Heading(', 'static ERR_HQPursuitRole Role(')) eligible=cpp(body(ROAD,'static bool Eligible(')) run(r''' diff --git a/tests/test_hq_doctrine.py b/tests/test_hq_doctrine.py index e090cfa..09dccdb 100644 --- a/tests/test_hq_doctrine.py +++ b/tests/test_hq_doctrine.py @@ -1,6 +1,6 @@ """Execute the actual objective-inference rules; audit the HQ ingestion boundaries.""" from policy_harness import ROOT, body, run -P=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQDoctrine.c' +P=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c' methods='\n'.join(body(P,x) for x in ('static float Threat(', 'static bool Forward(', 'static vector Approach(')) methods=methods.replace('Math.','Math::').replace('vector.','vector::').replace('ERR_HQPursuitRules.','ERR_HQPursuitRules::').replace('float alignment;', 'float alignment=0;') run(r''' @@ -37,7 +37,7 @@ int main(){ auto same=Doctrine::Approach(origin,origin);assert(same.x==origin.x&&same.z==origin.z); } ''') -hq=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c' +hq=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c' a=body(hq,'protected void Accept(') assert 'm_Memory.Ingest(report, now)' in a and 'm_Coverage.Forget(report.Position)' in a sweep=body(hq,'protected void AcceptSweep(') diff --git a/tests/test_hq_local_handoff.py b/tests/test_hq_local_handoff.py index 19e0178..e746ead 100644 --- a/tests/test_hq_local_handoff.py +++ b/tests/test_hq_local_handoff.py @@ -2,8 +2,8 @@ from pathlib import Path import os,re from policy_harness import ROOT,body,run -network=Path(os.environ.get('ERR_NETWORK_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c')) -helper=Path(os.environ.get('ERR_HANDOFF_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQLocalHandoff.c')) +network=Path(os.environ.get('ERR_NETWORK_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c')) +helper=Path(os.environ.get('ERR_HANDOFF_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c')) # Reuse the existing native graph syntax translation, not its policy doubles. base=Path(os.environ.get('ERR_NETWORK_HARNESS',ROOT/'tests/hq_network_regression.py')).read_text() ns={'__file__':str(ROOT/'tests/hq_network_regression.py')} diff --git a/tests/test_hq_local_handoff_intake.py b/tests/test_hq_local_handoff_intake.py index f906aa3..b89e649 100644 --- a/tests/test_hq_local_handoff_intake.py +++ b/tests/test_hq_local_handoff_intake.py @@ -2,7 +2,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,body,run -p=Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c')) +p=Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c')) s='\n'.join(body(p,x) for x in ('protected bool OriginOccupied(', 'protected ERR_HQRoute ObservationRoute(', 'protected void Observe(', 'protected void QueueReports(')) s=s.replace('protected ','').replace('array','Arr').replace('array','Arr').replace('foreach (','for (') for name in ('ERR_HQUnit','ERR_HQRoute','ERR_HQReport','ERR_HQVisualContact'): diff --git a/tests/test_hq_memory.py b/tests/test_hq_memory.py index 3597b4e..4c9359b 100644 --- a/tests/test_hq_memory.py +++ b/tests/test_hq_memory.py @@ -4,7 +4,7 @@ No fake world polling: identity stubs deliberately have no position/health API. """ import re from policy_harness import ROOT, run -path = ROOT / 'addons/ai/Scripts/Game/ERR/ERR_HQMemory.c' +path = ROOT / 'addons/core/Scripts/Game/ERR/10_AI/ERR_HQMemory.c' source = path.read_text() for forbidden in ('GetOrigin(', 'GetControlledEntity(', 'GetPlayerManager(', 'GetDamageManager(', 'GetWorld('): assert forbidden not in source diff --git a/tests/test_hq_pursuit.py b/tests/test_hq_pursuit.py index a98ec82..23a00da 100644 --- a/tests/test_hq_pursuit.py +++ b/tests/test_hq_pursuit.py @@ -1,7 +1,7 @@ """Execute actual delivered-belief pursuit rules as C++; no engine/AI behavior claim.""" import re from policy_harness import ROOT, body, run -P = ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c' +P = ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c' source = P.read_text() methods = '\n'.join(body(P, signature) for signature in ( 'static bool Finite(', 'static bool PositionValid(', 'static int Limit(', 'static bool Actionable(', diff --git a/tests/test_hq_radio_node.py b/tests/test_hq_radio_node.py index 48e6f23..920d9cd 100644 --- a/tests/test_hq_radio_node.py +++ b/tests/test_hq_radio_node.py @@ -2,7 +2,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,run -p=Path(os.environ.get('ERR_NETWORK_SOURCE', ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c')) +p=Path(os.environ.get('ERR_NETWORK_SOURCE', ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQNetwork.c')) s=p.read_text();a=s.index('bool Valid(');b=s.index('{',a);end=b+1;depth=1 while depth:depth+=(s[end]=='{')-(s[end]=='}');end+=1 code=s[a:end].replace('ERR_GameMode factions = ERR_GameMode.Get()', 'ERR_GameMode* factions = ERR_GameMode::Get()') diff --git a/tests/test_hq_report_selection.py b/tests/test_hq_report_selection.py index 5960b25..ddb4084 100644 --- a/tests/test_hq_report_selection.py +++ b/tests/test_hq_report_selection.py @@ -2,8 +2,8 @@ from policy_harness import ROOT, body, run from pathlib import Path import os -source = ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQObservation.c' -hq = Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c')) +source = ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQObservation.c' +hq = Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c')) select = body(source, 'ERR_HQVisualContact Select(') select = select.replace('array samples', 'Array samples') select = select.replace('ERR_HQVisualContact selected;', 'ERR_HQVisualContact selected = nullptr;') diff --git a/tests/test_hq_road_intercept.py b/tests/test_hq_road_intercept.py index 149060f..048cc32 100644 --- a/tests/test_hq_road_intercept.py +++ b/tests/test_hq_road_intercept.py @@ -2,11 +2,11 @@ from pathlib import Path import os,re from policy_harness import ROOT,body,run -p=Path(os.environ.get('ERR_ROAD_INTERCEPT_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQRoadIntercept.c')) +p=Path(os.environ.get('ERR_ROAD_INTERCEPT_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c')) source=p.read_text() for forbidden in ('GetPlayer','GetControlledEntity','GetOrigin','Spawn(', 'AddWaypoint','SetOrigin','CallLater'): assert forbidden not in source,forbidden -rules='\n'.join(body(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c', x) for x in ('static bool Finite(', 'static bool PositionValid(', 'static bool Actionable(', 'static bool Heading(', 'static ERR_HQPursuitRole Role(', 'static vector Direction(', 'static vector Objective(')) +rules='\n'.join(body(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c', x) for x in ('static bool Finite(', 'static bool PositionValid(', 'static bool Actionable(', 'static bool Heading(', 'static ERR_HQPursuitRole Role(', 'static vector Direction(', 'static vector Objective(')) rules=rules.replace('Math.','Math::').replace('vector.','vector::').replace('ERR_HQPursuitRole.','ERR_HQPursuitRole::').replace('vector offset;','vector offset{};') s=re.sub(r'//[^\n]*','',source).replace('class ERR_HQRoadIntercept','struct ERR_HQRoadIntercept') s=s.replace('out vector','vector&').replace('out float','float&').replace('array','Array').replace('array','Array').replace('foreach (','for (') diff --git a/tests/test_hq_status_sampler.py b/tests/test_hq_status_sampler.py index 1747f47..2385762 100644 --- a/tests/test_hq_status_sampler.py +++ b/tests/test_hq_status_sampler.py @@ -2,8 +2,8 @@ from policy_harness import ROOT,body,run from pathlib import Path import os,re -P=Path(os.environ.get('ERR_SAMPLER_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQStatusSampler.c')) -U=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c' +P=Path(os.environ.get('ERR_SAMPLER_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c')) +U=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c' def cpp(s): s=s.replace('DamageManagerComponent.Cast(actor.FindComponent(DamageManagerComponent))', '(actor.hasDamage ? &actor.damage : null)') diff --git a/tests/test_hq_uplink_fairness.py b/tests/test_hq_uplink_fairness.py index 56cc701..af4afa3 100644 --- a/tests/test_hq_uplink_fairness.py +++ b/tests/test_hq_uplink_fairness.py @@ -4,8 +4,8 @@ Native radio and perception remain explicit boundary doubles. from pathlib import Path import os,re from policy_harness import ROOT,body,run -P=Path(os.environ.get('ERR_HQ_SOURCE',str(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c'))) -original=(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c').read_text() +P=Path(os.environ.get('ERR_HQ_SOURCE',str(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c'))) +original=(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c').read_text() legacy='Observe(unit, now);\n ObserveBody(unit, now);\n StatusReport(unit, now);\n Sweep(unit, now);' assert legacy in original or 'QueueReports(unit, now);' in original @@ -23,7 +23,7 @@ def cpp(s): s=s.replace('ERR_HQPursuitRules.', 'ERR_HQPursuitRules::') s=s.replace('ERR_HQObservation.','ERR_HQObservation::').replace('vector.DistanceXZ','vector::DistanceXZ').replace('string.Format','Format') return s.replace('AmmoState.', 'AmmoState->') -policy_path=Path(os.environ.get('ERR_AMMO_REPORTING_ROOT', ROOT))/'addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c' +policy_path=Path(os.environ.get('ERR_AMMO_REPORTING_ROOT', ROOT))/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c' policy=cpp(policy_path.read_text()).replace('class ERR_HQAmmoReporting','struct ERR_HQAmmoReporting').rstrip()+';' methods='\n'.join(cpp(body(P,s)) for s in ('protected void Observe(', 'protected void ObserveBody(', 'protected void StatusReport(', 'protected void Sweep(', 'protected void QueueReports(')) run(r''' diff --git a/tests/test_hq_watch.py b/tests/test_hq_watch.py index 3219192..b29d8fd 100644 --- a/tests/test_hq_watch.py +++ b/tests/test_hq_watch.py @@ -2,8 +2,8 @@ from policy_harness import ROOT, body, run from pathlib import Path import os,re -P=Path(os.environ.get('ERR_WATCH_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQWatch.c')) -U=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c' +P=Path(os.environ.get('ERR_WATCH_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQWatch.c')) +U=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQPursuit.c' def cpp(s): for old,new in [('protected ',''),('Math.','Math::'),('ERR_HQPursuitRules.','ERR_HQPursuitRules::'), ('ERR_HQWatchRules.','ERR_HQWatchRules::'),('null','nullptr'), @@ -18,13 +18,13 @@ def cpp(s): s=s.replace('report->DeathSlots,', '&report->DeathSlots,') s=s.replace('entry->AmmoState.', 'entry->AmmoState->').replace('report->AmmoState.', 'report->AmmoState->') return s -helper=(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQDeliveredCasualties.c').read_text() +helper=(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c').read_text() helper=helper.replace('class ','struct ').replace('protected ','').replace('ref ','').replace('Math.','Math::') helper=helper.replace('array slots','Array* slots').replace('slots.', 'slots->') helper=helper.replace('array','Array').replace('foreach (','for (') helper=helper.replace(' : slots)', ' : *slots)').replace('int m_Strength;', 'int m_Strength=0;') helper=helper.replace('\n}\n','\n};\n') -ammo_source=Path(os.environ.get('ERR_AMMO_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c')).read_text() +ammo_source=Path(os.environ.get('ERR_AMMO_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c')).read_text() ammo=ammo_source[:ammo_source.index('class ERR_HQAmmoSampler')] ammo=ammo.replace('class ','struct ').replace('ERR_HQAmmoSnapshot Snapshot(', 'ERR_HQAmmoSnapshot* Snapshot(') ammo=ammo.replace('ERR_HQAmmoSnapshot copy', 'ERR_HQAmmoSnapshot* copy').replace('copy.', 'copy->') @@ -36,8 +36,8 @@ methods='\n'.join(cpp(body(P,s)) for s in ('int Count()', 'ERR_HQWatchEntry Find 'protected void ApplyLosses(', 'bool Ingest(', 'bool IngestBody(', 'bool RequestDue(string', 'bool MarkRequested(', 'bool InvestigationDue(string', 'bool MarkInvestigating(', 'bool FinishInvestigation(', 'void Clear(')) common='\n'.join(cpp(body(U,s)) for s in ('static bool Finite(', 'static bool PositionValid(')) -snapshot=cpp(body(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQReport.c','ERR_HQReport Snapshot(')).replace('copy.', 'copy->') -accept=cpp(body(ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c','protected void Accept(')) +snapshot=cpp(body(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQReport.c','ERR_HQReport Snapshot(')).replace('copy.', 'copy->') +accept=cpp(body(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c','protected void Accept(')) accept=accept.replace('ERR_MissionRules.', 'ERR_MissionRules::').replace('ERR_HQMemoryRules.', 'ERR_HQMemoryRules::') accept=accept.replace('ERR_HQMemoryKind.', 'ERR_HQMemoryKind::').replace('vector.DistanceXZ(', 'vector::DistanceXZ(') accept=accept.replace('previous.', 'previous->') diff --git a/tests/test_infantry_ammo_access.py b/tests/test_infantry_ammo_access.py index fcbc422..de67cd5 100644 --- a/tests/test_infantry_ammo_access.py +++ b/tests/test_infantry_ammo_access.py @@ -2,7 +2,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,run -s=Path(os.environ.get('ERR_INFANTRY_ACCESS_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoAccess.c')).read_text() +s=Path(os.environ.get('ERR_INFANTRY_ACCESS_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c')).read_text() s=re.sub(r'//[^\n]*','',s).replace('class ERR_InfantryAmmoAccess','struct ERR_InfantryAmmoAccess').replace('protected ','').replace('notnull ','') s=s.replace('ActionsManagerComponent.Cast(donor.FindComponent(ActionsManagerComponent))','donor->manager').replace('SCR_OpenVehicleStorageAction.Cast(action)','dynamic_cast(action)').replace('ChimeraCharacter.Cast(recipient)','dynamic_cast(recipient)') s=s.replace('array', 'array').replace('array', 'array') diff --git a/tests/test_infantry_ammo_transfer.py b/tests/test_infantry_ammo_transfer.py index 13dbbb2..df10801 100644 --- a/tests/test_infantry_ammo_transfer.py +++ b/tests/test_infantry_ammo_transfer.py @@ -2,7 +2,7 @@ from pathlib import Path import os,re from policy_harness import ROOT,run,body -p=Path(os.environ.get('ERR_INFANTRY_TRANSFER_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c')) +p=Path(os.environ.get('ERR_INFANTRY_TRANSFER_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c')) s=p.read_text() for forbidden in ('TrySpawn','DeleteEntity','SetOrigin','SetTransform','TryInsert','TryRemove','SetAmmoCount'): assert forbidden not in s,forbidden @@ -35,7 +35,7 @@ for name in ('OnComplete','OnFailed','OnAllComplete','OnAllFailed'): m=re.search(r'protected override void '+name+r'\(\) (\{[^\n]+\})',callback) callbacks.append('void ERR_InfantryAmmoCallback::'+name+'() '+m[1].replace('Transfer.','Transfer->')) # Integrate the actual coordinator transfer selector with this actual leaf. -coordinator_path=Path(os.environ.get('ERR_INFANTRY_RESUPPLY_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c')) +coordinator_path=Path(os.environ.get('ERR_INFANTRY_RESUPPLY_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c')) transfer=body(coordinator_path,'protected void Transfer(float now)').replace('protected ','').replace('null','nullptr').replace('foreach (','for (') transfer=transfer.replace('ERR_HQAmmoSnapshot local','ERR_HQAmmoSnapshot* local') for name in ('ERR_Actors','ERR_HQAmmoSampler','ERR_InfantryAmmoTransfer','vector'): diff --git a/tests/test_infantry_placement_settle.py b/tests/test_infantry_placement_settle.py index 6e17034..5b423af 100644 --- a/tests/test_infantry_placement_settle.py +++ b/tests/test_infantry_placement_settle.py @@ -2,7 +2,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,body,run -p=Path(os.environ.get('ERR_INFANTRY_PROBE_SOURCE',ROOT/'addons/chat/Scripts/Game/ERR/ERR_NativeInfantryTransferProbe.c')) +p=Path(os.environ.get('ERR_INFANTRY_PROBE_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c')) s=body(p,'protected int Place(float now)')+'\n'+body(p,' void Stop()') s=re.sub(r'//[^\n]*','',s).replace('protected ','') s=s.replace('ChimeraCharacter.Cast(m_Actor)','m_Actor') diff --git a/tests/test_infantry_resupply_coordinator.py b/tests/test_infantry_resupply_coordinator.py index e14271f..ed8e8aa 100644 --- a/tests/test_infantry_resupply_coordinator.py +++ b/tests/test_infantry_resupply_coordinator.py @@ -4,7 +4,7 @@ from pathlib import Path REPO=Path(os.environ.get('ERR_REPO','/home/jakub/devel/escapistsrereintroduced')) sys.path.insert(0,str(REPO/'tests')) from policy_harness import body,run -SOURCE=Path(os.environ.get('ERR_INFANTRY_RESUPPLY_SOURCE',REPO/'addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c')) +SOURCE=Path(os.environ.get('ERR_INFANTRY_RESUPPLY_SOURCE',REPO/'addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c')) def method(signature): s=body(SOURCE,signature).replace('protected ','').replace('null','nullptr') s=s.replace('vector.DistanceXZ','Vec::DistanceXZ').replace('ERR_ForceRules.','ERR_ForceRules::').replace('ERR_InfantryResupplyRules.','ERR_InfantryResupplyRules::').replace('ERR_Actors.','ERR_Actors::') diff --git a/tests/test_infantry_resupply_planning.py b/tests/test_infantry_resupply_planning.py index 9d0b72c..236c1db 100644 --- a/tests/test_infantry_resupply_planning.py +++ b/tests/test_infantry_resupply_planning.py @@ -2,9 +2,9 @@ import os,re from pathlib import Path from policy_harness import ROOT,body,run -P=Path(os.environ.get('ERR_INFANTRY_RESUPPLY_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c')) -I=ROOT/'addons/core/Scripts/Game/ERR/ERR_Inventory.c' -H=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c' +P=Path(os.environ.get('ERR_INFANTRY_RESUPPLY_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c')) +I=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c' +H=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c' def cpp(s): s=s.replace('protected ','').replace('notnull ','').replace('null','nullptr') s=s.replace('array items = {};','Array items;').replace('array raw = {};','Array raw;').replace('array agents = {};','Array agents;') diff --git a/tests/test_infantry_resupply_waypoints.py b/tests/test_infantry_resupply_waypoints.py index 424a2df..3d380fa 100644 --- a/tests/test_infantry_resupply_waypoints.py +++ b/tests/test_infantry_resupply_waypoints.py @@ -2,7 +2,7 @@ from pathlib import Path import os from policy_harness import ROOT,body,run -P=Path(os.environ.get('ERR_INFANTRY_RESUPPLY_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c')) +P=Path(os.environ.get('ERR_INFANTRY_RESUPPLY_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c')) s=body(P,'protected bool Waypoints()').replace('protected ','') for name in ('AIWaypoint','ERR_Actors','ERR_Resources'):s=s.replace(name+'.',name+'::') for name in ('m_MoveWaypoint','m_HoldWaypoint','m_Recipient'):s=s.replace(name+'.',name+'->') diff --git a/tests/test_initial_admission_exhaustion.py b/tests/test_initial_admission_exhaustion.py index 2f8a76b..c7a1796 100644 --- a/tests/test_initial_admission_exhaustion.py +++ b/tests/test_initial_admission_exhaustion.py @@ -1,14 +1,14 @@ """Actual admission-exhaustion/tick rules; engine population and services substituted.""" import re from policy_harness import ROOT, body, run -MODE = ROOT/'addons/core/Scripts/Game/ERR/ERR_GameMode.c' -SPAWN = ROOT/'addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c' +MODE = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c' +SPAWN = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c' def cpp(s): s=s.replace('protected ', '').replace('Replication.IsServer()', 'server').replace('Replication.BumpMe()', '(void)0') s=s.replace('array connected = {};','std::vector connected;').replace('connected.IsEmpty()', 'connected.empty()') s=s.replace('foreach (int id : connected)', 'for (int id : connected)') s=s.replace('ERR_PlayerLife life', 'Life* life').replace('SCR_PlayerController controller', 'Controller* controller').replace('PlayerController controller', 'Controller* controller') - s=s.replace('SCR_PlayerController.Cast(', 'Controller::Cast(').replace('ERR_Phase.DEFEAT','5') + s=s.replace('SCR_PlayerController.Cast(', 'Controller::Cast(').replace('ERR_Phase.DEFEAT','5').replace('ERR_Phase.RADIO_SEARCH','2') for v in ('m_Roster','controller','life','m_Command','m_Extraction','m_RadioDefence','m_Recovery','GetGame()','GetWorld()','GetPlayerManager()'): s=s.replace(v+'.', v+'->') return s diff --git a/tests/test_initial_guard_policy.py b/tests/test_initial_guard_policy.py index 8fc366f..9bcf7b3 100644 --- a/tests/test_initial_guard_policy.py +++ b/tests/test_initial_guard_policy.py @@ -1,6 +1,6 @@ """Execute initial readiness policy; native population timing needs engine tests.""" from policy_harness import ROOT, body, run -p = ROOT/'addons/core/Scripts/Game/ERR/ERR_InitialGuardRules.c' +p = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c' s = '\n'.join(body(p, signature) for signature in ('static float TimeoutMilliseconds(', 'static ERR_PrepareResult State(')).replace('ERR_PrepareResult.', 'ERR_PrepareResult::') run('''#include #include diff --git a/tests/test_intel_admin.py b/tests/test_intel_admin.py index 6cea0d6..f4fd0a3 100644 --- a/tests/test_intel_admin.py +++ b/tests/test_intel_admin.py @@ -1,8 +1,8 @@ """Run actual companion dispatch and discovery ledger bodies; native RPC is separate.""" from policy_harness import ROOT, body, run -admin = ROOT / 'addons/core/Scripts/Game/ERR/ERR_AdminService.c' -provider = ROOT / 'addons/intel/Scripts/Game/ERR/ERR_IntelAdminProvider.c' -discovery = ROOT / 'addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c' +admin = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_AdminService.c' +provider = ROOT / 'addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c' +discovery = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c' execute = body(admin, 'void Execute(') assert execute.index('if (!Replication.IsServer()') < execute.index('if (!authorized)') < execute.index('if (Extension(mode, arguments, replies))') extension = body(provider, 'override bool Execute(') diff --git a/tests/test_intel_discovery_feedback.py b/tests/test_intel_discovery_feedback.py index b73e969..c33469a 100644 --- a/tests/test_intel_discovery_feedback.py +++ b/tests/test_intel_discovery_feedback.py @@ -1,6 +1,6 @@ """Execute production feedback queue/delivery bodies with fake engine boundaries.""" from policy_harness import ROOT, body, run -P=ROOT/'addons/intel/Scripts/Game/ERR/ERR_IntelDiscoveryFeedback.c' +P=ROOT/'addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c' source=P.read_text() def cpp(s): s=s.replace('protected ', '').replace('static ', '') diff --git a/tests/test_intel_registration.py b/tests/test_intel_registration.py index b50d72c..0e0c73f 100644 --- a/tests/test_intel_registration.py +++ b/tests/test_intel_registration.py @@ -2,10 +2,10 @@ import re,os from pathlib import Path from policy_harness import ROOT, body, run -intel=ROOT/'addons/intel/Scripts/Game/ERR/ERR_IntelService.c' -hq=Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.c')) -ready=ROOT/'addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c' -system=ROOT/'addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c' +intel=ROOT/'addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c' +hq=Path(os.environ.get('ERR_HQ_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c')) +ready=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c' +system=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c' def adapt(s): s=s.replace('override ', '').replace('protected ', '').replace('null','nullptr') s=re.sub(r'array<([^>]+)> (\w+) = \{\};',r'Array<\1> \2;',s) @@ -40,7 +40,7 @@ assert poll.count('mode.RegisterGroup(group)')==1 prepare=body(system,'bool Prepare(') assert 'mode.RegisterGroup(group)' not in prepare assert prepare.index('mode.Own(group)') @@ -143,7 +143,7 @@ observer_region=intel_source.split('#ifdef WORKBENCH',1)[1].split('#endif',1)[0] assert 'bool ERR_ProbeWasRolled(IEntity actor)' in observer_region assert 'ERR_Mortar' not in intel_source and 'ERR_HQ' not in intel_source assert 'Insert(' not in observation and 'RandomInt' not in observation and 'TrySpawn' not in observation -smoke=(ROOT/'addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c').read_text() +smoke=(ROOT/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c').read_text() step=smoke.split('else if (m_ERRSmokeStep == 120)',1)[1].split('else if (m_ERRSmokeStep == 121)',1)[0] assert step.index('!battery.StartupActivated') < step.index('ERR_ProbeWasRolled(intelActor)') < step.index('DeleteEntityAndChildren(item)') assert '!intelCrew.Contains(intelActor)' in step and 'intelCrew.Count() == 4' in step diff --git a/tests/test_intel_reroll.py b/tests/test_intel_reroll.py index 5be2d44..be2df44 100644 --- a/tests/test_intel_reroll.py +++ b/tests/test_intel_reroll.py @@ -1,8 +1,8 @@ """Execute actual Intel reroll methods against adversarial async inventory adapters.""" import re from policy_harness import ROOT, body, run -service=ROOT/'addons/intel/Scripts/Game/ERR/ERR_IntelService.c' -batch=ROOT/'addons/intel/Scripts/Game/ERR/ERR_IntelReroll.c' +service=ROOT/'addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c' +batch=ROOT/'addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c' def adapt(text,cls): text=text.replace('protected ', '').replace('null','nullptr') text=re.sub(r'array<([^>]+)> (\w+) = \{\};',r'Array<\1> \2;',text) diff --git a/tests/test_inventory_enumeration_policy.py b/tests/test_inventory_enumeration_policy.py index 38ef608..1135740 100644 --- a/tests/test_inventory_enumeration_policy.py +++ b/tests/test_inventory_enumeration_policy.py @@ -26,8 +26,8 @@ def translated(source): class InventoryEnumerationPolicy(unittest.TestCase): def test_duplicate_references_distinct_rounds_and_cross_inventory_union(self): - helper = ROOT / 'addons/core/Scripts/Game/ERR/ERR_Inventory.c' - mortar = ROOT / 'addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c' + helper = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_Inventory.c' + mortar = ROOT / 'addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c' methods = '\n'.join(translated(body(helper, signature)) for signature in ( 'static int AppendUnique(', 'static int Items(')) count = translated(body(mortar, 'int InventoryShells(')) diff --git a/tests/test_inventory_layout.py b/tests/test_inventory_layout.py index 32505ec..4831efc 100644 --- a/tests/test_inventory_layout.py +++ b/tests/test_inventory_layout.py @@ -1,6 +1,6 @@ """Execute candidate hierarchy adapter; native slot regeneration/rendering unqualified.""" from policy_harness import ROOT, body, run -P=ROOT/'addons/core/Scripts/Game/ERR/ERR_InventoryLayout.c' +P=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c' def cpp(s): s=s.replace('protected ', '').replace('override ', '').replace('ref ', '') for t in ('Widget','ERR_GameMode','GridLayoutWidget','ERR_InventoryGridPlacement'): diff --git a/tests/test_item_station_teardown.py b/tests/test_item_station_teardown.py index 645eeef..deb3b44 100644 --- a/tests/test_item_station_teardown.py +++ b/tests/test_item_station_teardown.py @@ -7,8 +7,8 @@ import unittest from policy_harness import body, run ROOT = Path(__file__).resolve().parents[1] -SOURCE = ROOT / 'addons/core/Scripts/Game/ERR/ERR_ItemStationTeardown.c' -PROBE = ROOT / 'addons/core/Scripts/Game/ERR/ERR_NativeItemStationTeardownProbe.c' +SOURCE = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c' +PROBE = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c' class ItemStationTeardown(unittest.TestCase): def test_actual_recovery_gate_all_inputs(self): @@ -68,7 +68,7 @@ int main() { self.assertIn('if (m_Kit) delete m_Kit;', source) def test_integrated_smoke_steps_finish_only_after_probe_success(self): - source = (ROOT / 'addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c').read_text() + source = (ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c').read_text() self.assertIn('protected ref ERR_NativeItemStationTeardownProbe m_ERRItemStationTeardownProbe;', source) self.assertIn('if (m_ERRItemStationTeardownProbe) m_ERRItemStationTeardownProbe.Stop();', source) self.assertIn('if (m_ERRBaseStep == 2000)', source) diff --git a/tests/test_local_admission.py b/tests/test_local_admission.py index 07d887e..f6579cb 100644 --- a/tests/test_local_admission.py +++ b/tests/test_local_admission.py @@ -4,7 +4,7 @@ this is not authentication, native GenV4 or multiplayer evidence. """ from policy_harness import ROOT, body, run import re -source=ROOT/'addons/core/Scripts/Game/ERR/ERR_LocalAdmission.c' +source=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c' s=source.read_text().split('\nmodded class ERR_GameMode')[0] s=s[s.index('class ERR_LocalAdmissionRules'):] s=s.replace('class ERR_LocalAdmissionRules','struct ERR_LocalAdmissionRules').replace('class ERR_LocalAdmission\n','struct ERR_LocalAdmission\n') diff --git a/tests/test_mission_rules.py b/tests/test_mission_rules.py index 35a390b..7cf0833 100644 --- a/tests/test_mission_rules.py +++ b/tests/test_mission_rules.py @@ -1,7 +1,7 @@ from policy_harness import ROOT,body,run -source=ROOT/'addons/core/Scripts/Game/ERR/ERR_MissionRules.c' +source=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c' rules='\n'.join(body(source,x) for x in ['static bool Terminal(', 'static bool CanTransition(', 'static bool DefenceComplete(', 'static bool ContactFresh(', 'static int Discovery(']).replace('ERR_Phase.', 'ERR_Phase::') -rules += '\n' + body(ROOT/'addons/core/Scripts/Game/ERR/ERR_PlayerRoster.c', 'static bool CanEnter(').replace('ERR_Phase.', 'ERR_Phase::') +rules += '\n' + body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c', 'static bool CanEnter(').replace('ERR_Phase.', 'ERR_Phase::') run('''#include namespace ERR_Phase {enum {PREPARING,PRISON,RADIO_SEARCH,RADIO_DEFENCE,EXTRACTION,VICTORY,DEFEAT};} '''+rules+''' diff --git a/tests/test_mortar_activity_completion.py b/tests/test_mortar_activity_completion.py index 2bb3377..764306e 100644 --- a/tests/test_mortar_activity_completion.py +++ b/tests/test_mortar_activity_completion.py @@ -4,7 +4,7 @@ Invoker/engine boundaries are adapters; completion must still be observed native """ import re from policy_harness import ROOT, body, run -p=ROOT/'addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c' +p=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c' def adapt(signature): s=body(p,signature).replace('protected ','').replace('null','nullptr') s=s.replace('SCR_AIActionBase action','Action* action').replace('EAIActionState ', 'State ').replace('EAIActionState.', 'State::') diff --git a/tests/test_mortar_aim_renewal.py b/tests/test_mortar_aim_renewal.py index 8c736f1..43f5ec8 100644 --- a/tests/test_mortar_aim_renewal.py +++ b/tests/test_mortar_aim_renewal.py @@ -4,7 +4,7 @@ No fake native ballistic result is represented as a measured firing result. """ import re from policy_harness import ROOT, body, run -r=ROOT/'addons/ai/Scripts/Game/ERR' +r=ROOT/'addons/core/Scripts/Game/ERR/10_AI' solution=r/'ERR_MortarAimSolution.c'; firing=r/'ERR_MortarFiring.c' eq=body(solution,'static bool Equivalent(').replace('vector.Distance','vector::Distance').replace('Math.AbsFloat','std::fabs') matches=body(solution,'bool Matches(').replace('ERR_MortarBattery battery','ERR_MortarBattery* battery').replace('ERR_HQReport report','ERR_HQReport* report').replace('battery.','battery->') diff --git a/tests/test_mortar_courier_storage.py b/tests/test_mortar_courier_storage.py index 388418c..631363e 100644 --- a/tests/test_mortar_courier_storage.py +++ b/tests/test_mortar_courier_storage.py @@ -1,7 +1,7 @@ """Run actual fixture placement geometry; protect native clearance/stock boundary.""" import re from policy_harness import ROOT, body, run -p = ROOT / 'addons/ai/Scripts/Game/ERR/ERR_NativeMortarCourierProbe.c' +p = ROOT / 'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c' text = p.read_text() geometry = body(p, 'static vector StorageOffset(') count = int(re.search(r'STORAGE_CANDIDATES = (\d+)', text).group(1)) diff --git a/tests/test_mortar_logistics.py b/tests/test_mortar_logistics.py index fe5c61a..fc010f2 100644 --- a/tests/test_mortar_logistics.py +++ b/tests/test_mortar_logistics.py @@ -3,7 +3,7 @@ API doubles do not establish engine inventory, navigation, radio or MP behavior. """ from policy_harness import ROOT, body, run import re -r=ROOT/'addons/ai/Scripts/Game/ERR' +r=ROOT/'addons/core/Scripts/Game/ERR/10_AI' p=r/'ERR_MortarLogistics.c'; t=r/'ERR_MortarCourierTransfer.c' # C++ would accept an Enforce ownership annotation as an identifier. # Reject that native compile regression before executing the source body. diff --git a/tests/test_mortar_refresh.py b/tests/test_mortar_refresh.py index bd969db..58a79d2 100644 --- a/tests/test_mortar_refresh.py +++ b/tests/test_mortar_refresh.py @@ -6,7 +6,7 @@ progression are boundary adapters; this is not native delivery, death or firing. """ import re from policy_harness import ROOT, body, run -r=ROOT/'addons/ai/Scripts/Game/ERR' +r=ROOT/'addons/core/Scripts/Game/ERR/10_AI' def cpp(path, signature): code=body(r/path,signature).replace('protected ','') diff --git a/tests/test_mortar_report_ledger.py b/tests/test_mortar_report_ledger.py index 11f5dee..6648321 100644 --- a/tests/test_mortar_report_ledger.py +++ b/tests/test_mortar_report_ledger.py @@ -2,7 +2,7 @@ from pathlib import Path from policy_harness import body, run r=Path(__file__).resolve().parents[1] -p=r/'addons/ai/Scripts/Game/ERR/ERR_MortarReportLedger.c' +p=r/'addons/core/Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c' a=body(p,'bool Available(').replace('m_Attempts.', 'm_Attempts.') c=body(p,'bool Claim(') run('''#include @@ -30,7 +30,7 @@ int main(){ Ledger nextRound;assert(nextRound.Claim(1,0,0)); } ''') -b=r/'addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c';s=r/'addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c' +b=r/'addons/core/Scripts/Game/ERR/10_AI/ERR_MortarBattery.c';s=r/'addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c' request=body(b,'bool BeginRequest(') assert request.index('m_ReportLedger.Claim(')= 48' in s and 'CommittedBodies() <= 60' in s assert 'm_InitialLedger + 6' in s and s.count('!hq.StartConvoy()')==2 -smoke=(ROOT/'addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c').read_text() +smoke=(ROOT/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c').read_text() assert 'm_ERRTestConvoy = outcome == "convoy"' in smoke and 'm_ERRSmokeStep = 106' in smoke runner=ROOT/'tools/headless_workbench.py' for extra in (['--project','core','--rounds','1','--timeout','600'], diff --git a/tests/test_native_end_lifecycle.py b/tests/test_native_end_lifecycle.py index e977449..658e4ee 100644 --- a/tests/test_native_end_lifecycle.py +++ b/tests/test_native_end_lifecycle.py @@ -1,6 +1,6 @@ """Actual native-end hook/shutdown/active bodies with engine boundaries substituted.""" from policy_harness import ROOT, body, run -SOURCE=ROOT/'addons/core/Scripts/Game/ERR/ERR_GameMode.c' +SOURCE=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c' def cpp(s): s=s.replace('protected override ', '').replace('protected ', '') for a,b in [('Replication.','Replication::'),('ERR_MissionRules.','Rules::'),('ERR_Phase.','Phase::'),('ERR_ObserverReason.','Observer::'),('SCR_AIGroup.','SCR_AIGroup::'),('ERR_Actors.','ERR_Actors::'),('super.OnGameModeEnd(', 'NativeEnd(')]:s=s.replace(a,b) @@ -89,7 +89,7 @@ assert hook.index('StopServices()') < hook.index('super.OnGameModeEnd(endData)') assert 'Transition(' not in hook and 'EndGameMode(' not in hook assert 'm_Extraction.' not in hook and 'EndGameData.Create' not in hook assert 'if (!m_NativeEndHandled) EndGameMode(' in body(SOURCE,'bool Transition(') -probe=(ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeEndProbe.c').read_text() +probe=(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c').read_text() assert probe.startswith('#ifdef WORKBENCH') assert probe.count('ERR SMOKE COMPLETE:')==1 and probe.count('EndGameMode(m_ERREndData)')==1 assert 'super.OnGameModeEnd' not in probe diff --git a/tests/test_native_flight_footprint.py b/tests/test_native_flight_footprint.py index 291a43b..a4f2cf1 100644 --- a/tests/test_native_flight_footprint.py +++ b/tests/test_native_flight_footprint.py @@ -3,8 +3,8 @@ from pathlib import Path import unittest from policy_harness import body, run ROOT = Path(__file__).resolve().parents[1] -HELPER = ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeFlightFootprint.c' -PROBE = ROOT/'addons/core/Scripts/Game/ERR/ERR_NativePoweredFlightProbe.c' +HELPER = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c' +PROBE = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c' class FlightFootprint(unittest.TestCase): def test_actual_complete_envelope_gate(self): diff --git a/tests/test_native_flight_input_diagnostics.py b/tests/test_native_flight_input_diagnostics.py index a431285..9cac9b3 100644 --- a/tests/test_native_flight_input_diagnostics.py +++ b/tests/test_native_flight_input_diagnostics.py @@ -6,7 +6,7 @@ import tempfile import unittest from policy_harness import body ROOT=Path(__file__).resolve().parents[1] -SOURCE=ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeFlightInputDiagnostics.c' +SOURCE=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c' class FlightInputDiagnostics(unittest.TestCase): def test_observers_have_no_control_or_setting_mutators(self): diff --git a/tests/test_native_hq_body_probe.py b/tests/test_native_hq_body_probe.py index 80c8987..8e6d872 100644 --- a/tests/test_native_hq_body_probe.py +++ b/tests/test_native_hq_body_probe.py @@ -3,9 +3,9 @@ from pathlib import Path import os, re from policy_harness import ROOT, body, run stage=os.environ.get('ERR_NATIVE_BODY_STAGE') -p=Path(stage)/'ERR_NativeHQBodyProbe.c' if stage else ROOT/'addons/chat/Scripts/Game/ERR/ERR_NativeHQBodyProbe.c' +p=Path(stage)/'ERR_NativeHQBodyProbe.c' if stage else ROOT/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c' s=p.read_text() -smoke=(Path(stage)/'ERR_NativeSmoke.c' if stage else ROOT/'addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c').read_text() +smoke=(Path(stage)/'ERR_NativeSmoke.c' if stage else ROOT/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c').read_text() runner=(Path(stage)/'headless_workbench.py' if stage else ROOT/'tools/headless_workbench.py').read_text() assert s.startswith('#ifdef WORKBENCH') and s.rstrip().endswith('#endif') for forbidden in ('Spawn(', 'SpawnEntity', 'TrySpawn', 'new ERR_HQReport', 'new ERR_HQStatusReport', diff --git a/tests/test_native_infantry_fixture_lifecycle.py b/tests/test_native_infantry_fixture_lifecycle.py index 6aa5898..0d4597c 100644 --- a/tests/test_native_infantry_fixture_lifecycle.py +++ b/tests/test_native_infantry_fixture_lifecycle.py @@ -4,7 +4,7 @@ from pathlib import Path REPO=Path(os.environ.get('ERR_REPO','/home/jakub/devel/escapistsrereintroduced')) sys.path.insert(0,str(REPO/'tests')) from policy_harness import body,run -P=Path(os.environ.get('ERR_INFANTRY_PROBE_SOURCE',REPO/'addons/chat/Scripts/Game/ERR/ERR_NativeInfantryTransferProbe.c')) +P=Path(os.environ.get('ERR_INFANTRY_PROBE_SOURCE',REPO/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c')) s='\n'.join(body(P,x) for x in ('protected bool RecipientOwned()','void Stop()')) s=s.replace('protected ','').replace('ERR_EnemyEquipmentRules.','Rules::').replace('CompartmentAccessComponent.','Compartment::') for v in ('m_Unit','m_Mode','m_Actor','m_Move','m_HQ','m_Truck'):s=s.replace(v+'.',v+'->') diff --git a/tests/test_native_local_admission_probe.py b/tests/test_native_local_admission_probe.py index 828d7ca..0f2e7e1 100644 --- a/tests/test_native_local_admission_probe.py +++ b/tests/test_native_local_admission_probe.py @@ -1,6 +1,6 @@ """Native fixture's actual snapshot predicate rejects changed life/body evidence.""" from policy_harness import ROOT, body, run -p=ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeLocalAdmissionProbe.c' +p=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c' s=body(p,'protected bool Unchanged()').replace('protected ','').replace('ERR_Phase.PRISON','1').replace('GetGame().','GetGame()->') for name in ['m_Mode','m_Controller','m_Life','m_Logic']: s=s.replace(name+'.',name+'->') diff --git a/tests/test_native_local_handoff_probe.py b/tests/test_native_local_handoff_probe.py index a4de9d9..ec0b494 100644 --- a/tests/test_native_local_handoff_probe.py +++ b/tests/test_native_local_handoff_probe.py @@ -3,7 +3,7 @@ import os,re,sys from pathlib import Path REPO=Path(os.environ.get('ERR_REPO','/home/jakub/devel/escapistsrereintroduced'));sys.path.insert(0,str(REPO/'tests')) from policy_harness import body,run -P=Path(os.environ.get('ERR_LOCAL_PROBE_SOURCE',REPO/'addons/chat/Scripts/Game/ERR/ERR_NativeLocalHandoffProbe.c')) +P=Path(os.environ.get('ERR_LOCAL_PROBE_SOURCE',REPO/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c')) s='\n'.join(body(P,signature) for signature in ('protected bool SameSnapshot(','int Tick(ERR_HQ hq, float now)','void Stop()')) s=s.replace('protected ','').replace('null','nullptr').replace('bool restore;', 'bool restore = false;') s=s.replace('ERR_GameMode.Get()', 'Mode::Get()') diff --git a/tests/test_native_maintenance_stock.py b/tests/test_native_maintenance_stock.py index 3622d21..3900a35 100644 --- a/tests/test_native_maintenance_stock.py +++ b/tests/test_native_maintenance_stock.py @@ -2,7 +2,7 @@ from pathlib import Path import os,re from policy_harness import ROOT,body,run -P=Path(os.environ.get('ERR_NATIVE_TRANSPORT_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeTransportProbe.c')) +P=Path(os.environ.get('ERR_NATIVE_TRANSPORT_SOURCE',ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c')) method=body(P,'protected bool MaintenanceStock(') for forbidden in ('SetFuel','SetResource','Consume','Spawn(','TryMove','GetInVehicle','SetHealth','EnableDamage'): assert forbidden not in method,forbidden diff --git a/tests/test_native_memory_deadlines.py b/tests/test_native_memory_deadlines.py index 1a70458..61ce769 100644 --- a/tests/test_native_memory_deadlines.py +++ b/tests/test_native_memory_deadlines.py @@ -4,7 +4,7 @@ from pathlib import Path REPO=Path(os.environ.get('ERR_REPO','/home/jakub/devel/escapistsrereintroduced')) sys.path.insert(0,str(REPO/'tests')) from policy_harness import body,run -p=Path(os.environ.get('ERR_MEMORY_PROBE_SOURCE',REPO/'addons/chat/Scripts/Game/ERR/ERR_NativeHQMemoryProbe.c')) +p=Path(os.environ.get('ERR_MEMORY_PROBE_SOURCE',REPO/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c')) s=body(p,'int Tick(ERR_HQ hq, float now)') # Execute the unchanged deadline/startup prefix; payload/native radio assertions # after this gate remain the full fixture's responsibility. @@ -25,7 +25,7 @@ int main(){ERR_HQ hq; Probe invalid;invalid.enabled=false;assert(invalid.Tick(&hq,0)==-1&&invalid.m_Deadline==0); } '''.replace('METHOD',s)) -smoke=Path(os.environ.get('ERR_SMOKE_SOURCE',REPO/'addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c')).read_text() +smoke=Path(os.environ.get('ERR_SMOKE_SOURCE',REPO/'addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c')).read_text() assert 'if (m_ERRTestHQMemory) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 360000;' in smoke assert 'if (m_ERRTestHQBody) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 240000;' in smoke print('PASS: bounded150s startup followed by exactly one120s memory window; only HQ-memory outer deadline extended') diff --git a/tests/test_native_mortar_probe.py b/tests/test_native_mortar_probe.py index fe063eb..e6248d7 100644 --- a/tests/test_native_mortar_probe.py +++ b/tests/test_native_mortar_probe.py @@ -1,6 +1,6 @@ """Execute actual fixture commit/event/closure gates; not native artillery simulation.""" from policy_harness import ROOT, body, run -p=ROOT/'addons/ai/Scripts/Game/ERR/ERR_NativeMortarFiringProbe.c' +p=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c' policies='\n'.join(body(p, sig) for sig in ['static bool AimFresh(', 'static bool CommitFresh(', 'static bool EventBound(', 'static bool ExpiredClosure(']) policies=policies.replace('ERR_MortarPrediction.', 'ERR_MortarPrediction::').replace('string failure', 'Text failure') methods='\n'.join(body(p,sig) for sig in ['void NativeCommit(', 'void NativeClosing(', 'void NativeProjectile(']) diff --git a/tests/test_native_mortar_refresh.py b/tests/test_native_mortar_refresh.py index 14b0d6a..13b9e4c 100644 --- a/tests/test_native_mortar_refresh.py +++ b/tests/test_native_mortar_refresh.py @@ -1,8 +1,8 @@ """Actual WORKBENCH refresh-fixture observation/acceptance policy, not native proof.""" import re from policy_harness import ROOT, body, run -p=ROOT/'addons/ai/Scripts/Game/ERR/ERR_NativeMortarSalvoProbe.c' -base=ROOT/'addons/ai/Scripts/Game/ERR/ERR_NativeMortarFiringProbe.c' +p=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c' +base=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c' def adapt(s): s=s.replace('protected ','').replace('null','nullptr').replace('string kind','std::string kind').replace('string reason, string failure','std::string reason, std::string failure') diff --git a/tests/test_native_mortar_salvo.py b/tests/test_native_mortar_salvo.py index 083560c..fcaaea4 100644 --- a/tests/test_native_mortar_salvo.py +++ b/tests/test_native_mortar_salvo.py @@ -1,7 +1,7 @@ """Execute the actual full-salvo evidence gates; this is not a native firing result.""" from policy_harness import ROOT, body, run -p=ROOT/'addons/ai/Scripts/Game/ERR/ERR_NativeMortarSalvoProbe.c' -base=ROOT/'addons/ai/Scripts/Game/ERR/ERR_NativeMortarFiringProbe.c' +p=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c' +base=ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c' rules='\n'.join(body(base, sig) for sig in ['static bool AimFresh(', 'static bool CommitFresh(', 'static bool EventBound(']) rules=rules.replace('ERR_MortarPrediction.', 'ERR_MortarPrediction::') complete=body(p,'static bool Complete(').replace('ERR_MortarSalvo.', 'ERR_MortarSalvo::') diff --git a/tests/test_native_mortar_transfer.py b/tests/test_native_mortar_transfer.py index 9b470ec..7de9a11 100644 --- a/tests/test_native_mortar_transfer.py +++ b/tests/test_native_mortar_transfer.py @@ -3,7 +3,7 @@ from pathlib import Path import unittest from policy_harness import body, run ROOT = Path(__file__).resolve().parents[1] -SOURCE = ROOT/'addons/ai/Scripts/Game/ERR/ERR_NativeMortarTransferProbe.c' +SOURCE = ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c' class NativeMortarTransferChecks(unittest.TestCase): def test_original_identity_conservation_policy(self): diff --git a/tests/test_native_package.py b/tests/test_native_package.py index be32451..c0f046f 100644 --- a/tests/test_native_package.py +++ b/tests/test_native_package.py @@ -47,8 +47,8 @@ class NativePackageTests(unittest.TestCase): def test_closure_order(self): self.assertEqual(n.project_order('core'), ['core']) - self.assertEqual(n.project_order('ai'), ['core', 'ai']) - self.assertEqual(n.project_order('chat'), ['core', 'ai', 'intel', 'map', 'chat']) + with self.assertRaises(ValueError): n.project_order('ai') + with self.assertRaises(ValueError): n.project_order('chat') with self.assertRaises(ValueError): n.project_order('original') def test_supported_command_is_private_and_never_publishes_or_plays(self): @@ -126,6 +126,8 @@ class NativePackageTests(unittest.TestCase): def native_double(self, authored, timeout=30, mutate=False, failure=None, native_code=0, write_status=True, launcher_code=0, silent_workbench=False, exit_after_init=False, cleanup_proof=None, prefix_remains_active=False): if cleanup_proof is None: cleanup_proof = {'cleanup_confirmed': True, 'idle_verified': True, 'errors': [], 'orphan_cleanup': {'attempted': False}} + context = n.external_request('core', self.external_fixture(), self.source) + n.capture_external(context, self.session) child = Mock(); child.poll.return_value = launcher_code def spawn(*args, **kwargs): self.assertNotIn('WINEPREFIX', kwargs['env']) @@ -152,7 +154,7 @@ class NativePackageTests(unittest.TestCase): with patch.object(n, 'assert_no_game'), patch.object(n, 'assert_prefix_idle', side_effect=idle), \ patch.object(n, 'cleanup_owned_run', return_value=cleanup_proof) as cleanup, patch.object(n.subprocess, 'Popen', side_effect=spawn), \ patch.object(n.subprocess, 'check_output', side_effect=check_output), patch.object(n.subprocess, 'run') as process: - result = n.run_project(self.steam, self.compat, self.session, 'core', timeout, authored, silent_workbench, exit_after_init) + result = n.run_project(self.steam, self.compat, self.session, 'core', timeout, authored, silent_workbench, exit_after_init, external=context) cleanup.assert_called_once_with(child, Path(n.command_for(self.steam, self.session, 'core')[n.command_for(self.steam, self.session, 'core').index('--')+1]), unittest.mock.ANY, self.compat) self.assertTrue(any(call.args[0] == ['pactl', 'unload-module', '987'] for call in process.call_args_list)) return result @@ -189,6 +191,8 @@ class NativePackageTests(unittest.TestCase): def test_orphaned_prefix_after_launcher_exit_cannot_qualify(self): import itertools authored = n.copy_payload(self.source, self.session) + context = n.external_request('core', self.external_fixture(), self.source) + n.capture_external(context, self.session) child = Mock(); child.poll.return_value = 0 probes = 0 def idle(*args): @@ -199,7 +203,7 @@ class NativePackageTests(unittest.TestCase): patch.object(n, 'cleanup_owned_run', return_value={'cleanup_confirmed': False, 'idle_verified': False, 'errors': ['synthetic owned prefix child remains']}) as cleanup, patch.object(n.subprocess, 'Popen', return_value=child), \ patch.object(n.subprocess, 'check_output', side_effect=lambda args, **kw: '[]' if 'sink-inputs' in args else '987'), \ patch.object(n.subprocess, 'run'), patch.object(n.time, 'monotonic', side_effect=itertools.count(0, 6)), patch.object(n.time, 'sleep'): - report = n.run_project(self.steam, self.compat, self.session, 'core', 100, authored) + report = n.run_project(self.steam, self.compat, self.session, 'core', 100, authored, external=context) cleanup.assert_called_once() self.assertEqual(report['result'], 'native-or-launcher-exited-prefix-active') self.assertFalse(report['candidate_created']) @@ -276,7 +280,7 @@ class NativePackageTests(unittest.TestCase): import io fresh = Path('/tmp')/('erri-package-orchestration-'+uuid.uuid4().hex) self.addCleanup(lambda: shutil.rmtree(fresh, ignore_errors=True)) - args = argparse.Namespace(steam=self.steam, compat=self.compat, session=fresh, project='chat', timeout=30, external_addons=self.external_fixture()) + args = argparse.Namespace(steam=self.steam, compat=self.compat, session=fresh, project='core', timeout=30, external_addons=self.external_fixture()) with patch.object(n, 'assert_no_game'), patch.object(n, 'assert_prefix_idle'), patch.object(n.shutil, 'which', return_value='/mock'), \ patch.object(n, 'run_project', return_value={'candidate_created':False}) as run, patch.object(n.subprocess, 'Popen') as child, contextlib.redirect_stdout(io.StringIO()): self.assertEqual(n.run(args, self.source), 1) @@ -292,7 +296,7 @@ class NativePackageTests(unittest.TestCase): import fcntl import uuid fresh = Path('/tmp')/('erri-package-lock-'+uuid.uuid4().hex) - args = argparse.Namespace(steam=self.steam, compat=self.compat, session=fresh, project='core', timeout=30) + args = argparse.Namespace(steam=self.steam, compat=self.compat, session=fresh, project='core', timeout=30, external_addons=self.external_fixture()) with (self.compat/'.erri-workbench.lock').open('a') as lock: fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB) with patch.object(n, 'assert_no_game'), patch.object(n.shutil, 'which', return_value='/mock'), patch.object(n, 'copy_payload') as copy: @@ -307,7 +311,7 @@ class NativePackageTests(unittest.TestCase): fresh = Path('/tmp')/('erri-package-orchestration-'+uuid.uuid4().hex) self.addCleanup(lambda: shutil.rmtree(fresh, ignore_errors=True)) args = argparse.Namespace(steam=self.steam, compat=self.compat, session=fresh, - project='chat', timeout=30, continue_on_failure=continuation, exit_after_init=exit_after_init, + project='core', timeout=30, continue_on_failure=continuation, exit_after_init=exit_after_init, external_addons=self.external_fixture()) with patch.object(n, 'assert_no_game'), patch.object(n, 'assert_prefix_idle', side_effect=idle), \ patch.object(n.shutil, 'which', return_value='/mock'), \ @@ -328,9 +332,9 @@ class NativePackageTests(unittest.TestCase): return report def test_diagnostic_continuation_runs_full_closure_keeps_failures_and_nonzero(self): - reports = [self.completed_report(success=i not in (0, 2)) for i in range(5)] + reports = [self.completed_report(success=i not in (0, 2)) for i in range(1)] code, summary, calls = self.orchestration_double(reports) - self.assertEqual([call.args[3] for call in calls], ['core', 'ai', 'intel', 'map', 'chat']) + self.assertEqual([call.args[3] for call in calls], ['core']) self.assertEqual(len({str(call.args[2]) for call in calls}), 1) # one private copy/session self.assertEqual(summary['projects'], reports) # raw failures retained self.assertEqual(code, 1) @@ -344,7 +348,7 @@ class NativePackageTests(unittest.TestCase): self.assertEqual(code, 1) self.assertEqual(len(calls), 1) self.assertFalse(summary['continue_on_failure']) - self.assertEqual(summary['skipped_projects'], ['ai', 'intel', 'map', 'chat']) + self.assertEqual(summary['skipped_projects'], []) self.assertIn('continuation not requested', summary['stopped_reason']) def test_continuation_cannot_override_cleanup_runner_source_or_completion_failure(self): @@ -357,7 +361,7 @@ class NativePackageTests(unittest.TestCase): self.assertEqual(code, 1) self.assertEqual(len(calls), 1) self.assertTrue(summary['stopped_reason']) - self.assertEqual(len(summary['skipped_projects']), 4) + self.assertEqual(len(summary['skipped_projects']), 0) def cleaned_report(self, **changes): values = dict(completion_observed='native-or-launcher-exited-prefix-active', @@ -367,9 +371,9 @@ class NativePackageTests(unittest.TestCase): return self.completed_report(**values) def test_verified_post_cleanup_allows_only_diagnostic_later_jobs(self): - reports = [self.cleaned_report()] + [self.completed_report() for _ in range(4)] + reports = [self.cleaned_report()] + [self.completed_report() for _ in range(0)] code, summary, calls = self.orchestration_double(reports) - self.assertEqual(len(calls), 5) + self.assertEqual(len(calls), 1) self.assertEqual(code, 1) self.assertEqual(summary['projects'], reports) self.assertFalse(summary['all_candidates_created']) @@ -408,16 +412,14 @@ class NativePackageTests(unittest.TestCase): self.assertIn('authored inputs changed', summary['stopped_reason']) self.assertEqual(summary['diagnostic_continuations'], []) - def test_prefix_becoming_busy_between_addons_stops_before_next_launch(self): - # First probe owns idle prefix before copy; second is between addons. - code, summary, calls = self.orchestration_double( - [self.completed_report()], idle=[None, ValueError('synthetic prefix still active')]) - self.assertEqual(code, 1) + def test_single_addon_build_has_no_second_native_job(self): + code, summary, calls = self.orchestration_double([self.completed_report(True)]) + self.assertEqual(code, 0) self.assertEqual(len(calls), 1) - self.assertIn('prefix not verifiably idle', summary['stopped_reason']) + self.assertEqual(summary['skipped_projects'], []) def test_all_clean_candidates_still_unqualified_and_flag_defaults_false(self): - code, summary, calls = self.orchestration_double([self.completed_report(True) for _ in range(5)]) + code, summary, calls = self.orchestration_double([self.completed_report(True) for _ in range(1)]) self.assertEqual(code, 0) self.assertTrue(summary['all_candidates_created']) self.assertFalse(summary['release_qualified']) @@ -447,7 +449,7 @@ class NativePackageTests(unittest.TestCase): def test_added_authored_file_is_not_mistaken_for_generated_cache(self): authored = n.copy_payload(self.source, self.session) - (self.session/'source/addons/core/Scripts/Game/ERR/Injected.c').write_text('// synthetic new authored content') + (self.session/'source/addons/core/Scripts/Game/ERR/00_Core/Injected.c').write_text('// synthetic new authored content') self.assertFalse(n.copied_authored_unchanged(self.session/'source', authored)) def test_native_failure_not_masked_by_successful_gamescope_exit(self): @@ -540,9 +542,9 @@ class NativePackageTests(unittest.TestCase): def test_exit_after_init_forwards_across_dependency_closure(self): code, summary, calls = self.orchestration_double( - [self.completed_report(True) for _ in range(5)], exit_after_init=True) + [self.completed_report(True) for _ in range(1)], exit_after_init=True) self.assertEqual(code, 0) - self.assertEqual(len(calls), 5) + self.assertEqual(len(calls), 1) self.assertTrue(all(call.args[-2:] == (False, True) for call in calls)) self.assertFalse(summary['release_qualified']) @@ -637,12 +639,14 @@ class NativePackageTests(unittest.TestCase): def test_failed_native_launch_does_not_call_post_run_cleanup(self): authored = n.copy_payload(self.source, self.session) + context = n.external_request('core', self.external_fixture(), self.source) + n.capture_external(context, self.session) with patch.object(n, 'assert_no_game'), patch.object(n, 'assert_prefix_idle'), \ patch.object(n.subprocess, 'check_output', return_value='987'), \ patch.object(n.subprocess, 'run'), \ patch.object(n.subprocess, 'Popen', side_effect=OSError('synthetic launch refusal')), \ patch.object(n, 'cleanup_owned_run') as cleanup: - report = n.run_project(self.steam, self.compat, self.session, 'core', 30, authored) + report = n.run_project(self.steam, self.compat, self.session, 'core', 30, authored, external=context) cleanup.assert_not_called() self.assertIsNone(report['cleanup_report']) self.assertEqual(report['completion_observed'], 'runner-failed') diff --git a/tests/test_native_package_external.py b/tests/test_native_package_external.py index 302dffd..5f30099 100644 --- a/tests/test_native_package_external.py +++ b/tests/test_native_package_external.py @@ -20,7 +20,7 @@ class ExternalPackageTests(unittest.TestCase): self.source=self.fixture.external_fixture() self.root=self.fixture.source;self.session=self.fixture.session self.steam=self.fixture.steam;self.compat=self.fixture.compat - self.context=n.external_request('chat',self.source,self.root) + self.context=n.external_request('core',self.source,self.root) def prepare(self): self.authored=n.copy_payload(self.root,self.session) n.capture_external(self.context,self.session) @@ -28,7 +28,7 @@ class ExternalPackageTests(unittest.TestCase): profile=self.session/'profiles'/project;(profile/'addons').mkdir(parents=True) (profile/'addons/ArmaReforger').symlink_to(self.steam/'steamapps/common/Arma Reforger/addons/data',target_is_directory=True) return profile - def native_double(self,project='ai',mutation=None,error='',native_exit=0,cleanup=True,write_status=True): + def native_double(self,project='core',mutation=None,error='',native_exit=0,cleanup=True,write_status=True): child=Mock();child.poll.return_value=0 def spawn(command,**kwargs): self.assertNotIn('WINEPREFIX',kwargs['env']) @@ -44,10 +44,10 @@ class ExternalPackageTests(unittest.TestCase): patch.object(n.subprocess,'check_output',side_effect=lambda args,**kw:'[]' if 'sink-inputs' in args else '7'), \ patch.object(n.subprocess,'run'),patch.object(n,'cleanup_owned_run',return_value={'cleanup_confirmed':cleanup,'errors':[]}) as cleaned: report=n.run_project(self.steam,self.compat,self.session,project,30,self.authored, - external=self.context if project in {'ai','chat'} else None) + external=self.context if project in {'core'} else None) launch.assert_called_once();cleaned.assert_called_once() return report - def args(self,project='chat',external=True,continuation=True): + def args(self,project='core',external=True,continuation=True): session=Path('/tmp')/('erri-external-package-'+uuid.uuid4().hex) self.addCleanup(lambda:shutil.rmtree(session,ignore_errors=True)) return argparse.Namespace(project=project,external_addons=self.source if external else None, @@ -60,25 +60,22 @@ class ExternalPackageTests(unittest.TestCase): child.assert_not_called() return code,json.loads((args.session/'package-report.json').read_text()),runs.call_args_list def test_option_is_required_only_for_external_projects_before_native_work(self): - for project in ('ai','chat'): + for project in ('core',): with self.subTest(project=project),patch.object(n,'assert_no_game') as game,patch.object(n,'copy_payload') as copy: with self.assertRaisesRegex(ValueError,'require --external-addons'):n.run(self.args(project,False),self.root) game.assert_not_called();copy.assert_not_called() - for project in ('core','intel','map'): - with self.subTest(project=project),patch.object(n,'assert_no_game') as game: - with self.assertRaisesRegex(ValueError,'vanilla-only'):n.run(self.args(project),self.root) - game.assert_not_called() - self.assertIsNone(n.external_request(project,None,self.root)) + for project in ('ai','intel','map','chat'): + with self.assertRaises(ValueError):n.project_order(project) def test_cli_passes_explicit_installed_path_without_launch(self): with patch.object(n,'run',return_value=1) as run: - self.assertEqual(n.main(['--project','ai','--session','/tmp/not-created','--compat',str(self.compat), + self.assertEqual(n.main(['--project','core','--session','/tmp/not-created','--compat',str(self.compat), '--external-addons',str(self.source)]),1) self.assertEqual(run.call_args.args[0].external_addons,self.source) def test_exact_profiles_expose_only_reviewed_six_not_workshop_parent(self): unrelated=self.source/'original';unrelated.mkdir();(unrelated/'addon.gproj').write_text('GameProject { GUID "5F16D7E4A1CBE075" }') self.prepare() - for project in ('core','ai','intel','map','chat'): - profile=self.profile(project);context=self.context if project in ('ai','chat') else None + for project in ('core',): + profile=self.profile(project);context=self.context if project in ('core',) else None records=n.expose_external(project,profile,self.steam,context) expected={'ArmaReforger'}|({'ERRI_'+guid for guid in ext.ALLOWED} if context else set()) self.assertEqual({p.name for p in (profile/'addons').iterdir()},expected) @@ -94,8 +91,8 @@ class ExternalPackageTests(unittest.TestCase): def test_native_helper_rejects_missing_or_wrong_context_before_creating_profile(self): self.prepare() with patch.object(n.subprocess,'Popen') as child: - with self.assertRaises(ValueError):n.run_project(self.steam,self.compat,self.session,'ai',30,self.authored) - with self.assertRaises(ValueError):n.run_project(self.steam,self.compat,self.session,'core',30,self.authored,external=self.context) + with self.assertRaises(ValueError):n.run_project(self.steam,self.compat,self.session,'core',30,self.authored) + with self.assertRaises(ValueError):n.run_project(self.steam,self.compat,self.session,'ai',30,self.authored,external=self.context) child.assert_not_called() self.assertFalse((self.session/'profiles').exists()) def test_missing_manifest_changed_policy_or_foreign_dependency_refuse(self): @@ -110,7 +107,7 @@ class ExternalPackageTests(unittest.TestCase): shutil.rmtree(self.source/ext.DIRECT[0]) with self.assertRaisesRegex(ValueError,'Missing installed'):n.capture_external(self.context,self.session) def test_unrelated_addon_wrong_link_and_whole_tree_link_are_refused(self): - self.prepare();profile=self.profile('ai');records=n.expose_external('ai',profile,self.steam,self.context) + self.prepare();profile=self.profile('core');records=n.expose_external('core',profile,self.steam,self.context) addon=profile/'addons';extra=addon/'Original';extra.symlink_to(self.source,target_is_directory=True) with self.assertRaisesRegex(ValueError,'unrelated'):n.verify_package_profile(profile,self.steam,records) extra.unlink();link=addon/('ERRI_'+ext.DIRECT[0]);link.unlink();link.symlink_to(self.source,target_is_directory=True) @@ -121,7 +118,7 @@ class ExternalPackageTests(unittest.TestCase): self.prepare();report=self.native_double() self.assertTrue(report['candidate_created']);self.assertTrue(report['external_addons_unchanged_after_run']) self.assertTrue(report['profile_addons_unchanged']);self.assertEqual(report['external_addon_count'],6) - evidence=self.session/'evidence/ai' + evidence=self.session/'evidence/core' before=json.loads((evidence/'external-addons-before.json').read_text()) after=json.loads((evidence/'external-addons-after.json').read_text()) self.assertTrue(after['unchanged']);self.assertEqual(after['records'],before) @@ -134,7 +131,7 @@ class ExternalPackageTests(unittest.TestCase): self.assertFalse(report['candidate_created']);self.assertFalse(report['external_addons_unchanged_after_run']) self.assertTrue(report['copied_authored_unchanged']);self.assertTrue(report['cleanup_confirmed']) self.assertTrue(any('External input validation failed' in e for e in report['errors'])) - after=json.loads((self.session/'evidence/ai/external-addons-after.json').read_text()) + after=json.loads((self.session/'evidence/core/external-addons-after.json').read_text()) self.assertFalse(after['unchanged']);self.assertNotEqual(after['records'],self.context['records']) def test_cache_tampering_cannot_relabel_changed_payload_as_unchanged(self): self.prepare() @@ -144,11 +141,11 @@ class ExternalPackageTests(unittest.TestCase): self.prepare();path=self.context['policy_path'] report=self.native_double(mutation=lambda:path.write_text(path.read_text()+'\n')) self.assertFalse(report['candidate_created']);self.assertFalse(report['external_addons_unchanged_after_run']) - after=json.loads((self.session/'evidence/ai/external-addons-after.json').read_text());self.assertIsNone(after['records']) + after=json.loads((self.session/'evidence/core/external-addons-after.json').read_text());self.assertIsNone(after['records']) def test_relinked_private_dependency_fails_without_altering_installed_inputs(self): self.prepare() def mutate(): - link=self.session/'profiles/ai/addons'/('ERRI_'+ext.DIRECT[0]);link.unlink();link.symlink_to(self.source,target_is_directory=True) + link=self.session/'profiles/core/addons'/('ERRI_'+ext.DIRECT[0]);link.unlink();link.symlink_to(self.source,target_is_directory=True) report=self.native_double(mutation=mutate) self.assertFalse(report['candidate_created']);self.assertFalse(report['profile_addons_unchanged']) self.assertTrue(report['external_addons_unchanged_after_run']) @@ -163,10 +160,10 @@ class ExternalPackageTests(unittest.TestCase): def test_context_only_passed_to_ai_and_chat_in_full_build(self): args=self.args() def result(*pos,**kw): - self.assertEqual(kw['external'] is not None,pos[3] in ('ai','chat')) + self.assertEqual(kw['external'] is not None,pos[3] in ('core',)) return base.NativePackageTests.completed_report(True) code,summary,calls=self.run_double(args,result) - self.assertEqual(code,0);self.assertEqual([c.args[3] for c in calls],['core','ai','intel','map','chat']) + self.assertEqual(code,0);self.assertEqual([c.args[3] for c in calls],['core']) self.assertEqual(summary['external_addon_count'],6);self.assertTrue(summary['external_addons_unchanged_after_run']) self.assertFalse(summary['release_qualified']);self.assertFalse(summary['published']) self.assertTrue((args.session/'external-addons-after.json').is_file()) @@ -179,12 +176,11 @@ class ExternalPackageTests(unittest.TestCase): self.assertEqual(code,1);self.assertEqual(seen,['core']);self.assertEqual(len(calls),1) self.assertFalse(summary['external_addons_unchanged_after_run']);self.assertFalse(summary['all_candidates_created']) self.assertIn('external dependency inputs changed',summary['stopped_reason']) - self.assertEqual(summary['skipped_projects'],['ai','intel','map','chat']) + self.assertEqual(summary['skipped_projects'],[]) def test_diagnostic_continuation_cannot_ignore_unverified_external_report(self): - args=self.args();reports=[base.NativePackageTests.completed_report(True), - base.NativePackageTests.completed_report(True,external_addons_unchanged_after_run=False)] + args=self.args();reports=[base.NativePackageTests.completed_report(True,external_addons_unchanged_after_run=False)] code,summary,calls=self.run_double(args,lambda *a,**k:reports.pop(0)) - self.assertEqual(code,1);self.assertEqual(len(calls),2);self.assertIn('external dependency',summary['stopped_reason']) + self.assertEqual(code,1);self.assertEqual(len(calls),1);self.assertIn('external dependency',summary['stopped_reason']) self.assertFalse(summary['all_candidates_created']) if __name__=='__main__':unittest.main() diff --git a/tests/test_native_shared_map_ownership.py b/tests/test_native_shared_map_ownership.py index e73d67e..3e5c6a6 100644 --- a/tests/test_native_shared_map_ownership.py +++ b/tests/test_native_shared_map_ownership.py @@ -4,7 +4,7 @@ Explicit native boundary doubles; this is not a native rendering/camera test. """ import re from policy_harness import ROOT, body, run -SOURCE = ROOT / 'addons/map/Scripts/Game/ERRMap/ERRM_NativeMapOwnershipProbe.c' +SOURCE = ROOT / 'addons/core/Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c' def method(signature): text = body(SOURCE, signature).replace('protected ', '') diff --git a/tests/test_ordinary_gate_observer.py b/tests/test_ordinary_gate_observer.py index c0539fe..540eaad 100644 --- a/tests/test_ordinary_gate_observer.py +++ b/tests/test_ordinary_gate_observer.py @@ -1,7 +1,7 @@ """Execute actual gate observer bodies; fake only native boundaries, no engine claim.""" import re from policy_harness import ROOT, body, run -P=ROOT/'addons/core/Scripts/Game/ERR/ERR_OrdinaryGateObserver.c' +P=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c' def cpp(s): s=s.replace('protected ', '').replace('out bool held', 'bool& held').replace('out float ', 'float& ').replace('out bool ', 'bool& ') types=('ERR_GameMode','BaseWorld','PlayerController','IEntity','ERR_PlayerLife','PlayerManager','BaseUserAction','ERR_UnlockPrisonAction','UserActionContext') @@ -22,7 +22,7 @@ def cpp(s): s=s.replace('nonce.Length()', 'int(nonce.size())').replace('allowed.Contains(nonce[i])', '(allowed.find(nonce[i]) != string::npos)') return s.replace('null','nullptr').replace('string.Format(', 'Format(') accessor=cpp(body(P,'bool ERR_GateReadProgress(')) -shared='\n'.join(cpp(body(ROOT/'addons/core/Scripts/Game/ERR/ERR_OrdinaryInputObserver.c', signature)) for signature in ('static bool Nonce(', 'static bool HeldScope(', 'static bool PhaseAllowed(')) +shared='\n'.join(cpp(body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c', signature)) for signature in ('static bool Nonce(', 'static bool HeldScope(', 'static bool PhaseAllowed(')) methods='\n'.join(cpp(body(P,s)) for s in ('protected static bool Enabled(', 'static void Sample(', 'protected bool BindGate(', 'protected bool Context(', 'protected void Cancel(', 'protected bool CachedPermission(', 'protected static bool FiniteVector(', 'protected static string ChoiceIdentity(', 'protected void ObserveChoices(', 'protected void Observe(')) run(r''' #include diff --git a/tests/test_ordinary_input_observer.py b/tests/test_ordinary_input_observer.py index f949347..f4ee824 100644 --- a/tests/test_ordinary_input_observer.py +++ b/tests/test_ordinary_input_observer.py @@ -1,6 +1,6 @@ """Execute observer policies/lifecycle against native read-boundary adapters, not a game.""" from policy_harness import ROOT, body, run -P=ROOT/'addons/core/Scripts/Game/ERR/ERR_OrdinaryInputObserver.c' +P=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c' def cpp(s): s=s.replace('protected ', '').replace('out bool held', 'bool& held').replace('out string nonce','string& nonce') for t in ('ERR_GameMode','PlayerController','IEntity','ERR_PlayerLife','ERR_OrdinaryInputObserver','PlayerManager','SCR_InventoryMenuUI','Widget'): diff --git a/tests/test_ordinary_look_observer.py b/tests/test_ordinary_look_observer.py index d49a241..90b25a3 100644 --- a/tests/test_ordinary_look_observer.py +++ b/tests/test_ordinary_look_observer.py @@ -1,7 +1,7 @@ """Execute actual observer methods against fake read-only native boundaries.""" import re from policy_harness import ROOT, body, run -P=ROOT/'addons/core/Scripts/Game/ERR/ERR_OrdinaryLookObserver.c' +P=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c' def cpp(s): s=s.replace('protected ', '').replace('out bool held', 'bool& held') types=('ERR_GameMode','BaseWorld','PlayerController','IEntity','PlayerCamera','ERR_PlayerLife','PlayerManager','CameraManager') @@ -14,7 +14,7 @@ def cpp(s): s=s.replace('null','nullptr').replace('new ERR_OrdinaryLookObserver()', 'new ERR_OrdinaryLookObserver()') s=s.replace('nonce.Length()', 'int(nonce.size())').replace('allowed.Contains(nonce[i])', '(allowed.find(nonce[i]) != string::npos)') return s -shared='\n'.join(cpp(body(ROOT/'addons/core/Scripts/Game/ERR/ERR_OrdinaryInputObserver.c', signature)) for signature in ('static bool Nonce(', 'static bool HeldScope(', 'static bool PhaseAllowed(')) +shared='\n'.join(cpp(body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c', signature)) for signature in ('static bool Nonce(', 'static bool HeldScope(', 'static bool PhaseAllowed(')) methods='\n'.join(cpp(body(P,signature)) for signature in ( 'protected static bool Enabled(', 'static void Sample(', 'protected void Cancel(', 'protected bool Context(', 'protected static bool FiniteVector(', 'protected void Observe(')) run(r''' diff --git a/tests/test_ordinary_screenshot.py b/tests/test_ordinary_screenshot.py index e64d475..97539fa 100644 --- a/tests/test_ordinary_screenshot.py +++ b/tests/test_ordinary_screenshot.py @@ -1,7 +1,7 @@ """Actual opt-in screenshot helper lifecycle with native interfaces adapted.""" import re from policy_harness import ROOT,body,run -p=ROOT/'addons/core/Scripts/Game/ERR/ERR_OrdinaryScenarioLaunch.c' +p=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c' signatures=['protected static bool Enabled(', 'static void Queue(ERR_GameMode', 'protected bool Valid(', 'void Cancel()', 'protected void Capture(', 'static void ClearWorld('] # Cancel() also exists in the launch helper; select the screenshot class first. source=p.read_text();helper=source.split('class ERR_OrdinaryScreenshotRequest : Managed',1)[1].split('modded class ArmaReforgerScripted',1)[0] diff --git a/tests/test_packed_chat_game.py b/tests/test_packed_chat_game.py index d278951..dc4bd00 100644 --- a/tests/test_packed_chat_game.py +++ b/tests/test_packed_chat_game.py @@ -56,7 +56,7 @@ class PackedChatTests(unittest.TestCase): 00 SCRIPT : Module: Game; defines: "PLATFORM_WINDOWS" 00 SCRIPT : ERR ORDINARY: header verified project=chat systems=MissionSystems 00 SCRIPT : ERR ORDINARY: local participant verified project=chat phase=prison -00 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +00 SCRIPT : Reintroduced [mission]: phase 0 -> 1 ''' def evidence(self, content=None): diff --git a/tests/test_packed_core_game.py b/tests/test_packed_core_game.py index 1663673..dc5f7f9 100644 --- a/tests/test_packed_core_game.py +++ b/tests/test_packed_core_game.py @@ -17,7 +17,7 @@ import headless_game as runner PROJECT = '''GameProject { ID "ERR_Core" GUID "2528466DE220D91C" - TITLE "Escapists Rereintroduced - Core" + TITLE "Escapists Reintroduced - Core" Dependencies { "58D0FB3206B6F859" } } ''' @@ -54,7 +54,7 @@ class PackedCoreTests(unittest.TestCase): 00 SCRIPT : Module: Game; defines: "PLATFORM_WINDOWS" 00 SCRIPT : ERR ORDINARY: header verified project=core systems=MissionSystems 00 SCRIPT : ERR ORDINARY: local participant verified project=core phase=prison -00 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +00 SCRIPT : Reintroduced [mission]: phase 0 -> 1 ''' def evidence(self,content=None): return runner.packed_evidence(self.content() if content is None else content,self.packed,self.steam,self.profile) diff --git a/tests/test_packed_external_game.py b/tests/test_packed_external_game.py index f157cbe..724fb35 100644 --- a/tests/test_packed_external_game.py +++ b/tests/test_packed_external_game.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Synthetic v3 packaging/runtime boundary tests; no native process or real addon edits.""" +"""Synthetic v4 packaging/runtime boundary tests; no native process or real addon edits.""" import copy,hashlib,json,os,re,shutil,sys,tempfile,unittest from pathlib import Path from types import SimpleNamespace @@ -8,12 +8,12 @@ ROOT=Path(os.environ.get('ERR_TEST_REPO',str(Path(__file__).resolve().parents[1] sys.path.insert(0,str(ROOT/'tools')) if os.environ.get('ERR_PACKED_TOOLS'):sys.path.insert(0,os.environ['ERR_PACKED_TOOLS']) import headless_game as legacy -import packed_external as v3 +import packed_external as v4 import external_addons as ext class ExternalPackedTests(unittest.TestCase): def setUp(self): - self.tmp=tempfile.TemporaryDirectory(prefix='erri-packed-chat-v3test-');self.addCleanup(self.tmp.cleanup);self.home=Path(self.tmp.name) + self.tmp=tempfile.TemporaryDirectory(prefix='erri-packed-chat-v4test-');self.addCleanup(self.tmp.cleanup);self.home=Path(self.tmp.name) self.root=self.home/'repo';(self.root/'docs').mkdir(parents=True) self.source=self.home/'installed';self.source.mkdir();self.value=ext.policy(ROOT) for i,(guid,deps) in enumerate(ext.ALLOWED.items()): @@ -25,24 +25,24 @@ class ExternalPackedTests(unittest.TestCase): (folder/'resourceDatabase.rdb').write_bytes(data);(folder/'data.pak').write_bytes(b'fixture '+guid.encode()) (self.root/'docs/external-addons.json').write_text(json.dumps(self.value)) self.candidate=self.home/'packages';self.candidate.mkdir() - for key,(name,guid,deps) in v3.PROJECTS.items(): - folder=self.candidate/key;folder.mkdir();ids={'58D0FB3206B6F859',*(v3.PROJECTS[d][1] for d in deps),*ext.direct_for(key)} + for key,(name,guid,deps) in v4.PROJECTS.items(): + folder=self.candidate/key;folder.mkdir();ids={'58D0FB3206B6F859',*(v4.PROJECTS[d][1] for d in deps),*ext.direct_for(key)} text='GameProject { ID "'+name+'" GUID "'+guid+'" TITLE "Fixture" Dependencies { '+' '.join('"'+d+'"' for d in sorted(ids))+' } }\n' (folder/'addon.gproj').write_text(text);(folder/'data.pak').write_bytes(b'synthetic '+key.encode());(folder/'resourceDatabase.rdb').write_bytes(b'synthetic '+key.encode()) # Session is a new direct /tmp child, separate from the fixture parent. - session=tempfile.mkdtemp(prefix='erri-packed-chat-v3-');self.session=Path(session);self.session.rmdir();self.addCleanup(lambda:shutil.rmtree(self.session,ignore_errors=True)) + session=tempfile.mkdtemp(prefix='erri-packed-chat-v4-');self.session=Path(session);self.session.rmdir();self.addCleanup(lambda:shutil.rmtree(self.session,ignore_errors=True)) self.profile=self.session/'profile';self.steam=self.home/'Steam';self.vanilla=self.steam/'steamapps/common/Arma Reforger/addons/data';self.vanilla.mkdir(parents=True) self.args=SimpleNamespace(project='chat',packed_addons=self.candidate,packed_core=None,packed_session=self.session,profile=Path('/tmp/erri-game-profile'),settle=15,external_addons=self.source) - self.packed=v3.request(self.args,self.root) + self.packed=v4.request(self.args,self.root) def prepare(self): legacy.prepare_packed(self.packed);(self.profile/'addons').mkdir(parents=True);(self.profile/'addons/ArmaReforger').symlink_to(self.vanilla,target_is_directory=True) - v3.prepare_profile(self.packed,self.steam,self.profile) + v4.prepare_profile(self.packed,self.steam,self.profile) def snapshot(self):return legacy.packed_snapshot(self.packed,['fixture-native-command'],self.profile) def seal(self,raw):return legacy.packed_seal(self.packed,raw,None) def content(self): game=self.steam/'steamapps/common/Arma Reforger' records=[('5614BBCCBB55ED1C','core',game/'addons/core','core.gproj',2),('58D0FB3206B6F859','ArmaReforger',self.profile/'addons/ArmaReforger','ArmaReforger.gproj',14)] - records += [(guid,name,self.packed['input']/key,'addon.gproj',1) for key,(name,guid,_) in v3.PROJECTS.items()] + records += [(guid,name,self.packed['input']/key,'addon.gproj',1) for key,(name,guid,_) in v4.PROJECTS.items()] records += [(guid,self.packed['external_names'][guid],self.profile/'addons'/('ERRI_'+guid),'addon.gproj',1) for guid in self.packed['external_records']] text=f"00 ENGINE : dir: '{self.packed['input']}'\n00 ENGINE : dir: './addons'\n00 ENGINE : dir: '{self.profile}/addons'\n00 ENGINE : Loaded addons:\n" for guid,name,path,descriptor,count in records:text+=f"00 ENGINE : gproj: '{path/descriptor}' guid: '{guid}'\n" @@ -53,33 +53,34 @@ class ExternalPackedTests(unittest.TestCase): 00 SCRIPT : Module: Game; defines: "PLATFORM_WINDOWS" 00 SCRIPT : ERR ORDINARY: header verified project=chat systems=MissionSystems 00 SCRIPT : ERR ORDINARY: local participant verified project=chat phase=prison -00 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +00 SCRIPT : Reintroduced [mission]: phase 0 -> 1 ''' def evidence(self,text=None):return legacy.packed_evidence(self.content() if text is None else text,self.packed,self.steam,self.profile) - def test_explicit_v3_and_frozen_v2_rejection(self): - with patch.object(legacy,'ROOT',self.root):self.assertEqual(legacy.packed_request(self.args)['schema_version'],3) + def test_explicit_v4_and_frozen_v2_rejection(self): + with patch.object(legacy,'ROOT',self.root):self.assertEqual(legacy.packed_request(self.args)['schema_version'],4) with self.assertRaises(ValueError):legacy.packed_payload_inventory(self.candidate,'chat') - self.assertEqual(set(v3.inventory(self.candidate)),{key+'/'+name for key in v3.PROJECTS for name in v3.FILES}) - self.assertEqual(v3.PROJECTS,legacy.PACKED_PROJECTS) + self.assertEqual(set(v4.inventory(self.candidate)),{key+'/'+name for key in v4.PROJECTS for name in v4.FILES}) + self.assertEqual(set(v4.PROJECTS), {'core'}) + self.assertEqual(len(legacy.PACKED_PROJECTS), 5) def test_request_gates(self): for changes in [{'project':'core'},{'packed_core':self.candidate},{'packed_addons':None},{'packed_session':None},{'settle':14},{'profile':self.home/'profile'},{'packed_session':self.home/'nested'},{'packed_session':self.home}]: with self.subTest(changes=changes): args=copy.copy(self.args);vars(args).update(changes) - with self.assertRaises(ValueError):v3.request(args,self.root) + with self.assertRaises(ValueError):v4.request(args,self.root) def test_exact_identity_closure_and_no_loose_files(self): - path=self.candidate/'ai/addon.gproj';original=path.read_text() - for text in [original.replace('"'+ext.DIRECT[0]+'"','"5F16D7E4A1CBE075"'),original.replace('Dependencies {','Dependencies { "'+ext.DIRECT[0]+'"'),original.replace('ERR_Ai','Not_Ai')]: + path=self.candidate/'core/addon.gproj';original=path.read_text() + for text in [original.replace('"'+ext.DIRECT[0]+'"','"5F16D7E4A1CBE075"'),original.replace('Dependencies {','Dependencies { "'+ext.DIRECT[0]+'"'),original.replace('ERR_Core','Not_Core')]: path.write_text(text) - with self.assertRaises(ValueError):v3.inventory(self.candidate) + with self.assertRaises(ValueError):v4.inventory(self.candidate) path.write_text(original);(self.candidate/'core/loose.c').write_text('bad') - with self.assertRaises(ValueError):v3.inventory(self.candidate) + with self.assertRaises(ValueError):v4.inventory(self.candidate) def test_private_copy_exact_six_links_and_schema(self): unrelated=self.source/'protected';unrelated.mkdir();(unrelated/'addon.gproj').write_text('GameProject {GUID "5F16D7E4A1CBE075"}') self.prepare();raw=self.snapshot();value=json.loads(raw) - self.assertEqual(value['schema_version'],3);self.assertEqual(value['kind'],'packed-chat-external-runtime-input');self.assertEqual(len(value['external_addons']),6) + self.assertEqual(value['schema_version'],4);self.assertEqual(value['kind'],'packed-chat-external-runtime-input');self.assertEqual(len(value['external_addons']),6) self.assertEqual({p.name for p in (self.profile/'addons').iterdir()},{'ArmaReforger',*('ERRI_'+g for g in ext.ALLOWED)}) self.assertEqual(self.seal(raw)['packed_inputs_unchanged_after_run'],True) - self.assertNotEqual((self.candidate/'ai/data.pak').stat().st_ino,(self.packed['input']/'ai/data.pak').stat().st_ino) + self.assertNotEqual((self.candidate/'core/data.pak').stat().st_ino,(self.packed['input']/'core/data.pak').stat().st_ino) self.assertFalse(value.get('release_qualified',False)) def test_candidate_and_copy_mutations_refused(self): self.prepare();raw=self.snapshot();(self.packed['input']/'core/data.pak').write_bytes(b'changed') @@ -109,9 +110,9 @@ class ExternalPackedTests(unittest.TestCase): link=self.profile/'addons/ArmaReforger';link.unlink();link.symlink_to(self.source) self.assertFalse(self.seal(raw)['packed_inputs_unchanged_after_run']) def test_provenance_tamper_refused(self): - self.prepare();raw=self.snapshot();(self.session/v3.MANIFEST).write_bytes(raw+b' ') + self.prepare();raw=self.snapshot();(self.session/v4.MANIFEST).write_bytes(raw+b' ') self.assertFalse(self.seal(raw)['packed_inputs_unchanged_after_run']) - def test_valid_full_thirteen_mount_database_proof(self): + def test_valid_full_nine_mount_database_proof(self): result=self.evidence();self.assertTrue(result['ready'],result);self.assertFalse(result['release_qualified']);self.assertEqual(result['external_addon_count'],6) def test_runtime_evidence_rejects_redirects_extra_missing_and_loose(self): content=self.content();guid=ext.DIRECT[0];name=self.packed['external_names'][guid];folder=self.profile/'addons'/('ERRI_'+guid) @@ -119,10 +120,10 @@ class ExternalPackedTests(unittest.TestCase): for text in variants: with self.subTest():self.assertFalse(self.evidence(text)['ready']) def test_crlf_project_and_exact_multiple_external_paks(self): - path=self.candidate/'ai/addon.gproj';path.write_bytes(path.read_bytes().replace(b'\n',b'\r\n')) - self.assertEqual(len(v3.inventory(self.candidate)),15) + path=self.candidate/'core/addon.gproj';path.write_bytes(path.read_bytes().replace(b'\n',b'\r\n')) + self.assertEqual(len(v4.inventory(self.candidate)),3) guid=ext.DIRECT[0];(self.source/guid/'data001.pak').write_bytes(b'second synthetic pak') - self.packed=v3.request(self.args,self.root) + self.packed=v4.request(self.args,self.root) name=self.packed['external_names'][guid];text=self.content().replace('(pak count: 1) to filesystem under name '+name,'(pak count: 2) to filesystem under name '+name) self.assertTrue(self.evidence(text)['ready']);self.assertFalse(self.evidence()['ready']) def test_redirected_profile_refused(self): @@ -131,7 +132,7 @@ class ExternalPackedTests(unittest.TestCase): def test_saves_addon_and_native_provenance_tamper_refused(self): self.prepare();raw=self.snapshot();saves=self.profile/'addons/saves';saves.mkdir();(saves/'addon.gproj').write_text('unreviewed') self.assertFalse(self.seal(raw)['packed_inputs_unchanged_after_run']);shutil.rmtree(saves) - native=self.profile/'logs/logs_2026-09-20_12-34-56';native.mkdir(parents=True);(native/v3.MANIFEST).write_bytes(raw+b' ') + native=self.profile/'logs/logs_2026-09-20_12-34-56';native.mkdir(parents=True);(native/v4.MANIFEST).write_bytes(raw+b' ') self.assertFalse(legacy.packed_seal(self.packed,raw,native)['packed_inputs_unchanged_after_run']) def test_native_errors_are_not_waived(self): result=self.evidence(self.content()+'00 RESOURCES (E): Native resource error\n') diff --git a/tests/test_participant_selection.py b/tests/test_participant_selection.py index 2f167e3..1db1543 100644 --- a/tests/test_participant_selection.py +++ b/tests/test_participant_selection.py @@ -4,7 +4,7 @@ Engine enumeration/geometry/streaming are adapters, not native/MP coverage. """ import re from policy_harness import ROOT,body,run -core=ROOT/'addons/core/Scripts/Game/ERR' +core=ROOT/'addons/core/Scripts/Game/ERR/00_Core' def adapt(s): s=s.replace('protected ','').replace('out vector position','vector& position').replace('null','nullptr') s=re.sub(r'array (\w+) = \{\};',r'Array \1;',s) diff --git a/tests/test_player_admission_policy.py b/tests/test_player_admission_policy.py index 56b718c..786f52f 100644 --- a/tests/test_player_admission_policy.py +++ b/tests/test_player_admission_policy.py @@ -5,7 +5,7 @@ not a character collision, controller, callback, reconnect or native engine test """ import re from policy_harness import ROOT, body, run -base = ROOT / 'addons/core/Scripts/Game/ERR' +base = ROOT / 'addons/core/Scripts/Game/ERR/00_Core' rules = body(base/'ERR_PlayerRoster.c', 'static bool CanEnter(') rules += '\n' + body(base/'ERR_SpawnFinalization.c', 'static bool Allows(') rules += '\n' + body(base/'ERR_SpawnFinalization.c', 'static bool PositionClose(') diff --git a/tests/test_powered_flight_pad.py b/tests/test_powered_flight_pad.py index 82f98e7..e30155b 100644 --- a/tests/test_powered_flight_pad.py +++ b/tests/test_powered_flight_pad.py @@ -1,6 +1,6 @@ """Execute the fixture's deterministic pad survey geometry; no terrain claims.""" from policy_harness import ROOT, body, run -p=ROOT/'addons/core/Scripts/Game/ERR/ERR_NativePoweredFlightProbe.c' +p=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c' source=body(p,'static vector PadOffset(') source+='\n'+body(p,'static vector RefineOffset(') source+='\n'+body(p,'static vector AirportOffset(') diff --git a/tests/test_powered_flight_policy.py b/tests/test_powered_flight_policy.py index 7264e09..dc3718f 100644 --- a/tests/test_powered_flight_policy.py +++ b/tests/test_powered_flight_policy.py @@ -2,7 +2,7 @@ from pathlib import Path import unittest from policy_harness import body, run -SOURCE=Path(__file__).resolve().parents[1]/'addons/core/Scripts/Game/ERR/ERR_NativePoweredFlightProbe.c' +SOURCE=Path(__file__).resolve().parents[1]/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c' class PoweredFlightPolicy(unittest.TestCase): def test_actual_authority_all_inputs(self): method=body(SOURCE,'static bool Authority(') diff --git a/tests/test_prefab_identity.py b/tests/test_prefab_identity.py new file mode 100644 index 0000000..2594c88 --- /dev/null +++ b/tests/test_prefab_identity.py @@ -0,0 +1,36 @@ +"""Reject the missing-root-ID condition that caused RKS #2's replication kick.""" +from pathlib import Path +import sys +import tempfile + +sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'tools')) +from prefab_identity import check_prefabs, root_id + + +def rejects(text): + try: + root_id(text) + except ValueError: + return + raise AssertionError('Accepted invalid root identity') + + +assert root_id('GenericEntity { ID "1234567890ABCDEF" }') == '1234567890ABCDEF' +assert root_id('GenericEntity : "{ABCDEF1234567890}Prefab.et" {\n' + '/* } */ components {} // {\n ID "1234567890ABCDEF" }') == '1234567890ABCDEF' +rejects('GenericEntity { components { RplComponent "{1234567890ABCDEF}" {} } }') +rejects('GenericEntity { { GenericEntity { ID "1234567890ABCDEF" } } }') +rejects('GenericEntity { ID "0000000000000000" }') +rejects('GenericEntity { ID "123" }') +rejects('GenericEntity { ID "1234567890ABCDEF" ID "1234567890ABCDE0" }') +with tempfile.TemporaryDirectory() as directory: + paths = [Path(directory) / name for name in ('one.et', 'two.et')] + for path in paths: + path.write_text('GenericEntity { ID "1234567890ABCDEF" }') + try: + check_prefabs(paths) + except ValueError as error: + assert 'Duplicate prefab root ID' in str(error) + else: + raise AssertionError('Accepted duplicate root identities') +print('PASS: missing, child-only, malformed, zero and duplicate prefab root IDs rejected') diff --git a/tests/test_preparation_status.py b/tests/test_preparation_status.py index 35f06f0..385cb68 100644 --- a/tests/test_preparation_status.py +++ b/tests/test_preparation_status.py @@ -2,26 +2,27 @@ No native layout rendering, multiplayer, or real startup-failure claim. """ from policy_harness import ROOT, body, run -SOURCE=ROOT/'addons/core/Scripts/Game/ERR/ERR_PreparationStatus.c' +SOURCE=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c' def cpp(s): s=s.replace('protected ','').replace('override ','').replace('null','nullptr') s=s.replace('ERR_GameMode mode = ERR_GameMode.Get();','ERR_GameMode* mode = ERR_GameMode::Get();') s=s.replace('ERR_GameMode mode,','ERR_GameMode* mode,') + s=s.replace('ERR_GameMode mode)', 'ERR_GameMode* mode)') for name in ['System','ERR_GameMode','ERR_Phase','ERR_ObjectiveText']:s=s.replace(name+'.',name+'::') s=s.replace('TextWidget.Cast(','CastText(').replace('Widget widget)', 'Widget* widget)').replace('widget.', 'widget->') for name in ['mode','m_wLoadingPlaceholder','m_ERRPreparationSpinner','m_ERRPreparationRoot','m_ERRPreparationTitle','m_ERRPreparationDescription']: s=s.replace(name+'.',name+'->') s=s.replace('GetGame().','GetGame()->').replace('GetWorkspace().','GetWorkspace()->').replace('.IsEmpty()','.empty()') return s.replace('super.','Native::') -methods='\n'.join(cpp(body(SOURCE,key)) for key in ('protected void ERR_ClearPreparationStatus(', 'override void UpdateLoadingPlaceholder(', 'override void DestroyLoadingPlaceholder(', 'protected bool ERR_PreparationWidgetVisible(', 'bool ERR_ProbePreparationVisible(')) +methods='\n'.join(cpp(body(SOURCE,key)) for key in ('void ERR_KeepSpawnSceneLoading(', 'void ERR_ShowSpawnSceneLoading(', 'protected string ERR_PreparationDescription(', 'protected void ERR_ClearPreparationStatus(', 'override void UpdateLoadingPlaceholder(', 'override void DestroyLoadingPlaceholder(', 'protected bool ERR_PreparationWidgetVisible(', 'bool ERR_ProbePreparationVisible(')) run(r''' #include #include #include using string=std::string; namespace System{bool console=false;bool IsConsoleApp(){return console;}} -namespace ERR_Phase{enum{PREPARING,PRISON};} -struct ERR_GameMode{static ERR_GameMode* current;int phase=ERR_Phase::PREPARING;string error;static ERR_GameMode* Get(){return current;}int Phase(){return phase;}string PreparationError(){return error;}};ERR_GameMode* ERR_GameMode::current=nullptr; +namespace ERR_Phase{enum{PREPARING,PRISON,RADIO_SEARCH,RADIO_DEFENCE,EXTRACTION,VICTORY,DEFEAT};} +struct ERR_GameMode{static ERR_GameMode* current;int phase=ERR_Phase::PREPARING;string error;static ERR_GameMode* Get(){return current;}int Phase(){return phase;}bool Active(){return phase>=ERR_Phase::PRISON&&phase<=ERR_Phase::EXTRACTION;}string PreparationError(){return error;}};ERR_GameMode* ERR_GameMode::current=nullptr; namespace ERR_ObjectiveText{string Description(ERR_GameMode* mode,bool){return mode->error.empty()?"Preparing sites":"Mission failed; ask an administrator to correct and restart";}} struct Widget{Widget* parent=nullptr;bool visible=true,removed=false,textWidget=false;string text;int textWrites=0,visibilityWrites=0;float width=900,height=170;std::map children; void GetScreenSize(float& w,float& h){w=width;h=height;}Widget* GetParent(){return parent;}void RemoveFromHierarchy(){removed=true;parent=nullptr;}void SetVisible(bool value){visible=value;visibilityWrites++;}bool IsVisible(){return visible;} @@ -29,23 +30,28 @@ struct Widget{Widget* parent=nullptr;bool visible=true,removed=false,textWidget= Widget* CastText(Widget* w){return w&&w->textWidget?w:nullptr;} struct Workspace{int creates=0;bool fail=false,missingText=false;Widget* CreateWidgets(const char*,Widget* parent){creates++;if(fail)return nullptr;auto root=new Widget;root->parent=parent;for(string name:{"ERR_PreparationTitle","ERR_PreparationDescription"}){auto child=new Widget;child->parent=root;child->textWidget=true;root->children[name]=child;}if(missingText)root->children.erase("ERR_PreparationTitle");return root;}}; struct Game{Workspace workspace;Workspace* GetWorkspace(){return &workspace;}};Game game;Game* GetGame(){return &game;} -struct Native{Widget* m_wLoadingPlaceholder=nullptr;ERR_GameMode* m_pGameMode=nullptr;int nativeUpdates=0,destroys=0;void UpdateLoadingPlaceholder(float){nativeUpdates++;}void DestroyLoadingPlaceholder(){destroys++;if(m_wLoadingPlaceholder)m_wLoadingPlaceholder->RemoveFromHierarchy();m_wLoadingPlaceholder=nullptr;}}; +struct Native{Widget* m_wLoadingPlaceholder=nullptr;ERR_GameMode* m_pGameMode=nullptr;int nativeUpdates=0,destroys=0;void CreateLoadingPlaceholder(){m_wLoadingPlaceholder=new Widget;}void UpdateLoadingPlaceholder(float){nativeUpdates++;}void DestroyLoadingPlaceholder(){destroys++;if(m_wLoadingPlaceholder)m_wLoadingPlaceholder->RemoveFromHierarchy();m_wLoadingPlaceholder=nullptr;}}; struct Probe:Native{ Widget *m_ERRPreparationParent=nullptr,*m_ERRPreparationRoot=nullptr,*m_ERRPreparationTitle=nullptr,*m_ERRPreparationDescription=nullptr,*m_ERRPreparationSpinner=nullptr; - bool m_ERRPreparationSpinnerHidden=false,m_ERRPreparationSpinnerWasVisible=false;string m_ERRPreparationLastTitle,m_ERRPreparationLastDescription; + bool m_ERRKeepSpawnSceneLoading=false,m_ERRPreparationSpinnerHidden=false,m_ERRPreparationSpinnerWasVisible=false;string m_ERRPreparationLastTitle,m_ERRPreparationLastDescription; '''+methods+r''' }; struct Fixture{ERR_GameMode mode;Widget parent,spinner;Probe p;Fixture(){game.workspace={};System::console=false;ERR_GameMode::current=&mode;p.m_pGameMode=&mode;p.m_wLoadingPlaceholder=&parent;parent.children["Spinner"]=&spinner;spinner.parent=&parent;}}; int main(){ + {Fixture f;f.mode.phase=ERR_Phase::PRISON;f.p.ERR_ShowSpawnSceneLoading();auto root=f.p.m_ERRPreparationRoot;f.p.ERR_KeepSpawnSceneLoading(true);f.p.DestroyLoadingPlaceholder();assert(!root->removed&&!f.parent.removed&&f.p.destroys==0);f.p.ERR_KeepSpawnSceneLoading(false);f.p.DestroyLoadingPlaceholder();assert(root->removed&&f.p.destroys==1);f.p.ERR_ShowSpawnSceneLoading();assert(f.p.m_wLoadingPlaceholder&&f.p.ERR_ProbePreparationVisible(&f.mode,false));} {Fixture f;f.p.UpdateLoadingPlaceholder(.1f);assert(f.p.nativeUpdates==1&&game.workspace.creates==1&&f.p.ERR_ProbePreparationVisible(&f.mode,false)); Widget* root=f.p.m_ERRPreparationRoot;auto title=f.p.m_ERRPreparationTitle;auto description=f.p.m_ERRPreparationDescription; for(int i=0;i<200;i++){f.p.UpdateLoadingPlaceholder(.1f);}assert(game.workspace.creates==1&&title->textWrites==1&&description->textWrites==1); f.mode.error="invalid catalog";f.p.UpdateLoadingPlaceholder(.1f);assert(f.p.ERR_ProbePreparationVisible(&f.mode,true)&&!f.spinner.visible); for(int i=0;i<200;i++){f.p.UpdateLoadingPlaceholder(.1f);}assert(f.p.m_ERRPreparationRoot==root&&title->textWrites==2&&description->textWrites==2&&f.spinner.visibilityWrites==1); title->width=0;assert(!f.p.ERR_ProbePreparationVisible(&f.mode,true));title->width=900;f.mode.error.clear();f.p.UpdateLoadingPlaceholder(.1f);assert(f.spinner.visible&&f.p.ERR_ProbePreparationVisible(&f.mode,false)); - f.mode.phase=ERR_Phase::PRISON;f.p.UpdateLoadingPlaceholder(.1f);assert(root->removed&&!f.parent.removed&&f.spinner.visible&&!f.p.m_ERRPreparationRoot); + f.mode.phase=ERR_Phase::PRISON;f.p.UpdateLoadingPlaceholder(.1f);assert(!root->removed&&!f.parent.removed&&f.spinner.visible&&f.p.ERR_ProbePreparationVisible(&f.mode,false)); + assert(description->text=="Please wait while your spawn area and equipment finish loading. You will take control when preparation is complete."); + for(int phase=ERR_Phase::PRISON;phase<=ERR_Phase::EXTRACTION;phase++){f.mode.phase=phase;for(int i=0;i<200;i++)f.p.UpdateLoadingPlaceholder(.1f);assert(f.p.m_ERRPreparationRoot==root&&f.p.ERR_ProbePreparationVisible(&f.mode,false));} + f.mode.phase=ERR_Phase::VICTORY;f.p.UpdateLoadingPlaceholder(.1f);assert(root->removed&&!f.parent.removed&&f.spinner.visible&&!f.p.m_ERRPreparationRoot); } - for(int mismatch=0;mismatch<6;mismatch++){Fixture f;ERR_GameMode other;if(mismatch==0)ERR_GameMode::current=nullptr;if(mismatch==1)f.p.m_pGameMode=&other;if(mismatch==2)f.mode.phase=ERR_Phase::PRISON;if(mismatch==3)System::console=true;if(mismatch==4)f.p.m_wLoadingPlaceholder=nullptr;if(mismatch==5)f.p.m_pGameMode=nullptr;f.p.UpdateLoadingPlaceholder(.1f);assert(game.workspace.creates==0&&f.p.nativeUpdates==1&&!f.parent.removed&&f.spinner.visibilityWrites==0);} + for(int mismatch=0;mismatch<6;mismatch++){Fixture f;ERR_GameMode other;if(mismatch==0)ERR_GameMode::current=nullptr;if(mismatch==1)f.p.m_pGameMode=&other;if(mismatch==2)f.mode.phase=ERR_Phase::VICTORY;if(mismatch==3)System::console=true;if(mismatch==4)f.p.m_wLoadingPlaceholder=nullptr;if(mismatch==5)f.p.m_pGameMode=nullptr;f.p.UpdateLoadingPlaceholder(.1f);assert(game.workspace.creates==0&&f.p.nativeUpdates==1&&!f.parent.removed&&f.spinner.visibilityWrites==0);} + {Fixture f;f.mode.phase=ERR_Phase::PRISON;f.p.UpdateLoadingPlaceholder(.1f);assert(f.p.ERR_ProbePreparationVisible(&f.mode,false));Widget* root=f.p.m_ERRPreparationRoot;f.p.DestroyLoadingPlaceholder();assert(root->removed&&f.parent.removed&&!f.p.m_ERRPreparationRoot&&f.p.destroys==1);f.p.UpdateLoadingPlaceholder(.1f);assert(game.workspace.creates==1);} {Fixture f;f.mode.error="bad";f.spinner.visible=false;f.p.UpdateLoadingPlaceholder(.1f);assert(f.p.ERR_ProbePreparationVisible(&f.mode,true));f.p.ERR_ClearPreparationStatus();assert(!f.spinner.visible);} {Fixture f;f.mode.error="bad";f.p.UpdateLoadingPlaceholder(.1f);Widget* old=f.p.m_ERRPreparationRoot;Widget newParent,newSpinner;newParent.children["Spinner"]=&newSpinner;newSpinner.parent=&newParent;f.p.m_wLoadingPlaceholder=&newParent;f.p.UpdateLoadingPlaceholder(.1f);assert(old->removed&&f.spinner.visible&&!newSpinner.visible&&f.p.m_ERRPreparationParent==&newParent&&game.workspace.creates==2);f.p.DestroyLoadingPlaceholder();assert(newParent.removed&&!f.parent.removed&&newSpinner.visible&&!f.p.m_ERRPreparationRoot&&f.p.destroys==1);} {Fixture f;f.mode.error="bad";f.p.UpdateLoadingPlaceholder(.1f);f.p.m_ERRPreparationParent=nullptr;f.p.m_ERRPreparationRoot=nullptr;f.p.m_ERRPreparationTitle=nullptr;f.p.m_ERRPreparationDescription=nullptr;f.p.m_ERRPreparationSpinner=nullptr;f.p.m_wLoadingPlaceholder=nullptr;f.p.UpdateLoadingPlaceholder(.1f);assert(!f.p.m_ERRPreparationSpinnerHidden);} @@ -54,7 +60,7 @@ int main(){ {Fixture f;f.p.UpdateLoadingPlaceholder(.1f);Widget other;Widget* moved=f.p.m_ERRPreparationRoot;moved->parent=&other;f.p.UpdateLoadingPlaceholder(.1f);assert(moved->removed&&f.p.m_ERRPreparationRoot!=moved&&f.p.m_ERRPreparationParent==&f.parent);} } ''') -probe=ROOT/'addons/core/Scripts/Game/ERR/ERR_NativePreparationStatusProbe.c' +probe=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c' s=body(probe,'static int Tick(').replace('ERR_GameMode mode,','ERR_GameMode* mode,').replace('ERR_GameMode.Get()','ERR_GameMode::Get()').replace('ERR_Phase.PREPARING','PREPARING').replace('mode.','mode->').replace('.IsEmpty()','.empty()').replace('SCR_RespawnSystemComponent respawn','SCR_RespawnSystemComponent* respawn').replace('SCR_RespawnSystemComponent.GetInstance()','SCR_RespawnSystemComponent::GetInstance()').replace('respawn.','respawn->').replace('System.MakeScreenshot','System::MakeScreenshot') run(r''' #include @@ -72,8 +78,10 @@ int main(){ERR_GameMode mode;ERR_GameMode::current=&mode; } ''') text=SOURCE.read_text() +prefab=(ROOT/'addons/core/Prefabs/ERR/GameMode.et').read_text() +assert 'm_bUseSpawnPreload 1' in prefab and 'm_bUseSpawnPreload 0' not in prefab assert 'GetOwner(' not in text -assert text.count('m_pGameMode != mode') == 2 +assert text.count('m_pGameMode != mode') == 3 # m_pGameMode is the installed vanilla protected owner field, assigned by # SCR_RespawnSystemComponent.OnInit(IEntity owner). The adapter deliberately # exposes that field rather than inventing a ScriptComponent.GetOwner API. @@ -81,7 +89,7 @@ for forbidden in ('CallLater(', 'SetCamera(', 'SpawnEntity', 'SetControlledEntit assert forbidden not in text,forbidden native=probe.read_text() for forbidden in ('CreateWidgets(', 'UpdateLoadingPlaceholder(', 'SetText(', 'SetVisible('):assert forbidden not in native -base=(ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c').read_text() +base=(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c').read_text() assert 'ERR_NativePreparationStatusProbe.Tick(this, now)' in base assert 'native-end-active' in base and 'native-end-preparing' in base print('PASS: actual preparation status scope, persistent updates, spinner restoration, placeholder replacement/deletion/destruction, native observation persistence/timeout; rendering remains native-pending') diff --git a/tests/test_prison_ai.py b/tests/test_prison_ai.py new file mode 100644 index 0000000..b591305 --- /dev/null +++ b/tests/test_prison_ai.py @@ -0,0 +1,67 @@ +"""Run the production prison hold/release callbacks with engine boundaries stubbed.""" +from policy_harness import ROOT, body, run +source = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonAI.c' +def cpp(signature): + s=body(source,signature).replace('protected ','') + for ns in ('Replication','SCR_Global','ERR_GameMode','ERR_Phase','ERR_Actors','SCR_FactionManager'): + s=s.replace(ns+'.',ns+'::') + s=s.replace('ERR_GameMode mode =','ERR_GameMode* mode =').replace('IEntity actor =','Actor* actor =') + for var in ('mode','actor','m_ERRPrisonMode'): + s=s.replace(var+'.',var+'->') + s=s.replace('ERR_Phase previous, ERR_Phase current','int previous, int current') + for callback in ('ERR_PrisonPhaseChanged','ERR_PrisonStopped'): + s=s.replace('Insert('+callback+')','Insert("'+callback+'")').replace('Remove('+callback+')','Remove("'+callback+'")') + s=s.replace('OnPhaseChanged().','OnPhaseChanged()->').replace('OnStop().','OnStop()->') + return s +run(r''' +#include +#include +#include +#define null nullptr +namespace Replication {bool server=true;bool IsServer(){return server;}} +namespace SCR_Global {bool edit=false;bool IsEditMode(){return edit;}} +namespace ERR_Phase {constexpr int PRISON=1,RADIO_SEARCH=2;} +struct Actor {bool player=false, fighting=true;int faction=2;}; +namespace ERR_Actors {bool Player(Actor* a){return a&&a->player;}bool CanFight(Actor* a){return a&&a->fighting;}} +namespace SCR_FactionManager {int SGetFaction(Actor* a){return a->faction;}} +struct Hook {std::set callbacks;int inserted=0;void Insert(std::string c){callbacks.insert(c);inserted++;}void Remove(std::string c){callbacks.erase(c);}}; +struct ERR_GameMode {static ERR_GameMode* current;int phase=0,enemy=2;Hook phases,stops; + static ERR_GameMode* Get(){return current;}int Phase(){return phase;}int EnemyFaction(){return enemy;} + Hook* OnPhaseChanged(){return &phases;}Hook* OnStop(){return &stops;}}; +ERR_GameMode* ERR_GameMode::current=nullptr; +struct Agent {ERR_GameMode* m_ERRPrisonMode=nullptr;Actor* actor=nullptr;bool pending=false,active=true;int starts=0; + Actor* GetControlledEntity(){return actor;}bool IsPlayerPending_S(){return pending;} + void DeactivateAI(){active=false;}void ActivateAI(){active=true;starts++;} +'''+cpp('void ERR_HoldForPrison(')+cpp('protected void ERR_PrisonUnsubscribe(')+cpp('protected void ERR_PrisonPhaseChanged(')+cpp('protected void ERR_PrisonStopped(')+r''' +}; +int main(){ + for(int phase=0;phase<=1;phase++){ + ERR_GameMode mode;mode.phase=phase;ERR_GameMode::current=&mode;Actor actor;Agent a;a.actor=&actor; + a.ERR_HoldForPrison();assert(!a.active&&mode.phases.callbacks.size()==1&&mode.stops.callbacks.size()==1); + a.active=true;a.ERR_HoldForPrison();assert(!a.active&&mode.phases.inserted==1); + a.ERR_PrisonPhaseChanged(0,1);assert(!a.active&&a.m_ERRPrisonMode==&mode); + mode.phase=2;a.ERR_PrisonPhaseChanged(1,2);assert(a.active&&a.starts==1&&!a.m_ERRPrisonMode&&mode.phases.callbacks.empty()&&mode.stops.callbacks.empty()); + a.ERR_HoldForPrison();assert(a.active&&mode.phases.inserted==1); + } + for(int fault=0;fault<8;fault++){ + ERR_GameMode mode;ERR_GameMode::current=&mode;Actor actor;Agent a;a.actor=&actor; + if(fault==0)Replication::server=false;if(fault==1)SCR_Global::edit=true; + if(fault==2)ERR_GameMode::current=nullptr;if(fault==3)a.actor=nullptr; + if(fault==4)actor.player=true;if(fault==5)a.pending=true; + if(fault==6)actor.faction=1;if(fault==7)mode.enemy=0; + a.ERR_HoldForPrison();assert(a.active&&!a.m_ERRPrisonMode&&mode.phases.callbacks.empty()); + Replication::server=true;SCR_Global::edit=false; + } + // Dead/unconscious, newly possessed, pending-player and removed actors cannot + // be activated by the release callback; all subscriptions are still removed. + for(int fault=0;fault<4;fault++){ + ERR_GameMode mode;ERR_GameMode::current=&mode;Actor actor;Agent a;a.actor=&actor;a.ERR_HoldForPrison(); + if(fault==0)actor.fighting=false;if(fault==1)actor.player=true; + if(fault==2)a.pending=true;if(fault==3)a.actor=nullptr; + mode.phase=2;a.ERR_PrisonPhaseChanged(1,2);assert(!a.active&&a.starts==0&&mode.phases.callbacks.empty()); + } + {ERR_GameMode mode;ERR_GameMode::current=&mode;Actor actor;Agent a;a.actor=&actor;a.ERR_HoldForPrison(); + a.ERR_PrisonStopped();assert(!a.active&&a.starts==0&&!a.m_ERRPrisonMode&&mode.phases.callbacks.empty()&&mode.stops.callbacks.empty());} +} +'''.replace(';if(', ';\n if(')) +print('PASS: production prison AI hold/release, repeat activation, authority/faction/player exclusion, dead actor and stop cleanup') diff --git a/tests/test_prison_escape_policy.py b/tests/test_prison_escape_policy.py index 385fa1b..ccc35d4 100644 --- a/tests/test_prison_escape_policy.py +++ b/tests/test_prison_escape_policy.py @@ -2,7 +2,7 @@ Native probe separately exercises the direct locked-door boundary and destroyed gate. """ from policy_harness import ROOT, body, run -path=ROOT/'addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c' +path=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c' functions='\n'.join(body(path,s) for s in ('static bool Inside(', 'static bool Continuous(', 'static bool Registration(', 'static bool Grounded(', 'static bool Crossing(')).replace('Math.AbsFloat','std::abs') run('''#include #include @@ -47,7 +47,7 @@ print('PASS: actual prison registration/crossing policies reject missing/duplica # Actual action bodies, with only native type/member syntax adapted to C++. # This tests direct execution, not merely a duplicate availability predicate. -action_path=ROOT/'addons/core/Scripts/Game/ERR/ERR_Actions.c' +action_path=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Actions.c' class ActionSource: def read_text(self): source=action_path.read_text() diff --git a/tests/test_prison_placement_policy.py b/tests/test_prison_placement_policy.py index cb4a552..6983ac2 100644 --- a/tests/test_prison_placement_policy.py +++ b/tests/test_prison_placement_policy.py @@ -2,7 +2,7 @@ This verifies bounded search order/termination, not terrain or body clearance. """ from policy_harness import ROOT,body,run -source=ROOT/'addons/core/Scripts/Game/ERR/ERR_SpawnPlacement.c' +source=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c' search=(body(source,'bool Prison(').replace('map reservations','map* reservations') .replace('out vector position','vector& position').replace('ERR_Actors.', 'ERR_Actors::').replace('Math.', 'Math::')) run('''#include diff --git a/tests/test_progression_identity.py b/tests/test_progression_identity.py index de187c9..94ee918 100644 --- a/tests/test_progression_identity.py +++ b/tests/test_progression_identity.py @@ -1,7 +1,7 @@ """Execute actual gate method and document pre-inventory guard; no native/MP claim.""" from policy_harness import ROOT, body, run -unlock = body(ROOT/'addons/core/Scripts/Game/ERR/ERR_GameMode.c', 'bool UnlockPrison(') -recover = body(ROOT/'addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c', 'protected void Recover(') +unlock = body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c', 'bool UnlockPrison(') +recover = body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c', 'protected void Recover(') # Run precisely the production admission prefix. Inventory is the observable # boundary: rejected bodies must never inspect or spend their carried documents. assert recover.count('InventoryStorageManagerComponent inventory') == 1 @@ -58,7 +58,7 @@ int main(){ print('PASS: actual gate and pre-inventory document guards reject noncanonical/faction/life/disconnect/server mismatches; canonical reconnect and unconscious carried intel preserved') # Native probe safety contracts: actual engine behavior remains for the central run. -probe=(ROOT/'addons/core/Scripts/Game/ERR/ERR_NativeProgressionIdentityProbe.c').read_text() +probe=(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c').read_text() assert probe.startswith('#ifdef WORKBENCH') and probe.rstrip().endswith('#endif') assert probe.count('life.Actor = null;') == 2 for segment in probe.split('life.Actor = null;')[1:]: diff --git a/tests/test_project_schema.py b/tests/test_project_schema.py index d445737..7e435cd 100644 --- a/tests/test_project_schema.py +++ b/tests/test_project_schema.py @@ -10,6 +10,8 @@ ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT/'tools')) import headless_game as packed import source_bundle as bundle +import packed_external as merged +from external_addons import DIRECT from project_schema import parse_project CURRENT = (ROOT/'addons/core/addon.gproj').read_text() @@ -46,8 +48,11 @@ class ProjectSchemaTests(unittest.TestCase): match = parse_project(text, allow_core_menu=True) self.assertIsNotNone(match) self.assertEqual(match.group(1, 2), ('ERR_Core', packed.PACKED_GUID)) - self.assertEqual(set(self.packed(text)), packed.PACKED_FILES) - self.assertEqual(self.source(text)['core']['dependencies'], [packed.PACKED_BASE]) + legacy_text = text + for guid in DIRECT: legacy_text = legacy_text.replace('\"'+guid+'\"', '') + self.assertEqual(set(self.packed(legacy_text)), packed.PACKED_FILES) + with self.assertRaises(ValueError): self.packed(text) + self.assertEqual(set(self.source(text)['core']['dependencies']), {packed.PACKED_BASE, *DIRECT}) self.assertIsNotNone(parse_project(MINIMAL)) self.assertIsNone(parse_project(CURRENT)) @@ -88,16 +93,15 @@ class ProjectSchemaTests(unittest.TestCase): with self.assertRaises(ValueError): self.packed(text) with self.assertRaisesRegex(ValueError, 'identity/dependency'): self.source(text) - def test_extension_is_core_only(self): - for name, (identity, guid, deps) in packed.PACKED_PROJECTS.items(): - if name == 'core': continue - text = (ROOT/'addons'/name/'addon.gproj').read_text() - text = text[:text.rindex('}')]+MENU+'}\n' - with self.subTest(project=name): - with self.assertRaises(ValueError): self.packed(text, name) - payload = dict(self.payload) - payload['addons/'+name+'/addon.gproj'] = text.encode() - with self.assertRaisesRegex(ValueError, 'identity/dependency'): bundle.validate(payload, ROOT) + def test_merged_packed_menu_extension(self): + folder = self.candidate/'core' + folder.mkdir() + for name in ('data.pak', 'resourceDatabase.rdb'): + (self.candidate/name).rename(folder/name) + (folder/'addon.gproj').write_text(CURRENT) + self.assertEqual(set(merged.inventory(self.candidate)), {'core/'+name for name in merged.FILES}) + (folder/'addon.gproj').write_text(CURRENT.replace('Configs/ERR/AdminMenus.conf', 'Configs/Foreign/Menu.conf')) + with self.assertRaises(ValueError): merged.inventory(self.candidate) def test_source_menu_reference_must_resolve_to_its_owned_resource(self): payload = dict(self.payload) diff --git a/tests/test_radio_defence_policy.py b/tests/test_radio_defence_policy.py index 2e72d10..738247b 100644 --- a/tests/test_radio_defence_policy.py +++ b/tests/test_radio_defence_policy.py @@ -2,12 +2,12 @@ Native fixture covers service events and physical character state separately. """ from policy_harness import ROOT, body, run -source=ROOT/'addons/core/Scripts/Game/ERR/ERR_RadioDefenceService.c' +source=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c' functions='\n'.join(body(source, signature) for signature in ( 'static float DefenceRadius(', 'static float TuneRadius(', 'static bool CanTune(', 'static bool Defender(', 'static float SinceAfterSample(', )).replace('ERR_Phase.', 'ERR_Phase::') -functions+='\n'+body(ROOT/'addons/core/Scripts/Game/ERR/ERR_MissionRules.c','static bool DefenceComplete(') +functions+='\n'+body(ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_MissionRules.c','static bool DefenceComplete(') run('''#include #include namespace ERR_Phase {enum {PREPARING,PRISON,RADIO_SEARCH,RADIO_DEFENCE,EXTRACTION,VICTORY,DEFEAT};} diff --git a/tests/test_radio_feedback_policy.py b/tests/test_radio_feedback_policy.py index 21b796f..9fe259c 100644 --- a/tests/test_radio_feedback_policy.py +++ b/tests/test_radio_feedback_policy.py @@ -1,6 +1,6 @@ """Execute the production presentation-state policy; no network claim.""" from policy_harness import ROOT, body, run -source=ROOT/'addons/core/Scripts/Game/ERR/ERR_RadioFeedback.c' +source=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c' function=body(source,'static ERR_RadioFeedback Next(').replace('ERR_RadioFeedback.', 'ERR_RadioFeedback::') run('''#include enum class ERR_RadioFeedback {INACTIVE, WAITING, TRANSMITTING, INTERRUPTED}; diff --git a/tests/test_radio_waiting_text.py b/tests/test_radio_waiting_text.py index b8fd2e5..4ea6c3f 100644 --- a/tests/test_radio_waiting_text.py +++ b/tests/test_radio_waiting_text.py @@ -1,7 +1,7 @@ """Execute actual task/guide copy for initial waiting and subsequent radio states.""" from policy_harness import ROOT, body, run -source = ROOT / 'addons/core/Scripts/Game/ERR/ERR_ObjectiveText.c' +source = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c' def translate(s): s = s.replace('protected ', '').replace('ERR_GameMode mode,', 'ERR_GameMode* mode,') s = s.replace('ERR_Phase phase', 'int phase').replace('mode.', 'mode->') diff --git a/tests/test_recovery_policy.py b/tests/test_recovery_policy.py index ae1180d..f5ef4c4 100644 --- a/tests/test_recovery_policy.py +++ b/tests/test_recovery_policy.py @@ -1,5 +1,5 @@ from policy_harness import ROOT, body, run -p = ROOT / 'addons/core/Scripts/Game/ERR/ERR_RecoveryService.c' +p = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c' rules = body(p, 'static int SurvivorKind(') + '\n' + body(p, 'static bool NeedsRescuer(') run('''#include ''' + rules + ''' diff --git a/tests/test_rough_intel_feedback.py b/tests/test_rough_intel_feedback.py index 7764ca4..4f2e294 100644 --- a/tests/test_rough_intel_feedback.py +++ b/tests/test_rough_intel_feedback.py @@ -1,7 +1,7 @@ """Run actual shared objective selection and map grid methods; no native UI claim.""" from policy_harness import ROOT, body, run -source = ROOT / 'addons/core/Scripts/Game/ERR/ERR_ObjectiveText.c' +source = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c' s = body(source, 'protected static string PhaseDescription(') s = s.replace('protected ', '').replace('ERR_GameMode mode,', 'ERR_GameMode* mode,') s = s.replace('ERR_Phase phase', 'int phase').replace('mode.', 'mode->') @@ -12,7 +12,7 @@ s = s.replace('bool roughRadio;', 'bool roughRadio = false;') # Enforce default s = s.replace('.IsEmpty()', '.empty()').replace('string.Format(', 'Format(') for scope in ('ERR_Phase', 'ERR_LocationKind', 'ERR_RadioFeedback', 'Math'): s = s.replace(scope + '.', scope + '::') -coordinate = body(ROOT / 'addons/core/Scripts/Game/ERR/ERR_DiscoveryMap.c', 'static int Coordinate(').replace('Math.', 'Math::') +coordinate = body(ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c', 'static int Coordinate(').replace('Math.', 'Math::') run(r''' #include #include diff --git a/tests/test_runner_private_cleanup.py b/tests/test_runner_private_cleanup.py index 6ca1d01..0be6440 100644 --- a/tests/test_runner_private_cleanup.py +++ b/tests/test_runner_private_cleanup.py @@ -84,7 +84,10 @@ class WorkbenchIntegrationTests(unittest.TestCase): if path.name=='.erri-workbench.lock':self.open_locks.append(stream) return stream self.tracked_open=tracked_open - self.argv=[str(WB),'--steam',str(self.steam),'--compat',str(self.compat),'--profile',str(self.profile),'--project','core','--rounds','1','--timeout','60'] + import test_external_addons + self.external = test_external_addons.ExternalAddonsTests() + self.external.setUp(); self.addCleanup(self.external.doCleanups) + self.argv=[str(WB),'--steam',str(self.steam),'--compat',str(self.compat),'--profile',str(self.profile),'--project','core','--rounds','1','--timeout','60','--external-addons',str(self.external.source)] def tearDown(self): for stream in self.open_locks:stream.close() self.tmp.cleanup() @@ -114,6 +117,7 @@ class WorkbenchIntegrationTests(unittest.TestCase): clock=[0] def now():clock[0]+=3;return clock[0] with contextlib.ExitStack() as stack: + stack.enter_context(patch('external_addons.policy',return_value=self.external.value)) stack.enter_context(patch.object(Path,'open',self.tracked_open)) stack.enter_context(patch.object(sys,'argv',self.argv)) stack.enter_context(patch('fcntl.flock',side_effect=lambda *a:events.append('lock'))) diff --git a/tests/test_settings_migration.py b/tests/test_settings_migration.py index 2f7ffc5..dff8f34 100644 --- a/tests/test_settings_migration.py +++ b/tests/test_settings_migration.py @@ -41,7 +41,7 @@ with tempfile.TemporaryDirectory() as tmp: assert 'successor capped at one initial convoy' in preview.stderr and legacy.read_bytes()==original # Test the actual runtime validator against the migration schema at each boundary. -validator=body(BASE/'addons/core/Scripts/Game/ERR/ERR_Settings.c','static bool Valid(').replace('string key','std::string key') +validator=body(BASE/'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c','static bool Valid(').replace('string key','std::string key') checks=[] for key,(_,lo,hi) in m.SCHEMA.items(): for value,expected in [(lo-1,False),(lo,True),(hi,True),(hi+1,False)]: diff --git a/tests/test_shared_map_ownership.py b/tests/test_shared_map_ownership.py index b9ccd24..5e7677b 100644 --- a/tests/test_shared_map_ownership.py +++ b/tests/test_shared_map_ownership.py @@ -4,7 +4,7 @@ No Enforce compilation, rendering, remote client or multiplayer claim. """ import re from policy_harness import ROOT, body, run -source = ROOT/'addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c' +source = ROOT/'addons/core/Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c' def adapt(signature): text = body(source, signature).replace('protected ', '').replace('override ', '') diff --git a/tests/test_site_discovery_policy.py b/tests/test_site_discovery_policy.py index 7f5b500..206a9e8 100644 --- a/tests/test_site_discovery_policy.py +++ b/tests/test_site_discovery_policy.py @@ -1,7 +1,7 @@ """Execute production discovery bounds; native LOS/identity remain runtime checks.""" from policy_harness import ROOT, body, run -source = ROOT / 'addons/core/Scripts/Game/ERR/ERR_SiteDiscoveryRules.c' +source = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c' methods = '\n'.join(body(source, sig) for sig in ( 'static float RadioRadiusLimit(', 'static bool ValidRadius(', 'static bool InRange(' )).replace('ERR_LocationKind.', 'ERR_LocationKind::') diff --git a/tests/test_source_bundle.py b/tests/test_source_bundle.py index 53212a8..6e8bcce 100644 --- a/tests/test_source_bundle.py +++ b/tests/test_source_bundle.py @@ -70,7 +70,7 @@ class SourceBundleTests(unittest.TestCase): def test_changed_resource_changes_archive_and_manifest(self): first, manifest = bundle.build(self.root) - name = 'addons/core/Scripts/Game/ERR/ERR_Actors.c' + name = 'addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c' p = self.root / name; p.write_text(p.read_text() + '\n// reviewed successor edit\n') second, updated = bundle.build(self.root) self.assertNotEqual(first, second) @@ -84,17 +84,17 @@ class SourceBundleTests(unittest.TestCase): self.edit(name, '58D0FB3206B6F859', '5F16D7E4A1CBE075') with self.assertRaisesRegex(ValueError, 'identity/dependency'): bundle.build(self.root) - def test_missing_transitive_project_refused(self): - shutil.rmtree(self.root / 'addons/intel') + def test_missing_project_refused(self): + (self.root / 'addons/core/addon.gproj').unlink() with self.assertRaisesRegex(ValueError, 'identity/dependency'): bundle.build(self.root) - def test_resource_dependency_outside_closure_refused(self): - p = self.root / 'addons/core/Scripts/Game/ERR/BadReference.c' - meta = next((self.root / 'addons/map').rglob('*.meta')).read_text() + def test_internal_module_resource_is_visible(self): + p = self.root / 'addons/core/Scripts/Game/ERR/00_Core/BadReference.c' + meta = next((self.root / 'addons/core').rglob('*.meta')).read_text() import re resource = re.search(r'Name "([^"\n]+)"', meta)[1] p.write_text('class ERR_Test { ResourceName asset = "' + resource + '"; }') - with self.assertRaisesRegex(ValueError, 'dependency closure'): bundle.build(self.root) + bundle.build(self.root) # Internal modules share the same resource namespace. def test_metadata_and_unknown_asset_format_refused(self): (self.root / 'addons/core/Prefabs/ERR/Unknown.xob').write_bytes(b'vendor') @@ -104,17 +104,17 @@ class SourceBundleTests(unittest.TestCase): with self.assertRaisesRegex(ValueError, 'metadata|unresolved'): bundle.build(self.root) def test_source_symlink_and_nonregular_refused(self): - p = self.root / 'addons/core/Scripts/Game/ERR/Link.c' + p = self.root / 'addons/core/Scripts/Game/ERR/00_Core/Link.c' p.symlink_to('/etc/hostname') with self.assertRaisesRegex(ValueError, 'symlink'): bundle.build(self.root) p.unlink(); os.mkfifo(p) with self.assertRaisesRegex(ValueError, 'nonregular'): bundle.build(self.root) def test_unsafe_or_case_colliding_member_refused(self): - p = self.root / 'addons/core/Scripts/Game/ERR/escape\\outside.c'; p.write_text('') + p = self.root / 'addons/core/Scripts/Game/ERR/00_Core/escape\\outside.c'; p.write_text('') with self.assertRaisesRegex(ValueError, 'unsafe'): bundle.build(self.root) p.unlink() - (self.root / 'addons/core/Scripts/Game/ERR/err_actors.c').write_text('') + (self.root / 'addons/core/Scripts/Game/ERR/00_Core/err_actors.c').write_text('') with self.assertRaisesRegex(ValueError, 'collision'): bundle.build(self.root) def test_validation_failure_with_output_argument_leaves_no_archive(self): @@ -132,7 +132,7 @@ class SourceBundleTests(unittest.TestCase): nonlocal calls calls += 1 if calls == 2: - (root / 'addons/core/Scripts/Game/ERR/Late.c').write_text('// late addition') + (root / 'addons/core/Scripts/Game/ERR/00_Core/Late.c').write_text('// late addition') return real_inventory(root) with patch.object(bundle, 'inventory', side_effect=changing_inventory): with self.assertRaisesRegex(ValueError, 'tree changed'): bundle.build(self.root) diff --git a/tests/test_spawn_retry_budget.py b/tests/test_spawn_retry_budget.py index 4a9ec7c..9a2d58b 100644 --- a/tests/test_spawn_retry_budget.py +++ b/tests/test_spawn_retry_budget.py @@ -3,7 +3,7 @@ No Enfusion scheduling, possession, collision or remote-client proof. """ import re from policy_harness import ROOT, body, run -source = ROOT/'addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c' +source = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c' method = body(source, 'protected override void DoSpawn_S(') method = method.replace('protected override ', '') for old, new in [('ERR_GameMode', 'Mode'), ('SCR_PlayerController', 'Controller'), diff --git a/tests/test_spawn_scene.py b/tests/test_spawn_scene.py new file mode 100644 index 0000000..d02583b --- /dev/null +++ b/tests/test_spawn_scene.py @@ -0,0 +1,93 @@ +"""Run production readiness/ack/timeout bodies with delayed replication adapters.""" +from policy_harness import ROOT, body, run + +source = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnClientScene.c' +keys = ('bool ERR_SpawnSceneReady(', 'bool ERR_SpawnSceneMayFinish(', + 'protected void ERR_AcknowledgeSpawnScene(', + 'protected void ERR_ClearClientSpawnScene(', + 'protected void ERR_CheckClientSpawnScene(', + 'protected void ERR_CancelClientSpawnScene(') +methods = '\n'.join(body(source, key) for key in keys) +methods = methods.replace('protected ', '').replace('Replication.IsServer()', 'Replication::IsServer()') +methods = methods.replace('ERR_GameMode.Get()', 'Mode::Get()') +methods = methods.replace('RplComponent component = RplComponent.Cast(Replication.FindItem(id));', 'RplComponent* component = Replication::FindItem(id);') +methods = methods.replace('component.GetEntity()', 'component->GetEntity()') +methods = methods.replace('foreach (RplId id :', 'for (RplId id :') +methods = methods.replace('GetGame().GetWorld().GetWorldTime()', 'game.now') +methods = methods.replace('GetGame().GetCallqueue().Remove(ERR_CheckClientSpawnScene)', 'game.removes++') +methods = methods.replace('Rpc(ERR_AcknowledgeSpawnScene, token)', 'SendAck(token)') +run(r''' +#include +#include +#include +using RplId=int; +struct RplComponent{bool entity=true;bool GetEntity(){return entity;}}; +namespace Replication{bool server=true;std::map items;bool IsServer(){return server;}RplComponent* FindItem(int id){return items.count(id)?items[id]:nullptr;}} +struct Mode{static bool present;static bool Get(){return present;}};bool Mode::present=true; +struct Game{float now=0;int removes=0;}game;Game* GetGame(){return &game;} +struct Nodes:std::vector{using std::vector::operator=;void Clear(){clear();}int Count(){return size();}}; +templatevoid PrintFormat(const char*,T...){} +struct Probe{ + int m_ERRSceneToken=4,m_ERRClientSceneToken=4,acks=0,lastAck=0; + bool m_ERRScenePending=false,m_ERRSceneAcknowledged=false,m_ERRSceneTimedOut=false,m_ERRClientScenePending=false; + float m_ERRSceneDeadline=1000;Nodes m_ERRClientSceneNodes; + int GetPlayerId(){return 1;}void SendAck(int token){acks++;lastAck=token;} +'''+methods+r''' +}; +int main(){ + Probe server;assert(!server.ERR_SpawnSceneReady()); + server.ERR_AcknowledgeSpawnScene(4);assert(!server.m_ERRSceneAcknowledged); + server.m_ERRScenePending=true;assert(!server.ERR_SpawnSceneMayFinish()); + server.ERR_AcknowledgeSpawnScene(3);assert(!server.ERR_SpawnSceneReady()); + Replication::server=false;server.ERR_AcknowledgeSpawnScene(4);assert(!server.ERR_SpawnSceneReady());Replication::server=true; + server.ERR_AcknowledgeSpawnScene(4);assert(server.ERR_SpawnSceneReady()&&server.ERR_SpawnSceneMayFinish()); + server.m_ERRSceneAcknowledged=false;game.now=999;assert(!server.ERR_SpawnSceneMayFinish()); + game.now=1000;assert(server.ERR_SpawnSceneMayFinish()&&server.m_ERRSceneTimedOut&&!server.ERR_SpawnSceneReady()); + server.ERR_AcknowledgeSpawnScene(4);assert(!server.ERR_SpawnSceneReady()); + Probe client;client.m_ERRClientScenePending=true;client.m_ERRClientSceneNodes={11,22,33}; + RplComponent root,wall,gate;Replication::items[11]=&root; + for(int i=0;i<100;i++){client.ERR_CheckClientSpawnScene();}assert(client.acks==0&&client.m_ERRClientScenePending); + Replication::items[22]=&wall;client.ERR_CheckClientSpawnScene();assert(client.acks==0); + gate.entity=false;Replication::items[33]=&gate;client.ERR_CheckClientSpawnScene();assert(client.acks==0); + gate.entity=true;client.ERR_CheckClientSpawnScene();assert(client.acks==1&&client.lastAck==4&&!client.m_ERRClientScenePending&&client.m_ERRClientSceneNodes.empty()); + client.ERR_CheckClientSpawnScene();assert(client.acks==1); + client.m_ERRClientScenePending=true;client.m_ERRClientSceneToken=5;client.m_ERRClientSceneNodes={99}; + client.ERR_CancelClientSpawnScene(4);assert(client.m_ERRClientScenePending); + client.ERR_CancelClientSpawnScene(5);assert(!client.m_ERRClientScenePending&&client.m_ERRClientSceneNodes.empty()); + client.m_ERRClientScenePending=true;Mode::present=false;client.ERR_CheckClientSpawnScene();assert(!client.m_ERRClientScenePending&&client.acks==1); +} +''') +finalizer = ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c' +methods = '\n'.join(body(finalizer, key) for key in ('override bool CanFinalize_S(', 'override SCR_ESpawnResult FinalizeRequest_S(')) +for old, new in [('override ', ''), ('SCR_SpawnRequestComponent requestComponent', 'Request* requestComponent'), + ('SCR_SpawnData data', 'Data* data'), ('IEntity entity', 'Actor* entity'), + ('ERR_SpawnLogic logic', 'Logic* logic'), ('ERR_SpawnTicket ticket', 'Ticket* ticket'), + ('ERR_GameMode.Get()', 'Mode::Get()'), ('SCR_ESpawnResult.', 'SCR_ESpawnResult::'), + ('requestComponent.', 'requestComponent->'), ('logic.', 'logic->'), ('super.', 'Native::')]: + methods = methods.replace(old, new) +run(r''' +#include +enum class SCR_ESpawnResult{OK,SPAWN_NOT_ALLOWED,CANNOT_ASSIGN}; +struct Request{bool ready=false,mayFinish=false;int ends=0;bool ERR_SpawnSceneReady(){return ready;}bool ERR_SpawnSceneMayFinish(){return mayFinish;}void ERR_EndSpawnScene(){ends++;}}; +struct Data{};struct Actor{};struct Ticket{}; +struct Mode{static bool current;static bool Get(){return current;}};bool Mode::current=true; +struct Logic{Ticket ticket;bool hasTicket=true,allowed=true;Ticket* TakeSpawnTicket(Request*,Data*,Actor*){return hasTicket?&ticket:nullptr;}bool MayFinalizeSpawn(Ticket*){return allowed;}}; +struct Native{bool preloadReady=false;int assignments=0;SCR_ESpawnResult result=SCR_ESpawnResult::OK;bool CanFinalize_S(Request*,Data*,Actor*){return preloadReady;}SCR_ESpawnResult FinalizeRequest_S(Request*,Data*,Actor*){assignments++;return result;}}; +struct Handler:Native{Logic storage;Logic* logic=&storage;int rejects=0;Logic* ERR_AdmissionLogic(){return logic;}void ERR_RejectOwnedActor(Request*,Actor*,Data*){rejects++;} +'''+methods+r''' +}; +int main(){ + Request request;Data data;Actor actor;Handler h; + h.preloadReady=true;assert(!h.CanFinalize_S(&request,&data,&actor)); + request.mayFinish=true;h.preloadReady=false;assert(!h.CanFinalize_S(&request,&data,&actor)); + h.preloadReady=true;assert(h.CanFinalize_S(&request,&data,&actor)); + // Timeout can end the pending request, but cannot assign an actor. + assert(h.FinalizeRequest_S(&request,&data,&actor)==SCR_ESpawnResult::SPAWN_NOT_ALLOWED&&h.assignments==0&&h.rejects==1&&request.ends==1); + request.ready=true;h.storage.allowed=false; + assert(h.FinalizeRequest_S(&request,&data,&actor)==SCR_ESpawnResult::SPAWN_NOT_ALLOWED&&h.assignments==0&&h.rejects==2); + h.storage.allowed=true;assert(h.FinalizeRequest_S(&request,&data,&actor)==SCR_ESpawnResult::OK&&h.assignments==1&&request.ends==3); + h.storage.hasTicket=false;assert(h.FinalizeRequest_S(&request,&data,&actor)==SCR_ESpawnResult::SPAWN_NOT_ALLOWED&&h.assignments==1&&h.rejects==2); + Mode::current=false;h.logic=nullptr;assert(h.FinalizeRequest_S(&request,&data,&actor)==SCR_ESpawnResult::OK&&h.assignments==2); +} +''') +print('PASS: delayed wall/gate replication withholds assignment; native preload, identity checks, stale replies, cancellation and timeout remain enforced') diff --git a/tests/test_spectator_guidance.py b/tests/test_spectator_guidance.py index b306336..9406836 100644 --- a/tests/test_spectator_guidance.py +++ b/tests/test_spectator_guidance.py @@ -1,6 +1,6 @@ """Execute the actual spectator message/refresh policy; no native UI claim.""" from policy_harness import ROOT,body,run -p=ROOT/'addons/core/Scripts/Game/ERR/ERR_Observer.c' +p=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Observer.c' source=body(p,'static string Message(')+'\n'+body(p,'static bool Refresh(') source=source.replace('ERR_ObserverReason.','ERR_ObserverReason::') run('''#include @@ -39,8 +39,8 @@ assert monitor.index('if (!hints) return;') 1'): + for addition in ("00 GUI (E): Unknown class 'SCR_WidgetExportRuleRoot'",'ERR SMOKE PASS: anything','ERR ORDINARY: ready','Reintroduced [mission]: phase 0 -> 1'): report=runner.vanilla_evidence(BASE+addition);self.assertTrue(report['failed']);self.assertFalse(report['ready']) for define in ('WORKBENCH','ENF_WB'): self.assertTrue(runner.vanilla_evidence(BASE.replace('PLATFORM_WINDOWS','PLATFORM_WINDOWS,'+define))['failed']) diff --git a/tests/test_vehicle_entry_diagnostics.py b/tests/test_vehicle_entry_diagnostics.py index 9a513e5..986bba3 100644 --- a/tests/test_vehicle_entry_diagnostics.py +++ b/tests/test_vehicle_entry_diagnostics.py @@ -3,7 +3,7 @@ import os from pathlib import Path from policy_harness import ROOT,body,run base=Path(os.environ.get('ERR_VEHICLE_DIAGNOSTICS_ROOT',str(ROOT))) -source=base/'addons/core/Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c' +source=base/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c' wrapped=body(source,'protected bool DriverAvailable(').replace('protected ','').replace('m_DriverAction.','m_DriverAction->') run('''#include struct Action {bool allowed=false,fallback=true;int context=-1,checks=0,diagnostics=0,bindings=0;bool CanBePerformedScript(int){checks++;return allowed;}void ERR_ProbeRejectedEntry(int){diagnostics++;}int ERR_ProbeResolvedDoor(int){return context;}bool ERR_ProbeDeclaredDriverDoor(int){bindings++;return fallback;}}; diff --git a/tests/test_vehicle_security.py b/tests/test_vehicle_security.py index dfbe8de..faccb03 100644 --- a/tests/test_vehicle_security.py +++ b/tests/test_vehicle_security.py @@ -3,8 +3,8 @@ import os,re from pathlib import Path from policy_harness import ROOT,body,run base=Path(os.environ.get('ERR_VEHICLE_SECURITY_ROOT',str(ROOT))) -component=base/'addons/core/Scripts/Game/ERR/ERR_VehicleSecurityComponent.c' -actions=base/'addons/core/Scripts/Game/ERR/ERR_VehicleSecurityActions.c' +component=base/'addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c' +actions=base/'addons/core/Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c' def translate(value): value=value.replace('out string reason','string& reason').replace('string.Empty','string{}').replace('override ','') diff --git a/tests/test_vehicle_security_native_probe.py b/tests/test_vehicle_security_native_probe.py index 95e7fe2..710d59e 100644 --- a/tests/test_vehicle_security_native_probe.py +++ b/tests/test_vehicle_security_native_probe.py @@ -3,7 +3,7 @@ import os,re from pathlib import Path from policy_harness import ROOT,body,run base=Path(os.environ.get('ERR_VEHICLE_NATIVE_ROOT',str(ROOT))) -source=base/'addons/core/Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c' +source=base/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c' stop=body(source,'void Stop(').replace('null','nullptr') stop=stop.replace('ChimeraCharacter character = ChimeraCharacter.Cast(m_Player);','ChimeraCharacter* character = m_Player;') for name in ('m_Damage','m_Mode','character'):stop=stop.replace(name+'.',name+'->') @@ -46,8 +46,8 @@ assert '!door.CanBePerformedScript(m_Player)' in inspect and 'door.PerformAction assert 'm_Security.CanBreach(m_Player, reason)' in tick and '!m_Security.TryBreach(m_Player)' in tick assert 'DriverAvailable()' in tick assert 'm_DriverAction.CanBePerformedScript(m_Player)' in body(source,'protected bool DriverAvailable(') -transport=(base/'addons/core/Scripts/Game/ERR/ERR_NativeTransportProbe.c').read_text() -smoke=(base/'addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c').read_text() +transport=(base/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c').read_text() +smoke=(base/'addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c').read_text() assert 'new ERR_NativeTransportProbe(this, m_ERRBasePlayer)' in smoke and 'if (m_ERRTransportProbe) m_ERRTransportProbe.Stop();' in smoke assert transport.index('m_SecurityProbe.Tick(now)') < transport.index('IEntity driver = Character(0)') assert 'void Stop() { if (m_SecurityProbe) m_SecurityProbe.Stop(); }' in transport @@ -55,7 +55,7 @@ print('PASS: actual native-prelude cleanup restores only original changed damage # Existing transport tests did not extract CreateTransport. Test its real new # Configure hook with native construction/FindComponent calls represented by doubles. -site=ROOT/'addons/core/Scripts/Game/ERR/ERR_SiteService.c' +site=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c' create=body(site,'protected bool CreateTransport(').replace('protected ','').replace('null','nullptr') for name in ('ERR_SiteRuntime','ERR_SiteTransport','CarControllerComponent','ERR_VehicleSecurityComponent'): create=re.sub(r'\b'+name+r' (\w+)',name+r'* \1',create) diff --git a/tools/check.py b/tools/check.py index af2c447..4c27692 100644 --- a/tools/check.py +++ b/tools/check.py @@ -3,15 +3,20 @@ from pathlib import Path import json,re,subprocess,sys from external_addons import policy, ALLOWED, direct_for, resource_allowed +from prefab_identity import check_prefabs ROOT=Path(__file__).resolve().parents[1] BASE='58D0FB3206B6F859' def check(): + print(f'PASS: {check_prefabs((ROOT/"addons").rglob("*.et"))} prefabs have unique saved root entity IDs') + subprocess.run([sys.executable,str(ROOT/'tests/test_prefab_identity.py')],check=True) + subprocess.run([sys.executable,str(ROOT/'tests/test_spawn_scene.py')],check=True) + subprocess.run([sys.executable,str(ROOT/'tests/test_prison_ai.py')],check=True) ids={};graph={};resources={};paths={};owners={} for p in sorted((ROOT/'addons').glob('*/addon.gproj')): text=p.read_text();g=re.search(r'GUID "([A-F0-9]{16})"',text)[1] assert g not in ids,f'Duplicate addon GUID: {p}' ids[g]=p.parent.name;graph[g]=re.findall(r'"([A-F0-9]{16})"',re.search(r'\bDependencies\s*\{([^{}]*)\}',text)[1]) - assert len(ids)==5,'Expected five addon projects' + assert ids == {'2528466DE220D91C': 'core'}, 'Expected one combined addon project' external=policy(ROOT) for guid,name in ids.items(): assert (set(graph[guid]) & set(ALLOWED)) == direct_for(name), f'Unreviewed direct external dependency scope: {name}' @@ -37,7 +42,7 @@ def check(): if dep!=BASE:result.update(visible(dep)) return result visibility={ids[g]:visible(g) for g in ids} - assert not (visibility['core'] & set(ALLOWED)), 'Core must remain vanilla-only' + assert set(ALLOWED) <= visibility['core'], 'Combined addon requires the authorized external closure' vanilla=json.loads((ROOT/'docs/vanilla-resources.json').read_text()) for p in (ROOT/'addons').rglob('*'): if not p.is_file() or p.suffix not in ['.c','.et','.conf','.ent','.layer','.layout','.emat']:continue diff --git a/tools/dedicated_native.py b/tools/dedicated_native.py index da15392..35d59e3 100644 --- a/tools/dedicated_native.py +++ b/tools/dedicated_native.py @@ -50,15 +50,10 @@ def sandbox(runtime, source, run): PROJECTS = { 'core': ('2528466DE220D91C', '{AD62322D5213C440}Missions/ERR_Everon_Base.conf'), - 'chat': ('FA804F411BDDF2C6', '{C1E20667DCE324ED}Missions/ERR_Everon.conf'), -} -ADDON_GUIDS = { - 'core': PROJECTS['core'][0], - 'ai': '5192138CB9D5B911', - 'intel': 'D31039C7C53E348A', - 'map': '9AAEE9041D79809E', - 'chat': PROJECTS['chat'][0], + 'chat': ('2528466DE220D91C', '{C1E20667DCE324ED}Missions/ERR_Everon.conf'), } +ADDON_GUIDS = {'core': PROJECTS['core'][0]} + WORLD = '{B6C516F86302C679}Worlds/ERR_Everon.ent' SYSTEMS = '{C50579A2EC48E8EF}Configs/Systems/MissionSystems.conf' @@ -119,7 +114,7 @@ def main(): parser.add_argument('--archive', type=Path, required=True) parser.add_argument('--route', choices=['header', 'diag-world', 'vanilla-everon'], default='header') parser.add_argument('--project', choices=['core', 'chat'], default='core', - help='Core base (default) or Chat with all five declared successor addons') + help='Diagnostic scenario header; both select the combined addon') parser.add_argument('--seconds', type=int, default=90) args = parser.parse_args() if args.route == 'vanilla-everon' and args.project != 'core': diff --git a/tools/dedicated_preflight.py b/tools/dedicated_preflight.py index c833c67..f530ed2 100644 --- a/tools/dedicated_preflight.py +++ b/tools/dedicated_preflight.py @@ -25,7 +25,7 @@ def digest(path): def selected_scenario(source, project): - addon = source / 'addons' / project + addon = source / 'addons' / 'core' text = (addon / 'addon.gproj').read_text() guid = re.search(r'\bGUID "([A-F0-9]{16})"', text) if not guid: @@ -85,7 +85,7 @@ def build_plan(source, runtime, project='core', port=2001): config = { 'bindAddress': '127.0.0.1', 'bindPort': port, 'publicAddress': '127.0.0.1', 'publicPort': port, - 'game': {'name': 'Rereintroduced private validation', 'scenarioId': scenario['header'], + 'game': {'name': 'Reintroduced private validation', 'scenarioId': scenario['header'], 'maxPlayers': 2, 'visible': False, 'gameProperties': {'fastValidation': True, 'battlEye': True}, 'mods': []}, 'operating': {'disableCrashReporter': True}, diff --git a/tools/desktop/kwin-right-monitor.js b/tools/desktop/kwin-right-monitor.js index 870e52b..bce0761 100644 --- a/tools/desktop/kwin-right-monitor.js +++ b/tools/desktop/kwin-right-monitor.js @@ -35,6 +35,6 @@ workspace.windowAdded.connect(function(w) { var windows = workspace.windowList(); // Existing user editors are deliberately left untouched. for (var i = 0; i < windows.length; i++) { - if (String(windows[i].caption).indexOf("Rereintroduced") >= 0) place(windows[i]); + if (String(windows[i].caption).indexOf("Reintroduced") >= 0) place(windows[i]); } print("ERRI_DISPLAY guard active for " + targetName); diff --git a/tools/external_addons.py b/tools/external_addons.py index b34b153..9add7b5 100644 --- a/tools/external_addons.py +++ b/tools/external_addons.py @@ -34,7 +34,7 @@ def policy(root): require(entry['addon'] in ALLOWED and re.fullmatch(r'[A-F0-9]{16}',entry['guid']) is not None,'Unknown resource owner/identity') return value -def direct_for(project):return set(DIRECT) if project=='ai' else set() +def direct_for(project):return set(DIRECT) if project=='core' else set() def resource_allowed(value,visible,guid,path): entry=value['resources'].get(path) diff --git a/tools/headless_game.py b/tools/headless_game.py index 0259fb1..9639529 100644 --- a/tools/headless_game.py +++ b/tools/headless_game.py @@ -129,7 +129,7 @@ def packed_request(a): def prepare_packed(packed): """Called only while holding the ordinary runner's existing prefix lock.""" - if packed.get('schema_version') == 3: + if packed.get('schema_version') == 4: from packed_external import prepare return prepare(packed) packed['session'].mkdir(exist_ok=False) @@ -148,7 +148,7 @@ def prepare_packed(packed): def packed_snapshot(packed, command, profile): - if packed.get('schema_version') == 3: + if packed.get('schema_version') == 4: from packed_external import snapshot return snapshot(packed, command, profile) project = packed.get('project', 'core') @@ -169,7 +169,7 @@ def packed_snapshot(packed, command, profile): def packed_seal(packed, raw, session): """Fail closed on changed/deleted inputs, retaining a useful failure record.""" - if packed.get('schema_version') == 3: + if packed.get('schema_version') == 4: from packed_external import seal return seal(packed, raw, session) metadata = json.loads(raw) @@ -201,7 +201,7 @@ def native_path(value, game_root): def packed_evidence(content, packed, steam, profile): - if packed.get('schema_version') == 3: + if packed.get('schema_version') == 4: from packed_external import evidence return evidence(content, packed, steam, profile, sys.modules[__name__]) project = packed.get('project', 'core') @@ -379,9 +379,9 @@ def command_for(root, steam, compat, profile, project, packed=None, capture_pris if project != packed.get('project', 'core') or project not in {'core', 'chat'}: refuse('Packed input project does not match requested ordinary scenario') addon_root = packed['input'] if project == 'chat' else packed['input'].parent - command += ['-addonsDir', 'Z:'+str(addon_root), '-addons', PACKED_PROJECTS[project][1]] + command += ['-addonsDir', 'Z:'+str(addon_root), '-addons', ('2528466DE220D91C' if packed.get('schema_version') == 4 else PACKED_PROJECTS[project][1])] elif project != CONTROL: - project_text = (root/'addons'/project/'addon.gproj').read_text() + project_text = (root/'addons/core/addon.gproj').read_text() guid = re.search(r'\bGUID "([A-F0-9]{16})"', project_text)[1] command += ['-addonsDir', 'Z:'+str(root/'addons'), '-addons', guid] command += ['-profile', 'Z:'+str(profile)] @@ -411,7 +411,7 @@ def vanilla_evidence(content): allowed = {'5614BBCCBB55ED1C', '58D0FB3206B6F859'} wrong_addons = bool(set(guids) - allowed) base_only = bool(blocks) and set(guids) == allowed and not wrong_addons - successor = any(token in content for token in ('ERR ORDINARY:', 'ERR SMOKE ', 'Rereintroduced [mission]')) + successor = any(token in content for token in ('ERR ORDINARY:', 'ERR SMOKE ')) or bool(re.search(r'Re(?:re)?introduced \[mission\]', content)) menu = "Entities load 'worlds/MainMenuWorld/MainMenuWorld.ent'" in content and 'Entered main menu.' in content failed = bool(report['engine_errors'] or report['script_or_runtime_failures']) or bad_defines or wrong_addons or successor return {**report, 'control_only': True, 'loaded_addon_guids': guids, 'vanilla_addons_only': base_only, @@ -433,10 +433,11 @@ def game_evidence(content, project=None): header_verified = bool(headers) and (project is None or project in headers) participants = re.findall(r'ERR ORDINARY: local participant verified project=(core|chat) phase=prison', content) participant_verified = bool(participants) and (project is None or project in participants) - ready = header_verified and participant_verified and 'Rereintroduced [mission]: phase 0 -> 1' in content + # Accept the historical spelling when reviewing immutable older evidence. + ready = header_verified and participant_verified and bool(re.search(r'Re(?:re)?introduced \[mission\]: phase 0 -> 1', content)) unexpected_fixture = 'ERR SMOKE ' in content failed = (bool(report['engine_errors'] or report['script_or_runtime_failures']) - or 'Rereintroduced: scenario preparation failed' in content + or bool(re.search(r'Re(?:re)?introduced: scenario preparation failed', content)) or 'Can\'t compile "Game"' in content or unexpected_fixture or any({'WORKBENCH', 'ENF_WB'}.intersection(value.split(',')) for value in defines)) return {**report, 'local_participant_verified': participant_verified, 'scenario_header_verified': header_verified, 'verified_header_projects': headers, 'game_module_defines': defines, 'workbench_undefined': non_workbench, @@ -1297,7 +1298,7 @@ def run_locked(a, steam, compat, profile, packed=None): link = addons/'ArmaReforger' if not link.exists() and not link.is_symlink(): link.symlink_to(vanilla, target_is_directory=True) - if packed and packed.get('schema_version') == 3: + if packed and packed.get('schema_version') == 4: from packed_external import prepare_profile prepare_profile(packed, steam, profile) elif link.resolve() != vanilla.resolve() or any(x.name not in {'ArmaReforger', 'saves'} for x in addons.iterdir()) or any((addons/'saves').rglob('*.gproj')): @@ -1469,8 +1470,8 @@ def main(): parser.add_argument('--project', choices=['core', 'chat', CONTROL], default='core') packed_options = parser.add_mutually_exclusive_group() packed_options.add_argument('--packed-core', type=Path, help='Unqualified Core candidate directory containing exactly addon.gproj, data.pak and resourceDatabase.rdb') - packed_options.add_argument('--packed-addons', type=Path, help='Unqualified complete core/ai/intel/map/chat packed directories; requires --project chat') - parser.add_argument('--external-addons', type=Path, help='Explicit DEVELOPMENT packed Chat v3 only: audited installed RHS/WCS/BMP root; six private links, no broad workshop mount') + packed_options.add_argument('--packed-addons', type=Path, help='Packed addon root; with --external-addons expects the single combined core folder (v4), otherwise historical five-addon v2; requires --project chat') + parser.add_argument('--external-addons', type=Path, help='Explicit DEVELOPMENT combined packed mod v4 only: audited installed RHS/WCS/BMP root; six private links, no broad workshop mount') parser.add_argument('--packed-session', type=Path, help='New /tmp/erri-packed-core- or erri-packed-chat- session; owns a fresh input copy and profile') parser.add_argument('--inspect-processes', action='store_true', help='Read-only process preflight report; never launch, lock, write a profile or configure audio') parser.add_argument('--inspect-headless-display', action='store_true', help='Read-only ownership inspection within the hidden display; no input sent, loose Core/Chat only') diff --git a/tools/headless_workbench.py b/tools/headless_workbench.py index 5d6e5ed..a709987 100644 --- a/tools/headless_workbench.py +++ b/tools/headless_workbench.py @@ -25,7 +25,7 @@ p.add_argument('--flight-action-inputs', action='store_true', help='Experimental p.add_argument('--flight-input-diagnostics', action='store_true', help='Opt-in read-only powered-flight input/application and native rotor signal observations') p.add_argument('--rounds', type=int, default=2) p.add_argument('--timeout', type=int, default=360) -p.add_argument('--project', choices=['core', 'chat'], default='chat', help='Core-only base or full companion integration') +p.add_argument('--project', choices=['core', 'chat'], default='chat', help='Diagnostic fixture family (both load the combined mod)') a = p.parse_args() steam, compat, profile = a.steam.resolve(), a.compat.resolve(), a.profile.resolve() if not 1 <= a.rounds <= 10 or not 60 <= a.timeout <= 1800: @@ -61,9 +61,8 @@ if a.smoke == 'environment-restart': if any((profile/name).exists() or (profile/name).is_symlink() for name in fixture_names): p.error('environment-restart fixture paths must not preexist; preserve or move prior evidence before retrying') if compat.is_relative_to(steam) or not (compat/'pfx/system.reg').is_file(): p.error('--compat must be a disposable cloned prefix outside the Steam installation') -if a.external_addons and a.project != 'chat': p.error('External AI dependencies are not permitted in Core-only tests') if a.external_addons and profile == Path('/tmp/erri-workbench-profile'): p.error('Use a separate external-dependency profile; preserve the vanilla test profile') -if a.project == 'chat' and not a.external_addons: p.error('Full Chat now requires --external-addons pointing to installed authorized RHS/WCS/BMP dependencies') +if not a.external_addons: p.error('The combined mod requires --external-addons pointing to installed authorized RHS/WCS/BMP dependencies') prefix_lock = (compat/'.erri-workbench.lock').open('a') try: fcntl.flock(prefix_lock, fcntl.LOCK_EX | fcntl.LOCK_NB) except BlockingIOError: p.error('Another test runner owns this disposable Wine prefix') @@ -103,7 +102,7 @@ for proc in Path('/proc').iterdir(): if profile_arg.encode() in args and any(x.endswith(b'ArmaReforgerWorkbenchSteamDiag.exe') for x in args): p.error('Another Workbench already uses this test profile') except (FileNotFoundError, PermissionError, ProcessLookupError): pass -command = ['gamescope', '--backend', 'headless', '-W', '1280', '-H', '720', '-w', '1280', '-h', '720', '-r', '30', '--', str(proton), 'run', str(wb/'ArmaReforgerWorkbenchSteamDiag.exe'), '-gproj', 'Z:'+str(ROOT/'addons'/a.project/'addon.gproj'), '-addonsDir', 'Z:'+str(ROOT/'addons'), '-profile', profile_arg, '-logconsole', '-wbModule=WorldEditor', '-load', 'Worlds/ERR_Everon.ent', '-plugin=ERR_ValidateWorldPlugin', '-errPlay', '1', '-errSmoke', '1', '-errSmokeOutcome', a.smoke, '-noThrow', '-disableCrashReporter'] +command = ['gamescope', '--backend', 'headless', '-W', '1280', '-H', '720', '-w', '1280', '-h', '720', '-r', '30', '--', str(proton), 'run', str(wb/'ArmaReforgerWorkbenchSteamDiag.exe'), '-gproj', 'Z:'+str(ROOT/'addons/core/addon.gproj'), '-addonsDir', 'Z:'+str(ROOT/'addons'), '-profile', profile_arg, '-logconsole', '-wbModule=WorldEditor', '-load', 'Worlds/ERR_Everon.ent', '-plugin=ERR_ValidateWorldPlugin', '-errPlay', '1', '-errSmoke', '1', '-errSmokeOutcome', a.smoke, '-noThrow', '-disableCrashReporter'] if a.convoy_cover: command += ['-errConvoyCover', '1'] if a.field_service_cancel: command += ['-errSmokeFieldServiceCancel', '1'] if a.field_terrain_audit: command += ['-errSmokeFieldTerrainAudit', '1'] @@ -179,7 +178,7 @@ with (profile/'headless-launch.log').open('w') as output: recorded_sessions.add(session) console = session/'console.log' content = console.read_text(errors='replace') if console.exists() else '' - if ('Rereintroduced: scenario preparation failed' in content and a.smoke not in {'startup-failure', 'extraction-startup-failure', 'extraction-boundary-failure'}) or 'ERR SMOKE FAIL:' in content or 'Virtual Machine Exception' in content or 'Can\'t compile "Game"' in content: + if ('Reintroduced: scenario preparation failed' in content and a.smoke not in {'startup-failure', 'extraction-startup-failure', 'extraction-boundary-failure'}) or 'ERR SMOKE FAIL:' in content or 'Virtual Machine Exception' in content or 'Can\'t compile "Game"' in content: result = 'test-failed'; break if content.count('ERR SMOKE COMPLETE:') >= a.rounds: if complete_at is None: complete_at = time.time() diff --git a/tools/native_command.py b/tools/native_command.py index 88c6d90..339a4c5 100644 --- a/tools/native_command.py +++ b/tools/native_command.py @@ -18,7 +18,7 @@ if a.execute and a.mode=='workbench' and not a.visible_output: p.error('Workbench opens windows. Select/configure a spare display and supply --visible-output first.') command=[str(a.exe),'-addonsDir',str(ROOT/'addons'),'-profile',str(a.profile),'-logconsole'] if a.mode=='workbench': - command+=['-gproj',str(ROOT/'addons'/a.project/'addon.gproj'),'-wbModule=WorldEditor','-load','Worlds/ERR_Everon.ent'] + command+=['-gproj',str(ROOT/'addons/core/addon.gproj'),'-wbModule=WorldEditor','-load','Worlds/ERR_Everon.ent'] if a.smoke:command+=['-plugin','ERR_ValidateWorldPlugin','-errPlay','1','-errSmoke','1','-errSmokeOutcome',a.smoke] if a.project=='core' and a.smoke: if a.smoke not in {'victory', 'cache-loss', 'startup-failure', 'site-survey', 'extraction-capacity', 'early-helicopter-loss', 'extraction-startup-failure', 'extraction-boundary-failure', 'transport-loss', 'transport-survey', 'lifecycle', 'objective-ui', 'recovery', 'prisoner-kit', 'medical', 'casualty-load', 'casualty-direct', 'casualty-bench', 'environment', 'patrols'}:p.error('Unsupported Core-only fixture') @@ -26,7 +26,7 @@ if a.mode=='workbench': command[command.index('-errSmoke')]='-errBaseSmoke' else: if 'server' not in a.exe.name.lower():p.error('Use an actual dedicated server binary for background tests.') - command+=['-addons',{'core':'ERR_Core','chat':'ERR_Chat'}[a.project],'-server','Worlds/ERR_Everon.ent','-maxFPS','60','-logStats','1000'] + command+=['-addons','2528466DE220D91C','-server','Worlds/ERR_Everon.ent','-maxFPS','60','-logStats','1000'] print(json.dumps(command,indent=2)) if a.execute: if not a.exe.is_file():p.error('Executable not found') diff --git a/tools/native_package.py b/tools/native_package.py index 2cab400..4164592 100644 --- a/tools/native_package.py +++ b/tools/native_package.py @@ -59,11 +59,11 @@ def project_order(project): def external_request(project, source, root): - needs_external = project in {'ai', 'chat'} + needs_external = project in {'core'} if needs_external and source is None: - raise ValueError('AI and Chat builds require --external-addons with the audited installed RHS/WCS/BMP closure') + raise ValueError('Combined mod builds require --external-addons with the audited installed RHS/WCS/BMP closure') if source is not None and not needs_external: - raise ValueError('Core, Intel and Map builds must use vanilla-only profiles; --external-addons is not permitted') + raise ValueError('Unknown project; only the combined core addon is supported') if source is None: return None source = Path(source).resolve() @@ -127,9 +127,9 @@ def verify_package_profile(profile, steam, records): def expose_external(project, profile, steam, context): records = {} - if project in {'ai', 'chat'}: + if project in {'core'}: if context is None: - raise ValueError('AI and Chat native packaging require audited external inputs') + raise ValueError('Combined mod native packaging require audited external inputs') verify_external(context) records = prepare_profile(profile/'addons', context['source'], context['policy'], context['cache_path']) if records != context['records']: @@ -300,8 +300,8 @@ def quiet_streams(application_id, sink, compat): def run_project(steam, compat, session, project, timeout, authored, silent_workbench=False, exit_after_init=False, *, external=None): - if (project in {'ai', 'chat'}) != (external is not None): - raise ValueError('Only AI/Chat package profiles require and permit audited external inputs') + if (project in {'core'}) != (external is not None): + raise ValueError('The combined addon requires audited external inputs') command = command_for(steam, session, project, silent_workbench, exit_after_init) proton = Path(command[command.index('--')+1]) executable = Path(command[command.index('--')+3]) @@ -506,7 +506,7 @@ def run(a, root=ROOT): continue_on_failure = getattr(a, 'continue_on_failure', False) stopped_reason = None for project in order: - selected_external = external if project in {'ai', 'chat'} else None + selected_external = external if project in {'core'} else None report = run_project(steam, compat, session, project, a.timeout, authored, silent_workbench, exit_after_init, external=selected_external) reports.append(report) # Diagnostic continuation never grants authority to reuse an unsafe @@ -588,12 +588,12 @@ def run(a, root=ROOT): def main(argv=None): parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('--project', choices=PROJECTS, default='core', help='Build selected addon and its successor dependencies in order') + parser.add_argument('--project', choices=PROJECTS, default='core', help='Build the single combined addon') parser.add_argument('--session', type=Path, required=True, help='New direct child of /tmp; never overwritten') parser.add_argument('--compat', type=Path, required=True, help='Idle disposable cloned Tools prefix under /tmp') parser.add_argument('--steam', type=Path, default=Path.home()/'.local/share/Steam') parser.add_argument('--timeout', type=int, default=300, help='30..1800 seconds per addon') - parser.add_argument('--external-addons', type=Path, help='Required for AI/Chat: installed audited RHS/WCS/BMP root; only allowlisted links enter private profiles') + parser.add_argument('--external-addons', type=Path, help='Required for the combined mod: installed audited RHS/WCS/BMP root; only allowlisted links enter private profiles') lifecycle = parser.add_mutually_exclusive_group() lifecycle.add_argument('--silent-workbench', action='store_true', help='Opt-in documented -wbSilent experiment; packing compatibility still requires native evidence') lifecycle.add_argument('--exit-after-init', action='store_true', help='Opt-in documented -exitAfterInit experiment; natural exit and all native error gates remain mandatory') diff --git a/tools/packed_external.py b/tools/packed_external.py index cac3453..d0e27f8 100644 --- a/tools/packed_external.py +++ b/tools/packed_external.py @@ -1,4 +1,4 @@ -"""Explicit v3 DEVELOPMENT packed Chat consumption; v1/v2 remain unchanged. +"""Explicit v4 DEVELOPMENT combined-mod consumption; v1/v2 remain unchanged. Only the audited installed external closure is linked, never copied or published. """ import hashlib @@ -11,13 +11,8 @@ import uuid import external_addons as external from project_schema import parse_project -PROJECTS = { - 'core': ('ERR_Core', '2528466DE220D91C', ()), - 'ai': ('ERR_Ai', '5192138CB9D5B911', ('core',)), - 'intel': ('ERR_Intel', 'D31039C7C53E348A', ('core',)), - 'map': ('ERR_Map', '9AAEE9041D79809E', ('core',)), - 'chat': ('ERR_Chat', 'FA804F411BDDF2C6', ('core','ai','intel','map')), -} +from source_bundle import PROJECTS + FILES = {'addon.gproj','data.pak','resourceDatabase.rdb'} MANIFEST = 'packed-input-provenance.json' @@ -35,8 +30,8 @@ def digest(path): def inventory(folder): folder=Path(folder) - require(folder.is_dir() and not folder.is_symlink() and folder==folder.resolve(),'Packed v3 closure must be a canonical real directory') - require({p.name for p in folder.iterdir()}==set(PROJECTS),'Packed v3 requires exactly five successor addon folders') + require(folder.is_dir() and not folder.is_symlink() and folder==folder.resolve(),'Packed v4 closure must be a canonical real directory') + require({p.name for p in folder.iterdir()}==set(PROJECTS),'Packed v4 requires exactly the combined core addon folder') records={} for key,(name,guid,deps) in PROJECTS.items(): addon=folder/key @@ -51,16 +46,16 @@ def inventory(folder): parsed=parse_project(text,allow_core_menu=key=='core') actual=re.findall(r'"([A-F0-9]{16})"',parsed[4]) if parsed else [] expected={'58D0FB3206B6F859',*(PROJECTS[d][1] for d in deps),*external.direct_for(key)} - require(parsed and parsed[1]==name and parsed[2]==guid and set(actual)==expected and len(actual)==len(expected),'Packed v3 exact project identity/dependency mismatch: '+key) + require(parsed and parsed[1]==name and parsed[2]==guid and set(actual)==expected and len(actual)==len(expected),'Packed v4 exact project identity/dependency mismatch: '+key) return records def request(args,root): - require(args.project=='chat' and getattr(args,'packed_addons',None) is not None and getattr(args,'packed_core',None) is None,'--external-addons requires --project chat --packed-addons (explicit packed v3)') - require(args.profile==Path('/tmp/erri-game-profile') and args.settle==15,'Packed v3 owns a new private profile and requires 15-second settling') + require(args.project=='chat' and getattr(args,'packed_addons',None) is not None and getattr(args,'packed_core',None) is None,'--external-addons requires --project chat --packed-addons (explicit packed v4)') + require(args.profile==Path('/tmp/erri-game-profile') and args.settle==15,'Packed v4 owns a new private profile and requires 15-second settling') session=getattr(args,'packed_session',None) - require(session is not None,'Packed v3 requires --packed-session') + require(session is not None,'Packed v4 requires --packed-session') session=Path(session) - require(session.is_absolute() and session.parent==Path('/tmp') and session==session.resolve() and re.fullmatch(r'erri-packed-chat-[A-Za-z0-9_-]+',session.name) and not session.exists() and not session.is_symlink(),'Packed v3 requires a new canonical /tmp/erri-packed-chat- session') + require(session.is_absolute() and session.parent==Path('/tmp') and session==session.resolve() and re.fullmatch(r'erri-packed-chat-[A-Za-z0-9_-]+',session.name) and not session.exists() and not session.is_symlink(),'Packed v4 requires a new canonical /tmp/erri-packed-chat- session') candidate=Path(args.packed_addons);artifacts=inventory(candidate) policy_path=Path(root)/'docs/external-addons.json';policy_sha=digest(policy_path);rules=external.policy(root) require(digest(policy_path)==policy_sha,'External policy changed during parsing') @@ -72,7 +67,7 @@ def request(args,root): match=re.search(r'\bID\s+"([A-Za-z0-9_-]+)"',data.decode()) require(match and match[1] not in {'core','ArmaReforger',*(p[0] for p in PROJECTS.values()),*names.values()},'Invalid/duplicate external project mount name') names[guid]=match[1] - return {'schema_version':3,'project':'chat','candidate':candidate,'session':session,'input':session/'input/addons','manifest':artifacts,'external_source':source,'policy_path':policy_path,'policy_sha256':policy_sha,'policy':rules,'external_records':records,'external_names':names,'external_cache':cache} + return {'schema_version':4,'project':'chat','candidate':candidate,'session':session,'input':session/'input/addons','manifest':artifacts,'external_source':source,'policy_path':policy_path,'policy_sha256':policy_sha,'policy':rules,'external_records':records,'external_names':names,'external_cache':cache} def verify_external(packed,profile=None): require(digest(packed['policy_path'])==packed['policy_sha256'],'External policy changed') @@ -121,14 +116,14 @@ def prepare_profile(packed,steam,profile): def snapshot(packed,command,profile): verify_external(packed,profile) require(inventory(packed['input'])==packed['manifest'] and inventory(packed['candidate'])==packed['manifest'],'Packed inputs changed before launch') - value={'schema_version':3,'kind':'packed-chat-external-runtime-input','project':'chat','addon_order':list(PROJECTS),'launch_id':str(uuid.uuid4()),'captured_unix':time.time(),'candidate_directory':str(packed['candidate']),'runtime_directory':str(packed['input']),'profile':str(profile),'command':list(command),'artifacts':packed['manifest'],'external_policy_sha256':packed['policy_sha256'],'external_policy':packed['policy'],'external_addons':packed['external_records'],'external_project_names':packed['external_names'],'build_qualification':'DEVELOPMENT unqualified candidate; original packaging verdict unchanged'} + value={'schema_version':4,'kind':'packed-chat-external-runtime-input','project':'chat','addon_order':list(PROJECTS),'launch_id':str(uuid.uuid4()),'captured_unix':time.time(),'candidate_directory':str(packed['candidate']),'runtime_directory':str(packed['input']),'profile':str(profile),'command':list(command),'artifacts':packed['manifest'],'external_policy_sha256':packed['policy_sha256'],'external_policy':packed['policy'],'external_addons':packed['external_records'],'external_project_names':packed['external_names'],'build_qualification':'DEVELOPMENT unqualified candidate; original packaging verdict unchanged'} raw=(json.dumps(value,indent=2)+'\n').encode();(packed['session']/MANIFEST).write_bytes(raw) return raw def seal(packed,raw,session): value=json.loads(raw);unchanged=False;error=None try: - require(value['schema_version']==3 and value['kind']=='packed-chat-external-runtime-input','Wrong packed v3 provenance schema') + require(value['schema_version']==4 and value['kind']=='packed-chat-external-runtime-input','Wrong packed v4 provenance schema') require(value['external_addons']==packed['external_records'] and value['external_policy_sha256']==packed['policy_sha256'] and value['external_policy']==packed['policy'] and value['external_project_names']==packed['external_names'],'External provenance mismatch') verify_external(packed,packed['profile']) require(inventory(packed['input'])==value['artifacts'] and inventory(packed['candidate'])==value['artifacts'],'Packed inputs changed after launch') @@ -137,7 +132,7 @@ def seal(packed,raw,session): unchanged=True except (OSError,ValueError,KeyError) as caught:error=str(caught) console=session/'console.log' if session else None - return {'packed_only':True,'packed_schema_version':3,'packed_input_provenance':MANIFEST,'packed_input_provenance_sha256':hashlib.sha256(raw).hexdigest(),'packed_launch_id':value['launch_id'],'stopped_unix':time.time(),'packed_inputs_unchanged_after_run':unchanged,'packed_external_inputs_unchanged_after_run':unchanged,'packed_input_error':error,'external_addon_count':len(packed['external_records']),'console_sha256':digest(console) if console and console.is_file() else None,'build_qualified':False,'release_qualified':False} + return {'packed_only':True,'packed_schema_version':4,'packed_input_provenance':MANIFEST,'packed_input_provenance_sha256':hashlib.sha256(raw).hexdigest(),'packed_launch_id':value['launch_id'],'stopped_unix':time.time(),'packed_inputs_unchanged_after_run':unchanged,'packed_external_inputs_unchanged_after_run':unchanged,'packed_input_error':error,'external_addon_count':len(packed['external_records']),'console_sha256':digest(console) if console and console.is_file() else None,'build_qualified':False,'release_qualified':False} def evidence(content,packed,steam,profile,legacy): report=legacy.game_evidence(content,'chat');game=steam/'steamapps/common/Arma Reforger' @@ -188,4 +183,4 @@ def evidence(content,packed,steam,profile,legacy): if any({'WORKBENCH','ENF_WB'}.intersection(flags.split(',')) for _,flags in modules):violations.append('Workbench defines in packed ordinary runtime') path_proof=complete and mounted==set(mounts) and loaded_databases==set(databases) and bool(dirs) failed=report['failed'] or bool(violations) - return {**report,'packed_only':True,'packed_schema_version':3,'external_addon_count':len(packed['external_records']),'packed_loaded_paths_verified':path_proof,'packed_input_violations':violations,'packed_normal_modules':normal,'failed':failed,'ready':report['ready'] and path_proof and normal and not failed,'build_qualified':False,'release_qualified':False,'scope':'DEVELOPMENT packed Chat plus exact audited external closure; ordinary local startup only, no clean-build, human escape, multiplayer, FPS or release qualification'} + return {**report,'packed_only':True,'packed_schema_version':4,'external_addon_count':len(packed['external_records']),'packed_loaded_paths_verified':path_proof,'packed_input_violations':violations,'packed_normal_modules':normal,'failed':failed,'ready':report['ready'] and path_proof and normal and not failed,'build_qualified':False,'release_qualified':False,'scope':'DEVELOPMENT packed combined mod plus exact audited external closure; ordinary local startup only, no clean-build, human escape, multiplayer, FPS or release qualification'} diff --git a/tools/prefab_identity.py b/tools/prefab_identity.py new file mode 100644 index 0000000..8904247 --- /dev/null +++ b/tools/prefab_identity.py @@ -0,0 +1,36 @@ +"""Check serialized root entity IDs required for reproducible prefab replication.""" +import re + + +def root_id(text): + # Braces in resource strings and comments must not change object depth. + tokens = re.findall(r'//[^\n]*|/\*[\s\S]*?\*/|"(?:\\.|[^"\\])*"|[{}]|\b\w+\b', text) + tokens = [token for token in tokens if not token.startswith(('//', '/*'))] + depth = 0 + identities = [] + for index, token in enumerate(tokens): + if token == '{': + depth += 1 + elif token == '}': + depth -= 1 + elif token == 'ID' and depth == 1: + identities.append(tokens[index + 1] if index + 1 < len(tokens) else '') + if len(identities) != 1 or not re.fullmatch(r'"[A-F0-9]{16}"', identities[0]): + raise ValueError('Prefab needs exactly one saved root entity ID') + identity = identities[0][1:-1] + if identity == '0000000000000000': + raise ValueError('Prefab root entity ID must not be zero') + return identity + + +def check_prefabs(paths): + seen = {} + for path in sorted(paths): + try: + identity = root_id(path.read_text()) + except ValueError as error: + raise ValueError(f'{path}: {error}') from error + if identity in seen: + raise ValueError(f'Duplicate prefab root ID {identity}: {seen[identity]} and {path}') + seen[identity] = path + return len(seen) diff --git a/tools/source_bundle.py b/tools/source_bundle.py index 1665ea4..ef7e5c6 100644 --- a/tools/source_bundle.py +++ b/tools/source_bundle.py @@ -21,37 +21,29 @@ from release_check import audit, read_json, evidence_path ROOT = Path(__file__).resolve().parents[1] BASE = '58D0FB3206B6F859' -PROJECTS = { - 'core': ('ERR_Core', '2528466DE220D91C', ()), - 'ai': ('ERR_Ai', '5192138CB9D5B911', ('core',)), - 'intel': ('ERR_Intel', 'D31039C7C53E348A', ('core',)), - 'map': ('ERR_Map', '9AAEE9041D79809E', ('core',)), - 'chat': ('ERR_Chat', 'FA804F411BDDF2C6', ('core', 'ai', 'intel', 'map')), -} +PROJECTS = {'core': ('ERR_Core', '2528466DE220D91C', ())} + DIRECTORIES = {'Scripts', 'Prefabs', 'Configs', 'Missions', 'Worlds', 'UI', 'Materials'} SUFFIXES = {'.c', '.et', '.conf', '.ent', '.layer', '.layout', '.emat', '.meta', '.gproj'} EXCLUDED = {'.git', '.build', '.local', '__pycache__', 'profiles', 'profile', 'cache', 'runtime', 'evidence', 'vendor', 'vanilla', 'original', 'node_modules', '.agents', '.codex'} -README = '''# DEVELOPMENT SOURCE BUNDLE — Escapists Rereintroduced +README = '''# DEVELOPMENT SOURCE BUNDLE — Escapists Reintroduced -This ZIP contains authored source and editable resources for all five successor -addon projects. It is NOT a native .pak, a qualified release, or a published mod. -No original Escapists, installed vanilla or third-party assets are redistributed. Vanilla asset -references require a separately installed, compatible Arma Reforger and Workbench. +Author: Jakub Jim Žáček. -Extract into a NEW development folder, never over an existing mission/project. -Configure Workbench's addon search directory to the extracted addons directory. -Open addons/core/addon.gproj for the independent Core project, or -addons/chat/addon.gproj for the complete companion dependency set. Every project -also declares vanilla Arma Reforger (58D0FB3206B6F859): core; ai -> core; -intel -> core; map -> core; chat -> core, ai, intel, map. +This ZIP contains the single Escapists Reintroduced addon, with Core, AI, +Intel, Map and Chat script folders. It is NOT a native .pak or a published mod. +Third-party assets are not redistributed. -Core scenario: {AD62322D5213C440}Missions/ERR_Everon_Base.conf -Companion scenario: {C1E20667DCE324ED}Missions/ERR_Everon.conf +Extract into a NEW development folder and register addons/core/addon.gproj in +Workbench. Install and register the RHS/WCS dependencies in EXTERNAL-ADDONS.json. +Open addons/core/addon.gproj and use Missions/ERR_Everon.conf. + +Scenario: {C1E20667DCE324ED}Missions/ERR_Everon.conf Use the installed engine's normal project/scenario workflow. This archive has not been compiled by its bundler; no native caches or binaries are included. -Target: Everon, up to 12 players; Core is vanilla-only and full AI requires the listed external addons. This remains development source. +Target: Everon, up to 12 players. The mod requires the listed external addons. This remains development source. Manual prison/scavenging/radio/extraction play, remote joins/reconnects and ownership, twelve connected players, aircraft support, repeated companion cleanup, matched-workload FPS improvement and release qualification require separate @@ -124,7 +116,7 @@ def validate(payload, root): external = external_policy(root) own_ids = read_json(evidence_path(root, 'docs/addons.json')) if own_ids != {name: item[1] for name, item in PROJECTS.items()}: - raise ValueError('successor identity catalog differs from the five owned projects') + raise ValueError('successor identity catalog differs from the single owned project') for name, (identity, guid, deps) in PROJECTS.items(): text = payload.get(f'addons/{name}/addon.gproj', b'').decode('utf-8') match = parse_project(text, allow_core_menu=name == 'core') @@ -158,7 +150,7 @@ def validate(payload, root): raise ValueError(f'resource lacks successor metadata: {name}') owner = name.split('/')[1] visible = {owner, *PROJECTS[owner][2]} - if 'ai' in visible: visible.update(ALLOWED) + if 'core' in visible: visible.update(ALLOWED) for guid, resource in re.findall(r'\{([A-F0-9]{16})\}([^"\n]+)', text): if guid in resources: path, target = resources[guid] @@ -188,7 +180,7 @@ def build(root=ROOT, mode='development'): raise ValueError('Not release-qualified after collection:\n - ' + '\n - '.join(blockers)) if inventory(root) != before: raise ValueError('addon tree changed during collection') - payload['BUNDLE-README.md'] = (README + '\nThe AI/full scenario requires the separately installed authorized addons listed in EXTERNAL-ADDONS.json. Their assets are not bundled. Core remains vanilla-only.\n').encode('utf-8') + payload['BUNDLE-README.md'] = (README + '\nThe combined scenario requires the separately installed authorized addons listed in EXTERNAL-ADDONS.json. Their assets are not bundled.\n').encode('utf-8') payload['EXTERNAL-ADDONS.json'] = json.dumps(external_policy(root),indent=2,sort_keys=True).encode('utf-8') manifest = {'schema_version': 1, 'kind': 'DEVELOPMENT SOURCE BUNDLE', 'native_build': False, 'release_package': False, 'projects': projects,