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:
@@ -0,0 +1,13 @@
|
||||
Read-only integration audit: no reproduced automatic-equipment/PMN4 resupply race in installed catalogs.
|
||||
|
||||
Production boundaries:
|
||||
- ERR_AutomaticEquipmentCatalog.Supported excludes EXPLOSIVES, ROCKET_LAUNCHER, attachment/ammo modes. All bits must belong to allowed set; EXPLOSIVES combined with an allowed category still fails.
|
||||
- Installed vanilla USSR InventoryItems catalog lines777-780 and FIA lines484-487 classify exact PMN4 B05A816C0BF50802 as EXPLOSIVES. Both loaded from installed vanilla PAK, not protected original Escapists overrides.
|
||||
- Read-only PAK scan of installed RHS StatusQuo+contentpacks, WCS Armaments+Core and BMP: no exact PMN4 catalog override found. Found RHS TM62M/M15AT entries all EXPLOSIVES. Mine marking flags are EQUIPMENT but are not explosive mines. Results retained in catalog-audit.log and mine-catalog-audit.log.
|
||||
- MineSupplyReady does not wait for Automatic, but that alone is not a demonstrated mine race: installed eligible automatic categories cannot issue PMN4. Other automatic inventory items can consume capacity; finite mine leaf rechecks native storage/CanMove and preserves one-shot submission quarantine, so capacity refusal is ordinary bounded failure rather than additional mine.
|
||||
- ERR_EnemyEquipment.RegisterGroup deduplicates exact groups; Known(actor) retains original actor identity. Tick suspends existing entry during unconsciousness without resetting grants. Player/captured ownership permanently stops entry; released entries remain known, so later loss of player ownership cannot reroll same original actor. New physical replacement actors are separate identities, not reconnect rerolls.
|
||||
- Grant m_Rolled and retained m_Operation prevent retry/reroll after completion, rejection, timeout or late callback.
|
||||
|
||||
Focused actual-method tests PASS: test_automatic_equipment.py, test_enemy_equipment.py, test_infantry_mine_transfer.py. Logs retained alongside this review. These are extracted methods with native doubles, not native multiplayer qualification. No source patch proposed, no target/reference source edits, no engine/UI actions.
|
||||
|
||||
Limit: unsupported future addon catalog misclassification (e.g. PMN4 intentionally marked EQUIPMENT) was not reproduced or defended by speculative extra gate. Active runtime catalog selection can differ from static inspected installed entries; no live catalog query launched.
|
||||
@@ -0,0 +1,2 @@
|
||||
PASS: automatic inventory one-shot roll, exact item ownership, finite compatible ammo, rejection, capture/stop, deletion, loot and late callback quarantine
|
||||
PASS: enabled/valid catalog eligibility, category restrictions, content filtering, GUID deduplication across factions and bounded catalogs
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
SCANNED RHS-StatusQuo_595F2BF2F44836FB 17 catalogs; exact PMN4 matches 0
|
||||
SCANNED RHS-ContentPack01_1337C0DE5DABBEEF 0 catalogs; exact PMN4 matches 0
|
||||
SCANNED RHS-ContentPack02_BADC0DEDABBEDA5E 0 catalogs; exact PMN4 matches 0
|
||||
SCANNED WCS_Armaments_629B2BA37EFFD577 11 catalogs; exact PMN4 matches 0
|
||||
SCANNED WCS_Core_64610AFB74AA9842 0 catalogs; exact PMN4 matches 0
|
||||
SCANNED BMP-1IFV_5E524E4FEECCA92B 4 catalogs; exact PMN4 matches 0
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
import sys,struct,zlib,re
|
||||
from pathlib import Path
|
||||
sys.path.insert(0,'/home/jakub/devel/escapistsrereintroduced/tools')
|
||||
from pak_inventory import parse_tree,Limits
|
||||
root=Path('/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons')
|
||||
mods=['RHS-StatusQuo_595F2BF2F44836FB','RHS-ContentPack01_1337C0DE5DABBEEF','RHS-ContentPack02_BADC0DEDABBEDA5E','WCS_Armaments_629B2BA37EFFD577','WCS_Core_64610AFB74AA9842','BMP-1IFV_5E524E4FEECCA92B']
|
||||
for mod in mods:
|
||||
count=0;hits=0
|
||||
for p in (root/mod).glob('*.pak'):
|
||||
with p.open('rb') as f:
|
||||
chunks={};off=12
|
||||
for _ in range(3):
|
||||
f.seek(off);tag,size=struct.unpack('>4sI',f.read(8));chunks[tag]=(off+8,size);off+=8+size
|
||||
f.seek(chunks[b'FILE'][0]);tree=f.read(chunks[b'FILE'][1]);start,size=chunks[b'DATA']
|
||||
entries,_,_=parse_tree(tree,start,start+size,Limits(archive_bytes=16*1024**3,total_bytes=32*1024**3))
|
||||
for e in entries:
|
||||
if 'entitycatalog' not in e['path'].lower() or not e['path'].endswith('.conf'):continue
|
||||
f.seek(e['offset']);b=f.read(e['stored_bytes']);b=zlib.decompress(b) if e['compression']=='zlib' else b
|
||||
count+=1;s=b.decode('utf-8',errors='replace')
|
||||
for m in re.finditer('(?i)PMN4|B05A816C0BF50802',s):
|
||||
hits+=1;print(mod,e['path'],s[max(0,m.start()-100):m.end()+350])
|
||||
print('SCANNED',mod,count,'catalogs; exact PMN4 matches',hits)
|
||||
@@ -0,0 +1 @@
|
||||
PASS: actual equipment coordinator registration dedupe, startup delay, five member scans, finite component retries, unregister/stop terminal behavior and 256-group bound
|
||||
+143
@@ -0,0 +1,143 @@
|
||||
RHS-StatusQuo_595F2BF2F44836FB Configs/EntityCatalog/FFA/FFA_InventoryItems.conf }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{5EACB04FE72A6C00}" {
|
||||
m_sEntityPrefab "{49FFE8F373F55960}Prefabs/Weapons/Explosives/Mine_M15AT/Mine_M15AT.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem "{5EACB04FE72A6C07}" {
|
||||
m_eItemType EXPLOSIVES
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogMultiListEntry "{5EACB04FE72A6C06}" {
|
||||
m_sIdentifier "Equipment"
|
||||
m_aEntities {
|
||||
SCR_EntityCatalogInventoryItem "{5EACB04FE72A6C05}" {
|
||||
m_sEntityPrefab "{A81F501D3EF6F38E}Prefabs/Items/Medi
|
||||
RHS-StatusQuo_595F2BF2F44836FB Configs/EntityCatalog/FFA/FFA_InventoryItems.conf mType EQUIPMENT
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{5EACB04FE72A6C64}" {
|
||||
m_sEntityPrefab "{EC13D4E934B2ADD8}Prefabs/Items/Demining/MineFlags/MineFlag_US.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem "{5EACB04FE72A6C6B}" {
|
||||
m_eItemType EQUIPMENT
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{5EACB04FE72A6C6A}" {
|
||||
m_sEntityPrefab "{64322D5D501B7D79}Prefabs/Items/Equipment/Nightvision/PVS14/NVG_PVS14_Base.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem "{5EACB04FE72A6C69}" {
|
||||
|
||||
RHS-StatusQuo_595F2BF2F44836FB Configs/EntityCatalog/ION/ION_InventoryItems.conf plyType GRENADE
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{5D4A8E6F2C974411}" {
|
||||
m_sEntityPrefab "{49FFE8F373F55960}Prefabs/Weapons/Explosives/Mine_M15AT/Mine_M15AT.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem "{5D4A8E6F2C974412}" {
|
||||
m_eItemType EXPLOSIVES
|
||||
m_iSupplyCost 5
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{61B54A0654E2F1FA}" {
|
||||
m_sEntityPrefab "{33CBDE73AB48172A}Prefabs/Weapons/Explosives/DemoBlock_M112/DemoBlock_M112.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem
|
||||
RHS-StatusQuo_595F2BF2F44836FB Configs/EntityCatalog/ION/ION_InventoryItems.conf m_iSupplyCost 0
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{5D4A8E6F2C974405}" {
|
||||
m_sEntityPrefab "{EC13D4E934B2ADD8}Prefabs/Items/Demining/MineFlags/MineFlag_US.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem "{5D4A8E6F2C974406}" {
|
||||
m_eItemType EQUIPMENT
|
||||
m_iSupplyCost 0
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{64E120FDD304C9D3}" {
|
||||
m_sEntityPrefab "{BE2A47715A24AE5D}Prefabs/Items/Equipment/Accessories/GPSRadioBeacon/GPSRadioBeacon.et"
|
||||
m_aEntityDataList {
|
||||
SCR_Ars
|
||||
RHS-StatusQuo_595F2BF2F44836FB Configs/EntityCatalog/RHS_MSV/MSV_InventoryItems.conf plyType GRENADE
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{5C62F7DF47B8BF41}" {
|
||||
m_sEntityPrefab "{D6EF54367CECE1D9}Prefabs/Weapons/Explosives/Mine_TM62M/Mine_TM62M.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem "{5C62F7DEAEC68866}" {
|
||||
m_eItemType EXPLOSIVES
|
||||
m_iSupplyCost 5
|
||||
m_eRequiredRank CORPORAL
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{618887A369EADA91}" {
|
||||
m_sEntityPrefab "{90976DC90A223095}Prefabs/Items/Equipment/Detonators/BlastingMachine_KPM_3U1/BlastingMachine_
|
||||
RHS-StatusQuo_595F2BF2F44836FB Configs/EntityCatalog/RHS_MSV/MSV_InventoryItems.conf m_iSupplyCost 0
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{5D4A87E86D2162B5}" {
|
||||
m_sEntityPrefab "{AC67BAB9763A3977}Prefabs/Items/Demining/MineFlags/MineFlag_USSR.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem "{5D4A87E86D2162AB}" {
|
||||
m_eItemType EQUIPMENT
|
||||
m_iSupplyCost 0
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{64E120FDBDE55926}" {
|
||||
m_sEntityPrefab "{BE2A47715A24AE5D}Prefabs/Items/Equipment/Accessories/GPSRadioBeacon/GPSRadioBeacon.et"
|
||||
m_aEntityDataList {
|
||||
SCR_Ars
|
||||
RHS-StatusQuo_595F2BF2F44836FB Configs/EntityCatalog/USMC/USMC_InventoryItems.conf plyType GRENADE
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{5CA0A9E6C9E91F72}" {
|
||||
m_sEntityPrefab "{49FFE8F373F55960}Prefabs/Weapons/Explosives/Mine_M15AT/Mine_M15AT.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem "{5CA0A9E6C9E91F70}" {
|
||||
m_eItemType EXPLOSIVES
|
||||
m_iSupplyCost 5
|
||||
m_eRequiredRank CORPORAL
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{618887A35A01F86F}" {
|
||||
m_sEntityPrefab "{CE0AF733722B3978}Prefabs/Items/Equipment/Detonators/BlastingMachine_M34/BlastingMachine_M34.
|
||||
RHS-StatusQuo_595F2BF2F44836FB Configs/EntityCatalog/USMC/USMC_InventoryItems.conf m_iSupplyCost 0
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{5D4A8E6F2C974405}" {
|
||||
m_sEntityPrefab "{EC13D4E934B2ADD8}Prefabs/Items/Demining/MineFlags/MineFlag_US.et"
|
||||
m_aEntityDataList {
|
||||
SCR_ArsenalItem "{5D4A8E6F2C974406}" {
|
||||
m_eItemType EQUIPMENT
|
||||
m_iSupplyCost 0
|
||||
}
|
||||
}
|
||||
}
|
||||
SCR_EntityCatalogInventoryItem "{64E120FDB4FD8912}" {
|
||||
m_sEntityPrefab "{BE2A47715A24AE5D}Prefabs/Items/Equipment/Accessories/GPSRadioBeacon/GPSRadioBeacon.et"
|
||||
m_aEntityDataList {
|
||||
SCR_Ars
|
||||
SCANNED RHS-StatusQuo_595F2BF2F44836FB 17 catalogs; mine-name matches (includes marking flags) 8
|
||||
SCANNED RHS-ContentPack01_1337C0DE5DABBEEF 0 catalogs; mine-name matches (includes marking flags) 0
|
||||
SCANNED RHS-ContentPack02_BADC0DEDABBEDA5E 0 catalogs; mine-name matches (includes marking flags) 0
|
||||
SCANNED WCS_Armaments_629B2BA37EFFD577 11 catalogs; mine-name matches (includes marking flags) 0
|
||||
SCANNED WCS_Core_64610AFB74AA9842 0 catalogs; mine-name matches (includes marking flags) 0
|
||||
SCANNED BMP-1IFV_5E524E4FEECCA92B 4 catalogs; mine-name matches (includes marking flags) 0
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
import sys,struct,zlib,re
|
||||
from pathlib import Path
|
||||
sys.path.insert(0,'/home/jakub/devel/escapistsrereintroduced/tools')
|
||||
from pak_inventory import parse_tree,Limits
|
||||
root=Path('/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons')
|
||||
mods=['RHS-StatusQuo_595F2BF2F44836FB','RHS-ContentPack01_1337C0DE5DABBEEF','RHS-ContentPack02_BADC0DEDABBEDA5E','WCS_Armaments_629B2BA37EFFD577','WCS_Core_64610AFB74AA9842','BMP-1IFV_5E524E4FEECCA92B']
|
||||
for mod in mods:
|
||||
count=0;hits=0
|
||||
for p in (root/mod).glob('*.pak'):
|
||||
with p.open('rb') as f:
|
||||
chunks={};off=12
|
||||
for _ in range(3):
|
||||
f.seek(off);tag,size=struct.unpack('>4sI',f.read(8));chunks[tag]=(off+8,size);off+=8+size
|
||||
f.seek(chunks[b'FILE'][0]);tree=f.read(chunks[b'FILE'][1]);start,size=chunks[b'DATA']
|
||||
entries,_,_=parse_tree(tree,start,start+size,Limits(archive_bytes=16*1024**3,total_bytes=32*1024**3))
|
||||
for e in entries:
|
||||
if 'entitycatalog' not in e['path'].lower() or not e['path'].endswith('.conf'):continue
|
||||
f.seek(e['offset']);b=f.read(e['stored_bytes']);b=zlib.decompress(b) if e['compression']=='zlib' else b
|
||||
count+=1;s=b.decode('utf-8',errors='replace')
|
||||
for m in re.finditer(r'(?i)m_sEntityPrefab[^\n]*mine[^\n]*',s):
|
||||
hits+=1;print(mod,e['path'],s[max(0,m.start()-100):m.end()+350])
|
||||
print('SCANNED',mod,count,'catalogs; mine-name matches (includes marking flags)',hits)
|
||||
@@ -0,0 +1 @@
|
||||
PASS: actual finite PMN4 one-to-two entitlement, pinned original ownership, shared commit, physical custody, callback quarantine/deletion and no retry
|
||||
Reference in New Issue
Block a user