diff --git a/game/db.py b/game/db.py index 9d5c4edf..4e038c79 100644 --- a/game/db.py +++ b/game/db.py @@ -164,6 +164,7 @@ from game.factions.faction_loader import FactionLoader from pydcs_extensions.a4ec.a4ec import A_4E_C 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.mb339.mb339 import MB_339PAN from pydcs_extensions.su57.su57 import Su_57 @@ -174,6 +175,8 @@ plane_map["F-22A"] = F_22A plane_map["MB-339PAN"] = MB_339PAN plane_map["Su-57"] = Su_57 plane_map["Hercules"] = Hercules +plane_map["JAS39Gripen"] = JAS39Gripen +plane_map["JAS39Gripen_AG"] = JAS39Gripen_AG vehicle_map["FieldHL"] = frenchpack._FIELD_HIDE vehicle_map["HARRIERH"] = frenchpack._FIELD_HIDE_SMALL @@ -405,6 +408,7 @@ PRICES = { F_22A: 40, Tornado_IDS: 20, Tornado_GR4: 20, + JAS39Gripen: 26, # bomber Su_17M4: 10, Su_25: 15, @@ -418,6 +422,7 @@ PRICES = { A_10C: 22, A_10C_2: 24, S_3B: 10, + JAS39Gripen_AG: 26, # heli Ka_50: 13, SA342M: 8, diff --git a/gen/aircraft.py b/gen/aircraft.py index d40faa4e..bae04e7d 100644 --- a/gen/aircraft.py +++ b/gen/aircraft.py @@ -665,10 +665,16 @@ AIRCRAFT_DATA: Dict[str, AircraftData] = { channel_allocator=None, channel_namer=SCR522ChannelNamer, ), + "JAS39Gripen": AircraftData( + inter_flight_radio=get_radio("R&S Series 6000"), + intra_flight_radio=get_radio("R&S Series 6000"), + channel_allocator=None, + ), } AIRCRAFT_DATA["A-10C_2"] = AIRCRAFT_DATA["A-10C"] AIRCRAFT_DATA["P-51D-30-NA"] = AIRCRAFT_DATA["P-51D"] AIRCRAFT_DATA["P-47D-30"] = AIRCRAFT_DATA["P-51D"] +AIRCRAFT_DATA["JAS39Gripen_AG"] = AIRCRAFT_DATA["JAS39Gripen"] class AircraftConflictGenerator: diff --git a/gen/flights/ai_flight_planner_db.py b/gen/flights/ai_flight_planner_db.py index 9170edf7..7b982a2a 100644 --- a/gen/flights/ai_flight_planner_db.py +++ b/gen/flights/ai_flight_planner_db.py @@ -103,6 +103,7 @@ from dcs.unittype import FlyingType from gen.flights.flight import FlightType from pydcs_extensions.a4ec.a4ec import A_4E_C from pydcs_extensions.f22a.f22a import F_22A +from pydcs_extensions.jas39.jas39 import JAS39Gripen, JAS39Gripen_AG from pydcs_extensions.hercules.hercules import Hercules from pydcs_extensions.mb339.mb339 import MB_339PAN from pydcs_extensions.su57.su57 import Su_57 @@ -134,6 +135,7 @@ CAP_CAPABLE = [ FA_18C_hornet, F_16A, F_4E, + JAS39Gripen, JF_17, MiG_23MLD, MiG_21Bis, @@ -174,6 +176,7 @@ CAS_CAPABLE = [ FA_18C_hornet, Tornado_GR4, Tornado_IDS, + JAS39Gripen_AG, JF_17, AV8BNA, A_10A, @@ -242,6 +245,7 @@ SEAD_CAPABLE = [ A_4E_C, F_14B, F_14A_135_GR, + JAS39Gripen_AG, AV8BNA, Su_24M, Su_17M4, @@ -257,6 +261,7 @@ DEAD_CAPABLE = [ AJS37, F_14B, F_14A_135_GR, + JAS39Gripen_AG, B_1B, B_52H, Tu_160, @@ -292,6 +297,7 @@ STRIKE_CAPABLE = [ F_16A, F_14B, F_14A_135_GR, + JAS39Gripen_AG, Tornado_IDS, Su_17M4, Su_24MR, @@ -342,6 +348,7 @@ ANTISHIP_CAPABLE = [ AJS37, Tu_22M3, FA_18C_hornet, + JAS39Gripen_AG, Su_24M, Su_17M4, JF_17, diff --git a/gen/radios.py b/gen/radios.py index d983695b..333647df 100644 --- a/gen/radios.py +++ b/gen/radios.py @@ -134,6 +134,7 @@ RADIOS: List[Radio] = [ Radio("AN/ARC-51BX", MHz(225), MHz(400), step=kHz(50)), Radio("AN/ARC-131", MHz(30), MHz(76), step=kHz(50)), Radio("AN/ARC-134", MHz(116), MHz(150), step=kHz(25)), + Radio("R&S Series 6000", MHz(100), MHz(156), step=kHz(25)), ] diff --git a/pydcs_extensions/jas39/jas39.py b/pydcs_extensions/jas39/jas39.py new file mode 100644 index 00000000..a9940b2d --- /dev/null +++ b/pydcs_extensions/jas39/jas39.py @@ -0,0 +1,476 @@ +from dcs import task +from dcs.planes import PlaneType +from dcs.weapons_data import Weapons + +from pydcs_extensions.weapon_injector import inject_weapons + + +class JAS39GripenWeapons: + JAS_ARAKM70BAP = { + "clsid": "JAS_ARAKM70BAP", + "name": "ARAK M70B AP", + "weight": 372.2, + } + JAS_ARAKM70BHE = { + "clsid": "JAS_ARAKM70BHE", + "name": "ARAK M70B HE", + "weight": 372.2, + } + JAS_BK90 = { + "clsid": "JAS_BK90", + "name": "BK-90 Unguided Cluster Munition", + "weight": 605, + } + JAS_BRIMSTONE = { + "clsid": "JAS_BRIMSTONE", + "name": "Brimstone Laser Guided Missile", + "weight": 195.5, + } + JAS_GBU10_TV = { + "clsid": "JAS_GBU10_TV", + "name": "GBU-10 2000 lb TV-guided Bomb", + "weight": 934, + } + JAS_GBU12 = { + "clsid": "JAS_GBU12", + "name": "GBU-12 500 lb Laser-guided Bomb", + "weight": 275, + } + JAS_GBU16_TV = { + "clsid": "JAS_GBU16_TV", + "name": "GBU-16 1000lb TV Guided Bomb", + "weight": 934, + } + JAS_GBU31 = { + "clsid": "JAS_GBU31", + "name": "GBU-31 2000lb TV Guided Glide-Bomb", + "weight": 934, + } + JAS_GBU49_TV = { + "clsid": "JAS_GBU49_TV", + "name": "GBU-49 500lb TV Guided Bomb", + "weight": 275, + } + JAS_IRIS_T = { + "clsid": "JAS_IRIS-T", + "name": "Rb98 IRIS-T Sidewinder IR AAM", + "weight": 88.4, + } + JAS_Litening = { + "clsid": "JAS_Litening", + "name": "Litening III POD (LLTV)", + "weight": 295, + } + JAS_MAR_1 = { + "clsid": "JAS_MAR-1", + "name": "MAR-1 High Speed Anti-Radiation Missile", + "weight": 350, + } + JAS_Meteor = { + "clsid": "JAS_Meteor", + "name": "Rb101 Meteor BVRAAM Active Rdr AAM", + "weight": 191, + } + JAS_RB15F = { + "clsid": "JAS_RB15F", + "name": "RBS-15 Mk. IV Gungnir Radiation Seeking Anti-ship Missile ", + "weight": None, + } + JAS_RB75T = { + "clsid": "JAS_RB75T", + "name": "Rb-75T (AGM-65E Maverick) (Laser ASM Lg Whd)", + "weight": 210, + } + JAS_Rb74 = { + "clsid": "JAS_Rb74", + "name": "Rb74 AIM-9L Sidewinder IR AAM", + "weight": 90, + } + JAS_Rb99 = { + "clsid": "JAS_Rb99", + "name": "Rb99 AIM-120B AMRAAM Active Rdr AAM", + "weight": 157, + } + JAS_Rb99_DUAL = { + "clsid": "JAS_Rb99_DUAL", + "name": "Rb99 AIM-120B AMRAAM Active Rdr AAM x 2", + "weight": 313, + } + JAS_Stormshadow = { + "clsid": "JAS_Stormshadow", + "name": "Storm Shadow Long Range Anti-Radiation Cruise-missile", + "weight": None, + } + JAS_TANK1100 = { + "clsid": "JAS_TANK1100", + "name": "External drop tank 1100 litre", + "weight": 1019, + } + JAS_TANK1700 = { + "clsid": "JAS_TANK1700", + "name": "External drop tank 1700 litre", + "weight": 1533, + } + + +inject_weapons(JAS39GripenWeapons) + + +class JAS39Gripen(PlaneType): + id = "JAS39Gripen" + flyable = True + height = 4.5 + width = 8.4 + length = 14.1 + fuel_max = 2550 + max_speed = 2649.996 + chaff = 90 + flare = 45 + charge_total = 180 + chaff_charge_size = 1 + flare_charge_size = 2 + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 127.5 + + class Pylon1: + JAS_IRIS_T = (1, JAS39GripenWeapons.JAS_IRIS_T) + JAS_Rb74 = (1, JAS39GripenWeapons.JAS_Rb74) + AN_ASQ_T50_TCTS_Pod___ACMI_Pod = (1, Weapons.AN_ASQ_T50_TCTS_Pod___ACMI_Pod) + Smokewinder___red = (1, Weapons.Smokewinder___red) + Smokewinder___green = (1, Weapons.Smokewinder___green) + Smokewinder___blue = (1, Weapons.Smokewinder___blue) + Smokewinder___white = (1, Weapons.Smokewinder___white) + Smokewinder___yellow = (1, Weapons.Smokewinder___yellow) + Smokewinder___orange = (1, Weapons.Smokewinder___orange) + + class Pylon2: + JAS_IRIS_T = (2, JAS39GripenWeapons.JAS_IRIS_T) + JAS_Rb74 = (2, JAS39GripenWeapons.JAS_Rb74) + JAS_Meteor = (2, JAS39GripenWeapons.JAS_Meteor) + JAS_Rb99 = (2, JAS39GripenWeapons.JAS_Rb99) + JAS_Rb99_DUAL = (2, JAS39GripenWeapons.JAS_Rb99_DUAL) + LAU_115_2_LAU_127_AIM_120C = (2, Weapons.LAU_115_2_LAU_127_AIM_120C) + AIM_120C_5_AMRAAM___Active_Rdr_AAM = ( + 2, + Weapons.AIM_120C_5_AMRAAM___Active_Rdr_AAM, + ) + + # ERRR + + class Pylon3: + JAS_Meteor = (3, JAS39GripenWeapons.JAS_Meteor) + JAS_Rb99 = (3, JAS39GripenWeapons.JAS_Rb99) + AIM_120C_5_AMRAAM___Active_Rdr_AAM = ( + 3, + Weapons.AIM_120C_5_AMRAAM___Active_Rdr_AAM, + ) + JAS_TANK1100 = (3, JAS39GripenWeapons.JAS_TANK1100) + JAS_TANK1700 = (3, JAS39GripenWeapons.JAS_TANK1700) + + # ERRR + + class Pylon4: + L_081_Fantasmagoria_ELINT_pod = (4, Weapons.L_081_Fantasmagoria_ELINT_pod) + + class Pylon5: + JAS_TANK1100 = (5, JAS39GripenWeapons.JAS_TANK1100) + JAS_Meteor = (5, JAS39GripenWeapons.JAS_Meteor) + AIM_120C_5_AMRAAM___Active_Rdr_AAM = ( + 5, + Weapons.AIM_120C_5_AMRAAM___Active_Rdr_AAM, + ) + JAS_Rb99 = (5, JAS39GripenWeapons.JAS_Rb99) + JAS_Rb99_DUAL = (5, JAS39GripenWeapons.JAS_Rb99_DUAL) + + # ERRR + + class Pylon6: + L005_Sorbtsiya_ECM_pod__left_ = (6, Weapons.L005_Sorbtsiya_ECM_pod__left_) + + class Pylon7: + JAS_Litening = (7, JAS39GripenWeapons.JAS_Litening) + + # ERRR + + class Pylon8: + JAS_Meteor = (8, JAS39GripenWeapons.JAS_Meteor) + JAS_Rb99 = (8, JAS39GripenWeapons.JAS_Rb99) + AIM_120C_5_AMRAAM___Active_Rdr_AAM = ( + 8, + Weapons.AIM_120C_5_AMRAAM___Active_Rdr_AAM, + ) + JAS_TANK1100 = (8, JAS39GripenWeapons.JAS_TANK1100) + JAS_TANK1700 = (8, JAS39GripenWeapons.JAS_TANK1700) + + # ERRR + + class Pylon9: + JAS_IRIS_T = (9, JAS39GripenWeapons.JAS_IRIS_T) + JAS_Rb74 = (9, JAS39GripenWeapons.JAS_Rb74) + JAS_Meteor = (9, JAS39GripenWeapons.JAS_Meteor) + JAS_Rb99 = (9, JAS39GripenWeapons.JAS_Rb99) + JAS_Rb99_DUAL = (9, JAS39GripenWeapons.JAS_Rb99_DUAL) + LAU_115_2_LAU_127_AIM_120C = (9, Weapons.LAU_115_2_LAU_127_AIM_120C) + AIM_120C_5_AMRAAM___Active_Rdr_AAM = ( + 9, + Weapons.AIM_120C_5_AMRAAM___Active_Rdr_AAM, + ) + + # ERRR + + class Pylon10: + JAS_IRIS_T = (10, JAS39GripenWeapons.JAS_IRIS_T) + JAS_Rb74 = (10, JAS39GripenWeapons.JAS_Rb74) + AN_ASQ_T50_TCTS_Pod___ACMI_Pod = (10, Weapons.AN_ASQ_T50_TCTS_Pod___ACMI_Pod) + Smokewinder___red = (10, Weapons.Smokewinder___red) + Smokewinder___green = (10, Weapons.Smokewinder___green) + Smokewinder___blue = (10, Weapons.Smokewinder___blue) + Smokewinder___white = (10, Weapons.Smokewinder___white) + Smokewinder___yellow = (10, Weapons.Smokewinder___yellow) + Smokewinder___orange = (10, Weapons.Smokewinder___orange) + + pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} + + tasks = [ + task.Intercept, + task.CAP, + task.Reconnaissance, + task.Escort, + task.FighterSweep, + ] + task_default = task.FighterSweep + + +class JAS39Gripen_AG(PlaneType): + id = "JAS39Gripen_AG" + flyable = True + height = 4.5 + width = 8.4 + length = 14.1 + fuel_max = 2550 + max_speed = 2649.996 + chaff = 90 + flare = 45 + charge_total = 180 + chaff_charge_size = 1 + flare_charge_size = 1 + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 127.5 + + class Pylon1: + JAS_IRIS_T = (1, JAS39GripenWeapons.JAS_IRIS_T) + JAS_Rb74 = (1, JAS39GripenWeapons.JAS_Rb74) + AN_ASQ_T50_TCTS_Pod___ACMI_Pod = (1, Weapons.AN_ASQ_T50_TCTS_Pod___ACMI_Pod) + Smokewinder___red = (1, Weapons.Smokewinder___red) + Smokewinder___green = (1, Weapons.Smokewinder___green) + Smokewinder___blue = (1, Weapons.Smokewinder___blue) + Smokewinder___white = (1, Weapons.Smokewinder___white) + Smokewinder___yellow = (1, Weapons.Smokewinder___yellow) + Smokewinder___orange = (1, Weapons.Smokewinder___orange) + + class Pylon2: + JAS_IRIS_T = (2, JAS39GripenWeapons.JAS_IRIS_T) + JAS_Rb74 = (2, JAS39GripenWeapons.JAS_Rb74) + JAS_RB75T = (2, JAS39GripenWeapons.JAS_RB75T) + AGM_65K___Maverick_K__CCD_Imp_ASM_ = ( + 2, + Weapons.AGM_65K___Maverick_K__CCD_Imp_ASM_, + ) + JAS_BK90 = (2, JAS39GripenWeapons.JAS_BK90) + JAS_RB15F = (2, JAS39GripenWeapons.JAS_RB15F) + JAS_MAR_1 = (2, JAS39GripenWeapons.JAS_MAR_1) + JAS_GBU12 = (2, JAS39GripenWeapons.JAS_GBU12) + JAS_GBU49_TV = (2, JAS39GripenWeapons.JAS_GBU49_TV) + # ERRR JAS_GBU16 + JAS_GBU16_TV = (2, JAS39GripenWeapons.JAS_GBU16_TV) + # ERRR GBU12_TEST + Mk_82___500lb_GP_Bomb_LD = (2, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (2, Weapons.Mk_83___1000lb_GP_Bomb_LD) + BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_ = ( + 2, + Weapons.BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_, + ) + _4x_SB_M_71_120kg_GP_Bomb_Low_drag = ( + 2, + Weapons._4x_SB_M_71_120kg_GP_Bomb_Low_drag, + ) + JAS_ARAKM70BHE = (2, JAS39GripenWeapons.JAS_ARAKM70BHE) + JAS_ARAKM70BAP = (2, JAS39GripenWeapons.JAS_ARAKM70BAP) + JAS_BRIMSTONE = (2, JAS39GripenWeapons.JAS_BRIMSTONE) + + # ERRR + + class Pylon3: + JAS_RB75T = (3, JAS39GripenWeapons.JAS_RB75T) + AGM_65K___Maverick_K__CCD_Imp_ASM_ = ( + 3, + Weapons.AGM_65K___Maverick_K__CCD_Imp_ASM_, + ) + JAS_Stormshadow = (3, JAS39GripenWeapons.JAS_Stormshadow) + JAS_BK90 = (3, JAS39GripenWeapons.JAS_BK90) + JAS_GBU31 = (3, JAS39GripenWeapons.JAS_GBU31) + JAS_RB15F = (3, JAS39GripenWeapons.JAS_RB15F) + JAS_MAR_1 = (3, JAS39GripenWeapons.JAS_MAR_1) + JAS_GBU12 = (3, JAS39GripenWeapons.JAS_GBU12) + JAS_GBU49_TV = (3, JAS39GripenWeapons.JAS_GBU49_TV) + # ERRR JAS_GBU16 + JAS_GBU16_TV = (3, JAS39GripenWeapons.JAS_GBU16_TV) + GBU_10___2000lb_Laser_Guided_Bomb = ( + 3, + Weapons.GBU_10___2000lb_Laser_Guided_Bomb, + ) + Mk_82___500lb_GP_Bomb_LD = (3, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (3, Weapons.Mk_83___1000lb_GP_Bomb_LD) + Mk_84___2000lb_GP_Bomb_LD = (3, Weapons.Mk_84___2000lb_GP_Bomb_LD) + BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_ = ( + 3, + Weapons.BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_, + ) + _4x_SB_M_71_120kg_GP_Bomb_Low_drag = ( + 3, + Weapons._4x_SB_M_71_120kg_GP_Bomb_Low_drag, + ) + JAS_TANK1100 = (3, JAS39GripenWeapons.JAS_TANK1100) + JAS_TANK1700 = (3, JAS39GripenWeapons.JAS_TANK1700) + JAS_ARAKM70BHE = (3, JAS39GripenWeapons.JAS_ARAKM70BHE) + JAS_ARAKM70BAP = (3, JAS39GripenWeapons.JAS_ARAKM70BAP) + JAS_BRIMSTONE = (3, JAS39GripenWeapons.JAS_BRIMSTONE) + + # ERRR + + class Pylon4: + L_081_Fantasmagoria_ELINT_pod = (4, Weapons.L_081_Fantasmagoria_ELINT_pod) + + class Pylon5: + JAS_Stormshadow = (5, JAS39GripenWeapons.JAS_Stormshadow) + JAS_GBU12 = (5, JAS39GripenWeapons.JAS_GBU12) + JAS_GBU49_TV = (5, JAS39GripenWeapons.JAS_GBU49_TV) + # ERRR JAS_GBU16 + JAS_GBU16_TV = (5, JAS39GripenWeapons.JAS_GBU16_TV) + GBU_10___2000lb_Laser_Guided_Bomb = ( + 5, + Weapons.GBU_10___2000lb_Laser_Guided_Bomb, + ) + Mk_82___500lb_GP_Bomb_LD = (5, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (5, Weapons.Mk_83___1000lb_GP_Bomb_LD) + Mk_84___2000lb_GP_Bomb_LD = (5, Weapons.Mk_84___2000lb_GP_Bomb_LD) + BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_ = ( + 5, + Weapons.BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_, + ) + _4x_SB_M_71_120kg_GP_Bomb_Low_drag = ( + 5, + Weapons._4x_SB_M_71_120kg_GP_Bomb_Low_drag, + ) + JAS_TANK1100 = (5, JAS39GripenWeapons.JAS_TANK1100) + # ERRR JAS_WMD7 + JAS_BRIMSTONE = (5, JAS39GripenWeapons.JAS_BRIMSTONE) + + # ERRR {INV-SMOKE-RED} + # ERRR {INV-SMOKE-GREEN} + # ERRR {INV-SMOKE-BLUE} + # ERRR {INV-SMOKE-WHITE} + # ERRR {INV-SMOKE-YELLOW} + # ERRR {INV-SMOKE-ORANGE} + # ERRR + + class Pylon6: + L005_Sorbtsiya_ECM_pod__left_ = (6, Weapons.L005_Sorbtsiya_ECM_pod__left_) + + class Pylon7: + JAS_Litening = (7, JAS39GripenWeapons.JAS_Litening) + + # ERRR + + class Pylon8: + JAS_RB75T = (8, JAS39GripenWeapons.JAS_RB75T) + AGM_65K___Maverick_K__CCD_Imp_ASM_ = ( + 8, + Weapons.AGM_65K___Maverick_K__CCD_Imp_ASM_, + ) + JAS_Stormshadow = (8, JAS39GripenWeapons.JAS_Stormshadow) + JAS_BK90 = (8, JAS39GripenWeapons.JAS_BK90) + JAS_GBU31 = (8, JAS39GripenWeapons.JAS_GBU31) + JAS_RB15F = (8, JAS39GripenWeapons.JAS_RB15F) + JAS_MAR_1 = (8, JAS39GripenWeapons.JAS_MAR_1) + JAS_GBU12 = (8, JAS39GripenWeapons.JAS_GBU12) + JAS_GBU49_TV = (8, JAS39GripenWeapons.JAS_GBU49_TV) + # ERRR JAS_GBU16 + JAS_GBU16_TV = (8, JAS39GripenWeapons.JAS_GBU16_TV) + GBU_10___2000lb_Laser_Guided_Bomb = ( + 8, + Weapons.GBU_10___2000lb_Laser_Guided_Bomb, + ) + Mk_82___500lb_GP_Bomb_LD = (8, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (8, Weapons.Mk_83___1000lb_GP_Bomb_LD) + Mk_84___2000lb_GP_Bomb_LD = (8, Weapons.Mk_84___2000lb_GP_Bomb_LD) + BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_ = ( + 8, + Weapons.BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_, + ) + _4x_SB_M_71_120kg_GP_Bomb_Low_drag = ( + 8, + Weapons._4x_SB_M_71_120kg_GP_Bomb_Low_drag, + ) + JAS_TANK1100 = (8, JAS39GripenWeapons.JAS_TANK1100) + JAS_TANK1700 = (8, JAS39GripenWeapons.JAS_TANK1700) + JAS_ARAKM70BHE = (8, JAS39GripenWeapons.JAS_ARAKM70BHE) + JAS_ARAKM70BAP = (8, JAS39GripenWeapons.JAS_ARAKM70BAP) + JAS_BRIMSTONE = (8, JAS39GripenWeapons.JAS_BRIMSTONE) + + # ERRR + + class Pylon9: + JAS_IRIS_T = (9, JAS39GripenWeapons.JAS_IRIS_T) + JAS_Rb74 = (9, JAS39GripenWeapons.JAS_Rb74) + JAS_RB75T = (9, JAS39GripenWeapons.JAS_RB75T) + AGM_65K___Maverick_K__CCD_Imp_ASM_ = ( + 9, + Weapons.AGM_65K___Maverick_K__CCD_Imp_ASM_, + ) + JAS_BK90 = (9, JAS39GripenWeapons.JAS_BK90) + JAS_RB15F = (9, JAS39GripenWeapons.JAS_RB15F) + JAS_MAR_1 = (9, JAS39GripenWeapons.JAS_MAR_1) + JAS_GBU12 = (9, JAS39GripenWeapons.JAS_GBU12) + JAS_GBU49_TV = (9, JAS39GripenWeapons.JAS_GBU49_TV) + # ERRR JAS_GBU16 + JAS_GBU16_TV = (9, JAS39GripenWeapons.JAS_GBU16_TV) + # ERRR GBU12_TEST + Mk_82___500lb_GP_Bomb_LD = (9, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (9, Weapons.Mk_83___1000lb_GP_Bomb_LD) + BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_ = ( + 9, + Weapons.BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD_, + ) + _4x_SB_M_71_120kg_GP_Bomb_Low_drag = ( + 9, + Weapons._4x_SB_M_71_120kg_GP_Bomb_Low_drag, + ) + JAS_ARAKM70BHE = (9, JAS39GripenWeapons.JAS_ARAKM70BHE) + JAS_ARAKM70BAP = (9, JAS39GripenWeapons.JAS_ARAKM70BAP) + JAS_BRIMSTONE = (9, JAS39GripenWeapons.JAS_BRIMSTONE) + + # ERRR + + class Pylon10: + JAS_IRIS_T = (10, JAS39GripenWeapons.JAS_IRIS_T) + JAS_Rb74 = (10, JAS39GripenWeapons.JAS_Rb74) + AN_ASQ_T50_TCTS_Pod___ACMI_Pod = (10, Weapons.AN_ASQ_T50_TCTS_Pod___ACMI_Pod) + Smokewinder___red = (10, Weapons.Smokewinder___red) + Smokewinder___green = (10, Weapons.Smokewinder___green) + Smokewinder___blue = (10, Weapons.Smokewinder___blue) + Smokewinder___white = (10, Weapons.Smokewinder___white) + Smokewinder___yellow = (10, Weapons.Smokewinder___yellow) + Smokewinder___orange = (10, Weapons.Smokewinder___orange) + + pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} + + tasks = [ + task.SEAD, + task.AntishipStrike, + task.CAS, + task.GroundAttack, + task.PinpointStrike, + task.RunwayAttack, + ] + task_default = task.CAS diff --git a/pydcs_extensions/mod_units.py b/pydcs_extensions/mod_units.py index df011480..31c26829 100644 --- a/pydcs_extensions/mod_units.py +++ b/pydcs_extensions/mod_units.py @@ -2,6 +2,7 @@ from pydcs_extensions.a4ec.a4ec import A_4E_C from pydcs_extensions.f22a.f22a import F_22A from pydcs_extensions.hercules.hercules import Hercules from pydcs_extensions.highdigitsams import highdigitsams +from pydcs_extensions.jas39.jas39 import JAS39Gripen, JAS39Gripen_AG from pydcs_extensions.mb339.mb339 import MB_339PAN from pydcs_extensions.su57.su57 import Su_57 import pydcs_extensions.frenchpack.frenchpack as frenchpack @@ -12,6 +13,8 @@ MODDED_AIRPLANES = [ Su_57, F_22A, Hercules, + JAS39Gripen, + JAS39Gripen_AG, ] MODDED_VEHICLES = [ frenchpack._FIELD_HIDE, diff --git a/resources/customized_payloads/JAS39Gripen.lua b/resources/customized_payloads/JAS39Gripen.lua new file mode 100644 index 00000000..8f963be7 --- /dev/null +++ b/resources/customized_payloads/JAS39Gripen.lua @@ -0,0 +1,54 @@ +local unitPayloads = { + ["name"] = "JAS39Gripen", + ["payloads"] = { + [1] = { + ["displayName"] = "CAP", + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "JAS_Meteor", + ["num"] = 2, + }, + [4] = { + ["CLSID"] = "JAS_Meteor", + ["num"] = 9, + }, + [5] = { + ["CLSID"] = "JAS_Meteor", + ["num"] = 8, + }, + [6] = { + ["CLSID"] = "JAS_Meteor", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "JAS_TANK1100", + ["num"] = 5, + }, + [8] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 6, + }, + [9] = { + ["CLSID"] = "{0519A264-0AB6-11d6-9193-00A0249B6F00}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 11, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "JAS39Gripen", +} +return unitPayloads diff --git a/resources/customized_payloads/JAS39Gripen_AG.lua b/resources/customized_payloads/JAS39Gripen_AG.lua new file mode 100644 index 00000000..db687a8e --- /dev/null +++ b/resources/customized_payloads/JAS39Gripen_AG.lua @@ -0,0 +1,291 @@ +local unitPayloads = { + ["name"] = "JAS39Gripen_AG", + ["payloads"] = { + [1] = { + ["displayName"] = "ANTISHIP", + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "JAS_TANK1100", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{0519A264-0AB6-11d6-9193-00A0249B6F00}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "JAS_RB15F", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "JAS_RB15F", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "JAS_RB15F", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "JAS_RB15F", + ["num"] = 9, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [2] = { + ["displayName"] = "SEAD", + ["name"] = "SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "JAS_TANK1100", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{0519A264-0AB6-11d6-9193-00A0249B6F00}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "JAS_MAR-1", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "JAS_MAR-1", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "JAS_MAR-1", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "JAS_MAR-1", + ["num"] = 9, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [3] = { + ["displayName"] = "DEAD", + ["name"] = "DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "JAS_TANK1100", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{0519A264-0AB6-11d6-9193-00A0249B6F00}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "JAS_Stormshadow", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "JAS_Stormshadow", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "JAS_MAR-1", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "JAS_MAR-1", + ["num"] = 9, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [4] = { + ["displayName"] = "CAS", + ["name"] = "CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "JAS_TANK1100", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{0519A264-0AB6-11d6-9193-00A0249B6F00}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "JAS_BRIMSTONE", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "JAS_BRIMSTONE", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "JAS_BRIMSTONE", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "JAS_BRIMSTONE", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "JAS_Litening", + ["num"] = 7, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [5] = { + ["displayName"] = "STRIKE", + ["name"] = "STRIKE", + ["pylons"] = { + [1] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "JAS_TANK1100", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{0519A264-0AB6-11d6-9193-00A0249B6F00}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "JAS_GBU31", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "JAS_GBU31", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "JAS_GBU49_TV", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "JAS_GBU49_TV", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "JAS_Litening", + ["num"] = 7, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [6] = { + ["displayName"] = "OCA", + ["name"] = "OCA", + ["pylons"] = { + [1] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "JAS_IRIS-T", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "JAS_TANK1100", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{0519A264-0AB6-11d6-9193-00A0249B6F00}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "JAS_BK90", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "JAS_BK90", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "JAS_ARAKM70BHE", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "JAS_ARAKM70BHE", + ["num"] = 9, + }, + [10] = { + ["CLSID"] = "JAS_Litening", + ["num"] = 7, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "JAS39Gripen_AG", +} +return unitPayloads diff --git a/resources/factions/sweden_2002_with_gripen.json b/resources/factions/sweden_2002_with_gripen.json new file mode 100644 index 00000000..25af4e24 --- /dev/null +++ b/resources/factions/sweden_2002_with_gripen.json @@ -0,0 +1,51 @@ +{ + "country": "Sweden", + "name": "Sweden 2002", + "authors": "Khopa (updated with Gripen by bgreman)", + "description": "

Sweden in 2002 after the addition of the Gripen-C.

", + "locales": ["sv_SE"], + "aircrafts": [ + "AJS37", + "JAS39Gripen", + "JAS39Gripen_AG", + "UH_1H" + ], + "awacs": [ + "E_3A" + ], + "tankers": [ + "KC_135", + "KC130" + ], + "frontline_units": [ + "IFV_Warrior", + "MBT_Leopard_2A4", + "IFV_M1126_Stryker_ICV", + "SAM_Avenger__Stinger" + ], + "artillery_units": [ + ], + "logistics_units": [ + "Truck_M818_6x6" + ], + "infantry_units": [ + "Infantry_M4", + "Infantry_M249", + "MANPADS_Stinger" + ], + "air_defenses": [ + "AvengerGenerator", + "HawkGenerator" + ], + "ewrs": [ + "HawkEwrGenerator" + ], + "navy_generators": [ + "OliverHazardPerryGroupGenerator" + ], + "requirements": { + "JAS39 Gripen Mod by Community": "https://github.com/whisky-actual/Community-JAS-39-C" + }, + "has_jtac": true, + "jtac_unit": "MQ_9_Reaper" +} diff --git a/resources/ui/units/aircrafts/banners/JAS39Gripen_24.jpg b/resources/ui/units/aircrafts/banners/JAS39Gripen_24.jpg new file mode 100644 index 00000000..3d58c569 Binary files /dev/null and b/resources/ui/units/aircrafts/banners/JAS39Gripen_24.jpg differ diff --git a/resources/ui/units/aircrafts/banners/JAS39Gripen_AG_24.jpg b/resources/ui/units/aircrafts/banners/JAS39Gripen_AG_24.jpg new file mode 100644 index 00000000..403f2fe8 Binary files /dev/null and b/resources/ui/units/aircrafts/banners/JAS39Gripen_AG_24.jpg differ diff --git a/resources/ui/units/aircrafts/icons/JAS39Gripen_24.jpg b/resources/ui/units/aircrafts/icons/JAS39Gripen_24.jpg new file mode 100644 index 00000000..0a531578 Binary files /dev/null and b/resources/ui/units/aircrafts/icons/JAS39Gripen_24.jpg differ diff --git a/resources/ui/units/aircrafts/icons/JAS39Gripen_AG_24.jpg b/resources/ui/units/aircrafts/icons/JAS39Gripen_AG_24.jpg new file mode 100644 index 00000000..0a531578 Binary files /dev/null and b/resources/ui/units/aircrafts/icons/JAS39Gripen_AG_24.jpg differ diff --git a/resources/units/unit_info_text.json b/resources/units/unit_info_text.json index 93f302d5..32f41955 100644 --- a/resources/units/unit_info_text.json +++ b/resources/units/unit_info_text.json @@ -350,6 +350,24 @@ "year-of-variant-introduction": "1998" } }], + "JAS39Gripen": [{ + "default": { + "name": "JAS 39 Gripen", + "country-of-origin": "Sweden", + "manufacturer": "Saab AB", + "role": "Fighter", + "year-of-variant-introduction": "2002" + } + }], + "JAS39Gripen_AG": [{ + "default": { + "name": "JAS 39 Gripen A/G", + "country-of-origin": "Sweden", + "manufacturer": "Saab AB", + "role": "Attack", + "year-of-variant-introduction": "2002" + } + }], "JF-17": [{ "default": { "name": "JF-17 Thunder",