diff --git a/game/factions/faction.py b/game/factions/faction.py index d1645a43..3444135e 100644 --- a/game/factions/faction.py +++ b/game/factions/faction.py @@ -839,6 +839,19 @@ class Faction: self.remove_preset("MIM-104 Patriot (Stationary)") self.remove_preset("NASAMS 3") self.remove_preset("THAAD") + if not mod_settings.ukrainemilitaryassetspack: + self.remove_aircraft("Su-24MU") + self.remove_aircraft("MiG-29MU2") + self.remove_aircraft("CH_Su-27P1M") + self.remove_vehicle("T84_OplotM") + self.remove_vehicle("BTR-4") + self.remove_vehicle("CH_T64BV") + self.remove_vehicle("CH_Kozak5") + self.remove_vehicle("CH_KrAZSpartan") + self.remove_vehicle("CH_BRDM2L1") + self.remove_vehicle("CH_Alligator_Sniper") + self.remove_vehicle("CH_Stugna_P") + self.remove_vehicle("CH_KrAZ6322") def remove_aircraft(self, name: str) -> None: for aircraft_set in [self.aircraft, self.awacs, self.tankers]: diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index d151718c..5cbcaca0 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -105,6 +105,7 @@ class ModSettings: chinesemilitaryassetspack: bool = False russianmilitaryassetspack: bool = False usamilitaryassetspack: bool = False + ukrainemilitaryassetspack: bool = False class GameGenerator: diff --git a/pydcs_extensions/__init__.py b/pydcs_extensions/__init__.py index a086aa4f..dc8e249f 100644 --- a/pydcs_extensions/__init__.py +++ b/pydcs_extensions/__init__.py @@ -39,6 +39,7 @@ from .vietnamwarvessels import * from .chinesemilitaryassetspack import * from .russianmilitaryassetspack import * from .usamilitaryassetspack import * +from .ukrainemilitaryassetspack import * def load_mods() -> None: diff --git a/pydcs_extensions/ukrainemilitaryassetspack/__init__.py b/pydcs_extensions/ukrainemilitaryassetspack/__init__.py new file mode 100644 index 00000000..afcb001c --- /dev/null +++ b/pydcs_extensions/ukrainemilitaryassetspack/__init__.py @@ -0,0 +1 @@ +from .ukrainemilitaryassetspack import * diff --git a/pydcs_extensions/ukrainemilitaryassetspack/ukrainemilitaryassetspack.py b/pydcs_extensions/ukrainemilitaryassetspack/ukrainemilitaryassetspack.py new file mode 100644 index 00000000..be2597cb --- /dev/null +++ b/pydcs_extensions/ukrainemilitaryassetspack/ukrainemilitaryassetspack.py @@ -0,0 +1,1107 @@ +# Requires Ukraine Military Assets for DCS by Currenthill: +# https://www.currenthill.com/ukraine +# + + +from typing import Set, Dict, Any + +from dcs import unittype, task +from dcs.planes import PlaneType +from dcs.weapons_data import Weapons + +from game.modsupport import ( + planemod, + vehiclemod, +) +from pydcs_extensions.weapon_injector import inject_weapons + + +# Weapons +class WeaponsUKR: + CH_AASM_250_PGM = { + "clsid": "{CH_AASM250}", + "name": "[CH] AASM 250 PGM", + "weight": 340, + } + CH_Storm_Shadow_ALCM = { + "clsid": "{SU24MU_STORMSHADOW}", + "name": "[CH] Storm Shadow ALCM", + "weight": 1300, + } + CH_Taurus_KEPD_350_ALCM = { + "clsid": "{SU24MU_KEPD350}", + "name": "[CH] Taurus KEPD-350 ALCM", + "weight": 1400, + } + ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy = { + "clsid": "{MIG29MU2_BRU_42A_x3_ADM_160B}", + "name": "ADM-160B MALD x 3 - Miniature Air-Launched Decoy", + "weight": 500.8, + } + ADM_160B_MALD___Miniature_Air_Launched_Decoy = { + "clsid": "{MiG-29MU2_ADM-160B}", + "name": "ADM-160B MALD - Miniature Air-Launched Decoy", + "weight": 150, + } + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = { + "clsid": "{MiG-29MU2_ADM-160B_LAU118}", + "name": "ADM-160B MALD - Miniature Air-Launched Decoy", + "weight": 150, + } + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = { + "clsid": "{MIG29MU2_JDAM-ER}", + "name": "JDAM-ER - 450 kg GPS Guided Mk-83 GP bomb", + "weight": 934, + } + + +inject_weapons(WeaponsUKR) + + +# Armor +@vehiclemod +class T84_OplotM(unittype.VehicleType): + id = "T84_OplotM" + name = "[CH] T-84 Oplot-M MBT" + detection_range = 8000 + threat_range = 5000 + air_weapon_dist = 5000 + eplrs = True + + +@vehiclemod +class BTR_4(unittype.VehicleType): + id = "BTR-4" + name = "[CH] BTR-4 IFV" + detection_range = 0 + threat_range = 5000 + air_weapon_dist = 5000 + eplrs = True + + +@vehiclemod +class CH_T64BV(unittype.VehicleType): + id = "CH_T64BV" + name = "[CH] T-64BV MBT" + detection_range = 5000 + threat_range = 4000 + air_weapon_dist = 4000 + eplrs = True + + +@vehiclemod +class CH_Kozak5(unittype.VehicleType): + id = "CH_Kozak5" + name = "[CH] Kozak-5 APC" + detection_range = 0 + threat_range = 1800 + air_weapon_dist = 1800 + eplrs = True + + +@vehiclemod +class CH_KrAZSpartan(unittype.VehicleType): + id = "CH_KrAZSpartan" + name = "[CH] KrAZ Spartan APC" + detection_range = 0 + threat_range = 1800 + air_weapon_dist = 1800 + eplrs = True + + +@vehiclemod +class CH_BRDM2L1(unittype.VehicleType): + id = "CH_BRDM2L1" + name = "[CH] BRDM-2L1 ARV" + detection_range = 0 + threat_range = 2000 + air_weapon_dist = 2000 + eplrs = True + + +# Infantry +@vehiclemod +class CH_Alligator_Sniper(unittype.VehicleType): + id = "CH_Alligator_Sniper" + name = "[CH] Alligator Sniper AMR" + detection_range = 5000 + threat_range = 3000 + air_weapon_dist = 3000 + eplrs = True + + +@vehiclemod +class CH_Stugna_P(unittype.VehicleType): + id = "CH_Stugna_P" + name = "[CH] Stugna-P ATGM" + detection_range = 5500 + threat_range = 5500 + air_weapon_dist = 5500 + eplrs = True + + +# Logistics +@vehiclemod +class CH_KrAZ6322(unittype.VehicleType): + id = "CH_KrAZ6322" + name = "[CH] KrAZ-6322 Truck" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +# Planes +@planemod +class Su_24MU(PlaneType): + id = "Su-24MU" + height = 4.97 + width = 17.64 + length = 24.53 + fuel_max = 11700 + max_speed = 1699.2 + chaff = 96 + flare = 96 + charge_total = 192 + chaff_charge_size = 1 + flare_charge_size = 1 + + livery_name = "SU-24MU" # from type + + class Pylon1: + R_60M__AA_8_Aphid_B____IR_AAM = (1, Weapons.R_60M__AA_8_Aphid_B____IR_AAM) + R_73__AA_11_Archer____Infra_Red = (1, Weapons.R_73__AA_11_Archer____Infra_Red) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 1, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 1, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 1, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + FAB_250___250kg_GP_Bomb_LD = (1, Weapons.FAB_250___250kg_GP_Bomb_LD) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 1, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 1, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator = ( + 1, + Weapons.O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator, + ) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 1, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + CH_AASM_250_PGM = (1, Weapons.CH_AASM_250_PGM) + + class Pylon2: + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 2, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 2, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 2, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + FAB_250___250kg_GP_Bomb_LD = (2, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (2, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + KAB_500Kr___500kg_TV_Guided_Bomb = (2, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 2, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 2, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 2, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 2, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator = ( + 2, + Weapons.O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator, + ) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 2, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + Fuel_tank_3000L = (2, Weapons.Fuel_tank_3000L) + CH_Storm_Shadow_ALCM = (2, Weapons.CH_Storm_Shadow_ALCM) + CH_Taurus_KEPD_350_ALCM = (2, Weapons.CH_Taurus_KEPD_350_ALCM) + CH_AASM_250_PGM = (2, Weapons.CH_AASM_250_PGM) + + class Pylon3: + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 3, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + KAB_500Kr___500kg_TV_Guided_Bomb = (3, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 3, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 3, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 3, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + CH_AASM_250_PGM = (3, Weapons.CH_AASM_250_PGM) + + class Pylon4: + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 4, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + FAB_250___250kg_GP_Bomb_LD = (4, Weapons.FAB_250___250kg_GP_Bomb_LD) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 4, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + CH_AASM_250_PGM = (4, Weapons.CH_AASM_250_PGM) + + class Pylon5: + Fuel_tank_2000L = (5, Weapons.Fuel_tank_2000L) + L_081_Fantasmagoria_ELINT_pod = (5, Weapons.L_081_Fantasmagoria_ELINT_pod) + FAB_250___250kg_GP_Bomb_LD = (5, Weapons.FAB_250___250kg_GP_Bomb_LD) + + class Pylon6: + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 6, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + FAB_250___250kg_GP_Bomb_LD = (6, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (6, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + KAB_500Kr___500kg_TV_Guided_Bomb = (6, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 6, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 6, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 6, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + CH_AASM_250_PGM = (6, Weapons.CH_AASM_250_PGM) + + class Pylon7: + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 7, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 7, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 7, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + FAB_250___250kg_GP_Bomb_LD = (7, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (7, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + KAB_500Kr___500kg_TV_Guided_Bomb = (7, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 7, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 7, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 7, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 7, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator = ( + 7, + Weapons.O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator, + ) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 7, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + Fuel_tank_3000L = (7, Weapons.Fuel_tank_3000L) + CH_Storm_Shadow_ALCM = (7, Weapons.CH_Storm_Shadow_ALCM) + CH_Taurus_KEPD_350_ALCM = (7, Weapons.CH_Taurus_KEPD_350_ALCM) + CH_AASM_250_PGM = (7, Weapons.CH_AASM_250_PGM) + + class Pylon8: + R_60M__AA_8_Aphid_B____IR_AAM = (8, Weapons.R_60M__AA_8_Aphid_B____IR_AAM) + R_73__AA_11_Archer____Infra_Red = (8, Weapons.R_73__AA_11_Archer____Infra_Red) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 8, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 8, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 8, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + FAB_250___250kg_GP_Bomb_LD = (8, Weapons.FAB_250___250kg_GP_Bomb_LD) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 8, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 8, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator = ( + 8, + Weapons.O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator, + ) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 8, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + CH_AASM_250_PGM = (8, Weapons.CH_AASM_250_PGM) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8} + + tasks = [ + task.Reconnaissance, + task.GroundAttack, + task.CAS, + task.AFAC, + task.RunwayAttack, + task.AntishipStrike, + task.SEAD, + task.PinpointStrike, + ] + task_default = task.GroundAttack + + +@planemod +class MiG_29MU2(PlaneType): + id = "MiG-29MU2" + height = 4.73 + width = 11.36 + length = 20.32 + fuel_max = 3493 + max_speed = 2450.16 + chaff = 30 + flare = 30 + charge_total = 60 + chaff_charge_size = 1 + flare_charge_size = 1 + eplrs = True + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + + livery_name = "MIG-29MU2" # from type + + class Pylon1: + R_73__AA_11_Archer____Infra_Red = (1, Weapons.R_73__AA_11_Archer____Infra_Red) + R_60M__AA_8_Aphid_B____IR_AAM = (1, Weapons.R_60M__AA_8_Aphid_B____IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (1, Weapons.AIM_9L_Sidewinder_IR_AAM) + AIM_9M_Sidewinder_IR_AAM = (1, Weapons.AIM_9M_Sidewinder_IR_AAM) + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 1, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + R_27ET__AA_10_Alamo_D____IR_Extended_Range = ( + 1, + Weapons.R_27ET__AA_10_Alamo_D____IR_Extended_Range, + ) + AIM_120B_AMRAAM___Active_Radar_AAM = ( + 1, + Weapons.AIM_120B_AMRAAM___Active_Radar_AAM, + ) + AIM_120C_AMRAAM___Active_Radar_AAM = ( + 1, + Weapons.AIM_120C_AMRAAM___Active_Radar_AAM, + ) + + # ERRR + + class Pylon2: + R_73__AA_11_Archer____Infra_Red = (2, Weapons.R_73__AA_11_Archer____Infra_Red) + R_60M__AA_8_Aphid_B____IR_AAM = (2, Weapons.R_60M__AA_8_Aphid_B____IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (2, Weapons.AIM_9L_Sidewinder_IR_AAM) + AIM_9M_Sidewinder_IR_AAM = (2, Weapons.AIM_9M_Sidewinder_IR_AAM) + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 2, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + R_27ET__AA_10_Alamo_D____IR_Extended_Range = ( + 2, + Weapons.R_27ET__AA_10_Alamo_D____IR_Extended_Range, + ) + AIM_120B_AMRAAM___Active_Radar_AAM = ( + 2, + Weapons.AIM_120B_AMRAAM___Active_Radar_AAM, + ) + AIM_120C_AMRAAM___Active_Radar_AAM = ( + 2, + Weapons.AIM_120C_AMRAAM___Active_Radar_AAM, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided__ = ( + 2, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided__, + ) + KAB_500Kr___500kg_TV_Guided_Bomb = (2, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 2, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 2, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 2, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 2, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 2, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator = ( + 2, + Weapons.O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange = ( + 2, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange, + ) + AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( + 2, + Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_, + ) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser__ = ( + 2, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser__, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (2, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + FAB_250___250kg_GP_Bomb_LD = (2, Weapons.FAB_250___250kg_GP_Bomb_LD) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 2, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 2, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + # ERRR + CH_AASM_250_PGM = (2, Weapons.CH_AASM_250_PGM) + + class Pylon3: + Fuel_tank_1150L_MiG_29 = (3, Weapons.Fuel_tank_1150L_MiG_29) + R_73__AA_11_Archer____Infra_Red = (3, Weapons.R_73__AA_11_Archer____Infra_Red) + R_60M__AA_8_Aphid_B____IR_AAM = (3, Weapons.R_60M__AA_8_Aphid_B____IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (3, Weapons.AIM_9L_Sidewinder_IR_AAM) + AIM_9M_Sidewinder_IR_AAM = (3, Weapons.AIM_9M_Sidewinder_IR_AAM) + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 3, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + R_27ET__AA_10_Alamo_D____IR_Extended_Range = ( + 3, + Weapons.R_27ET__AA_10_Alamo_D____IR_Extended_Range, + ) + AIM_120B_AMRAAM___Active_Radar_AAM = ( + 3, + Weapons.AIM_120B_AMRAAM___Active_Radar_AAM, + ) + AIM_120C_AMRAAM___Active_Radar_AAM = ( + 3, + Weapons.AIM_120C_AMRAAM___Active_Radar_AAM, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided__ = ( + 3, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided__, + ) + KAB_500Kr___500kg_TV_Guided_Bomb = (3, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 3, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 3, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 3, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 3, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator = ( + 3, + Weapons.O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange = ( + 3, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange, + ) + AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( + 3, + Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_, + ) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser__ = ( + 3, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser__, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 3, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 3, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy = ( + 3, + Weapons.ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy, + ) + # ERRR + CH_AASM_250_PGM = (3, Weapons.CH_AASM_250_PGM) + + class Pylon4: + Fuel_tank_1400L = (4, Weapons.Fuel_tank_1400L) + + class Pylon5: + Fuel_tank_1150L_MiG_29 = (5, Weapons.Fuel_tank_1150L_MiG_29) + R_73__AA_11_Archer____Infra_Red = (5, Weapons.R_73__AA_11_Archer____Infra_Red) + R_60M__AA_8_Aphid_B____IR_AAM = (5, Weapons.R_60M__AA_8_Aphid_B____IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (5, Weapons.AIM_9L_Sidewinder_IR_AAM) + AIM_9M_Sidewinder_IR_AAM = (5, Weapons.AIM_9M_Sidewinder_IR_AAM) + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 5, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + R_27ET__AA_10_Alamo_D____IR_Extended_Range = ( + 5, + Weapons.R_27ET__AA_10_Alamo_D____IR_Extended_Range, + ) + AIM_120B_AMRAAM___Active_Radar_AAM = ( + 5, + Weapons.AIM_120B_AMRAAM___Active_Radar_AAM, + ) + AIM_120C_AMRAAM___Active_Radar_AAM = ( + 5, + Weapons.AIM_120C_AMRAAM___Active_Radar_AAM, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided__ = ( + 5, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided__, + ) + KAB_500Kr___500kg_TV_Guided_Bomb = (5, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 5, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 5, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 5, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 5, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator = ( + 5, + Weapons.O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange = ( + 5, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange, + ) + AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( + 5, + Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_, + ) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser__ = ( + 5, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser__, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (5, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + FAB_250___250kg_GP_Bomb_LD = (5, Weapons.FAB_250___250kg_GP_Bomb_LD) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 5, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 5, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy = ( + 5, + Weapons.ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy, + ) + # ERRR + CH_AASM_250_PGM = (5, Weapons.CH_AASM_250_PGM) + + class Pylon6: + R_73__AA_11_Archer____Infra_Red = (6, Weapons.R_73__AA_11_Archer____Infra_Red) + R_60M__AA_8_Aphid_B____IR_AAM = (6, Weapons.R_60M__AA_8_Aphid_B____IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (6, Weapons.AIM_9L_Sidewinder_IR_AAM) + AIM_9M_Sidewinder_IR_AAM = (6, Weapons.AIM_9M_Sidewinder_IR_AAM) + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 6, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + R_27ET__AA_10_Alamo_D____IR_Extended_Range = ( + 6, + Weapons.R_27ET__AA_10_Alamo_D____IR_Extended_Range, + ) + AIM_120B_AMRAAM___Active_Radar_AAM = ( + 6, + Weapons.AIM_120B_AMRAAM___Active_Radar_AAM, + ) + AIM_120C_AMRAAM___Active_Radar_AAM = ( + 6, + Weapons.AIM_120C_AMRAAM___Active_Radar_AAM, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided__ = ( + 6, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided__, + ) + KAB_500Kr___500kg_TV_Guided_Bomb = (6, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 6, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 6, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag = ( + 6, + Weapons.UB_32A___32_x_UnGd_Rkts__57_mm_S_5KO_HEAT_Frag, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 6, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 6, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator = ( + 6, + Weapons.O_25___1_x_UnGd_Rkts__340_mm_S_25_OFM_Hardened_Target_Penetrator, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange = ( + 6, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange, + ) + AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( + 6, + Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_, + ) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser__ = ( + 6, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser__, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (6, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + FAB_250___250kg_GP_Bomb_LD = (6, Weapons.FAB_250___250kg_GP_Bomb_LD) + APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_ = ( + 6, + Weapons.APU_68___S_24B___240mm_UnGd_Rkt__235kg__HE_Frag___Low_Smk_, + ) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 6, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + # ERRR + CH_AASM_250_PGM = (6, Weapons.CH_AASM_250_PGM) + + class Pylon7: + R_73__AA_11_Archer____Infra_Red = (7, Weapons.R_73__AA_11_Archer____Infra_Red) + R_60M__AA_8_Aphid_B____IR_AAM = (7, Weapons.R_60M__AA_8_Aphid_B____IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (7, Weapons.AIM_9L_Sidewinder_IR_AAM) + AIM_9M_Sidewinder_IR_AAM = (7, Weapons.AIM_9M_Sidewinder_IR_AAM) + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 7, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + R_27ET__AA_10_Alamo_D____IR_Extended_Range = ( + 7, + Weapons.R_27ET__AA_10_Alamo_D____IR_Extended_Range, + ) + AIM_120B_AMRAAM___Active_Radar_AAM = ( + 7, + Weapons.AIM_120B_AMRAAM___Active_Radar_AAM, + ) + AIM_120C_AMRAAM___Active_Radar_AAM = ( + 7, + Weapons.AIM_120C_AMRAAM___Active_Radar_AAM, + ) + + # ERRR + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7} + + tasks = [ + task.CAP, + task.Escort, + task.FighterSweep, + task.Intercept, + task.AFAC, + task.SEAD, + task.AntishipStrike, + task.CAS, + task.PinpointStrike, + task.GroundAttack, + task.RunwayAttack, + ] + task_default = task.CAP + + +@planemod +class CH_Su_27P1M(PlaneType): + id = "CH_Su-27P1M" + height = 5.932 + width = 14.7 + length = 21.935 + fuel_max = 9400 + max_speed = 2499.984 + chaff = 96 + flare = 96 + charge_total = 192 + chaff_charge_size = 1 + flare_charge_size = 1 + eplrs = True + + property_defaults: Dict[str, Any] = {} + + livery_name = "CH_SU-27P1M" # from type + + class Pylon1: + R_73__AA_11_Archer____Infra_Red = (1, Weapons.R_73__AA_11_Archer____Infra_Red) + + class Pylon2: + R_73__AA_11_Archer____Infra_Red = (2, Weapons.R_73__AA_11_Archer____Infra_Red) + + # ERRR + + class Pylon3: + R_73__AA_11_Archer____Infra_Red = (3, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 3, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + R_27ET__AA_10_Alamo_D____IR_Extended_Range = ( + 3, + Weapons.R_27ET__AA_10_Alamo_D____IR_Extended_Range, + ) + B_8M1___20_S_8OFP2 = (3, Weapons.B_8M1___20_S_8OFP2) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 3, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 3, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange = ( + 3, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 3, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 3, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + _2_x_B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 3, + Weapons._2_x_B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + _2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 3, + Weapons._2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + _2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange = ( + 3, + Weapons._2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange, + ) + _2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8OFP2_MPP = ( + 3, + Weapons._2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8OFP2_MPP, + ) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 3, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy = ( + 3, + Weapons.ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy, + ) + AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( + 3, + Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 3, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + # ERRR + CH_AASM_250_PGM = (3, Weapons.CH_AASM_250_PGM) + + class Pylon4: + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 4, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + FAB_250___250kg_GP_Bomb_LD = (4, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (4, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 4, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_5_x_FAB_250___250kg_GP_Bombs_LD = ( + 4, + Weapons.MBD3_U6_68_with_5_x_FAB_250___250kg_GP_Bombs_LD, + ) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 4, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy = ( + 4, + Weapons.ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy, + ) + AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( + 4, + Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 4, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + # ERRR + CH_AASM_250_PGM = (4, Weapons.CH_AASM_250_PGM) + + class Pylon5: + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 5, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + FAB_250___250kg_GP_Bomb_LD = (5, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (5, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 5, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_3_x_FAB_250___250kg_GP_Bombs_LD = ( + 5, + Weapons.MBD3_U6_68_with_3_x_FAB_250___250kg_GP_Bombs_LD, + ) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 5, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy = ( + 5, + Weapons.ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 5, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + # ERRR + CH_AASM_250_PGM = (5, Weapons.CH_AASM_250_PGM) + + class Pylon6: + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 6, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + FAB_250___250kg_GP_Bomb_LD = (6, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (6, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 6, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 6, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 6, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy = ( + 6, + Weapons.ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 6, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + # ERRR + CH_AASM_250_PGM = (6, Weapons.CH_AASM_250_PGM) + + class Pylon7: + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 7, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + FAB_250___250kg_GP_Bomb_LD = (7, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (7, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 7, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_5_x_FAB_250___250kg_GP_Bombs_LD = ( + 7, + Weapons.MBD3_U6_68_with_5_x_FAB_250___250kg_GP_Bombs_LD, + ) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 7, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy = ( + 7, + Weapons.ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy, + ) + AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( + 7, + Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 7, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + # ERRR + CH_AASM_250_PGM = (7, Weapons.CH_AASM_250_PGM) + + class Pylon8: + R_73__AA_11_Archer____Infra_Red = (8, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range = ( + 8, + Weapons.R_27ER__AA_10_Alamo_C____Semi_Act_Extended_Range, + ) + R_27ET__AA_10_Alamo_D____IR_Extended_Range = ( + 8, + Weapons.R_27ET__AA_10_Alamo_D____IR_Extended_Range, + ) + B_8M1___20_S_8OFP2 = (8, Weapons.B_8M1___20_S_8OFP2) + FAB_250___250kg_GP_Bomb_LD = (8, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (8, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 8, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 8, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange = ( + 8, + Weapons.B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 8, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 8, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + _2_x_B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 8, + Weapons._2_x_B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + _2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 8, + Weapons._2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + _2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange = ( + 8, + Weapons._2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8TsM_SM_Orange, + ) + _2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8OFP2_MPP = ( + 8, + Weapons._2_x_B_8M1___20_x_UnGd_Rkts__80_mm_S_8OFP2_MPP, + ) + ADM_160B_MALD___Miniature_Air_Launched_Decoy_ = ( + 8, + Weapons.ADM_160B_MALD___Miniature_Air_Launched_Decoy_, + ) + ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy = ( + 8, + Weapons.ADM_160B_MALD_x_3___Miniature_Air_Launched_Decoy, + ) + AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( + 8, + Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_, + ) + JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb = ( + 8, + Weapons.JDAM_ER___450_kg_GPS_Guided_Mk_83_GP_bomb, + ) + # ERRR + CH_AASM_250_PGM = (8, Weapons.CH_AASM_250_PGM) + + class Pylon9: + R_73__AA_11_Archer____Infra_Red = (9, Weapons.R_73__AA_11_Archer____Infra_Red) + + # ERRR + + class Pylon10: + R_73__AA_11_Archer____Infra_Red = (10, Weapons.R_73__AA_11_Archer____Infra_Red) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} + + tasks = [ + task.CAP, + task.Escort, + task.FighterSweep, + task.Intercept, + task.AFAC, + task.SEAD, + task.AntishipStrike, + task.CAS, + task.PinpointStrike, + task.GroundAttack, + task.RunwayAttack, + ] + task_default = task.CAP diff --git a/qt_ui/windows/newgame/QNewGameWizard.py b/qt_ui/windows/newgame/QNewGameWizard.py index a3bfdf7a..91bb2c46 100644 --- a/qt_ui/windows/newgame/QNewGameWizard.py +++ b/qt_ui/windows/newgame/QNewGameWizard.py @@ -128,6 +128,7 @@ class NewGameWizard(QtWidgets.QWizard): chinesemilitaryassetspack=self.field("chinesemilitaryassetspack"), russianmilitaryassetspack=self.field("russianmilitaryassetspack"), usamilitaryassetspack=self.field("usamilitaryassetspack"), + ukrainemilitaryassetspack=self.field("ukrainemilitaryassetspack"), ) blue_faction = self.faction_selection_page.selected_blue_faction diff --git a/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py b/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py index 733d954a..65354576 100644 --- a/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py +++ b/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py @@ -168,6 +168,8 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.registerField("russianmilitaryassetspack", self.russianmilitaryassetspack) self.usamilitaryassetspack = QtWidgets.QCheckBox() self.registerField("usamilitaryassetspack", self.usamilitaryassetspack) + self.ukrainemilitaryassetspack = QtWidgets.QCheckBox() + self.registerField("ukrainemilitaryassetspack", self.ukrainemilitaryassetspack) modHelpText = QtWidgets.QLabel( "

Select the mods you have installed. If your chosen factions support them, you'll be able to use these mods in your campaign.

" @@ -199,6 +201,10 @@ class GeneratorOptions(QtWidgets.QWizardPage): "CurrentHill USA Military Assets pack (1.1.5)", self.usamilitaryassetspack, ), + ( + "CurrentHill Ukraine Military Assets pack (1.1.1)", + self.ukrainemilitaryassetspack, + ), ("EA-6B Prowler (v2.9.4.102)", self.ea6b_prowler), ("F-100 Super Sabre (v2.7.18.30765 patch 20.10.22)", self.f100_supersabre), ("F-104 Starfighter (v2.7.11.222.01)", self.f104_starfighter), @@ -306,3 +312,6 @@ class GeneratorOptions(QtWidgets.QWizardPage): s.get("russianmilitaryassetspack", False) ) self.usamilitaryassetspack.setChecked(s.get("usamilitaryassetspack", False)) + self.ukrainemilitaryassetspack.setChecked( + s.get("ukrainemilitaryassetspack", False) + ) diff --git a/resources/customized_payloads/CH_Su-27P1M.lua b/resources/customized_payloads/CH_Su-27P1M.lua new file mode 100644 index 00000000..e08666fc --- /dev/null +++ b/resources/customized_payloads/CH_Su-27P1M.lua @@ -0,0 +1,597 @@ +local unitPayloads = { + ["name"] = "CH_Su-27P1M", + ["payloads"] = { + [1] = { + ["displayName"] = "Retribution TARCAP", + ["name"] = "Retribution TARCAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [2] = { + ["displayName"] = "Retribution BARCAP", + ["name"] = "Retribution BARCAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [3] = { + ["displayName"] = "Retribution CAS", + ["name"] = "Retribution CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [4] = { + ["displayName"] = "Retribution Escort", + ["name"] = "Retribution Escort", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [5] = { + ["displayName"] = "Retribution BAI", + ["name"] = "Retribution BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [6] = { + ["displayName"] = "Retribution SEAD", + ["name"] = "Retribution SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [7] = { + ["displayName"] = "Retribution CEAD", + ["name"] = "Retribution CEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [8] = { + ["displayName"] = "Retribution DEAD", + ["name"] = "Retribution DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [9] = { + ["displayName"] = "Retribution OCA/Runway", + ["name"] = "Retribution OCA/Runway", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [10] = { + ["displayName"] = "Retribution OCA/Aircraft", + ["name"] = "Retribution OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [11] = { + ["displayName"] = "Retribution SEAD Sweep", + ["name"] = "Retribution SEAD Sweep", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [12] = { + ["displayName"] = "Retribution Strike", + ["name"] = "Retribution Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{E8069896-8435-4B90-95C0-01A03AE6E400}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "CH_Su-27P1M", +} +return unitPayloads diff --git a/resources/customized_payloads/MiG-29MU2.lua b/resources/customized_payloads/MiG-29MU2.lua new file mode 100644 index 00000000..6888a2a2 --- /dev/null +++ b/resources/customized_payloads/MiG-29MU2.lua @@ -0,0 +1,453 @@ +local unitPayloads = { + ["name"] = "MiG-29MU2", + ["payloads"] = { + [1] = { + ["displayName"] = "Retribution BAI", + ["name"] = "Retribution BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [2] = { + ["displayName"] = "Retribution TARCAP", + ["name"] = "Retribution TARCAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [3] = { + ["displayName"] = "Retribution BARCAP", + ["name"] = "Retribution BARCAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [4] = { + ["displayName"] = "Retribution SEAD", + ["name"] = "Retribution SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [5] = { + ["displayName"] = "Retribution Strike", + ["name"] = "Retribution Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [6] = { + ["displayName"] = "Retribution OCA/Aircraft", + ["name"] = "Retribution OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [7] = { + ["displayName"] = "Retribution DEAD", + ["name"] = "Retribution DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [8] = { + ["displayName"] = "Retribution OCA/Runway", + ["name"] = "Retribution OCA/Runway", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{MIG29MU2_JDAM-ER}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [9] = { + ["displayName"] = "Retribution Escort", + ["name"] = "Retribution Escort", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [10] = { + ["displayName"] = "Retribution CEAD", + ["name"] = "Retribution CEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{MiG-29MU2_ADM-160B_LAU118}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{MIG29MU2_BRU_42A_x3_ADM_160B}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{MiG-29MU2_ADM-160B_LAU118}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [11] = { + ["displayName"] = "Retribution SEAD Sweep", + ["name"] = "Retribution SEAD Sweep", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{B06DD79A-F21E-4EB9-BD9D-AB3844618C93}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + [12] = { + ["displayName"] = "Retribution CAS", + ["name"] = "Retribution CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 7, + }, + [2] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{40EF17B7-F508-45de-8566-6FFECC0C1AB8}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "MiG-29MU2", +} +return unitPayloads diff --git a/resources/customized_payloads/Su-24MU.lua b/resources/customized_payloads/Su-24MU.lua new file mode 100644 index 00000000..f7b0a690 --- /dev/null +++ b/resources/customized_payloads/Su-24MU.lua @@ -0,0 +1,215 @@ +local unitPayloads = { + ["name"] = "Su-24MU", + ["payloads"] = { + [1] = { + ["displayName"] = "Retribution BAI", + ["name"] = "Retribution BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 8, + }, + [2] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 7, + }, + [3] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 1, + }, + [4] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{16602053-4A12-40A2-B214-AB60D481B20E}", + ["num"] = 5, + }, + [6] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 6, + }, + [7] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 3, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [2] = { + ["displayName"] = "Retribution DEAD", + ["name"] = "Retribution DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 8, + }, + [2] = { + ["CLSID"] = "{SU24MU_STORMSHADOW}", + ["num"] = 7, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + [4] = { + ["CLSID"] = "{SU24MU_STORMSHADOW}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{16602053-4A12-40A2-B214-AB60D481B20E}", + ["num"] = 5, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [3] = { + ["displayName"] = "Retribution OCA/Runway", + ["name"] = "Retribution OCA/Runway", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 8, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{39821727-F6E2-45B3-B1F0-490CC8921D1E}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{16602053-4A12-40A2-B214-AB60D481B20E}", + ["num"] = 5, + }, + [5] = { + ["CLSID"] = "{39821727-F6E2-45B3-B1F0-490CC8921D1E}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [4] = { + ["displayName"] = "Retribution Strike", + ["name"] = "Retribution Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 8, + }, + [2] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 7, + }, + [3] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 1, + }, + [4] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{16602053-4A12-40A2-B214-AB60D481B20E}", + ["num"] = 5, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [5] = { + ["displayName"] = "Retribution OCA/Aircraft", + ["name"] = "Retribution OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 8, + }, + [2] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{16602053-4A12-40A2-B214-AB60D481B20E}", + ["num"] = 5, + }, + [5] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 2, + }, + [6] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 6, + }, + [7] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 3, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [6] = { + ["displayName"] = "Retribution CAS", + ["name"] = "Retribution CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 8, + }, + [2] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 7, + }, + [3] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 1, + }, + [4] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{16602053-4A12-40A2-B214-AB60D481B20E}", + ["num"] = 5, + }, + [6] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 6, + }, + [7] = { + ["CLSID"] = "{CH_AASM250}", + ["num"] = 3, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "Su-24MU", +} +return unitPayloads diff --git a/resources/factions/ukraine_2020.json b/resources/factions/ukraine_2020.json new file mode 100644 index 00000000..7c702568 --- /dev/null +++ b/resources/factions/ukraine_2020.json @@ -0,0 +1,81 @@ +{ + "country": "Ukraine", + "name": "Ukraine 2020", + "authors": "Starfire", + "description": "

Ukrainian military in the 2020s during the Russo-Ukrainian War. This faction is intended for use with the Currenthill Ukraine Asset Pack.

", + "aircrafts": [ + "IL-76MD", + "Mi-24V Hind-E", + "Mi-24P Hind-F", + "Mi-8MTV2 Hip", + "MiG-29S Fulcrum-C", + "Su-24M Fencer-D", + "Su-25 Frogfoot", + "Su-27 Flanker-B", + "F-16CM Fighting Falcon (Block 50)", + "Mirage 2000C", + "[CH] Su-27P1M", + "[CH] MiG-29MU2", + "[CH] Su-24MU" + ], + "awacs": [], + "tankers": [], + "frontline_units": [ + "BMP-2", + "BMP-3", + "BTR-80", + "M1043 HMMWV (M2 HMG)", + "T-72B with Kontakt-1 ERA", + "T-80UD", + "[CH] BTR-4 IFV", + "[CH] BRDM-2L1 ARV", + "[CH] Kozak-5 APC", + "[CH] KrAZ Spartan APC", + "[CH] T-64BV MBT", + "[CH] T-84 Oplot-M MBT" + ], + "artillery_units": [], + "logistics_units": [ + "LUV UAZ-469 Jeep", + "Truck Ural-375", + "[CH] KrAZ-6322 Truck" + ], + "infantry_units": [ + "Infantry AK-74 Rus", + "MANPADS SA-18 Igla-S \"Grouse\"", + "Paratrooper AKS", + "Paratrooper RPG-16", + "[CH] Alligator Sniper AMR", + "[CH] Stugna-P ATGM" + ], + "missiles": [], + "preset_groups": [ + "SA-5/S-200", + "SA-3/S-125", + "SA-6", + "SA-11", + "SA-10/S-300PS", + "SA-17", + "SA-20/S-300PMU-1", + "Hawk", + "Patriot", + "NASAMS AIM-120C" + ], + "naval_units": [], + "air_defense_units": [ + "SAM SA-10 S-300 \"Grumble\" Big Bird SR", + "SAM SA-8 Osa \"Gecko\" TEL", + "SA-9 Strela", + "SA-13 Gopher (9K35 Strela-10M3)", + "SA-15 Tor", + "SA-19 Grison (2K22 Tunguska)", + "ZSU-23-4 Shilka", + "M1097 Heavy HMMWV Avenger" + ], + "requirements": { + "Currenthill Ukraine Asset Pack": "https://www.currenthill.com/ukraine" + }, + "has_jtac": true, + "jtac_unit": "MQ-9 Reaper", + "unrestricted_satnav": true +} \ No newline at end of file diff --git a/resources/ui/units/aircrafts/banners/CH_Su-27P1M.jpg b/resources/ui/units/aircrafts/banners/CH_Su-27P1M.jpg new file mode 100644 index 00000000..cdcbeca1 Binary files /dev/null and b/resources/ui/units/aircrafts/banners/CH_Su-27P1M.jpg differ diff --git a/resources/ui/units/aircrafts/banners/MiG-29MU2.jpg b/resources/ui/units/aircrafts/banners/MiG-29MU2.jpg new file mode 100644 index 00000000..5a1cf740 Binary files /dev/null and b/resources/ui/units/aircrafts/banners/MiG-29MU2.jpg differ diff --git a/resources/ui/units/aircrafts/banners/Su-24MU.jpg b/resources/ui/units/aircrafts/banners/Su-24MU.jpg new file mode 100644 index 00000000..5ed546f3 Binary files /dev/null and b/resources/ui/units/aircrafts/banners/Su-24MU.jpg differ diff --git a/resources/ui/units/aircrafts/icons/CH_Su-27P1M_24.jpg b/resources/ui/units/aircrafts/icons/CH_Su-27P1M_24.jpg new file mode 100644 index 00000000..7ce6b045 Binary files /dev/null and b/resources/ui/units/aircrafts/icons/CH_Su-27P1M_24.jpg differ diff --git a/resources/ui/units/aircrafts/icons/MiG-29MU2_24.jpg b/resources/ui/units/aircrafts/icons/MiG-29MU2_24.jpg new file mode 100644 index 00000000..32c2c425 Binary files /dev/null and b/resources/ui/units/aircrafts/icons/MiG-29MU2_24.jpg differ diff --git a/resources/ui/units/aircrafts/icons/Su-24MU_24.jpg b/resources/ui/units/aircrafts/icons/Su-24MU_24.jpg new file mode 100644 index 00000000..94457607 Binary files /dev/null and b/resources/ui/units/aircrafts/icons/Su-24MU_24.jpg differ diff --git a/resources/units/aircraft/CH_Su-27P1M.yaml b/resources/units/aircraft/CH_Su-27P1M.yaml new file mode 100644 index 00000000..2daa7f1a --- /dev/null +++ b/resources/units/aircraft/CH_Su-27P1M.yaml @@ -0,0 +1,35 @@ +description: + The Su-27, NATO codename Flanker, is one of the pillars of modern-day + Russian combat aviation. Built to counter the American F-15 Eagle, the Flanker is + a twin-engine, supersonic, highly manoeuvrable air superiority fighter. The Flanker + is equally capable of engaging targets well beyond visual range as it is in a dogfight + given its amazing slow speed and high angle attack manoeuvrability. Using its radar + and stealthy infrared search and track system, the Flanker can employ a wide array + of radar and infrared guided missiles. The Flanker also includes a helmet-mounted + sight that allows you to simply look at a target to lock it up! In addition to its + powerful air-to-air capabilities, the Flanker can also be armed with bombs and unguided + rockets to fulfil a secondary ground attack role. +introduced: 1985 +manufacturer: Sukhoi +origin: USSR/Russia +price: 18 +role: Air-Superiority Fighter +max_range: 300 +default_livery: Air Force Standard +variants: + "[CH] Su-27P1M": {} +kneeboard_units: "metric" +tasks: + BARCAP: 480 + BAI: 650 + CAS: 650 + DEAD: 420 + Escort: 480 + Fighter sweep: 480 + Intercept: 480 + OCA/Runway: 440 + OCA/Aircraft: 440 + SEAD: 330 + SEAD Escort: 330 + Strike: 440 + TARCAP: 480 diff --git a/resources/units/aircraft/MiG-29MU2.yaml b/resources/units/aircraft/MiG-29MU2.yaml new file mode 100644 index 00000000..3c1c4ba7 --- /dev/null +++ b/resources/units/aircraft/MiG-29MU2.yaml @@ -0,0 +1,45 @@ +description: + 'The MiG-29 "Fulcrum" is a Russian-designed, twin-engine, supersonic + fighter. First operational in the early 1980s, the Fulcrum is a "light weight" fighter, + comparable to the American F/A-18 Hornet and F-16. Designed to work in conjunction + with the larger Su-27 Flanker, the MiG-29 is armed with an internal 30mm cannon + and both infrared and radar guided air-to-air missiles. For air-to-ground tasks, + the MiG-29 can be armed with a large array of unguided bombs and rockets. + + + In addition to a sophisticated pulse doppler radar, the MiG-29 is also equipped + with a passive Infrared Search and Track (IRST) sensor that allows the Fulcrum to + detect and target enemy aircraft just based on target infrared emissions. This allows + the MiG-29 to make stealthy attacks with no warning! + + + The Fulcrum is a highly-maneuverable fighter in a dogfight, and when paired with + the helmet mounted sight and the AA-11 "Archer" air-to-air missile, it is a very + lethal adversary. + + + The MiG-29 has also been widely exported and has served in many countries that include + Germany, Iran, Ukraine, and Poland.' +introduced: 1993 +manufacturer: Mikoyan +origin: USSR/Russia +price: 18 +role: Multirole Fighter +max_range: 150 +variants: + "[CH] MiG-29MU2": {} +kneeboard_units: "metric" +tasks: + BAI: 540 + BARCAP: 380 + CAS: 540 + DEAD: 380 + Escort: 380 + Fighter sweep: 380 + Intercept: 380 + OCA/Aircraft: 540 + OCA/Runway: 420 + SEAD: 420 + SEAD Escort: 420 + Strike: 420 + TARCAP: 380 diff --git a/resources/units/aircraft/Su-24MU.yaml b/resources/units/aircraft/Su-24MU.yaml new file mode 100644 index 00000000..ed8b0608 --- /dev/null +++ b/resources/units/aircraft/Su-24MU.yaml @@ -0,0 +1,24 @@ +description: + "The Sukhoi Su-24 (NATO reporting name: Fencer) is a supersonic, all-weather + attack aircraft developed in the Soviet Union. The aircraft has a variable-sweep + wing, twin-engines and a side-by-side seating arrangement for its crew of two. It + was the first of the USSR's aircraft to carry an integrated digital navigation/attack + system. It remains in service with the Russian Air Force, Syrian Air Force, Ukrainian + Air Force, Azerbaijan Air Force , Iraqi Air Force and various air forces to which + it was exported." +introduced: 1983 +manufacturer: Sukhoi +origin: USSR/Russia +price: 14 +role: Attack +max_range: 200 +default_livery: af standard +variants: + "[CH] Su-24MU": {} +tasks: + BAI: 610 + CAS: 610 + DEAD: 330 + OCA/Aircraft: 610 + OCA/Runway: 510 + Strike: 510 \ No newline at end of file diff --git a/resources/units/ground_units/BTR-4.yaml b/resources/units/ground_units/BTR-4.yaml new file mode 100644 index 00000000..66fe019d --- /dev/null +++ b/resources/units/ground_units/BTR-4.yaml @@ -0,0 +1,12 @@ +class: IFV +description: "The BTR-4 Bucephalus (Ukrainian: \xD0\x91\xD0\xA2\xD0\xA0\x2D\x34\x20\xC2\xAB\xD0\x91\xD1\x83\xD1\x86\xD0\xB5\xD1\x84\xD0\xB0\xD0\xBB\xC2\xBB, + romanized: Butsefal, abbreviation of \xD0\x91\xD1\x80\xD0\xBE\xD0\xBD\xD0\xB5\xD1\x82\xD1\x80\xD0\xB0\xD0\xBD\xD1\x81\xD0\xBF\xD0\xBE\xD1\x80\xD1\x82\xD0\xB5\xD1\x80\x2C\x20\x42\x72\x6F\x6E\x65\x74\x72\x61\x6E\x73\x70\x6F\x72\x74\x65\x72, + armoured transporter) is an amphibious 8x8 wheeled infantry fighting vehicle (IFV) designed in Ukraine + by the Kharkiv Morozov Machine Building Design Bureau (SOE KMDB)." +introduced: 2014 +manufacturer: Kharkiv Morozov Machine Building Design Bureau +origin: Ukraine +price: 12 +role: Infantry Fighting Vehicle +variants: + "[CH] BTR-4 IFV": {} diff --git a/resources/units/ground_units/CH_Alligator_Sniper.yaml b/resources/units/ground_units/CH_Alligator_Sniper.yaml new file mode 100644 index 00000000..850c9cf8 --- /dev/null +++ b/resources/units/ground_units/CH_Alligator_Sniper.yaml @@ -0,0 +1,5 @@ +class: Infantry +price: 0 +spawn_weight: 1 +variants: + "[CH] Alligator Sniper AMR": null diff --git a/resources/units/ground_units/CH_BRDM2L1.yaml b/resources/units/ground_units/CH_BRDM2L1.yaml new file mode 100644 index 00000000..daf2a3b0 --- /dev/null +++ b/resources/units/ground_units/CH_BRDM2L1.yaml @@ -0,0 +1,16 @@ +class: Recon +description: "The PT-76 is a Soviet amphibious light tank that was introduced in the\ + \ early 1950s and soon became the standard reconnaissance tank of the Soviet Army\ + \ and the other Warsaw Pact armed forces. It was widely exported to other friendly\ + \ states, like India, Iraq, Syria, North Korea and North Vietnam. Overall, some\ + \ 25 countries used the PT-76. The tank's full name is Floating Tank\u201376 (\u043F\ + \u043B\u0430\u0432\u0430\u044E\u0449\u0438\u0439 \u0442\u0430\u043D\u043A, plavayushchiy\ + \ tank, or \u041F\u0422-76). 76 stands for the caliber of the main armament: the\ + \ 76.2 mm D-56T series rifled tank gun." +introduced: 1962 +manufacturer: GAZ +origin: USSR/Russia +price: 6 +role: Amphibious Armoured Car +variants: + "[CH] BRDM-2L1 ARV": {} diff --git a/resources/units/ground_units/CH_Kozak5.yaml b/resources/units/ground_units/CH_Kozak5.yaml new file mode 100644 index 00000000..95a82373 --- /dev/null +++ b/resources/units/ground_units/CH_Kozak5.yaml @@ -0,0 +1,4 @@ +class: IFV +price: 5 +variants: + "[CH] Kozak-5 APC": null \ No newline at end of file diff --git a/resources/units/ground_units/CH_KrAZ6322.yaml b/resources/units/ground_units/CH_KrAZ6322.yaml new file mode 100644 index 00000000..a2c0f697 --- /dev/null +++ b/resources/units/ground_units/CH_KrAZ6322.yaml @@ -0,0 +1,11 @@ +class: Logistics +description: "The KrAZ-6322 is a Ukrainian off-road six-wheel drive truck intended for extreme + conditions. It has been produced since 1994 and is manufactured at the KrAZ factory in Kremenchuk, + Ukraine. It was first presented at the 1994 defence industry trade show in Kyiv." +introduced: 1994 +manufacturer: KrAZ +origin: Ukraine +price: 3 +role: Tactical Transport Vehicle +variants: + "[CH] KrAZ-6322 Truck": {} diff --git a/resources/units/ground_units/CH_KrAZSpartan.yaml b/resources/units/ground_units/CH_KrAZSpartan.yaml new file mode 100644 index 00000000..641062e9 --- /dev/null +++ b/resources/units/ground_units/CH_KrAZSpartan.yaml @@ -0,0 +1,10 @@ +class: IFV +description: "The STREIT Group Spartan is an Infantry mobility vehicle designed and built by + STREIT Group; it is also license produced by KrAZ (Kremenchuk Automobile Plant) in Kremenchuk, Ukraine." +introduced: 2014 +manufacturer: STREIT Group +origin: Ukraine +price: 10 +role: Infantry Fighting Vehicle +variants: + "[CH] KrAZ Spartan APC": {} diff --git a/resources/units/ground_units/CH_Stugna_P.yaml b/resources/units/ground_units/CH_Stugna_P.yaml new file mode 100644 index 00000000..8c1ed49e --- /dev/null +++ b/resources/units/ground_units/CH_Stugna_P.yaml @@ -0,0 +1,5 @@ +class: Infantry +price: 0 +spawn_weight: 2 +variants: + "[CH] Stugna-P ATGM": null diff --git a/resources/units/ground_units/CH_T64BV.yaml b/resources/units/ground_units/CH_T64BV.yaml new file mode 100644 index 00000000..ef58318b --- /dev/null +++ b/resources/units/ground_units/CH_T64BV.yaml @@ -0,0 +1,17 @@ +class: Tank +description: The T-64 is a Soviet second-generation main battle tank, designed by + Kharkiv Morozov Machine Building Design Bureau in Ukraine, introduced in the early + 1960s. It was a more advanced counterpart to the T-62; the T-64 served in tank + divisions, while the T-62 supported infantry in motorized rifle divisions. It + introduced a number of advanced features including composite armour, a compact + engine and transmission, and a smoothbore 125-mm gun equipped with an autoloader + to allow the crew to be reduced to three so the tank could be smaller and lighter. + In spite of being armed and armoured like a heavy tank, the T-64 weighed only 38 + tonnes (42 short tons; 37 long tons). +introduced: 1966 +manufacturer: Kharkiv +origin: USSR/Russia +price: 19 +role: Main Battle Tank +variants: + "[CH] T-64BV MBT": {} diff --git a/resources/units/ground_units/T84_OplotM.yaml b/resources/units/ground_units/T84_OplotM.yaml new file mode 100644 index 00000000..6d98d4e1 --- /dev/null +++ b/resources/units/ground_units/T84_OplotM.yaml @@ -0,0 +1,13 @@ +class: Tank +description: "The T-84 is a Ukrainian main battle tank (MBT), based on the Soviet T-80 MBT + introduced in 1976, specifically the diesel engine version: T-80UD. The T-84 was first built in + 1994 and entered service in the Ukrainian Armed Forces in 1999. Its high-performance opposed-piston + engine makes it a fast tank, comparable to other modern MBTs with a power-to-weight ratio of about + 26 horsepower per tonne (19 kW/t)." +introduced: 1999 +manufacturer: Malyshev Factory +origin: Ukraine +price: 25 +role: Main Battle Tank +variants: + "[CH] T-84 Oplot-M MBT": {}