diff --git a/changelog.md b/changelog.md index 72b4663a..d482563e 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,7 @@ * **[Modding]** Support for F-15D 'Baz' mod version 1.0 * **[Modding]** Support for Su-30 mod version 2.01B * **[Modding]** Support for F-100 Super Sabre mod versions v2.7.18.01 & 2.7.18.30765 and patches 30.09.22 & 09.10.22 +* **[Modding]** Support for F-105 mod version 2.7.12.23x * **[UI]** Add livery selector to Air Wing Configurator's squadrons. * **[Performance]** Added performance option: Maximum front-line unit supply per control point. * **[Performance]** Added performance option: Disable convoys. diff --git a/game/ato/ai_flight_planner_db.py b/game/ato/ai_flight_planner_db.py index 8ef081fd..9b681f39 100644 --- a/game/ato/ai_flight_planner_db.py +++ b/game/ato/ai_flight_planner_db.py @@ -123,6 +123,7 @@ from game.dcs.aircrafttype import AircraftType from pydcs_extensions.a4ec.a4ec import A_4E_C from pydcs_extensions.f100.f100 import VSN_F100 from pydcs_extensions.f104.f104 import VSN_F104G, VSN_F104S, VSN_F104S_AG +from pydcs_extensions.f105.f105 import VSN_F105D, VSN_F105G from pydcs_extensions.f15d.f15d import F_15D from pydcs_extensions.f22a.f22a import F_22A from pydcs_extensions.hercules.hercules import Hercules @@ -271,6 +272,8 @@ CAS_CAPABLE = [ C_101CC, L_39ZA, UH_1H, + VSN_F105G, + VSN_F105D, VSN_F104S_AG, VSN_F104G, VSN_F100, @@ -318,6 +321,7 @@ SEAD_CAPABLE = [ Su_30SM, MiG_27K, Tornado_GR4, + VSN_F105G, ] @@ -334,6 +338,7 @@ DEAD_CAPABLE = SEAD_CAPABLE + [ H_6J, A_20G, Ju_88A4, + VSN_F105D, VSN_F104S_AG, VSN_F104G, VSN_F100, @@ -404,6 +409,8 @@ STRIKE_CAPABLE = [ Mirage_F1M_EE, Mirage_F1CT, MiG_27K, + VSN_F105G, + VSN_F105D, MiG_21Bis, MiG_15bis, F_5E_3, @@ -512,6 +519,8 @@ RUNWAY_ATTACK_CAPABLE = [ Mirage_F1M_EE, Mirage_F1CT, MiG_27K, + VSN_F105G, + VSN_F105D, MiG_21Bis, MiG_15bis, F_5E_3, diff --git a/game/factions/faction.py b/game/factions/faction.py index 0e52f3c2..c22e562f 100644 --- a/game/factions/faction.py +++ b/game/factions/faction.py @@ -313,6 +313,9 @@ class Faction: self.remove_aircraft("VSN_F104G") self.remove_aircraft("VSN_F104S") self.remove_aircraft("VSN_F104S_AG") + if not mod_settings.f105_thunderchief: + self.remove_aircraft("VSN_F105D") + self.remove_aircraft("VSN_F105G") if not mod_settings.jas39_gripen: self.remove_aircraft("JAS39Gripen") self.remove_aircraft("JAS39Gripen_AG") diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index 8acdcb53..667c7752 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -56,6 +56,7 @@ class ModSettings: f22_raptor: bool = False f100_supersabre: bool = False f104_starfighter: bool = False + f105_thunderchief: bool = False hercules: bool = False uh_60l: bool = False jas39_gripen: bool = False diff --git a/pydcs_extensions/f105/f105.py b/pydcs_extensions/f105/f105.py new file mode 100644 index 00000000..ca1d09b8 --- /dev/null +++ b/pydcs_extensions/f105/f105.py @@ -0,0 +1,395 @@ +from typing import Set + +from dcs import task +from dcs.liveries_scanner import Liveries +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 WeaponsF105: + Fuel_Tank = {"clsid": "{VSN_F105G_PTB}", "name": "Fuel Tank", "weight": 3027} + Fuel_Tank_ = { + "clsid": "{VSN_F105G_Center_PTB}", + "name": "Fuel Tank", + "weight": 2062, + } + LAU_105_2_AIM_9L__ = { + "clsid": "{VSN_F105_LAU105_AIM9L}", + "name": "LAU-105 2*AIM-9L", + "weight": 332, + } + LAU_105_2_AIM_9P_ = { + "clsid": "{VSN_F105_LAU105_AIM9P}", + "name": "LAU-105 2*AIM-9P", + "weight": 332, + } + MER_6_M117_F_105 = { + "clsid": "{SB_F105_BRU_41A_M117_6}", + "name": "MER*6 M117 F-105", + "weight": 2100, + } + MER_6_Mk_82_F_105 = { + "clsid": "{VSN_F105_MK82_6}", + "name": "MER*6 Mk-82 F-105", + "weight": 1506, + } + TER_M117_F_105 = { + "clsid": "{SB_F105_TER9A_M117_3}", + "name": "TER M117 F-105", + "weight": 1500, + } + vsn_f105_lau6 = {"clsid": "{F105_LAUx6}", "name": "vsn_f105_lau6", "weight": None} + + +inject_weapons(WeaponsF105) + + +@planemod +class VSN_F105G(PlaneType): + id = "VSN_F105G" + flyable = True + height = 6.157 + width = 10.63 + length = 20.04 + fuel_max = 4986 + max_speed = 2240.928 + chaff = 30 + flare = 15 + charge_total = 60 + chaff_charge_size = 1 + flare_charge_size = 2 + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + + livery_name = "VSN_F105G" # from type + Liveries = Liveries()[livery_name] + + class Pylon3: + Smoke_Generator___red_ = (3, Weapons.Smoke_Generator___red_) + Smoke_Generator___green_ = (3, Weapons.Smoke_Generator___green_) + Smoke_Generator___blue_ = (3, Weapons.Smoke_Generator___blue_) + Smoke_Generator___white_ = (3, Weapons.Smoke_Generator___white_) + Smoke_Generator___yellow_ = (3, Weapons.Smoke_Generator___yellow_) + Smoke_Generator___orange_ = (3, Weapons.Smoke_Generator___orange_) + + class Pylon4: + AN_ASQ_T50_TCTS_Pod___ACMI_Pod = (4, Weapons.AN_ASQ_T50_TCTS_Pod___ACMI_Pod) + LAU_105_2_AIM_9L__ = (4, WeaponsF105.LAU_105_2_AIM_9L__) + LAU_105_2_AIM_9P_ = (4, WeaponsF105.LAU_105_2_AIM_9P_) + AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM) + AIM_9B_Sidewinder_IR_AAM = (4, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (4, Weapons.AIM_9L_Sidewinder_IR_AAM) + Mk_84___2000lb_GP_Bomb_LD = (4, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 4, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_82___500lb_GP_Bomb_LD = (4, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (4, Weapons.Mk_83___1000lb_GP_Bomb_LD) + M117___750lb_GP_Bomb_LD = (4, Weapons.M117___750lb_GP_Bomb_LD) + AGM_45A_Shrike_ARM = (4, Weapons.AGM_45A_Shrike_ARM) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE = ( + 4, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE, + ) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT = ( + 4, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT, + ) + + # ERRR + + class Pylon5: + AGM_45A_Shrike_ARM = (5, Weapons.AGM_45A_Shrike_ARM) + Mk_84___2000lb_GP_Bomb_LD = (5, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 5, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_82___500lb_GP_Bomb_LD = (5, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (5, Weapons.Mk_83___1000lb_GP_Bomb_LD) + MER_6_Mk_82_F_105 = (5, WeaponsF105.MER_6_Mk_82_F_105) + Fuel_Tank = (5, WeaponsF105.Fuel_Tank) + TER_9A_with_3_x_Mk_82___500lb_GP_Bomb_LD = ( + 5, + Weapons.TER_9A_with_3_x_Mk_82___500lb_GP_Bomb_LD, + ) + MER_6_M117_F_105 = (5, WeaponsF105.MER_6_M117_F_105) + TER_M117_F_105 = (5, WeaponsF105.TER_M117_F_105) + _3_Mk_83 = (5, Weapons._3_Mk_83) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE = ( + 5, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE, + ) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT = ( + 5, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT, + ) + + # ERRR {BRU33_2*LAU61_M282} + # ERRR + + class Pylon6: + Mk_84___2000lb_GP_Bomb_LD = (6, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 6, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_83___1000lb_GP_Bomb_LD = (6, Weapons.Mk_83___1000lb_GP_Bomb_LD) + MER_6_Mk_82_F_105 = (6, WeaponsF105.MER_6_Mk_82_F_105) + MER_6_M117_F_105 = (6, WeaponsF105.MER_6_M117_F_105) + TER_M117_F_105 = (6, WeaponsF105.TER_M117_F_105) + _3_Mk_83 = (6, Weapons._3_Mk_83) + Fuel_Tank_ = (6, WeaponsF105.Fuel_Tank_) + + # ERRR + + class Pylon7: + AGM_45A_Shrike_ARM = (7, Weapons.AGM_45A_Shrike_ARM) + Mk_84___2000lb_GP_Bomb_LD = (7, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 7, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_82___500lb_GP_Bomb_LD = (7, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (7, Weapons.Mk_83___1000lb_GP_Bomb_LD) + MER_6_Mk_82_F_105 = (7, WeaponsF105.MER_6_Mk_82_F_105) + Fuel_Tank = (7, WeaponsF105.Fuel_Tank) + TER_9A_with_3_x_Mk_82___500lb_GP_Bomb_LD = ( + 7, + Weapons.TER_9A_with_3_x_Mk_82___500lb_GP_Bomb_LD, + ) + MER_6_M117_F_105 = (7, WeaponsF105.MER_6_M117_F_105) + TER_M117_F_105 = (7, WeaponsF105.TER_M117_F_105) + _3_Mk_83 = (7, Weapons._3_Mk_83) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE = ( + 7, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE, + ) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT = ( + 7, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT, + ) + + # ERRR {BRU33_2*LAU61_M282} + # ERRR + + class Pylon8: + AN_ASQ_T50_TCTS_Pod___ACMI_Pod = (8, Weapons.AN_ASQ_T50_TCTS_Pod___ACMI_Pod) + LAU_105_2_AIM_9L__ = (8, WeaponsF105.LAU_105_2_AIM_9L__) + LAU_105_2_AIM_9P_ = (8, WeaponsF105.LAU_105_2_AIM_9P_) + AIM_9P_Sidewinder_IR_AAM = (8, Weapons.AIM_9P_Sidewinder_IR_AAM) + AIM_9B_Sidewinder_IR_AAM = (8, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (8, Weapons.AIM_9L_Sidewinder_IR_AAM) + Mk_84___2000lb_GP_Bomb_LD = (8, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 8, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_82___500lb_GP_Bomb_LD = (8, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (8, Weapons.Mk_83___1000lb_GP_Bomb_LD) + M117___750lb_GP_Bomb_LD = (8, Weapons.M117___750lb_GP_Bomb_LD) + AGM_45A_Shrike_ARM = (8, Weapons.AGM_45A_Shrike_ARM) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE = ( + 8, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE, + ) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT = ( + 8, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT, + ) + + # ERRR + + class Pylon9: + L_081_Fantasmagoria_ELINT_pod = (9, Weapons.L_081_Fantasmagoria_ELINT_pod) + + pylons: Set[int] = {3, 4, 5, 6, 7, 8, 9} + + tasks = [ + task.CAP, + task.Escort, + task.FighterSweep, + task.Intercept, + task.Reconnaissance, + task.GroundAttack, + task.CAS, + task.RunwayAttack, + task.AntishipStrike, + ] + task_default = task.FighterSweep + + +@planemod +class VSN_F105D(PlaneType): + id = "VSN_F105D" + flyable = True + height = 6.157 + width = 10.63 + length = 20.04 + fuel_max = 4986 + max_speed = 2240.928 + chaff = 30 + flare = 15 + charge_total = 60 + chaff_charge_size = 1 + flare_charge_size = 2 + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + + livery_name = "VSN_F105D" # from type + Liveries = Liveries()[livery_name] + + class Pylon3: + Smoke_Generator___red_ = (3, Weapons.Smoke_Generator___red_) + Smoke_Generator___green_ = (3, Weapons.Smoke_Generator___green_) + Smoke_Generator___blue_ = (3, Weapons.Smoke_Generator___blue_) + Smoke_Generator___white_ = (3, Weapons.Smoke_Generator___white_) + Smoke_Generator___yellow_ = (3, Weapons.Smoke_Generator___yellow_) + Smoke_Generator___orange_ = (3, Weapons.Smoke_Generator___orange_) + + class Pylon4: + AN_ASQ_T50_TCTS_Pod___ACMI_Pod = (4, Weapons.AN_ASQ_T50_TCTS_Pod___ACMI_Pod) + AIM_9P_Sidewinder_IR_AAM = (4, Weapons.AIM_9P_Sidewinder_IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (4, Weapons.AIM_9L_Sidewinder_IR_AAM) + AIM_9B_Sidewinder_IR_AAM = (4, Weapons.AIM_9B_Sidewinder_IR_AAM) + LAU_105_2_AIM_9L__ = (4, WeaponsF105.LAU_105_2_AIM_9L__) + LAU_105_2_AIM_9P_ = (4, WeaponsF105.LAU_105_2_AIM_9P_) + Mk_84___2000lb_GP_Bomb_LD = (4, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 4, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_82___500lb_GP_Bomb_LD = (4, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (4, Weapons.Mk_83___1000lb_GP_Bomb_LD) + M117___750lb_GP_Bomb_LD = (4, Weapons.M117___750lb_GP_Bomb_LD) + AGM_45A_Shrike_ARM = (4, Weapons.AGM_45A_Shrike_ARM) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE = ( + 4, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE, + ) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT = ( + 4, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT, + ) + + # ERRR + + class Pylon5: + Mk_84___2000lb_GP_Bomb_LD = (5, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 5, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_82___500lb_GP_Bomb_LD = (5, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (5, Weapons.Mk_83___1000lb_GP_Bomb_LD) + MER_6_Mk_82_F_105 = (5, WeaponsF105.MER_6_Mk_82_F_105) + Fuel_Tank = (5, WeaponsF105.Fuel_Tank) + TER_9A_with_3_x_Mk_82___500lb_GP_Bomb_LD = ( + 5, + Weapons.TER_9A_with_3_x_Mk_82___500lb_GP_Bomb_LD, + ) + MER_6_M117_F_105 = (5, WeaponsF105.MER_6_M117_F_105) + TER_M117_F_105 = (5, WeaponsF105.TER_M117_F_105) + _3_Mk_83 = (5, Weapons._3_Mk_83) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE = ( + 5, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE, + ) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT = ( + 5, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT, + ) + + # ERRR {BRU33_2*LAU61_M282} + # ERRR + + class Pylon6: + Mk_84___2000lb_GP_Bomb_LD = (6, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 6, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_83___1000lb_GP_Bomb_LD = (6, Weapons.Mk_83___1000lb_GP_Bomb_LD) + MER_6_Mk_82_F_105 = (6, WeaponsF105.MER_6_Mk_82_F_105) + MER_6_M117_F_105 = (6, WeaponsF105.MER_6_M117_F_105) + TER_M117_F_105 = (6, WeaponsF105.TER_M117_F_105) + _3_Mk_83 = (6, Weapons._3_Mk_83) + Fuel_Tank_ = (6, WeaponsF105.Fuel_Tank_) + + # ERRR + + class Pylon7: + Mk_84___2000lb_GP_Bomb_LD = (7, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 7, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_82___500lb_GP_Bomb_LD = (7, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (7, Weapons.Mk_83___1000lb_GP_Bomb_LD) + MER_6_Mk_82_F_105 = (7, WeaponsF105.MER_6_Mk_82_F_105) + Fuel_Tank = (7, WeaponsF105.Fuel_Tank) + TER_9A_with_3_x_Mk_82___500lb_GP_Bomb_LD = ( + 7, + Weapons.TER_9A_with_3_x_Mk_82___500lb_GP_Bomb_LD, + ) + MER_6_M117_F_105 = (7, WeaponsF105.MER_6_M117_F_105) + TER_M117_F_105 = (7, WeaponsF105.TER_M117_F_105) + _3_Mk_83 = (7, Weapons._3_Mk_83) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE = ( + 7, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE, + ) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT = ( + 7, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT, + ) + + # ERRR {BRU33_2*LAU61_M282} + # ERRR + + class Pylon8: + AN_ASQ_T50_TCTS_Pod___ACMI_Pod = (8, Weapons.AN_ASQ_T50_TCTS_Pod___ACMI_Pod) + AIM_9P_Sidewinder_IR_AAM = (8, Weapons.AIM_9P_Sidewinder_IR_AAM) + AIM_9L_Sidewinder_IR_AAM = (8, Weapons.AIM_9L_Sidewinder_IR_AAM) + AIM_9B_Sidewinder_IR_AAM = (8, Weapons.AIM_9B_Sidewinder_IR_AAM) + LAU_105_2_AIM_9L__ = (8, WeaponsF105.LAU_105_2_AIM_9L__) + LAU_105_2_AIM_9P_ = (8, WeaponsF105.LAU_105_2_AIM_9P_) + Mk_84___2000lb_GP_Bomb_LD = (8, Weapons.Mk_84___2000lb_GP_Bomb_LD) + MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD = ( + 8, + Weapons.MER2_with_2_x_Mk_82___500lb_GP_Bombs_LD, + ) + Mk_82___500lb_GP_Bomb_LD = (8, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (8, Weapons.Mk_83___1000lb_GP_Bomb_LD) + M117___750lb_GP_Bomb_LD = (8, Weapons.M117___750lb_GP_Bomb_LD) + AGM_45A_Shrike_ARM = (8, Weapons.AGM_45A_Shrike_ARM) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE = ( + 8, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk1__HE, + ) + LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT = ( + 8, + Weapons.LAU_3_pod___19_x_2_75_FFAR__UnGd_Rkts_Mk5__HEAT, + ) + + # ERRR + + class Pylon9: + L_081_Fantasmagoria_ELINT_pod = (9, Weapons.L_081_Fantasmagoria_ELINT_pod) + + pylons: Set[int] = {3, 4, 5, 6, 7, 8, 9} + + tasks = [ + task.CAP, + task.Escort, + task.FighterSweep, + task.Intercept, + task.Reconnaissance, + task.GroundAttack, + task.CAS, + task.RunwayAttack, + task.AntishipStrike, + ] + task_default = task.FighterSweep diff --git a/qt_ui/main.py b/qt_ui/main.py index 873cbcad..5f0382a4 100644 --- a/qt_ui/main.py +++ b/qt_ui/main.py @@ -297,6 +297,7 @@ def create_game( f22_raptor=False, f100_supersabre=False, f104_starfighter=False, + f105_thunderchief=False, hercules=False, jas39_gripen=False, su30_flanker_h=False, diff --git a/qt_ui/windows/newgame/QNewGameWizard.py b/qt_ui/windows/newgame/QNewGameWizard.py index 91b910ff..1c984c36 100644 --- a/qt_ui/windows/newgame/QNewGameWizard.py +++ b/qt_ui/windows/newgame/QNewGameWizard.py @@ -163,6 +163,7 @@ class NewGameWizard(QtWidgets.QWizard): f22_raptor=self.field("f22_raptor"), f100_supersabre=self.field("f100_supersabre"), f104_starfighter=self.field("f104_starfighter"), + f105_thunderchief=self.field("f105_thunderchief"), hercules=self.field("hercules"), uh_60l=self.field("uh_60l"), jas39_gripen=self.field("jas39_gripen"), @@ -666,6 +667,8 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.registerField("f100_supersabre", f100_supersabre) f104_starfighter = QtWidgets.QCheckBox() self.registerField("f104_starfighter", f104_starfighter) + f105_thunderchief = QtWidgets.QCheckBox() + self.registerField("f105_thunderchief", f105_thunderchief) jas39_gripen = QtWidgets.QCheckBox() self.registerField("jas39_gripen", jas39_gripen) su30_flanker_h = QtWidgets.QCheckBox() @@ -708,6 +711,16 @@ class GeneratorOptions(QtWidgets.QWizardPage): # Section break here for readability modLayout.addWidget(QtWidgets.QWidget(), modLayout_row, 0) modLayout_row += 1 + modLayout.addWidget( + QtWidgets.QLabel("F-105 Thunderchief (version 2.7.12.23x)"), + modLayout_row, + 0, + ) + modLayout.addWidget(f105_thunderchief, modLayout_row, 1) + modLayout_row += 1 + # Section break here for readability + modLayout.addWidget(QtWidgets.QWidget(), modLayout_row, 0) + modLayout_row += 1 modLayout.addWidget( QtWidgets.QLabel("C-130J-30 Super Hercules"), modLayout_row, 0 ) diff --git a/resources/customized_payloads/VSN_F105D.lua b/resources/customized_payloads/VSN_F105D.lua new file mode 100644 index 00000000..95ee7a93 --- /dev/null +++ b/resources/customized_payloads/VSN_F105D.lua @@ -0,0 +1,125 @@ +local unitPayloads = { + ["name"] = "VSN_F105D", + ["payloads"] = { + [1] = { + ["displayName"] = "DEAD", + ["name"] = "DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{VSN_F105G_Center_PTB}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{D5D51E24-348C-4702-96AF-97A714E72697}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{D5D51E24-348C-4702-96AF-97A714E72697}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [2] = { + ["displayName"] = "CAS", + ["name"] = "CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{VSN_F105G_Center_PTB}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{D5D51E24-348C-4702-96AF-97A714E72697}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{D5D51E24-348C-4702-96AF-97A714E72697}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [3] = { + ["displayName"] = "STRIKE", + ["name"] = "STRIKE", + ["pylons"] = { + [1] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{VSN_F105G_PTB}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{VSN_F105G_PTB}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [4] = { + ["displayName"] = "OCA", + ["name"] = "OCA", + ["pylons"] = { + [1] = { + ["CLSID"] = "{VSN_F105G_Center_PTB}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "VSN_F105D", +} +return unitPayloads diff --git a/resources/customized_payloads/VSN_F105G.lua b/resources/customized_payloads/VSN_F105G.lua new file mode 100644 index 00000000..c9eba9f5 --- /dev/null +++ b/resources/customized_payloads/VSN_F105G.lua @@ -0,0 +1,191 @@ +local unitPayloads = { + ["name"] = "VSN_F105G", + ["payloads"] = { + [1] = { + ["displayName"] = "DEAD", + ["name"] = "DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{VSN_F105G_Center_PTB}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{D5D51E24-348C-4702-96AF-97A714E72697}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{D5D51E24-348C-4702-96AF-97A714E72697}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [2] = { + ["displayName"] = "CAS", + ["name"] = "CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{VSN_F105G_Center_PTB}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{D5D51E24-348C-4702-96AF-97A714E72697}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{D5D51E24-348C-4702-96AF-97A714E72697}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [3] = { + ["displayName"] = "STRIKE", + ["name"] = "STRIKE", + ["pylons"] = { + [1] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{VSN_F105G_PTB}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{VSN_F105G_PTB}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [4] = { + ["displayName"] = "OCA", + ["name"] = "OCA", + ["pylons"] = { + [1] = { + ["CLSID"] = "{VSN_F105G_Center_PTB}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [5] = { + ["displayName"] = "SEAD", + ["name"] = "SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{AGM_45A}", + ["num"] = 5, + }, + [2] = { + ["CLSID"] = "{VSN_F105G_Center_PTB}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{AGM_45A}", + ["num"] = 8, + }, + [4] = { + ["CLSID"] = "{AGM_45A}", + ["num"] = 7, + }, + [5] = { + ["CLSID"] = "{AGM_45A}", + ["num"] = 4, + }, + [6] = { + ["CLSID"] = "{0519A264-0AB6-11d6-9193-00A0249B6F00}", + ["num"] = 9, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + [6] = { + ["displayName"] = "Liberation SEAD Escort", + ["name"] = "Liberation SEAD Escort", + ["pylons"] = { + [1] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 5, + }, + [2] = { + ["CLSID"] = "{VSN_F105G_Center_PTB}", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "{0519A264-0AB6-11d6-9193-00A0249B6F00}", + ["num"] = 9, + }, + [4] = { + ["CLSID"] = "{AGM_45A}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{SB_F105_BRU_41A_M117_6}", + ["num"] = 7, + }, + [6] = { + ["CLSID"] = "{AGM_45A}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 19, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "VSN_F105G", +} +return unitPayloads diff --git a/resources/factions/usa_1960.json b/resources/factions/usa_1960.json index 1a1a8aa9..1f51d076 100644 --- a/resources/factions/usa_1960.json +++ b/resources/factions/usa_1960.json @@ -13,6 +13,7 @@ "F-100 Super Sabre", "P-51D-25-NA Mustang", "P-51D-30-NA Mustang", + "F-105D Thunderchief", "UH-1H Iroquois" ], "frontline_units": [ diff --git a/resources/factions/usa_1965.json b/resources/factions/usa_1965.json index 78b15b3b..93c15719 100644 --- a/resources/factions/usa_1965.json +++ b/resources/factions/usa_1965.json @@ -12,7 +12,9 @@ "CH-47D", "F-4E Phantom II", "F-5E Tiger II", - "F-100 Super Sabre", + "F-100 Super Sabre", + "F-105D Thunderchief", + "F-105G Thunderchief", "UH-1H Iroquois" ], "awacs": [ diff --git a/resources/factions/usa_1975.json b/resources/factions/usa_1975.json index 3307c56f..10c2286d 100644 --- a/resources/factions/usa_1975.json +++ b/resources/factions/usa_1975.json @@ -14,7 +14,8 @@ "F-14A Tomcat (Block 135-GR Late)", "F-4E Phantom II", "F-5E Tiger II", - "F-100 Super Sabre", + "F-100 Super Sabre", + "F-105G Thunderchief", "S-3B Viking", "UH-1H Iroquois" ], diff --git a/resources/ui/units/aircrafts/icons/VSN_F105D_24.jpg b/resources/ui/units/aircrafts/icons/VSN_F105D_24.jpg new file mode 100644 index 00000000..3d6f0141 Binary files /dev/null and b/resources/ui/units/aircrafts/icons/VSN_F105D_24.jpg differ diff --git a/resources/ui/units/aircrafts/icons/VSN_F105G_24.jpg b/resources/ui/units/aircrafts/icons/VSN_F105G_24.jpg new file mode 100644 index 00000000..b8f1ddbf Binary files /dev/null and b/resources/ui/units/aircrafts/icons/VSN_F105G_24.jpg differ diff --git a/resources/units/aircraft/VSN_F105D.yaml b/resources/units/aircraft/VSN_F105D.yaml new file mode 100644 index 00000000..968da55a --- /dev/null +++ b/resources/units/aircraft/VSN_F105D.yaml @@ -0,0 +1,15 @@ +description: + "The Republic F-105 Thunderchief is a supersonic fighter-bomber that served with \ + \ the United States Air Force from 1958 to 1984. Capable of Mach 2, it conducted \ + \ the majority of strike bombing missions during the early years of the Vietnam War.\ + \ The F-105D variant is the definitive production model, with all-weather capability \ + \ because of advanced avionics, including AN/APN-131 navigational radar." +introduced: 1958 +manufacturer: Republic Aviation +origin: USA +price: 9 +role: Fighter-Bomber +max_range: 150 +gunfighter: true +variants: + F-105D Thunderchief: {} diff --git a/resources/units/aircraft/VSN_F105G.yaml b/resources/units/aircraft/VSN_F105G.yaml new file mode 100644 index 00000000..4f43b52a --- /dev/null +++ b/resources/units/aircraft/VSN_F105G.yaml @@ -0,0 +1,15 @@ +description: + "The Republic F-105 Thunderchief is a supersonic fighter-bomber that served with \ + \ the United States Air Force from 1958 to 1984. Capable of Mach 2, it conducted \ + \ the majority of strike bombing missions during the early years of the Vietnam War.\ + \ The F-105G variant is a two-seat model designed specifically for Suppression of \ + Enemy Air Defences (SEAD) / Wild Weasel missions." +introduced: 1967 +manufacturer: Republic Aviation +origin: USA +price: 9 +role: Fighter-Bomber +max_range: 150 +gunfighter: true +variants: + F-105G Thunderchief: {}