diff --git a/changelog.md b/changelog.md index 25b053ff..5dbf3d54 100644 --- a/changelog.md +++ b/changelog.md @@ -7,6 +7,7 @@ * **[Campaigns/Factions]** Support for inline recommended faction in campaign's yaml file * **[Squadrons]** Ability to define a livery-set for each squadron from which Retribution will randomly choose during mission generation * **[Modding]** Updated support for F/A-18E/F/G mod version 2.2.5 +* **[Modding]** Added VSN F-106 Delta Dart mod support (v2.9.4.101) * **[Campaign Setup]** Allow adjustments to naval TGOs (except carriers) on turn 0 * **[Campaign Design]** Ability to configure specific carrier names & types in campaign's yaml file * **[Mission Generation]** Ability to inject custom kneeboards diff --git a/game/campaignloader/mizcampaignloader.py b/game/campaignloader/mizcampaignloader.py index f5faa7ae..eafc372d 100644 --- a/game/campaignloader/mizcampaignloader.py +++ b/game/campaignloader/mizcampaignloader.py @@ -56,7 +56,7 @@ class MizCampaignLoader: OFFSHORE_STRIKE_TARGET_UNIT_TYPE = Fortification.Oil_platform.id SHIP_UNIT_TYPE = USS_Arleigh_Burke_IIa.id MISSILE_SITE_UNIT_TYPE = MissilesSS.Scud_B.id - COASTAL_DEFENSE_UNIT_TYPE = MissilesSS.Hy_launcher.id + COASTAL_DEFENSE_UNIT_TYPE = MissilesSS.hy_launcher.id COMMAND_CENTER_UNIT_TYPE = Fortification._Command_Center.id CONNECTION_NODE_UNIT_TYPE = Fortification.Comms_tower_M.id @@ -73,23 +73,23 @@ class MizCampaignLoader: MEDIUM_RANGE_SAM_UNIT_TYPES = { AirDefence.Hawk_ln.id, AirDefence.S_75M_Volhov.id, - AirDefence.X_5p73_s_125_ln.id, + AirDefence.x_5p73_s_125_ln.id, } SHORT_RANGE_SAM_UNIT_TYPES = { AirDefence.M1097_Avenger.id, - AirDefence.Rapier_fsa_launcher.id, - AirDefence.X_2S6_Tunguska.id, + AirDefence.rapier_fsa_launcher.id, + AirDefence.x_2S6_Tunguska.id, AirDefence.Strela_1_9P31.id, } AAA_UNIT_TYPES = { - AirDefence.Flak18.id, + AirDefence.flak18.id, AirDefence.Vulcan.id, AirDefence.ZSU_23_4_Shilka.id, } - EWR_UNIT_TYPE = AirDefence.X_1L13_EWR.id + EWR_UNIT_TYPE = AirDefence.x_1L13_EWR.id ARMOR_GROUP_UNIT_TYPE = Armor.M_1_Abrams.id diff --git a/game/data/alic.py b/game/data/alic.py index ac884085..9e16a32d 100644 --- a/game/data/alic.py +++ b/game/data/alic.py @@ -5,8 +5,8 @@ from game.theater.theatergroup import TheaterUnit class AlicCodes: CODES = { - AirDefence.X_1L13_EWR.id: 101, - AirDefence.X_55G6_EWR.id: 102, + AirDefence.x_1L13_EWR.id: 101, + AirDefence.x_55G6_EWR.id: 102, AirDefence.S_300PS_40B6MD_sr.id: 103, AirDefence.S_300PS_64H6E_sr.id: 104, AirDefence.SA_11_Buk_SR_9S18M1.id: 107, @@ -17,12 +17,12 @@ class AlicCodes: AirDefence.Osa_9A33_ln.id: 117, AirDefence.Strela_10M3.id: 118, AirDefence.Tor_9A331.id: 119, - AirDefence.X_2S6_Tunguska.id: 120, + AirDefence.x_2S6_Tunguska.id: 120, AirDefence.ZSU_23_4_Shilka.id: 121, - AirDefence.P_19_s_125_sr.id: 122, - AirDefence.Snr_s_125_tr.id: 123, - AirDefence.Rapier_fsa_blindfire_radar.id: 124, - AirDefence.Rapier_fsa_launcher.id: 125, + AirDefence.p_19_s_125_sr.id: 122, + AirDefence.snr_s_125_tr.id: 123, + AirDefence.rapier_fsa_blindfire_radar.id: 124, + AirDefence.rapier_fsa_launcher.id: 125, AirDefence.SNR_75V.id: 126, AirDefence.HQ_7_LN_SP.id: 127, AirDefence.HQ_7_STR_SP.id: 128, diff --git a/game/data/radar_db.py b/game/data/radar_db.py index 7131223a..30334d06 100644 --- a/game/data/radar_db.py +++ b/game/data/radar_db.py @@ -26,7 +26,7 @@ from dcs.vehicles import AirDefence from pydcs_extensions import highdigitsams as hds TELARS = { - AirDefence.X_2S6_Tunguska, + AirDefence.x_2S6_Tunguska, AirDefence.SA_11_Buk_LN_9A310M1, AirDefence.Osa_9A33_ln, AirDefence.Tor_9A331, @@ -36,14 +36,14 @@ TELARS = { TRACK_RADARS = { AirDefence.Kub_1S91_str, - AirDefence.Snr_s_125_tr, + AirDefence.snr_s_125_tr, AirDefence.S_300PS_40B6M_tr, AirDefence.S_300PS_5H63C_30H6_tr, AirDefence.Hawk_tr, AirDefence.Patriot_str, AirDefence.SNR_75V, AirDefence.RPC_5N62V, - AirDefence.Rapier_fsa_blindfire_radar, + AirDefence.rapier_fsa_blindfire_radar, AirDefence.HQ_7_STR_SP, AirDefence.NASAMS_Radar_MPQ64F1, hds.SAM_SA_10B_S_300PS_30N6_TR, @@ -55,7 +55,7 @@ TRACK_RADARS = { LAUNCHER_TRACKER_PAIRS = { AirDefence.Kub_2P25_ln: (AirDefence.Kub_1S91_str,), - AirDefence.X_5p73_s_125_ln: (AirDefence.Snr_s_125_tr,), + AirDefence.x_5p73_s_125_ln: (AirDefence.snr_s_125_tr,), AirDefence.S_300PS_5P85C_ln: ( AirDefence.S_300PS_40B6M_tr, AirDefence.S_300PS_5H63C_30H6_tr, @@ -67,14 +67,14 @@ LAUNCHER_TRACKER_PAIRS = { AirDefence.Hawk_ln: (AirDefence.Hawk_tr,), AirDefence.Patriot_ln: (AirDefence.Patriot_str,), AirDefence.S_75M_Volhov: (AirDefence.SNR_75V,), - AirDefence.Rapier_fsa_launcher: (AirDefence.Rapier_fsa_blindfire_radar,), + AirDefence.rapier_fsa_launcher: (AirDefence.rapier_fsa_blindfire_radar,), AirDefence.HQ_7_LN_SP: (AirDefence.HQ_7_STR_SP,), AirDefence.S_200_Launcher: (AirDefence.RPC_5N62V,), AirDefence.NASAMS_LN_B: (AirDefence.NASAMS_Radar_MPQ64F1,), AirDefence.NASAMS_LN_C: (AirDefence.NASAMS_Radar_MPQ64F1,), hds.SAM_SA_2__V759__LN_SM_90: (AirDefence.SNR_75V,), hds.SAM_HQ_2_LN_SM_90: (AirDefence.SNR_75V,), - hds.SAM_SA_3__V_601P__LN_5P73: (AirDefence.Snr_s_125_tr,), + hds.SAM_SA_3__V_601P__LN_5P73: (AirDefence.snr_s_125_tr,), hds.SAM_SA_10B_S_300PS_5P85SE_LN: (hds.SAM_SA_10B_S_300PS_30N6_TR,), hds.SAM_SA_10B_S_300PS_5P85SU_LN: (hds.SAM_SA_10B_S_300PS_30N6_TR,), hds.SAM_SA_12_S_300V_9A82_LN: (hds.SAM_SA_12_S_300V_9S32_TR,), @@ -88,7 +88,7 @@ LAUNCHER_TRACKER_PAIRS = { UNITS_WITH_RADAR = { # Radars - AirDefence.X_2S6_Tunguska, + AirDefence.x_2S6_Tunguska, AirDefence.SA_11_Buk_LN_9A310M1, AirDefence.Osa_9A33_ln, AirDefence.Tor_9A331, @@ -96,11 +96,11 @@ UNITS_WITH_RADAR = { AirDefence.Vulcan, AirDefence.Roland_ADS, AirDefence.ZSU_23_4_Shilka, - AirDefence.X_1L13_EWR, + AirDefence.x_1L13_EWR, AirDefence.Kub_1S91_str, AirDefence.S_300PS_40B6M_tr, AirDefence.S_300PS_40B6MD_sr, - AirDefence.X_55G6_EWR, + AirDefence.x_55G6_EWR, AirDefence.S_300PS_64H6E_sr, AirDefence.SA_11_Buk_SR_9S18M1, AirDefence.Dog_Ear_radar, @@ -108,13 +108,13 @@ UNITS_WITH_RADAR = { AirDefence.Hawk_sr, AirDefence.Patriot_str, AirDefence.Hawk_cwar, - AirDefence.P_19_s_125_sr, + AirDefence.p_19_s_125_sr, AirDefence.Roland_Radar, - AirDefence.Snr_s_125_tr, + AirDefence.snr_s_125_tr, AirDefence.SNR_75V, AirDefence.RLS_19J6, AirDefence.RPC_5N62V, - AirDefence.Rapier_fsa_blindfire_radar, + AirDefence.rapier_fsa_blindfire_radar, AirDefence.HQ_7_LN_SP, AirDefence.HQ_7_STR_SP, AirDefence.FuMG_401, diff --git a/game/factions/faction.py b/game/factions/faction.py index d93596f3..9faee69e 100644 --- a/game/factions/faction.py +++ b/game/factions/faction.py @@ -397,6 +397,9 @@ class Faction: if not mod_settings.f105_thunderchief: self.remove_aircraft("VSN_F105D") self.remove_aircraft("VSN_F105G") + if not mod_settings.f106_deltadart: + self.remove_aircraft("VSN_F106A") + self.remove_aircraft("VSN_F106B") if not mod_settings.a6a_intruder: self.remove_aircraft("VSN_A6A") if not mod_settings.jas39_gripen: diff --git a/game/missiongenerator/kneeboard.py b/game/missiongenerator/kneeboard.py index 80ded358..b7124b00 100644 --- a/game/missiongenerator/kneeboard.py +++ b/game/missiongenerator/kneeboard.py @@ -33,7 +33,7 @@ from typing import Dict, Iterator, List, Optional, TYPE_CHECKING, Tuple from PIL import Image, ImageDraw, ImageFont from dcs.mission import Mission from dcs.planes import F_15ESE -from suntime import Sun # type: ignore +from suntime import Sun, SunTimeException # type: ignore from tabulate import tabulate from game.ato.flighttype import FlightType @@ -445,14 +445,23 @@ class BriefingPage(KneeboardPage): tz = fl.squadron.coalition.game.theater.timezone # Get today's sunrise and sunset in UTC - sr_utc = sun.get_sunrise_time(dt) - ss_utc = sun.get_sunset_time(dt) - sr = sr_utc + tz.utcoffset(sun.get_sunrise_time(dt)) - ss = ss_utc + tz.utcoffset(sun.get_sunset_time(dt)) + try: + rise_utc = sun.get_sunrise_time(dt) + rise = rise_utc + tz.utcoffset(sun.get_sunrise_time(dt)) + except SunTimeException: + rise_utc = None + rise = None + + try: + set_utc = sun.get_sunset_time(dt) + sunset = set_utc + tz.utcoffset(sun.get_sunset_time(dt)) + except SunTimeException: + set_utc = None + sunset = None writer.text( - f"Sunrise - Sunset: {sr.strftime('%H:%M')} - {ss.strftime('%H:%M')}" - f" ({sr_utc.strftime('%H:%M')} - {ss_utc.strftime('%H:%M')} UTC)" + f"Sunrise - Sunset: {rise.strftime('%H:%M') if rise else 'N/A'} - {sunset.strftime('%H:%M') if sunset else 'N/A'}" + f" ({rise_utc.strftime('%H:%M') if rise_utc else 'N/A'} - {set_utc.strftime('%H:%M') if set_utc else 'N/A'} UTC)" ) if fl.bingo_fuel and fl.joker_fuel: diff --git a/game/persistency.py b/game/persistency.py index 4e485639..98a00108 100644 --- a/game/persistency.py +++ b/game/persistency.py @@ -74,6 +74,26 @@ class MigrationUnpickler(pickle.Unpickler): return ELM2084_MMR_AD_RT elif name == "IRON_DOME_CP": return Iron_Dome_David_Sling_CP + if module == "dcs.terrain.kola.airports": + if name == "Lakselv": + from dcs.terrain.kola.airports import Banak + return Banak + elif name == "Severomorsk1": + from dcs.terrain.kola.airports import Severomorsk_1 + return Severomorsk_1 + elif name == "Severomorsk3": + from dcs.terrain.kola.airports import Severomorsk_3 + return Severomorsk_3 + elif name == "Olenegorsk": + from dcs.terrain.kola.airports import Olenya + return Olenya + if module in ["dcs.vehicles", "dcs.ships"]: + try: + return super().find_class(module, name) + except AttributeError: + alternate = name.split('.')[:-1] + [name.split('.')[-1][0].lower() + name.split('.')[-1][1:]] + name = '.'.join(alternate) + print(name) return super().find_class(module, name) # fmt: on diff --git a/game/settings/settings.py b/game/settings/settings.py index e2745948..3e3f3724 100644 --- a/game/settings/settings.py +++ b/game/settings/settings.py @@ -305,7 +305,7 @@ class Settings: section=GENERAL_SECTION, default=True, detail=( - "Automatically swaps ATFLIR to LITENING pod for newly generated land-based F-18 flights " + "Automatically swaps ATFLIR to LITENING pod for newly generated land-based F/A-18 flights " "without having to change the payload. Takes effect after current turn!" ), ) @@ -327,7 +327,7 @@ class Settings: ) # Doctrine Distances Section airbase_threat_range: int = bounded_int_option( - "Airbase threat range (nmi)", + "Airbase threat range (NM)", page=CAMPAIGN_DOCTRINE_PAGE, section=DOCTRINE_DISTANCES_SECTION, default=100, @@ -339,7 +339,7 @@ class Settings: ), ) cas_engagement_range_distance: int = bounded_int_option( - "CAS engagement range (nmi)", + "CAS engagement range (NM)", page=CAMPAIGN_DOCTRINE_PAGE, section=DOCTRINE_DISTANCES_SECTION, default=10, @@ -347,7 +347,7 @@ class Settings: max=100, ) sead_sweep_engagement_range_distance: int = bounded_int_option( - "SEAD Sweep engagement range (nmi)", + "SEAD Sweep engagement range (NM)", page=CAMPAIGN_DOCTRINE_PAGE, section=DOCTRINE_DISTANCES_SECTION, default=30, @@ -355,7 +355,7 @@ class Settings: max=100, ) sead_threat_buffer_min_distance: int = bounded_int_option( - "SEAD Escort/Sweep threat buffer distance (nmi)", + "SEAD Escort/Sweep threat buffer distance (NM)", page=CAMPAIGN_DOCTRINE_PAGE, section=DOCTRINE_DISTANCES_SECTION, default=5, @@ -366,7 +366,7 @@ class Settings: ), ) tarcap_threat_buffer_min_distance: int = bounded_int_option( - "TARCAP threat buffer distance (nmi)", + "TARCAP threat buffer distance (NM)", page=CAMPAIGN_DOCTRINE_PAGE, section=DOCTRINE_DISTANCES_SECTION, default=20, @@ -375,7 +375,7 @@ class Settings: detail=("How close to known threats will the TARCAP racetrack extend."), ) aewc_threat_buffer_min_distance: int = bounded_int_option( - "AEW&C threat buffer distance (nmi)", + "AEW&C threat buffer distance (NM)", page=CAMPAIGN_DOCTRINE_PAGE, section=DOCTRINE_DISTANCES_SECTION, default=80, @@ -387,7 +387,7 @@ class Settings: ), ) tanker_threat_buffer_min_distance: int = bounded_int_option( - "Theater tanker threat buffer distance (nmi)", + "Theater tanker threat buffer distance (NM)", page=CAMPAIGN_DOCTRINE_PAGE, section=DOCTRINE_DISTANCES_SECTION, default=70, @@ -547,7 +547,7 @@ class Settings: default=True, ) auto_procurement_balance: int = bounded_int_option( - "AI ground unit procurement budget ratio (%) for BLUE", + "AI ground unit procurement budget ratio (%) for OWNFOR", CAMPAIGN_MANAGEMENT_PAGE, HQ_AUTOMATION_SECTION, min=0, @@ -560,7 +560,7 @@ class Settings: ), ) frontline_reserves_factor: int = bounded_int_option( - "AI ground unit front-line reserves factor (%) for BLUE", + "AI ground unit front-line reserves factor (%) for OWNFOR", CAMPAIGN_MANAGEMENT_PAGE, HQ_AUTOMATION_SECTION, min=0, @@ -572,18 +572,18 @@ class Settings: ), ) reserves_procurement_target: int = bounded_int_option( - "AI ground unit reserves procurement target for BLUE", + "AI ground unit reserves procurement target for OWNFOR", CAMPAIGN_MANAGEMENT_PAGE, HQ_AUTOMATION_SECTION, min=0, max=1000, default=10, detail=( - "The number of units that will be bought as reserves for applicable control points" + "The number of units that will be bought as reserves for applicable control points." ), ) auto_procurement_balance_red: int = bounded_int_option( - "AI ground unit procurement budget ratio (%) for RED", + "AI ground unit procurement budget ratio (%) for OPFOR", CAMPAIGN_MANAGEMENT_PAGE, HQ_AUTOMATION_SECTION, min=0, @@ -596,7 +596,7 @@ class Settings: ), ) frontline_reserves_factor_red: int = bounded_int_option( - "AI ground unit front-line reserves factor (%) for RED", + "AI ground unit front-line reserves factor (%) for OPFOR", CAMPAIGN_MANAGEMENT_PAGE, HQ_AUTOMATION_SECTION, min=0, @@ -608,14 +608,14 @@ class Settings: ), ) reserves_procurement_target_red: int = bounded_int_option( - "AI ground unit reserves procurement target for RED", + "AI ground unit reserves procurement target for OPFOR", CAMPAIGN_MANAGEMENT_PAGE, HQ_AUTOMATION_SECTION, min=0, max=1000, default=10, detail=( - "The number of units that will be bought as reserves for applicable control points" + "The number of units that will be bought as reserves for applicable control points." ), ) @@ -1011,7 +1011,7 @@ class Settings: default=True, ) perf_disable_untasked_blufor_aircraft: bool = boolean_option( - "Disable untasked BLUFOR aircraft at airfields", + "Disable untasked OWNFOR aircraft at airfields", page=MISSION_GENERATOR_PAGE, section=PERFORMANCE_SECTION, default=False, diff --git a/game/theater/controlpoint.py b/game/theater/controlpoint.py index 988dac7b..7add8807 100644 --- a/game/theater/controlpoint.py +++ b/game/theater/controlpoint.py @@ -28,7 +28,7 @@ from uuid import UUID from dcs.mapping import Point from dcs.ships import ( - Ara_vdm, + ara_vdm, CVN_71, CVN_72, CVN_73, @@ -39,7 +39,7 @@ from dcs.ships import ( LHA_Tarawa, Stennis, Type_071, - Hms_invincible, + hms_invincible, ) from dcs.terrain.terrain import Airport, ParkingSlot from dcs.unitgroup import ShipGroup, StaticGroup @@ -1385,13 +1385,13 @@ class NavalControlPoint( for group in self.find_main_tgo().groups: for u in group.units: if u.alive and u.type in [ - Ara_vdm, + ara_vdm, Forrestal, Stennis, LHA_Tarawa, KUZNECOW, Type_071, - Hms_invincible, + hms_invincible, L02, L52, L61, diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index 7861561c..8e722d78 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -80,6 +80,7 @@ class ModSettings: f100_supersabre: bool = False f104_starfighter: bool = False f105_thunderchief: bool = False + f106_deltadart: bool = False hercules: bool = False irondome: bool = False uh_60l: bool = False diff --git a/game/weather/conditions.py b/game/weather/conditions.py index dad1de78..dfcb32ff 100644 --- a/game/weather/conditions.py +++ b/game/weather/conditions.py @@ -4,6 +4,7 @@ import datetime import logging import random from dataclasses import dataclass +from typing import Tuple from game.settings import Settings, NightMissions from game.theater import ConflictTheater, SeasonalConditions @@ -74,11 +75,25 @@ class Conditions: # time constrained to that. DaytimeMap enforces that we have only whole hour # ranges for now, so we don't need to worry about accidentally changing the time # of day by truncating sub-hours. - time = datetime.time( - hour=random.randint(time_range[0].hour, time_range[1].hour) - ) + day, hours = Conditions.random_time_progression(day, time_range) + time = datetime.time(hour=hours) return datetime.datetime.combine(day, time) + @staticmethod + def random_time_progression( + day: datetime.date, time_range: Tuple[datetime.time, datetime.time] + ) -> Tuple[datetime.date, int]: + start, end = time_range[0].hour, time_range[1].hour + if start > end: + end += 24 + hours = random.randint(start, end) + if hours > 23: + day += datetime.timedelta(days=1.0) + hours %= 24 + else: + hours = random.randint(start, end) + return day, hours + @classmethod def generate_weather( cls, diff --git a/pydcs_extensions/__init__.py b/pydcs_extensions/__init__.py index 73aaaa6c..ccdd9e01 100644 --- a/pydcs_extensions/__init__.py +++ b/pydcs_extensions/__init__.py @@ -6,6 +6,7 @@ from .f9f import * from .f100 import * from .f104 import * from .f105 import * +from .f106 import * from .f15d import * from .f15i_idf import * from .f16i_idf import * diff --git a/pydcs_extensions/a4ec/a4ec.py b/pydcs_extensions/a4ec/a4ec.py index 8f88b6f9..6a20eaaa 100644 --- a/pydcs_extensions/a4ec/a4ec.py +++ b/pydcs_extensions/a4ec/a4ec.py @@ -1004,7 +1004,7 @@ class A_4E_C(PlaneType): LAU3_WP156 = (1, Weapons.LAU3_WP156) LAU3_HE151 = (1, Weapons.LAU3_HE151) AGM_45A_Shrike_ARM = (1, Weapons.AGM_45A_Shrike_ARM) - AGM_45B_Shrike_ARM__Imp_ = (1, Weapons.AGM_45B_Shrike_ARM__Imp_) + AGM_45B_Shrike_ARM = (1, Weapons.AGM_45B_Shrike_ARM) Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( 1, Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, @@ -1213,7 +1213,7 @@ class A_4E_C(PlaneType): WeaponsA4EC._2_x_LAU_3_pod___19_x_2_75_Hydra__UnGd_Rkts_WTU_1_B__Practice__TER__, ) AGM_45A_Shrike_ARM = (2, Weapons.AGM_45A_Shrike_ARM) - AGM_45B_Shrike_ARM__Imp_ = (2, Weapons.AGM_45B_Shrike_ARM__Imp_) + AGM_45B_Shrike_ARM = (2, Weapons.AGM_45B_Shrike_ARM) Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( 2, Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, @@ -1850,7 +1850,7 @@ class A_4E_C(PlaneType): WeaponsA4EC._2_x_LAU_3_pod___19_x_2_75_Hydra__UnGd_Rkts_WTU_1_B__Practice__TER___, ) AGM_45A_Shrike_ARM = (4, Weapons.AGM_45A_Shrike_ARM) - AGM_45B_Shrike_ARM__Imp_ = (4, Weapons.AGM_45B_Shrike_ARM__Imp_) + AGM_45B_Shrike_ARM = (4, Weapons.AGM_45B_Shrike_ARM) Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( 4, Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, @@ -2048,7 +2048,7 @@ class A_4E_C(PlaneType): LAU3_WP156 = (5, Weapons.LAU3_WP156) LAU3_HE151 = (5, Weapons.LAU3_HE151) AGM_45A_Shrike_ARM = (5, Weapons.AGM_45A_Shrike_ARM) - AGM_45B_Shrike_ARM__Imp_ = (5, Weapons.AGM_45B_Shrike_ARM__Imp_) + AGM_45B_Shrike_ARM = (5, Weapons.AGM_45B_Shrike_ARM) Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( 5, Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, diff --git a/pydcs_extensions/a6a/a6a.py b/pydcs_extensions/a6a/a6a.py index ebdde391..7ebd2861 100644 --- a/pydcs_extensions/a6a/a6a.py +++ b/pydcs_extensions/a6a/a6a.py @@ -7,7 +7,6 @@ from dcs.weapons_data import Weapons from game.modsupport import planemod from pydcs_extensions import inject_weapons, WeaponsA7E - inject_weapons(WeaponsA7E) @@ -61,7 +60,7 @@ class VSN_A6A(PlaneType): Weapons.LAU_7_with_AIM_9P_Sidewinder_IR_AAM, ) AGM_45A_Shrike_ARM = (1, Weapons.AGM_45A_Shrike_ARM) - AGM_45B_Shrike_ARM__Imp_ = (1, Weapons.AGM_45B_Shrike_ARM__Imp_) + AGM_45B_Shrike_ARM = (1, Weapons.AGM_45B_Shrike_ARM) AGM_88C_HARM___High_Speed_Anti_Radiation_Missile = ( 1, Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile, @@ -213,7 +212,7 @@ class VSN_A6A(PlaneType): Weapons.LAU_7_with_AIM_9P_Sidewinder_IR_AAM, ) AGM_45A_Shrike_ARM = (2, Weapons.AGM_45A_Shrike_ARM) - AGM_45B_Shrike_ARM__Imp_ = (2, Weapons.AGM_45B_Shrike_ARM__Imp_) + AGM_45B_Shrike_ARM = (2, Weapons.AGM_45B_Shrike_ARM) AGM_88C_HARM___High_Speed_Anti_Radiation_Missile = ( 2, Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile, @@ -423,7 +422,7 @@ class VSN_A6A(PlaneType): Weapons.LAU_7_with_AIM_9P_Sidewinder_IR_AAM, ) AGM_45A_Shrike_ARM = (4, Weapons.AGM_45A_Shrike_ARM) - AGM_45B_Shrike_ARM__Imp_ = (4, Weapons.AGM_45B_Shrike_ARM__Imp_) + AGM_45B_Shrike_ARM = (4, Weapons.AGM_45B_Shrike_ARM) AGM_88C_HARM___High_Speed_Anti_Radiation_Missile = ( 4, Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile, @@ -578,7 +577,7 @@ class VSN_A6A(PlaneType): Weapons.LAU_7_with_AIM_9P_Sidewinder_IR_AAM, ) AGM_45A_Shrike_ARM = (5, Weapons.AGM_45A_Shrike_ARM) - AGM_45B_Shrike_ARM__Imp_ = (5, Weapons.AGM_45B_Shrike_ARM__Imp_) + AGM_45B_Shrike_ARM = (5, Weapons.AGM_45B_Shrike_ARM) AGM_88C_HARM___High_Speed_Anti_Radiation_Missile = ( 5, Weapons.AGM_88C_HARM___High_Speed_Anti_Radiation_Missile, diff --git a/pydcs_extensions/a7e/a7e.py b/pydcs_extensions/a7e/a7e.py index c4239b80..1999b03d 100644 --- a/pydcs_extensions/a7e/a7e.py +++ b/pydcs_extensions/a7e/a7e.py @@ -503,9 +503,9 @@ class A_7E(PlaneType): 1, Weapons.AGM_62_Walleye_II___Guided_Weapon_Mk_5__TV_Guided_, ) - LAU_118A___AGM_45B_Shrike_ARM__Imp_ = ( + LAU_118A___AGM_45B_Shrike_ARM = ( 1, - Weapons.LAU_118A___AGM_45B_Shrike_ARM__Imp_, + Weapons.LAU_118A___AGM_45B_Shrike_ARM, ) AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( 1, @@ -698,9 +698,9 @@ class A_7E(PlaneType): LAU_117_AGM_65G = (2, Weapons.LAU_117_AGM_65G) LAU_117_AGM_65H = (2, Weapons.LAU_117_AGM_65H) LAU_88_AGM_65H_2_L = (2, Weapons.LAU_88_AGM_65H_2_L) - LAU_118A___AGM_45B_Shrike_ARM__Imp_ = ( + LAU_118A___AGM_45B_Shrike_ARM = ( 2, - Weapons.LAU_118A___AGM_45B_Shrike_ARM__Imp_, + Weapons.LAU_118A___AGM_45B_Shrike_ARM, ) AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( 2, @@ -1116,9 +1116,9 @@ class A_7E(PlaneType): LAU_117_AGM_65G = (7, Weapons.LAU_117_AGM_65G) LAU_117_AGM_65H = (7, Weapons.LAU_117_AGM_65H) LAU_88_AGM_65H_2_R = (7, Weapons.LAU_88_AGM_65H_2_R) - LAU_118A___AGM_45B_Shrike_ARM__Imp_ = ( + LAU_118A___AGM_45B_Shrike_ARM = ( 7, - Weapons.LAU_118A___AGM_45B_Shrike_ARM__Imp_, + Weapons.LAU_118A___AGM_45B_Shrike_ARM, ) AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( 7, @@ -1275,9 +1275,9 @@ class A_7E(PlaneType): 8, Weapons.AGM_62_Walleye_II___Guided_Weapon_Mk_5__TV_Guided_, ) - LAU_118A___AGM_45B_Shrike_ARM__Imp_ = ( + LAU_118A___AGM_45B_Shrike_ARM = ( 8, - Weapons.LAU_118A___AGM_45B_Shrike_ARM__Imp_, + Weapons.LAU_118A___AGM_45B_Shrike_ARM, ) AGM_88C_HARM___High_Speed_Anti_Radiation_Missile_ = ( 8, diff --git a/pydcs_extensions/f100/f100.py b/pydcs_extensions/f100/f100.py index bcf6f2e2..ec0b48d2 100644 --- a/pydcs_extensions/f100/f100.py +++ b/pydcs_extensions/f100/f100.py @@ -212,9 +212,9 @@ class VSN_F100(PlaneType): 5, Weapons.LAU_7_with_AIM_9B_Sidewinder_IR_AAM, ) - LAU_118A___AGM_45B_Shrike_ARM__Imp_ = ( + LAU_118A___AGM_45B_Shrike_ARM = ( 5, - Weapons.LAU_118A___AGM_45B_Shrike_ARM__Imp_, + Weapons.LAU_118A___AGM_45B_Shrike_ARM, ) Fuel_tank_500_Liter = (5, WeaponsF100.Fuel_tank_500_Liter) @@ -295,9 +295,9 @@ class VSN_F100(PlaneType): 7, Weapons.LAU_7_with_AIM_9P_Sidewinder_IR_AAM, ) - LAU_118A___AGM_45B_Shrike_ARM__Imp_ = ( + LAU_118A___AGM_45B_Shrike_ARM = ( 7, - Weapons.LAU_118A___AGM_45B_Shrike_ARM__Imp_, + Weapons.LAU_118A___AGM_45B_Shrike_ARM, ) Fuel_tank_500_Liter = (7, WeaponsF100.Fuel_tank_500_Liter) diff --git a/pydcs_extensions/f106/__init__.py b/pydcs_extensions/f106/__init__.py new file mode 100644 index 00000000..354bf7d2 --- /dev/null +++ b/pydcs_extensions/f106/__init__.py @@ -0,0 +1 @@ +from .f106 import * diff --git a/pydcs_extensions/f106/f106.py b/pydcs_extensions/f106/f106.py new file mode 100644 index 00000000..e0253b22 --- /dev/null +++ b/pydcs_extensions/f106/f106.py @@ -0,0 +1,304 @@ +from typing import Set + +from dcs import task +from dcs.planes import PlaneType +from dcs.weapons_data import Weapons + +from game.modsupport import planemod +from pydcs_extensions.weapon_injector import inject_weapons + + +class WeaponsF106: + Fuel_Tank = {"clsid": "{VSN_F106L_PTB}", "name": "Fuel Tank", "weight": 1187} + Fuel_Tank_ = {"clsid": "{VSN_F106R_PTB}", "name": "Fuel Tank", "weight": 1187} + AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_ = { + "clsid": "{Hughes AIM-4D}", + "name": "AIM-4D Rear aspect advanced heat-seeking air-to-air missile.", + "weight": 60.8, + } + AIM_4F_Semi_active_radar_homing_air_to_air_missile_ = { + "clsid": "{Hughes AIM-4F}", + "name": "AIM-4F Semi active radar-homing air-to-air missile.", + "weight": 66, + } + AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_ = { + "clsid": "{Hughes AIM-4G}", + "name": "AIM-4G Rear aspect heat seeking air-to-air missile.", + "weight": 66, + } + AIR_2A_Genie_Nuclear_air_to_air_unguided_rocket_ = { + "clsid": "{AIR-2A}", + "name": "AIR-2A Genie Nuclear air-to-air unguided rocket.", + "weight": 66, + } + L005_Sorbtsiya_ECM_pod__left_ = { + "clsid": "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + "name": "L005 Sorbtsiya ECM pod (left)", + "weight": 150, + } + L005_Sorbtsiya_ECM_pod__right_ = { + "clsid": "{44EE8698-89F9-48EE-AF36-5FD31896A82A}", + "name": "L005 Sorbtsiya ECM pod (right)", + "weight": 150, + } + + +inject_weapons(WeaponsF106) + + +@planemod +class VSN_F106A(PlaneType): + id = "VSN_F106A" + flyable = True + height = 6.18 + width = 11.67 + length = 21.56 + fuel_max = 4464 + max_speed = 2452.032 + 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 + + livery_name = "VSN_F106A" # from type + + class Pylon1: + 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) + Fuel_Tank = (1, WeaponsF106.Fuel_Tank) + + # ERRR + + class Pylon2: + AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_ = ( + 2, + WeaponsF106.AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_, + ) + AIM_4F_Semi_active_radar_homing_air_to_air_missile_ = ( + 2, + WeaponsF106.AIM_4F_Semi_active_radar_homing_air_to_air_missile_, + ) + AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_ = ( + 2, + WeaponsF106.AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_, + ) + + class Pylon3: + AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_ = ( + 3, + WeaponsF106.AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_, + ) + AIM_4F_Semi_active_radar_homing_air_to_air_missile_ = ( + 3, + WeaponsF106.AIM_4F_Semi_active_radar_homing_air_to_air_missile_, + ) + AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_ = ( + 3, + WeaponsF106.AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_, + ) + + class Pylon4: + AIR_2A_Genie_Nuclear_air_to_air_unguided_rocket_ = ( + 4, + WeaponsF106.AIR_2A_Genie_Nuclear_air_to_air_unguided_rocket_, + ) + + # ERRR + + class Pylon5: + AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_ = ( + 5, + WeaponsF106.AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_, + ) + AIM_4F_Semi_active_radar_homing_air_to_air_missile_ = ( + 5, + WeaponsF106.AIM_4F_Semi_active_radar_homing_air_to_air_missile_, + ) + AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_ = ( + 5, + WeaponsF106.AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_, + ) + + class Pylon6: + AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_ = ( + 6, + WeaponsF106.AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_, + ) + AIM_4F_Semi_active_radar_homing_air_to_air_missile_ = ( + 6, + WeaponsF106.AIM_4F_Semi_active_radar_homing_air_to_air_missile_, + ) + AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_ = ( + 6, + WeaponsF106.AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_, + ) + + class Pylon7: + Smokewinder___red = (7, Weapons.Smokewinder___red) + Smokewinder___green = (7, Weapons.Smokewinder___green) + Smokewinder___blue = (7, Weapons.Smokewinder___blue) + Smokewinder___white = (7, Weapons.Smokewinder___white) + Smokewinder___yellow = (7, Weapons.Smokewinder___yellow) + Fuel_Tank_ = (7, WeaponsF106.Fuel_Tank_) + + # ERRR + + class Pylon8: + WeaponsF106.L005_Sorbtsiya_ECM_pod__left_ = ( + 8, + Weapons.L005_Sorbtsiya_ECM_pod__left_, + ) + + class Pylon9: + Smoke_Generator___red_ = (9, Weapons.Smoke_Generator___red_) + Smoke_Generator___green_ = (9, Weapons.Smoke_Generator___green_) + Smoke_Generator___blue_ = (9, Weapons.Smoke_Generator___blue_) + Smoke_Generator___white_ = (9, Weapons.Smoke_Generator___white_) + Smoke_Generator___yellow_ = (9, Weapons.Smoke_Generator___yellow_) + Smoke_Generator___orange_ = (9, Weapons.Smoke_Generator___orange_) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9} + + tasks = [ + task.CAP, + task.Escort, + task.FighterSweep, + task.Intercept, + task.Reconnaissance, + ] + task_default = task.FighterSweep + + +@planemod +class VSN_F106B(PlaneType): + id = "VSN_F106B" + flyable = True + height = 6.18 + width = 11.67 + length = 21.56 + fuel_max = 4464 + max_speed = 2452.032 + 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 + + livery_name = "VSN_F106B" # from type + + class Pylon1: + 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) + Fuel_Tank = (1, WeaponsF106.Fuel_Tank) + + # ERRR + + class Pylon2: + AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_ = ( + 2, + WeaponsF106.AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_, + ) + AIM_4F_Semi_active_radar_homing_air_to_air_missile_ = ( + 2, + WeaponsF106.AIM_4F_Semi_active_radar_homing_air_to_air_missile_, + ) + AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_ = ( + 2, + WeaponsF106.AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_, + ) + + class Pylon3: + AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_ = ( + 3, + WeaponsF106.AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_, + ) + AIM_4F_Semi_active_radar_homing_air_to_air_missile_ = ( + 3, + WeaponsF106.AIM_4F_Semi_active_radar_homing_air_to_air_missile_, + ) + AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_ = ( + 3, + WeaponsF106.AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_, + ) + + class Pylon4: + AIR_2A_Genie_Nuclear_air_to_air_unguided_rocket_ = ( + 4, + WeaponsF106.AIR_2A_Genie_Nuclear_air_to_air_unguided_rocket_, + ) + + # ERRR + + class Pylon5: + AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_ = ( + 5, + WeaponsF106.AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_, + ) + AIM_4F_Semi_active_radar_homing_air_to_air_missile_ = ( + 5, + WeaponsF106.AIM_4F_Semi_active_radar_homing_air_to_air_missile_, + ) + AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_ = ( + 5, + WeaponsF106.AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_, + ) + + class Pylon6: + AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_ = ( + 6, + WeaponsF106.AIM_4D_Rear_aspect_advanced_heat_seeking_air_to_air_missile_, + ) + AIM_4F_Semi_active_radar_homing_air_to_air_missile_ = ( + 6, + WeaponsF106.AIM_4F_Semi_active_radar_homing_air_to_air_missile_, + ) + AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_ = ( + 6, + WeaponsF106.AIM_4G_Rear_aspect_heat_seeking_air_to_air_missile_, + ) + + class Pylon7: + Smokewinder___red = (7, Weapons.Smokewinder___red) + Smokewinder___green = (7, Weapons.Smokewinder___green) + Smokewinder___blue = (7, Weapons.Smokewinder___blue) + Smokewinder___white = (7, Weapons.Smokewinder___white) + Smokewinder___yellow = (7, Weapons.Smokewinder___yellow) + Fuel_Tank_ = (7, WeaponsF106.Fuel_Tank_) + + # ERRR + + class Pylon8: + Weapons.L005_Sorbtsiya_ECM_pod__left_ = ( + 8, + Weapons.L005_Sorbtsiya_ECM_pod__left_, + ) + + class Pylon9: + Smoke_Generator___red_ = (9, Weapons.Smoke_Generator___red_) + Smoke_Generator___green_ = (9, Weapons.Smoke_Generator___green_) + Smoke_Generator___blue_ = (9, Weapons.Smoke_Generator___blue_) + Smoke_Generator___white_ = (9, Weapons.Smoke_Generator___white_) + Smoke_Generator___yellow_ = (9, Weapons.Smoke_Generator___yellow_) + Smoke_Generator___orange_ = (9, Weapons.Smoke_Generator___orange_) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9} + + tasks = [ + task.CAP, + task.Escort, + task.FighterSweep, + task.Intercept, + task.Reconnaissance, + ] + task_default = task.FighterSweep diff --git a/pydcs_extensions/f16i_idf/f16i_idf.py b/pydcs_extensions/f16i_idf/f16i_idf.py index 0919ba89..09a4d72e 100644 --- a/pydcs_extensions/f16i_idf/f16i_idf.py +++ b/pydcs_extensions/f16i_idf/f16i_idf.py @@ -612,9 +612,9 @@ class F_16D_52(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (3, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 3, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (3, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (3, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -795,9 +795,9 @@ class F_16D_52(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (4, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 4, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (4, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (4, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -919,9 +919,9 @@ class F_16D_52(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (6, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 6, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (6, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (6, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -1046,9 +1046,9 @@ class F_16D_52(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (7, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 7, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (7, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (7, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -1499,9 +1499,9 @@ class F_16D_50(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (3, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 3, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (3, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (3, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -1682,9 +1682,9 @@ class F_16D_50(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (4, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 4, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (4, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (4, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -1806,9 +1806,9 @@ class F_16D_50(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (6, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 6, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (6, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (6, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -1933,9 +1933,9 @@ class F_16D_50(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (7, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 7, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (7, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (7, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -2386,9 +2386,9 @@ class F_16D_52_NS(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (3, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 3, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (3, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (3, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -2569,9 +2569,9 @@ class F_16D_52_NS(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (4, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 4, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (4, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (4, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -2693,9 +2693,9 @@ class F_16D_52_NS(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (6, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 6, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (6, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (6, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -2820,9 +2820,9 @@ class F_16D_52_NS(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (7, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 7, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (7, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (7, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -3272,9 +3272,9 @@ class F_16D_50_NS(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (3, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 3, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (3, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (3, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -3455,9 +3455,9 @@ class F_16D_50_NS(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (4, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 4, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (4, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (4, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -3579,9 +3579,9 @@ class F_16D_50_NS(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (6, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 6, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (6, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (6, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -3706,9 +3706,9 @@ class F_16D_50_NS(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (7, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 7, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (7, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (7, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -4159,9 +4159,9 @@ class F_16D_Barak_40(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (3, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 3, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (3, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (3, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -4342,9 +4342,9 @@ class F_16D_Barak_40(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (4, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 4, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (4, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (4, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -4454,9 +4454,9 @@ class F_16D_Barak_40(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (6, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 6, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (6, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (6, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -4570,9 +4570,9 @@ class F_16D_Barak_40(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (7, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 7, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (7, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (7, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -5020,9 +5020,9 @@ class F_16D_Barak_30(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (3, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 3, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (3, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (3, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -5203,9 +5203,9 @@ class F_16D_Barak_30(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (4, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 4, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (4, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (4, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -5315,9 +5315,9 @@ class F_16D_Barak_30(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (6, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 6, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (6, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (6, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -5431,9 +5431,9 @@ class F_16D_Barak_30(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (7, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 7, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (7, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (7, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -5880,9 +5880,9 @@ class F_16I(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (3, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 3, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (3, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (3, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -6063,9 +6063,9 @@ class F_16I(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (4, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 4, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (4, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (4, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -6187,9 +6187,9 @@ class F_16I(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (6, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 6, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (6, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (6, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) @@ -6314,9 +6314,9 @@ class F_16I(PlaneType): Weapons.GBU_10___2000lb_Laser_Guided_Bomb, ) GBU_12___500lb_Laser_Guided_Bomb = (7, Weapons.GBU_12___500lb_Laser_Guided_Bomb) - GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb = ( + GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb = ( 7, - Weapons.GBU_24_Paveway_III___2000lb_Laser_Guided_Bomb, + Weapons.GBU_24A_B_Paveway_III___2000lb_Laser_Guided_Bomb, ) CBU_87___202_x_CEM_Cluster_Bomb = (7, Weapons.CBU_87___202_x_CEM_Cluster_Bomb) CBU_97___10_x_SFW_Cluster_Bomb = (7, Weapons.CBU_97___10_x_SFW_Cluster_Bomb) diff --git a/pydcs_extensions/f4/f4.py b/pydcs_extensions/f4/f4.py index eed1dfac..eee7e259 100644 --- a/pydcs_extensions/f4/f4.py +++ b/pydcs_extensions/f4/f4.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Set +from typing import Set from dcs import task from dcs.planes import PlaneType @@ -596,9 +596,9 @@ class VSN_F4C(PlaneType): Weapons.BRU_42_with_3_x_Mk_82___500lb_GP_Bombs_LD, ) Mk_84___2000lb_GP_Bomb_LD = (3, Weapons.Mk_84___2000lb_GP_Bomb_LD) - LAU_118A___AGM_45B_Shrike_ARM__Imp_ = ( + LAU_118A___AGM_45B_Shrike_ARM = ( 3, - Weapons.LAU_118A___AGM_45B_Shrike_ARM__Imp_, + Weapons.LAU_118A___AGM_45B_Shrike_ARM, ) LAU_10_pod___4_x_127mm_ZUNI__UnGd_Rkts_Mk71__HE_FRAG = ( 3, @@ -711,9 +711,9 @@ class VSN_F4C(PlaneType): Weapons.BRU_42_with_3_x_Mk_82___500lb_GP_Bombs_LD, ) Mk_84___2000lb_GP_Bomb_LD = (9, Weapons.Mk_84___2000lb_GP_Bomb_LD) - LAU_118A___AGM_45B_Shrike_ARM__Imp_ = ( + LAU_118A___AGM_45B_Shrike_ARM = ( 9, - Weapons.LAU_118A___AGM_45B_Shrike_ARM__Imp_, + Weapons.LAU_118A___AGM_45B_Shrike_ARM, ) LAU_10_pod___4_x_127mm_ZUNI__UnGd_Rkts_Mk71__HE_FRAG = ( 9, diff --git a/qt_ui/dialogs.py b/qt_ui/dialogs.py index 8b13b954..6c715b0f 100644 --- a/qt_ui/dialogs.py +++ b/qt_ui/dialogs.py @@ -44,9 +44,7 @@ class Dialog: @classmethod def open_edit_package_dialog(cls, package_model: PackageModel): """Opens the dialog to edit the given package.""" - cls.edit_package_dialog = QEditPackageDialog( - cls.game_model, cls.game_model.ato_model, package_model - ) + cls.edit_package_dialog = QEditPackageDialog(cls.game_model, package_model) cls.edit_package_dialog.show() @classmethod diff --git a/qt_ui/widgets/ato.py b/qt_ui/widgets/ato.py index 48a6c07b..3606e470 100644 --- a/qt_ui/widgets/ato.py +++ b/qt_ui/widgets/ato.py @@ -475,6 +475,11 @@ class QPackagePanel(QGroupBox): return self.package_list.delete_package(index) + def enable_buttons(self, enabled: bool) -> None: + self.edit_button.setEnabled(enabled) + self.clone_button.setEnabled(enabled) + self.delete_button.setEnabled(enabled) + class QAirTaskingOrderPanel(QSplitter): """A split panel for displaying the packages and flights of an ATO. @@ -511,8 +516,10 @@ class QAirTaskingOrderPanel(QSplitter): """Sets the newly selected flight for display in the bottom panel.""" index = self.package_panel.package_list.currentIndex() if index.isValid(): + self.package_panel.enable_buttons(True) self.flight_panel.set_package(self.ato_model.get_package_model(index)) else: + self.package_panel.enable_buttons(False) self.flight_panel.set_package(None) def on_ato_changed(self) -> None: @@ -525,6 +532,9 @@ class QAirTaskingOrderPanel(QSplitter): self.package_panel.ato_model = ato_model self.package_panel.package_list.ato_model = ato_model self.package_panel.package_list.setModel(ato_model) + self.package_panel.enable_buttons(False) self.package_panel.current_changed.connect(self.on_package_change) self.flight_panel.flight_list.set_package(None) + events = GameUpdateEvents().deselect_flight() + EventStream.put_nowait(events) self.game_model.is_ownfor = not opfor diff --git a/qt_ui/windows/AirWingConfigurationDialog.py b/qt_ui/windows/AirWingConfigurationDialog.py index f9d2ed4c..9765fea4 100644 --- a/qt_ui/windows/AirWingConfigurationDialog.py +++ b/qt_ui/windows/AirWingConfigurationDialog.py @@ -525,7 +525,6 @@ class AircraftSquadronsPage(QWidget): scrolling_area.setHorizontalScrollBarPolicy( Qt.ScrollBarPolicy.ScrollBarAlwaysOff ) - scrolling_area.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOn) scrolling_area.setWidgetResizable(True) scrolling_area.setWidget(scrolling_widget) diff --git a/qt_ui/windows/AirWingDialog.py b/qt_ui/windows/AirWingDialog.py index ef2a9c80..4863934b 100644 --- a/qt_ui/windows/AirWingDialog.py +++ b/qt_ui/windows/AirWingDialog.py @@ -28,6 +28,7 @@ from qt_ui.models import AirWingModel, AtoModel, GameModel, SquadronModel from qt_ui.simcontroller import SimController from qt_ui.windows.AirWingConfigurationDialog import AirWingConfigurationDialog from qt_ui.windows.SquadronDialog import SquadronDialog +from qt_ui.windows.newgame.WizardPages.QFactionSelection import QFactionUnits class SquadronDelegate(TwoColumnRowDelegate): @@ -238,6 +239,8 @@ class AirWingTabs(QTabWidget): def __init__(self, game_model: GameModel) -> None: super().__init__() + self.game_model = game_model + self.addTab( SquadronList( game_model.ato_model, @@ -260,18 +263,33 @@ class AirWingTabs(QTabWidget): if game_model.game.settings.enable_air_wing_adjustments: pb = QPushButton("Open Air Wing Config Dialog") - pb.clicked.connect(lambda _: self.open_awcd(game_model)) + pb.clicked.connect(self.open_awcd) pb.setMaximumWidth(300) layout = QHBoxLayout() layout.addWidget(pb) w = QWidget(layout=layout) self.addTab(w, "Cheats") - def open_awcd(self, gm: GameModel): - AirWingConfigurationDialog(gm.game, True, self).exec_() + self.addTab( + QFactionUnits( + game_model.game.coalition_for(True).faction, + self, + ), + "Faction OWNFOR", + ) + self.addTab( + QFactionUnits( + game_model.game.coalition_for(False).faction, + self, + ), + "Faction OPFOR", + ) + + def open_awcd(self): + AirWingConfigurationDialog(self.game_model.game, True, self).exec_() events = GameUpdateEvents().begin_new_turn() EventStream.put_nowait(events) - gm.ato_model.on_sim_update(events) + self.game_model.ato_model.on_sim_update(events) class AirWingDialog(QDialog): diff --git a/qt_ui/windows/mission/QPackageDialog.py b/qt_ui/windows/mission/QPackageDialog.py index 30d430a8..26d8a3c6 100644 --- a/qt_ui/windows/mission/QPackageDialog.py +++ b/qt_ui/windows/mission/QPackageDialog.py @@ -23,7 +23,7 @@ from game.radio.radios import RadioFrequency from game.server import EventStream from game.sim import GameUpdateEvents from game.theater.missiontarget import MissionTarget -from qt_ui.models import AtoModel, GameModel, PackageModel +from qt_ui.models import GameModel, PackageModel from qt_ui.uiconstants import EVENT_ICONS from qt_ui.widgets.QFrequencyWidget import QFrequencyWidget from qt_ui.widgets.ato import QFlightList @@ -333,11 +333,9 @@ class QEditPackageDialog(QPackageDialog): Changes to existing packages occur immediately. """ - def __init__( - self, game_model: GameModel, model: AtoModel, package: PackageModel - ) -> None: - super().__init__(game_model, package) - self.ato_model = model + def __init__(self, gm: GameModel, package: PackageModel) -> None: + super().__init__(gm, package) + self.ato_model = gm.ato_model if gm.is_ownfor else gm.red_ato_model self.delete_button = QPushButton("Delete package") self.delete_button.setProperty("style", "btn-danger") diff --git a/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py b/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py index 2c1e9bb8..e325e2ac 100644 --- a/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py +++ b/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py @@ -41,12 +41,12 @@ class FlightMemberSelector(QSpinBox): def __init__(self, flight: Flight, parent: QWidget | None = None) -> None: super().__init__(parent) self.flight = flight - self.setMinimum(0) - self.setMaximum(flight.count - 1) + self.setMinimum(1) + self.setMaximum(flight.count) @property def selected_member(self) -> FlightMember: - return self.flight.roster.members[self.value()] + return self.flight.roster.members[self.value() - 1] class DcsFuelSelector(QHBoxLayout): @@ -237,7 +237,7 @@ class QFlightPayloadTab(QFrame): self.payload_editor.set_flight_member(member) self.weapon_laser_code_selector.set_flight_member(member) self.own_laser_code_info.set_flight_member(member) - if self.member_selector.value() != 0: + if self.member_selector.value() != 1: self.loadout_selector.setDisabled( self.flight.use_same_loadout_for_all_members ) diff --git a/qt_ui/windows/newgame/QNewGameWizard.py b/qt_ui/windows/newgame/QNewGameWizard.py index 72f05bb6..696463bf 100644 --- a/qt_ui/windows/newgame/QNewGameWizard.py +++ b/qt_ui/windows/newgame/QNewGameWizard.py @@ -103,6 +103,7 @@ class NewGameWizard(QtWidgets.QWizard): f100_supersabre=self.field("f100_supersabre"), f104_starfighter=self.field("f104_starfighter"), f105_thunderchief=self.field("f105_thunderchief"), + f106_deltadart=self.field("f106_deltadart"), hercules=self.field("hercules"), irondome=self.field("irondome"), uh_60l=self.field("uh_60l"), diff --git a/qt_ui/windows/newgame/WizardPages/QFactionSelection.py b/qt_ui/windows/newgame/WizardPages/QFactionSelection.py index befb2ce1..9d4e1186 100644 --- a/qt_ui/windows/newgame/WizardPages/QFactionSelection.py +++ b/qt_ui/windows/newgame/WizardPages/QFactionSelection.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals from copy import deepcopy -from typing import Union +from typing import Union, Callable, Set, Optional from PySide6 import QtWidgets, QtGui from PySide6.QtCore import Qt @@ -12,9 +12,16 @@ from PySide6.QtWidgets import ( QCheckBox, QLabel, QTextBrowser, + QPushButton, + QComboBox, + QHBoxLayout, ) +from game.ato import FlightType from game.campaignloader import Campaign +from game.dcs.aircrafttype import AircraftType +from game.dcs.groundunittype import GroundUnitType +from game.dcs.unittype import UnitType from game.factions import Faction, FACTIONS from qt_ui.windows.newgame.jinja_env import jinja_env @@ -29,7 +36,13 @@ class QFactionUnits(QScrollArea): self.faction = faction self._create_checkboxes() - def _add_checkboxes(self, units: set, counter: int, grid: QGridLayout) -> int: + def _add_checkboxes( + self, + units: set, + counter: int, + grid: QGridLayout, + combo_layout: Optional[QHBoxLayout] = None, + ) -> int: counter += 1 for i, v in enumerate(sorted(units, key=lambda x: str(x)), counter): cb = QCheckBox(str(v)) @@ -37,6 +50,9 @@ class QFactionUnits(QScrollArea): self.checkboxes[str(v)] = cb grid.addWidget(cb, i, 1) counter += 1 + if combo_layout: + counter += 1 + grid.addLayout(combo_layout, counter, 1) counter += 1 return counter @@ -44,18 +60,47 @@ class QFactionUnits(QScrollArea): counter = 0 self.checkboxes: dict[str, QCheckBox] = {} grid = QGridLayout() + grid.setColumnStretch(1, 1) if len(self.faction.aircraft) > 0: + self.add_ac_combo = QComboBox() + hbox = self._create_aircraft_combobox( + self.add_ac_combo, + lambda: self._on_add_ac(self.faction.aircraft, self.add_ac_combo), + self._aircraft_predicate, + ) grid.addWidget(QLabel("Aircraft:"), counter, 0) - counter = self._add_checkboxes(self.faction.aircraft, counter, grid) + counter = self._add_checkboxes(self.faction.aircraft, counter, grid, hbox) if len(self.faction.awacs) > 0: + self.add_awacs_combo = QComboBox() + hbox = self._create_aircraft_combobox( + self.add_awacs_combo, + lambda: self._on_add_ac(self.faction.awacs, self.add_awacs_combo), + self._awacs_predicate, + ) grid.addWidget(QLabel("AWACS:"), counter, 0) - counter = self._add_checkboxes(self.faction.awacs, counter, grid) + counter = self._add_checkboxes(self.faction.awacs, counter, grid, hbox) if len(self.faction.tankers) > 0: + self.add_tanker_combo = QComboBox() + hbox = self._create_aircraft_combobox( + self.add_tanker_combo, + lambda: self._on_add_ac(self.faction.tankers, self.add_tanker_combo), + self._tanker_predicate, + ) grid.addWidget(QLabel("Tankers:"), counter, 0) - counter = self._add_checkboxes(self.faction.tankers, counter, grid) + counter = self._add_checkboxes(self.faction.tankers, counter, grid, hbox) if len(self.faction.frontline_units) > 0: + self.add_frontline_combo = QComboBox() + hbox = self._create_unit_combobox( + self.add_frontline_combo, + lambda: self._on_add_unit( + self.faction.frontline_units, self.add_frontline_combo + ), + self.faction.frontline_units, + ) grid.addWidget(QLabel("Frontlines vehicles:"), counter, 0) - counter = self._add_checkboxes(self.faction.frontline_units, counter, grid) + counter = self._add_checkboxes( + self.faction.frontline_units, counter, grid, hbox + ) if len(self.faction.artillery_units) > 0: grid.addWidget(QLabel("Artillery units:"), counter, 0) counter = self._add_checkboxes(self.faction.artillery_units, counter, grid) @@ -82,6 +127,76 @@ class QFactionUnits(QScrollArea): self.content.setLayout(grid) + def _aircraft_predicate(self, ac: AircraftType): + if ( + FlightType.AEWC not in ac.task_priorities + and FlightType.REFUELING not in ac.task_priorities + ): + self.add_ac_combo.addItem(ac.variant_id, ac) + + def _awacs_predicate(self, ac: AircraftType): + if FlightType.AEWC in ac.task_priorities: + self.add_awacs_combo.addItem(ac.variant_id, ac) + + def _tanker_predicate(self, ac: AircraftType): + if FlightType.REFUELING in ac.task_priorities: + self.add_tanker_combo.addItem(ac.variant_id, ac) + + def _create_aircraft_combobox( + self, cb: QComboBox, callback: Callable, predicate: Callable + ): + for ac_dcs in sorted(AircraftType.each_dcs_type(), key=lambda x: x.id): + if ( + ac_dcs not in self.faction.country.planes + and ac_dcs not in self.faction.country.helicopters + ): + continue + for ac in AircraftType.for_dcs_type(ac_dcs): + if ac in self.faction.aircraft: + continue + predicate(ac) + add_ac = QPushButton("+") + add_ac.setStyleSheet("QPushButton{ font-weight: bold; }") + add_ac.setFixedWidth(50) + add_ac.clicked.connect(callback) + hbox = QHBoxLayout() + hbox.addWidget(cb) + hbox.addWidget(add_ac) + return hbox + + def _create_unit_combobox( + self, cb: QComboBox, callback: Callable, units: Set[GroundUnitType] + ): + for dcs_unit in sorted(GroundUnitType.each_dcs_type(), key=lambda x: x.id): + if dcs_unit not in self.faction.country.vehicles: + continue + for unit in GroundUnitType.for_dcs_type(dcs_unit): + if unit in units: + continue + cb.addItem(unit.variant_id, unit) + add_unit = QPushButton("+") + add_unit.setStyleSheet("QPushButton{ font-weight: bold; }") + add_unit.setFixedWidth(50) + add_unit.clicked.connect(callback) + hbox = QHBoxLayout() + hbox.addWidget(cb) + hbox.addWidget(add_unit) + return hbox + + def _on_add_unit(self, units: Set[UnitType], cb: QComboBox): + units.add(cb.currentData()) + if self.faction.__dict__.get("accessible_units"): + # invalidate the cached property + del self.faction.__dict__["accessible_units"] + self.updateFaction(self.faction) + + def _on_add_ac(self, aircraft: Set[AircraftType], cb: QComboBox): + aircraft.add(cb.currentData()) + if self.faction.__dict__.get("all_aircrafts"): + # invalidate the cached property + del self.faction.__dict__["all_aircrafts"] + self.updateFaction(self.faction) + def updateFaction(self, faction: Faction): self.faction = faction self.content = QWidget() diff --git a/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py b/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py index f48eaa86..8184b6bd 100644 --- a/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py +++ b/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py @@ -122,6 +122,8 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.registerField("f104_starfighter", self.f104_starfighter) self.f105_thunderchief = QtWidgets.QCheckBox() self.registerField("f105_thunderchief", self.f105_thunderchief) + self.f106_deltadart = QtWidgets.QCheckBox() + self.registerField("f106_deltadart", self.f106_deltadart) self.jas39_gripen = QtWidgets.QCheckBox() self.registerField("jas39_gripen", self.jas39_gripen) self.super_etendard = QtWidgets.QCheckBox() @@ -161,6 +163,7 @@ class GeneratorOptions(QtWidgets.QWizardPage): ("F-100 Super Sabre (v2.7.18.30765 patch 20.10.22)", self.f100_supersabre), ("F-104 Starfighter (v2.7.11.222.01)", self.f104_starfighter), ("F-105 Thunderchief (v2.7.12.23x)", self.f105_thunderchief), + ("F-106 Delta Dart (v2.9.4.101)", self.f106_deltadart), ("F-15D Baz (v1.0)", self.f15d_baz), ("F-15I Ra'am (v1.0 by IDF Mods Project)", self.f_15_idf), ("F-16I Sufa & F-16D (v3.6 by IDF Mods Project)", self.f_16_idf), @@ -234,6 +237,7 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.f100_supersabre.setChecked(s.get("f100_supersabre", False)) self.f104_starfighter.setChecked(s.get("f104_starfighter", False)) self.f105_thunderchief.setChecked(s.get("f105_thunderchief", False)) + self.f106_deltadart.setChecked(s.get("f106_deltadart", False)) self.jas39_gripen.setChecked(s.get("jas39_gripen", False)) self.super_etendard.setChecked(s.get("super_etendard", False)) self.su30_flanker_h.setChecked(s.get("su30_flanker_h", False)) diff --git a/requirements.txt b/requirements.txt index 268346e0..005bf5e3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,7 +32,7 @@ pluggy==1.5.0 pre-commit==3.7.0 pydantic==2.7.1 pydantic-settings==2.2.1 -pydcs @ git+https://github.com/dcs-retribution/pydcs@961b5e1109c416f1a168d10db52c34bede6306af +pydcs @ git+https://github.com/dcs-retribution/pydcs@805088f20263025eda61398d10383e4d73945dc7 pyinstaller==5.13.2 pyinstaller-hooks-contrib==2024.0 pyparsing==3.1.2 diff --git a/resources/campaigns/exercise_able_archer.miz b/resources/campaigns/exercise_able_archer.miz index bcebb59c..e30ae86e 100644 Binary files a/resources/campaigns/exercise_able_archer.miz and b/resources/campaigns/exercise_able_archer.miz differ diff --git a/resources/campaigns/exercise_able_archer.yaml b/resources/campaigns/exercise_able_archer.yaml index 41e114c1..62df3d3a 100644 --- a/resources/campaigns/exercise_able_archer.yaml +++ b/resources/campaigns/exercise_able_archer.yaml @@ -5,7 +5,25 @@ authors: Starfire recommended_player_faction: Blufor Late Cold War (80s) recommended_enemy_faction: Russia 1980 description: -

In 1983 during the height of the Cold War, tensions escalate to a breaking point as the Soviet Union, misinterpreting NATO's Able Archer 83 exercise as a genuine mobilisation for a surprise nuclear attack, decides to launch a pre-emptive conventional strike. On the 9th of November, Soviet forces commence a sudden and overwhelming invasion of Finland and Norway, aiming to secure strategic territories and disrupt NATO's northern flank before it can organize an effective response.

+

In 1983, during the height of the Cold War, tensions escalate to + a breaking point as the Soviet Union, misinterpreting NATO's Able + Archer 83 exercise as a genuine mobilisation for a surprise nuclear + attack, decides to launch a pre-emptive conventional strike. On the + 9th of November, Soviet forces commence a sudden invasion of Norway, + aiming to secure strategic territories and disrupt NATO's northern + flank before it can organize an effective response.

+

Simultaneously, the Soviet Union extends its offensive to include + Finland and Sweden. Although officially neutral, these nations are + perceived as potential staging grounds for NATO reinforcements and + supply lines. The Soviet high command believes that controlling + these territories will prevent NATO from using their airspace and + ports to launch counterattacks or obtain logistical support.

+

As Soviet forces push across the borders, NATO and its new allies + must swiftly mobilise to defend their territories. The battle quickly + expands into a broader conflict, with both sides aiming to gain + control of critical regions. The ultimate objective for NATO and its + allies becomes clear. They must push eastward to the Kola Peninsula + to neutralise the Soviet threat and restore stability to Northern Europe.

miz: exercise_able_archer.miz performance: 1 recommended_start_date: 1983-11-09 @@ -20,7 +38,7 @@ squadrons: secondary: any aircraft: - A-10A Thunderbolt II - size: 8 + size: 4 - primary: BARCAP secondary: any aircraft: @@ -30,11 +48,6 @@ squadrons: secondary: any aircraft: - F-15C Eagle - size: 16 - - primary: Escort - secondary: any - aircraft: - - Mirage F1CE size: 12 - primary: BAI secondary: any @@ -44,30 +57,20 @@ squadrons: - primary: Refueling aircraft: - KC-135 Stratotanker - size: 1 - - primary: Air Assault + size: 2 + - primary: Transport secondary: any aircraft: - C-130J-30 Super Hercules - C-130 - size: 4 - - primary: Transport - secondary: any - aircraft: - - CH-47D size: 2 - #Lakselv + #Banak 1: - primary: SEAD secondary: any aircraft: - F-16CM Fighting Falcon (Block 50) size: 16 - - primary: CAS - secondary: any - aircraft: - - SA 342L Gazelle - size: 2 - primary: Refueling aircraft: - KC-130 @@ -85,6 +88,16 @@ squadrons: aircraft: - MiG-21bis Fishbed-N size: 12 + - primary: BAI + secondary: any + aircraft: + - F-4E-45MC Phantom II + size: 12 + - primary: Escort + secondary: any + aircraft: + - Mirage-F1CE + size: 12 - primary: Air Assault secondary: any aircraft: @@ -97,7 +110,7 @@ squadrons: aircraft: - C-47 Dakota size: 3 - #Kiruna (14) + #Kiruna 5: - primary: DEAD secondary: air-to-ground @@ -132,18 +145,18 @@ squadrons: secondary: air-to-ground aircraft: - AV-8B Harrier II Night Attack - size: 12 + size: 16 - primary: Air Assault secondary: any aircraft: - UH-1H Iroquois - size: 4 + size: 2 - primary: Escort secondary: any aircraft: - AH-1J SeaCobra - size: 4 - #RAF Fairfield + size: 2 + #RAF Fairford Bombers from RAF Fairford: - primary: Strike secondary: any @@ -162,7 +175,7 @@ squadrons: aircraft: - Su-17M4 Fitter-K size: 6 - #Severomorsk1 + #Severomorsk-1 8: - primary: BARCAP secondary: any @@ -172,23 +185,19 @@ squadrons: - primary: Escort secondary: any aircraft: - - MiG-23ML Flogger-G + - MiG-23MLD Flogger-K size: 8 - primary: SEAD secondary: any aircraft: - MiG-27K Flogger-J2 size: 16 - #Severomorsk3 + #Severomorsk-3 6: - - primary: AEW&C - aircraft: - - A-50 - size: 1 - primary: Refueling aircraft: - IL-78M - size: 1 + size: 2 - primary: DEAD secondary: any aircraft: @@ -204,7 +213,7 @@ squadrons: aircraft: - Mi-8MTV2 Hip size: 4 - #Olenegorsk + #Olenya 9: - primary: Strike secondary: any @@ -216,10 +225,9 @@ squadrons: aircraft: - Tu-22M3 Backfire-C size: 16 - - primary: Transport - secondary: any + - primary: Refueling aircraft: - - IL-76MD + - IL-78M size: 2 #Monchegorsk 10: @@ -237,4 +245,15 @@ squadrons: secondary: any aircraft: - MiG-21bis Fishbed-N - size: 16 \ No newline at end of file + size: 16 + #Murmansk International + 12: + - primary: AEW&C + aircraft: + - A-50 + size: 1 + - primary: Transport + secondary: any + aircraft: + - IL-76MD + size: 2 \ No newline at end of file diff --git a/resources/campaigns/exercise_bright_star.yaml b/resources/campaigns/exercise_bright_star.yaml index 13229e69..bd8aaf08 100644 --- a/resources/campaigns/exercise_bright_star.yaml +++ b/resources/campaigns/exercise_bright_star.yaml @@ -150,7 +150,7 @@ squadrons: - primary: SEAD secondary: any aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II size: 20 - primary: DEAD secondary: diff --git a/resources/campaigns/grabthars_hammer.yaml b/resources/campaigns/grabthars_hammer.yaml index 6fec7492..77c2a3dd 100644 --- a/resources/campaigns/grabthars_hammer.yaml +++ b/resources/campaigns/grabthars_hammer.yaml @@ -22,10 +22,10 @@ settings: squadrons: #Mount Pleasant 2: - - primary: DEAD + - primary: BAI secondary: any aircraft: - - F-16CM Fighting Falcon (Block 50) + - F-15E Strike Eagle (Suite 4+) size: 8 - primary: CAS secondary: air-to-ground @@ -54,10 +54,10 @@ squadrons: size: 1 #San Julian 11: - - primary: BAI + - primary: DEAD secondary: any aircraft: - - F-15E Strike Eagle (Suite 4+) + - F-16CM Fighting Falcon (Block 50) size: 8 #Blue CV Blue-CV: diff --git a/resources/campaigns/operation_aegean_aegis.yaml b/resources/campaigns/operation_aegean_aegis.yaml index 7be9d056..9a04fbcd 100644 --- a/resources/campaigns/operation_aegean_aegis.yaml +++ b/resources/campaigns/operation_aegean_aegis.yaml @@ -67,7 +67,7 @@ squadrons: - primary: DEAD secondary: air-to-ground aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II size: 12 #Akrotiri 44: diff --git a/resources/campaigns/operation_frostbite.miz b/resources/campaigns/operation_frostbite.miz new file mode 100644 index 00000000..2dd2bdfd Binary files /dev/null and b/resources/campaigns/operation_frostbite.miz differ diff --git a/resources/campaigns/operation_frostbite.yaml b/resources/campaigns/operation_frostbite.yaml new file mode 100644 index 00000000..4a4d6dc1 --- /dev/null +++ b/resources/campaigns/operation_frostbite.yaml @@ -0,0 +1,260 @@ +--- +name: Kola Peninsula - Operation Frostbite (Test Build) +theater: Kola +authors: Chimiste +recommended_player_faction: Bluefor Modern +recommended_enemy_faction: Russia 2010 +description: +

The year is 2016. The world watches with bated breath as NATO's expansion eastward stokes the flames of conflict with Russia. Under the iron rule of President Nikolai Zakharov, the Kremlin perceives this encroachment as a direct threat to its national security and a relic of Cold War hostilities.

+

Finland, a neutral nation sharing a vast border with Russia, becomes the focal point of this geopolitical chess match. Its potential accession to NATO would significantly bolster the alliance's presence on Russia's doorstep, a prospect Zakharov views as intolerable.

+

In June of 2016, amidst swirling rumors and escalating tensions, whispers of secret NATO expansion talks involving Finland reach the Kremlin. Zakharov, fearing imminent encirclement, makes a decisive and ruthless move. Under the cover of darkness, Russian forces launch a swift and brutal invasion, catching the Finnish military off guard.

+

Within days, Russian armored divisions and airborne troops seize control of a significant portion of Lapland, a strategic region rich in natural resources and bordering key NATO member, Norway. The world is stunned by the brazen aggression, and the once neutral Finland finds itself thrust into the center of a new global conflict.

+miz: operation_frostbite.miz +performance: 3 +recommended_start_date: 2016-06-06 +version: "10.7" +settings: + restrict_weapons_by_date: false + hercules: false +squadrons: + #Lakselv + 1: + - primary: CAS + secondary: any + aircraft: + - A-10C Thunderbolt II (Suite 7) + - primary: SEAD + secondary: any + aircraft: + - F-16CM Fighting Falcon (Block 50) + - primary: TARCAP + secondary: any + aircraft: + - F-15C Eagle + - primary: BAI + secondary: any + aircraft: + - F/A-18C Hornet (Lot 20) + - primary: Refueling + aircraft: + - KC-135 Stratotanker + - primary: AEW&C + aircraft: + - E-2C Hawkeye + #BAS 100 + 4: + - primary: BAI + secondary: any + aircraft: + - F/A-18C Hornet (Lot 20) + - A-10C Thunderbolt II (Suite 7) + - primary: CAS + secondary: any + aircraft: + - AH-64D Apache Longbow + #Rovaniemi + 2: + - primary: BARCAP + secondary: any + aircraft: + - F/A-18C Hornet (Lot 20) + - primary: TARCAP + secondary: any + aircraft: + - F-14B Tomcat + - primary: SEAD + secondary: any + aircraft: + - F-16CM Fighting Falcon (Block 50) + #Kemi Tornio + 3: + - primary: DEAD + secondary: air-to-ground + aircraft: + - F-16CM Fighting Falcon (Block 50) + - primary: BAI + secondary: any + aircraft: + - F/A-18C Hornet (Lot 20) + + FOB Jeesio: + - primary: CAS + secondary: air-to-ground + aircraft: + - AH-64D Apache Longbow + - primary: CAS + secondary: air-to-ground + aircraft: + - AJS-37 Viggen + - primary: BAI + secondary: any + aircraft: + - F/A-18C Hornet (Lot 20) + + #Severomorsk1 + 8: + - primary: BARCAP + secondary: any + aircraft: + - MiG-29S Fulcrum-C + - primary: Escort + secondary: any + aircraft: + - MiG-29S Fulcrum-C + - primary: SEAD + secondary: any + aircraft: + - Su-33 Flanker-D + #Severomorsk3 + 6: + - primary: AEW&C + aircraft: + - A-50 + - primary: Refueling + aircraft: + - IL-76M + - primary: DEAD + secondary: any + aircraft: + - Su-34 Fullback + - primary: TARCAP + secondary: any + aircraft: + - Su-27 Flanker-B + - primary: Air Assault + secondary: any + aircraft: + - Mi-24P Hind-F + #Olenegorsk + 9: + - primary: Strike + secondary: any + aircraft: + - Tu-95MS Bear-H + - primary: CAS + secondary: any + aircraft: + - Su-25T Frogfoot + - primary: Transport + secondary: any + aircraft: + - IL-76MD + #Monchegorsk + 10: + - primary: BARCAP + secondary: any + aircraft: + - MiG-29S Fulcrum-C + - primary: Escort + secondary: any + aircraft: + - MiG-29S Fulcrum-C + - primary: BAI + secondary: any + aircraft: + - Su-25T Frogfoot + + FOB Verkhnetulomskiy: + - primary: BARCAP + secondary: any + aircraft: + - MiG-29S Fulcrum-C + - primary: CAS + secondary: any + aircraft: + - Su-25T Frogfoot + - Mi-24P Hind-F + - primary: DEAD + secondary: any + aircraft: + - Su-34 Fullback + + FOB Nikel: + - primary: SEAD + secondary: any + aircraft: + - Su-24M Fencer-D + - primary: Escort + secondary: any + aircraft: + - MiG-29S Fulcrum-C + - primary: CAS + secondary: any + aircraft: + - Mi-24P Hind-F + + FOB Neiden: + - primary: Air Assault + secondary: any + aircraft: + - Mi-24P Hind-F + - primary: BARCAP + secondary: any + aircraft: + - Su-27 Flanker-B + - primary: CAS + secondary: any + aircraft: + - Su-30 Flanker-C + + FOB Kevajarvi: + - primary: TARCAP + secondary: any + aircraft: + - MiG-29S Fulcrum-C + - primary: SEAD + secondary: any + aircraft: + - Su-24M Fencer-D + - primary: Escort + secondary: any + aircraft: + - Su-27 Flanker-B + - primary: CAS + secondary: any + aircraft: + - Mi-24P Hind-F + + FOB Karigasniemi: + - primary: CAS + secondary: any + aircraft: + - Mi-24P Hind-F + - primary: BAI + secondary: any + aircraft: + - Su-25T Frogfoot + - primary: TARCAP + secondary: any + aircraft: + - Su-33 Flanker-D + + FOB Lokka: + - primary: Air Assault + secondary: any + aircraft: + - Mi-24P Hind-F + - primary: BARCAP + secondary: any + aircraft: + - Su-27 Flanker-B + - primary: CAS + secondary: any + aircraft: + - Su-30 Flanker-C + + FOB Zasheyek: + - primary: SEAD + secondary: any + aircraft: + - Su-24M Fencer-D + - primary: CAS + secondary: any + aircraft: + - Mi-24P Hind-F + - primary: Escort + secondary: any + aircraft: + - Su-27 Flanker-B + + diff --git a/resources/campaigns/operation_gazelle.yaml b/resources/campaigns/operation_gazelle.yaml index 7299763b..045b2635 100644 --- a/resources/campaigns/operation_gazelle.yaml +++ b/resources/campaigns/operation_gazelle.yaml @@ -37,12 +37,12 @@ squadrons: - primary: SEAD secondary: any aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II size: 20 - primary: Escort secondary: any aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II size: 20 - primary: AEW&C aircraft: diff --git a/resources/campaigns/operation_noisy_cricket.yaml b/resources/campaigns/operation_noisy_cricket.yaml index d4954a0e..93076ab1 100644 --- a/resources/campaigns/operation_noisy_cricket.yaml +++ b/resources/campaigns/operation_noisy_cricket.yaml @@ -98,7 +98,7 @@ squadrons: - primary: SEAD secondary: air-to-ground aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II size: 20 - primary: TARCAP secondary: air-to-air diff --git a/resources/campaigns/operation_peace_spring.yaml b/resources/campaigns/operation_peace_spring.yaml index f56205c2..66d7b331 100644 --- a/resources/campaigns/operation_peace_spring.yaml +++ b/resources/campaigns/operation_peace_spring.yaml @@ -95,7 +95,7 @@ squadrons: - primary: Strike secondary: air-to-ground aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II - H-6J Badger size: 16 - primary: BAI @@ -121,7 +121,7 @@ squadrons: - primary: Escort secondary: air-to-air aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II - Mirage-F1EQ size: 16 # Abu Al Duhur @@ -129,7 +129,7 @@ squadrons: - primary: Fighter sweep secondary: air-to-air aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II - MiG-23ML Flogger-G size: 8 # Gaziantep diff --git a/resources/campaigns/operation_velvet_thunder.yaml b/resources/campaigns/operation_velvet_thunder.yaml index cec55b58..8a4cd9c1 100644 --- a/resources/campaigns/operation_velvet_thunder.yaml +++ b/resources/campaigns/operation_velvet_thunder.yaml @@ -41,6 +41,11 @@ squadrons: - OV-10A Bronco size: 8 - primary: SEAD + secondary: any + aircraft: + - F-4E-45MC Phantom II + size: 8 + - primary: DEAD secondary: any aircraft: - F-4E Phantom II diff --git a/resources/customized_payloads/A-4E-C.lua b/resources/customized_payloads/A-4E-C.lua index 45397376..39a8bc90 100644 --- a/resources/customized_payloads/A-4E-C.lua +++ b/resources/customized_payloads/A-4E-C.lua @@ -104,19 +104,19 @@ local unitPayloads = { ["name"] = "SEAD", ["pylons"] = { [1] = { - ["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}", + ["CLSID"] = "{AGM_45B}", ["num"] = 4, }, [2] = { - ["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}", + ["CLSID"] = "{AGM_45B}", ["num"] = 5, }, [3] = { - ["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}", + ["CLSID"] = "{AGM_45B}", ["num"] = 2, }, [4] = { - ["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}", + ["CLSID"] = "{AGM_45B}", ["num"] = 1, }, [5] = { @@ -132,19 +132,19 @@ local unitPayloads = { ["name"] = "ANTISHIP", ["pylons"] = { [1] = { - ["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}", + ["CLSID"] = "{AGM_45B}", ["num"] = 5, }, [2] = { - ["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}", + ["CLSID"] = "{AGM_45B}", ["num"] = 4, }, [3] = { - ["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}", + ["CLSID"] = "{AGM_45B}", ["num"] = 2, }, [4] = { - ["CLSID"] = "{3E6B632D-65EB-44D2-9501-1C2D04515404}", + ["CLSID"] = "{AGM_45B}", ["num"] = 1, }, [5] = { diff --git a/resources/customized_payloads/F-4E-45MC.lua b/resources/customized_payloads/F-4E-45MC.lua new file mode 100644 index 00000000..23256b31 --- /dev/null +++ b/resources/customized_payloads/F-4E-45MC.lua @@ -0,0 +1,1031 @@ +local unitPayloads = { + ["name"] = "F-4E-45MC", + ["payloads"] = { + [1] = { + ["name"] = "Retribution Anti-ship", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}", + ["num"] = 13, + }, + [3] = { + ["CLSID"] = "{C40A1E3A-DD05-40D9-85A4-217729E37FAE}", + ["num"] = 11, + }, + [4] = { + ["CLSID"] = "", + ["num"] = 10, + }, + [5] = { + ["CLSID"] = "", + ["num"] = 12, + }, + [6] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + [7] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [8] = { + ["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}", + ["num"] = 6, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{C40A1E3A-DD05-40D9-85A4-217729E37FAE}", + ["num"] = 3, + }, + [11] = { + ["CLSID"] = "", + ["num"] = 2, + }, + [12] = { + ["CLSID"] = "", + ["num"] = 4, + }, + [13] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL}", + ["num"] = 1, + }, + }, + ["tasks"] = { + }, + }, + [2] = { + ["name"] = "Retribution BARCAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}", + ["num"] = 13, + }, + [3] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 12, + }, + [4] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 10, + }, + [5] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL}", + ["num"] = 1, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + }, + ["tasks"] = { + }, + }, + [3] = { + ["displayName"] = "Retribution TARCAP", + ["name"] = "Retribution TARCAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}", + ["num"] = 13, + }, + [3] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 12, + }, + [4] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 10, + }, + [5] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL}", + ["num"] = 1, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + }, + ["tasks"] = { + }, + }, + [4] = { + ["displayName"] = "Retribution Escort", + ["name"] = "Retribution Escort", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}", + ["num"] = 13, + }, + [3] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 12, + }, + [4] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 10, + }, + [5] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{AIM-9M}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL}", + ["num"] = 1, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + }, + ["tasks"] = { + }, + }, + [5] = { + ["displayName"] = "Retribution SEAD", + ["name"] = "Retribution SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{LAU_34_AGM_45A}", + ["num"] = 13, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 12, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [4] = { + ["CLSID"] = "", + ["num"] = 10, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [5] = { + ["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "", + ["num"] = 2, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [7] = { + ["CLSID"] = "", + ["num"] = 4, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [8] = { + ["CLSID"] = "{LAU_34_AGM_45A}", + ["num"] = 1, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + [12] = { + ["CLSID"] = "{F4_SARGENT_TANK_600_GAL}", + ["num"] = 7, + }, + [13] = { + ["CLSID"] = "{LAU_34_AGM_45A}", + ["num"] = 11, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [14] = { + ["CLSID"] = "{LAU_34_AGM_45A}", + ["num"] = 3, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + }, + ["tasks"] = { + }, + }, + [6] = { + ["displayName"] = "Retribution DEAD", + ["name"] = "Retribution DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{AGM_12B}", + ["num"] = 13, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 12, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [4] = { + ["CLSID"] = "", + ["num"] = 10, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [5] = { + ["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "", + ["num"] = 2, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [7] = { + ["CLSID"] = "", + ["num"] = 4, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [8] = { + ["CLSID"] = "{AGM_12B}", + ["num"] = 1, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + [12] = { + ["CLSID"] = "{F4_SARGENT_TANK_600_GAL}", + ["num"] = 7, + }, + [13] = { + ["CLSID"] = "{AGM_12B}", + ["num"] = 11, + }, + [14] = { + ["CLSID"] = "{AGM_12B}", + ["num"] = 3, + }, + }, + ["tasks"] = { + }, + }, + [7] = { + ["displayName"] = "Retribution SEAD Escort", + ["name"] = "Retribution SEAD Escort", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{LAU_34_AGM_45A}", + ["num"] = 13, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 12, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [4] = { + ["CLSID"] = "", + ["num"] = 10, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [5] = { + ["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "", + ["num"] = 2, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [7] = { + ["CLSID"] = "", + ["num"] = 4, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [8] = { + ["CLSID"] = "{LAU_34_AGM_45A}", + ["num"] = 1, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + [12] = { + ["CLSID"] = "{F4_SARGENT_TANK_600_GAL}", + ["num"] = 7, + }, + [13] = { + ["CLSID"] = "{AGM_12B}", + ["num"] = 11, + }, + [14] = { + ["CLSID"] = "{AGM_12B}", + ["num"] = 3, + }, + }, + ["tasks"] = { + }, + }, + [8] = { + ["displayName"] = "Retribution BAI", + ["name"] = "Retribution BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{AGM_62_I}", + ["num"] = 13, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 12, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [4] = { + ["CLSID"] = "", + ["num"] = 10, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [5] = { + ["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "", + ["num"] = 2, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [7] = { + ["CLSID"] = "", + ["num"] = 4, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [8] = { + ["CLSID"] = "{AGM_62_I}", + ["num"] = 1, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + [12] = { + ["CLSID"] = "{F4_SARGENT_TANK_600_GAL}", + ["num"] = 7, + }, + [13] = { + ["CLSID"] = "{AGM_62_I}", + ["num"] = 11, + }, + [14] = { + ["CLSID"] = "{AGM_62_I}", + ["num"] = 3, + }, + }, + ["tasks"] = { + }, + }, + [9] = { + ["displayName"] = "Retribution CAS", + ["name"] = "Retribution CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{AGM_62_I}", + ["num"] = 13, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 12, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [4] = { + ["CLSID"] = "", + ["num"] = 10, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [5] = { + ["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "", + ["num"] = 2, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [7] = { + ["CLSID"] = "", + ["num"] = 4, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [8] = { + ["CLSID"] = "{AGM_62_I}", + ["num"] = 1, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + [12] = { + ["CLSID"] = "{F4_SARGENT_TANK_600_GAL}", + ["num"] = 7, + }, + [13] = { + ["CLSID"] = "{AGM_62_I}", + ["num"] = 11, + }, + [14] = { + ["CLSID"] = "{AGM_62_I}", + ["num"] = 3, + }, + }, + ["tasks"] = { + }, + }, + [10] = { + ["displayName"] = "Retribution Strike", + ["name"] = "Retribution Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{Mk_84AIR_GP}", + ["num"] = 13, + ["settings"] = { + ["NFP_fuze_type_nose"] = "M904E4", + ["NFP_fuze_type_tail"] = "M905", + ["arm_delay_ctrl_M904E4"] = 2, + ["arm_delay_ctrl_M905"] = 4, + ["function_delay_ctrl_M904E4"] = 0, + ["function_delay_ctrl_M905"] = 0, + }, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 12, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [4] = { + ["CLSID"] = "", + ["num"] = 10, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [5] = { + ["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "", + ["num"] = 2, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [7] = { + ["CLSID"] = "", + ["num"] = 4, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [8] = { + ["CLSID"] = "{Mk_84AIR_GP}", + ["num"] = 1, + ["settings"] = { + ["NFP_fuze_type_nose"] = "M904E4", + ["NFP_fuze_type_tail"] = "M905", + ["arm_delay_ctrl_M904E4"] = 2, + ["arm_delay_ctrl_M905"] = 4, + ["function_delay_ctrl_M904E4"] = 0, + ["function_delay_ctrl_M905"] = 0, + }, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + [12] = { + ["CLSID"] = "{F4_SARGENT_TANK_600_GAL}", + ["num"] = 7, + }, + [13] = { + ["CLSID"] = "{Mk_84AIR_GP}", + ["num"] = 11, + ["settings"] = { + ["NFP_fuze_type_nose"] = "M904E4", + ["NFP_fuze_type_tail"] = "M905", + ["arm_delay_ctrl_M904E4"] = 2, + ["arm_delay_ctrl_M905"] = 4, + ["function_delay_ctrl_M904E4"] = 0, + ["function_delay_ctrl_M905"] = 0, + }, + }, + [14] = { + ["CLSID"] = "{Mk_84AIR_GP}", + ["num"] = 3, + ["settings"] = { + ["NFP_fuze_type_nose"] = "M904E4", + ["NFP_fuze_type_tail"] = "M905", + ["arm_delay_ctrl_M904E4"] = 2, + ["arm_delay_ctrl_M905"] = 4, + ["function_delay_ctrl_M904E4"] = 0, + ["function_delay_ctrl_M905"] = 0, + }, + }, + }, + ["tasks"] = { + }, + }, + [11] = { + ["displayName"] = "Retribution OCA/Aircraft", + ["name"] = "Retribution OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{HB_F4E_MK-82_Snakeye_6x}", + ["num"] = 13, + ["settings"] = { + ["NFP_VIS_DrawArgNo_57"] = 0, + ["NFP_fuze_type_nose"] = "M904E4", + ["NFP_fuze_type_tail"] = "M905", + ["arm_delay_ctrl_M904E4"] = 2, + ["arm_delay_ctrl_M905"] = 4, + ["function_delay_ctrl_M904E4"] = 0, + ["function_delay_ctrl_M905"] = 0, + }, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 12, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [4] = { + ["CLSID"] = "", + ["num"] = 10, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [5] = { + ["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "", + ["num"] = 2, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [7] = { + ["CLSID"] = "", + ["num"] = 4, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [8] = { + ["CLSID"] = "{HB_F4E_MK-82_Snakeye_6x}", + ["num"] = 1, + ["settings"] = { + ["NFP_VIS_DrawArgNo_57"] = 0, + ["NFP_fuze_type_nose"] = "M904E4", + ["NFP_fuze_type_tail"] = "M905", + ["arm_delay_ctrl_M904E4"] = 2, + ["arm_delay_ctrl_M905"] = 4, + ["function_delay_ctrl_M904E4"] = 0, + ["function_delay_ctrl_M905"] = 0, + }, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + [12] = { + ["CLSID"] = "{F4_SARGENT_TANK_600_GAL}", + ["num"] = 7, + }, + [13] = { + ["CLSID"] = "{HB_F4E_MK-82_Snakeye_3x}", + ["num"] = 11, + ["settings"] = { + ["NFP_VIS_DrawArgNo_57"] = 0, + ["NFP_fuze_type_nose"] = "M904E4", + ["NFP_fuze_type_tail"] = "M905", + ["arm_delay_ctrl_M904E4"] = 2, + ["arm_delay_ctrl_M905"] = 4, + ["function_delay_ctrl_M904E4"] = 0, + ["function_delay_ctrl_M905"] = 0, + }, + }, + [14] = { + ["CLSID"] = "{HB_F4E_MK-82_Snakeye_3x}", + ["num"] = 3, + ["settings"] = { + ["NFP_VIS_DrawArgNo_57"] = 0, + ["NFP_fuze_type_nose"] = "M904E4", + ["NFP_fuze_type_tail"] = "M905", + ["arm_delay_ctrl_M904E4"] = 2, + ["arm_delay_ctrl_M905"] = 4, + ["function_delay_ctrl_M904E4"] = 0, + ["function_delay_ctrl_M905"] = 0, + }, + }, + }, + ["tasks"] = { + }, + }, + [12] = { + ["displayName"] = "Retribution OCA/Runway", + ["name"] = "Retribution OCA/Runway", + ["pylons"] = { + [1] = { + ["CLSID"] = "{HB_ALE_40_30_60}", + ["num"] = 14, + }, + [2] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL_R}", + ["num"] = 13, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 12, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [4] = { + ["CLSID"] = "", + ["num"] = 10, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [5] = { + ["CLSID"] = "{HB_ALQ-131_ON_ADAPTER_IN_AERO7}", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "", + ["num"] = 2, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [7] = { + ["CLSID"] = "", + ["num"] = 4, + ["settings"] = { + ["EAS_bypass_ctrl"] = 1, + ["NFP_rfgu_type"] = 1, + ["rf_lower_limit_ctrl_Mk22Mod2"] = 4800000000, + ["rf_upper_limit_ctrl_Mk22Mod2"] = 5200000000, + }, + }, + [8] = { + ["CLSID"] = "{F4_SARGENT_TANK_370_GAL}", + ["num"] = 1, + }, + [9] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 5, + }, + [10] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 8, + }, + [11] = { + ["CLSID"] = "{HB_F4E_AIM-7M}", + ["num"] = 9, + }, + [12] = { + ["CLSID"] = "{HB_F4E_BLU-107B_6x}", + ["num"] = 7, + }, + [13] = { + ["CLSID"] = "{HB_F4E_BLU-107B_3x}", + ["num"] = 11, + }, + [14] = { + ["CLSID"] = "{HB_F4E_BLU-107B_3x}", + ["num"] = 3, + }, + }, + ["tasks"] = { + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "F-4E-45MC", +} +return unitPayloads diff --git a/resources/customized_payloads/VSN_F106A.lua b/resources/customized_payloads/VSN_F106A.lua new file mode 100644 index 00000000..00f3d16b --- /dev/null +++ b/resources/customized_payloads/VSN_F106A.lua @@ -0,0 +1,45 @@ +local unitPayloads = { + ["name"] = "VSN_F106A", + ["payloads"] = { + [1] = { + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 8, + }, + [2] = { + ["CLSID"] = "{VSN_F106R_PTB}", + ["num"] = 7, + }, + [3] = { + ["CLSID"] = "{VSN_F106L_PTB}", + ["num"] = 1, + }, + [4] = { + ["CLSID"] = "{Hughes AIM-4G}", + ["num"] = 3, + }, + [5] = { + ["CLSID"] = "{Hughes AIM-4G}", + ["num"] = 5, + }, + [6] = { + ["CLSID"] = "{Hughes AIM-4F}", + ["num"] = 6, + }, + [7] = { + ["CLSID"] = "{Hughes AIM-4F}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "VSN_F106A", +} +return unitPayloads diff --git a/resources/customized_payloads/VSN_F106B.lua b/resources/customized_payloads/VSN_F106B.lua new file mode 100644 index 00000000..4f41ae51 --- /dev/null +++ b/resources/customized_payloads/VSN_F106B.lua @@ -0,0 +1,45 @@ +local unitPayloads = { + ["name"] = "VSN_F106B", + ["payloads"] = { + [1] = { + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{44EE8698-89F9-48EE-AF36-5FD31896A82F}", + ["num"] = 8, + }, + [2] = { + ["CLSID"] = "{VSN_F106R_PTB}", + ["num"] = 7, + }, + [3] = { + ["CLSID"] = "{VSN_F106L_PTB}", + ["num"] = 1, + }, + [4] = { + ["CLSID"] = "{Hughes AIM-4F}", + ["num"] = 6, + }, + [5] = { + ["CLSID"] = "{Hughes AIM-4G}", + ["num"] = 5, + }, + [6] = { + ["CLSID"] = "{Hughes AIM-4G}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{Hughes AIM-4F}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "VSN_F106B", +} +return unitPayloads diff --git a/resources/factions/Kutaisi_to_Vaziani_red.json b/resources/factions/Kutaisi_to_Vaziani_red.json index 4c4f432a..5a54000a 100644 --- a/resources/factions/Kutaisi_to_Vaziani_red.json +++ b/resources/factions/Kutaisi_to_Vaziani_red.json @@ -24,6 +24,7 @@ "Su-25 Frogfoot", "Su-25T Frogfoot", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "Mirage-F1CE", "Tu-142 Bear-F", diff --git a/resources/factions/NATO_Desert_Storm.json b/resources/factions/NATO_Desert_Storm.json index 942cf542..825f8145 100644 --- a/resources/factions/NATO_Desert_Storm.json +++ b/resources/factions/NATO_Desert_Storm.json @@ -25,6 +25,7 @@ "F-16D Fighting Falcon (Block 50+)", "F-16D Fighting Falcon (Block 50)", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F/A-18C Hornet (Lot 20)", "Mirage 2000C", "OH-58D Kiowa Warrior", diff --git a/resources/factions/USA 1970 Vietnam War.json b/resources/factions/USA 1970 Vietnam War.json index b1a243fa..ad949c55 100644 --- a/resources/factions/USA 1970 Vietnam War.json +++ b/resources/factions/USA 1970 Vietnam War.json @@ -17,6 +17,7 @@ "F-4B Phantom II", "F-4C Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "F-100 Super Sabre", "F-104C Starfighter", diff --git a/resources/factions/USA 1971 Vietnam War.json b/resources/factions/USA 1971 Vietnam War.json index b8be529c..a6fb177c 100644 --- a/resources/factions/USA 1971 Vietnam War.json +++ b/resources/factions/USA 1971 Vietnam War.json @@ -17,6 +17,7 @@ "F-4B Phantom II", "F-4C Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "F-100 Super Sabre", "F-104C Starfighter", diff --git a/resources/factions/US_UK_Falklands.json b/resources/factions/US_UK_Falklands.json index c065947d..acf360e5 100644 --- a/resources/factions/US_UK_Falklands.json +++ b/resources/factions/US_UK_Falklands.json @@ -15,6 +15,7 @@ "SA 342M Gazelle", "Gazelle AH.1", "Phantom F.3", + "Phantom FGR.2", "Tornado GR4", "F-15E Strike Eagle (Suite 4+)", "F-16CM Fighting Falcon (Block 50)", diff --git a/resources/factions/bluefor_coldwar.json b/resources/factions/bluefor_coldwar.json index 4f1756fc..8dc68acd 100644 --- a/resources/factions/bluefor_coldwar.json +++ b/resources/factions/bluefor_coldwar.json @@ -16,6 +16,7 @@ "F-14A Tomcat (Block 135-GR Late)", "F-14B Tomcat", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "Mirage-F1B", "Mirage-F1BE", diff --git a/resources/factions/blufor_late_coldwar.json b/resources/factions/blufor_late_coldwar.json index f0f8da8d..9d3f4ef7 100644 --- a/resources/factions/blufor_late_coldwar.json +++ b/resources/factions/blufor_late_coldwar.json @@ -26,6 +26,7 @@ "F-16CM Fighting Falcon (Block 50)", "F/A-18C Hornet (Lot 20)", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "Mi-8MTV2 Hip", "MiG-21bis Fishbed-N", diff --git a/resources/factions/egypt_2000.json b/resources/factions/egypt_2000.json index ce91a01f..d8f64ac7 100644 --- a/resources/factions/egypt_2000.json +++ b/resources/factions/egypt_2000.json @@ -11,6 +11,7 @@ "MiG-21bis Fishbed-N", "Mirage 2000C", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-16CM Fighting Falcon (Block 50)", "IL-76MD", "C-130", diff --git a/resources/factions/egypt_2010s.json b/resources/factions/egypt_2010s.json index f3a3ce39..ff6a668b 100644 --- a/resources/factions/egypt_2010s.json +++ b/resources/factions/egypt_2010s.json @@ -15,6 +15,7 @@ "Mirage 2000-5", "SA 342M Gazelle", "F-4E Phantom II", + "F-4E-45MC Phantom II", "Su-25 Frogfoot", "F-16CM Fighting Falcon (Block 50)" ], diff --git a/resources/factions/germany_1990.json b/resources/factions/germany_1990.json index d43bfdc6..cf016a59 100644 --- a/resources/factions/germany_1990.json +++ b/resources/factions/germany_1990.json @@ -9,6 +9,7 @@ "aircrafts": [ "C-130", "F-4F Phantom II", + "F-4E-45MC Phantom II", "MiG-29G Fulcrum-A", "SA 342L Gazelle", "SA 342M Gazelle", diff --git a/resources/factions/greece_2005.json b/resources/factions/greece_2005.json index 1702af66..3b5d09e4 100644 --- a/resources/factions/greece_2005.json +++ b/resources/factions/greece_2005.json @@ -14,6 +14,7 @@ "F-16D Fighting Falcon (Block 52+)", "F-16D Fighting Falcon (Block 52)", "F-4E Phantom II", + "F-4E-45MC Phantom II", "Mirage 2000-5", "Mirage 2000C", "UH-1H Iroquois" diff --git a/resources/factions/iran_1988.json b/resources/factions/iran_1988.json index 131d46f7..f900c8ed 100644 --- a/resources/factions/iran_1988.json +++ b/resources/factions/iran_1988.json @@ -12,6 +12,7 @@ "F-14A Tomcat (Block 135-GR Late)", "F-4C Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "MiG-21bis Fishbed-N" ], diff --git a/resources/factions/iran_2015.json b/resources/factions/iran_2015.json index d04c888f..f22d86c9 100644 --- a/resources/factions/iran_2015.json +++ b/resources/factions/iran_2015.json @@ -10,6 +10,7 @@ "F-14A Tomcat (AI)", "F-14A Tomcat (Block 135-GR Late)", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "IL-76MD", "Mi-24V Hind-E", diff --git a/resources/factions/israel_1973.json b/resources/factions/israel_1973.json index 68ee64c2..dcd79b9d 100644 --- a/resources/factions/israel_1973.json +++ b/resources/factions/israel_1973.json @@ -9,6 +9,7 @@ "aircrafts": [ "A-4E Skyhawk", "F-4E Phantom II", + "F-4E-45MC Phantom II", "UH-1H Iroquois", "C-130", "C-130J-30 Super Hercules" diff --git a/resources/factions/israel_1982.json b/resources/factions/israel_1982.json index c84231a9..e14f438a 100644 --- a/resources/factions/israel_1982.json +++ b/resources/factions/israel_1982.json @@ -13,6 +13,7 @@ "F-16A", "F-16CM Fighting Falcon (Block 50)", "F-4E Phantom II", + "F-4E-45MC Phantom II", "UH-1H Iroquois" ], "awacs": [ diff --git a/resources/factions/israel_2000.json b/resources/factions/israel_2000.json index fdf1edfb..b4541995 100644 --- a/resources/factions/israel_2000.json +++ b/resources/factions/israel_2000.json @@ -21,6 +21,7 @@ "F-16D Barak (Block 40)", "F-16I Sufa", "F-4E Phantom II", + "F-4E-45MC Phantom II", "UH-1H Iroquois", "UH-60L" ], diff --git a/resources/factions/japan_2005.json b/resources/factions/japan_2005.json index 33fefb66..3875b5d6 100644 --- a/resources/factions/japan_2005.json +++ b/resources/factions/japan_2005.json @@ -14,6 +14,7 @@ "C-130J-30 Super Hercules", "F-15J Eagle", "F-2A", + "F-4EJ Phantom II", "F-4EJ Kai Phantom II" ], "awacs": [ diff --git a/resources/factions/russia_1980.json b/resources/factions/russia_1980.json index 17e86f4b..526b232b 100644 --- a/resources/factions/russia_1980.json +++ b/resources/factions/russia_1980.json @@ -7,6 +7,7 @@ "ru_RU" ], "aircrafts": [ + "IL-76MD", "Mi-24V Hind-E", "Mi-24P Hind-F", "Mi-8MTV2 Hip", diff --git a/resources/factions/spain_1990.json b/resources/factions/spain_1990.json index cbde2a91..b4738986 100644 --- a/resources/factions/spain_1990.json +++ b/resources/factions/spain_1990.json @@ -11,6 +11,7 @@ "C-130", "C-101CC Aviojet", "F-4C Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "Mirage-F1BE", "Mirage-F1CE", diff --git a/resources/factions/turkey_2005.json b/resources/factions/turkey_2005.json index 0958658c..749fb643 100644 --- a/resources/factions/turkey_2005.json +++ b/resources/factions/turkey_2005.json @@ -14,6 +14,7 @@ "F-16D Fighting Falcon (Block 50+)", "F-16D Fighting Falcon (Block 50)", "F-4E Phantom II", + "F-4E-45MC Phantom II", "OH-58D Kiowa Warrior", "UH-1H Iroquois", "UH-60A", diff --git a/resources/factions/uk_1990.json b/resources/factions/uk_1990.json index 2758ddab..4c7154e7 100644 --- a/resources/factions/uk_1990.json +++ b/resources/factions/uk_1990.json @@ -13,6 +13,7 @@ "C-130J-30 Super Hercules", "Gazelle AH.1", "Phantom FG.1", + "Phantom FGR.2", "Phantom F.3", "Tornado GR4" ], diff --git a/resources/factions/usa_1960.json b/resources/factions/usa_1960.json index 5904938c..4ea8002b 100644 --- a/resources/factions/usa_1960.json +++ b/resources/factions/usa_1960.json @@ -13,6 +13,8 @@ "F-86F Sabre", "F-100 Super Sabre", "F-104C Starfighter", + "F-106A Delta Dart", + "F-106B Delta Dart", "P-51D-25-NA Mustang", "P-51D-30-NA Mustang", "F-105D Thunderchief", diff --git a/resources/factions/usa_1965.json b/resources/factions/usa_1965.json index 6738d559..57cb6d7c 100644 --- a/resources/factions/usa_1965.json +++ b/resources/factions/usa_1965.json @@ -14,11 +14,15 @@ "A-6A Intruder", "F-4B Phantom II", "F-4C Phantom II", + "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "F-100 Super Sabre", "F-104C Starfighter", "F-105D Thunderchief", "F-105G Thunderchief", + "F-106A Delta Dart", + "F-106B Delta Dart", "UH-1H Iroquois" ], "awacs": [ diff --git a/resources/factions/usa_1970.json b/resources/factions/usa_1970.json index 8b8f3275..c5569c00 100644 --- a/resources/factions/usa_1970.json +++ b/resources/factions/usa_1970.json @@ -11,6 +11,7 @@ "F-4C Phantom II", "F-4B Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "A-4E Skyhawk", "OV-10A Bronco", diff --git a/resources/factions/usa_1975.json b/resources/factions/usa_1975.json index d3ace208..ef601ae8 100644 --- a/resources/factions/usa_1975.json +++ b/resources/factions/usa_1975.json @@ -18,9 +18,12 @@ "F-4B Phantom II", "F-4C Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-5E Tiger II", "F-100 Super Sabre", "F-105G Thunderchief", + "F-106A Delta Dart", + "F-106B Delta Dart", "S-3B Viking", "OV-10A Bronco", "UH-1H Iroquois" diff --git a/resources/factions/usn_1985.json b/resources/factions/usn_1985.json index 85a29c9f..7b53c2c0 100644 --- a/resources/factions/usn_1985.json +++ b/resources/factions/usn_1985.json @@ -16,6 +16,7 @@ "F-14B Tomcat", "F-4B Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "S-3B Viking", "SH-60B Seahawk", "UH-1H Iroquois" diff --git a/resources/factions/wrl_taskforceblue.json b/resources/factions/wrl_taskforceblue.json index dc69aa2b..a5569754 100644 --- a/resources/factions/wrl_taskforceblue.json +++ b/resources/factions/wrl_taskforceblue.json @@ -24,6 +24,7 @@ "CH-53E", "F-4B Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-84G Thunderjet", "F-86F Sabre", "F-5E Tiger II", diff --git a/resources/factions/wrl_taskforceinsurgent.json b/resources/factions/wrl_taskforceinsurgent.json index ef7e1c1f..fbe570d5 100644 --- a/resources/factions/wrl_taskforceinsurgent.json +++ b/resources/factions/wrl_taskforceinsurgent.json @@ -24,6 +24,7 @@ "CH-53E", "F-4B Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-84G Thunderjet", "F-86F Sabre", "F-5E Tiger II", diff --git a/resources/factions/wrl_taskforcemixed.json b/resources/factions/wrl_taskforcemixed.json index f1b34c21..5e3013ce 100644 --- a/resources/factions/wrl_taskforcemixed.json +++ b/resources/factions/wrl_taskforcemixed.json @@ -24,6 +24,7 @@ "CH-53E", "F-4B Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-84G Thunderjet", "F-86F Sabre", "F-5E Tiger II", diff --git a/resources/factions/wrl_taskforcered.json b/resources/factions/wrl_taskforcered.json index 5864a835..dcffc88c 100644 --- a/resources/factions/wrl_taskforcered.json +++ b/resources/factions/wrl_taskforcered.json @@ -24,6 +24,7 @@ "CH-53E", "F-4B Phantom II", "F-4E Phantom II", + "F-4E-45MC Phantom II", "F-84G Thunderjet", "F-86F Sabre", "F-5E Tiger II", diff --git a/resources/plugins/splashdamage2/Splash_Damage_2_0.lua b/resources/plugins/splashdamage2/Splash_Damage_2_0.lua index f44f26d0..894691d2 100644 --- a/resources/plugins/splashdamage2/Splash_Damage_2_0.lua +++ b/resources/plugins/splashdamage2/Splash_Damage_2_0.lua @@ -108,6 +108,7 @@ explTable = { ["MK_82SNAKEYE"]= 118, -- ["GBU_10"] = 582, ["GBU_12"] = 118, -- + ["GBU_15_V_31_B"] = 910, -- ["GBU_16"] = 274, ["KAB_1500Kr"] = 675, -- ["KAB_500Kr"] = 213, @@ -139,7 +140,13 @@ explTable = { ["RB75"] = 57, ["RB75B"] = 57, ["RB75T"] = 136, + ["AGM_12A"] = 110, + ["AGM_12B"] = 110, + ["AGM_12C"] = 440, ["AGM_45A"] = 68, + ["AGM_45B"] = 68, + ["AGM_65A"] = 57, + ["AGM_65B"] = 57, ["AGM_65D"] = 57, ["AGM_65E"] = 136, ["AGM_65F"] = 136, @@ -147,6 +154,8 @@ explTable = { ["AGM_65H"] = 57, ["AGM_65K"] = 136, ["AGM_65L"] = 136, + ["AGM_78A"] = 97, + ["AGM_78B"] = 97, ["AGM_84A"] = 221, ["AGM_84D"] = 221, ["AGM_84S"] = 221, @@ -269,6 +278,9 @@ explTable = { --["BLU-97/B"] = 10, --["BLU-97B"] = 10, --["MK118"] = 8, + ["HB_F4E_AGM_12C"] = 440, + ["HB_F4E_GBU_8_HOBOS"] = 429, + ["HB_F4E_GBU15V1"] = 910, } clusterDamage = { diff --git a/resources/squadrons/F-4E-45MC/EAF 222-FG-GG.yaml b/resources/squadrons/F-4E-45MC/EAF 222-FG-GG.yaml new file mode 100644 index 00000000..b63bc8f8 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/EAF 222-FG-GG.yaml @@ -0,0 +1,22 @@ +--- +name: EAF 222nd TFB +nickname: Pharaoh's Ghosts +country: Egypt +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: EAF-60366_Ghost +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/EAF 222-FG-SEA.yaml b/resources/squadrons/F-4E-45MC/EAF 222-FG-SEA.yaml new file mode 100644 index 00000000..746eb697 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/EAF 222-FG-SEA.yaml @@ -0,0 +1,22 @@ +--- +name: EAF 222nd TFB SEA +nickname: Pharaoh's Ghosts +country: Egypt +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: EAF-70373_SEAW +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/GAF JG-72.yaml b/resources/squadrons/F-4E-45MC/GAF JG-72.yaml new file mode 100644 index 00000000..29f43e1e --- /dev/null +++ b/resources/squadrons/F-4E-45MC/GAF JG-72.yaml @@ -0,0 +1,22 @@ +--- +name: GAF JG 72 +nickname: Westphalen +country: Germany +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: 37+24_N81B_JG72 +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/GAF JG-74.yaml b/resources/squadrons/F-4E-45MC/GAF JG-74.yaml new file mode 100644 index 00000000..02b8dc96 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/GAF JG-74.yaml @@ -0,0 +1,22 @@ +--- +name: GAF JG 74 +nickname: Moelders +country: Germany +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: 37+36_N72_JG74 +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/HAF 338-FS.yaml b/resources/squadrons/F-4E-45MC/HAF 338-FS.yaml new file mode 100644 index 00000000..91498773 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/HAF 338-FS.yaml @@ -0,0 +1,22 @@ +--- +name: HAF 338rd FS +nickname: Ares +country: Greece +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: HAF-01507_AG +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/IAF 119-FS.yaml b/resources/squadrons/F-4E-45MC/IAF 119-FS.yaml new file mode 100644 index 00000000..de20736b --- /dev/null +++ b/resources/squadrons/F-4E-45MC/IAF 119-FS.yaml @@ -0,0 +1,22 @@ +--- +name: IAF 119 FS +nickname: Bat Squadron +country: Israel +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: IAF-Kurnass-114-119SQN +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/IAF-69-FS.yaml b/resources/squadrons/F-4E-45MC/IAF-69-FS.yaml new file mode 100644 index 00000000..ed2754bb --- /dev/null +++ b/resources/squadrons/F-4E-45MC/IAF-69-FS.yaml @@ -0,0 +1,22 @@ +--- +name: IAF 69 FS +nickname: Hammers +country: Israel +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: IAF-Kurnass-175-69SQN +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/IRIAF 69-TFS.yaml b/resources/squadrons/F-4E-45MC/IRIAF 69-TFS.yaml new file mode 100644 index 00000000..dabde568 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/IRIAF 69-TFS.yaml @@ -0,0 +1,22 @@ +--- +name: IRIAF 61st TFS +nickname: Panthers +country: Iran +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: IRIAF-3-6643 +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/JASDF 8-TFS.yaml b/resources/squadrons/F-4E-45MC/JASDF 8-TFS.yaml new file mode 100644 index 00000000..568bf898 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/JASDF 8-TFS.yaml @@ -0,0 +1,22 @@ +--- +name: JASDF 8th TFS +nickname: Black Panthers +country: Japan +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: JASDF-87-8312-3WG +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/RAAF 1-SQN.yaml b/resources/squadrons/F-4E-45MC/RAAF 1-SQN.yaml new file mode 100644 index 00000000..bcb92a73 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/RAAF 1-SQN.yaml @@ -0,0 +1,22 @@ +--- +name: RAAF No. 1 SQN +nickname: Fighting First +country: Australia +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: RAAF-97203_SEA +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/RAF 43-SQN.yaml b/resources/squadrons/F-4E-45MC/RAF 43-SQN.yaml new file mode 100644 index 00000000..4ded9024 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/RAF 43-SQN.yaml @@ -0,0 +1,22 @@ +--- +name: RAF No. 43 SQN +nickname: Fighting Cocks +country: UK +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: RAF-43-Sqn-FG.1 +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/ROKAF 153-SQN.yaml b/resources/squadrons/F-4E-45MC/ROKAF 153-SQN.yaml new file mode 100644 index 00000000..43eecc67 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/ROKAF 153-SQN.yaml @@ -0,0 +1,22 @@ +--- +name: ROKAF 153rd FS +nickname: 153rd Fighter Squadron +country: South Korea +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: ROKAF-80470-CG-153FS +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/TuAF 111-FILO.yaml b/resources/squadrons/F-4E-45MC/TuAF 111-FILO.yaml new file mode 100644 index 00000000..d0f38c5c --- /dev/null +++ b/resources/squadrons/F-4E-45MC/TuAF 111-FILO.yaml @@ -0,0 +1,22 @@ +--- +name: TuAF 111 Filo +nickname: Panter +country: Turkey +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: TUAF-67-0268-H2 +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 110-ANG-BS.yaml b/resources/squadrons/F-4E-45MC/USAF 110-ANG-BS.yaml new file mode 100644 index 00000000..e1ebe49d --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 110-ANG-BS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 110th ANG BS +nickname: Lindbergh's Own +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: SL68-303_H1_110ANG +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 141-TFS.yaml b/resources/squadrons/F-4E-45MC/USAF 141-TFS.yaml new file mode 100644 index 00000000..c3278db3 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 141-TFS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 141st TFS +nickname: Tigers +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: NJ68-357_H1_141TFS +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 163-TFG.yaml b/resources/squadrons/F-4E-45MC/USAF 163-TFG.yaml new file mode 100644 index 00000000..e303c362 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 163-TFG.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 163rd TFG +nickname: Grizzlys +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: CA68-426_H2_163tfg +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 20-FS.yaml b/resources/squadrons/F-4E-45MC/USAF 20-FS.yaml new file mode 100644 index 00000000..d985c634 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 20-FS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 20th FS +nickname: Silver Lobos +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: default +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 36-TFS.yaml b/resources/squadrons/F-4E-45MC/USAF 36-TFS.yaml new file mode 100644 index 00000000..46ed98e7 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 36-TFS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 36th TFS +nickname: The Flying Fiends +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: OS68-349_SEAW_36TFS +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 457-ANG-FS.yaml b/resources/squadrons/F-4E-45MC/USAF 457-ANG-FS.yaml new file mode 100644 index 00000000..2f892d37 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 457-ANG-FS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 457th ANG FS +nickname: Spads +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: TH68-450_H1_457FS +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 469-FTS.yaml b/resources/squadrons/F-4E-45MC/USAF 469-FTS.yaml new file mode 100644 index 00000000..1b38338e --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 469-FTS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 469th FTS +nickname: Fighting Bulls +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: JV67-288_SEAW_469TFS +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 512-TFS.yaml b/resources/squadrons/F-4E-45MC/USAF 512-TFS.yaml new file mode 100644 index 00000000..f28c3061 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 512-TFS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 512th TFS +nickname: Dragons +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: RS68-480_SEA_512TFS +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 526-TFS.yaml b/resources/squadrons/F-4E-45MC/USAF 526-TFS.yaml new file mode 100644 index 00000000..d261a48f --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 526-TFS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 526th TFS +nickname: Black Knights +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: RS68-381_E1_526TFS +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 57-FIS.yaml b/resources/squadrons/F-4E-45MC/USAF 57-FIS.yaml new file mode 100644 index 00000000..4e1ad906 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 57-FIS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 57th FIS +nickname: Black Knights +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: ADC AF66-300 +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/squadrons/F-4E-45MC/USAF 68-FS.yaml b/resources/squadrons/F-4E-45MC/USAF 68-FS.yaml new file mode 100644 index 00000000..73616b20 --- /dev/null +++ b/resources/squadrons/F-4E-45MC/USAF 68-FS.yaml @@ -0,0 +1,22 @@ +--- +name: USAF 68th FS +nickname: Lightning Lancers +country: USA +role: Fighter Bomber +aircraft: F-4E-45MC Phantom II +livery: MY68-328_E1_68FS +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP diff --git a/resources/ui/units/aircrafts/banners/F-4E-45MC.jpg b/resources/ui/units/aircrafts/banners/F-4E-45MC.jpg new file mode 100644 index 00000000..bdd5356c Binary files /dev/null and b/resources/ui/units/aircrafts/banners/F-4E-45MC.jpg differ diff --git a/resources/ui/units/aircrafts/banners/VSN_F106A.jpg b/resources/ui/units/aircrafts/banners/VSN_F106A.jpg new file mode 100644 index 00000000..dcd0a8d3 Binary files /dev/null and b/resources/ui/units/aircrafts/banners/VSN_F106A.jpg differ diff --git a/resources/ui/units/aircrafts/banners/VSN_F106B.jpg b/resources/ui/units/aircrafts/banners/VSN_F106B.jpg new file mode 100644 index 00000000..a103fd1a Binary files /dev/null and b/resources/ui/units/aircrafts/banners/VSN_F106B.jpg differ diff --git a/resources/ui/units/aircrafts/icons/F-4E-45MC_24.jpg b/resources/ui/units/aircrafts/icons/F-4E-45MC_24.jpg new file mode 100644 index 00000000..6a00391f Binary files /dev/null and b/resources/ui/units/aircrafts/icons/F-4E-45MC_24.jpg differ diff --git a/resources/ui/units/aircrafts/icons/VSN_F106A_24.jpg b/resources/ui/units/aircrafts/icons/VSN_F106A_24.jpg new file mode 100644 index 00000000..594b7a1d Binary files /dev/null and b/resources/ui/units/aircrafts/icons/VSN_F106A_24.jpg differ diff --git a/resources/ui/units/aircrafts/icons/VSN_F106B_24.jpg b/resources/ui/units/aircrafts/icons/VSN_F106B_24.jpg new file mode 100644 index 00000000..68afdfcd Binary files /dev/null and b/resources/ui/units/aircrafts/icons/VSN_F106B_24.jpg differ diff --git a/resources/units/aircraft/F-4E-45MC.yaml b/resources/units/aircraft/F-4E-45MC.yaml new file mode 100644 index 00000000..b67175f3 --- /dev/null +++ b/resources/units/aircraft/F-4E-45MC.yaml @@ -0,0 +1,35 @@ +description: + Proving highly adaptable, the F-4 entered service with the Navy in 1961 + before it was adopted by the United States Marine Corps and the United States Air + Force, and by the mid-1960s it had become a major part of their air arms. Phantom + production ran from 1958 to 1981 with a total of 5,195 aircraft built, making it + the most produced American supersonic military aircraft in history, and cementing + its position as an iconic combat aircraft of the Cold War. The F-4 was used extensively + during the Vietnam War. It served as the principal air superiority fighter for the + U.S. Air Force, Navy, and Marine Corps and became important in the ground-attack + and aerial reconnaissance roles late in the war. +introduced: 1968 +manufacturer: McDonnell Douglas +origin: USA +price: 10 +role: Fighter-Bomber +max_range: 200 +variants: + F-4E-45MC Phantom II: {} + Phantom FGR.2: {} + F-4EJ Phantom II: {} +tasks: + Anti-ship: 110 + BAI: 570 + BARCAP: 410 + CAS: 570 + DEAD: 400 + Escort: 410 + Fighter sweep: 410 + Intercept: 410 + OCA/Aircraft: 570 + OCA/Runway: 330 + SEAD: 120 + SEAD Escort: 120 + Strike: 400 + TARCAP: 410 diff --git a/resources/units/aircraft/VSN_F106A.yaml b/resources/units/aircraft/VSN_F106A.yaml new file mode 100644 index 00000000..85196556 --- /dev/null +++ b/resources/units/aircraft/VSN_F106A.yaml @@ -0,0 +1,21 @@ +description: + "The Convair F-106 Delta Dart is a supersonic interceptor that served with \ + \ the United States Air Force from 1959 to 1988. Capable of Mach 2.3 it was \ + \ envisioned as the ultimate interceptor. The F-106 was designed without a \ + \ gun or provision for carrying bombs, instead carrying its AIM-4 Falcon \ + \ air-to-air missiles within an internal weapons bay, its clean exterior was \ + \ beneficial to supersonic flight." +introduced: 1959 +manufacturer: Convair +origin: USA +price: 9 +role: Interceptor +max_range: 250 +gunfighter: false +variants: + F-106A Delta Dart: {} +tasks: + BARCAP: 250 + Escort: 150 + Fighter sweep: 200 + Intercept: 300 diff --git a/resources/units/aircraft/VSN_F106B.yaml b/resources/units/aircraft/VSN_F106B.yaml new file mode 100644 index 00000000..9bb5c6bf --- /dev/null +++ b/resources/units/aircraft/VSN_F106B.yaml @@ -0,0 +1,21 @@ +description: + "The Convair F-106 Delta Dart is a supersonic interceptor that served with \ + \ the United States Air Force from 1959 to 1988. Capable of Mach 2.3 it was \ + \ envisioned as the ultimate interceptor. The F-106 was designed without a \ + \ gun or provision for carrying bombs, instead carrying its AIM-4 Falcon \ + \ air-to-air missiles within an internal weapons bay, its clean exterior was \ + \ beneficial to supersonic flight." +introduced: 1959 +manufacturer: Convair +origin: USA +price: 9 +role: Interceptor +max_range: 250 +gunfighter: false +variants: + F-106B Delta Dart: {} +tasks: + BARCAP: 250 + Escort: 150 + Fighter sweep: 200 + Intercept: 300 diff --git a/resources/weapons/standoff/AGM-45B.yaml b/resources/weapons/standoff/AGM-45B.yaml index 12d55673..afd8c8f6 100644 --- a/resources/weapons/standoff/AGM-45B.yaml +++ b/resources/weapons/standoff/AGM-45B.yaml @@ -5,3 +5,4 @@ fallback: AGM-45A Shrike ARM clsids: - "{3E6B632D-65EB-44D2-9501-1C2D04515404}" - "{3E6B632D-65EB-44D2-9501-1C2D04515405}" + - "{AGM_45B}"