# Sub-records inside the 114 unit tables of GP_MAIN_GAME_E.pak
# Regenerate: python3 tools/re-capture/unit_substructures.py
# See docs/re/structures/unit-substructure-records.md

## families (records, max per unit, distinct non-indexed field names)
   Turret_NNN               835   max/unit  63   fields  38
   Maneuver                 114   max/unit   1   fields 101
   Effect                   114   max/unit   1   fields   9
   Shield                   114   max/unit   1   fields   4
   Mass                     114   max/unit   1   fields   2
   SE                       114   max/unit   1   fields   8
   Generic                  114   max/unit   1   fields  37
   Explosion                114   max/unit   1   fields   9
   StructureCount           114   max/unit   1   fields   6
   NS_Body                   68   max/unit   1   fields  12
   ShieldGenerator_NNN       46   max/unit   4   fields  21
   Thruster_NNN              38   max/unit   4   fields  21
   Hatch_NNN                 26   max/unit   4   fields  23
   Bridge_NNN                25   max/unit   2   fields  20
   NS_Body_2                  1   max/unit   1   fields  12
   Hatch_???                  1   max/unit   1   fields  19
   ShieldGenerator_???        1   max/unit   1   fields  16
   NS_*                       1   max/unit   1   fields  10
   Bridge_???                 1   max/unit   1   fields  16
   Thruster_???               1   max/unit   1   fields  19
   Turret_???                 1   max/unit   1   fields  25
   Versatile_???              1   max/unit   1   fields  15

## Turret_NNN -- non-indexed fields (records carrying it, of 835)
     AngularVelocity                    835
     CoverArea                          835
     Effect_Explosion                   835
     Effect_Flare                       835
     Frame                              835
     HP                                 835
     ID                                 835
     IsAuto                             835
     IsDestructible                     835
     IsInvolved                         835
     IsRadarVisible                     835
     IsShielded                         835
     Name                               835
     NomalModel                         835
     ParentStructureID                  835
     PitchLimit_Depression              835
     PitchLimit_Elevation               835
     Radius                             835
     SequencingCount                    835
     SequencingInterval                 835
     SpreadDamage                       835
     WeaponID                           835
     YawLimit                           835
     CollisionModel                     831
     CommonCannonFrame                  831
     CommonCannonModel                  831
     HasBarrel                          831
     DamagedMotionName                  829
     DestroyMotionName                  829
     DestroyMotionTime                  829
     Effect_Paralyze                    824
     DisableCollision_Lost              240
     CurveAngle                         120
     FCSAngle                           120
     FollowView                          40
     ShellModel                          40
     CoverModel                          26
     DamagedModel                         6

## Effect -- non-indexed fields (records carrying it, of 114)
     FadeIn                             113
     FadeOut                            113
     JumpIn                             113
     JumpOut                            113
     Shield                              79
     Effect_Paralyze                     74
     ShieldHitEffectName                 35
     ShieldRecoverEffectName             35
     Thruster                             1

## Shield -- non-indexed fields (records carrying it, of 114)
     ChargeDelay                        114
     ChargeDelay_Break                  114
     ChargeSpeed                        114
     MaxValue                           114

## Mass -- non-indexed fields (records carrying it, of 114)
     DryMass                            114
     GrossMass                          114

## SE -- non-indexed fields (records carrying it, of 114)
     ExplosionSE                        114
     Thruster                           114
     JumpIn                             113
     JumpOut                            113
     LowerHPSE                          113
     LowerHPThresholdRatio              113
     ShipEnvironmentSE                  113
     SideThruster                       113

## Explosion -- non-indexed fields (records carrying it, of 114)
     Delay                              114
     DelayAdjustment                    114
     ExplosionFxModel                   113
     LowerHPFxModel                     113
     DestroyMotionTime                  112
     DestroyMotionName                  109
     ExplosionMotionName                109
     ExplosionFxMotion                    3
     LowerHPFxMotion                      3

## StructureCount -- non-indexed fields (records carrying it, of 114)
     BridgeCount                        114
     HatchCount                         114
     ShieldGeneratorCount               114
     ThrusterCount                      114
     TurretCount                        114
     VersatileCount                     114

## NS_Body -- non-indexed fields (records carrying it, of 68)
     AttenuationAlpha                    68
     AttenuationVolume                   68
     Color_B                             68
     Color_G                             68
     Color_R                             68
     Deceleration                        68
     DeleteFadeSpeed                     68
     Interval                            68
     Model                               68
     NodeCount                           68
     StartingVelocity                    68
     Volume                              68

## ShieldGenerator_NNN -- non-indexed fields (records carrying it, of 46)
     CollisionModel                      46
     DamagedMotionName                   46
     DestroyMotionName                   46
     DestroyMotionTime                   46
     Effect_Explosion                    46
     Effect_Flare                        46
     Effect_Paralyze                     46
     Frame                               46
     HP                                  46
     ID                                  46
     IsDestructible                      46
     IsInvolved                          46
     IsRadarVisible                      46
     IsShielded                          46
     Name                                46
     NomalModel                          46
     ParentStructureID                   46
     PowerRatio                          46
     Radius                              46
     SpreadDamage                        46
     DisableCollision_Lost               25

## Thruster_NNN -- non-indexed fields (records carrying it, of 38)
     CollisionModel                      38
     DamagedMotionName                   38
     DestroyMotionName                   38
     DestroyMotionTime                   38
     Effect_Explosion                    38
     Effect_Flare                        38
     Effect_Paralyze                     38
     Frame                               38
     HP                                  38
     ID                                  38
     IsDestructible                      38
     IsInvolved                          38
     IsRadarVisible                      38
     IsShielded                          38
     Name                                38
     NomalModel                          38
     NozzleCount                         38
     ParentStructureID                   38
     PowerRatio                          38
     Radius                              38
     SpreadDamage                        38

## Hatch_NNN -- non-indexed fields (records carrying it, of 26)
     CollisionModel                      26
     DamagedMotionName                   26
     DestroyMotionName                   26
     DestroyMotionTime                   26
     Effect_Explosion                    26
     Effect_Flare                        26
     Effect_Paralyze                     26
     Frame                               26
     HP                                  26
     ID                                  26
     IsDestructible                      26
     IsInvolved                          26
     IsRadarVisible                      26
     IsShielded                          26
     LoadedCount                         26
     MaxAvailableCount                   26
     Name                                26
     NomalModel                          26
     ParentStructureID                   26
     Radius                              26
     SpreadDamage                        26
     SquadronID                          26
     TakeoffInterval                     26

## Bridge_NNN -- non-indexed fields (records carrying it, of 25)
     CollisionModel                      25
     DamagedMotionName                   25
     DestroyMotionName                   25
     DestroyMotionTime                   25
     Effect_Explosion                    25
     Effect_Flare                        25
     Effect_Paralyze                     25
     Frame                               25
     HP                                  25
     ID                                  25
     IsDestructible                      25
     IsInvolved                          25
     IsRadarVisible                      25
     IsShielded                          25
     Name                                25
     NomalModel                          25
     ParentStructureID                   25
     PowerRatio                          25
     Radius                              25
     SpreadDamage                        25

## NS_Body_2 -- non-indexed fields (records carrying it, of 1)
     AttenuationAlpha                     1
     AttenuationVolume                    1
     Color_B                              1
     Color_G                              1
     Color_R                              1
     Deceleration                         1
     DeleteFadeSpeed                      1
     Interval                             1
     Model                                1
     NodeCount                            1
     StartingVelocity                     1
     Volume                               1

## Hatch_??? -- non-indexed fields (records carrying it, of 1)
     DamagedModel                         1
     Effect_Explosion                     1
     Effect_Flare                         1
     Frame                                1
     HP                                   1
     ID                                   1
     IsDestructible                       1
     IsInvolved                           1
     IsRadarVisible                       1
     IsShielded                           1
     LoadedCount                          1
     MaxAvailableCount                    1
     Name                                 1
     NomalModel                           1
     ParentStructureID                    1
     Radius                               1
     SpreadDamage                         1
     SquadronID                           1
     TakeoffInterval                      1

## ShieldGenerator_??? -- non-indexed fields (records carrying it, of 1)
     DamagedModel                         1
     Effect_Explosion                     1
     Effect_Flare                         1
     Frame                                1
     HP                                   1
     ID                                   1
     IsDestructible                       1
     IsInvolved                           1
     IsRadarVisible                       1
     IsShielded                           1
     Name                                 1
     NomalModel                           1
     ParentStructureID                    1
     PowerRatio                           1
     Radius                               1
     SpreadDamage                         1

## NS_* -- non-indexed fields (records carrying it, of 1)
     AttenuationAlpha                     1
     AttenuationVolume                    1
     Color_B                              1
     Color_G                              1
     Color_R                              1
     Deceleration                         1
     DeleteFadeSpeed                      1
     Interval                             1
     NodeCount                            1
     StartingVelocity                     1

## Bridge_??? -- non-indexed fields (records carrying it, of 1)
     DamagedModel                         1
     Effect_Explosion                     1
     Effect_Flare                         1
     Frame                                1
     HP                                   1
     ID                                   1
     IsDestructible                       1
     IsInvolved                           1
     IsRadarVisible                       1
     IsShielded                           1
     Name                                 1
     NomalModel                           1
     ParentStructureID                    1
     PowerRatio                           1
     Radius                               1
     SpreadDamage                         1

## Thruster_??? -- non-indexed fields (records carrying it, of 1)
     DamagedModel                         1
     Effect_Explosion                     1
     Effect_Flare                         1
     Frame                                1
     HP                                   1
     ID                                   1
     IsDestructible                       1
     IsInvolved                           1
     IsRadarVisible                       1
     IsShielded                           1
     Name                                 1
     NomalModel                           1
     NozzleCount                          1
     NozzleFrame_???                      1
     NozzleSpec_???                       1
     ParentStructureID                    1
     PowerRatio                           1
     Radius                               1
     SpreadDamage                         1

## Turret_??? -- non-indexed fields (records carrying it, of 1)
     AngularVelocity                      1
     CannonFrame_???                      1
     DamagedModel                         1
     Effect_Explosion                     1
     Effect_Flare                         1
     Frame                                1
     HP                                   1
     ID                                   1
     IsAuto                               1
     IsDestructible                       1
     IsInvolved                           1
     IsRadarVisible                       1
     IsShielded                           1
     MuzzleFrame_???                      1
     Name                                 1
     NomalModel                           1
     ParentStructureID                    1
     PitchLimit_Depression                1
     PitchLimit_Elevation                 1
     Radius                               1
     SequencingCount                      1
     SequencingInterval                   1
     SpreadDamage                         1
     WeaponID                             1
     YawLimit                             1

## Versatile_??? -- non-indexed fields (records carrying it, of 1)
     DamagedModel                         1
     Effect_Explosion                     1
     Effect_Flare                         1
     Frame                                1
     HP                                   1
     ID                                   1
     IsDestructible                       1
     IsInvolved                           1
     IsRadarVisible                       1
     IsShielded                           1
     Name                                 1
     NomalModel                           1
     ParentStructureID                    1
     Radius                               1
     SpreadDamage                         1

## CONTROL  StructureCount.<Kind>Count == #<Kind>_NNN records
##          (a 0 count still emits one blank slot)
   684 comparisons (114 units x 6 kinds)
     equal                               612
     0 declared, 1 blank placeholder      55
     DIFFERS                              11
     no field                              6
   exceptions:
     kind=Turret   declared=4   records=63  x7
        UN_f001_TCAF_DeltaSaber_T
        UN_f001_TCAF_DeltaSaber_T_EX5
        UN_f001_TCAF_DeltaSaber_T_EX5_el
        UN_f001_TCAF_DeltaSaber_T_Player
        UN_f002_TCAF_DeltaSaber_W
        UN_f002_TCAF_DeltaSaber_W_Player
        UN_f004_TCAF_DeltaSaber_A_Player
     kind=Turret   declared=4   records=5   x2
        UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1
        UN_f001_TCAF_DeltaSaber_T_Player_Ttrl2
     kind=Turret   declared=1   records=2   x1
        UN_e001_ADAN_Elan_EX4
     kind=Turret   declared=8   records=9   x1
        UN_e107_ADAN_AAFrigate_EX4

## CONTROL  Turret_NNN.WeaponID resolves into the Weapon datasheet
   Weapon.ID values: 131
   turrets: 835, distinct WeaponID: 105
   resolve: 835   do NOT resolve: 0
   weapons never mounted on a turret: 26
