re: the 59-of-131 arsenal question is closed -- an item names a hardpoint

An Arsenal item does not reference a Weapon record.  It references a
Turret_NNN HARDPOINT SLOT on the player craft's own unit table, and the
slot is what carries the WeaponID.  Three hops:

  Arbalest_155KG.PlayerWeapon -> Turret_050  (a slot on
  UN_f001_TCAF_DeltaSaber_T_Player) -> .WeaponID ->
  Weapon_DSaber_P_wep_50_Cannon

Controls, both in the same loop: 0/59 distinct PlayerWeapon values are a
Weapon.ID; 59/59 are a Turret_NNN slot id; the full chain lands on a
Weapon.ID 59/59.  WingmanWeapon resolves identically.  The WEAPONS
roster's 59 = 55 item names + 4 empty-slot sentinels.

Wingmen fly a cheaper gun: following the same 59 slots across craft
variants, the _Player tables give each item its own weapon record (59
distinct) while the AI tables collapse all 59 onto 10 generic classes.
That is most of the 131.

Upgrades yesterday's 'hardpoint catalogue' reading from 21 to adopted,
proved from an independent file, and corrects its '10 distinct WeaponID'
figure -- that was the AI variant, not the player's.

Also adds an __main__ guard to unit_substructures.py so importing
pak_entries from it does not run its report; its artefact is unchanged
and still byte-identical.
This commit is contained in:
Sylpheed RE agent
2026-08-27 12:49:22 +00:00
parent 4a5e5d55e6
commit 21e710a531
7 changed files with 306 additions and 6 deletions

View File

@@ -827,6 +827,42 @@ unknown, what evidence exists, and what the first step would be. Move an item in
field; the stat keys in records not opened here (`MegaTons`, `BulletLimit`,
`CrewCount`, `HP_CLASS`); why the roster lists 59 of 131.
* ✅✅ **(2026-08-27) THE 59-OF-131 ARSENAL QUESTION IS CLOSED — an Arsenal item
names a HARDPOINT SLOT, not a weapon.**
[structures/arsenal-item-weapon-chain](structures/arsenal-item-weapon-chain.md),
artefact `data/arsenal-chain.txt`, regenerator
`tools/re-capture/arsenal_chain.py`.
Open since the weapon datasheet was decoded, and one wrong answer was
refuted yesterday. The link is **three hops**:
`Arbalest_155KG.PlayerWeapon` → **`Turret_050`** (a slot on
`UN_f001_TCAF_DeltaSaber_T_Player`) → `.WeaponID` →
`Weapon_DSaber_P_wep_50_Cannon`.
🧪 The controls, both run in the same loop: **0 / 59** distinct `PlayerWeapon`
values are a `Weapon.ID`; **59 / 59** are a `Turret_NNN` slot id; the full
chain lands on a `Weapon.ID` **59 / 59**. `WingmanWeapon` resolves
identically. The `WEAPONS` roster's 59 = 55 item names + 4 empty-slot
sentinels (`No_Equipment`, `NullWeapon_Arm1/2/3`).
🔑 **Wingmen fly a cheaper gun.** Following the same 59 slots across craft
variants: the `_Player` tables give each item **59 distinct** weapon records
(`Weapon_DSaber_P_wep_NN_*`); the AI tables (`…DeltaSaber_T`, `_W`, `_EX5`)
collapse all 59 onto **10** generic classes (`Weapon_TCAF_DeltaSaber_Beam`,
`…_Gun`, …). That is most of the 131: 59 player + 10 AI-Saber + ship/ADAN
turret guns.
✅ **Upgrades yesterday's 🟡** — the "hardpoint catalogue" reading of the
player craft's 63 `Turret_NNN` slots is now ADOPTED, proved from an
independent file. ⚠️ And it corrects a number in that entry: the "10 distinct
`WeaponID`s" was measured on the **AI** variant; `_Player` has 59.
An item record also carries `Model`/`Package`/`SilhouetteModel` (the meshes
the corpus decodes), `Points` + `Stage` (the develop economy
`arsenal-develop-economy.md` recovered from the screen side), the Hangar stat
bars `Power`/`Range`/`Size`/`Speed`/`Weight`, and `Type` = a slot class.
🟡 Not settled: `Type` and the per-slot allow-lists (`STANDARD_ARM1/2/3`,
`PlayerSET_*`, `ExSET_*`, `SNNSET_*` — records whose only field is `Type`);
the **wingman loadout** records (`Bird1-Sandra`, `Rhino1-Katana`, … with
`Arm1`/`Arm2`/`Arm3`/`Nose`/`UnitID`) — named here, not opened; empty
`Dependency`/`MissionObjective`; which weapons the 26 never-on-a-turret ones
are.
* ✅ **(2026-08-27) THE DESTRUCTIBLE-SUBSYSTEM MODEL — a unit's sub-records,
opened at last. 835 turrets, and every turret's weapon resolves.**
[structures/unit-substructure-records](structures/unit-substructure-records.md),