mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Compare commits
46 Commits
develop-5.
...
3.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00ca7d0b4d | ||
|
|
64c426653c | ||
|
|
a8960c9bbe | ||
|
|
72282845e8 | ||
|
|
e64aff4e91 | ||
|
|
e192e54c90 | ||
|
|
39b0599b7b | ||
|
|
45b40e4aa3 | ||
|
|
9887a8ff83 | ||
|
|
8d3556aa4b | ||
|
|
a59c01bcfe | ||
|
|
fb72962f74 | ||
|
|
ed1dacfe7c | ||
|
|
794de0fcbb | ||
|
|
9d71b2e727 | ||
|
|
5b8f626651 | ||
|
|
461f4b82a9 | ||
|
|
15653d0628 | ||
|
|
dffc631b87 | ||
|
|
17efb48b2e | ||
|
|
7e85825d2b | ||
|
|
798591b980 | ||
|
|
4a52af298c | ||
|
|
fe886a754e | ||
|
|
0220fa4ff6 | ||
|
|
e7336d8608 | ||
|
|
d77a174ac1 | ||
|
|
6348317893 | ||
|
|
a516cd2f80 | ||
|
|
e1aa3e9d0e | ||
|
|
d1d1acf6e0 | ||
|
|
a0e5a707fb | ||
|
|
4555a4968d | ||
|
|
ae34e4749b | ||
|
|
635eee9590 | ||
|
|
f0558c4c1e | ||
|
|
637ca8fbca | ||
|
|
e4e65df976 | ||
|
|
29579a2aec | ||
|
|
e32b43cffb | ||
|
|
de2e5f861b | ||
|
|
b27a7fc71b | ||
|
|
5861ce6146 | ||
|
|
c732ed556f | ||
|
|
be1a75e520 | ||
|
|
c41d10c581 |
24
game/db.py
24
game/db.py
@@ -173,6 +173,7 @@ from game.factions.faction_loader import FactionLoader
|
|||||||
from pydcs_extensions.a4ec.a4ec import A_4E_C
|
from pydcs_extensions.a4ec.a4ec import A_4E_C
|
||||||
from pydcs_extensions.f22a.f22a import F_22A
|
from pydcs_extensions.f22a.f22a import F_22A
|
||||||
from pydcs_extensions.hercules.hercules import Hercules
|
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.mb339.mb339 import MB_339PAN
|
||||||
from pydcs_extensions.su57.su57 import Su_57
|
from pydcs_extensions.su57.su57 import Su_57
|
||||||
|
|
||||||
@@ -183,6 +184,8 @@ plane_map["F-22A"] = F_22A
|
|||||||
plane_map["MB-339PAN"] = MB_339PAN
|
plane_map["MB-339PAN"] = MB_339PAN
|
||||||
plane_map["Su-57"] = Su_57
|
plane_map["Su-57"] = Su_57
|
||||||
plane_map["Hercules"] = Hercules
|
plane_map["Hercules"] = Hercules
|
||||||
|
plane_map["JAS39Gripen"] = JAS39Gripen
|
||||||
|
plane_map["JAS39Gripen_AG"] = JAS39Gripen_AG
|
||||||
|
|
||||||
vehicle_map["FieldHL"] = frenchpack._FIELD_HIDE
|
vehicle_map["FieldHL"] = frenchpack._FIELD_HIDE
|
||||||
vehicle_map["HARRIERH"] = frenchpack._FIELD_HIDE_SMALL
|
vehicle_map["HARRIERH"] = frenchpack._FIELD_HIDE_SMALL
|
||||||
@@ -414,6 +417,7 @@ PRICES = {
|
|||||||
F_22A: 40,
|
F_22A: 40,
|
||||||
Tornado_IDS: 20,
|
Tornado_IDS: 20,
|
||||||
Tornado_GR4: 20,
|
Tornado_GR4: 20,
|
||||||
|
JAS39Gripen: 26,
|
||||||
# bomber
|
# bomber
|
||||||
Su_17M4: 10,
|
Su_17M4: 10,
|
||||||
Su_25: 15,
|
Su_25: 15,
|
||||||
@@ -427,6 +431,7 @@ PRICES = {
|
|||||||
A_10C: 22,
|
A_10C: 22,
|
||||||
A_10C_2: 24,
|
A_10C_2: 24,
|
||||||
S_3B: 10,
|
S_3B: 10,
|
||||||
|
JAS39Gripen_AG: 26,
|
||||||
# heli
|
# heli
|
||||||
Ka_50: 13,
|
Ka_50: 13,
|
||||||
SA342M: 8,
|
SA342M: 8,
|
||||||
@@ -525,6 +530,7 @@ PRICES = {
|
|||||||
Armor.IFV_Marder: 10,
|
Armor.IFV_Marder: 10,
|
||||||
Armor.IFV_Warrior: 10,
|
Armor.IFV_Warrior: 10,
|
||||||
Armor.IFV_LAV_25: 7,
|
Armor.IFV_LAV_25: 7,
|
||||||
|
Armor.APC_AAV_7_Amphibious: 10,
|
||||||
Artillery.MLRS_M270_227mm: 55,
|
Artillery.MLRS_M270_227mm: 55,
|
||||||
Artillery.SPH_M109_Paladin_155mm: 25,
|
Artillery.SPH_M109_Paladin_155mm: 25,
|
||||||
Artillery.SPM_2S9_Nona_120mm_M: 12,
|
Artillery.SPM_2S9_Nona_120mm_M: 12,
|
||||||
@@ -538,11 +544,20 @@ PRICES = {
|
|||||||
Artillery.SPH_Dana_vz77_152mm: 26,
|
Artillery.SPH_Dana_vz77_152mm: 26,
|
||||||
Artillery.PLZ_05: 25,
|
Artillery.PLZ_05: 25,
|
||||||
Artillery.SPH_T155_Firtina_155mm: 28,
|
Artillery.SPH_T155_Firtina_155mm: 28,
|
||||||
|
Artillery.MLRS_9A52_Smerch_CM_300mm: 60,
|
||||||
Unarmed.LUV_UAZ_469_Jeep: 3,
|
Unarmed.LUV_UAZ_469_Jeep: 3,
|
||||||
Unarmed.Truck_Ural_375: 3,
|
Unarmed.Truck_Ural_375: 3,
|
||||||
|
Unarmed.Truck_GAZ_3307: 2,
|
||||||
Infantry.Infantry_M4: 1,
|
Infantry.Infantry_M4: 1,
|
||||||
Infantry.Infantry_AK_74: 1,
|
Infantry.Infantry_AK_74: 1,
|
||||||
Unarmed.Truck_M818_6x6: 3,
|
Unarmed.Truck_M818_6x6: 3,
|
||||||
|
Unarmed.LUV_Land_Rover_109: 1,
|
||||||
|
Unarmed.Truck_GAZ_3308: 1,
|
||||||
|
Unarmed.Truck_GAZ_66: 1,
|
||||||
|
Unarmed.Truck_KAMAZ_43101: 1,
|
||||||
|
Unarmed.Truck_Land_Rover_101_FC: 1,
|
||||||
|
Unarmed.Truck_Ural_4320_31_Arm_d: 1,
|
||||||
|
Unarmed.Truck_Ural_4320T: 1,
|
||||||
# WW2
|
# WW2
|
||||||
Armor.MT_Pz_Kpfw_V_Panther_Ausf_G: 24,
|
Armor.MT_Pz_Kpfw_V_Panther_Ausf_G: 24,
|
||||||
Armor.Tk_PzIV_H: 16,
|
Armor.Tk_PzIV_H: 16,
|
||||||
@@ -569,6 +584,13 @@ PRICES = {
|
|||||||
Armor.Car_Daimler_Armored: 8,
|
Armor.Car_Daimler_Armored: 8,
|
||||||
Armor.LT_Mk_VII_Tetrarch: 8,
|
Armor.LT_Mk_VII_Tetrarch: 8,
|
||||||
Unarmed.Tractor_M4_Hi_Speed: 2,
|
Unarmed.Tractor_M4_Hi_Speed: 2,
|
||||||
|
Unarmed.Carrier_Sd_Kfz_7_Tractor: 1,
|
||||||
|
Unarmed.LUV_Kettenrad: 1,
|
||||||
|
Unarmed.LUV_Kubelwagen_82: 1,
|
||||||
|
Unarmed.Truck_Opel_Blitz: 1,
|
||||||
|
Unarmed.Truck_Bedford: 1,
|
||||||
|
Unarmed.Truck_GMC_Jimmy_6x6_Truck: 1,
|
||||||
|
Unarmed.Car_Willys_Jeep: 1,
|
||||||
# ship
|
# ship
|
||||||
CV_1143_5_Admiral_Kuznetsov: 100,
|
CV_1143_5_Admiral_Kuznetsov: 100,
|
||||||
CVN_74_John_C__Stennis: 100,
|
CVN_74_John_C__Stennis: 100,
|
||||||
@@ -758,6 +780,7 @@ UNIT_BY_TASK = {
|
|||||||
F_4E,
|
F_4E,
|
||||||
F_5E_3,
|
F_5E_3,
|
||||||
I_16,
|
I_16,
|
||||||
|
JAS39Gripen,
|
||||||
JF_17,
|
JF_17,
|
||||||
J_11A,
|
J_11A,
|
||||||
M_2000C,
|
M_2000C,
|
||||||
@@ -797,6 +820,7 @@ UNIT_BY_TASK = {
|
|||||||
F_15E,
|
F_15E,
|
||||||
F_86F_Sabre,
|
F_86F_Sabre,
|
||||||
Hercules,
|
Hercules,
|
||||||
|
JAS39Gripen_AG,
|
||||||
Ju_88A4,
|
Ju_88A4,
|
||||||
Ka_50,
|
Ka_50,
|
||||||
L_39ZA,
|
L_39ZA,
|
||||||
|
|||||||
@@ -399,6 +399,7 @@ class Operation:
|
|||||||
@classmethod
|
@classmethod
|
||||||
def _generate_ground_conflicts(cls) -> None:
|
def _generate_ground_conflicts(cls) -> None:
|
||||||
"""For each frontline in the Operation, generate the ground conflicts and JTACs"""
|
"""For each frontline in the Operation, generate the ground conflicts and JTACs"""
|
||||||
|
cls.jtacs = []
|
||||||
for front_line in cls.game.theater.conflicts():
|
for front_line in cls.game.theater.conflicts():
|
||||||
player_cp = front_line.blue_cp
|
player_cp = front_line.blue_cp
|
||||||
enemy_cp = front_line.red_cp
|
enemy_cp = front_line.red_cp
|
||||||
|
|||||||
@@ -665,10 +665,16 @@ AIRCRAFT_DATA: Dict[str, AircraftData] = {
|
|||||||
channel_allocator=None,
|
channel_allocator=None,
|
||||||
channel_namer=SCR522ChannelNamer,
|
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["A-10C_2"] = AIRCRAFT_DATA["A-10C"]
|
||||||
AIRCRAFT_DATA["P-51D-30-NA"] = AIRCRAFT_DATA["P-51D"]
|
AIRCRAFT_DATA["P-51D-30-NA"] = AIRCRAFT_DATA["P-51D"]
|
||||||
AIRCRAFT_DATA["P-47D-30"] = AIRCRAFT_DATA["P-51D"]
|
AIRCRAFT_DATA["P-47D-30"] = AIRCRAFT_DATA["P-51D"]
|
||||||
|
AIRCRAFT_DATA["JAS39Gripen_AG"] = AIRCRAFT_DATA["JAS39Gripen"]
|
||||||
|
|
||||||
|
|
||||||
class AircraftConflictGenerator:
|
class AircraftConflictGenerator:
|
||||||
|
|||||||
@@ -674,7 +674,7 @@ AIRFIELD_DATA = {
|
|||||||
vor=("DAN", MHz(108, 400)),
|
vor=("DAN", MHz(108, 400)),
|
||||||
atc=AtcData(MHz(3, 900), MHz(38, 700), MHz(122, 100), MHz(360, 100)),
|
atc=AtcData(MHz(3, 900), MHz(38, 700), MHz(122, 100), MHz(360, 100)),
|
||||||
ils={
|
ils={
|
||||||
"50": ("IDAN", MHz(109, 300)),
|
"05": ("IDAN", MHz(109, 300)),
|
||||||
"23": ("DANM", MHz(111, 700)),
|
"23": ("DANM", MHz(111, 700)),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ from dcs.unittype import FlyingType
|
|||||||
from gen.flights.flight import FlightType
|
from gen.flights.flight import FlightType
|
||||||
from pydcs_extensions.a4ec.a4ec import A_4E_C
|
from pydcs_extensions.a4ec.a4ec import A_4E_C
|
||||||
from pydcs_extensions.f22a.f22a import F_22A
|
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.hercules.hercules import Hercules
|
||||||
from pydcs_extensions.mb339.mb339 import MB_339PAN
|
from pydcs_extensions.mb339.mb339 import MB_339PAN
|
||||||
from pydcs_extensions.su57.su57 import Su_57
|
from pydcs_extensions.su57.su57 import Su_57
|
||||||
@@ -134,6 +135,7 @@ CAP_CAPABLE = [
|
|||||||
FA_18C_hornet,
|
FA_18C_hornet,
|
||||||
F_16A,
|
F_16A,
|
||||||
F_4E,
|
F_4E,
|
||||||
|
JAS39Gripen,
|
||||||
JF_17,
|
JF_17,
|
||||||
MiG_23MLD,
|
MiG_23MLD,
|
||||||
MiG_21Bis,
|
MiG_21Bis,
|
||||||
@@ -174,6 +176,7 @@ CAS_CAPABLE = [
|
|||||||
FA_18C_hornet,
|
FA_18C_hornet,
|
||||||
Tornado_GR4,
|
Tornado_GR4,
|
||||||
Tornado_IDS,
|
Tornado_IDS,
|
||||||
|
JAS39Gripen_AG,
|
||||||
JF_17,
|
JF_17,
|
||||||
AV8BNA,
|
AV8BNA,
|
||||||
A_10A,
|
A_10A,
|
||||||
@@ -242,6 +245,7 @@ SEAD_CAPABLE = [
|
|||||||
A_4E_C,
|
A_4E_C,
|
||||||
F_14B,
|
F_14B,
|
||||||
F_14A_135_GR,
|
F_14A_135_GR,
|
||||||
|
JAS39Gripen_AG,
|
||||||
AV8BNA,
|
AV8BNA,
|
||||||
Su_24M,
|
Su_24M,
|
||||||
Su_17M4,
|
Su_17M4,
|
||||||
@@ -257,6 +261,7 @@ DEAD_CAPABLE = [
|
|||||||
AJS37,
|
AJS37,
|
||||||
F_14B,
|
F_14B,
|
||||||
F_14A_135_GR,
|
F_14A_135_GR,
|
||||||
|
JAS39Gripen_AG,
|
||||||
B_1B,
|
B_1B,
|
||||||
B_52H,
|
B_52H,
|
||||||
Tu_160,
|
Tu_160,
|
||||||
@@ -292,6 +297,7 @@ STRIKE_CAPABLE = [
|
|||||||
F_16A,
|
F_16A,
|
||||||
F_14B,
|
F_14B,
|
||||||
F_14A_135_GR,
|
F_14A_135_GR,
|
||||||
|
JAS39Gripen_AG,
|
||||||
Tornado_IDS,
|
Tornado_IDS,
|
||||||
Su_17M4,
|
Su_17M4,
|
||||||
Su_24MR,
|
Su_24MR,
|
||||||
@@ -342,6 +348,7 @@ ANTISHIP_CAPABLE = [
|
|||||||
AJS37,
|
AJS37,
|
||||||
Tu_22M3,
|
Tu_22M3,
|
||||||
FA_18C_hornet,
|
FA_18C_hornet,
|
||||||
|
JAS39Gripen_AG,
|
||||||
Su_24M,
|
Su_24M,
|
||||||
Su_17M4,
|
Su_17M4,
|
||||||
JF_17,
|
JF_17,
|
||||||
|
|||||||
@@ -22,17 +22,19 @@ class CombatGroupRole(Enum):
|
|||||||
LOGI = 6
|
LOGI = 6
|
||||||
INFANTRY = 7
|
INFANTRY = 7
|
||||||
ATGM = 8
|
ATGM = 8
|
||||||
|
RECON = 9
|
||||||
|
|
||||||
|
|
||||||
DISTANCE_FROM_FRONTLINE = {
|
DISTANCE_FROM_FRONTLINE = {
|
||||||
CombatGroupRole.TANK: (2200, 3200),
|
CombatGroupRole.TANK: (2200, 3200),
|
||||||
CombatGroupRole.APC: (7500, 8500),
|
CombatGroupRole.APC: (2700, 3700),
|
||||||
CombatGroupRole.IFV: (2700, 3700),
|
CombatGroupRole.IFV: (2700, 3700),
|
||||||
CombatGroupRole.ARTILLERY: (16000, 18000),
|
CombatGroupRole.ARTILLERY: (16000, 18000),
|
||||||
CombatGroupRole.SHORAD: (12000, 13000),
|
CombatGroupRole.SHORAD: (5000, 8000),
|
||||||
CombatGroupRole.LOGI: (18000, 20000),
|
CombatGroupRole.LOGI: (18000, 20000),
|
||||||
CombatGroupRole.INFANTRY: (2800, 3300),
|
CombatGroupRole.INFANTRY: (2800, 3300),
|
||||||
CombatGroupRole.ATGM: (5200, 6200),
|
CombatGroupRole.ATGM: (5200, 6200),
|
||||||
|
CombatGroupRole.RECON: (2000, 3000),
|
||||||
}
|
}
|
||||||
|
|
||||||
GROUP_SIZES_BY_COMBAT_STANCE = {
|
GROUP_SIZES_BY_COMBAT_STANCE = {
|
||||||
@@ -74,6 +76,7 @@ class GroundPlanner:
|
|||||||
self.atgm_group: List[CombatGroup] = []
|
self.atgm_group: List[CombatGroup] = []
|
||||||
self.logi_groups: List[CombatGroup] = []
|
self.logi_groups: List[CombatGroup] = []
|
||||||
self.shorad_groups: List[CombatGroup] = []
|
self.shorad_groups: List[CombatGroup] = []
|
||||||
|
self.recon_groups: List[CombatGroup] = []
|
||||||
|
|
||||||
self.units_per_cp: Dict[int, List[CombatGroup]] = {}
|
self.units_per_cp: Dict[int, List[CombatGroup]] = {}
|
||||||
for cp in self.connected_enemy_cp:
|
for cp in self.connected_enemy_cp:
|
||||||
@@ -115,6 +118,9 @@ class GroundPlanner:
|
|||||||
elif unit_type in GroundUnitClass.Shorads:
|
elif unit_type in GroundUnitClass.Shorads:
|
||||||
collection = self.shorad_groups
|
collection = self.shorad_groups
|
||||||
role = CombatGroupRole.SHORAD
|
role = CombatGroupRole.SHORAD
|
||||||
|
elif unit_type in GroundUnitClass.Recon:
|
||||||
|
collection = self.recon_groups
|
||||||
|
role = CombatGroupRole.RECON
|
||||||
else:
|
else:
|
||||||
logging.warning(
|
logging.warning(
|
||||||
f"Unused front line vehicle at base {unit_type}: unknown unit class"
|
f"Unused front line vehicle at base {unit_type}: unknown unit class"
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ RADIOS: List[Radio] = [
|
|||||||
Radio("AN/ARC-51BX", MHz(225), MHz(400), step=kHz(50)),
|
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-131", MHz(30), MHz(76), step=kHz(50)),
|
||||||
Radio("AN/ARC-134", MHz(116), MHz(150), step=kHz(25)),
|
Radio("AN/ARC-134", MHz(116), MHz(150), step=kHz(25)),
|
||||||
|
Radio("R&S Series 6000", MHz(100), MHz(156), step=kHz(25)),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
476
pydcs_extensions/jas39/jas39.py
Normal file
476
pydcs_extensions/jas39/jas39.py
Normal file
@@ -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 <CLEAN>
|
||||||
|
|
||||||
|
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 <CLEAN>
|
||||||
|
|
||||||
|
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 <CLEAN>
|
||||||
|
|
||||||
|
class Pylon6:
|
||||||
|
L005_Sorbtsiya_ECM_pod__left_ = (6, Weapons.L005_Sorbtsiya_ECM_pod__left_)
|
||||||
|
|
||||||
|
class Pylon7:
|
||||||
|
JAS_Litening = (7, JAS39GripenWeapons.JAS_Litening)
|
||||||
|
|
||||||
|
# ERRR <CLEAN>
|
||||||
|
|
||||||
|
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 <CLEAN>
|
||||||
|
|
||||||
|
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 <CLEAN>
|
||||||
|
|
||||||
|
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 <CLEAN>
|
||||||
|
|
||||||
|
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 <CLEAN>
|
||||||
|
|
||||||
|
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 <CLEAN>
|
||||||
|
|
||||||
|
class Pylon6:
|
||||||
|
L005_Sorbtsiya_ECM_pod__left_ = (6, Weapons.L005_Sorbtsiya_ECM_pod__left_)
|
||||||
|
|
||||||
|
class Pylon7:
|
||||||
|
JAS_Litening = (7, JAS39GripenWeapons.JAS_Litening)
|
||||||
|
|
||||||
|
# ERRR <CLEAN>
|
||||||
|
|
||||||
|
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 <CLEAN>
|
||||||
|
|
||||||
|
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 <CLEAN>
|
||||||
|
|
||||||
|
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
|
||||||
@@ -2,6 +2,7 @@ from pydcs_extensions.a4ec.a4ec import A_4E_C
|
|||||||
from pydcs_extensions.f22a.f22a import F_22A
|
from pydcs_extensions.f22a.f22a import F_22A
|
||||||
from pydcs_extensions.hercules.hercules import Hercules
|
from pydcs_extensions.hercules.hercules import Hercules
|
||||||
from pydcs_extensions.highdigitsams import highdigitsams
|
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.mb339.mb339 import MB_339PAN
|
||||||
from pydcs_extensions.su57.su57 import Su_57
|
from pydcs_extensions.su57.su57 import Su_57
|
||||||
import pydcs_extensions.frenchpack.frenchpack as frenchpack
|
import pydcs_extensions.frenchpack.frenchpack as frenchpack
|
||||||
@@ -12,6 +13,8 @@ MODDED_AIRPLANES = [
|
|||||||
Su_57,
|
Su_57,
|
||||||
F_22A,
|
F_22A,
|
||||||
Hercules,
|
Hercules,
|
||||||
|
JAS39Gripen,
|
||||||
|
JAS39Gripen_AG,
|
||||||
]
|
]
|
||||||
MODDED_VEHICLES = [
|
MODDED_VEHICLES = [
|
||||||
frenchpack._FIELD_HIDE,
|
frenchpack._FIELD_HIDE,
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ class QWeatherWidget(QGroupBox):
|
|||||||
precipitation = self.conditions.weather.clouds.precipitation
|
precipitation = self.conditions.weather.clouds.precipitation
|
||||||
|
|
||||||
if not cloud_density:
|
if not cloud_density:
|
||||||
self.forecastClouds.setText("Sunny")
|
self.forecastClouds.setText("Clear")
|
||||||
weather_type = "clear"
|
weather_type = "clear"
|
||||||
elif cloud_density < 3:
|
elif cloud_density < 3:
|
||||||
self.forecastClouds.setText("Partly Cloudy")
|
self.forecastClouds.setText("Partly Cloudy")
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ from dcs.vehicles import vehicle_map
|
|||||||
from shapely.geometry import LineString, Point as ShapelyPoint, Polygon, MultiPolygon
|
from shapely.geometry import LineString, Point as ShapelyPoint, Polygon, MultiPolygon
|
||||||
|
|
||||||
from game import Game, db
|
from game import Game, db
|
||||||
from game.factions.faction import Faction
|
|
||||||
from game.navmesh import NavMesh
|
from game.navmesh import NavMesh
|
||||||
from game.profiling import logged_duration
|
from game.profiling import logged_duration
|
||||||
from game.theater import (
|
from game.theater import (
|
||||||
@@ -27,7 +26,7 @@ from game.transfers import MultiGroupTransport, TransportMap
|
|||||||
from game.utils import meters, nautical_miles
|
from game.utils import meters, nautical_miles
|
||||||
from gen.ato import AirTaskingOrder
|
from gen.ato import AirTaskingOrder
|
||||||
from gen.flights.flight import Flight, FlightWaypoint, FlightWaypointType
|
from gen.flights.flight import Flight, FlightWaypoint, FlightWaypointType
|
||||||
from gen.flights.flightplan import FlightPlan, PatrollingFlightPlan
|
from gen.flights.flightplan import FlightPlan, PatrollingFlightPlan, CasFlightPlan
|
||||||
from qt_ui.dialogs import Dialog
|
from qt_ui.dialogs import Dialog
|
||||||
from qt_ui.models import GameModel, AtoModel
|
from qt_ui.models import GameModel, AtoModel
|
||||||
from qt_ui.windows.GameUpdateSignal import GameUpdateSignal
|
from qt_ui.windows.GameUpdateSignal import GameUpdateSignal
|
||||||
@@ -508,14 +507,12 @@ class FlightJs(QObject):
|
|||||||
flight: Flight,
|
flight: Flight,
|
||||||
selected: bool,
|
selected: bool,
|
||||||
theater: ConflictTheater,
|
theater: ConflictTheater,
|
||||||
faction: Faction,
|
|
||||||
ato_model: AtoModel,
|
ato_model: AtoModel,
|
||||||
) -> None:
|
) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.flight = flight
|
self.flight = flight
|
||||||
self._selected = selected
|
self._selected = selected
|
||||||
self.theater = theater
|
self.theater = theater
|
||||||
self.faction = faction
|
|
||||||
self.ato_model = ato_model
|
self.ato_model = ato_model
|
||||||
self._waypoints = self.make_waypoints()
|
self._waypoints = self.make_waypoints()
|
||||||
|
|
||||||
@@ -556,14 +553,19 @@ class FlightJs(QObject):
|
|||||||
return []
|
return []
|
||||||
start = self.flight.flight_plan.patrol_start
|
start = self.flight.flight_plan.patrol_start
|
||||||
end = self.flight.flight_plan.patrol_end
|
end = self.flight.flight_plan.patrol_end
|
||||||
line = LineString(
|
if isinstance(self.flight.flight_plan, CasFlightPlan):
|
||||||
[
|
center = self.flight.flight_plan.target.position
|
||||||
ShapelyPoint(start.x, start.y),
|
commit_center = ShapelyPoint(center.x, center.y)
|
||||||
ShapelyPoint(end.x, end.y),
|
else:
|
||||||
]
|
commit_center = LineString(
|
||||||
|
[
|
||||||
|
ShapelyPoint(start.x, start.y),
|
||||||
|
ShapelyPoint(end.x, end.y),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
bubble = commit_center.buffer(
|
||||||
|
self.flight.flight_plan.engagement_distance.meters
|
||||||
)
|
)
|
||||||
doctrine = self.faction.doctrine
|
|
||||||
bubble = line.buffer(doctrine.cap_engagement_range.meters)
|
|
||||||
return shapely_poly_to_leaflet_points(bubble, self.theater)
|
return shapely_poly_to_leaflet_points(bubble, self.theater)
|
||||||
|
|
||||||
|
|
||||||
@@ -855,7 +857,6 @@ class MapModel(QObject):
|
|||||||
flight,
|
flight,
|
||||||
selected=blue and (p_idx, f_idx) == self._selected_flight_index,
|
selected=blue and (p_idx, f_idx) == self._selected_flight_index,
|
||||||
theater=self.game.theater,
|
theater=self.game.theater,
|
||||||
faction=self.game.faction_for(blue),
|
|
||||||
ato_model=self.game_model.ato_model_for(blue),
|
ato_model=self.game_model.ato_model_for(blue),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ class QHangarStatus(QHBoxLayout):
|
|||||||
next_turn = self.control_point.allocated_aircraft(self.game_model.game)
|
next_turn = self.control_point.allocated_aircraft(self.game_model.game)
|
||||||
max_amount = self.control_point.total_aircraft_parking
|
max_amount = self.control_point.total_aircraft_parking
|
||||||
|
|
||||||
components = [f"{next_turn.present} present"]
|
components = [f"{next_turn.total_present} present"]
|
||||||
if next_turn.total_ordered > 0:
|
if next_turn.total_ordered > 0:
|
||||||
components.append(f"{next_turn.total_ordered} purchased")
|
components.append(f"{next_turn.total_ordered} purchased")
|
||||||
elif next_turn.total_ordered < 0:
|
elif next_turn.total_ordered < 0:
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class PilotControls(QHBoxLayout):
|
|||||||
self.selector.currentIndexChanged.connect(self.on_pilot_changed)
|
self.selector.currentIndexChanged.connect(self.on_pilot_changed)
|
||||||
self.addWidget(self.selector)
|
self.addWidget(self.selector)
|
||||||
|
|
||||||
self.player_checkbox = QCheckBox()
|
self.player_checkbox = QCheckBox(text="Player")
|
||||||
self.player_checkbox.setToolTip("Checked if this pilot is a player.")
|
self.player_checkbox.setToolTip("Checked if this pilot is a player.")
|
||||||
self.on_pilot_changed(self.selector.currentIndex())
|
self.on_pilot_changed(self.selector.currentIndex())
|
||||||
self.addWidget(self.player_checkbox)
|
self.addWidget(self.player_checkbox)
|
||||||
@@ -123,6 +123,7 @@ class PilotControls(QHBoxLayout):
|
|||||||
|
|
||||||
def enable_and_reset(self) -> None:
|
def enable_and_reset(self) -> None:
|
||||||
self.selector.rebuild()
|
self.selector.rebuild()
|
||||||
|
self.player_checkbox.setEnabled(True)
|
||||||
self.on_pilot_changed(self.selector.currentIndex())
|
self.on_pilot_changed(self.selector.currentIndex())
|
||||||
|
|
||||||
def disable_and_clear(self) -> None:
|
def disable_and_clear(self) -> None:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from typing import Any, Dict, List, Union, Tuple
|
|||||||
|
|
||||||
import packaging.version
|
import packaging.version
|
||||||
from PySide2 import QtGui
|
from PySide2 import QtGui
|
||||||
from PySide2.QtCore import QItemSelectionModel
|
from PySide2.QtCore import QItemSelectionModel, QModelIndex, Qt
|
||||||
from PySide2.QtGui import QStandardItem, QStandardItemModel
|
from PySide2.QtGui import QStandardItem, QStandardItemModel
|
||||||
from PySide2.QtWidgets import QAbstractItemView, QListView
|
from PySide2.QtWidgets import QAbstractItemView, QListView
|
||||||
|
|
||||||
@@ -116,6 +116,7 @@ def load_campaigns() -> List[Campaign]:
|
|||||||
class QCampaignItem(QStandardItem):
|
class QCampaignItem(QStandardItem):
|
||||||
def __init__(self, campaign: Campaign) -> None:
|
def __init__(self, campaign: Campaign) -> None:
|
||||||
super(QCampaignItem, self).__init__()
|
super(QCampaignItem, self).__init__()
|
||||||
|
self.setData(campaign, QCampaignList.CampaignRole)
|
||||||
self.setIcon(QtGui.QIcon(CONST.ICONS[campaign.icon_name]))
|
self.setIcon(QtGui.QIcon(CONST.ICONS[campaign.icon_name]))
|
||||||
self.setEditable(False)
|
self.setEditable(False)
|
||||||
if campaign.is_compatible:
|
if campaign.is_compatible:
|
||||||
@@ -126,31 +127,33 @@ class QCampaignItem(QStandardItem):
|
|||||||
|
|
||||||
|
|
||||||
class QCampaignList(QListView):
|
class QCampaignList(QListView):
|
||||||
def __init__(self, campaigns: List[Campaign]) -> None:
|
CampaignRole = Qt.UserRole
|
||||||
|
|
||||||
|
def __init__(self, campaigns: list[Campaign], show_incompatible: bool) -> None:
|
||||||
super(QCampaignList, self).__init__()
|
super(QCampaignList, self).__init__()
|
||||||
self.model = QStandardItemModel(self)
|
self.campaign_model = QStandardItemModel(self)
|
||||||
self.setModel(self.model)
|
self.setModel(self.campaign_model)
|
||||||
self.setMinimumWidth(250)
|
self.setMinimumWidth(250)
|
||||||
self.setMinimumHeight(350)
|
self.setMinimumHeight(350)
|
||||||
self.campaigns = []
|
self.campaigns = campaigns
|
||||||
self.setSelectionBehavior(QAbstractItemView.SelectItems)
|
self.setSelectionBehavior(QAbstractItemView.SelectItems)
|
||||||
self.setup_content(campaigns)
|
self.setup_content(show_incompatible)
|
||||||
|
|
||||||
def setup_content(self, campaigns: List[Campaign]) -> None:
|
@property
|
||||||
for campaign in campaigns:
|
def selected_campaign(self) -> Campaign:
|
||||||
self.campaigns.append(campaign)
|
return self.currentIndex().data(QCampaignList.CampaignRole)
|
||||||
item = QCampaignItem(campaign)
|
|
||||||
self.model.appendRow(item)
|
|
||||||
self.setSelectedCampaign(0)
|
|
||||||
self.repaint()
|
|
||||||
|
|
||||||
def setSelectedCampaign(self, row):
|
def setup_content(self, show_incompatible: bool) -> None:
|
||||||
self.selectionModel().clearSelection()
|
self.selectionModel().blockSignals(True)
|
||||||
index = self.model.index(row, 0)
|
try:
|
||||||
if not index.isValid():
|
self.campaign_model.clear()
|
||||||
index = self.model.index(0, 0)
|
for campaign in self.campaigns:
|
||||||
self.selectionModel().setCurrentIndex(index, QItemSelectionModel.Select)
|
if show_incompatible or campaign.is_compatible:
|
||||||
self.repaint()
|
item = QCampaignItem(campaign)
|
||||||
|
self.campaign_model.appendRow(item)
|
||||||
|
finally:
|
||||||
|
self.selectionModel().blockSignals(False)
|
||||||
|
|
||||||
def clear_layout(self):
|
self.selectionModel().setCurrentIndex(
|
||||||
self.model.removeRows(0, self.model.rowCount())
|
self.campaign_model.index(0, 0, QModelIndex()), QItemSelectionModel.Select
|
||||||
|
)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from typing import List
|
|||||||
|
|
||||||
from PySide2 import QtGui, QtWidgets
|
from PySide2 import QtGui, QtWidgets
|
||||||
from PySide2.QtCore import QItemSelectionModel, QPoint, Qt, QDate
|
from PySide2.QtCore import QItemSelectionModel, QPoint, Qt, QDate
|
||||||
from PySide2.QtWidgets import QVBoxLayout, QTextEdit, QLabel
|
from PySide2.QtWidgets import QVBoxLayout, QTextEdit, QLabel, QCheckBox
|
||||||
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
||||||
|
|
||||||
from game import db
|
from game import db
|
||||||
@@ -319,7 +319,16 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# List of campaigns
|
# List of campaigns
|
||||||
campaignList = QCampaignList(campaigns)
|
show_incompatible_campaigns_checkbox = QCheckBox(
|
||||||
|
text="Show incompatible campaigns"
|
||||||
|
)
|
||||||
|
show_incompatible_campaigns_checkbox.setChecked(False)
|
||||||
|
campaignList = QCampaignList(
|
||||||
|
campaigns, show_incompatible_campaigns_checkbox.isChecked()
|
||||||
|
)
|
||||||
|
show_incompatible_campaigns_checkbox.toggled.connect(
|
||||||
|
lambda checked: campaignList.setup_content(show_incompatible=checked)
|
||||||
|
)
|
||||||
self.registerField("selectedCampaign", campaignList)
|
self.registerField("selectedCampaign", campaignList)
|
||||||
|
|
||||||
# Faction description
|
# Faction description
|
||||||
@@ -380,8 +389,7 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
|||||||
template_perf = jinja_env.get_template(
|
template_perf = jinja_env.get_template(
|
||||||
"campaign_performance_template_EN.j2"
|
"campaign_performance_template_EN.j2"
|
||||||
)
|
)
|
||||||
index = campaignList.selectionModel().currentIndex().row()
|
campaign = campaignList.selected_campaign
|
||||||
campaign = campaignList.campaigns[index]
|
|
||||||
self.setField("selectedCampaign", campaign)
|
self.setField("selectedCampaign", campaign)
|
||||||
self.campaignMapDescription.setText(template.render({"campaign": campaign}))
|
self.campaignMapDescription.setText(template.render({"campaign": campaign}))
|
||||||
self.faction_selection.setDefaultFactions(campaign)
|
self.faction_selection.setDefaultFactions(campaign)
|
||||||
@@ -396,9 +404,12 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
|||||||
campaignList.selectionModel().selectionChanged.connect(on_campaign_selected)
|
campaignList.selectionModel().selectionChanged.connect(on_campaign_selected)
|
||||||
on_campaign_selected()
|
on_campaign_selected()
|
||||||
|
|
||||||
# Docs Link
|
|
||||||
docsText = QtWidgets.QLabel(
|
docsText = QtWidgets.QLabel(
|
||||||
'<a href="https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-Campaigns"><span style="color:#FFFFFF;">How to create your own theater</span></a>'
|
"<p>Want more campaigns? You can "
|
||||||
|
'<a href="https://github.com/dcs-liberation/dcs_liberation/wiki/Campaign-maintenance"><span style="color:#FFFFFF;">offer to help</span></a>, '
|
||||||
|
'<a href="https://github.com/dcs-liberation/dcs_liberation/wiki/Community-campaigns"><span style="color:#FFFFFF;">play a community campaign</span></a>, '
|
||||||
|
'or <a href="https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-Campaigns"><span style="color:#FFFFFF;">create your own</span></a>.'
|
||||||
|
"</p>"
|
||||||
)
|
)
|
||||||
docsText.setAlignment(Qt.AlignCenter)
|
docsText.setAlignment(Qt.AlignCenter)
|
||||||
docsText.setOpenExternalLinks(True)
|
docsText.setOpenExternalLinks(True)
|
||||||
@@ -418,7 +429,8 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
|||||||
layout = QtWidgets.QGridLayout()
|
layout = QtWidgets.QGridLayout()
|
||||||
layout.setColumnMinimumWidth(0, 20)
|
layout.setColumnMinimumWidth(0, 20)
|
||||||
layout.addWidget(campaignList, 0, 0, 5, 1)
|
layout.addWidget(campaignList, 0, 0, 5, 1)
|
||||||
layout.addWidget(docsText, 5, 0, 1, 1)
|
layout.addWidget(show_incompatible_campaigns_checkbox, 5, 0, 1, 1)
|
||||||
|
layout.addWidget(docsText, 6, 0, 1, 1)
|
||||||
layout.addWidget(self.campaignMapDescription, 0, 1, 1, 1)
|
layout.addWidget(self.campaignMapDescription, 0, 1, 1, 1)
|
||||||
layout.addWidget(self.performanceText, 1, 1, 1, 1)
|
layout.addWidget(self.performanceText, 1, 1, 1, 1)
|
||||||
layout.addWidget(mapSettingsGroup, 2, 1, 1, 1)
|
layout.addWidget(mapSettingsGroup, 2, 1, 1, 1)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ nodeenv==1.5.0
|
|||||||
packaging==20.9
|
packaging==20.9
|
||||||
pathspec==0.8.1
|
pathspec==0.8.1
|
||||||
pefile==2019.4.18
|
pefile==2019.4.18
|
||||||
Pillow==8.1.1
|
Pillow==8.2.0
|
||||||
pre-commit==2.10.1
|
pre-commit==2.10.1
|
||||||
pyinstaller==4.3
|
pyinstaller==4.3
|
||||||
pyinstaller-hooks-contrib==2021.1
|
pyinstaller-hooks-contrib==2021.1
|
||||||
|
|||||||
11
resources/campaigns/Caucasus_Multi_Full.json
Normal file
11
resources/campaigns/Caucasus_Multi_Full.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Caucasus - Full",
|
||||||
|
"theater": "Caucasus",
|
||||||
|
"authors": "Doc_of_Mur",
|
||||||
|
"recommended_player_faction": "Bluefor Modern",
|
||||||
|
"recommended_enemy_faction": "Russia 2010",
|
||||||
|
"description": "<p>This is a complete map of every airbase in the Caucasus Region, all bases are fully defended by Air, Land and/or Sea. The player starts by invading southern Georgia and works their way through Russia. The Strike and SAM targets are limited for performance reasons. If this Scenario is too taxing for your computer you may use the Multi-Part Scenarios. They are copied from this Campaign and are catered toward less powerful machines.</p>",
|
||||||
|
"version": "6.0",
|
||||||
|
"miz": "Caucasus_Multi_Full.miz",
|
||||||
|
"performance": 3
|
||||||
|
}
|
||||||
BIN
resources/campaigns/Caucasus_Multi_Full.miz
Normal file
BIN
resources/campaigns/Caucasus_Multi_Full.miz
Normal file
Binary file not shown.
11
resources/campaigns/Caucasus_Multi_Georgia.json
Normal file
11
resources/campaigns/Caucasus_Multi_Georgia.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Caucasus - Multi-Part Georgia",
|
||||||
|
"theater": "Caucasus",
|
||||||
|
"authors": "Doc_of_Mur",
|
||||||
|
"recommended_player_faction": "Bluefor Modern",
|
||||||
|
"recommended_enemy_faction": "Georgia 2008",
|
||||||
|
"description": "<p>This is Part 1 of the Caucasus Multi-Part Campaign. This is the invasion of Georgia starting from the southwest (Batumi) and ending in both Gudauta and Tiblisi. This is a straightforward campaign that is smaller and simpler than most. However, it acts great as either a stand alone campaign for beginners, or as a lead into the Caucasus Multi-Part Russia campaign.</p>",
|
||||||
|
"version": "6.0",
|
||||||
|
"miz": "Caucasus_Multi_Georgia.miz",
|
||||||
|
"performance": 1
|
||||||
|
}
|
||||||
BIN
resources/campaigns/Caucasus_Multi_Georgia.miz
Normal file
BIN
resources/campaigns/Caucasus_Multi_Georgia.miz
Normal file
Binary file not shown.
11
resources/campaigns/Caucasus_Multi_Russia.json
Normal file
11
resources/campaigns/Caucasus_Multi_Russia.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Caucasus - Multi-Part Russia",
|
||||||
|
"theater": "Caucasus",
|
||||||
|
"authors": "Doc_of_Mur",
|
||||||
|
"recommended_player_faction": "Bluefor Modern",
|
||||||
|
"recommended_enemy_faction": "Russia 2010",
|
||||||
|
"description": "<p>This is part 2 of the Caucasus Multi-part campaign. After completing Multi-Part Georgia, play this campaign to invade Russia and finish the theater. As this is now Russia the recommended enemy faction has changed. To simulate still owning Georgia the player income has been supplemented through an increased number of blue strike targets at the starting bases. This is a more difficult scenario with a higher concentration of Redfor SAMs and Strike targets than usual.</p>",
|
||||||
|
"version": "6.0",
|
||||||
|
"miz": "Caucasus_Multi_Russia.miz",
|
||||||
|
"performance": 2
|
||||||
|
}
|
||||||
BIN
resources/campaigns/Caucasus_Multi_Russia.miz
Normal file
BIN
resources/campaigns/Caucasus_Multi_Russia.miz
Normal file
Binary file not shown.
11
resources/campaigns/First_Lebanon_War.json
Normal file
11
resources/campaigns/First_Lebanon_War.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Syria - First Lebanon War",
|
||||||
|
"theater": "Syria",
|
||||||
|
"authors": "Mustang25",
|
||||||
|
"recommended_player_faction": "Israel 1982",
|
||||||
|
"recommended_enemy_faction": "Syria 1982",
|
||||||
|
"description": "<p> 1100HRS, 06 June 1982: H-hour for Operation Peace for Galilee. </p><p>Objective: Push North towards Beirut and into the Bekaa Valley, eliminating or displacing any PLO and Syrian resistance. Airbases and their surrounding infrastructure in Syria are not the main objective but are still viable strategic targets.</p> <p>Background: Years of PLO encroachment into the UN neutral zone and their resulting terror attacks against Israelis have pushed tension along the border to a breaking point. On June 3, the attempted assassination of Israeli Ambassador, Shlomo Argov by gunmen with ties to the PLO have finally pushed the Israelis to action.</p><p>Recommended Starting Budget:</p><p>$1500m for recommended factions, $$2000m for modern scenarios</p><p>Income Multiplier:</p><p>Blue: 1.0x</p><p>Red: 0.7x-1.0x</p>",
|
||||||
|
"miz": "First_Lebanon_War_v3.0.2.miz",
|
||||||
|
"version": "6.0",
|
||||||
|
"performance": 2
|
||||||
|
}
|
||||||
BIN
resources/campaigns/First_Lebanon_War_v3.0.2.miz
Normal file
BIN
resources/campaigns/First_Lebanon_War_v3.0.2.miz
Normal file
Binary file not shown.
Binary file not shown.
11
resources/campaigns/Road_to_Dubai.json
Normal file
11
resources/campaigns/Road_to_Dubai.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Persian Gulf - Road To Dubai",
|
||||||
|
"theater": "Persian Gulf",
|
||||||
|
"authors": "Doc_of_Mur",
|
||||||
|
"description": "<p>Small beginner friendly map</p><p><strong>Note:</strong> This scenario is based around Iran invading the UAE and you are trying to take it back. It is small and beginner friendly.</p>",
|
||||||
|
"version": "6.0",
|
||||||
|
"recommended_player_faction": "USA 2005",
|
||||||
|
"recommended_enemy_faction": "Iran 2015",
|
||||||
|
"miz": "Road_to_Dubai.miz",
|
||||||
|
"performance": 1
|
||||||
|
}
|
||||||
BIN
resources/campaigns/Road_to_Dubai.miz
Normal file
BIN
resources/campaigns/Road_to_Dubai.miz
Normal file
Binary file not shown.
11
resources/campaigns/around_the_mountain.json
Normal file
11
resources/campaigns/around_the_mountain.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Caucasus - Around The Mountain",
|
||||||
|
"theater": "Caucasus",
|
||||||
|
"authors": "Dillie",
|
||||||
|
"recommended_player_faction": "Russia 2010",
|
||||||
|
"recommended_enemy_faction": "USA 1990",
|
||||||
|
"description": "<p>Scenario from Russia to Georgia in two Frontlines.</p>",
|
||||||
|
"version": "6.0",
|
||||||
|
"miz": "around_the_mountain.miz",
|
||||||
|
"performance": 2
|
||||||
|
}
|
||||||
BIN
resources/campaigns/around_the_mountain.miz
Normal file
BIN
resources/campaigns/around_the_mountain.miz
Normal file
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "The Channel - Battle of Britain",
|
|
||||||
"theater": "The Channel",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "United Kingdom 1944",
|
|
||||||
"recommended_enemy_faction": "Germany 1942",
|
|
||||||
"description": "<p>Experience the Battle of Britain on the Channel map !<br/></p><p><strong>Note:</strong> It is not possible to cross the channel to capture enemy bases yet, but you can consider you won if you manage to destroy all the ennemy targets</p>",
|
|
||||||
"miz": "battle_of_britain.miz",
|
|
||||||
"performance": 1
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Caucasus - Black Sea Lite",
|
|
||||||
"theater": "Caucasus",
|
|
||||||
"authors": "Starfire",
|
|
||||||
"description": "<p>A Small sized theater with bases along the coast of the Black Sea, lite version of ColonelPanic's Black Sea campaign scenario.</p>",
|
|
||||||
"miz": "black_sea_lite.miz",
|
|
||||||
"performance": 1
|
|
||||||
}
|
|
||||||
Binary file not shown.
11
resources/campaigns/caen_to_evreux.json
Normal file
11
resources/campaigns/caen_to_evreux.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Normandy - From Caen to Evreux",
|
||||||
|
"theater": "Normandy",
|
||||||
|
"authors": "Khopa",
|
||||||
|
"recommended_player_faction": "Allies 1944",
|
||||||
|
"recommended_enemy_faction": "Germany 1944",
|
||||||
|
"description": "<p>This is a light scenario on the Normandy map.</p><p>August 1944, allied forces are pushing from Caen/Carpiquet to the cities of Lisieux and Evreux.<p>Lisieux is an important logistic hub for the Werhmacht, and Evreux airbase is hosting most of the Luftwaffe forces in the region.</p>",
|
||||||
|
"miz": "caen_to_evreux.miz",
|
||||||
|
"performance": 1,
|
||||||
|
"version": "6.0"
|
||||||
|
}
|
||||||
BIN
resources/campaigns/caen_to_evreux.miz
Normal file
BIN
resources/campaigns/caen_to_evreux.miz
Normal file
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Persian Gulf - Desert War",
|
|
||||||
"theater": "Persian Gulf",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "USA 2005",
|
|
||||||
"recommended_enemy_faction": "Iran 2015",
|
|
||||||
"description": "<p>This is a simple scenario in the Desert near Dubai and Abu-Dhabi. Progress from Liwa airbase to Al-Minhad.</p><p>This scenario shouldn't require too much performance.</p>",
|
|
||||||
"miz": "desert_war.miz",
|
|
||||||
"performance": 1
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "The Channel - Dunkirk",
|
|
||||||
"theater": "The Channel",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "Allies 1944",
|
|
||||||
"recommended_enemy_faction": "Germany 1942",
|
|
||||||
"description": "<p>In this scenario, your forces starts in Dunkirk and can be supported by the airfields on the other side of the Channel.</p><p>If you select the inverted configuration, you can play a German invasion of England.</p><p><strong>Note:</strong> B-17 should be operated from Manston airfield</p>",
|
|
||||||
"miz": "dunkirk.miz",
|
|
||||||
"performance": 1
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Persian Gulf - Emirates",
|
|
||||||
"theater": "Persian Gulf",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "USA 2005",
|
|
||||||
"recommended_enemy_faction": "Iran 2015",
|
|
||||||
"description": "<p>In this scenario, you can play an invasion of the Emirates and Oman, where your forces starts in Fujairah.</p><p><strong>Note:</strong> Fujairah airfield has very few slots for aircrafts, so it recommended to operate from carriers at the start of the campaign. Thus, a carrier-capable faction is recommended.</p>",
|
|
||||||
"miz": "emirates.miz",
|
|
||||||
"performance": 1
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Caucasus - Full Map",
|
|
||||||
"theater": "Caucasus",
|
|
||||||
"authors": "george",
|
|
||||||
"description": "<p>Full map of the Caucasus</p><p><strong>Note:</strong> This scenario is heavy on performance, enabling \"culling\" in settings is highly recommended.</p>",
|
|
||||||
"miz": "full_caucasus.miz",
|
|
||||||
"performance": 3
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
11
resources/campaigns/humble_helper.json
Normal file
11
resources/campaigns/humble_helper.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Syria - Humble Helper",
|
||||||
|
"theater": "Syria",
|
||||||
|
"authors": "Headiii",
|
||||||
|
"recommended_player_faction": "Israel 2012'ish",
|
||||||
|
"recommended_enemy_faction": "Syria 2012'ish",
|
||||||
|
"description": "<p>In this scenario, you start in Israel in an high intensity conflict with Syria, backed by a Russian Expeditiary Force. Your goal is to take the heavily fortified city of Damascus, as fast as you can. The longer you wait, the more resources the enemy can pump into the defense of the city or even might try to take chunks of Israel. ATTENTION: CAMPAIGN INVERTING IS NOT YET IMPLEMENTED!!! Feedback: @Headiii in the DCSLiberation Discord</p>",
|
||||||
|
"miz": "humble_helper.miz",
|
||||||
|
"performance": 1,
|
||||||
|
"version": "6.0"
|
||||||
|
}
|
||||||
BIN
resources/campaigns/humble_helper.miz
Normal file
BIN
resources/campaigns/humble_helper.miz
Normal file
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Syria - Invasion from Turkey",
|
|
||||||
"theater": "Syria",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "Turkey 2005",
|
|
||||||
"recommended_enemy_faction": "Insurgents (Hard)",
|
|
||||||
"description": "<p>In this scenario, you start from Turkey and have to invade territories in northern Syria.</p>",
|
|
||||||
"miz": "invasion_from_turkey.miz",
|
|
||||||
"performance": 1
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Persian Gulf - Invasion of Iran",
|
|
||||||
"theater": "Persian Gulf",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "USA 2005",
|
|
||||||
"recommended_enemy_faction": "Iran 2015",
|
|
||||||
"description": "<p>In this scenario, you start in Bandar Abbas, and must invade Iran.</p>",
|
|
||||||
"miz": "invasion_of_iran.miz",
|
|
||||||
"performance": 3
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Persian Gulf - Invasion of Iran [Lite]",
|
|
||||||
"theater": "Persian Gulf",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "USA 2005",
|
|
||||||
"recommended_enemy_faction": "Iran 2015",
|
|
||||||
"description": "<p>This is lighter version of the invasion of Iran scenario.</p>",
|
|
||||||
"miz": "invasion_of_iran_lite.miz",
|
|
||||||
"performance": 1
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Normandy - Normandy",
|
|
||||||
"theater": "Normandy",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "Allies 1944",
|
|
||||||
"recommended_enemy_faction": "Germany 1944",
|
|
||||||
"description": "<p>Normandy 1944 D-Day scenario.</p>",
|
|
||||||
"miz":"normandy.miz",
|
|
||||||
"performance": 3
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Normandy - Normandy Small",
|
|
||||||
"theater": "Normandy",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "Allies 1944",
|
|
||||||
"recommended_enemy_faction": "Germany 1944",
|
|
||||||
"description": "<p>A lighter version of the Normandy 1944 D-Day scenario.</p>",
|
|
||||||
"miz": "normandy_small.miz",
|
|
||||||
"performance": 2
|
|
||||||
}
|
|
||||||
11
resources/campaigns/northern_russia.json
Normal file
11
resources/campaigns/northern_russia.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Caucasus - Northern Russia",
|
||||||
|
"theater": "Caucasus",
|
||||||
|
"authors": "Plob",
|
||||||
|
"recommended_player_faction": "USA 2005",
|
||||||
|
"recommended_enemy_faction": "Russia 1990",
|
||||||
|
"description": "<p>A medium campaign through the north eastern part of the Caucasus map.</p><p>Russia has invaded Georgia through the eastern mountains. Mount a counter offense and push them back!",
|
||||||
|
"miz": "northern_russia.miz",
|
||||||
|
"performance": 2,
|
||||||
|
"version": "6.0"
|
||||||
|
}
|
||||||
BIN
resources/campaigns/northern_russia.miz
Normal file
BIN
resources/campaigns/northern_russia.miz
Normal file
Binary file not shown.
11
resources/campaigns/operation_allied_sword.json
Normal file
11
resources/campaigns/operation_allied_sword.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Syria - Operation Allied Sword",
|
||||||
|
"theater": "Syria",
|
||||||
|
"authors": "Fuzzle",
|
||||||
|
"recommended_player_faction": "Israel-USN 2005 (Allied Sword)",
|
||||||
|
"recommended_enemy_faction": "Syria-Lebanon 2005 (Allied Sword)",
|
||||||
|
"description": "<p>In this fictional scenario, a US/Israeli coalition must push north from the Israeli border, through Syria and Lebanon to Aleppo.</p><p><strong>Backstory:</strong> A Syrian-Lebanese joint force (with Russian materiel support) has attacked Israel, attmepting to cross the northern border. With the arrival of a US carrier group, Israel prepares its counterattack. The US Navy will handle the Beirut region's coastal arena, while the IAF will push through Damascus and the inland mountain ranges.</p>",
|
||||||
|
"version": "6.0",
|
||||||
|
"miz": "operation_allied_sword.miz",
|
||||||
|
"performance": 2
|
||||||
|
}
|
||||||
BIN
resources/campaigns/operation_allied_sword.miz
Normal file
BIN
resources/campaigns/operation_allied_sword.miz
Normal file
Binary file not shown.
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "The Channel - Operation Dynamo",
|
|
||||||
"theater": "The Channel",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "Allies 1940",
|
|
||||||
"recommended_enemy_faction": "Germany 1940",
|
|
||||||
"description": "<p>The Battle of Dunkirk (French: Bataille de Dunkerque) was fought around the French port of Dunkirk (Dunkerque) during the Second World War, between the Allies and Nazi Germany. As the Allies were losing the Battle of France on the Western Front, the Battle of Dunkirk was the defence and evacuation of British and other Allied forces to Britain from 26 May to 4 June 1940..</p>",
|
|
||||||
"version": 4.2,
|
|
||||||
"miz": "operation_dynamo.miz",
|
|
||||||
"performance": 1
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Persian Gulf - Full Map",
|
|
||||||
"theater": "Persian Gulf",
|
|
||||||
"authors": "Plob",
|
|
||||||
"description": "<p>Full map of the Persian Gulf</p><p><strong>Note:</strong> This scenario is heavy on performance, enabling \"culling\" in settings is highly recommended.</p>",
|
|
||||||
"miz": "persian_gulf_full_map.miz",
|
|
||||||
"performance": 3
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Syria - Syrian Civil War",
|
|
||||||
"theater": "Syria",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"recommended_player_faction": "Russia 2010",
|
|
||||||
"recommended_enemy_faction": "Insurgents (Hard)",
|
|
||||||
"description": "<p>This scenario can be used to simulate parts of the Syrian Civil War.<br/><br/>You start on the coast with an airbase in Latakia, and ground forces in Tartus.<br/><br/>This scenario can also be used to simulate a western invasion of Syria.<br/><br/>In inverted configuration you start in Aleppo.</p>",
|
|
||||||
"miz": "syrian_civil_war.miz",
|
|
||||||
"performance": 2
|
|
||||||
}
|
|
||||||
Binary file not shown.
54
resources/customized_payloads/JAS39Gripen.lua
Normal file
54
resources/customized_payloads/JAS39Gripen.lua
Normal file
@@ -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
|
||||||
291
resources/customized_payloads/JAS39Gripen_AG.lua
Normal file
291
resources/customized_payloads/JAS39Gripen_AG.lua
Normal file
@@ -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
|
||||||
109
resources/factions/Israel-USN_2005_Allied_Sword.json
Normal file
109
resources/factions/Israel-USN_2005_Allied_Sword.json
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
{
|
||||||
|
"country": "Israel",
|
||||||
|
"name": "Israel-USN 2005 (Allied Sword)",
|
||||||
|
"authors": "Fuzzle",
|
||||||
|
"description": "<p>A joint US Navy/Israeli modern faction for use with the Operation Allied Sword scenario.</p>",
|
||||||
|
"aircrafts": [
|
||||||
|
"F_4E",
|
||||||
|
"F_15C",
|
||||||
|
"F_15E",
|
||||||
|
"F_16C_50",
|
||||||
|
"F_14B",
|
||||||
|
"FA_18C_hornet",
|
||||||
|
"AV8BNA",
|
||||||
|
"AH_1W",
|
||||||
|
"AH_64D",
|
||||||
|
"S_3B",
|
||||||
|
"SH_60B",
|
||||||
|
"UH_1H"
|
||||||
|
],
|
||||||
|
"awacs": [
|
||||||
|
"E_2C"
|
||||||
|
],
|
||||||
|
"tankers": [
|
||||||
|
"KC_135",
|
||||||
|
"KC130",
|
||||||
|
"S_3B_Tanker"
|
||||||
|
],
|
||||||
|
"frontline_units": [
|
||||||
|
"APC_M113",
|
||||||
|
"APC_HMMWV__Scout",
|
||||||
|
"ATGM_HMMWV",
|
||||||
|
"MBT_Merkava_IV",
|
||||||
|
"SPAAA_Vulcan_M163"
|
||||||
|
],
|
||||||
|
"artillery_units": [
|
||||||
|
"SPH_M109_Paladin_155mm",
|
||||||
|
"MLRS_M270_227mm"
|
||||||
|
],
|
||||||
|
"logistics_units": [
|
||||||
|
"Truck_M818_6x6"
|
||||||
|
],
|
||||||
|
"infantry_units": [
|
||||||
|
"Infantry_M4",
|
||||||
|
"Infantry_M249",
|
||||||
|
"MANPADS_Stinger"
|
||||||
|
],
|
||||||
|
"air_defenses": [
|
||||||
|
"ChaparralGenerator",
|
||||||
|
"HawkGenerator",
|
||||||
|
"VulcanGenerator",
|
||||||
|
"PatriotGenerator"
|
||||||
|
],
|
||||||
|
"ewrs": [
|
||||||
|
"HawkEwrGenerator"
|
||||||
|
],
|
||||||
|
"aircraft_carrier": [
|
||||||
|
"CVN_74_John_C__Stennis"
|
||||||
|
],
|
||||||
|
"helicopter_carrier": [
|
||||||
|
"LHA_1_Tarawa"
|
||||||
|
],
|
||||||
|
"destroyers": [
|
||||||
|
"DDG_Arleigh_Burke_IIa"
|
||||||
|
],
|
||||||
|
"cruisers": [
|
||||||
|
"CG_Ticonderoga"
|
||||||
|
],
|
||||||
|
"requirements": {
|
||||||
|
},
|
||||||
|
"carrier_names": [
|
||||||
|
"CVN-71 Theodore Roosevelt",
|
||||||
|
"CVN-72 Abraham Lincoln",
|
||||||
|
"CVN-73 George Washington",
|
||||||
|
"CVN-74 John C. Stennis",
|
||||||
|
"CVN-75 Harry S. Truman"
|
||||||
|
],
|
||||||
|
"helicopter_carrier_names": [
|
||||||
|
"LHA-1 Tarawa",
|
||||||
|
"LHA-2 Saipan",
|
||||||
|
"LHA-3 Belleau Wood",
|
||||||
|
"LHA-4 Nassau",
|
||||||
|
"LHA-5 Peleliu"
|
||||||
|
],
|
||||||
|
"navy_generators": [
|
||||||
|
"ArleighBurkeGroupGenerator",
|
||||||
|
"OliverHazardPerryGroupGenerator"
|
||||||
|
|
||||||
|
],
|
||||||
|
"has_jtac": true,
|
||||||
|
"jtac_unit": "MQ_9_Reaper",
|
||||||
|
"doctrine": "modern",
|
||||||
|
"liveries_overrides": {
|
||||||
|
"F_14B": [
|
||||||
|
"VF-142 Ghostriders"
|
||||||
|
],
|
||||||
|
"FA_18C_hornet": [
|
||||||
|
"VMFA-251 high visibility"
|
||||||
|
],
|
||||||
|
"AV8BNA": [
|
||||||
|
"VMAT-542"
|
||||||
|
],
|
||||||
|
"AH_1W": [
|
||||||
|
"Marines"
|
||||||
|
],
|
||||||
|
"UH_1H": [
|
||||||
|
"US NAVY"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
105
resources/factions/Syria-Lebanon_2005_Allied_Sword.json
Normal file
105
resources/factions/Syria-Lebanon_2005_Allied_Sword.json
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
"country": "Combined Joint Task Forces Red",
|
||||||
|
"name": "Syria-Lebanon 2005 (Allied Sword)",
|
||||||
|
"authors": "Fuzzle",
|
||||||
|
"description": "<p>Syria-Lebanon alliance in a modern setting with several imported Russian assets. Designed for use with the Allied Sword scenario.</p>",
|
||||||
|
"aircrafts": [
|
||||||
|
"MiG_23MLD",
|
||||||
|
"MiG_25PD",
|
||||||
|
"MiG_29S",
|
||||||
|
"Su_17M4",
|
||||||
|
"Su_24M",
|
||||||
|
"Su_30",
|
||||||
|
"Su_34",
|
||||||
|
"L_39ZA",
|
||||||
|
"Tu_22M3",
|
||||||
|
"Mi_24V",
|
||||||
|
"Mi_8MT",
|
||||||
|
"SA342M",
|
||||||
|
"SA342L"
|
||||||
|
],
|
||||||
|
"awacs": [
|
||||||
|
"A_50"
|
||||||
|
],
|
||||||
|
"tankers": [
|
||||||
|
"IL_78M"
|
||||||
|
],
|
||||||
|
"frontline_units": [
|
||||||
|
"IFV_BMP_1",
|
||||||
|
"IFV_BMP_2",
|
||||||
|
"APC_BTR_80",
|
||||||
|
"IFV_BRDM_2",
|
||||||
|
"APC_MTLB",
|
||||||
|
"APC_Cobra__Scout",
|
||||||
|
"MBT_T_55",
|
||||||
|
"MBT_T_72B",
|
||||||
|
"MBT_T_90",
|
||||||
|
"SPAAA_ZSU_57_2"
|
||||||
|
],
|
||||||
|
"artillery_units": [
|
||||||
|
"MLRS_BM_27_Uragan_220mm",
|
||||||
|
"SPH_2S9_Nona_120mm_M",
|
||||||
|
"MLRS_BM_21_Grad_122mm",
|
||||||
|
"SPH_2S1_Gvozdika_122mm"
|
||||||
|
],
|
||||||
|
"logistics_units": [
|
||||||
|
"Truck_Ural_375",
|
||||||
|
"LUV_UAZ_469_Jeep"
|
||||||
|
],
|
||||||
|
"infantry_units": [
|
||||||
|
"Paratrooper_AKS",
|
||||||
|
"Infantry_AK_74_Rus",
|
||||||
|
"Paratrooper_RPG_16",
|
||||||
|
"MANPADS_SA_18_Igla_S_Grouse"
|
||||||
|
],
|
||||||
|
"air_defenses": [
|
||||||
|
"ColdWarFlakGenerator",
|
||||||
|
"SA2Generator",
|
||||||
|
"SA3Generator",
|
||||||
|
"SA6Generator",
|
||||||
|
"SA8Generator",
|
||||||
|
"SA9Generator",
|
||||||
|
"SA10Generator",
|
||||||
|
"SA11Generator",
|
||||||
|
"SA13Generator",
|
||||||
|
"SA19Generator",
|
||||||
|
"ZSU23Generator",
|
||||||
|
"ZU23Generator",
|
||||||
|
"ZU23UralGenerator",
|
||||||
|
"ZSU57Generator"
|
||||||
|
],
|
||||||
|
"ewrs": [
|
||||||
|
"BoxSpringGenerator",
|
||||||
|
"TallRackGenerator"
|
||||||
|
],
|
||||||
|
"missiles": [
|
||||||
|
"ScudGenerator"
|
||||||
|
],
|
||||||
|
"missiles_group_count": 2,
|
||||||
|
"coastal_defenses": [
|
||||||
|
"SilkwormGenerator"
|
||||||
|
],
|
||||||
|
"coastal_group_count": 4,
|
||||||
|
"aircraft_carrier": [
|
||||||
|
],
|
||||||
|
"helicopter_carrier": [
|
||||||
|
],
|
||||||
|
"helicopter_carrier_names": [
|
||||||
|
],
|
||||||
|
"destroyers": [
|
||||||
|
"Frigate_1135M_Rezky",
|
||||||
|
"Corvette_1241_1_Molniya"
|
||||||
|
],
|
||||||
|
"cruisers": [
|
||||||
|
],
|
||||||
|
"requirements": {},
|
||||||
|
"carrier_names": [
|
||||||
|
],
|
||||||
|
"coastal_group_count": 8,
|
||||||
|
"navy_generators": [
|
||||||
|
"GrishaGroupGenerator",
|
||||||
|
"MolniyaGroupGenerator",
|
||||||
|
"RussianNavyGroupGenerator",
|
||||||
|
"LaCombattanteIIGroupGenerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
100
resources/factions/israel_2012.json
Normal file
100
resources/factions/israel_2012.json
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
{
|
||||||
|
"country": "Israel",
|
||||||
|
"name": "Israel 2012'ish",
|
||||||
|
"authors": "Headiii",
|
||||||
|
"description": "<p>A more modern Israeli faction with fictional Imports.</p>",
|
||||||
|
"locales": ["he_IL"],
|
||||||
|
"aircrafts": [
|
||||||
|
"A_10C",
|
||||||
|
"F_15C",
|
||||||
|
"F_15E",
|
||||||
|
"F_16C_50",
|
||||||
|
"FA_18C_hornet",
|
||||||
|
"M_2000C",
|
||||||
|
"UH_1H",
|
||||||
|
"AH_64D"
|
||||||
|
],
|
||||||
|
"awacs": [
|
||||||
|
"E_2C"
|
||||||
|
],
|
||||||
|
"tankers": [
|
||||||
|
"KC_135",
|
||||||
|
"KC130"
|
||||||
|
],
|
||||||
|
"frontline_units": [
|
||||||
|
"APC_M113",
|
||||||
|
"Scout_HMMWV",
|
||||||
|
"ATGM_HMMWV",
|
||||||
|
"MBT_Merkava_IV",
|
||||||
|
"SPAAA_Vulcan_M163"
|
||||||
|
],
|
||||||
|
"artillery_units": [
|
||||||
|
"SPH_M109_Paladin_155mm",
|
||||||
|
"MLRS_M270_227mm"
|
||||||
|
],
|
||||||
|
"logistics_units": [
|
||||||
|
"Truck_M818_6x6"
|
||||||
|
],
|
||||||
|
"infantry_units": [
|
||||||
|
"Infantry_M4",
|
||||||
|
"Infantry_M249",
|
||||||
|
"MANPADS_Stinger"
|
||||||
|
],
|
||||||
|
"air_defenses": [
|
||||||
|
"ChaparralGenerator",
|
||||||
|
"HawkGenerator",
|
||||||
|
"PatriotGenerator",
|
||||||
|
"VulcanGenerator"
|
||||||
|
],
|
||||||
|
"ewrs": [
|
||||||
|
"HawkEwrGenerator"
|
||||||
|
],
|
||||||
|
"aircraft_carrier": [
|
||||||
|
],
|
||||||
|
"helicopter_carrier": [
|
||||||
|
],
|
||||||
|
"destroyers": [
|
||||||
|
],
|
||||||
|
"cruisers": [
|
||||||
|
],
|
||||||
|
"requirements": {
|
||||||
|
},
|
||||||
|
"carrier_names": [
|
||||||
|
],
|
||||||
|
"helicopter_carrier_names": [
|
||||||
|
],
|
||||||
|
"navy_generators": [
|
||||||
|
"ArleighBurkeGroupGenerator"
|
||||||
|
],
|
||||||
|
"has_jtac": true,
|
||||||
|
"jtac_unit": "MQ_9_Reaper",
|
||||||
|
"liveries_overrides": {
|
||||||
|
"A_10C": [
|
||||||
|
"Fictional Israel 115 Sqn Flying Dragon"
|
||||||
|
],
|
||||||
|
"F_15C": [
|
||||||
|
"390th Fighter SQN"
|
||||||
|
],
|
||||||
|
"F_15E":[
|
||||||
|
"IDF No 69 Hammers Squadron"
|
||||||
|
],
|
||||||
|
"F_16C_50": [
|
||||||
|
"IAF_101st_squadron",
|
||||||
|
"IAF_110th_Squadron",
|
||||||
|
"IAF_115th_Aggressors_Squadron",
|
||||||
|
"IAF_117th_Squadron"
|
||||||
|
],
|
||||||
|
"UH_1H": [
|
||||||
|
"Israel Army"
|
||||||
|
],
|
||||||
|
"AH_64D":[
|
||||||
|
"ah-64_d_isr"
|
||||||
|
],
|
||||||
|
"FA_18C_hornet": [
|
||||||
|
"Fictional Israel Air Force"
|
||||||
|
],
|
||||||
|
"M_2000C": [
|
||||||
|
"UAE Air Force"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
51
resources/factions/sweden_2002_with_gripen.json
Normal file
51
resources/factions/sweden_2002_with_gripen.json
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"country": "Sweden",
|
||||||
|
"name": "Sweden 2002",
|
||||||
|
"authors": "Khopa (updated with Gripen by bgreman)",
|
||||||
|
"description": "<p>Sweden in 2002 after the addition of the Gripen-C.</p>",
|
||||||
|
"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"
|
||||||
|
}
|
||||||
96
resources/factions/syria_2012.json
Normal file
96
resources/factions/syria_2012.json
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
"country": "Combined Joint Task Forces Red",
|
||||||
|
"name": "Syria 2012'ish",
|
||||||
|
"authors": "Headiii",
|
||||||
|
"description": "<p>Syrian Army with more modern Imports and supported by a Russian Expeditionary Force.</p>",
|
||||||
|
"aircrafts": [
|
||||||
|
"MiG_23MLD",
|
||||||
|
"MiG_25PD",
|
||||||
|
"MiG_29S",
|
||||||
|
"Su_24M",
|
||||||
|
"Su_25",
|
||||||
|
"Su_30",
|
||||||
|
"Su_34",
|
||||||
|
"L_39ZA",
|
||||||
|
"Mi_24V",
|
||||||
|
"Mi_8MT",
|
||||||
|
"SA342M",
|
||||||
|
"SA342L"
|
||||||
|
],
|
||||||
|
"awacs": [
|
||||||
|
"A_50"
|
||||||
|
],
|
||||||
|
"tankers": [
|
||||||
|
"IL_78M"
|
||||||
|
],
|
||||||
|
"frontline_units": [
|
||||||
|
"IFV_BMP_1",
|
||||||
|
"IFV_BMP_2",
|
||||||
|
"APC_BTR_80",
|
||||||
|
"Scout_BRDM_2",
|
||||||
|
"LT_PT_76",
|
||||||
|
"APC_MTLB",
|
||||||
|
"Scout_Cobra",
|
||||||
|
"MBT_T_55",
|
||||||
|
"MBT_T_72B",
|
||||||
|
"MBT_T_90",
|
||||||
|
"SPAAA_ZSU_57_2"
|
||||||
|
],
|
||||||
|
"artillery_units": [
|
||||||
|
"MLRS_9K57_Uragan_BM_27_220mm",
|
||||||
|
"SPM_2S9_Nona_120mm_M",
|
||||||
|
"MLRS_BM_21_Grad_122mm",
|
||||||
|
"SPH_2S1_Gvozdika_122mm"
|
||||||
|
],
|
||||||
|
"logistics_units": [
|
||||||
|
"Truck_Ural_375",
|
||||||
|
"LUV_UAZ_469_Jeep"
|
||||||
|
],
|
||||||
|
"infantry_units": [
|
||||||
|
"Paratrooper_AKS",
|
||||||
|
"Infantry_AK_74_Rus",
|
||||||
|
"Paratrooper_RPG_16",
|
||||||
|
"MANPADS_SA_18_Igla_S_Grouse"
|
||||||
|
],
|
||||||
|
"air_defenses": [
|
||||||
|
"ColdWarFlakGenerator",
|
||||||
|
"SA2Generator",
|
||||||
|
"SA3Generator",
|
||||||
|
"SA6Generator",
|
||||||
|
"SA8Generator",
|
||||||
|
"SA8Generator",
|
||||||
|
"SA9Generator",
|
||||||
|
"SA10Generator",
|
||||||
|
"SA11Generator",
|
||||||
|
"SA13Generator",
|
||||||
|
"SA19Generator",
|
||||||
|
"ZSU23Generator",
|
||||||
|
"ZU23Generator",
|
||||||
|
"ZU23UralGenerator"
|
||||||
|
],
|
||||||
|
"ewrs": [
|
||||||
|
"BoxSpringGenerator",
|
||||||
|
"TallRackGenerator"
|
||||||
|
],
|
||||||
|
"missiles": [
|
||||||
|
"ScudGenerator"
|
||||||
|
],
|
||||||
|
"missiles_group_count": 1,
|
||||||
|
"aircraft_carrier": [
|
||||||
|
],
|
||||||
|
"helicopter_carrier": [
|
||||||
|
],
|
||||||
|
"helicopter_carrier_names": [
|
||||||
|
],
|
||||||
|
"destroyers": [
|
||||||
|
],
|
||||||
|
"cruisers": [
|
||||||
|
],
|
||||||
|
"requirements": {},
|
||||||
|
"carrier_names": [
|
||||||
|
],
|
||||||
|
"navy_generators": [
|
||||||
|
"GrishaGroupGenerator",
|
||||||
|
"MolniyaGroupGenerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
Some player flights may be delayed to start. For such flights, it will not be
|
Some player flights may be delayed to start. For such flights, it will not be
|
||||||
possible to enter the cockpit for a delayed flight until its mission start
|
possible to enter the cockpit until its mission start time, shown in the flight
|
||||||
time, shown in the flight information window.
|
information window.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -20,34 +20,30 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
For more information, see the mission planning documentation on
|
For more information, see the
|
||||||
<a href="https://github.com/dcs-liberation/dcs_liberation/wiki/Mission-planning">
|
<a
|
||||||
the wiki</a>.
|
href="https://github.com/dcs-liberation/dcs_liberation/wiki/Mission-planning"
|
||||||
|
style="color: #ffffff"
|
||||||
|
>mission planning documentation</a> on our wiki.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>For Singleplayer:</h2>
|
<h2>Launching the mission:</h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
In DCS, open the Mission Editor and load the file: <i>liberation_nextturn</i>.
|
Launch the <code>liberation_nextturn</code> mission as you normally would for single-
|
||||||
|
or multi-player. Note that even for single-player, running the mission with the
|
||||||
|
dedicated server, <em>even on the same machine</em>, can significantly improve frame
|
||||||
|
rates, but may cause AI wingmen to behave strangely during taxi.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Once the mission is loaded in the ME, use the "FLY" option in the "Flight"
|
For advice on using a dedicated server to play DCS Liberation, see
|
||||||
menu to launch.
|
<a
|
||||||
|
style="color: #ffffff"
|
||||||
|
href="https://github.com/dcs-liberation/dcs_liberation/wiki/Dedicated-Server-Guide"
|
||||||
|
>the guide</a> on our wiki.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>For Multiplayer:</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
In DCS, open the Mission Editor, and load the file: <i>liberation_nextturn</i>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>Select File/Save, exit the mission editor, and then select Multiplayer.</p>
|
|
||||||
|
|
||||||
<p>Then host a server with the mission, and tell your friends to join!</p>
|
|
||||||
|
|
||||||
<i>(The step in the mission editor is important, and fix a game breaking bug.)</i>
|
|
||||||
|
|
||||||
<h2>Finishing</h2>
|
<h2>Finishing</h2>
|
||||||
|
|
||||||
<p>Once you have played the mission, click on the \"Accept Results\" button.</p>
|
<p>Once you have played the mission, click on the \"Accept Results\" button.</p>
|
||||||
|
|||||||
BIN
resources/ui/units/aircrafts/banners/JAS39Gripen_24.jpg
Normal file
BIN
resources/ui/units/aircrafts/banners/JAS39Gripen_24.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
BIN
resources/ui/units/aircrafts/banners/JAS39Gripen_AG_24.jpg
Normal file
BIN
resources/ui/units/aircrafts/banners/JAS39Gripen_AG_24.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
BIN
resources/ui/units/aircrafts/icons/JAS39Gripen_24.jpg
Normal file
BIN
resources/ui/units/aircrafts/icons/JAS39Gripen_24.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
BIN
resources/ui/units/aircrafts/icons/JAS39Gripen_AG_24.jpg
Normal file
BIN
resources/ui/units/aircrafts/icons/JAS39Gripen_AG_24.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user