From 782c163c684f90c04c0116c9a5ab3fd2ec83ff33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20=C5=BD=C3=A1=C4=8Dek?= Date: Sun, 20 Sep 2026 07:32:24 +0200 Subject: [PATCH] Integrate finite infantry resupply with delivered low-ammunition reports --- .../ai/Scripts/Game/ERR/ERR_ConvoyService.c | 10 +- addons/ai/Scripts/Game/ERR/ERR_HQ.c | 35 +- .../ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c | 44 ++ .../Game/ERR/ERR_InfantryAmmoTransfer.c | 187 +++++ .../Scripts/Game/ERR/ERR_InfantryResupply.c | 278 +++++++ docs/ai-feature-migration.json | 13 +- docs/ai-feature-migration.md | 4 + docs/convoy-migration.md | 4 + docs/current-status.md | 2 + .../console.log.txt | 248 ++++++ .../error.log.txt | 60 ++ .../external-addons-inputs.json.txt | 744 ++++++++++++++++++ .../headless-launch.log.txt | 131 +++ .../launch-source-sha256.json | 256 ++++++ .../launch-source.json | 45 ++ .../report.json | 38 + .../runner.json.txt | 40 + .../script.log.txt | 46 ++ .../source-provenance.json | 4 + .../source-sha256.json | 256 ++++++ .../console.log.txt | 680 ++++++++++++++++ .../err-result.png | Bin 0 -> 226533 bytes .../error.log.txt | 135 ++++ .../external-addons-inputs.json.txt | 744 ++++++++++++++++++ .../headless-launch.log.txt | 150 ++++ .../launch-source-sha256.json | 256 ++++++ .../launch-source.json | 45 ++ .../report.json | 14 + .../rereintroduced-hq.log.txt | 152 ++++ .../runner.json.txt | 40 + .../script.log.txt | 319 ++++++++ .../source-provenance.json | 4 + .../source-sha256.json | 256 ++++++ docs/hq-ammunition.md | 18 +- docs/infantry-resupply.md | 27 + tests/test_convoy_combat.py | 5 +- tests/test_convoy_lifecycle.py | 4 + tests/test_hq_ammo_reporting.py | 110 +++ tests/test_hq_convoy_combat.py | 6 +- tests/test_hq_uplink_fairness.py | 14 +- tests/test_infantry_ammo_transfer.py | 156 ++++ tests/test_infantry_resupply_coordinator.py | 130 +++ tests/test_intel_registration.py | 9 +- tools/check.py | 2 +- 44 files changed, 5690 insertions(+), 31 deletions(-) create mode 100644 addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c create mode 100644 addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c create mode 100644 addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/console.log.txt create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/error.log.txt create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/external-addons-inputs.json.txt create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/headless-launch.log.txt create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/launch-source-sha256.json create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/launch-source.json create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/report.json create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/runner.json.txt create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/script.log.txt create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/source-provenance.json create mode 100644 docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/source-sha256.json create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/console.log.txt create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/err-result.png create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/error.log.txt create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/external-addons-inputs.json.txt create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/headless-launch.log.txt create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/launch-source-sha256.json create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/launch-source.json create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/report.json create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/rereintroduced-hq.log.txt create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/runner.json.txt create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/script.log.txt create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/source-provenance.json create mode 100644 docs/evidence/native-2026-09-20-072839-infantry-resupply/source-sha256.json create mode 100644 docs/infantry-resupply.md create mode 100644 tests/test_hq_ammo_reporting.py create mode 100644 tests/test_infantry_ammo_transfer.py create mode 100644 tests/test_infantry_resupply_coordinator.py diff --git a/addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c b/addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c index e38c26f..fecbcbf 100644 --- a/addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c +++ b/addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c @@ -113,6 +113,8 @@ class ERR_ConvoyVehicle bool Released; bool Registered; ref ERR_ConvoyCombatState Combat = new ERR_ConvoyCombatState(); + int SupplyToken; + bool SupplyHeld; bool Arrived; float LegDeadline; float NextReadinessNote; @@ -127,7 +129,7 @@ class ERR_ConvoyVehicle { if (Released) return; Released = true; - Combat.Held = false; + Combat.Held = false; SupplyToken = 0; SupplyHeld = false; ClearOrder(); if (mode && mode.Forces()) { @@ -153,7 +155,7 @@ class ERR_ConvoyVehicle } bool Order(ERR_ForceRoute route, float now) { - if (Released || Arrived || Combat.Held || !Group || !Entity || !route || RouteIndex >= route.Count()) return false; + if (Released || Arrived || Combat.Held || SupplyHeld || !Group || !Entity || !route || RouteIndex >= route.Count()) return false; if (Waypoint) return true; Waypoint = AIWaypoint.Cast(ERR_Actors.Spawn(ERR_Resources.MoveWaypoint(), route.At(RouteIndex))); if (!Waypoint) return false; @@ -166,7 +168,7 @@ class ERR_ConvoyVehicle { if (Released || Arrived) return; if (!CrewValid(mode)) { Release(mode); return; } - if (Combat.Held) return; + if (Combat.Held || SupplyHeld) return; // Native completion measures the seated group, not the vehicle origin. // Keep the same predicate after native removal of the completed waypoint. if (Waypoint && Waypoint.IsWithinCompletionRadius(Group)) @@ -419,7 +421,7 @@ class ERR_ConvoyService else { unit.Combat.Held = false; - if (!unit.Order(task.Route, now)) { unit.Release(m_Mode); return false; } + if (!unit.SupplyHeld && !unit.Order(task.Route, now)) { unit.Release(m_Mode); return false; } } ERR_HQ.Event("CONVOY COVER", string.Format("command M%1 report M%2 vehicle=%3 held=%4 routeIndex=%5", order.CommandId, order.ReportId, unit.Index, unit.Combat.Held, unit.RouteIndex)); return true; diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQ.c b/addons/ai/Scripts/Game/ERR/ERR_HQ.c index b533b64..4bb3336 100644 --- a/addons/ai/Scripts/Game/ERR/ERR_HQ.c +++ b/addons/ai/Scripts/Game/ERR/ERR_HQ.c @@ -17,6 +17,7 @@ class ERR_HQUnit ref ERR_HQSearchReport PendingSweep; ref ERR_HQStatusReport PendingStatus; ref ERR_HQStatusSampler StatusSampler = new ERR_HQStatusSampler(); + ref ERR_HQAmmoReporting AmmoReporting = new ERR_HQAmmoReporting(); string ForceSourceId; float NextStatus; bool PendingCheckin; @@ -96,6 +97,7 @@ class ERR_HQ : ERR_CommandService protected ref ERR_HQBodyObserver m_Bodies = new ERR_HQBodyObserver(); protected ref ERR_HQWatch m_Watch = new ERR_HQWatch(); protected ref ERR_MortarLogistics m_Logistics; + protected ref ERR_InfantryResupply m_Resupply; protected ref array m_Units = {}; protected ref array m_Contacts = {}; protected ref ERR_HQMemory m_Memory = new ERR_HQMemory(); @@ -109,7 +111,7 @@ class ERR_HQ : ERR_CommandService protected float m_NextNetwork; protected float m_NextAssignment; - void ERR_HQ(ERR_GameMode mode) { m_Mode = mode; m_Equipment = new ERR_EnemyEquipment(mode); m_ConvoyPool = new ERR_ConvoyPool(mode, 1); m_Convoys = new ERR_ConvoyService(mode, m_ConvoyPool); m_Mortars = new ERR_MortarSystem(this); m_Logistics = new ERR_MortarLogistics(this, mode); } + void ERR_HQ(ERR_GameMode mode) { m_Mode = mode; m_Equipment = new ERR_EnemyEquipment(mode); m_ConvoyPool = new ERR_ConvoyPool(mode, 1); m_Convoys = new ERR_ConvoyService(mode, m_ConvoyPool); m_Mortars = new ERR_MortarSystem(this); m_Logistics = new ERR_MortarLogistics(this, mode); m_Resupply = new ERR_InfantryResupply(this, mode); } static ERR_HQ Get() { ERR_GameMode mode = ERR_GameMode.Get(); @@ -283,12 +285,14 @@ class ERR_HQ : ERR_CommandService if (ERR_MortarPrediction.Fresh(contact, now)) contacts.Insert(contact.Snapshot()); } + ERR_HQWatch Watch() { return m_Watch; } + ERR_InfantryResupply Resupply() { return m_Resupply; } ERR_HQMemory Memory() { return m_Memory; } ERR_HQCoverage Coverage() { return m_Coverage; } ERR_HQJournal Journal() { return m_Journal; } string Status() { - return string.Format("HQ: %1 groups, %2 delivered contacts, %3 assignments", m_Units.Count(), m_Contacts.Count(), Assigned()) + string.Format("; %1 remembered tracks, %2 swept cells", m_Memory.Count(), m_Coverage.Count()) + "; " + m_Mode.Forces().Status() + "; " + m_Mortars.Status() + "; " + m_Logistics.Status(); + return string.Format("HQ: %1 groups, %2 delivered contacts, %3 assignments", m_Units.Count(), m_Contacts.Count(), Assigned()) + string.Format("; %1 remembered tracks, %2 swept cells", m_Memory.Count(), m_Coverage.Count()) + "; " + m_Mode.Forces().Status() + "; " + m_Mortars.Status() + "; " + m_Logistics.Status() + "; " + m_Resupply.Status(); } protected void BindPhysical(ERR_HQUnit unit) @@ -325,6 +329,7 @@ class ERR_HQ : ERR_CommandService m_Equipment.RegisterGroup(group, unit.Id, !m_Mortars || !m_Mortars.FindGroup(group)); BindPhysical(unit); unit.NextStatus = GetGame().GetWorld().GetWorldTime() + 10000 + phase * 1000; + unit.AmmoReporting.Initialize(unit.Id, GetGame().GetWorld().GetWorldTime()); m_Journal.Write("REGISTER", string.Format("group %1", unit.Id)); } @@ -424,17 +429,22 @@ class ERR_HQ : ERR_CommandService protected void StatusReport(ERR_HQUnit unit, float now) { unit.StatusSampler.ObserveDeaths(); - if (unit.Uplink || !unit.Radio || now < unit.NextStatus) return; + if (unit.Uplink || !unit.Radio) return; + bool routine = now >= unit.NextStatus; + if (!routine && !unit.AmmoReporting.ScanDue(now)) return; + unit.AmmoReporting.Scanned(now); ERR_HQRoute route = m_Network.Route(unit.Radio); if (!route) return; + // A local sample reserves an identifier; a healthy early sample creates no frame. ERR_HQStatusReport report = unit.StatusSampler.Sample(now, m_Journal.Message(), unit.Radio); - if (!report) return; + if (!report || (!routine && !unit.AmmoReporting.Urgent(report, now))) return; route.MessageId = report.MessageId; route.Payload = string.Format("status %1: %2 living, %3 fit, %4 confirmed losses; sampled=%5", report.SourceId, report.Count, report.Fit, report.ConfirmedLosses, report.ObservedAt); string ammunition = "unknown"; if (report.AmmoState && report.AmmoState.Complete) ammunition = string.Format("%1 magazine rounds, %2 chambered", report.AmmoState.SmallArmsRounds, report.AmmoState.SmallArmsChambers); route.Payload += "; small-arms ammunition=" + ammunition; unit.PendingStatus = report; unit.Uplink = route; unit.NextStatus = now + 180000; + unit.AmmoReporting.Queued(now); m_Journal.Write("STATUS REPORT", route.Payload, route.MessageId); } // Due routine status and requested check-ins get the next free uplink. @@ -784,12 +794,23 @@ class ERR_HQ : ERR_CommandService } return best; } + protected void PlanResupply(float now) + { + if (!m_Resupply || m_Resupply.State() != 1 || !m_ConvoyTask || m_ConvoyTask.Stopped + || !m_ConvoyTask.Ready || m_ConvoyTask.Vehicles.Count() != 6) return; + ERR_HQUnit donor; + foreach (ERR_HQUnit unit : m_Units) if (unit.Group == m_ConvoyTask.Vehicles[1].Group) donor = unit; + if (!donor || ConvoyContact(donor, now)) return; + ERR_HQWatchEntry donorStatus = m_Watch.Find(donor.ForceSourceId); + foreach (ERR_HQUnit recipient : m_Units) + if (m_Resupply.TryPlan(recipient, donor, m_Watch.Find(recipient.ForceSourceId), donorStatus, now)) return; + } protected void PlanConvoy(float now) { if (!m_ConvoyTask || m_ConvoyTask.Stopped || !m_ConvoyTask.Ready) return; foreach (ERR_ConvoyVehicle vehicle : m_ConvoyTask.Vehicles) { - if (vehicle.Released || vehicle.Arrived || !vehicle.Registered || !vehicle.Group) continue; + if (vehicle.Released || vehicle.Arrived || vehicle.SupplyToken > 0 || !vehicle.Registered || !vehicle.Group) continue; foreach (ERR_HQUnit unit : m_Units) { if (unit.Group != vehicle.Group || !unit.ReservedForSupport || unit.Downlink || !unit.Radio) continue; @@ -992,7 +1013,8 @@ class ERR_HQ : ERR_CommandService if (!unit.Group && !unit.Uplink) { ReleaseUnit(unit, now); m_Units.Remove(i); continue; } QueueReports(unit, now); } - if (now >= m_NextAssignment) { PlanConvoy(now); Assign(now); m_NextAssignment = now + 5000; } + if (now >= m_NextAssignment) { PlanConvoy(now); PlanResupply(now); Assign(now); m_NextAssignment = now + 5000; } + m_Resupply.Tick(now); m_Logistics.Tick(now); m_Mortars.Tick(now); m_Journal.Flush(); @@ -1000,6 +1022,7 @@ class ERR_HQ : ERR_CommandService override void Stop() { + m_Resupply.Stop(); m_Convoys.Stop(); m_Equipment.Stop(); m_Logistics.Stop(); diff --git a/addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c b/addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c new file mode 100644 index 0000000..7132c41 --- /dev/null +++ b/addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c @@ -0,0 +1,44 @@ +// Local own-roster sampling schedule only. Urgency requests an ordinary status +// frame; it grants no HQ knowledge and never changes ammunition or assignments. +class ERR_HQAmmoReporting +{ + protected float m_NextScan = -1; + protected float m_NextCall = 0; + protected float m_LastAttempt = -1; + + void Initialize(int sourceId, float now) + { + if (m_NextScan >= 0 || sourceId <= 0 || !ERR_HQPursuitRules.Finite(now) || now < 0) return; + int phase = sourceId % 6; + m_NextScan = now + phase * 5000; + } + bool ScanDue(float now) + { + return m_NextScan >= 0 && ERR_HQPursuitRules.Finite(now) && now >= m_NextScan; + } + // An unavailable route also consumes this local attempt. Routine/requested + // check-ins retain their independent existing retry and deadline semantics. + void Scanned(float now) + { + if (!ERR_HQPursuitRules.Finite(now) || now < 0 || now < m_LastAttempt) return; + m_LastAttempt = now; + m_NextScan = now + 30000; + } + bool Urgent(ERR_HQStatusReport report, float now) + { + if (!report || !report.AmmoState || !ERR_HQPursuitRules.Finite(now) || now < 0 + || now < m_NextCall || report.ObservedAt != now) return false; + ERR_HQAmmoSnapshot stock = report.AmmoState; + if (!stock.Complete || !stock.Valid(report.Count) || stock.Members <= 0 + || stock.SmallArmsMuzzles <= 0) return false; + // Chambers are usable rounds too. Launchers never substitute for small arms. + return stock.SmallArmsRounds + stock.SmallArmsChambers <= 30 * stock.Members; + } + // Any queued status already reports current stock. Persistent low ammunition + // can ask again after one minute, even when the previous route was interrupted. + void Queued(float now) + { + if (!ERR_HQPursuitRules.Finite(now) || now < 0 || now < m_LastAttempt) return; + m_NextCall = now + 60000; + } +} diff --git a/addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c b/addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c new file mode 100644 index 0000000..f0c78f2 --- /dev/null +++ b/addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c @@ -0,0 +1,187 @@ +enum ERR_InfantryAmmoTransferState { FAILED = -1, PENDING, SUCCEEDED } + +class ERR_InfantryAmmoCallback : ScriptedInventoryOperationCallback +{ + ERR_InfantryAmmoTransfer Transfer; + protected override void OnComplete() { if (Transfer) Transfer.Acknowledge(true); } + protected override void OnFailed() { if (Transfer) Transfer.Acknowledge(false); } + protected override void OnAllComplete() { if (Transfer) Transfer.Acknowledge(true); } + protected override void OnAllFailed() { if (Transfer) Transfer.Acknowledge(false); } +} + +// One exact physical magazine movement. The caller owns HQ authorization and +// the spent-item reservation; this leaf never selects tasks or retries a move. +class ERR_InfantryAmmoTransfer +{ + protected ERR_GameMode m_Mode; + protected Vehicle m_Donor; + protected SCR_AIGroup m_DonorGroup; + protected IEntity m_Recipient; + protected SCR_AIGroup m_RecipientGroup; + protected IEntity m_Magazine; + protected IEntity m_Driver; + protected ERR_ForceRecord m_DonorRecord; + protected ERR_ForceRecord m_RecipientRecord; + protected InventoryStorageManagerComponent m_Source; + protected InventoryStorageManagerComponent m_Destination; + protected BaseInventoryStorageComponent m_Storage; + protected ref ERR_InfantryAmmoCallback m_Callback; + protected bool m_Submitted; + protected bool m_Accepted; + protected int m_Acknowledgement; + protected float m_Started = -1; + protected ERR_InfantryAmmoTransferState m_State = ERR_InfantryAmmoTransferState.PENDING; + protected string m_Reason; + void ERR_InfantryAmmoTransfer(ERR_GameMode mode, Vehicle donorVehicle, SCR_AIGroup donorGroup, IEntity recipientActor, SCR_AIGroup recipientGroup, IEntity exactMagazine) + { + m_Mode = mode; m_Donor = donorVehicle; m_DonorGroup = donorGroup; + m_Recipient = recipientActor; m_RecipientGroup = recipientGroup; m_Magazine = exactMagazine; + } + static bool Compatible(IEntity actor, IEntity exactMagazine) + { + if (!actor || !exactMagazine) return false; + BaseMagazineComponent magazine = BaseMagazineComponent.Cast(exactMagazine.FindComponent(BaseMagazineComponent)); + BaseWeaponManagerComponent manager = BaseWeaponManagerComponent.Cast(actor.FindComponent(BaseWeaponManagerComponent)); + if (!magazine || !manager || !magazine.GetMagazineWell() || magazine.GetAmmoCount() <= 0 || magazine.GetMaxAmmoCount() <= 0 || magazine.GetAmmoCount() > magazine.GetMaxAmmoCount()) return false; + array weapons = {}; manager.GetWeaponsList(weapons); + if (weapons.IsEmpty() || weapons.Count() > 8) return false; + foreach (IEntity rifle : weapons) + { + if (!rifle) continue; + BaseWeaponComponent weapon = BaseWeaponComponent.Cast(rifle.FindComponent(BaseWeaponComponent)); + if (!weapon || weapon.GetOwner() != rifle) continue; + EWeaponType kind = weapon.GetWeaponType(); + if (kind != EWeaponType.WT_RIFLE && kind != EWeaponType.WT_SNIPERRIFLE && kind != EWeaponType.WT_MACHINEGUN && kind != EWeaponType.WT_HANDGUN) continue; + array muzzles = {}; weapon.GetMuzzlesList(muzzles); + if (muzzles.Count() > 4) continue; + foreach (BaseMuzzleComponent muzzle : muzzles) + { + if (!muzzle || !muzzle.GetMagazineWell()) continue; + EMuzzleType muzzleKind = muzzle.GetMuzzleType(); + if (muzzleKind != EMuzzleType.MT_BaseMuzzle) continue; + // Same direction as the stock magazine inventory predicate: a magazine's + // derived well must inherit the actual carried small-arms muzzle's well. + if (magazine.GetMagazineWell().IsInherited(muzzle.GetMagazineWell().Type())) return true; + } + } + return false; + } + static bool StoredUnder(IEntity entity, IEntity root) + { + for (int depth = 0; entity && depth < 16; depth++) + { + if (entity == root) return true; + InventoryItemComponent item = InventoryItemComponent.Cast(entity.FindComponent(InventoryItemComponent)); + if (item && item.GetParentSlot()) + { + BaseInventoryStorageComponent storage = item.GetParentSlot().GetStorage(); + if (!storage) return false; + entity = storage.GetOwner(); + } + else entity = entity.GetParent(); + } + return false; + } + protected bool ManagedStorage(InventoryStorageManagerComponent inventory, BaseInventoryStorageComponent storage, IEntity owner) + { + if (!inventory || !storage || inventory.GetOwner() != owner || !StoredUnder(storage.GetOwner(), owner)) return false; + array storages = {}; + inventory.GetStorages(storages, EStoragePurpose.PURPOSE_DEPOSIT); + return storages.Count() <= 64 && storages.Contains(storage); + } + protected int Ownership(InventoryStorageManagerComponent inventory) + { + if (!inventory || !m_Magazine) return -1; + array items = {}; inventory.GetItems(items, EStoragePurpose.PURPOSE_DEPOSIT); + if (items.Count() > 512) return -1; + if (items.Contains(m_Magazine)) return 1; + return 0; + } + protected bool PhysicalProof() + { + if (!m_Magazine || m_Acknowledgement != 1 || Ownership(m_Source) != 0 || Ownership(m_Destination) != 1 || !ManagedStorage(m_Destination, m_Storage, m_Recipient)) return false; + InventoryItemComponent item = InventoryItemComponent.Cast(m_Magazine.FindComponent(InventoryItemComponent)); + return item && item.GetParentSlot() && item.GetParentSlot().GetStorage() == m_Storage; + } + void Acknowledge(bool success) + { + if (m_Acknowledgement != 0) return; + if (success) m_Acknowledgement = 1; + else m_Acknowledgement = -1; + } + // This read-only observation works even after Stop; the caller must retain + // ambiguous accepted operations and cannot interpret failure as cancellation. + bool Unresolved() + { + if (!m_Accepted || !m_Magazine || m_Acknowledgement < 0) return false; + return !PhysicalProof(); + } + bool Submitted() { return m_Submitted; } + string Reason() { return m_Reason; } + protected ERR_InfantryAmmoTransferState Fail(string reason) + { + if (m_State == ERR_InfantryAmmoTransferState.PENDING) { m_State = ERR_InfantryAmmoTransferState.FAILED; m_Reason = reason; } + return m_State; + } + void Stop() { Fail("HQ authorization stopped; an accepted native move cannot be cancelled"); } + protected bool Context() + { + if (!Replication.IsServer() || SCR_Global.IsEditMode() || !m_Mode || m_Mode != ERR_GameMode.Get() || !m_Mode.Active() || !m_Mode.Forces()) return false; + if (!m_Donor || !ERR_Actors.Alive(m_Donor) || !m_DonorGroup || !m_RecipientGroup || m_DonorGroup == m_RecipientGroup) return false; + if (!ERR_EnemyEquipmentRules.Eligible(m_Mode, m_RecipientGroup, m_Recipient) || CompartmentAccessComponent.GetVehicleIn(m_Recipient)) return false; + if (m_DonorGroup.IsSlave() || m_RecipientGroup.IsSlave() || m_DonorGroup.GetPlayerCount(true) > 0 || m_DonorGroup.GetFaction() != m_Mode.EnemyFaction()) return false; + if (SCR_FactionManager.SGetFaction(m_Donor) != m_Mode.EnemyFaction() || SCR_FactionManager.SGetFaction(m_Recipient) != m_Mode.EnemyFaction()) return false; + ERR_ForceRecord donorRecord = m_Mode.Forces().FindGroup(m_DonorGroup); + ERR_ForceRecord recipientRecord = m_Mode.Forces().FindGroup(m_RecipientGroup); + if (!donorRecord || !recipientRecord || donorRecord.Group != m_DonorGroup || recipientRecord.Group != m_RecipientGroup || !donorRecord.Physical || !recipientRecord.Physical || donorRecord.Eliminated || recipientRecord.Eliminated) return false; + if (m_DonorRecord && (m_DonorRecord != donorRecord || m_RecipientRecord != recipientRecord)) return false; + SCR_AIGroupUtilityComponent utility = m_DonorGroup.GetGroupUtilityComponent(); + if (!utility || !utility.IsMilitary() || !utility.m_VehicleMgr || !utility.m_VehicleMgr.FindVehicle(m_Donor)) return false; + if (ERR_ConvoyRules.Captured(m_Donor, m_DonorGroup)) return false; + SCR_AIVehicleUsageComponent usage = SCR_AIVehicleUsageComponent.Cast(m_Donor.FindComponent(SCR_AIVehicleUsageComponent)); + if (!usage || !usage.GetPilotCompartmentSlot()) return false; + IEntity driver = usage.GetPilotCompartmentSlot().GetOccupant(); + if (!ERR_EnemyEquipmentRules.Eligible(m_Mode, m_DonorGroup, driver) || !ERR_ConvoyRules.PartOf(CompartmentAccessComponent.GetVehicleIn(driver), m_Donor)) return false; + if (SCR_FactionManager.SGetFaction(driver) != m_Mode.EnemyFaction() || (m_Driver && driver != m_Driver)) return false; + Physics physics = m_Donor.GetPhysics(); + if (!physics) return false; + float speed = physics.GetVelocity().Length(); + float angular = physics.GetAngularVelocity().Length(); + float distance = vector.Distance(m_Donor.GetOrigin(), m_Recipient.GetOrigin()); + if (!(speed >= 0 && speed <= 0.25 && angular >= 0 && angular <= 0.1 && distance >= 0 && distance <= 4)) return false; + if (!Compatible(m_Recipient, m_Magazine)) return false; + m_Driver = driver; m_DonorRecord = donorRecord; m_RecipientRecord = recipientRecord; + return true; + } + ERR_InfantryAmmoTransferState Tick(float now) + { + if (m_State != ERR_InfantryAmmoTransferState.PENDING) return m_State; + if (!ERR_ForceRules.Finite(now) || now < 0) return Fail("invalid transaction clock"); + if (m_Started < 0) m_Started = now; + if (now < m_Started || now - m_Started >= 8000) return Fail("native magazine move deadline expired"); + if (!Context()) return Fail("original owned groups, vehicle, driver, recipient, proximity or compatible weapon unavailable"); + if (!m_Submitted) + { + m_Source = InventoryStorageManagerComponent.Cast(m_Donor.FindComponent(InventoryStorageManagerComponent)); + m_Destination = InventoryStorageManagerComponent.Cast(m_Recipient.FindComponent(InventoryStorageManagerComponent)); + if (!m_Source || !m_Destination || m_Source == m_Destination || Ownership(m_Source) != 1 || Ownership(m_Destination) != 0) return Fail("exact magazine is not exclusive donor stock"); + InventoryItemComponent item = InventoryItemComponent.Cast(m_Magazine.FindComponent(InventoryItemComponent)); + if (!item || !item.GetParentSlot() || !ManagedStorage(m_Source, item.GetParentSlot().GetStorage(), m_Donor)) return Fail("exact source magazine storage does not belong to original donor"); + m_Storage = m_Destination.FindStorageForItem(m_Magazine, EStoragePurpose.PURPOSE_DEPOSIT); + if (!ManagedStorage(m_Destination, m_Storage, m_Recipient) || !m_Source.CanMoveItemToStorage(m_Magazine, m_Storage, -1)) return Fail("recipient has no native compatible available storage"); + m_Callback = new ERR_InfantryAmmoCallback(); m_Callback.Transfer = this; + m_Submitted = true; + m_Accepted = m_Source.TryMoveItemToStorage(m_Magazine, m_Storage, -1, m_Callback); + if (m_Acknowledgement == 1) m_Accepted = true; + if (!m_Accepted) return Fail("native magazine move rejected; exact item will not be retried"); + } + if (PhysicalProof()) + { + m_State = ERR_InfantryAmmoTransferState.SUCCEEDED; + m_Reason = "native callback and exact destination storage confirm one physical magazine transferred"; + return m_State; + } + if (m_Acknowledgement < 0) return Fail("native magazine move failed"); + return ERR_InfantryAmmoTransferState.PENDING; + } +} diff --git a/addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c b/addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c new file mode 100644 index 0000000..004a3f5 --- /dev/null +++ b/addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c @@ -0,0 +1,278 @@ +// HQ-owned ground rendezvous using delivered positions and existing finite cargo. +class ERR_InfantryResupplyRules +{ + static bool Fresh(ERR_HQWatchEntry entry, float now) + { + return entry && !entry.Closed && entry.Count > 0 && entry.Fit > 0 + && ERR_ForceRules.Finite(now) && entry.ObservedAt >= 0 && now >= entry.ObservedAt + && now - entry.ObservedAt <= 120000 && ERR_ForceRules.FiniteVector(entry.Position); + } + static bool Need(ERR_HQWatchEntry entry, float now) + { + return Fresh(entry, now) && entry.AmmoState && entry.AmmoState.Valid(entry.Count) + && entry.AmmoState.Complete && entry.AmmoState.Members == entry.Count + && entry.AmmoState.SmallArmsMuzzles > 0 + && entry.AmmoState.SmallArmsRounds + entry.AmmoState.SmallArmsChambers <= entry.Count * 30; + } + static bool Pair(ERR_HQWatchEntry recipient, ERR_HQWatchEntry donor, float now) + { + return Need(recipient, now) && Fresh(donor, now) && recipient.SourceId != donor.SourceId + && vector.DistanceXZ(recipient.Position, donor.Position) <= 200; + } +} + +class ERR_InfantryResupply +{ + protected ERR_HQ m_HQ; + protected ERR_GameMode m_Mode; + protected ERR_ConvoyTask m_Convoy; + protected ERR_ConvoyVehicle m_Truck; + protected ERR_HQUnit m_Recipient; + protected ERR_HQUnit m_Donor; + protected ref array m_Stock = {}; + protected ref array m_Spent = {}; + protected ref array m_Members = {}; + protected ref array m_Served = {}; + protected ref map m_Consumed = new map(); + protected ref map m_NextAttempt = new map(); + protected ref ERR_HQRoute m_Order; + protected ref ERR_InfantryAmmoTransfer m_Move; + protected IEntity m_Receiving; + protected AIWaypoint m_MoveWaypoint; + protected AIWaypoint m_HoldWaypoint; + protected vector m_Rendezvous; + protected int m_State; // 0 stock startup, 1 idle, 2 truck downlink, 3 stopped status, 4 infantry downlink, 5 transfer + protected int m_Trip; + protected int m_Token; + protected int m_ReportId; + protected int m_Delivered; + protected int m_TripDelivered; + protected float m_Deadline; + protected float m_HeldAt; + protected float m_NextTick; + protected bool m_Stopped; + protected string m_Reason; + void ERR_InfantryResupply(ERR_HQ hq, ERR_GameMode mode) { m_HQ = hq; m_Mode = mode; } + int State() { return m_State; } + int Delivered() { return m_Delivered; } + int StockCount() { return m_Stock.Count(); } + protected void Audit(string reason) + { + m_Reason = reason; + m_HQ.Journal().Write("INFANTRY SUPPLY", string.Format("trip=%1 state=%2 moved=%3 spent=%4/%5; %6", m_Trip, m_State, m_Delivered, m_Spent.Count(), m_Stock.Count(), reason), m_ReportId); + } + protected bool Current() + { + return !m_Stopped && Replication.IsServer() && m_Mode && m_Mode == ERR_GameMode.Get() && m_Mode.Active(); + } + protected bool Contains(IEntity owner, IEntity item) + { + if (!owner || !item) return false; + InventoryStorageManagerComponent inventory = InventoryStorageManagerComponent.Cast(owner.FindComponent(InventoryStorageManagerComponent)); + if (!inventory) return false; + array items = {}; ERR_Inventory.Items(inventory, items); + return items.Count() <= 128 && items.Contains(item); + } + protected bool TruckValid() + { + if (!m_Convoy || m_Convoy.Stopped || !m_Convoy.Ready || !m_Convoy.Receipt || !m_Convoy.Receipt.Consumed + || m_HQ.ConvoyTask() != m_Convoy || m_Convoy.Vehicles.Count() != 6 || m_Convoy.Vehicles[1] != m_Truck) return false; + if (!m_Truck || m_Truck.Index != 1 || !m_Truck.Registered || m_Truck.Released || m_Truck.Arrived + || !m_Truck.CrewValid(m_Mode) || ERR_ConvoyRules.Captured(m_Truck.Entity, m_Truck.Group)) return false; + ERR_ForceRecord record = m_Mode.Forces().FindGroup(m_Truck.Group); + return record && record.Physical && !record.Eliminated && record.Kind == ERR_ForceKind.CONVOY + && m_Convoy.Receipt.Records.Count() == 6 && record.Id == m_Convoy.Receipt.Records[1]; + } + protected bool Quiet(ERR_HQUnit unit) + { + return unit && unit.Group && unit.Utility && !unit.Group.IsSlave() && unit.Group.GetPlayerCount(true) == 0 + && unit.Group.GetFaction() == m_Mode.EnemyFaction() + && (!unit.Utility.m_Perception || unit.Utility.m_Perception.m_aTargets.IsEmpty()); + } + protected bool Roster() + { + if (!m_Recipient || !Quiet(m_Recipient) || !m_Recipient.StatusSampler.OwnsRoster(m_Recipient.Group)) return false; + int strength = m_Recipient.StatusSampler.InitialStrength(); + if (strength < 1 || strength > 32) return false; + array agents = {}; m_Recipient.Group.GetAgents(agents); + if (agents.IsEmpty() || agents.Count() > 32) return false; + foreach (AIAgent agent : agents) + if (!agent || !m_Members.Contains(agent.GetControlledEntity())) return false; + bool living; + foreach (IEntity actor : m_Members) + { + if (!actor || !ERR_Actors.Alive(actor)) continue; + // Returning to the group cannot undo a sampler's permanent release of an + // original slot after transfer or player control during this trip. + bool attributed = false; + for (int slot = 0; slot < strength; slot++) + { + if (m_Recipient.StatusSampler.InitialMember(slot) != actor) continue; + attributed = m_Recipient.StatusSampler.CanAttribute(slot, actor); + break; + } + if (!attributed) return false; + if (ERR_Actors.Player(actor) || ERR_Actors.Group(actor) != m_Recipient.Group + || SCR_FactionManager.SGetFaction(actor) != m_Mode.EnemyFaction() || CompartmentAccessComponent.GetVehicleIn(actor)) return false; + if (ERR_Actors.CanFight(actor)) living = true; + } + return living; + } + protected void Stock(float now) + { + m_Convoy = m_HQ.ConvoyTask(); + if (!m_Convoy || !m_Convoy.Ready || m_Convoy.Vehicles.Count() != 6) return; + m_Truck = m_Convoy.Vehicles[1]; + if (!TruckValid()) { Stop(); return; } + foreach (ERR_ConvoyCargoCallback operation : m_Convoy.Cargo) + if (!operation.Finished) { if (now >= m_Convoy.Deadline) Stop(); return; } + InventoryStorageManagerComponent inventory = InventoryStorageManagerComponent.Cast(m_Truck.Entity.FindComponent(InventoryStorageManagerComponent)); + if (!inventory) { Stop(); return; } + array items = {}; ERR_Inventory.Items(inventory, items); + if (items.Count() > 128) { Stop(); return; } + foreach (IEntity item : items) + { + if (!item || !item.GetPrefabData() || item.GetPrefabData().GetPrefabName() != ERR_ConvoyResources.Magazine()) continue; + if (m_Stock.Count() >= 48) { Stop(); return; } + m_Stock.Insert(item); + } + m_State = 1; Audit("truck magazine identities captured once after startup; absent/looted stock is never replaced"); + } + bool TryPlan(ERR_HQUnit recipient, ERR_HQUnit donor, ERR_HQWatchEntry demand, ERR_HQWatchEntry donorStatus, float now) + { + if (!Current() || m_State != 1 || m_Move || m_Trip >= 128 || !TruckValid()) return false; + if (m_Truck.Combat.Held || m_Truck.SupplyToken > 0 || !recipient || !donor) return false; + if (donor.Group != m_Truck.Group || recipient.HomeGuard || !Quiet(recipient) || !Quiet(donor)) return false; + if (donor.Downlink || donor.PendingOrder || donor.PendingConvoyOrder) return false; + if (!ERR_InfantryResupplyRules.Pair(demand, donorStatus, now)) return false; + if (demand.SourceId != recipient.ForceSourceId || donorStatus.SourceId != donor.ForceSourceId) return false; + if (demand.MessageId <= m_Consumed.Get(demand.SourceId) || now < m_NextAttempt.Get(demand.SourceId)) return false; + bool available; + foreach (IEntity magazine : m_Stock) if (magazine && !m_Spent.Contains(magazine) && Contains(m_Truck.Entity, magazine)) { available = true; break; } + if (!available) return false; + m_Members.Clear(); + for (int i = 0; i < recipient.StatusSampler.InitialStrength(); i++) + { + IEntity actor = recipient.StatusSampler.InitialMember(i); + if (actor && recipient.StatusSampler.CanAttribute(i, actor)) m_Members.Insert(actor); + } + m_Recipient = recipient; m_Donor = donor; + if (!Roster()) { m_Recipient = null; m_Donor = null; return false; } + // Disjoint bounded token range from the existing mortar courier's trip IDs. + int token = 100000 + m_Trip + 1; + if (!m_HQ.ReserveLogistics(recipient.Group, token)) { m_Recipient = null; m_Donor = null; return false; } + m_Trip++; m_Token = token; m_Truck.SupplyToken = token; m_ReportId = demand.MessageId; m_TripDelivered = 0; m_Served.Clear(); + m_Consumed.Set(demand.SourceId, demand.MessageId); m_NextAttempt.Set(demand.SourceId, now + 180000); + m_Deadline = Math.Min(now + 120000, demand.ObservedAt + 180000); m_State = 2; + m_Order = m_HQ.Downlink(donor.Group, "INFANTRY SUPPLY HOLD", "stop existing ammo truck and report position", m_ReportId); + if (!m_Order) Finish("truck radio downlink unavailable"); + else Audit("existing patrol reserved; truck hold awaits radio delivery"); + return true; + } + protected bool Waypoints() + { + m_MoveWaypoint = AIWaypoint.Cast(ERR_Actors.Spawn(ERR_Resources.MoveWaypoint(), ERR_Actors.Ground(m_Rendezvous))); + m_HoldWaypoint = AIWaypoint.Cast(ERR_Actors.Spawn(ERR_Resources.DefendWaypoint(), ERR_Actors.Ground(m_Rendezvous))); + if (!m_MoveWaypoint || !m_HoldWaypoint) return false; + m_MoveWaypoint.SetCompletionRadius(2); m_HoldWaypoint.SetCompletionRadius(3); + m_Recipient.Group.AddWaypointAt(m_HoldWaypoint, 0); m_Recipient.Group.AddWaypointAt(m_MoveWaypoint, 0); + m_Recipient.Group.ActivateAI(); return true; + } + protected void ClearWaypoints() + { + if (m_MoveWaypoint) { if (m_Recipient && m_Recipient.Group) m_Recipient.Group.RemoveWaypoint(m_MoveWaypoint); ERR_Actors.DeleteSpawned(m_MoveWaypoint); } + if (m_HoldWaypoint) { if (m_Recipient && m_Recipient.Group) m_Recipient.Group.RemoveWaypoint(m_HoldWaypoint); ERR_Actors.DeleteSpawned(m_HoldWaypoint); } + m_MoveWaypoint = null; m_HoldWaypoint = null; + } + protected void Finish(string reason) + { + Audit(reason); + if (m_Move) m_Move.Stop(); + ClearWaypoints(); + if (m_Recipient) m_HQ.ReleaseLogistics(m_Recipient.Group, m_Token); + if (m_Truck && m_Truck.SupplyToken == m_Token) { m_Truck.SupplyToken = 0; m_Truck.SupplyHeld = false; } + m_Recipient = null; m_Donor = null; m_Order = null; m_Receiving = null; m_State = 1; + } + protected void Transfer(float now) + { + if (m_Move) + { + int result = m_Move.Tick(now); + if (result == 0) return; + if (result < 0) { Finish("native transfer rejected, expired or lost authority; no item retry"); return; } + m_Move = null; m_Delivered++; m_TripDelivered++; m_Served.Insert(m_Receiving); m_Receiving = null; + Audit("exact finite magazine confirmed in original soldier inventory"); + if (m_TripDelivered >= 6) { Finish("six-magazine trip allowance reached"); return; } + } + foreach (IEntity actor : m_Members) + { + if (!ERR_Actors.CanFight(actor) || m_Served.Contains(actor) || vector.DistanceXZ(actor.GetOrigin(), m_Truck.Entity.GetOrigin()) > 4) continue; + ERR_HQAmmoSnapshot local = new ERR_HQAmmoSnapshot(); local.Complete = true; local.LauncherComplete = true; + ERR_HQAmmoSampler.Inspect(actor, m_Recipient.Group, local); + if (!local.Complete || local.SmallArmsMuzzles <= 0 || local.SmallArmsRounds + local.SmallArmsChambers > 30) continue; + foreach (IEntity magazine : m_Stock) + { + if (!magazine || m_Spent.Contains(magazine) || !Contains(m_Truck.Entity, magazine) || !ERR_InfantryAmmoTransfer.Compatible(actor, magazine)) continue; + m_Spent.Insert(magazine); m_Receiving = actor; + m_Move = new ERR_InfantryAmmoTransfer(m_Mode, m_Truck.Entity, m_Truck.Group, actor, m_Recipient.Group, magazine); + m_Move.Tick(now); return; + } + } + } + void Tick(float now) + { + if (!Current() || !ERR_ForceRules.Finite(now) || now < m_NextTick) return; + m_NextTick = now + 1000; + if (m_State == 0) { Stock(now); return; } + if (m_State == 1) + { + if (m_Move && !m_Move.Unresolved()) m_Move = null; + return; + } + if (now >= m_Deadline || !TruckValid() || !Quiet(m_Donor) || !Roster() || m_Truck.Combat.Held + || m_HQ.LogisticsToken(m_Recipient.Group) != m_Token) + { Finish("rendezvous expired, contact appeared or original ownership changed"); return; } + if (m_Truck.SupplyToken != m_Token) { Finish("truck hold authority lost"); return; } + if (m_State == 2) + { + int delivered = m_Order.Advance(now, m_HQ.Journal()); + if (delivered == 0) return; + if (delivered < 0 || m_Truck.SupplyToken != m_Token) { Finish("truck hold downlink interrupted or reservation lost"); return; } + m_Truck.SupplyHeld = true; m_Truck.ClearOrder(); m_HeldAt = -1; + m_Order = null; m_State = 3; Audit("truck received stop; waiting for delivered stopped-position report"); return; + } + if (m_State == 3) + { + // The delivered hold asks the original crew to report only after physically stopping. + if (m_HeldAt < 0) + { + Physics physics = m_Truck.Entity.GetPhysics(); + if (!physics) return; + float speed = physics.GetVelocity().Length(); + float angular = physics.GetAngularVelocity().Length(); + if (!(speed >= 0 && speed <= 0.25 && angular >= 0 && angular <= 0.1)) return; + m_HeldAt = now; m_Donor.NextStatus = now; return; + } + ERR_HQWatchEntry stopped = m_HQ.Watch().Find(m_Donor.ForceSourceId); + if (!ERR_InfantryResupplyRules.Fresh(stopped, now) || stopped.ObservedAt < m_HeldAt) return; + m_Rendezvous = stopped.Position + "3 0 0"; + m_Order = m_HQ.Downlink(m_Recipient.Group, "INFANTRY SUPPLY RENDEZVOUS", string.Format("walk to reported stopped ammo truck at %1", m_Rendezvous), m_ReportId); + if (!m_Order) { Finish("infantry radio downlink unavailable"); return; } + m_State = 4; return; + } + if (m_State == 4) + { + int delivered = m_Order.Advance(now, m_HQ.Journal()); + if (delivered == 0) return; + if (delivered < 0 || !Waypoints()) { Finish("infantry order interrupted or native waypoint creation failed"); return; } + m_Order = null; m_State = 5; Audit("infantry received reported rendezvous; native movement and physical transfer required"); + } + if (m_State == 5) Transfer(now); + } + string Status() { return string.Format("Infantry supply: state=%1 trips=%2 moved=%3 stock=%4 spent=%5; %6", m_State, m_Trip, m_Delivered, m_Stock.Count(), m_Spent.Count(), m_Reason); } + void Stop() + { + if (m_Stopped) return; + Finish("service stopped; original forces and all remaining cargo retained"); m_Stopped = true; + } +} diff --git a/docs/ai-feature-migration.json b/docs/ai-feature-migration.json index fd4a413..9447698 100644 --- a/docs/ai-feature-migration.json +++ b/docs/ai-feature-migration.json @@ -2430,9 +2430,9 @@ "id": "ammo_accounting", "updated_on": "2026-09-20", "status": "partial", - "implementation": "Read-only immutable-roster compatible small-arms magazine and chamber snapshots delivered through status radio; separate launcher uncertainty, conservative inherited-well handling, fresh known-empty veto for new infantry tasks without active-order cancellation. No refill or mounted/cargo inference.", + "implementation": "Read-only immutable-roster compatible small-arms magazine and chamber snapshots delivered through status radio; separate launcher uncertainty, conservative inherited-well handling, fresh known-empty veto for new infantry tasks without active-order cancellation. No refill or mounted/cargo inference. Early own-roster scans every30 seconds can request low-stock radio status with a60-second urgent-call cooldown; only delivery updates HQ.", "evidence": "native-2026-09-20-040857-hq-ammunition completes49 assertions: five original surviving members,1120 magazine rounds,33 magazines,5 chambered; actual delivery to independent immutable Watch snapshot. Four external localization errors remain. Later inherited-well refinement passes executable regressions and compiles in the181-assertion convoy recheck.", - "remaining": "Native empty/depletion and modded derived-well cases; low-stock urgent reports, general resupply/cargo transfers, vehicle weapons, multiplayer and FPS qualification.", + "remaining": "Native empty/depletion, low-stock reporting and modded derived-well cases; full resupply/cargo and vehicle weapons; multiplayer and FPS qualification.", "detail": "docs/hq-ammunition.md" }, { @@ -2452,6 +2452,15 @@ "evidence": "native-2026-09-20-062203-radio-call-memory: 59 assertions, one completed round, zero script/runtime failures. Removing the real originating caller radio interrupts before any hop/Accept; subsequent delivered reports update memory and reject old negative revisions. All six observed groups already had radios; no new native insertion was demonstrated. Four installed external localization errors remain. Actual-method coordinator/route/node regressions pass.", "remaining": "Native proof of new compatible radio insertion; local handoff, voiced calls, aircraft uplink/shared awareness and multiplayer loss/capture qualification.", "detail": "docs/hq-originating-call.md" + }, + { + "id": "resupply", + "updated_on": "2026-09-20", + "status": "partial", + "implementation": "HQ-owned nearby infantry rendezvous with the original manually dispatched convoy ammo truck, planned from fresh delivered shortage and position reports. Separate truck stop and infantry radio downlinks; new delivered stopped position required. Up to48 captured physical magazine identities, max6 moves per trip/one per soldier, exact native callback and destination ownership proof, no stock regeneration. Original roster release is permanent.", + "evidence": "Executable-method reporting, coordinator, permanent roster ownership, native-operation boundary and convoy-hold regressions pass. native-2026-09-20-072839-infantry-resupply compiles current integration and completes one HQ-memory round/59 assertions with zero script/runtime failures and confirmed cleanup. Four installed external localization errors retain failed strict qualification. This fixture does not demonstrate native rendezvous or transfer.", + "remaining": "Successful native rendezvous and transfer, obstruction/reach qualification, automatic dispatch, broad catalogs, launcher/vehicle ammunition, air/depot logistics, multiplayer and performance evidence.", + "detail": "docs/infantry-resupply.md" } ] } diff --git a/docs/ai-feature-migration.md b/docs/ai-feature-migration.md index 414922e..d3c114c 100644 --- a/docs/ai-feature-migration.md +++ b/docs/ai-feature-migration.md @@ -88,6 +88,10 @@ Status means **implementation presence against the described capability**, not n | journal — HQ journal and private live diagnostics | implemented | Infrastructure implemented. New systems still need meaningful status/events; long-running multiplayer/file-failure behavior not fully qualified. | | catalogs — Independent unit composition catalogs | partial | EAI_GroupLookup is excluded without reading its content as a model. Build richer vanilla role/crew catalogs independently; never translate copied lookup code. | +## Later infantry supply implementation + +The historical table above remains the audit baseline. [Infantry resupply](infantry-resupply.md) now adds early radio status for low ammunition and a bounded rendezvous with the original finite convoy truck. The machine-readable `post_audit_updates` records this partial migration. Native transfer, broad logistics parity and multiplayer remain unqualified. + ## Detailed source and behavior mapping The source links below point to the read-only owned predecessor. Successor paths indicate real existing code at the audit snapshot, not planned filenames. diff --git a/docs/convoy-migration.md b/docs/convoy-migration.md index f79da51..00f030e 100644 --- a/docs/convoy-migration.md +++ b/docs/convoy-migration.md @@ -166,3 +166,7 @@ The opt-in `--smoke convoy --convoy-cover --rounds 1 --timeout 900` test first r `test_native_convoy_cover_probe.py` executes the fixture's observation, snapshot, delivery and cleanup methods against native doubles, including rejected/failed radio routes, unapplied orders, unchanged HOLD refresh measurement, exact resumed route index, quiet age and damage restoration. Runner refusals occur before launch for an incompatible smoke mode or insufficient cover timeout. These policy tests do not replace the still-pending native cover sequence. The [20 September 05:15:05 convoy cover run](evidence/native-2026-09-20-051505-convoy-cover-diagnostic/report.json) passed the baseline six-vehicle driving, original crew/seat and cargo assertions. After arranging the existing prisoner beside the lead vehicle, it captured no qualifying visual reports and failed the combined physical-force/player invariant about 34 seconds later. It therefore does not establish native HOLD/RESUME behavior, nor identify a production defect. The retained logs do not distinguish an ordinary completed route from a released vehicle, crew-state change, controller change or physical-force-list difference. The lead route advanced from index14 to18, but that alone does not establish task completion: production ends the task only when all six orders have arrived or been released, and the fixture allows an individual arrived vehicle. Failure-only diagnostics are now included for a future run; no additional convoy test was launched at this checkpoint. + +## Nearby infantry supply follow-up + +The [infantry resupply service](infantry-resupply.md) can reserve the existing ammunition truck for a reported nearby patrol. A reservation leaves driving active until the stop command arrives by radio. Delivery pauses its owned route waypoint, and cleanup resumes the same route index. This remains the one manually dispatched convoy; general cargo unloading, automatic supply dispatch and native resupply qualification remain unfinished. diff --git a/docs/current-status.md b/docs/current-status.md index d85e3fa..2e6061b 100644 --- a/docs/current-status.md +++ b/docs/current-status.md @@ -1,5 +1,7 @@ # Current development status +**20 September 2026 — finite nearby infantry resupply:** HQ now uses delivered low-ammunition reports to reserve an existing patrol and the manually dispatched convoy's original ammo truck. Separate radio orders stop the truck, request its stopped-position report and send infantry to a nearby rendezvous. Existing captured magazine identities transfer at most once; no replacement stock is created. Low-stock reporting uses 30-second local scans and a 60-second urgent-call cooldown. [Scope and limits](infantry-resupply.md). The [current native run](evidence/native-2026-09-20-072839-infantry-resupply/report.json) compiles the complete integration and completes 59 HQ-memory assertions/one round with zero script/runtime failures and verified hidden/muted cleanup; four external localization errors remain. The first native compile failure is retained and corrected. Direct native resupply/navigation, automatic dispatch, broad logistics parity and multiplayer remain unfinished. All repository checks pass and all 533 tracked reference sources remain unchanged. The existing packaged handoff remains the older `915476f` snapshot. + **20 September 2026 — radio and finite maintenance:** Enemy groups now use bounded one-time radio fitting, preserving existing radios and excluding mortar-owned allocations. Uplinks hold their original caller for three seconds before network hops and fail on live consciousness/ownership loss. The [native radio/HQ-memory checkpoint](evidence/native-2026-09-20-062203-radio-call-memory/report.json) completes 59 assertions and one round, with zero script/runtime failures; four installed external localization errors remain. All six tested groups were already equipped, so native insertion remains unproved. The western supply cache now holds one finite repair kit and two fuel cans. Its [native stock/transport checkpoint](evidence/native-2026-09-20-062011-maintenance-stock/report.json) passes 131 assertions with zero captured errors, confirming 20 supply units and two five-litre cans plus prior lock/vehicle-loss behavior. Ordinary repair/refuel consumption remains untested. Both runs preserve exact sources and confirm hidden/muted cleanup. Current external packaging has a separate [explicit v3 development workflow](packed-external-development.md); the matching separate handoff is `.build/playtest-2026-09-20-radio-maintenance`. All five PAKs match their authored payloads; [Core ordinary startup](evidence/packed-core-2026-09-20-radio-maintenance/report.json) passes without captured errors. Full packed Chat verifies the exact thirteen-addon closure but remains failed on installed localization errors and did not establish participant readiness before its diagnostic ended. Native build shutdown failures remain; older handoffs are unchanged. All repository checks pass and 533 tracked reference files remain unchanged. **20 September 2026 — optics and base interaction follow-up:** Startup optics fitting now uses verified vanilla/RHS resources, preserves existing attachments and remains independent of finite Stinger processing. The supply UAZ has a successor-owned [held lock-breach action and scoped entry guards](vehicle-security.md); the [native supply-vehicle checkpoint](evidence/native-2026-09-20-052915-supply-vehicle-security/report.json) completes 124 assertions with zero captured errors, including lock rejection, one-time unlocking, native driver availability with its declared door context, scripted seating, fuel depletion and no replacement after loss. Ordinary held input and multiplayer verification remain pending. Player guidance now explains pilot responsibility and whole-round extraction consequences, and repeats the current objective after a controlled-body change. [The native convoy diagnostic](evidence/native-2026-09-20-050906-convoy-seat-diagnostic/report.json) compiled the optics integration but failed a combined gunner consciousness/seat/identity check after 170 passing assertions; it did not reach the new radio HOLD/RESUME test. The [second run](evidence/native-2026-09-20-051505-convoy-cover-diagnostic/report.json) passed those driving/seat checks but received no qualifying cover sighting before a combined preservation guard failed. Native HOLD/RESUME remains unverified; more precise diagnostics are included without weakening either guard. The [final full-addon run](evidence/native-2026-09-20-053057-optics-security-hq-integration/report.json) compiles all current source changes and completes 56 HQ-memory assertions with no script/runtime failures; the four known external localization errors remain. All repository checks pass, and all 533 tracked reference sources are unchanged. Existing packaged playtests remain older snapshots. diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/console.log.txt b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/console.log.txt new file mode 100644 index 0000000..f692d45 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/console.log.txt @@ -0,0 +1,248 @@ +--------------------------------------------- +Log Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-25-33\console.log started at 2026-09-20 07:25:33 (2026-09-20 05:25:33 UTC) + +07:25:33.394 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-25-33' to filesystem under name logs +07:25:33.394 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-workbench-external-profile\profile' to filesystem under name profile +07:25:33.394 ENGINE : FileSystem: Current working directory: 'Z:\home\jakub\.local\share\Steam\steamapps\common\Arma Reforger Tools\Workbench\' +07:25:33.395 PROFILING : Workbench Create Engine took: 9.452000 ms +07:25:34.424 INIT : INIT : Workbench Init Engine +07:25:34.424 ENGINE : Initializing engine, version 192142 +07:25:34.424 ENGINE : CLI Params: -gproj Z:/home/jakub/devel/escapistsrereintroduced/addons/chat/addon.gproj -addonsDir Z:/home/jakub/devel/escapistsrereintroduced/addons -profile Z:/tmp/erri-workbench-external-profile -logconsole -wbModule WorldEditor -load Worlds/ERR_Everon.ent -plugin ERR_ValidateWorldPlugin -errPlay 1 -errSmoke 1 -errSmokeOutcome hq-memory -noThrow -disableCrashReporter +07:25:34.437 ENGINE : Addon dirs: +07:25:34.437 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/chat/' +07:25:34.437 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons' +07:25:34.437 ENGINE : dir: './addons' +07:25:34.437 ENGINE : dir: 'Z:/tmp/erri-workbench-external-profile/addons' +07:25:34.437 ENGINE : Available addons: +07:25:34.437 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/chat/addon.gproj' guid: 'FA804F411BDDF2C6' +07:25:34.437 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/ai/addon.gproj' guid: '5192138CB9D5B911' +07:25:34.437 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +07:25:34.437 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/intel/addon.gproj' guid: 'D31039C7C53E348A' +07:25:34.437 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/map/addon.gproj' guid: '9AAEE9041D79809E' +07:25:34.437 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed) +07:25:34.437 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed) +07:25:34.437 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed) +07:25:34.437 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed) +07:25:34.437 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed) +07:25:34.437 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed) +07:25:34.437 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed) +07:25:34.437 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed) +07:25:34.437 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\chat' to filesystem under name ERR_Chat +07:25:34.437 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\map' to filesystem under name ERR_Map +07:25:34.438 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\intel' to filesystem under name ERR_Intel +07:25:34.438 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\ai' to filesystem under name ERR_Ai +07:25:34.439 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1 +07:25:34.440 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore +07:25:34.441 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments +07:25:34.446 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core +07:25:34.447 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02 +07:25:34.452 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01 +07:25:34.452 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\core' to filesystem under name ERR_Core +07:25:34.558 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ArmaReforger/' (pak count: 14) to filesystem under name ArmaReforger +07:25:34.561 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core +07:25:34.561 ENGINE : CPU vendor : AuthenticAMD +07:25:34.561 ENGINE : CPU type : 2 +07:25:34.561 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor +07:25:34.561 ENGINE : CPU cache info : L1 [Inst 32KB, Data 32KB], L2 [Unif 512KB], L3 [Unif 16384KB] +07:25:34.561 ENGINE : CPU count logical : 16 +07:25:34.561 ENGINE : CPU count physical : 8 +07:25:34.561 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2 +07:25:34.561 RESOURCES : ResourceDB: loading cache (id=0 name=ERR_Chat path=Z:\home\jakub\devel\escapistsrereintroduced\addons\chat/resourceDatabase.rdb) +07:25:34.561 RESOURCES : ResourceDB: loading cache (id=1 name=ERR_Map path=Z:\home\jakub\devel\escapistsrereintroduced\addons\map/resourceDatabase.rdb) +07:25:34.562 RESOURCES : ResourceDB: loading cache (id=2 name=ERR_Intel path=Z:\home\jakub\devel\escapistsrereintroduced\addons\intel/resourceDatabase.rdb) +07:25:34.562 RESOURCES : ResourceDB: loading cache (id=3 name=ERR_Ai path=Z:\home\jakub\devel\escapistsrereintroduced\addons\ai/resourceDatabase.rdb) +07:25:34.562 RESOURCES : ResourceDB: loading cache (id=4 name=WCS_BMP-1 path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb) +07:25:34.563 RESOURCES : ResourceDB: loading cache (id=5 name=WCS_SpaceCore path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb) +07:25:34.564 RESOURCES : ResourceDB: loading cache (id=6 name=WCS_Armaments path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb) +07:25:34.565 RESOURCES : ResourceDB: loading cache (id=7 name=RHS_Core path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb) +07:25:34.574 RESOURCES : ResourceDB: loading cache (id=8 name=RHS_Content_02 path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb) +07:25:34.576 RESOURCES : ResourceDB: loading cache (id=9 name=RHS_Content_01 path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb) +07:25:34.582 RESOURCES : ResourceDB: loading cache (id=10 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +07:25:34.582 RESOURCES : ResourceDB: loading cache (id=11 name=ArmaReforger path=Z:/tmp/erri-workbench-external-profile/addons/ArmaReforger/resourceDatabase.rdb) +07:25:34.714 RESOURCES : ResourceDB: loading cache (id=12 name=core path=./addons/core/resourceDatabase.rdb) +07:25:34.715 RESOURCES : ResourceDB: loading cache (id=13 name=profile path=Z:\tmp\erri-workbench-external-profile\profile/resourceDatabase.rdb) +07:25:34.715 RESOURCES : ResourceDB: loading cache (id=14 name=logs path=Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-25-33/resourceDatabase.rdb) +07:25:34.877 RESOURCES : RESOURCES : ResourceDB: full scan +07:25:34.884 RESOURCES : RESOURCES : scanning... +07:25:34.884 RESOURCES : RESOURCES : scanning @"ERR_Chat" +07:25:34.893 RESOURCES : RESOURCES : scanning @"ERR_Map" +07:25:34.895 RESOURCES : RESOURCES : scanning @"ERR_Intel" +07:25:34.896 RESOURCES : RESOURCES : scanning @"ERR_Ai" +07:25:34.898 RESOURCES : RESOURCES : scanning @"WCS_BMP-1" +07:25:34.902 RESOURCES : RESOURCES : scanning @"WCS_SpaceCore" +07:25:34.906 RESOURCES : RESOURCES : scanning @"WCS_Armaments" +07:25:34.912 RESOURCES : RESOURCES : scanning @"RHS_Core" +07:25:34.927 RESOURCES : RESOURCES : scanning @"RHS_Content_02" +07:25:34.931 RESOURCES : RESOURCES : scanning @"RHS_Content_01" +07:25:34.941 RESOURCES : RESOURCES : scanning @"ERR_Core" +07:25:34.946 RESOURCES : RESOURCES : scanning @"ArmaReforger" +07:25:35.199 RESOURCES : RESOURCES : scanning @"core" +07:25:35.203 RESOURCES : RESOURCES : scanning @"profile" +07:25:35.204 RESOURCES : RESOURCES : scanning @"logs" +07:25:35.204 RESOURCES : RESOURCES : processing meta-files... +07:25:35.280 RESOURCES : RESOURCES : processing files... +07:25:35.281 INIT : Workbench startup +07:25:35.281 INIT : Workbench Init Engine +07:25:35.281 RESOURCES : ResourceDB: full scan +07:25:35.281 RESOURCES : processing files... +07:25:35.281 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +07:25:35.295 RESOURCES (W): resource not registered: @"$profile:rereintroduced.json". Setting null GUID +07:25:35.295 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +07:25:35.295 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +07:25:35.295 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +07:25:35.295 RESOURCES : RESOURCES : processing folders... +07:25:35.304 RESOURCES : RESOURCES : creating GUID-item mapping... +07:25:35.320 RESOURCES : RESOURCES : building tree... +07:25:35.383 PROFILING : ResourceDB: full scan took: 505.494000 ms +07:25:35.384 RESOURCES : ResourceDB: saving cache (id=0 name=ERR_Chat path=Z:\home\jakub\devel\escapistsrereintroduced\addons\chat/resourceDatabase.rdb) +07:25:35.386 RESOURCES : ResourceDB: written 1047/1047 bytes +07:25:35.386 RESOURCES : ResourceDB: cache successfully saved +07:25:35.386 RESOURCES : ResourceDB: saving cache (id=1 name=ERR_Map path=Z:\home\jakub\devel\escapistsrereintroduced\addons\map/resourceDatabase.rdb) +07:25:35.388 RESOURCES : ResourceDB: written 819/819 bytes +07:25:35.388 RESOURCES : ResourceDB: cache successfully saved +07:25:35.388 RESOURCES : ResourceDB: saving cache (id=2 name=ERR_Intel path=Z:\home\jakub\devel\escapistsrereintroduced\addons\intel/resourceDatabase.rdb) +07:25:35.389 RESOURCES : ResourceDB: written 404/404 bytes +07:25:35.389 RESOURCES : ResourceDB: cache successfully saved +07:25:35.390 RESOURCES : ResourceDB: saving cache (id=3 name=ERR_Ai path=Z:\home\jakub\devel\escapistsrereintroduced\addons\ai/resourceDatabase.rdb) +07:25:35.391 RESOURCES : ResourceDB: written 3725/3725 bytes +07:25:35.391 RESOURCES : ResourceDB: cache successfully saved +07:25:35.391 RESOURCES : ResourceDB: saving cache (id=10 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +07:25:35.393 RESOURCES : ResourceDB: written 8563/8563 bytes +07:25:35.393 RESOURCES : ResourceDB: cache successfully saved +07:25:35.394 RESOURCES : ResourceDB: saving cache (id=13 name=profile path=Z:\tmp\erri-workbench-external-profile\profile/resourceDatabase.rdb) +07:25:35.395 RESOURCES : ResourceDB: written 206/206 bytes +07:25:35.395 RESOURCES : ResourceDB: cache successfully saved +07:25:35.395 RESOURCES : ResourceDB: saving cache (id=14 name=logs path=Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-25-33/resourceDatabase.rdb) +07:25:35.397 RESOURCES : ResourceDB: written 208/208 bytes +07:25:35.397 RESOURCES : ResourceDB: cache successfully saved +07:25:35.397 ENGINE : GameProject load +07:25:35.397 ENGINE : Loaded addons: +07:25:35.397 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' +07:25:35.397 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' +07:25:35.397 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +07:25:35.397 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' +07:25:35.397 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' +07:25:35.397 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' +07:25:35.397 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' +07:25:35.397 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' +07:25:35.397 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' +07:25:35.397 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/ai/addon.gproj' guid: '5192138CB9D5B911' +07:25:35.397 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/intel/addon.gproj' guid: 'D31039C7C53E348A' +07:25:35.397 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/map/addon.gproj' guid: '9AAEE9041D79809E' +07:25:35.397 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/chat/addon.gproj' guid: 'FA804F411BDDF2C6' +07:25:35.399 ENGINE : GameProject load +07:25:35.399 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/addon.gproj" +07:25:35.399 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +07:25:35.400 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/addon.gproj" +07:25:35.400 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +07:25:35.400 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +07:25:35.400 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +07:25:35.400 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +07:25:35.400 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +07:25:35.402 ENGINE : Loading custom engine user config '$profile:.save/app1874910_user76561198020202999/settings/ReforgerEngineSettings.conf' +07:25:35.402 ENGINE : No Enfusion settings file loaded. Continuing with defaults +07:25:35.510 RENDER : (OK) Adapter 'AMD Radeon RX 6950 XT (RADV NAVI21)' supports feature level 12_0 +07:25:35.511 RENDER : Basic screen setup: +07:25:35.511 RENDER : Back buffer format : TEXFMT_R8G8B8A8_SRGB (29) +07:25:35.511 RENDER : MSAA : none +07:25:35.524 RENDER : AMD AGS library initialized, version 6.1.0 x DLL 6.1.0 +07:25:35.524 RENDER : Extendeded AMD info for AMD Radeon RX 6950 XT (RADV NAVI21) (primary device) +07:25:35.524 RENDER : * architecture RDNA2, 80 CUs, 40 WGPs (for RDNA), 64 ROPs +07:25:35.524 RENDER : * core clocks 2720 MHz, memory 1124 MHz +07:25:35.524 RENDER : * TFlops 27.9, memory bandwidth (562.0 GB/s) +07:25:35.524 RENDER : AMD AGS correctly initialized +07:25:35.525 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 +07:25:35.525 RENDER : Detected output devices: +07:25:35.525 RENDER : * 1 device/s connected to AMD Radeon RX 6950 XT (RADV NAVI21): +07:25:35.525 RENDER : Generic Non-PnP Monitor (\\.\DISPLAY1), 1280x720 (offset 0x0), 30Hz +07:25:35.525 RENDER : Concurrent frames limit 2 +07:25:35.594 RENDER : DX12 device successfully created by AMD AGS library +07:25:35.594 RENDER : * user markers not supported in this version AMD SW +07:25:35.594 RENDER : Graphics device features +07:25:35.594 RENDER : Needed: +07:25:35.594 RENDER : * Highest supported shader model: 6.8 (6.0 needed) +07:25:35.594 RENDER : Optional: +07:25:35.594 RENDER : * Allow tearing (VSYNC) : 1 +07:25:35.594 RENDER : * 16 bits : 1 +07:25:35.594 RENDER : * Resource heap tier : 3 +07:25:35.594 RENDER : * Persistent heaps (DRED) : 1 +07:25:35.594 RENDER : * DRED 1.2 is supported by compiler +07:25:35.613 RENDER : Main RT format setup. +07:25:35.613 RENDER : Main RT format for quality 0 : TEXFMT_R11G11B10_FLOAT (26) +07:25:35.613 RENDER : Main RT format for quality 1 : TEXFMT_R16G16B16A16_FLOAT (10) +07:25:35.615 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=16 +07:25:35.643 PROFILING : Settings changed took: 0.017700 ms +07:25:36.761 AUDIO : Endpoint: Speakers (PulseAudio Output) +07:25:36.761 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +07:25:36.761 AUDIO : Audio client: +07:25:36.761 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +07:25:36.765 RENDER : RENDER : Reload shaders +07:25:36.765 RENDER : Enfusion shader version 13 +07:25:36.765 INIT : INIT : ShaderListReload +07:25:36.765 PROFILING : ShaderListReload took: 0.000500 ms +07:25:36.901 AUDIO : Endpoint: Speakers (PulseAudio Output) +07:25:36.901 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +07:25:36.902 AUDIO : Audio client: +07:25:36.902 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +07:25:37.061 RENDER : Loaded 3752 newer shader binaries +07:25:37.061 PROFILING : Reload shaders took: 296.166500 ms +07:25:37.061 ENGINE : Initializing inputs. +07:25:37.072 NETWORK : Initializing networking. +07:25:37.072 NETWORK : Using new GameRplScheduler. +07:25:37.073 SCRIPT : SCRIPT : Initializing scripts +07:25:37.073 SCRIPT : SCRIPT : ScriptProjectManager init +07:25:41.304 PROFILING : ScriptProjectManager init took: 4230.492800 ms +07:25:41.384 PROFILING : Initializing scripts took: 4311.475500 ms +07:25:41.401 ENGINE : Enfusion engine successfully created. +07:25:41.401 PROFILING : Workbench Init Engine took: 6976.408200 ms +07:25:41.401 INIT : INIT : Workbench Create Game +07:25:41.412 GUI : Using default language (en_us) +07:25:41.412 GUI : Loading 'en_us' localization file. +07:25:41.412 INIT : INIT : Loading StringTable +07:25:41.436 PROFILING : Loading StringTable took: 24.380100 ms +07:25:41.436 SCRIPT : SCRIPT : Compiling GameLib scripts +07:25:41.499 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 +07:25:41.499 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 +07:25:41.499 PROFILING : Compiling GameLib scripts took: 63.019000 ms +07:25:41.499 SCRIPT : SCRIPT : Compiling Game scripts +07:25:42.817 INIT : Workbench Create Game +07:25:42.817 SCRIPT : Compiling Game scripts +07:25:42.817 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +07:25:42.817 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +07:25:43.024 SCRIPT (W): @"Scripts/Game/ERR/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.124 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +07:25:43.163 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +07:25:43.301 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.310 SCRIPT (W): @"Scripts/Game/ERR/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +07:25:43.344 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetCountEntitiesInTrigger.c,10": Can't find class SCR_ScenarioFrameworkParam +07:25:43.357 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetLastFinishedTaskLayer.c,11": Can't find class SCR_ScenarioFrameworkParam +07:25:43.370 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +07:25:43.370 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +07:25:43.372 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +07:25:43.381 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,25": Can't find class SCR_SpinningWidgetAnimation +07:25:43.381 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,27": Can't find class SCR_SpinningWidgetAnimation +07:25:43.402 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.420 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.420 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.421 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +07:25:43.421 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +07:25:43.447 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.473 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +07:25:43.474 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,452": Can't find class Tuple2 +07:25:43.474 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,517": Can't find class Tuple2 +07:25:43.483 SCRIPT (E): Can't compile "Game" script module! + +Scripts/Game/ERR/ERR_InfantryResupply.c(131): Formula too complex +07:25:43.988 SCRIPT (W): Failed to load +07:25:43.988 PROFILING : Compiling Game scripts took: 2488.852600 ms +07:25:43.988 ENGINE (E): Unable to initialize a game/gamelib. Some workbench features will not work. +07:25:43.988 SCRIPT (W): Initializing default GameLib's game class. +07:25:43.988 INIT : Creating game instance(Game), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/error.log.txt b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/error.log.txt new file mode 100644 index 0000000..0360281 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/error.log.txt @@ -0,0 +1,60 @@ +--------------------------------------------- +Log Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-25-33\error.log started at 2026-09-20 07:25:35 (2026-09-20 05:25:35 UTC) + +07:25:35.281 INIT : Workbench startup +07:25:35.281 INIT : Workbench Init Engine +07:25:35.281 RESOURCES : ResourceDB: full scan +07:25:35.281 RESOURCES : processing files... +07:25:35.281 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +07:25:35.295 RESOURCES (W): resource not registered: @"$profile:rereintroduced.json". Setting null GUID +07:25:35.295 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +07:25:35.295 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +07:25:35.295 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +07:25:35.399 ENGINE : GameProject load +07:25:35.399 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/addon.gproj" +07:25:35.399 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +07:25:35.400 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/addon.gproj" +07:25:35.400 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +07:25:35.400 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +07:25:35.400 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +07:25:35.400 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +07:25:35.400 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +07:25:42.817 INIT : Workbench Create Game +07:25:42.817 SCRIPT : Compiling Game scripts +07:25:42.817 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +07:25:42.817 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +07:25:43.024 SCRIPT (W): @"Scripts/Game/ERR/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.124 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +07:25:43.163 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +07:25:43.301 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.310 SCRIPT (W): @"Scripts/Game/ERR/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +07:25:43.344 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetCountEntitiesInTrigger.c,10": Can't find class SCR_ScenarioFrameworkParam +07:25:43.357 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetLastFinishedTaskLayer.c,11": Can't find class SCR_ScenarioFrameworkParam +07:25:43.370 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +07:25:43.370 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +07:25:43.372 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +07:25:43.381 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,25": Can't find class SCR_SpinningWidgetAnimation +07:25:43.381 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,27": Can't find class SCR_SpinningWidgetAnimation +07:25:43.401 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.420 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.420 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.421 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +07:25:43.421 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +07:25:43.447 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.472 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +07:25:43.474 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,452": Can't find class Tuple2 +07:25:43.474 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,517": Can't find class Tuple2 +07:25:43.483 SCRIPT (E): Can't compile "Game" script module! + +Scripts/Game/ERR/ERR_InfantryResupply.c(131): Formula too complex +07:25:43.988 SCRIPT (W): Failed to load +07:25:43.988 ENGINE (E): Unable to initialize a game/gamelib. Some workbench features will not work. +07:25:43.988 SCRIPT (W): Initializing default GameLib's game class. diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/external-addons-inputs.json.txt b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/external-addons-inputs.json.txt new file mode 100644 index 0000000..ef8890f --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/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": [ + 47, + 916830, + 209, + 1789670354123815627, + 1789670354123815627 + ], + "sha256": "c5d88d82138bc80c95f364075c3a0fc2228f9c15c6230398f3728a13d25b418c" + }, + "addon.gproj": { + "stat": [ + 47, + 26917910, + 335, + 1789670330884205142, + 1789670353823807747 + ], + "sha256": "65197c50ff6e906a5732564e8b440d80ef1cdbcffead9eb388e1e2b56c1322bc" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917892, + 362, + 1789670307618593786, + 1789670307618593786 + ], + "sha256": "17b87e0976ac2da1032f1661a884f6d59b56c00823b2fcfdc2a698ea8bcc92cc" + }, + "data.pak": { + "stat": [ + 47, + 26917928, + 1992582478, + 1789670344310557863, + 1789670353824807774 + ], + "sha256": "e5db31f571782997640a67601ebd3bd6e6615c1548274c71b6ab0cdd794f8bf5" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917893, + 232459, + 1789670307954602617, + 1789670307954602617 + ], + "sha256": "855813254cd72dc87515f4c395e7c7defe4b145ac809a740f81c85ca546b36fe" + }, + "data001.pak": { + "stat": [ + 47, + 26917986, + 1993657251, + 1789670345496589019, + 1789670354029813158 + ], + "sha256": "2bda9c533834dfa2b8e29f4a2a905c30639dabe250554e1346cf1f5dae3f2db3" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917900, + 349870, + 1789670308754623642, + 1789670308754623642 + ], + "sha256": "d4ec79f2a5cf03dd44bcc4513199056195dfda3c7a5c6bbfd17b2c709b746cdc" + }, + "data002.pak": { + "stat": [ + 47, + 26917956, + 1992567795, + 1789670345532589964, + 1789670353970811608 + ], + "sha256": "dfbd716c2a0849910a8058b1f008b8403b8c506fe18c3168d2844383ac02988c" + }, + "data002.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917897, + 332016, + 1789670308247610318, + 1789670308247610318 + ], + "sha256": "3de05138d1d635f1ba5bcbd74a0f91028bfd59082f45c740051381bd054404b5" + }, + "data003.pak": { + "stat": [ + 47, + 26917964, + 364877149, + 1789670333444272402, + 1789670354017812842 + ], + "sha256": "6225936ebc266825bbd1c79e4e0020c9f2fb55c3d3501ed66e72d87436ccd015" + }, + "data003.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917898, + 96448, + 1789670308423614944, + 1789670308423614944 + ], + "sha256": "8ca2504191def96715ddd6ee98a8df1e3f0951e5755592801eab662657289dd0" + }, + "meta": { + "stat": [ + 47, + 911092, + 8188, + 1789670354121815574, + 1789670354121815574 + ], + "sha256": "cb4f4296d087ea5fe2e849b0fc960748bfede7ea3071eeb545bd7bd309be6bfb" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26917967, + 566987, + 1789670331096210712, + 1789670354028813131 + ], + "sha256": "e8706d6b9bb2474b65f7c588de9fcfad4516bd26dc12e7b6b687e7973a41e7a6" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917899, + 368, + 1789670308546618176, + 1789670308546618176 + ], + "sha256": "336f9160ad955caa88d286915195699d3ac36f3363391967a178be0fd2ccd914" + }, + "thumbnail.png": { + "stat": [ + 47, + 26917907, + 18180, + 1789670330627887201, + 1789670353823807747 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 910012, + 2789, + 1789670389999757705, + 1789670389999757705 + ], + "sha256": "0432a068d8d77e34afd10432d1459df1334238e1ec416c896f13b84bae5a3ac5" + }, + "addon.gproj": { + "stat": [ + 47, + 26919135, + 1100, + 1789670379744488450, + 1789670389873754397 + ], + "sha256": "1b83e9df126db639cfcdb6d5119e65a1581c028becd6c09998143ed527ad0721" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919120, + 364, + 1789670378419453659, + 1789670378419453659 + ], + "sha256": "d232c4cfc959267482bbf261eb2e5121c76b6bf7d8893c58c520a763df5ca5f8" + }, + "data.pak": { + "stat": [ + 47, + 26919141, + 203378761, + 1789670389138735100, + 1789670389946756313 + ], + "sha256": "985d0cde7b09ee860086cb386cf624fcfd94b5e82b26af0b33bab83f21d06988" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919122, + 1409173, + 1789670378781463164, + 1789670378781463164 + ], + "sha256": "041c8ebdf035c69aed7c04bb55be839fbdbd7bc8501862dd4939c1d71cdfe8c5" + }, + "meta": { + "stat": [ + 47, + 902077, + 12209, + 1789670389989757443, + 1789670389989757443 + ], + "sha256": "1b62c97002078af393f23508c3b03cfe22f590130345ac44926b06940f27f269" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26919132, + 823768, + 1789670379822490498, + 1789670389872754371 + ], + "sha256": "25f6405084fd228ff400868b21f033c4c43d44162ce73de562e06d8003b94a49" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919119, + 368, + 1789670378283450088, + 1789670378283450088 + ], + "sha256": "986f0280a79b0e4ff6d9a3ad60570bebd86ce68869c9f3d5954141f7d5060cb1" + }, + "thumbnail.png": { + "stat": [ + 47, + 26919138, + 18180, + 1789670379618193709, + 1789670389873754397 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 919166, + 197, + 1789670369327462097, + 1789670369327462097 + ], + "sha256": "4bcd7610056ed1d366e9b6d0600e80c622a1af35caecf5c9ecf2c7b9e2b626f7" + }, + "addon.gproj": { + "stat": [ + 47, + 26918585, + 2957, + 1789670367793432952, + 1789670369299906650 + ], + "sha256": "2db2e318e6f45bede0d1173d77af03314f888aedfb31bc767d569ccfb6e70a34" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 47, + 26918576, + 364, + 1789670367178158473, + 1789670367178158473 + ], + "sha256": "67d15a8e8623130546332c6d6433314cbdf38e034a66330b9c7a739a94731e21" + }, + "data.pak": { + "stat": [ + 47, + 26918592, + 43626712, + 1789670369105209079, + 1789670369315214594 + ], + "sha256": "80e9810c9b7c873187660d0ddf002a63d1a382e81fc3611baa0ae8fdfff29d3d" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 47, + 26918578, + 66352, + 1789670367560168505, + 1789670367560168505 + ], + "sha256": "6635291a1f1aa9cffdb844e241c36cdc04114574279bab66e21613410f5e5686" + }, + "meta": { + "stat": [ + 47, + 918678, + 2338, + 1789670369325214856, + 1789670369325214856 + ], + "sha256": "dd1c683c086efb292e6cc927bd6522a1ea97ebd454e8148356f66554ebcdd4dc" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26918588, + 44111, + 1789670367937178405, + 1789670369300214199 + ], + "sha256": "c4293fef30948a3538751533cc52c9ce449ffada931b47a8fdf1ca48c1618e75" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 47, + 26918577, + 366, + 1789670367326162360, + 1789670367326162360 + ], + "sha256": "df8cd07ff81263e4108688883b9f20568041f067dbad74402464ec2f88432b69" + }, + "thumbnail.png": { + "stat": [ + 47, + 26918582, + 689401, + 1789670367794174651, + 1789670369299906650 + ], + "sha256": "8da2e133303f21bb16a2abd25d5bd6c2a4a6f5eccedae74a98358db485a170d1" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 918673, + 193, + 1789670366131482045, + 1789670366131482045 + ], + "sha256": "92ff4ae6fec8afc679726186f424bb31c9918d182f321afca4696654844e39c7" + }, + "addon.gproj": { + "stat": [ + 47, + 26918544, + 2900, + 1789670364825147789, + 1789670366119130662 + ], + "sha256": "ad44151140adf62e99eaa639984c2b9c400be17481e934186d61c307b5221259" + }, + "addon.gproj_8.2.0_manifest.json": { + "stat": [ + 47, + 26918530, + 364, + 1789670364263081920, + 1789670364263081920 + ], + "sha256": "3065c7c353cb7623ee85f83d462d4dac37c92efad1a0255f2661470e6cedfd0f" + }, + "data.pak": { + "stat": [ + 47, + 26918541, + 119808197, + 1789670365649118318, + 1789670366115130557 + ], + "sha256": "f715ad5fa3de788061a66a3ccd933feead5cc1631507ca63e9061049c538fab6" + }, + "data.pak_8.2.0_manifest.json": { + "stat": [ + 47, + 26918528, + 25795, + 1789670364132078479, + 1789670364132078479 + ], + "sha256": "24a7f735e55ccfacc5cdacbb39fb76a6fac294f4cdc47dca0fcb6e3f1919f1e6" + }, + "gallery0_776x436.jpg": { + "stat": [ + 47, + 23106914, + 64588, + 1788720671481676966, + 1788720671481676966 + ], + "sha256": "63649f5239059dd12234250b8c8e313b14ca134e30e4309fbd1eb45f92e77097" + }, + "gallery1_776x436.jpg": { + "stat": [ + 47, + 23106915, + 47808, + 1788720671495639547, + 1788720671495639547 + ], + "sha256": "81f89b026a1bf341f8cd3bb19facd67e8d0f56073c924e026983836fee6bfb4c" + }, + "meta": { + "stat": [ + 47, + 918496, + 2928, + 1789670366129130924, + 1789670366129130924 + ], + "sha256": "ad0f9baa154a250712c94b50c5edcb25200002bdc186d35453b5e8c32c0b6ee5" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26918535, + 16514, + 1789670364934099542, + 1789670366080129638 + ], + "sha256": "c65677e8767d92c96c6f35b482350d56e3dccfa026a3c5470b332120990f047c" + }, + "resourceDatabase.rdb_8.2.0_manifest.json": { + "stat": [ + 47, + 26918527, + 366, + 1789670364004075117, + 1789670364004075117 + ], + "sha256": "fdc44be4e1523db5965b015a7ea511623399a5fb3548aaaf8b2a4807fc6ade7d" + }, + "thumbnail.png": { + "stat": [ + 47, + 26918547, + 708338, + 1789670364826600016, + 1789670366119130662 + ], + "sha256": "103a98bf476d510ab3081abb371170ae6cf65aea65b9095636d651170a5b0038" + }, + "thumbnail.png_8.2.0_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 920134, + 197, + 1789670377639162612, + 1789670377639162612 + ], + "sha256": "8e5e6b2fe4099ca90bb4498c9479924e775ca0eac411c8230114143ff1a8297a" + }, + "addon.gproj": { + "stat": [ + 47, + 26918715, + 2926, + 1789670371305266851, + 1789670377499241577 + ], + "sha256": "e6ffcf559a2e7898848349c090300ea8eca8cb2e13ecef456a108bcc82efc8b1" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 47, + 26918707, + 364, + 1789670369590221815, + 1789670369590221815 + ], + "sha256": "ba8f2b36575408f11b2107fc4b0f9449c9dc057629ebf894c7bdbc77f53cbc1f" + }, + "data.pak": { + "stat": [ + 47, + 26918730, + 395962643, + 1789670376182394919, + 1789670377620432679 + ], + "sha256": "84a2cf01e2d17a06f8d775ca542a0cc98739f9f4b75b79826017e1387faedb18" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 47, + 26918711, + 214221, + 1789670370007232766, + 1789670370007232766 + ], + "sha256": "dc3ff832bce708121c61a5dfe09be8504352556c50341f9878f4b457e165ade2" + }, + "meta": { + "stat": [ + 47, + 919170, + 2504, + 1789670377637433125, + 1789670377637433125 + ], + "sha256": "2863bb2bdb586286f8aedc34d5dfb6adbdaafd5fca0f8f21136c7a5351d1ce88" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26918718, + 141469, + 1789670371389269057, + 1789670377499429501 + ], + "sha256": "7f38b7ed578b0b47864648a7b70288fe49dae4cc2556d5754377a1c28b2b6532" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 47, + 26918708, + 368, + 1789670369714225072, + 1789670369714225072 + ], + "sha256": "2ffa1cf6f8c07600147ae779ee3be1ccec8da23cb1c10d8c73e0c5c5d3dc6d06" + }, + "thumbnail.png": { + "stat": [ + 47, + 26918721, + 689544, + 1789670371307273812, + 1789670377500429528 + ], + "sha256": "ccd771dba7f3f222e9733e688e6dd9e4c5edae2accdd80a6876241094e23f3dd" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 911088, + 209, + 1789670428409812415, + 1789670428409812415 + ], + "sha256": "90353d1b4ab072f7844bf24d8066031efd69feb76ddcbf66dea34b52ddfe0a1c" + }, + "addon.gproj": { + "stat": [ + 47, + 26919414, + 336, + 1789670399470006320, + 1789670428369764835 + ], + "sha256": "6ebd73d663ed6dbf981cd8bc7d19cfd5bcd3c9dec3b9a706fa331d992ef200b4" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919383, + 362, + 1789670390797778656, + 1789670390797778656 + ], + "sha256": "72d988d5881efdf7d8781b2dc978a0243e1a3d587ced56563299855724137232" + }, + "data.pak": { + "stat": [ + 47, + 26919411, + 1992445813, + 1789670421137575039, + 1789670428335763943 + ], + "sha256": "5b28362571e396c008eb2286dc5a76b4ccf869c0a279916209fb0ef20d6b145e" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919381, + 170934, + 1789670390675775453, + 1789670390675775453 + ], + "sha256": "7cde302270a1e5c3a88517ff8b08a5b50bbe63e7392434d8245542f81b0bfdf8" + }, + "data001.pak": { + "stat": [ + 47, + 26919421, + 238642257, + 1789670400589035695, + 1789670428370764861 + ], + "sha256": "fb2aecbde5668c4d431ea74d64f6d15f7a9f608fefe01838d7c85fb0c818499f" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919384, + 29970, + 1789670390937782332, + 1789670390937782332 + ], + "sha256": "e6fb290c2f9d8dcd0c0ac95c3dee054377a525e00129abc766defa079385d6ea" + }, + "meta": { + "stat": [ + 47, + 910016, + 7720, + 1789670428407765832, + 1789670428407765832 + ], + "sha256": "e9ba58307cb931026c5c59654f3b4b7f92ac6e0682a1e94fd2eb1d5b75c214cf" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26919388, + 111601, + 1789670399484558966, + 1789670428260761974 + ], + "sha256": "736bcd2e60177e5af99d93c6b5f07ad79a950899aaca23000f33ad405cd1b74e" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919379, + 368, + 1789670390384767813, + 1789670390384767813 + ], + "sha256": "9a4f54837a83d2acc2bdc62288b62fe7f24876a374f1270d5a5d2a497bb5de8f" + }, + "thumbnail.png": { + "stat": [ + 47, + 26919391, + 18180, + 1789670398997629625, + 1789670428260761974 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919380, + 366, + 1789670390509771095, + 1789670390509771095 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + } +} diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/headless-launch.log.txt b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/headless-launch.log.txt new file mode 100644 index 0000000..bc12094 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/headless-launch.log.txt @@ -0,0 +1,131 @@ +[gamescope] [Info] console: gamescope version 3.16.28 (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.legiongos.lcd.lua' (id: 7) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/onexplayer.f1.oled.lua' (id: 8) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.lcd.lua' (id: 9) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.oled.lua' (id: 10) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/zotac.zone.oled.lua' (id: 11) +[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: 157 +[gamescope] [Info] vblank: Using timerfd. +fsync: up and running. +[Gamescope WSI] No application info given. +[Gamescope WSI] Executable name: explorer.exe +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. +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: 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: 5 + layer client flags: 0x4 + server hdr output enabled: false + hdr formats exposed to client: false +[gamescope] [Info] launch: Primary child shut down! +(EE) failed to read Wayland events: Broken pipe diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/launch-source-sha256.json b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/launch-source-sha256.json new file mode 100644 index 0000000..3621365 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/launch-source-sha256.json @@ -0,0 +1,256 @@ +{ + "addons/ai/Prefabs/ERR/ConvoyCrew.et": "434d9bef9a9fcf0376604a9fbd547204cc544f5ed1a5b75228245151f02323ab", + "addons/ai/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/ai/Prefabs/ERR/MortarCrew.et": "05d3e7353ff9fe5523218a1487b31b7b742b0be8adbcb060c7099978cf008bce", + "addons/ai/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/ai/Scripts/Game/ERR/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/ai/Scripts/Game/ERR/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c": "f269fc84210c67c6b0a9edb76c23a945207f0e8c19884852df5e44cea77d7a45", + "addons/ai/Scripts/Game/ERR/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/ai/Scripts/Game/ERR/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/ai/Scripts/Game/ERR/ERR_HQ.c": "42a9a2d5a76e7aac94951cc5517c3e9535a39aadea3b310d0bbeecbd7fa9dbb8", + "addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c": "76a23520cc517f4e78f4bee0893b04c0281e5ace443ba51dcf9e0180154a06ac", + "addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/ai/Scripts/Game/ERR/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/ai/Scripts/Game/ERR/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/ai/Scripts/Game/ERR/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/ai/Scripts/Game/ERR/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/ai/Scripts/Game/ERR/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/ai/Scripts/Game/ERR/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c": "cae87b2d397042c597415e4b99796f99c2f8dca0da4316da5e38afceadf377ff", + "addons/ai/Scripts/Game/ERR/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/ai/Scripts/Game/ERR/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/ai/Scripts/Game/ERR/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/ai/Scripts/Game/ERR/ERR_HQTask.c": "9852bf0ccdc9d3a29597dff4b6ec68af2b7c04b29f2b74f126028da2d1e58e5e", + "addons/ai/Scripts/Game/ERR/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c": "1a66153413934a7f538d4a6c594dc3cf1e8534908f4d02fdd22e3ef2b137bbb6", + "addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c": "f11b2ebdf6b58aee618f4922df5f471245f985f2a880c39ac956ed3a3fb8c2b0", + "addons/ai/Scripts/Game/ERR/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/ai/Scripts/Game/ERR/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/ai/Scripts/Game/ERR/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/ai/Scripts/Game/ERR/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/ai/Scripts/Game/ERR/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/ai/Scripts/Game/ERR/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/ai/Scripts/Game/ERR/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/ai/Scripts/Game/ERR/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/ai/Scripts/Game/ERR/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/ai/addon.gproj": "eba68a3e343deb205b01ba2b0e473deacb2b5ba21d982c601a0cdd4db78778b2", + "addons/chat/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/chat/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/chat/Scripts/Game/ERR/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/chat/Scripts/Game/ERR/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/chat/Scripts/Game/ERR/ERR_NativeConvoyProbe.c": "9832e993a1f1b5a41a53748ac15be7d9a94337c08198ec7b886687fa478459df", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQMemoryProbe.c": "26684c5026870231e39813e114d4de668072f40cd8e9ed12be2b0e30d937257a", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/chat/Scripts/Game/ERR/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/chat/Scripts/Game/ERR/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c": "0993f8cffacb3ba96b57773d3d087bfa649e92a927dbf2ba3d2900d909f5d3c1", + "addons/chat/Scripts/Game/ERRChat/ERR_OrdinaryScenarioLaunchChat.c": "dda715c9691d366e35fa2ad5e390dee1971651f137a5a9f9aeb23dcbe53ec87e", + "addons/chat/Scripts/WorkbenchGame/ERR/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/chat/addon.gproj": "ea1587e0174cf795334d306c71d99b06797fc891427cd57b6cab6e21cf0e4e0e", + "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/Missions/ERR_Everon_Base.conf": "1e6a0e9a756d15495201f71121626890f01efe6b00154c561672d4ec157960bd", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "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/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/Scripts/Game/ERR/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/ERR_AdminService.c": "3f59fa3af151d7697dc1539a886c2ca1cfe4f68228b93d521582ec32835feddb", + "addons/core/Scripts/Game/ERR/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/ERR_EscapeGameOverScreenInfo.c": "8893b161bf168884d62f1315d3c8aa9af4ca413f621d6f8e2525bb5245d5f509", + "addons/core/Scripts/Game/ERR/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/ERR_GameMode.c": "0870b5c5aed432f9e5ee66863e361cac61a68bf9d80dc266647ab5c2f1bcdccf", + "addons/core/Scripts/Game/ERR/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/ERR_PreparationStatus.c": "1d8987d2dcc1db2a030e095b33d50f07877181037d339624156291d8317bfa5d", + "addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/ERR_Settings.c": "3a950653f09689738be09f793149873fbca1da668ad0c197ab500b23f574de3e", + "addons/core/Scripts/Game/ERR/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/ERR_SiteService.c": "a47a1ee3a62d170a06b54cce3c42fac7c3645cf6a89c827a1dfe51ae0a99ce12", + "addons/core/Scripts/Game/ERR/ERR_SpawnFinalization.c": "2e295b0f225208c5414728ba83333e5e0ab6eef3a708ce39eb1dfce5400c94c9", + "addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/GameLib/ERR/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "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/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": "4dc4e72cd2ba5fef5a35d697b911be4755e37208d539f1d1984bcbb6a9699e96", + "addons/intel/Scripts/Game/ERR/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/intel/Scripts/Game/ERR/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/intel/Scripts/Game/ERR/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/intel/Scripts/Game/ERR/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "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_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/map/Scripts/Game/ERRMap/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/map/addon.gproj": "1b371e5e01ea9fa46e76570fecb8aaa3a9298e34cba7ccca8a6bdb5ca86eb46a" +} diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/launch-source.json b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/launch-source.json new file mode 100644 index 0000000..6cae1a9 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/launch-source.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "launch_id": "a5123b4c-75f4-4118-a120-f862caaa9878", + "captured_unix": 1789881931.8690307, + "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/chat/addon.gproj", + "-addonsDir", + "Z:/home/jakub/devel/escapistsrereintroduced/addons", + "-profile", + "Z:/tmp/erri-workbench-external-profile", + "-logconsole", + "-wbModule=WorldEditor", + "-load", + "Worlds/ERR_Everon.ent", + "-plugin=ERR_ValidateWorldPlugin", + "-errPlay", + "1", + "-errSmoke", + "1", + "-errSmokeOutcome", + "hq-memory", + "-noThrow", + "-disableCrashReporter" + ], + "manifest_sha256": "bca3ea9237afdd5f3814a88575118231ddbfdce5043adf18777d6165636754d1" +} diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/report.json b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/report.json new file mode 100644 index 0000000..a9156a7 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/report.json @@ -0,0 +1,38 @@ +{ + "log": "docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/console.log.txt", + "smoke_completions": 0, + "assertions_passed": 0, + "script_or_runtime_failures": [ + "07:25:43.105 SCRIPT (E): @\"Scripts/Game/ERR/ERR_InfantryResupply.c,131\": Formula too complex", + "07:25:43.105 SCRIPT (E): @\"Scripts/Game/ERR/ERR_InfantryResupply.c,131\": Formula too complex", + "07:25:43.105 SCRIPT (E): @\"Scripts/Game/ERR/ERR_InfantryResupply.c,131\": Formula too complex", + "07:25:43.105 SCRIPT (E): @\"Scripts/Game/ERR/ERR_InfantryResupply.c,131\": Formula too complex", + "07:25:43.344 SCRIPT (E): @\"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetCountEntitiesInTrigger.c,10\": Can't find class SCR_ScenarioFrameworkParam", + "07:25:43.357 SCRIPT (E): @\"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetLastFinishedTaskLayer.c,11\": Can't find class SCR_ScenarioFrameworkParam", + "07:25:43.381 SCRIPT (E): @\"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,25\": Can't find class SCR_SpinningWidgetAnimation", + "07:25:43.381 SCRIPT (E): @\"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,27\": Can't find class SCR_SpinningWidgetAnimation", + "07:25:43.474 SCRIPT (E): @\"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,452\": Can't find class Tuple2", + "07:25:43.474 SCRIPT (E): @\"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,517\": Can't find class Tuple2", + "07:25:43.483 SCRIPT (E): Can't compile \"Game\" script module!" + ], + "engine_errors": [ + "07:25:35.399 RESOURCES (E): Wrong GUID/name for resource @\"{0AFDD005CD669892}Language/rhs_localization.st\" in property \"StringTableSource\"", + "07:25:35.400 RESOURCES (E): Wrong GUID/name for resource @\"{41FA2A08B6971D4C}Language/wcs_armament_localization.st\" in property \"StringTableSource\"", + "07:25:35.400 RESOURCES (E): Wrong GUID/name for resource @\"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st\" in property \"StringTableSource\"", + "07:25:35.400 RESOURCES (E): Wrong GUID/name for resource @\"{E50E557B468C7073}Language/wcs_bmp1_localization.st\" in property \"StringTableSource\"", + "07:25:43.105 SCRIPT (E): @\"Scripts/Game/ERR/ERR_InfantryResupply.c,131\": Formula too complex", + "07:25:43.105 SCRIPT (E): @\"Scripts/Game/ERR/ERR_InfantryResupply.c,131\": Formula too complex", + "07:25:43.105 SCRIPT (E): @\"Scripts/Game/ERR/ERR_InfantryResupply.c,131\": Formula too complex", + "07:25:43.105 SCRIPT (E): @\"Scripts/Game/ERR/ERR_InfantryResupply.c,131\": Formula too complex", + "07:25:43.344 SCRIPT (E): @\"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetCountEntitiesInTrigger.c,10\": Can't find class SCR_ScenarioFrameworkParam", + "07:25:43.357 SCRIPT (E): @\"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetLastFinishedTaskLayer.c,11\": Can't find class SCR_ScenarioFrameworkParam", + "07:25:43.381 SCRIPT (E): @\"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,25\": Can't find class SCR_SpinningWidgetAnimation", + "07:25:43.381 SCRIPT (E): @\"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,27\": Can't find class SCR_SpinningWidgetAnimation", + "07:25:43.474 SCRIPT (E): @\"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,452\": Can't find class Tuple2", + "07:25:43.474 SCRIPT (E): @\"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,517\": Can't find class Tuple2", + "07:25:43.483 SCRIPT (E): Can't compile \"Game\" script module!", + "07:25:43.988 ENGINE (E): Unable to initialize a game/gamelib. Some workbench features will not work." + ], + "missing_end_screen": [], + "scope": "scripted local Workbench integration only; no multiplayer, piloting or FPS claim" +} diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/runner.json.txt b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/runner.json.txt new file mode 100644 index 0000000..200de72 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/runner.json.txt @@ -0,0 +1,40 @@ +{ + "stopped_unix": 1789881944.426546, + "console_sha256": "4bb6d00445acd2849b4788cc20e16e6b8fee4b786adca2eb9e9b3b6af5e87fb8", + "end_source_sha256": "bca3ea9237afdd5f3814a88575118231ddbfdce5043adf18777d6165636754d1", + "source_unchanged_after_run": true, + "source_provenance": "launch_snapshot", + "launch_id": "a5123b4c-75f4-4118-a120-f862caaa9878", + "launch_source_manifest": "launch-source-sha256.json", + "launch_source_metadata": "launch-source.json", + "launch_source_sha256": "bca3ea9237afdd5f3814a88575118231ddbfdce5043adf18777d6165636754d1", + "external_addons_unchanged_after_run": true, + "external_addon_count": 6, + "external_addon_inputs": "external-addons-inputs.json", + "started_unix": 1789881931.869105, + "result": "test-failed", + "result_before_cleanup": "test-failed", + "cleanup_confirmed": true, + "cleanup_report": { + "cleanup_confirmed": true, + "idle_verified": true, + "errors": [], + "orphan_cleanup": { + "attempted": true, + "report": { + "scope": "/tmp/erri-headless-compat/pfx", + "candidates": [], + "term_sent": [], + "kill_sent": [], + "cleared": true + } + } + }, + "runner_error": null, + "session": "/tmp/erri-workbench-external-profile/logs/logs_2026-09-20_07-25-33", + "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-072533-infantry-resupply-compile/script.log.txt b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/script.log.txt new file mode 100644 index 0000000..8eb1c10 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/script.log.txt @@ -0,0 +1,46 @@ +--------------------------------------------- +Log Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-25-33\script.log started at 2026-09-20 07:25:37 (2026-09-20 05:25:37 UTC) + +07:25:37.073 SCRIPT : SCRIPT : Initializing scripts +07:25:37.073 SCRIPT : SCRIPT : ScriptProjectManager init +07:25:41.436 SCRIPT : SCRIPT : Compiling GameLib scripts +07:25:41.499 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 +07:25:41.499 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 +07:25:41.499 SCRIPT : SCRIPT : Compiling Game scripts +07:25:42.817 SCRIPT : Compiling Game scripts +07:25:42.817 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +07:25:42.817 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +07:25:43.024 SCRIPT (W): @"Scripts/Game/ERR/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.105 SCRIPT (E): @"Scripts/Game/ERR/ERR_InfantryResupply.c,131": Formula too complex +07:25:43.124 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +07:25:43.163 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +07:25:43.279 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +07:25:43.301 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.310 SCRIPT (W): @"Scripts/Game/ERR/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +07:25:43.344 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetCountEntitiesInTrigger.c,10": Can't find class SCR_ScenarioFrameworkParam +07:25:43.357 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetLastFinishedTaskLayer.c,11": Can't find class SCR_ScenarioFrameworkParam +07:25:43.370 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +07:25:43.370 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +07:25:43.372 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +07:25:43.381 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,25": Can't find class SCR_SpinningWidgetAnimation +07:25:43.381 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,27": Can't find class SCR_SpinningWidgetAnimation +07:25:43.402 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.420 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.420 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.421 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +07:25:43.421 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +07:25:43.447 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:25:43.473 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +07:25:43.474 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,452": Can't find class Tuple2 +07:25:43.474 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,517": Can't find class Tuple2 +07:25:43.483 SCRIPT (E): Can't compile "Game" script module! + +Scripts/Game/ERR/ERR_InfantryResupply.c(131): Formula too complex +07:25:43.988 SCRIPT (W): Failed to load +07:25:43.988 SCRIPT (W): Initializing default GameLib's game class. diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/source-provenance.json b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/source-provenance.json new file mode 100644 index 0000000..5fa4cc7 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/source-provenance.json @@ -0,0 +1,4 @@ +{ + "schema_version": 1, + "kind": "launch_snapshot" +} diff --git a/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/source-sha256.json b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/source-sha256.json new file mode 100644 index 0000000..3621365 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072533-infantry-resupply-compile/source-sha256.json @@ -0,0 +1,256 @@ +{ + "addons/ai/Prefabs/ERR/ConvoyCrew.et": "434d9bef9a9fcf0376604a9fbd547204cc544f5ed1a5b75228245151f02323ab", + "addons/ai/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/ai/Prefabs/ERR/MortarCrew.et": "05d3e7353ff9fe5523218a1487b31b7b742b0be8adbcb060c7099978cf008bce", + "addons/ai/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/ai/Scripts/Game/ERR/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/ai/Scripts/Game/ERR/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c": "f269fc84210c67c6b0a9edb76c23a945207f0e8c19884852df5e44cea77d7a45", + "addons/ai/Scripts/Game/ERR/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/ai/Scripts/Game/ERR/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/ai/Scripts/Game/ERR/ERR_HQ.c": "42a9a2d5a76e7aac94951cc5517c3e9535a39aadea3b310d0bbeecbd7fa9dbb8", + "addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c": "76a23520cc517f4e78f4bee0893b04c0281e5ace443ba51dcf9e0180154a06ac", + "addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/ai/Scripts/Game/ERR/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/ai/Scripts/Game/ERR/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/ai/Scripts/Game/ERR/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/ai/Scripts/Game/ERR/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/ai/Scripts/Game/ERR/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/ai/Scripts/Game/ERR/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c": "cae87b2d397042c597415e4b99796f99c2f8dca0da4316da5e38afceadf377ff", + "addons/ai/Scripts/Game/ERR/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/ai/Scripts/Game/ERR/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/ai/Scripts/Game/ERR/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/ai/Scripts/Game/ERR/ERR_HQTask.c": "9852bf0ccdc9d3a29597dff4b6ec68af2b7c04b29f2b74f126028da2d1e58e5e", + "addons/ai/Scripts/Game/ERR/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c": "1a66153413934a7f538d4a6c594dc3cf1e8534908f4d02fdd22e3ef2b137bbb6", + "addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c": "f11b2ebdf6b58aee618f4922df5f471245f985f2a880c39ac956ed3a3fb8c2b0", + "addons/ai/Scripts/Game/ERR/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/ai/Scripts/Game/ERR/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/ai/Scripts/Game/ERR/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/ai/Scripts/Game/ERR/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/ai/Scripts/Game/ERR/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/ai/Scripts/Game/ERR/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/ai/Scripts/Game/ERR/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/ai/Scripts/Game/ERR/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/ai/Scripts/Game/ERR/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/ai/addon.gproj": "eba68a3e343deb205b01ba2b0e473deacb2b5ba21d982c601a0cdd4db78778b2", + "addons/chat/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/chat/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/chat/Scripts/Game/ERR/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/chat/Scripts/Game/ERR/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/chat/Scripts/Game/ERR/ERR_NativeConvoyProbe.c": "9832e993a1f1b5a41a53748ac15be7d9a94337c08198ec7b886687fa478459df", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQMemoryProbe.c": "26684c5026870231e39813e114d4de668072f40cd8e9ed12be2b0e30d937257a", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/chat/Scripts/Game/ERR/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/chat/Scripts/Game/ERR/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c": "0993f8cffacb3ba96b57773d3d087bfa649e92a927dbf2ba3d2900d909f5d3c1", + "addons/chat/Scripts/Game/ERRChat/ERR_OrdinaryScenarioLaunchChat.c": "dda715c9691d366e35fa2ad5e390dee1971651f137a5a9f9aeb23dcbe53ec87e", + "addons/chat/Scripts/WorkbenchGame/ERR/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/chat/addon.gproj": "ea1587e0174cf795334d306c71d99b06797fc891427cd57b6cab6e21cf0e4e0e", + "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/Missions/ERR_Everon_Base.conf": "1e6a0e9a756d15495201f71121626890f01efe6b00154c561672d4ec157960bd", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "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/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/Scripts/Game/ERR/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/ERR_AdminService.c": "3f59fa3af151d7697dc1539a886c2ca1cfe4f68228b93d521582ec32835feddb", + "addons/core/Scripts/Game/ERR/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/ERR_EscapeGameOverScreenInfo.c": "8893b161bf168884d62f1315d3c8aa9af4ca413f621d6f8e2525bb5245d5f509", + "addons/core/Scripts/Game/ERR/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/ERR_GameMode.c": "0870b5c5aed432f9e5ee66863e361cac61a68bf9d80dc266647ab5c2f1bcdccf", + "addons/core/Scripts/Game/ERR/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/ERR_PreparationStatus.c": "1d8987d2dcc1db2a030e095b33d50f07877181037d339624156291d8317bfa5d", + "addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/ERR_Settings.c": "3a950653f09689738be09f793149873fbca1da668ad0c197ab500b23f574de3e", + "addons/core/Scripts/Game/ERR/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/ERR_SiteService.c": "a47a1ee3a62d170a06b54cce3c42fac7c3645cf6a89c827a1dfe51ae0a99ce12", + "addons/core/Scripts/Game/ERR/ERR_SpawnFinalization.c": "2e295b0f225208c5414728ba83333e5e0ab6eef3a708ce39eb1dfce5400c94c9", + "addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/GameLib/ERR/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "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/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": "4dc4e72cd2ba5fef5a35d697b911be4755e37208d539f1d1984bcbb6a9699e96", + "addons/intel/Scripts/Game/ERR/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/intel/Scripts/Game/ERR/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/intel/Scripts/Game/ERR/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/intel/Scripts/Game/ERR/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "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_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/map/Scripts/Game/ERRMap/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/map/addon.gproj": "1b371e5e01ea9fa46e76570fecb8aaa3a9298e34cba7ccca8a6bdb5ca86eb46a" +} diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/console.log.txt b/docs/evidence/native-2026-09-20-072839-infantry-resupply/console.log.txt new file mode 100644 index 0000000..230c2bb --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/console.log.txt @@ -0,0 +1,680 @@ +--------------------------------------------- +Log Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-28-39\console.log started at 2026-09-20 07:28:39 (2026-09-20 05:28:39 UTC) + +07:28:39.768 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-28-39' to filesystem under name logs +07:28:39.769 ENGINE : FileSystem: Adding relative directory 'Z:\tmp\erri-workbench-external-profile\profile' to filesystem under name profile +07:28:39.769 ENGINE : FileSystem: Current working directory: 'Z:\home\jakub\.local\share\Steam\steamapps\common\Arma Reforger Tools\Workbench\' +07:28:39.770 PROFILING : Workbench Create Engine took: 13.440900 ms +07:28:40.800 INIT : INIT : Workbench Init Engine +07:28:40.800 ENGINE : Initializing engine, version 192142 +07:28:40.800 ENGINE : CLI Params: -gproj Z:/home/jakub/devel/escapistsrereintroduced/addons/chat/addon.gproj -addonsDir Z:/home/jakub/devel/escapistsrereintroduced/addons -profile Z:/tmp/erri-workbench-external-profile -logconsole -wbModule WorldEditor -load Worlds/ERR_Everon.ent -plugin ERR_ValidateWorldPlugin -errPlay 1 -errSmoke 1 -errSmokeOutcome hq-memory -noThrow -disableCrashReporter +07:28:40.812 ENGINE : Addon dirs: +07:28:40.812 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/chat/' +07:28:40.812 ENGINE : dir: 'Z:/home/jakub/devel/escapistsrereintroduced/addons' +07:28:40.812 ENGINE : dir: './addons' +07:28:40.812 ENGINE : dir: 'Z:/tmp/erri-workbench-external-profile/addons' +07:28:40.812 ENGINE : Available addons: +07:28:40.812 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/chat/addon.gproj' guid: 'FA804F411BDDF2C6' +07:28:40.812 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/ai/addon.gproj' guid: '5192138CB9D5B911' +07:28:40.812 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +07:28:40.812 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/intel/addon.gproj' guid: 'D31039C7C53E348A' +07:28:40.812 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/map/addon.gproj' guid: '9AAEE9041D79809E' +07:28:40.812 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed) +07:28:40.812 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed) +07:28:40.812 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed) +07:28:40.812 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed) +07:28:40.812 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed) +07:28:40.812 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed) +07:28:40.812 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed) +07:28:40.812 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed) +07:28:40.812 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\chat' to filesystem under name ERR_Chat +07:28:40.812 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\map' to filesystem under name ERR_Map +07:28:40.812 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\intel' to filesystem under name ERR_Intel +07:28:40.813 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\ai' to filesystem under name ERR_Ai +07:28:40.813 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1 +07:28:40.815 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore +07:28:40.816 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments +07:28:40.820 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core +07:28:40.822 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02 +07:28:40.826 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01 +07:28:40.827 ENGINE : FileSystem: Adding relative directory 'Z:\home\jakub\devel\escapistsrereintroduced\addons\core' to filesystem under name ERR_Core +07:28:40.930 ENGINE : FileSystem: Adding package 'Z:/tmp/erri-workbench-external-profile/addons/ArmaReforger/' (pak count: 14) to filesystem under name ArmaReforger +07:28:40.933 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core +07:28:40.933 ENGINE : CPU vendor : AuthenticAMD +07:28:40.933 ENGINE : CPU type : 2 +07:28:40.933 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor +07:28:40.933 ENGINE : CPU cache info : L1 [Inst 32KB, Data 32KB], L2 [Unif 512KB], L3 [Unif 16384KB] +07:28:40.933 ENGINE : CPU count logical : 16 +07:28:40.933 ENGINE : CPU count physical : 8 +07:28:40.933 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2 +07:28:40.933 RESOURCES : ResourceDB: loading cache (id=0 name=ERR_Chat path=Z:\home\jakub\devel\escapistsrereintroduced\addons\chat/resourceDatabase.rdb) +07:28:40.933 RESOURCES : ResourceDB: loading cache (id=1 name=ERR_Map path=Z:\home\jakub\devel\escapistsrereintroduced\addons\map/resourceDatabase.rdb) +07:28:40.933 RESOURCES : ResourceDB: loading cache (id=2 name=ERR_Intel path=Z:\home\jakub\devel\escapistsrereintroduced\addons\intel/resourceDatabase.rdb) +07:28:40.934 RESOURCES : ResourceDB: loading cache (id=3 name=ERR_Ai path=Z:\home\jakub\devel\escapistsrereintroduced\addons\ai/resourceDatabase.rdb) +07:28:40.934 RESOURCES : ResourceDB: loading cache (id=4 name=WCS_BMP-1 path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb) +07:28:40.934 RESOURCES : ResourceDB: loading cache (id=5 name=WCS_SpaceCore path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb) +07:28:40.935 RESOURCES : ResourceDB: loading cache (id=6 name=WCS_Armaments path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb) +07:28:40.937 RESOURCES : ResourceDB: loading cache (id=7 name=RHS_Core path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb) +07:28:40.946 RESOURCES : ResourceDB: loading cache (id=8 name=RHS_Content_02 path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb) +07:28:40.948 RESOURCES : ResourceDB: loading cache (id=9 name=RHS_Content_01 path=Z:/tmp/erri-workbench-external-profile/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb) +07:28:40.954 RESOURCES : ResourceDB: loading cache (id=10 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +07:28:40.954 RESOURCES : ResourceDB: loading cache (id=11 name=ArmaReforger path=Z:/tmp/erri-workbench-external-profile/addons/ArmaReforger/resourceDatabase.rdb) +07:28:41.090 RESOURCES : ResourceDB: loading cache (id=12 name=core path=./addons/core/resourceDatabase.rdb) +07:28:41.091 RESOURCES : ResourceDB: loading cache (id=13 name=profile path=Z:\tmp\erri-workbench-external-profile\profile/resourceDatabase.rdb) +07:28:41.091 RESOURCES : ResourceDB: loading cache (id=14 name=logs path=Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-28-39/resourceDatabase.rdb) +07:28:41.239 RESOURCES : RESOURCES : ResourceDB: full scan +07:28:41.245 RESOURCES : RESOURCES : scanning... +07:28:41.245 RESOURCES : RESOURCES : scanning @"ERR_Chat" +07:28:41.261 RESOURCES : RESOURCES : scanning @"ERR_Map" +07:28:41.263 RESOURCES : RESOURCES : scanning @"ERR_Intel" +07:28:41.264 RESOURCES : RESOURCES : scanning @"ERR_Ai" +07:28:41.265 RESOURCES : RESOURCES : scanning @"WCS_BMP-1" +07:28:41.269 RESOURCES : RESOURCES : scanning @"WCS_SpaceCore" +07:28:41.272 RESOURCES : RESOURCES : scanning @"WCS_Armaments" +07:28:41.276 RESOURCES : RESOURCES : scanning @"RHS_Core" +07:28:41.289 RESOURCES : RESOURCES : scanning @"RHS_Content_02" +07:28:41.293 RESOURCES : RESOURCES : scanning @"RHS_Content_01" +07:28:41.301 RESOURCES : RESOURCES : scanning @"ERR_Core" +07:28:41.306 RESOURCES : RESOURCES : scanning @"ArmaReforger" +07:28:41.524 RESOURCES : RESOURCES : scanning @"core" +07:28:41.527 RESOURCES : RESOURCES : scanning @"profile" +07:28:41.528 RESOURCES : RESOURCES : scanning @"logs" +07:28:41.528 RESOURCES : RESOURCES : processing meta-files... +07:28:41.594 RESOURCES : RESOURCES : processing files... +07:28:41.595 INIT : Workbench startup +07:28:41.595 INIT : Workbench Init Engine +07:28:41.595 RESOURCES : ResourceDB: full scan +07:28:41.595 RESOURCES : processing files... +07:28:41.595 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +07:28:41.607 RESOURCES (W): resource not registered: @"$profile:rereintroduced.json". Setting null GUID +07:28:41.607 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +07:28:41.607 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +07:28:41.607 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +07:28:41.607 RESOURCES : RESOURCES : processing folders... +07:28:41.615 RESOURCES : RESOURCES : creating GUID-item mapping... +07:28:41.631 RESOURCES : RESOURCES : building tree... +07:28:41.691 PROFILING : ResourceDB: full scan took: 451.573200 ms +07:28:41.692 RESOURCES : ResourceDB: saving cache (id=0 name=ERR_Chat path=Z:\home\jakub\devel\escapistsrereintroduced\addons\chat/resourceDatabase.rdb) +07:28:41.694 RESOURCES : ResourceDB: written 1047/1047 bytes +07:28:41.694 RESOURCES : ResourceDB: cache successfully saved +07:28:41.694 RESOURCES : ResourceDB: saving cache (id=1 name=ERR_Map path=Z:\home\jakub\devel\escapistsrereintroduced\addons\map/resourceDatabase.rdb) +07:28:41.695 RESOURCES : ResourceDB: written 819/819 bytes +07:28:41.695 RESOURCES : ResourceDB: cache successfully saved +07:28:41.695 RESOURCES : ResourceDB: saving cache (id=2 name=ERR_Intel path=Z:\home\jakub\devel\escapistsrereintroduced\addons\intel/resourceDatabase.rdb) +07:28:41.697 RESOURCES : ResourceDB: written 404/404 bytes +07:28:41.697 RESOURCES : ResourceDB: cache successfully saved +07:28:41.697 RESOURCES : ResourceDB: saving cache (id=3 name=ERR_Ai path=Z:\home\jakub\devel\escapistsrereintroduced\addons\ai/resourceDatabase.rdb) +07:28:41.698 RESOURCES : ResourceDB: written 3725/3725 bytes +07:28:41.698 RESOURCES : ResourceDB: cache successfully saved +07:28:41.698 RESOURCES : ResourceDB: saving cache (id=10 name=ERR_Core path=Z:\home\jakub\devel\escapistsrereintroduced\addons\core/resourceDatabase.rdb) +07:28:41.700 RESOURCES : ResourceDB: written 8563/8563 bytes +07:28:41.700 RESOURCES : ResourceDB: cache successfully saved +07:28:41.700 RESOURCES : ResourceDB: saving cache (id=13 name=profile path=Z:\tmp\erri-workbench-external-profile\profile/resourceDatabase.rdb) +07:28:41.701 RESOURCES : ResourceDB: written 206/206 bytes +07:28:41.701 RESOURCES : ResourceDB: cache successfully saved +07:28:41.701 RESOURCES : ResourceDB: saving cache (id=14 name=logs path=Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-28-39/resourceDatabase.rdb) +07:28:41.703 RESOURCES : ResourceDB: written 208/208 bytes +07:28:41.703 RESOURCES : ResourceDB: cache successfully saved +07:28:41.703 ENGINE : GameProject load +07:28:41.703 ENGINE : Loaded addons: +07:28:41.703 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' +07:28:41.703 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ArmaReforger/ArmaReforger.gproj' guid: '58D0FB3206B6F859' +07:28:41.703 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/core/addon.gproj' guid: '2528466DE220D91C' +07:28:41.703 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' +07:28:41.703 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' +07:28:41.703 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' +07:28:41.703 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' +07:28:41.703 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' +07:28:41.703 ENGINE : gproj: 'Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' +07:28:41.703 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/ai/addon.gproj' guid: '5192138CB9D5B911' +07:28:41.703 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/intel/addon.gproj' guid: 'D31039C7C53E348A' +07:28:41.703 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/map/addon.gproj' guid: '9AAEE9041D79809E' +07:28:41.703 ENGINE : gproj: 'Z:/home/jakub/devel/escapistsrereintroduced/addons/chat/addon.gproj' guid: 'FA804F411BDDF2C6' +07:28:41.705 ENGINE : GameProject load +07:28:41.705 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/addon.gproj" +07:28:41.705 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +07:28:41.705 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/addon.gproj" +07:28:41.705 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +07:28:41.706 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +07:28:41.706 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +07:28:41.706 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +07:28:41.706 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +07:28:41.707 ENGINE : Loading custom engine user config '$profile:.save/app1874910_user76561198020202999/settings/ReforgerEngineSettings.conf' +07:28:41.707 ENGINE : No Enfusion settings file loaded. Continuing with defaults +07:28:41.803 RENDER : (OK) Adapter 'AMD Radeon RX 6950 XT (RADV NAVI21)' supports feature level 12_0 +07:28:41.804 RENDER : Basic screen setup: +07:28:41.804 RENDER : Back buffer format : TEXFMT_R8G8B8A8_SRGB (29) +07:28:41.804 RENDER : MSAA : none +07:28:41.818 RENDER : AMD AGS library initialized, version 6.1.0 x DLL 6.1.0 +07:28:41.818 RENDER : Extendeded AMD info for AMD Radeon RX 6950 XT (RADV NAVI21) (primary device) +07:28:41.818 RENDER : * architecture RDNA2, 80 CUs, 40 WGPs (for RDNA), 64 ROPs +07:28:41.818 RENDER : * core clocks 2720 MHz, memory 1124 MHz +07:28:41.818 RENDER : * TFlops 27.9, memory bandwidth (562.0 GB/s) +07:28:41.818 RENDER : AMD AGS correctly initialized +07:28:41.819 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 +07:28:41.819 RENDER : Detected output devices: +07:28:41.819 RENDER : * 1 device/s connected to AMD Radeon RX 6950 XT (RADV NAVI21): +07:28:41.819 RENDER : Generic Non-PnP Monitor (\\.\DISPLAY1), 1280x720 (offset 0x0), 30Hz +07:28:41.819 RENDER : Concurrent frames limit 2 +07:28:41.895 RENDER : DX12 device successfully created by AMD AGS library +07:28:41.895 RENDER : * user markers not supported in this version AMD SW +07:28:41.895 RENDER : Graphics device features +07:28:41.895 RENDER : Needed: +07:28:41.895 RENDER : * Highest supported shader model: 6.8 (6.0 needed) +07:28:41.895 RENDER : Optional: +07:28:41.895 RENDER : * Allow tearing (VSYNC) : 1 +07:28:41.895 RENDER : * 16 bits : 1 +07:28:41.895 RENDER : * Resource heap tier : 3 +07:28:41.895 RENDER : * Persistent heaps (DRED) : 1 +07:28:41.895 RENDER : * DRED 1.2 is supported by compiler +07:28:41.916 RENDER : Main RT format setup. +07:28:41.916 RENDER : Main RT format for quality 0 : TEXFMT_R11G11B10_FLOAT (26) +07:28:41.916 RENDER : Main RT format for quality 1 : TEXFMT_R16G16B16A16_FLOAT (10) +07:28:41.917 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=16 +07:28:41.949 PROFILING : Settings changed took: 0.018600 ms +07:28:42.970 AUDIO : Endpoint: Speakers (PulseAudio Output) +07:28:42.970 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +07:28:42.970 AUDIO : Audio client: +07:28:42.970 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +07:28:42.973 RENDER : RENDER : Reload shaders +07:28:42.973 RENDER : Enfusion shader version 13 +07:28:42.973 INIT : INIT : ShaderListReload +07:28:42.973 PROFILING : ShaderListReload took: 0.000500 ms +07:28:43.108 AUDIO : Endpoint: Speakers (PulseAudio Output) +07:28:43.108 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Avg. bytes: 384kB, Sample bits: 32, Block align: 8B +07:28:43.110 AUDIO : Audio client: +07:28:43.110 AUDIO : Format: Channels: 2, Sample rate: 48kHz, Buffer size: 1536B, Frame: 512 +07:28:43.244 RENDER : Loaded 3752 newer shader binaries +07:28:43.244 PROFILING : Reload shaders took: 271.056100 ms +07:28:43.244 ENGINE : Initializing inputs. +07:28:43.258 NETWORK : Initializing networking. +07:28:43.258 NETWORK : Using new GameRplScheduler. +07:28:43.258 SCRIPT : SCRIPT : Initializing scripts +07:28:43.258 SCRIPT : SCRIPT : ScriptProjectManager init +07:28:47.731 PROFILING : ScriptProjectManager init took: 4473.057300 ms +07:28:47.818 PROFILING : Initializing scripts took: 4559.341900 ms +07:28:47.835 ENGINE : Enfusion engine successfully created. +07:28:47.835 PROFILING : Workbench Init Engine took: 7034.354600 ms +07:28:47.835 INIT : INIT : Workbench Create Game +07:28:47.846 GUI : Using default language (en_us) +07:28:47.846 GUI : Loading 'en_us' localization file. +07:28:47.846 INIT : INIT : Loading StringTable +07:28:47.872 PROFILING : Loading StringTable took: 25.829700 ms +07:28:47.872 SCRIPT : SCRIPT : Compiling GameLib scripts +07:28:47.932 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 +07:28:47.932 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 +07:28:47.933 PROFILING : Compiling GameLib scripts took: 60.833800 ms +07:28:47.933 SCRIPT : SCRIPT : Compiling Game scripts +07:28:49.293 INIT : Workbench Create Game +07:28:49.293 SCRIPT : Compiling Game scripts +07:28:49.293 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +07:28:49.293 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +07:28:49.505 SCRIPT (W): @"Scripts/Game/ERR/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.609 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +07:28:49.648 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +07:28:49.764 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +07:28:49.765 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +07:28:49.765 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +07:28:49.765 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +07:28:49.787 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.797 SCRIPT (W): @"Scripts/Game/ERR/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +07:28:49.858 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +07:28:49.858 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +07:28:49.860 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +07:28:49.890 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.908 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.908 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.910 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +07:28:49.910 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +07:28:49.936 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.963 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +07:28:50.339 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: 90c87bba +07:28:50.347 SCRIPT : Module: Game; loaded 6499x files; 13177x classes; used 39165K 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: 5951daf3 +07:28:50.401 PROFILING : Compiling Game scripts took: 2468.031300 ms +07:28:50.408 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +07:28:50.452 ENGINE : Game successfully created. +07:28:50.453 PROFILING : Workbench Create Game took: 2618.631100 ms +07:28:50.461 DEFAULT : Using thumbnail cache directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Chat/thumbnails +07:28:51.258 INIT : INIT : Workbench Reload Game +07:28:51.260 ENGINE : Game destroyed. +07:28:51.266 GUI : Using default language (en_us) +07:28:51.266 GUI : Loading 'en_us' localization file. +07:28:51.266 INIT : INIT : Loading StringTable +07:28:51.276 PROFILING : Loading StringTable took: 9.771300 ms +07:28:51.276 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +07:28:51.283 SCRIPT : Unable to register a script command due keyword duplicity: ban +07:28:51.283 SCRIPT : Unable to register a script command due keyword duplicity: kick +07:28:51.283 ENGINE : Game successfully created. +07:28:51.283 ENGINE : Game successfully initialized. +07:28:51.283 PROFILING : Workbench Reload Game took: 24.775400 ms +07:28:51.930 WORLD : WORLD : Entities load '$ERR_Core:Worlds/ERR_Everon.ent' +07:28:52.937 PROFILING : Entities load took: 1007.055500 ms +07:28:52.946 WORLD : WORLD : CreateEntities +07:28:52.951 WORLD : WORLD : NotifyBeforeEntitiesCreated +07:28:52.951 PROFILING : NotifyBeforeEntitiesCreated took: 0.002500 ms +07:28:52.951 WORLD : WORLD : Wait for preloading data +07:28:52.951 PROFILING : Wait for preloading data took: 0.001900 ms +07:28:53.061 ENTITY : Create entity @"ENTITY:2" ('Eden', GenericTerrainEntity) at <0.000000 0.000000 0.000000> @"{5AD924374E8C7AF6}Prefabs/World/Game/Eden/GenericTerrain_Eden.et" +07:28:53.061 PROFILING : PROFILING : Terrain load +07:28:55.021 PROFILING : Terrain load took: 1960.263000 ms +07:28:58.690 WORLD : CreateEntities +07:28:58.690 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" +07:28:58.690 ENTITY : CreateComponent 'ScriptedRadioComponent' +07:28:58.690 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +07:29:08.632 WORLD : WORLD : NotifyBeforeEntitiesInitialized +07:29:08.632 PROFILING : NotifyBeforeEntitiesInitialized took: 0.005100 ms +07:29:09.015 WORLD : WORLD : NotifyEntitiesInitialized +07:29:09.015 TERRAIN : TERRAIN : Initializing road networks... +07:29:09.017 PROFILING : Initializing road networks... took: 2.097600 ms +07:29:09.017 PROFILING : NotifyEntitiesInitialized took: 2.349400 ms +07:29:09.017 PROFILING : CreateEntities took: 16070.642400 ms +07:29:09.215 PROFILING : * WorldEditor: LoadWorld: 17289.519300 ms +07:29:10.734 TERRAIN : Loading tile map config (worlds/Eden/Eden/tileMap.conf) +07:29:10.734 TERRAIN : Loading minimap config (worlds/Eden/Eden/miniMap.conf) +07:29:10.736 TERRAIN : The default minimap texture ('worlds/Eden/EdenRasterized.edds') not found. Trying 'worlds/Eden/Eden.edds'... +07:29:10.736 TERRAIN : The default minimap texture ('worlds/Eden/Eden.edds') not found. Skipping... +07:29:10.824 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +07:29:10.852 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +07:29:10.872 BACKEND : Attempting online Game Config instead. +07:29:13.297 INIT : INIT : Workbench Reload Game +07:29:13.299 ENGINE : Game destroyed. +07:29:13.305 GUI : Using default language (en_us) +07:29:13.305 GUI : Loading 'en_us' localization file. +07:29:13.305 INIT : INIT : Loading StringTable +07:29:13.325 PROFILING : Loading StringTable took: 19.544900 ms +07:29:13.325 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC. +07:29:13.332 SCRIPT : Unable to register a script command due keyword duplicity: ban +07:29:13.332 SCRIPT : Unable to register a script command due keyword duplicity: kick +07:29:13.332 ENGINE : Game successfully created. +07:29:13.332 ENGINE : Game successfully initialized. +07:29:13.332 PROFILING : Workbench Reload Game took: 35.143600 ms +07:29:13.334 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +07:29:13.379 PLATFORM : Save data from container 'settings' have been loaded +07:29:13.469 PLATFORM : Save data from container 'sessions' have been loaded +07:29:13.566 DEFAULT : [SaveGameManager] Starting new playthrough nr.0 '' for mission '{B6C516F86302C679}Worlds/ERR_Everon.ent'. +07:29:13.573 WORLD : WORLD : Game::LoadEntities +07:29:13.573 WORLD : WORLD : Initializing world systems @"{1C60D2EDA2B468B8}Configs/Systems/BaseGameModeSystems.conf" +07:29:13.574 NETWORK : Enabled lag compensation, 29 frames with 100 FPS and 280 ms rewind limits. +07:29:13.574 WORLD : WORLD : CreateEntities +07:29:13.574 WORLD : WORLD : CreateEntities +07:29:13.574 WORLD : WORLD : NotifyBeforeEntitiesCreated +07:29:13.589 RESOURCES : Loaded mission headers from 13 addon(s)! +07:29:13.589 PROFILING : NotifyBeforeEntitiesCreated took: 15.218300 ms +07:29:13.589 WORLD : WORLD : Wait for preloading data +07:29:13.589 PROFILING : Wait for preloading data took: 0.000400 ms +07:29:17.468 WORLD : Game::LoadEntities +07:29:17.468 WORLD : CreateEntities +07:29:17.468 WORLD : CreateEntities +07:29:17.468 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" +07:29:17.468 ENTITY : CreateComponent 'ScriptedRadioComponent' +07:29:17.468 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +07:29:18.946 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +07:29:18.946 ENTITY : CreateComponent 'Hierarchy' +07:29:18.946 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>') +07:29:18.946 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +07:29:18.946 ENTITY : CreateComponent 'Hierarchy' +07:29:18.946 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>') +07:29:18.946 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +07:29:18.946 ENTITY : CreateComponent 'Hierarchy' +07:29:18.946 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>') +07:29:18.952 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +07:29:18.952 ENTITY : CreateComponent 'Hierarchy' +07:29:18.952 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>') +07:29:18.952 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +07:29:18.952 ENTITY : CreateComponent 'Hierarchy' +07:29:18.952 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>') +07:29:18.952 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +07:29:18.952 ENTITY : CreateComponent 'Hierarchy' +07:29:18.952 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>') +07:29:18.956 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +07:29:18.956 ENTITY : CreateComponent 'Hierarchy' +07:29:18.956 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>') +07:29:18.957 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +07:29:18.957 ENTITY : CreateComponent 'Hierarchy' +07:29:18.957 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>') +07:29:18.957 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +07:29:18.957 ENTITY : CreateComponent 'Hierarchy' +07:29:18.957 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>') +07:29:24.514 WORLD : WORLD : NotifyBeforeEntitiesInitialized +07:29:24.514 PROFILING : NotifyBeforeEntitiesInitialized took: 0.033700 ms +07:29:26.320 WORLD : InitEntities 'world' +07:29:26.320 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +07:29:26.320 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +07:29:26.342 WORLD : InitEntities 'world' +07:29:26.342 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +07:29:26.342 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +07:29:26.343 WORLD : WORLD : NotifyEntitiesInitialized +07:29:26.343 TERRAIN : TERRAIN : Initializing road networks... +07:29:26.348 PROFILING : Initializing road networks... took: 4.864700 ms +07:29:26.348 DEFAULT : DEFAULT : WorldVolumesCollection +07:29:26.397 PROFILING : WorldVolumesCollection took: 49.741000 ms +07:29:26.397 INIT : INIT : SoundWorldInit +07:29:26.410 PROFILING : SoundWorldInit took: 12.133300 ms +07:29:26.410 PROFILING : NotifyEntitiesInitialized took: 66.912200 ms +07:29:26.410 PROFILING : CreateEntities took: 12835.579900 ms +07:29:26.410 PROFILING : CreateEntities took: 12835.728000 ms +07:29:26.410 WORLD : WORLD : Wait for preloading data around camera +07:29:26.410 PROFILING : Wait for preloading data around camera took: 0.001200 ms +07:29:26.410 WORLD : WORLD : EOnActivate +07:29:26.440 PROFILING : EOnActivate took: 30.032200 ms +07:29:26.441 PROFILING : Game::LoadEntities took: 12867.561700 ms +07:29:26.741 DEFAULT : Entered offline game state. +07:29:30.884 SCRIPT : Map load time: 2313ms +07:29:30.884 NETWORK : Player connected: connectionID=2147483646 +07:29:30.885 NETWORK : ### Connecting player: connectionID=2147483646, Name= +07:29:30.885 NETWORK : ### Creating player: PlayerId=1, Name=jakub +07:29:30.893 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +07:29:30.893 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +07:29:30.893 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +07:29:30.893 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! +07:29:30.894 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! +07:29:30.896 SCRIPT (W): Can't open config file "" +07:29:30.902 WORLD : InitEntities 'world' +07:29:30.903 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +07:29:30.903 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +07:29:30.903 SCRIPT (W): Slot_WeaponInfo Has no Content! +07:29:30.903 SCRIPT (W): Slot_Chat Has no Content! +07:29:30.903 SCRIPT (W): Slot_VON Has no Content! +07:29:30.903 SCRIPT (W): Slot_AvailableActions Has no Content! +07:29:30.903 SCRIPT (W): Slot_Vehicle Has no Content! +07:29:30.904 SCRIPT (W): Slot_GameVersion Has no Content! +07:29:30.904 SCRIPT (W): Slot_Notifications Has no Content! +07:29:30.904 SCRIPT (W): Slot_Hints Has no Content! +07:29:30.916 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +07:29:30.916 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +07:29:30.917 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +07:29:30.917 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. +07:29:30.917 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. +07:29:30.920 NETWORK : ### Updating player: PlayerId=1, Name=jakub, rplIdentity=0xFFFFFFFE, IdentityId=00000000-0000-0000-0000-000000000000 +07:29:30.921 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +07:29:30.921 NETWORK : Players connecting: 0 +07:29:30.921 NETWORK : Players connected: 1 / 1 +07:29:30.947 DEFAULT : Using autosave directory: C:/users/steamuser/AppData/Local/Temp/Arma Reforger Workbench/Projects/ERR_Chat/autosaves +07:29:30.948 PROFILING : Workbench startup took: 51282.432200 ms +07:29:30.972 WORLD : Frame start +07:29:30.972 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +07:29:30.984 WORLD : UpdateEntities +07:29:30.984 WORLD : Frame +07:29:30.984 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +07:29:31.174 WORLD : UpdateEntities +07:29:31.174 WORLD : PostFrame +07:29:31.174 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +07:29:31.174 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +07:29:31.218 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +07:29:31.218 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +07:29:31.218 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +07:29:31.218 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +07:29:31.348 RENDER : RENDER : ObjectsHeightMap::Build +07:29:31.348 RENDER : RENDER : MeshOccupancyGridManager::GenerateAllForWorld +07:29:31.482 PROFILING : MeshOccupancyGridManager::GenerateAllForWorld took: 133.292200 ms +07:29:31.488 PROFILING : ObjectsHeightMap::Build took: 139.033500 ms +07:29:32.616 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +07:29:32.641 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +07:29:32.642 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +07:29:32.683 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +07:29:32.684 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +07:29:32.743 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +07:29:32.743 WORLD : InitEntities 'world' +07:29:32.743 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" +07:29:32.744 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") +07:29:32.746 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +07:29:32.746 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +07:29:32.760 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +07:29:32.816 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +07:29:32.816 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +07:29:32.818 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +07:29:32.818 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +07:29:32.824 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +07:29:32.825 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +07:29:32.825 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +07:29:32.826 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +07:29:32.827 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +07:29:32.827 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +07:29:32.827 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +07:29:32.827 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +07:29:32.827 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +07:29:32.827 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 +07:29:32.828 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +07:29:32.828 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +07:29:32.828 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 +07:29:32.828 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +07:29:32.828 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +07:29:32.828 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 +07:29:32.828 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:33.658 WORLD : UpdateEntities +07:29:33.658 WORLD : AfterPostSimulate +07:29:33.658 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +07:29:33.687 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:33.687 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:33.687 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:33.688 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:33.932 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.09,63.54,7499.71> up=0.995627 +07:29:33.932 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.352152 angularSpeed=0.0694946 +07:29:33.932 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:33.933 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.615,7501.98> +07:29:33.933 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.315,7501.98> terrainY=63.3152 tireTerrainGap=-0.000270844 +07:29:33.933 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.615,7501.98> radius=0.3 bottom=<7012.07,63.315,7501.98> fraction=0.453782 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.000167847 +07:29:33.933 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.5993,7497.71> +07:29:33.933 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.1493,7497.71> terrainY=64.1541 tireTerrainGap=-0.00481415 +07:29:33.934 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.5993,7497.71> radius=0.45 bottom=<7009.89,64.1493,7497.71> fraction=0.432978 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00474548 +07:29:33.934 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2635,7497.75> +07:29:33.934 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8135,7497.75> terrainY=63.8174 tireTerrainGap=-0.00381088 +07:29:33.934 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2635,7497.75> radius=0.45 bottom=<7014.43,63.8135,7497.75> fraction=0.437222 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00381088 +07:29:33.935 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:34.183 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:34.183 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:34.183 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:34.184 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:34.688 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:34.688 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:34.689 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:34.941 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.1,63.5296,7499.72> up=0.994184 +07:29:34.941 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0902349 angularSpeed=0.0380054 +07:29:34.941 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:34.942 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6171,7501.99> +07:29:34.942 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3171,7501.99> terrainY=63.3134 tireTerrainGap=0.00373077 +07:29:34.942 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6171,7501.99> radius=0.3 bottom=<7012.07,63.3171,7501.99> fraction=0.471973 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00383377 +07:29:34.942 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.93,64.6005,7497.72> +07:29:34.942 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.93,64.1505,7497.72> terrainY=64.1479 tireTerrainGap=0.00261688 +07:29:34.943 SCRIPT : ERR GEAR SUPPORT: center=<7009.93,64.6005,7497.72> radius=0.45 bottom=<7009.93,64.1505,7497.72> fraction=0.466629 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00266266 +07:29:34.943 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.47,64.2639,7497.79> +07:29:34.943 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.47,63.8139,7497.79> terrainY=63.8148 tireTerrainGap=-0.000904083 +07:29:34.943 SCRIPT : ERR GEAR SUPPORT: center=<7014.47,64.2639,7497.79> radius=0.45 bottom=<7014.47,63.8139,7497.79> fraction=0.450278 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.000938416 +07:29:34.943 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:35.197 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:35.197 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:35.197 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:35.198 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:35.449 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +07:29:35.707 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:35.708 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:35.708 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:35.958 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.12,63.5319,7499.75> up=0.993859 +07:29:35.959 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0592176 angularSpeed=0.0200635 +07:29:35.959 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:35.959 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6123,7502.02> +07:29:35.959 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3123,7502.02> terrainY=63.3111 tireTerrainGap=0.00114059 +07:29:35.960 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6123,7502.02> radius=0.3 bottom=<7012.07,63.3123,7502.02> fraction=0.459505 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.001091 +07:29:35.960 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.97,64.5934,7497.72> +07:29:35.960 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.97,64.1434,7497.72> terrainY=64.1417 tireTerrainGap=0.00169373 +07:29:35.960 SCRIPT : ERR GEAR SUPPORT: center=<7009.97,64.5934,7497.72> radius=0.45 bottom=<7009.97,64.1434,7497.72> fraction=0.462402 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00173187 +07:29:35.960 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.51,64.2601,7497.84> +07:29:35.961 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.51,63.8101,7497.84> terrainY=63.812 tireTerrainGap=-0.00190353 +07:29:35.961 SCRIPT : ERR GEAR SUPPORT: center=<7014.51,64.2601,7497.84> radius=0.45 bottom=<7014.51,63.8101,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +07:29:35.961 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:36.214 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.215 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:36.215 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.215 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.718 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:36.719 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:36.719 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.719 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.975 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993801 +07:29:36.975 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +07:29:36.975 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:36.975 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6121,7502.02> +07:29:36.975 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3121,7502.02> terrainY=63.3109 tireTerrainGap=0.00118637 +07:29:36.975 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6121,7502.02> radius=0.3 bottom=<7012.08,63.3121,7502.02> fraction=0.460061 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00121307 +07:29:36.976 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.593,7497.73> +07:29:36.976 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.143,7497.73> terrainY=64.1406 tireTerrainGap=0.00241852 +07:29:36.976 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.593,7497.73> radius=0.45 bottom=<7009.98,64.143,7497.73> fraction=0.465508 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00241089 +07:29:36.976 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2599,7497.84> +07:29:36.976 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8099,7497.84> terrainY=63.8117 tireTerrainGap=-0.00179672 +07:29:36.976 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2599,7497.84> radius=0.45 bottom=<7014.52,63.8099,7497.84> fraction=0.446389 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00179291 +07:29:36.976 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:37.226 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:37.226 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:37.227 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:37.227 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:37.732 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:37.732 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:37.732 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:37.732 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:37.984 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993801 +07:29:37.984 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +07:29:37.984 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:37.985 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6121,7502.02> +07:29:37.985 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3121,7502.02> terrainY=63.3109 tireTerrainGap=0.00118637 +07:29:37.985 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6121,7502.02> radius=0.3 bottom=<7012.08,63.3121,7502.02> fraction=0.460061 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00121307 +07:29:37.985 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.593,7497.73> +07:29:37.985 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.143,7497.73> terrainY=64.1406 tireTerrainGap=0.00241852 +07:29:37.986 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.593,7497.73> radius=0.45 bottom=<7009.98,64.143,7497.73> fraction=0.465508 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00241089 +07:29:37.986 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2599,7497.84> +07:29:37.986 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8099,7497.84> terrainY=63.8117 tireTerrainGap=-0.00179672 +07:29:37.986 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2599,7497.84> radius=0.45 bottom=<7014.52,63.8099,7497.84> fraction=0.446389 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00179291 +07:29:37.986 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:38.236 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:38.236 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:38.237 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +07:29:38.254 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +07:29:38.255 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +07:29:38.255 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +07:29:38.256 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +07:29:38.256 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +07:29:38.256 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +07:29:38.256 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +07:29:39.209 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +07:29:39.254 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.391,7158.5> +07:29:39.395 SCRIPT : ERR SMOKE PASS: new identity may enter prison +07:29:39.395 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +07:29:39.395 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +07:29:39.395 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +07:29:39.395 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +07:29:39.396 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +07:29:39.396 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +07:29:39.396 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +07:29:39.396 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +07:29:39.398 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +07:29:39.398 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +07:29:39.400 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +07:29:39.400 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +07:29:39.401 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +07:29:39.401 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +07:29:39.404 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +07:29:39.404 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +07:29:39.404 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +07:29:39.405 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +07:29:39.405 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +07:29:39.405 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +07:29:39.405 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +07:29:39.406 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +07:29:44.437 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +07:29:44.437 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +07:29:44.437 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +07:29:44.437 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +07:29:44.439 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +07:29:44.439 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +07:29:44.439 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +07:29:46.451 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +07:29:46.451 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +07:29:52.497 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +07:29:52.497 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +07:29:58.559 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +07:29:58.560 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +07:30:04.601 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +07:30:04.602 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +07:30:12.696 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +07:30:20.761 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +07:30:20.761 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +07:30:20.762 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! +07:30:24.788 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +07:30:24.788 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +07:30:24.788 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +07:30:51.519 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +07:30:51.519 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +07:30:51.519 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +07:30:51.520 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +07:30:51.608 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +07:30:51.610 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +07:30:51.610 SCRIPT (W): Slot_Chat Has no Content! +07:30:51.610 SCRIPT (W): Slot_VON Has no Content! +07:30:51.610 SCRIPT (W): Slot_GameVersion Has no Content! +07:30:51.610 SCRIPT (W): Slot_Notifications Has no Content! +07:30:53.658 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +07:30:53.659 SCRIPT : -- Stack trace -- +07:30:53.659 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +07:30:53.659 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +07:30:53.659 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +07:30:53.659 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +07:30:53.659 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +07:30:53.659 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +07:30:53.659 SCRIPT : ----------------- +07:30:53.660 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +07:30:53.660 SCRIPT : -- Stack trace -- +07:30:53.660 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +07:30:53.660 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +07:30:53.660 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +07:30:53.660 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +07:30:53.660 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +07:30:53.660 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +07:30:53.660 SCRIPT : ----------------- +07:30:53.662 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +07:30:53.662 SCRIPT (W): Slot_Chat Has no Content! +07:30:53.662 SCRIPT (W): Slot_VON Has no Content! +07:30:53.662 SCRIPT (W): Slot_GameVersion Has no Content! +07:30:53.662 SCRIPT (W): Slot_Notifications Has no Content! +07:30:55.536 RESOURCES : Screenshot saved to $logs:err-result.png diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/err-result.png b/docs/evidence/native-2026-09-20-072839-infantry-resupply/err-result.png new file mode 100644 index 0000000000000000000000000000000000000000..607702c8163c7eb1cc7e5a6f166b2e0b7bb9f5ea GIT binary patch literal 226533 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∨O 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 literal 0 HcmV?d00001 diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/error.log.txt b/docs/evidence/native-2026-09-20-072839-infantry-resupply/error.log.txt new file mode 100644 index 0000000..8a9b2a7 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/error.log.txt @@ -0,0 +1,135 @@ +--------------------------------------------- +Log Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-28-39\error.log started at 2026-09-20 07:28:41 (2026-09-20 05:28:41 UTC) + +07:28:41.595 INIT : Workbench startup +07:28:41.595 INIT : Workbench Init Engine +07:28:41.595 RESOURCES : ResourceDB: full scan +07:28:41.595 RESOURCES : processing files... +07:28:41.595 RESOURCES (W): resource not registered: @"$RHS_Core:system/thermal/thermalProfileTreeCrownDefault.conf". Setting null GUID +07:28:41.607 RESOURCES (W): resource not registered: @"$profile:rereintroduced.json". Setting null GUID +07:28:41.607 RESOURCES (W): resource not registered: @"$logs:external-addons-inputs.json". Setting null GUID +07:28:41.607 RESOURCES (W): resource not registered: @"$logs:launch-source-sha256.json". Setting null GUID +07:28:41.607 RESOURCES (W): resource not registered: @"$logs:launch-source.json". Setting null GUID +07:28:41.705 ENGINE : GameProject load +07:28:41.705 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_595F2BF2F44836FB/addon.gproj" +07:28:41.705 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource" +07:28:41.705 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_629B2BA37EFFD577/addon.gproj" +07:28:41.705 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource" +07:28:41.706 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E389BB9F58B79A6/addon.gproj" +07:28:41.706 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource" +07:28:41.706 INIT : GameProject load project data @"Z:/tmp/erri-workbench-external-profile/addons/ERRI_5E524E4FEECCA92B/addon.gproj" +07:28:41.706 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource" +07:28:49.293 INIT : Workbench Create Game +07:28:49.293 SCRIPT : Compiling Game scripts +07:28:49.293 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +07:28:49.293 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +07:28:49.505 SCRIPT (W): @"Scripts/Game/ERR/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.609 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +07:28:49.648 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +07:28:49.764 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +07:28:49.765 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +07:28:49.765 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +07:28:49.765 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +07:28:49.787 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.797 SCRIPT (W): @"Scripts/Game/ERR/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +07:28:49.858 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +07:28:49.858 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +07:28:49.860 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +07:28:49.890 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.908 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.908 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.910 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +07:28:49.910 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +07:28:49.936 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.963 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +07:28:58.690 WORLD : CreateEntities +07:28:58.690 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" +07:28:58.690 ENTITY : CreateComponent 'ScriptedRadioComponent' +07:28:58.690 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +07:29:13.334 DEFAULT (W): LogiLED: Cannot initialize! (service not running or no compatible device detected) +07:29:17.468 WORLD : Game::LoadEntities +07:29:17.468 WORLD : CreateEntities +07:29:17.468 WORLD : CreateEntities +07:29:17.468 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" +07:29:17.468 ENTITY : CreateComponent 'ScriptedRadioComponent' +07:29:17.468 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent. +07:29:18.946 ENTITY : Create entity @"ENTITY:842066" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1080.213013 10.776751 6018.347168> +07:29:18.946 ENTITY : CreateComponent 'Hierarchy' +07:29:18.946 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>') +07:29:18.946 ENTITY : Create entity @"ENTITY:842068" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1082.185913 10.778749 6018.331055> +07:29:18.946 ENTITY : CreateComponent 'Hierarchy' +07:29:18.946 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>') +07:29:18.946 ENTITY : Create entity @"ENTITY:842070" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <1084.190918 10.790751 6018.334961> +07:29:18.946 ENTITY : CreateComponent 'Hierarchy' +07:29:18.946 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>') +07:29:18.952 ENTITY : Create entity @"ENTITY:842333" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4425.594727 9.981750 11029.402344> +07:29:18.952 ENTITY : CreateComponent 'Hierarchy' +07:29:18.952 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>') +07:29:18.952 ENTITY : Create entity @"ENTITY:842335" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4426.584473 9.983749 11031.109375> +07:29:18.952 ENTITY : CreateComponent 'Hierarchy' +07:29:18.952 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>') +07:29:18.952 ENTITY : Create entity @"ENTITY:842337" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <4427.572266 9.995750 11032.853516> +07:29:18.952 ENTITY : CreateComponent 'Hierarchy' +07:29:18.952 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>') +07:29:18.956 ENTITY : Create entity @"ENTITY:842591" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.946289 10.470250 1551.986084> +07:29:18.956 ENTITY : CreateComponent 'Hierarchy' +07:29:18.956 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>') +07:29:18.957 ENTITY : Create entity @"ENTITY:842593" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10009.430664 10.472250 1550.081421> +07:29:18.957 ENTITY : CreateComponent 'Hierarchy' +07:29:18.957 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>') +07:29:18.957 ENTITY : Create entity @"ENTITY:842595" ('GameEntity','Assets/Structures/BuildingsParts/Lights/LampTower_01.xob') at <10008.926758 10.484250 1548.140869> +07:29:18.957 ENTITY : CreateComponent 'Hierarchy' +07:29:18.957 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>') +07:29:26.320 WORLD : InitEntities 'world' +07:29:26.320 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Rereintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et" +07:29:26.320 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +07:29:30.893 ENTITY : SpawnEntityPrefab @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +07:29:30.893 ENTITY : Create entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> +07:29:30.893 ENTITY : EntityPrefabUse @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +07:29:30.893 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! +07:29:30.894 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! +07:29:30.896 SCRIPT (W): Can't open config file "" +07:29:30.902 WORLD : InitEntities 'world' +07:29:30.903 ENTITY : Init entity @"ENTITY:4611686018427388381" ('SCR_PlayerController') at <0.000000 0.000000 0.000000> @"{225E51284CC95CFA}Prefabs/Characters/Core/DefaultPlayerControllerMP.et" +07:29:30.903 GUI : WidgetManager: CrateWidgets @"{3C9DCDD76AB83157}UI/layouts/HUD/HUDLayouts/HUDManager_Root.layout" +07:29:30.903 SCRIPT (W): Slot_WeaponInfo Has no Content! +07:29:30.903 SCRIPT (W): Slot_Chat Has no Content! +07:29:30.903 SCRIPT (W): Slot_VON Has no Content! +07:29:30.903 SCRIPT (W): Slot_AvailableActions Has no Content! +07:29:30.903 SCRIPT (W): Slot_Vehicle Has no Content! +07:29:30.903 SCRIPT (W): Slot_GameVersion Has no Content! +07:29:30.904 SCRIPT (W): Slot_Notifications Has no Content! +07:29:30.904 SCRIPT (W): Slot_Hints Has no Content! +07:29:30.916 ENTITY : SpawnEntityPrefab @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +07:29:30.916 ENTITY : Create entity @"ENTITY:4611686018427388384" ('SCR_EditorModeEntity') at <0.000000 0.000000 0.000000> +07:29:30.917 ENTITY : EntityPrefabUse @"{59EF8ECAE1DCD417}Prefabs/Editor/Modes/EditorModeEdit.et" +07:29:30.917 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. +07:29:30.917 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. +07:29:30.921 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +07:29:31.174 WORLD : UpdateEntities +07:29:31.174 WORLD : PostFrame +07:29:31.174 GUI : WidgetManager: CrateWidgets @"{D89BBA18F99053D6}UI/layouts/HUD/Chat/ChatHud.layout" +07:29:31.174 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +07:29:31.218 RESOURCES : GetResourceObject @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +07:29:31.218 GUI : Layout load @"{20A6917D2114E29A}UI/layouts/HUD/Hint/HintInfoDisplay.layout" +07:29:31.218 GUI : Widget prefab @"{EA1CC57D868E94F9}UI/layouts/HUD/Hint/Hint.layout" +07:29:31.218 GUI (W): Overridden prefab member (GUID: '{661AB14E0F471C66}' type: ButtonWidgetClass) no longer exists in prefab +07:29:32.743 ENTITY : SpawnEntityPrefab @"{DF5CCB7C0FF049F4}Prefabs/Vehicles/Helicopters/Mi8MT/Mi8MT_unarmed_transport.et" +07:29:32.743 WORLD : InitEntities 'world' +07:29:32.743 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" +07:29:32.744 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") +07:29:33.658 WORLD : UpdateEntities +07:29:33.658 WORLD : AfterPostSimulate +07:29:33.658 DEFAULT (W): Collider UCS_FG_DriveShaft_01 not found +07:30:51.610 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +07:30:51.610 SCRIPT (W): Slot_Chat Has no Content! +07:30:51.610 SCRIPT (W): Slot_VON Has no Content! +07:30:51.610 SCRIPT (W): Slot_GameVersion Has no Content! +07:30:51.610 SCRIPT (W): Slot_Notifications Has no Content! +07:30:53.658 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +07:30:53.660 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +07:30:53.662 GUI : WidgetManager: CrateWidgets @"{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout" +07:30:53.662 SCRIPT (W): Slot_Chat Has no Content! +07:30:53.662 SCRIPT (W): Slot_VON Has no Content! +07:30:53.662 SCRIPT (W): Slot_GameVersion Has no Content! +07:30:53.662 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/external-addons-inputs.json.txt b/docs/evidence/native-2026-09-20-072839-infantry-resupply/external-addons-inputs.json.txt new file mode 100644 index 0000000..ef8890f --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/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": [ + 47, + 916830, + 209, + 1789670354123815627, + 1789670354123815627 + ], + "sha256": "c5d88d82138bc80c95f364075c3a0fc2228f9c15c6230398f3728a13d25b418c" + }, + "addon.gproj": { + "stat": [ + 47, + 26917910, + 335, + 1789670330884205142, + 1789670353823807747 + ], + "sha256": "65197c50ff6e906a5732564e8b440d80ef1cdbcffead9eb388e1e2b56c1322bc" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917892, + 362, + 1789670307618593786, + 1789670307618593786 + ], + "sha256": "17b87e0976ac2da1032f1661a884f6d59b56c00823b2fcfdc2a698ea8bcc92cc" + }, + "data.pak": { + "stat": [ + 47, + 26917928, + 1992582478, + 1789670344310557863, + 1789670353824807774 + ], + "sha256": "e5db31f571782997640a67601ebd3bd6e6615c1548274c71b6ab0cdd794f8bf5" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917893, + 232459, + 1789670307954602617, + 1789670307954602617 + ], + "sha256": "855813254cd72dc87515f4c395e7c7defe4b145ac809a740f81c85ca546b36fe" + }, + "data001.pak": { + "stat": [ + 47, + 26917986, + 1993657251, + 1789670345496589019, + 1789670354029813158 + ], + "sha256": "2bda9c533834dfa2b8e29f4a2a905c30639dabe250554e1346cf1f5dae3f2db3" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917900, + 349870, + 1789670308754623642, + 1789670308754623642 + ], + "sha256": "d4ec79f2a5cf03dd44bcc4513199056195dfda3c7a5c6bbfd17b2c709b746cdc" + }, + "data002.pak": { + "stat": [ + 47, + 26917956, + 1992567795, + 1789670345532589964, + 1789670353970811608 + ], + "sha256": "dfbd716c2a0849910a8058b1f008b8403b8c506fe18c3168d2844383ac02988c" + }, + "data002.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917897, + 332016, + 1789670308247610318, + 1789670308247610318 + ], + "sha256": "3de05138d1d635f1ba5bcbd74a0f91028bfd59082f45c740051381bd054404b5" + }, + "data003.pak": { + "stat": [ + 47, + 26917964, + 364877149, + 1789670333444272402, + 1789670354017812842 + ], + "sha256": "6225936ebc266825bbd1c79e4e0020c9f2fb55c3d3501ed66e72d87436ccd015" + }, + "data003.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917898, + 96448, + 1789670308423614944, + 1789670308423614944 + ], + "sha256": "8ca2504191def96715ddd6ee98a8df1e3f0951e5755592801eab662657289dd0" + }, + "meta": { + "stat": [ + 47, + 911092, + 8188, + 1789670354121815574, + 1789670354121815574 + ], + "sha256": "cb4f4296d087ea5fe2e849b0fc960748bfede7ea3071eeb545bd7bd309be6bfb" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26917967, + 566987, + 1789670331096210712, + 1789670354028813131 + ], + "sha256": "e8706d6b9bb2474b65f7c588de9fcfad4516bd26dc12e7b6b687e7973a41e7a6" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 47, + 26917899, + 368, + 1789670308546618176, + 1789670308546618176 + ], + "sha256": "336f9160ad955caa88d286915195699d3ac36f3363391967a178be0fd2ccd914" + }, + "thumbnail.png": { + "stat": [ + 47, + 26917907, + 18180, + 1789670330627887201, + 1789670353823807747 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 910012, + 2789, + 1789670389999757705, + 1789670389999757705 + ], + "sha256": "0432a068d8d77e34afd10432d1459df1334238e1ec416c896f13b84bae5a3ac5" + }, + "addon.gproj": { + "stat": [ + 47, + 26919135, + 1100, + 1789670379744488450, + 1789670389873754397 + ], + "sha256": "1b83e9df126db639cfcdb6d5119e65a1581c028becd6c09998143ed527ad0721" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919120, + 364, + 1789670378419453659, + 1789670378419453659 + ], + "sha256": "d232c4cfc959267482bbf261eb2e5121c76b6bf7d8893c58c520a763df5ca5f8" + }, + "data.pak": { + "stat": [ + 47, + 26919141, + 203378761, + 1789670389138735100, + 1789670389946756313 + ], + "sha256": "985d0cde7b09ee860086cb386cf624fcfd94b5e82b26af0b33bab83f21d06988" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919122, + 1409173, + 1789670378781463164, + 1789670378781463164 + ], + "sha256": "041c8ebdf035c69aed7c04bb55be839fbdbd7bc8501862dd4939c1d71cdfe8c5" + }, + "meta": { + "stat": [ + 47, + 902077, + 12209, + 1789670389989757443, + 1789670389989757443 + ], + "sha256": "1b62c97002078af393f23508c3b03cfe22f590130345ac44926b06940f27f269" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26919132, + 823768, + 1789670379822490498, + 1789670389872754371 + ], + "sha256": "25f6405084fd228ff400868b21f033c4c43d44162ce73de562e06d8003b94a49" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919119, + 368, + 1789670378283450088, + 1789670378283450088 + ], + "sha256": "986f0280a79b0e4ff6d9a3ad60570bebd86ce68869c9f3d5954141f7d5060cb1" + }, + "thumbnail.png": { + "stat": [ + 47, + 26919138, + 18180, + 1789670379618193709, + 1789670389873754397 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 919166, + 197, + 1789670369327462097, + 1789670369327462097 + ], + "sha256": "4bcd7610056ed1d366e9b6d0600e80c622a1af35caecf5c9ecf2c7b9e2b626f7" + }, + "addon.gproj": { + "stat": [ + 47, + 26918585, + 2957, + 1789670367793432952, + 1789670369299906650 + ], + "sha256": "2db2e318e6f45bede0d1173d77af03314f888aedfb31bc767d569ccfb6e70a34" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 47, + 26918576, + 364, + 1789670367178158473, + 1789670367178158473 + ], + "sha256": "67d15a8e8623130546332c6d6433314cbdf38e034a66330b9c7a739a94731e21" + }, + "data.pak": { + "stat": [ + 47, + 26918592, + 43626712, + 1789670369105209079, + 1789670369315214594 + ], + "sha256": "80e9810c9b7c873187660d0ddf002a63d1a382e81fc3611baa0ae8fdfff29d3d" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 47, + 26918578, + 66352, + 1789670367560168505, + 1789670367560168505 + ], + "sha256": "6635291a1f1aa9cffdb844e241c36cdc04114574279bab66e21613410f5e5686" + }, + "meta": { + "stat": [ + 47, + 918678, + 2338, + 1789670369325214856, + 1789670369325214856 + ], + "sha256": "dd1c683c086efb292e6cc927bd6522a1ea97ebd454e8148356f66554ebcdd4dc" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26918588, + 44111, + 1789670367937178405, + 1789670369300214199 + ], + "sha256": "c4293fef30948a3538751533cc52c9ce449ffada931b47a8fdf1ca48c1618e75" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 47, + 26918577, + 366, + 1789670367326162360, + 1789670367326162360 + ], + "sha256": "df8cd07ff81263e4108688883b9f20568041f067dbad74402464ec2f88432b69" + }, + "thumbnail.png": { + "stat": [ + 47, + 26918582, + 689401, + 1789670367794174651, + 1789670369299906650 + ], + "sha256": "8da2e133303f21bb16a2abd25d5bd6c2a4a6f5eccedae74a98358db485a170d1" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 918673, + 193, + 1789670366131482045, + 1789670366131482045 + ], + "sha256": "92ff4ae6fec8afc679726186f424bb31c9918d182f321afca4696654844e39c7" + }, + "addon.gproj": { + "stat": [ + 47, + 26918544, + 2900, + 1789670364825147789, + 1789670366119130662 + ], + "sha256": "ad44151140adf62e99eaa639984c2b9c400be17481e934186d61c307b5221259" + }, + "addon.gproj_8.2.0_manifest.json": { + "stat": [ + 47, + 26918530, + 364, + 1789670364263081920, + 1789670364263081920 + ], + "sha256": "3065c7c353cb7623ee85f83d462d4dac37c92efad1a0255f2661470e6cedfd0f" + }, + "data.pak": { + "stat": [ + 47, + 26918541, + 119808197, + 1789670365649118318, + 1789670366115130557 + ], + "sha256": "f715ad5fa3de788061a66a3ccd933feead5cc1631507ca63e9061049c538fab6" + }, + "data.pak_8.2.0_manifest.json": { + "stat": [ + 47, + 26918528, + 25795, + 1789670364132078479, + 1789670364132078479 + ], + "sha256": "24a7f735e55ccfacc5cdacbb39fb76a6fac294f4cdc47dca0fcb6e3f1919f1e6" + }, + "gallery0_776x436.jpg": { + "stat": [ + 47, + 23106914, + 64588, + 1788720671481676966, + 1788720671481676966 + ], + "sha256": "63649f5239059dd12234250b8c8e313b14ca134e30e4309fbd1eb45f92e77097" + }, + "gallery1_776x436.jpg": { + "stat": [ + 47, + 23106915, + 47808, + 1788720671495639547, + 1788720671495639547 + ], + "sha256": "81f89b026a1bf341f8cd3bb19facd67e8d0f56073c924e026983836fee6bfb4c" + }, + "meta": { + "stat": [ + 47, + 918496, + 2928, + 1789670366129130924, + 1789670366129130924 + ], + "sha256": "ad0f9baa154a250712c94b50c5edcb25200002bdc186d35453b5e8c32c0b6ee5" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26918535, + 16514, + 1789670364934099542, + 1789670366080129638 + ], + "sha256": "c65677e8767d92c96c6f35b482350d56e3dccfa026a3c5470b332120990f047c" + }, + "resourceDatabase.rdb_8.2.0_manifest.json": { + "stat": [ + 47, + 26918527, + 366, + 1789670364004075117, + 1789670364004075117 + ], + "sha256": "fdc44be4e1523db5965b015a7ea511623399a5fb3548aaaf8b2a4807fc6ade7d" + }, + "thumbnail.png": { + "stat": [ + 47, + 26918547, + 708338, + 1789670364826600016, + 1789670366119130662 + ], + "sha256": "103a98bf476d510ab3081abb371170ae6cf65aea65b9095636d651170a5b0038" + }, + "thumbnail.png_8.2.0_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 920134, + 197, + 1789670377639162612, + 1789670377639162612 + ], + "sha256": "8e5e6b2fe4099ca90bb4498c9479924e775ca0eac411c8230114143ff1a8297a" + }, + "addon.gproj": { + "stat": [ + 47, + 26918715, + 2926, + 1789670371305266851, + 1789670377499241577 + ], + "sha256": "e6ffcf559a2e7898848349c090300ea8eca8cb2e13ecef456a108bcc82efc8b1" + }, + "addon.gproj_8.2.1_manifest.json": { + "stat": [ + 47, + 26918707, + 364, + 1789670369590221815, + 1789670369590221815 + ], + "sha256": "ba8f2b36575408f11b2107fc4b0f9449c9dc057629ebf894c7bdbc77f53cbc1f" + }, + "data.pak": { + "stat": [ + 47, + 26918730, + 395962643, + 1789670376182394919, + 1789670377620432679 + ], + "sha256": "84a2cf01e2d17a06f8d775ca542a0cc98739f9f4b75b79826017e1387faedb18" + }, + "data.pak_8.2.1_manifest.json": { + "stat": [ + 47, + 26918711, + 214221, + 1789670370007232766, + 1789670370007232766 + ], + "sha256": "dc3ff832bce708121c61a5dfe09be8504352556c50341f9878f4b457e165ade2" + }, + "meta": { + "stat": [ + 47, + 919170, + 2504, + 1789670377637433125, + 1789670377637433125 + ], + "sha256": "2863bb2bdb586286f8aedc34d5dfb6adbdaafd5fca0f8f21136c7a5351d1ce88" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26918718, + 141469, + 1789670371389269057, + 1789670377499429501 + ], + "sha256": "7f38b7ed578b0b47864648a7b70288fe49dae4cc2556d5754377a1c28b2b6532" + }, + "resourceDatabase.rdb_8.2.1_manifest.json": { + "stat": [ + 47, + 26918708, + 368, + 1789670369714225072, + 1789670369714225072 + ], + "sha256": "2ffa1cf6f8c07600147ae779ee3be1ccec8da23cb1c10d8c73e0c5c5d3dc6d06" + }, + "thumbnail.png": { + "stat": [ + 47, + 26918721, + 689544, + 1789670371307273812, + 1789670377500429528 + ], + "sha256": "ccd771dba7f3f222e9733e688e6dd9e4c5edae2accdd80a6876241094e23f3dd" + }, + "thumbnail.png_8.2.1_manifest.json": { + "stat": [ + 47, + 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": [ + 47, + 911088, + 209, + 1789670428409812415, + 1789670428409812415 + ], + "sha256": "90353d1b4ab072f7844bf24d8066031efd69feb76ddcbf66dea34b52ddfe0a1c" + }, + "addon.gproj": { + "stat": [ + 47, + 26919414, + 336, + 1789670399470006320, + 1789670428369764835 + ], + "sha256": "6ebd73d663ed6dbf981cd8bc7d19cfd5bcd3c9dec3b9a706fa331d992ef200b4" + }, + "addon.gproj_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919383, + 362, + 1789670390797778656, + 1789670390797778656 + ], + "sha256": "72d988d5881efdf7d8781b2dc978a0243e1a3d587ced56563299855724137232" + }, + "data.pak": { + "stat": [ + 47, + 26919411, + 1992445813, + 1789670421137575039, + 1789670428335763943 + ], + "sha256": "5b28362571e396c008eb2286dc5a76b4ccf869c0a279916209fb0ef20d6b145e" + }, + "data.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919381, + 170934, + 1789670390675775453, + 1789670390675775453 + ], + "sha256": "7cde302270a1e5c3a88517ff8b08a5b50bbe63e7392434d8245542f81b0bfdf8" + }, + "data001.pak": { + "stat": [ + 47, + 26919421, + 238642257, + 1789670400589035695, + 1789670428370764861 + ], + "sha256": "fb2aecbde5668c4d431ea74d64f6d15f7a9f608fefe01838d7c85fb0c818499f" + }, + "data001.pak_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919384, + 29970, + 1789670390937782332, + 1789670390937782332 + ], + "sha256": "e6fb290c2f9d8dcd0c0ac95c3dee054377a525e00129abc766defa079385d6ea" + }, + "meta": { + "stat": [ + 47, + 910016, + 7720, + 1789670428407765832, + 1789670428407765832 + ], + "sha256": "e9ba58307cb931026c5c59654f3b4b7f92ac6e0682a1e94fd2eb1d5b75c214cf" + }, + "resourceDatabase.rdb": { + "stat": [ + 47, + 26919388, + 111601, + 1789670399484558966, + 1789670428260761974 + ], + "sha256": "736bcd2e60177e5af99d93c6b5f07ad79a950899aaca23000f33ad405cd1b74e" + }, + "resourceDatabase.rdb_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919379, + 368, + 1789670390384767813, + 1789670390384767813 + ], + "sha256": "9a4f54837a83d2acc2bdc62288b62fe7f24876a374f1270d5a5d2a497bb5de8f" + }, + "thumbnail.png": { + "stat": [ + 47, + 26919391, + 18180, + 1789670398997629625, + 1789670428260761974 + ], + "sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3" + }, + "thumbnail.png_0.16.5208_manifest.json": { + "stat": [ + 47, + 26919380, + 366, + 1789670390509771095, + 1789670390509771095 + ], + "sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255" + } + } + } +} diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/headless-launch.log.txt b/docs/evidence/native-2026-09-20-072839-infantry-resupply/headless-launch.log.txt new file mode 100644 index 0000000..afcff23 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/headless-launch.log.txt @@ -0,0 +1,150 @@ +[gamescope] [Info] console: gamescope version 3.16.28 (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.legiongos.lcd.lua' (id: 7) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/onexplayer.f1.oled.lua' (id: 8) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.lcd.lua' (id: 9) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/valve.steamdeck.oled.lua' (id: 10) +[gamescope] [Info] scriptmgr: Running script file '/usr/share/gamescope/scripts/00-gamescope/displays/zotac.zone.oled.lua' (id: 11) +[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: 157 +[gamescope] [Info] vblank: Using timerfd. +fsync: up and running. +[Gamescope WSI] No application info given. +[Gamescope WSI] Executable name: explorer.exe +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. +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: 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: 5 + layer client flags: 0x4 + server hdr output enabled: false + hdr formats exposed to client: false +[Gamescope WSI] Creating Gamescope surface: xid: 0x1a0039a +[Gamescope WSI] Atom of T was wrong type. Expected XCB_ATOM_CARDINAL. +[Gamescope WSI] Made gamescope surface for xid: 0x1a0039a +[Gamescope WSI] Surface state: + steam app id: 1874910 + window xid: 0x1a0039a + wayland surface res id: 10 + layer client flags: 0x4 + server hdr output enabled: false + hdr formats exposed to client: false +[Gamescope WSI] Creating swapchain for xid: 0x1a0039a - 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: 0x1a0039a swapchain: 0x555566101c70 - imageCount: 4 +[Gamescope WSI] Destroying swapchain: 0x555566101c70 +[Gamescope WSI] Destroyed swapchain: 0x555566101c70 +[Gamescope WSI] Creating swapchain for xid: 0x1a0039a - 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: 0x1a0039a swapchain: 0x555566101c70 - imageCount: 4 +[Gamescope WSI] Destroying swapchain: 0x555566101c70 +[Gamescope WSI] Destroyed swapchain: 0x555566101c70 +[Gamescope WSI] Creating swapchain for xid: 0x1a0039a - 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: 0x1a0039a swapchain: 0x555566101c70 - imageCount: 4 +[gamescope] [Info] launch: Primary child shut down! diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/launch-source-sha256.json b/docs/evidence/native-2026-09-20-072839-infantry-resupply/launch-source-sha256.json new file mode 100644 index 0000000..4edc5b1 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/launch-source-sha256.json @@ -0,0 +1,256 @@ +{ + "addons/ai/Prefabs/ERR/ConvoyCrew.et": "434d9bef9a9fcf0376604a9fbd547204cc544f5ed1a5b75228245151f02323ab", + "addons/ai/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/ai/Prefabs/ERR/MortarCrew.et": "05d3e7353ff9fe5523218a1487b31b7b742b0be8adbcb060c7099978cf008bce", + "addons/ai/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/ai/Scripts/Game/ERR/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/ai/Scripts/Game/ERR/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c": "f269fc84210c67c6b0a9edb76c23a945207f0e8c19884852df5e44cea77d7a45", + "addons/ai/Scripts/Game/ERR/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/ai/Scripts/Game/ERR/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/ai/Scripts/Game/ERR/ERR_HQ.c": "42a9a2d5a76e7aac94951cc5517c3e9535a39aadea3b310d0bbeecbd7fa9dbb8", + "addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c": "76a23520cc517f4e78f4bee0893b04c0281e5ace443ba51dcf9e0180154a06ac", + "addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/ai/Scripts/Game/ERR/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/ai/Scripts/Game/ERR/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/ai/Scripts/Game/ERR/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/ai/Scripts/Game/ERR/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/ai/Scripts/Game/ERR/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/ai/Scripts/Game/ERR/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c": "cae87b2d397042c597415e4b99796f99c2f8dca0da4316da5e38afceadf377ff", + "addons/ai/Scripts/Game/ERR/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/ai/Scripts/Game/ERR/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/ai/Scripts/Game/ERR/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/ai/Scripts/Game/ERR/ERR_HQTask.c": "9852bf0ccdc9d3a29597dff4b6ec68af2b7c04b29f2b74f126028da2d1e58e5e", + "addons/ai/Scripts/Game/ERR/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c": "1a66153413934a7f538d4a6c594dc3cf1e8534908f4d02fdd22e3ef2b137bbb6", + "addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c": "764fb7d6bb23861bd8586d018dd9e14384ea17679f2fd9e6e688cac2aa7b4742", + "addons/ai/Scripts/Game/ERR/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/ai/Scripts/Game/ERR/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/ai/Scripts/Game/ERR/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/ai/Scripts/Game/ERR/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/ai/Scripts/Game/ERR/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/ai/Scripts/Game/ERR/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/ai/Scripts/Game/ERR/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/ai/Scripts/Game/ERR/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/ai/Scripts/Game/ERR/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/ai/addon.gproj": "eba68a3e343deb205b01ba2b0e473deacb2b5ba21d982c601a0cdd4db78778b2", + "addons/chat/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/chat/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/chat/Scripts/Game/ERR/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/chat/Scripts/Game/ERR/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/chat/Scripts/Game/ERR/ERR_NativeConvoyProbe.c": "9832e993a1f1b5a41a53748ac15be7d9a94337c08198ec7b886687fa478459df", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQMemoryProbe.c": "26684c5026870231e39813e114d4de668072f40cd8e9ed12be2b0e30d937257a", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/chat/Scripts/Game/ERR/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/chat/Scripts/Game/ERR/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c": "0993f8cffacb3ba96b57773d3d087bfa649e92a927dbf2ba3d2900d909f5d3c1", + "addons/chat/Scripts/Game/ERRChat/ERR_OrdinaryScenarioLaunchChat.c": "dda715c9691d366e35fa2ad5e390dee1971651f137a5a9f9aeb23dcbe53ec87e", + "addons/chat/Scripts/WorkbenchGame/ERR/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/chat/addon.gproj": "ea1587e0174cf795334d306c71d99b06797fc891427cd57b6cab6e21cf0e4e0e", + "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/Missions/ERR_Everon_Base.conf": "1e6a0e9a756d15495201f71121626890f01efe6b00154c561672d4ec157960bd", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "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/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/Scripts/Game/ERR/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/ERR_AdminService.c": "3f59fa3af151d7697dc1539a886c2ca1cfe4f68228b93d521582ec32835feddb", + "addons/core/Scripts/Game/ERR/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/ERR_EscapeGameOverScreenInfo.c": "8893b161bf168884d62f1315d3c8aa9af4ca413f621d6f8e2525bb5245d5f509", + "addons/core/Scripts/Game/ERR/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/ERR_GameMode.c": "0870b5c5aed432f9e5ee66863e361cac61a68bf9d80dc266647ab5c2f1bcdccf", + "addons/core/Scripts/Game/ERR/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/ERR_PreparationStatus.c": "1d8987d2dcc1db2a030e095b33d50f07877181037d339624156291d8317bfa5d", + "addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/ERR_Settings.c": "3a950653f09689738be09f793149873fbca1da668ad0c197ab500b23f574de3e", + "addons/core/Scripts/Game/ERR/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/ERR_SiteService.c": "a47a1ee3a62d170a06b54cce3c42fac7c3645cf6a89c827a1dfe51ae0a99ce12", + "addons/core/Scripts/Game/ERR/ERR_SpawnFinalization.c": "2e295b0f225208c5414728ba83333e5e0ab6eef3a708ce39eb1dfce5400c94c9", + "addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/GameLib/ERR/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "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/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": "4dc4e72cd2ba5fef5a35d697b911be4755e37208d539f1d1984bcbb6a9699e96", + "addons/intel/Scripts/Game/ERR/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/intel/Scripts/Game/ERR/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/intel/Scripts/Game/ERR/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/intel/Scripts/Game/ERR/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "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_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/map/Scripts/Game/ERRMap/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/map/addon.gproj": "1b371e5e01ea9fa46e76570fecb8aaa3a9298e34cba7ccca8a6bdb5ca86eb46a" +} diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/launch-source.json b/docs/evidence/native-2026-09-20-072839-infantry-resupply/launch-source.json new file mode 100644 index 0000000..891d4b7 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/launch-source.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "launch_id": "8a277db0-53c4-488a-aca8-f6dcd5fc297a", + "captured_unix": 1789882118.1999753, + "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/chat/addon.gproj", + "-addonsDir", + "Z:/home/jakub/devel/escapistsrereintroduced/addons", + "-profile", + "Z:/tmp/erri-workbench-external-profile", + "-logconsole", + "-wbModule=WorldEditor", + "-load", + "Worlds/ERR_Everon.ent", + "-plugin=ERR_ValidateWorldPlugin", + "-errPlay", + "1", + "-errSmoke", + "1", + "-errSmokeOutcome", + "hq-memory", + "-noThrow", + "-disableCrashReporter" + ], + "manifest_sha256": "6ea43200a9e7d0c5adc95c4a8d78d5e35a9b114c49dd03965e9cae930617a011" +} diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/report.json b/docs/evidence/native-2026-09-20-072839-infantry-resupply/report.json new file mode 100644 index 0000000..1a71683 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/report.json @@ -0,0 +1,14 @@ +{ + "log": "docs/evidence/native-2026-09-20-072839-infantry-resupply/console.log.txt", + "smoke_completions": 1, + "assertions_passed": 59, + "script_or_runtime_failures": [], + "engine_errors": [ + "07:28:41.705 RESOURCES (E): Wrong GUID/name for resource @\"{0AFDD005CD669892}Language/rhs_localization.st\" in property \"StringTableSource\"", + "07:28:41.705 RESOURCES (E): Wrong GUID/name for resource @\"{41FA2A08B6971D4C}Language/wcs_armament_localization.st\" in property \"StringTableSource\"", + "07:28:41.706 RESOURCES (E): Wrong GUID/name for resource @\"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st\" in property \"StringTableSource\"", + "07:28:41.706 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-072839-infantry-resupply/rereintroduced-hq.log.txt b/docs/evidence/native-2026-09-20-072839-infantry-resupply/rereintroduced-hq.log.txt new file mode 100644 index 0000000..e9cd7b3 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/rereintroduced-hq.log.txt @@ -0,0 +1,152 @@ +#1 t=6.7s M0 REGISTER group 1 [session=1789882166-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=1789882166-1] +#3 t=7.7s M0 COURIER READY trip=0 state=1 delivered=0; 12 distinct original HE shells physically confirmed in existing western cache [session=1789882166-1] +#4 t=8.7s M0 REGISTER group 2 [session=1789882166-1] +#5 t=8.7s M0 REGISTER group 3 [session=1789882166-1] +#6 t=8.7s M0 REGISTER group 4 [session=1789882166-1] +#7 t=8.7s M0 REGISTER group 5 [session=1789882166-1] +#8 t=8.7s M0 REGISTER group 6 [session=1789882166-1] +#9 t=8.7s M0 REGISTER group 7 [session=1789882166-1] +#10 t=12.9s M3 CALL unit 2 originating report; three seconds before transmission [session=1789882166-1] +#11 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789882166-1] +#12 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789882166-1] +#13 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789882166-1] +#14 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789882166-1] +#15 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789882166-1] +#16 t=13.7s M0 OPTICS physical magnified optic preserved/confirmed [session=1789882166-1] +#17 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789882166-1] +#18 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789882166-1] +#19 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789882166-1] +#20 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789882166-1] +#21 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789882166-1] +#22 t=13.7s M0 RADIO EQUIPMENT original group already equipped; no native radio request submitted [session=1789882166-1] +#23 t=14.7s M3 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=1789882166-1] +#24 t=15.7s M5 CALL unit 3 originating report; three seconds before transmission [session=1789882166-1] +#25 t=16.7s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789882166-1] +#26 t=16.7s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789882166-1] +#27 t=16.7s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789882166-1] +#28 t=16.7s M0 STINGER physical FIM-92 observed in weapon slot; no replacement will be issued [session=1789882166-1] +#29 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=1789882166-1] +#30 t=18.7s M7 STATUS REPORT status everon-extraction-1: 6 living, 6 fit, 0 confirmed losses; sampled=18689.1; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789882166-1] +#31 t=18.7s M5 CALL COMPLETE unit 3 completed originating report [session=1789882166-1] +#32 t=18.7s M5 TRANSMIT unit 3 -> HQ (long-range) [session=1789882166-1] +#33 t=18.7s M9 STATUS REPORT status formation-1: 4 living, 4 fit, 0 confirmed losses; sampled=18689.1; small-arms ammunition=596 magazine rounds, 4 chambered [session=1789882166-1] +#34 t=19.7s M10 STATUS REPORT status everon-supply-2: 6 living, 6 fit, 0 confirmed losses; sampled=19688.4; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789882166-1] +#35 t=19.7s M7 CALL unit 5 originating report; three seconds before transmission [session=1789882166-1] +#36 t=19.7s M9 CALL unit 1 originating report; three seconds before transmission [session=1789882166-1] +#37 t=20.7s M11 STATUS REPORT status everon-outpost-1: 6 living, 6 fit, 0 confirmed losses; sampled=20690.2; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789882166-1] +#38 t=20.7s M10 CALL unit 6 originating report; three seconds before transmission [session=1789882166-1] +#39 t=20.7s M5 RECEIVE HQ received from unit 3 [session=1789882166-1] +#40 t=20.7s M5 BELIEF delivered report M5 retained; tracks=1 [session=1789882166-1] +#41 t=20.7s M12 STATUS REPORT status everon-prison-1: 6 living, 6 fit, 0 confirmed losses; sampled=20690.2; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789882166-1] +#42 t=21.7s M11 CALL unit 7 originating report; three seconds before transmission [session=1789882166-1] +#43 t=21.7s M13 CALL unit 3 originating report; three seconds before transmission [session=1789882166-1] +#44 t=21.7s M12 CALL unit 2 originating report; three seconds before transmission [session=1789882166-1] +#45 t=22.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#46 t=22.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#47 t=22.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#48 t=22.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#49 t=22.7s M7 CALL COMPLETE unit 5 completed originating report [session=1789882166-1] +#50 t=22.7s M7 TRANSMIT unit 5 -> HQ (long-range) [session=1789882166-1] +#51 t=22.7s M14 STATUS REPORT status everon-radio-1: 6 living, 6 fit, 0 confirmed losses; sampled=22698; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789882166-1] +#52 t=22.7s M9 CALL COMPLETE unit 1 completed originating report [session=1789882166-1] +#53 t=22.7s M9 TRANSMIT unit 1 -> HQ (long-range) [session=1789882166-1] +#54 t=22.7s M15 ORDER QUEUED group 7 search; belief=1 from report M5; destination=<6390,211.444,7460> [session=1789882166-1] +#55 t=23.7s M15 TRANSMIT HQ -> unit 7 (long-range) [session=1789882166-1] +#56 t=23.7s M10 CALL COMPLETE unit 6 completed originating report [session=1789882166-1] +#57 t=23.7s M10 TRANSMIT unit 6 -> HQ (long-range) [session=1789882166-1] +#58 t=23.7s M14 CALL unit 4 originating report; three seconds before transmission [session=1789882166-1] +#59 t=24.7s M11 CALL COMPLETE unit 7 completed originating report [session=1789882166-1] +#60 t=24.7s M11 TRANSMIT unit 7 -> HQ (long-range) [session=1789882166-1] +#61 t=24.7s M7 RECEIVE HQ received from unit 5 [session=1789882166-1] +#62 t=24.7s M13 CALL COMPLETE unit 3 completed originating report [session=1789882166-1] +#63 t=24.7s M13 TRANSMIT unit 3 -> HQ (long-range) [session=1789882166-1] +#64 t=24.7s M12 CALL COMPLETE unit 2 completed originating report [session=1789882166-1] +#65 t=24.7s M12 TRANSMIT unit 2 -> unit 1 (198m short-range) [session=1789882166-1] +#66 t=24.7s M9 RECEIVE HQ received from unit 1 [session=1789882166-1] +#67 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#68 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#69 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#70 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#71 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#72 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#73 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#74 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#75 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#76 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#77 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#78 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#79 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#80 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#81 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#82 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#83 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#84 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#85 t=25.7s M0 STINGER startup deadline reached; unresolved insertion quarantined for this actor [session=1789882166-1] +#86 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#87 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#88 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#89 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#90 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#91 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#92 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#93 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#94 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#95 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#96 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#97 t=25.7s M0 OPTICS startup optics deadline; compatible magnified optic not confirmed [session=1789882166-1] +#98 t=25.7s M15 RECEIVE unit 7 received from HQ [session=1789882166-1] +#99 t=25.7s M15 ORDER DELIVERED group 7 search from report M5; belief=1 destination=<6390,211.444,7460> [session=1789882166-1] +#100 t=25.7s M10 RECEIVE HQ received from unit 6 [session=1789882166-1] +#101 t=26.7s M11 RECEIVE HQ received from unit 7 [session=1789882166-1] +#102 t=26.7s M14 CALL COMPLETE unit 4 completed originating report [session=1789882166-1] +#103 t=26.7s M14 TRANSMIT unit 4 -> HQ (long-range) [session=1789882166-1] +#104 t=26.7s M13 RECEIVE HQ received from unit 3 [session=1789882166-1] +#105 t=26.7s M13 BELIEF delivered report M13 retained; tracks=1 [session=1789882166-1] +#106 t=26.7s M16 STATUS REPORT status everon-supply-1: 6 living, 6 fit, 0 confirmed losses; sampled=26709.8; small-arms ammunition=1329 magazine rounds, 6 chambered [session=1789882166-1] +#107 t=26.7s M12 RECEIVE unit 1 received from unit 2 [session=1789882166-1] +#108 t=26.7s M12 TRANSMIT unit 1 -> HQ (long-range) [session=1789882166-1] +#109 t=27.7s M17 CALL unit 5 originating report; three seconds before transmission [session=1789882166-1] +#110 t=27.7s M16 CALL unit 3 originating report; three seconds before transmission [session=1789882166-1] +#111 t=27.7s M18 ORDER QUEUED MORTAR ORDER from report M13; 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 (6s ago) [session=1789882166-1] +#112 t=27.7s M0 MORTAR COMMAND site=1 order=1 radio=M0 source=M13 position=<6000,202.788,7000>; requested rounds=8 HE radius=40m; 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 (6s ago) [session=1789882166-1] +#113 t=28.7s M14 RECEIVE HQ received from unit 4 [session=1789882166-1] +#114 t=28.7s M12 RECEIVE HQ received from unit 1 [session=1789882166-1] +#115 t=28.7s M18 TRANSMIT HQ -> unit 1 (long-range) [session=1789882166-1] +#116 t=30.7s M17 CALL COMPLETE unit 5 completed originating report [session=1789882166-1] +#117 t=30.7s M17 TRANSMIT unit 5 -> HQ (long-range) [session=1789882166-1] +#118 t=30.7s M16 CALL COMPLETE unit 3 completed originating report [session=1789882166-1] +#119 t=30.7s M16 TRANSMIT unit 3 -> HQ (long-range) [session=1789882166-1] +#120 t=30.7s M18 RECEIVE unit 1 received from HQ [session=1789882166-1] +#121 t=30.7s M18 MORTAR AIM site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; native activity created; latest source=M13 observed=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 (9s ago) [session=1789882166-1] +#122 t=31.7s M18 MORTAR ACTIVITY site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; reason=native state=1; age=1.00866s aim age=31.7266s committed=0 shots=0; previous= repeated polls omitted=0 [session=1789882166-1] +#123 t=32.7s M17 RECEIVE HQ received from unit 5 [session=1789882166-1] +#124 t=32.7s M17 AREA SWEPT group 5 reported no contact at <6414,211.444,7460>; belief=1 [session=1789882166-1] +#125 t=32.7s M16 RECEIVE HQ received from unit 3 [session=1789882166-1] +#126 t=33.5s M18 MORTAR AIM START site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; reason=solving moving intercept; latest source=M13; 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 (12s ago); previous= repeated polls omitted=0 [session=1789882166-1] +#127 t=33.5s M18 MORTAR AIM SOLUTION site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; reason=ready; predicted impact=<6538.28,166.562,7447.75> flight=18.0667s charge index=1 aim target=<6538.28,1670.48,7447.75> latest source=M13; previous= repeated polls omitted=0 [session=1789882166-1] +#128 t=33.7s M19 CALL unit 2 originating report; three seconds before transmission [session=1789882166-1] +#129 t=36.7s M19 CALL COMPLETE unit 2 completed originating report [session=1789882166-1] +#130 t=36.7s M19 TRANSMIT unit 2 -> unit 1 (191m short-range) [session=1789882166-1] +#131 t=38.8s M19 RECEIVE unit 1 received from unit 2 [session=1789882166-1] +#132 t=38.8s M19 TRANSMIT unit 1 -> HQ (long-range) [session=1789882166-1] +#133 t=40.8s M19 RECEIVE HQ received from unit 1 [session=1789882166-1] +#134 t=40.8s M19 BELIEF delivered report M19 retained; tracks=1 [session=1789882166-1] +#135 t=41.8s M20 CALL unit 2 originating report; three seconds before transmission [session=1789882166-1] +#136 t=42.8s M21 ORDER QUEUED MORTAR UPDATE from report M19; 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=1789882166-1] +#137 t=42.8s M18 MORTAR UPDATE QUEUED site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; same order; update radio=M21 newer observation=M19 observed=33549.4 [session=1789882166-1] +#138 t=43.8s M21 TRANSMIT HQ -> unit 1 (long-range) [session=1789882166-1] +#139 t=44.8s M20 CALL COMPLETE unit 2 completed originating report [session=1789882166-1] +#140 t=44.8s M20 TRANSMIT unit 2 -> unit 1 (189m short-range) [session=1789882166-1] +#141 t=45.8s M21 RECEIVE unit 1 received from HQ [session=1789882166-1] +#142 t=45.8s M18 MORTAR WITHHELD site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; reason=target update requires a different native aim command; ; previous= repeated polls omitted=0 [session=1789882166-1] +#143 t=45.8s M18 MORTAR UPDATE REJECTED site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; delivered update cannot preserve the original native aim command [session=1789882166-1] +#144 t=46.3s M18 MORTAR WITHHELD site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; reason=target update failed; order awaiting cancellation; ; previous=target update requires a different native aim command repeated polls omitted=0 [session=1789882166-1] +#145 t=46.3s M18 MORTAR SHOOT NODE site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; reason=authorization rejected; target update failed; order awaiting cancellation; ; previous= repeated polls omitted=0 [session=1789882166-1] +#146 t=46.8s M20 RECEIVE unit 1 received from unit 2 [session=1789882166-1] +#147 t=46.8s M20 TRANSMIT unit 1 -> HQ (long-range) [session=1789882166-1] +#148 t=46.8s M18 MORTAR REPEATS site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; phase=ACTIVITY reason=native state=1 repeated polls omitted=14 [session=1789882166-1] +#149 t=46.8s M18 MORTAR ORDER END site=1 order=1 radio=M18 source=M13 position=<6000,202.788,7000>; reason=native aim or firing authorization rejected observed shots=0 shell committed=0 elapsed=16.0901s last failure=target update failed; order awaiting cancellation; [session=1789882166-1] +#150 t=48.8s M20 RECEIVE HQ received from unit 1 [session=1789882166-1] +#151 t=80s M0 INFANTRY SUPPLY trip=0 state=0 moved=0 spent=0/0; service stopped; original forces and all remaining cargo retained [session=1789882166-1] +#152 t=80s M0 STOP HQ stopped; tactical orders released [session=1789882166-1] diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/runner.json.txt b/docs/evidence/native-2026-09-20-072839-infantry-resupply/runner.json.txt new file mode 100644 index 0000000..280b601 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/runner.json.txt @@ -0,0 +1,40 @@ +{ + "stopped_unix": 1789882258.5159767, + "console_sha256": "ec9f347854724005908a289f5b98a22c81eb8556fa62b26719995c45b74132f1", + "end_source_sha256": "6ea43200a9e7d0c5adc95c4a8d78d5e35a9b114c49dd03965e9cae930617a011", + "source_unchanged_after_run": true, + "source_provenance": "launch_snapshot", + "launch_id": "8a277db0-53c4-488a-aca8-f6dcd5fc297a", + "launch_source_manifest": "launch-source-sha256.json", + "launch_source_metadata": "launch-source.json", + "launch_source_sha256": "6ea43200a9e7d0c5adc95c4a8d78d5e35a9b114c49dd03965e9cae930617a011", + "external_addons_unchanged_after_run": true, + "external_addon_count": 6, + "external_addon_inputs": "external-addons-inputs.json", + "started_unix": 1789882118.2000523, + "result": "smoke-completed", + "result_before_cleanup": "smoke-completed", + "cleanup_confirmed": true, + "cleanup_report": { + "cleanup_confirmed": true, + "idle_verified": true, + "errors": [], + "orphan_cleanup": { + "attempted": true, + "report": { + "scope": "/tmp/erri-headless-compat/pfx", + "candidates": [], + "term_sent": [], + "kill_sent": [], + "cleared": true + } + } + }, + "runner_error": null, + "session": "/tmp/erri-workbench-external-profile/logs/logs_2026-09-20_07-28-39", + "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-072839-infantry-resupply/script.log.txt b/docs/evidence/native-2026-09-20-072839-infantry-resupply/script.log.txt new file mode 100644 index 0000000..1e39791 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/script.log.txt @@ -0,0 +1,319 @@ +--------------------------------------------- +Log Z:\tmp\erri-workbench-external-profile\logs\logs_2026-09-20_07-28-39\script.log started at 2026-09-20 07:28:43 (2026-09-20 05:28:43 UTC) + +07:28:43.258 SCRIPT : SCRIPT : Initializing scripts +07:28:43.258 SCRIPT : SCRIPT : ScriptProjectManager init +07:28:47.872 SCRIPT : SCRIPT : Compiling GameLib scripts +07:28:47.932 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 +07:28:47.932 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 +07:28:47.933 SCRIPT : SCRIPT : Compiling Game scripts +07:28:49.293 SCRIPT : Compiling Game scripts +07:28:49.293 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete +07:28:49.293 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete +07:28:49.505 SCRIPT (W): @"Scripts/Game/ERR/ERR_SiteService.c,201": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.609 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed +07:28:49.648 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete +07:28:49.764 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete +07:28:49.765 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete +07:28:49.765 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete +07:28:49.765 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete +07:28:49.787 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,77": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.797 SCRIPT (W): @"Scripts/Game/ERR/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead +07:28:49.858 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete +07:28:49.858 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete +07:28:49.860 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete +07:28:49.890 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c,171": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.908 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.908 SCRIPT (W): @"Scripts/Game/ERR/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.910 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api. +07:28:49.910 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api. +07:28:49.936 SCRIPT (W): @"Scripts/Game/ERR/ERR_NativeTransportProbe.c,138": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly. +07:28:49.963 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete +07:28:50.339 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: 90c87bba +07:28:50.347 SCRIPT : Module: Game; loaded 6499x files; 13177x classes; used 39165K 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: 5951daf3 +07:28:51.283 SCRIPT : Unable to register a script command due keyword duplicity: ban +07:28:51.283 SCRIPT : Unable to register a script command due keyword duplicity: kick +07:29:10.824 SCRIPT : ERR VALIDATION: prison terrain=211.344, radio terrain=159.656, extraction terrain=65.1562 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7154 y=211.531 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7157 y=211.516 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7160 y=211.5 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7163 y=211.453 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6084 z=7166 y=211.406 +07:29:10.825 SCRIPT : ERR TERRAIN: x=6087 z=7154 y=211.438 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6087 z=7157 y=211.438 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6087 z=7160 y=211.422 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6087 z=7163 y=211.391 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6087 z=7166 y=211.344 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6090 z=7154 y=211.344 +07:29:10.826 SCRIPT : ERR TERRAIN: x=6090 z=7157 y=211.344 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6090 z=7160 y=211.344 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6090 z=7163 y=211.328 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6090 z=7166 y=211.281 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7154 y=211.25 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7157 y=211.281 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7160 y=211.25 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7163 y=211.234 +07:29:10.827 SCRIPT : ERR TERRAIN: x=6093 z=7166 y=211.188 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7154 y=211.156 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7157 y=211.172 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7160 y=211.156 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7163 y=211.141 +07:29:10.828 SCRIPT : ERR TERRAIN: x=6096 z=7166 y=211.094 +07:29:10.852 SCRIPT : ERR SITE CANDIDATE: position=<6090,211.344,7160> elevationRange=0.640625 +07:29:13.332 SCRIPT : Unable to register a script command due keyword duplicity: ban +07:29:13.332 SCRIPT : Unable to register a script command due keyword duplicity: kick +07:29:26.320 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead. +07:29:26.342 SCRIPT : ERR SMOKE: scripted integration test enabled; gameplay acceptance remains separate +07:29:30.884 SCRIPT : Map load time: 2313ms +07:29:30.893 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! +07:29:30.894 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! +07:29:30.896 SCRIPT (W): Can't open config file "" +07:29:30.903 SCRIPT (W): Slot_WeaponInfo Has no Content! +07:29:30.903 SCRIPT (W): Slot_Chat Has no Content! +07:29:30.903 SCRIPT (W): Slot_VON Has no Content! +07:29:30.903 SCRIPT (W): Slot_AvailableActions Has no Content! +07:29:30.903 SCRIPT (W): Slot_Vehicle Has no Content! +07:29:30.904 SCRIPT (W): Slot_GameVersion Has no Content! +07:29:30.904 SCRIPT (W): Slot_Notifications Has no Content! +07:29:30.904 SCRIPT (W): Slot_Hints Has no Content! +07:29:30.917 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. +07:29:30.917 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. +07:29:30.921 SCRIPT (W): Ban Settings could not be loaded from BE Storage: Relying on default config +07:29:30.972 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated. +07:29:30.984 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME +07:29:31.174 SCRIPT (W): EditBoxFilterComponent used on invalid widget type. +07:29:32.616 SCRIPT : Rereintroduced [sites]: cache clearance position=<6086,211.538,7160> clear=1 +07:29:32.641 SCRIPT : Rereintroduced [sites]: authored everon-prison-1 at <6090,211.444,7160> +07:29:32.642 SCRIPT : Rereintroduced [sites]: cache clearance position=<6150,203.288,7050> clear=1 +07:29:32.683 SCRIPT : Rereintroduced [sites]: authored everon-supply-1 at <6150,203.288,7050> +07:29:32.684 SCRIPT : Rereintroduced [sites]: authored everon-radio-1 at <6500,159.756,7200> +07:29:32.746 SCRIPT : Rereintroduced [sites]: authored everon-extraction-1 at <7000,65.2562,7500> +07:29:32.746 SCRIPT : Rereintroduced [sites]: cache clearance position=<5960,220.256,7220> clear=1 +07:29:32.760 SCRIPT : Rereintroduced [sites]: transport parking=<5960,220.256,7212> radius=4 terrainRange=0.8125 obstructed=0 clear=1 +07:29:32.816 SCRIPT : Rereintroduced [sites]: authored everon-supply-2 at <5960,220.256,7220> +07:29:32.816 SCRIPT : Rereintroduced [sites]: cache clearance position=<6340,175.788,7400> clear=1 +07:29:32.818 SCRIPT : Rereintroduced [sites]: authored everon-medical-1 at <6340,175.788,7400> +07:29:32.818 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.6,7300> clear=1 +07:29:32.824 SCRIPT : Rereintroduced [sites]: cache clearance position=<6740,140.913,7296> clear=1 +07:29:32.825 SCRIPT : Rereintroduced [sites]: cache clearance position=<6736,140.975,7300> clear=1 +07:29:32.825 SCRIPT : Rereintroduced [sites]: cache clearance position=<6744,140.288,7300> clear=1 +07:29:32.826 SCRIPT : Rereintroduced [sites]: authored everon-outpost-1 at <6740,140.6,7300> +07:29:32.827 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<7012,63.725,7500> up=1 +07:29:32.827 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0 +07:29:32.827 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=10267.5 +07:29:32.827 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012,64.0216,7502.25> +07:29:32.827 SCRIPT : ERR GEAR TERRAIN: bottom=<7012,63.7216,7502.25> terrainY=63.2926 tireTerrainGap=0.428944 +07:29:32.827 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 +07:29:32.828 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.72,64.4897,7497.97> +07:29:32.828 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.72,64.0397,7497.97> terrainY=64.1655 tireTerrainGap=-0.125717 +07:29:32.828 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 +07:29:32.828 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.28,64.4898,7497.97> +07:29:32.828 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.28,64.0398,7497.97> terrainY=63.8096 tireTerrainGap=0.230156 +07:29:32.828 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 +07:29:32.828 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:32.829 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=0 conscious=0 nativeComplete=0 +07:29:33.687 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:33.687 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:33.687 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:33.688 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:33.932 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.09,63.54,7499.71> up=0.995627 +07:29:33.932 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.352152 angularSpeed=0.0694946 +07:29:33.932 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:33.933 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.615,7501.98> +07:29:33.933 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.315,7501.98> terrainY=63.3152 tireTerrainGap=-0.000270844 +07:29:33.933 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.615,7501.98> radius=0.3 bottom=<7012.07,63.315,7501.98> fraction=0.453782 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=-0.000167847 +07:29:33.933 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.89,64.5993,7497.71> +07:29:33.933 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.89,64.1493,7497.71> terrainY=64.1541 tireTerrainGap=-0.00481415 +07:29:33.934 SCRIPT : ERR GEAR SUPPORT: center=<7009.89,64.5993,7497.71> radius=0.45 bottom=<7009.89,64.1493,7497.71> fraction=0.432978 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=-0.00474548 +07:29:33.934 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.43,64.2635,7497.75> +07:29:33.934 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.43,63.8135,7497.75> terrainY=63.8174 tireTerrainGap=-0.00381088 +07:29:33.934 SCRIPT : ERR GEAR SUPPORT: center=<7014.43,64.2635,7497.75> radius=0.45 bottom=<7014.43,63.8135,7497.75> fraction=0.437222 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00381088 +07:29:33.935 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:34.183 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:34.183 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:34.183 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:34.184 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=1 conscious=1 nativeComplete=0 +07:29:34.688 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:34.688 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:34.689 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:34.941 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.1,63.5296,7499.72> up=0.994184 +07:29:34.941 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0902349 angularSpeed=0.0380054 +07:29:34.941 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:34.942 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6171,7501.99> +07:29:34.942 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3171,7501.99> terrainY=63.3134 tireTerrainGap=0.00373077 +07:29:34.942 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6171,7501.99> radius=0.3 bottom=<7012.07,63.3171,7501.99> fraction=0.471973 normal=<-0,0.990257,0.139255> self=0 dynamic=0 supported=1 gap=0.00383377 +07:29:34.942 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.93,64.6005,7497.72> +07:29:34.942 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.93,64.1505,7497.72> terrainY=64.1479 tireTerrainGap=0.00261688 +07:29:34.943 SCRIPT : ERR GEAR SUPPORT: center=<7009.93,64.6005,7497.72> radius=0.45 bottom=<7009.93,64.1505,7497.72> fraction=0.466629 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00266266 +07:29:34.943 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.47,64.2639,7497.79> +07:29:34.943 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.47,63.8139,7497.79> terrainY=63.8148 tireTerrainGap=-0.000904083 +07:29:34.943 SCRIPT : ERR GEAR SUPPORT: center=<7014.47,64.2639,7497.79> radius=0.45 bottom=<7014.47,63.8139,7497.79> fraction=0.450278 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.000938416 +07:29:34.943 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:35.197 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:35.197 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:35.197 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0 +07:29:35.198 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:35.449 SCRIPT : Rereintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake +07:29:35.707 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:35.708 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:35.708 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:35.958 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.12,63.5319,7499.75> up=0.993859 +07:29:35.959 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0592176 angularSpeed=0.0200635 +07:29:35.959 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:35.959 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.07,63.6123,7502.02> +07:29:35.959 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.07,63.3123,7502.02> terrainY=63.3111 tireTerrainGap=0.00114059 +07:29:35.960 SCRIPT : ERR GEAR SUPPORT: center=<7012.07,63.6123,7502.02> radius=0.3 bottom=<7012.07,63.3123,7502.02> fraction=0.459505 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.001091 +07:29:35.960 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.97,64.5934,7497.72> +07:29:35.960 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.97,64.1434,7497.72> terrainY=64.1417 tireTerrainGap=0.00169373 +07:29:35.960 SCRIPT : ERR GEAR SUPPORT: center=<7009.97,64.5934,7497.72> radius=0.45 bottom=<7009.97,64.1434,7497.72> fraction=0.462402 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00173187 +07:29:35.960 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.51,64.2601,7497.84> +07:29:35.961 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.51,63.8101,7497.84> terrainY=63.812 tireTerrainGap=-0.00190353 +07:29:35.961 SCRIPT : ERR GEAR SUPPORT: center=<7014.51,64.2601,7497.84> radius=0.45 bottom=<7014.51,63.8101,7497.84> fraction=0.445833 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00191498 +07:29:35.961 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:36.214 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.215 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=3 conscious=3 nativeComplete=0 +07:29:36.215 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.215 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.718 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:36.719 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:36.719 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.719 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=4 conscious=4 nativeComplete=0 +07:29:36.975 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993801 +07:29:36.975 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +07:29:36.975 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:36.975 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6121,7502.02> +07:29:36.975 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3121,7502.02> terrainY=63.3109 tireTerrainGap=0.00118637 +07:29:36.975 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6121,7502.02> radius=0.3 bottom=<7012.08,63.3121,7502.02> fraction=0.460061 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00121307 +07:29:36.976 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.593,7497.73> +07:29:36.976 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.143,7497.73> terrainY=64.1406 tireTerrainGap=0.00241852 +07:29:36.976 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.593,7497.73> radius=0.45 bottom=<7009.98,64.143,7497.73> fraction=0.465508 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00241089 +07:29:36.976 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2599,7497.84> +07:29:36.976 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8099,7497.84> terrainY=63.8117 tireTerrainGap=-0.00179672 +07:29:36.976 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2599,7497.84> radius=0.45 bottom=<7014.52,63.8099,7497.84> fraction=0.446389 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00179291 +07:29:36.976 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:37.226 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:37.226 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:37.227 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:37.227 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:37.732 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=5 conscious=5 nativeComplete=0 +07:29:37.732 SCRIPT : Rereintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:37.732 SCRIPT : Rereintroduced [guards]: initial site=everon-supply-2 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:37.732 SCRIPT : Rereintroduced [guards]: initial site=everon-outpost-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:37.984 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<7012.13,63.5271,7499.75> up=0.993801 +07:29:37.984 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=0 speed=0 angularSpeed=0 +07:29:37.984 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=10267.4 +07:29:37.985 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<7012.08,63.6121,7502.02> +07:29:37.985 SCRIPT : ERR GEAR TERRAIN: bottom=<7012.08,63.3121,7502.02> terrainY=63.3109 tireTerrainGap=0.00118637 +07:29:37.985 SCRIPT : ERR GEAR SUPPORT: center=<7012.08,63.6121,7502.02> radius=0.3 bottom=<7012.08,63.3121,7502.02> fraction=0.460061 normal=<0,0.996962,0.0778877> self=0 dynamic=0 supported=1 gap=0.00121307 +07:29:37.985 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<7009.98,64.593,7497.73> +07:29:37.985 SCRIPT : ERR GEAR TERRAIN: bottom=<7009.98,64.143,7497.73> terrainY=64.1406 tireTerrainGap=0.00241852 +07:29:37.986 SCRIPT : ERR GEAR SUPPORT: center=<7009.98,64.593,7497.73> radius=0.45 bottom=<7009.98,64.143,7497.73> fraction=0.465508 normal=<0.139105,0.989191,0.0463683> self=0 dynamic=0 supported=1 gap=0.00241089 +07:29:37.986 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<7014.52,64.2599,7497.84> +07:29:37.986 SCRIPT : ERR GEAR TERRAIN: bottom=<7014.52,63.8099,7497.84> terrainY=63.8117 tireTerrainGap=-0.00179672 +07:29:37.986 SCRIPT : ERR GEAR SUPPORT: center=<7014.52,64.2599,7497.84> radius=0.45 bottom=<7014.52,63.8099,7497.84> fraction=0.446389 normal=<0.015606,0.998782,0.0468179> self=0 dynamic=0 supported=1 gap=-0.00179291 +07:29:37.986 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1 +07:29:38.236 SCRIPT : Rereintroduced [guards]: initial site=everon-prison-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:38.236 SCRIPT : Rereintroduced [guards]: initial site=everon-radio-1 requested=6 physical=6 conscious=6 nativeComplete=1 +07:29:38.237 SCRIPT : Rereintroduced [sites]: 7 sites and 122 physical stock items ready +07:29:38.254 SCRIPT : Rereintroduced [environment]: date=authored weather=authored +07:29:38.255 SCRIPT : Rereintroduced [time]: started at 14:00 with 1x progression +07:29:38.255 SCRIPT : Rereintroduced [mission]: phase 0 -> 1 +07:29:38.256 SCRIPT : Rereintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<6090,211.444,7160> +07:29:38.256 SCRIPT : Rereintroduced [prison]: gate candidate raw= resolved={C3FDC4DBCD58C2F5}Prefabs/ERR/PrisonDoor.et lock=1 door=1 position=<6090,211.344,7154> +07:29:38.256 SCRIPT : Rereintroduced [prison]: destruction health=1000 destroyed=0 queued=0 +07:29:38.256 SCRIPT : Rereintroduced [prison]: one intact successor lock in owned prison +07:29:39.209 SCRIPT : INFO: Faction: player jakub (playerID = 1 | UUID = 00000000-0000-0000-0000-000000000000) has joined faction #AR-Faction_US (US) +07:29:39.254 SCRIPT : Rereintroduced [spawn]: player 1 at <6088.5,211.391,7158.5> +07:29:39.395 SCRIPT : ERR SMOKE PASS: new identity may enter prison +07:29:39.395 SCRIPT : ERR SMOKE PASS: spawn consumes identity life +07:29:39.395 SCRIPT : ERR SMOKE PASS: disconnect retains living actor and clears connection +07:29:39.395 SCRIPT : ERR SMOKE PASS: reconnected identity retains spent life +07:29:39.395 SCRIPT : ERR SMOKE PASS: duplicate active identity rejected +07:29:39.396 SCRIPT : ERR SMOKE PASS: recycled connection receives independent life and extraction admission policy +07:29:39.396 SCRIPT : ERR SMOKE PASS: base contracts catalog resolves hostile vanilla factions and successful preparation +07:29:39.396 SCRIPT : ERR SMOKE PASS: base contracts physical prisoner matches injected faction and resource +07:29:39.396 SCRIPT : ERR SMOKE PASS: base contracts physical guard squad comes from injected catalog +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts same-side factions rejected +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts unknown world faction rejected +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts missing prisoner resource rejected +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts isolated catalog restored without mutating live configuration +07:29:39.397 SCRIPT : ERR SMOKE PASS: base contracts unauthorized settings request rejected +07:29:39.398 SCRIPT : ERR SMOKE PASS: base contracts partially numeric input rejected without mutation +07:29:39.398 SCRIPT : ERR SMOKE PASS: base contracts out-of-range duration rejected without mutation +07:29:39.400 SCRIPT : ERR SMOKE PASS: base contracts normalized base command saves validated duration +07:29:39.400 SCRIPT : ERR SMOKE PASS: base contracts base command reads saved duration +07:29:39.401 SCRIPT : ERR SMOKE PASS: base contracts base settings listing available +07:29:39.401 SCRIPT : ERR SMOKE PASS: base contracts base mission status available before companions +07:29:39.404 SCRIPT : ERR SMOKE PASS: base contracts test setting restored +07:29:39.404 SCRIPT : ERR SMOKE PASS: companion command retained: hq interval show +07:29:39.404 SCRIPT : ERR SMOKE PASS: companion command retained: hq squads show +07:29:39.405 SCRIPT : ERR SMOKE PASS: companion command retained: hq radius show +07:29:39.405 SCRIPT : ERR SMOKE PASS: companion command retained: intel carrying show +07:29:39.405 SCRIPT : ERR SMOKE PASS: companion command retained: intel reveal show +07:29:39.405 SCRIPT : ERR SMOKE PASS: companion journal is behind Core admin authorization +07:29:39.406 SCRIPT : ERR SMOKE PASS: companion HQ status uses the shared command service +07:29:44.437 SCRIPT : ERR SMOKE PASS: HQ memory actual six site groups are registered once in the Core force ledger +07:29:44.437 SCRIPT : ERR SMOKE PASS: HQ memory detached native Core ledger registers one arithmetic fixture without spawning +07:29:44.437 SCRIPT : ERR SMOKE PASS: HQ memory detached native ledger records elimination +07:29:44.437 SCRIPT : ERR SMOKE PASS: HQ memory eliminated source re-registration cannot restore strength or spawn +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory injected value fixture begins with a detached report +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory stored snapshot ignores later input mutation +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory newer delivered-value fixture advances trajectory +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory native vector arithmetic infers six metres per second from snapshots +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory ten-minute value-clock advance retains a weaker wider belief +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory old trajectory prediction remains capped in time and distance +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory negative revision is idempotent +07:29:44.438 SCRIPT : ERR SMOKE PASS: HQ memory clear removes detached value history +07:29:44.439 SCRIPT : ERR SMOKE PASS: HQ memory queued synthetic sighting has no belief while actual transmitter starts +07:29:44.439 SCRIPT : ERR SMOKE PASS: HQ memory uplink holds original caller for three seconds before its first network hop +07:29:44.439 SCRIPT : ERR SMOKE PASS: HQ memory fixture removes actual transmitting equipment mid-uplink +07:29:46.451 SCRIPT : ERR SMOKE PASS: HQ memory original caller radio loss interrupts call before any hop +07:29:46.451 SCRIPT : ERR SMOKE PASS: HQ memory physical uplink loss prevents production Accept +07:29:52.497 SCRIPT : ERR SMOKE PASS: HQ memory delivered uplink includes originating call and physical hop latency +07:29:52.497 SCRIPT : ERR SMOKE PASS: HQ memory actual uplink delivery reaches production intake exactly once +07:29:58.559 SCRIPT : ERR SMOKE PASS: HQ memory second physical delivery extends one stable credible trajectory +07:29:58.560 SCRIPT : ERR SMOKE PASS: HQ memory synthetic completed sweep is not knowledge before radio delivery +07:30:04.601 SCRIPT : ERR SMOKE PASS: HQ memory delivered negative sweep lowers confidence without inventing a sighting +07:30:04.602 SCRIPT : ERR SMOKE PASS: HQ memory replayed completed-sweep payload cannot multiply confidence loss +07:30:12.696 SCRIPT : ERR SMOKE PASS: HQ memory fresh delivered sighting supersedes prior negative evidence +07:30:20.761 SCRIPT : ERR SMOKE PASS: HQ memory delivered old-revision sweep cannot weaken a newer sighting +07:30:20.761 SCRIPT : ERR SMOKE PASS: native HQ memory delivery and search lineage +07:30:20.762 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! +07:30:24.788 SCRIPT : ERR SMOKE PASS: native damage kills prisoner +07:30:24.788 SCRIPT : ERR SMOKE PASS: death selects spectator without another life +07:30:24.788 SCRIPT : ERR SMOKE PASS: spectator camera activates after native death +07:30:51.519 SCRIPT : Rereintroduced [mission]: phase 1 -> 6 +07:30:51.519 SCRIPT : ERR SMOKE PASS: death exhausts round life and reaches defeat after spectator grace +07:30:51.519 SCRIPT : ERR SMOKE COMPLETE: terminal=6 lostHelicopterCase=0 playerDeathCase=1 +07:30:51.520 SCRIPT : ERR SMOKE PASS: HQ memory actual command stop clears all belief history +07:30:51.608 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = POSTGAME +07:30:51.610 SCRIPT (W): Slot_Chat Has no Content! +07:30:51.610 SCRIPT (W): Slot_VON Has no Content! +07:30:51.610 SCRIPT (W): Slot_GameVersion Has no Content! +07:30:51.610 SCRIPT (W): Slot_Notifications Has no Content! +07:30:53.658 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent Back +07:30:53.659 SCRIPT : -- Stack trace -- +07:30:53.659 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +07:30:53.659 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +07:30:53.659 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 15 +07:30:53.659 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +07:30:53.659 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +07:30:53.659 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +07:30:53.659 SCRIPT : ----------------- +07:30:53.660 SCRIPT (W): SCR_ScriptedWidgetComponent.GetComponent: widget not found: SCR_InputButtonComponent ChatButton +07:30:53.660 SCRIPT : -- Stack trace -- +07:30:53.660 SCRIPT : GetComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c : 43 +07:30:53.660 SCRIPT : GetInputButtonComponent() Scripts/Game/UI/Components/WidgetLibrary/SCR_InputButton/SCR_InputButtonComponent.c : 1214 +07:30:53.660 SCRIPT : OnMenuOpen() Scripts/Game/UI/GameOverScreen/SCR_GameOverScreenInput.c : 21 +07:30:53.660 SCRIPT : OpenGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 447 +07:30:53.660 SCRIPT : ShowGameOverScreen() Scripts/Game/GameOverScreen/SCR_GameOverScreenManagerComponent.c : 177 +07:30:53.660 SCRIPT : OnUpdate() Scripts/Game/game.c : 885 +07:30:53.660 SCRIPT : ----------------- +07:30:53.662 SCRIPT (W): Slot_Chat Has no Content! +07:30:53.662 SCRIPT (W): Slot_VON Has no Content! +07:30:53.662 SCRIPT (W): Slot_GameVersion Has no Content! +07:30:53.662 SCRIPT (W): Slot_Notifications Has no Content! diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/source-provenance.json b/docs/evidence/native-2026-09-20-072839-infantry-resupply/source-provenance.json new file mode 100644 index 0000000..5fa4cc7 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/source-provenance.json @@ -0,0 +1,4 @@ +{ + "schema_version": 1, + "kind": "launch_snapshot" +} diff --git a/docs/evidence/native-2026-09-20-072839-infantry-resupply/source-sha256.json b/docs/evidence/native-2026-09-20-072839-infantry-resupply/source-sha256.json new file mode 100644 index 0000000..4edc5b1 --- /dev/null +++ b/docs/evidence/native-2026-09-20-072839-infantry-resupply/source-sha256.json @@ -0,0 +1,256 @@ +{ + "addons/ai/Prefabs/ERR/ConvoyCrew.et": "434d9bef9a9fcf0376604a9fbd547204cc544f5ed1a5b75228245151f02323ab", + "addons/ai/Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02", + "addons/ai/Prefabs/ERR/MortarCrew.et": "05d3e7353ff9fe5523218a1487b31b7b742b0be8adbcb060c7099978cf008bce", + "addons/ai/Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc", + "addons/ai/Scripts/Game/ERR/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7", + "addons/ai/Scripts/Game/ERR/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3", + "addons/ai/Scripts/Game/ERR/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511", + "addons/ai/Scripts/Game/ERR/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9", + "addons/ai/Scripts/Game/ERR/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyBudget.c": "fc1f77fd773194e3f4d591b299e4c5eae4fa9564aad32b8cec0bbb4011425c0c", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyCombat.c": "73c54fa5c6fa098798ca6adf573a113d7a9a9fa79eac88d364976638da50d4b3", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyRoadPlan.c": "ffab8d55d4120c7405b0061d005f24e81cf6fcdfa95b91febcf4994ce4412140", + "addons/ai/Scripts/Game/ERR/ERR_ConvoyService.c": "5b6e31a6072dc35af916b4897e417d53196d7fff4e1bc54ae239c3bbf5f6089b", + "addons/ai/Scripts/Game/ERR/ERR_EnemyEquipment.c": "f269fc84210c67c6b0a9edb76c23a945207f0e8c19884852df5e44cea77d7a45", + "addons/ai/Scripts/Game/ERR/ERR_EnemyOptics.c": "41571a57fbedc9f100518e6cc8f4fcd15ae669aeab2c050d1eb3e173fc6f3868", + "addons/ai/Scripts/Game/ERR/ERR_EnemyRadio.c": "d583b025275fb06419b132e93ead6a29f86389a97e8f7ae24cf62e89aef06130", + "addons/ai/Scripts/Game/ERR/ERR_HQ.c": "42a9a2d5a76e7aac94951cc5517c3e9535a39aadea3b310d0bbeecbd7fa9dbb8", + "addons/ai/Scripts/Game/ERR/ERR_HQAdminProvider.c": "76a23520cc517f4e78f4bee0893b04c0281e5ace443ba51dcf9e0180154a06ac", + "addons/ai/Scripts/Game/ERR/ERR_HQAmmoReporting.c": "7ceb17a7e619aee699a1b61ea7a4e029f07560f68b3b89dbd3b7b286fcc7d799", + "addons/ai/Scripts/Game/ERR/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca", + "addons/ai/Scripts/Game/ERR/ERR_HQBodyObserver.c": "fb2067f671ad954e957e722ef1e74786eca77760fb4f3af4d23e02e74e1bb6a5", + "addons/ai/Scripts/Game/ERR/ERR_HQCoverage.c": "1efb5e604704b3d86a4adaf30fa43d776eb0c612977e1c43ee083700562c6a0d", + "addons/ai/Scripts/Game/ERR/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273", + "addons/ai/Scripts/Game/ERR/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0", + "addons/ai/Scripts/Game/ERR/ERR_HQJournal.c": "b3e402cfe92d415f37f666045afb062e6e11670ba03a0ca6f2d9fd4fc3520ac1", + "addons/ai/Scripts/Game/ERR/ERR_HQMemory.c": "add41a17c5bbdda19ff139b4ad949740432be17e4ead8bc22833d775fc8bc857", + "addons/ai/Scripts/Game/ERR/ERR_HQNetwork.c": "cae87b2d397042c597415e4b99796f99c2f8dca0da4316da5e38afceadf377ff", + "addons/ai/Scripts/Game/ERR/ERR_HQObservation.c": "ee7d4fab38dd13644524420f20424bfe96153c20b6a5807ddbe41ecd46d7e666", + "addons/ai/Scripts/Game/ERR/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3", + "addons/ai/Scripts/Game/ERR/ERR_HQReport.c": "244e2b9b9262a5208b6d376ade5ac6f6e702a915be832df5992f742f40898b71", + "addons/ai/Scripts/Game/ERR/ERR_HQStatusSampler.c": "f5e01515b81c8793328933425e117ef4ccb52888dec464a19d041b49fb61c261", + "addons/ai/Scripts/Game/ERR/ERR_HQTask.c": "9852bf0ccdc9d3a29597dff4b6ec68af2b7c04b29f2b74f126028da2d1e58e5e", + "addons/ai/Scripts/Game/ERR/ERR_HQWatch.c": "5084254ebb006b923b296de0b8eff9769f0774a80faeb1f90cc2cda916a3782e", + "addons/ai/Scripts/Game/ERR/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762", + "addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c": "1a66153413934a7f538d4a6c594dc3cf1e8534908f4d02fdd22e3ef2b137bbb6", + "addons/ai/Scripts/Game/ERR/ERR_InfantryResupply.c": "764fb7d6bb23861bd8586d018dd9e14384ea17679f2fd9e6e688cac2aa7b4742", + "addons/ai/Scripts/Game/ERR/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649", + "addons/ai/Scripts/Game/ERR/ERR_MortarBattery.c": "a4eed96d17f239cbf353863ebe40d2282aeacd7a4d63a7b2f0ecfb3d93a2e2b2", + "addons/ai/Scripts/Game/ERR/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7", + "addons/ai/Scripts/Game/ERR/ERR_MortarFiring.c": "7aec51c83972610d1bcbca58b84b14f16f59952d402b12c3d88e7192a3e2ee90", + "addons/ai/Scripts/Game/ERR/ERR_MortarLogistics.c": "e1ffb25fba384b449de576a5502a93d875c3f52e8da1941bbf590ad9845f9730", + "addons/ai/Scripts/Game/ERR/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f", + "addons/ai/Scripts/Game/ERR/ERR_MortarReadiness.c": "2fabe8f812fd333cea7199d1eb722c807fcc5adb285c618956bd54d31fa27ce3", + "addons/ai/Scripts/Game/ERR/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4", + "addons/ai/Scripts/Game/ERR/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae", + "addons/ai/Scripts/Game/ERR/ERR_MortarSalvo.c": "697c01f479df6c505a41d984a29c02002e3052114dafa2ec6252ae55e2979a2b", + "addons/ai/Scripts/Game/ERR/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77", + "addons/ai/Scripts/Game/ERR/ERR_MortarSystem.c": "4edefc8530cc6eec7a5e1df1d0b7d56e6801186f23c61331ce0e8075b8281efb", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52", + "addons/ai/Scripts/Game/ERR/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarSalvoProbe.c": "5fd7bb8953f6850ad79e646c0c286153108a10ee2d5ef397ccb65a07f8d2ed7c", + "addons/ai/Scripts/Game/ERR/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c", + "addons/ai/Scripts/Game/ERR/ERR_NativePatrolHQProbe.c": "92efadb7a5bd9cd9f6865c764f901ae01e3776224d8b57abed648983df487b81", + "addons/ai/Scripts/Game/ERR/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b", + "addons/ai/Scripts/Game/ERR/ERR_SupportScenario.c": "71757018ec9716c4dc24f62a292a214919d3fd5daed3c16e03e56abd208e9f03", + "addons/ai/addon.gproj": "eba68a3e343deb205b01ba2b0e473deacb2b5ba21d982c601a0cdd4db78778b2", + "addons/chat/Missions/ERR_Everon.conf": "76f3ac0d21b585654beac7ddd68e3c8cbdd66dbfe909b17b04838fa813a7c29b", + "addons/chat/Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f", + "addons/chat/Scripts/Game/ERR/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0", + "addons/chat/Scripts/Game/ERR/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701", + "addons/chat/Scripts/Game/ERR/ERR_NativeConvoyProbe.c": "9832e993a1f1b5a41a53748ac15be7d9a94337c08198ec7b886687fa478459df", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQMemoryProbe.c": "26684c5026870231e39813e114d4de668072f40cd8e9ed12be2b0e30d937257a", + "addons/chat/Scripts/Game/ERR/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3", + "addons/chat/Scripts/Game/ERR/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a", + "addons/chat/Scripts/Game/ERR/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1", + "addons/chat/Scripts/Game/ERR/ERR_NativeSmoke.c": "0993f8cffacb3ba96b57773d3d087bfa649e92a927dbf2ba3d2900d909f5d3c1", + "addons/chat/Scripts/Game/ERRChat/ERR_OrdinaryScenarioLaunchChat.c": "dda715c9691d366e35fa2ad5e390dee1971651f137a5a9f9aeb23dcbe53ec87e", + "addons/chat/Scripts/WorkbenchGame/ERR/ERR_ValidateWorldPlugin.c": "81c92d408ce88cc9f98d6053f1d0c863427693ba748f00df9f1bf8079015ef94", + "addons/chat/addon.gproj": "ea1587e0174cf795334d306c71d99b06797fc891427cd57b6cab6e21cf0e4e0e", + "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/Missions/ERR_Everon_Base.conf": "1e6a0e9a756d15495201f71121626890f01efe6b00154c561672d4ec157960bd", + "addons/core/Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317", + "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/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/Scripts/Game/ERR/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6", + "addons/core/Scripts/Game/ERR/ERR_Actors.c": "a1ee932c9c0d8dda29a030e45b4ecd3ca4509bcd8500ee6e8d09a2e61341715d", + "addons/core/Scripts/Game/ERR/ERR_AdminMenu.c": "2b79df9536ceacd49d06c776300372eda4d7fda7c529a560bd8078b6660d5360", + "addons/core/Scripts/Game/ERR/ERR_AdminPlayerTools.c": "91e25c336a9e6e52a700157826f5deaf7ca39e67933a6ef6af0f5fdf81c0016e", + "addons/core/Scripts/Game/ERR/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb", + "addons/core/Scripts/Game/ERR/ERR_AdminService.c": "3f59fa3af151d7697dc1539a886c2ca1cfe4f68228b93d521582ec32835feddb", + "addons/core/Scripts/Game/ERR/ERR_AdminSession.c": "c9d7421a0e6f6f7301751f6c5ac70874022140bce2a83ff3ae1d50df86955c84", + "addons/core/Scripts/Game/ERR/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7", + "addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingService.c": "0d0fbb091c451db509edf44db6fc7e2a15c36999166ad026a9af55aef61322e6", + "addons/core/Scripts/Game/ERR/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0", + "addons/core/Scripts/Game/ERR/ERR_DiscoveryMap.c": "7553c8cc1388cca3404994e36f96946c6abd1fefb08cef2fbb3ea1a62b22861b", + "addons/core/Scripts/Game/ERR/ERR_DiscoveryService.c": "2597ca110391558f35433cb11033574308e241134ce9a8cc209fe892fd26efbd", + "addons/core/Scripts/Game/ERR/ERR_DocumentComponent.c": "17bb76b80ebd3357e46d553c44674f602c7bd6901c92aec53ac8214194aa4ff2", + "addons/core/Scripts/Game/ERR/ERR_EnvironmentService.c": "867e9f47adfb7a9819a8b58498688ff86127282cb89cf2529ae81f73e529e1c5", + "addons/core/Scripts/Game/ERR/ERR_EscapeGameOverScreenInfo.c": "8893b161bf168884d62f1315d3c8aa9af4ca413f621d6f8e2525bb5245d5f509", + "addons/core/Scripts/Game/ERR/ERR_ExtractionPlacement.c": "c30222ca25cc0e91dec4077e6b82b37a9edafcf2cbebd0be5b6bd8656b53adfe", + "addons/core/Scripts/Game/ERR/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9", + "addons/core/Scripts/Game/ERR/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e", + "addons/core/Scripts/Game/ERR/ERR_ForceLedger.c": "3858629f7fccf75c282cec725a7c0d9dd1c1095675348bb584abc947103a2872", + "addons/core/Scripts/Game/ERR/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce", + "addons/core/Scripts/Game/ERR/ERR_GameMode.c": "0870b5c5aed432f9e5ee66863e361cac61a68bf9d80dc266647ab5c2f1bcdccf", + "addons/core/Scripts/Game/ERR/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558", + "addons/core/Scripts/Game/ERR/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6", + "addons/core/Scripts/Game/ERR/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8", + "addons/core/Scripts/Game/ERR/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e", + "addons/core/Scripts/Game/ERR/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273", + "addons/core/Scripts/Game/ERR/ERR_LocalAdmission.c": "b0e824c6880cbf9b1f368dc7ada9907bde78b22b948d419b6c861323f32258be", + "addons/core/Scripts/Game/ERR/ERR_Location.c": "d2035f56ded35743312ec6ca91a67f8623a466c91255e1893c570edf0954ff24", + "addons/core/Scripts/Game/ERR/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41", + "addons/core/Scripts/Game/ERR/ERR_NativeAdminMenuProbe.c": "f30f9fa3a613923b6da2f3fcc521e5b077523042b3accbd80e4fa033be5b83ab", + "addons/core/Scripts/Game/ERR/ERR_NativeAdminSettingsProbe.c": "6a4df33a2b0e6b6aeed944c6895961e658d4f0db9aed9b8433a43a451fa35cae", + "addons/core/Scripts/Game/ERR/ERR_NativeBaseSmoke.c": "52ba1798d8593588bca80ac722e41357627cc2070c569591f60a31ca23e2f501", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36", + "addons/core/Scripts/Game/ERR/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea", + "addons/core/Scripts/Game/ERR/ERR_NativeContractsProbe.c": "d1556df885171cf967e96eef5d8981a2e9ee4e3938b7d32fdd0426f647bbabc0", + "addons/core/Scripts/Game/ERR/ERR_NativeDefinitionProbe.c": "c451b6b1f9ba2b693607307ef6ad9f0c991448d4c572c2a14b5204ad1fdc267b", + "addons/core/Scripts/Game/ERR/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f", + "addons/core/Scripts/Game/ERR/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f", + "addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentProbe.c": "8b1d110717aa5f07bfb8fe633847eab519109e3a8a4100970a487be05c053418", + "addons/core/Scripts/Game/ERR/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507", + "addons/core/Scripts/Game/ERR/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972", + "addons/core/Scripts/Game/ERR/ERR_NativeFactionCatalogProbe.c": "c04219086e58f6bf431335f1f2c45fb607f97f9429941c0223d046a8a72da3f1", + "addons/core/Scripts/Game/ERR/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d", + "addons/core/Scripts/Game/ERR/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4", + "addons/core/Scripts/Game/ERR/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514", + "addons/core/Scripts/Game/ERR/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9", + "addons/core/Scripts/Game/ERR/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115", + "addons/core/Scripts/Game/ERR/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09", + "addons/core/Scripts/Game/ERR/ERR_NativeMedicalProbe.c": "43fa51ffbcf9dd0cd8e905a1135bcf0756651da3af34677f3c92e7d264ed70b6", + "addons/core/Scripts/Game/ERR/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48", + "addons/core/Scripts/Game/ERR/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b", + "addons/core/Scripts/Game/ERR/ERR_NativePatrolProbe.c": "02bd9fdf5454db7dd4c82240efe0d947bf8d6488ace42809c3aef6505cb6266d", + "addons/core/Scripts/Game/ERR/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f", + "addons/core/Scripts/Game/ERR/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5", + "addons/core/Scripts/Game/ERR/ERR_NativePrisonBreachProbe.c": "22d0923cd69ba591e783011d424c97c86520272b70da9aa6a6d15558464c264c", + "addons/core/Scripts/Game/ERR/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86", + "addons/core/Scripts/Game/ERR/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560", + "addons/core/Scripts/Game/ERR/ERR_NativeRadioDefenceProbe.c": "cad54f0b43cefd72df74697dfc7e93725ff0acac6d311e963ce4f817428c272c", + "addons/core/Scripts/Game/ERR/ERR_NativeRecoveryProbe.c": "4de6868cd3e76afb80cf0ae5dac1e35d2c417838f640c2f18aa3343217eea2f2", + "addons/core/Scripts/Game/ERR/ERR_NativeResultProbe.c": "db239385dc705840240d02448eabc77fa41162cfade6f21a275a3404339e8a31", + "addons/core/Scripts/Game/ERR/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f", + "addons/core/Scripts/Game/ERR/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c", + "addons/core/Scripts/Game/ERR/ERR_NativeTimeProbe.c": "c93d049785971e51246fcc07cf24804270a752a655505f2c38e48c80df5255ae", + "addons/core/Scripts/Game/ERR/ERR_NativeTransportProbe.c": "0dbc545a6062854add8d0fbd68f4e59beacfad4f525818cc09627c3d0fc721ab", + "addons/core/Scripts/Game/ERR/ERR_NativeTransportSurvey.c": "3e94493bf54d15be2bceb106ad18873e14e6755af09c05f07db7fb26fb7adff5", + "addons/core/Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c": "59bbbe6ba22bd6c80c3a05e7b7b006639b192fb4b752663dde9e9211d77182a7", + "addons/core/Scripts/Game/ERR/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf", + "addons/core/Scripts/Game/ERR/ERR_ObjectiveText.c": "b1f3df17250e6ec0a476c7d795ffb2916a946408dc4f3f2ee7397564ca0ef6a8", + "addons/core/Scripts/Game/ERR/ERR_Objectives.c": "88d95a52fcba103483ea751571e1afeae0e6fc82115ed50d6fc195424726960f", + "addons/core/Scripts/Game/ERR/ERR_Observer.c": "16ab78acede9b0cab86c6a74f47ffd5b8a7c50f131f44d64a8826eac6896a279", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0", + "addons/core/Scripts/Game/ERR/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a", + "addons/core/Scripts/Game/ERR/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad", + "addons/core/Scripts/Game/ERR/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14", + "addons/core/Scripts/Game/ERR/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069", + "addons/core/Scripts/Game/ERR/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b", + "addons/core/Scripts/Game/ERR/ERR_PreparationStatus.c": "1d8987d2dcc1db2a030e095b33d50f07877181037d339624156291d8317bfa5d", + "addons/core/Scripts/Game/ERR/ERR_PrisonEscapeService.c": "ed6286342ed12cc9a3df618474f5647c7ac36bc65336be7a5bec908dee04421d", + "addons/core/Scripts/Game/ERR/ERR_RadioDefenceService.c": "5d347cf1a3b021074d560aad8db774828b797e685b63ddff3d28f55781e33ea8", + "addons/core/Scripts/Game/ERR/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db", + "addons/core/Scripts/Game/ERR/ERR_RecoveryService.c": "ba9ffb93679012c20a665636ef6b201cbe7d8d14fdf53e8cd3eb12ac7248943f", + "addons/core/Scripts/Game/ERR/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee", + "addons/core/Scripts/Game/ERR/ERR_ScenarioComponent.c": "abba03af68323d5715ba1e2497fc66f3c706e6a6a983c3a386228abdfddeec89", + "addons/core/Scripts/Game/ERR/ERR_Settings.c": "3a950653f09689738be09f793149873fbca1da668ad0c197ab500b23f574de3e", + "addons/core/Scripts/Game/ERR/ERR_SiteDefinition.c": "b422feeaca90084ea2bee5cde94dc9c6fcae542749b55d95f7226f922a6a68ac", + "addons/core/Scripts/Game/ERR/ERR_SiteDiscoveryRules.c": "50f7b3ff4f32bde37ce5ae2be7f598fc4dd8cc08f45914f6e3260d31c84baef2", + "addons/core/Scripts/Game/ERR/ERR_SiteService.c": "a47a1ee3a62d170a06b54cce3c42fac7c3645cf6a89c827a1dfe51ae0a99ce12", + "addons/core/Scripts/Game/ERR/ERR_SpawnFinalization.c": "2e295b0f225208c5414728ba83333e5e0ab6eef3a708ce39eb1dfce5400c94c9", + "addons/core/Scripts/Game/ERR/ERR_SpawnLogic.c": "b59764a8584221324995ab50b148eac1812084d79f81685edbdc24495b884760", + "addons/core/Scripts/Game/ERR/ERR_SpawnPlacement.c": "55323dcb330c23d49dc8fa3fde86a3ae3958c0b6563d6c3cd0960da88333f93d", + "addons/core/Scripts/Game/ERR/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713", + "addons/core/Scripts/Game/ERR/ERR_TimeService.c": "d9f481b7da01e08d2c982a948c18ba6bde76889d7cc9d26d510708f4ba479453", + "addons/core/Scripts/Game/ERR/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779", + "addons/core/Scripts/Game/ERR/ERR_VehicleSecurityComponent.c": "513467ab4b46d49b204cd1fb90f6d394ab92b497c64ce379ea4746906723b173", + "addons/core/Scripts/GameLib/ERR/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5", + "addons/core/Scripts/WorkbenchGame/ERR/ERR_ValidateBaseWorldPlugin.c": "7f44aa64ea7b4f8b3640a37a4b781c43bf6adb80e4a3a702d9491131698056f6", + "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/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": "4dc4e72cd2ba5fef5a35d697b911be4755e37208d539f1d1984bcbb6a9699e96", + "addons/intel/Scripts/Game/ERR/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7", + "addons/intel/Scripts/Game/ERR/ERR_IntelDiscoveryFeedback.c": "92d0a828a0fd23b41facc10daab3c4578f31733911f860b2212135462b9dd84d", + "addons/intel/Scripts/Game/ERR/ERR_IntelReroll.c": "44bd5414f9ba5e5c34fe9fb75ade36004f689cda2584a2db8b641743789c14fb", + "addons/intel/Scripts/Game/ERR/ERR_IntelService.c": "8c3244a65d8c365390900975d0a62748bc3c0d68b0b715c1093a0e33937942db", + "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_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3", + "addons/map/Scripts/Game/ERRMap/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254", + "addons/map/Scripts/Game/ERRMap/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f", + "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2", + "addons/map/UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54", + "addons/map/addon.gproj": "1b371e5e01ea9fa46e76570fecb8aaa3a9298e34cba7ccca8a6bdb5ca86eb46a" +} diff --git a/docs/hq-ammunition.md b/docs/hq-ammunition.md index 1d063c5..c0e9323 100644 --- a/docs/hq-ammunition.md +++ b/docs/hq-ammunition.md @@ -2,8 +2,8 @@ The current addition reports physical small-arms ammunition through the existing formation status uplink and lets HQ withhold a new armed infantry task when a -fresh, complete report proves the squad empty. It is not general resupply, -convoy rearming, ammunition manufacture or an urgent refill-request system. +fresh, complete report proves the squad empty. The later [infantry resupply follow-up](infantry-resupply.md) adds early low-stock +reports and a finite nearby truck rendezvous; broad resupply parity remains unfinished. A controlled native radio/inventory run is recorded below; multiplayer and resupply remain unqualified. ## What the local sampler observes @@ -40,7 +40,9 @@ small-arms muzzle is also not treated as proven empty. ## What reaches HQ The snapshot travels with the routine status report, scheduled every 180 seconds; -an HQ check-in request can make the next status due sooner. Busy radios and +an HQ check-in request can make the next status due sooner. Local scans every +30 seconds can also request low-stock status, subject to a 60-second urgent-call +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 @@ -71,11 +73,11 @@ commands still work for an empty squad. Only small-arms emptiness drives this initial decision. Launcher totals do not authorize anti-air fire or block tasks; no vehicle-weapon or mine budget is inferred. -There is no automatic low-ammunition broadcast, low-stock threshold, ammunition -transfer, refill, replacement unit or independent polling timer. Existing finite -mortar/courier logistics remain their own implemented service; this new payload -does not imply that the original broad truck/helicopter/depot supply network has -been migrated. +The [infantry supply coordinator](infantry-resupply.md) consumes delivered low-stock +reports and existing finite convoy cargo. It shares the HQ tick, creates no +replacement units or ammunition, and does not implement the original broad +truck/helicopter/depot supply network. Existing finite mortar/courier logistics +retain their own reservations and inventory. ## Validation boundary diff --git a/docs/infantry-resupply.md b/docs/infantry-resupply.md new file mode 100644 index 0000000..ece5c69 --- /dev/null +++ b/docs/infantry-resupply.md @@ -0,0 +1,27 @@ +# Finite infantry ammunition resupply + +The successor now implements a limited HQ-directed rendezvous between an existing infantry patrol and the ammunition truck of the manually dispatched convoy. This is a partial migration of the user-owned AI extension, not full resupply parity. The ordinary authenticated command remains `/esc hq convoy start`; this service does not create a convoy automatically. + +## Reports and rendezvous + +Local own-roster ammunition sampling runs about every 30 seconds when a radio and free uplink are available, with six initial phases five seconds apart. Complete small-arms stock at or below 30 magazine-plus-chamber rounds per living member can prompt an early status report, including known empty stock. This is a formation average; incomplete or unknown inventories do not establish a shortage. Any queued status imposes a 60-second urgent-call cooldown. Routine status retains its 180-second interval, while requested check-ins bypass the urgent cooldown. Contact traffic and physical negative-search rules keep their existing order after due status. + +HQ acts only on successfully delivered status. Both formations need a fresh report, at most 120 seconds old, with living and fit members; their reported positions must be within 200 metres. The recipient must be an available patrol rather than a home guard. Existing reservations, hostile perception, convoy combat, capture and ownership changes can refuse or terminate the task. Local physical checks validate execution; they do not silently update HQ's reported positions or ammunition knowledge. + +The truck receives a real radio downlink to stop. After it physically stops, its original crew is asked for a new status report. HQ waits for that report to arrive before sending the infantry a separate downlink to a rendezvous three metres from the reported position. Native move/defend waypoints then direct the existing infantry. The task expires after at most 120 seconds and cannot extend beyond 180 seconds from the demand observation. A consumed demand message is not reused; that formation has a three-minute planning cooldown. + +## Finite cargo and physical transfer + +After the convoy's single cargo-startup pass settles, the service captures the actual identities of up to 48 matching magazines already in the ammunition truck. Failed insertion, looting or subsequent loss reduces usable stock. New items added later are not adopted, and missing stock is never recreated. The service uses the original registered truck, crew, ledger records and recipient roster. + +A trip allows at most six magazine transfers, one per served soldier. The individual must still have complete local small-arms stock of at most 30 rounds, carry a compatible weapon, remain on foot and be within four metres of the stopped truck. The leaf checks actual native inventory capacity, managed storage and magazine-well compatibility. It submits one `TryMoveItemToStorage` for the exact existing magazine. Success requires **both** a completed native callback and physical proof: that identity is absent from donor inventory, present in recipient inventory and parented to the selected destination storage. + +Each magazine identity is spent before submission and never retried. The eight-second transfer deadline does not cancel an accepted native operation. Unresolved operations remain reserved after failure/Stop; a late completion does not turn a failed task into success. Cleanup removes only owned waypoints and releases reservations, retaining physical forces and remaining cargo. No magazine spawning, refilling, forced reload or actor teleportation is involved. + +## Evidence and limits + +The [current-source native HQ run](evidence/native-2026-09-20-072839-infantry-resupply/report.json) compiles the integration and completes one scripted round with 59 assertions, zero script/runtime failures, unchanged source/external inputs and confirmed hidden/muted cleanup. Four installed RHS/WCS localization errors remain, so strict qualification stays failed. The [initial compile failure](evidence/native-2026-09-20-072533-infantry-resupply-compile/report.json) is retained: splitting an overlong Enfusion condition corrected it. This fixture does not dispatch a supply convoy or prove a successful native inventory transfer. + +Actual-method tests cover the coordinator's delivered-report rules, radio transitions and cleanup, the transfer's exact identity/ownership and callback requirements, and early-report scheduling under continuous contacts. Native navigation, a full successful rendezvous/transfer, ordinary play and multiplayer still require direct evidence. There is no explicit line-of-sight/access trace: native inventory predicates and the four-metre limit do not prove unobstructed reach. This slice does not implement automatic supply dispatch, broad supply catalogs, launcher/vehicle rearming or complete original logistics behavior. + +Provenance: the authorized user-owned `escapists-ai` files `EAI_Resupply.c` (SHA-256 `dfa28d0741c5515c85a6e62bc6d1a104f5474ddc22a6e58931be1583133f3586`) and `EAI_HQStatus.c` supplied behavioral references. The successor mortar transfer supplied its physical-proof pattern; installed vanilla storage and magazine-well APIs supplied native contracts. The original protected Escapists implementation and its helpers were not imported. Related background: [HQ ammunition](hq-ammunition.md) and [finite convoys](convoy-migration.md). diff --git a/tests/test_convoy_combat.py b/tests/test_convoy_combat.py index d47fe81..04fe81c 100644 --- a/tests/test_convoy_combat.py +++ b/tests/test_convoy_combat.py @@ -52,7 +52,7 @@ struct ERR_ForceRecord{bool Physical=true,Eliminated=false;ERR_ForceKind Kind=ER struct Ledger{ERR_ForceRecord record;ERR_ForceRecord* FindGroup(Group*){return &record;}}; struct Mode{Ledger ledger;Ledger* Forces(){return &ledger;}}; struct ERR_ConvoyReceipt{bool Consumed=true;string SourceId="convoy-1";ArrayRecords{3};}; -struct ERR_ConvoyVehicle{IEntity vehicle;IEntity* Entity=&vehicle;bool Registered=true,Released=false,Arrived=false,valid=true,waypoint=true,failOrder=false;int Index=0,RouteIndex=2,clears=0,orders=0,releases=0;struct Group* Group;ArrayMembers;ERR_ConvoyCombatState state;ERR_ConvoyCombatState* Combat=&state;bool CrewValid(Mode*){return valid;}void ClearOrder(){clears++;waypoint=false;}bool Order(ERR_ForceRoute*,float){if(waypoint)return true;orders++;if(failOrder)return false;waypoint=true;return true;}void Release(Mode*){releases++;Released=true;Combat->Held=false;}}; +struct ERR_ConvoyVehicle{IEntity vehicle;IEntity* Entity=&vehicle;bool SupplyHeld=false,Registered=true,Released=false,Arrived=false,valid=true,waypoint=true,failOrder=false;int Index=0,RouteIndex=2,clears=0,orders=0,releases=0;struct Group* Group;ArrayMembers;ERR_ConvoyCombatState state;ERR_ConvoyCombatState* Combat=&state;bool CrewValid(Mode*){return valid;}void ClearOrder(){clears++;waypoint=false;}bool Order(ERR_ForceRoute*,float){if(waypoint)return true;orders++;if(failOrder)return false;waypoint=true;return true;}void Release(Mode*){releases++;Released=true;Combat->Held=false;}}; struct ERR_ConvoyTask{bool Stopped=false,Ready=true;ERR_ConvoyReceipt* Receipt;ERR_ForceRoute* Route;ArrayVehicles;}; namespace ERR_ConvoyRules{bool captured=false;bool Captured(IEntity*,Group*){return captured;}}; struct ERR_ConvoyCombatRules{'''+accept+r'''}; @@ -64,6 +64,9 @@ struct Case{Mode mode;Service service{&mode};ERR_ConvoyReceipt receipt;ERR_Force Case(){unit.Group=&group;unit.Members={&member};group.agents={&agent};task.Receipt=&receipt;task.Route=&route;task.Vehicles={&unit};service.m_Tasks={&task};command.CommandId=1;command.ReportId=10;command.SourceId=receipt.SourceId;command.Group=&group;command.Hold=true;command.ObservedAt=100;command.IssuedAt=1000;command.ExpiresAt=31000;} }; int main(){ + Case supply;assert(supply.service.ApplyCombatOrder(&supply.task,&supply.command,1000)); + supply.unit.SupplyHeld=true;supply.command.CommandId=2;supply.command.Hold=false;supply.command.IssuedAt=60100;supply.command.ExpiresAt=90100; + assert(supply.service.ApplyCombatOrder(&supply.task,&supply.command,60100));assert(!supply.unit.Combat->Held&&!supply.unit.waypoint&&supply.unit.orders==0&&supply.unit.releases==0); Case ok;assert(ok.service.ApplyCombatOrder(&ok.task,&ok.command,1000));assert(ok.unit.Combat->Held&&ok.unit.clears==1&&!ok.unit.waypoint&&ok.unit.RouteIndex==2); assert(!ok.service.ApplyCombatOrder(&ok.task,&ok.command,1001)&&ok.unit.clears==1);ok.command.CommandId=2;ok.command.ReportId=11;ok.command.ObservedAt=200; assert(ok.service.ApplyCombatOrder(&ok.task,&ok.command,1002)&&ok.unit.clears==1&&ok.unit.Combat->ReportId==11); diff --git a/tests/test_convoy_lifecycle.py b/tests/test_convoy_lifecycle.py index a30432a..98877c4 100644 --- a/tests/test_convoy_lifecycle.py +++ b/tests/test_convoy_lifecycle.py @@ -58,6 +58,10 @@ int main(){ offset.group.within=false;offset.unit.Tick(&offset.mode,&offset.route,3000);offset.unit.Tick(&offset.mode,&offset.route,4000);assert(offset.unit.RouteIndex==1&&offset.group.adds==2&&offset.group.removes==1); // A close vehicle origin alone is not the native seated-group arrival predicate. Case notNative;notNative.vehicle.position={99,0,0};notNative.unit.Tick(¬Native.mode,¬Native.route,1000);notNative.unit.Tick(¬Native.mode,¬Native.route,2000);assert(notNative.unit.RouteIndex==0&¬Native.group.adds==1); + Case supply;supply.unit.SupplyToken=100001;supply.unit.Tick(&supply.mode,&supply.route,1000);assert(supply.group.adds==1); // reservation alone does not deliver hold + supply.unit.SupplyHeld=true;supply.unit.ClearOrder();supply.group.within=true;supply.unit.Tick(&supply.mode,&supply.route,700000);assert(supply.unit.RouteIndex==0&&!supply.unit.Released&&supply.group.adds==1); + supply.unit.SupplyToken=0;supply.unit.SupplyHeld=false;supply.group.within=false;supply.unit.Tick(&supply.mode,&supply.route,701000);assert(supply.group.adds==2&&supply.unit.RouteIndex==0); + supply.unit.Release(&supply.mode);assert(supply.unit.SupplyToken==0&&!supply.unit.SupplyHeld); Case held;held.unit.Tick(&held.mode,&held.route,1000);held.unit.Combat->Held=true;held.unit.ClearOrder();held.group.within=true;assert(!held.unit.Order(&held.route,2000)&&held.group.adds==1); held.unit.Tick(&held.mode,&held.route,700000);assert(held.unit.RouteIndex==0&&held.group.adds==1&&!held.unit.Released&&!held.unit.Waypoint); held.driver.alive=false;held.unit.Tick(&held.mode,&held.route,700001);assert(held.unit.Released&&!held.unit.Combat->Held); diff --git a/tests/test_hq_ammo_reporting.py b/tests/test_hq_ammo_reporting.py new file mode 100644 index 0000000..3c29859 --- /dev/null +++ b/tests/test_hq_ammo_reporting.py @@ -0,0 +1,110 @@ +"""Actual local ammo-report policy and HQ scheduler bodies; no native inventory/radio claim.""" +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' + +def cpp(s): + s=s.replace('protected ','').replace('ERR_HQPursuitRules.', 'ERR_HQPursuitRules::').replace('string.Format','Format') + for t in ('ERR_HQStatusReport','ERR_HQAmmoSnapshot','ERR_HQUnit','ERR_HQRoute'): + s=re.sub(r'\b'+t+r' (?=\w)',t+'* ',s) + for v in ('stock','report','unit','route'): + s=s.replace(v+'.',v+'->') + return s.replace('AmmoState.','AmmoState->') +policy=cpp(P.read_text()).replace('class ERR_HQAmmoReporting','struct ERR_HQAmmoReporting').rstrip()+';' +methods='\n'.join(cpp(body(H,x)) for x in ('protected void StatusReport(', 'protected void QueueReports(')) +# The production hook must preserve the only existing delivery gate and use the policy per identity. +source=H.read_text() +assert 'unit.AmmoReporting.Initialize(unit.Id, GetGame().GetWorld().GetWorldTime());' in source +assert 'if (delivered == 1)' in source and 'm_Watch.Ingest(unit.PendingStatus, now)' in source +assert 'm_Watch' not in methods and 'm_Network.Route(unit->Radio)' in methods +run(r''' +#include +#include +#include +#include +#include +using string=std::string; +templatestring Format(T...){return "sample";} +struct ERR_HQPursuitRules{static bool Finite(float v){return std::isfinite(v)&&v>-1e20&&v<1e20;}}; +struct ERR_HQAmmoSnapshot{ + bool Complete=true;int Members=4,SmallArmsMuzzles=4,SmallArmsRounds=121,SmallArmsMagazines=4,SmallArmsChambers=0; + int LauncherRounds=0,LauncherMagazines=0,LauncherChambers=0; +'''+body(A,' bool Valid(')+r''' +}; +struct ERR_HQStatusReport{ERR_HQAmmoSnapshot* AmmoState=nullptr;int MessageId=0,Count=4,Fit=4,ConfirmedLosses=0;string SourceId="formation-1";float ObservedAt=0;}; +'''+policy+r''' +struct Sampler{int observations=0,samples=0;bool valid=true;ERR_HQAmmoSnapshot stock; + void ObserveDeaths(){observations++;} + ERR_HQStatusReport* Sample(float now,int id,void*){samples++;if(!valid)return nullptr; + auto r=new ERR_HQStatusReport;r->ObservedAt=now;r->MessageId=id;r->AmmoState=new ERR_HQAmmoSnapshot(stock);return r;}}; +struct ERR_HQRoute{int MessageId=0;string Payload;}; +struct Network{bool available=true;int routes=0;ERR_HQRoute* Route(void*){routes++;return available?new ERR_HQRoute:nullptr;}}; +struct Journal{int seq=0,writes=0;int Message(){return ++seq;}void Write(string,string,int){writes++;}}; +struct ERR_HQUnit{void* Radio=this;ERR_HQRoute* Uplink=nullptr;ERR_HQStatusReport* PendingStatus=nullptr; + float NextStatus=0;ERR_HQAmmoReporting AmmoReporting;Sampler StatusSampler;bool visible=true,contact=false,sweep=false; + ERR_HQUnit(){AmmoReporting.Initialize(6,0);}}; +struct HQ{Network m_Network;Journal m_Journal;int delivered=0; + void Observe(ERR_HQUnit* u,float){if(!u->Uplink&&u->Radio&&u->visible&&m_Network.available){u->contact=true;u->Uplink=new ERR_HQRoute;}} + void ObserveBody(ERR_HQUnit*,float){} + void Sweep(ERR_HQUnit* u,float){if(!u->Uplink&&u->Radio&&!u->visible&&m_Network.available)u->sweep=true;} +'''+methods+r''' + void Finish(ERR_HQUnit& u,bool success=true){assert(u.Uplink);if(u.PendingStatus&&success)delivered++; + u.Uplink=nullptr;u.PendingStatus=nullptr;u.contact=false;} +}; +int main(){ + // Exact inclusive threshold counts chambers, ignores launcher stock, requires the complete current living roster. + ERR_HQAmmoReporting p; p.Initialize(6,0);ERR_HQStatusReport r;ERR_HQAmmoSnapshot a;r.AmmoState=&a; + assert(!p.Urgent(&r,0));a.SmallArmsRounds=120;assert(p.Urgent(&r,0)); + a.SmallArmsRounds=119;a.SmallArmsChambers=2;assert(!p.Urgent(&r,0));a.SmallArmsChambers=1;assert(p.Urgent(&r,0)); + a.SmallArmsRounds=0;a.SmallArmsChambers=0;a.LauncherRounds=100;assert(p.Urgent(&r,0)); + a.Complete=false;assert(!p.Urgent(&r,0));a.Complete=true; + a.SmallArmsMuzzles=0;assert(!p.Urgent(&r,0));a.SmallArmsMuzzles=4; + a.Members=3;assert(!p.Urgent(&r,0));r.Count=3;assert(p.Urgent(&r,0)); + a.Members=0;r.Count=0;assert(!p.Urgent(&r,0));a.Members=33;r.Count=33;assert(!p.Urgent(&r,0)); + a.Members=4;r.Count=4;a.SmallArmsRounds=-1;assert(!p.Urgent(&r,0));a.SmallArmsRounds=0; + r.ObservedAt=1;assert(!p.Urgent(&r,0));r.ObservedAt=0;assert(!p.Urgent(&r,1)); + assert(!p.Urgent(nullptr,0));r.AmmoState=nullptr;assert(!p.Urgent(&r,0));r.AmmoState=&a; + assert(!p.Urgent(&r,std::numeric_limits::quiet_NaN())); + // Each registration phase is bounded to a 0..25 s delay. Late evaluations scan once, never catch up in bursts. + for(int id=1;id<=128;id++){ERR_HQAmmoReporting phase;phase.Initialize(id,1000);float first=1000+(id%6)*5000; + assert(!phase.ScanDue(first-1)&&phase.ScanDue(first));phase.Scanned(first); + assert(!phase.ScanDue(first+29999)&&phase.ScanDue(first+30000));phase.Scanned(first+999999); + assert(!phase.ScanDue(first+999999));} + // A fresh complete low report uses the status-first shared uplink, never immediate delivered knowledge. + HQ h;ERR_HQUnit u;u.StatusSampler.stock.SmallArmsRounds=0;u.NextStatus=180000; + h.QueueReports(&u,0);assert(u.PendingStatus&&!u.contact&&h.delivered==0&&u.PendingStatus->MessageId>0); + auto pending=u.PendingStatus;h.QueueReports(&u,1000);assert(u.PendingStatus==pending&&u.StatusSampler.samples==1); + h.Finish(u,false);assert(h.delivered==0);h.QueueReports(&u,30000);assert(u.contact&&!u.PendingStatus); + h.Finish(u);h.QueueReports(&u,60000);assert(u.PendingStatus);h.Finish(u);assert(h.delivered==1); + // Adequate/incomplete early samples consume no frame and leave room for positive contact or a quiet sweep. + HQ healthy;ERR_HQUnit good;good.NextStatus=180000; + healthy.QueueReports(&good,0);assert(good.contact&&!good.PendingStatus&&healthy.m_Journal.writes==0); + healthy.Finish(good);good.visible=false;good.StatusSampler.stock.Complete=false; + healthy.QueueReports(&good,30000);assert(good.sweep&&!good.Uplink); + // No route/radio means no snapshot or invented radio receipt. Early no-route attempts are bounded. + HQ off;ERR_HQUnit absent;absent.NextStatus=180000;off.m_Network.available=false; + off.QueueReports(&absent,0);off.QueueReports(&absent,1000);assert(off.m_Network.routes==1&&absent.StatusSampler.samples==0); + absent.Radio=nullptr;off.QueueReports(&absent,30000);assert(absent.StatusSampler.samples==0); + absent.Radio=&absent;off.m_Network.available=true;absent.StatusSampler.stock.SmallArmsRounds=0; + off.QueueReports(&absent,30000);assert(absent.PendingStatus&&off.delivered==0);off.Finish(absent); + // Requested status bypasses the urgent cooldown and scan deadline, but waits for the existing visual frame. + off.QueueReports(&absent,31000);assert(absent.contact);absent.NextStatus=32000; + off.QueueReports(&absent,32000);assert(absent.contact&&!absent.PendingStatus); + off.Finish(absent);off.QueueReports(&absent,33000);assert(absent.PendingStatus&&absent.PendingStatus->ObservedAt==33000); + // Routine unavailable route remains immediately retryable independently of bounded optional scans. + HQ routine;ERR_HQUnit late;routine.m_Network.available=false;routine.QueueReports(&late,0); + routine.m_Network.available=true;routine.QueueReports(&late,1000);assert(late.PendingStatus); + // A minute cooldown prevents persistent low stock from starving five-second contacts over six-second routes. + HQ busy;ERR_HQUnit firing;firing.StatusSampler.stock.SmallArmsRounds=0;int contacts=0,status=0;float finish=-1; + for(int now=0;now<=600000;now+=1000){ + if(firing.Uplink&&now>=finish){if(firing.PendingStatus)status++;else contacts++;busy.Finish(firing);} + bool occupied=firing.Uplink;busy.QueueReports(&firing,now);if(!occupied&&firing.Uplink)finish=now+6000; + } + assert(status==10&&contacts==90&&firing.StatusSampler.samples<=21); +} +''') +print('PASS: actual early ammunition policy and status-first shared uplink; complete threshold, phases, cooldown, failures and requested check-ins') diff --git a/tests/test_hq_convoy_combat.py b/tests/test_hq_convoy_combat.py index 8cba62c..5076665 100644 --- a/tests/test_hq_convoy_combat.py +++ b/tests/test_hq_convoy_combat.py @@ -20,7 +20,8 @@ methods='\n'.join(cpp(body(H,s)) for s in ('protected bool ConvoyPositionKnown(' downlink=cpp(body(H,'if (unit.Downlink)\n')) cancel=cpp(body(H,'void CancelPending(')) src=H.read_text() -assert src.index('PlanConvoy(now); Assign(now);') > src.index('override void Tick(') +tick=body(H,'override void Tick(') +assert tick.index('PlanConvoy(now);') < tick.index('PlanResupply(now);') < tick.index('Assign(now);') assert 'm_Contacts' in body(H,'protected ERR_HQReport ConvoyContact(') assert 'GetOrigin' not in methods and 'Target' not in methods run(r''' @@ -41,7 +42,7 @@ struct ERR_HQRoute {int MessageId=0;string Payload;int result=0;int Advance(floa struct Network {bool available=true;int calls=0;ERR_HQRoute* Route(void*,bool down){assert(down);calls++;return available?new ERR_HQRoute:nullptr;}}; struct ERR_ConvoyCombatOrder {int CommandId=0,ReportId=0,VehicleIndex=0;string SourceId;SCR_AIGroup* Group=nullptr;bool Hold=false;float ObservedAt=-1,IssuedAt=0,ExpiresAt=0;}; struct CombatState {bool Held=false;int LastCommandId=0,ReportId=0;float ObservedAt=-1;}; -struct ERR_ConvoyVehicle {int Index=0;SCR_AIGroup* Group=nullptr;bool Released=false,Arrived=false,Registered=true;CombatState state;CombatState* Combat=&state;}; +struct ERR_ConvoyVehicle {int SupplyToken=0,Index=0;SCR_AIGroup* Group=nullptr;bool Released=false,Arrived=false,Registered=true;CombatState state;CombatState* Combat=&state;}; struct Receipt {string SourceId="convoy-1";}; struct ConvoyTask {bool Stopped=false,Ready=true;struct Receipt receipt;struct Receipt* Receipt=&receipt;std::vector Vehicles;}; struct Service {int calls=0;bool valid=true;ERR_ConvoyCombatOrder* last=nullptr; @@ -66,6 +67,7 @@ int main(){ ERR_HQReport r;r.MessageId=1;r.ObservedAt=2000;r.Position={200,0}; h.PlanConvoy(3000);assert(!u.Downlink); // no delivered own status or target report h.m_Watch.entries[u.ForceSourceId]=&e;h.PlanConvoy(3000);assert(!u.Downlink); + h.m_Contacts={&r};v.SupplyToken=100001;h.PlanConvoy(3000);assert(!u.Downlink);v.SupplyToken=0; h.m_Contacts={&r};h.m_Network.available=false;h.PlanConvoy(3000);assert(!u.Downlink&&!v.Combat->Held); h.m_Network.available=true;h.PlanConvoy(3000);assert(u.Downlink&&u.PendingConvoyOrder->Hold); auto pending=u.PendingConvoyOrder;int calls=h.m_Network.calls;h.PlanConvoy(4000);assert(h.m_Network.calls==calls&&u.PendingConvoyOrder==pending); diff --git a/tests/test_hq_uplink_fairness.py b/tests/test_hq_uplink_fairness.py index 217f0ef..6be820f 100644 --- a/tests/test_hq_uplink_fairness.py +++ b/tests/test_hq_uplink_fairness.py @@ -11,16 +11,19 @@ assert legacy in original or 'QueueReports(unit, now);' in original def cpp(s): s=s.replace('protected ','').replace('array','Array') - for t in ('ERR_HQUnit','ERR_HQVisualContact','ERR_HQRoute','ERR_HQReport','ERR_HQStatusReport','ERR_HQTask','ERR_HQSearchReport'): + for t in ('ERR_HQAmmoSnapshot','ERR_HQUnit','ERR_HQVisualContact','ERR_HQRoute','ERR_HQReport','ERR_HQStatusReport','ERR_HQTask','ERR_HQSearchReport'): s=re.sub(r'\b'+t+r' (?=\w)',t+'* ',s) s=s.replace('ERR_HQReport* report;','ERR_HQReport* report = nullptr;') - for v in ('unit','route','report','seen','task'): + for v in ('unit','route','report','seen','task','stock'): s=s.replace(v+'.',v+'->') for v in ('Utility','ReportSelection','StatusSampler','Group'): s=s.replace('->'+v+'.','->'+v+'->') s=s.replace('m_Mode.Settings().Get(', 'm_Mode->Settings()->Get(') + 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=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''' #include @@ -43,8 +46,10 @@ struct ERR_HQObservation{static void Gather(Utility* u,float now,Array& a){return a.front();}void Queued(void*){attempts++;}}; struct ERR_HQReport{int MessageId=0;void* Target=nullptr;Group* Source=nullptr;vector Position;float ObservedAt=0; string Description(float){return "contact";}ERR_HQReport* Snapshot(){return new ERR_HQReport(*this);}}; -struct AmmoSnapshot{bool Complete=false;int SmallArmsRounds=0,SmallArmsChambers=0;}; -struct ERR_HQStatusReport{AmmoSnapshot* AmmoState=nullptr;int MessageId=0,Count=4,Fit=4,ConfirmedLosses=0;string SourceId="own-1";float ObservedAt=0;}; +struct ERR_HQPursuitRules{static bool Finite(float value){return std::isfinite(value);}}; +struct ERR_HQAmmoSnapshot{bool Complete=false;int SmallArmsRounds=0,SmallArmsChambers=0,SmallArmsMuzzles=0,Members=0;bool Valid(int){return false;}}; +struct ERR_HQStatusReport{ERR_HQAmmoSnapshot* AmmoState=nullptr;int MessageId=0,Count=4,Fit=4,ConfirmedLosses=0;string SourceId="own-1";float ObservedAt=0;}; +'''+policy+r''' struct Sampler{int observations=0,samples=0;bool valid=true;void ObserveDeaths(){observations++;} ERR_HQStatusReport* Sample(float now,int id,void*){samples++;if(!valid)return nullptr;auto r=new ERR_HQStatusReport;r->MessageId=id;r->ObservedAt=now;return r;}}; struct ERR_HQSearchReport{int SourceId=0,MessageId=0,WatchMessageId=0,WatchRequestId=0,BeliefId=0,BeliefRevision=0; @@ -59,6 +64,7 @@ struct ERR_HQUnit{int Id=1;struct Group ownGroup;struct Utility ownUtility;Selec struct Group* Group=&ownGroup;struct Utility* Utility=&ownUtility;void* Radio=this; Selection* ReportSelection=&selection;Sampler* StatusSampler=&sampler; ERR_HQRoute* Uplink=nullptr;ERR_HQReport* PendingReport=nullptr;ERR_HQStatusReport* PendingStatus=nullptr;ERR_HQSearchReport* PendingSweep=nullptr; + ERR_HQAmmoReporting AmmoReporting; float NextReport=0,NextStatus=0;bool fighting=false,eligible=true; ERR_HQTask* Task=nullptr;void* Assignment=nullptr;void* Waypoint=nullptr; bool Eligible(Mode*){return eligible;} diff --git a/tests/test_infantry_ammo_transfer.py b/tests/test_infantry_ammo_transfer.py new file mode 100644 index 0000000..d62c26c --- /dev/null +++ b/tests/test_infantry_ammo_transfer.py @@ -0,0 +1,156 @@ +"""Execute the actual finite native magazine transaction; engine behavior remains separate.""" +from pathlib import Path +import os,re +from policy_harness import ROOT,run +p=Path(os.environ.get('ERR_INFANTRY_TRANSFER_SOURCE',ROOT/'addons/ai/Scripts/Game/ERR/ERR_InfantryAmmoTransfer.c')) +s=p.read_text() +for forbidden in ('TrySpawn','DeleteEntity','SetOrigin','SetTransform','TryInsert','TryRemove','SetAmmoCount'): + assert forbidden not in s,forbidden +callback=s[s.index('class ERR_InfantryAmmoCallback'):s.index('// One exact physical')] +code=s[s.index('class ERR_InfantryAmmoTransfer\n'):] +code=re.sub(r'//[^\n]*','',code).replace('protected ','').replace('class ','struct ') +for src,dst in { + 'BaseMagazineComponent.Cast(exactMagazine.FindComponent(BaseMagazineComponent))':'exactMagazine->magazine', + 'BaseWeaponManagerComponent.Cast(actor.FindComponent(BaseWeaponManagerComponent))':'actor->weapons', + 'BaseWeaponComponent.Cast(rifle.FindComponent(BaseWeaponComponent))':'rifle->weapon', + 'InventoryItemComponent.Cast(entity.FindComponent(InventoryItemComponent))':'entity->item', + 'InventoryItemComponent.Cast(m_Magazine.FindComponent(InventoryItemComponent))':'m_Magazine->item', + 'SCR_AIVehicleUsageComponent.Cast(m_Donor.FindComponent(SCR_AIVehicleUsageComponent))':'m_Donor->usage', + 'InventoryStorageManagerComponent.Cast(m_Donor.FindComponent(InventoryStorageManagerComponent))':'m_Donor->inventory', + 'InventoryStorageManagerComponent.Cast(m_Recipient.FindComponent(InventoryStorageManagerComponent))':'m_Recipient->inventory', +}.items():code=code.replace(src,dst) +code=code.replace('ref ERR_InfantryAmmoCallback','ERR_InfantryAmmoCallback*').replace('array<','Array<').replace('foreach (','for (').replace('null','nullptr') +code=re.sub(r'\bERR_GameMode (?=\w)','ERR_GameMode* ',code) +code=code.replace('void ERR_InfantryAmmoTransfer(','ERR_InfantryAmmoTransfer(').replace('EWeaponType kind','int kind').replace('EMuzzleType muzzleKind','int muzzleKind') +for name in ('ERR_InfantryAmmoTransferState','ERR_GameMode','ERR_EnemyEquipmentRules','ERR_ForceRules','Replication','SCR_Global','ERR_Actors','SCR_FactionManager','ERR_ConvoyRules','CompartmentAccessComponent','EWeaponType','EMuzzleType','EStoragePurpose','vector'): + code=code.replace(name+'.',name+'::') +for name in ('m_Mode','m_Donor','m_DonorGroup','m_Recipient','m_RecipientGroup','m_Source','m_Destination','m_Storage','m_Callback','magazine','manager','weapon','muzzle','entity','item','storage','inventory','donorRecord','recipientRecord','utility','usage','physics'): + code=re.sub(r'\b'+name+r'\.',name+'->',code) +code=code.replace('GetMagazineWell().','GetMagazineWell()->').replace('GetParentSlot().','GetParentSlot()->').replace('Forces().','Forces()->').replace('m_VehicleMgr.','m_VehicleMgr->').replace('GetPilotCompartmentSlot().','GetPilotCompartmentSlot()->') +code=re.sub(r'\b(bool|int|Vehicle|IEntity|SCR_AIGroup|ERR_ForceRecord|InventoryStorageManagerComponent|BaseInventoryStorageComponent|ERR_GameMode\*|ERR_InfantryAmmoCallback\*) (\w+);',r'\1 \2{};',code) +code=code.replace('\n}\n','\n};\n') +callback=callback.replace('class ERR_InfantryAmmoCallback : ScriptedInventoryOperationCallback','').strip()[1:-1] +callbacks=[] +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->')) +pre=r''' +#include +#include +#include +#include +#include +#include +using string=std::string; +templatestruct Array:std::vector{using std::vector::vector;int Count(){return this->size();}bool IsEmpty(){return this->empty();}void Insert(T t){this->push_back(t);}bool Contains(T t){return std::find(this->begin(),this->end(),t)!=this->end();}}; +struct vector{float x=0,y=0,z=0;float Length(){return std::sqrt(x*x+y*y+z*z);}static float Distance(vector a,vector b){return vector{a.x-b.x,a.y-b.y,a.z-b.z}.Length();}}; +struct Entity;struct Group;struct Inventory;struct Storage;struct Item;struct Slot;struct Magazine;struct Weapon;struct Muzzle;struct Manager;struct Utility;struct Usage;struct Physics_;struct Record; +using IEntity=Entity*;using Vehicle=Entity*;using SCR_AIGroup=Group*;using ERR_ForceRecord=Record*; +using InventoryStorageManagerComponent=Inventory*;using BaseInventoryStorageComponent=Storage*;using InventoryItemComponent=Item*;using BaseMagazineComponent=Magazine*; +using BaseWeaponManagerComponent=Manager*;using BaseWeaponComponent=Weapon*;using BaseMuzzleComponent=Muzzle*; +using SCR_AIGroupUtilityComponent=Utility*;using SCR_AIVehicleUsageComponent=Usage*;using Physics=Physics_*; +enum ERR_InfantryAmmoTransferState{FAILED=-1,PENDING,SUCCEEDED}; +struct ERR_InfantryAmmoTransfer; +struct ScriptedInventoryOperationCallback{virtual void OnComplete(){}virtual void OnFailed(){}virtual void OnAllComplete(){}virtual void OnAllFailed(){}virtual ~ScriptedInventoryOperationCallback()=default;}; +struct ERR_InfantryAmmoCallback:ScriptedInventoryOperationCallback{ERR_InfantryAmmoTransfer*Transfer=nullptr;void OnComplete()override;void OnFailed()override;void OnAllComplete()override;void OnAllFailed()override;}; +struct EWeaponType{static const int WT_RIFLE=1,WT_SNIPERRIFLE=2,WT_MACHINEGUN=3,WT_HANDGUN=4,WT_GRENADELAUNCHER=5,WT_ROCKETLAUNCHER=6;}; +struct EMuzzleType{static const int MT_BaseMuzzle=0,MT_UGLMuzzle=1,MT_RPGMuzzle=2;};struct EStoragePurpose{static const int PURPOSE_DEPOSIT=1;}; +struct Well{int type=1,parent=0;int Type(){return type;}bool IsInherited(int t){return type==t||parent==t;}}; +struct Magazine{Well*well=nullptr;int rounds=30,capacity=30;Well*GetMagazineWell(){return well;}int GetAmmoCount(){return rounds;}int GetMaxAmmoCount(){return capacity;}}; +struct Muzzle{Well*well=nullptr;int kind=0;Well*GetMagazineWell(){return well;}int GetMuzzleType(){return kind;}}; +struct Weapon{IEntity owner=nullptr;Arraymuzzles;int kind=1;IEntity GetOwner(){return owner;}int GetWeaponType(){return kind;}void GetMuzzlesList(Array&a){a=muzzles;}}; +struct Manager{Arrayweapons;void GetWeaponsList(Array&a){a=weapons;}}; +struct Storage{IEntity owner=nullptr;IEntity GetOwner(){return owner;}}; +struct Slot{Storage*storage=nullptr;IEntity occupant=nullptr;Storage*GetStorage(){return storage;}IEntity GetOccupant(){return occupant;}}; +struct Item{Slot*slot=nullptr;Slot*GetParentSlot(){return slot;}}; +struct Physics_{vector velocity,angular;vector GetVelocity(){return velocity;}vector GetAngularVelocity(){return angular;}}; +struct Usage{Slot*pilot=nullptr;Slot*GetPilotCompartmentSlot(){return pilot;}}; +struct VehicleManager{IEntity vehicle=nullptr;IEntity FindVehicle(IEntity v){return vehicle==v?v:nullptr;}}; +struct Utility{VehicleManager*m_VehicleMgr=nullptr;bool military=true;bool IsMilitary(){return military;}}; +struct Group{int faction=1,players=0;bool slave=false;Utility*utility=nullptr;int GetPlayerCount(bool){return players;}int GetFaction(){return faction;}bool IsSlave(){return slave;}Utility*GetGroupUtilityComponent(){return utility;}}; +struct Entity{bool alive=true,awake=true,player=false,captured=false;int faction=1;Group*group=nullptr;IEntity vehicle=nullptr,parent=nullptr; + Inventory*inventory=nullptr;Magazine*magazine=nullptr;Manager*weapons=nullptr;Weapon*weapon=nullptr;Item*item=nullptr;Usage*usage=nullptr;Physics_*physics=nullptr;vector position; + IEntity GetParent(){return parent;}Physics_*GetPhysics(){return physics;}vector GetOrigin(){return position;}}; +struct Record{SCR_AIGroup Group=nullptr;bool Physical=true,Eliminated=false;}; +struct Ledger{Arrayrecords;Record*FindGroup(SCR_AIGroup g){for(auto*r:records)if(r->Group==g)return r;return nullptr;}}; +struct ERR_GameMode{inline static ERR_GameMode*current=nullptr;bool active=true;Ledger*ledger=nullptr;static ERR_GameMode*Get(){return current;}bool Active(){return active;}Ledger*Forces(){return ledger;}int EnemyFaction(){return 1;}}; +struct Replication{inline static bool server=true;static bool IsServer(){return server;}}; +struct SCR_Global{inline static bool editor=false;static bool IsEditMode(){return editor;}}; +struct ERR_Actors{static bool Alive(IEntity a){return a&&a->alive;}}; +struct SCR_FactionManager{static int SGetFaction(IEntity a){return a?a->faction:-1;}}; +struct CompartmentAccessComponent{static IEntity GetVehicleIn(IEntity a){return a?a->vehicle:nullptr;}}; +struct ERR_ConvoyRules{static bool Captured(Vehicle v,SCR_AIGroup g){return v->captured||g->players>0;}static bool PartOf(IEntity a,IEntity root){return a==root;}}; +struct ERR_EnemyEquipmentRules{static bool Eligible(ERR_GameMode*m,SCR_AIGroup g,IEntity a){return m&&g&&a&&a->alive&&a->awake&&!a->player&&a->group==g&&g->players==0&&g->faction==m->EnemyFaction()&&g->utility&&g->utility->military;}}; +struct ERR_ForceRules{static bool Finite(float n){return std::isfinite(n);}}; +struct Inventory{IEntity owner=nullptr;Arrayitems;Arraystorages;Storage*selected=nullptr;bool allow=true,accept=true;int calls=0,callback=0;ScriptedInventoryOperationCallback*last=nullptr; + IEntity GetOwner(){return owner;}void GetItems(Array&a,int purpose){assert(purpose==1);a=items;}void GetStorages(Array&a,int purpose){assert(purpose==1);a=storages;} + Storage*FindStorageForItem(IEntity,int purpose){assert(purpose==1);return selected;} + bool CanMoveItemToStorage(IEntity,Storage*,int slot){assert(slot==-1);return allow;} + bool TryMoveItemToStorage(IEntity,Storage*,int slot,ScriptedInventoryOperationCallback*cb){assert(slot==-1);calls++;last=cb;if(callback==1){cb->OnComplete();}if(callback==2){cb->OnFailed();}return accept;}}; +''' +main=r''' +struct Fixture{ERR_GameMode mode;Ledger ledger;Group donorGroup,recipientGroup,otherGroup;Record donorRecord,recipientRecord;Entity truck,recipient,driver,spareDriver,magEntity,rifle,foreign; + VehicleManager vehicleManager;Utility donorUtility,recipientUtility;Physics_ physics;Usage usage;Slot pilot,fromSlot,toSlot;Storage sourceStorage,targetStorage;Inventory source,destination;Item item;Magazine magazine;Manager weapons;Weapon weapon;Muzzle muzzle;Well well; + Fixture(){ERR_GameMode::current=&mode;mode.ledger=&ledger;donorRecord.Group=&donorGroup;recipientRecord.Group=&recipientGroup;ledger.records={&donorRecord,&recipientRecord}; + donorGroup.utility=&donorUtility;recipientGroup.utility=&recipientUtility;donorUtility.m_VehicleMgr=&vehicleManager;vehicleManager.vehicle=&truck; + truck.physics=&physics;truck.usage=&usage;usage.pilot=&pilot;pilot.occupant=&driver;driver.group=&donorGroup;driver.vehicle=&truck;spareDriver.group=&donorGroup;spareDriver.vehicle=&truck; + recipient.group=&recipientGroup;recipient.position.x=4;truck.inventory=&source;source.owner=&truck;recipient.inventory=&destination;destination.owner=&recipient; + sourceStorage.owner=&truck;targetStorage.owner=&recipient;source.storages={&sourceStorage};destination.storages={&targetStorage};destination.selected=&targetStorage; + source.items={&magEntity};magEntity.item=&item;item.slot=&fromSlot;fromSlot.storage=&sourceStorage;toSlot.storage=&targetStorage;magEntity.magazine=&magazine;magazine.well=&well; + recipient.weapons=&weapons;weapons.weapons={&rifle};rifle.weapon=&weapon;weapon.owner=&rifle;weapon.muzzles={&muzzle};muzzle.well=&well;} + ERR_InfantryAmmoTransfer Job(){return ERR_InfantryAmmoTransfer(&mode,&truck,&donorGroup,&recipient,&recipientGroup,&magEntity);} + void Move(){source.items.clear();destination.items={&magEntity};item.slot=&toSlot;} +}; +int main(){ + // Read-only selection follows the native inherited-well direction, excluding launcher muzzles and weapons. + {Fixture f;assert(ERR_InfantryAmmoTransfer::Compatible(&f.recipient,&f.magEntity));Well derived;derived.type=2;derived.parent=1;f.magazine.well=&derived;assert(ERR_InfantryAmmoTransfer::Compatible(&f.recipient,&f.magEntity)); + f.magazine.well=&f.well;f.muzzle.well=&derived;assert(!ERR_InfantryAmmoTransfer::Compatible(&f.recipient,&f.magEntity)); + f.muzzle.well=&f.well;f.muzzle.kind=EMuzzleType::MT_UGLMuzzle;assert(!ERR_InfantryAmmoTransfer::Compatible(&f.recipient,&f.magEntity)); + f.muzzle.kind=0;f.weapon.kind=EWeaponType::WT_ROCKETLAUNCHER;assert(!ERR_InfantryAmmoTransfer::Compatible(&f.recipient,&f.magEntity));} + // Exactly one source move; neither a callback alone nor physical movement alone is a successful transaction. + {Fixture f;auto t=f.Job();assert(t.Tick(100)==PENDING&&f.source.calls==1&&t.Unresolved());f.source.last->OnComplete();assert(t.Tick(101)==PENDING&&t.Unresolved()); + f.Move();assert(t.Tick(102)==SUCCEEDED&&!t.Unresolved());t.Stop();assert(t.Tick(103)==SUCCEEDED&&f.source.calls==1);} + {Fixture f;auto t=f.Job();t.Tick(100);f.Move();assert(t.Tick(101)==PENDING&&t.Unresolved());f.source.last->OnAllComplete();assert(t.Tick(102)==SUCCEEDED);} + // Exact destination slot and known donor absence are mandatory even after success callback. + {Fixture f;auto t=f.Job();t.Tick(100);f.Move();f.item.slot=&f.fromSlot;f.source.last->OnComplete();assert(t.Tick(101)==PENDING&&t.Unresolved()); + f.item.slot=&f.toSlot;for(int i=0;i<513;i++)f.source.items.Insert(&f.foreign);assert(t.Tick(102)==PENDING&&t.Unresolved());} + // Late callbacks resolve retained reservations after Stop without Tick or further operations; the stopped task stays failed. + {Fixture f;auto t=f.Job();t.Tick(0);t.Stop();assert(t.Unresolved());f.Move();f.source.last->OnAllComplete();assert(!t.Unresolved());assert(t.Tick(2)==FAILED&&f.source.calls==1);} + {Fixture f;auto t=f.Job();t.Tick(0);t.Stop();f.source.last->OnAllFailed();assert(!t.Unresolved());assert(t.Tick(1)==FAILED&&f.source.calls==1);} + {Fixture f;auto t=f.Job();t.Tick(0);f.source.last->OnComplete();f.source.last->OnFailed();assert(t.Unresolved());f.Move();assert(!t.Unresolved()&&t.Tick(1)==SUCCEEDED);} + // Failure/rejection and the 8s deadline never submit a second move. + for(int failure=0;failure<3;failure++){Fixture f;if(failure==0)f.source.accept=false;if(failure==1)f.source.callback=2;auto t=f.Job();t.Tick(100); + if(failure==2){assert(t.Tick(8100)==FAILED&&t.Unresolved());}else assert(t.Tick(101)==FAILED&&!t.Unresolved()); + for(int i=0;i<10;i++)t.Tick(8200+i);assert(f.source.calls==1);} + // Invalid physical state before submission spends no native action; the terminal object cannot revive. + for(int invalid=0;invalid<25;invalid++){Fixture f;auto t=f.Job(); + if(invalid==0)Replication::server=false;if(invalid==1)SCR_Global::editor=true;if(invalid==2)f.mode.active=false; + if(invalid==3)f.truck.alive=false;if(invalid==4)f.recipient.alive=false;if(invalid==5)f.recipient.awake=false;if(invalid==6)f.recipient.player=true; + if(invalid==7)f.recipient.vehicle=&f.truck;if(invalid==8)f.truck.captured=true;if(invalid==9)f.donorGroup.players=1; + if(invalid==10)f.recipient.group=&f.otherGroup;if(invalid==11)f.donorRecord.Physical=false;if(invalid==12)f.recipientRecord.Eliminated=true; + if(invalid==13)f.vehicleManager.vehicle=&f.foreign;if(invalid==14)f.driver.alive=false;if(invalid==15)f.driver.vehicle=nullptr; + if(invalid==16)f.physics.velocity.x=.251f;if(invalid==17)f.physics.angular.x=.101f;if(invalid==18)f.recipient.position.x=4.001f; + if(invalid==19)f.truck.faction=2;if(invalid==20)f.driver.faction=2;if(invalid==21)f.recipientGroup.slave=true; + if(invalid==22)f.magazine.rounds=0;if(invalid==23)f.magazine.rounds=31;if(invalid==24)f.physics.velocity.x=std::numeric_limits::quiet_NaN(); + assert(t.Tick(100)==FAILED&&f.source.calls==0&&!t.Unresolved());Replication::server=true;SCR_Global::editor=false;assert(t.Tick(200)==FAILED&&f.source.calls==0);} + // Native stock/storage identity and capacity guards reject shared, foreign, oversized and inaccessible inventory. + for(int invalid=0;invalid<9;invalid++){Fixture f;auto t=f.Job();if(invalid==0)f.source.items.clear();if(invalid==1)f.destination.items={&f.magEntity}; + if(invalid==2)f.fromSlot.storage=&f.targetStorage;if(invalid==3)f.sourceStorage.owner=&f.foreign;if(invalid==4)f.destination.selected=nullptr; + if(invalid==5)f.targetStorage.owner=&f.foreign;if(invalid==6)f.source.allow=false;if(invalid==7)f.destination.storages.clear();if(invalid==8){for(int i=0;i<65;i++)f.destination.storages.Insert(&f.targetStorage);} + assert(t.Tick(0)==FAILED&&f.source.calls==0);} + // Conditions and original native driver/ledger identities remain strict while an accepted move is pending. + for(int changed=0;changed<4;changed++){Fixture f;auto t=f.Job();t.Tick(100);Record replacement=f.recipientRecord; + if(changed==0)f.pilot.occupant=&f.spareDriver;if(changed==1)f.ledger.records[1]=&replacement;if(changed==2)f.physics.velocity.x=1;if(changed==3)f.recipient.position.x=8; + assert(t.Tick(101)==FAILED&&t.Unresolved());f.source.last->OnFailed();assert(!t.Unresolved()&&f.source.calls==1);} + {Fixture f;auto t=f.Job();t.Tick(100);assert(t.Tick(99)==FAILED&&t.Unresolved());} + // Clothing storage ownership follows native inventory slots and bounds cycles. + {Fixture f;Entity vest;Item vestItem;Slot vestSlot;Storage body;body.owner=&f.recipient;vestSlot.storage=&body;vestItem.slot=&vestSlot;vest.item=&vestItem;f.targetStorage.owner=&vest; + auto t=f.Job();assert(t.Tick(0)==PENDING);f.Move();f.source.last->OnComplete();assert(t.Tick(1)==SUCCEEDED); + vestSlot.storage=&f.targetStorage;assert(!ERR_InfantryAmmoTransfer::StoredUnder(&vest,&f.recipient));} +} +''' +# Brace tiny fixture statements to retain -Werror without suppressing useful compiler diagnostics. +main=re.sub(r'if\((invalid|changed|failure)==(\d+)\)([^;{}]+);',r'if(\1==\2){\3;}',main) +main=main.replace('for(int i=0;i<10;i++)t.Tick(8200+i);','for(int i=0;i<10;i++){t.Tick(8200+i);}') +run(pre+code+'\n'.join(callbacks)+main) +print('PASS: actual single-item transfer, physical ownership/native callback proof, stop quarantine, compatibility and strict original actor/vehicle boundaries') diff --git a/tests/test_infantry_resupply_coordinator.py b/tests/test_infantry_resupply_coordinator.py new file mode 100644 index 0000000..c34e2b6 --- /dev/null +++ b/tests/test_infantry_resupply_coordinator.py @@ -0,0 +1,130 @@ +"""Actual coordinator decisions/transitions with native boundaries doubled; no engine proof.""" +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 +SOURCE=Path(os.environ.get('ERR_INFANTRY_RESUPPLY_SOURCE',REPO/'addons/ai/Scripts/Game/ERR/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::') + s=s.replace(' + "3 0 0"',' + Vec{3,0,0}') + s=re.sub(r'string\.Format\("walk to reported stopped ammo truck at %1", m_Rendezvous\)', '"rendezvous"', s) + for kind in ['ERR_HQWatchEntry','Physics']: + s=re.sub(r'\b'+kind+r' (\w+)',kind+r'* \1',s) + # Enforce native entity/reference member access becomes C++ pointer member access. + for name in ['entry','recipient','donor','stopped','m_HQ','m_Move','m_Recipient','m_Donor','m_Truck','m_Order','physics']: + s=s.replace(name+'.',name+'->') + for name in ['AmmoState','Group','Combat','Entity']: + s=s.replace(name+'.',name+'->') + s=s.replace('Watch().','Watch()->').replace('GetVelocity().','GetVelocity().').replace('GetAngularVelocity().','GetAngularVelocity().') + return s +rules='\n'.join(method(x) for x in ['static bool Fresh','static bool Need','static bool Pair']) +methods='\n'.join(method(x) for x in ['protected void ClearWaypoints','protected void Finish','void Tick(float now)','void Stop()']) +code=r''' +#include +#include +#include +#include +#include +#include +using string=std::string; +struct Vec {float x=0,y=0,z=0; float Length(){return std::sqrt(x*x+y*y+z*z);} static float DistanceXZ(Vec a,Vec b){return std::hypot(a.x-b.x,a.z-b.z);} Vec operator+(Vec b){return {x+b.x,y+b.y,z+b.z};} string ToString(){return "position";}}; +struct ERR_ForceRules {static bool Finite(float n){return std::isfinite(n);} static bool FiniteVector(Vec v){return Finite(v.x)&&Finite(v.y)&&Finite(v.z);}}; +struct Ammo {bool Complete=true,valid=true;int Members=2,SmallArmsMuzzles=2,SmallArmsRounds=60,SmallArmsChambers=0;bool Valid(int){return valid;}}; +struct ERR_HQWatchEntry {bool Closed=false;int Count=2,Fit=2,SourceId=1;float ObservedAt=0;Vec Position;Ammo* AmmoState=nullptr;}; +struct ERR_InfantryResupplyRules { +RULES +}; +struct Waypoint {int id;}; +struct Group {std::vector points;void RemoveWaypoint(Waypoint* p){points.erase(std::remove(points.begin(),points.end(),p),points.end());}}; +struct ERR_Actors {static inline int deleted=0;static void DeleteSpawned(Waypoint*){deleted++;}}; +struct Physics {Vec linear,angular;Vec GetVelocity(){return linear;} Vec GetAngularVelocity(){return angular;}}; +struct Entity {Physics* physics=nullptr;Physics* GetPhysics(){return physics;}}; +struct Combat {bool Held=false;}; +struct Truck {int SupplyToken=7,clears=0;bool SupplyHeld=false;struct Combat* Combat=nullptr;struct Entity* Entity=nullptr;void ClearOrder(){clears++;}}; +struct Unit {struct Group* Group=nullptr;int ForceSourceId=1;float NextStatus=-1;}; +struct Leaf {int stops=0;bool unresolved=true;void Stop(){stops++;}bool Unresolved(){return unresolved;}}; +struct Route {int result=0,advances=0;int Advance(float,int){advances++;return result;}}; +struct Watch {ERR_HQWatchEntry* entry=nullptr;ERR_HQWatchEntry* Find(int){return entry;}}; +struct HQ {int token=7,releases=0,downlinks=0;struct Watch watch;Route* next=nullptr;int Journal(){return 0;}int LogisticsToken(Group*){return token;}void ReleaseLogistics(Group*,int owned){releases++;if(token==owned)token=0;}struct Watch* Watch(){return &watch;} Route* Downlink(Group*,string,string,int){downlinks++;return next;}}; +struct Service { + HQ* m_HQ;Truck* m_Truck;Unit* m_Recipient;Unit* m_Donor;Leaf* m_Move=nullptr;Route* m_Order=nullptr;Entity* m_Receiving=nullptr; + Waypoint* m_MoveWaypoint=nullptr;Waypoint* m_HoldWaypoint=nullptr;Vec m_Rendezvous;int m_State=2,m_Token=7,m_ReportId=11; + float m_NextTick=0,m_Deadline=200000,m_HeldAt=-1;bool m_Stopped=false,valid=true,quiet=true,roster=true,waypoints=true;int audits=0,transfers=0,waypointCalls=0,stocks=0; + bool Current(){return !m_Stopped;}bool TruckValid(){return valid;}bool Quiet(Unit*){return quiet;}bool Roster(){return roster;}void Audit(string){audits++;}void Stock(float){stocks++;}bool Waypoints(){waypointCalls++;return waypoints;}void Transfer(float){transfers++;} + METHODS +}; +struct Fixture {Physics physics;Entity entity{&physics};Combat combat;Truck truck;Group group,donorGroup;Unit recipient{&group},donor{&donorGroup};HQ hq;Route order,next;Service s; + Fixture(){truck.Combat=&combat;truck.Entity=&entity;s.m_HQ=&hq;s.m_Truck=&truck;s.m_Recipient=&recipient;s.m_Donor=&donor;s.m_Order=ℴhq.next=&next;} +}; +int main(){ + Ammo ammo;ERR_HQWatchEntry demand,donor;demand.AmmoState=&ammo;donor.SourceId=2;donor.Position={200,500,0}; + assert(ERR_InfantryResupplyRules::Need(&demand,120000));assert(ERR_InfantryResupplyRules::Pair(&demand,&donor,120000)); + assert(!ERR_InfantryResupplyRules::Fresh(&demand,120001));assert(!ERR_InfantryResupplyRules::Fresh(nullptr,0)); + demand.ObservedAt=1;assert(!ERR_InfantryResupplyRules::Fresh(&demand,0));demand.ObservedAt=0; + ammo.SmallArmsChambers=1;assert(!ERR_InfantryResupplyRules::Need(&demand,0));ammo.SmallArmsChambers=0; + ammo.Complete=false;assert(!ERR_InfantryResupplyRules::Need(&demand,0));ammo.Complete=true; + ammo.Members=1;assert(!ERR_InfantryResupplyRules::Need(&demand,0));ammo.Members=2; + ammo.valid=false;assert(!ERR_InfantryResupplyRules::Need(&demand,0));ammo.valid=true; + donor.SourceId=1;assert(!ERR_InfantryResupplyRules::Pair(&demand,&donor,0));donor.SourceId=2;donor.Position.x=201;assert(!ERR_InfantryResupplyRules::Pair(&demand,&donor,0)); + demand.Position.x=std::numeric_limits::quiet_NaN();assert(!ERR_InfantryResupplyRules::Need(&demand,0));demand.Position.x=0; + {Fixture f;f.s.Tick(0);assert(f.s.m_State==2&&!f.truck.SupplyHeld&&f.truck.clears==0&&f.s.waypointCalls==0);f.order.result=1;f.s.Tick(1000);assert(f.s.m_State==3&&f.truck.SupplyHeld&&f.truck.clears==1&&f.s.m_Order==nullptr);f.physics.linear.x=1;f.s.Tick(2000);assert(f.s.m_HeldAt==-1&&f.donor.NextStatus==-1);f.physics.linear.x=0;f.s.Tick(3000);assert(f.s.m_HeldAt==3000&&f.donor.NextStatus==3000);ERR_HQWatchEntry report;report.Position={20,0,5};report.ObservedAt=2999;f.hq.watch.entry=&report;f.s.Tick(4000);assert(f.hq.downlinks==0);report.ObservedAt=3000;f.s.Tick(5000);assert(f.s.m_State==4&&f.hq.downlinks==1&&f.s.m_Rendezvous.x==23);f.s.Tick(6000);assert(f.s.m_State==4&&f.s.waypointCalls==0&&f.s.transfers==0);f.next.result=1;f.s.Tick(7000);assert(f.s.m_State==5&&f.s.waypointCalls==1&&f.s.transfers==1);} + {Fixture f;f.order.result=-1;f.s.Tick(0);assert(f.s.m_State==1&&f.hq.token==0&&f.truck.SupplyToken==0&&!f.truck.SupplyHeld&&f.truck.clears==0);} + {Fixture f;f.s.m_State=4;f.order.result=-1;f.s.Tick(0);assert(f.s.waypointCalls==0&&f.s.transfers==0&&f.hq.token==0);} + {Fixture f;f.hq.token=99;f.truck.SupplyToken=99;f.truck.SupplyHeld=true;f.s.Tick(0);assert(f.s.m_State==1&&f.hq.token==99&&f.truck.SupplyToken==99&&f.truck.SupplyHeld);} + {Fixture f;Waypoint own1{1},own2{2},other{3};f.group.points={&own1,&other,&own2};f.s.m_MoveWaypoint=&own1;f.s.m_HoldWaypoint=&own2;Leaf leaf;f.s.m_Move=&leaf;f.truck.SupplyHeld=true;f.s.Stop();assert(f.group.points.size()==1&&f.group.points[0]==&other&&leaf.stops==1&&f.s.m_Move==&leaf&&f.hq.token==0&&!f.truck.SupplyHeld&&f.s.m_Stopped);int audits=f.s.audits;f.s.Stop();f.s.Tick(5000);assert(f.s.audits==audits&&leaf.stops==1);} + {Fixture f;Leaf leaf;f.s.m_Move=&leaf;f.s.Finish("timeout");f.s.Tick(0);assert(f.s.m_Move==&leaf);leaf.unresolved=false;f.s.Tick(1000);assert(f.s.m_Move==nullptr);} + {Fixture f;f.s.m_State=3;f.physics.linear.x=std::numeric_limits::quiet_NaN();f.s.Tick(0);assert(f.s.m_HeldAt==-1&&f.donor.NextStatus==-1);} + {Fixture f;f.s.m_State=3;f.physics.angular.x=std::numeric_limits::quiet_NaN();f.s.Tick(0);assert(f.s.m_HeldAt==-1&&f.donor.NextStatus==-1);} + {Fixture f;f.s.m_Deadline=0;f.s.Tick(0);assert(f.s.m_State==1&&f.order.advances==0&&f.hq.token==0);} + {Fixture f;f.s.quiet=false;f.order.result=1;f.s.Tick(0);assert(f.s.m_State==1&&f.order.advances==0&&!f.truck.SupplyHeld);} + {Fixture f;f.s.m_State=4;f.order.result=1;f.s.waypoints=false;f.s.Tick(0);assert(f.s.m_State==1&&f.s.waypointCalls==1&&f.s.transfers==0&&f.hq.token==0);} + {Fixture f;f.s.m_State=3;f.s.m_HeldAt=100;ERR_HQWatchEntry report;report.ObservedAt=100;f.hq.watch.entry=&report;f.hq.next=nullptr;f.s.Tick(1000);assert(f.s.m_State==1&&f.hq.downlinks==1&&f.s.waypointCalls==0&&f.hq.token==0);} + +} +'''.replace('RULES',rules).replace('METHODS',methods) +run(code) +print('infantry resupply actual rules, radio transitions, owned cleanup and unresolved-operation tests passed') + +# Recheck permanent initial-roster eligibility during an active trip. +src=SOURCE +s=body(src,'protected bool Roster()').replace('protected ','') +s=s.replace('array agents = {};','Array agents;') +s=s.replace('foreach (AIAgent agent : agents)','for (Agent* agent : agents)').replace('foreach (IEntity actor : m_Members)','for (Actor* actor : m_Members)') +for x in ['m_Recipient','agent']:s=s.replace(x+'.',x+'->') +s=s.replace('StatusSampler.','StatusSampler->').replace('Group.','Group->') +for x in ['ERR_Actors','SCR_FactionManager','CompartmentAccessComponent']:s=s.replace(x+'.',x+'::') +s=s.replace('m_Mode.','m_Mode->').replace('bool living;', 'bool living = false;') +run(r''' +#include +#include +#include +template struct Array:std::vector{using std::vector::vector;bool IsEmpty(){return this->empty();}int Count(){return this->size();}bool Contains(T a){return std::find(this->begin(),this->end(),a)!=this->end();}}; +struct Group; +struct Actor{bool alive=true,player=false,fight=true;Group* group=nullptr;int faction=1;}; +struct Agent{Actor* actor;Actor* GetControlledEntity(){return actor;}}; +struct Group{Array agents;void GetAgents(Array& out){out=agents;}}; +struct Sampler{Group* group;bool released=false;int strength=1;Array original;int InitialStrength(){return strength;}Actor* InitialMember(int slot){return slot>=0&&slot<(int)original.size()?original[slot]:nullptr;}bool OwnsRoster(Group* g){return g==group;}bool CanAttribute(int,Actor*){return !released;}}; +struct Unit{struct Group* Group;Sampler* StatusSampler;}; +struct Mode{int EnemyFaction(){return 1;}}; +struct ERR_Actors{static bool Alive(Actor* a){return a->alive;}static bool Player(Actor* a){return a->player;}static struct Group* Group(Actor* a){return a->group;}static bool CanFight(Actor* a){return a->fight;}}; +struct SCR_FactionManager{static int SGetFaction(Actor* a){return a->faction;}}; +struct CompartmentAccessComponent{static bool GetVehicleIn(Actor*){return false;}}; +struct Service{Unit* m_Recipient;Mode* m_Mode;Array m_Members;bool Quiet(Unit*){return true;} +METHOD +}; +int main(){Group group;Actor soldier;soldier.group=&group;Agent agent{&soldier};group.agents={&agent};Sampler sampler{&group,false,1,{&soldier}};Unit unit{&group,&sampler};Mode mode;Service service{&unit,&mode,{&soldier}};assert(service.Roster());sampler.released=true;assert(!sampler.CanAttribute(0,&soldier)); +// Permanent sampler release survives returning to the physical group. +assert(!service.Roster());sampler.released=false;assert(service.Roster()); +sampler.strength=33;assert(!service.Roster());sampler.strength=0;assert(!service.Roster());sampler.strength=1; +Actor foreign;foreign.group=&group;sampler.original={&foreign};assert(!service.Roster()); +// Initial roster order, not current GetAgents order, determines the slot. +sampler.strength=2;sampler.original={&foreign,&soldier};assert(service.Roster()); +soldier.player=true;assert(!service.Roster());soldier.player=false; +soldier.group=nullptr;assert(!service.Roster());soldier.group=&group; +soldier.alive=false;assert(!service.Roster());soldier.alive=true; +Agent extra{&foreign};group.agents.push_back(&extra);assert(!service.Roster()); +} +'''.replace('METHOD',s)) +print('PASS: actual resupply Roster preserves permanent release, original slot mapping and bounded ownership') diff --git a/tests/test_intel_registration.py b/tests/test_intel_registration.py index 1292fea..b50d72c 100644 --- a/tests/test_intel_registration.py +++ b/tests/test_intel_registration.py @@ -1,8 +1,9 @@ """Actual Intel/HQ methods and readiness handoff; native expansion is an adapter.""" -import re +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=ROOT/'addons/ai/Scripts/Game/ERR/ERR_HQ.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' def adapt(s): @@ -82,7 +83,8 @@ struct GroupService{int registrations=0;Set seen;Array ids;Arr void RegisterGroup(SCR_AIGroup g,int radioId=0,bool fitRadios=true){ids.Insert(radioId);fits.Insert(fitRadios);if(!seen.Contains(g)){seen.Insert(g);registrations++;}}}; struct Mortars{SCR_AIGroup owned=nullptr;bool FindGroup(SCR_AIGroup group){return group&&group==owned;}}; struct BodyService:GroupService{void RegisterGroup(SCR_AIGroup g,Sampler& s){assert(s.Bound()&&s.group==g);GroupService::RegisterGroup(g);}}; -struct Unit{string HomeId,ForceSourceId;bool HomeGuard=false;float NextStatus=0;Sampler StatusSampler;int Id=0;SCR_AIGroup Group=nullptr;struct Utility* Utility=nullptr;float NextReport=0;};using ERR_HQUnit=Unit*; +struct Reporting{int initializations=0;void Initialize(int id,float now){assert(id>0&&now==10);initializations++;}}; +struct Unit{Reporting AmmoReporting;string HomeId,ForceSourceId;bool HomeGuard=false;float NextStatus=0;Sampler StatusSampler;int Id=0;SCR_AIGroup Group=nullptr;struct Utility* Utility=nullptr;float NextReport=0;};using ERR_HQUnit=Unit*; struct HQ{Mode* m_Mode;GroupService m_Equipment;BodyService m_Bodies;int m_NextId=0;Array m_Units;Mortars* m_Mortars=nullptr; '''+hqbind+hqregister+r''' }; @@ -112,6 +114,7 @@ int main(){ for(int n=0;n<5;n++){assert(ready.Finish(&mode,&group)==1);intel.RegisterGroup(&group);hq.RegisterGroup(&group);} assert(mode.publications==1&&Math::rolls==4&&hq.m_Units.Count()==1); assert(hq.m_Units[0]->StatusSampler.bindings==1&&hq.m_Equipment.registrations==1&&hq.m_Bodies.registrations==1); + assert(hq.m_Units[0]->AmmoReporting.initializations==1); assert(hq.m_Equipment.ids.Count()==1&&hq.m_Equipment.ids[0]==1&&!hq.m_Equipment.fits[0]); intel.Tick(1);for(Actor& a:actors)assert(a.inventory.requests==1); for(int n=0;n<5;n++){intel.Tick(2+n);}for(Actor& a:actors)assert(a.inventory.requests==1); // accepted asynchronous spawn never reissued diff --git a/tools/check.py b/tools/check.py index a0d955f..5576fde 100644 --- a/tools/check.py +++ b/tools/check.py @@ -65,7 +65,7 @@ def check(): assert set(mapped)==set(inventory['script_paths']), 'Original inventory has untracked or unknown entries' print(f'PASS: {len(mapped)} original script entries tracked across {len(feature_ids)} unfinished responsibilities') print(f'PASS: {len(ids)} isolated addons, acyclic dependencies, {len(resources)} unique resources, exact vanilla/authorized external references') - for name in ['test_enemy_radio.py', 'test_native_maintenance_stock.py', 'test_packed_external_game.py', 'test_hq_radio_node.py', 'test_vehicle_maintenance_stock.py', 'test_vehicle_entry_diagnostics.py', 'test_vehicle_security_native_probe.py', 'test_vehicle_security.py', 'test_native_convoy_cover_probe.py', 'test_enemy_optics.py', 'test_convoy_combat.py', 'test_ai_stinger_admin.py', 'test_hq_ammo_dispatch.py', 'test_hq_convoy_combat.py', 'test_hq_ammo_sampler.py', 'test_native_hq_body_probe.py', 'test_hq_delivered_casualties.py', 'test_external_profile_review.py', 'test_hq_uplink_fairness.py', 'test_actor_group.py', 'test_native_package_external.py', 'test_native_convoy_probe.py', 'test_convoy_placement.py', 'test_convoy_road_plan.py', 'test_hq_convoy_dispatch.py', 'test_convoy_admission.py', 'test_convoy_dispatch.py', 'test_convoy_lifecycle.py', 'test_convoy_budget.py', 'test_hq_body_observer.py', 'test_hq_status_sampler.py', 'test_hq_watch.py', 'test_hq_assignment_lifecycle.py', 'test_force_ledger.py', 'test_enemy_equipment.py', 'test_hq_doctrine.py', 'test_hq_coverage.py', 'test_hq_pursuit.py', 'test_hq_memory.py', 'test_external_addons.py', 'test_admin_tick_delivery.py', 'test_project_schema.py', 'test_admin_session.py', 'test_admin_providers.py', 'test_admin_menu.py', 'test_admin_player_tools.py', 'test_intel_admin.py', 'test_intel_reroll.py', 'test_intel_discovery_feedback.py', 'test_hq_report_selection.py', 'test_casualty_feedback.py', 'test_initial_admission_exhaustion.py', 'test_prison_held_action_proof.py', 'test_prison_held_action_evidence.py', 'test_prison_held_input_adapter.py', 'test_prison_held_runner.py', 'test_prison_coarse_facing.py', 'test_aircraft_field_probe.py', 'test_aircraft_field_runner.py', 'test_aircraft_field_rules.py', 'test_aircraft_field_envelope.py', 'test_aircraft_field_flight.py', 'test_command_maintenance.py', 'test_aircraft_service.py', 'test_aircraft_service_cancel_runner.py', 'test_prison_action_selection_proof.py', 'test_prison_action_selection_evidence.py', 'test_ordinary_gate_choices.py', 'test_aircraft_control_bridge.py', 'test_prison_alignment_proof.py', 'test_prison_alignment_evidence.py', 'test_aircraft_route_demand.py', 'test_prison_approach_proof.py', 'test_prison_approach_evidence.py', 'test_ordinary_gate_evidence.py', 'test_ordinary_gate_observer.py', 'test_ordinary_look_observer.py', 'test_ordinary_look_evidence.py', 'test_relative_look_runner.py', 'test_radio_waiting_text.py', 'test_inventory_control_runner.py', 'test_inventory_layout.py', 'test_headless_input_proof.py', 'test_headless_input_exercise_runner.py', 'test_private_prefix_cleanup.py', 'test_runner_private_cleanup.py', 'test_ordinary_input_runner.py', 'test_ordinary_input_observer.py', 'test_aircraft_route_envelope.py', 'test_aircraft_route_policy.py', 'test_aircraft_route_probe.py', 'test_rough_intel_feedback.py', 'test_headless_display_probe.py', 'test_headless_display_runner.py', 'test_preparation_status.py', 'test_hint_delivery.py', 'test_native_end_lifecycle.py', 'test_native_end_runner.py', 'test_escape_result_wording.py', 'test_native_stats.py', 'test_aircraft_translation.py', 'test_spawn_retry_budget.py', 'test_action_feedback.py', 'test_native_aircraft_control.py', 'test_aircraft_flight_policy.py', 'test_aircraft_flight_envelope.py', 'test_ordinary_screenshot.py', 'test_participant_selection.py', 'test_native_shared_map_ownership.py', 'test_shared_map_ownership.py', 'test_intel_registration.py', 'test_mortar_activity_completion.py', 'test_packed_chat_game.py', 'test_native_mortar_refresh.py', 'test_archive_packed.py', 'test_mortar_refresh.py', 'test_packed_core_game.py', 'test_pak_inventory.py', 'test_native_mortar_salvo.py', 'test_spectator_guidance.py', 'test_native_package.py', 'test_item_station_teardown.py', 'test_source_bundle.py', 'test_native_flight_footprint.py', 'test_native_flight_input_diagnostics.py', 'test_mortar_logistics.py', 'test_mortar_courier_storage.py','test_powered_flight_pad.py','test_prison_escape_policy.py','test_powered_flight_policy.py','test_flight_action_runner.py','test_native_local_admission_probe.py','test_mortar_report_ledger.py','test_dedicated_native.py','test_native_mortar_transfer.py','test_mortar_aim_renewal.py','test_dedicated_preflight.py','test_mortar_transactions.py','test_native_mortar_probe.py','test_diagnostic_no_splash.py','test_casualty_incapacitation.py','test_casualty_remove_probe.py','test_extraction_placement_policy.py','test_guard_cancellation_policy.py','test_casualty_ground_policy.py','test_casualty_reservation_death.py','test_casualty_loading_policy.py','test_initial_guard_policy.py','test_headless_game_runner.py','test_vanilla_game_control.py','test_archive_game_control.py','test_site_discovery_policy.py','test_faction_catalog_scope.py','test_mission_rules.py','test_admin_setting_policy.py', 'test_player_admission_policy.py','test_progression_identity.py','test_discovery_map_position.py','test_local_admission.py','test_prison_placement_policy.py', 'test_recovery_policy.py','test_time_policy.py','test_environment_policy.py','test_environment_restart_runner.py', 'test_inventory_enumeration_policy.py','test_radio_defence_policy.py','test_radio_feedback_policy.py','test_performance_comparison.py','test_release_check.py','test_settings_migration.py','hq_network_regression.py','helicopter_availability_regression.py','mortar_salvo_regression.py']: + for name in ['test_infantry_resupply_coordinator.py', 'test_infantry_ammo_transfer.py', 'test_hq_ammo_reporting.py', 'test_enemy_radio.py', 'test_native_maintenance_stock.py', 'test_packed_external_game.py', 'test_hq_radio_node.py', 'test_vehicle_maintenance_stock.py', 'test_vehicle_entry_diagnostics.py', 'test_vehicle_security_native_probe.py', 'test_vehicle_security.py', 'test_native_convoy_cover_probe.py', 'test_enemy_optics.py', 'test_convoy_combat.py', 'test_ai_stinger_admin.py', 'test_hq_ammo_dispatch.py', 'test_hq_convoy_combat.py', 'test_hq_ammo_sampler.py', 'test_native_hq_body_probe.py', 'test_hq_delivered_casualties.py', 'test_external_profile_review.py', 'test_hq_uplink_fairness.py', 'test_actor_group.py', 'test_native_package_external.py', 'test_native_convoy_probe.py', 'test_convoy_placement.py', 'test_convoy_road_plan.py', 'test_hq_convoy_dispatch.py', 'test_convoy_admission.py', 'test_convoy_dispatch.py', 'test_convoy_lifecycle.py', 'test_convoy_budget.py', 'test_hq_body_observer.py', 'test_hq_status_sampler.py', 'test_hq_watch.py', 'test_hq_assignment_lifecycle.py', 'test_force_ledger.py', 'test_enemy_equipment.py', 'test_hq_doctrine.py', 'test_hq_coverage.py', 'test_hq_pursuit.py', 'test_hq_memory.py', 'test_external_addons.py', 'test_admin_tick_delivery.py', 'test_project_schema.py', 'test_admin_session.py', 'test_admin_providers.py', 'test_admin_menu.py', 'test_admin_player_tools.py', 'test_intel_admin.py', 'test_intel_reroll.py', 'test_intel_discovery_feedback.py', 'test_hq_report_selection.py', 'test_casualty_feedback.py', 'test_initial_admission_exhaustion.py', 'test_prison_held_action_proof.py', 'test_prison_held_action_evidence.py', 'test_prison_held_input_adapter.py', 'test_prison_held_runner.py', 'test_prison_coarse_facing.py', 'test_aircraft_field_probe.py', 'test_aircraft_field_runner.py', 'test_aircraft_field_rules.py', 'test_aircraft_field_envelope.py', 'test_aircraft_field_flight.py', 'test_command_maintenance.py', 'test_aircraft_service.py', 'test_aircraft_service_cancel_runner.py', 'test_prison_action_selection_proof.py', 'test_prison_action_selection_evidence.py', 'test_ordinary_gate_choices.py', 'test_aircraft_control_bridge.py', 'test_prison_alignment_proof.py', 'test_prison_alignment_evidence.py', 'test_aircraft_route_demand.py', 'test_prison_approach_proof.py', 'test_prison_approach_evidence.py', 'test_ordinary_gate_evidence.py', 'test_ordinary_gate_observer.py', 'test_ordinary_look_observer.py', 'test_ordinary_look_evidence.py', 'test_relative_look_runner.py', 'test_radio_waiting_text.py', 'test_inventory_control_runner.py', 'test_inventory_layout.py', 'test_headless_input_proof.py', 'test_headless_input_exercise_runner.py', 'test_private_prefix_cleanup.py', 'test_runner_private_cleanup.py', 'test_ordinary_input_runner.py', 'test_ordinary_input_observer.py', 'test_aircraft_route_envelope.py', 'test_aircraft_route_policy.py', 'test_aircraft_route_probe.py', 'test_rough_intel_feedback.py', 'test_headless_display_probe.py', 'test_headless_display_runner.py', 'test_preparation_status.py', 'test_hint_delivery.py', 'test_native_end_lifecycle.py', 'test_native_end_runner.py', 'test_escape_result_wording.py', 'test_native_stats.py', 'test_aircraft_translation.py', 'test_spawn_retry_budget.py', 'test_action_feedback.py', 'test_native_aircraft_control.py', 'test_aircraft_flight_policy.py', 'test_aircraft_flight_envelope.py', 'test_ordinary_screenshot.py', 'test_participant_selection.py', 'test_native_shared_map_ownership.py', 'test_shared_map_ownership.py', 'test_intel_registration.py', 'test_mortar_activity_completion.py', 'test_packed_chat_game.py', 'test_native_mortar_refresh.py', 'test_archive_packed.py', 'test_mortar_refresh.py', 'test_packed_core_game.py', 'test_pak_inventory.py', 'test_native_mortar_salvo.py', 'test_spectator_guidance.py', 'test_native_package.py', 'test_item_station_teardown.py', 'test_source_bundle.py', 'test_native_flight_footprint.py', 'test_native_flight_input_diagnostics.py', 'test_mortar_logistics.py', 'test_mortar_courier_storage.py','test_powered_flight_pad.py','test_prison_escape_policy.py','test_powered_flight_policy.py','test_flight_action_runner.py','test_native_local_admission_probe.py','test_mortar_report_ledger.py','test_dedicated_native.py','test_native_mortar_transfer.py','test_mortar_aim_renewal.py','test_dedicated_preflight.py','test_mortar_transactions.py','test_native_mortar_probe.py','test_diagnostic_no_splash.py','test_casualty_incapacitation.py','test_casualty_remove_probe.py','test_extraction_placement_policy.py','test_guard_cancellation_policy.py','test_casualty_ground_policy.py','test_casualty_reservation_death.py','test_casualty_loading_policy.py','test_initial_guard_policy.py','test_headless_game_runner.py','test_vanilla_game_control.py','test_archive_game_control.py','test_site_discovery_policy.py','test_faction_catalog_scope.py','test_mission_rules.py','test_admin_setting_policy.py', 'test_player_admission_policy.py','test_progression_identity.py','test_discovery_map_position.py','test_local_admission.py','test_prison_placement_policy.py', 'test_recovery_policy.py','test_time_policy.py','test_environment_policy.py','test_environment_restart_runner.py', 'test_inventory_enumeration_policy.py','test_radio_defence_policy.py','test_radio_feedback_policy.py','test_performance_comparison.py','test_release_check.py','test_settings_migration.py','hq_network_regression.py','helicopter_availability_regression.py','mortar_salvo_regression.py']: subprocess.run([sys.executable,str(ROOT/'tests'/name)],check=True) print('All repository checks passed. Native compilation and multiplayer tests are separate requirements.') if __name__=='__main__':check()