re: the Hangar loadout system -- loadout, allow-list, arsenal item
15 loadout records, one per flight position x pilot (Bird1-Sandra .. Rhino4-Yoji), each with Arm1/Arm2/Arm3/Nose + UnitID. The same trap as PlayerWeapon, one level up: Arm1/Arm2/Arm3/Nose do NOT name items. They name a per-slot ALLOW-LIST record -- one of 24 whose only named field is Type (the slot kind) -- and the candidate items are that record's positional, unnamed fields, in order. Four hops: Rhino4-Yoji.Arm1 -> STANDARD_ARM1 -> [Falcon_9AM, Condor_105AM, ...] -> item.PlayerWeapon = Turret_NNN -> slot.WeaponID -> Weapon.ID Controls: Arm1/2/3/Nose -> allow-list record 60/60; allow-list positional entries -> arsenal item 70/88, and every one of the 18 misses is the single sentinel No_Equipment -- one of the four WEAPONS-roster values with no item record, i.e. the empty-slot marker. UnitID is two ID spaces at once: 5 rows name a unit Generic.ID (the three -Katana rows are the player -- a _Player craft plus an extra, empty PlayerUnit field), 8 name a character, resolving as Character + the value into the 64-record character table. Two values resolve to nothing, both single rows against 13 that do: Rhino2-Ellen.UnitID = UN_f001_TCAF_DeltaSaber_W exists nowhere (checked as a Generic.ID across every pak and as a record name, 0 hits) while UN_f002_TCAF_DeltaSaber_W does -- consistent with a shipped typo, reported not diagnosed -- and Rhino4-Brandon.UnitID = BRANDON has no CharacterBRANDON among the 64. New structure doc, artefact and regenerator; the other four artefacts regenerate byte-identical.
This commit is contained in:
@@ -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 HANGAR LOADOUT SYSTEM — the layer above the item chain.**
|
||||
[structures/hangar-loadout-system](structures/hangar-loadout-system.md),
|
||||
artefact `data/hangar-loadouts.txt`, regenerator
|
||||
`tools/re-capture/hangar_loadouts.py`.
|
||||
**15 loadout records**, one per flight position x pilot (`Bird1-Sandra` …
|
||||
`Rhino4-Yoji`), each with `Arm1`/`Arm2`/`Arm3`/`Nose` + `UnitID`.
|
||||
🔑 **The same trap as `PlayerWeapon`, one level up**: `Arm1`/`Arm2`/`Arm3`/
|
||||
`Nose` do NOT name items — they name a **per-slot ALLOW-LIST record**, one of
|
||||
24 whose only *named* field is `Type` (the slot kind). The candidate items are
|
||||
the allow-list's **positional, unnamed fields, in order**. Four hops:
|
||||
`Rhino4-Yoji.Arm1` → `STANDARD_ARM1` → `[Falcon_9AM, Condor_105AM, …]` →
|
||||
`item.PlayerWeapon = Turret_NNN` → `slot.WeaponID` → `Weapon.ID`.
|
||||
🧪 Controls: `Arm1/2/3/Nose` → allow-list record **60/60**; allow-list
|
||||
positional entries → arsenal item **70/88**, and **every one of the 18 misses
|
||||
is the single sentinel `No_Equipment`** — one of the four `WEAPONS`-roster
|
||||
values with no item record, i.e. the empty-slot marker, not a decode failure.
|
||||
Six sets: `STANDARD_*` (11/9/9/8), `ExSET_*` (10/8/4/7), `S01SET_*` (2/1/1/1),
|
||||
`S02SET_*` (3/2/2/1), `PlayerSET_*` (2/1/1/1), `NULL_*` (1 each) — so the
|
||||
`SNNSET_` sets are stage-scoped narrowings of `STANDARD_`.
|
||||
🔑 **`UnitID` is TWO ID spaces at once**: 5 rows name a unit `Generic.ID`
|
||||
(the three `-Katana` rows are the PLAYER — they point at a `_Player` craft and
|
||||
carry an extra, empty `PlayerUnit` field), 8 name a character, resolving as
|
||||
**`Character` + the value** into the 64-record character table.
|
||||
🟡 Two values resolve to nothing, both single rows against 13 that do:
|
||||
`Rhino2-Ellen.UnitID = UN_f001_TCAF_DeltaSaber_W` — **no such unit anywhere**
|
||||
(checked as a `Generic.ID` across every pak AND as a record name, 0 hits)
|
||||
while `UN_f002_TCAF_DeltaSaber_W` exists → consistent with a shipped
|
||||
`f001`/`f002` typo, **reported, not diagnosed**; and `Rhino4-Brandon.UnitID =
|
||||
BRANDON` — no `CharacterBRANDON` among the 64.
|
||||
🟡 Not settled: who SELECTS a loadout record (the names encode flight position
|
||||
and pilot, and `stage-definition-table.md` has `AI_TCAF_RhinoFlight` /
|
||||
`AI_TCAF_BirdFlight`, but the join is not shown); `ExSET_*`/`S02SET_*`/`NULL_*`
|
||||
are referenced by no loadout in this pak; `PlayerUnit` is empty on all three
|
||||
rows that have it; `IGNORE` (13 item names) is a blocklist for something
|
||||
unread.
|
||||
|
||||
* ✅✅ **(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),
|
||||
|
||||
Reference in New Issue
Block a user