9 Commits

Author SHA1 Message Date
Raffson
f962032dc8 Fix mypy complaining about something that was already covered -_- 2023-04-02 22:39:51 +02:00
Raffson
f498c08dc9 Inject ground units to TgoConfig preset group if fill and has no unit 2023-04-02 22:39:51 +02:00
Raffson
f461a46cdd Update JAS-39 2023-04-02 22:39:50 +02:00
Raffson
f9d27f810b Update Sufa to v3.6 2023-04-01 23:28:55 +02:00
Raffson
b49c99d5cf Fix edge-case bug in layout's group size 2023-04-01 17:45:35 +02:00
Raffson
f05a6888d3 Changelog 1.1.1 2023-04-01 17:45:35 +02:00
Raffson
0413474576 version bump 2023-04-01 17:45:34 +02:00
Raffson
b4277c25c5 Fix incorrect plugin (option) values 2023-04-01 17:45:34 +02:00
Raffson
d4efd72f6d Fix procurement bug when coalition has no squadrons
If a user removes all squadrons manually, the faction may still contain aircraft but no budget for aircraft should be allocated at all. In such a case, all money should go to ground units...
2023-04-01 15:54:32 +02:00
16 changed files with 1054 additions and 187 deletions

View File

@@ -1,3 +1,15 @@
# Retribution 1.1.1 (hotfix)
## Features/Improvements
* **[Modding]** Support for IDF Mod Project F-16I Sufa & F-16D v3.6 mod
* **[Modding]** Support for JAS-39 Gripen v1.8.5-beta mod
## Fixes
* **[Plugins]** Fix bug where changes to plugin options doesn't do anything.
* **[Campaign Management]** Fix bug in procurement when no squadrons are present.
* **[Layouts]** Fix edge-case bug layout's group size.
* **[Campaign Design]** Preset groups assigned to specific TGOs not working as intended.
# Retribution 1.1.0
## Features/Improvements

View File

@@ -144,7 +144,7 @@ from pydcs_extensions.f4b.f4b import VSN_F4B, VSN_F4C
from pydcs_extensions.f84g.f84g import VSN_F84G
from pydcs_extensions.fa18efg.fa18efg import FA_18E, FA_18F, EA_18G
from pydcs_extensions.hercules.hercules import Hercules
from pydcs_extensions.jas39.jas39 import JAS39Gripen, JAS39Gripen_AG
from pydcs_extensions.jas39.jas39 import JAS39Gripen, JAS39Gripen_BVR, 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.ov10a.ov10a import Bronco_OV_10A
@@ -187,6 +187,7 @@ ESCORT_CAPABLE = [
FA_18F,
FA_18C_hornet,
JF_17,
JAS39Gripen_BVR,
JAS39Gripen,
F_16A_MLU,
F_16A,

View File

@@ -141,7 +141,7 @@ class Campaign:
def load_ground_forces_config(self) -> TgoConfig:
ground_forces = self.data.get("ground_forces", {})
if not ground_forces:
logging.warning(f"Campaign {self.name} does not define any squadrons")
logging.warning(f"Campaign {self.name} does not define any ground_forces")
return TgoConfig({})
return TgoConfig.from_campaign_data(ground_forces)

View File

@@ -368,6 +368,7 @@ class Faction:
self.remove_aircraft("VSN_A6A")
if not mod_settings.jas39_gripen:
self.remove_aircraft("JAS39Gripen")
self.remove_aircraft("JAS39Gripen_BVR")
self.remove_aircraft("JAS39Gripen_AG")
if not mod_settings.su30_flanker_h:
self.remove_aircraft("Su-30MKA")

View File

@@ -137,11 +137,14 @@ class TgoLayoutUnitGroup:
@property
def group_size(self) -> int:
"""The amount of units to be generated. If unit_count is defined in the layout this will be randomized accordingly. Otherwise this will be the maximum size."""
"""
The amount of units to be generated. If unit_count is defined in the layout this will be
randomized accordingly. Otherwise this will be the maximum size.
"""
if self.unit_count:
if len(self.unit_count) == 1:
return self.unit_count[0]
return random.choice(range(min(self.unit_count), max(self.unit_count)))
return random.choice(range(min(self.unit_count), max(self.unit_count) + 1))
return self.max_size
@property

View File

@@ -146,7 +146,7 @@ class LuaPlugin(PluginSettings):
@property
def enabled(self) -> bool:
return type(self.value) == bool and self.value
return type(self.get_value) == bool and self.get_value
@classmethod
def from_json(cls, name: str, path: Path) -> Optional[LuaPlugin]:
@@ -172,7 +172,7 @@ class LuaPlugin(PluginSettings):
if self.options:
option_decls = []
for option in self.options:
value = str(option.value).lower()
value = str(option.get_value).lower()
name = option.identifier
option_decls.append(f" dcsRetribution.plugins.{name} = {value}")

View File

@@ -59,8 +59,8 @@ class ProcurementAi:
):
return 0
# faction has no planes
if len(self.faction.aircrafts) == 0:
# faction has no planes or no squadrons
if len(self.faction.aircrafts) == 0 or len(self.air_wing.squadrons) == 0:
return 1
for cp in self.owned_points:

View File

@@ -310,8 +310,15 @@ class AirbaseGroundObjectGenerator(ControlPointGroundObjectGenerator):
and all([u in self.faction.accessible_units for u in fg.units])
)
if valid_fg:
unit_group = fg
assert fg
for layout in fg.layouts:
for lg in layout.groups:
for ug in lg.unit_groups:
if not fg.has_unit_for_layout_group(ug) and ug.fill:
for g in self.faction.ground_units:
if g.unit_class in ug.unit_classes:
fg.units.append(g)
unit_group: Optional[ForceGroup] = fg
self.armed_forces.add_or_update_force_group(fg)
else:
if fg and not valid_fg:

View File

@@ -3,7 +3,7 @@ from pathlib import Path
MAJOR_VERSION = 1
MINOR_VERSION = 1
MICRO_VERSION = 0
MICRO_VERSION = 1
def _optional_build_id_component(path: Path) -> str | None:

File diff suppressed because it is too large Load Diff

View File

@@ -136,6 +136,11 @@ class JAS39GripenWeapons:
"name": "M70B HE Unguided rocket",
"weight": 372.2,
}
_4_x_M_71_120_kg_GP_Bomb_High_drag = {
"clsid": "{JAS39_M71HD}",
"name": "4 x M/71 120 kg GP Bomb High-drag",
"weight": 605,
}
_4_x_M_71_120_kg_GP_Bomb_Low_drag_ = {
"clsid": "{JAS39_M71LD}",
"name": "4 x M/71 120 kg GP Bomb Low-drag ",
@@ -251,6 +256,26 @@ class JAS39GripenWeapons:
"name": "KEPD 350 Long Range Anti-Radiation Cruise-missile",
"weight": 1400,
}
RBS_15_Mk4_AShM = {
"clsid": "{JAS39_RBS15}",
"name": "RBS-15 Mk4 AShM",
"weight": 650,
}
RBS_15_Mk4_AShM_for_AI = {
"clsid": "{JAS39_RBS15AI}",
"name": "RBS-15 Mk4 AShM for AI",
"weight": 650,
}
AGM_65H_TV_Guided_Missile = {
"clsid": "{JAS39_AGM_65H}",
"name": "AGM-65H TV Guided Missile",
"weight": 260,
}
AGM_65K_TV_Guided_Missile = {
"clsid": "{JAS39_AGM_65K}",
"name": "AGM-65K TV Guided Missile",
"weight": 349,
}
inject_weapons(JAS39GripenWeapons)
@@ -328,6 +353,10 @@ class JAS39Gripen(PlaneType):
2,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
2,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (2, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (2, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
@@ -368,6 +397,10 @@ class JAS39Gripen(PlaneType):
3,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
3,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (3, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (3, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
Drop_tank_1100_litre = (3, JAS39GripenWeapons.Drop_tank_1100_litre)
@@ -415,6 +448,10 @@ class JAS39Gripen(PlaneType):
6,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
6,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (6, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (6, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
Drop_tank_1100_litre = (6, JAS39GripenWeapons.Drop_tank_1100_litre)
@@ -454,6 +491,267 @@ class JAS39Gripen(PlaneType):
7,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
7,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (7, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (7, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
class Pylon8:
IRIS_T_IR_AAM = (8, JAS39GripenWeapons.IRIS_T_IR_AAM)
AIM_9L_Sidewinder_IR_AAM_ = (8, JAS39GripenWeapons.AIM_9L_Sidewinder_IR_AAM_)
A_Darter_IR_AAM = (8, JAS39GripenWeapons.A_Darter_IR_AAM)
AIM_9M_Sidewinder_IR_AAM_ = (8, JAS39GripenWeapons.AIM_9M_Sidewinder_IR_AAM_)
AIM_9X_Sidewinder_IR_AAM_ = (8, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (8, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (8, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
AN_ASQ_T50_TCTS_Pod___ACMI_Pod = (8, Weapons.AN_ASQ_T50_TCTS_Pod___ACMI_Pod)
Smokewinder___red = (8, Weapons.Smokewinder___red)
Smokewinder___green = (8, Weapons.Smokewinder___green)
Smokewinder___blue = (8, Weapons.Smokewinder___blue)
Smokewinder___white = (8, Weapons.Smokewinder___white)
Smokewinder___yellow = (8, Weapons.Smokewinder___yellow)
Smokewinder___orange = (8, Weapons.Smokewinder___orange)
class Pylon9:
Litening_III_Targeting_Pod_FLIR = (
9,
JAS39GripenWeapons.Litening_III_Targeting_Pod_FLIR,
)
class Pylon10:
Integrated_ELINT = (10, JAS39GripenWeapons.Integrated_ELINT)
class Pylon11:
EWS_39_Integrated_ECM = (11, JAS39GripenWeapons.EWS_39_Integrated_ECM)
pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
tasks = [
task.Intercept,
task.CAP,
task.Reconnaissance,
task.Escort,
task.FighterSweep,
]
task_default = task.FighterSweep
@planemod
class JAS39Gripen_BVR(PlaneType):
id = "JAS39Gripen_BVR"
flyable = True
height = 4.5
width = 8.4
length = 14.1
fuel_max = 2550
max_speed = 2649.996
chaff = 80
flare = 40
charge_total = 120
chaff_charge_size = 1
flare_charge_size = 1
eplrs = True
category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F}
radio_frequency = 127.5
livery_name = "JAS39GRIPEN_BVR" # from type
Liveries = Liveries()[livery_name]
class Pylon1:
IRIS_T_IR_AAM = (1, JAS39GripenWeapons.IRIS_T_IR_AAM)
AIM_9L_Sidewinder_IR_AAM_ = (1, JAS39GripenWeapons.AIM_9L_Sidewinder_IR_AAM_)
A_Darter_IR_AAM = (1, JAS39GripenWeapons.A_Darter_IR_AAM)
AIM_9M_Sidewinder_IR_AAM_ = (1, JAS39GripenWeapons.AIM_9M_Sidewinder_IR_AAM_)
AIM_9X_Sidewinder_IR_AAM_ = (1, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (1, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (1, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
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:
IRIS_T_IR_AAM = (2, JAS39GripenWeapons.IRIS_T_IR_AAM)
AIM_9L_Sidewinder_IR_AAM_ = (2, JAS39GripenWeapons.AIM_9L_Sidewinder_IR_AAM_)
A_Darter_IR_AAM = (2, JAS39GripenWeapons.A_Darter_IR_AAM)
AIM_9M_Sidewinder_IR_AAM_ = (2, JAS39GripenWeapons.AIM_9M_Sidewinder_IR_AAM_)
AIM_9X_Sidewinder_IR_AAM_ = (2, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (2, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (2, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
Meteor_BVRAAM_Active_Rdr_AAM = (
2,
JAS39GripenWeapons.Meteor_BVRAAM_Active_Rdr_AAM,
)
AIM_120B_AMRAAM_Active_Rdr_AAM = (
2,
JAS39GripenWeapons.AIM_120B_AMRAAM_Active_Rdr_AAM,
)
AIM_120C_5_AMRAAM_Active_Rdr_AAM = (
2,
JAS39GripenWeapons.AIM_120C_5_AMRAAM_Active_Rdr_AAM,
)
AIM_120C_7_AMRAAM_Active_Rdr_AAM = (
2,
JAS39GripenWeapons.AIM_120C_7_AMRAAM_Active_Rdr_AAM,
)
I_Derby_ER_BVRAAM_Active_Rdr_AAM = (
2,
JAS39GripenWeapons.I_Derby_ER_BVRAAM_Active_Rdr_AAM,
)
Mk_82_500_lb_GP_Bomb = (2, JAS39GripenWeapons.Mk_82_500_lb_GP_Bomb)
Mk_83_1000_lb_GP_Bomb = (2, JAS39GripenWeapons.Mk_83_1000_lb_GP_Bomb)
_2_x_Mk_82_500_lb_GP_Bomb = (2, JAS39GripenWeapons._2_x_Mk_82_500_lb_GP_Bomb)
_4_x_M_71_120_kg_GP_Bomb_Low_drag_ = (
2,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
2,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (2, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (2, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
class Pylon3:
AIM_9L_Sidewinder_IR_AAM_ = (3, JAS39GripenWeapons.AIM_9L_Sidewinder_IR_AAM_)
IRIS_T_IR_AAM = (3, JAS39GripenWeapons.IRIS_T_IR_AAM)
A_Darter_IR_AAM = (3, JAS39GripenWeapons.A_Darter_IR_AAM)
AIM_9M_Sidewinder_IR_AAM_ = (3, JAS39GripenWeapons.AIM_9M_Sidewinder_IR_AAM_)
AIM_9X_Sidewinder_IR_AAM_ = (3, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (3, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (3, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
Meteor_BVRAAM_Active_Rdr_AAM = (
3,
JAS39GripenWeapons.Meteor_BVRAAM_Active_Rdr_AAM,
)
AIM_120B_AMRAAM_Active_Rdr_AAM = (
3,
JAS39GripenWeapons.AIM_120B_AMRAAM_Active_Rdr_AAM,
)
AIM_120C_5_AMRAAM_Active_Rdr_AAM = (
3,
JAS39GripenWeapons.AIM_120C_5_AMRAAM_Active_Rdr_AAM,
)
AIM_120C_7_AMRAAM_Active_Rdr_AAM = (
3,
JAS39GripenWeapons.AIM_120C_7_AMRAAM_Active_Rdr_AAM,
)
I_Derby_ER_BVRAAM_Active_Rdr_AAM = (
3,
JAS39GripenWeapons.I_Derby_ER_BVRAAM_Active_Rdr_AAM,
)
Mk_82_500_lb_GP_Bomb = (3, JAS39GripenWeapons.Mk_82_500_lb_GP_Bomb)
Mk_83_1000_lb_GP_Bomb = (3, JAS39GripenWeapons.Mk_83_1000_lb_GP_Bomb)
Mk_84_2000_lb_GP_Bomb = (3, JAS39GripenWeapons.Mk_84_2000_lb_GP_Bomb)
_2_x_Mk_82_500_lb_GP_Bomb = (3, JAS39GripenWeapons._2_x_Mk_82_500_lb_GP_Bomb)
_2_x_Mk_83_1000_lb_GP_Bomb = (3, JAS39GripenWeapons._2_x_Mk_83_1000_lb_GP_Bomb)
_4_x_M_71_120_kg_GP_Bomb_Low_drag_ = (
3,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
3,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (3, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (3, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
Drop_tank_1100_litre = (3, JAS39GripenWeapons.Drop_tank_1100_litre)
class Pylon4:
Drop_tank_1100_litre = (4, JAS39GripenWeapons.Drop_tank_1100_litre)
class Pylon5:
Litening_III_Targeting_Pod = (5, JAS39GripenWeapons.Litening_III_Targeting_Pod)
class Pylon6:
AIM_9L_Sidewinder_IR_AAM_ = (6, JAS39GripenWeapons.AIM_9L_Sidewinder_IR_AAM_)
IRIS_T_IR_AAM = (6, JAS39GripenWeapons.IRIS_T_IR_AAM)
A_Darter_IR_AAM = (6, JAS39GripenWeapons.A_Darter_IR_AAM)
AIM_9M_Sidewinder_IR_AAM_ = (6, JAS39GripenWeapons.AIM_9M_Sidewinder_IR_AAM_)
AIM_9X_Sidewinder_IR_AAM_ = (6, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (6, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (6, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
Meteor_BVRAAM_Active_Rdr_AAM = (
6,
JAS39GripenWeapons.Meteor_BVRAAM_Active_Rdr_AAM,
)
AIM_120B_AMRAAM_Active_Rdr_AAM = (
6,
JAS39GripenWeapons.AIM_120B_AMRAAM_Active_Rdr_AAM,
)
AIM_120C_5_AMRAAM_Active_Rdr_AAM = (
6,
JAS39GripenWeapons.AIM_120C_5_AMRAAM_Active_Rdr_AAM,
)
AIM_120C_7_AMRAAM_Active_Rdr_AAM = (
6,
JAS39GripenWeapons.AIM_120C_7_AMRAAM_Active_Rdr_AAM,
)
I_Derby_ER_BVRAAM_Active_Rdr_AAM = (
6,
JAS39GripenWeapons.I_Derby_ER_BVRAAM_Active_Rdr_AAM,
)
Mk_82_500_lb_GP_Bomb = (6, JAS39GripenWeapons.Mk_82_500_lb_GP_Bomb)
Mk_83_1000_lb_GP_Bomb = (6, JAS39GripenWeapons.Mk_83_1000_lb_GP_Bomb)
Mk_84_2000_lb_GP_Bomb = (6, JAS39GripenWeapons.Mk_84_2000_lb_GP_Bomb)
_2_x_Mk_82_500_lb_GP_Bomb = (6, JAS39GripenWeapons._2_x_Mk_82_500_lb_GP_Bomb)
_2_x_Mk_83_1000_lb_GP_Bomb = (6, JAS39GripenWeapons._2_x_Mk_83_1000_lb_GP_Bomb)
_4_x_M_71_120_kg_GP_Bomb_Low_drag_ = (
6,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
6,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (6, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (6, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
Drop_tank_1100_litre = (6, JAS39GripenWeapons.Drop_tank_1100_litre)
class Pylon7:
IRIS_T_IR_AAM = (7, JAS39GripenWeapons.IRIS_T_IR_AAM)
AIM_9L_Sidewinder_IR_AAM_ = (7, JAS39GripenWeapons.AIM_9L_Sidewinder_IR_AAM_)
A_Darter_IR_AAM = (7, JAS39GripenWeapons.A_Darter_IR_AAM)
AIM_9M_Sidewinder_IR_AAM_ = (7, JAS39GripenWeapons.AIM_9M_Sidewinder_IR_AAM_)
AIM_9X_Sidewinder_IR_AAM_ = (7, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (7, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (7, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
Meteor_BVRAAM_Active_Rdr_AAM = (
7,
JAS39GripenWeapons.Meteor_BVRAAM_Active_Rdr_AAM,
)
AIM_120B_AMRAAM_Active_Rdr_AAM = (
7,
JAS39GripenWeapons.AIM_120B_AMRAAM_Active_Rdr_AAM,
)
AIM_120C_5_AMRAAM_Active_Rdr_AAM = (
7,
JAS39GripenWeapons.AIM_120C_5_AMRAAM_Active_Rdr_AAM,
)
AIM_120C_7_AMRAAM_Active_Rdr_AAM = (
7,
JAS39GripenWeapons.AIM_120C_7_AMRAAM_Active_Rdr_AAM,
)
I_Derby_ER_BVRAAM_Active_Rdr_AAM = (
7,
JAS39GripenWeapons.I_Derby_ER_BVRAAM_Active_Rdr_AAM,
)
Mk_82_500_lb_GP_Bomb = (7, JAS39GripenWeapons.Mk_82_500_lb_GP_Bomb)
Mk_83_1000_lb_GP_Bomb = (7, JAS39GripenWeapons.Mk_83_1000_lb_GP_Bomb)
_2_x_Mk_82_500_lb_GP_Bomb = (7, JAS39GripenWeapons._2_x_Mk_82_500_lb_GP_Bomb)
_4_x_M_71_120_kg_GP_Bomb_Low_drag_ = (
7,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
7,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (7, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (7, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
@@ -542,14 +840,8 @@ class JAS39Gripen_AG(PlaneType):
AIM_9X_Sidewinder_IR_AAM_ = (2, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (2, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (2, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
RBS_15_Mk4_Gungnir_Anti_ship_Missile = (
2,
JAS39GripenWeapons.RBS_15_Mk4_Gungnir_Anti_ship_Missile,
)
RBS_15_Mk4_Gungnir_Anti_ship_Missile__AI_ = (
2,
JAS39GripenWeapons.RBS_15_Mk4_Gungnir_Anti_ship_Missile__AI_,
)
RBS_15_Mk4_AShM = (2, JAS39GripenWeapons.RBS_15_Mk4_AShM)
RBS_15_Mk4_AShM_for_AI = (2, JAS39GripenWeapons.RBS_15_Mk4_AShM_for_AI)
MAR_1_High_Speed_Anti_Radiation_Missile = (
2,
JAS39GripenWeapons.MAR_1_High_Speed_Anti_Radiation_Missile,
@@ -605,17 +897,18 @@ class JAS39Gripen_AG(PlaneType):
2,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
2,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (2, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (2, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
_3_x_Brimstone_Laser_Guided_Missile = (
2,
JAS39GripenWeapons._3_x_Brimstone_Laser_Guided_Missile,
)
LAU_117_with_AGM_65K___Maverick_K__CCD_Imp_ASM_ = (
2,
Weapons.LAU_117_with_AGM_65K___Maverick_K__CCD_Imp_ASM_,
)
LAU_117_AGM_65H = (2, Weapons.LAU_117_AGM_65H)
AGM_65K_TV_Guided_Missile = (2, JAS39GripenWeapons.AGM_65K_TV_Guided_Missile)
AGM_65H_TV_Guided_Missile = (2, JAS39GripenWeapons.AGM_65H_TV_Guided_Missile)
_3_x_SPEAR_3_Anti_Radiation_Missile = (
2,
JAS39GripenWeapons._3_x_SPEAR_3_Anti_Radiation_Missile,
@@ -630,11 +923,8 @@ class JAS39Gripen_AG(PlaneType):
AIM_9X_Sidewinder_IR_AAM_ = (3, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (3, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (3, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
LAU_117_with_AGM_65K___Maverick_K__CCD_Imp_ASM_ = (
3,
Weapons.LAU_117_with_AGM_65K___Maverick_K__CCD_Imp_ASM_,
)
LAU_117_AGM_65H = (3, Weapons.LAU_117_AGM_65H)
AGM_65K_TV_Guided_Missile = (3, JAS39GripenWeapons.AGM_65K_TV_Guided_Missile)
AGM_65H_TV_Guided_Missile = (3, JAS39GripenWeapons.AGM_65H_TV_Guided_Missile)
_3_x_Brimstone_Laser_Guided_Missile = (
3,
JAS39GripenWeapons._3_x_Brimstone_Laser_Guided_Missile,
@@ -644,14 +934,8 @@ class JAS39Gripen_AG(PlaneType):
JAS39GripenWeapons._3_x_SPEAR_3_Anti_Radiation_Missile,
)
_3_x_SPEAR_EW_Decoy = (3, JAS39GripenWeapons._3_x_SPEAR_EW_Decoy)
RBS_15_Mk4_Gungnir_Anti_ship_Missile = (
3,
JAS39GripenWeapons.RBS_15_Mk4_Gungnir_Anti_ship_Missile,
)
RBS_15_Mk4_Gungnir_Anti_ship_Missile__AI_ = (
3,
JAS39GripenWeapons.RBS_15_Mk4_Gungnir_Anti_ship_Missile__AI_,
)
RBS_15_Mk4_AShM = (3, JAS39GripenWeapons.RBS_15_Mk4_AShM)
RBS_15_Mk4_AShM_for_AI = (3, JAS39GripenWeapons.RBS_15_Mk4_AShM_for_AI)
MAR_1_High_Speed_Anti_Radiation_Missile = (
3,
JAS39GripenWeapons.MAR_1_High_Speed_Anti_Radiation_Missile,
@@ -729,6 +1013,10 @@ class JAS39Gripen_AG(PlaneType):
3,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
3,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
Drop_tank_1100_litre = (3, JAS39GripenWeapons.Drop_tank_1100_litre)
M70B_HE_Unguided_rocket = (3, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (3, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
@@ -742,6 +1030,7 @@ class JAS39Gripen_AG(PlaneType):
)
class Pylon4:
DIS_LS_6_100_DUAL_L = (4, Weapons.DIS_LS_6_100_DUAL_L)
Drop_tank_1100_litre = (4, JAS39GripenWeapons.Drop_tank_1100_litre)
# ERRR {INV-SMOKE-RED}
@@ -762,11 +1051,8 @@ class JAS39Gripen_AG(PlaneType):
AIM_9X_Sidewinder_IR_AAM_ = (6, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (6, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (6, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
LAU_117_with_AGM_65K___Maverick_K__CCD_Imp_ASM_ = (
6,
Weapons.LAU_117_with_AGM_65K___Maverick_K__CCD_Imp_ASM_,
)
LAU_117_AGM_65H = (6, Weapons.LAU_117_AGM_65H)
AGM_65K_TV_Guided_Missile = (6, JAS39GripenWeapons.AGM_65K_TV_Guided_Missile)
AGM_65H_TV_Guided_Missile = (6, JAS39GripenWeapons.AGM_65H_TV_Guided_Missile)
_3_x_Brimstone_Laser_Guided_Missile = (
6,
JAS39GripenWeapons._3_x_Brimstone_Laser_Guided_Missile,
@@ -776,14 +1062,8 @@ class JAS39Gripen_AG(PlaneType):
JAS39GripenWeapons._3_x_SPEAR_3_Anti_Radiation_Missile,
)
_3_x_SPEAR_EW_Decoy = (6, JAS39GripenWeapons._3_x_SPEAR_EW_Decoy)
RBS_15_Mk4_Gungnir_Anti_ship_Missile = (
6,
JAS39GripenWeapons.RBS_15_Mk4_Gungnir_Anti_ship_Missile,
)
RBS_15_Mk4_Gungnir_Anti_ship_Missile__AI_ = (
6,
JAS39GripenWeapons.RBS_15_Mk4_Gungnir_Anti_ship_Missile__AI_,
)
RBS_15_Mk4_AShM = (6, JAS39GripenWeapons.RBS_15_Mk4_AShM)
RBS_15_Mk4_AShM_for_AI = (6, JAS39GripenWeapons.RBS_15_Mk4_AShM_for_AI)
MAR_1_High_Speed_Anti_Radiation_Missile = (
6,
JAS39GripenWeapons.MAR_1_High_Speed_Anti_Radiation_Missile,
@@ -861,6 +1141,10 @@ class JAS39Gripen_AG(PlaneType):
6,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
6,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
Drop_tank_1100_litre = (6, JAS39GripenWeapons.Drop_tank_1100_litre)
M70B_HE_Unguided_rocket = (6, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (6, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
@@ -881,14 +1165,8 @@ class JAS39Gripen_AG(PlaneType):
AIM_9X_Sidewinder_IR_AAM_ = (7, JAS39GripenWeapons.AIM_9X_Sidewinder_IR_AAM_)
Python_5_IR_AAM = (7, JAS39GripenWeapons.Python_5_IR_AAM)
AIM_132_ASRAAM_IR_AAM = (7, JAS39GripenWeapons.AIM_132_ASRAAM_IR_AAM)
RBS_15_Mk4_Gungnir_Anti_ship_Missile = (
7,
JAS39GripenWeapons.RBS_15_Mk4_Gungnir_Anti_ship_Missile,
)
RBS_15_Mk4_Gungnir_Anti_ship_Missile__AI_ = (
7,
JAS39GripenWeapons.RBS_15_Mk4_Gungnir_Anti_ship_Missile__AI_,
)
RBS_15_Mk4_AShM = (7, JAS39GripenWeapons.RBS_15_Mk4_AShM)
RBS_15_Mk4_AShM_for_AI = (7, JAS39GripenWeapons.RBS_15_Mk4_AShM_for_AI)
MAR_1_High_Speed_Anti_Radiation_Missile = (
7,
JAS39GripenWeapons.MAR_1_High_Speed_Anti_Radiation_Missile,
@@ -944,17 +1222,18 @@ class JAS39Gripen_AG(PlaneType):
7,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_Low_drag_,
)
_4_x_M_71_120_kg_GP_Bomb_High_drag = (
7,
JAS39GripenWeapons._4_x_M_71_120_kg_GP_Bomb_High_drag,
)
M70B_HE_Unguided_rocket = (7, JAS39GripenWeapons.M70B_HE_Unguided_rocket)
M70B_AP_Unguided_rocket = (7, JAS39GripenWeapons.M70B_AP_Unguided_rocket)
_3_x_Brimstone_Laser_Guided_Missile = (
7,
JAS39GripenWeapons._3_x_Brimstone_Laser_Guided_Missile,
)
LAU_117_with_AGM_65K___Maverick_K__CCD_Imp_ASM_ = (
7,
Weapons.LAU_117_with_AGM_65K___Maverick_K__CCD_Imp_ASM_,
)
LAU_117_AGM_65H = (7, Weapons.LAU_117_AGM_65H)
AGM_65K_TV_Guided_Missile = (7, JAS39GripenWeapons.AGM_65K_TV_Guided_Missile)
AGM_65H_TV_Guided_Missile = (7, JAS39GripenWeapons.AGM_65H_TV_Guided_Missile)
_3_x_SPEAR_3_Anti_Radiation_Missile = (
7,
JAS39GripenWeapons._3_x_SPEAR_3_Anti_Radiation_Missile,

View File

@@ -855,7 +855,7 @@ class GeneratorOptions(QtWidgets.QWizardPage):
("C-130J-30 Super Hercules", hercules),
("F-4B/C Phantom II (v2.8.1.01 Standalone + 29Jan23 Patch)", f4bc_phantom),
("F-15D Baz (v1.0)", f15d_baz),
("F-16I Sufa & F-16D (v3.2 by IDF Mods Project)", f_16_idf),
("F-16I Sufa & F-16D (v3.6 by IDF Mods Project)", f_16_idf),
("F/A-18E/F/G Super Hornet (version 2.1)", fa_18efg),
("F-22A Raptor", f22_raptor),
("F-84G Thunderjet (v2.5.7.01)", f84g_thunderjet),
@@ -865,7 +865,7 @@ class GeneratorOptions(QtWidgets.QWizardPage):
("Frenchpack", frenchpack),
("High Digit SAMs", high_digit_sams),
("Swedish Military Assets pack (1.10)", swedishmilitaryassetspack),
("JAS 39 Gripen (v1.8.0-beta)", jas39_gripen),
("JAS 39 Gripen (v1.8.5-beta)", jas39_gripen),
("OV-10A Bronco", ov10a_bronco),
("Su-30 Flanker-H (V2.01B)", su30_flanker_h),
("Su-57 Felon", su57_felon),

View File

@@ -0,0 +1,65 @@
local unitPayloads = {
["name"] = "JAS39Gripen_BVR",
["payloads"] = {
[1] = {
["name"] = "CAP",
["pylons"] = {
[1] = {
["CLSID"] = "{JAS39_ASRAAM}",
["num"] = 1,
},
[2] = {
["CLSID"] = "{JAS39_Meteor}",
["num"] = 2,
},
[3] = {
["CLSID"] = "{JAS39_Meteor}",
["num"] = 3,
},
[4] = {
["CLSID"] = "{JAS39_TANK1100}",
["num"] = 4,
},
[5] = {
["CLSID"] = "{JAS39_Meteor}",
["num"] = 6,
},
[6] = {
["CLSID"] = "{JAS39_Meteor}",
["num"] = 7,
},
[7] = {
["CLSID"] = "{JAS39_ASRAAM}",
["num"] = 8,
},
[8] = {
["CLSID"] = "{JAS39_ELINT}",
["num"] = 10,
},
[9] = {
["CLSID"] = "{JAS39_EWS39}",
["num"] = 11,
},
[10] = {
["CLSID"] = "{JAS39_FLIR}",
["num"] = 9,
},
[11] = {
["CLSID"] = "{JAS39_Litening}",
["num"] = 5,
},
},
["tasks"] = {
[1] = 15,
[2] = 11,
[3] = 18,
[4] = 19,
[5] = 10,
},
},
},
["tasks"] = {
},
["unitType"] = "JAS39Gripen_BVR",
}
return unitPayloads

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,16 @@
description:
The Saab JAS 39 Gripen is a light single-engine multirole fighter aircraft
manufactured by the Swedish aerospace company Saab AB. The Gripen has a delta wing
and canard configuration with relaxed stability design and fly-by-wire flight controls.
Various versions have been built, grouped as A-, C- and E-series. This is the AA
Version, since the Mod for this aircraft splitted it in an AA and AG Version.
introduced: 2002
manufacturer: Saab AB
origin: Sweden
price: 21
role: Fighter
variants:
JAS 39 Gripen BVR: {}
radios:
intra_flight: R&S Series 6000
inter_flight: R&S Series 6000