Capture current mission, AI, map and administration development

Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
2026-10-13 22:52:53 +02:00
parent a951a96edc
commit 6a667d8deb
8104 changed files with 2124945 additions and 2061 deletions
@@ -0,0 +1,154 @@
// Opt-in terrain adapter: all positions come from this world's native geometry.
// The original Everon authored/fallback contract remains in ERR_GeneratedSites.
class ERR_TerrainSites : ERR_GeneratedSites
{
protected float m_Spacing;
protected bool m_HaveCandidate, m_WaitingNav;
protected vector m_Candidate;
protected float m_CandidateHeading;
protected int m_CandidateBegan;
protected ref ERR_ReconAirports m_Airports = new ERR_ReconAirports();
protected bool m_AirportsReady;
protected int m_GeometryRejected, m_NavigationRejected, m_PadRejected;
static bool Bounds(vector low, vector high)
{
float width = high[0] - low[0], depth = high[2] - low[2];
return width >= 2000 && depth >= 2000 && width <= 100000 && depth <= 100000;
}
static float Spacing(vector low, vector high)
{
return Math.Clamp(Math.Min(high[0] - low[0], high[2] - low[2]) * 0.06, 150, 600);
}
override bool Begin(ERR_ScenarioDefinition definition)
{
if (m_Started || !Replication.IsServer() || !definition || !definition.Valid() || !GetGame().GetWorldEntity()) return false;
GetGame().GetWorldEntity().GetWorldBounds(m_Low, m_High);
if (!Bounds(m_Low, m_High)) { m_Error = "Terrain bounds must span 2-100 km on each axis."; return false; }
AIWorld world = GetGame().GetAIWorld();
if (!world || !world.GetNavmeshWorldComponent("Soldiers")) { m_Error = "Terrain requires its own Soldiers navigation mesh."; return false; }
m_Started = true; m_Definition = definition; definition.TerrainGenerated = true;
m_Spacing = Spacing(m_Low, m_High);
// Resolve the terrain's airport first, then keep the prison in escape range.
array<int> order = {ERR_LocationKind.EXTRACTION, ERR_LocationKind.PRISON, ERR_LocationKind.RADIO, ERR_LocationKind.DEPOT, ERR_LocationKind.HOSPITAL, ERR_LocationKind.MORTAR, ERR_LocationKind.OUTPOST};
foreach (int kind : order)
foreach (ERR_SiteDefinition site : definition.Sites)
{
if (site.Kind != kind) continue;
site.PlacementResolved = false;
// The queue, rather than RandomClear, owns placement including extraction.
site.RandomClear = false;
if (kind == ERR_LocationKind.EXTRACTION) { site.RequireAirfield = true; site.AircraftOffset = vector.Zero; }
if (kind == ERR_LocationKind.DEPOT) site.Label = "Supply cache";
m_Pending.Insert(site);
}
m_Terrain.Collect(m_Low, m_High);
m_Began = System.GetTickCount();
PrintFormat("Reintroduced [terrain]: bounds=%1..%2 spacing=%3 sites=%4; native terrain/navmesh placement, no authored fallback", m_Low, m_High, m_Spacing, m_Pending.Count());
return true;
}
protected override bool Separated(ERR_SiteDefinition candidate, vector position, bool fallback)
{
foreach (ERR_SiteDefinition other : m_Definition.Sites)
{
if (other == candidate || !other.PlacementResolved) continue;
float minimum = m_Spacing;
if (candidate.Kind == ERR_LocationKind.RADIO && other.Kind == ERR_LocationKind.PRISON) minimum = m_Spacing * 2;
if (vector.DistanceXZ(position, other.Position) < minimum) return false;
// Every required destination must be inside the prison's escape boundary.
if (other.Kind == ERR_LocationKind.PRISON && vector.DistanceXZ(position, other.Position) + 200 >= ERR_GameMode.Get().EscapeRadius()) return false;
if (candidate.Kind == ERR_LocationKind.PRISON && other.Kind == ERR_LocationKind.EXTRACTION && vector.DistanceXZ(position, other.Position) + 200 >= ERR_GameMode.Get().EscapeRadius()) return false;
}
return true;
}
protected bool Navigable(vector position)
{
NavmeshWorldComponent mesh = GetGame().GetAIWorld().GetNavmeshWorldComponent("Soldiers");
if (!mesh) return false;
if (!mesh.IsTileLoaded(position)) { m_WaitingNav = mesh.LoadTileIn(position); return false; }
vector reachable;
return mesh.GetReachablePoint(position, 10, reachable);
}
protected bool Survey(ERR_SiteDefinition site, vector position, float heading, out float floor)
{
if (!m_Terrain.Site(site, position, heading, floor)) { m_GeometryRejected++; return false; }
vector ground = Vector(position[0], floor, position[2]);
if (!Navigable(ground)) { m_NavigationRejected++; return false; }
if (site.Guarded && !Navigable(ERR_Actors.Ground(position + ERR_CampTerrain.Rotate(site.GuardOffset, heading)))) { m_NavigationRejected++; return false; }
if (site.ResponseCount > 0 && !Navigable(ERR_Actors.Ground(position + ERR_CampTerrain.Rotate(site.ResponseOffset, heading)))) { m_NavigationRejected++; return false; }
if (site.Kind != ERR_LocationKind.EXTRACTION) return true;
float padFloor;
if (m_Terrain.Clear(ground, heading, 14, 0.8, padFloor) && ERR_AirfieldPlacement.Clear(ground)) return true;
m_PadRejected++; return false;
}
protected vector SamplePosition(ERR_SiteDefinition site)
{
if (site.Kind != ERR_LocationKind.EXTRACTION)
return Vector(Math.RandomFloat(m_Low[0] + 60, m_High[0] - 60), 0, Math.RandomFloat(m_Low[2] + 60, m_High[2] - 60));
vector centre = m_Airports.m_Positions[Math.RandomInt(0, m_Airports.m_Positions.Count())];
float angle = Math.RandomFloat(0, Math.PI2), radius = Math.RandomFloat(0, 450);
return centre + Vector(Math.Cos(angle) * radius, 0, Math.Sin(angle) * radius);
}
protected bool PrepareAirports()
{
if (m_AirportsReady) return true;
m_Airports.Update();
if (!m_Airports.Complete()) return false;
if (m_Airports.m_Positions.IsEmpty())
{
m_Error = "No airfield found on this terrain. For terrain takeover, configure m_sERR_Airfields with airport X Z coordinates. Authored scenarios can use ERR_Airfield_0 through _15 markers.";
m_Result = ERR_PrepareResult.FAILED;
return false;
}
m_AirportsReady = true; m_Began = System.GetTickCount();
return true;
}
override ERR_PrepareResult Tick()
{
if (m_Result != ERR_PrepareResult.PENDING) return m_Result;
if (!m_Started || !Replication.IsServer()) return ERR_PrepareResult.FAILED;
if (!PrepareAirports()) return m_Result;
int tick = System.GetTickCount();
while (m_Index < m_Pending.Count())
{
ERR_SiteDefinition site = m_Pending[m_Index];
if (m_Attempts >= 12000 || System.GetTickCount() - m_Began >= 30000)
{
PrintFormat("Reintroduced [terrain survey exhausted]: id=%1 attempts=%2 rejected geometry=%3 navigation=%4 aircraft=%5", site.Id, m_Attempts, m_GeometryRejected, m_NavigationRejected, m_PadRejected);
if (!SkipOptional(site))
{
m_Error = "Terrain has no safe navigable placement for " + site.Label + ". Check this map's Soldiers navmesh, terrain clearance and size; no foreign-map fallback was used.";
m_Result = ERR_PrepareResult.FAILED; return m_Result;
}
m_Index++; m_Attempts = 0; m_Began = System.GetTickCount(); m_HaveCandidate = false;
m_GeometryRejected = 0; m_NavigationRejected = 0; m_PadRejected = 0;
}
else
{
if (!m_HaveCandidate)
{
m_Candidate = SamplePosition(site);
m_CandidateHeading = Math.RandomFloat(0, 360); m_CandidateBegan = System.GetTickCount();
m_HaveCandidate = true; m_Attempts++;
}
vector position = m_Candidate;
float heading = m_CandidateHeading, floor;
m_WaitingNav = false;
if (Separated(site, position, false) && Survey(site, position, heading, floor))
{
position[1] = floor + 0.02;
site.Position = position; site.Heading = heading; site.PlacementResolved = true;
PrintFormat("Reintroduced [terrain site]: id=%1 position=%2 heading=%3 attempts=%4", site.Id, position, heading, m_Attempts);
m_Index++; m_Attempts = 0; m_Began = System.GetTickCount();
m_GeometryRejected = 0; m_NavigationRejected = 0; m_PadRejected = 0;
}
// Give this tile time to stream before testing a different random point.
// A missing/stalled tile must never consume the whole preparation budget.
else if (m_WaitingNav && System.GetTickCount() - m_CandidateBegan < 5000) return ERR_PrepareResult.PENDING;
m_HaveCandidate = false;
}
if (System.GetTickCount() - tick >= 8) return ERR_PrepareResult.PENDING;
}
if (!m_Definition.Valid()) { m_Error = "Generated terrain sites do not preserve required objectives and independent intel sources."; m_Result = ERR_PrepareResult.FAILED; return m_Result; }
m_Result = ERR_PrepareResult.READY; return m_Result;
}
}
@@ -0,0 +1,310 @@
// Experimental opt-in for an existing island scenario. Native multiplayer
// replication must be qualified before recommending this route on live servers.
enum ERR_TerrainTakeoverStage
{
INACTIVE,
SETTLING,
DRAINING,
RUNNING,
FAILED
}
class ERR_TerrainTakeoverRules
{
static bool TimedOut(float elapsed) { return elapsed >= 10; }
static bool MayDrain(float elapsed, bool sameMode) { return elapsed >= 0.5 && sameMode; }
static bool MayCreate(float elapsed, bool empty) { return empty && !TimedOut(elapsed); }
static bool SameAdmission(bool connected, bool sameController, bool identityWasPresent, bool sameIdentity)
{
return connected && sameController && (!identityWasPresent || sameIdentity);
}
}
class ERR_TerrainTakeoverAdmission
{
int Connection;
SCR_PlayerController Controller;
UUID AccountId;
}
modded class SCR_EntityCatalogManagerComponent
{
// Vanilla's singleton is not explicitly reset when its owner is removed.
static void ERR_ReleaseTerrainCatalog(IEntity owner)
{
if (s_Instance && s_Instance.GetOwner() == owner) s_Instance = null;
}
}
modded class SCR_BaseGameMode
{
override void OnPlayerAuditSuccess(int iPlayerID)
{
if (GetGame().ERR_QueueTerrainAdmission(this, iPlayerID)) return;
super.OnPlayerAuditSuccess(iPlayerID);
}
protected override void OnPlayerDisconnected(int playerId, KickCauseCode cause, int timeout)
{
GetGame().ERR_ForgetTerrainAdmission(playerId);
super.OnPlayerDisconnected(playerId, cause, timeout);
}
}
modded class ERR_GameMode
{
[RplProp()] protected bool m_ERRTerrainTakenOver;
bool ERR_TerrainTakenOver() { return m_ERRTerrainTakenOver; }
void ERR_StartTerrainTakeover(World world)
{
m_ERRTerrainTakenOver = true;
Replication.BumpMe();
OnWorldPostProcess(world);
OnGameStart();
}
}
modded class ArmaReforgerScripted
{
protected ERR_TerrainTakeoverStage m_ERRTerrainStage;
protected float m_ERRTerrainElapsed;
protected RadioManagerEntity m_ERRTerrainRadio;
protected EntityID m_ERRTerrainOldLoadoutId;
protected BaseWorld m_ERRTerrainWorld;
protected SCR_BaseGameMode m_ERRTerrainOriginal;
protected ref array<ref ERR_TerrainTakeoverAdmission> m_ERRTerrainAdmissions = {};
protected ref array<vector> m_ERRTerrainAirfields = {};
protected ref array<int> m_ERRTerrainMarkerSlots = {};
override void UnregisterLoadoutManager(SCR_LoadoutManager instance)
{
if (Replication.IsServer() && instance && instance.GetID() == m_ERRTerrainOldLoadoutId && instance != GetLoadoutManager())
{
Print("Reintroduced [terrain takeover]: completed original loadout unregister");
return;
}
super.UnregisterLoadoutManager(instance);
}
void ERR_ForgetTerrainAdmission(int connection)
{
for (int i = m_ERRTerrainAdmissions.Count() - 1; i >= 0; i--)
if (m_ERRTerrainAdmissions[i].Connection == connection) m_ERRTerrainAdmissions.Remove(i);
}
bool ERR_QueueTerrainAdmission(SCR_BaseGameMode mode, int connection)
{
if (m_ERRTerrainStage != ERR_TerrainTakeoverStage.SETTLING && m_ERRTerrainStage != ERR_TerrainTakeoverStage.DRAINING) return false;
if (mode != m_ERRTerrainOriginal || ERR_GameMode.Cast(mode) || !Replication.IsServer()) return false;
ERR_ForgetTerrainAdmission(connection);
SCR_PlayerController controller = SCR_PlayerController.Cast(GetPlayerManager().GetPlayerController(connection));
if (!controller || !GetPlayerManager().IsPlayerConnected(connection)) return true;
ERR_TerrainTakeoverAdmission admission = new ERR_TerrainTakeoverAdmission();
admission.Connection = connection;
admission.Controller = controller;
admission.AccountId = SCR_PlayerIdentityUtils.GetPlayerIdentityId(connection);
m_ERRTerrainAdmissions.Insert(admission);
PrintFormat("Reintroduced [terrain takeover]: held native admission connection=%1", connection);
return true;
}
protected void ERR_ResetTerrainTakeover()
{
m_ERRTerrainStage = ERR_TerrainTakeoverStage.INACTIVE;
m_ERRTerrainElapsed = 0;
m_ERRTerrainRadio = null;
m_ERRTerrainOldLoadoutId = EntityID.INVALID;
m_ERRTerrainWorld = null;
m_ERRTerrainOriginal = null;
m_ERRTerrainAdmissions.Clear();
m_ERRTerrainAirfields.Clear();
m_ERRTerrainMarkerSlots.Clear();
}
protected void ERR_FailTerrainTakeover(string reason)
{
m_ERRTerrainStage = ERR_TerrainTakeoverStage.FAILED;
m_ERRTerrainAdmissions.Clear();
Print("Reintroduced [terrain takeover failed]: " + reason, LogLevel.ERROR);
}
protected bool ERR_PreflightTerrainTakeover()
{
if (!m_ERRTerrainOriginal || !GetWorldEntity() || !GetAIWorld() || !GetAIWorld().GetNavmeshWorldComponent("Soldiers"))
{
ERR_FailTerrainTakeover("Select a plain scenario with SCR_BaseGameMode and a Soldiers navmesh; original scenario retained.");
return false;
}
Resource prefab = Resource.Load("{9D182739ABEF405C}Prefabs/ERR/TerrainTakeover.et");
if (!prefab || !prefab.IsValid())
{
ERR_FailTerrainTakeover("Escape bootstrap prefab is missing; original scenario retained.");
return false;
}
ChimeraWorld chimera = ChimeraWorld.CastFrom(GetWorld());
if (!chimera || !chimera.GetRadioManager())
{
Resource radio = Resource.Load("{B8E09FAB91C4ECCD}Prefabs/Systems/Radio/RadioManager.et");
if (!radio || !radio.IsValid())
{
ERR_FailTerrainTakeover("Radio manager prefab is missing; original scenario retained.");
return false;
}
}
vector low, high;
GetWorldEntity().GetWorldBounds(low, high);
if (!ERR_TerrainSites.Bounds(low, high) || !ERR_TerrainTakeoverSettings.ParseAirfields(ERR_TerrainTakeoverSettings.Airfields(), m_ERRTerrainAirfields))
{
ERR_FailTerrainTakeover("Invalid terrain size or m_sERR_Airfields; use up to 16 X Z pairs separated by semicolons. Original scenario retained.");
return false;
}
foreach (vector centre : m_ERRTerrainAirfields)
{
if (centre[0] < low[0] || centre[0] > high[0] || centre[2] < low[2] || centre[2] > high[2] || ChimeraWorldUtils.TryGetWaterSurfaceSimple(GetWorld(), centre))
{
ERR_FailTerrainTakeover("An airport centre is outside this terrain or over water; original scenario retained.");
return false;
}
}
for (int slot = 0; slot < 16; slot++)
if (!GetWorld().FindEntityByName("ERR_Airfield_" + slot.ToString())) m_ERRTerrainMarkerSlots.Insert(slot);
if (m_ERRTerrainMarkerSlots.Count() < m_ERRTerrainAirfields.Count())
{
ERR_FailTerrainTakeover("Not enough unused ERR_Airfield marker names for configured centres; original scenario retained.");
return false;
}
return true;
}
protected override void OnWorldPostProcess(World world)
{
// Do not opt an existing authored Escape mission into replacement.
if (ERR_TerrainTakeoverSettings.Enabled() && !ERR_GameMode.Get() && Replication.IsServer())
{
ERR_ResetTerrainTakeover();
m_ERRTerrainWorld = world;
m_ERRTerrainOriginal = SCR_BaseGameMode.Cast(GetGameMode());
if (ERR_PreflightTerrainTakeover())
{
m_ERRTerrainStage = ERR_TerrainTakeoverStage.SETTLING;
PrintFormat("Reintroduced [terrain takeover]: enabled; configured airports=%1", m_ERRTerrainAirfields.Count());
}
}
super.OnWorldPostProcess(world);
}
override void OnUpdate(BaseWorld world, float timeslice)
{
super.OnUpdate(world, timeslice);
if (m_ERRTerrainStage != ERR_TerrainTakeoverStage.SETTLING && m_ERRTerrainStage != ERR_TerrainTakeoverStage.DRAINING) return;
if (world != m_ERRTerrainWorld || GetWorld() != m_ERRTerrainWorld || !Replication.IsServer()) { ERR_ResetTerrainTakeover(); return; }
m_ERRTerrainElapsed += timeslice;
if (ERR_TerrainTakeoverRules.TimedOut(m_ERRTerrainElapsed)) { ERR_FailTerrainTakeover("Native manager registrations did not settle within 10 seconds; restart the scenario."); return; }
if (m_ERRTerrainStage == ERR_TerrainTakeoverStage.SETTLING)
{
if (!m_ERRTerrainOriginal || GetGameMode() != m_ERRTerrainOriginal) { ERR_FailTerrainTakeover("Original mode changed during startup; takeover cancelled."); return; }
if (ERR_TerrainTakeoverRules.MayDrain(m_ERRTerrainElapsed, true)) ERR_DrainTerrainMode();
}
else if (ERR_TerrainTakeoverRules.MayCreate(m_ERRTerrainElapsed, ERR_TerrainRegistrationsEmpty())) ERR_CreateTerrainMode();
}
protected void ERR_DrainTerrainMode()
{
array<IEntity> managers = {m_ERRTerrainOriginal, GetLoadoutManager(), GetFactionManager(), GetPerceptionManager(), GetChat()};
ChimeraWorld chimera = ChimeraWorld.CastFrom(GetWorld());
if (chimera) m_ERRTerrainRadio = chimera.GetRadioManager();
// Native radio teardown clears the world pointer even after a replacement
// registers. Retain the terrain radio, detaching it from any removed owner.
if (m_ERRTerrainRadio)
{
IEntity ancestor = m_ERRTerrainRadio.GetParent();
while (ancestor)
{
if (managers.Contains(ancestor))
{
m_ERRTerrainRadio.GetParent().RemoveChild(m_ERRTerrainRadio, true);
if (m_ERRTerrainRadio.GetParent()) { ERR_FailTerrainTakeover("Could not retain the radio manager; original mode retained."); return; }
break;
}
ancestor = ancestor.GetParent();
}
}
Print("Reintroduced [terrain takeover]: stopping original scenario; preserving radio manager");
m_ERRTerrainOriginal.OnGameEnd();
if (m_DataCollectorComponent && m_DataCollectorComponent.GetOwner() == m_ERRTerrainOriginal) m_DataCollectorComponent = null;
SCR_EntityCatalogManagerComponent.ERR_ReleaseTerrainCatalog(m_ERRTerrainOriginal);
if (GetLoadoutManager()) m_ERRTerrainOldLoadoutId = GetLoadoutManager().GetID();
// Script component destructors can run at the end of the frame. Release only
// the original mode's singleton instances before creating the new components.
SCR_AdditionalGameModeSettingsComponent.ERR_ReleaseTerrainSingleton(SCR_AdditionalGameModeSettingsComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_AdditionalGameModeSettingsComponent)));
SCR_PerceivedFactionManagerComponent.ERR_ReleaseTerrainSingleton(SCR_PerceivedFactionManagerComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_PerceivedFactionManagerComponent)));
SCR_PlayerListedAdminManagerComponent.ERR_ReleaseTerrainSingleton(SCR_PlayerListedAdminManagerComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_PlayerListedAdminManagerComponent)));
SCR_IdentityManagerComponent.ERR_ReleaseTerrainSingleton(SCR_IdentityManagerComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_IdentityManagerComponent)));
SCR_ArsenalManagerComponent.ERR_ReleaseTerrainSingleton(SCR_ArsenalManagerComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_ArsenalManagerComponent)));
SCR_GroupsManagerComponent.ERR_ReleaseTerrainSingleton(SCR_GroupsManagerComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_GroupsManagerComponent)));
SCR_SupportStationManagerComponent.ERR_ReleaseTerrainSingleton(SCR_SupportStationManagerComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_SupportStationManagerComponent)));
SCR_TaskFinishHistoryManagerComponent.ERR_ReleaseTerrainSingleton(SCR_TaskFinishHistoryManagerComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_TaskFinishHistoryManagerComponent)));
SCR_TaskManagerUIComponent.ERR_ReleaseTerrainSingleton(SCR_TaskManagerUIComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_TaskManagerUIComponent)));
SCR_TextsTaskManagerComponent.ERR_ReleaseTerrainSingleton(SCR_TextsTaskManagerComponent.Cast(m_ERRTerrainOriginal.FindComponent(SCR_TextsTaskManagerComponent)));
foreach (IEntity manager : managers) if (manager) SCR_EntityHelper.DeleteEntityAndChildren(manager);
m_ERRTerrainStage = ERR_TerrainTakeoverStage.DRAINING;
m_ERRTerrainElapsed = 0;
// Do not leave an artificial gap without a game mode: native connection
// processing cannot create a player controller while no mode is registered.
// On the authority, deletion normally clears these registrations immediately.
if (ERR_TerrainRegistrationsEmpty()) ERR_CreateTerrainMode();
}
protected bool ERR_TerrainRegistrationsEmpty()
{
ChimeraWorld chimera = ChimeraWorld.CastFrom(GetWorld());
return !GetGameMode() && !GetLoadoutManager() && !GetFactionManager() && !GetPerceptionManager() && !GetChat() && (!chimera || chimera.GetRadioManager() == m_ERRTerrainRadio) && !SCR_EntityCatalogManagerComponent.GetInstance() && !m_DataCollectorComponent;
}
protected void ERR_CreateTerrainMode()
{
Print("Reintroduced [terrain takeover]: native registrations cleared");
if (!m_ERRTerrainRadio)
{
m_ERRTerrainRadio = RadioManagerEntity.Cast(SpawnEntityPrefab(Resource.Load("{B8E09FAB91C4ECCD}Prefabs/Systems/Radio/RadioManager.et"), GetWorld()));
if (!m_ERRTerrainRadio) { ERR_FailTerrainTakeover("Could not create missing radio manager; restart the scenario."); return; }
}
for (int i = 0; i < m_ERRTerrainAirfields.Count(); i++)
{
EntitySpawnParams parameters = new EntitySpawnParams();
parameters.TransformMode = ETransformMode.WORLD;
parameters.Transform[3] = m_ERRTerrainAirfields[i];
IEntity marker = SpawnEntity(GenericEntity, GetWorld(), parameters);
if (!marker) { ERR_FailTerrainTakeover("Could not create configured airport marker; restart the scenario."); return; }
marker.SetName("ERR_Airfield_" + m_ERRTerrainMarkerSlots[i].ToString());
}
ERR_GameMode mode = ERR_GameMode.Cast(SpawnEntityPrefab(Resource.Load("{9D182739ABEF405C}Prefabs/ERR/TerrainTakeover.et"), GetWorld()));
if (!mode || GetGameMode() != mode) { ERR_FailTerrainTakeover("Escape game mode could not register; restart the scenario."); return; }
m_ERRTerrainStage = ERR_TerrainTakeoverStage.RUNNING;
mode.ERR_StartTerrainTakeover(GetWorld());
foreach (ERR_TerrainTakeoverAdmission admission : m_ERRTerrainAdmissions)
{
int connection = admission.Connection;
bool connected = GetPlayerManager().IsPlayerConnected(connection);
bool sameController = admission.Controller && GetPlayerManager().GetPlayerController(connection) == admission.Controller;
UUID identity = SCR_PlayerIdentityUtils.GetPlayerIdentityId(connection);
if (ERR_TerrainTakeoverRules.SameAdmission(connected, sameController, !admission.AccountId.IsNull(), identity == admission.AccountId)) mode.OnPlayerAuditSuccess(connection);
else PrintFormat("Reintroduced [terrain takeover]: discarded stale admission connection=%1", connection);
}
m_ERRTerrainAdmissions.Clear();
m_ERRTerrainOriginal = null;
Print("Reintroduced [terrain takeover]: Escape started on selected scenario");
}
override protected void OnBeforeWorldCleanup()
{
ERR_ResetTerrainTakeover();
super.OnBeforeWorldCleanup();
}
}
modded class SCR_SpawnRequestComponent
{
override SCR_SpawnHandlerComponent GetHandlerComponent()
{
ERR_GameMode mode = ERR_GameMode.Get();
if (mode && mode.ERR_TerrainTakenOver())
{
// Controllers that arrived before handover retain the removed handler.
// Resolve directly from the current owner, avoiding any old singleton.
SCR_RespawnSystemComponent system = SCR_RespawnSystemComponent.Cast(mode.FindComponent(SCR_RespawnSystemComponent));
if (system) return SCR_SpawnHandlerComponent.Cast(system.FindComponent(GetHandlerType()));
return null;
}
return super.GetHandlerComponent();
}
}
@@ -0,0 +1,234 @@
// Client bootstrap for the explicitly selected takeover prefab. The native game
// mode pointer already refers to the incoming entity inside its constructor, so
// capture original managers during the original mode's initialization instead.
class ERR_TerrainTakeoverModeClass : ERR_GameModeClass {}
class ERR_TerrainTakeoverMode : ERR_GameMode
{
void ERR_TerrainTakeoverMode(IEntitySource src, IEntity parent)
{
if (!GetGame() || Replication.IsServer()) return;
GetGame().ERR_BeginClientTerrainTakeover(this);
}
}
modded class ArmaReforgerScripted
{
protected ref array<IEntity> m_ERRClientOldManagers = {};
protected bool m_ERRClientTerrainTakeover;
bool ERR_IsClientTerrainTakeover() { return m_ERRClientTerrainTakeover; }
protected SCR_EntityCatalogManagerComponent m_ERROldCatalog;
protected EntityID m_ERROldLoadoutId;
protected SCR_AdditionalGameModeSettingsComponent m_ERROldSettings;
protected SCR_PerceivedFactionManagerComponent m_ERROldPerceivedFaction;
protected SCR_PlayerListedAdminManagerComponent m_ERROldAdmins;
protected SCR_IdentityManagerComponent m_ERROldIdentity;
protected SCR_ArsenalManagerComponent m_ERROldArsenal;
protected SCR_GroupsManagerComponent m_ERROldGroups;
protected SCR_SupportStationManagerComponent m_ERROldSupport;
protected SCR_TaskFinishHistoryManagerComponent m_ERROldTaskHistory;
protected SCR_TaskManagerUIComponent m_ERROldTaskUI;
protected SCR_TextsTaskManagerComponent m_ERROldTaskTexts;
void ERR_ClientCaptureOriginal(SCR_BaseGameMode mode)
{
if (Replication.IsServer() || ERR_GameMode.Cast(mode)) return;
m_ERROldCatalog = SCR_EntityCatalogManagerComponent.GetInstance();
if (GetLoadoutManager()) m_ERROldLoadoutId = GetLoadoutManager().GetID();
m_ERROldSettings = SCR_AdditionalGameModeSettingsComponent.GetInstance();
m_ERROldPerceivedFaction = SCR_PerceivedFactionManagerComponent.GetInstance();
m_ERROldAdmins = SCR_PlayerListedAdminManagerComponent.GetInstance();
m_ERROldIdentity = SCR_IdentityManagerComponent.GetInstance();
m_ERROldArsenal = SCR_ArsenalManagerComponent.Cast(mode.FindComponent(SCR_ArsenalManagerComponent));
m_ERROldGroups = SCR_GroupsManagerComponent.Cast(mode.FindComponent(SCR_GroupsManagerComponent));
m_ERROldSupport = SCR_SupportStationManagerComponent.Cast(mode.FindComponent(SCR_SupportStationManagerComponent));
m_ERROldTaskHistory = SCR_TaskFinishHistoryManagerComponent.Cast(mode.FindComponent(SCR_TaskFinishHistoryManagerComponent));
m_ERROldTaskUI = SCR_TaskManagerUIComponent.Cast(mode.FindComponent(SCR_TaskManagerUIComponent));
m_ERROldTaskTexts = SCR_TextsTaskManagerComponent.Cast(mode.FindComponent(SCR_TextsTaskManagerComponent));
m_ERRClientOldManagers = {mode, GetLoadoutManager(), GetFactionManager(), GetPerceptionManager(), GetChat()};
}
override void UnregisterLoadoutManager(SCR_LoadoutManager instance)
{
if (m_ERRClientTerrainTakeover && instance && instance.GetID() == m_ERROldLoadoutId && instance != GetLoadoutManager())
{
Print("Reintroduced [terrain client]: completed original loadout unregister");
return;
}
super.UnregisterLoadoutManager(instance);
}
override protected void OnBeforeWorldCleanup()
{
m_ERRClientTerrainTakeover = false;
m_ERRClientOldManagers.Clear();
m_ERROldCatalog = null;
m_ERROldSettings = null;
m_ERROldPerceivedFaction = null;
m_ERROldAdmins = null;
m_ERROldIdentity = null;
m_ERROldArsenal = null;
m_ERROldGroups = null;
m_ERROldSupport = null;
m_ERROldTaskHistory = null;
m_ERROldTaskUI = null;
m_ERROldTaskTexts = null;
m_ERROldLoadoutId = EntityID.INVALID;
super.OnBeforeWorldCleanup();
}
void ERR_BeginClientTerrainTakeover(ERR_TerrainTakeoverMode incoming)
{
if (m_ERRClientOldManagers.IsEmpty()) return;
m_ERRClientTerrainTakeover = true;
SCR_BaseGameMode mode = SCR_BaseGameMode.Cast(m_ERRClientOldManagers[0]);
PrintFormat("Reintroduced [terrain client]: drain retained mode=%1 incoming=%2", mode, incoming);
if (mode) mode.OnGameEnd();
// Owner entities can already be invalid while native destruction is deferred.
// Compare the captured component itself, never clear a newer singleton.
SCR_EntityCatalogManagerComponent.ERR_ReleaseClientCatalog(m_ERROldCatalog);
m_DataCollectorComponent = null;
SCR_AdditionalGameModeSettingsComponent.ERR_ReleaseTerrainSingleton(m_ERROldSettings);
SCR_PerceivedFactionManagerComponent.ERR_ReleaseTerrainSingleton(m_ERROldPerceivedFaction);
SCR_PlayerListedAdminManagerComponent.ERR_ReleaseTerrainSingleton(m_ERROldAdmins);
SCR_IdentityManagerComponent.ERR_ReleaseTerrainSingleton(m_ERROldIdentity);
SCR_ArsenalManagerComponent.ERR_ReleaseTerrainSingleton(m_ERROldArsenal);
SCR_GroupsManagerComponent.ERR_ReleaseTerrainSingleton(m_ERROldGroups);
SCR_SupportStationManagerComponent.ERR_ReleaseTerrainSingleton(m_ERROldSupport);
SCR_TaskFinishHistoryManagerComponent.ERR_ReleaseTerrainSingleton(m_ERROldTaskHistory);
SCR_TaskManagerUIComponent.ERR_ReleaseTerrainSingleton(m_ERROldTaskUI);
SCR_TextsTaskManagerComponent.ERR_ReleaseTerrainSingleton(m_ERROldTaskTexts);
foreach (IEntity manager : m_ERRClientOldManagers) if (manager && manager != incoming) delete manager;
m_ERRClientOldManagers.Clear();
PrintFormat("Reintroduced [terrain client]: drained native mode=%1 factions=%2 loadouts=%3", GetGameMode(), GetFactionManager(), GetLoadoutManager());
}
}
modded class SCR_EntityCatalogManagerComponent
{
static void ERR_ReleaseClientCatalog(SCR_EntityCatalogManagerComponent expected)
{
if (s_Instance == expected) s_Instance = null;
}
protected bool m_ERRWaitingForFaction;
void ERR_CompleteFactionInit()
{
if (!m_ERRWaitingForFaction || !GetGame().GetFactionManager()) return;
m_ERRWaitingForFaction = false;
ClearEventMask(GetOwner(), EntityEvent.FRAME);
super.EOnInit(GetOwner());
Print("Reintroduced [terrain client]: catalog completed during faction initialization");
}
override void EOnInit(IEntity owner)
{
if (!Replication.IsServer() && ERR_TerrainTakeoverMode.Cast(owner) && !GetGame().GetFactionManager())
{
m_ERRWaitingForFaction = true;
SetEventMask(owner, EntityEvent.FRAME);
return;
}
super.EOnInit(owner);
}
override void EOnFrame(IEntity owner, float timeSlice)
{
if (!m_ERRWaitingForFaction || !GetGame().GetFactionManager()) return;
m_ERRWaitingForFaction = false;
ClearEventMask(owner, EntityEvent.FRAME);
super.EOnInit(owner);
Print("Reintroduced [terrain client]: catalog initialized after factions");
}
}
modded class SCR_DelegateFactionManagerComponent
{
override void OnFactionsInit(array<Faction> factions)
{
if (!Replication.IsServer() && GetGame().ERR_IsClientTerrainTakeover())
{
SCR_EntityCatalogManagerComponent catalog = SCR_EntityCatalogManagerComponent.GetInstance();
if (catalog) catalog.ERR_CompleteFactionInit();
SCR_IdentityManagerComponent identity = SCR_IdentityManagerComponent.GetInstance();
if (identity) identity.ERR_CompleteTerrainFactionInit();
// The server replicates these delegates. During the initial snapshot the
// vanilla Runtime() guard is false and would create duplicates on the client.
return;
}
super.OnFactionsInit(factions);
}
}
// Both peers consume the same extra index before the vanilla payload. Vanilla
// RplLoad dereferences its faction before applying its own serialized index;
// runtime takeover delegates must bind first. Ordinary missions only consume
// the prefix and retain their normal initialization.
modded class SCR_EditableFactionComponent
{
override bool RplSave(ScriptBitWriter writer)
{
writer.WriteInt(m_iFactionIndex);
return super.RplSave(writer);
}
override bool RplLoad(ScriptBitReader reader)
{
int initialIndex;
if (!reader.ReadInt(initialIndex)) return false;
if (GetGame().ERR_IsClientTerrainTakeover() && !m_ScrFaction)
{
SetFactionIndexBroadcast(initialIndex);
if (!m_ScrFaction) return false;
}
return super.RplLoad(reader);
}
}
modded class SCR_BaseGameMode
{
override void EOnInit(IEntity owner)
{
super.EOnInit(owner);
GetGame().ERR_ClientCaptureOriginal(this);
}
}
modded class SCR_AdditionalGameModeSettingsComponent
{
static void ERR_ReleaseTerrainSingleton(SCR_AdditionalGameModeSettingsComponent expected)
{
if (s_Instance == expected) s_Instance = null;
}
}
modded class SCR_PerceivedFactionManagerComponent
{
static void ERR_ReleaseTerrainSingleton(SCR_PerceivedFactionManagerComponent expected)
{
if (s_Instance == expected) s_Instance = null;
}
}
modded class SCR_PlayerListedAdminManagerComponent
{
static void ERR_ReleaseTerrainSingleton(SCR_PlayerListedAdminManagerComponent expected)
{
if (m_Instance == expected) m_Instance = null;
}
}
modded class SCR_IdentityManagerComponent
{
protected bool m_ERRWaitingForTerrainFaction;
override void EOnInit(IEntity owner)
{
if (!Replication.IsServer() && GetGame().ERR_IsClientTerrainTakeover() && ERR_TerrainTakeoverMode.Cast(owner) && !GetGame().GetFactionManager())
{
m_ERRWaitingForTerrainFaction = true;
return;
}
super.EOnInit(owner);
}
void ERR_CompleteTerrainFactionInit()
{
if (!m_ERRWaitingForTerrainFaction || !GetGame().GetFactionManager()) return;
m_ERRWaitingForTerrainFaction = false;
super.EOnInit(GetOwner());
}
static void ERR_ReleaseTerrainSingleton(SCR_IdentityManagerComponent expected)
{
if (m_sInstance == expected) m_sInstance = null;
}
}
@@ -0,0 +1,95 @@
// Vanilla caches are tied to the original game mode. Release its exact
// components before takeover. Some vanilla destructors unconditionally clear
// their static cache later; resolve those getters from the current takeover
// owner so delayed destruction cannot invalidate the replacement.
modded class SCR_ArsenalManagerComponent
{
static void ERR_ReleaseTerrainSingleton(SCR_ArsenalManagerComponent expected)
{
if (s_Instance == expected) s_Instance = null;
}
}
modded class SCR_GroupsManagerComponent
{
static void ERR_ReleaseTerrainSingleton(SCR_GroupsManagerComponent expected)
{
if (s_Instance == expected) s_Instance = null;
}
}
modded class SCR_SupportStationManagerComponent
{
static void ERR_ReleaseTerrainSingleton(SCR_SupportStationManagerComponent expected)
{
if (s_Instance == expected) s_Instance = null;
}
}
modded class SCR_TaskFinishHistoryManagerComponent
{
static void ERR_ReleaseTerrainSingleton(SCR_TaskFinishHistoryManagerComponent expected)
{
if (s_Instance == expected) s_Instance = null;
}
override static SCR_TaskFinishHistoryManagerComponent GetInstance()
{
ERR_TerrainTakeoverMode mode;
if (GetGame()) mode = ERR_TerrainTakeoverMode.Cast(GetGame().GetGameMode());
if (mode) return SCR_TaskFinishHistoryManagerComponent.Cast(mode.FindComponent(SCR_TaskFinishHistoryManagerComponent));
return super.GetInstance();
}
}
modded class SCR_TaskManagerUIComponent
{
static void ERR_ReleaseTerrainSingleton(SCR_TaskManagerUIComponent expected)
{
if (s_Instance == expected) s_Instance = null;
}
override static SCR_TaskManagerUIComponent GetInstance()
{
ERR_TerrainTakeoverMode mode;
if (GetGame()) mode = ERR_TerrainTakeoverMode.Cast(GetGame().GetGameMode());
if (mode) return SCR_TaskManagerUIComponent.Cast(mode.FindComponent(SCR_TaskManagerUIComponent));
return super.GetInstance();
}
}
modded class SCR_TextsTaskManagerComponent
{
static void ERR_ReleaseTerrainSingleton(SCR_TextsTaskManagerComponent expected)
{
if (s_Instance == expected) s_Instance = null;
}
override static SCR_TextsTaskManagerComponent GetInstance()
{
ERR_TerrainTakeoverMode mode;
if (GetGame()) mode = ERR_TerrainTakeoverMode.Cast(GetGame().GetGameMode());
if (mode) return SCR_TextsTaskManagerComponent.Cast(mode.FindComponent(SCR_TextsTaskManagerComponent));
return super.GetInstance();
}
}
modded class SCR_MapMarkerManagerComponent
{
override static SCR_MapMarkerManagerComponent GetInstance()
{
ERR_TerrainTakeoverMode mode;
if (GetGame()) mode = ERR_TerrainTakeoverMode.Cast(GetGame().GetGameMode());
if (mode) return SCR_MapMarkerManagerComponent.Cast(mode.FindComponent(SCR_MapMarkerManagerComponent));
return super.GetInstance();
}
}
modded class SCR_RespawnSystemComponent
{
override static SCR_RespawnSystemComponent GetInstance()
{
ERR_TerrainTakeoverMode mode;
if (GetGame()) mode = ERR_TerrainTakeoverMode.Cast(GetGame().GetGameMode());
if (mode) return SCR_RespawnSystemComponent.Cast(mode.FindComponent(SCR_RespawnSystemComponent));
return super.GetInstance();
}
}
@@ -0,0 +1,67 @@
// The server selects the island's existing scenario. No island dependency is
// added to Escape, and no world resource is changed by these settings.
modded class SCR_MissionHeader
{
[Attribute("0", desc: "Experimental: replace this scenario's game mode with Escape. Use a plain terrain exploration scenario.")]
bool m_bERR_EnableEscape;
[Attribute("", desc: "Optional airport centres: X Z pairs separated by semicolons, for example 1525 5075. Up to 16 centres.")]
string m_sERR_Airfields;
}
class ERR_TerrainTakeoverSettings
{
static bool Coordinate(string value, out float number)
{
if (value.IsEmpty() || value.Length() > 16) return false;
bool digit, dot;
for (int i = 0; i < value.Length(); i++)
{
string character = value.Substring(i, 1);
if (i == 0 && character == "-") continue;
if (character == "." && !dot) { dot = true; continue; }
if ("0123456789".IndexOf(character) < 0) return false;
digit = true;
}
if (!digit) return false;
number = value.ToFloat();
return number >= -1000000 && number <= 1000000;
}
static bool ParseAirfields(string text, array<vector> centres)
{
centres.Clear();
text.TrimInPlace();
if (text.IsEmpty()) return true;
if (text.Length() > 1024) return false;
array<string> entries = {};
text.Split(";", entries, false);
if (entries.IsEmpty() || entries.Count() > 16) return false;
foreach (string entry : entries)
{
entry.TrimInPlace();
array<string> pair = {};
entry.Split(" ", pair, true);
float x, z;
if (pair.Count() != 2 || !Coordinate(pair[0], x) || !Coordinate(pair[1], z)) { centres.Clear(); return false; }
centres.Insert(Vector(x, 0, z));
}
return true;
}
static bool Enabled()
{
if (!GetGame() || SCR_Global.IsEditMode()) return false;
SCR_MissionHeader header = SCR_MissionHeader.Cast(GetGame().GetMissionHeader());
if (header && header.m_bERR_EnableEscape) return true;
// Also support owner-controlled CLI launches (including local-mod servers
// and Workbench play, which may not apply mission-header JSON overrides).
string enabled;
return System.GetCLIParam("errTerrainTakeover", enabled) && enabled == "1";
}
static string Airfields()
{
SCR_MissionHeader header = SCR_MissionHeader.Cast(GetGame().GetMissionHeader());
if (header && header.m_bERR_EnableEscape) return header.m_sERR_Airfields;
string centres;
System.GetCLIParam("errAirfields", centres);
return centres;
}
}
@@ -0,0 +1,15 @@
modded class ArmaReforgerScripted
{
protected float m_ERRPairNext;
override void OnUpdate(BaseWorld world, float timeslice)
{
super.OnUpdate(world, timeslice);
m_ERRPairNext -= timeslice;
if (m_ERRPairNext > 0) return;
m_ERRPairNext = 5;
if (!GetGameMode()) return;
ERR_GameMode escape = ERR_GameMode.Get();
bool takeover = escape && escape.ERR_TerrainTakenOver();
PrintFormat("ERR TERRAIN PAIR: session=%1 server=%2 mode=%3 takeover=%4 controller=%5", RplSession.Mode(), Replication.IsServer(), GetGameMode().Type().ToString(), takeover, GetPlayerController() != null);
}
}
@@ -0,0 +1,65 @@
modded class ArmaReforgerScripted
{
protected float m_ERRManagerNext;
override void OnUpdate(BaseWorld world, float timeslice)
{
super.OnUpdate(world, timeslice);
m_ERRManagerNext -= timeslice;
if (m_ERRManagerNext > 0) return;
m_ERRManagerNext = 5;
ERR_GameMode mode = ERR_GameMode.Get();
if (!mode || !mode.ERR_TerrainTakenOver()) return;
ChimeraWorld chimera = ChimeraWorld.CastFrom(GetWorld());
PrintFormat("ERR NATIVE POINTERS: faction=%1 loadouts=%2 perception=%3 chat=%4 radio=%5", GetFactionManager(), GetLoadoutManager(), GetPerceptionManager(), GetChat(), chimera.GetRadioManager());
SCR_AdditionalGameModeSettingsComponent settings = SCR_AdditionalGameModeSettingsComponent.GetInstance();
SCR_PerceivedFactionManagerComponent perceived = SCR_PerceivedFactionManagerComponent.GetInstance();
SCR_PlayerListedAdminManagerComponent admins = SCR_PlayerListedAdminManagerComponent.GetInstance();
SCR_IdentityManagerComponent identity = SCR_IdentityManagerComponent.GetInstance();
SCR_EntityCatalogManagerComponent catalog = SCR_EntityCatalogManagerComponent.GetInstance();
PrintFormat("ERR FACTION CACHE PROOF: catalog=%1 identity=%2", catalog && catalog.ERR_ProbeFactionCurrent(), identity && identity.ERR_ProbeFactionCurrent());
SCR_ArsenalManagerComponent arsenal;
SCR_ArsenalManagerComponent.GetArsenalManager(arsenal);
SCR_GroupsManagerComponent groups = SCR_GroupsManagerComponent.GetInstance();
SCR_SupportStationManagerComponent support = SCR_SupportStationManagerComponent.GetInstance();
SCR_MapMarkerManagerComponent markers = SCR_MapMarkerManagerComponent.GetInstance();
SCR_TaskFinishHistoryManagerComponent history = SCR_TaskFinishHistoryManagerComponent.GetInstance();
SCR_TaskManagerUIComponent taskUI = SCR_TaskManagerUIComponent.GetInstance();
SCR_TextsTaskManagerComponent texts = SCR_TextsTaskManagerComponent.GetInstance();
SCR_RespawnSystemComponent respawn = SCR_RespawnSystemComponent.GetInstance();
PrintFormat("ERR EXTRA MANAGERS: arsenal=%1 groups=%2 support=%3 markers=%4 history=%5 taskUI=%6 texts=%7 respawn=%8", arsenal && arsenal.GetOwner() == mode, groups && groups.GetOwner() == mode, support && support.GetOwner() == mode, markers && markers.GetOwner() == mode, history && history.GetOwner() == mode, taskUI && taskUI.GetOwner() == mode, texts && texts.GetOwner() == mode, respawn && respawn.GetOwner() == mode);
PrintFormat("ERR MANAGER PROOF: settings=%1 perceived=%2 admins=%3 identity=%4 catalog=%5 factions=%6 loadouts=%7 perception=%8 chat=%9", settings && settings.GetOwner() == mode, perceived && perceived.GetOwner() == mode, admins && admins.GetOwner() == mode, identity && identity.GetOwner() == mode, catalog && catalog.GetOwner() == mode, GetFactionManager() != null, GetLoadoutManager() != null, GetPerceptionManager() != null, GetChat() != null);
}
}
modded class SCR_EntityCatalogManagerComponent
{
bool ERR_ProbeFactionCurrent() { return m_FactionManager && m_FactionManager == GetGame().GetFactionManager(); }
}
modded class SCR_IdentityManagerComponent
{
bool ERR_ProbeFactionCurrent() { return m_FactionManager && m_FactionManager == GetGame().GetFactionManager(); }
}
class ERR_PairRestartProof
{
static bool Requested;
}
modded class ArmaReforgerScripted
{
protected float m_ERRRestartDelay = 80;
override void OnUpdate(BaseWorld world, float timeslice)
{
super.OnUpdate(world, timeslice);
ERR_GameMode mode = ERR_GameMode.Get();
if (!Replication.IsServer() || !mode || !mode.Active() || GetPlayerManager().GetPlayerCount() < 1 || ERR_PairRestartProof.Requested) return;
m_ERRRestartDelay -= timeslice;
if (m_ERRRestartDelay > 0) return;
ERR_PairRestartProof.Requested = true;
PrintFormat("ERR CONNECTED RESTART: players=%1 accepted=%2", GetPlayerManager().GetPlayerCount(), GameStateTransitions.RequestScenarioRestart());
}
override protected void OnBeforeWorldCleanup()
{
super.OnBeforeWorldCleanup();
PrintFormat("ERR PAIR CLEANUP: server=%1 clientFlag=%2 stage=%3 worldClear=%4 oldModeClear=%5 elapsed=%6 admissions=%7 airports=%8 slots=%9", Replication.IsServer(), GetGame().ERR_IsClientTerrainTakeover(), m_ERRTerrainStage, m_ERRTerrainWorld == null, m_ERRTerrainOriginal == null, m_ERRTerrainElapsed, m_ERRTerrainAdmissions.Count(), m_ERRTerrainAirfields.Count(), m_ERRTerrainMarkerSlots.Count());
}
}
@@ -0,0 +1,4 @@
MetaFileClass {
Name "{9D182739ABEF405C}Prefabs/ERR/TerrainTakeover.et"
Configurations { ResourceClass PC {} ResourceClass HEADLESS : PC {} }
}
@@ -0,0 +1,24 @@
ERR_TerrainTakeoverMode : "{978E045E53EF36C8}Prefabs/ERR/GameMode.et" {
ID "F39C0AB761E582D4"
components {
Hierarchy "{3DC8FB32DE3E1EBD}" {}
ERR_ScenarioComponent "{B78E910E88DE30D2}" {
m_TerrainIndependent 1
}
}
{
PerceptionManager Perception : "{028DAEAD63E056BE}Prefabs/World/Game/PerceptionManager.et" {
ID "1CD3AA95056E2D65"
}
SCR_FactionManager Factions : "{5414041A15DC4B54}Prefabs/ERR/FactionManager.et" {
ID "9FE86AC6892BF013"
}
SCR_LoadoutManager Loadouts : "{97EF4C1A41F63DDB}Prefabs/MP/Managers/Loadouts/LoadoutManager_USxUSSR.et" {
ID "588AD55F7655278B"
}
ScriptedChatEntity Chat : "{F69BC912AC8236F9}Prefabs/MP/ScriptedChatEntity.et" {
ID "85ED17B0836DB4A2"
components { RplComponent "{CA456708D69D73BA}" { Streamable Disabled } }
}
}
}
@@ -0,0 +1,48 @@
[
"bwrap",
"--unshare-net",
"--unshare-pid",
"--unshare-ipc",
"--unshare-uts",
"--die-with-parent",
"--cap-drop",
"ALL",
"--clearenv",
"--ro-bind",
"/",
"/",
"--tmpfs",
"/tmp",
"--proc",
"/proc",
"--dev",
"/dev",
"--ro-bind",
"/tmp/erri-takeover-dedicated-runtime",
"/tmp/runtime",
"--bind",
"/tmp/erri-takeover-pair-source28",
"/tmp/erri-takeover-pair-source28",
"--bind",
"/tmp/erri-takeover-pair28",
"/tmp/work",
"--setenv",
"HOME",
"/tmp/work/home",
"--setenv",
"TMPDIR",
"/tmp/work/tmp",
"--setenv",
"PATH",
"/usr/bin:/bin",
"--setenv",
"LANG",
"C.UTF-8",
"--chdir",
"/tmp/runtime",
"/usr/bin/python3",
"/tmp/work/network_probe.py",
"net:[4026531833]",
"/usr/bin/python3",
"/tmp/work/inner.py"
]
@@ -0,0 +1,802 @@
{
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/ServerData.json": {
"stat": [
46,
916830,
209,
1789670354123815627,
1789670354123815627
],
"sha256": "c5d88d82138bc80c95f364075c3a0fc2228f9c15c6230398f3728a13d25b418c"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/addon.gproj": {
"stat": [
46,
26917910,
335,
1789670330884205142,
1789670353823807747
],
"sha256": "65197c50ff6e906a5732564e8b440d80ef1cdbcffead9eb388e1e2b56c1322bc"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/addon.gproj_0.16.5208_manifest.json": {
"stat": [
46,
26917892,
362,
1789670307618593786,
1789670307618593786
],
"sha256": "17b87e0976ac2da1032f1661a884f6d59b56c00823b2fcfdc2a698ea8bcc92cc"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/data.pak": {
"stat": [
46,
26917928,
1992582478,
1789670344310557863,
1789670353824807774
],
"sha256": "e5db31f571782997640a67601ebd3bd6e6615c1548274c71b6ab0cdd794f8bf5"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/data.pak_0.16.5208_manifest.json": {
"stat": [
46,
26917893,
232459,
1789670307954602617,
1789670307954602617
],
"sha256": "855813254cd72dc87515f4c395e7c7defe4b145ac809a740f81c85ca546b36fe"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/data001.pak": {
"stat": [
46,
26917986,
1993657251,
1789670345496589019,
1789670354029813158
],
"sha256": "2bda9c533834dfa2b8e29f4a2a905c30639dabe250554e1346cf1f5dae3f2db3"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/data001.pak_0.16.5208_manifest.json": {
"stat": [
46,
26917900,
349870,
1789670308754623642,
1789670308754623642
],
"sha256": "d4ec79f2a5cf03dd44bcc4513199056195dfda3c7a5c6bbfd17b2c709b746cdc"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/data002.pak": {
"stat": [
46,
26917956,
1992567795,
1789670345532589964,
1789670353970811608
],
"sha256": "dfbd716c2a0849910a8058b1f008b8403b8c506fe18c3168d2844383ac02988c"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/data002.pak_0.16.5208_manifest.json": {
"stat": [
46,
26917897,
332016,
1789670308247610318,
1789670308247610318
],
"sha256": "3de05138d1d635f1ba5bcbd74a0f91028bfd59082f45c740051381bd054404b5"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/data003.pak": {
"stat": [
46,
26917964,
364877149,
1789670333444272402,
1789670354017812842
],
"sha256": "6225936ebc266825bbd1c79e4e0020c9f2fb55c3d3501ed66e72d87436ccd015"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/data003.pak_0.16.5208_manifest.json": {
"stat": [
46,
26917898,
96448,
1789670308423614944,
1789670308423614944
],
"sha256": "8ca2504191def96715ddd6ee98a8df1e3f0951e5755592801eab662657289dd0"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/meta": {
"stat": [
46,
911092,
8188,
1789670354121815574,
1789670354121815574
],
"sha256": "cb4f4296d087ea5fe2e849b0fc960748bfede7ea3071eeb545bd7bd309be6bfb"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/resourceDatabase.rdb": {
"stat": [
46,
26917967,
566987,
1789670331096210712,
1789670354028813131
],
"sha256": "e8706d6b9bb2474b65f7c588de9fcfad4516bd26dc12e7b6b687e7973a41e7a6"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/resourceDatabase.rdb_0.16.5208_manifest.json": {
"stat": [
46,
26917899,
368,
1789670308546618176,
1789670308546618176
],
"sha256": "336f9160ad955caa88d286915195699d3ac36f3363391967a178be0fd2ccd914"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/thumbnail.png": {
"stat": [
46,
26917907,
18180,
1789670330627887201,
1789670353823807747
],
"sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack01_1337C0DE5DABBEEF/thumbnail.png_0.16.5208_manifest.json": {
"stat": [
46,
26917891,
366,
1789670307490590423,
1789670307490590423
],
"sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/ServerData.json": {
"stat": [
46,
910012,
2789,
1789670389999757705,
1789670389999757705
],
"sha256": "0432a068d8d77e34afd10432d1459df1334238e1ec416c896f13b84bae5a3ac5"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/addon.gproj": {
"stat": [
46,
26919135,
1100,
1789670379744488450,
1789670389873754397
],
"sha256": "1b83e9df126db639cfcdb6d5119e65a1581c028becd6c09998143ed527ad0721"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/addon.gproj_0.16.5208_manifest.json": {
"stat": [
46,
26919120,
364,
1789670378419453659,
1789670378419453659
],
"sha256": "d232c4cfc959267482bbf261eb2e5121c76b6bf7d8893c58c520a763df5ca5f8"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/data.pak": {
"stat": [
46,
26919141,
203378761,
1789670389138735100,
1789670389946756313
],
"sha256": "985d0cde7b09ee860086cb386cf624fcfd94b5e82b26af0b33bab83f21d06988"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/data.pak_0.16.5208_manifest.json": {
"stat": [
46,
26919122,
1409173,
1789670378781463164,
1789670378781463164
],
"sha256": "041c8ebdf035c69aed7c04bb55be839fbdbd7bc8501862dd4939c1d71cdfe8c5"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/meta": {
"stat": [
46,
902077,
12660,
1790780651747608053,
1790780651747608053
],
"sha256": "763eb04285ccaa2f64455d7593be3b9feb2453ddd2e1e1b238aa1244a2d59643"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/resourceDatabase.rdb": {
"stat": [
46,
26919132,
823768,
1789670379822490498,
1789670389872754371
],
"sha256": "25f6405084fd228ff400868b21f033c4c43d44162ce73de562e06d8003b94a49"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/resourceDatabase.rdb_0.16.5208_manifest.json": {
"stat": [
46,
26919119,
368,
1789670378283450088,
1789670378283450088
],
"sha256": "986f0280a79b0e4ff6d9a3ad60570bebd86ce68869c9f3d5954141f7d5060cb1"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/thumbnail.png": {
"stat": [
46,
26919138,
18180,
1789670379618193709,
1789670389873754397
],
"sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-StatusQuo_595F2BF2F44836FB/thumbnail.png_0.16.5208_manifest.json": {
"stat": [
46,
26919121,
366,
1789670378550457099,
1789670378550457099
],
"sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/ServerData.json": {
"stat": [
46,
919166,
197,
1789670369327462097,
1789670369327462097
],
"sha256": "4bcd7610056ed1d366e9b6d0600e80c622a1af35caecf5c9ecf2c7b9e2b626f7"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/addon.gproj": {
"stat": [
46,
26918585,
2957,
1789670367793432952,
1789670369299906650
],
"sha256": "2db2e318e6f45bede0d1173d77af03314f888aedfb31bc767d569ccfb6e70a34"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/addon.gproj_8.2.1_manifest.json": {
"stat": [
46,
26918576,
364,
1789670367178158473,
1789670367178158473
],
"sha256": "67d15a8e8623130546332c6d6433314cbdf38e034a66330b9c7a739a94731e21"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/data.pak": {
"stat": [
46,
26918592,
43626712,
1789670369105209079,
1789670369315214594
],
"sha256": "80e9810c9b7c873187660d0ddf002a63d1a382e81fc3611baa0ae8fdfff29d3d"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/data.pak_8.2.1_manifest.json": {
"stat": [
46,
26918578,
66352,
1789670367560168505,
1789670367560168505
],
"sha256": "6635291a1f1aa9cffdb844e241c36cdc04114574279bab66e21613410f5e5686"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/meta": {
"stat": [
46,
918678,
2338,
1789670369325214856,
1789670369325214856
],
"sha256": "dd1c683c086efb292e6cc927bd6522a1ea97ebd454e8148356f66554ebcdd4dc"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/resourceDatabase.rdb": {
"stat": [
46,
26918588,
44111,
1789670367937178405,
1789670369300214199
],
"sha256": "c4293fef30948a3538751533cc52c9ce449ffada931b47a8fdf1ca48c1618e75"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/resourceDatabase.rdb_8.2.1_manifest.json": {
"stat": [
46,
26918577,
366,
1789670367326162360,
1789670367326162360
],
"sha256": "df8cd07ff81263e4108688883b9f20568041f067dbad74402464ec2f88432b69"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/thumbnail.png": {
"stat": [
46,
26918582,
689401,
1789670367794174651,
1789670369299906650
],
"sha256": "8da2e133303f21bb16a2abd25d5bd6c2a4a6f5eccedae74a98358db485a170d1"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/SpaceCore_5E389BB9F58B79A6/thumbnail.png_8.2.1_manifest.json": {
"stat": [
46,
26918574,
368,
1789670367051155138,
1789670367051155138
],
"sha256": "5aaa5989b5f44b48ff03082a0d4004ae71420db6eebeb56282af7d98f36c7000"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/ServerData.json": {
"stat": [
46,
918673,
193,
1789670366131482045,
1789670366131482045
],
"sha256": "92ff4ae6fec8afc679726186f424bb31c9918d182f321afca4696654844e39c7"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/addon.gproj": {
"stat": [
46,
26918544,
2900,
1789670364825147789,
1789670366119130662
],
"sha256": "ad44151140adf62e99eaa639984c2b9c400be17481e934186d61c307b5221259"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/addon.gproj_8.2.0_manifest.json": {
"stat": [
46,
26918530,
364,
1789670364263081920,
1789670364263081920
],
"sha256": "3065c7c353cb7623ee85f83d462d4dac37c92efad1a0255f2661470e6cedfd0f"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/data.pak": {
"stat": [
46,
26918541,
119808197,
1789670365649118318,
1789670366115130557
],
"sha256": "f715ad5fa3de788061a66a3ccd933feead5cc1631507ca63e9061049c538fab6"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/data.pak_8.2.0_manifest.json": {
"stat": [
46,
26918528,
25795,
1789670364132078479,
1789670364132078479
],
"sha256": "24a7f735e55ccfacc5cdacbb39fb76a6fac294f4cdc47dca0fcb6e3f1919f1e6"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/gallery0_776x436.jpg": {
"stat": [
46,
23106914,
64588,
1788720671481676966,
1788720671481676966
],
"sha256": "63649f5239059dd12234250b8c8e313b14ca134e30e4309fbd1eb45f92e77097"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/gallery1_776x436.jpg": {
"stat": [
46,
23106915,
47808,
1788720671495639547,
1788720671495639547
],
"sha256": "81f89b026a1bf341f8cd3bb19facd67e8d0f56073c924e026983836fee6bfb4c"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/meta": {
"stat": [
46,
918496,
2928,
1789670366129130924,
1789670366129130924
],
"sha256": "ad0f9baa154a250712c94b50c5edcb25200002bdc186d35453b5e8c32c0b6ee5"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/resourceDatabase.rdb": {
"stat": [
46,
26918535,
16514,
1789670364934099542,
1789670366080129638
],
"sha256": "c65677e8767d92c96c6f35b482350d56e3dccfa026a3c5470b332120990f047c"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/resourceDatabase.rdb_8.2.0_manifest.json": {
"stat": [
46,
26918527,
366,
1789670364004075117,
1789670364004075117
],
"sha256": "fdc44be4e1523db5965b015a7ea511623399a5fb3548aaaf8b2a4807fc6ade7d"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/thumbnail.png": {
"stat": [
46,
26918547,
708338,
1789670364826600016,
1789670366119130662
],
"sha256": "103a98bf476d510ab3081abb371170ae6cf65aea65b9095636d651170a5b0038"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/BMP-1IFV_5E524E4FEECCA92B/thumbnail.png_8.2.0_manifest.json": {
"stat": [
46,
26918531,
368,
1789670364388085202,
1789670364388085202
],
"sha256": "5bf1e0f8794a4e2e862658a10071360df63ed6a440ee2ca5514afbc2e97e375e"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/ServerData.json": {
"stat": [
46,
920134,
197,
1789670377639162612,
1789670377639162612
],
"sha256": "8e5e6b2fe4099ca90bb4498c9479924e775ca0eac411c8230114143ff1a8297a"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/addon.gproj": {
"stat": [
46,
26918715,
2926,
1789670371305266851,
1789670377499241577
],
"sha256": "e6ffcf559a2e7898848349c090300ea8eca8cb2e13ecef456a108bcc82efc8b1"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/addon.gproj_8.2.1_manifest.json": {
"stat": [
46,
26918707,
364,
1789670369590221815,
1789670369590221815
],
"sha256": "ba8f2b36575408f11b2107fc4b0f9449c9dc057629ebf894c7bdbc77f53cbc1f"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/data.pak": {
"stat": [
46,
26918730,
395962643,
1789670376182394919,
1789670377620432679
],
"sha256": "84a2cf01e2d17a06f8d775ca542a0cc98739f9f4b75b79826017e1387faedb18"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/data.pak_8.2.1_manifest.json": {
"stat": [
46,
26918711,
214221,
1789670370007232766,
1789670370007232766
],
"sha256": "dc3ff832bce708121c61a5dfe09be8504352556c50341f9878f4b457e165ade2"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/meta": {
"stat": [
46,
919170,
2504,
1789670377637433125,
1789670377637433125
],
"sha256": "2863bb2bdb586286f8aedc34d5dfb6adbdaafd5fca0f8f21136c7a5351d1ce88"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/resourceDatabase.rdb": {
"stat": [
46,
26918718,
141469,
1789670371389269057,
1789670377499429501
],
"sha256": "7f38b7ed578b0b47864648a7b70288fe49dae4cc2556d5754377a1c28b2b6532"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/resourceDatabase.rdb_8.2.1_manifest.json": {
"stat": [
46,
26918708,
368,
1789670369714225072,
1789670369714225072
],
"sha256": "2ffa1cf6f8c07600147ae779ee3be1ccec8da23cb1c10d8c73e0c5c5d3dc6d06"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/thumbnail.png": {
"stat": [
46,
26918721,
689544,
1789670371307273812,
1789670377500429528
],
"sha256": "ccd771dba7f3f222e9733e688e6dd9e4c5edae2accdd80a6876241094e23f3dd"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/WCS_Armaments_629B2BA37EFFD577/thumbnail.png_8.2.1_manifest.json": {
"stat": [
46,
26918710,
368,
1789670369835228249,
1789670369835228249
],
"sha256": "e58ef73e4a794e56ecd04bfd84940ec539e5ca481d6b69ffb20f9fedcd3c2e77"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/ServerData.json": {
"stat": [
46,
23608865,
764,
1788881939235881733,
1788881939235881733
],
"sha256": "ec665641799be1f97100937ce87c894a88bee99526fac0695303c339121e8bd1"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/addon.gproj": {
"stat": [
46,
23608826,
124,
1788881938831871187,
1788881938831871187
],
"sha256": "183fbb521382a95ad33af9efc547147a80241bd536a29d124c93064b5ae5e8bc"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/addon.gproj_1.2.0_manifest.json": {
"stat": [
46,
23608818,
362,
1788881938288857014,
1788881938288857014
],
"sha256": "5030f4430dbd237d93fbcc49ab5c667241b803f1beee4060498e882ea85c9d7f"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/data.pak": {
"stat": [
46,
23608829,
5048302,
1788881939131386944,
1788881939131386944
],
"sha256": "ccb22523ba0040cb9d9206a7ab0ae7e5b4411b1704bde39e3e4a7953416e3042"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/data.pak_1.2.0_manifest.json": {
"stat": [
46,
23608820,
4696,
1788881938426860616,
1788881938426860616
],
"sha256": "168504d70f88650b0e7acbdcc80ef384ee5b90e2f044839f837b1220b767afcb"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/meta": {
"stat": [
46,
23608819,
5088,
1788881955440304751,
1788881955440304751
],
"sha256": "178156f61a332f596dc3783c4d02b0ab5d50a47d4aa1572395760d0fe062500b"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/resourceDatabase.rdb": {
"stat": [
46,
23608835,
3188,
1788881939082877739,
1788881939082877739
],
"sha256": "0994a4b1fcfacdd8d8f69759ba6bde878d633545e380a5774a05e4cac3b6b2c4"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/resourceDatabase.rdb_1.2.0_manifest.json": {
"stat": [
46,
23608822,
364,
1788881938690867507,
1788881938690867507
],
"sha256": "6a0793ea2080ae22fac1efd6d3da3ddb3100fd0b60869098e5572be66318c883"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/thumbnail.png": {
"stat": [
46,
23608832,
2255011,
1788881939194880662,
1788881939194880662
],
"sha256": "715ac1bf4b6abefb2726cc4c61e903e63ae3a2bfec1e8a85be6cb81eb308407a"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/ParachuteFramework_65930CB4CD0237B2/thumbnail.png_1.2.0_manifest.json": {
"stat": [
46,
23608821,
370,
1788881938560864114,
1788881938560864114
],
"sha256": "2bd7127d58adee39c3aa1e2212436499b10adf4fe2faa0b3ed5fcadbfaaae768"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/ServerData.json": {
"stat": [
46,
911088,
209,
1789670428409812415,
1789670428409812415
],
"sha256": "90353d1b4ab072f7844bf24d8066031efd69feb76ddcbf66dea34b52ddfe0a1c"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/addon.gproj": {
"stat": [
46,
26919414,
336,
1789670399470006320,
1789670428369764835
],
"sha256": "6ebd73d663ed6dbf981cd8bc7d19cfd5bcd3c9dec3b9a706fa331d992ef200b4"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/addon.gproj_0.16.5208_manifest.json": {
"stat": [
46,
26919383,
362,
1789670390797778656,
1789670390797778656
],
"sha256": "72d988d5881efdf7d8781b2dc978a0243e1a3d587ced56563299855724137232"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/data.pak": {
"stat": [
46,
26919411,
1992445813,
1789670421137575039,
1789670428335763943
],
"sha256": "5b28362571e396c008eb2286dc5a76b4ccf869c0a279916209fb0ef20d6b145e"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/data.pak_0.16.5208_manifest.json": {
"stat": [
46,
26919381,
170934,
1789670390675775453,
1789670390675775453
],
"sha256": "7cde302270a1e5c3a88517ff8b08a5b50bbe63e7392434d8245542f81b0bfdf8"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/data001.pak": {
"stat": [
46,
26919421,
238642257,
1789670400589035695,
1789670428370764861
],
"sha256": "fb2aecbde5668c4d431ea74d64f6d15f7a9f608fefe01838d7c85fb0c818499f"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/data001.pak_0.16.5208_manifest.json": {
"stat": [
46,
26919384,
29970,
1789670390937782332,
1789670390937782332
],
"sha256": "e6fb290c2f9d8dcd0c0ac95c3dee054377a525e00129abc766defa079385d6ea"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/meta": {
"stat": [
46,
910016,
7720,
1789670428407765832,
1789670428407765832
],
"sha256": "e9ba58307cb931026c5c59654f3b4b7f92ac6e0682a1e94fd2eb1d5b75c214cf"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/resourceDatabase.rdb": {
"stat": [
46,
26919388,
111601,
1789670399484558966,
1789670428260761974
],
"sha256": "736bcd2e60177e5af99d93c6b5f07ad79a950899aaca23000f33ad405cd1b74e"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/resourceDatabase.rdb_0.16.5208_manifest.json": {
"stat": [
46,
26919379,
368,
1789670390384767813,
1789670390384767813
],
"sha256": "9a4f54837a83d2acc2bdc62288b62fe7f24876a374f1270d5a5d2a497bb5de8f"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/thumbnail.png": {
"stat": [
46,
26919391,
18180,
1789670398997629625,
1789670428260761974
],
"sha256": "4c70bf384375f069cab9ed719f3865441fd363a010495e7b465f3ae83ed887c3"
},
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons/RHS-ContentPack02_BADC0DEDABBEDA5E/thumbnail.png_0.16.5208_manifest.json": {
"stat": [
46,
26919380,
366,
1789670390509771095,
1789670390509771095
],
"sha256": "d0e233b32d3d41ac44ea127ea5eb028b97a63555f7867278a7a6f5e8e1df7255"
}
}
@@ -0,0 +1,21 @@
from pathlib import Path
import json,subprocess,time,os,signal,socket,selectors
root=Path('/tmp/work');spec=json.loads((root/'launch.json').read_text());p=None
unix=socket.socket(socket.AF_UNIX,socket.SOCK_DGRAM);unix.bind(str(root/'inner.sock'))
udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM);udp.bind(('127.0.0.1',0));udp.connect(('127.0.0.1',2001))
sel=selectors.DefaultSelector();sel.register(unix,selectors.EVENT_READ);sel.register(udp,selectors.EVENT_READ)
try:
with (root/'server-stdout.log').open('w') as log:
p=subprocess.Popen(spec['server'],cwd='/tmp/runtime',stdout=log,stderr=subprocess.STDOUT,start_new_session=True)
while p.poll() is None and not (root/'stop').exists():
for key,_ in sel.select(.2):
if key.fileobj is unix:
packet,_=unix.recvfrom(65535);udp.send(packet)
else:
packet=udp.recv(65535);unix.sendto(packet,str(root/'outer.sock'))
finally:
if p and p.poll() is None:
os.killpg(p.pid,signal.SIGTERM)
try:p.wait(timeout=8)
except subprocess.TimeoutExpired:os.killpg(p.pid,signal.SIGKILL);p.wait(timeout=5)
(root/'server-result.json').write_text(json.dumps({'exit':p.returncode if p else None}))
@@ -0,0 +1,65 @@
{
"server": [
"/tmp/runtime/ArmaReforgerServer",
"-server",
"{469880DFE1B48F95}Missions/Nogova_TerrainTest.conf",
"-addonsDir",
"/tmp/work/addons",
"-addons",
"2528466DE220D91C,70C981A53E02B64F",
"-profile",
"/tmp/work/server",
"-noBackend",
"-bindIP",
"127.0.0.1",
"-bindPort",
"2001",
"-maxFPS",
"30",
"-errTerrainTakeover",
"1",
"-errAirfields",
"1525 5075",
"-logconsole",
"-noSound",
"-noSplash",
"-noThrow",
"-disableCrashReporter"
],
"client": [
"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/ArmaReforgerSteam.exe",
"-client",
"127.0.0.1",
"-addonsDir",
"Z:/tmp/erri-takeover-pair28/addons",
"-addons",
"2528466DE220D91C,70C981A53E02B64F",
"-profile",
"Z:/tmp/erri-takeover-pair28/client",
"-noBackend",
"-maxFPS",
"30",
"-logconsole",
"-noSound",
"-noSplash",
"-noThrow",
"-disableCrashReporter"
],
"transport": "Only host UDP 127.0.0.1:2001 -> private filesystem Unix socket -> isolated namespace UDP 127.0.0.1:2001. Single client, no external server interface."
}
@@ -0,0 +1,7 @@
{
"reason": "compile-failed",
"server_reaped": true,
"forwarded": 0,
"replies": 0,
"seconds": 2.37
}
@@ -0,0 +1,88 @@
from pathlib import Path
import os,sys,json,shutil,subprocess,time,signal,fcntl,hashlib,socket,selectors
ROOT=Path('/home/jakub/devel/escapistsrereintroduced');sys.path.insert(0,str(ROOT/'tools'))
from external_addons import policy,prepare_profile
from headless_game import assert_prefix_idle,assert_no_game,cleanup_owned_run
from dedicated_native import PROBE
steam=Path.home()/'.local/share/Steam';compat=Path('/tmp/erri-takeover-client-compat');runtime=Path('/tmp/erri-takeover-dedicated-runtime');source=Path('/tmp/erri-takeover-pair-source28');run=Path('/tmp/erri-takeover-pair28');run.mkdir()
compat.mkdir(exist_ok=True)
lock=(compat/'.erri-workbench.lock').open('a');fcntl.flock(lock,fcntl.LOCK_EX|fcntl.LOCK_NB);assert_prefix_idle(compat);assert_no_game()
shutil.copytree('/tmp/erri-takeover-pair-source20',source)
(source/'Scripts/Game/ERR/00_Core/ERR_TerrainConstructorDrain.c').unlink()
for rel in ['Scripts/Game/ERR/00_Core/ERR_TerrainTakeover.c','Scripts/Game/ERR/00_Core/ERR_TerrainTakeoverClient.c','Scripts/Game/ERR/00_Core/ERR_TerrainTakeoverManagers.c','Scripts/Game/ERR/00_Core/ERR_TerrainTakeoverSettings.c','Prefabs/ERR/TerrainConnector.et','Prefabs/ERR/TerrainConnector.et.meta','Prefabs/ERR/TerrainTakeover.et','Prefabs/ERR/TerrainTakeover.et.meta']:
shutil.copy2(ROOT/'addons/core'/rel,source/rel)
exec(Path('/tmp/erri-final-takeover-proof.py').read_text())
addons=run/'addons';addons.mkdir()
prepare_profile(addons,steam/'steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons',policy(ROOT),run/'external-cache.json')
(addons/'ERR_Core').symlink_to(source,target_is_directory=True)
(addons/'Nogova').symlink_to('/home/jakub/devel/gabreta/addons/NogovaReforger',target_is_directory=True)
for name in ('server','client','home','tmp'):(run/name).mkdir()
proton=steam/'steamapps/common/Proton - Experimental/proton';game=steam/'steamapps/common/Arma Reforger'
server=['/tmp/runtime/ArmaReforgerServer','-server','{469880DFE1B48F95}Missions/Nogova_TerrainTest.conf','-addonsDir','/tmp/work/addons','-addons','2528466DE220D91C,70C981A53E02B64F','-profile','/tmp/work/server','-noBackend','-bindIP','127.0.0.1','-bindPort','2001','-maxFPS','30','-errTerrainTakeover','1','-errAirfields','1525 5075','-logconsole','-noSound','-noSplash','-noThrow','-disableCrashReporter']
client=['gamescope','--backend','headless','-W','1280','-H','720','-w','1280','-h','720','-r','30','--',str(proton),'run',str(game/'ArmaReforgerSteam.exe'),'-client','127.0.0.1','-addonsDir','Z:'+str(addons),'-addons','2528466DE220D91C,70C981A53E02B64F','-profile','Z:'+str(run/'client'),'-noBackend','-maxFPS','30','-logconsole','-noSound','-noSplash','-noThrow','-disableCrashReporter']
env=os.environ.copy();env.update(STEAM_COMPAT_DATA_PATH=str(compat),STEAM_COMPAT_CLIENT_INSTALL_PATH=str(steam),WINEPREFIX=str(compat/'pfx'),PULSE_SINK='erri_tests_silent',PROTON_LOG='1',PROTON_LOG_DIR=str(run),SteamGameId='1874880',SteamAppId='1874880')
(run/'launch.json').write_text(json.dumps({'server':server,'client':client,'transport':'Only host UDP 127.0.0.1:2001 -> private filesystem Unix socket -> isolated namespace UDP 127.0.0.1:2001. Single client, no external server interface.'},indent=2))
(run/'inner.py').write_text('''from pathlib import Path
import json,subprocess,time,os,signal,socket,selectors
root=Path('/tmp/work');spec=json.loads((root/'launch.json').read_text());p=None
unix=socket.socket(socket.AF_UNIX,socket.SOCK_DGRAM);unix.bind(str(root/'inner.sock'))
udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM);udp.bind(('127.0.0.1',0));udp.connect(('127.0.0.1',2001))
sel=selectors.DefaultSelector();sel.register(unix,selectors.EVENT_READ);sel.register(udp,selectors.EVENT_READ)
try:
with (root/'server-stdout.log').open('w') as log:
p=subprocess.Popen(spec['server'],cwd='/tmp/runtime',stdout=log,stderr=subprocess.STDOUT,start_new_session=True)
while p.poll() is None and not (root/'stop').exists():
for key,_ in sel.select(.2):
if key.fileobj is unix:
packet,_=unix.recvfrom(65535);udp.send(packet)
else:
packet=udp.recv(65535);unix.sendto(packet,str(root/'outer.sock'))
finally:
if p and p.poll() is None:
os.killpg(p.pid,signal.SIGTERM)
try:p.wait(timeout=8)
except subprocess.TimeoutExpired:os.killpg(p.pid,signal.SIGKILL);p.wait(timeout=5)
(root/'server-result.json').write_text(json.dumps({'exit':p.returncode if p else None}))
''')
(run/'network_probe.py').write_text(PROBE)
cmd=['bwrap','--unshare-net','--unshare-pid','--unshare-ipc','--unshare-uts','--die-with-parent','--cap-drop','ALL','--clearenv','--ro-bind','/','/','--tmpfs','/tmp','--proc','/proc','--dev','/dev','--ro-bind',str(runtime),'/tmp/runtime','--bind',str(source),str(source),'--bind',str(run),'/tmp/work','--setenv','HOME','/tmp/work/home','--setenv','TMPDIR','/tmp/work/tmp','--setenv','PATH','/usr/bin:/bin','--setenv','LANG','C.UTF-8','--chdir','/tmp/runtime','/usr/bin/python3','/tmp/work/network_probe.py',os.readlink('/proc/self/ns/net'),'/usr/bin/python3','/tmp/work/inner.py']
(run/'command.json').write_text(json.dumps(cmd,indent=2));(run/'source-before.json').write_text(json.dumps({str(p.relative_to(source)):hashlib.sha256(p.read_bytes()).hexdigest() for p in source.rglob('*') if p.is_file() and p.name!='resourceDatabase.rdb'},indent=2))
def logs(key):
files=sorted((run/key/'logs').glob('logs_*/console.log'));return files[-1].read_text(errors='replace') if files else ''
udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM);udp.bind(('127.0.0.1',2001))
unix=socket.socket(socket.AF_UNIX,socket.SOCK_DGRAM);unix.bind(str(run/'outer.sock'))
sel=selectors.DefaultSelector();sel.register(udp,selectors.EVENT_READ);sel.register(unix,selectors.EVENT_READ)
server_process=None;client_process=None;client_log=None;peer=None;forwarded=0;replies=0;started=time.time();client_start=0;reason='deadline'
with (run/'supervisor.log').open('w') as log:
try:
server_process=subprocess.Popen(cmd,stdout=log,stderr=subprocess.STDOUT,start_new_session=True)
while time.time()-started<330:
s=logs('server')
if server_process.poll() is not None:reason='server-exit';break
if "Can't compile" in s:reason='compile-failed';break
if client_process is None and 'Reintroduced [mission]: phase 0 -> 1' in s:
client_log=(run/'client-stdout.log').open('w');client_process=subprocess.Popen(client,cwd=game,env=env,stdout=client_log,stderr=subprocess.STDOUT,start_new_session=True);client_start=time.time()
for key,_ in sel.select(.2):
if key.fileobj is udp:
data,address=udp.recvfrom(65535)
if peer is None:peer=address
if address!=peer:continue
unix.sendto(data,str(run/'inner.sock'));forwarded+=1
else:
data,_=unix.recvfrom(65535)
if peer:udp.sendto(data,peer);replies+=1
if client_process:
if client_process.poll() is not None:reason='client-exit';break
if time.time()-client_start>235:reason='client-observation-complete';break
finally:
if client_process:
report=cleanup_owned_run(client_process,proton,env,compat);(run/'cleanup.json').write_text(json.dumps(report,indent=2));print(report)
if client_log:client_log.close()
(run/'stop').touch()
if server_process:
try:server_process.wait(timeout=12)
except subprocess.TimeoutExpired:os.killpg(server_process.pid,signal.SIGKILL);server_process.wait(timeout=5)
udp.close();unix.close()
result={'reason':reason,'server_reaped':server_process is not None and server_process.poll() is not None,'forwarded':forwarded,'replies':replies,'seconds':round(time.time()-started,2)}
(run/'result.json').write_text(json.dumps(result,indent=2));print(result)
print(run)
@@ -0,0 +1,157 @@
---------------------------------------------
Log /tmp/work/server/logs/logs_2026-10-01_18-33-10/console.log started at 2026-10-01 18:33:10 (2026-10-01 16:33:10 UTC)
18:33:10.864 ENGINE : FileSystem: Adding relative directory '/tmp/work/server/logs/logs_2026-10-01_18-33-10' to filesystem under name logs
18:33:10.864 ENGINE : FileSystem: Adding relative directory '/tmp/work/server/profile' to filesystem under name profile
18:33:10.864 ENGINE : FileSystem: Current working directory: '/tmp/runtime/'
18:33:10.865 ENGINE : Initializing engine, version 192142
18:33:10.865 ENGINE : CLI Params: -server {469880DFE1B48F95}Missions/Nogova_TerrainTest.conf -addonsDir /tmp/work/addons -addons 2528466DE220D91C,70C981A53E02B64F -profile /tmp/work/server -noBackend -bindIP 127.0.0.1 -bindPort 2001 -maxFPS 30 -errTerrainTakeover 1 -errAirfields 1525 5075 -logconsole -noSound -noSplash -noThrow -disableCrashReporter
18:33:10.867 ENGINE : Addon dirs:
18:33:10.867 ENGINE : dir: '/tmp/work/addons'
18:33:10.867 ENGINE : dir: './addons'
18:33:10.867 ENGINE : dir: '/tmp/work/server/addons'
18:33:10.867 ENGINE : Available addons:
18:33:10.867 ENGINE : gproj: '/tmp/work/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
18:33:10.867 ENGINE : gproj: '/tmp/work/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
18:33:10.867 ENGINE : gproj: '/tmp/work/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed)
18:33:10.867 ENGINE : gproj: '/tmp/work/addons/ERRI_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2' (packed)
18:33:10.867 ENGINE : gproj: '/tmp/work/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed)
18:33:10.867 ENGINE : gproj: '/tmp/work/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed)
18:33:10.867 ENGINE : gproj: '/tmp/work/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed)
18:33:10.867 ENGINE : gproj: '/tmp/work/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed)
18:33:10.867 ENGINE : gproj: '/tmp/work/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed)
18:33:10.867 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed)
18:33:10.867 ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed)
18:33:10.867 ENGINE : FileSystem: Adding relative directory '/home/jakub/devel/gabreta/addons/NogovaReforger' to filesystem under name NogovaReforger
18:33:10.867 ENGINE : FileSystem: Adding relative directory '/tmp/erri-takeover-pair-source28' to filesystem under name ERR_Core
18:33:10.867 ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_65930CB4CD0237B2/' (pak count: 1) to filesystem under name Parachutes
18:33:10.867 ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1
18:33:10.868 ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore
18:33:10.868 ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments
18:33:10.872 ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core
18:33:10.873 ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02
18:33:10.875 ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01
18:33:10.964 ENGINE : FileSystem: Adding package './addons/data/' (pak count: 14) to filesystem under name ArmaReforger
18:33:10.966 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core
18:33:10.966 ENGINE : CPU vendor : AuthenticAMD
18:33:10.966 ENGINE : CPU type : 2
18:33:10.966 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor
18:33:10.966 ENGINE : CPU cache info : Unknown cache
18:33:10.966 ENGINE : CPU count logical : 16
18:33:10.966 ENGINE : CPU count physical : 8
18:33:10.966 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2
18:33:10.966 RESOURCES : ResourceDB: loading cache (id=0 name=NogovaReforger path=/home/jakub/devel/gabreta/addons/NogovaReforger/resourceDatabase.rdb)
18:33:10.976 RESOURCES : ResourceDB: loading cache (id=1 name=ERR_Core path=/tmp/erri-takeover-pair-source28/resourceDatabase.rdb)
18:33:10.976 RESOURCES : ResourceDB: loading cache (id=2 name=Parachutes path=/tmp/work/addons/ERRI_65930CB4CD0237B2/resourceDatabase.rdb)
18:33:10.976 RESOURCES : ResourceDB: loading cache (id=3 name=WCS_BMP-1 path=/tmp/work/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb)
18:33:10.976 RESOURCES : ResourceDB: loading cache (id=4 name=WCS_SpaceCore path=/tmp/work/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb)
18:33:10.976 RESOURCES : ResourceDB: loading cache (id=5 name=WCS_Armaments path=/tmp/work/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb)
18:33:10.978 RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Core path=/tmp/work/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb)
18:33:10.987 RESOURCES : ResourceDB: loading cache (id=7 name=RHS_Content_02 path=/tmp/work/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb)
18:33:10.988 RESOURCES : ResourceDB: loading cache (id=8 name=RHS_Content_01 path=/tmp/work/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb)
18:33:10.993 RESOURCES : ResourceDB: loading cache (id=9 name=ArmaReforger path=./addons/data/resourceDatabase.rdb)
18:33:11.111 RESOURCES : ResourceDB: loading cache (id=10 name=core path=./addons/core/resourceDatabase.rdb)
18:33:11.112 RESOURCES : ResourceDB: loading cache (id=11 name=profile path=/tmp/work/server/profile/resourceDatabase.rdb)
18:33:11.112 RESOURCES : ResourceDB: loading cache (id=12 name=logs path=/tmp/work/server/logs/logs_2026-10-01_18-33-10/resourceDatabase.rdb)
18:33:11.280 ENGINE : GameProject load
18:33:11.280 ENGINE : Loaded addons:
18:33:11.280 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C'
18:33:11.280 ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859'
18:33:11.280 ENGINE : gproj: '/tmp/work/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF'
18:33:11.280 ENGINE : gproj: '/tmp/work/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E'
18:33:11.280 ENGINE : gproj: '/tmp/work/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB'
18:33:11.280 ENGINE : gproj: '/tmp/work/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577'
18:33:11.280 ENGINE : gproj: '/tmp/work/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6'
18:33:11.280 ENGINE : gproj: '/tmp/work/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B'
18:33:11.280 ENGINE : gproj: '/tmp/work/addons/ERRI_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2'
18:33:11.280 ENGINE : gproj: '/tmp/work/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
18:33:11.280 ENGINE : gproj: '/tmp/work/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
18:33:11.281 ENGINE : GameProject load
18:33:11.281 INIT : GameProject load project data @"/tmp/work/addons/ERRI_595F2BF2F44836FB/addon.gproj"
18:33:11.281 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource"
18:33:11.281 INIT : GameProject load project data @"/tmp/work/addons/ERRI_629B2BA37EFFD577/addon.gproj"
18:33:11.281 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource"
18:33:11.281 INIT : GameProject load project data @"/tmp/work/addons/ERRI_5E389BB9F58B79A6/addon.gproj"
18:33:11.281 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource"
18:33:11.281 INIT : GameProject load project data @"/tmp/work/addons/ERRI_5E524E4FEECCA92B/addon.gproj"
18:33:11.281 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource"
18:33:11.281 ENGINE : Loading custom engine user config '$profile:.save/settings/ReforgerEngineSettings.conf'
18:33:11.281 ENGINE : No Enfusion settings file loaded. Continuing with defaults
18:33:11.281 RENDER : Basic screen setup:
18:33:11.281 RENDER : Back buffer width x height: 0x0
18:33:11.281 RENDER : Back buffer format : TEXFMT_UNKNOWN (0)
18:33:11.281 RENDER : MSAA : none
18:33:11.281 RENDER : GPU_DUMMY (0xFFFF) (Enfusion dummy render) with 1 GPU detected, VRAM 128MB (fast 128MB), shared 128MB, driver version Unknown version
18:33:11.281 RENDER : Detected output devices:
18:33:11.281 RENDER : * 1 device/s connected to Dummy:
18:33:11.281 RENDER : Dummy output (Dummy device for our dummy render.), 1920x1080 (offset 0x0), 60Hz
18:33:11.281 RENDER : Concurrent frames limit 2
18:33:11.281 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=7
18:33:11.294 PROFILING : Settings changed took: 0.022000 ms
18:33:11.296 ENGINE : Initializing inputs.
18:33:11.303 NETWORK : Initializing networking.
18:33:11.303 NETWORK : Using new GameRplScheduler.
18:33:11.303 SCRIPT : SCRIPT : Initializing scripts
18:33:11.303 SCRIPT : SCRIPT : ScriptProjectManager init
18:33:11.303 PROFILING : ScriptProjectManager init took: 0.009000 ms
18:33:11.320 PROFILING : Initializing scripts took: 16.751000 ms
18:33:11.320 BACKEND : Backend Services are disabled.
18:33:11.320 ENGINE : Enfusion engine successfully created.
18:33:11.322 GUI : Using default language (en_us)
18:33:11.322 GUI : Loading 'en_us' localization file.
18:33:11.322 INIT : INIT : Loading StringTable
18:33:11.349 PROFILING : Loading StringTable took: 26.582000 ms
18:33:11.349 SCRIPT : SCRIPT : Compiling GameLib scripts
18:33:11.375 SCRIPT : Module: GameLib; loaded 466x files; 608x classes; used 654K of static memory; defines: "PLATFORM_LINUX,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb
18:33:11.376 PROFILING : Compiling GameLib scripts took: 27.022000 ms
18:33:11.376 SCRIPT : SCRIPT : Compiling Game scripts
18:33:11.934 SCRIPT : Compiling Game scripts
18:33:11.934 SCRIPT (W): @"Scripts/Game/Parachutes/ParachuteDeployed.c,7": Pointer type 'Physics' can only be used with local variables
18:33:12.277 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete
18:33:12.277 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete
18:33:12.365 SCRIPT (E): @"Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c,30": Undefined function 'SCR_RespawnSystemComponent.GetOwner'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,324": Error in parameters
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,333": Can't find variable 'sortSlots'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,335": Can't find variable 'sortSlots'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,337": Can't find variable 'sortSlots'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,337": Syntax error
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,26": Error in parameters
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,29": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,42": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,52": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,77": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,77": Syntax error
18:33:12.459 SCRIPT (E): @"Scripts/Game/Respawn/Logic/SCR_SpawnLogic.c,298": Can't find class Tuple1
18:33:12.471 SCRIPT (E): @"Scripts/Game/Map/ComponentsUI/SCR_MapUIElementContainer.c,443": Incompatible parameter 'on delete'
18:33:12.535 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,311": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
18:33:12.546 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed
18:33:12.575 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete
18:33:12.742 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead
18:33:12.773 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetCountEntitiesInTrigger.c,10": Can't find class SCR_ScenarioFrameworkParam
18:33:12.785 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetLastFinishedTaskLayer.c,11": Can't find class SCR_ScenarioFrameworkParam
18:33:12.788 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c,64": 'GetPlayerIdentityId' is obsolete
18:33:12.797 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete
18:33:12.797 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete
18:33:12.798 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete
18:33:12.806 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,25": Can't find class SCR_SpinningWidgetAnimation
18:33:12.806 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,27": Can't find class SCR_SpinningWidgetAnimation
18:33:12.837 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
18:33:12.837 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
18:33:12.839 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api.
18:33:12.839 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api.
18:33:12.885 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete
18:33:12.887 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,452": Can't find class Tuple2
18:33:12.887 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,517": Can't find class Tuple2
18:33:12.895 SCRIPT (E): Can't compile "Game" script module!
Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c(30): Undefined function 'SCR_RespawnSystemComponent.GetOwner'
18:33:12.947 SCRIPT (W): Failed to load
18:33:12.947 PROFILING : Compiling Game scripts took: 1571.623000 ms
18:33:13.006 ENGINE (E): Unable to initialize the game
18:33:13.007 ENGINE : Game destroyed.
18:33:13.018 RESOURCES (E): ==== Resource leaks ====
18:33:13.018 RESOURCES (E): ui/fonts/robotomono_msdf_28.edds 1
@@ -0,0 +1,13 @@
---------------------------------------------
Log /tmp/work/server/logs/logs_2026-10-01_18-33-10/crash.log started at 2026-10-01 18:33:12 (2026-10-01 16:33:12 UTC)
------------------------------------
01.10 2026 18:33:12
Can't compile "Game" script module!
Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c(30): Undefined function 'SCR_RespawnSystemComponent.GetOwner'
Runtime mode
CLI params: server {469880DFE1B48F95}Missions/Nogova_TerrainTest.conf addonsDir /tmp/work/addons addons 2528466DE220D91C,70C981A53E02B64F profile /tmp/work/server noBackend bindIP 127.0.0.1 bindPort 2001 maxFPS 30 errTerrainTakeover 1 errAirfields 1525 5075 logconsole noSound noSplash noThrow disableCrashReporter
@@ -0,0 +1,60 @@
---------------------------------------------
Log /tmp/work/server/logs/logs_2026-10-01_18-33-10/error.log started at 2026-10-01 18:33:11 (2026-10-01 16:33:11 UTC)
18:33:11.281 ENGINE : GameProject load
18:33:11.281 INIT : GameProject load project data @"/tmp/work/addons/ERRI_595F2BF2F44836FB/addon.gproj"
18:33:11.281 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource"
18:33:11.281 INIT : GameProject load project data @"/tmp/work/addons/ERRI_629B2BA37EFFD577/addon.gproj"
18:33:11.281 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource"
18:33:11.281 INIT : GameProject load project data @"/tmp/work/addons/ERRI_5E389BB9F58B79A6/addon.gproj"
18:33:11.281 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource"
18:33:11.281 INIT : GameProject load project data @"/tmp/work/addons/ERRI_5E524E4FEECCA92B/addon.gproj"
18:33:11.281 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource"
18:33:11.934 SCRIPT : Compiling Game scripts
18:33:11.934 SCRIPT (W): @"Scripts/Game/Parachutes/ParachuteDeployed.c,7": Pointer type 'Physics' can only be used with local variables
18:33:12.277 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete
18:33:12.277 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete
18:33:12.365 SCRIPT (E): @"Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c,30": Undefined function 'SCR_RespawnSystemComponent.GetOwner'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,324": Error in parameters
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,333": Can't find variable 'sortSlots'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,335": Can't find variable 'sortSlots'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,337": Can't find variable 'sortSlots'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,337": Syntax error
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,26": Error in parameters
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,29": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,42": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,52": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,77": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,77": Syntax error
18:33:12.459 SCRIPT (E): @"Scripts/Game/Respawn/Logic/SCR_SpawnLogic.c,298": Can't find class Tuple1
18:33:12.471 SCRIPT (E): @"Scripts/Game/Map/ComponentsUI/SCR_MapUIElementContainer.c,443": Incompatible parameter 'on delete'
18:33:12.535 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,311": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
18:33:12.546 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed
18:33:12.575 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete
18:33:12.742 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead
18:33:12.773 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetCountEntitiesInTrigger.c,10": Can't find class SCR_ScenarioFrameworkParam
18:33:12.785 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetLastFinishedTaskLayer.c,11": Can't find class SCR_ScenarioFrameworkParam
18:33:12.788 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c,64": 'GetPlayerIdentityId' is obsolete
18:33:12.797 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete
18:33:12.797 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete
18:33:12.798 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete
18:33:12.806 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,25": Can't find class SCR_SpinningWidgetAnimation
18:33:12.806 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,27": Can't find class SCR_SpinningWidgetAnimation
18:33:12.837 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
18:33:12.837 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
18:33:12.839 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api.
18:33:12.839 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api.
18:33:12.885 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete
18:33:12.887 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,452": Can't find class Tuple2
18:33:12.887 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,517": Can't find class Tuple2
18:33:12.895 SCRIPT (E): Can't compile "Game" script module!
Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c(30): Undefined function 'SCR_RespawnSystemComponent.GetOwner'
18:33:12.947 SCRIPT (W): Failed to load
18:33:13.006 ENGINE (E): Unable to initialize the game
18:33:13.018 RESOURCES (E): ==== Resource leaks ====
18:33:13.018 RESOURCES (E): ui/fonts/robotomono_msdf_28.edds 1
@@ -0,0 +1,53 @@
---------------------------------------------
Log /tmp/work/server/logs/logs_2026-10-01_18-33-10/script.log started at 2026-10-01 18:33:11 (2026-10-01 16:33:11 UTC)
18:33:11.303 SCRIPT : SCRIPT : Initializing scripts
18:33:11.303 SCRIPT : SCRIPT : ScriptProjectManager init
18:33:11.349 SCRIPT : SCRIPT : Compiling GameLib scripts
18:33:11.375 SCRIPT : Module: GameLib; loaded 466x files; 608x classes; used 654K of static memory; defines: "PLATFORM_LINUX,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb
18:33:11.376 SCRIPT : SCRIPT : Compiling Game scripts
18:33:11.934 SCRIPT : Compiling Game scripts
18:33:11.934 SCRIPT (W): @"Scripts/Game/Parachutes/ParachuteDeployed.c,7": Pointer type 'Physics' can only be used with local variables
18:33:12.277 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete
18:33:12.277 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete
18:33:12.365 SCRIPT (E): @"Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c,30": Undefined function 'SCR_RespawnSystemComponent.GetOwner'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,324": Error in parameters
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,333": Can't find variable 'sortSlots'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,335": Can't find variable 'sortSlots'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,337": Can't find variable 'sortSlots'
18:33:12.411 SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,337": Syntax error
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,26": Error in parameters
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,29": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,42": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,52": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,77": Can't find variable 'friendlyDefaultMapping'
18:33:12.413 SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,77": Syntax error
18:33:12.459 SCRIPT (E): @"Scripts/Game/Respawn/Logic/SCR_SpawnLogic.c,298": Can't find class Tuple1
18:33:12.471 SCRIPT (E): @"Scripts/Game/Map/ComponentsUI/SCR_MapUIElementContainer.c,443": Incompatible parameter 'on delete'
18:33:12.535 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,311": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
18:33:12.546 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed
18:33:12.575 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete
18:33:12.711 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete
18:33:12.742 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead
18:33:12.773 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetCountEntitiesInTrigger.c,10": Can't find class SCR_ScenarioFrameworkParam
18:33:12.785 SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetLastFinishedTaskLayer.c,11": Can't find class SCR_ScenarioFrameworkParam
18:33:12.788 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c,64": 'GetPlayerIdentityId' is obsolete
18:33:12.797 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete
18:33:12.797 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete
18:33:12.798 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete
18:33:12.806 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,25": Can't find class SCR_SpinningWidgetAnimation
18:33:12.806 SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,27": Can't find class SCR_SpinningWidgetAnimation
18:33:12.837 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
18:33:12.837 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
18:33:12.839 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api.
18:33:12.839 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api.
18:33:12.885 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete
18:33:12.887 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,452": Can't find class Tuple2
18:33:12.887 SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,517": Can't find class Tuple2
18:33:12.895 SCRIPT (E): Can't compile "Game" script module!
Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c(30): Undefined function 'SCR_RespawnSystemComponent.GetOwner'
18:33:12.947 SCRIPT (W): Failed to load
@@ -0,0 +1,155 @@
ENGINE : Creating engine.
ENGINE : FileSystem: Adding relative directory '/tmp/work/server/logs/logs_2026-10-01_18-33-10' to filesystem under name logs
ENGINE : FileSystem: Adding relative directory '/tmp/work/server/profile' to filesystem under name profile
ENGINE : FileSystem: Current working directory: '/tmp/runtime/'
ENGINE : Initializing engine, version 192142
ENGINE : CLI Params: -server {469880DFE1B48F95}Missions/Nogova_TerrainTest.conf -addonsDir /tmp/work/addons -addons 2528466DE220D91C,70C981A53E02B64F -profile /tmp/work/server -noBackend -bindIP 127.0.0.1 -bindPort 2001 -maxFPS 30 -errTerrainTakeover 1 -errAirfields 1525 5075 -logconsole -noSound -noSplash -noThrow -disableCrashReporter
ENGINE : Addon dirs:
ENGINE : dir: '/tmp/work/addons'
ENGINE : dir: './addons'
ENGINE : dir: '/tmp/work/server/addons'
ENGINE : Available addons:
ENGINE : gproj: '/tmp/work/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
ENGINE : gproj: '/tmp/work/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
ENGINE : gproj: '/tmp/work/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed)
ENGINE : gproj: '/tmp/work/addons/ERRI_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2' (packed)
ENGINE : gproj: '/tmp/work/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed)
ENGINE : gproj: '/tmp/work/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed)
ENGINE : gproj: '/tmp/work/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed)
ENGINE : gproj: '/tmp/work/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed)
ENGINE : gproj: '/tmp/work/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed)
ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed)
ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed)
ENGINE : FileSystem: Adding relative directory '/home/jakub/devel/gabreta/addons/NogovaReforger' to filesystem under name NogovaReforger
ENGINE : FileSystem: Adding relative directory '/tmp/erri-takeover-pair-source28' to filesystem under name ERR_Core
ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_65930CB4CD0237B2/' (pak count: 1) to filesystem under name Parachutes
ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1
ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore
ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments
ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core
ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02
ENGINE : FileSystem: Adding package '/tmp/work/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01
ENGINE : FileSystem: Adding package './addons/data/' (pak count: 14) to filesystem under name ArmaReforger
ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core
ENGINE : CPU vendor : AuthenticAMD
ENGINE : CPU type : 2
ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor
ENGINE : CPU cache info : Unknown cache
ENGINE : CPU count logical : 16
ENGINE : CPU count physical : 8
ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2
RESOURCES : ResourceDB: loading cache (id=0 name=NogovaReforger path=/home/jakub/devel/gabreta/addons/NogovaReforger/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=1 name=ERR_Core path=/tmENGINE : GameProject load
INIT : GameProject load project data @"/tmp/work/addons/ERRI_595F2BF2F44836FB/addon.gproj"
RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource"
INIT : GameProject load project data @"/tmp/work/addons/ERRI_629B2BA37EFFD577/addon.gproj"
RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource"
INIT : GameProject load project data @"/tmp/work/addons/ERRI_5E389BB9F58B79A6/addon.gproj"
RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource"
INIT : GameProject load project data @"/tmp/work/addons/ERRI_5E524E4FEECCA92B/addon.gproj"
RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource"
p/erri-takeover-pair-source28/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=2 name=Parachutes path=/tmp/work/addons/ERRI_65930CB4CD0237B2/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=3 name=WCS_BMP-1 path=/tmp/work/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=4 name=WCS_SpaceCore path=/tmp/work/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=5 name=WCS_Armaments path=/tmp/work/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Core path=/tmp/work/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=7 name=RHS_Content_02 path=/tmp/work/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=8 name=RHS_Content_01 path=/tmp/work/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=9 name=ArmaReforger path=./addons/data/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=10 name=core path=./addons/core/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=11 name=profile path=/tmp/work/server/profile/resourceDatabase.rdb)
RESOURCES : ResourceDB: loading cache (id=12 name=logs path=/tmp/work/server/logs/logs_2026-10-01_18-33-10/resourceDatabase.rdb)
ENGINE : GameProject load
ENGINE : Loaded addons:
ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C'
ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859'
ENGINE : gproj: '/tmp/work/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF'
ENGINE : gproj: '/tmp/work/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E'
ENGINE : gproj: '/tmp/work/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB'
ENGINE : gproj: '/tmp/work/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577'
ENGINE : gproj: '/tmp/work/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6'
ENGINE : gproj: '/tmp/work/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B'
ENGINE : gproj: '/tmp/work/addons/ERRI_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2'
ENGINE : gproj: '/tmp/work/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
ENGINE : gproj: '/tmp/work/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
ENGINE : Loading custom engine user config '$profile:.save/settings/ReforgerEngineSettings.conf'
ENGINE : No Enfusion settings file loaded. Continuing with defaults
RENDER : Basic screen setup:
RENDER : Back buffer width x height: 0x0
RENDER : Back buffer format : TEXFMT_UNKNOWN (0)
RENDER : MSAA : none
RENDER : GPU_DUMMY (0xFFFF) (Enfusion dummy render) with 1 GPU detected, VRAM 128MB (fast 128MB), shared 128MB, driver version Unknown version
RENDER : Detected output devices:
RENDER : * 1 device/s connected to Dummy:
RENDER : Dummy output (Dummy device for our dummy render.), 1920x1080 (offset 0x0), 60Hz
RENDER : Concurrent frames limit 2
ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=7
PROFILING : Settings changed took: 0.022000 ms
ENGINE : Initializing inputs.
NETWORK : Initializing networking.
NETWORK : Using new GameRplScheduler.
SCRIPT : SCRIPT : Initializing scripts
SCRIPT : SCRIPT : ScriptProjectManager init
PROFILING : ScriptProjectManager init took: 0.009000 ms
PROFILING : Initializing scripts took: 16.751000 ms
BACKEND : Backend Services are disabled.
ENGINE : Enfusion engine successfully created.
GUI : Using default language (en_us)
GUI : Loading 'en_us' localization file.
INIT : INIT : Loading StringTable
PROFILING : Loading StringTable took: 26.582000 msSCRIPT : Compiling Game scripts
SCRIPT (W): @"Scripts/Game/Parachutes/ParachuteDeployed.c,7": Pointer type 'Physics' can only be used with local variables
SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete
SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete
SCRIPT (E): @"Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c,30": Undefined function 'SCR_RespawnSystemComponent.GetOwner'
SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,324": Error in parameters
SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,333": Can't find variable 'sortSlots'
SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,335": Can't find variable 'sortSlots'
SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,337": Can't find variable 'sortSlots'
SCRIPT (E): @"Scripts/Game/GameMode/Loadout/SCR_PlayerArsenalLoadout.c,337": Syntax error
SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,26": Error in parameters
SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,29": Can't find variable 'friendlyDefaultMapping'
SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,42": Can't find variable 'friendlyDefaultMapping'
SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,52": Can't find variable 'friendlyDefaultMapping'
SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,77": Can't find variable 'friendlyDefaultMapping'
SCRIPT (E): @"Scripts/Game/Plugins/Persistence/System/Serializers/Entities/SCR_FactionManagerSerializer.c,77": Syntax error
SCRIPT (E): @"Scripts/Game/Respawn/Logic/SCR_SpawnLogic.c,298": Can't find class Tuple1
SCRIPT (E): @"Scripts/Game/Map/ComponentsUI/SCR_MapUIElementContainer.c,443": Incompatible parameter 'on delete'
SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,311": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed
SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete
SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete
SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete
SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete
SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete
SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead
SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetCountEntitiesInTrigger.c,10": Can't find class SCR_ScenarioFrameworkParam
SCRIPT (E): @"Scripts/Game/ScenarioFramework/Actions/ActionGetters/SCR_ScenarioFrameworkGetLastFinishedTaskLayer.c,11": Can't find class SCR_ScenarioFrameworkParam
SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c,64": 'GetPlayerIdentityId' is obsolete
SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete
SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete
SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete
SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,25": Can't find class SCR_SpinningWidgetAnimation
SCRIPT (E): @"Scripts/Game/UI/Components/SCR_SpinningWidgetComponent.c,27": Can't find class SCR_SpinningWidgetAnimation
SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api.
SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api.
SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete
SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,452": Can't find class Tuple2
SCRIPT (E): @"Scripts/Game/UI/Menu/ContentBrowser/Common/SCR_ScenarioUICommon.c,517": Can't find class Tuple2
SCRIPT (E): Can't compile "Game" script module!
Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c(30): Undefined function 'SCR_RespawnSystemComponent.GetOwner'
SCRIPT (W): Failed to load
ENGINE (E): Unable to initialize the game
RESOURCES (E): ==== Resource leaks ====
RESOURCES (E): ui/fonts/robotomono_msdf_28.edds 1
SCRIPT : SCRIPT : Compiling GameLib scripts
SCRIPT : Module: GameLib; loaded 466x files; 608x classes; used 654K of static memory; defines: "PLATFORM_LINUX,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb
PROFILING : Compiling GameLib scripts took: 27.022000 ms
SCRIPT : SCRIPT : Compiling Game scripts
PROFILING : Compiling Game scripts took: 1571.623000 ms
ENGINE : Game destroyed.
@@ -0,0 +1,398 @@
{
"addon.gproj": "73e973a1f1c5910393e16f86a3a40d792031bb2fa3fc7f4dd87a06a16c3e34a4",
"Materials/ERRM_MapRenderTarget.emat.meta": "5ee1a705f8011a44020ca2691f5ccc17d44bf596fef9a36e98d1f267eb58fab0",
"Materials/ERRM_MapRenderTarget.emat": "9877c5b175c5f30dd80bea36c711b21ab38219aa7075adf9ae79932e1d4c76bc",
"Missions/ERR_Everon.conf.meta": "0a23c98bf83873536c65fa17d38dea33a1d7b9e4ab210f90633ff688abcc551f",
"Missions/ERR_Everon.conf": "936619df7789a6b4b80bd763f702526e1145ab4d5c300516c07e7e70dfe57d92",
"Missions/ERR_Everon_Base.conf.meta": "9b16267c644d815bcf98a3a3aaff30b93d7224fb24d3a2bac66730a28011f317",
"Missions/ERR_Everon_Base.conf": "b46e1f4aeef383a8dbe7ef2b5c12a55a8111856c52ba103a1e508c01b82dfc61",
"Worlds/ERR_Everon.ent.meta": "19d1903ca72baa326b4724a6791d0da1104a1e53f3f31dc1ca41a856efd68e83",
"Worlds/ERR_Everon.ent": "22324bc7eb0d80dec8a1f3bd61a9df9201b72f749f4e751766b0c9d0b7d46b87",
"Scripts/Game/ERR/40_Chat/ERR_NativeMountedCourierProbe.c": "12710e9e5548fe8856f7a52f3566338369a8a1eedf0bd92af16229271872ada5",
"Scripts/Game/ERR/40_Chat/ERR_NativeSmoke.c": "120459ad24ba3f540080380544516a3be46bf3767b5e505d25c163a0a6791131",
"Scripts/Game/ERR/40_Chat/ERR_NativeMountedSwapProbe.c": "a6721fcaaccadf8eddb06687c7d587d0a3e377d5d1bb0b8e72e630fede8690ac",
"Scripts/Game/ERR/40_Chat/ERR_NativeMountedAmmoProbe.c": "6893672e2667e72654a6c4161d419bd28c7a600404643c61ae745867b41bcab0",
"Scripts/Game/ERR/40_Chat/ERR_NativeAlarmHearingProbe.c": "5dbb6a48909b76cd141e3a79ef01d2e68cafee55153821c4471f85c761fff94f",
"Scripts/Game/ERR/40_Chat/ERR_NativeInfantryTransferProbe.c": "9b2de4dc22bdadd51b0271219a971dc8dc07f70ed3534f306acf03ed81b29424",
"Scripts/Game/ERR/40_Chat/ERR_NativeSupplyConvoyProbe.c": "701311de6a2c9fe8f0534a22056323c34072df26595dc70a7d4df45bc06e6c13",
"Scripts/Game/ERR/40_Chat/ERR_OrdinaryScenarioLaunchChat.c": "a747af09599ce4d0c52051f18f00c4624d24d137e328341b580b82e896c6bf65",
"Scripts/Game/ERR/40_Chat/ERR_NativeRadioProbe.c": "84524163c63402755b4f834f74dfe6d8e5c397dc26031f532593c6f79f5a93b1",
"Scripts/Game/ERR/40_Chat/ERR_NativeMortarProbe.c": "ddb892141500c192c0787b011d57dd8c07dd8c9a3ca5fdc407f6c271897bde0a",
"Scripts/Game/ERR/40_Chat/ERR_NativeLocalHandoffProbe.c": "0d4d61c424a16008595f86fa61f3b848caf9bd6e9ebbacea9c10254d88ba378e",
"Scripts/Game/ERR/40_Chat/ERR_NativeHQResponseProof.c": "0f8b09fd8753234c91fd6baaca0e2f812e409ae1c4be8f340b648ae59b69c2f3",
"Scripts/Game/ERR/40_Chat/ERR_NativeHQMemoryProbe.c": "d8fec6c138bb0f5bdbf99ee82ffc3ac9b44d1045d8833da63f8aa5f39beeb7e5",
"Scripts/Game/ERR/40_Chat/ERR_NativeHQBodyProbe.c": "811244cc8297817efbfc3ee4edf01c868eae23c88127ba0c72e98ee7422da72f",
"Scripts/Game/ERR/40_Chat/ERR_NativeConvoyProbe.c": "45a40e5cc877c4bbcd23ed3219b24a9a329cfed09688ec39fbe9ccdbed1046a4",
"Scripts/Game/ERR/40_Chat/ERR_NativeConvoyCoverProbe.c": "d2450140cf9bdf09210473234605b4c0d818ea5b91f9532209166a35c5d13701",
"Scripts/Game/ERR/40_Chat/ERR_AdminCommands.c": "282fe1463add7af8771aa58507b254e69d2d06f50274d4c77321db073f8394f0",
"Scripts/Game/ERR/30_Map/ERRM_SharedMapComponent.c": "3a10f6ea25bf88a400bc3e6c339823433845c5db4f2f423835ccf99a1b1a843f",
"Scripts/Game/ERR/30_Map/ERRM_NativeMapOwnershipProbe.c": "32418602f085e3edba7343f42a6a691630b533be262002f29248e8ae87a38254",
"Scripts/Game/ERR/30_Map/ERR_ScenarioMap.c": "75fa1d742129ef7f33c005cd48f56db7f49ee7bde3c5428532b0b501b032b0a3",
"Scripts/Game/ERR/20_Intel/ERR_IntelDiscoveryFeedback.c": "62f2c408383f410782d9d41fa50acd6bd8cf66eeb80d2b79f91852b9d2cf8d97",
"Scripts/Game/ERR/20_Intel/ERR_IntelEvidence.c": "6bbf8d3b83e2c09fd9a23a9a5e5e11d7c29af2e618116bee613562fc45af2b33",
"Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "2911325c79a7a372628b18ffa0e110d11919ce2c2cd7b19277bfd608fdb03dfc",
"Scripts/Game/ERR/20_Intel/ERR_IntelReroll.c": "d8b04de9ea789732cc78ebce9aa60786c86fe46d05f671cf251eefa68a214b59",
"Scripts/Game/ERR/20_Intel/ERR_IntelAdminProvider.c": "d63ab5c547021aeb61d398b8a773afeedee4662d3ce15d9fd9d0e9e37262f8b7",
"Scripts/Game/ERR/10_AI/ERR_EngineerMine.c": "11c2a85f390b52c1f24791995e0bdfa1640866ffbaeb49dbb1d3099c73479e5c",
"Scripts/Game/ERR/10_AI/ERR_HQ.c": "3d8ec9f00cb8ebee369186ded9528f269df583ed6df162f35506e5ce54522cbb",
"Scripts/Game/ERR/10_AI/ERR_EngineerMineSite.c": "b629fecc29711e57f364f2a9c4c3e884b0978d9674311678f2e78b561683681a",
"Scripts/Game/ERR/10_AI/ERR_HQCoverage.c": "8d9668858c47b7e9fee2b12d3ebd4e7cb88146b817cf615c4b0dade26c81b2ec",
"Scripts/Game/ERR/10_AI/ERR_MountedAmmoPickup.c": "01a7994dfb0c7206573b06b51cafa28a8e5f2e9e8c126fad0df35ef6afcc0c55",
"Scripts/Game/ERR/10_AI/ERR_InfantrySupplyPool.c": "637a25e0e6b346aa611089c42ed62d36b09bdb72cd45f846cd67d6dee976772a",
"Scripts/Game/ERR/10_AI/ERR_InfantryResupply.c": "24a04934a81ae8f3015dd08a1456170c4d62a10f92afbb97f353160656df7d2d",
"Scripts/Game/ERR/10_AI/ERR_SupplyConvoyTactics.c": "91c52be55d5293138f06fb3ef67d4e845c45d62672b23e04eea0ae703d9e227f",
"Scripts/Game/ERR/10_AI/ERR_MountedAmmoTransfer.c": "614484bf829d108ed60f6ac9d57586670f822fdd9a2ebc752fe2117d56dbdb9f",
"Scripts/Game/ERR/10_AI/ERR_MountedResupply.c": "c26ad43705765be1c20eca37fbe2978b8c647151f6620ed37141657a4b7dc312",
"Scripts/Game/ERR/10_AI/ERR_FiniteMagazineReservation.c": "8278590ced1936d618905b0cbd0b5aebddda238d426a6a2a52e455fc36bbb502",
"Scripts/Game/ERR/10_AI/ERR_HQStatusSampler.c": "59a026529c9189c7f45c8e9f9f55677377a9b27fef4e97365daa72702bced11e",
"Scripts/Game/ERR/10_AI/ERR_SupplyConvoyService.c": "b36b5031922a9401ffaeafbdc4e19e9eddcc4df01e07ac69a31a5d76f09f0e09",
"Scripts/Game/ERR/10_AI/ERR_MountedMagazineSeed.c": "b42d0aac142907433df8bedc40de24c94813544016cf5f451846f1980250f995",
"Scripts/Game/ERR/10_AI/ERR_SupplyConvoySystem.c": "f09aa817c27d6af0ccfb544f4ab1ae2afafb63d626641e03d87cfe159475d821",
"Scripts/Game/ERR/10_AI/ERR_ConvoyBudget.c": "ca49c274146d56e30cc93fa1652cc34c0fe68ea95725b0b3e33ab3673a6463c4",
"Scripts/Game/ERR/10_AI/ERR_HQMountedAmmoSampler.c": "df5d90e914b9623fbbcde174bf6cfb78161db1c4596f2d339ea32ab976666929",
"Scripts/Game/ERR/10_AI/ERR_VehicleAlarmPerception.c": "45ac71d25e10a057a26a5b0fc7128935baaf47f4c0f87208a4420fa52086fd98",
"Scripts/Game/ERR/10_AI/ERR_EnemyMapMarking.c": "0f161fd3e08a54e3e1063679127549e482c40253a022e9d06cd9ee4d740b8625",
"Scripts/Game/ERR/10_AI/ERR_ConvoyBoardingProgress.c": "328f8a5eabb8174b7727eee1d675db83a2eb0be7b8e834db4e950a645ca5d7a3",
"Scripts/Game/ERR/10_AI/ERR_SupplyConvoyColumn.c": "827550ab1b3fd749414f064d20849e23b4ff0ac2d39585cc8d4388df581ca6f4",
"Scripts/Game/ERR/10_AI/ERR_InfantryCombat.c": "5684fcbee128a35107312452297f7ae2bec28aaa1b63f619fa649f36df8ea476",
"Scripts/Game/ERR/10_AI/ERR_EnemyMedicine.c": "e5470c7973dc04f13d62b8cc1f13c732c0117bd3c838d7a0cb8803a647fccb50",
"Scripts/Game/ERR/10_AI/ERR_HunterCombat.c": "df1c319d10efd07ed6f971cf0e41d8d7e377b04ea7f0fe143bf94df733fd1d9c",
"Scripts/Game/ERR/10_AI/ERR_HQLocalAwareness.c": "124260280ac8eda0e920bfcfc86932c9b21df6b1f7a6aa8acfc43feea3da149f",
"Scripts/Game/ERR/10_AI/ERR_NativeTownProbe.c": "ade130f49fc9d868281cee7fde383f084f70ed8d4b876dacebbaed8538e84999",
"Scripts/Game/ERR/10_AI/ERR_TownGarrisons.c": "57f862476751087972fc78d0b27ab44e72361e27d32f15d55f9fe7fd7d6bd0e0",
"Scripts/Game/ERR/10_AI/ERR_HunterCrewRecovery.c": "e76af0fbf6f436a9c3c9d4c7b779bc08a78f6fe705c08bf6d9757bbeb65ee8eb",
"Scripts/Game/ERR/10_AI/ERR_HunterOpeningPlan.c": "0b6275221dab491f148426df05e132579f3acc20de5559226c3b38975618355c",
"Scripts/Game/ERR/10_AI/ERR_EnemyLoadout.c": "debabdf585820c4f892c44bae2324966e3094538fb4e856f6c50e31697d03595",
"Scripts/Game/ERR/10_AI/ERR_EnemySkillAwareness.c": "00c450d033e43fc45c9e2cb64a1d81161d123cc594a4292cfc5f68eb6c17ee60",
"Scripts/Game/ERR/10_AI/ERR_HunterService.c": "0769d4e7327439ce91b8f9ed0b47c4d92d382e97a1bbf62da8e6002ae4041bf0",
"Scripts/Game/ERR/10_AI/ERR_ObjectiveDefence.c": "83ef91c2118521aedb4c1838b2e47909c80e0950086449b98ced168f1fd87080",
"Scripts/Game/ERR/10_AI/ERR_NativeAirLogisticsProbe.c": "58fe863775d0ad575cb566c78cef696c9826691cf49ef9adde76376be7316db1",
"Scripts/Game/ERR/10_AI/ERR_NativeAirAssaultProbe.c": "c1d55b338b157b758e6ffb993d5f689029b28b13929797c91e5dcb15b5e561ea",
"Scripts/Game/ERR/10_AI/ERR_BodyRecovery.c": "47d9374095d04f5f1339c220caf518a40938ffc20f891b1b51ae38579e7e1c25",
"Scripts/Game/ERR/10_AI/ERR_AirAmmoMission.c": "0a471a40c8f7dfb797d8d35e41c5b1ff91e8d2ab13b43cf866e46c0e4ab4ed9d",
"Scripts/Game/ERR/10_AI/ERR_AirfieldSupport.c": "c6d88ede0b1b6bac5a7075b6e2e783ccfa8850210aabd28bfa4bcdb698cc5f87",
"Scripts/Game/ERR/10_AI/ERR_AircraftAmmo.c": "2be282406d0c45ab2e35b0ced791b5e494c662588f536701a4e82e6f5fb7c913",
"Scripts/Game/ERR/10_AI/ERR_AssaultParachute.c": "a93c996059e7166988e9d1b0b498cbfd36f19a1cf8520cb4e9215a8884752e18",
"Scripts/Game/ERR/10_AI/ERR_AirAssaultLoad.c": "5554994115cd7d56152ac78ba53034bf934b71c5634b17d35e96884dbb3b8a24",
"Scripts/Game/ERR/10_AI/ERR_AirAssaultSystem.c": "2eaf9816eee3e1cd2ac70744a6ef7ea5a90d0a3eebdf925e384028a7edde6a42",
"Scripts/Game/ERR/10_AI/ERR_AirSupportPolicy.c": "b5dad011d5a0574a406d6469e0744a9d37700cb41930dada28c5143d556acf53",
"Scripts/Game/ERR/10_AI/ERR_ReconCrewLocks.c": "684bc5b9858c7ed90ed2ca6d52fc0e731a7e37a116db776090257b72a63621ab",
"Scripts/Game/ERR/10_AI/ERR_NativeAirReconProbe.c": "c1216e0512a0268e4dbb82429e228334401c0c3cac52ba4486ae6dc91e41576d",
"Scripts/Game/ERR/10_AI/ERR_ReconFlightComponent.c": "4966dad504b3f8f28a9ffc8ac17cc548b00066fe05213c49c662ea56de34c9d4",
"Scripts/Game/ERR/10_AI/ERR_AirReconSystem.c": "0b4faaf3d4ee506730de48554100ea3d9443e9cbdfdf354f56dd8b121507b324",
"Scripts/Game/ERR/10_AI/ERR_ReconAirports.c": "7551347d776d6e0eec818d6468cacbca7ac53daee7317e0a1618ca3d39ebc762",
"Scripts/Game/ERR/10_AI/ERR_NativeScoutProbe.c": "41b39b1abe5e51a5b8a428d533cccbfb0dda9d7a570228dc3489408c60543f17",
"Scripts/Game/ERR/10_AI/ERR_ScoutSystem.c": "63287a252e4e7d5aefce840279f26ce3e1f286cb79cadb32596c37897cec7119",
"Scripts/Game/ERR/10_AI/ERR_NativeMortarStationProbe.c": "a110f0abc753cb1d2f781e457e637dd5346ecd2e924eb5eb3a5c7dca3d1e2340",
"Scripts/Game/ERR/10_AI/ERR_MortarStation.c": "cbbd7c86f722b664c85ab7c070ae1131d2ce5c41d1dacb4381bff9c1720a1866",
"Scripts/Game/ERR/10_AI/ERR_SupportScenario.c": "a7b46253e1bb37cea7c29bb557fbf43ca207022d0f1cc927349441b2d1615279",
"Scripts/Game/ERR/10_AI/ERR_SettlementSafety.c": "e5c0ebc95521a9a33a3f7d9cca6c551dda862a08b7af20b017877aba9584795b",
"Scripts/Game/ERR/10_AI/ERR_NativePatrolHQProbe.c": "a58f57530e333976dc96fc5a0f9cb6cf0cb069c55788824950c5fb2f965d8e26",
"Scripts/Game/ERR/10_AI/ERR_NativeMortarTransferProbe.c": "399c21940ef10777b46fdb3e905430ce43404ce1de2f4a6bb62f9c61c1a0689c",
"Scripts/Game/ERR/10_AI/ERR_NativeMortarSalvoProbe.c": "fb9ccc6b36247ab3ad828ffbb2556abf5c2838d93ea6cd1ad259c0a015142f5e",
"Scripts/Game/ERR/10_AI/ERR_NativeMortarFiringProbe.c": "ee570d21bede8baebefc799399712d9582b3e30ebda7299f6c941777f02ad2a2",
"Scripts/Game/ERR/10_AI/ERR_NativeMortarCourierProbe.c": "740c8bebbd4128a9311b1167d1058549475d6b46f81c9b6c0d19650f4b50616f",
"Scripts/Game/ERR/10_AI/ERR_NativeAircraftRouteProbe.c": "8d0dca97e5106d1c84b64992c789e1af0689514beefc027e713ca6ab901fc470",
"Scripts/Game/ERR/10_AI/ERR_NativeAircraftFieldProbe.c": "b64907c7566a894ca2f3c49ede5d972d4087a938da1a0ca87bcbd7c2203b2c52",
"Scripts/Game/ERR/10_AI/ERR_NativeAircraftControlProbe.c": "0cf3e72ccdc42e6ef20fb71d743f0e037a9e69b2e082c720fa705628cf790205",
"Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "bc290ee8bed299d869598cbf41ec281653e0cc7f3c64c7214613df8a0fc83829",
"Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c": "34f7eaa01dc68e97aae8c1177b7f8fd6c15d5a41c6dc86de377f00b3613a8e77",
"Scripts/Game/ERR/10_AI/ERR_MortarSalvo.c": "c128850c7a78a4d8fee00ad38f48b265f1fbd1d9b24b092ddc5c205b0f0ad6da",
"Scripts/Game/ERR/10_AI/ERR_MortarReportLedger.c": "42a96040b63e56677353e55164ae23031c90f70b4d6673a9f412ad7b19e636ae",
"Scripts/Game/ERR/10_AI/ERR_MortarRefresh.c": "52ae8d9d6cad92f42d68c634091b80a474d2666b6c06d63a8c30a3fab71494c4",
"Scripts/Game/ERR/10_AI/ERR_MortarReadiness.c": "4c3799b3f2681e977669de0cbfaeb307d9a682b04365bfc9f59079e762965758",
"Scripts/Game/ERR/10_AI/ERR_MortarPrediction.c": "05863b2b4f9f70cdb288f91c722cbea163c13f2a2927dc485482e5bd4fa7d57f",
"Scripts/Game/ERR/10_AI/ERR_MortarLogistics.c": "b3624e4a00a2bdef16f6c100bbd79910e3bb8c2ae8ec5fe2ad5aa70bffecd303",
"Scripts/Game/ERR/10_AI/ERR_MortarFiring.c": "f2597d44c10d10de2462aa5e5450a22b8a5ad0eb99bd0cc09a8cf1ca2dd4a350",
"Scripts/Game/ERR/10_AI/ERR_MortarCourierTransfer.c": "968e58ca700b4a11e5e04a5c159696f514a0b1bce531210172b913e495f7e2b7",
"Scripts/Game/ERR/10_AI/ERR_MortarBattery.c": "157024afc8fd3c1ffeea6ae923ff091e5773b9ffcf5f5864f8040d001e689110",
"Scripts/Game/ERR/10_AI/ERR_MortarAimSolution.c": "59e8343d09f7a44871d8d3335d6ad1d02216abb5deed30d38b5ec9ba3f2c0649",
"Scripts/Game/ERR/10_AI/ERR_InfantryAmmoTransfer.c": "401a29ec31712d113c203d6975e44aed7bb3166025454f4950a4c7cb6f5ad6eb",
"Scripts/Game/ERR/10_AI/ERR_InfantryAmmoAccess.c": "ab4262f78d54782c5ecbf5fff4ebe3da16d72329658d7e18c0c35387dc8b3c7d",
"Scripts/Game/ERR/10_AI/ERR_HelicopterAvailability.c": "60eaef2f6d4b2fd44861c5a4434ef97e732e40a5ff7401e2da451ed2dd9c2762",
"Scripts/Game/ERR/10_AI/ERR_HQWatch.c": "abe634cf6003ae920ec1ed18e305ed462920204960894520d3dd11f7e5ef1c33",
"Scripts/Game/ERR/10_AI/ERR_HQTask.c": "e5eb8efb478c90836403da3dd82751cb308643a4b34bdeeed4d9848f6d572d60",
"Scripts/Game/ERR/10_AI/ERR_HQRoadIntercept.c": "0897e82d7805ef56f05f2b9c23903280285ea6bfa51796a2df86bb564ece78f7",
"Scripts/Game/ERR/10_AI/ERR_HQReport.c": "12ea8ba08753d1e6d38b237087c1209cd2f9574b53c3ff0f27c082bed029c9ea",
"Scripts/Game/ERR/10_AI/ERR_HQPursuit.c": "ab6ca0e1a7f36c104e664db06a74c80a528cbfd1de599af42e2194ef0a4f4ca3",
"Scripts/Game/ERR/10_AI/ERR_HQObservation.c": "57ad3f0b68d150791e30a7e4bd7dfedfb1ddd78a1c76f228e67b33ea9cb7144e",
"Scripts/Game/ERR/10_AI/ERR_HQNetwork.c": "85e4d2cb27426c07b8631ca411f4b8f5c821f9f331c8c2719cbfa71b3687f08e",
"Scripts/Game/ERR/10_AI/ERR_HQMemory.c": "ec2047a477fb4273e22ae6bb68e7365f321f55c583b5d2c48c4abf2ac38e3b7d",
"Scripts/Game/ERR/10_AI/ERR_HQLocalHandoff.c": "2dd700dae9d9b232d22ca63ff01af75a3f5cc213ac24b7c0a43ffa38bc0b9ffa",
"Scripts/Game/ERR/10_AI/ERR_HQJournal.c": "53563ff54fc4e0656713d6eaec5e88ddf69fd4bfa8ef6a67cfa13380d24031e1",
"Scripts/Game/ERR/10_AI/ERR_HQDoctrine.c": "6335728e89ed40ce11b811f00b61bfea76e94dd3379e4357cbfc438b05522bb0",
"Scripts/Game/ERR/10_AI/ERR_HQDeliveredCasualties.c": "1f738127e55e843ee2705007cedb5c08741f52f63c75eca7c80242177af82273",
"Scripts/Game/ERR/10_AI/ERR_HQBodyObserver.c": "f59421c1e0c83f0f480d7dd4d048b4b0a41193ed8fe8f2f627d2b6a696420ea1",
"Scripts/Game/ERR/10_AI/ERR_HQAmmoSampler.c": "f2b50ec6c6dd3bfb4e7c636e02b94893b41a2c13753b00e6b0ea2ed7686413ca",
"Scripts/Game/ERR/10_AI/ERR_HQAmmoReporting.c": "95c024cbdd35c02d9b0c3d389d29bb042e5dda6ffd2f5f0d896078274b3adb35",
"Scripts/Game/ERR/10_AI/ERR_HQAdminProvider.c": "13a666277b191475379b0e3a405713d482109ba9615600af590add81fb24bbba",
"Scripts/Game/ERR/10_AI/ERR_EnemyRadio.c": "3a97e5c3de9ff33873d97c6b2d84ae505cfc4f3146e047b928e76ec3b22c8789",
"Scripts/Game/ERR/10_AI/ERR_EnemyOptics.c": "759e0a88ff30cb781ee69b8a935865d63ede5b1d97f31d344018f650a967c37f",
"Scripts/Game/ERR/10_AI/ERR_EnemyGunnerSkill.c": "adf8bac5a6f7e40b2f9caff5fe9be590c4e4ce2b2b387ba39e741a3c4f4cc564",
"Scripts/Game/ERR/10_AI/ERR_EnemyEquipment.c": "f3c25605f1f9fa808f94cbee70fe0f0acb8a813a7d3093cd8533f84fc3d29543",
"Scripts/Game/ERR/10_AI/ERR_ConvoyStartup.c": "360228fd45aa6ecd9426e36120b5e637d2feee1e3a4a89aac8207526b871c87e",
"Scripts/Game/ERR/10_AI/ERR_ConvoyService.c": "e1d5dff5584f1bf12c146df510c860c3e0e046c989ff758def88ecf6b49c6392",
"Scripts/Game/ERR/10_AI/ERR_ConvoyRoadPlan.c": "fae404f85cae63e63976938a5fdb73efc988ba25c5846564f12edca04fb88551",
"Scripts/Game/ERR/10_AI/ERR_ConvoyPlacement.c": "4d0e8b6e147486fb65db82a1060f0c5641c1319ba9e418bdec99cb5a422a7fbe",
"Scripts/Game/ERR/10_AI/ERR_ConvoyCombat.c": "5c4b7576b28d51edea868cbb91a0ab31a40e6ddb558f1b8a38e07e20fdb2969d",
"Scripts/Game/ERR/10_AI/ERR_AircraftService.c": "3f05209227986b5c6bfb193f8f53783cfd4ef083bce898e22257c3e63daed913",
"Scripts/Game/ERR/10_AI/ERR_AircraftRouteFlight.c": "1d8d92bf6d97429d68a9f62018232e90cc124cc8d7445efeabe863706a31e2b9",
"Scripts/Game/ERR/10_AI/ERR_AircraftRouteEnvelope.c": "e8fcef844239c47a1f2f36be420afe943bc450091b05859435406b46c87fa511",
"Scripts/Game/ERR/10_AI/ERR_AircraftFlightEnvelope.c": "8125cef61fb283d0d7c4dd2df3c04b062b448f1101fd48dd53f4f4097df5fef3",
"Scripts/Game/ERR/10_AI/ERR_AircraftFlight.c": "aa25a8e67a30c48677bf528236402b7f8e5d815dc18df93b878520ad3d1fe8a7",
"Scripts/Game/ERR/10_AI/ERR_AircraftFieldRules.c": "30be68f4ca2db7e169f6f0432815821179cddf9159f7b150341dc8eb479bbd17",
"Scripts/Game/ERR/10_AI/ERR_AircraftFieldFlight.c": "c04e264cff9963821852094c451502d31bf9c96d4deae2e8ff8a2373b53b5665",
"Scripts/Game/ERR/10_AI/ERR_AircraftFieldEnvelope.c": "0f53c7d9ab167a804eb904d63725decebb53fd5796fdf27864a75abed5679838",
"Scripts/Game/ERR/10_AI/ERR_AircraftControlBridge.c": "b8f0141644d8f043c6db4c2d4bb93215c548e5c27ab5468c66e996d62bdf905a",
"Scripts/Game/ERR/00_Core/ERR_ZTerrainManagerProof.c": "3e8218670dccd87678ac8fa99be862392d094fef71c612db070e302fad853307",
"Scripts/Game/ERR/00_Core/ERR_TerrainTakeoverManagers.c": "2a0b14d7124fcbbec8ba7dd647126f0775f0db3f7076dd6b6d17cf017f4e00da",
"Scripts/Game/ERR/00_Core/ERR_TerrainTakeoverClient.c": "cfb39f4cf3cddc64e358af48641811c22c421bb867eb597488a7dd6c862b4a51",
"Scripts/Game/ERR/00_Core/ERR_TerrainValidationProbe.c": "64453bb4825024e6d394079a3cb110d3c52d55d656a00cfe9852d56ba7893a93",
"Scripts/Game/ERR/00_Core/ERR_TerrainTakeoverSettings.c": "cc4a68484995ad663b112d92b20dbfcae2f549a586ef713fb3ea13353291d1b7",
"Scripts/Game/ERR/00_Core/ERR_TerrainTakeover.c": "6f02e8c7f15b8bd07f0eaa27032150272945acd430d571260e8531073620c02b",
"Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "c949642366ad124dd2abc4111cd598eb94aa257fbae01b6fb3a0f1882a23e83e",
"Scripts/Game/ERR/00_Core/ERR_TerrainSites.c": "2e1f2102e4f30535178ec3dd168d833a0996de87bc3d3b17e059d44ad3129cbd",
"Scripts/Game/ERR/00_Core/ERR_ViewDistance.c": "8514f72f8207f12570d2317e64094a45507a1647dfd45a1501499ef81e90189f",
"Scripts/Game/ERR/00_Core/ERR_NativeOptionalSiteProbe.c": "19fc19e22348e6213827f620f4fdb5dc26144ea2ce0032de773e79c1fb155a26",
"Scripts/Game/ERR/00_Core/ERR_NativeInfantryCombatProbe.c": "3e4c4382ab91f470357268927b954fd101685df6b2244df483f0422d6c0d7da2",
"Scripts/Game/ERR/00_Core/ERR_NativeMedicalCombatProbe.c": "3b9c557b249728c518f9d6b5cb24b725ecc32a69ae12df069cdfb0da70a80b95",
"Scripts/Game/ERR/00_Core/ERR_Epinephrine.c": "e04c53c2f665997023b2daee744265cd22f4f0101444e4d9b0efbd114f74fa9a",
"Scripts/Game/ERR/00_Core/ERR_UnconsciousWeapon.c": "24d31bc857486638e55c605283c17cde0cdbd3c5c6021eac1ec93611387b10d1",
"Scripts/Game/ERR/00_Core/ERR_UnconsciousCameraProbe.c": "7d5ff3389ee806ac213db5be3a68288b3399142ccc29806df0d65b34a0b2fc3c",
"Scripts/Game/ERR/00_Core/ERR_NativeSiteGarrisonsProbe.c": "1a5ff8747d7501862085b5e9162043fee3b05e82c73c516ad8093aaada53dc60",
"Scripts/Game/ERR/00_Core/ERR_SiteSquads.c": "183883783a4e8399cf62851a4cc65a5d091d25131bc53b4323cf17286315b2e0",
"Scripts/Game/ERR/00_Core/ERR_NativeRadioInteractionProbe.c": "7b27552d233813894f65c08eb9f04b547c4ca9ff96a2370a763cb94bd4a555c3",
"Scripts/Game/ERR/00_Core/ERR_PlayerMedical.c": "e353ece5e1f3a6731875d8080c00fa9511446c309ff2a1454911e53c01f536f9",
"Scripts/Game/ERR/00_Core/ERR_JournalText.c": "87a6c19429f12c5630ed73170ca9a8a6d2255d6cd38b130166a78aacd15f2de0",
"Scripts/Game/ERR/00_Core/ERR_NativeEnemyLoadoutProbe.c": "39035d5fa3d6e29199fab810bd72cc5261a65dc3e668e6ed26ace36e43a7fa8e",
"Scripts/Game/ERR/00_Core/ERR_NativeAggressionProbe.c": "85a34cf60018e90d974cb67ab0f358f3073b6b9f02c563ec200e062f1d249e3b",
"Scripts/Game/ERR/00_Core/ERR_NativeRadioCampProbe.c": "67f1a088f9b20e5f0f11ed3aa083ffa772bffd7c74d85b7a307344ac3d47e09a",
"Scripts/Game/ERR/00_Core/ERR_NativeAirfieldMarkersProbe.c": "593e59664dbd7330b52674e5d4cc7b70db588cb75a1259ed808b74602501d541",
"Scripts/Game/ERR/00_Core/ERR_AirfieldPlacement.c": "0c2f4d31a2abc8f3f90bda20546543f2a1cf9306e9bf93351dda1883b990770e",
"Scripts/Game/ERR/00_Core/ERR_NativeOpeningToolsProbe.c": "0c5d6b96ed5a7cb1cf0d098d534dc7190449ed09339062e6b584729d53a61b4c",
"Scripts/Game/ERR/00_Core/ERR_DebugIntel.c": "a9f6e7e42a3214879a21052e897f9afc0653c12ff15d5bee7766e26a1af6ab17",
"Scripts/Game/ERR/00_Core/ERR_PrisonPatrol.c": "284618391ee2da84dbcda4a99ca3c072eae3d67b8a9ef40a86827b9ea00810f9",
"Scripts/Game/ERR/00_Core/ERR_NativeGeneratedSitesProbe.c": "83ab84ca4de7b545963896ed9d14e6545c23a2b940515730d74acc2f6b3dd18d",
"Scripts/Game/ERR/00_Core/ERR_GeneratedSites.c": "4a23058f27e3ab074df6f8f7bb6f08a8fd26fbadb8943c6fb8d64dcc9c221751",
"Scripts/Game/ERR/00_Core/ERR_DebugAI.c": "bc5529c60591a6c36c39cdb753b1af948690fc3c3c725f38a8d595b41a499235",
"Scripts/Game/ERR/00_Core/ERR_NativeFactionSelectionProbe.c": "946879d822e7be2d48e03a3140aa1aad3e3d44dd18507fa3cdedb4c6d7dd81b9",
"Scripts/Game/ERR/00_Core/ERR_FactionMenu.c": "3549339d7796e67fc646680493c226e545b6fb95daa0270af9901795bdf8ed50",
"Scripts/Game/ERR/00_Core/ERR_FactionSelection.c": "077c09491f4444fc58f093975fe9b3c294ea1fc966abef847ee5f13aa795ee29",
"Scripts/Game/ERR/00_Core/ERR_NativeContentProbe.c": "cb0ccfe1e1575f9ed80a8054058b471f3543378db059e6af2fed8eb42a262638",
"Scripts/Game/ERR/00_Core/ERR_ContentSettings.c": "572cc36f88255a37e8f0e9f284fb96e07c6c4032506b34b8c77d688f02785400",
"Scripts/Game/ERR/00_Core/ERR_ContentDefinition.c": "bc1dd4ed27ec894cf4bd617fb226cb8140b544aaa9ef6d8654e815d81e7f6fd0",
"Scripts/Game/ERR/00_Core/ERR_ContentMenu.c": "c82b173496e7524b4570b2afc5493cb970252a19aed740a53011988db7700a01",
"Scripts/Game/ERR/00_Core/ERR_ContentPolicy.c": "3a4987345d5a7159234a7e1a08bf5ac40dd5a23031e9b1953fc43a0501d9924b",
"Scripts/Game/ERR/00_Core/ERR_SpawnSceneLease.c": "20de7f96bacc9037580d88d4424664b4554b2c082d82e7d29913e9dfe390b594",
"Scripts/Game/ERR/00_Core/ERR_SpawnSceneInventory.c": "76b79d5bd9d1f367e1ed19724302b7d49f8b0ede85cf19e89c452582ef651f8f",
"Scripts/Game/ERR/00_Core/ERR_PrisonAI.c": "8709753e86dc2ca777183f08cb8fbb9851e0c0de495ca01520ebcb1b3dfa59b9",
"Scripts/Game/ERR/00_Core/ERR_SpawnClientScene.c": "b56f99a91cdc53bdb93d320d10839339022d7e61e6b101eee8296271abd7d3cb",
"Scripts/Game/ERR/00_Core/ERR_Settings.c": "e73b3654ea115568ab24456d43dfe0c6419d3ccfeaf53e5b7752d31f2950b58d",
"Scripts/Game/ERR/00_Core/ERR_AdminService.c": "c3e008c8bbf538c5bca3a82a975decc7a283a38543a9d2639d90a81ce592c51e",
"Scripts/Game/ERR/00_Core/ERR_EscapeGameOverScreenInfo.c": "6e3c65e55b05cf205040c310b9086faa41b88582c7f9faf49c010afd59da5b07",
"Scripts/Game/ERR/00_Core/ERR_GameMode.c": "251d55779509cb76f66938221b4dc8face53e187a82c9f2c651e6b1d13216c27",
"Scripts/Game/ERR/00_Core/ERR_NativeTransportProbe.c": "7a3fe04aa1c5ed1061ff63d9d5180e8b925932b62d76c1ffb49bd3dc23530993",
"Scripts/Game/ERR/00_Core/ERR_NativeVehicleSecurityProbe.c": "59bce863142e4fba4b6fb2f544bb8a58061f0e99b1a38e5ac291cea919563763",
"Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "ec319b070bd915d0326b9be1fd3fbc7aabc58956982a2ec69eb24d023a651815",
"Scripts/Game/ERR/00_Core/ERR_VehicleSecurityComponent.c": "2ffec4e646584ec546147fc4b08249825cb32b531aba26467b586d760485adc3",
"Scripts/Game/ERR/00_Core/ERR_VehicleSecurityActions.c": "bd7d0aeb4abcc9d8044e4888f9a92f9e5fc97c098bdfa3bbad57e1a29697a779",
"Scripts/Game/ERR/00_Core/ERR_ObjectiveText.c": "8d75b35ab977be0cb1a2e3d3d1cb8ef875cdbfba69c35784c3d195451ef944c6",
"Scripts/Game/ERR/00_Core/ERR_PlayerGuide.c": "4b3605522d732c8542a2c1ad5f3f59b3e8e5dc9f4aace71608ec9f259eea8069",
"Scripts/Game/ERR/00_Core/ERR_ForceSimulation.c": "2bbb8888c752a3ffc042f3059937526d25ae288af5b4db024cc683025a2605ce",
"Scripts/Game/ERR/00_Core/ERR_ForceLedger.c": "0ecaf1c5a52568e751678b0b1236e91e6adb538f8fbf010d38b61a312d1bf253",
"Scripts/Game/ERR/00_Core/ERR_NativeAdminMenuProbe.c": "ec8d04b6550b39b9688ef67b40cb2f14a9d98c8fff62b6dfb8d4a43e19b4e4c6",
"Scripts/Game/ERR/00_Core/ERR_ChatClient.c": "ae856e9fa0e19fc35d5c839fc5001bb28ce633eab59710911e7e56057dd452f0",
"Scripts/Game/ERR/00_Core/ERR_AdminSession.c": "af8bb43d207d6360ae4dae06c7283a81f89d57a66b644f3f730496b0d47d4a55",
"Scripts/Game/ERR/00_Core/ERR_AdminMenu.c": "d39dc876487b445efc5c3fadc19e1e06c6900c5cd57c93a01f35c32aa27d6039",
"Scripts/Game/ERR/00_Core/ERR_AdminPlayerTools.c": "56780d78bf423f54f482d8620f821b8d3eb0199194482b4f12e37f5ec3f55ef5",
"Scripts/Game/ERR/00_Core/ERR_AdminProvider.c": "62e05aceb49da07fed7aa89fb6b2f8eb3efc373ac09eff286fba983c3ad570eb",
"Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingFeedback.c": "e46988b92243df19a5400eca7406d6969b8b1174d8e3efad48fa0a936cbfdd07",
"Scripts/Game/ERR/00_Core/ERR_OrdinaryGateObserver.c": "1e376ca83c0005cf532539e14d7f47363c47b7c5b03fe3d55405a59208705fd7",
"Scripts/Game/ERR/00_Core/ERR_OrdinaryLookObserver.c": "d5a1b636938d65e9d11c78b31487f2924400c34d98e2ec812954a2a224da7dc0",
"Scripts/Game/ERR/00_Core/ERR_InventoryLayout.c": "1af5df45a0f06d19a017954e9bf4b2d722e2d2389f8ffdeb1d024435b9a08be8",
"Scripts/Game/ERR/00_Core/ERR_OrdinaryInputObserver.c": "808a46cc1e4b31b65dbbbcdd55493f594ebb3974bbec38b4a2402334c653c0ef",
"Scripts/Game/ERR/00_Core/ERR_NativePreparationStatusProbe.c": "456f4d7c3272b89d5f4c6713617baa5596d846994152356fee9a659839bcd8b5",
"Scripts/Game/ERR/00_Core/ERR_PreparationStatus.c": "43a406822a0361f916abc363f27e0c578ee94855036981d876bf47c68233c71a",
"Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f",
"Scripts/Game/ERR/00_Core/ERR_NativeProgressionIdentityProbe.c": "1d3fe20bce761a1082964bca9bad9ce79d1fa8b04db9b5053bae98da380ae560",
"Scripts/Game/ERR/00_Core/ERR_NativeFlightInputDiagnostics.c": "e231dcbdaefe81beb3bd587cb73be8fb3d3184bc86d18dbaa30a43ca4ba5dcc4",
"Scripts/Game/ERR/00_Core/ERR_NativeFlightFootprint.c": "a8862a04ac784426f431e2e9cd3f1f19f820b38a081674d29549b8b00277c72d",
"Scripts/Game/ERR/00_Core/ERR_NativeItemStationTeardownProbe.c": "028588a49fa9207087cd27ec9396979cd932daa071e2490bd0262cd71dae30d9",
"Scripts/Game/ERR/00_Core/ERR_ItemStationTeardown.c": "102e61216e86e47ad243cc19f6f66da1fcd8cc77f8799354ceaeb4a6dc74622e",
"Scripts/Game/ERR/00_Core/ERR_NativePrisonBreachProbe.c": "4889e0d3799a6a21b9f84bcb2f2ae78dce16269cccd1329f8d1fcc1a23e7c22c",
"Scripts/Game/ERR/00_Core/ERR_PrisonEscapeService.c": "535cf17e21fc8e62716c7d9da88d976ee2f526501c6a4752b822f1252e742bf4",
"Scripts/Game/ERR/00_Core/ERR_NativeDiscoveryMapProbe.c": "9ed32d391d08d937ff4f9f33bd11c3a204ce9a2230c2d72b6761e0320b31f24f",
"Scripts/Game/ERR/00_Core/ERR_NativePoweredFlightProbe.c": "7ae5d6f85bbbebec214c66bfdf6f53b93c802f109fcd5bcfbad82c5d61d6cb9f",
"Scripts/Game/ERR/00_Core/ERR_NativeLocalAdmissionProbe.c": "29c860ca3e51cdaa463f3c23a98ff45ee0499ce9bbc322046e0efbed587f1e09",
"Scripts/Game/ERR/00_Core/ERR_LocalAdmission.c": "a076922d1ae966cf5cc67b198166ca6b1288358fb7f641207a4681e6a610a2ae",
"Scripts/Game/ERR/00_Core/ERR_OrdinaryScenarioLaunch.c": "a4e7e56d174ebd15b4730202dae4c8ed06144f3f27c23ed49c99e2d297dc421a",
"Scripts/Game/ERR/00_Core/ERR_NativeCasualtyRemoveProbe.c": "4cfc06f6d43b709b63caae714155ffc562502e884f49a9825623c6f46972ad36",
"Scripts/Game/ERR/00_Core/ERR_ExtractionPlacement.c": "6d388fe21f08b25cbdb5dfa4e198d94a4c80c5092f8d17630a4654e18bf8b3f5",
"Scripts/Game/ERR/00_Core/ERR_RadioFeedback.c": "545262e65e9b3645d9e514a0521e442fe08f0c2e4e7c83ba638c5105d09818db",
"Scripts/Game/ERR/00_Core/ERR_NativeCasualtyGroundProbe.c": "41f40db3735f8aa535c0061458d9892dcfe972222b8a17238e67b65633c46bc3",
"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c": "26f0c7ebe8563bb022f7c383674e7d8997b0cc35c7ea321d39d74f2493c1ed9d",
"Scripts/Game/ERR/00_Core/ERR_NativeGuardCancelProbe.c": "bfa1c65cb039e19c3d1891e4a3fd33469e974c97cc7f42128efc31a8f587d514",
"Scripts/Game/ERR/00_Core/ERR_NativeCasualtyServiceProbe.c": "02a9d70d1f4ba20326df199ba41489cfbae12b7bb0aab441361421cee38ad9ea",
"Scripts/Game/ERR/00_Core/ERR_LoadCasualtyAction.c": "1521af55a34110ce1c971b5226a618a9c6d931622abaae4946d9c0d27c05a273",
"Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingGameMode.c": "f4cf19440583ac24346831a2d5f1d7f734c031e46dc266c499972329dd0533cf",
"Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingOwner.c": "6346a05ddda030f7d9b6f026f977d5f018ee16002fa519e8c49dcd700c323dc7",
"Scripts/Game/ERR/00_Core/ERR_CasualtyLoadingService.c": "e6f22813f7a04e2c0ea000d054407191f2be8badfa6c51e062e9dbf84b95c67b",
"Scripts/Game/ERR/00_Core/ERR_InitialGuardRules.c": "8c9d6b1dc4c2af96284e34f487eebb5a221091016ef108006dec60b4e3836558",
"Scripts/Game/ERR/00_Core/ERR_SiteDiscoveryRules.c": "dcbce3b7aee89bfc47a50e9de89209758af1f1bb462b99af67a8ad7a26e9f229",
"Scripts/Game/ERR/00_Core/ERR_NativeObjectiveLossProbe.c": "6b80fd317a8c6e8583bd4337870838a86251e3b8a681d0aa07e8b52e22abfc48",
"Scripts/Game/ERR/00_Core/ERR_Inventory.c": "b63e679d5b650b63a7a91dfc3f42a62f4be58b0338f6df3313e66d29a93bebf6",
"Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentRestartProbe.c": "7a836a206381b8e8de24c92baf141beb30575723675dd6948d738169ed26b507",
"Scripts/Game/ERR/00_Core/ERR_NativePatrolProbe.c": "5a2af71cc4cfccc7dd7c23584398a38290eba1a8894cd46f6967252ff3a7087c",
"Scripts/Game/ERR/00_Core/ERR_NativeFactionCatalogProbe.c": "e3011fa47b67122d7b2c23af8f91b7a217599d6cc114c4f9de628744b9c948d3",
"Scripts/Game/ERR/00_Core/ERR_NativeEnvironmentProbe.c": "9e2e66ac5d9778a1c65445348e3300cbb90b68b3f669f3ddf1d2b78a858430eb",
"Scripts/Game/ERR/00_Core/ERR_EnvironmentService.c": "c0fae5bf51ccf507bc84d44adc2d1dff021cd83653c0468b7645a4f343e3fc8d",
"Scripts/Game/ERR/00_Core/ERR_NativeAdminSettingsProbe.c": "73e58561e08e50008d33f81eed606dd4e8109fb69a627e892d28ca468d641f7d",
"Scripts/Game/ERR/00_Core/ERR_NativeCasualtyLoadProbe.c": "94c533deea654ec546df3f1ebb7cd213e6cd79b1125d99bab5303ef8e87b018b",
"Scripts/Game/ERR/00_Core/ERR_NativeMedicalProbe.c": "4b73e7cf35e9c8fddb089678a320ea58272e1b6611318d0a762754c171eff785",
"Scripts/Game/ERR/00_Core/ERR_NativePrisonerProbe.c": "e2d1ffe5d269add55124601ff0d1dc032a398c7d51010736e6f0e4cbeb38ae86",
"Scripts/Game/ERR/00_Core/ERR_NativeRecoveryProbe.c": "d6691f22432b3ce37d07d448aeb3ce7feb5cd09e852e0167b5e4676afd24bb21",
"Scripts/Game/ERR/00_Core/ERR_RecoveryService.c": "86f9a7769e3ccb19fc61127fe2fee2ad0dd825487a5cd59f334de8b9741c93cf",
"Scripts/Game/ERR/00_Core/ERR_NativeLifecycleProbe.c": "b613a5dbe81c2032fd02d31070ae5631166d14d0b02cdbec3b63b782f0bbc115",
"Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "270bf465808d23627a11e720c6632d4fea35d0c679e63aa64046ef8874d68ceb",
"Scripts/Game/ERR/00_Core/ERR_NativeTransportSurvey.c": "816df9a2a9072f9f7db75e56168d8a8fa1e665ee8f7dfa79af011b354254909d",
"Scripts/Game/ERR/00_Core/ERR_NativeStationTeardownDiagnostic.c": "172248540932174341882861bb78a9720a6cf89981fcdf9dffe63f7fd4023f2c",
"Scripts/Game/ERR/00_Core/ERR_NativeRadioDefenceProbe.c": "ff1e27a0ce75b123a86e7df31354831880ca62ea90b6c5d7c60d3ba168e1fff0",
"Scripts/Game/ERR/00_Core/ERR_RadioDefenceService.c": "f5f0bf1352141f933d0edb5630e30541e001dc07e1d2c8529b29cc159c126b13",
"Scripts/Game/ERR/00_Core/ERR_ObjectiveDetails.c": "628ebd166dcb5544c2d18dce489619984887ee18296cf2446fc6d894f89dd5bf",
"Scripts/Game/ERR/00_Core/ERR_NativeObjectiveProbe.c": "71fbd2479a70048f83d8b262ad1452f427be2c0afc8b071ef13bff477b9dc29b",
"Scripts/Game/ERR/00_Core/ERR_NativeTimeProbe.c": "4a2c6ffd947334a0a71eac083d10c853c524b00042e9ea0987497c4cee60c3d5",
"Scripts/Game/ERR/00_Core/ERR_TimeService.c": "63867760876d523a1794f619118a52c5cd387d5d92756cd286b2c16a348a6c7b",
"Scripts/Game/ERR/00_Core/ERR_NativeResultProbe.c": "c9a89cae067f221b9f33965b4d3ab311b78ba79ea383ca65032c4001df44b472",
"Scripts/Game/ERR/00_Core/ERR_PlayerEscapeResult.c": "3124ab4d2d6d471409a47aba0af528790734df53243c03fe0cdac3e407047c14",
"Scripts/Game/ERR/00_Core/ERR_NativeExtractionProbe.c": "4b09385f73206de004f4f3c38a6192fd658a0d2012482dc5a84dff1599ceb972",
"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c": "91357099b4e0401196b67d48963be54be30e56bdba57cdac67dc20b8ebb883e9",
"Scripts/Game/ERR/00_Core/ERR_NativeSiteSurvey.c": "ac0203753ade0cdff6d483132797a80e4520f14546c3f9dea288281cd4cd9c4f",
"Scripts/Game/ERR/00_Core/ERR_PlayerAdminCommands.c": "eca9baa3b07da48a740851583540840f8bf5f65f7be854902a3778f76967faad",
"Scripts/Game/ERR/00_Core/ERR_NativeContractsProbe.c": "421e4b901afe6118b6bf44e8f678db8ccdf1c83b39da0cf816baa36f7275ccdd",
"Scripts/Game/ERR/00_Core/ERR_Resources.c": "d0169aac6fd0c38928c47a9002ded0fd8ba558ea3314a600e792d307ac1ca3ee",
"Scripts/Game/ERR/00_Core/ERR_NativeDefinitionProbe.c": "904d8d4c3e7b91d49dadfe495fc7b4f02f300e4aaf7efa348df5ca17ec4a6e8a",
"Scripts/Game/ERR/00_Core/ERR_DocumentComponent.c": "885c8ab4fc9e64c3f8b40056536096c8c32b011cb340b25ca00353a96da15c69",
"Scripts/Game/ERR/00_Core/ERR_SiteService.c": "c87a056a1e7cf995cad90302c7591d7b66e2f912f50e5d0cd18302c506264936",
"Scripts/Game/ERR/00_Core/ERR_SiteDefinition.c": "2088c45798f0eced702e0abd97550b8d1fc97ebcc34c3d497978b7424f6c670d",
"Scripts/Game/ERR/00_Core/ERR_Objectives.c": "b9cd5bb3b193c20401175c4328405be1b121e8a60b7b5999910b6a71f834af8a",
"Scripts/Game/ERR/00_Core/ERR_DiscoveryMap.c": "a97e131bcfc578fe57ec2ed075a2619ff5c4c0b4c12d65c2a92e9fb2b83ce958",
"Scripts/Game/ERR/00_Core/ERR_DiscoveryService.c": "edc65bfbcdbfc9a7c41e19da3408b6fe5ed7d44bdce18a286cff4875eec75613",
"Scripts/Game/ERR/00_Core/ERR_Observer.c": "7422f79bfa5ecf9b13c37b7ad0cf0b23469ed7059e85462ff96b7704084d29d9",
"Scripts/Game/ERR/00_Core/ERR_PlayerRoster.c": "c038dac0f749bd29ebc35a4e952904b41a34417ba738904d5efcd1833a263e0b",
"Scripts/Game/ERR/00_Core/ERR_Supplies.c": "752e8a56b0b8cde33cf532032cb0a203553017b686faac2e19bee06f7a9c0713",
"Scripts/Game/ERR/00_Core/ERR_ScenarioComponent.c": "81bf30d358c7b100248be17cbc2e6beb2f107300c939aede8a92d273eb7dae1f",
"Scripts/Game/ERR/00_Core/ERR_Actions.c": "cabb21413c90b252d29708b62228d0679c51c76e39ee0e483953ad7061b2b9d6",
"Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "47a39c951be71bfcf1cc50526d507d0f9d8ef2fc09408697b6fe6b0dc5a529e2",
"Scripts/Game/ERR/00_Core/ERR_FactionCatalog.c": "a5a8c53acf21259e14f59cb919535910f30dabff5a9179c664bc6a7a4d744d6e",
"Scripts/Game/ERR/00_Core/ERR_Location.c": "5b0b058130ccac02bdc1dcd6474d51a6f45da4dd52ed6c37906692fca3f194b1",
"Scripts/Game/ERR/00_Core/ERR_Actors.c": "980d30964845600a261693cc5c5553e1472e8e54867bdc06133ff5c7b36c9128",
"Scripts/Game/ERR/00_Core/ERR_MissionRules.c": "f7abc38ad8fdc375ce7fa63a65f0bade027d22b37e09de5e3f94ba8c3c63cc41",
"Scripts/WorkbenchGame/ERR/40_Chat/ERR_ValidateWorldPlugin.c": "f567518b54f43b88747df2838cdfd6ebb34605c0919a3e7d271d28dd8b67a9b6",
"Scripts/WorkbenchGame/ERR/00_Core/ERR_ValidateBaseWorldPlugin.c": "49a38c37b51e5318c7dcbcb01543dd9a6300d053f0d39808b3974f4edc45b871",
"Scripts/GameLib/ERR/00_Core/ERR_DiagnosticNoSplash.c": "0ea1b402f8927b6d68bf6f7e5caa2967f7e3a39147634faab147796b791933b5",
"Prefabs/ERR/TerrainConnector.et.meta": "9f37c979ae282aabca29ce84beb0db851ee8b9a19f7f3a64d387c175616127f3",
"Prefabs/ERR/TerrainConnector.et": "cf9cb28f5a3f41931380864a29ac979aa1d5e843456f564ac7a7de78f88e1aa8",
"Prefabs/ERR/Epinephrine.et.meta": "f1861f0b0ccace1b7b3d9c29768e37a83bf0c6fae5a411b1bd61d6b2eec7ed89",
"Prefabs/ERR/Epinephrine.et": "e09c70b3d47a4dc5b92fd332c8222b99554b28a8a0c93cb5caac18eec4501571",
"Prefabs/ERR/AssaultParachute.et.meta": "e9dea2d533ad1ce6ce689e0e2815c97a6382e1b90c35ce1efa88a885527e8e18",
"Prefabs/ERR/AssaultParachute.et": "b556997989605e2a05982418b7e9f26d12d427eb3ea6e3bc50e85c67ea7aa4b8",
"Prefabs/ERR/ReconPilotWest.et.meta": "4785f23bb492c6af420ee7896ddbfc9767e0db1e06de95207df2dc949a1b1814",
"Prefabs/ERR/ReconPilotWest.et": "8f8221927269352e55c8026ee5b00e026c281c79af6684b386f24e7dc4675fb8",
"Prefabs/ERR/ReconPilotEast.et.meta": "d73df3c896359a54514d2efcd851f579feca7a2619b76c2a38f607649a31a4f1",
"Prefabs/ERR/ReconPilotEast.et": "d961f329823b991eafed80d085de1bd89b44a4575be98d8dac385d6b77741ba2",
"Prefabs/ERR/ReconCrew.et.meta": "2653e8c5b1cdb857de5badd5959ddd9826a6a298ab3c166628dbb835d7104d90",
"Prefabs/ERR/ReconCrew.et": "33953379ceb725bcd0cbe505cd643c94adaed17dbbfa95dadd404d6b8e345715",
"Prefabs/ERR/ReconHelicopter.et.meta": "d80f1c3d6a6f9104562b89729996c1c92ad240f08cdcf48d4c390a09d2047c08",
"Prefabs/ERR/ReconHelicopter.et": "c609ee59ab145e0a1936f95726b86df643f5cc425c43924029e9c1abc69ebbd0",
"Prefabs/ERR/ScoutWest.et.meta": "22a6607b4b8fe606ca75a634a0b2ac3178e7bedae7f9ff01e7a4989f3b39a3da",
"Prefabs/ERR/ScoutWest.et": "2681b5a3f8621adb44195f0dbca6f3e79ef7decad8f9d0dd0e1a801ec2549627",
"Prefabs/ERR/ScoutEast.et.meta": "7c72af632537f687e92f30b52d97fc7d70dadd39d33f37e0b1004f9596f55012",
"Prefabs/ERR/ScoutEast.et": "b4593aab494c4f21637757b3daff4f349da77b4c48ec5e8a4a2917a6a12cf811",
"Prefabs/ERR/ScoutRadioPack.et.meta": "825506e3d814d30a52d5dbf64124470641c07a0453543ba71426841e6c783635",
"Prefabs/ERR/ScoutRadioPack.et": "f1c4911e2556c0e0caa8b896982190c5e7d0433e850b4610e19442caf9117607",
"Prefabs/ERR/ScoutGroup.et.meta": "62e43fd152ce57aa4ceb2187a49e4aecdeb9f428b3a1e8318f86bb83dbf8a259",
"Prefabs/ERR/ScoutGroup.et": "8dc0fce8ee3decc1c367411b00b6d8518df9d8458281cec0881464a2ce906af0",
"Prefabs/ERR/PrisonPatrol.et.meta": "5528e0d778dce5ed39c3e504c6427625527127b23269d20fbf12ca2bffe52ffe",
"Prefabs/ERR/PrisonPatrol.et": "dc88c31cf5c415573a874f74e13572f0add9e6122c8fcad507fe82860d789c47",
"Prefabs/ERR/RadioCamp.et.meta": "3cb8d3d553ab6d8d111a74f721cf4e69ee1011cbb90248b83cdc7275697276bd",
"Prefabs/ERR/RadioCamp.et": "5e6216bf8e6e160da5d9f966c8f7c2081bf6dd16dfac1b89d682a14b3b8a6716",
"Prefabs/ERR/PrisonBackpack.et.meta": "7da6aa45467250edc910ad7230dc244d1b041e8a6f55881eb3747ce51f9212ba",
"Prefabs/ERR/PrisonBackpack.et": "ae750f08fc9af645561f59d7e5809bd22f4cec26ca8fa6409d09730765958c91",
"Prefabs/ERR/MortarCrew.et.meta": "fdfd4fcd21a67c3d698fa4aadc4e5c76e665cebf4be86013bc389e493fab63cc",
"Prefabs/ERR/MortarCrew.et": "21086e886fe3199624208c9a866f883ec109f7d08746c2b56b497e59857fb656",
"Prefabs/ERR/ConvoyCrew.et.meta": "0a909a15b7dcca34202ded136b3bdbbe8898153c9589e1cce1388433d362da02",
"Prefabs/ERR/ConvoyCrew.et": "29a525a29605386dfcf292dc2316e9fc7650ce39db9fbaa4ce4372ad0de66db4",
"Prefabs/ERR/FactionManager.et.meta": "9bf53d5e4bcbe60dd1a4ece1409fc23c349055c860708620f5f6e9716290a97d",
"Prefabs/ERR/FactionManager.et": "5a7b330f33956cc1781c8dc843e8186f2d37a98653ab36e7c42b9019df3c89f5",
"Prefabs/ERR/Prisoner.et.meta": "974278ba49fafeed70b619a0067bbc70ae4d534be441c812ce2bef4a5fb3c022",
"Prefabs/ERR/Prisoner.et": "e6d345ac98ad9ec742bf6c3b8686839c3256df9833d31bb4bdf605cd41d0ba5c",
"Prefabs/ERR/FieldCover.et.meta": "83461ffa76244e1d69f20b053a9741ccdf7d127009182bd540a7e5ba6150c3d9",
"Prefabs/ERR/FieldCover.et": "e403d5cb3a5966f0cea81f15e0e825d482ba1a7a27b12498319ba45a414963b0",
"Prefabs/ERR/ObjectiveDocument.et.meta": "eaba9903be147b98a1106e2273e2270773df73b9b22f2cd4e20136a8e281382e",
"Prefabs/ERR/ObjectiveDocument.et": "5118ecaf9d2038eea44a4b785f05d2e78781dc1387249aa58a6782c7e6752e14",
"Prefabs/ERR/SupplySite.et.meta": "b41944b12eb3528ff7a3ac94258b18c66ef161aa6a38894aee300a1ac4798630",
"Prefabs/ERR/SupplySite.et": "f33681281d26676fac88736091834d5a7b87fe0fa01883582542df964dcfc694",
"Prefabs/ERR/SupplyCache.et.meta": "2f5de3a4aab1e9d0e35521f48dc57b95bd6e449c383dec4f1c258e10295904cb",
"Prefabs/ERR/SupplyCache.et": "4c97b0514fe7e723046f40f0b396f6573b12eb9981ca5df70b9e8aa3cf29323e",
"Prefabs/ERR/Patrol.et.meta": "7c5da568fa2fcf0709ee2959253cb068d7c7ed7c2467af3b247a7e70efd96b69",
"Prefabs/ERR/Patrol.et": "d3eca8fe9197c57a27a285cdb3baf168b037b198d92b39df28a338ae2cfd0c74",
"Prefabs/ERR/SpectatorCamera.et.meta": "2a16558f93915e31908a674509e9c89976470f78a84a1174a64b94b68b8f77ad",
"Prefabs/ERR/SpectatorCamera.et": "cd2dcaca0df4c39816e582c594591a535525ed77827ffa3de24d27b79996544d",
"Prefabs/ERR/PrisonWall.et.meta": "0294bc5dbb56f90f8153d62459bb0a6ad91d76a479812bbec9c7db182fdb58d6",
"Prefabs/ERR/PrisonWall.et": "9b410b7c85bb001be4601ad93f750e17b8318b850306d84f29c4dc1b02723d7c",
"Prefabs/ERR/GameMode.et.meta": "106769cd34525c9d440057072836cb7401a6752148c40edd7fe61c03bd58328c",
"Prefabs/ERR/GameMode.et": "4d3e5e2df28cbb8292c436ae05d4fc7e5ca789a123450a6968d9a718b6ecef20",
"Prefabs/ERR/Extraction.et.meta": "c2a838633001e2e3a202d39cb33aa744ebcd996017ad032359069641b5d13853",
"Prefabs/ERR/Extraction.et": "4d24c7811415c06386205e5bf5c132a23fcf21e96c75c7657ccd5f3ac914ac50",
"Prefabs/ERR/Radio.et.meta": "bc91137b68ba550217914fb8892bb44d7e1920e4a1086f3e506623832a44212f",
"Prefabs/ERR/Radio.et": "99b1d80b49d1e7f9d30aa4283772a36fd66e962369f288f5fe329c7fc911bb1b",
"Prefabs/ERR/Prison.et.meta": "2e426ef3de68f4107907854b51e818bc11d84649a01c538e3f18dd9ebec766bb",
"Prefabs/ERR/Prison.et": "c0ca5219aa2d6322ba7d094b92000640b259112ff6611a745c0713c8875d09d4",
"Prefabs/ERR/PrisonDoor.et.meta": "b8f3db52bf186426026668fbb9d633c3cbd4d438ab301fba880398f6a0e781c2",
"Prefabs/ERR/PrisonDoor.et": "b0ff94443fe334032113a663917de23f920a8b73ffadc9c8e9f11b545022b3d2",
"Prefabs/ERR/TerrainTakeover.et": "6206fe2eb4e2c6c1a9e3ddf2898535ae08981c115adc6ddd926017ac20d4b535",
"Prefabs/ERR/TerrainTakeover.et.meta": "64e953e378ab1d2a75ee7246f876f4ef93ae8a4e3fddb5002d7ba37268cb959d",
"Prefabs/ERR/Items/EmergencyRepairKit.et.meta": "da6f065cb2414b5a4cbe9ef0f0b1295b2466f26ad406c0bddb83845d4598efb3",
"Prefabs/ERR/Items/EmergencyRepairKit.et": "0157bc235eeb78a0e1373b561fd22a1dcb225c833ff7c2d4abae688bca0ec92a",
"Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et.meta": "123955da03462befb90e293b3bb856d49cc761166611b38ff47cb48ec2fbe95c",
"Prefabs/ERR/Vehicles/SupplyUAZRearSeats.et": "cd4acdcecad299445952aea0adefc85f2b9e9b43f8186f100e0505c5621b3656",
"Prefabs/ERR/Vehicles/SupplyUAZ.et.meta": "544c94cf1c26757a10654de7856cd6cc48b821ce3bdc02add13cfe6514269915",
"Prefabs/ERR/Vehicles/SupplyUAZ.et": "29f157849f413261494a63d4d5b0a97e8bbe61cb076efcd59d6c940653f23352",
"Prefabs/Items/Equipment/ERRM_SharedFieldMap.et.meta": "59093e9072c50d99c86da7609c87541016da5bcf92b98d99db4c524e1c8e0e8d",
"Prefabs/Items/Equipment/ERRM_SharedFieldMap.et": "30dee8e9eab459ea32a7d835a9fb89d43df47708057cab829f067b25a24cd581",
"Worlds/ERR_Everon_Layers/default.layer": "6bcb7fbb27b6282719dae8a37486e518d4cbaea385f2ea9af1918b36bb28b175",
"Configs/ERR/EveronSites.conf": "b479000b36154a6a3af6b519b086251d981ef63cb86a973d00529499cfd4238c",
"Configs/ERR/ObserverInput.conf.meta": "9714dce6c38ee81bcc513c8ebef51d7af63fd15bcdda2e40946937c625dc3ba4",
"Configs/ERR/ObserverInput.conf": "e898d645911e85b6ba902366cb23890d8bb14bbd2c485102e6d49ea728e9b054",
"Configs/ERR/AdminMenus.conf.meta": "5faf5ddc0a51c1d0f82d60af00d91edc22fe9c39aac50d8d04b772a2c9271be1",
"Configs/ERR/AdminMenus.conf": "a7f889f260e43656136fc159342129e5f48748d28c426f65f9faac37b624cf94",
"Configs/ERR/VanillaFactions.conf.meta": "ac77725c0c21974991ef47a466b88122e939de8b46fd23e68889e7674cbb2bfd",
"Configs/ERR/VanillaFactions.conf": "db890b61b48ee15484041fd2245a862d9fa9e7ba21b1229c281ff37c448a35b1",
"Configs/ERR/EveronSites.conf.meta": "d5fe68025ef4e7c1e16082cf5873b7c7172eacbfaef4ab29b7e0e3c98f8dca56",
"Configs/ERR/GameOverScreens.conf.meta": "eb654b745c0b97b41c991694569ef4877a3c2315e0826f9556337cd68690843e",
"Configs/ERR/GameOverScreens.conf": "45231061911a1462d45fb6db0fecc2b0793f17b5ae71017174954ff4fbd20236",
"Configs/ERR/Tests/LegacySites.conf.meta": "097ac7daef4fc18344699a8471fdd77f9d158f8c70bab394068d7a08e4777ac0",
"Configs/ERR/Tests/LegacySites.conf": "3864eb638d0ed4dd313013d2d787f975ae6ce4bbe238569919f76b73d5f7ca42",
"Configs/ERR/Content/Registry.conf.meta": "046aa988bf8e972afcf7a60b6f2312f605f016f98625dbbd9cd75ebf9ea88800",
"Configs/ERR/Content/Registry.conf": "546a5a407c9e6c25c9157ae4392898fa3f40c04c7956649e62201f9ac0ba187c",
"Configs/ERR/Factions/USSR.conf.meta": "057397d97096346791b51b7b13fbe18af218bcf78e9984d9c01b49a2403de611",
"Configs/ERR/Factions/USSR.conf": "407ea27f80a64c5184c089d43cdd0bdabfc5974c84f1d2a245081fdf2afa3f30",
"Configs/ERR/Factions/US.conf.meta": "a05469aef028e9e17eba545e81e2af2887b59f0fef17dac51a23c7b8155e381b",
"Configs/ERR/Factions/US.conf": "4c3da063abb6e3ee39a6e4e0c5a9ffd5eae9d209d58470ea18b45dba5528db1b",
"Configs/ERR/Factions/MissionVehicles.conf.meta": "00c368b6271d3440cc8bf627b03a384d247635723923fc5ad2104b8b4007b035",
"Configs/ERR/Factions/MissionVehicles.conf": "5f74f4a7089c7e7b54ad62463159ce8f0bab25a6b85268dc3872ea6001e048fb",
"UI/layouts/ERRMap/SharedMapRenderTarget.layout.meta": "5c846445cc089e2e08899ba703059d4adb805ff30ab5a16409a3cd59718cbd54",
"UI/layouts/ERRMap/SharedMapRenderTarget.layout": "49a2da4181b94d42174f58c7f9b6bf2207116c99427d61ff1c212092ac7db4d2",
"UI/layouts/ERR/AdminValue.layout.meta": "56b3d2335db400c1308e07c4a35d278b23ef32013dfd6dc82951866327428d08",
"UI/layouts/ERR/AdminValue.layout": "cd811af6d2fb187f01c74e20ea07ad85669546b0ad70efae2ce52921ce26cbca",
"UI/layouts/ERR/PauseModsButton.layout.meta": "9ed6adabd8f53eb9a562d7186789876bba5c4202155ca894c1af866ca47354f3",
"UI/layouts/ERR/ContentRow.layout.meta": "8c4bc13b41e7aee38e0ca640a97813ed1a6964a00e2cff9e1fe4ebd71fc2fdc6",
"UI/layouts/ERR/PauseModsButton.layout": "d21d436291e2c1b262e33dc228b0d60a1d188dc9e85cfda6d2373f8281431b79",
"UI/layouts/ERR/ContentRow.layout": "62d2c95814c99d906266fa96c6112e04a7fab1667e1a05e558d1d3974adc2d76",
"UI/layouts/ERR/AdminMenu.layout.meta": "9deeece996f43b1f1fed6b5ec89279645c7b6424250200a42580cc088142e9bf",
"UI/layouts/ERR/AdminMenu.layout": "997e4f33660de5bb54c2939898cacc8857736a73db2c6919888ae0e762050e5c",
"UI/layouts/ERR/PreparationStatus.layout.meta": "75b12176a443bb911fc4ad446982d762201fda42ed38736b79bc5439fca31ccc",
"UI/layouts/ERR/PreparationStatus.layout": "bd269cf8dc6f27735423743dd5b78242550518414448a0256e5e12fa6b92c459",
"AI/BehaviorTrees/ERR/MortarRapidFire.bt.meta": "f2a44ece28891240e6bfa1d01af29428adcadbe82c80e287eb33cd5e58f1f90a",
"AI/BehaviorTrees/ERR/MortarRapidFire.bt": "16b263bcb2fb3ae361367a600753a829425620d2e6b350a891c51fba47437ab6"
}
@@ -0,0 +1 @@
ERR ISOLATION {"netns": "net:[4026533888]", "interfaces": [[1, "lo"]], "routes": "Iface\tDestination\tGateway \tFlags\tRefCnt\tUse\tMetric\tMask\t\tMTU\tWindow\tIRTT \n", "ipv6Routes": "00000000000000000000000000000000 00 00000000000000000000000000000000 00 00000000000000000000000000000000 ffffffff 00000001 00000000 00200200 lo\n00000000000000000000000000000001 80 00000000000000000000000000000000 00 00000000000000000000000000000000 00000000 00000002 00000000 80200001 lo\n00000000000000000000000000000000 00 00000000000000000000000000000000 00 00000000000000000000000000000000 ffffffff 00000001 00000000 00200200 lo\n"}