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,304 @@
---------------------------------------------
Log /tmp/erri-loading-protection-native/first/profile/logs/logs_2026-10-07_20-43-46/console.log started at 2026-10-07 20:43:46 (2026-10-07 18:43:46 UTC)
20:43:46.872 ENGINE : FileSystem: Adding relative directory '/tmp/erri-loading-protection-native/first/profile/logs/logs_2026-10-07_20-43-46' to filesystem under name logs
20:43:46.872 ENGINE : FileSystem: Adding relative directory '/tmp/erri-loading-protection-native/first/profile/profile' to filesystem under name profile
20:43:46.872 ENGINE : FileSystem: Current working directory: '/tmp/runtime/'
20:43:46.873 ENGINE : Initializing engine, version 192142
20:43:46.873 ENGINE : CLI Params: -server {C1E20667DCE324ED}Missions/ERR_Everon.conf -addonsDir /tmp/erri-loading-protection-native/first/addons -addons 2528466DE220D91C,70C981A53E02B64F -profile /tmp/erri-loading-protection-native/first/profile -noBackend -noSound -bindIP 127.0.0.1 -bindPort 2001 -maxFPS 30 -logconsole -noSplash -noThrow -disableCrashReporter
20:43:46.875 ENGINE : Addon dirs:
20:43:46.875 ENGINE : dir: '/tmp/erri-loading-protection-native/first/addons'
20:43:46.875 ENGINE : dir: './addons'
20:43:46.875 ENGINE : dir: '/tmp/erri-loading-protection-native/first/profile/addons'
20:43:46.875 ENGINE : Available addons:
20:43:46.875 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
20:43:46.875 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
20:43:46.875 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed)
20:43:46.875 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed)
20:43:46.875 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed)
20:43:46.875 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed)
20:43:46.875 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed)
20:43:46.875 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed)
20:43:46.875 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2' (packed)
20:43:46.875 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed)
20:43:46.875 ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed)
20:43:46.875 ENGINE : FileSystem: Adding relative directory '/home/jakub/devel/gabreta/addons/NogovaReforger' to filesystem under name NogovaReforger
20:43:46.875 ENGINE : FileSystem: Adding relative directory '/tmp/erri-loading-protection-native/first/source' to filesystem under name ERR_Core
20:43:46.876 ENGINE : FileSystem: Adding package '/tmp/erri-loading-protection-native/first/addons/Dependency_65930CB4CD0237B2/' (pak count: 1) to filesystem under name Parachutes
20:43:46.876 ENGINE : FileSystem: Adding package '/tmp/erri-loading-protection-native/first/addons/Dependency_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1
20:43:46.876 ENGINE : FileSystem: Adding package '/tmp/erri-loading-protection-native/first/addons/Dependency_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore
20:43:46.877 ENGINE : FileSystem: Adding package '/tmp/erri-loading-protection-native/first/addons/Dependency_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments
20:43:46.881 ENGINE : FileSystem: Adding package '/tmp/erri-loading-protection-native/first/addons/Dependency_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core
20:43:46.882 ENGINE : FileSystem: Adding package '/tmp/erri-loading-protection-native/first/addons/Dependency_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02
20:43:46.885 ENGINE : FileSystem: Adding package '/tmp/erri-loading-protection-native/first/addons/Dependency_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01
20:43:46.981 ENGINE : FileSystem: Adding package './addons/data/' (pak count: 14) to filesystem under name ArmaReforger
20:43:46.983 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core
20:43:46.983 ENGINE : CPU vendor : AuthenticAMD
20:43:46.983 ENGINE : CPU type : 2
20:43:46.983 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor
20:43:46.983 ENGINE : CPU cache info : Unknown cache
20:43:46.983 ENGINE : CPU count logical : 16
20:43:46.983 ENGINE : CPU count physical : 8
20:43:46.983 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2
20:43:46.983 RESOURCES : ResourceDB: loading cache (id=0 name=NogovaReforger path=/home/jakub/devel/gabreta/addons/NogovaReforger/resourceDatabase.rdb)
20:43:46.993 RESOURCES : ResourceDB: loading cache (id=1 name=ERR_Core path=/tmp/erri-loading-protection-native/first/source/resourceDatabase.rdb)
20:43:46.993 RESOURCES : ResourceDB: loading cache (id=2 name=Parachutes path=/tmp/erri-loading-protection-native/first/addons/Dependency_65930CB4CD0237B2/resourceDatabase.rdb)
20:43:46.993 RESOURCES : ResourceDB: loading cache (id=3 name=WCS_BMP-1 path=/tmp/erri-loading-protection-native/first/addons/Dependency_5E524E4FEECCA92B/resourceDatabase.rdb)
20:43:46.993 RESOURCES : ResourceDB: loading cache (id=4 name=WCS_SpaceCore path=/tmp/erri-loading-protection-native/first/addons/Dependency_5E389BB9F58B79A6/resourceDatabase.rdb)
20:43:46.994 RESOURCES : ResourceDB: loading cache (id=5 name=WCS_Armaments path=/tmp/erri-loading-protection-native/first/addons/Dependency_629B2BA37EFFD577/resourceDatabase.rdb)
20:43:46.995 RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Core path=/tmp/erri-loading-protection-native/first/addons/Dependency_595F2BF2F44836FB/resourceDatabase.rdb)
20:43:47.006 RESOURCES : ResourceDB: loading cache (id=7 name=RHS_Content_02 path=/tmp/erri-loading-protection-native/first/addons/Dependency_BADC0DEDABBEDA5E/resourceDatabase.rdb)
20:43:47.007 RESOURCES : ResourceDB: loading cache (id=8 name=RHS_Content_01 path=/tmp/erri-loading-protection-native/first/addons/Dependency_1337C0DE5DABBEEF/resourceDatabase.rdb)
20:43:47.012 RESOURCES : ResourceDB: loading cache (id=9 name=ArmaReforger path=./addons/data/resourceDatabase.rdb)
20:43:47.137 RESOURCES : ResourceDB: loading cache (id=10 name=core path=./addons/core/resourceDatabase.rdb)
20:43:47.138 RESOURCES : ResourceDB: loading cache (id=11 name=profile path=/tmp/erri-loading-protection-native/first/profile/profile/resourceDatabase.rdb)
20:43:47.138 RESOURCES : ResourceDB: loading cache (id=12 name=logs path=/tmp/erri-loading-protection-native/first/profile/logs/logs_2026-10-07_20-43-46/resourceDatabase.rdb)
20:43:47.317 ENGINE : GameProject load
20:43:47.317 ENGINE : Loaded addons:
20:43:47.317 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C'
20:43:47.317 ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859'
20:43:47.317 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF'
20:43:47.317 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E'
20:43:47.317 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB'
20:43:47.317 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577'
20:43:47.317 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6'
20:43:47.317 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B'
20:43:47.317 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Dependency_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2'
20:43:47.317 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
20:43:47.317 ENGINE : gproj: '/tmp/erri-loading-protection-native/first/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
20:43:47.318 ENGINE : GameProject load
20:43:47.318 INIT : GameProject load project data @"/tmp/erri-loading-protection-native/first/addons/Dependency_595F2BF2F44836FB/addon.gproj"
20:43:47.318 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource"
20:43:47.318 INIT : GameProject load project data @"/tmp/erri-loading-protection-native/first/addons/Dependency_629B2BA37EFFD577/addon.gproj"
20:43:47.318 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource"
20:43:47.318 INIT : GameProject load project data @"/tmp/erri-loading-protection-native/first/addons/Dependency_5E389BB9F58B79A6/addon.gproj"
20:43:47.318 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource"
20:43:47.318 INIT : GameProject load project data @"/tmp/erri-loading-protection-native/first/addons/Dependency_5E524E4FEECCA92B/addon.gproj"
20:43:47.318 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource"
20:43:47.318 ENGINE : Loading custom engine user config '$profile:.save/settings/ReforgerEngineSettings.conf'
20:43:47.318 ENGINE : No Enfusion settings file loaded. Continuing with defaults
20:43:47.319 RENDER : Basic screen setup:
20:43:47.319 RENDER : Back buffer width x height: 0x0
20:43:47.319 RENDER : Back buffer format : TEXFMT_UNKNOWN (0)
20:43:47.319 RENDER : MSAA : none
20:43:47.319 RENDER : GPU_DUMMY (0xFFFF) (Enfusion dummy render) with 1 GPU detected, VRAM 128MB (fast 128MB), shared 128MB, driver version Unknown version
20:43:47.319 RENDER : Detected output devices:
20:43:47.319 RENDER : * 1 device/s connected to Dummy:
20:43:47.319 RENDER : Dummy output (Dummy device for our dummy render.), 1920x1080 (offset 0x0), 60Hz
20:43:47.319 RENDER : Concurrent frames limit 2
20:43:47.319 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=7
20:43:47.331 PROFILING : Settings changed took: 0.023000 ms
20:43:47.333 ENGINE : Initializing inputs.
20:43:47.341 NETWORK : Initializing networking.
20:43:47.341 NETWORK : Using new GameRplScheduler.
20:43:47.341 SCRIPT : SCRIPT : Initializing scripts
20:43:47.341 SCRIPT : SCRIPT : ScriptProjectManager init
20:43:47.341 PROFILING : ScriptProjectManager init took: 0.008000 ms
20:43:47.358 PROFILING : Initializing scripts took: 17.166000 ms
20:43:47.359 BACKEND : Backend Services are disabled.
20:43:47.359 ENGINE : Enfusion engine successfully created.
20:43:47.360 GUI : Using default language (en_us)
20:43:47.360 GUI : Loading 'en_us' localization file.
20:43:47.360 INIT : INIT : Loading StringTable
20:43:47.385 PROFILING : Loading StringTable took: 24.497000 ms
20:43:47.385 SCRIPT : SCRIPT : Compiling GameLib scripts
20:43:47.413 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
20:43:47.414 PROFILING : Compiling GameLib scripts took: 28.754000 ms
20:43:47.414 SCRIPT : SCRIPT : Compiling Game scripts
20:43:48.022 SCRIPT : Compiling Game scripts
20:43:48.022 SCRIPT (W): @"Scripts/Game/Parachutes/ParachuteDeployed.c,7": Pointer type 'Physics' can only be used with local variables
20:43:48.425 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete
20:43:48.425 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete
20:43:48.722 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,360": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
20:43:48.734 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed
20:43:48.770 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete
20:43:48.915 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete
20:43:48.915 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete
20:43:48.915 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete
20:43:48.915 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete
20:43:48.946 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead
20:43:48.993 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c,64": 'GetPlayerIdentityId' is obsolete
20:43:49.010 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete
20:43:49.010 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete
20:43:49.012 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete
20:43:49.054 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
20:43:49.054 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
20:43:49.055 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api.
20:43:49.055 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api.
20:43:49.108 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete
20:43:49.278 SCRIPT : Module: Game; loaded 6734x files; 13534x classes; used 33544K of static memory; defines: "PLATFORM_LINUX,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS,WCS_DEFINES_SPACECORE"; CRC32: b749764c
20:43:49.298 PROFILING : Compiling Game scripts took: 1884.345000 ms
20:43:49.298 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC.
20:43:49.322 ENGINE : Game successfully created.
20:43:49.343 PLATFORM : Save data from container 'settings' have been loaded
20:43:49.442 PLATFORM : Save data from container 'sessions' have been loaded
20:43:49.442 PLATFORM : System language differs from the saved one - using new language {new: 'en_us'; old: ''}
20:43:49.442 PLATFORM : Save data transaction to 'settings' started.
20:43:49.442 NETWORK : Starting local multiplayer server using command line args.
20:43:49.541 DEFAULT : [SaveGameManager] Starting new playthrough nr.0 '' for mission '{C1E20667DCE324ED}Missions/ERR_Everon.conf'.
20:43:49.542 WORLD : WORLD : Entities load '$ERR_Core:Worlds/ERR_Everon.ent'
20:43:50.306 PROFILING : Entities load took: 764.089000 ms
20:43:50.307 WORLD : WORLD : Game::LoadEntities
20:43:50.307 WORLD : WORLD : Initializing world systems @"{C50579A2EC48E8EF}Configs/Systems/MissionSystems.conf"
20:43:50.308 NETWORK : Enabled lag compensation, 29 frames with 100 FPS and 280 ms rewind limits.
20:43:50.309 WORLD : WORLD : CreateEntities
20:43:50.309 WORLD : WORLD : CreateEntities
20:43:50.309 WORLD : WORLD : NotifyBeforeEntitiesCreated
20:43:50.310 RESOURCES : Loaded mission headers from 11 addon(s)!
20:43:50.310 PROFILING : NotifyBeforeEntitiesCreated took: 1.317000 ms
20:43:50.310 WORLD : WORLD : Wait for preloading data
20:43:52.661 PROFILING : Wait for preloading data took: 2350.851000 ms
20:43:52.718 ENTITY : Create entity @"ENTITY:2" ('Eden', GenericTerrainEntity) at <0.000000 0.000000 0.000000> @"{5AD924374E8C7AF6}Prefabs/World/Game/Eden/GenericTerrain_Eden.et"
20:43:52.718 PROFILING : PROFILING : Terrain load
20:43:53.956 PROFILING : Terrain load took: 1237.833000 ms
20:43:56.668 WORLD : Game::LoadEntities
20:43:56.668 WORLD : CreateEntities
20:43:56.668 WORLD : CreateEntities
20:43:56.668 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et"
20:43:56.668 ENTITY : CreateComponent 'ScriptedRadioComponent'
20:43:56.668 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent.
20:44:01.338 ENTITY : Create entity @"ENTITY:2305843009213693956" ('Factions', SCR_FactionManager) at <0.000000 0.000000 0.000000> @"{5414041A15DC4B54}Prefabs/ERR/FactionManager.et"
20:44:01.338 RESOURCES : GetResourceObject @"{442939C9617DF228}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_FIA.et"
20:44:01.338 WORLD : Entity prefab load @"{442939C9617DF228}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_FIA.et"
20:44:01.338 RESOURCES : GetResourceObject @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
20:44:01.338 WORLD : Entity prefab load @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
20:44:01.338 RESOURCES : GetResourceObject @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
20:44:01.338 WORLD : Entity prefab load @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
20:44:01.338 WORLD (E): Unknown keyword/data 'Parent' at offset 35955(0x8c73)
20:44:01.338 WORLD (E): Unknown keyword/data 'Parent' at offset 36915(0x9033)
20:44:01.340 RESOURCES : GetResourceObject @"{B47110AA1A806556}Prefabs/Vehicles/Wheeled/BTR70/BTR70_FIA.et"
20:44:01.340 WORLD : Entity prefab load @"{B47110AA1A806556}Prefabs/Vehicles/Wheeled/BTR70/BTR70_FIA.et"
20:44:01.340 RESOURCES : GetResourceObject @"{B47110AA1A806556}Prefabs/Vehicles/Wheeled/BTR70/BTR70_FIA.et"
20:44:01.340 WORLD : Entity prefab load @"{B47110AA1A806556}Prefabs/Vehicles/Wheeled/BTR70/BTR70_FIA.et"
20:44:01.340 RESOURCES : GetResourceObject @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
20:44:01.340 WORLD : Entity prefab load @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
20:44:01.340 RESOURCES : GetResourceObject @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
20:44:01.340 WORLD : Entity prefab load @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
20:44:01.340 WORLD (E): Unknown keyword/data 'Parent' at offset 42646(0xa696)
20:44:01.340 WORLD (E): Unknown keyword/data 'Parent' at offset 43645(0xaa7d)
20:44:01.340 WORLD (E): Unknown keyword/data 'Parent' at offset 44617(0xae49)
20:44:01.340 WORLD (E): Unknown keyword/data 'Parent' at offset 45590(0xb216)
20:44:01.418 RESOURCES : GetResourceObject @"{F6B23D17D5067C11}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB.et"
20:44:01.418 WORLD : Entity prefab load @"{F6B23D17D5067C11}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB.et"
20:44:01.418 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:44:01.418 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:44:01.418 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:44:01.418 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:44:01.418 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:44:01.418 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:44:01.418 WORLD (E): Unknown keyword/data 'SlidingTrackMaterial' at offset 19441(0x4bf1)
20:44:01.777 WORLD : WORLD : NotifyBeforeEntitiesInitialized
20:44:01.777 PROFILING : NotifyBeforeEntitiesInitialized took: 0.026000 ms
20:44:01.777 WORLD : InitEntities 'world'
20:44:01.777 ENTITY : Init entity @"ENTITY:3" ('SCR_MapEntity1', SCR_MapEntity) at <6400.000000 0.000000 6400.000000> @"{E1B88C66BF6CA1F9}Prefabs/World/Game/Eden/MapEntity_Everon.et"
20:44:01.777 SCRIPT (W): SCR_MapEntity: Cannot get the size from terrain. Using default.
20:44:02.276 WORLD : InitEntities 'world'
20:44:02.276 ENTITY : Init entity @"ENTITY:2305843009213693953" ('Reintroduced', ERR_GameMode) at <60.452000 1.000000 213.136002> @"{978E045E53EF36C8}Prefabs/ERR/GameMode.et"
20:44:02.276 SCRIPT : Reintroduced [config]: using $profile:Escapists.json; legacy files retained but no longer used.
20:44:02.282 WORLD : WORLD : NotifyEntitiesInitialized
20:44:02.282 TERRAIN : TERRAIN : Initializing road networks...
20:44:02.284 PROFILING : Initializing road networks... took: 2.103000 ms
20:44:02.333 SCRIPT : Reintroduced [terrain selection]: discovered 46 playable scenario headers; truncated=0
20:44:02.333 DEFAULT : DEFAULT : WorldVolumesCollection
20:44:02.380 PROFILING : WorldVolumesCollection took: 46.965000 ms
20:44:02.380 INIT : INIT : SoundWorldInit
20:44:02.386 PROFILING : SoundWorldInit took: 6.200000 ms
20:44:02.386 PROFILING : NotifyEntitiesInitialized took: 104.378000 ms
20:44:02.386 PROFILING : CreateEntities took: 12077.441000 ms
20:44:02.386 PROFILING : CreateEntities took: 12077.447000 ms
20:44:02.386 WORLD : WORLD : EOnActivate
20:44:02.412 PROFILING : EOnActivate took: 26.030000 ms
20:44:02.412 PROFILING : Game::LoadEntities took: 12104.711000 ms
20:44:02.549 NETWORK : Starting RPL server, listening on address 0.0.0.0:2001, fastValidation=false
20:44:03.015 DEFAULT : Entered online game state.
20:44:03.016 PROFILING : Settings changed took: 0.492000 ms
20:44:05.775 SCRIPT : Map load time: 1620ms
20:44:05.846 WORLD : Frame start
20:44:05.846 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated.
20:44:05.852 WORLD : UpdateEntities
20:44:05.852 WORLD : Frame
20:44:05.852 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME
20:44:07.196 SCRIPT : Co10 Escape Reintroduced factions: players=US enemy=USSR independent=FIA
20:44:09.737 SCRIPT : Co10 Escape Reintroduced [generated site]: id=everon-prison-1 position=<5131.7,50.1032,5686.11> heading=79.4775 attempts=1101 fallback=0
20:44:09.742 SCRIPT : Reintroduced [sites]: authored everon-prison-1 at <5131.7,50.3795,5686.11>
20:44:09.761 SCRIPT : Reintroduced [sites]: authored everon-extraction-1 at <4800.95,27.8202,11487.4>
20:44:09.761 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<4800.95,27.8202,11487.4> up=1
20:44:09.761 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0 angularSpeed=0
20:44:09.761 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=0 engine=0 origin=<0,0,0> up=1 entityDifference=12450.3
20:44:09.761 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<4800.95,28.1168,11489.7>
20:44:09.762 SCRIPT : ERR GEAR TERRAIN: bottom=<4800.95,27.8168,11489.7> terrainY=27.7202 tireTerrainGap=0.0965805
20:44:09.762 SCRIPT : ERR GEAR SUPPORT: center=<4800.95,28.1168,11489.7> radius=0.3 bottom=<4800.95,27.8168,11489.7> fraction=0.893554 normal=<0.0312348,0.999512,0> self=0 dynamic=0 supported=1 gap=0.0965824
20:44:09.762 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<4798.68,28.585,11485.4>
20:44:09.762 SCRIPT : ERR GEAR TERRAIN: bottom=<4798.68,28.135,11485.4> terrainY=27.8121 tireTerrainGap=0.322891
20:44:09.762 SCRIPT : ERR GEAR SUPPORT: center=<4798.68,28.585,11485.4> radius=0.45 bottom=<4798.68,28.135,11485.4> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.120001
20:44:09.762 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<4803.23,28.585,11485.4>
20:44:09.762 SCRIPT : ERR GEAR TERRAIN: bottom=<4803.23,28.135,11485.4> terrainY=27.649 tireTerrainGap=0.485987
20:44:09.762 SCRIPT : ERR GEAR SUPPORT: center=<4803.23,28.585,11485.4> radius=0.45 bottom=<4803.23,28.135,11485.4> fraction=1 normal=<0,0,0> self=0 dynamic=0 supported=0 gap=0.120001
20:44:09.762 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=3 physical=0 conscious=0 nativeComplete=0
20:44:09.762 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=0 conscious=0 nativeComplete=0
20:44:10.795 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=0 origin=<4801.01,27.5703,11487.4> up=0.997485
20:44:10.795 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.632878 angularSpeed=0.118734
20:44:10.795 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=12450.3
20:44:10.795 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<4801.07,27.982,11489.6>
20:44:10.795 SCRIPT : ERR GEAR TERRAIN: bottom=<4801.07,27.682,11489.6> terrainY=27.7164 tireTerrainGap=-0.0344238
20:44:10.795 SCRIPT : ERR GEAR SUPPORT: center=<4801.07,27.982,11489.6> radius=0.3 bottom=<4801.07,27.682,11489.6> fraction=0.298036 normal=<0.0312348,0.999512,0> self=0 dynamic=0 supported=1 gap=-0.0344315
20:44:10.795 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<4798.71,28.2364,11485.4>
20:44:10.795 SCRIPT : ERR GEAR TERRAIN: bottom=<4798.71,27.7864,11485.4> terrainY=27.8105 tireTerrainGap=-0.0241051
20:44:10.795 SCRIPT : ERR GEAR SUPPORT: center=<4798.71,28.2364,11485.4> radius=0.45 bottom=<4798.71,27.7864,11485.4> fraction=0.344952 normal=<0.0468236,0.998903,0> self=0 dynamic=0 supported=1 gap=-0.0241108
20:44:10.795 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<4803.25,28.0834,11485.3>
20:44:10.795 SCRIPT : ERR GEAR TERRAIN: bottom=<4803.25,27.6334,11485.3> terrainY=27.6483 tireTerrainGap=-0.0148449
20:44:10.795 SCRIPT : ERR GEAR SUPPORT: center=<4803.25,28.0834,11485.3> radius=0.45 bottom=<4803.25,27.6334,11485.3> fraction=0.387065 normal=<0.0312348,0.999512,0> self=0 dynamic=0 supported=1 gap=-0.0148449
20:44:10.795 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1
20:44:10.796 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=3 physical=1 conscious=1 nativeComplete=0
20:44:10.796 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=1 conscious=1 nativeComplete=0
20:44:11.329 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=3 physical=2 conscious=2 nativeComplete=0
20:44:11.329 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=2 conscious=2 nativeComplete=0
20:44:11.862 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<4801.03,27.5974,11487.4> up=0.996377
20:44:11.862 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.169103 angularSpeed=0.0431743
20:44:11.862 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=12450.3
20:44:11.862 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<4801.09,28.026,11489.6>
20:44:11.863 SCRIPT : ERR GEAR TERRAIN: bottom=<4801.09,27.726,11489.6> terrainY=27.716 tireTerrainGap=0.0100269
20:44:11.863 SCRIPT : ERR GEAR SUPPORT: center=<4801.09,28.026,11489.6> radius=0.3 bottom=<4801.09,27.726,11489.6> fraction=0.500104 normal=<0.0312348,0.999512,0> self=0 dynamic=0 supported=1 gap=0.0100231
20:44:11.863 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<4798.73,28.2639,11485.4>
20:44:11.863 SCRIPT : ERR GEAR TERRAIN: bottom=<4798.73,27.8139,11485.4> terrainY=27.8094 tireTerrainGap=0.00453758
20:44:11.863 SCRIPT : ERR GEAR SUPPORT: center=<4798.73,28.2639,11485.4> radius=0.45 bottom=<4798.73,27.8139,11485.4> fraction=0.475179 normal=<0.0468236,0.998903,0> self=0 dynamic=0 supported=1 gap=0.00453949
20:44:11.863 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<4803.28,28.1036,11485.3>
20:44:11.863 SCRIPT : ERR GEAR TERRAIN: bottom=<4803.28,27.6536,11485.3> terrainY=27.6474 tireTerrainGap=0.00621796
20:44:11.863 SCRIPT : ERR GEAR SUPPORT: center=<4803.28,28.1036,11485.3> radius=0.45 bottom=<4803.28,27.6536,11485.3> fraction=0.482826 normal=<0.0312348,0.999512,0> self=0 dynamic=0 supported=1 gap=0.00622177
20:44:11.863 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1
20:44:11.863 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=3 conscious=3 nativeComplete=0
20:44:12.395 SCRIPT : Reintroduced [extraction placement]: native supported aircraft stable for one second, fuel present, exactly one initial wake
20:44:12.395 SCRIPT : Reintroduced [guards]: initial site=everon-prison-1 requested=3 physical=3 conscious=3 nativeComplete=1
20:44:12.396 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=4 conscious=4 nativeComplete=0
20:44:12.929 SCRIPT : ERR EXTRACTION PLACEMENT: wakes=1 alive=1 ready=1 origin=<4801.08,27.5859,11487.4> up=0.996163
20:44:12.929 SCRIPT : ERR EXTRACTION PHYSICS: dynamic=1 awake=1 speed=0.0618754 angularSpeed=0.041988
20:44:12.929 SCRIPT : ERR EXTRACTION NATIVE: valid=1 contact=1 engine=0 origin=<0,0,0> up=1 entityDifference=12450.4
20:44:12.929 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_F node=-1704401612 center=<4801.15,28.0136,11489.6>
20:44:12.929 SCRIPT : ERR GEAR TERRAIN: bottom=<4801.15,27.7136,11489.6> terrainY=27.7139 tireTerrainGap=-0.000347137
20:44:12.929 SCRIPT : ERR GEAR SUPPORT: center=<4801.15,28.0136,11489.6> radius=0.3 bottom=<4801.15,27.7136,11489.6> fraction=0.452987 normal=<0.0312348,0.999512,0> self=0 dynamic=0 supported=1 gap=-0.000343323
20:44:12.929 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bL node=-410678372 center=<4798.77,28.2528,11485.4>
20:44:12.929 SCRIPT : ERR GEAR TERRAIN: bottom=<4798.77,27.8028,11485.4> terrainY=27.8078 tireTerrainGap=-0.00503349
20:44:12.929 SCRIPT : ERR GEAR SUPPORT: center=<4798.77,28.2528,11485.4> radius=0.45 bottom=<4798.77,27.8028,11485.4> fraction=0.431537 normal=<0.0468236,0.998903,0> self=0 dynamic=0 supported=1 gap=-0.0050621
20:44:12.929 SCRIPT : ERR GEAR PIVOT: bone=v_wheel_bR node=-410678366 center=<4803.32,28.0916,11485.3>
20:44:12.929 SCRIPT : ERR GEAR TERRAIN: bottom=<4803.32,27.6416,11485.3> terrainY=27.6464 tireTerrainGap=-0.00477219
20:44:12.929 SCRIPT : ERR GEAR SUPPORT: center=<4803.32,28.0916,11485.3> radius=0.45 bottom=<4803.32,27.6416,11485.3> fraction=0.432864 normal=<0.0312348,0.999512,0> self=0 dynamic=0 supported=1 gap=-0.00477028
20:44:12.929 SCRIPT : ERR EXTRACTION FUEL: manager=1 hasFuel=1
20:44:12.929 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=5 conscious=5 nativeComplete=0
20:44:13.462 SCRIPT : Reintroduced [guards]: initial site=everon-extraction-1 requested=6 physical=6 conscious=6 nativeComplete=1
20:44:13.462 SCRIPT : Reintroduced [sites]: 2 sites and 14 physical stock items ready
20:44:13.462 SCRIPT : Reintroduced [generation]: spawn-ready in 6266 ms; remaining sites continue in background
20:44:13.462 SCRIPT : Reintroduced [environment]: date=authored weather=authored
20:44:13.463 SCRIPT : Reintroduced [time]: started at 14:00 with 1x progression
20:44:13.463 SCRIPT : Reintroduced [mission]: phase 0 -> 1
20:44:13.463 SCRIPT : Reintroduced [prison]: owned composition raw={BE6B8D56349038A6}Prefabs/ERR/Prison.et resolved={BE6B8D56349038A6}Prefabs/ERR/Prison.et position=<5131.7,50.1032,5686.11>
20:44:13.463 SCRIPT : Reintroduced [prison]: gate candidate raw= resolved={67F17696FF278AE0}Prefabs/Structures/BuildingParts/Doors/Door_Metal_A_RIGHT_EXT_COV_B.et lock=1 door=1 position=<5125.74,50.1032,5685.67>
20:44:13.463 SCRIPT : Reintroduced [prison]: one intact successor lock in owned prison
20:44:13.468 SCRIPT : ERR PROTECTION PASS: real mission prisoner has a native damage manager
20:44:13.468 SCRIPT : ERR PROTECTION PASS: admission ticket disables native damage during loading
20:44:13.468 SCRIPT : ERR PROTECTION PASS: real damage request cannot hurt the waiting prisoner
20:44:13.468 SCRIPT : ERR PROTECTION PASS: verified-handover release restores damage and is idempotent
20:44:13.468 SCRIPT : ERR PROTECTION PASS: same native damage request works after release
20:44:13.468 SCRIPT : ERR PROTECTION PASS: pre-existing protected state accepted
20:44:13.468 SCRIPT : ERR PROTECTION PASS: pre-existing protection is retained
20:44:13.468 SCRIPT : ERR PROTECTION PASS: discarded ticket destructor releases its protection
20:44:13.469 SCRIPT : ERR PROTECTION COMPLETE failures=0
@@ -0,0 +1,41 @@
modded class ArmaReforgerScripted
{
protected bool m_ERRChecked;
protected int m_ERRFailures;
protected void ERR_Check(bool pass, string label)
{
if (pass) Print("ERR PROTECTION PASS: " + label);
else { m_ERRFailures++; Print("ERR PROTECTION FAIL: " + label); }
}
override void OnUpdate(BaseWorld world, float timeslice)
{
super.OnUpdate(world, timeslice);
ERR_GameMode mode = ERR_GameMode.Get();
if (m_ERRChecked || !mode || !mode.Active()) return;
m_ERRChecked = true;
IEntity actor = ERR_Actors.Spawn(mode.Factions().PrisonerPrefab, mode.PrisonPosition() + "0 0 30");
DamageManagerComponent damage;
if (actor) damage = DamageManagerComponent.Cast(actor.FindComponent(DamageManagerComponent));
ERR_Check(damage != null, "real mission prisoner has a native damage manager");
if (!damage) { Print("ERR PROTECTION COMPLETE failures=1"); return; }
ref ERR_SpawnTicket ticket = new ERR_SpawnTicket(); ticket.Actor = actor;
ERR_Check(ticket.ProtectLoading() && !damage.IsDamageHandlingEnabled(), "admission ticket disables native damage during loading");
float health = damage.GetHealth();
vector hit[3]; hit[0] = actor.GetOrigin(); hit[1] = "0 0 1";
damage.HandleDamage(new SCR_DamageContext(EDamageType.TRUE, 20, hit, actor, damage.GetDefaultHitZone(), Instigator.CreateInstigator(actor), null, -1, -1));
ERR_Check(damage.GetHealth() == health, "real damage request cannot hurt the waiting prisoner");
ticket.ReleaseProtection(); ticket.ReleaseProtection();
ERR_Check(damage.IsDamageHandlingEnabled(), "verified-handover release restores damage and is idempotent");
damage.HandleDamage(new SCR_DamageContext(EDamageType.TRUE, 20, hit, actor, damage.GetDefaultHitZone(), Instigator.CreateInstigator(actor), null, -1, -1));
ERR_Check(damage.GetHealth() < health, "same native damage request works after release");
damage.EnableDamageHandling(false);
ERR_Check(ticket.ProtectLoading(), "pre-existing protected state accepted");
ticket.ReleaseProtection();
ERR_Check(!damage.IsDamageHandlingEnabled(), "pre-existing protection is retained");
damage.EnableDamageHandling(true);
ticket.ProtectLoading(); ticket = null;
ERR_Check(damage.IsDamageHandlingEnabled(), "discarded ticket destructor releases its protection");
ERR_Actors.DeleteSpawned(actor);
PrintFormat("ERR PROTECTION COMPLETE failures=%1", m_ERRFailures);
}
}
@@ -0,0 +1,54 @@
from pathlib import Path
import os,sys,json,shutil,subprocess,time,signal
ROOT=Path('/home/jakub/devel/escapistsrereintroduced');sys.path.insert(0,str(ROOT/'tools'))
from external_addons import policy,prepare_profile
from source_manifest import addon_manifest
from dedicated_native import PROBE
base=Path('/tmp/erri-loading-protection-native');base.mkdir(exist_ok=True)
run=base/sys.argv[1];run.mkdir();source=run/'source';source.mkdir()
for rel in addon_manifest(ROOT):
dest=source/Path(rel).relative_to('addons/core');dest.parent.mkdir(parents=True,exist_ok=True);shutil.copy2(ROOT/rel,dest)
shutil.copy2('/tmp/erri-takeover-pair-source32/resourceDatabase.rdb',source/'resourceDatabase.rdb')
if run.name.endswith('-unfixed'): (source/'Scripts/Game/ERR/00_Core/ERR_ItemStationLifecycle.c').unlink()
shutil.copy2('/tmp/err-loading-protection-diag.c',source/'Scripts/Game/ERR/00_Core/ERR_ZErrorsProbe.c')
addons=run/'addons';addons.mkdir();steam=Path.home()/'.local/share/Steam'
# Private compile-only profile: use the currently installed dependency projects.
import re
installed=steam/'steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons'
required={'595F2BF2F44836FB','629B2BA37EFFD577','5E524E4FEECCA92B','65930CB4CD0237B2'}
projects={}
for project in installed.glob('*/addon.gproj'):
text=project.read_text();match=re.search(r'GUID "([A-Fa-f0-9]+)"',text)
if match: projects[match[1].upper()]=(project,re.findall(r'"([A-Fa-f0-9]{16})"',text.split('Dependencies',1)[-1]) if 'Dependencies' in text else [])
pending=list(required);seen=set()
while pending:
guid=pending.pop()
if guid in seen or guid=='58D0FB3206B6F859':continue
seen.add(guid);project,deps=projects[guid]
(addons/('Dependency_'+guid)).symlink_to(project.parent,target_is_directory=True)
pending.extend(deps)
(addons/'Nogova').symlink_to('/home/jakub/devel/gabreta/addons/NogovaReforger',target_is_directory=True)
(addons/'ERR_Core').symlink_to(source,target_is_directory=True)
profile=run/'profile/profile';profile.mkdir(parents=True)
(run/'network.py').write_text(PROBE)
runtime=Path('/tmp/erri-takeover-dedicated-runtime')
engine=['/tmp/runtime/ArmaReforgerServer','-server','{C1E20667DCE324ED}Missions/ERR_Everon.conf','-addonsDir',str(addons),'-addons','2528466DE220D91C,70C981A53E02B64F','-profile',str(run/'profile'),'-noBackend','-noSound','-bindIP','127.0.0.1','-bindPort','2001','-maxFPS','30','-logconsole','-noSplash','-noThrow','-disableCrashReporter']
cmd=['bwrap','--unshare-net','--unshare-pid','--unshare-ipc','--unshare-uts','--die-with-parent','--cap-drop','ALL','--ro-bind','/','/','--tmpfs','/tmp','--ro-bind',str(runtime),'/tmp/runtime','--bind',str(run),str(run),'--proc','/proc','--dev','/dev','--chdir','/tmp/runtime','python',str(run/'network.py'),os.readlink('/proc/self/ns/net')]+engine
with (run/'stdout.log').open('w') as log:
p=subprocess.Popen(cmd,stdout=log,stderr=subprocess.STDOUT,start_new_session=True)
reason='timeout';start=time.monotonic()
try:
while time.monotonic()-start<360:
files=sorted((run/'profile/logs').glob('logs_*/console.log'));text=files[-1].read_text(errors='replace') if files else ''
if 'ERR PROTECTION COMPLETE' in text:reason='complete';break
if "Can't compile" in text:reason='compile-failed';break
if p.poll() is not None:reason='exit';break
time.sleep(.3)
finally:
if 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()
(run/'result.json').write_text(json.dumps({'reason':reason,'exit':p.returncode}));print(reason)
print('\n'.join(line for line in text.splitlines() if 'ERR PROTECTION' in line or 'SCRIPT (E)' in line))
@@ -0,0 +1,33 @@
{
"engine": "Arma Reforger 1.8.0.13 dedicated, isolated Everon test",
"result": {
"reason": "complete",
"exit": -15
},
"script_errors": 0,
"checks": [
"20:44:13.468 SCRIPT : ERR PROTECTION PASS: real mission prisoner has a native damage manager",
"20:44:13.468 SCRIPT : ERR PROTECTION PASS: admission ticket disables native damage during loading",
"20:44:13.468 SCRIPT : ERR PROTECTION PASS: real damage request cannot hurt the waiting prisoner",
"20:44:13.468 SCRIPT : ERR PROTECTION PASS: verified-handover release restores damage and is idempotent",
"20:44:13.468 SCRIPT : ERR PROTECTION PASS: same native damage request works after release",
"20:44:13.468 SCRIPT : ERR PROTECTION PASS: pre-existing protected state accepted",
"20:44:13.468 SCRIPT : ERR PROTECTION PASS: pre-existing protection is retained",
"20:44:13.468 SCRIPT : ERR PROTECTION PASS: discarded ticket destructor releases its protection",
"20:44:13.469 SCRIPT : ERR PROTECTION COMPLETE failures=0"
],
"source_sha256": {
"addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c": "6ec741f8d19ee316d3c67b0dd2216698584bf2cde3634a3d6a7c3cdc3a3935b8",
"addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c": "1dcf35b57631132f1bdbd8630f81ce27ff83290b5c468073f3ed6cd19a34df29"
},
"focused_tests": [
"test_spawn_loading_protection.py",
"test_spawn_scene.py",
"test_spawn_preload_timeout.py"
],
"scope": "New free-spawn admission tickets. Existing-body reconnection retains its existing native handoff and is not given a new invulnerability window. No live server changes.",
"limitations": [
"Native test uses a real prisoner and native HandleDamage, but no connected multiplayer client.",
"Damage protection ends at verified scene/preload handover; it does not cover the entire island background-generation period."
]
}