diff --git a/docs/WEAPON_DAMAGE.md b/docs/WEAPON_DAMAGE.md index b511c4e..766bebc 100644 --- a/docs/WEAPON_DAMAGE.md +++ b/docs/WEAPON_DAMAGE.md @@ -12,6 +12,25 @@ and the formula function (RVAs below); the literal constants need a different me end). This corrects an earlier draft that wrongly concluded "no value exists" — the values **are** live at runtime; they just aren't statically anchorable constants. +**Confirmed 2026-06-16 (offline, `bundle/dump_blueprint.py`): the `Damage*DataComponent`s are +NOT authored on the item/ammo EntityBlueprints in the bundles.** Decoded `item_grenadeContact`, +`item_shotgunAmmo`, `item_pistolAmmo`, `item_shotgun`, `item_revolverSmall_dusters` — every one +has only generic components (InteractActions, Count, ItemName, ItemType, NiceName, View, +ViewSize, colliders, Physics); **zero** `Damage{Physical,…}DataComponent` / `MeleeDataComponent` +/ AoE. The only `.value` floats present are `ViewSizeDataComponent` (~0.3–0.97), not damage. So +`GetDamage`'s `DamageXxxDataComponent.value` reads are populated **at runtime (server-authoritative)** +— there is no per-weapon damage constant in the bundles *or* as a static anchor in the DLL. + +**Ways to get actual base numbers, ranked:** +- ✅ **In-game empirical measurement** (controlled damage tests) — the only clean route. +- ⚠️ Live-client runtime memory (the components hold real values once spawned) — but that's + process inspection → **BattlEye / no injection** → off-limits. +- ❌ Static extraction (bundles) — values absent (proven above). +- ❌ Static decompile constant — none exists (generic Entitas dispatch). +- ❌ Master-server query — no damage field / no stats endpoint (see [MASTER_SERVER.md](MASTER_SERVER.md)). +- ❓ Game-server (not master) entity-snapshot capture *might* carry component values, but unverified + and the server may only transmit results, not per-weapon stats. + ## Damage model (all static, all in `il2cpp/dump.cs` + verified by disasm) Per-type damage lives as a `float value` (object offset **+0x10**) on 8 components on the