diff --git a/game/factions/faction.py b/game/factions/faction.py index a08c8a29..a87ff375 100644 --- a/game/factions/faction.py +++ b/game/factions/faction.py @@ -621,6 +621,21 @@ class Faction: self.remove_vehicle("TR_TT") self.remove_vehicle("Gozanti") self.remove_ship("Destroyer_carrier") + # vietnamwarvessels + if not mod_settings.vietnamwarvessels: + self.remove_ship("cva-31") + self.remove_ship("USS Maddox") + self.remove_ship("PBR_MKII") + self.remove_ship("P4") + self.remove_vehicle("vwv_bdg_indohut1") + self.remove_vehicle("vwv_bdg_indohut2") + self.remove_aircraft("vwv_a1_skyraider") + self.remove_aircraft("vwv_crusader") + self.remove_aircraft("vwv_crusader_np") + self.remove_aircraft("vwv_mig17f") + self.remove_aircraft("vwv_o-1") + self.remove_aircraft("vwv_sh2f") + self.remove_aircraft("vwv_hh2d") def remove_aircraft(self, name: str) -> None: for aircraft_set in [self.aircraft, self.awacs, self.tankers]: diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index 3debeb96..83ace629 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -100,6 +100,7 @@ class ModSettings: swedishmilitaryassetspack: bool = False coldwarassets: bool = False SWPack: bool = False + vietnamwarvessels: bool = False class GameGenerator: diff --git a/pydcs_extensions/vietnamwarvessels/__init__.py b/pydcs_extensions/vietnamwarvessels/__init__.py new file mode 100644 index 00000000..87bfb5e5 --- /dev/null +++ b/pydcs_extensions/vietnamwarvessels/__init__.py @@ -0,0 +1 @@ +from .vietnamwarvessels import * diff --git a/pydcs_extensions/vietnamwarvessels/vietnamwarvessels.py b/pydcs_extensions/vietnamwarvessels/vietnamwarvessels.py new file mode 100644 index 00000000..56c21063 --- /dev/null +++ b/pydcs_extensions/vietnamwarvessels/vietnamwarvessels.py @@ -0,0 +1,1025 @@ +# Requires Vietnam War Vessels for DCS by TeTeT: +# https://forum.dcs.world/topic/338387-tetets-vietnam-war-vessels/ +# https://github.com/tspindler-cms/tetet-vwv/releases + + +from typing import Set + +from dcs import unittype, task +from dcs.planes import PlaneType +from dcs.helicopters import HelicopterType +from dcs.weapons_data import Weapons + +from game.modsupport import vehiclemod, shipmod, planemod, helicoptermod + + +## SHIPS + + +@shipmod +class Cva_31(unittype.ShipType): + id = "cva-31" + name = "CVA-31 Bon Homme Richard" + plane_num = 8 + helicopter_num = 3 + parking = 2 + detection_range = 28000 + threat_range = 15000 + air_weapon_dist = 15000 + + +@shipmod +class USS_Maddox(unittype.ShipType): + id = "USS Maddox" + name = "USS Maddox (DD-731)" + detection_range = 45000 + threat_range = 18650 + air_weapon_dist = 18650 + + +@shipmod +class PBR_MKII(unittype.ShipType): + id = "PBR_MKII" + name = "Patrol Boat, River MkII" + detection_range = 40000 + threat_range = 5200 + air_weapon_dist = 5200 + + +@shipmod +class P4(unittype.ShipType): + id = "P4" + name = "P 4 Torpedo Boat" + detection_range = 3000 + threat_range = 1000 + air_weapon_dist = 1000 + + +## HUTS + + +@vehiclemod +class Vwv_bdg_indohut1(unittype.VehicleType): + id = "vwv_bdg_indohut1" + name = "VVW Indochina Hut High" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vwv_bdg_indohut2(unittype.VehicleType): + id = "vwv_bdg_indohut2" + name = "VVW Indochina Hut Low" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +## AIRPLANES + +# TODO inject weapons, see SWPack.py and a4ec.py + + +@planemod +class vwv_a1_skyraider(PlaneType): + id = "vwv_a1_skyraider" + height = 5.28 + width = 15.24 + length = 15.96 + fuel_max = 1036 + max_speed = 594 + chaff = 240 + flare = 240 + charge_total = 480 + chaff_charge_size = 1 + flare_charge_size = 1 + radio_frequency = 127.5 + + livery_name = "VWV_A1_SKYRAIDER" # from type + + class Pylon1: + AN_M30A1___100lb_GP_Bomb_LD = (1, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (1, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (1, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (1, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 1, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 1, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 1, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (1, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 1, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (1, Weapons.HVAR__UnGd_Rkt) + + class Pylon2: + AN_M30A1___100lb_GP_Bomb_LD = (2, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (2, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (2, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (2, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 2, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 2, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 2, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (2, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 2, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (2, Weapons.HVAR__UnGd_Rkt) + + class Pylon3: + AN_M30A1___100lb_GP_Bomb_LD = (3, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (3, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (3, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (3, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 3, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 3, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 3, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (3, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 3, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (3, Weapons.HVAR__UnGd_Rkt) + + class Pylon4: + AN_M30A1___100lb_GP_Bomb_LD = (4, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (4, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (4, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (4, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 4, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 4, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 4, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (4, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 4, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (4, Weapons.HVAR__UnGd_Rkt) + + class Pylon5: + AN_M30A1___100lb_GP_Bomb_LD = (5, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (5, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (5, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (5, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 5, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 5, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 5, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (5, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 5, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (5, Weapons.HVAR__UnGd_Rkt) + + class Pylon6: + AN_M30A1___100lb_GP_Bomb_LD = (6, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (6, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (6, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (6, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 6, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 6, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 6, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (6, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 6, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (6, Weapons.HVAR__UnGd_Rkt) + + class Pylon7: + AN_M30A1___100lb_GP_Bomb_LD = (7, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (7, Weapons.AN_M57___250lb_GP_Bomb_LD) + AN_M64___500lb_GP_Bomb_LD = (7, Weapons.AN_M64___500lb_GP_Bomb_LD) + AN_M65___1000lb_GP_Bomb_LD = (7, Weapons.AN_M65___1000lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + M117___750lb_GP_Bomb_LD = (7, Weapons.M117___750lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 7, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + 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) + Mk_84___2000lb_GP_Bomb_LD = (7, Weapons.Mk_84___2000lb_GP_Bomb_LD) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 7, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + AERO_1D_300_Gallons_Fuel_Tank_ = (7, Weapons.AERO_1D_300_Gallons_Fuel_Tank_) + # ERRR {DFT-150gal} + # ERRR {DFT-150gal_EMPTY} + _3_x_4_5_inch_M8_UnGd_Rocket = (7, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 7, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE_ = ( + 7, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE_, + ) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 7, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + Tiny_Tim = (7, Weapons.Tiny_Tim) + LTF_5b_Aerial_Torpedo = (7, Weapons.LTF_5b_Aerial_Torpedo) + DIS_mk46torp = (7, Weapons.DIS_mk46torp) + toilet_bomb = (7, Weapons.toilet_bomb) + + class Pylon8: + AN_M30A1___100lb_GP_Bomb_LD = (8, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (8, Weapons.AN_M57___250lb_GP_Bomb_LD) + AN_M64___500lb_GP_Bomb_LD = (8, Weapons.AN_M64___500lb_GP_Bomb_LD) + AN_M65___1000lb_GP_Bomb_LD = (8, Weapons.AN_M65___1000lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + M117___750lb_GP_Bomb_LD = (8, Weapons.M117___750lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 8, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + Mk_82___500lb_GP_Bomb_LD = (8, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (8, Weapons.Mk_83___1000lb_GP_Bomb_LD) + Mk_84___2000lb_GP_Bomb_LD = (8, Weapons.Mk_84___2000lb_GP_Bomb_LD) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 8, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + AERO_1D_300_Gallons_Fuel_Tank_ = (8, Weapons.AERO_1D_300_Gallons_Fuel_Tank_) + LTF_5b_Aerial_Torpedo = (8, Weapons.LTF_5b_Aerial_Torpedo) + DIS_mk46torp = (8, Weapons.DIS_mk46torp) + + class Pylon9: + AN_M30A1___100lb_GP_Bomb_LD = (9, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (9, Weapons.AN_M57___250lb_GP_Bomb_LD) + AN_M64___500lb_GP_Bomb_LD = (9, Weapons.AN_M64___500lb_GP_Bomb_LD) + AN_M65___1000lb_GP_Bomb_LD = (9, Weapons.AN_M65___1000lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + M117___750lb_GP_Bomb_LD = (9, Weapons.M117___750lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 9, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + Mk_82___500lb_GP_Bomb_LD = (9, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_83___1000lb_GP_Bomb_LD = (9, Weapons.Mk_83___1000lb_GP_Bomb_LD) + Mk_84___2000lb_GP_Bomb_LD = (9, Weapons.Mk_84___2000lb_GP_Bomb_LD) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 9, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + AERO_1D_300_Gallons_Fuel_Tank_ = (9, Weapons.AERO_1D_300_Gallons_Fuel_Tank_) + # ERRR {DFT-150gal} + # ERRR {DFT-150gal_EMPTY} + _3_x_4_5_inch_M8_UnGd_Rocket = (9, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 9, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE_ = ( + 9, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE_, + ) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 9, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + Tiny_Tim = (9, Weapons.Tiny_Tim) + LTF_5b_Aerial_Torpedo = (9, Weapons.LTF_5b_Aerial_Torpedo) + DIS_mk46torp = (9, Weapons.DIS_mk46torp) + toilet_bomb = (9, Weapons.toilet_bomb) + + class Pylon10: + AN_M30A1___100lb_GP_Bomb_LD = (10, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (10, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (10, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (10, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 10, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 10, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 10, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (10, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 10, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (10, Weapons.HVAR__UnGd_Rkt) + + class Pylon11: + AN_M30A1___100lb_GP_Bomb_LD = (11, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (11, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (11, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (11, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 11, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 11, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 11, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (11, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 11, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (11, Weapons.HVAR__UnGd_Rkt) + + class Pylon12: + AN_M30A1___100lb_GP_Bomb_LD = (12, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (12, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (12, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (12, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 12, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 12, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 12, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (12, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 12, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (12, Weapons.HVAR__UnGd_Rkt) + + class Pylon13: + AN_M30A1___100lb_GP_Bomb_LD = (13, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (13, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (13, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (13, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 13, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 13, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 13, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (13, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 13, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (13, Weapons.HVAR__UnGd_Rkt) + + class Pylon14: + AN_M30A1___100lb_GP_Bomb_LD = (14, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (14, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (14, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (14, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 14, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 14, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 14, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (14, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 14, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (14, Weapons.HVAR__UnGd_Rkt) + + class Pylon15: + AN_M30A1___100lb_GP_Bomb_LD = (15, Weapons.AN_M30A1___100lb_GP_Bomb_LD) + AN_M57___250lb_GP_Bomb_LD = (15, Weapons.AN_M57___250lb_GP_Bomb_LD) + # ERRR {AN-M81} + # ERRR {AN-M88} + AN_M64___500lb_GP_Bomb_LD = (15, Weapons.AN_M64___500lb_GP_Bomb_LD) + Mk_82___500lb_GP_Bomb_LD = (15, Weapons.Mk_82___500lb_GP_Bomb_LD) + Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets = ( + 15, + Weapons.Mk_20_Rockeye___490lbs_CBU__247_x_HEAT_Bomblets, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE = ( + 15, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Hydra_70_M151_HE, + ) + LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM = ( + 15, + Weapons.LAU_61___19_x_UnGd_Rkts__70_mm_Hydra_70_M156_SM, + ) + _3_x_4_5_inch_M8_UnGd_Rocket = (15, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 15, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + HVAR__UnGd_Rkt = (15, Weapons.HVAR__UnGd_Rkt) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} + + tasks = [ + task.GroundAttack, + task.CAS, + task.AFAC, + task.RunwayAttack, + task.AntishipStrike, + ] + task_default = task.CAS + + +@planemod +class vwv_crusader(PlaneType): + id = "vwv_crusader" + flyable = True + height = 4.8 + width = 10.72 + length = 16.61 + fuel_max = 4096 + max_speed = 1976.4 + chaff = 120 + flare = 120 + charge_total = 240 + chaff_charge_size = 1 + flare_charge_size = 1 + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 127.5 + + livery_name = "VWV_CRUSADER" # from type + + class Pylon1: + LAU3_HE151 = (1, Weapons.LAU3_HE151) + LAU3_HE5 = (1, Weapons.LAU3_HE5) + BRU_33_2_x_LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 1, + Weapons.BRU_33_2_x_LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD = ( + 1, + Weapons.BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD, + ) + BRU_33_with_2_x_Mk_82_Snakeye___500lb_GP_Bomb_HD = ( + 1, + Weapons.BRU_33_with_2_x_Mk_82_Snakeye___500lb_GP_Bomb_HD, + ) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 1, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + _2_Mk_82_Snakeye____ = (1, Weapons._2_Mk_82_Snakeye____) + _2_Mk_82____ = (1, Weapons._2_Mk_82____) + BRU_41A_with_4_x_Mk_82___500lb_GP_Bomb_HD_Left = ( + 1, + Weapons.BRU_41A_with_4_x_Mk_82___500lb_GP_Bomb_HD_Left, + ) + BRU_41A_with_4_x_Mk_82_Snakeye___500lb_GP_Bomb_HD_Left = ( + 1, + Weapons.BRU_41A_with_4_x_Mk_82_Snakeye___500lb_GP_Bomb_HD_Left, + ) + M117___750lb_GP_Bomb_LD = (1, Weapons.M117___750lb_GP_Bomb_LD) + Mk_84___2000lb_GP_Bomb_LD = (1, Weapons.Mk_84___2000lb_GP_Bomb_LD) + + # ERRR {DFT-300gal_LR} + # ERRR {DFT-300gal_LR_EMPTY} + # ERRR {DFT-150gal} + # ERRR {DFT-150gal_EMPTY} + # ERRR + + class Pylon2: + AIM_9B_Sidewinder_IR_AAM = (2, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9C_Sidewinder_SARH_AAM = (2, Weapons.AIM_9C_Sidewinder_SARH_AAM) + AIM_9D_Sidewinder_IR_AAM = (2, Weapons.AIM_9D_Sidewinder_IR_AAM) + AIM_9J_Sidewinder_IR_AAM = (2, Weapons.AIM_9J_Sidewinder_IR_AAM) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 2, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + + class Pylon3: + AIM_9B_Sidewinder_IR_AAM = (3, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9C_Sidewinder_SARH_AAM = (3, Weapons.AIM_9C_Sidewinder_SARH_AAM) + AIM_9D_Sidewinder_IR_AAM = (3, Weapons.AIM_9D_Sidewinder_IR_AAM) + AIM_9J_Sidewinder_IR_AAM = (3, Weapons.AIM_9J_Sidewinder_IR_AAM) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 3, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + + class Pylon4: + AIM_9B_Sidewinder_IR_AAM = (4, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9C_Sidewinder_SARH_AAM = (4, Weapons.AIM_9C_Sidewinder_SARH_AAM) + AIM_9D_Sidewinder_IR_AAM = (4, Weapons.AIM_9D_Sidewinder_IR_AAM) + AIM_9J_Sidewinder_IR_AAM = (4, Weapons.AIM_9J_Sidewinder_IR_AAM) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 4, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + + class Pylon5: + AIM_9B_Sidewinder_IR_AAM = (5, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9C_Sidewinder_SARH_AAM = (5, Weapons.AIM_9C_Sidewinder_SARH_AAM) + AIM_9D_Sidewinder_IR_AAM = (5, Weapons.AIM_9D_Sidewinder_IR_AAM) + AIM_9J_Sidewinder_IR_AAM = (5, Weapons.AIM_9J_Sidewinder_IR_AAM) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 5, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + + class Pylon6: + LAU3_HE151 = (6, Weapons.LAU3_HE151) + LAU3_HE5 = (6, Weapons.LAU3_HE5) + BRU_33_2_x_LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 6, + Weapons.BRU_33_2_x_LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD = ( + 6, + Weapons.BRU_33_with_2_x_Mk_82___500lb_GP_Bomb_LD, + ) + BRU_33_with_2_x_Mk_82_Snakeye___500lb_GP_Bomb_HD = ( + 6, + Weapons.BRU_33_with_2_x_Mk_82_Snakeye___500lb_GP_Bomb_HD, + ) + LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE = ( + 6, + Weapons.LAU_10___4_x_UnGd_Rkts__127_mm_Zuni_Mk__24_Mod__1_HE, + ) + _2_Mk_82_Snakeye_____ = (6, Weapons._2_Mk_82_Snakeye_____) + _2_Mk_82_____ = (6, Weapons._2_Mk_82_____) + BRU_41A_with_4_x_Mk_82___500lb_GP_Bomb_HD_Right = ( + 6, + Weapons.BRU_41A_with_4_x_Mk_82___500lb_GP_Bomb_HD_Right, + ) + BRU_41A_with_4_x_Mk_82_Snakeye___500lb_GP_Bomb_HD_Right = ( + 6, + Weapons.BRU_41A_with_4_x_Mk_82_Snakeye___500lb_GP_Bomb_HD_Right, + ) + M117___750lb_GP_Bomb_LD = (6, Weapons.M117___750lb_GP_Bomb_LD) + Mk_84___2000lb_GP_Bomb_LD = (6, Weapons.Mk_84___2000lb_GP_Bomb_LD) + + # ERRR {DFT-300gal_LR} + # ERRR {DFT-300gal_LR_EMPTY} + # ERRR {DFT-150gal} + # ERRR {DFT-150gal_EMPTY} + # ERRR + + pylons: Set[int] = {1, 2, 3, 4, 5, 6} + + tasks = [ + task.CAP, + task.Escort, + task.FighterSweep, + task.Intercept, + task.Reconnaissance, + task.GroundAttack, + task.CAS, + task.AntishipStrike, + ] + task_default = task.CAP + + +@planemod +class vwv_crusader_np(PlaneType): + id = "vwv_crusader_np" + flyable = True + height = 4.8 + width = 10.72 + length = 16.61 + fuel_max = 4096 + max_speed = 1976.4 + chaff = 120 + flare = 120 + charge_total = 240 + chaff_charge_size = 1 + flare_charge_size = 1 + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 127.5 + + livery_name = "VWV_CRUSADER_NP" # from type + + class Pylon2: + AIM_9B_Sidewinder_IR_AAM = (2, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9J_Sidewinder_IR_AAM = (2, Weapons.AIM_9J_Sidewinder_IR_AAM) + R550_Magic_1_IR_AAM = (2, Weapons.R550_Magic_1_IR_AAM) + + class Pylon3: + AIM_9B_Sidewinder_IR_AAM = (3, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9J_Sidewinder_IR_AAM = (3, Weapons.AIM_9J_Sidewinder_IR_AAM) + R550_Magic_1_IR_AAM = (3, Weapons.R550_Magic_1_IR_AAM) + + class Pylon4: + AIM_9B_Sidewinder_IR_AAM = (4, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9J_Sidewinder_IR_AAM = (4, Weapons.AIM_9J_Sidewinder_IR_AAM) + R550_Magic_1_IR_AAM = (4, Weapons.R550_Magic_1_IR_AAM) + + class Pylon5: + AIM_9B_Sidewinder_IR_AAM = (5, Weapons.AIM_9B_Sidewinder_IR_AAM) + AIM_9J_Sidewinder_IR_AAM = (5, Weapons.AIM_9J_Sidewinder_IR_AAM) + R550_Magic_1_IR_AAM = (5, Weapons.R550_Magic_1_IR_AAM) + + pylons: Set[int] = {2, 3, 4, 5} + + tasks = [ + task.CAP, + task.Escort, + task.FighterSweep, + task.Intercept, + task.Reconnaissance, + ] + task_default = task.CAP + + +@planemod +class vwv_mig17f(PlaneType): + id = "vwv_mig17f" + flyable = True + height = 3.8 + width = 9.628 + length = 11.09 + fuel_max = 1140 + max_speed = 1224 + chaff = 48 + flare = 48 + charge_total = 96 + chaff_charge_size = 1 + flare_charge_size = 1 + category = "Interceptor" # {78EFB7A2-FD52-4b57-A6A6-3BF0E1D6555F} + radio_frequency = 127.5 + + livery_name = "VWV_MIG17F" # from type + + class Pylon1: + FAB_50 = (1, Weapons.FAB_50) + FAB_250___250kg_GP_Bomb_LD = (1, Weapons.FAB_250___250kg_GP_Bomb_LD) + B_8V20A_CM = (1, Weapons.B_8V20A_CM) + B_8V20A_OM = (1, Weapons.B_8V20A_OM) + B_8M1___20_S_8OFP2 = (1, Weapons.B_8M1___20_S_8OFP2) + # ERRR B-8V20A - 20 S-8OFP2 + FAB_100M = (1, Weapons.FAB_100M) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 1, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + + class Pylon2: + FAB_50 = (2, Weapons.FAB_50) + FAB_250___250kg_GP_Bomb_LD = (2, Weapons.FAB_250___250kg_GP_Bomb_LD) + B_8V20A_CM = (2, Weapons.B_8V20A_CM) + B_8V20A_OM = (2, Weapons.B_8V20A_OM) + B_8M1___20_S_8OFP2 = (2, Weapons.B_8M1___20_S_8OFP2) + # ERRR B-8V20A - 20 S-8OFP2 + FAB_100M = (2, Weapons.FAB_100M) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 2, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + + pylons: Set[int] = {1, 2} + + tasks = [ + task.CAP, + task.Escort, + task.FighterSweep, + task.Intercept, + task.Reconnaissance, + task.GroundAttack, + task.CAS, + task.AFAC, + task.RunwayAttack, + ] + task_default = task.CAP + + +@planemod +class vwv_o_1(PlaneType): + id = "vwv_o-1" + height = 2.24 + width = 10.97 + length = 7.87 + fuel_max = 160 + max_speed = 648 + radio_frequency = 127.5 + + livery_name = "VWV_O-1" # from type + + class Pylon1: + _3_x_4_5_inch_M8_UnGd_Rocket = (1, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 1, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_M156_SM = ( + 1, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_M156_SM, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_1_HE = ( + 1, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_1_HE, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_5_HEAT = ( + 1, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_5_HEAT, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Red = ( + 1, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Red, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Yellow = ( + 1, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Yellow, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Green = ( + 1, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Green, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_256_H1_HE_Frag = ( + 1, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_256_H1_HE_Frag, + ) + + class Pylon2: + _3_x_4_5_inch_M8_UnGd_Rocket = (2, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 2, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_M156_SM = ( + 2, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_M156_SM, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_1_HE = ( + 2, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_1_HE, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_5_HEAT = ( + 2, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_5_HEAT, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Red = ( + 2, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Red, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Yellow = ( + 2, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Yellow, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Green = ( + 2, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Green, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_256_H1_HE_Frag = ( + 2, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_256_H1_HE_Frag, + ) + + class Pylon3: + _3_x_4_5_inch_M8_UnGd_Rocket = (3, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 3, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_M156_SM = ( + 3, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_M156_SM, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_1_HE = ( + 3, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_1_HE, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_5_HEAT = ( + 3, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_5_HEAT, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Red = ( + 3, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Red, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Yellow = ( + 3, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Yellow, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Green = ( + 3, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Green, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_256_H1_HE_Frag = ( + 3, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_256_H1_HE_Frag, + ) + + class Pylon4: + _3_x_4_5_inch_M8_UnGd_Rocket = (4, Weapons._3_x_4_5_inch_M8_UnGd_Rocket) + SUU_25_x_8_LUU_2___Target_Marker_Flares = ( + 4, + Weapons.SUU_25_x_8_LUU_2___Target_Marker_Flares, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_M156_SM = ( + 4, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_M156_SM, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_1_HE = ( + 4, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_1_HE, + ) + LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_5_HEAT = ( + 4, + Weapons.LAU_68___7_x_UnGd_Rkts__70_mm_Mk_4_FFAR_Mk_5_HEAT, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Red = ( + 4, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Red, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Yellow = ( + 4, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Yellow, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Green = ( + 4, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_254_H1_SM_Green, + ) + Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_256_H1_HE_Frag = ( + 4, + Weapons.Telson_8___8_x_UnGd_Rkts__68_mm_SNEB_Type_256_H1_HE_Frag, + ) + + pylons: Set[int] = {1, 2, 3, 4} + + tasks = [ + task.CAP, + task.CAS, + task.Escort, + task.FighterSweep, + task.GroundAttack, + task.Intercept, + ] + task_default = task.CAS + + +## HELICOPTERS + + +@helicoptermod +class vwv_sh2f(HelicopterType): + id = "vwv_sh2f" + height = 4.893 + width = 16.4 + length = 18.654 + fuel_max = 1100 + max_speed = 295 + category = "Air" # {828CEADE-3F1D-40aa-93CE-8CDB73FE2710} + + livery_name = "VWV_SH2F" # from type + + class Pylon1: + DIS_mk46torp = (1, Weapons.DIS_mk46torp) + + class Pylon4: + DIS_mk46torp = (4, Weapons.DIS_mk46torp) + + # ERRR CABLE_MH6 + # ERRR suspended_soldier + + pylons: Set[int] = {1, 4, 5} + + tasks = [ + task.CAP, + task.Escort, + task.Intercept, + task.FighterSweep, + task.GroundAttack, + task.CAS, + task.AFAC, + task.RunwayAttack, + task.AntishipStrike, + ] + task_default = task.AntishipStrike + + +@helicoptermod +class vwv_hh2d(HelicopterType): + id = "vwv_hh2d" + height = 4.893 + width = 16.4 + length = 18.654 + fuel_max = 1100 + max_speed = 295 + category = "Air" # {828CEADE-3F1D-40aa-93CE-8CDB73FE2710} + radio_frequency = 251 + + livery_name = "VWV_HH2D" # from type + # ERRR {DFT-150gal} + + class Pylon1: + _108_US_gal__Paper_Fuel_Tank = (1, Weapons._108_US_gal__Paper_Fuel_Tank) + + # ERRR {DFT-150gal} + + class Pylon4: + _108_US_gal__Paper_Fuel_Tank = (4, Weapons._108_US_gal__Paper_Fuel_Tank) + + class Pylon5: + ab_212_cable = (5, Weapons.ab_212_cable) + rescue_crew_sling = (5, Weapons.rescue_crew_sling) + uscg_stretcher = (5, Weapons.uscg_stretcher) + + pylons: Set[int] = {1, 4, 5} + + tasks = [task.Escort, task.GroundAttack, task.CAS, task.AFAC, task.AntishipStrike] + task_default = task.AntishipStrike diff --git a/qt_ui/windows/newgame/QNewGameWizard.py b/qt_ui/windows/newgame/QNewGameWizard.py index 8ad07fd5..3a58e08b 100644 --- a/qt_ui/windows/newgame/QNewGameWizard.py +++ b/qt_ui/windows/newgame/QNewGameWizard.py @@ -123,6 +123,7 @@ class NewGameWizard(QtWidgets.QWizard): swedishmilitaryassetspack=self.field("swedishmilitaryassetspack"), coldwarassets=self.field("coldwarassets"), SWPack=self.field("SWPack"), + vietnamwarvessels=self.field("vietnamwarvessels"), ) blue_faction = self.faction_selection_page.selected_blue_faction diff --git a/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py b/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py index 417a132d..c42562c0 100644 --- a/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py +++ b/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py @@ -158,6 +158,8 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.registerField("spanishnavypack", self.spanishnavypack) self.irondome = QtWidgets.QCheckBox() self.registerField("irondome", self.irondome) + self.vietnamwarvessels = QtWidgets.QCheckBox() + self.registerField("vietnamwarvessels", self.vietnamwarvessels) modHelpText = QtWidgets.QLabel( "

Select the mods you have installed. If your chosen factions support them, you'll be able to use these mods in your campaign.

" @@ -203,6 +205,7 @@ class GeneratorOptions(QtWidgets.QWizardPage): ("OH-6 Cayuse (v1.2)", self.oh_6), ("OH-6 Vietnam Asset Pack (v1.0)", self.oh_6_vietnamassetpack), ("UH-60L Black Hawk (v1.3.1)", self.uh_60l), + ("Vietnam War Vessels (v0.8.0)", self.vietnamwarvessels), ] for i in range(len(mod_pairs)): @@ -270,3 +273,4 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.swedishmilitaryassetspack.setChecked( s.get("swedishmilitaryassetspack", False) ) + self.vietnamwarvessels.setChecked(s.get("vietnamwarvessels", False))