diff --git a/Localization/EN/Font.ttf b/Localization/EN/Font.ttf
new file mode 100644
index 0000000..d9371a1
Binary files /dev/null and b/Localization/EN/Font.ttf differ
diff --git a/Localization/EN/TranslationTable.cfg b/Localization/EN/TranslationTable.cfg
new file mode 100644
index 0000000..285f4f0
--- /dev/null
+++ b/Localization/EN/TranslationTable.cfg
@@ -0,0 +1,510 @@
+--User Interface--------------------------------
+INTRO_Title:You look new here...
+INTRO_Head:Welcome to Mechlab Maid!
+INTRO_Call:For export tagging:`nWhat's your Callsign?
+INTRO_Default:MW5Mercs
+INTRO_Context:Allowed only Letter, Numbers, Underscore(_) and Dashes(-) allowed.
+INTRO_Confirm:Callsign will be "$name", Accept?
+INTRO_WhoAmI:WhoAmI?
+MAIN_Title:MW5Mercs Mechlab Maid
+MAIN_Status:$Num variants loaded and ready for manipulation.
+MAIN_ID:ID
+BTN_Import:Import Variant
+BTN_Export:Export Variant
+BTN_Delete:Delete Variant
+BTN_OK:OK
+BTN_YES:Yes
+BTN_NO:No
+BTN_CANCEL:Cancel
+BTN_CONTINUE:Continue
+HDR_Base:Base
+HDR_Variant:Variant Name
+MENU_Folder:Folder
+MENU_Options:Options
+MENU_About:About
+MENU_FExport:Exported Loadouts
+MENU_FSaved:Saved IALoadouts
+MENU_OID:Change ID
+MENU_OExport:Export All
+MENU_OReload:Reload List
+MENU_SaveAll:Save Changes
+ABOUT_Title:About
+ABOUT_Intro:MW5Mercs Mechlab Maid (32-bit) v1.0d
+ABOUT_Written:Written by
+ABOUT_Github:GitHub Page
+ABOUT_Discord:Contact me on discord
+ABOUT_Twitch:Find me on Twitch
+INFO_Chassis:Chassis
+INFO_Variant:Variant
+INFO_Source:Source
+INFO_Internal:Internal
+INFO_Engine:Engine
+INFO_JumpJets:JumpJets
+INFO_Heatsinks:Heatsinks
+INFO_ArmorType:ArmorType
+INFO_ArmourTTL:Install
+INFO_GYRO:Gyro
+INFO_Cockpit:Cockpit
+INFO_Targeting:Tarting
+INFO_Sensors:Sensors
+INFO_ArmorDiv:Armor Split
+INFO_Ordnance:Ordnance
+INFO_Munitions:Munitions
+INFO_Traits:Traits
+--STRUCTURE-------------------------------------
+ENDO:Endo-Steel
+ENDO_L:Endo-Steel
+ENDO_M:Endo-Steel
+ENDO_H:Endo-Steel
+PENDO:Prototype Endo-Steel
+PENDO_L:Prototype Endo-Steel
+PENDO_M:Prototype Endo-Steel
+PENDO_H:Prototype Endo-Steel
+ENDO_PROTOTYPE:Prototype Endo-Steel
+C79ENDO:Clan Endo-Steel
+LICH_HYBRID_STRUCTURE:Lich Hybrid
+INTERNAL_REPAIR_SYSTEMS:Internal Repair Systems
+YACM_STRUCTURE_CLAN_FIXED:Clan Standard
+YACM_ENDOSTEEL_CLAN_FIXED:Clan Endo-Steel
+RSTRUCT:Reinforced
+ENDO_TSM:Endo-Composite + TSM
+ENDO_COMPOSITE_STRUCTURE:Endo-Composite
+STRUCTURE_ENDO_BULKY_QS:Quikscell Bulky Endo-Steel
+ENDO_QS:Quikscell Endo-Steel
+COMPOSITE_STRUCTURE:Composite
+STRUCTURE_QS:Quikscell Standard
+--ARMOUR----------------------------------------
+Ferro:Ferro-Fibrous
+Ferro_L:Ferro-Fibrous
+Ferro_M:Ferro-Fibrous
+Ferro_H:Ferro-Fibrous
+LFerro:Light Ferro-Fibrous
+LFerro_L:Light Ferro-Fibrous
+LFerro_M:Light Ferro-Fibrous
+LFerro_H:Light Ferro-Fibrous
+PFerro:Prototype Ferro-Fibrous
+PFerro_L:Prototype Ferro-Fibrous
+PFerro_M:Prototype Ferro-Fibrous
+PFerro_H:Prototype Ferro-Fibrous
+Ferro_PROTOTYPE:Prototype Ferro-Fibrous
+CFERRO:Clan Ferro-Fibrous
+ARMOR_PRIMITIVE:Primitive
+HEAVY_FERRO:Heavy Ferro-Fibrous
+ARMOR_FERRO_QS:Quikscell Ferro-Fibrous
+ARMOR_SPALL_LINER:Spall Liner
+ARMOR_BALLISTIC_REINFORCED:Ballistic Reinforced
+ARMOR_DURALAST_QS:Quikscell Duralast
+ARMOR_GLADIATOR:Gladiator
+YACM_ARMOR_STANDARD_CLAN_FIXED:Clan Standard
+YACM_ARMOR_FERRO_CLAN_FIXED:Clan Ferro-Fibrous
+BLACK_CARAPACE:Black Carapace
+FERRO_LAMELLOR_CLAN:Ferro-Lamellor
+ARMOR_STEALTH:Stealth
+ARMOR_GLAZED:Reflective
+ARMOR_REACTIVE:Reactive
+ARMOR_NSS:Null Signature System
+ARMOR_HEAT_DISS:Heat-Dissipating
+HARDENED_FERRO:Hardened Ferro-Fibrous
+HARDENED:Hardened
+FERRO_CARBIDE_C:Clan Ferro-Carbide
+--GYRO------------------------------------------
+GYRO1:Mobility
+GYRO2:Agility
+GYRO5:Flexibility
+GYRO_COMPACT:Compact
+GYRO_DEFENSE:Defensive
+GYRO_MELEE:Melee MkI
+GYRO_MELEE_MK2:Melee MkII
+GYRO_MELEE_MK3:Melee MkIII
+GYRO_DREADNOUGHT:Dreadnought
+OMNI_GYRO_XXL:Omni Super-Light
+YACM_OMNI_GYRO_FIXED:Omni
+GYRO_HEAVY_DUTY:Heavy-Duty
+GYRO_STABILITY:Stability
+GYRO_UL:Ultra-Light
+GYRO_UL_STABILIZED:Stable Ultra-Light
+GYRO_XXL:Super-Light
+GYRO_XL:Extra-Light
+--ENGINE----------------------------------------
+ENGINE_XL:Extra-Light
+ENGINE_COMPACT:Compact
+ENGINE_PRIMITIVE:Primitive
+ENGINE_LIGHT:Light
+ENGINE_IC_XL_QS:Quikscell Combustion
+ENGINE_XL_QS:Quikscell Extra-Light
+ENGINE_XXL:Super-Light
+ENGINE_XL_CLAN:Clan Extra-Light
+ENGINE_XXL_CLAN:Clan Super-Light
+SOLARIS_XXL_ENGINE_FIXED:Solaris Super-Light
+ENGINE_LIGHT_FIXED:Tuned Light
+YACM_ENGINE_XL_CLAN_FIXED:Clan Extra-light
+YACM_ENGINE_CORE_175_FIXED:175
+YACM_ENGINE_CORE_210_FIXED:210
+YACM_ENGINE_CORE_250_FIXED:250
+YACM_ENGINE_CORE_300_FIXED:300
+YACM_ENGINE_CORE_360_FIXED:360
+YACM_ENGINE_CORE_385_FIXED:385
+ENGINE_CORE_300_FIXED:300
+--COOLING---------------------------------------
+Cooling_diss100:Double
+COMPACT_HS_KIT:Compact
+CLAN_DHS_KIT:Clan Double
+YACM_CLAN_DHS_KIT_FIXED:Clan Double
+RADICAL_PROTO_DHS_KIT:Radical Prototype Double
+RADICAL_DHS_KIT:Radical Double
+PROTO_DHS_KIT:Prototype Double
+DHS_KIT_QS:Quikscell Double
+--SENSORS---------------------------------------
+SENSORS1:Improved
+SENSORS2:Powered
+SENSORS3:Sniper
+SENSORS_PRIMITIVE:Primitive
+SENSORS_SEARCHLIGHT:Search Light
+SENSORS_ARMORED:Armored
+SENSORS_PROBE:Basic Probe
+SENSORS_TC_QS:Quikscell Sensors
+SENSORS_RISC_FIXED:RISC
+--TARGETING-------------------------------------
+TCOMP3PREDICTIVE:Predictive
+TCOMP_MODULAR_BC:Modular
+TCOMP_HEAT:Heat Management
+TC_RISC_FIXED:RISC
+TC_DEFIANCE:Defiance
+TCOMP_NOVA:Nova
+TCOMP_HEAT:Heat
+TCOMP:Energy
+TCOMP1:Ballistic
+TCOMP_PPC_ADVANCED:Advanced PPC
+TCOMP_MISSLE_ADVANCED:Advanced Missile
+TCOMP_TRACE_ADVANCED:Advanced Energy
+TCOMP_BALLISTIC_ADVANCED:Advanced Ballistic
+TCOMP2:Missile
+--COCKPIT---------------------------------------
+COCKPIT_PRIMITIVE:Primitive
+COCKPIT_HOTSEAT:Hotseat
+COCKPIT_SMALL:Small
+COMMAND_CONSOLE:Command Console
+COCKPIT_RISC_FIXED:RISC
+COCKPIT_SMALL_ADVANCED:Small Advanced
+COCKPIT_SMALL_ADVANCED_FIXED:Small Advanced
+SLIC_SUITE:SLIC
+COCKPIT_ARMORED:Armored
+--AMMUNITION------------------------------------
+SRM_Artemis_AmmoEquipment:SRM Ammo 1.00T
+SRM_Artemis_Half_AmmoEquipment:SRM Ammo 0.50T
+SRM_Artemis_Quart_AmmoEquipment:SRM Ammo 0.25T
+SRM_AmmoEquipment:SRM Ammo 1.00T
+SRM_Half_AmmoEquipment:SRM Ammo 0.50T
+SRM_Quart_AmmoEquipment:SRM Ammo 0.25T
+LRM_AmmoEquipment:LRM Ammo (1.00T)
+LRM_Half_AmmoEquipment:LRM Ammo (0.50T)
+LRM_Quart_AmmoEquipment:LRM Ammo (0.25T)
+LRM_Artemis_AmmoEquipment:LRM Artemis Ammo (1.00T)
+LRM_Artemis_Half_AmmoEquipment:LRM Artemis Ammo (0.50T)
+LRM_Artemis_Quart_AmmoEquipment:LRM Artemis Ammo (0.25T)
+AMS_AmmoEquipment:AMS Ammo 1.00T
+AMS_Halft_AmmoEquipment:AMS Ammo (0.50T)
+AMS_Quart_AmmoEquipment:AMS Ammo (0.25T)
+SmallChemLaser_AmmoEquipment:Small Chemical Laser Ammo 1.00T
+MediumChemLaser_AmmoEquipment:Medium Chemical Laser Ammo 1.00T
+LargeChemLaser_AmmoEquipment:Large Chemical Laser Ammo 1.00T
+SmallChemLaser_Half_AmmoEquipment:Small Chemical Laser Ammo 0.50T
+MediumChemLaser_Half_AmmoEquipment:Medium Chemical Laser Ammo 0.50T
+LargeChemLaser_Half_AmmoEquipment:Large Chemical Laser Ammo 0.50T
+SmallChemLaser_Quart_AmmoEquipment:Small Chemical Laser Ammo 0.25T
+MediumChemLaser_Quart_AmmoEquipment:Medium Chemical Laser Ammo 0.25T
+LargeChemLaser_Quart_AmmoEquipment:Large Chemical Laser Ammo 0.25T
+MachineGun_Standard_AmmoEquipment:Machine Gun Ammo 1.00T
+MachineGun_Standard_Half_AmmoEquipment:Machine Gun Ammo 0.50T
+MachineGun_Standard_Quart_AmmoEquipment:Machine Gun Ammo 0.25T
+CMachineGun79_Heavy_AmmoEquipment:[C] Heavy MachineGun Ammo (1.00T)
+LightRifle_AmmoEquipment_Double:Light Rifle Ammo (2.00T)
+LightRifle_AmmoEquipment:Light Rifle Ammo (1.00T)
+LightRifle_Half_AmmoEquipment:Light Rifle Ammo (0.50T)
+LightRifle_Quart_AmmoEquipment:Light Rifle Ammo (0.25T)
+MediumRifle_AmmoEquipment_Double:Medium Rifle Ammo (2.00T)
+MediumRifle_AmmoEquipment:Medium Rifle Ammo (1.00T)
+MediumRifle_Half_AmmoEquipment:Medium Rifle Ammo (0.50T)
+MediumRifle_Quart_AmmoEquipment:Medium Rifle Ammo (0.25T)
+HeavyRifle_AmmoEquipment_Double:Heavy Rifle Ammo (2.00T)
+HeavyRifle_AmmoEquipment:Heavy Rifle Ammo (1.00T)
+HeavyRifle_Half_AmmoEquipment:Heavy Rifle Ammo (0.50T)
+HeavyRifle_Quart_AmmoEquipment:Heavy Rifle Ammo (0.25T)
+AC2_Standard_AmmoEquipment_Double:AutoCannon/2 Ammo (2.00T)
+AC5_Standard_AmmoEquipment_Double:AutoCannon/5 Ammo (2.00T)
+AC10_Standard_AmmoEquipment_Double:AutoCannon/10 Ammo (2.00T)
+AC20_Standard_AmmoEquipment_Double:AutoCannon/20 Ammo (2.00T)
+AC2_Standard_AmmoEquipment:AutoCannon/2 Ammo (1.00T)
+AC5_Standard_AmmoEquipment:AutoCannon/5 Ammo (1.00T)
+AC10_Standard_AmmoEquipment:AutoCannon/10 Ammo (1.00T)
+AC20_Standard_AmmoEquipment:AutoCannon/20 Ammo (1.00T)
+AC2_Standard_Half_AmmoEquipment:AutoCannon/2 Ammo (0.50T)
+AC5_Standard_Half_AmmoEquipment:AutoCannon/5 Ammo (0.50T)
+AC10_Standard_Half_AmmoEquipment:AutoCannon/10 Ammo (0.50T)
+AC20_Standard_Half_AmmoEquipment:AutoCannon/20 Ammo (0.50T)
+AC2_Standard_Quart_AmmoEquipment:AutoCannon/2 Ammo (0.25T)
+AC5_Standard_Quart_AmmoEquipment:AutoCannon/5 Ammo (0.25T)
+AC10_Standard_Quart_AmmoEquipment:AutoCannon/10 Ammo (0.25T)
+AC20_Standard_Quart_AmmoEquipment:AutoCannon/20 Ammo (0.25T)
+AC2_Ultra_AmmoEquipment_Double:AutoCannon/2 Ammo (2.00T)
+AC5_Ultra_AmmoEquipment_Double:AutoCannon/5 Ammo (2.00T)
+AC10_Ultra_AmmoEquipment_Double:AutoCannon/10 Ammo (2.00T)
+AC20_Ultra_AmmoEquipment_Double:AutoCannon/20 Ammo (2.00T)
+AC2_Ultra_AmmoEquipment:AutoCannon/2 Ammo (1.00T)
+AC5_Ultra_AmmoEquipment:AutoCannon/5 Ammo (1.00T)
+AC10_Ultra_AmmoEquipment:AutoCannon/10 Ammo (1.00T)
+AC20_Ultra_AmmoEquipment:AutoCannon/20 Ammo (1.00T)
+AC2_Ultra_Half_AmmoEquipment:AutoCannon/2 Ammo (0.50T)
+AC5_Ultra_Half_AmmoEquipment:AutoCannon/5 Ammo (0.50T)
+AC10_Ultra_Half_AmmoEquipment:AutoCannon/10 Ammo (0.50T)
+AC20_Ultra_Half_AmmoEquipment:AutoCannon/20 Ammo (0.50T)
+AC2_Ultra_Quart_AmmoEquipment:AutoCannon/2 Ammo (0.25T)
+AC5_Ultra_Quart_AmmoEquipment:AutoCannon/5 Ammo (0.25T)
+AC10_Ultra_Quart_AmmoEquipment:AutoCannon/10 Ammo (0.25T)
+AC20_Ultra_Quart_AmmoEquipment:AutoCannon/20 Ammo (0.25T)
+AC2_Light_79_AmmoEquipment:Light AutoCannon/2 Ammo (1.00T)
+AC5_Light_79_AmmoEquipment:Light AutoCannon/5 Ammo (1.00T)
+AC10_Light_79_AmmoEquipment:Light AutoCannon/10 Ammo (1.00T)
+AC20_Light_79_AmmoEquipment:Light AutoCannon/20 Ammo (1.00T)
+Gauss_Standard_AmmoEquipment:Gauss Ammo (1.00T)
+NARC_AmmoEquipment_Double:NARC Ammo (2.00T)
+NARC_AmmoEquipment:NARC Ammo (1.00T)
+NARC_Half_AmmoEquipment:NARC Ammo (0.50T)
+NARC_Quart_AmmoEquipment:NARC Ammo (0.25T)
+ArrowIV_AmmoEquipment79:Arrow IV Ammo (1.00T)
+--WEAPONS (ENERGY)------------------------------
+Flamer:Flamer
+C79Flamer:[C] Flamer
+ERFlamer79:ER Flamer
+C79ERFlamer:[C] ER Flamer
+SmallLaser:Small Laser
+MediumLaser:Medium Laser
+LargeLaser:Large Laser
+SmallPulseLaser:Small Pulse Laser
+MediumPulseLaser:Medium Pulse Laser
+LargePulseLaser:Large Pulse Laser
+SmallChemicalLaser:Small Chemical Laser
+MediumChemicalLaser:Medium Chemical Laser
+LargeChemicalLaser:Large Chemical Laser
+ERLargeLaser:ER Large Laser
+ERMediumLaser79:ER Medium Laser
+ERSmallLaser79:ER Small Laser
+C79ERLargeLaser:[C] ER Large Laser
+C79ERMediumLaser:[C] ER Medium Laser
+C79ERSmallLaser:[C] ER Small Laser
+LargeLaser_ShortBurst:SB Large laser
+MediumLaser_ShortBurst:SB Medium laser
+SmallLaser_ShortBurst:SB Small laser
+C79HeavyLargeLaser:[C] Heavy Large Laser
+C79HeavyMediumLaser:[C] Heavy Medium Laser
+C79HeavySmallLaser:[C] Heavy Small Laser
+RISCHyperLaser79:Hyper Laser
+PPC:PPC
+HPPC79:Heavy PPC
+LPPC79:Light PPC
+ERPPC:ER PPC
+--WEAPONS (BALLISTIC)---------------------------
+GaussRifle:Gauss Rifle
+Light79Autocannon2:Light AutoCannon/2
+Light79Autocannon5:Light AutoCannon/5
+Light79Autocannon10:Light AutoCannon/10
+Light79Autocannon20:Light AutoCannon/20
+Autocannon2:AutoCannon/2
+Autocannon5:AutoCannon/5
+Autocannon10:AutoCannon/10
+Autocannon20:AutoCannon/20
+Ultra79Autocannon2:Ultra AutoCannon/2
+UltraAutocannon5:Ultra AutoCannon/5
+Ultra79Autocannon10:Ultra AutoCannon/10
+Ultra79Autocannon20:Ultra AutoCannon/20
+C79Autocannon2:[C] AutoCannon/2
+C79Autocannon5:[C] AutoCannon/5
+C79Autocannon10:[C] AutoCannon/10
+C79Autocannon20:[C] AutoCannon/20
+Autocannon2_Burst:Burst-Fire AC/2
+Autocannon5_Burst:Burst-Fire AC/5
+Autocannon10_Burst:Burst-Fire AC/10
+Autocannon20_Burst:Burst-Fire AC/20
+LightRifle:Light Rifle
+MediumRifle:Medium Rifle
+HeavyRifle:Heavy Rifle
+MachineGun:Machine Gun
+MachineGunArray279:Machine Gun Array X2
+MachineGunArray479:Machine Gun Array X4
+--WEAPONS (MISSILE)-----------------------------
+SRM2:SRM 2
+SRM4:SRM 4
+SRM6:SRM 6
+SRM2_Artemis:SRM 2 + ART IV
+SRM4_Artemis:SRM 4 + ART IV
+SRM6_Artemis:SRM 6 + ART IV
+SRM2_inferno79:Inferno SRM 2
+SRM4_inferno79:Inferno SRM 4
+SRM6_inferno79:Inferno SRM 6
+SRM2_MagPulse:MagPulse SRM 2
+SRM4_MagPulse:MagPulse SRM 4
+SRM6_MagPulse:MagPulse SRM 6
+StreakSRM2_Stream:Streak SRM 2 Stream
+StreakSRM4_Stream:Streak SRM 4 Stream
+StreakSRM6_Stream:Streak SRM 6 Stream
+LRM5:LRM 5
+LRM10:LRM 10
+LRM15:LRM 15
+LRM20:LRM 20
+LRM5_Stream:LRM 5 Stream
+LRM10_Stream:LRM 10 Stream
+LRM15_Stream:LRM 15 Stream
+LRM20_Stream:LRM 20 Stream
+LRM5_Artemis:LRM 5 + ARTIV
+LRM10_Artemis:LRM 10 + ARTIV
+LRM15_Artemis:LRM 15 + ARTIV
+LRM20_Artemis:LRM 20 + ARTIV
+LRM5_Artemis_Stream:LRM 5 Stream + ARTIV
+LRM10_Artemis_Stream:LRM 10 Stream + ARTIV
+LRM15_Artemis_Stream:LRM 15 Stream + ARTIV
+LRM20_Artemis_Stream:LRM 20 Stream + ARTIV
+MML3_79:MML 3
+MML5_79:MML 5
+MML7_79:MML 7
+MML9_79:MML 7
+MRM10-79:MRM 10
+MRM20-79:MRM 20
+MRM30-79:MRM 30
+MRM40-79:MRM 40
+trueg_MML5_RISC:MML 5 RISC
+trueg_MML10_RISC:MML 10 RISC
+NarcBeacon:NARC
+ArrowIV_79:Arrow IV
+--WEAPONS (OTHER)-------------------------------
+AntiMissileSystem:AMS
+CLAntiMissileSystem79:[C] LAMS
+LAntiMissileSystem79:LAMS
+--MELEE-----------------------------------------
+MechHandLight_MeleeWeaponDataAsset:
+MechLowerArmLight_MeleeWeaponDataAsset:
+Knuckles_Light:Knuckles
+Knuckles_Medium:Knuckles
+Knuckles_Heavy:Knuckles
+Knuckles_Assault:Knuckles
+HammerFist_Light:Hammerfist
+HammerFist_Medium:Hammerfist
+HammerFist_Heavy:Hammerfist
+HammerFist_Assault:Hammerfist
+ArenaFist_Light:Arena Fist
+ArenaFist_Medium:Arena Fist
+ArenaFist_Heavy:Arena Fist
+ArenaFist_Assault:Arena Fist
+BattleAxe_Assault:Battle Axe
+Claymore_Assault:Claymore
+Katana_Assault:Katana
+Axe_Heavy:Heavy Axe
+Longsword_Heavy:LongSword
+TrenchBlade_Heavy:Trench Blade
+Claws_Medium:Claw
+Hatchet_Medium:Hatchet
+Mace_medium:Mace
+--MISCELLANEOUS---------------------------------
+YAML_VANILLA_UAVCOMPONENT:
+UAVDrone_79:UAV Drone
+UAVDroneAdv_79:Advanced UAV Drone
+--TRAITS----------------------------------------
+MechroleTrait_Ambusher:
+MechroleTrait_Scout:
+MechroleTrait_Striker:
+MechroleTrait_Skirmisher:
+MechroleTrait_Juggernaut:
+MechroleTrait_MissileBoat:
+MechroleTrait_Sniper:
+IncreasedAccelerationDeceleration_Trait1:+10% Accel/Decel
+IncreasedAccelerationDeceleration_Trait2:+20% Accel/Decel
+IncreasedArmor_Trait1:+2.5% Armor
+IncreasedArmor_Trait2:+5% Armor
+IncreasedBallisticDamage_Trait1:+5% Ballistic Damage
+IncreasedBallisticDamage_Trait2:+10% Ballistic Damage
+IncreasedBallisticRangeAndSpeed_Trait1:+7.5% Ballistic Range/Speed
+IncreasedBallisticRangeAndSpeed_Trait2:+15% Ballistic Range/Speed
+IncreasedEnergyDamage_Trait1:+5% Energy Damage
+IncreasedEnergyDamage_Trait2:+10% Energy Damage
+IncreasedEnergyRangeAndSpeed_Trait1:+7.5% Energy Range/Speed
+IncreasedEnergyRangeAndSpeed_Trait2:+15% Energy Range/Speed
+IncreasedHeatCapacity_Trait1:+5% Heat Capacity
+IncreasedHeatCapacity_Trait2:+10% Heat Capacity
+IncreasedHeatCooling_Trait1:+5% Heat Dissipation
+IncreasedJJAccelXYZ_Trait1:+15% Jump Jet Speed
+IncreasedJJFuelBurnTime_Trait1:+15% Jump Jet Burn Time
+IncreasedJJFuelRegenTime_Trait1:+20% Jump Jet Refuel Rate
+IncreasedLockRetentionAndLoseLockTime_Trait1:+25% Target Lock Retention
+IncreasedMissileDamage_Trait1:+5% Missile Damage
+IncreasedMissileDamage_Trait2:+10% Missile Damage
+IncreasedMissileRangeAndSpeed_Trait1:+7.5% Missile Range/Speed
+IncreasedMissileRangeAndSpeed_Trait2:+15% Missile Range/Speed
+IncreasedSensorRange_Trait1:+10% Sensor Range
+IncreasedSensorRange_Trait2:+20% Sensor Range
+IncreasedStructure_Trait1:+5% Internal Structure
+IncreasedStructure_Trait2:+10% Internal Structure
+IncreasedTopSpeed_Trait1:+15% Top Speed
+IncreasedTorsoTwistRate_Trait1:+20% Torso Twist Speed
+IncreasedTurnSpeed_Trait1:+7.5% Turn Speed
+IncreasedTurnSpeed_Trait2:+15% Turn Speed
+IncreasedWeaponDamage_Trait1:+5% Weapon Damage
+IncreasedWeaponRangeAndSpeed_Trait1:+10% Weapon Range/Speed
+ReducedBallisticCooldown_Trait1:-5% Ballistic Cooldown
+ReducedBallisticCooldown_Trait2:-10% Ballistic Cooldown
+ReducedBallisticHeat_Trait1:-2.5% Ballistic Heat
+ReducedBallisticHeat_Trait2:-5% Ballistic Heat
+ReducedEnergyCooldown_Trait1:-5% Energy Cooldown
+ReducedEnergyCooldown_Trait2:-10% Energy Cooldown
+ReducedEnergyHeat_Trait1:-2.5% Energy Heat
+ReducedEnergyHeat_Trait2:-5% Energy Heat
+ReducedHeatGeneration_Trait1:-5% Heat Generation
+ReducedLaserDuration_Trait1:-7.5% Laser Duration
+ReducedMissileCooldown_Trait1:-5% Missile Cooldown
+ReducedMissileCooldown_Trait2:-10% Missile Cooldown
+ReducedMissileHeat_Trait1:-2.5% Missile Heat
+ReducedMissileHeat_Trait2:-5% Missile Heat
+ReducedMissileSpread_Trait1:-7.5% Missile Spread
+ReducedWeaponCooldown_Trait1:-7.5% Weapon Cooldown
+ReducedWeaponHeat_Trait1:-2.5% Weapon Heat
+--CHASSIS-[NOT YET USED]------------------------
+
+ANH:Annihilator
+ARC:Archer
+AS7:Atlas
+ASN:Assassin
+AWS:Awesome
+BJ:Blackjack
+BL:BlackKnight
+BLR:Battlemaster
+BNC:Banshee
+CDA:Cicada
+CN9:Centurion
+COM:Commando
+CP:Cyclops
+CRB:Crab
+DRG:Dragon
+ENF:Enforcer
+FLE:Flea
+FS9:Firestarter
+GHR:Grasshopper
+GRF:Griffin
+JM6:Jaegermech
+JR7:Jenner
+JVN:Javelin
+KGC:KingCrab
+LCT:Locust
+LDR:Loaderking
+MAD:Marauder
+MDD:MadDog
+PNT:Panther
+PXH:PhoenixHawk
+RFL:Rifleman
+RGH:Roughneck
+RVN:Raven
+SDR:Spider
+STG:Stinger
+STK:Stalker
+TP:Trooper
+UM:Urbanmech
+WHM:Warhammer
+WSP:Wasp
+WTH:Whitworth
\ No newline at end of file
diff --git a/main.txt b/main.txt
index 91f05b9..325af00 100644
--- a/main.txt
+++ b/main.txt
@@ -1,45 +1,39 @@
#SingleInstance Ignore
#NoEnv
-
+DetectHiddenWindows, on
SetTitleMatchMode 2
SetWorkingDir %A_ScriptDir%
-;-------------------------------------
-;TODO:
-; RELEASE TO PUBLIC
-;-------------------------------------
+;OnExit(MainGuiClose, -1)
+OnExit, MainGuiClose
+
+
+;Initialize Configuration
+IniRead, $LoadoutPath, .\Config.ini, Options, Path , % A_AppData "\..\Local\MW5Mercs\Saved\SavedLoadouts\InstantAction.json"
+IniRead, $WhoAmI, .\Config.ini, Options, WhoAmI, *
+IniRead, $Locale, .\Config.ini, Options, Locale, EN
$ExtractDir := A_Temp "\Tmp$00192\"
FileCreateDir, % $ExtractDir
if (!A_IsCompiled)
{
- FileCopy, RobotoMono-Regular.TTF, % $ExtractDir "RobotoMono-Regular.TTF"
- FileCopy, TT_Equipment.cfg, % $ExtractDir "TT_Equipment.cfg"
- FileCopy, TT_Chassis.cfg, % $ExtractDir "TT_Chassis.cfg"
FileCopy, Icon.ico, % $ExtractDir "Icon.ico"
FileCopy, about.jpg, % $ExtractDir "about.jpg"
}
else
{
- FileInstall, RobotoMono-Regular.TTF, % $ExtractDir "RobotoMono-Regular.TTF", 1
- FileInstall, TT_Equipment.cfg, % $ExtractDir "TT_Equipment.cfg", 1
- FileInstall, TT_Chassis.cfg, % $ExtractDir "TT_Chassis.cfg", 1
- FileInstall, Icon.ico, % $ExtractDir "icon.ico", 1
- FileInstall, about.jpg, % $ExtractDir "about.jpg", 1
+ FileInstall, Icon.ico, % $ExtractDir "icon.ico"
+ FileInstall, about.jpg, % $ExtractDir "about.jpg"
}
Menu, Tray, Icon, % $ExtractDir "icon.ico"
-DllCall( "GDI32.DLL\AddFontResourceEx", Str,$ExtractDir "RobotoMono-Regular.TTF",UInt,(FR_PRIVATE:=0x10), Int,0)
-
-;Initialize Loadout File Path
-IniRead, $LoadoutPath, .\Config.ini, Options, Path , % A_AppData "\..\Local\MW5Mercs\Saved\SavedLoadouts\InstantAction.json"
-IniRead, $WhoAmI, .\Config.ini, Options, WhoAmI, *
+DllCall( "GDI32.DLL\AddFontResourceEx", Str,"Localization\" $Locale "\Font.TTF",UInt,(FR_PRIVATE:=0x10), Int,0)
Intro:
If ($Init || (strlen($WhoAmI)<2))
{
Gui, Main:Hide ;If we are changing callsign later
- Gui, Intro:New, +HwndWinID -AlwaysOnTop -Resize +Caption +SysMenu +Border
+ Gui, Intro:New, -AlwaysOnTop -Resize +Caption +SysMenu +Border
Gui, -0x30000
Gui, Intro:Margin, 10,10
Gui, Intro:Color, C4CBCC, 000000
@@ -62,14 +56,15 @@ If ($Init || (strlen($WhoAmI)<2))
About:
if(!$Init)
{
- Gui, About:New, +HwndWinID +AlwaysOnTop -Resize +Caption +SysMenu +Border
+ Gui, About:New, +AlwaysOnTop -Resize +Caption +SysMenu +Border
Gui, -0x30000
Gui, About:Font, bold
Gui, About:Margin, 20,20
Gui, About:Color, C4CBCC, 000000
- Gui, About:Add, Text,Left x+95 y20 -border, MW5Mercs Mechlab Maid (32-bit) v1.0`n
+ Gui, About:Add, Text,Left x+95 y20 -border, MW5Mercs Mechlab Maid (32-bit) v1.0d`n
Gui, About:Font, normal
- Gui, About:Add, Text,Left xp y+1 -border, Written by: NasumiRayne / Chozo4 `n`nGitHub Page:
+ Gui, About:Add, Text,Left xp y+1 -border, Written by: NasumiRayne / Chozo4
+ Gui, About:Add, Text,Left xp y+1 -border, Translated by: NasumiRayne / Chozo4 `n`nGitHub Page:
Gui, About:Add, Link,xp y+1,https://github.com/Chozo4
Gui, About:Add, Text,Left xp y+1 -border, `nContact me on discord:
Gui, About:Add, Link,xp y+1,NasumiRayne#1510
@@ -77,11 +72,11 @@ if(!$Init)
Gui, About:Add, Link,xp y+1,https://twitch.tv/Chozo4
Gui, About:Add, Text,Center W80 H80 X20 Y35 +border, SENPAI`nNOTICED`nME!
Gui, About:Add, Picture , wp yp xp hp, % $ExtractDir "about.jpg"
- Gui, About:Add, Button, xp y+30 H30 wp gAboutClose -hidden +default, OK
+ Gui, About:Add, Button, xp y+40 H30 wp gAboutClose -hidden +default, OK
}
Main:
-Gui, Main:New, +HwndWinID -AlwaysOnTop -Resize +Caption -ToolWindow +Border +OwnDialogs
+Gui, Main:New, +LastFound +HwndWinID -AlwaysOnTop -Resize +Caption -ToolWindow +Border +OwnDialogs
Gui, Main:Margin, 0,0
Gui, Main:Color, C4CBCC, F0F0F0
Gui, Main:Font,, Verdana
@@ -90,7 +85,7 @@ Gui, Main:Add, Button,x+10 yp gExportFunc,Export Variant
Gui, Main:Add, Button,x+10 yp gDeleteFunc,Delete Variant
Gui, Main:Add, Edit, x+10 yp r1 vLOPath w380 -VScroll -HScroll +Border +ReadOnly, % $LoadoutPath
Gui, Main:Add, Button, x+10 yp gLOPath, ...
-Gui, Main:Add, listview,c101010 Checked Count100 -Multi AltSubmit grid w350 h500 x0 y40 vLoadoutList gUpdateReadout, #|Base|Variant Name
+Gui, Main:Add, listview,c101010 Checked Count1000 -Multi AltSubmit grid w350 h500 x0 y40 vLoadoutList gUpdateReadout, #|Base|Variant Name
gui, Main:font, c0x000000 s9, Roboto Mono Regular
Gui, Main:Add, Edit, w400 hp+0 x+0 yp -Wrap +ReadOnly vReadout
Gui, Main:Add, StatusBar,center,
@@ -225,7 +220,7 @@ if ($init)
MainGuiClose:
if !$ModCount
{
- DllCall( "GDI32.DLL\RemoveFontResourceEx",Str,$ExtractDir "RobotoMono-Regular.TTF",UInt,(FR_PRIVATE:=0x10),Int,0)
+ DllCall( "GDI32.DLL\RemoveFontResourceEx",Str,".\Localization\" $Locale "\Font.TTF",UInt,(FR_PRIVATE:=0x10),Int,0)
FileRemoveDir, % $ExtractDir, 1
ExitApp
}
@@ -237,7 +232,7 @@ IfMsgBox Yes
else IfMsgBox Cancel
return
-DllCall( "GDI32.DLL\RemoveFontResourceEx",Str,$ExtractDir "RobotoMono-Regular.TTF",UInt,(FR_PRIVATE:=0x10),Int,0)
+DllCall( "GDI32.DLL\RemoveFontResourceEx",Str,".\Localization\" $Locale "\Font.TTF",UInt,(FR_PRIVATE:=0x10),Int,0)
FileRemoveDir, % $ExtractDir, 1
ExitApp
return
@@ -254,21 +249,22 @@ return
ConsultTranslationTable($Find) ;For comparing component against translation table of known item IDs
{
- Global $ExtractDir
+ Global $Locale
Static $Trans := []
if !NumGet(&$Trans + 4*A_PtrSize)
- Loop, read, % $ExtractDir "TT_Equipment.cfg"
+ Loop, read, % ".\Localization\" $Locale "\TranslationTable.cfg"
if inStr(A_LoopReadLine,":")
$Out := StrSplit(A_LoopReadLine,":"), $Trans[$Out[1]] := $Out[2]
- if substr($Find,1,3) = "std" ;screw adding every engine to the translation table
+ if ((substr($Find,1,3) = "std") || (substr($Find,1,3) = "LFE")) ;screw adding every engine to the translation table
return substr($Find,4)
- return $Trans[$Find]?$Trans[$Find]:$Find
+ ;return $Trans[$Find]?$Trans[$Find]:$Find
+ return $Trans.hasKey($Find)?$Trans[$Find]:"*" $Find
}
-GetComponentBySlot($Data,$Slot,$Fallback="") ;extend to check for multiples, including location, and return array
+GetComponentBySlot($Data,$Slot,$Fallback="") ;TODO: extend to check for multiples, including location, and return array
{
RegExMatch($Data,"is):" $Slot """.*?Asset:(.*?)""",$out)
return $out1?ConsultTranslationTable($out1):$Fallback
@@ -282,6 +278,21 @@ StrPad($S,$ToLen,$PadWith=" ",$PadRight=0)
return $PadRight?substr($S,1,$ToLen):substr($S,1-$ToLen)
}
+TabulateAmmo($Ammo)
+{
+ if (inStr($Ammo,"huge") || inStr($Ammo,"3.0"))
+ return 3.00
+ if (inStr($Ammo,"double") || inStr($Ammo,"2.0"))
+ return 2.00
+ if (inStr($Ammo,"half") || inStr($Ammo,"0.5"))
+ return 0.50
+ if (inStr($Ammo,"quart") || inStr($Ammo,"0.25"))
+ return 0.25
+
+ return 1.00
+}
+
+
PopulateDetails($Selected)
{
critical
@@ -318,23 +329,30 @@ PopulateDetails($Selected)
;$text .= " H: " $Armor.Head " CT: " $Armor.CenterTorso " LA: " $Armor.LeftArm " RA: " $Armor.RightArm "`n"
;$text .= "LT: " $Armor.LeftTorso " RT: " $Armor.RightTorso " LL: " $Armor.LeftLeg " RL: " $Armor.RightLeg "`n"
- $text .= "`n`n Ordnance`n" strpad("",34,chr(9472),1)
- $LastPos := 0, $Tmp := {0:0}, $Armaments := {} ;Get Weapons List
+ $text .= "`n`n Ordnance`n" strpad("",29,chr(9472),1) " " strpad("",29,chr(9472),1)
+ $LastPos := 0, $Tmp := {0:0}, $Armaments := {}, $Index := 0 ;Get Weapons List
While ($LastPos := RegExMatch($Selected[0], "isO)WeaponDataAsset:(.*?)""", $Tmp, $LastPos += StrLen($Tmp[0])))
- $Armaments[$Tmp[1]] := $Armaments[$Tmp[1]]?$Armaments[$Tmp[1]]+1:1
+ {
+ ;$Tmp[1]:= InStr($Tmp[1],"_lvl")?substr($Tmp[1],1,InStr($Tmp[1],"_lvl")):$Tmp[1]
+ $TmpVal := substr($Tmp[1],1,InStr($Tmp[1],"_Lvl")?InStr($Tmp[1],"_Lvl")-1:StrLen($Tmp[1])) ;Strip Tiers
+ $Armaments[$TmpVal] := $Armaments[$TmpVal]?$Armaments[$TmpVal]+1:1
+ }
For $k, $v in $Armaments
- $text .= !InStr($k, "YAML_")?("`n" $v "x " ConsultTranslationTable(RegExReplace($k,"i)_lvl[0-9]",""))):""
-
- $text .= "`n`n Munitions`n" strpad("",34,chr(9472),1)
- $LastPos := 0, $Tmp := {0:0}, $Ammunition := {}
+ $text .= ($t:=ConsultTranslationTable($k))?((Mod($Index++,2)?" ":"`n") strpad($v "x " $t,25," ",1)):""
+
+ ;52 width (26 each)
+ $text .= "`n`n Munitions`n" strpad("",29,chr(9472),1) " " strpad("",29,chr(9472),1)
+ $LastPos := 0, $Tmp := {0:0}, $Ammunition := {}, $Index := 0
While ($LastPos := RegExMatch($Selected[0], "isO)MWAmmoDataAsset:(.*?)""", $Tmp, $LastPos += StrLen($Tmp[0])))
$Ammunition[$Tmp[1]] := $Ammunition[$Tmp[1]]?$Ammunition[$Tmp[1]]+1:1
For $k, $v in $Ammunition
- $text .= !InStr($k, "YAML_")?("`n" $v "x " ConsultTranslationTable($k)):""
-
-
+ $text .= ($t:=ConsultTranslationTable($k))?"`n" substr($v,1,instr($v,".")+2) "X " $t:""
+
+ $text .= "`n`n Traits`n" strpad("",29,chr(9472),1) " " strpad("",29,chr(9472),1)
+ $LastPos := 0, $Tmp := {0:0}, $Ammunition := {}, $Index := 0
+ While ($LastPos := RegExMatch($Selected[3], "isO)MWMechTraitDataAsset:(.*?)""", $Tmp, $LastPos += StrLen($Tmp[0])))
+ $text .= ($t:=ConsultTranslationTable($Tmp[1]))?((Mod($Index++,2)?" ":"`n") strpad($t,25," ",1)):""
-
GuiControl,,Readout, % $text
}
@@ -467,7 +485,7 @@ else If (A_GuiEvent = "I" && ($SelRow := A_EventInfo?A_EventInfo:LV_GetNext(0))
return
LoadoutList:
-
+ StartTime := A_TickCount
$isValid := inStr(($F := FileOpen($LoadoutPath, "r")).Read(16), "Loadouts"),$F.Close()
if (!$isValid)
{
@@ -478,19 +496,29 @@ LoadoutList:
if (!FileExist($LoadoutPath ".bak")) ;keep firstrun backup
FileCopy, % $LoadoutPath, % $LoadoutPath ".bak"
+
tooltip, Compiling List...
$ModCount := 0
FileRead, Loadouts, % $LoadoutPath
$LastPos := 1, $LO := {0:0}, $Row := {}
- While ($LastPos := RegExMatch(Loadouts, "isO)(""mechDataAssetId"".*?MWMechDataAsset:)(.*?)"".*?customName"": ""(.*?)"".*?("".*?InstalledTraits.*?])", $LO, $LastPos += StrLen($LO[0])))
- $Row[A_Index] := {0:"{`r`n " $LO[0] "`r`n}", 1:RegExReplace(StrReplace($LO[2], "_MDA", ""), "(_.*)", ""), 2:$LO[3]}
-
+ While ($LastPos := RegExMatch(Loadouts, "isOS)""mechDataAssetId"".*?MWMechDataAsset:(.*?)"".*?customName"": ""(.*?)"".*?""installedTraits""(.*?)]", $LO, $LastPos += StrLen($LO[0])))
+ {
+ ;msgbox % $LO[0] [a-zA-Z0-9]{1,3}
+ ;$Row[A_Index] := {0:"{`r`n " $LO[0] "`r`n}", 1:RegExReplace(StrReplace($LO[1], "_MDA", ""), "(_.*)", ""), 2:$LO[2],3:$LO[3]}
+ RegExMatch($LO[1], "sO)([A-Z0-9]+[-].+?)_", $F)
+
+ $Row[A_Index] := {0:"{`r`n " $LO[0] "`r`n}", 1:$F[1]?$F[1]:StrReplace($LO[1], "_MDA", ""), 2:$LO[2],3:$LO[3]}
+ }
SB_SetText(NumGet(&$Row + 4*A_PtrSize) . " variants loaded and ready for manipulation.", 1)
- GuiControl, -Redraw, LoadoutList
+
tooltip Populating...
+ GuiControl, disable, LoadoutList
+ sleep 1
+ SendMessage, 0xB, 0, 0,, ahk_id %WinID%
+ GuiControl, -Redraw, LoadoutList
LV_Delete()
for $k, $v in $Row
lv_add(,$k,$v[1],$v[2])
@@ -500,11 +528,17 @@ LoadoutList:
;LV_ModifyCol(1,"60")
LV_ModifyCol(2,"Sort")
LV_ModifyCol(3,"AutoHDR")
+ SendMessage, 0xB, 1, 0,, ahk_id %WinID%
+ GuiControl, enable, LoadoutList
GuiControl, +Redraw, LoadoutList
-
- Tooltip
+
+ tooltip % "Time to build: " A_TickCount - StartTime "ms"
+ SetTimer, ClearTooltip, 2000
return
+ClearTooltip:
+ tooltip
+return