Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
69 lines
4.6 KiB
JSON
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."
|
|
]
|
|
}
|