Files
EscapistsReintroduced/docs/evidence/recovery-launcher-2026-10-02/launcher/sdk-review.json
T
jakub 6a667d8deb Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
2026-10-13 22:52:53 +02:00

69 lines
4.6 KiB
JSON

{
"scope": "Read-only installed vanilla source/prefab inspection, no engine launch or successor edits",
"prefab_manifest": "files.json",
"script_hashes": {
"/tmp/erri-vanilla-stock/scripts/Game/generated/Weapon/BaseMuzzleComponent.c": "a5662f439b2169db923e90b09d5cfa3505db51a06b15d2ac6429b4113490fcd1",
"/tmp/erri-vanilla-stock/scripts/Game/generated/Weapon/BaseMagazineComponent.c": "0162c6bf856e4daf19559d775ffb57b321ba494c32951923b09c1f255dca6bb6",
"/tmp/erri-vanilla-stock/scripts/Game/generated/Weapon/MuzzleInMagComponent.c": "5cc80fc54f2bbebe528eafebd1635ff843bff7435895bbe277f0c791bdd7cff1",
"/tmp/erri-vanilla-stock/scripts/Game/Components/Weapons/SCR_MuzzleInMagComponent.c": "25fdd35e07cb20d6de5f5b749e4c75511e7b62f507f3700d603f18e131b48665",
"/tmp/erri-vanilla-stock/scripts/Game/Inventory/SCR_CharacterInventoryStorageComponent.c": "0df5169d5e3ea2dbbf78066ce77a0dc827a23ccf47a00693077ecab577042190",
"/tmp/erri-vanilla-stock/scripts/Game/Inventory/SCR_InventoryStorageManagerComponent.c": "37799972155e2a460c1b9cf66d9be3a54ab7dc2fcfcc33b8d40672973c342023",
"/tmp/erri-vanilla-stock/scripts/Game/AI/Components/SCR_AICombatComponent.c": "79919aaf106d2d79caa83c948586cf6c3d284bd4a1f8db2e92179a1921f25cee",
"/tmp/erri-vanilla-stock/scripts/Game/UI/Inventory/SCR_InventorySlotUI.c": "3bcb4cbccfb5be7836c07d57bfcdcfff975a0511374fc7b1361722d346afcde5"
},
"findings": [
{
"fact": "RPG7 is a reloadable projectile-containing muzzle with authored magazine well independent of loaded item.",
"references": [
"Prefabs/Weapons/Launchers/RPG7/Launcher_RPG7_base.et:87 SCR_MuzzleInMagComponent",
"Prefabs/Weapons/Launchers/RPG7/Launcher_RPG7_base.et:116 MagazineWellRPG7",
"Prefabs/Weapons/Launchers/RPG7/Launcher_RPG7.et:27 AmmoTemplate Ammo_Rocket_PG7VM.et",
"Components/Weapons/SCR_MuzzleInMagComponent.c:8 default CanBeReloaded=1"
]
},
{
"fact": "GP25 and M203 similarly author separate wells and AmmoTemplate on MuzzleInMagComponent.",
"references": [
"Prefabs/Weapons/Attachments/Underbarrel/UGL_GP25.et:123 MagazineWellRU_GP;169 Ammo_Grenade_HE_VOG25",
"Prefabs/Weapons/Attachments/Underbarrel/UGL_M203_base.et:101 MagazineWellUS_UGL;143 Ammo_Grenade_HEDP_M433"
]
},
{
"fact": "All three actual round prefabs are Projectile entities with MagazineComponent and corresponding well; RPG7 rocket base MaxAmmo1. A general rejection of Projectile entity type would reject legitimate resupply rounds.",
"references": [
"Prefabs/Weapons/Ammo/Ammo_Rocket_PG7VM.et:34",
"Prefabs/Weapons/Core/Ammo_Rocket_Base.et:42",
"Prefabs/Weapons/Ammo/Ammo_Grenade_HE_VOG25.et:35",
"Prefabs/Weapons/Ammo/Ammo_Grenade_HEDP_M433.et:34"
]
},
{
"fact": "Supported reload and native resupply eligibility inspect muzzle well/resource without requiring GetMagazine nonnull.",
"references": [
"Inventory/SCR_CharacterInventoryStorageComponent.c:1125-1153",
"Inventory/SCR_InventoryStorageManagerComponent.c:1505-1509",
"generated/Weapon/BaseMuzzleComponent.c:40-43"
]
},
{
"fact": "Disposable weapons require exclusion: RPG75 has Disposable1 and CanBeReloaded0; native AI and resupply use respective gates.",
"references": [
"Prefabs/Weapons/Launchers/RPG75/Launcher_RPG75_base.et:169-175",
"AI/Components/SCR_AICombatComponent.c:526-528",
"Inventory/SCR_InventoryStorageManagerComponent.c:1505-1507"
]
}
],
"unproven": [
"Exact fired-round entity deletion timing versus native projectile reuse and transient GetMagazine lifetime are engine internals, not established by these scripts. No native firing claim.",
"SetAmmoCount(0) on an installed round is not proven equivalent to actual firing/chamber removal.",
"Native UI uses IsCurrentBarrelChambered for MuzzleInMag current-magazine visibility (SCR_InventorySlotUI.c:958); this supports treating empty chamber independently, not a proof of entity destruction."
],
"implementation_constraints": [
"Match existing finite stocked entity BaseMagazineComponent.GetMagazineWell to exact owned eligible muzzle well; no required empty-magazine identity for projectile-fed launcher admission.",
"Refuse IsDisposable or SCR_MuzzleInMagComponent !CanBeReloaded.",
"Never synthesize stock from default resource merely because default getter can return a projectile; validate existing physical stock identity, custody and positive ammo/capacity.",
"Do not implement empty return for fired projectile rounds based on mock retained-empty assumptions."
]
}