# The Hangar loadout system
# Regenerate: python3 tools/re-capture/hangar_loadouts.py
# See docs/re/structures/hangar-loadout-system.md

## 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)
   Bird3-Antonius   S01SET_ARM1      S01SET_ARM2      S01SET_ARM3      S01SET_NOSE       UnitID=ANTONIUS                           (character)
   Bird4-Carl       S01SET_ARM1      S01SET_ARM2      S01SET_ARM3      S01SET_NOSE       UnitID=CARL                               (character)
   Rhino1-Katana    PlayerSET_ARM1   PlayerSET_ARM2   PlayerSET_ARM3   PlayerSET_NOSE    UnitID=UN_f002_TCAF_DeltaSaber_W_Player   (unit)  PlayerUnit
   Rhino1-Raymond   S01SET_ARM1      S01SET_ARM2      S01SET_ARM3      S01SET_NOSE       UnitID=RAYMOND                            (character)
   Rhino2-Ellen     STANDARD_ARM1    STANDARD_ARM2    STANDARD_ARM3    STANDARD_NOSE     UnitID=UN_f001_TCAF_DeltaSaber_W          (???)
   Rhino2-Gene      STANDARD_ARM1    STANDARD_ARM2    STANDARD_ARM3    STANDARD_NOSE     UnitID=GENE                               (character)
   Rhino2-Katana    PlayerSET_ARM1   PlayerSET_ARM2   PlayerSET_ARM3   PlayerSET_NOSE    UnitID=UN_f001_TCAF_DeltaSaber_T_Player   (unit)  PlayerUnit
   Rhino3-Ellen     S01SET_ARM1      S01SET_ARM2      S01SET_ARM3      S01SET_NOSE       UnitID=UN_f001_TCAF_DeltaSaber_T          (unit)
   Rhino3-Gene      STANDARD_ARM1    STANDARD_ARM2    STANDARD_ARM3    STANDARD_NOSE     UnitID=GENE                               (character)
   Rhino3-Katana    PlayerSET_ARM1   PlayerSET_ARM2   PlayerSET_ARM3   PlayerSET_NOSE    UnitID=UN_f001_TCAF_DeltaSaber_T_Player   (unit)  PlayerUnit
   Rhino4-Brandon   STANDARD_ARM1    STANDARD_ARM2    STANDARD_ARM3    STANDARD_NOSE     UnitID=BRANDON                            (???)
   Rhino4-Ellen     STANDARD_ARM1    STANDARD_ARM2    STANDARD_ARM3    STANDARD_NOSE     UnitID=UN_f001_TCAF_DeltaSaber_T          (unit)
   Rhino4-Yoji      STANDARD_ARM1    STANDARD_ARM2    STANDARD_ARM3    STANDARD_NOSE     UnitID=YOJI                               (character)

## CONTROL  loadout.Arm1/2/3/Nose names an ALLOW-LIST record
   60/60

## CONTROL  allow-list positional entries name an ARSENAL ITEM
   70/88
   misses: [('No_Equipment', 18)]
   every miss is a WEAPONS-roster sentinel with no item record: True

## CONTROL  loadout.UnitID
   15 loadouts: 5 name a unit Generic.ID, 8 name a character (as 'Character'+value), 2 neither
   neither: ['BRANDON', 'UN_f001_TCAF_DeltaSaber_W']

## the allow-lists, in order
   ExSET_ARM1       Type=Arm1  10: Condor_105AM, Frail_GP37, Pilum_BP, Multi_Pike_BP, Spear_HBP, Needle_L1GP, Buzzard_10AM, Dirt_23_Rocket, Falcon_9AM, No_Equipment
   ExSET_ARM2       Type=Arm2   8: White_Shark_T53R, Piranha_T53, Hound_SMH, Terrier_SMH, Fire_Arrow_L2GP, Sling_75KG, Hawk_75AM, No_Equipment
   ExSET_ARM3       Type=Arm3   4: Glaive_120mm_Cannon, Monoceros_Long_Cannon, Tomahawk_a_Rail_Gun, No_Equipment
   ExSET_NOSE       Type=Nose   7: Machiene_Cannon_MG3, Machiene_Cannon_MG1, Broad_Sword_SG1, Saber_LG1, Dagger_BG2, Rapier_BG4H, Stiletto_BG1
   NULL_ARM1        Type=Arm1   1: No_Equipment
   NULL_ARM2        Type=Arm2   1: No_Equipment
   NULL_ARM3        Type=Arm3   1: No_Equipment
   NULL_NOSE        Type=Nose   1: Stiletto_BG1
   PlayerSET_ARM1   Type=Arm1   2: Falcon_9AM, No_Equipment
   PlayerSET_ARM2   Type=Arm2   1: No_Equipment
   PlayerSET_ARM3   Type=Arm3   1: No_Equipment
   PlayerSET_NOSE   Type=Nose   1: Stiletto_BG1
   S01SET_ARM1      Type=Arm1   2: Falcon_9AM, No_Equipment
   S01SET_ARM2      Type=Arm2   1: No_Equipment
   S01SET_ARM3      Type=Arm3   1: No_Equipment
   S01SET_NOSE      Type=Nose   1: Stiletto_BG1
   S02SET_ARM1      Type=Arm1   3: Buzzard_10AM, Falcon_9AM, No_Equipment
   S02SET_ARM2      Type=Arm2   2: Terrier_SMH, No_Equipment
   S02SET_ARM3      Type=Arm3   2: Tomahawk_a_Rail_Gun, No_Equipment
   S02SET_NOSE      Type=Nose   1: Stiletto_BG1
   STANDARD_ARM1    Type=Arm1  11: Falcon_9AM, Dirt_23_Rocket, Eagle_120AM, Condor_105AM, Buzzard_10AM, Needle_L1GP, Spear_HBP, Multi_Pike_BP, Pilum_BP, Frail_GP37, No_Equipment
   STANDARD_ARM2    Type=Arm2   9: White_Shark_T53R, Cauldron_50_Rocket, Piranha_T53, Hound_SMH, Terrier_SMH, Fire_Arrow_L2GP, Sling_75KG, Hawk_75AM, No_Equipment
   STANDARD_ARM3    Type=Arm3   9: Glaive_120mm_Cannon, Monoceros_Long_Cannon, Arbalest_155KG, Tomahawk_a_Rail_Gun, Maelstrom_Bomb, Cluster_Mine_B10, Pointer_SM, Long_Spear_HBP, No_Equipment
   STANDARD_NOSE    Type=Nose   8: Stiletto_BG1, Rapier_BG4H, Dagger_BG2, Saber_LG1, Twin_Sword_SG3II, Broad_Sword_SG1, Machiene_Cannon_MG3, Machiene_Cannon_MG1
