re: who selects a loadout -- the pak entry does; the Arsenal pak is stage-scoped

Settled by elimination with two controls.  The 15 loadout names appear
as a field VALUE nowhere on the disc -- 0 occurrences across every pak
-- while the control Arbalest_155KG, which is referenced, appears 150
times as a value in the same pak.  They occur only as the field names of
the UNITS record.  They are not in the executable either; control:
WEAPONS (a section key) is, Arbalest_155KG is not.

So nothing references a loadout by name.  The selection is which pak
entry the Hangar loads.  GP_HANGAR_ARSENAL.pak has 180 IDXD entries in
10 shapes; 168 carry a UNITS roster = 28 stages x 6 languages, and the
other 12 = 2 x 6.  Each entry is one stage's whole Hangar config, and
its UNITS roster is the flight for that stage -- 5 distinct rosters over
15 / 5 / 5 / 2 / 1 stages, including one where Rhino2-Katana flies
alone.  Every count is a multiple of 6 and they sum to 28, the disc's
stage count by a fourth independent route.

Corrects the previous commit: it read the pak with setdefault, so
'15 loadouts / 24 allow-lists / STANDARD_ARM1 has 11 entries' is the
union of first-seen records, not one table.  Contents vary per entry --
PlayerSET_ARM1 has 5 distinct contents, STANDARD_ARM1 3, ExSET_NOSE 4.
The chain and both controls (60/60, 70/88) are per-record and
unaffected; only the per-list sizes were over-generalised.

Not settled: the entry filenames.  name_hash probing over 8 templates x
40 indices x 6 languages resolved 0, while the same probe's controls
<lang>\weapon.tbl and <lang>\strings.tbl resolved 12/12.

Artefact +40 lines / 1 changed heading; the other four regenerate
byte-identical.
This commit is contained in:
Sylpheed RE agent
2026-08-27 13:09:07 +00:00
parent 2b2d984f0c
commit 2b9709eaa0
4 changed files with 156 additions and 3 deletions

View File

@@ -2,9 +2,48 @@
# Regenerate: python3 tools/re-capture/hangar_loadouts.py
# See docs/re/structures/hangar-loadout-system.md
## counts
## the pak is STAGE-SCOPED -- one config entry per stage per language
total pak entries 1538 IDXD entries 180
entries carrying a UNITS roster 168 = 28 stages x 6 languages
entries without one 12 = 2 x 6 (the item table + siblings)
every roster count is a multiple of 6: True ; they sum to 28 stages
## the 5 distinct UNITS rosters -- who is in the flight, per stage
15 stage(s) 8 pilots: Bird1-Sandra, Bird2-Billy, Bird3-Antonius, Bird4-Carl, Rhino1-Katana, Rhino2-Ellen, Rhino3-Gene, Rhino4-Yoji
5 stage(s) 8 pilots: Bird1-Sandra, Bird2-Billy, Bird3-Antonius, Bird4-Carl, Rhino1-Raymond, Rhino2-Gene, Rhino3-Katana, Rhino4-Ellen
5 stage(s) 1 pilots: Rhino2-Katana
2 stage(s) 7 pilots: Bird1-Sandra, Bird2-Billy, Bird3-Antonius, Bird4-Carl, Rhino1-Raymond, Rhino2-Katana, Rhino3-Ellen
1 stage(s) 4 pilots: Rhino1-Katana, Rhino2-Ellen, Rhino3-Gene, Rhino4-Brandon
## counts, UNION over all entries (each name first-seen)
arsenal items 59 loadout records 15 per-slot allow-lists 24
## allow-list CONTENT VARIES BY ENTRY -- distinct contents per name
ExSET_ARM1 3
ExSET_ARM2 3
ExSET_ARM3 3
ExSET_NOSE 4
NULL_ARM1 1
NULL_ARM2 1
NULL_ARM3 1
NULL_NOSE 1
PlayerSET_ARM1 5
PlayerSET_ARM2 5
PlayerSET_ARM3 4
PlayerSET_NOSE 4
S01SET_ARM1 1
S01SET_ARM2 1
S01SET_ARM3 1
S01SET_NOSE 1
S02SET_ARM1 1
S02SET_ARM2 1
S02SET_ARM3 1
S02SET_NOSE 1
STANDARD_ARM1 3
STANDARD_ARM2 3
STANDARD_ARM3 3
STANDARD_NOSE 2
## loadout records
Bird1-Sandra S01SET_ARM1 S01SET_ARM2 S01SET_ARM3 S01SET_NOSE UnitID=SANDRA (character)
Bird2-Billy S01SET_ARM1 S01SET_ARM2 S01SET_ARM3 S01SET_NOSE UnitID=BILLY (character)