re: the destructible-subsystem model -- a unit's sub-records

The corpus has named these since unit-struct-runtime.md but never
opened them.  Per unit table: Turret_NNN 835 records (max 63 on one
unit), ShieldGenerator_NNN 46, Thruster_NNN 38, Hatch_NNN 26,
Bridge_NNN 25, plus one each of Shield/Mass/SE/Explosion/
StructureCount and NS_Body on 68 of 114.

Turret/ShieldGenerator/Thruster/Hatch/Bridge are ONE record shape: a
shared 19-field destructible-part base (ID, Name, ParentStructureID,
Frame = a mesh NODE name, NomalModel, CollisionModel, Radius, HP, the
four Is* flags, SpreadDamage, damaged/destroy motion + time, and the
three Effect_*), with per-kind extras.  Turrets add WeaponID,
AngularVelocity, YawLimit, PitchLimit_Elevation/_Depression, CoverArea,
IsAuto, HasBarrel and up to 80 CannonModel_NNN/CannonFrame_NNN.  Shield
generators, thrusters and bridges add PowerRatio.  Hatches add
SquadronID, LoadedCount, MaxAvailableCount, TakeoffInterval -- a
carrier's launch bay.

Control 1: StructureCount.<Kind>Count == #<Kind>_NNN records, over 684
comparisons -- 612 equal, 55 "0 declared, one blank placeholder"
(55/55 blank in Name AND NomalModel AND Frame), 11 differ, 6 kind
absent.  All 11 exceptions are Turret and all are declared < records.

Control 2: 835/835 Turret_NNN.WeaponID resolve to an ID in the
131-record Weapon datasheet, zero unresolved; 26 weapons are never
mounted on a turret.

Refuted in the same pass: "the DeltaSaber's 59 non-NULL hardpoints are
the 59-name WEAPONS arsenal roster".  The counts match exactly and the
sets overlap in 0 values -- two namespaces, one coincidence.

New structure doc, artefact and regenerator; other artefacts unchanged.
This commit is contained in:
Sylpheed RE agent
2026-08-27 12:39:50 +00:00
parent 9abed411ce
commit 9281aa7456
5 changed files with 697 additions and 0 deletions

View File

@@ -827,6 +827,48 @@ 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 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),
artefact `data/unit-substructures.txt`, regenerator
`tools/re-capture/unit_substructures.py`.
The corpus has *named* these since `unit-struct-runtime.md` but never opened
them. Per unit table: `Turret_NNN` **835** records (max 63 on one unit),
`ShieldGenerator_NNN` 46, `Thruster_NNN` 38, `Hatch_NNN` 26, `Bridge_NNN` 25,
plus one each of `Shield`/`Mass`/`SE`/`Explosion`/`StructureCount` and
`NS_Body` on 68 of 114.
🔑 **`Turret`/`ShieldGenerator`/`Thruster`/`Hatch`/`Bridge` are ONE record
shape** — a shared 19-field destructible-part base (`ID`, `Name`,
`ParentStructureID`, **`Frame`** = a mesh NODE name, `NomalModel`,
`CollisionModel`, `Radius`, `HP`, `IsDestructible`, `IsShielded`,
`IsInvolved`, `IsRadarVisible`, `SpreadDamage`, damaged/destroy motion +
time, `Effect_Explosion`/`_Flare`/`_Paralyze`) with per-kind extras:
turrets add `WeaponID`, `AngularVelocity`, `YawLimit`,
`PitchLimit_Elevation`/`_Depression`, `CoverArea`, `IsAuto`, `HasBarrel` and
up to 80 `CannonModel_NNN`/`CannonFrame_NNN`; shield generators, thrusters
and bridges add **`PowerRatio`** (what the parent loses when the part dies);
hatches add `SquadronID`, `LoadedCount`, `MaxAvailableCount`,
`TakeoffInterval`**a carrier's launch bay**.
🧪 **Control 1**`StructureCount.<Kind>Count == #<Kind>_NNN records`:
**612 equal / 55 "0 declared, one blank placeholder" / 11 differ / 6 kind
absent**, over 684 comparisons. The 55 are a real sub-rule (a zero count
still emits exactly one record, blank in `Name` *and* `NomalModel` *and*
`Frame`, 55/55). All 11 exceptions are `Turret` and all are
`declared < records`; nine are the player DeltaSaber family (4 declared,
63 slots — 🟡 reads as a hardpoint catalogue, **not adopted**).
🧪 **Control 2** — **835 / 835 `Turret_NNN.WeaponID` values resolve to an
`ID` in the 131-record `Weapon` datasheet, zero unresolved**; 105 distinct
used, **26 weapons never mounted on a turret**. A hard cross-table link.
**Refuted in the same pass**: "the DeltaSaber's 59 non-NULL hardpoints are
the 59-name `WEAPONS` arsenal roster". The counts match exactly and the sets
**overlap in 0 values** — the roster is display names
(`Machiene_Cannon_MG1`), the hardpoints reference `Weapon.ID`
(`Weapon_TCAF_DeltaSaber_Gun`), and the 59 slots carry only **10 distinct**
weapon IDs. So the 59-of-131 question stays open, minus one wrong answer.
🟡 Not settled: `CoverArea` is a hex bit mask with unknown bits;
`Versatile_NNN` has only its `???` template row in this pak; the two `+1`
turret cases (`Elan_EX4`, `AAFrigate_EX4`).
***(2026-08-27) CORRECTION — `Generic` is a per-FILE HEADER record, not a
table. Only **114** of the 394 are unit datasheets.**
[structures/unit-datasheet-static](structures/unit-datasheet-static.md),