From a47143a6a595b90dc4a427dd325f60e057c7333d Mon Sep 17 00:00:00 2001
From: Athanasius <github@miggy.org>
Date: Sat, 3 Apr 2021 11:02:08 +0100
Subject: [PATCH] Move all static data from outfitting.py into data.py

---
 data.py       | 328 +++++++++++++++++++++++++++++++++++++++++++++++
 outfitting.py | 346 +++-----------------------------------------------
 2 files changed, 345 insertions(+), 329 deletions(-)

diff --git a/data.py b/data.py
index ec64cd30..710bc2fd 100644
--- a/data.py
+++ b/data.py
@@ -4,6 +4,7 @@ Static data.
 For easy reference any variable should be prefixed with the name of the file it
 was either in originally, or where the primary code utilising it is.
 """
+from collections import OrderedDict
 
 # Map numeric 'demand/supply brackets' to the names as shown in-game.
 commodity_bracketmap = {
@@ -48,3 +49,330 @@ edshipyard_slot_map = {
     'fueltank':          'FS',
     'military':          'MC',
 }
+
+# Map API module names to in-game names
+
+outfitting_armour_map = OrderedDict([
+    ('grade1',   'Lightweight Alloy'),
+    ('grade2',   'Reinforced Alloy'),
+    ('grade3',   'Military Grade Composite'),
+    ('mirrored', 'Mirrored Surface Composite'),
+    ('reactive', 'Reactive Surface Composite'),
+])
+
+outfitting_weapon_map = {
+    'advancedtorppylon':                 'Torpedo Pylon',
+    'atdumbfiremissile':                 'AX Missile Rack',
+    'atmulticannon':                     'AX Multi-Cannon',
+    'basicmissilerack':                  'Seeker Missile Rack',
+    'beamlaser':                         'Beam Laser',
+    ('beamlaser', 'heat'):               'Retributor Beam Laser',
+    'cannon':                            'Cannon',
+    'causticmissile':                    'Enzyme Missile Rack',
+    'drunkmissilerack':                  'Pack-Hound Missile Rack',
+    'dumbfiremissilerack':               'Missile Rack',
+    ('dumbfiremissilerack', 'advanced'): 'Advanced Missile Rack',
+    ('dumbfiremissilerack', 'lasso'):    'Rocket Propelled FSD Disruptor',
+    'flakmortar':                        'Remote Release Flak Launcher',
+    'flechettelauncher':                 'Remote Release Flechette Launcher',
+    'guardian_gausscannon':              'Guardian Gauss Cannon',
+    'guardian_plasmalauncher':           'Guardian Plasma Charger',
+    'guardian_shardcannon':              'Guardian Shard Cannon',
+    'minelauncher':                      'Mine Launcher',
+    ('minelauncher', 'impulse'):         'Shock Mine Launcher',
+    'mining_abrblstr':                   'Abrasion Blaster',
+    'mining_seismchrgwarhd':             'Seismic Charge Launcher',
+    'mining_subsurfdispmisle':           'Sub-Surface Displacement Missile',
+    'mininglaser':                       'Mining Laser',
+    ('mininglaser', 'advanced'):         'Mining Lance Beam Laser',
+    'multicannon':                       'Multi-Cannon',
+    ('multicannon', 'advanced'):         'Advanced Multi-Cannon',
+    ('multicannon', 'strong'):           'Enforcer Cannon',
+    'plasmaaccelerator':                 'Plasma Accelerator',
+    ('plasmaaccelerator', 'advanced'):   'Advanced Plasma Accelerator',
+    'plasmashockcannon':                 'Shock Cannon',
+    'pulselaser':                        'Pulse Laser',
+    ('pulselaser', 'disruptor'):         'Pulse Disruptor Laser',
+    'pulselaserburst':                   'Burst Laser',
+    ('pulselaserburst', 'scatter'):      'Cytoscrambler Burst Laser',
+    'railgun':                           'Rail Gun',
+    ('railgun', 'burst'):                'Imperial Hammer Rail Gun',
+    'slugshot':                          'Fragment Cannon',
+    ('slugshot', 'range'):               'Pacifier Frag-Cannon',
+}
+
+outfitting_missiletype_map = {
+    'advancedtorppylon':         'Seeker',
+    'atdumbfiremissile':         'Dumbfire',
+    'basicmissilerack':          'Seeker',
+    'causticmissile':            'Dumbfire',
+    'drunkmissilerack':          'Swarm',
+    'dumbfiremissilerack':       'Dumbfire',
+    'mining_subsurfdispmisle':   'Seeker',
+    'mining_seismchrgwarhd':     'Seeker',
+}
+
+outfitting_weaponmount_map = {
+    'fixed':    'Fixed',
+    'gimbal':   'Gimballed',
+    'turret':   'Turreted',
+}
+
+outfitting_weaponclass_map = {
+    'tiny':      '0',
+    'small':     '1',
+    'smallfree': '1',
+    'medium':    '2',
+    'large':     '3',
+    'huge':      '4',
+}
+
+# There's no discernable pattern for weapon ratings, so here's a lookup table
+outfitting_weaponrating_map = {
+    'hpt_advancedtorppylon_fixed_small':         'I',
+    'hpt_advancedtorppylon_fixed_medium':        'I',
+    'hpt_advancedtorppylon_fixed_large':         'I',
+    'hpt_atdumbfiremissile_fixed_medium':        'B',
+    'hpt_atdumbfiremissile_fixed_large':         'A',
+    'hpt_atdumbfiremissile_turret_medium':       'B',
+    'hpt_atdumbfiremissile_turret_large':        'A',
+    'hpt_atmulticannon_fixed_medium':            'E',
+    'hpt_atmulticannon_fixed_large':             'C',
+    'hpt_atmulticannon_turret_medium':           'F',
+    'hpt_atmulticannon_turret_large':            'E',
+    'hpt_basicmissilerack_fixed_small':          'B',
+    'hpt_basicmissilerack_fixed_medium':         'B',
+    'hpt_basicmissilerack_fixed_large':          'A',
+    'hpt_beamlaser_fixed_small':                 'E',
+    'hpt_beamlaser_fixed_medium':                'D',
+    'hpt_beamlaser_fixed_large':                 'C',
+    'hpt_beamlaser_fixed_huge':                  'A',
+    'hpt_beamlaser_gimbal_small':                'E',
+    'hpt_beamlaser_gimbal_medium':               'D',
+    'hpt_beamlaser_gimbal_large':                'C',
+    'hpt_beamlaser_gimbal_huge':                 'A',
+    'hpt_beamlaser_turret_small':                'F',
+    'hpt_beamlaser_turret_medium':               'E',
+    'hpt_beamlaser_turret_large':                'D',
+    'hpt_cannon_fixed_small':                    'D',
+    'hpt_cannon_fixed_medium':                   'D',
+    'hpt_cannon_fixed_large':                    'C',
+    'hpt_cannon_fixed_huge':                     'B',
+    'hpt_cannon_gimbal_small':                   'E',
+    'hpt_cannon_gimbal_medium':                  'D',
+    'hpt_cannon_gimbal_large':                   'C',
+    'hpt_cannon_gimbal_huge':                    'B',
+    'hpt_cannon_turret_small':                   'F',
+    'hpt_cannon_turret_medium':                  'E',
+    'hpt_cannon_turret_large':                   'D',
+    'hpt_causticmissile_fixed_medium':           'B',
+    'hpt_drunkmissilerack_fixed_medium':         'B',
+    'hpt_dumbfiremissilerack_fixed_small':       'B',
+    'hpt_dumbfiremissilerack_fixed_medium':      'B',
+    'hpt_dumbfiremissilerack_fixed_large':       'A',
+    'hpt_flakmortar_fixed_medium':               'B',
+    'hpt_flakmortar_turret_medium':              'B',
+    'hpt_flechettelauncher_fixed_medium':        'B',
+    'hpt_flechettelauncher_turret_medium':       'B',
+    'hpt_guardian_gausscannon_fixed_small':      'D',
+    'hpt_guardian_gausscannon_fixed_medium':     'B',
+    'hpt_guardian_plasmalauncher_fixed_small':   'D',
+    'hpt_guardian_plasmalauncher_fixed_medium':  'B',
+    'hpt_guardian_plasmalauncher_fixed_large':   'C',
+    'hpt_guardian_plasmalauncher_turret_small':  'F',
+    'hpt_guardian_plasmalauncher_turret_medium': 'E',
+    'hpt_guardian_plasmalauncher_turret_large':  'D',
+    'hpt_guardian_shardcannon_fixed_small':      'D',
+    'hpt_guardian_shardcannon_fixed_medium':     'A',
+    'hpt_guardian_shardcannon_fixed_large':      'C',
+    'hpt_guardian_shardcannon_turret_small':     'F',
+    'hpt_guardian_shardcannon_turret_medium':    'D',
+    'hpt_guardian_shardcannon_turret_large':     'D',
+    'hpt_minelauncher_fixed_small':              'I',
+    'hpt_minelauncher_fixed_medium':             'I',
+    'hpt_mining_abrblstr_fixed_small':           'D',
+    'hpt_mining_abrblstr_turret_small':          'D',
+    'hpt_mining_seismchrgwarhd_fixed_medium':    'B',
+    'hpt_mining_seismchrgwarhd_turret_medium':   'B',
+    'hpt_mining_subsurfdispmisle_fixed_small':   'B',
+    'hpt_mining_subsurfdispmisle_fixed_medium':  'B',
+    'hpt_mining_subsurfdispmisle_turret_small':  'B',
+    'hpt_mining_subsurfdispmisle_turret_medium': 'B',
+    'hpt_mininglaser_fixed_small':               'D',
+    'hpt_mininglaser_fixed_medium':              'D',
+    'hpt_mininglaser_turret_small':              'D',
+    'hpt_mininglaser_turret_medium':             'D',
+    'hpt_multicannon_fixed_small':               'F',
+    'hpt_multicannon_fixed_medium':              'E',
+    'hpt_multicannon_fixed_large':               'C',
+    'hpt_multicannon_fixed_huge':                'A',
+    'hpt_multicannon_gimbal_small':              'G',
+    'hpt_multicannon_gimbal_medium':             'F',
+    'hpt_multicannon_gimbal_large':              'C',
+    'hpt_multicannon_gimbal_huge':               'A',
+    'hpt_multicannon_turret_small':              'G',
+    'hpt_multicannon_turret_medium':             'F',
+    'hpt_multicannon_turret_large':              'E',
+    'hpt_plasmaaccelerator_fixed_medium':        'C',
+    'hpt_plasmaaccelerator_fixed_large':         'B',
+    'hpt_plasmaaccelerator_fixed_huge':          'A',
+    'hpt_plasmashockcannon_fixed_small':         'D',
+    'hpt_plasmashockcannon_fixed_medium':        'D',
+    'hpt_plasmashockcannon_fixed_large':         'C',
+    'hpt_plasmashockcannon_gimbal_small':        'E',
+    'hpt_plasmashockcannon_gimbal_medium':       'D',
+    'hpt_plasmashockcannon_gimbal_large':        'C',
+    'hpt_plasmashockcannon_turret_small':        'F',
+    'hpt_plasmashockcannon_turret_medium':       'E',
+    'hpt_plasmashockcannon_turret_large':        'D',
+    'hpt_pulselaser_fixed_small':                'F',
+    'hpt_pulselaser_fixed_smallfree':            'F',
+    'hpt_pulselaser_fixed_medium':               'E',
+    'hpt_pulselaser_fixed_large':                'D',
+    'hpt_pulselaser_fixed_huge':                 'A',
+    'hpt_pulselaser_gimbal_small':               'G',
+    'hpt_pulselaser_gimbal_medium':              'F',
+    'hpt_pulselaser_gimbal_large':               'E',
+    'hpt_pulselaser_gimbal_huge':                'A',
+    'hpt_pulselaser_turret_small':               'G',
+    'hpt_pulselaser_turret_medium':              'F',
+    'hpt_pulselaser_turret_large':               'F',
+    'hpt_pulselaserburst_fixed_small':           'F',
+    'hpt_pulselaserburst_fixed_medium':          'E',
+    'hpt_pulselaserburst_fixed_large':           'D',
+    'hpt_pulselaserburst_fixed_huge':            'E',
+    'hpt_pulselaserburst_gimbal_small':          'G',
+    'hpt_pulselaserburst_gimbal_medium':         'F',
+    'hpt_pulselaserburst_gimbal_large':          'E',
+    'hpt_pulselaserburst_gimbal_huge':           'E',
+    'hpt_pulselaserburst_turret_small':          'G',
+    'hpt_pulselaserburst_turret_medium':         'F',
+    'hpt_pulselaserburst_turret_large':          'E',
+    'hpt_railgun_fixed_small':                   'D',
+    'hpt_railgun_fixed_medium':                  'B',
+    'hpt_slugshot_fixed_small':                  'E',
+    'hpt_slugshot_fixed_medium':                 'A',
+    'hpt_slugshot_fixed_large':                  'C',
+    'hpt_slugshot_gimbal_small':                 'E',
+    'hpt_slugshot_gimbal_medium':                'D',
+    'hpt_slugshot_gimbal_large':                 'C',
+    'hpt_slugshot_turret_small':                 'E',
+    'hpt_slugshot_turret_medium':                'D',
+    'hpt_slugshot_turret_large':                 'C',
+}
+
+# Old standard weapon variants
+outfitting_weaponoldvariant_map = {
+    'f':    'Focussed',
+    'hi':   'High Impact',
+    'lh':   'Low Heat',
+    'oc':   'Overcharged',
+    'ss':   'Scatter Spray',
+}
+
+outfitting_countermeasure_map = {
+    'antiunknownshutdown':        ('Shutdown Field Neutraliser', 'F'),
+    'chafflauncher':              ('Chaff Launcher', 'I'),
+    'electroniccountermeasure':   ('Electronic Countermeasure', 'F'),
+    'heatsinklauncher':           ('Heat Sink Launcher', 'I'),
+    'plasmapointdefence':         ('Point Defence', 'I'),
+    'xenoscanner':                ('Xeno Scanner', 'E'),
+}
+
+outfitting_utility_map = {
+    'cargoscanner':               'Cargo Scanner',
+    'cloudscanner':               'Frame Shift Wake Scanner',
+    'crimescanner':               'Kill Warrant Scanner',
+    'mrascanner':                 'Pulse Wave Analyser',
+    'shieldbooster':              'Shield Booster',
+}
+
+outfitting_cabin_map = {
+    '0': 'Prisoner Cells',
+    '1': 'Economy Class Passenger Cabin',
+    '2': 'Business Class Passenger Cabin',
+    '3': 'First Class Passenger Cabin',
+    '4': 'Luxury Class Passenger Cabin',
+    '5': 'Passenger Cabin',  # not seen
+}
+
+outfitting_rating_map = {
+    '1': 'E',
+    '2': 'D',
+    '3': 'C',
+    '4': 'B',
+    '5': 'A',
+}
+
+# Ratings are weird for the following
+
+outfitting_corrosion_rating_map = {
+    '1': 'E',
+    '2': 'F',
+}
+
+outfitting_planet_rating_map = {
+    '1': 'H',
+    '2': 'G',
+}
+
+outfitting_fighter_rating_map = {
+    '1': 'D',
+}
+
+outfitting_misc_internal_map = {
+    ('detailedsurfacescanner',      'tiny'):          ('Detailed Surface Scanner',       'I'),
+    ('dockingcomputer',             'advanced'):      ('Advanced Docking Computer',      'E'),
+    ('dockingcomputer',             'standard'):      ('Standard Docking Computer',      'E'),
+    'planetapproachsuite':                            ('Planetary Approach Suite',       'I'),
+    ('stellarbodydiscoveryscanner', 'standard'):      ('Basic Discovery Scanner',        'E'),
+    ('stellarbodydiscoveryscanner', 'intermediate'):  ('Intermediate Discovery Scanner', 'D'),
+    ('stellarbodydiscoveryscanner', 'advanced'):      ('Advanced Discovery Scanner',     'C'),
+    'supercruiseassist':                              ('Supercruise Assist',             'E'),
+}
+
+outfitting_standard_map = {
+    # 'armour':                     handled separately
+    'engine':                       'Thrusters',
+    ('engine', 'fast'):             'Enhanced Performance Thrusters',
+    'fueltank':                     'Fuel Tank',
+    'guardianpowerdistributor':     'Guardian Hybrid Power Distributor',
+    'guardianpowerplant':           'Guardian Hybrid Power Plant',
+    'hyperdrive':                   'Frame Shift Drive',
+    'lifesupport':                  'Life Support',
+    # 'planetapproachsuite':        handled separately
+    'powerdistributor':             'Power Distributor',
+    'powerplant':                   'Power Plant',
+    'sensors':                      'Sensors',
+}
+
+outfitting_internal_map = {
+    'buggybay':                     'Planetary Vehicle Hangar',
+    'cargorack':                    'Cargo Rack',
+    'collection':                   'Collector Limpet Controller',
+    'corrosionproofcargorack':      'Corrosion Resistant Cargo Rack',
+    'decontamination':              'Decontamination Limpet Controller',
+    'fighterbay':                   'Fighter Hangar',
+    'fsdinterdictor':               'Frame Shift Drive Interdictor',
+    'fuelscoop':                    'Fuel Scoop',
+    'fueltransfer':                 'Fuel Transfer Limpet Controller',
+    'guardianfsdbooster':           'Guardian FSD Booster',
+    'guardianhullreinforcement':    'Guardian Hull Reinforcement',
+    'guardianmodulereinforcement':  'Guardian Module Reinforcement',
+    'guardianshieldreinforcement':  'Guardian Shield Reinforcement',
+    'hullreinforcement':            'Hull Reinforcement Package',
+    'metaalloyhullreinforcement':   'Meta Alloy Hull Reinforcement',
+    'modulereinforcement':          'Module Reinforcement Package',
+    'passengercabin':               'Passenger Cabin',
+    'prospector':                   'Prospector Limpet Controller',
+    'refinery':                     'Refinery',
+    'recon':                        'Recon Limpet Controller',
+    'repair':                       'Repair Limpet Controller',
+    'repairer':                     'Auto Field-Maintenance Unit',
+    'resourcesiphon':               'Hatch Breaker Limpet Controller',
+    'shieldcellbank':               'Shield Cell Bank',
+    'shieldgenerator':              'Shield Generator',
+    ('shieldgenerator', 'fast'):    'Bi-Weave Shield Generator',
+    ('shieldgenerator', 'strong'):  'Prismatic Shield Generator',
+    'unkvesselresearch':            'Research Limpet Controller',
+}
diff --git a/outfitting.py b/outfitting.py
index a132032d..714f5c06 100644
--- a/outfitting.py
+++ b/outfitting.py
@@ -5,340 +5,28 @@ import time
 
 import util_ships
 from config import config
-
-
-# Map API module names to in-game names
-
-armour_map = OrderedDict([
-    ('grade1',   'Lightweight Alloy'),
-    ('grade2',   'Reinforced Alloy'),
-    ('grade3',   'Military Grade Composite'),
-    ('mirrored', 'Mirrored Surface Composite'),
-    ('reactive', 'Reactive Surface Composite'),
-])
-
-weapon_map = {
-    'advancedtorppylon'              : 'Torpedo Pylon',
-    'atdumbfiremissile'              : 'AX Missile Rack',
-    'atmulticannon'                  : 'AX Multi-Cannon',
-    'basicmissilerack'               : 'Seeker Missile Rack',
-    'beamlaser'                      : 'Beam Laser',
-    ('beamlaser','heat')             : 'Retributor Beam Laser',
-    'cannon'                         : 'Cannon',
-    'causticmissile'                 : 'Enzyme Missile Rack',
-    'drunkmissilerack'               : 'Pack-Hound Missile Rack',
-    'dumbfiremissilerack'            : 'Missile Rack',
-    ('dumbfiremissilerack', 'advanced') : 'Advanced Missile Rack',
-    ('dumbfiremissilerack', 'lasso') : 'Rocket Propelled FSD Disruptor',
-    'flakmortar'                     : 'Remote Release Flak Launcher',
-    'flechettelauncher'              : 'Remote Release Flechette Launcher',
-    'guardian_gausscannon'           : 'Guardian Gauss Cannon',
-    'guardian_plasmalauncher'        : 'Guardian Plasma Charger',
-    'guardian_shardcannon'           : 'Guardian Shard Cannon',
-    'minelauncher'                   : 'Mine Launcher',
-    ('minelauncher','impulse')       : 'Shock Mine Launcher',
-    'mining_abrblstr'                : 'Abrasion Blaster',
-    'mining_seismchrgwarhd'          : 'Seismic Charge Launcher',
-    'mining_subsurfdispmisle'        : 'Sub-Surface Displacement Missile',
-    'mininglaser'                    : 'Mining Laser',
-    ('mininglaser','advanced')       : 'Mining Lance Beam Laser',
-    'multicannon'                    : 'Multi-Cannon',
-    ('multicannon','advanced')       : 'Advanced Multi-Cannon',
-    ('multicannon','strong')         : 'Enforcer Cannon',
-    'plasmaaccelerator'              : 'Plasma Accelerator',
-    ('plasmaaccelerator','advanced') : 'Advanced Plasma Accelerator',
-    'plasmashockcannon'              : 'Shock Cannon',
-    'pulselaser'                     : 'Pulse Laser',
-    ('pulselaser','disruptor')       : 'Pulse Disruptor Laser',
-    'pulselaserburst'                : 'Burst Laser',
-    ('pulselaserburst','scatter')    : 'Cytoscrambler Burst Laser',
-    'railgun'                        : 'Rail Gun',
-    ('railgun','burst')              : 'Imperial Hammer Rail Gun',
-    'slugshot'                       : 'Fragment Cannon',
-    ('slugshot','range')             : 'Pacifier Frag-Cannon',
-}
-
-missiletype_map = {
-    'advancedtorppylon'   : 'Seeker',
-    'atdumbfiremissile'   : 'Dumbfire',
-    'basicmissilerack'    : 'Seeker',
-    'causticmissile'      : 'Dumbfire',
-    'drunkmissilerack'    : 'Swarm',
-    'dumbfiremissilerack' : 'Dumbfire',
-    'mining_subsurfdispmisle' : 'Seeker',
-    'mining_seismchrgwarhd'   : 'Seeker',
-}
-
-weaponmount_map = {
-    'fixed'  : 'Fixed',
-    'gimbal' : 'Gimballed',
-    'turret' : 'Turreted',
-}
-
-weaponclass_map = {
-    'tiny'   : '0',
-    'small'  : '1',
-    'smallfree' : '1',
-    'medium' : '2',
-    'large'  : '3',
-    'huge'   : '4',
-}
-
-# There's no discernable pattern for weapon ratings, so here's a lookup table
-weaponrating_map = {
-    'hpt_advancedtorppylon_fixed_small' : 'I',
-    'hpt_advancedtorppylon_fixed_medium': 'I',
-    'hpt_advancedtorppylon_fixed_large' : 'I',
-    'hpt_atdumbfiremissile_fixed_medium': 'B',
-    'hpt_atdumbfiremissile_fixed_large' : 'A',
-    'hpt_atdumbfiremissile_turret_medium': 'B',
-    'hpt_atdumbfiremissile_turret_large' : 'A',
-    'hpt_atmulticannon_fixed_medium'    : 'E',
-    'hpt_atmulticannon_fixed_large'     : 'C',
-    'hpt_atmulticannon_turret_medium'   : 'F',
-    'hpt_atmulticannon_turret_large'    : 'E',
-    'hpt_basicmissilerack_fixed_small'  : 'B',
-    'hpt_basicmissilerack_fixed_medium' : 'B',
-    'hpt_basicmissilerack_fixed_large'  : 'A',
-    'hpt_beamlaser_fixed_small'         : 'E',
-    'hpt_beamlaser_fixed_medium'        : 'D',
-    'hpt_beamlaser_fixed_large': 'C',
-    'hpt_beamlaser_fixed_huge': 'A',
-    'hpt_beamlaser_gimbal_small': 'E',
-    'hpt_beamlaser_gimbal_medium': 'D',
-    'hpt_beamlaser_gimbal_large': 'C',
-    'hpt_beamlaser_gimbal_huge': 'A',
-    'hpt_beamlaser_turret_small': 'F',
-    'hpt_beamlaser_turret_medium': 'E',
-    'hpt_beamlaser_turret_large': 'D',
-    'hpt_cannon_fixed_small': 'D',
-    'hpt_cannon_fixed_medium': 'D',
-    'hpt_cannon_fixed_large': 'C',
-    'hpt_cannon_fixed_huge': 'B',
-    'hpt_cannon_gimbal_small': 'E',
-    'hpt_cannon_gimbal_medium': 'D',
-    'hpt_cannon_gimbal_large': 'C',
-    'hpt_cannon_gimbal_huge': 'B',
-    'hpt_cannon_turret_small': 'F',
-    'hpt_cannon_turret_medium': 'E',
-    'hpt_cannon_turret_large': 'D',
-    'hpt_causticmissile_fixed_medium': 'B',
-    'hpt_drunkmissilerack_fixed_medium': 'B',
-    'hpt_dumbfiremissilerack_fixed_small': 'B',
-    'hpt_dumbfiremissilerack_fixed_medium': 'B',
-    'hpt_dumbfiremissilerack_fixed_large': 'A',
-    'hpt_flakmortar_fixed_medium': 'B',
-    'hpt_flakmortar_turret_medium': 'B',
-    'hpt_flechettelauncher_fixed_medium': 'B',
-    'hpt_flechettelauncher_turret_medium': 'B',
-    'hpt_guardian_gausscannon_fixed_small': 'D',
-    'hpt_guardian_gausscannon_fixed_medium': 'B',
-    'hpt_guardian_plasmalauncher_fixed_small': 'D',
-    'hpt_guardian_plasmalauncher_fixed_medium': 'B',
-    'hpt_guardian_plasmalauncher_fixed_large': 'C',
-    'hpt_guardian_plasmalauncher_turret_small': 'F',
-    'hpt_guardian_plasmalauncher_turret_medium': 'E',
-    'hpt_guardian_plasmalauncher_turret_large': 'D',
-    'hpt_guardian_shardcannon_fixed_small': 'D',
-    'hpt_guardian_shardcannon_fixed_medium': 'A',
-    'hpt_guardian_shardcannon_fixed_large': 'C',
-    'hpt_guardian_shardcannon_turret_small': 'F',
-    'hpt_guardian_shardcannon_turret_medium': 'D',
-    'hpt_guardian_shardcannon_turret_large': 'D',
-    'hpt_minelauncher_fixed_small': 'I',
-    'hpt_minelauncher_fixed_medium': 'I',
-    'hpt_mining_abrblstr_fixed_small' : 'D',
-    'hpt_mining_abrblstr_turret_small' : 'D',
-    'hpt_mining_seismchrgwarhd_fixed_medium' : 'B',
-    'hpt_mining_seismchrgwarhd_turret_medium' : 'B',
-    'hpt_mining_subsurfdispmisle_fixed_small' : 'B',
-    'hpt_mining_subsurfdispmisle_fixed_medium' : 'B',
-    'hpt_mining_subsurfdispmisle_turret_small' : 'B',
-    'hpt_mining_subsurfdispmisle_turret_medium' : 'B',
-    'hpt_mininglaser_fixed_small': 'D',
-    'hpt_mininglaser_fixed_medium': 'D',
-    'hpt_mininglaser_turret_small': 'D',
-    'hpt_mininglaser_turret_medium': 'D',
-    'hpt_multicannon_fixed_small': 'F',
-    'hpt_multicannon_fixed_medium': 'E',
-    'hpt_multicannon_fixed_large': 'C',
-    'hpt_multicannon_fixed_huge': 'A',
-    'hpt_multicannon_gimbal_small': 'G',
-    'hpt_multicannon_gimbal_medium': 'F',
-    'hpt_multicannon_gimbal_large': 'C',
-    'hpt_multicannon_gimbal_huge': 'A',
-    'hpt_multicannon_turret_small': 'G',
-    'hpt_multicannon_turret_medium': 'F',
-    'hpt_multicannon_turret_large': 'E',
-    'hpt_plasmaaccelerator_fixed_medium': 'C',
-    'hpt_plasmaaccelerator_fixed_large': 'B',
-    'hpt_plasmaaccelerator_fixed_huge': 'A',
-    'hpt_plasmashockcannon_fixed_small': 'D',
-    'hpt_plasmashockcannon_fixed_medium': 'D',
-    'hpt_plasmashockcannon_fixed_large': 'C',
-    'hpt_plasmashockcannon_gimbal_small': 'E',
-    'hpt_plasmashockcannon_gimbal_medium': 'D',
-    'hpt_plasmashockcannon_gimbal_large': 'C',
-    'hpt_plasmashockcannon_turret_small': 'F',
-    'hpt_plasmashockcannon_turret_medium': 'E',
-    'hpt_plasmashockcannon_turret_large': 'D',
-    'hpt_pulselaser_fixed_small': 'F',
-    'hpt_pulselaser_fixed_smallfree': 'F',
-    'hpt_pulselaser_fixed_medium': 'E',
-    'hpt_pulselaser_fixed_large': 'D',
-    'hpt_pulselaser_fixed_huge': 'A',
-    'hpt_pulselaser_gimbal_small': 'G',
-    'hpt_pulselaser_gimbal_medium': 'F',
-    'hpt_pulselaser_gimbal_large': 'E',
-    'hpt_pulselaser_gimbal_huge': 'A',
-    'hpt_pulselaser_turret_small': 'G',
-    'hpt_pulselaser_turret_medium': 'F',
-    'hpt_pulselaser_turret_large': 'F',
-    'hpt_pulselaserburst_fixed_small': 'F',
-    'hpt_pulselaserburst_fixed_medium': 'E',
-    'hpt_pulselaserburst_fixed_large': 'D',
-    'hpt_pulselaserburst_fixed_huge': 'E',
-    'hpt_pulselaserburst_gimbal_small': 'G',
-    'hpt_pulselaserburst_gimbal_medium': 'F',
-    'hpt_pulselaserburst_gimbal_large': 'E',
-    'hpt_pulselaserburst_gimbal_huge': 'E',
-    'hpt_pulselaserburst_turret_small': 'G',
-    'hpt_pulselaserburst_turret_medium': 'F',
-    'hpt_pulselaserburst_turret_large': 'E',
-    'hpt_railgun_fixed_small': 'D',
-    'hpt_railgun_fixed_medium': 'B',
-    'hpt_slugshot_fixed_small': 'E',
-    'hpt_slugshot_fixed_medium': 'A',
-    'hpt_slugshot_fixed_large': 'C',
-    'hpt_slugshot_gimbal_small': 'E',
-    'hpt_slugshot_gimbal_medium': 'D',
-    'hpt_slugshot_gimbal_large': 'C',
-    'hpt_slugshot_turret_small': 'E',
-    'hpt_slugshot_turret_medium': 'D',
-    'hpt_slugshot_turret_large': 'C',
-}
-
-# Old standard weapon variants
-weaponoldvariant_map = {
-    'f'  : 'Focussed',
-    'hi' : 'High Impact',
-    'lh' : 'Low Heat',
-    'oc' : 'Overcharged',
-    'ss' : 'Scatter Spray',
-}
-
-countermeasure_map = {
-    'antiunknownshutdown'      : ('Shutdown Field Neutraliser', 'F'),
-    'chafflauncher'            : ('Chaff Launcher', 'I'),
-    'electroniccountermeasure' : ('Electronic Countermeasure', 'F'),
-    'heatsinklauncher'         : ('Heat Sink Launcher', 'I'),
-    'plasmapointdefence'       : ('Point Defence', 'I'),
-    'xenoscanner'              : ('Xeno Scanner', 'E'),
-}
-
-utility_map = {
-    'cargoscanner'             : 'Cargo Scanner',
-    'cloudscanner'             : 'Frame Shift Wake Scanner',
-    'crimescanner'             : 'Kill Warrant Scanner',
-    'mrascanner'               : 'Pulse Wave Analyser',
-    'shieldbooster'            : 'Shield Booster',
-}
-
-cabin_map = {
-    '0': 'Prisoner Cells',
-    '1': 'Economy Class Passenger Cabin',
-    '2': 'Business Class Passenger Cabin',
-    '3': 'First Class Passenger Cabin',
-    '4': 'Luxury Class Passenger Cabin',
-    '5': 'Passenger Cabin',	# not seen
-}
-
-rating_map = {
-    '1': 'E',
-    '2': 'D',
-    '3': 'C',
-    '4': 'B',
-    '5': 'A',
-}
-
-# Ratings are weird for the following
-
-corrosion_rating_map = {
-    '1': 'E',
-    '2': 'F',
-}
-
-planet_rating_map = {
-    '1': 'H',
-    '2': 'G',
-}
-
-fighter_rating_map = {
-    '1': 'D',
-}
-
-misc_internal_map = {
-    ('detailedsurfacescanner',      'tiny')         : ('Detailed Surface Scanner', 'I'),
-    ('dockingcomputer',             'advanced')     : ('Advanced Docking Computer', 'E'),
-    ('dockingcomputer',             'standard')     : ('Standard Docking Computer', 'E'),
-    'planetapproachsuite'                           : ('Planetary Approach Suite', 'I'),
-    ('stellarbodydiscoveryscanner', 'standard')     : ('Basic Discovery Scanner', 'E'),
-    ('stellarbodydiscoveryscanner', 'intermediate') : ('Intermediate Discovery Scanner', 'D'),
-    ('stellarbodydiscoveryscanner', 'advanced')     : ('Advanced Discovery Scanner', 'C'),
-    'supercruiseassist'                             : ('Supercruise Assist', 'E'),
-}
-
-standard_map = {
-    # 'armour'                   : handled separately
-    'engine'                     : 'Thrusters',
-    ('engine','fast')            : 'Enhanced Performance Thrusters',
-    'fueltank'                   : 'Fuel Tank',
-    'guardianpowerdistributor'   : 'Guardian Hybrid Power Distributor',
-    'guardianpowerplant'         : 'Guardian Hybrid Power Plant',
-    'hyperdrive'                 : 'Frame Shift Drive',
-    'lifesupport'                : 'Life Support',
-    # 'planetapproachsuite'      : handled separately
-    'powerdistributor'           : 'Power Distributor',
-    'powerplant'                 : 'Power Plant',
-    'sensors'                    : 'Sensors',
-}
-
-internal_map = {
-    'buggybay'                   : 'Planetary Vehicle Hangar',
-    'cargorack'                  : 'Cargo Rack',
-    'collection'                 : 'Collector Limpet Controller',
-    'corrosionproofcargorack'    : 'Corrosion Resistant Cargo Rack',
-    'decontamination'            : 'Decontamination Limpet Controller',
-    'fighterbay'                 : 'Fighter Hangar',
-    'fsdinterdictor'             : 'Frame Shift Drive Interdictor',
-    'fuelscoop'                  : 'Fuel Scoop',
-    'fueltransfer'               : 'Fuel Transfer Limpet Controller',
-    'guardianfsdbooster'         : 'Guardian FSD Booster',
-    'guardianhullreinforcement'  : 'Guardian Hull Reinforcement',
-    'guardianmodulereinforcement': 'Guardian Module Reinforcement',
-    'guardianshieldreinforcement': 'Guardian Shield Reinforcement',
-    'hullreinforcement'          : 'Hull Reinforcement Package',
-    'metaalloyhullreinforcement' : 'Meta Alloy Hull Reinforcement',
-    'modulereinforcement'        : 'Module Reinforcement Package',
-    'passengercabin'             : 'Passenger Cabin',
-    'prospector'                 : 'Prospector Limpet Controller',
-    'refinery'                   : 'Refinery',
-    'recon'                      : 'Recon Limpet Controller',
-    'repair'                     : 'Repair Limpet Controller',
-    'repairer'                   : 'Auto Field-Maintenance Unit',
-    'resourcesiphon'             : 'Hatch Breaker Limpet Controller',
-    'shieldcellbank'             : 'Shield Cell Bank',
-    'shieldgenerator'            : 'Shield Generator',
-    ('shieldgenerator','fast')   : 'Bi-Weave Shield Generator',
-    ('shieldgenerator','strong') : 'Prismatic Shield Generator',
-    'unkvesselresearch'          : 'Research Limpet Controller',
-}
+from data import outfitting_armour_map as armour_map
+from data import outfitting_weapon_map as weapon_map
+from data import outfitting_missiletype_map as missiletype_map
+from data import outfitting_weaponmount_map as weaponmount_map
+from data import outfitting_weaponclass_map as weaponclass_map
+from data import outfitting_weaponrating_map as weaponrating_map
+from data import outfitting_weaponoldvariant_map as weaponoldvariant_map
+from data import outfitting_countermeasure_map as countermeasure_map
+from data import outfitting_utility_map as utility_map
+from data import outfitting_cabin_map as cabin_map
+from data import outfitting_rating_map as rating_map
+from data import outfitting_corrosion_rating_map as corrosion_rating_map
+from data import outfitting_planet_rating_map as planet_rating_map
+from data import outfitting_fighter_rating_map as fighter_rating_map
+from data import outfitting_misc_internal_map as misc_internal_map
+from data import outfitting_standard_map as standard_map
+from data import outfitting_internal_map as internal_map
 
 
 # Module mass, FSD data etc
 moduledata = OrderedDict()
 
-
 # Given a module description from the Companion API returns a description of the module in the form of a
 # dict { category, name, [mount], [guidance], [ship], rating, class } using the same terms found in the
 # English langauge game. For fitted modules, dict also includes { enabled, priority }.