# ✅ The STATIC unit datasheet and AI flight model — `Generic`, `Maneuver`, `Effect` Found the same way as the weapon tables: **IDXD field names are literal strings in the pool**, so a field-shape search over all 190 782 records finds the carriers without guessing a filename. This is the static source for what the corpus had only measured at runtime — [flight-speed-law](../flight-speed-law.md), [flight-controls-runtime](../flight-controls-runtime.md), [unit-struct-runtime](unit-struct-runtime.md). | record | per pak | field names | distinct `ID`s | |---|---|---|---| | `Generic` | **394** | **110** | 178 | | `Maneuver` | **114** | 101 | — | | `Effect` | **114** | 9 | — | Repeated identically in every per-language `GP_MAIN_GAME_*.pak`. A unit's `Generic`, `Maneuver` and `Effect` share a pak entry. ⚠️ `Generic` is the game's own record name, not a placeholder — it is also one of the 65 section names in `data/config-keys.txt`. ## `Generic` — the unit datasheet Sample `UN_e006_ADAN_Vindicator_MargrasF`: ``` ID / Name / Type Craft / UncertainName Craft HP 6400.0 ShieldRatio 1.0 DefencePoint 0.0004 AttackCraftPoint 1.0 AttackVesselPoint 0.001 ResistanceToShell 0.1 ResistanceToExplosion 0.5 ResistanceToOptics 0.8 ResistanceToPlayer 1.0 ResistanceParalyze 0.99 Size_X/Y/Z 12.0 / 5.0 / 30.0 Size_Radius 15.0 RadarRange 10000.0 FCSRange 8500.0 MountedFCS No MountedShieldGenerator Yes ScorePoint 4000 DamageScore 640 MassScore 30 HQRatio 1.0 ThrusterRatio 1.0 IsDestructible Yes Model rou_e006 CollisionModel Color_R/G/B 1.0 / 0.5 / 0.1 NozzleCount 3 + per-nozzle Jet / AfterBurner / ReverseThruster / Contrail Fx model & frame names, NozzleSpec_00N ``` 🔑 **`Model rou_e006` ties the datasheet straight to the mesh names the corpus already decodes**, and `Size_*` / `RadarRange` / `FCSRange` are in the corpus's **1 metre** world unit — a 10 km radar, an 8.5 km fire-control range, a 12 × 5 × 30 m craft. ## `Maneuver` — the AI flight model The single richest find for the port. Sample, same unit: ``` MaximumVelocity 1200 MinimumVelocity 100.0 CruisingVelocity 700 Acceleration 600 Deceleration 400 SideThrustAcceleration 1000.0 SideThrustVelocity_Max 1000.0 Turn_AngularVelocity 180.0 MaximumBank_Normal 60.0 YawDragFactor / RollDragFactor / PitchDragFactor 3.0 DragFactorThreshold 0.5 ArterBurner_Vc 2.5 ArterBurner_Acc 2.0 (the game's own spelling) ReverseThrust_Vc -0.5 ReverseThrust_Acc 2.0 UsingChaffRatio 0.5 HomingResistAdjustment 0.8 ``` and a set of **named manoeuvres**, each a Yes/No switch plus its own timing, ratio and length bounds: ``` TurnAttack + _CutoffRatio _DoubleRatio _DoubleTimeMin/Max TurnAway + _Time_Minimum/Maximum BarrelRoll + _CountMinimum/Maximum _Radius _Time SideRoll + _Time _Length Slalom + _CutoffRatio _TurnCount_Min/Max Through + _Angle/Length Minimum/Maximum _Time1/2 Min/Max _CutoffRatio HoldPosition + _MinimumTime _MaximumTime _CancelTime _CutoffRatio _BackRatio _SideRatio _LengthMin/Max SolidCutoff + _LengthMin/Max _Ratio BoostAway + _Time_Minimum/Maximum CutoffTimeMin/Max AA_* and AV_* Pitch/Yaw/Roll Min/Max pairs ``` 🟡 The `AA_` / `AV_` prefixes pair with `AttackCraftPoint` / `AttackVesselPoint`, so *anti-air* vs *anti-vessel* rate limits is the obvious reading — **not adopted**, nothing here shows the selection. ## `Effect` `ShieldHitEffectName`, `ShieldRecoverEffectName`, `Effect_Paralyze`, plus `JumpIn` / `JumpOut` / `FadeIn` / `FadeOut` slots. ## 🟡 Not settled * No cross-check against the runtime captures — this locates and reads the tables; it does not reconcile them field by field. * `HP_CLASS` / `HP_ID` turned out **not** to be ship stats: they sit on records named for wingmen and ship classes (`CARL`, `ELLEN`, `SANDRA`, `ACROPOLIS`, `Carrier_TCAF1`, `NP_Facility`, …), 120–144 instances each, alongside `HPGauge` / `HPGaugeSub` / `RadarCursorType` on the `ObjectiveMarker_*` and `TutorialMarker_*` records — a **HUD gauge binding table**, not a datasheet. * 178 distinct `Generic` IDs against 394 records per pak — the surplus is unexplained here.