From 8dab64f4c338d36989673f048c1d18c9ec148a27 Mon Sep 17 00:00:00 2001 From: Raffson Date: Mon, 25 Jul 2022 19:49:21 +0200 Subject: [PATCH] Support for Su-30 mod --- game/ato/ai_flight_planner_db.py | 27 +- game/factions/faction.py | 5 + game/radio/radios.py | 9 + game/theater/start_generator.py | 1 + pydcs_extensions/__init__.py | 1 + pydcs_extensions/su30/__init__.py | 1 + pydcs_extensions/su30/su30.py | 2658 +++++++++++++++++ qt_ui/main.py | 1 + qt_ui/uiconstants.py | 11 + qt_ui/windows/newgame/QNewGameWizard.py | 8 + resources/customized_payloads/Su-30MKA.lua | 530 ++++ resources/customized_payloads/Su-30MKI.lua | 529 ++++ resources/customized_payloads/Su-30MKM.lua | 530 ++++ resources/customized_payloads/Su-30SM.lua | 530 ++++ resources/factions/bluefor_modern.json | 4 + resources/factions/india_2010.json | 3 +- resources/factions/redfor_russia_2010.json | 1 + resources/factions/russia_2020.json | 4 + .../ui/units/aircrafts/banners/Su-30SM_24.jpg | Bin 0 -> 45008 bytes .../ui/units/aircrafts/icons/Su-30MKA_24.jpg | Bin 0 -> 6412 bytes .../ui/units/aircrafts/icons/Su-30MKI_24.jpg | Bin 0 -> 6518 bytes .../ui/units/aircrafts/icons/Su-30MKM_24.jpg | Bin 0 -> 6458 bytes .../ui/units/aircrafts/icons/Su-30SM_24.jpg | Bin 0 -> 6739 bytes resources/units/aircraft/Su-30MKA.yaml | 19 + resources/units/aircraft/Su-30MKI.yaml | 22 + resources/units/aircraft/Su-30MKM.yaml | 25 + resources/units/aircraft/Su-30SM.yaml | 32 + 27 files changed, 4948 insertions(+), 3 deletions(-) create mode 100644 pydcs_extensions/su30/__init__.py create mode 100644 pydcs_extensions/su30/su30.py create mode 100644 resources/customized_payloads/Su-30MKA.lua create mode 100644 resources/customized_payloads/Su-30MKI.lua create mode 100644 resources/customized_payloads/Su-30MKM.lua create mode 100644 resources/customized_payloads/Su-30SM.lua create mode 100644 resources/ui/units/aircrafts/banners/Su-30SM_24.jpg create mode 100644 resources/ui/units/aircrafts/icons/Su-30MKA_24.jpg create mode 100644 resources/ui/units/aircrafts/icons/Su-30MKI_24.jpg create mode 100644 resources/ui/units/aircrafts/icons/Su-30MKM_24.jpg create mode 100644 resources/ui/units/aircrafts/icons/Su-30SM_24.jpg create mode 100644 resources/units/aircraft/Su-30MKA.yaml create mode 100644 resources/units/aircraft/Su-30MKI.yaml create mode 100644 resources/units/aircraft/Su-30MKM.yaml create mode 100644 resources/units/aircraft/Su-30SM.yaml diff --git a/game/ato/ai_flight_planner_db.py b/game/ato/ai_flight_planner_db.py index b40e7fd2..eaae8b5a 100644 --- a/game/ato/ai_flight_planner_db.py +++ b/game/ato/ai_flight_planner_db.py @@ -126,6 +126,7 @@ from pydcs_extensions.f15d.f15d import F_15D from pydcs_extensions.f22a.f22a import F_22A from pydcs_extensions.hercules.hercules import Hercules from pydcs_extensions.jas39.jas39 import JAS39Gripen, JAS39Gripen_AG +from pydcs_extensions.su30.su30 import Su_30MKA, Su_30MKI, Su_30MKM, Su_30SM from pydcs_extensions.su57.su57 import Su_57 from pydcs_extensions.uh60l.uh60l import KC130J, UH_60L from .flighttype import FlightType @@ -148,6 +149,10 @@ CAP_CAPABLE = [ Su_33, J_11A, Su_30, + Su_30MKA, + Su_30MKI, + Su_30MKM, + Su_30SM, Su_27, MiG_29S, F_16C_50, @@ -228,6 +233,10 @@ CAS_CAPABLE = [ F_4E, S_3B, Su_30, + Su_30MKA, + Su_30MKI, + Su_30MKM, + Su_30SM, MiG_29S, MiG_27K, MiG_29A, @@ -301,6 +310,10 @@ SEAD_CAPABLE = [ Su_17M4, Su_34, Su_30, + Su_30MKA, + Su_30MKI, + Su_30MKM, + Su_30SM, MiG_27K, Tornado_GR4, ] @@ -365,6 +378,10 @@ STRIKE_CAPABLE = [ Su_34, Su_33, Su_30, + Su_30MKA, + Su_30MKI, + Su_30MKM, + Su_30SM, Su_27, MiG_29S, MiG_29G, @@ -421,6 +438,10 @@ ANTISHIP_CAPABLE = [ JF_17, Su_34, Su_30, + Su_30MKA, + Su_30MKI, + Su_30MKM, + Su_30SM, Tornado_IDS, Tornado_GR4, AV8BNA, @@ -438,8 +459,6 @@ ANTISHIP_CAPABLE = [ # https://github.com/dcs-liberation/dcs_liberation/issues/1703 RUNWAY_ATTACK_CAPABLE = [ JF_17, - Su_34, - Su_30, Tornado_IDS, M_2000C, H_6J, @@ -466,6 +485,10 @@ RUNWAY_ATTACK_CAPABLE = [ Su_34, Su_33, Su_30, + Su_30MKA, + Su_30MKI, + Su_30MKM, + Su_30SM, Su_27, MiG_29S, MiG_29G, diff --git a/game/factions/faction.py b/game/factions/faction.py index c1037de2..2de77a28 100644 --- a/game/factions/faction.py +++ b/game/factions/faction.py @@ -302,6 +302,11 @@ class Faction: if not mod_settings.jas39_gripen: self.remove_aircraft("JAS39Gripen") self.remove_aircraft("JAS39Gripen_AG") + if not mod_settings.su30_flanker_h: + self.remove_aircraft("Su-30MKA") + self.remove_aircraft("Su-30MKI") + self.remove_aircraft("Su-30MKM") + self.remove_aircraft("Su-30SM") if not mod_settings.su57_felon: self.remove_aircraft("Su-57") # frenchpack diff --git a/game/radio/radios.py b/game/radio/radios.py index 3523398f..2d74ad05 100644 --- a/game/radio/radios.py +++ b/game/radio/radios.py @@ -246,6 +246,15 @@ RADIOS: List[Radio] = [ ), ), Radio("UHF TRAP 137B", (RadioRange(MHz(225), MHz(400), kHz(25), Modulation.AM),)), + # Su-30 (MKA/MKI/MKM/SM) + Radio( + "R-800", + ( + RadioRange(MHz(30), MHz(88), kHz(25), Modulation.AM), + RadioRange(MHz(108), MHz(174), kHz(25), Modulation.AM), + RadioRange(MHz(225), MHz(400), kHz(25), Modulation.AM), + ), + ), ] diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index 4d16abc6..cf973fa1 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -61,6 +61,7 @@ class ModSettings: hercules: bool = False uh_60l: bool = False jas39_gripen: bool = False + su30_flanker_h: bool = False su57_felon: bool = False frenchpack: bool = False high_digit_sams: bool = False diff --git a/pydcs_extensions/__init__.py b/pydcs_extensions/__init__.py index 3bf436e2..9d3186c7 100644 --- a/pydcs_extensions/__init__.py +++ b/pydcs_extensions/__init__.py @@ -5,6 +5,7 @@ from .frenchpack import * from .hercules import * from .highdigitsams import * from .jas39 import * +from .su30 import * from .su57 import * from .uh60l import * diff --git a/pydcs_extensions/su30/__init__.py b/pydcs_extensions/su30/__init__.py new file mode 100644 index 00000000..b26fc88b --- /dev/null +++ b/pydcs_extensions/su30/__init__.py @@ -0,0 +1 @@ +from .su30 import * diff --git a/pydcs_extensions/su30/su30.py b/pydcs_extensions/su30/su30.py new file mode 100644 index 00000000..65b45cee --- /dev/null +++ b/pydcs_extensions/su30/su30.py @@ -0,0 +1,2658 @@ +from typing import Dict, Any, Set + +from dcs import task +from dcs.liveries_scanner import Liveries +from dcs.planes import PlaneType +from dcs.weapons_data import Weapons + +from game.modsupport import planemod +from pydcs_extensions.weapon_injector import inject_weapons + + +class WeaponsSu30: + APK_9_POD = {"clsid": "{SU30_APK-9}", "name": "APK-9 POD", "weight": 295} + ASTRA_Mk_1___Active_Rdr_AAM = { + "clsid": "{Su30_ASTRA}", + "name": "ASTRA Mk.1 - Active Rdr AAM", + "weight": 154, + } + BRAHMOS_A_Ship = {"clsid": "{BRAHMOS_S}", "name": "BRAHMOS A-Ship", "weight": 2500} + DAMOCLES___Targeting_Pod = { + "clsid": "{DAMOCLES}", + "name": "DAMOCLES - Targeting Pod", + "weight": 208, + } + + I_Derby_ER___Active_Rdr_AAM = { + "clsid": "{Su30_DERBY_ER}", + "name": "I-Derby ER - Active Rdr AAM", + "weight": 118, + } + KAB_1500LG_Pr = { + "clsid": "{SU30_KAB_1500LG_LOADOUT}", + "name": "KAB-1500LG-Pr", + "weight": 1525, + } + KAB_1500t = { + "clsid": "{SU30_KAB_1500Kr_LOADOUT}", + "name": "KAB-1500t", + "weight": 1525, + } + KAB_500S = {"clsid": "{SU30_KAB_500S_LOADOUT}", "name": "KAB-500S", "weight": 500} + KH_29L__AS_14_Kedge___Semi_Act_Laser = { + "clsid": "{SU30_KH29L}", + "name": "KH-29L (AS-14 Kedge), Semi-Act Laser", + "weight": 657, + } + KH_29TE__AS_14_Kedge___TV_Guided = { + "clsid": "{SU30_KH29TE}", + "name": "KH-29TE (AS-14 Kedge), TV Guided", + "weight": 780, + } + KH_29T__AS_14_Kedge___TV_Guided = { + "clsid": "{SU30_KH29T}", + "name": "KH-29T (AS-14 Kedge), TV Guided", + "weight": 670, + } + KH_31AD = {"clsid": "{SU30_KH31AD}", "name": "KH-31AD", "weight": 690} + KH_31PD = {"clsid": "{SU30_KH31PD}", "name": "KH-31PD", "weight": 690} + KH_35A = {"clsid": "{SU30_KH_35}", "name": "KH-35A", "weight": 540} + KH_35UE = {"clsid": "{SU30_KH_35UE}", "name": "KH-35UE", "weight": 540} + KH_38MAE = {"clsid": "{SU30_KH38MAE}", "name": "KH-38MAE", "weight": 520} + KH_38MLE = {"clsid": "{SU30_KH38MLE}", "name": "KH-38MLE", "weight": 520} + KH_38MTE = {"clsid": "{SU30_KH38MTE}", "name": "KH-38MTE", "weight": 1240} + Kh_31A = {"clsid": "{SU30_KH_31A}", "name": "Kh-31A", "weight": 690} + Kh_31P = {"clsid": "{SU30_KH31P}", "name": "Kh-31P", "weight": 690} + Kh_36_Grom_1 = {"clsid": "{SU30_KH36}", "name": "Kh-36 Grom-1", "weight": 690} + Kh_59M = {"clsid": "{SU30_KH59M}", "name": "Kh-59M", "weight": 930} + Kh_59MK = {"clsid": "{SU30_KH59MK}", "name": "Kh-59MK", "weight": 770} + Kh_59MK2 = {"clsid": "{KH_59MK2}", "name": "Kh-59MK2", "weight": None} + Kh_59MK2_ = {"clsid": "{SU30_KH59MK2}", "name": "Kh-59MK2", "weight": 770} + LITENING___Targeting_Pod = { + "clsid": "{LITENING_POD}", + "name": "LITENING - Targeting Pod", + "weight": 1.4789, + } + Rudra_M1 = {"clsid": "{SU30_RudraM1}", "name": "Rudra-M1", "weight": 690} + R_27EA__Active_Rdr_AAM = { + "clsid": "{SU30_R27EA}", + "name": "R-27EA, Active Rdr AAM", + "weight": 350, + } + R_27EP__Passive_Rdr_AAM = { + "clsid": "{SU30_R27EP}", + "name": "R-27EP, Passive Rdr AAM", + "weight": 346, + } + R_27ER__Semi_Active_Rdr_AAM = { + "clsid": "{SU30_R27ER}", + "name": "R-27ER, Semi-Active Rdr AAM", + "weight": 350, + } + R_27ET__IR_AAM = {"clsid": "{SU30_R27ET}", "name": "R-27ET, IR AAM", "weight": 343} + R_27R__Semi_Active_Rdr_AAM = { + "clsid": "{SU30_R27R}", + "name": "R-27R, Semi-Active Rdr AAM", + "weight": 253, + } + R_27T__IR_AAM = {"clsid": "{SU30_R27T}", "name": "R-27T, IR AAM", "weight": 245} + R_77M__Active_Rdr_AAM = { + "clsid": "{SU30_R77M}", + "name": "R-77M, Active Rdr AAM", + "weight": 210, + } + R_77_1__Active_Rdr_AAM = { + "clsid": "{SU30_R771}", + "name": "R-77-1, Active Rdr AAM", + "weight": 190, + } + R_77__Active_Rdr_AAM = { + "clsid": "{SU30_R77}", + "name": "R-77, Active Rdr AAM", + "weight": 175, + } + SAAW_POD = {"clsid": "{SU30_SAAW}", "name": "SAAW POD", "weight": 570} + + +inject_weapons(WeaponsSu30) + + +@planemod +class Su_30MKI(PlaneType): + id = "Su-30MKI" + flyable = True + 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 + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 124 + + panel_radio = { + 1: { + "channels": { + 1: 305, + 2: 264, + 4: 256, + 8: 257, + 16: 261, + 17: 267, + 9: 255, + 18: 251, + 5: 254, + 10: 262, + 20: 266, + 11: 259, + 3: 265, + 6: 250, + 12: 268, + 13: 269, + 7: 270, + 14: 260, + 19: 253, + 15: 263, + }, + }, + 2: { + "channels": { + 1: 305, + 2: 264, + 4: 256, + 8: 257, + 16: 261, + 17: 267, + 9: 255, + 18: 251, + 5: 254, + 10: 262, + 20: 266, + 11: 259, + 3: 265, + 6: 250, + 12: 268, + 13: 269, + 7: 270, + 14: 260, + 19: 253, + 15: 263, + }, + }, + } + + property_defaults: Dict[str, Any] = { + "SoloFlight": False, + "NetCrewControlPriority": 1, + "MOUNTSURA": False, + } + + class Properties: + class SoloFlight: + id = "SoloFlight" + + class NetCrewControlPriority: + id = "NetCrewControlPriority" + + class Values: + Pilot = 0 + Co_Pilot = 1 + Ask_Always = -1 + Equally_Responsible = -2 + + class MOUNTSURA: + id = "MOUNTSURA" + + livery_name = "SU-30MKI" # from type + Liveries = Liveries()[livery_name] + + class Pylon1: + R_73__AA_11_Archer____Infra_Red = (1, Weapons.R_73__AA_11_Archer____Infra_Red) + L005_Sorbtsiya_ECM_pod__left_ = (1, Weapons.L005_Sorbtsiya_ECM_pod__left_) + Smoke_Generator___red = (1, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (1, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (1, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (1, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (1, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (1, Weapons.Smoke_Generator___orange) + + class Pylon2: + R_73__AA_11_Archer____Infra_Red = (2, Weapons.R_73__AA_11_Archer____Infra_Red) + ASTRA_Mk_1___Active_Rdr_AAM = (2, WeaponsSu30.ASTRA_Mk_1___Active_Rdr_AAM) + I_Derby_ER___Active_Rdr_AAM = (2, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + Smoke_Generator___red = (2, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (2, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (2, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (2, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (2, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (2, Weapons.Smoke_Generator___orange) + + class Pylon3: + R_73__AA_11_Archer____Infra_Red = (3, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (3, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (3, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (3, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (3, WeaponsSu30.R_27ET__IR_AAM) + ASTRA_Mk_1___Active_Rdr_AAM = (3, WeaponsSu30.ASTRA_Mk_1___Active_Rdr_AAM) + I_Derby_ER___Active_Rdr_AAM = (3, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (3, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (3, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (3, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (3, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr = ( + 3, + Weapons.Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 3, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 3, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + Kh_59M = (3, WeaponsSu30.Kh_59M) + Kh_59MK = (3, WeaponsSu30.Kh_59MK) + Kh_31A = (3, WeaponsSu30.Kh_31A) + Kh_31P = (3, WeaponsSu30.Kh_31P) + KH_35A = (3, WeaponsSu30.KH_35A) + Rudra_M1 = (3, WeaponsSu30.Rudra_M1) + SAAW_POD = (3, WeaponsSu30.SAAW_POD) + KAB_500Kr___500kg_TV_Guided_Bomb = (3, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (3, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 3, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 3, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (3, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 3, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 3, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 3, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 3, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + 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, + ) + _2_x_B_13L___5_S_13_OF = (3, Weapons._2_x_B_13L___5_S_13_OF) + _2_x_B_8M1___20_S_8KOM = (3, Weapons._2_x_B_8M1___20_S_8KOM) + _2_x_S_25 = (3, Weapons._2_x_S_25) + + class Pylon4: + R_73__AA_11_Archer____Infra_Red = (4, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27ER__Semi_Active_Rdr_AAM = (4, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (4, WeaponsSu30.R_27ET__IR_AAM) + I_Derby_ER___Active_Rdr_AAM = (4, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (4, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (4, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (4, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (4, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr = ( + 4, + Weapons.Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 4, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 4, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + Kh_59M = (4, WeaponsSu30.Kh_59M) + Kh_59MK = (4, WeaponsSu30.Kh_59MK) + Kh_31A = (4, WeaponsSu30.Kh_31A) + Kh_31P = (4, WeaponsSu30.Kh_31P) + KH_35A = (4, WeaponsSu30.KH_35A) + Rudra_M1 = (4, WeaponsSu30.Rudra_M1) + SAAW_POD = (4, WeaponsSu30.SAAW_POD) + KAB_500Kr___500kg_TV_Guided_Bomb = (4, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (4, WeaponsSu30.KAB_500S) + KAB_1500t = (4, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (4, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 4, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 4, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 4, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (4, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 4, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 4, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (4, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 4, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (4, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 4, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 4, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_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, + ) + + class Pylon5: + R_27ER__Semi_Active_Rdr_AAM = (5, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + I_Derby_ER___Active_Rdr_AAM = (5, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (5, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (5, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (5, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (5, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr = ( + 5, + Weapons.Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 5, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 5, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + Kh_31A = (5, WeaponsSu30.Kh_31A) + Kh_31P = (5, WeaponsSu30.Kh_31P) + Rudra_M1 = (5, WeaponsSu30.Rudra_M1) + APK_9_POD = (5, WeaponsSu30.APK_9_POD) + KAB_500Kr___500kg_TV_Guided_Bomb = (5, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (5, WeaponsSu30.KAB_500S) + P_50T___50kg_Practice_Bomb_LD = (5, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 5, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 5, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (5, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 5, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (5, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 5, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 5, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + L_081_Fantasmagoria_ELINT_pod = (5, Weapons.L_081_Fantasmagoria_ELINT_pod) + + class Pylon6: + R_77__Active_Rdr_AAM = (6, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (6, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (6, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (6, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + I_Derby_ER___Active_Rdr_AAM = (6, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + # ERRR {BRAHMOS} + BRAHMOS_A_Ship = (6, WeaponsSu30.BRAHMOS_A_Ship) + KAB_500Kr___500kg_TV_Guided_Bomb = (6, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (6, WeaponsSu30.KAB_500S) + KAB_1500t = (6, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (6, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 6, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 6, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 6, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (6, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 6, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 6, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (6, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 6, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (6, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 6, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag = ( + 6, + Weapons.RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag, + ) + RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP = ( + 6, + Weapons.RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP, + ) + + class Pylon7: + R_77__Active_Rdr_AAM = (7, WeaponsSu30.R_77__Active_Rdr_AAM) + I_Derby_ER___Active_Rdr_AAM = (7, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (7, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (7, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (7, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + KAB_500Kr___500kg_TV_Guided_Bomb = (7, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (7, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 7, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 7, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (7, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 7, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 7, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (7, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 7, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (7, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 7, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 7, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + # ERRR + RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag = ( + 7, + Weapons.RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag, + ) + RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP = ( + 7, + Weapons.RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP, + ) + + class Pylon8: + R_27ET__IR_AAM = (8, WeaponsSu30.R_27ET__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (8, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (8, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (8, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (8, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + I_Derby_ER___Active_Rdr_AAM = (8, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (8, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr = ( + 8, + Weapons.Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 8, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 8, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + Kh_59M = (8, WeaponsSu30.Kh_59M) + Kh_59MK = (8, WeaponsSu30.Kh_59MK) + Kh_31A = (8, WeaponsSu30.Kh_31A) + Kh_31P = (8, WeaponsSu30.Kh_31P) + Rudra_M1 = (8, WeaponsSu30.Rudra_M1) + KAB_500Kr___500kg_TV_Guided_Bomb = (8, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (8, WeaponsSu30.KAB_500S) + P_50T___50kg_Practice_Bomb_LD = (8, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 8, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 8, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (8, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 8, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (8, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 8, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + LITENING___Targeting_Pod = (8, WeaponsSu30.LITENING___Targeting_Pod) + + class Pylon9: + R_73__AA_11_Archer____Infra_Red = (9, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27ER__Semi_Active_Rdr_AAM = (9, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (9, WeaponsSu30.R_27ET__IR_AAM) + R_77_1__Active_Rdr_AAM = (9, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (9, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (9, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + I_Derby_ER___Active_Rdr_AAM = (9, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (9, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr = ( + 9, + Weapons.Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 9, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 9, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + Kh_59M = (9, WeaponsSu30.Kh_59M) + Kh_59MK = (9, WeaponsSu30.Kh_59MK) + Kh_31A = (9, WeaponsSu30.Kh_31A) + Kh_31P = (9, WeaponsSu30.Kh_31P) + KH_35A = (9, WeaponsSu30.KH_35A) + Rudra_M1 = (9, WeaponsSu30.Rudra_M1) + SAAW_POD = (9, WeaponsSu30.SAAW_POD) + KAB_500Kr___500kg_TV_Guided_Bomb = (9, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (9, WeaponsSu30.KAB_500S) + KAB_1500t = (9, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (9, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 9, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 9, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 9, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (9, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 9, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 9, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (9, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 9, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (9, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 9, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 9, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 9, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + + class Pylon10: + R_73__AA_11_Archer____Infra_Red = (10, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (10, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (10, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (10, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (10, WeaponsSu30.R_27ET__IR_AAM) + ASTRA_Mk_1___Active_Rdr_AAM = (10, WeaponsSu30.ASTRA_Mk_1___Active_Rdr_AAM) + I_Derby_ER___Active_Rdr_AAM = (10, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (10, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (10, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (10, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + R_77__Active_Rdr_AAM = (10, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr = ( + 10, + Weapons.Kh_31P__AS_17_Krypton____600kg__ARM__IN__Pas_Rdr, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 10, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 10, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + Kh_59M = (10, WeaponsSu30.Kh_59M) + Kh_59MK = (10, WeaponsSu30.Kh_59MK) + Kh_31A = (10, WeaponsSu30.Kh_31A) + Kh_31P = (10, WeaponsSu30.Kh_31P) + KH_35A = (10, WeaponsSu30.KH_35A) + Rudra_M1 = (10, WeaponsSu30.Rudra_M1) + SAAW_POD = (10, WeaponsSu30.SAAW_POD) + KAB_500Kr___500kg_TV_Guided_Bomb = ( + 10, + Weapons.KAB_500Kr___500kg_TV_Guided_Bomb, + ) + KAB_500S = (10, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 10, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 10, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (10, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 10, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 10, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (10, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 10, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (10, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 10, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 10, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 10, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + _2_x_B_13L___5_S_13_OF = (10, Weapons._2_x_B_13L___5_S_13_OF) + _2_x_B_8M1___20_S_8KOM = (10, Weapons._2_x_B_8M1___20_S_8KOM) + _2_x_S_25 = (10, Weapons._2_x_S_25) + + class Pylon11: + R_73__AA_11_Archer____Infra_Red = (11, Weapons.R_73__AA_11_Archer____Infra_Red) + ASTRA_Mk_1___Active_Rdr_AAM = (11, WeaponsSu30.ASTRA_Mk_1___Active_Rdr_AAM) + I_Derby_ER___Active_Rdr_AAM = (11, WeaponsSu30.I_Derby_ER___Active_Rdr_AAM) + Smoke_Generator___red = (11, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (11, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (11, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (11, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (11, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (11, Weapons.Smoke_Generator___orange) + + class Pylon12: + R_73__AA_11_Archer____Infra_Red = (12, Weapons.R_73__AA_11_Archer____Infra_Red) + L005_Sorbtsiya_ECM_pod__right_ = (12, Weapons.L005_Sorbtsiya_ECM_pod__right_) + Smoke_Generator___red = (12, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (12, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (12, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (12, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (12, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (12, Weapons.Smoke_Generator___orange) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} + + 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 Su_30MKA(PlaneType): + id = "Su-30MKA" + flyable = True + height = 5.932 + width = 14.7 + length = 21.935 + fuel_max = 9500 + max_speed = 2499.984 + chaff = 96 + flare = 96 + charge_total = 192 + chaff_charge_size = 1 + flare_charge_size = 1 + eplrs = True + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 124 + + panel_radio = { + 1: { + "channels": { + 1: 305, + 2: 264, + 4: 256, + 8: 257, + 16: 261, + 17: 267, + 9: 255, + 18: 251, + 5: 254, + 10: 262, + 20: 266, + 11: 259, + 3: 265, + 6: 250, + 12: 268, + 13: 269, + 7: 270, + 14: 260, + 19: 253, + 15: 263, + }, + }, + 2: { + "channels": { + 1: 305, + 2: 264, + 4: 256, + 8: 257, + 16: 261, + 17: 267, + 9: 255, + 18: 251, + 5: 254, + 10: 262, + 20: 266, + 11: 259, + 3: 265, + 6: 250, + 12: 268, + 13: 269, + 7: 270, + 14: 260, + 19: 253, + 15: 263, + }, + }, + } + + property_defaults: Dict[str, Any] = { + "SoloFlight": False, + "NetCrewControlPriority": 1, + "MOUNTSURA": False, + } + + class Properties: + class SoloFlight: + id = "SoloFlight" + + class NetCrewControlPriority: + id = "NetCrewControlPriority" + + class Values: + Pilot = 0 + Co_Pilot = 1 + Ask_Always = -1 + Equally_Responsible = -2 + + class MOUNTSURA: + id = "MOUNTSURA" + + livery_name = "SU-30MKA" # from type + Liveries = Liveries()[livery_name] + + class Pylon1: + R_73__AA_11_Archer____Infra_Red = (1, Weapons.R_73__AA_11_Archer____Infra_Red) + L005_Sorbtsiya_ECM_pod__left_ = (1, Weapons.L005_Sorbtsiya_ECM_pod__left_) + Smoke_Generator___red = (1, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (1, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (1, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (1, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (1, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (1, Weapons.Smoke_Generator___orange) + + class Pylon2: + R_73__AA_11_Archer____Infra_Red = (2, Weapons.R_73__AA_11_Archer____Infra_Red) + Smoke_Generator___red = (2, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (2, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (2, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (2, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (2, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (2, Weapons.Smoke_Generator___orange) + + class Pylon3: + R_73__AA_11_Archer____Infra_Red = (3, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (3, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (3, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (3, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (3, WeaponsSu30.R_27ET__IR_AAM) + R_77__Active_Rdr_AAM = (3, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (3, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 3, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 3, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 3, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (3, WeaponsSu30.Kh_59M) + Kh_59MK = (3, WeaponsSu30.Kh_59MK) + Kh_31A = (3, WeaponsSu30.Kh_31A) + KH_35A = (3, WeaponsSu30.KH_35A) + KAB_500Kr___500kg_TV_Guided_Bomb = (3, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (3, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 3, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 3, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (3, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 3, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 3, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 3, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 3, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + 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, + ) + _2_x_B_13L___5_S_13_OF = (3, Weapons._2_x_B_13L___5_S_13_OF) + _2_x_B_8M1___20_S_8KOM = (3, Weapons._2_x_B_8M1___20_S_8KOM) + _2_x_S_25 = (3, Weapons._2_x_S_25) + + class Pylon4: + R_73__AA_11_Archer____Infra_Red = (4, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (4, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (4, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (4, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (4, WeaponsSu30.R_27ET__IR_AAM) + R_77__Active_Rdr_AAM = (4, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (4, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 4, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 4, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 4, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (4, WeaponsSu30.Kh_59M) + Kh_59MK = (4, WeaponsSu30.Kh_59MK) + Kh_31A = (4, WeaponsSu30.Kh_31A) + KH_35A = (4, WeaponsSu30.KH_35A) + KAB_500Kr___500kg_TV_Guided_Bomb = (4, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (4, WeaponsSu30.KAB_500S) + KAB_1500t = (4, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (4, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 4, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 4, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 4, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (4, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 4, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 4, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (4, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 4, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (4, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 4, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 4, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_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, + ) + + class Pylon5: + R_27R__Semi_Active_Rdr_AAM = (5, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (5, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (5, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (5, WeaponsSu30.Kh_31P) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 5, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 5, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 5, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_31A = (5, WeaponsSu30.Kh_31A) + KAB_500Kr___500kg_TV_Guided_Bomb = (5, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (5, WeaponsSu30.KAB_500S) + P_50T___50kg_Practice_Bomb_LD = (5, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 5, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 5, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (5, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 5, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (5, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 5, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 5, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + APK_9_POD = (5, WeaponsSu30.APK_9_POD) + + class Pylon6: + R_27R__Semi_Active_Rdr_AAM = (6, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (6, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (6, WeaponsSu30.R_77__Active_Rdr_AAM) + KAB_500Kr___500kg_TV_Guided_Bomb = (6, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (6, WeaponsSu30.KAB_500S) + KAB_1500t = (6, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (6, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 6, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 6, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 6, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (6, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 6, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 6, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (6, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 6, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (6, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 6, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag = ( + 6, + Weapons.RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag, + ) + RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP = ( + 6, + Weapons.RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP, + ) + + class Pylon7: + R_27R__Semi_Active_Rdr_AAM = (7, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (7, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (7, WeaponsSu30.R_77__Active_Rdr_AAM) + KAB_500Kr___500kg_TV_Guided_Bomb = (7, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (7, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 7, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 7, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (7, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 7, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 7, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (7, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 7, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (7, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 7, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 7, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag = ( + 7, + Weapons.RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag, + ) + RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP = ( + 7, + Weapons.RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP, + ) + + class Pylon8: + R_27R__Semi_Active_Rdr_AAM = (8, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (8, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (8, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (8, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 8, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 8, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 8, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_31A = (8, WeaponsSu30.Kh_31A) + KAB_500Kr___500kg_TV_Guided_Bomb = (8, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (8, WeaponsSu30.KAB_500S) + P_50T___50kg_Practice_Bomb_LD = (8, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 8, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 8, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (8, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 8, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (8, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 8, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + DAMOCLES___Targeting_Pod = (8, WeaponsSu30.DAMOCLES___Targeting_Pod) + + class Pylon9: + R_73__AA_11_Archer____Infra_Red = (9, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (9, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (9, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (9, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (9, WeaponsSu30.R_27ET__IR_AAM) + R_77__Active_Rdr_AAM = (9, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (9, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 9, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 9, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 9, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (9, WeaponsSu30.Kh_59M) + Kh_59MK = (9, WeaponsSu30.Kh_59MK) + Kh_31A = (9, WeaponsSu30.Kh_31A) + KH_35A = (9, WeaponsSu30.KH_35A) + KAB_500Kr___500kg_TV_Guided_Bomb = (9, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (9, WeaponsSu30.KAB_500S) + KAB_1500t = (9, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (9, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 9, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 9, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 9, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (9, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 9, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 9, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (9, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 9, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (9, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 9, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 9, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 9, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + + class Pylon10: + R_73__AA_11_Archer____Infra_Red = (10, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (10, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (10, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (10, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (10, WeaponsSu30.R_27ET__IR_AAM) + R_77__Active_Rdr_AAM = (10, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (10, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 10, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 10, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 10, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (10, WeaponsSu30.Kh_59M) + Kh_59MK = (10, WeaponsSu30.Kh_59MK) + Kh_31A = (10, WeaponsSu30.Kh_31A) + KH_35A = (10, WeaponsSu30.KH_35A) + KAB_500Kr___500kg_TV_Guided_Bomb = ( + 10, + Weapons.KAB_500Kr___500kg_TV_Guided_Bomb, + ) + KAB_500S = (10, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 10, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 10, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (10, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 10, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 10, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (10, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 10, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (10, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 10, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 10, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 10, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + _2_x_B_13L___5_S_13_OF = (10, Weapons._2_x_B_13L___5_S_13_OF) + _2_x_B_8M1___20_S_8KOM = (10, Weapons._2_x_B_8M1___20_S_8KOM) + _2_x_S_25 = (10, Weapons._2_x_S_25) + + class Pylon11: + R_73__AA_11_Archer____Infra_Red = (11, Weapons.R_73__AA_11_Archer____Infra_Red) + Smoke_Generator___red = (11, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (11, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (11, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (11, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (11, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (11, Weapons.Smoke_Generator___orange) + + class Pylon12: + R_73__AA_11_Archer____Infra_Red = (12, Weapons.R_73__AA_11_Archer____Infra_Red) + L005_Sorbtsiya_ECM_pod__right_ = (12, Weapons.L005_Sorbtsiya_ECM_pod__right_) + Smoke_Generator___red = (12, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (12, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (12, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (12, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (12, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (12, Weapons.Smoke_Generator___orange) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} + + 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 Su_30MKM(PlaneType): + id = "Su-30MKM" + flyable = True + 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 + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 124 + + panel_radio = { + 1: { + "channels": { + 1: 305, + 2: 264, + 4: 256, + 8: 257, + 16: 261, + 17: 267, + 9: 255, + 18: 251, + 5: 254, + 10: 262, + 20: 266, + 11: 259, + 3: 265, + 6: 250, + 12: 268, + 13: 269, + 7: 270, + 14: 260, + 19: 253, + 15: 263, + }, + }, + 2: { + "channels": { + 1: 305, + 2: 264, + 4: 256, + 8: 257, + 16: 261, + 17: 267, + 9: 255, + 18: 251, + 5: 254, + 10: 262, + 20: 266, + 11: 259, + 3: 265, + 6: 250, + 12: 268, + 13: 269, + 7: 270, + 14: 260, + 19: 253, + 15: 263, + }, + }, + } + + property_defaults: Dict[str, Any] = { + "SoloFlight": False, + "NetCrewControlPriority": 1, + } + + class Properties: + class SoloFlight: + id = "SoloFlight" + + class NetCrewControlPriority: + id = "NetCrewControlPriority" + + class Values: + Pilot = 0 + Co_Pilot = 1 + Ask_Always = -1 + Equally_Responsible = -2 + + livery_name = "SU-30MKM" # from type + Liveries = Liveries()[livery_name] + + class Pylon1: + R_73__AA_11_Archer____Infra_Red = (1, Weapons.R_73__AA_11_Archer____Infra_Red) + L005_Sorbtsiya_ECM_pod__left_ = (1, Weapons.L005_Sorbtsiya_ECM_pod__left_) + Smoke_Generator___red = (1, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (1, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (1, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (1, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (1, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (1, Weapons.Smoke_Generator___orange) + + class Pylon2: + R_73__AA_11_Archer____Infra_Red = (2, Weapons.R_73__AA_11_Archer____Infra_Red) + Smoke_Generator___red = (2, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (2, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (2, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (2, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (2, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (2, Weapons.Smoke_Generator___orange) + + class Pylon3: + R_73__AA_11_Archer____Infra_Red = (3, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (3, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (3, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (3, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (3, WeaponsSu30.R_27ET__IR_AAM) + R_77__Active_Rdr_AAM = (3, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (3, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 3, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 3, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 3, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (3, WeaponsSu30.Kh_59M) + Kh_59MK = (3, WeaponsSu30.Kh_59MK) + Kh_31A = (3, WeaponsSu30.Kh_31A) + KH_35A = (3, WeaponsSu30.KH_35A) + KAB_500Kr___500kg_TV_Guided_Bomb = (3, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (3, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 3, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 3, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (3, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 3, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 3, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 3, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 3, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + 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, + ) + _2_x_B_13L___5_S_13_OF = (3, Weapons._2_x_B_13L___5_S_13_OF) + _2_x_B_8M1___20_S_8KOM = (3, Weapons._2_x_B_8M1___20_S_8KOM) + _2_x_S_25 = (3, Weapons._2_x_S_25) + + class Pylon4: + R_73__AA_11_Archer____Infra_Red = (4, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (4, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (4, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (4, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (4, WeaponsSu30.R_27ET__IR_AAM) + R_77__Active_Rdr_AAM = (4, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (4, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 4, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 4, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 4, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (4, WeaponsSu30.Kh_59M) + Kh_59MK = (4, WeaponsSu30.Kh_59MK) + Kh_31A = (4, WeaponsSu30.Kh_31A) + KH_35A = (4, WeaponsSu30.KH_35A) + KAB_500Kr___500kg_TV_Guided_Bomb = (4, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (4, WeaponsSu30.KAB_500S) + KAB_1500t = (4, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (4, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 4, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 4, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 4, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (4, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 4, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 4, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (4, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 4, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (4, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 4, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 4, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_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, + ) + + class Pylon5: + R_27R__Semi_Active_Rdr_AAM = (5, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (5, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (5, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (5, WeaponsSu30.Kh_31P) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 5, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 5, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 5, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_31A = (5, WeaponsSu30.Kh_31A) + KAB_500Kr___500kg_TV_Guided_Bomb = (5, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (5, WeaponsSu30.KAB_500S) + P_50T___50kg_Practice_Bomb_LD = (5, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 5, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 5, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (5, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 5, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (5, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 5, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 5, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + APK_9_POD = (5, WeaponsSu30.APK_9_POD) + + class Pylon6: + R_27R__Semi_Active_Rdr_AAM = (6, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (6, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (6, WeaponsSu30.R_77__Active_Rdr_AAM) + KAB_500Kr___500kg_TV_Guided_Bomb = (6, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (6, WeaponsSu30.KAB_500S) + KAB_1500t = (6, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (6, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 6, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 6, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 6, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (6, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 6, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 6, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (6, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 6, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (6, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 6, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag = ( + 6, + Weapons.RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag, + ) + RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP = ( + 6, + Weapons.RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP, + ) + + class Pylon7: + R_27R__Semi_Active_Rdr_AAM = (7, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (7, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (7, WeaponsSu30.R_77__Active_Rdr_AAM) + KAB_500Kr___500kg_TV_Guided_Bomb = (7, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (7, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 7, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 7, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (7, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 7, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 7, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (7, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 7, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (7, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 7, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 7, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag = ( + 7, + Weapons.RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag, + ) + RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP = ( + 7, + Weapons.RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP, + ) + + class Pylon8: + R_27R__Semi_Active_Rdr_AAM = (8, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (8, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (8, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (8, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 8, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 8, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 8, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_31A = (8, WeaponsSu30.Kh_31A) + KAB_500Kr___500kg_TV_Guided_Bomb = (8, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (8, WeaponsSu30.KAB_500S) + P_50T___50kg_Practice_Bomb_LD = (8, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 8, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 8, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (8, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 8, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (8, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 8, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + DAMOCLES___Targeting_Pod = (8, WeaponsSu30.DAMOCLES___Targeting_Pod) + + class Pylon9: + R_73__AA_11_Archer____Infra_Red = (9, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (9, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (9, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (9, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (9, WeaponsSu30.R_27ET__IR_AAM) + R_77__Active_Rdr_AAM = (9, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (9, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 9, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 9, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 9, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (9, WeaponsSu30.Kh_59M) + Kh_59MK = (9, WeaponsSu30.Kh_59MK) + Kh_31A = (9, WeaponsSu30.Kh_31A) + KH_35A = (9, WeaponsSu30.KH_35A) + KAB_500Kr___500kg_TV_Guided_Bomb = (9, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (9, WeaponsSu30.KAB_500S) + KAB_1500t = (9, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (9, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 9, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 9, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 9, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (9, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 9, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 9, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (9, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 9, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (9, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 9, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 9, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 9, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + + class Pylon10: + R_73__AA_11_Archer____Infra_Red = (10, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (10, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (10, WeaponsSu30.R_27T__IR_AAM) + R_27ER__Semi_Active_Rdr_AAM = (10, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (10, WeaponsSu30.R_27ET__IR_AAM) + R_77__Active_Rdr_AAM = (10, WeaponsSu30.R_77__Active_Rdr_AAM) + Kh_31P = (10, WeaponsSu30.Kh_31P) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 10, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 10, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 10, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (10, WeaponsSu30.Kh_59M) + Kh_59MK = (10, WeaponsSu30.Kh_59MK) + Kh_31A = (10, WeaponsSu30.Kh_31A) + KH_35A = (10, WeaponsSu30.KH_35A) + KAB_500Kr___500kg_TV_Guided_Bomb = ( + 10, + Weapons.KAB_500Kr___500kg_TV_Guided_Bomb, + ) + KAB_500S = (10, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 10, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 10, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (10, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 10, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 10, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (10, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 10, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (10, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 10, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 10, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 10, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + _2_x_B_13L___5_S_13_OF = (10, Weapons._2_x_B_13L___5_S_13_OF) + _2_x_B_8M1___20_S_8KOM = (10, Weapons._2_x_B_8M1___20_S_8KOM) + _2_x_S_25 = (10, Weapons._2_x_S_25) + + class Pylon11: + R_73__AA_11_Archer____Infra_Red = (11, Weapons.R_73__AA_11_Archer____Infra_Red) + Smoke_Generator___red = (11, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (11, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (11, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (11, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (11, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (11, Weapons.Smoke_Generator___orange) + + class Pylon12: + R_73__AA_11_Archer____Infra_Red = (12, Weapons.R_73__AA_11_Archer____Infra_Red) + L005_Sorbtsiya_ECM_pod__right_ = (12, Weapons.L005_Sorbtsiya_ECM_pod__right_) + Smoke_Generator___red = (12, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (12, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (12, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (12, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (12, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (12, Weapons.Smoke_Generator___orange) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} + + 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 Su_30SM(PlaneType): + id = "Su-30SM" + flyable = True + height = 5.932 + width = 14.7 + length = 21.935 + fuel_max = 9500 + max_speed = 2499.984 + chaff = 96 + flare = 96 + charge_total = 192 + chaff_charge_size = 1 + flare_charge_size = 1 + eplrs = True + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 124 + + panel_radio = { + 1: { + "channels": { + 1: 305, + 2: 264, + 4: 256, + 8: 257, + 16: 261, + 17: 267, + 9: 255, + 18: 251, + 5: 254, + 10: 262, + 20: 266, + 11: 259, + 3: 265, + 6: 250, + 12: 268, + 13: 269, + 7: 270, + 14: 260, + 19: 253, + 15: 263, + }, + }, + 2: { + "channels": { + 1: 305, + 2: 264, + 4: 256, + 8: 257, + 16: 261, + 17: 267, + 9: 255, + 18: 251, + 5: 254, + 10: 262, + 20: 266, + 11: 259, + 3: 265, + 6: 250, + 12: 268, + 13: 269, + 7: 270, + 14: 260, + 19: 253, + 15: 263, + }, + }, + } + + property_defaults: Dict[str, Any] = { + "SoloFlight": False, + "NetCrewControlPriority": 1, + "MOUNTSURA": False, + } + + class Properties: + class SoloFlight: + id = "SoloFlight" + + class NetCrewControlPriority: + id = "NetCrewControlPriority" + + class Values: + Pilot = 0 + Flight_officer = 1 + Ask_Always = -1 + Equally_Responsible = -2 + + class MOUNTSURA: + id = "MOUNTSURA" + + livery_name = "SU-30SM" # from type + Liveries = Liveries()[livery_name] + + class Pylon1: + R_73__AA_11_Archer____Infra_Red = (1, Weapons.R_73__AA_11_Archer____Infra_Red) + L005_Sorbtsiya_ECM_pod__left_ = (1, Weapons.L005_Sorbtsiya_ECM_pod__left_) + Smoke_Generator___red = (1, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (1, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (1, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (1, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (1, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (1, Weapons.Smoke_Generator___orange) + + class Pylon2: + R_73__AA_11_Archer____Infra_Red = (2, Weapons.R_73__AA_11_Archer____Infra_Red) + Smoke_Generator___red = (2, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (2, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (2, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (2, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (2, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (2, Weapons.Smoke_Generator___orange) + + class Pylon3: + R_73__AA_11_Archer____Infra_Red = (3, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (3, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (3, WeaponsSu30.R_27T__IR_AAM) + R_27EA__Active_Rdr_AAM = (3, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (3, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (3, WeaponsSu30.R_27ET__IR_AAM) + R_27EP__Passive_Rdr_AAM = (3, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + R_77__Active_Rdr_AAM = (3, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (3, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_77M__Active_Rdr_AAM = (3, WeaponsSu30.R_77M__Active_Rdr_AAM) + Kh_31P = (3, WeaponsSu30.Kh_31P) + Kh_36_Grom_1 = (3, WeaponsSu30.Kh_36_Grom_1) + KH_38MTE = (3, WeaponsSu30.KH_38MTE) + KH_38MLE = (3, WeaponsSu30.KH_38MLE) + KH_38MAE = (3, WeaponsSu30.KH_38MAE) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 3, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 3, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 3, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (3, WeaponsSu30.Kh_59M) + Kh_59MK = (3, WeaponsSu30.Kh_59MK) + Kh_31A = (3, WeaponsSu30.Kh_31A) + KH_35A = (3, WeaponsSu30.KH_35A) + KH_35UE = (3, WeaponsSu30.KH_35UE) + KH_31AD = (3, WeaponsSu30.KH_31AD) + KH_31PD = (3, WeaponsSu30.KH_31PD) + Kh_59MK2_ = (3, WeaponsSu30.Kh_59MK2_) + KAB_500Kr___500kg_TV_Guided_Bomb = (3, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (3, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 3, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 3, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (3, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 3, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 3, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 3, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 3, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + 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, + ) + _2_x_B_13L___5_S_13_OF = (3, Weapons._2_x_B_13L___5_S_13_OF) + _2_x_B_8M1___20_S_8KOM = (3, Weapons._2_x_B_8M1___20_S_8KOM) + _2_x_S_25 = (3, Weapons._2_x_S_25) + + class Pylon4: + R_73__AA_11_Archer____Infra_Red = (4, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (4, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (4, WeaponsSu30.R_27T__IR_AAM) + R_27EA__Active_Rdr_AAM = (4, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (4, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (4, WeaponsSu30.R_27ET__IR_AAM) + R_27EP__Passive_Rdr_AAM = (4, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + R_77__Active_Rdr_AAM = (4, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (4, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_77M__Active_Rdr_AAM = (4, WeaponsSu30.R_77M__Active_Rdr_AAM) + Kh_31P = (4, WeaponsSu30.Kh_31P) + Kh_36_Grom_1 = (4, WeaponsSu30.Kh_36_Grom_1) + KH_38MTE = (4, WeaponsSu30.KH_38MTE) + KH_38MLE = (4, WeaponsSu30.KH_38MLE) + KH_38MAE = (4, WeaponsSu30.KH_38MAE) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 4, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 4, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 4, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (4, WeaponsSu30.Kh_59M) + Kh_59MK = (4, WeaponsSu30.Kh_59MK) + Kh_31A = (4, WeaponsSu30.Kh_31A) + KH_35A = (4, WeaponsSu30.KH_35A) + KH_35UE = (4, WeaponsSu30.KH_35UE) + KH_31AD = (4, WeaponsSu30.KH_31AD) + KH_31PD = (4, WeaponsSu30.KH_31PD) + Kh_59MK2_ = (4, WeaponsSu30.Kh_59MK2_) + KAB_500Kr___500kg_TV_Guided_Bomb = (4, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (4, WeaponsSu30.KAB_500S) + KAB_1500t = (4, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (4, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 4, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 4, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 4, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (4, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 4, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 4, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (4, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 4, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (4, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 4, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 4, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_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, + ) + + class Pylon5: + R_27R__Semi_Active_Rdr_AAM = (5, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (5, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (5, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (5, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + R_77__Active_Rdr_AAM = (5, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (5, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_77M__Active_Rdr_AAM = (5, WeaponsSu30.R_77M__Active_Rdr_AAM) + Kh_31P = (5, WeaponsSu30.Kh_31P) + Kh_36_Grom_1 = (5, WeaponsSu30.Kh_36_Grom_1) + KH_38MTE = (5, WeaponsSu30.KH_38MTE) + KH_38MLE = (5, WeaponsSu30.KH_38MLE) + KH_38MAE = (5, WeaponsSu30.KH_38MAE) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 5, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 5, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 5, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_31A = (5, WeaponsSu30.Kh_31A) + KH_31AD = (5, WeaponsSu30.KH_31AD) + KH_31PD = (5, WeaponsSu30.KH_31PD) + KAB_500Kr___500kg_TV_Guided_Bomb = (5, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (5, WeaponsSu30.KAB_500S) + P_50T___50kg_Practice_Bomb_LD = (5, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 5, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 5, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (5, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 5, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (5, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 5, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 5, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + APK_9_POD = (5, WeaponsSu30.APK_9_POD) + + class Pylon6: + R_27R__Semi_Active_Rdr_AAM = (6, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (6, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (6, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (6, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (6, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_77M__Active_Rdr_AAM = (6, WeaponsSu30.R_77M__Active_Rdr_AAM) + KAB_500Kr___500kg_TV_Guided_Bomb = (6, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (6, WeaponsSu30.KAB_500S) + KAB_1500t = (6, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (6, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 6, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 6, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 6, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (6, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 6, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 6, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (6, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 6, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (6, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 6, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag = ( + 6, + Weapons.RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag, + ) + RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP = ( + 6, + Weapons.RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP, + ) + + class Pylon7: + R_27R__Semi_Active_Rdr_AAM = (7, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (7, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (7, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_77__Active_Rdr_AAM = (7, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (7, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_77M__Active_Rdr_AAM = (7, WeaponsSu30.R_77M__Active_Rdr_AAM) + KAB_500Kr___500kg_TV_Guided_Bomb = (7, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (7, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 7, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 7, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (7, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 7, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 7, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (7, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 7, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (7, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 7, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 7, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag = ( + 7, + Weapons.RBK_500U___126_x_OAB_2_5RT__500kg_CBU_HE_Frag, + ) + RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP = ( + 7, + Weapons.RBK_500___268_x_PTAB_1M__500kg_CBU_Light_HEAT_AP, + ) + + class Pylon8: + R_27R__Semi_Active_Rdr_AAM = (8, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27EA__Active_Rdr_AAM = (8, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (8, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27EP__Passive_Rdr_AAM = (8, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + R_77__Active_Rdr_AAM = (8, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (8, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_77M__Active_Rdr_AAM = (8, WeaponsSu30.R_77M__Active_Rdr_AAM) + Kh_31P = (8, WeaponsSu30.Kh_31P) + Kh_36_Grom_1 = (8, WeaponsSu30.Kh_36_Grom_1) + KH_38MTE = (8, WeaponsSu30.KH_38MTE) + KH_38MLE = (8, WeaponsSu30.KH_38MLE) + KH_38MAE = (8, WeaponsSu30.KH_38MAE) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 8, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 8, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 8, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_31A = (8, WeaponsSu30.Kh_31A) + KH_31AD = (8, WeaponsSu30.KH_31AD) + KH_31PD = (8, WeaponsSu30.KH_31PD) + KAB_500Kr___500kg_TV_Guided_Bomb = (8, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (8, WeaponsSu30.KAB_500S) + P_50T___50kg_Practice_Bomb_LD = (8, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 8, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 8, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (8, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 8, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (8, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 8, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + 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, + ) + DAMOCLES___Targeting_Pod = (8, WeaponsSu30.DAMOCLES___Targeting_Pod) + + class Pylon9: + R_73__AA_11_Archer____Infra_Red = (9, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (9, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (9, WeaponsSu30.R_27T__IR_AAM) + R_27EA__Active_Rdr_AAM = (9, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (9, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (9, WeaponsSu30.R_27ET__IR_AAM) + R_27EP__Passive_Rdr_AAM = (9, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + R_77__Active_Rdr_AAM = (9, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (9, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_77M__Active_Rdr_AAM = (9, WeaponsSu30.R_77M__Active_Rdr_AAM) + Kh_31P = (9, WeaponsSu30.Kh_31P) + Kh_36_Grom_1 = (9, WeaponsSu30.Kh_36_Grom_1) + KH_38MTE = (9, WeaponsSu30.KH_38MTE) + KH_38MLE = (9, WeaponsSu30.KH_38MLE) + KH_38MAE = (9, WeaponsSu30.KH_38MAE) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 9, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 9, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 9, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (9, WeaponsSu30.Kh_59M) + Kh_59MK = (9, WeaponsSu30.Kh_59MK) + Kh_31A = (9, WeaponsSu30.Kh_31A) + KH_35A = (9, WeaponsSu30.KH_35A) + KH_35UE = (9, WeaponsSu30.KH_35UE) + KH_31AD = (9, WeaponsSu30.KH_31AD) + KH_31PD = (9, WeaponsSu30.KH_31PD) + Kh_59MK2_ = (9, WeaponsSu30.Kh_59MK2_) + KAB_500Kr___500kg_TV_Guided_Bomb = (9, Weapons.KAB_500Kr___500kg_TV_Guided_Bomb) + KAB_500S = (9, WeaponsSu30.KAB_500S) + KAB_1500t = (9, WeaponsSu30.KAB_1500t) + KAB_1500LG_Pr = (9, WeaponsSu30.KAB_1500LG_Pr) + KAB_1500L___1500kg_Laser_Guided_Bomb = ( + 9, + Weapons.KAB_1500L___1500kg_Laser_Guided_Bomb, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 9, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 9, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (9, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 9, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 9, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (9, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 9, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (9, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 9, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 9, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 9, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + + class Pylon10: + R_73__AA_11_Archer____Infra_Red = (10, Weapons.R_73__AA_11_Archer____Infra_Red) + R_27R__Semi_Active_Rdr_AAM = (10, WeaponsSu30.R_27R__Semi_Active_Rdr_AAM) + R_27T__IR_AAM = (10, WeaponsSu30.R_27T__IR_AAM) + R_27EA__Active_Rdr_AAM = (10, WeaponsSu30.R_27EA__Active_Rdr_AAM) + R_27ER__Semi_Active_Rdr_AAM = (10, WeaponsSu30.R_27ER__Semi_Active_Rdr_AAM) + R_27ET__IR_AAM = (10, WeaponsSu30.R_27ET__IR_AAM) + R_27EP__Passive_Rdr_AAM = (10, WeaponsSu30.R_27EP__Passive_Rdr_AAM) + R_77__Active_Rdr_AAM = (10, WeaponsSu30.R_77__Active_Rdr_AAM) + R_77_1__Active_Rdr_AAM = (10, WeaponsSu30.R_77_1__Active_Rdr_AAM) + R_77M__Active_Rdr_AAM = (10, WeaponsSu30.R_77M__Active_Rdr_AAM) + Kh_31P = (10, WeaponsSu30.Kh_31P) + Kh_36_Grom_1 = (10, WeaponsSu30.Kh_36_Grom_1) + KH_38MTE = (10, WeaponsSu30.KH_38MTE) + KH_38MLE = (10, WeaponsSu30.KH_38MLE) + KH_38MAE = (10, WeaponsSu30.KH_38MAE) + Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_ = ( + 10, + Weapons.Kh_29T__AS_14_Kedge____670kg__ASM__TV_Guided_, + ) + KH_29L__AS_14_Kedge___Semi_Act_Laser = ( + 10, + WeaponsSu30.KH_29L__AS_14_Kedge___Semi_Act_Laser, + ) + KH_29TE__AS_14_Kedge___TV_Guided = ( + 10, + WeaponsSu30.KH_29TE__AS_14_Kedge___TV_Guided, + ) + Kh_59M = (10, WeaponsSu30.Kh_59M) + Kh_59MK = (10, WeaponsSu30.Kh_59MK) + Kh_31A = (10, WeaponsSu30.Kh_31A) + KH_35A = (10, WeaponsSu30.KH_35A) + KH_35UE = (10, WeaponsSu30.KH_35UE) + KH_31AD = (10, WeaponsSu30.KH_31AD) + KH_31PD = (10, WeaponsSu30.KH_31PD) + Kh_59MK2_ = (10, WeaponsSu30.Kh_59MK2_) + KAB_500Kr___500kg_TV_Guided_Bomb = ( + 10, + Weapons.KAB_500Kr___500kg_TV_Guided_Bomb, + ) + KAB_500S = (10, WeaponsSu30.KAB_500S) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 10, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 10, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + P_50T___50kg_Practice_Bomb_LD = (10, Weapons.P_50T___50kg_Practice_Bomb_LD) + BetAB_500___500kg_Concrete_Piercing_Bomb_LD = ( + 10, + Weapons.BetAB_500___500kg_Concrete_Piercing_Bomb_LD, + ) + BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb = ( + 10, + Weapons.BetAB_500ShP___500kg_Concrete_Piercing_HD_w_booster_Bomb, + ) + FAB_250___250kg_GP_Bomb_LD = (10, Weapons.FAB_250___250kg_GP_Bomb_LD) + RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP = ( + 10, + Weapons.RBK_250___42_x_PTAB_2_5M__250kg_CBU_Medium_HEAT_AP, + ) + FAB_500_M_62___500kg_GP_Bomb_LD = (10, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP = ( + 10, + Weapons.RBK_500_255___30_x_PTAB_10_5__500kg_CBU_Heavy_HEAT_AP, + ) + MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD = ( + 10, + Weapons.MBD3_U6_68_with_6_x_FAB_250___250kg_GP_Bombs_LD, + ) + MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD = ( + 10, + Weapons.MBD3_U6_68_with_6_x_FAB_100___100kg_GP_Bombs_LD, + ) + _2_x_B_13L___5_S_13_OF = (10, Weapons._2_x_B_13L___5_S_13_OF) + _2_x_B_8M1___20_S_8KOM = (10, Weapons._2_x_B_8M1___20_S_8KOM) + _2_x_S_25 = (10, Weapons._2_x_S_25) + + class Pylon11: + R_73__AA_11_Archer____Infra_Red = (11, Weapons.R_73__AA_11_Archer____Infra_Red) + Smoke_Generator___red = (11, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (11, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (11, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (11, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (11, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (11, Weapons.Smoke_Generator___orange) + + class Pylon12: + R_73__AA_11_Archer____Infra_Red = (12, Weapons.R_73__AA_11_Archer____Infra_Red) + L005_Sorbtsiya_ECM_pod__right_ = (12, Weapons.L005_Sorbtsiya_ECM_pod__right_) + Smoke_Generator___red = (12, Weapons.Smoke_Generator___red) + Smoke_Generator___green = (12, Weapons.Smoke_Generator___green) + Smoke_Generator___blue = (12, Weapons.Smoke_Generator___blue) + Smoke_Generator___white = (12, Weapons.Smoke_Generator___white) + Smoke_Generator___yellow = (12, Weapons.Smoke_Generator___yellow) + Smoke_Generator___orange = (12, Weapons.Smoke_Generator___orange) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} + + 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/main.py b/qt_ui/main.py index 200d4800..e61c24df 100644 --- a/qt_ui/main.py +++ b/qt_ui/main.py @@ -301,6 +301,7 @@ def create_game( f104_starfighter=False, hercules=False, jas39_gripen=False, + su30_flanker_h=False, su57_felon=False, frenchpack=False, high_digit_sams=False, diff --git a/qt_ui/uiconstants.py b/qt_ui/uiconstants.py index 213bd6e5..89796164 100644 --- a/qt_ui/uiconstants.py +++ b/qt_ui/uiconstants.py @@ -209,6 +209,11 @@ def load_aircraft_banners(): AIRCRAFT_BANNERS[aircraft[:-7]] = QPixmap( os.path.join("./resources/ui/units/aircrafts/banners/", aircraft) ) + _load_mirage_banners() + _load_su30mod_banners() + + +def _load_mirage_banners(): variants = ["Mirage-F1CT", "Mirage-F1EE", "Mirage-F1M-EE", "Mirage-F1EQ"] for f1 in variants: AIRCRAFT_BANNERS[f1] = AIRCRAFT_BANNERS["Mirage-F1C-200"] @@ -217,6 +222,12 @@ def load_aircraft_banners(): AIRCRAFT_BANNERS[f1] = AIRCRAFT_BANNERS["Mirage-F1C"] +def _load_su30mod_banners(): + variants = ["Su-30MKA", "Su-30MKI", "Su-30MKM"] + for su30 in variants: + AIRCRAFT_BANNERS[su30] = AIRCRAFT_BANNERS["Su-30SM"] + + def load_vehicle_banners(): for aircraft in os.listdir("./resources/ui/units/vehicles/banners/"): if aircraft.endswith(".jpg"): diff --git a/qt_ui/windows/newgame/QNewGameWizard.py b/qt_ui/windows/newgame/QNewGameWizard.py index b05478be..6ad41543 100644 --- a/qt_ui/windows/newgame/QNewGameWizard.py +++ b/qt_ui/windows/newgame/QNewGameWizard.py @@ -164,6 +164,7 @@ class NewGameWizard(QtWidgets.QWizard): hercules=self.field("hercules"), uh_60l=self.field("uh_60l"), jas39_gripen=self.field("jas39_gripen"), + su30_flanker_h=self.field("su30_flanker_h"), su57_felon=self.field("su57_felon"), frenchpack=self.field("frenchpack"), high_digit_sams=self.field("high_digit_sams"), @@ -666,6 +667,8 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.registerField("f104_starfighter", f104_starfighter) jas39_gripen = QtWidgets.QCheckBox() self.registerField("jas39_gripen", jas39_gripen) + su30_flanker_h = QtWidgets.QCheckBox() + self.registerField("su30_flanker_h", su30_flanker_h) su57_felon = QtWidgets.QCheckBox() self.registerField("su57_felon", su57_felon) frenchpack = QtWidgets.QCheckBox() @@ -712,6 +715,11 @@ class GeneratorOptions(QtWidgets.QWizardPage): ) modLayout.addWidget(jas39_gripen, modLayout_row, 1) modLayout_row += 1 + modLayout.addWidget( + QtWidgets.QLabel("Su-30 Flanker-H (V2.01B)"), modLayout_row, 0 + ) + modLayout.addWidget(su30_flanker_h, modLayout_row, 1) + modLayout_row += 1 modLayout.addWidget(QtWidgets.QLabel("Su-57 Felon"), modLayout_row, 0) modLayout.addWidget(su57_felon, modLayout_row, 1) modLayout_row += 1 diff --git a/resources/customized_payloads/Su-30MKA.lua b/resources/customized_payloads/Su-30MKA.lua new file mode 100644 index 00000000..32be1825 --- /dev/null +++ b/resources/customized_payloads/Su-30MKA.lua @@ -0,0 +1,530 @@ +local unitPayloads = { + ["name"] = "Su-30MKA", + ["payloads"] = { + [1] = { + ["displayName"] = "ANTISHIP", + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_KH_31A}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_KH_31A}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + [2] = { + ["displayName"] = "Liberation SEAD", + ["name"] = "Liberation SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 29, + }, + }, + [3] = { + ["name"] = "Liberation CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 8, + }, + [10] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + }, + }, + [4] = { + ["displayName"] = "CAP", + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{SU30_R27ET}", + ["num"] = 9, + }, + [7] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [9] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + [10] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R27ET}", + ["num"] = 4, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 3, + }, + }, + ["tasks"] = { + [1] = 18, + [2] = 19, + [3] = 10, + [4] = 11, + }, + }, + [5] = { + ["displayName"] = "Liberation Strike", + ["name"] = "Liberation Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 4, + }, + [11] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 33, + [2] = 32, + [3] = 31, + }, + }, + [6] = { + ["displayName"] = "Liberation OCA/Aircraft", + ["name"] = "Liberation OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74884}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74881}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74881}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74884}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{53BE25A4-C86C-4571-9BC0-47D668349595}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{53BE25A4-C86C-4571-9BC0-47D668349595}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 32, + [2] = 31, + }, + }, + [7] = { + ["displayName"] = "Liberation BAI", + ["name"] = "Liberation BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 8, + }, + [10] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + }, + }, + [8] = { + ["displayName"] = "Liberation OCA/Runway", + ["name"] = "Liberation OCA/Runway", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 34, + }, + }, + [9] = { + ["displayName"] = "Liberation DEAD", + ["name"] = "Liberation DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 29, + [2] = 32, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "Su-30MKA", +} +return unitPayloads diff --git a/resources/customized_payloads/Su-30MKI.lua b/resources/customized_payloads/Su-30MKI.lua new file mode 100644 index 00000000..1569d8a0 --- /dev/null +++ b/resources/customized_payloads/Su-30MKI.lua @@ -0,0 +1,529 @@ +local unitPayloads = { + ["name"] = "Su-30MKI", + ["payloads"] = { + [1] = { + ["displayName"] = "CAP", + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{SU30_R27ET}", + ["num"] = 9, + }, + [7] = { + ["CLSID"] = "{SU30_R27EA}", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 7, + }, + [9] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 6, + }, + [10] = { + ["CLSID"] = "{SU30_R27EA}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R27ET}", + ["num"] = 4, + }, + [12] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 3, + }, + }, + ["tasks"] = { + [1] = 18, + [2] = 19, + [3] = 10, + [4] = 11, + }, + }, + [2] = { + ["displayName"] = "Liberation BAI", + ["name"] = "Liberation BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 8, + }, + [10] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + }, + }, + [3] = { + ["displayName"] = "Liberation OCA/Runway", + ["name"] = "Liberation OCA/Runway", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 34, + }, + }, + [4] = { + ["displayName"] = "ANTISHIP", + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 5, + }, + [6] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 10, + }, + [7] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 9, + }, + [8] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 4, + }, + [9] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 3, + }, + [10] = { + ["CLSID"] = "{BRAHMOS_S}", + ["num"] = 6, + }, + [11] = { + ["CLSID"] = "", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 8, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + [5] = { + ["displayName"] = "Liberation OCA/Aircraft", + ["name"] = "Liberation OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74884}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74881}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74881}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74884}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{53BE25A4-C86C-4571-9BC0-47D668349595}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{53BE25A4-C86C-4571-9BC0-47D668349595}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 32, + [2] = 31, + }, + }, + [6] = { + ["displayName"] = "Liberation DEAD", + ["name"] = "Liberation DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 29, + }, + }, + [7] = { + ["displayName"] = "Liberation Strike", + ["name"] = "Liberation Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 4, + }, + [11] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 33, + [2] = 32, + [3] = 31, + }, + }, + [8] = { + ["name"] = "Liberation CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 8, + }, + [10] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + }, + }, + [9] = { + ["displayName"] = "Liberation SEAD", + ["name"] = "Liberation SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{Su30_ASTRA}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_RudraM1}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{Su30_DERBY_ER}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 29, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "Su-30MKI", +} +return unitPayloads diff --git a/resources/customized_payloads/Su-30MKM.lua b/resources/customized_payloads/Su-30MKM.lua new file mode 100644 index 00000000..04a064ec --- /dev/null +++ b/resources/customized_payloads/Su-30MKM.lua @@ -0,0 +1,530 @@ +local unitPayloads = { + ["name"] = "Su-30MKM", + ["payloads"] = { + [1] = { + ["displayName"] = "Liberation BAI", + ["name"] = "Liberation BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 8, + }, + [10] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + }, + }, + [2] = { + ["displayName"] = "ANTISHIP", + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_KH_31A}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_KH_31A}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_KH_35}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + [3] = { + ["displayName"] = "Liberation SEAD", + ["name"] = "Liberation SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 29, + }, + }, + [4] = { + ["displayName"] = "CAP", + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{SU30_R27ET}", + ["num"] = 9, + }, + [7] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [9] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + [10] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R27ET}", + ["num"] = 4, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 3, + }, + }, + ["tasks"] = { + [1] = 18, + [2] = 19, + [3] = 10, + [4] = 11, + }, + }, + [5] = { + ["displayName"] = "Liberation OCA/Runway", + ["name"] = "Liberation OCA/Runway", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 34, + }, + }, + [6] = { + ["displayName"] = "Liberation DEAD", + ["name"] = "Liberation DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_KH31P}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 29, + [2] = 32, + }, + }, + [7] = { + ["displayName"] = "Liberation Strike", + ["name"] = "Liberation Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 4, + }, + [11] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 33, + [2] = 32, + [3] = 31, + }, + }, + [8] = { + ["name"] = "Liberation CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 8, + }, + [10] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + }, + }, + [9] = { + ["displayName"] = "Liberation OCA/Aircraft", + ["name"] = "Liberation OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R27ER}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74884}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74881}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74881}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74884}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{53BE25A4-C86C-4571-9BC0-47D668349595}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{53BE25A4-C86C-4571-9BC0-47D668349595}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 32, + [2] = 31, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "Su-30MKM", +} +return unitPayloads diff --git a/resources/customized_payloads/Su-30SM.lua b/resources/customized_payloads/Su-30SM.lua new file mode 100644 index 00000000..3633c61c --- /dev/null +++ b/resources/customized_payloads/Su-30SM.lua @@ -0,0 +1,530 @@ +local unitPayloads = { + ["name"] = "Su-30SM", + ["payloads"] = { + [1] = { + ["displayName"] = "Liberation BAI", + ["name"] = "Liberation BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 8, + }, + [10] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + }, + }, + [2] = { + ["displayName"] = "ANTISHIP", + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_KH31AD}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_KH31AD}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_KH59MK}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_KH59MK}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_KH59MK}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_KH59MK}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 6, + }, + [12] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 7, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + [3] = { + ["displayName"] = "Liberation SEAD", + ["name"] = "Liberation SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_KH31PD}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_KH31PD}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_KH31PD}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_KH31PD}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_KH31PD}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_KH31PD}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 29, + }, + }, + [4] = { + ["displayName"] = "CAP", + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{SU30_R27ET}", + ["num"] = 9, + }, + [7] = { + ["CLSID"] = "{SU30_R27EA}", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 7, + }, + [9] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 6, + }, + [10] = { + ["CLSID"] = "{SU30_R27EA}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R27ET}", + ["num"] = 4, + }, + [12] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 3, + }, + }, + ["tasks"] = { + [1] = 18, + [2] = 19, + [3] = 10, + [4] = 11, + }, + }, + [5] = { + ["displayName"] = "Liberation OCA/Runway", + ["name"] = "Liberation OCA/Runway", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R27EA}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R27EA}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{BD289E34-DF84-4C5E-9220-4B14C346E79D}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 34, + }, + }, + [6] = { + ["displayName"] = "Liberation DEAD", + ["name"] = "Liberation DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{SU30_KH59MK2}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{SU30_KH59MK2}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{SU30_KH59MK2}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{SU30_KH59MK2}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74881}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74884}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 29, + [2] = 32, + }, + }, + [7] = { + ["displayName"] = "Liberation Strike", + ["name"] = "Liberation Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 3, + }, + [9] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 4, + }, + [11] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{E2C426E3-8B10-4E09-B733-9CDC26520F48}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 33, + [2] = 32, + [3] = 31, + }, + }, + [8] = { + ["name"] = "Liberation CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 10, + }, + [6] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 8, + }, + [10] = { + ["CLSID"] = "{601C99F7-9AF3-4ed7-A565-F8B8EC0D7AAC}", + ["num"] = 5, + }, + [11] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{SU30_R77M}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + }, + }, + [9] = { + ["displayName"] = "Liberation OCA/Aircraft", + ["name"] = "Liberation OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + ["num"] = 12, + }, + [2] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "{FBC29BFE-3D24-4C64-B81D-941239D12249}", + ["num"] = 2, + }, + [5] = { + ["CLSID"] = "{SU30_R27EA}", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "{SU30_R27EA}", + ["num"] = 5, + }, + [7] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74884}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74881}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74881}", + ["num"] = 4, + }, + [10] = { + ["CLSID"] = "{96A7F676-F956-404A-AD04-F33FB2C74884}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "{53BE25A4-C86C-4571-9BC0-47D668349595}", + ["num"] = 7, + }, + [12] = { + ["CLSID"] = "{53BE25A4-C86C-4571-9BC0-47D668349595}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 32, + [2] = 31, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "Su-30SM", +} +return unitPayloads diff --git a/resources/factions/bluefor_modern.json b/resources/factions/bluefor_modern.json index bdb3f938..c6b06daf 100644 --- a/resources/factions/bluefor_modern.json +++ b/resources/factions/bluefor_modern.json @@ -40,6 +40,10 @@ "SA 342M Gazelle", "Su-25T Frogfoot", "Su-27 Flanker-B", + "Su-30MKA Flanker-H", + "Su-30MKI Flanker-H", + "Su-30MKM Flanker-H", + "Su-30SM Flanker-H", "UH-1H Iroquois" ], "awacs": [ diff --git a/resources/factions/india_2010.json b/resources/factions/india_2010.json index 6bfc7eec..f1169512 100644 --- a/resources/factions/india_2010.json +++ b/resources/factions/india_2010.json @@ -15,7 +15,8 @@ "MiG-29S Fulcrum-C", "Mirage 2000-5", "Mirage 2000C", - "Su-30 Flanker-C" + "Su-30 Flanker-C", + "Su-30MKI Flanker-H" ], "awacs": [ "A-50" diff --git a/resources/factions/redfor_russia_2010.json b/resources/factions/redfor_russia_2010.json index 482eb6bc..e58f0f79 100644 --- a/resources/factions/redfor_russia_2010.json +++ b/resources/factions/redfor_russia_2010.json @@ -24,6 +24,7 @@ "Su-25T Frogfoot", "Su-27 Flanker-B", "Su-30 Flanker-C", + "Su-30SM Flanker-H", "Su-33 Flanker-D", "Su-34 Fullback", "Tu-22M3 Backfire-C" diff --git a/resources/factions/russia_2020.json b/resources/factions/russia_2020.json index 84f9523b..dfbabb81 100644 --- a/resources/factions/russia_2020.json +++ b/resources/factions/russia_2020.json @@ -21,6 +21,10 @@ "Su-25T Frogfoot", "Su-27 Flanker-B", "Su-30 Flanker-C", + "Su-30MKA Flanker-H", + "Su-30MKI Flanker-H", + "Su-30MKM Flanker-H", + "Su-30SM Flanker-H", "Su-33 Flanker-D", "Su-34 Fullback", "Su-57 Felon", diff --git a/resources/ui/units/aircrafts/banners/Su-30SM_24.jpg b/resources/ui/units/aircrafts/banners/Su-30SM_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..326565cfcdc292315d2031e0278e646d36ffe396 GIT binary patch literal 45008 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 literal 0 HcmV?d00001 diff --git a/resources/ui/units/aircrafts/icons/Su-30MKA_24.jpg b/resources/ui/units/aircrafts/icons/Su-30MKA_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ced7b867b5b576ad2b429d1c000f85cec3fc5545 GIT binary patch literal 6412 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 E1uNEMJpcdz literal 0 HcmV?d00001 diff --git a/resources/ui/units/aircrafts/icons/Su-30MKM_24.jpg b/resources/ui/units/aircrafts/icons/Su-30MKM_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d875efc22b010751b7112af1e1f7851b3e78d44 GIT binary patch literal 6458 zcmbVQ2|Sfe+n=*rv#;5g>}1Q5T}UO4H7VKG$`(arOCnh+6rwDlqAU@m#S+;G<&;Wf zmwm~0zBxxdJ@5Da-uL%?&zv)7{`bsv&CGROGjq@X5I+#V0{R2`hWY@3Kma@V0mMP- zZoPBvE&v!BiUSG&00wX(FaQD30ho9G!ln?5B2eUdB*d}^B%p=mQJCc*W`?C3%)v0* z!A#QsT^bk~nefR;%kGwzm4ni|<>XX%E2+xu;ggeBm6ugjlqZdgK$CSyKZsvg7xsaK zW1?XB4QAA@@v#tN|Atw9VUipIx!ung#K>Rx8x?$jiGutg{@n|tiNX&cP|XOGH#mTtRV- zzSF0#E(wyoGa{1)*FwgAwGqLMkg@rM8ia3jirf4I5p2s!{L;J@G9H{&gz!y( zjcvB`#x-!9->R_NJhEm&szLJ7gU?odsm&UTm}ZR=eF@T!0u4I5e~NT=vMIc14Z(dk zTy`AO6z^Y`sodIYxO~EEBcN%iEHmaUGhy%t{6KFE!i z4Vzya514iq{P3BapH($)o~#_%m|*Hl6?}%6K2~$Mq2vO=+_7>@e6^wpjreKFbrS!& z!>m!Ud%RS*^}L};Gqe9&#Tu2x-Gw^}ik8jbv^AQc1vZ*azh*WSz5a4_+Oyr>apzQi z=LPeS8{`?j-JYQ_v@KP6s@1DBOZz9Dtlz&bvaY#0Em|hD`DG&@{tT;&OuzA+je>PC zXug+py8M}_rX_~7!UA@MI`*n_Lo%5{{IYRDn;yr_ub249LN7Bx~?GFB3td+bBa4Id~eRb{pQ`@%a_6 zs#n`llp!mgAS=rBhrA?3=@U8J2IQySd0ZZk)?zWQTfliiiNE#lY4w)pMxbDKf*Vg$ zGg)E(sh*$<7D4lr1RQI7A-^eerIt^l$B_TIU@P}iYF)PaAI%d@`99Q+YWk9t#*XtR z%)I5?^cK(iP0pgg%(K$CBOJAa5KT42;SeXvXoK_qsu?+ z(Qx(WrEdZ|S9_-E;ug9~zgRpTYx=s#m$aqm@OkBce!SJyEz_Mdp-ba_IH?Y!ZrAv= zP8F($su8{hA{*j!mt+Tw2W>;>u9mk5ee_~!l3KZJ!MEn`6=b;@g_}(e3;kp~mvbv= zs_XOgp~Vx;=}!#bfMT$^r8d9dxLHpGoOJc6{yX>Bq=8 zLpRgz!7$Orgu}^Eff9;k>Pz7@ZoQY~i-*=Cr+-?uN`(s9=ayHa!}jk^3{AFrR#}t0 z=gQt|7wPMo)nbjt6nq&y5{(!tTlh>#Qc?cZ7^B$JsWu{L7Ly z$m7|+m_xvo%Dwn~KEd7pBshHBAZgm5oX$yU8uw*BXByYDWsyF*ZW{Qx=e+EBU1L&( zd6t_-{`|u)dkNRum-DCU2%P%COKk=+sgg2Gg`yJ{(FN)rG3kVay@YtJsLJJWzSQ(6-Ck^0>D_2Xkn9Zo5n`cL!LWfNS zw(pG%h{;ym$nIBrJXP;}GyGMDS6)!#?P;Thz;^K}T>_6E5m2?@ubmA@X(~MVXofdF zbRhp_-SI=ktmo-v6P6N)p#FU}>>GZoP=rjCqH_mUbS&gsPQH%h9Vp`oW9p$hTD!lu zN}y)msPt>b+&EtG`N^OfuJCDNN>9^)JzM@>#$B#G!sapAriQ3M!8;v!=e3_)UJ32a zVrHo0^OxMel;6zLIjE-eRgBFtV#s7&p`!VSs!%-pMn3!3vw}52&dGWAGSa04WaAK5 z>t|K{6>Zv=^A>6feW?kYp(ICcJNee=c|80!@pQgh*Iv?0meaYmIcsDB1=VIeR8R!g zOhTV-N?aD)PFHmZE}29Sgbe+9YD=L*lk91It|1%k?h`XdnTX)j&JFjRI)btatE=Wx z7ZJRH;}tAy77Xw3JyJf&PBH&g;@xV@_-b#xzZNnAJS2j>q&`ylHt!aWW|_gWKXM{e zyakROJmYaJa`{qzW(X08s}aGY@75R2K9R|qHYlTWv&dDz+puGVnN1Md*|B!Q*jQ2e z8+bh+%#7E@e0?(L0zsOWCnlWJ;_U$cB$}#D3y89O1>34@zk{di$P%*bd@7XU}+(@J)!B9o_7m zAbtq3q%WKx#2-lY4%>K&gk8y)#6bYFuem8C2}lz8;B);OcK921bn`t0WfY){kkhHt zuz%!{ZR|wCB*G$e>ZCuM8#$3K*fh?kEzDpk1Tz;f0EWN_m;gTD0Q`YFI0?=GDOjF{ zHGaSpw(I-{eNM8z3Dk0cTJFFRYU~4E;1sYY>jP2@pbSiZeCy{T4_OjS2pS#8#y%5? z3&H^4t^=@{NF=V`B@#EYAs6}tz^l`L^u6u?pu7a@6aUl+WdT5U5rB&NKXneN08~Z; zz~1j|?`uyUheVr@E|3Av=L0}%4FFRo08}>HeuHhKc98QP0CVW8Lu~-uN&{e*EA0E& zf3TZGBmeT-f0g;=KQjON%>({vN#25OLE>K|Pi&`c z@`VH>cD55<_DMA6cN;7*BpQRm5`R$vdK5kE;X%lHgAQ%*0Bvl)`g7yfEW0tv-CAne zLZ3q!yPk`21~^?%N>_=Xym~Sx>5^AdIfq1*Bg?*XQt0^WgsM@UBtqPiGVZpTOi!eY zTk2r$R@yZ>I5-bIq|W~`IvUOfgTS)jSefAX6mVV$46;o=m80o?TAN+yheK?8F!V zK%*$2^Zs%UiN7(iph?UWZ=Zw}&^7f5e@&h!v_cb+w(E*mTOe(wlfy@cJ!Z0HvG%u4 zico%vsrAm-l^NldCfX5v2%q_(A#J2w;TyNYaAL(AE0bvbU9i+t<|~z&yGXmb7SG-r zeRH4E(6YHM=e;dXy_`n&@S?nf{i=1|527v*N_e$?SmoTwQ7?&=e?NlEhE*cU@ymJWX-%NGseEH!NN7MFk}C&WxV?aOO#LNgDh^6)1?^z0)@aKFqFT| zBJn*83eCs@tzyConA*=W%W3QQK*n7{whc+LtzP9wdUFk7@gdLhZJW~k-k^H9fu|=# ztOw4TS0)dbei%F$X!@nLe&D-$9Z4N#D=(TG4760S})6x#xSZJFpTu>+!3V}sq$vYn| zT)37210#lsUyfNoRtJBVMbIG$E2M2|e=X;A*RM5()kKaJ$NGFy(eaw`TG3WxG@#;f z4su-cX&UXTmdGJgOWdoL$R_=&7n%w`ZFOPjTbR@}+BH%;X-&zdwj)rnura#W-FHNh z<6X%P9pQ({S=iqGN^ffu%F?+KK}iF}>WfvMh8?0t6EznS=y<&LUzeGe5qbKe` zv8SKhir-@g=H7^mnNp%Eb&(qd&p!*U6&es8@p@TU@8{FM@lH&yt@x`yNAaf&v&!U> zHlQsP zW59be{*#72!!{Ymu5-$9aiN~-`lkz5;@3Z#T4q&y9p~xonzlXh_@OzY_8fYLhwcbh zfv?aHvD4#g6%S|;jg+=uFSpj$KDBNh$Pij(NMQaZ;*pk-^qkAtr@~&9DK;W4#Pd+i z@HNxouZ~GgCJKb|qO-(l5Ap}HAUIv2>G>Y>71hiY_Zffn zt-I|LT=93CCqhQ&@w2f8TigeO_+7L((gzlmzP;Zym~=F|RV>*)(G656pe5#w>K`3; z_2i7~Yqs}H?hIP|Ea1|5JEavPHt5gz=0umxW=PDF6pFYb+_~B&2)mgela1P+N)oja zwY>Rbm%XbK8IvRg?70LFIgh+DSMAy{(J542rjI=+eN+Xv-phGQt2Wh=?HEI578^Zh zj71RZf&0CtVmMN-R6d$*C9Uzsp~tw;5o9j zUgI9s>D}3RBGA()Y2>2zt?;{VGHhcw0xqmg#$u}2i2#Gsl8!xUFkNEVR~olw@9Sa7 zAa#XR$WDjJ$5NS}-l3^v&zCf{o7X^?-rGo*pyOt;`cptDEVM%5&@CnPE8H5{i*`*c zLqdn2>#f|Spa~a4t91&ov)Rd%M^bpbdw>fu&`>zvMki(eb0nOK2g5!{-BtC$dm+{# z>?nok*L~7+mT^%NazE719!AAB4o9z4Q=rUbCO&T&u>sBrtYO!5aMzg_@u|l4axP@? zmHsc6SN7F&eR95fz75G2Q(jk5z^rHmT`5d*B^rtR^9DhXT&az>-*zQjgR_4fu=E*G zwVW?&=1h@sMR7_eJ6HEY>T3+#TM z{%OmNKY~q=ZgSr)T;=Pzr~$N=^d#TY=FresWg%rJ1f!pa*wF^LTaCV=lvqbBcE5V$ zj#!i^efwpenE?vv2>O1;9NEq(LGi(8h*MoV;iYNjX!RY+PW zY5kG5EdoLD*RF;4cDQXxPJ{2G+3?q0e>N`tJUYNf;e@JV%447LkEeT!OQg|J+#*;l zkI9SLFT!s&d^-BpQ#-o1eVs zcO@&2cENl8zEWM(*4^oRUSXZC_(wv<-bNS0X@~Tqge%2PFhuNPKBDU&N@3x|R((*U zWrvfPu4(4Hze~BaZ{|_rkGbsQ7 literal 0 HcmV?d00001 diff --git a/resources/ui/units/aircrafts/icons/Su-30SM_24.jpg b/resources/ui/units/aircrafts/icons/Su-30SM_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e223a8f6dc28eb3f401531a65ac11bd4cbb3fd27 GIT binary patch literal 6739 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 literal 0 HcmV?d00001 diff --git a/resources/units/aircraft/Su-30MKA.yaml b/resources/units/aircraft/Su-30MKA.yaml new file mode 100644 index 00000000..01f6d4a0 --- /dev/null +++ b/resources/units/aircraft/Su-30MKA.yaml @@ -0,0 +1,19 @@ +description: + "The Sukhoi Su-30 (Russian: \u0421\u0443\u0445\u043E\u0439 \u0421\u0443\ + -30; NATO reporting name: Flanker-C/G/H) is a twin-engine, two-seat supermaneuverable\ + \ fighter aircraft developed in the Soviet Union by Russia's Sukhoi Aviation Corporation.\ + \ It is a multirole fighter for all-weather, air-to-air and air-to-surface deep\ + \ interdiction missions. 630 numbers have been build.\ + \ \ + \ A version of the Su-30MKI, except with French and Russian avionics for Algeria." +introduced: 2007 # http://sukhoi.mariwoj.pl/su-30-dz.htm +manufacturer: Sukhoi +origin: USSR/Russia +price: 24 +role: Multirole Fighter +max_range: 300 +variants: + Su-30MKA Flanker-H: {} +radios: + intra_flight: R-800 + inter_flight: R-800 \ No newline at end of file diff --git a/resources/units/aircraft/Su-30MKI.yaml b/resources/units/aircraft/Su-30MKI.yaml new file mode 100644 index 00000000..cc094204 --- /dev/null +++ b/resources/units/aircraft/Su-30MKI.yaml @@ -0,0 +1,22 @@ +description: + "The Sukhoi Su-30 (Russian: \u0421\u0443\u0445\u043E\u0439 \u0421\u0443\ + -30; NATO reporting name: Flanker-C/G/H) is a twin-engine, two-seat supermaneuverable\ + \ fighter aircraft developed in the Soviet Union by Russia's Sukhoi Aviation Corporation.\ + \ It is a multirole fighter for all-weather, air-to-air and air-to-surface deep\ + interdiction missions. 630 numbers have been build.\ + \ \ + \ MKI for Modernizirovannyi Kommercheskiy Indiski - \"Modernized Commercial Indian\". An export version for India,\ + \ jointly developed with Hindustan Aeronautics Limited (HAL). It is the first Su-30 family member to feature\ + \ thrust vectoring control (TVC) and canards. Equipped with a multinational avionics complex\ + \ sourced from Russia, India, France and Israel." +introduced: 2002 # https://en.wikipedia.org/wiki/Sukhoi_Su-30MKI +manufacturer: Sukhoi +origin: USSR/Russia +price: 24 +role: Multirole Fighter +max_range: 300 +variants: + Su-30MKI Flanker-H: {} +radios: + intra_flight: R-800 + inter_flight: R-800 diff --git a/resources/units/aircraft/Su-30MKM.yaml b/resources/units/aircraft/Su-30MKM.yaml new file mode 100644 index 00000000..8cd68f86 --- /dev/null +++ b/resources/units/aircraft/Su-30MKM.yaml @@ -0,0 +1,25 @@ +description: + "The Sukhoi Su-30 (Russian: \u0421\u0443\u0445\u043E\u0439 \u0421\u0443\ + -30; NATO reporting name: Flanker-C/G/H) is a twin-engine, two-seat supermaneuverable\ + \ fighter aircraft developed in the Soviet Union by Russia's Sukhoi Aviation Corporation.\ + \ It is a multirole fighter for all-weather, air-to-air and air-to-surface deep\ + \ interdiction missions. 630 numbers have been build.\ + \ \ + \ A derivative of the Russian-Indian Su-30MKI, the MKM is a highly specialised version for Royal Malaysian Air Force.\ + \ It includes thrust vectoring control (TVC) and canards but with avionics from various countries.\ + \ It will feature head-up displays (HUD), navigational forward-looking IR system (NAVFLIR) and\ + \ Damocles Laser Designation pod (LDP) from Thales Group of France, MAW-300 missile approach warning sensor (MAWS),\ + \ RWS-50 RWR and laser warning sensor (LWS) from SAAB AVITRONICS (South Africa)[114] as well as the\ + \ Russian NIIP N011M Bars Passive electronically scanned array radar, electronic warfare (EW) system,\ + \ optical-location system (OLS) and a glass cockpit." +introduced: 2007 # https://en.wikipedia.org/wiki/Sukhoi_Su-30MKM +manufacturer: Sukhoi +origin: USSR/Russia +price: 24 +role: Multirole Fighter +max_range: 300 +variants: + Su-30MKM Flanker-H: {} +radios: + intra_flight: R-800 + inter_flight: R-800 diff --git a/resources/units/aircraft/Su-30SM.yaml b/resources/units/aircraft/Su-30SM.yaml new file mode 100644 index 00000000..0a795ae7 --- /dev/null +++ b/resources/units/aircraft/Su-30SM.yaml @@ -0,0 +1,32 @@ +description: + "The Sukhoi Su-30 (Russian: \u0421\u0443\u0445\u043E\u0439 \u0421\u0443\ + -30; NATO reporting name: Flanker-C/G/H) is a twin-engine, two-seat supermaneuverable \ + \ fighter aircraft developed in the Soviet Union by Russia's Sukhoi Aviation Corporation. \ + \ It is a multirole fighter for all-weather, air-to-air and air-to-surface deep \ + \ interdiction missions. 630 numbers have been build. \ + \ \ + \ SM for Serijnyi Modernizirovannyi - \"Serial Modernized\". A specialised version of the thrust-vectoring \ + \ Su-30MKI for the Russian Air Force, produced by the Irkut Corporation. NATO reporting name Flanker-H. \ + \ The Su-30SM is considered a 4+ generation fighter jet. The aircraft has been upgraded according to \ + \ Russian military requirements for radar, radio communications systems, friend-or-foe identification system, \ + \ ejection seats, weapons, and other aircraft systems. It is equipped with the N011M Bars radar with a \ + \ maximum detection range 400 km, search range 200 km using a phased array antenna, frontal horizontal fins \ + \ and steerable thrusters for supermaneuverability as well as with wide-angle HUD. \ + \ The aircraft can be used to gain air supremacy same as for targeting adversary on the ground using \ + \ wide range of weapons including air-to-air, air-to-surface and guided and unguided bombs with total weapons \ + \ weight up to 8,000 kg. It is also equipped with the one barrel, 30 mm GSh-30-1 autocannon. \ + \ To ensure operations at major distances from airfield, the ability of in-flight refueling (IFR) is included. \ + \ Besides that, for electronic warfare purposes two SAP-518 jamming pods can be fitted on the wing tips. \ + \ The SAP-518 is designed to protect the aircraft from various air-to-air and surface-to-air missiles by \ + \ creating false targets, jamming missile's guidance, enemy aircraft radars or ground and seaborne air defence." +introduced: 2012 # https://www.airforce-technology.com/projects/su-30sm-multirole-fighter-aircraft/ +manufacturer: Sukhoi +origin: USSR/Russia +price: 24 +role: Multirole Fighter +max_range: 300 +variants: + Su-30SM Flanker-H: {} +radios: + intra_flight: R-800 + inter_flight: R-800