mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Merge remote-tracking branch 'remotes/dcs-retribution/dcs-retribution/dev' into pretense-generator
This commit is contained in:
commit
9775d3b97c
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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. <u>Takes effect after current turn!</u>"
|
||||
),
|
||||
)
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 *
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
1
pydcs_extensions/f106/__init__.py
Normal file
1
pydcs_extensions/f106/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from .f106 import *
|
||||
304
pydcs_extensions/f106/f106.py
Normal file
304
pydcs_extensions/f106/f106.py
Normal file
@ -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 <CLEAN>
|
||||
|
||||
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 <CLEAN>
|
||||
|
||||
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 <CLEAN>
|
||||
|
||||
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 <CLEAN>
|
||||
|
||||
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 <CLEAN>
|
||||
|
||||
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 <CLEAN>
|
||||
|
||||
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
|
||||
@ -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)
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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):
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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
|
||||
)
|
||||
|
||||
@ -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"),
|
||||
|
||||
@ -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("<strong>Aircraft:</strong>"), 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("<strong>AWACS:</strong>"), 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("<strong>Tankers:</strong>"), 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("<strong>Frontlines vehicles:</strong>"), 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("<strong>Artillery units:</strong>"), 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()
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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
|
||||
|
||||
Binary file not shown.
@ -5,7 +5,25 @@ authors: Starfire
|
||||
recommended_player_faction: Blufor Late Cold War (80s)
|
||||
recommended_enemy_faction: Russia 1980
|
||||
description:
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
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
|
||||
size: 16
|
||||
#Murmansk International
|
||||
12:
|
||||
- primary: AEW&C
|
||||
aircraft:
|
||||
- A-50
|
||||
size: 1
|
||||
- primary: Transport
|
||||
secondary: any
|
||||
aircraft:
|
||||
- IL-76MD
|
||||
size: 2
|
||||
@ -150,7 +150,7 @@ squadrons:
|
||||
- primary: SEAD
|
||||
secondary: any
|
||||
aircraft:
|
||||
- F-4E Phantom II
|
||||
- F-4E-45MC Phantom II
|
||||
size: 20
|
||||
- primary: DEAD
|
||||
secondary:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
BIN
resources/campaigns/operation_frostbite.miz
Normal file
BIN
resources/campaigns/operation_frostbite.miz
Normal file
Binary file not shown.
260
resources/campaigns/operation_frostbite.yaml
Normal file
260
resources/campaigns/operation_frostbite.yaml
Normal file
@ -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:
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
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
|
||||
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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] = {
|
||||
|
||||
1031
resources/customized_payloads/F-4E-45MC.lua
Normal file
1031
resources/customized_payloads/F-4E-45MC.lua
Normal file
File diff suppressed because it is too large
Load Diff
45
resources/customized_payloads/VSN_F106A.lua
Normal file
45
resources/customized_payloads/VSN_F106A.lua
Normal file
@ -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
|
||||
45
resources/customized_payloads/VSN_F106B.lua
Normal file
45
resources/customized_payloads/VSN_F106B.lua
Normal file
@ -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
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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)",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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)"
|
||||
],
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
],
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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": [
|
||||
|
||||
@ -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"
|
||||
],
|
||||
|
||||
@ -14,6 +14,7 @@
|
||||
"C-130J-30 Super Hercules",
|
||||
"F-15J Eagle",
|
||||
"F-2A",
|
||||
"F-4EJ Phantom II",
|
||||
"F-4EJ Kai Phantom II"
|
||||
],
|
||||
"awacs": [
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
"ru_RU"
|
||||
],
|
||||
"aircrafts": [
|
||||
"IL-76MD",
|
||||
"Mi-24V Hind-E",
|
||||
"Mi-24P Hind-F",
|
||||
"Mi-8MTV2 Hip",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -13,6 +13,7 @@
|
||||
"C-130J-30 Super Hercules",
|
||||
"Gazelle AH.1",
|
||||
"Phantom FG.1",
|
||||
"Phantom FGR.2",
|
||||
"Phantom F.3",
|
||||
"Tornado GR4"
|
||||
],
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": [
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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 = {
|
||||
|
||||
22
resources/squadrons/F-4E-45MC/EAF 222-FG-GG.yaml
Normal file
22
resources/squadrons/F-4E-45MC/EAF 222-FG-GG.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/EAF 222-FG-SEA.yaml
Normal file
22
resources/squadrons/F-4E-45MC/EAF 222-FG-SEA.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/GAF JG-72.yaml
Normal file
22
resources/squadrons/F-4E-45MC/GAF JG-72.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/GAF JG-74.yaml
Normal file
22
resources/squadrons/F-4E-45MC/GAF JG-74.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/HAF 338-FS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/HAF 338-FS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/IAF 119-FS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/IAF 119-FS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/IAF-69-FS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/IAF-69-FS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/IRIAF 69-TFS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/IRIAF 69-TFS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/JASDF 8-TFS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/JASDF 8-TFS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/RAAF 1-SQN.yaml
Normal file
22
resources/squadrons/F-4E-45MC/RAAF 1-SQN.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/RAF 43-SQN.yaml
Normal file
22
resources/squadrons/F-4E-45MC/RAF 43-SQN.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/ROKAF 153-SQN.yaml
Normal file
22
resources/squadrons/F-4E-45MC/ROKAF 153-SQN.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/TuAF 111-FILO.yaml
Normal file
22
resources/squadrons/F-4E-45MC/TuAF 111-FILO.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 110-ANG-BS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 110-ANG-BS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 141-TFS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 141-TFS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 163-TFG.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 163-TFG.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 20-FS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 20-FS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 36-TFS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 36-TFS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 457-ANG-FS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 457-ANG-FS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 469-FTS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 469-FTS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 512-TFS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 512-TFS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 526-TFS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 526-TFS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 57-FIS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 57-FIS.yaml
Normal file
@ -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
|
||||
22
resources/squadrons/F-4E-45MC/USAF 68-FS.yaml
Normal file
22
resources/squadrons/F-4E-45MC/USAF 68-FS.yaml
Normal file
@ -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
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user