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:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user