diff --git a/changelog.md b/changelog.md index 659c0245..550408ab 100644 --- a/changelog.md +++ b/changelog.md @@ -8,6 +8,7 @@ * **[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) +* **[Modding]** Added OH-6 Cayuse (v1.2) mod support, including the Vietnam Asset Pack v1.0 * **[Modding]** Added VSN EA-6B Prowler mod support (v2.9.4.102) * **[Modding]** Added tripod3 Cold War assets mod support (v1.0) * **[Campaign Setup]** Allow adjustments to naval TGOs (except carriers) on turn 0 diff --git a/game/factions/faction.py b/game/factions/faction.py index 54fee4c3..a08c8a29 100644 --- a/game/factions/faction.py +++ b/game/factions/faction.py @@ -352,6 +352,45 @@ class Faction: self.remove_aircraft("A-4E-C") if not mod_settings.hercules: self.remove_aircraft("Hercules") + if not mod_settings.oh_6: + self.remove_aircraft("OH-6A") + if not mod_settings.oh_6_vietnamassetpack: + self.remove_vehicle("vap_mutt_gun") + self.remove_vehicle("vap_type63_mlrs") + self.remove_vehicle("vap_vc_bicycle_mortar") + self.remove_vehicle("vap_zis_150_aa") + self.remove_vehicle("vap_us_hooch_LP") + self.remove_vehicle("vap_ammo_50cal_line") + self.remove_vehicle("vap_ammo_50cal_pack") + self.remove_vehicle("vap_barrels_line") + self.remove_vehicle("vap_barrels") + self.remove_vehicle("vap_ammo_box_pile") + self.remove_vehicle("vap_ammo_box_wood_long") + self.remove_vehicle("vap_ammo_box_wood_small") + self.remove_vehicle("vap_barrel_red") + self.remove_vehicle("vap_barrel_green") + self.remove_vehicle("vap_mre_boxes") + self.remove_vehicle("vap_mixed_cargo_1") + self.remove_vehicle("vap_mixed_cargo_2") + self.remove_vehicle("vap_watchtower") + self.remove_vehicle("vap_house_high") + self.remove_vehicle("vap_house_long") + self.remove_vehicle("vap_house_small") + self.remove_vehicle("vap_house_T") + self.remove_vehicle("vap_house_tiny") + self.remove_vehicle("vap_house1") + self.remove_vehicle("vap_us_hooch_radio") + self.remove_vehicle("vap_us_hooch_closed") + self.remove_vehicle("vap_vc_bunker_single") + self.remove_vehicle("vap_vc_mg_nest") + self.remove_vehicle("vap_mule") + self.remove_vehicle("vap_mutt") + self.remove_vehicle("vap_m35_truck") + self.remove_vehicle("vap_vc_zis") + self.remove_vehicle("vap_vc_bicycle") + self.remove_vehicle("vap_vc_zil") + self.remove_vehicle("vap_vc_bicycle_ak") + self.remove_ship("vap_us_seafloat") if not mod_settings.uh_60l: self.remove_aircraft("UH-60L") self.remove_aircraft("KC130J") diff --git a/game/missiongenerator/aircraft/aircraftbehavior.py b/game/missiongenerator/aircraft/aircraftbehavior.py index 45535774..9b129d15 100644 --- a/game/missiongenerator/aircraft/aircraftbehavior.py +++ b/game/missiongenerator/aircraft/aircraftbehavior.py @@ -392,23 +392,35 @@ class AircraftBehavior: if preferred_task in flight.unit_type.dcs_unit_type.tasks: group.task = preferred_task.name - elif fallback_tasks: + return + if fallback_tasks: for task in fallback_tasks: if task in flight.unit_type.dcs_unit_type.tasks: group.task = task.name return - elif flight.unit_type.dcs_unit_type.task_default and preferred_task == Nothing: + if flight.unit_type.dcs_unit_type.task_default and preferred_task == Nothing: group.task = flight.unit_type.dcs_unit_type.task_default.name logging.warning( f"{ac_type} is not capable of 'Nothing', using default task '{group.task}'" ) - else: - fallback_part = ( - f" nor any of the following fall-back tasks: {[task.name for task in fallback_tasks]}" - if fallback_tasks - else "" + return + if flight.roster.members and flight.roster.members[0].is_player: + group.task = ( + flight.unit_type.dcs_unit_type.task_default.name + if flight.unit_type.dcs_unit_type.task_default + else group.task # even if this is incompatible, if it's a client we don't really care... ) - raise RuntimeError( - f"{ac_type} is neither capable of {preferred_task.name}" - f"{fallback_part}. Can't generate {flight.flight_type} flight." + logging.warning( + f"Client override: {ac_type} is not capable of '{preferred_task}', using default task '{group.task}'" ) + return + + fallback_part = ( + f" nor any of the following fall-back tasks: {[task.name for task in fallback_tasks]}" + if fallback_tasks + else "" + ) + raise RuntimeError( + f"{ac_type} is neither capable of {preferred_task.name}" + f"{fallback_part}. Can't generate {flight.flight_type} flight." + ) diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index d1b512b1..3debeb96 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -84,6 +84,8 @@ class ModSettings: f106_deltadart: bool = False hercules: bool = False irondome: bool = False + oh_6: bool = False + oh_6_vietnamassetpack: bool = False uh_60l: bool = False jas39_gripen: bool = False sk_60: bool = False diff --git a/pydcs_extensions/__init__.py b/pydcs_extensions/__init__.py index 08731b9c..869bb13d 100644 --- a/pydcs_extensions/__init__.py +++ b/pydcs_extensions/__init__.py @@ -21,6 +21,8 @@ from .hercules import * from .highdigitsams import * from .irondome import * from .jas39 import * +from .oh6 import * +from .oh6_vietnamassetpack import * from .ov10a import * from .spanishnavypack import * from .super_etendard import * diff --git a/pydcs_extensions/oh6/__init__.py b/pydcs_extensions/oh6/__init__.py new file mode 100644 index 00000000..c0df1e5a --- /dev/null +++ b/pydcs_extensions/oh6/__init__.py @@ -0,0 +1 @@ +from .oh6 import * diff --git a/pydcs_extensions/oh6/oh6.py b/pydcs_extensions/oh6/oh6.py new file mode 100644 index 00000000..2ea6e1a7 --- /dev/null +++ b/pydcs_extensions/oh6/oh6.py @@ -0,0 +1,161 @@ +from typing import Set + +from dcs import task +from dcs.helicopters import HelicopterType + +from game.modsupport import helicoptermod +from pydcs_extensions.weapon_injector import inject_weapons + + +class WeaponsOH6: + Camrig = {"clsid": "{OH-6_CAMRIG}", "name": "Camrig", "weight": 70} + Frag_Grenade = {"clsid": "{OH6_FRAG}", "name": "Frag Grenade", "weight": 0} + M134_Door_Minigun = { + "clsid": "{OH-6_M134_Door}", + "name": "M134 Door Minigun", + "weight": 110, + } + M134_Minigun_ = { + "clsid": "{OH-6_M134_Minigun}", + "name": "M134 Minigun", + "weight": 39, + } + M60_Doorgun = {"clsid": "{OH-6_M60_Door}", "name": "M60 Doorgun", "weight": 110} + Searchlight = {"clsid": "{OH-6_Searchlight}", "name": "Searchlight", "weight": 70} + SMOKE_Grenade_Blue = { + "clsid": "{OH6_SMOKE_BLUE}", + "name": "SMOKE Grenade Blue", + "weight": 0, + } + SMOKE_Grenade_Green = { + "clsid": "{OH6_SMOKE_GREEN}", + "name": "SMOKE Grenade Green", + "weight": 0, + } + SMOKE_Grenade_RED = { + "clsid": "{OH6_SMOKE_RED}", + "name": "SMOKE Grenade RED", + "weight": 0, + } + SMOKE_Grenade_yellow = { + "clsid": "{OH6_SMOKE_YELLOW}", + "name": "SMOKE Grenade yellow", + "weight": 0, + } + XM158_Weapon_System__4_ = { + "clsid": "{OH6_XM158_4}", + "name": "XM158 Weapon System (4)", + "weight": 76.8, + } + XM158_Weapon_System__7_ = { + "clsid": "{OH6_XM158}", + "name": "XM158 Weapon System (7)", + "weight": 99.9, + } + + +inject_weapons(WeaponsOH6) + + +@helicoptermod +class OH_6A(HelicopterType): + id = "OH-6A" + flyable = True + height = 3 + width = 8.33 + length = 10 + fuel_max = 181 + max_speed = 217 + category = "Air" # Helicopter + radio_frequency = 262 + + panel_radio = { + 1: { + "channels": { + 1: 264, + 2: 265, + 4: 254, + 8: 258, + 16: 267, + 17: 251, + 9: 262, + 18: 253, + 5: 250, + 10: 259, + 20: 252, + 11: 268, + 3: 256, + 6: 270, + 12: 269, + 13: 260, + 7: 257, + 14: 263, + 19: 266, + 15: 261, + }, + }, + } + + property_defaults = { + "CableCutterEnables": False, + } + + class Properties: + class CableCutterEnables: + id = "CableCutterEnables" + + livery_name = "OH-6A" # from type + + class Pylon1: + SMOKE_Grenade_RED = (1, WeaponsOH6.SMOKE_Grenade_RED) + SMOKE_Grenade_Green = (1, WeaponsOH6.SMOKE_Grenade_Green) + SMOKE_Grenade_Blue = (1, WeaponsOH6.SMOKE_Grenade_Blue) + SMOKE_Grenade_yellow = (1, WeaponsOH6.SMOKE_Grenade_yellow) + + class Pylon2: + SMOKE_Grenade_RED = (2, WeaponsOH6.SMOKE_Grenade_RED) + SMOKE_Grenade_Green = (2, WeaponsOH6.SMOKE_Grenade_Green) + SMOKE_Grenade_Blue = (2, WeaponsOH6.SMOKE_Grenade_Blue) + SMOKE_Grenade_yellow = (2, WeaponsOH6.SMOKE_Grenade_yellow) + + class Pylon3: + SMOKE_Grenade_RED = (3, WeaponsOH6.SMOKE_Grenade_RED) + SMOKE_Grenade_Green = (3, WeaponsOH6.SMOKE_Grenade_Green) + SMOKE_Grenade_Blue = (3, WeaponsOH6.SMOKE_Grenade_Blue) + SMOKE_Grenade_yellow = (3, WeaponsOH6.SMOKE_Grenade_yellow) + + class Pylon4: + SMOKE_Grenade_RED = (4, WeaponsOH6.SMOKE_Grenade_RED) + SMOKE_Grenade_Green = (4, WeaponsOH6.SMOKE_Grenade_Green) + SMOKE_Grenade_Blue = (4, WeaponsOH6.SMOKE_Grenade_Blue) + SMOKE_Grenade_yellow = (4, WeaponsOH6.SMOKE_Grenade_yellow) + + class Pylon5: + Frag_Grenade = (5, WeaponsOH6.Frag_Grenade) + + # ERRR + # ERRR + + class Pylon8: + M134_Minigun_ = (8, WeaponsOH6.M134_Minigun_) + + class Pylon9: + XM158_Weapon_System__7_ = (9, WeaponsOH6.XM158_Weapon_System__7_) + XM158_Weapon_System__4_ = (9, WeaponsOH6.XM158_Weapon_System__4_) + + class Pylon10: + XM158_Weapon_System__7_ = (10, WeaponsOH6.XM158_Weapon_System__7_) + XM158_Weapon_System__4_ = (10, WeaponsOH6.XM158_Weapon_System__4_) + + class Pylon11: + M60_Doorgun = (11, WeaponsOH6.M60_Doorgun) + M134_Door_Minigun = (11, WeaponsOH6.M134_Door_Minigun) + + class Pylon12: + Camrig = (12, WeaponsOH6.Camrig) + Searchlight = (12, WeaponsOH6.Searchlight) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} + + tasks = [task.Transport, task.Reconnaissance] + task_default = task.Reconnaissance diff --git a/pydcs_extensions/oh6_vietnamassetpack/__init__.py b/pydcs_extensions/oh6_vietnamassetpack/__init__.py new file mode 100644 index 00000000..c6b04bae --- /dev/null +++ b/pydcs_extensions/oh6_vietnamassetpack/__init__.py @@ -0,0 +1 @@ +from .oh6_vietnamassetpack import * diff --git a/pydcs_extensions/oh6_vietnamassetpack/oh6_vietnamassetpack.py b/pydcs_extensions/oh6_vietnamassetpack/oh6_vietnamassetpack.py new file mode 100644 index 00000000..154b4312 --- /dev/null +++ b/pydcs_extensions/oh6_vietnamassetpack/oh6_vietnamassetpack.py @@ -0,0 +1,336 @@ +# Requires OH-6 Vietnam Asset Pack: +# https://github.com/tobi-be/DCS-OH-6A +# + +from typing import Set + +from dcs import unittype, task +from dcs.helicopters import HelicopterType + +from game.modsupport import vehiclemod, shipmod, helicoptermod + + +@vehiclemod +class Vap_mutt_gun(unittype.VehicleType): + id = "vap_mutt_gun" + name = "VAP US MUTT Gun" + detection_range = 0 + threat_range = 5000 + air_weapon_dist = 5000 + + +@vehiclemod +class Vap_type63_mlrs(unittype.VehicleType): + id = "vap_type63_mlrs" + name = "VAP VC Type63 107mm MLRS" + detection_range = 5000 + threat_range = 5000 + air_weapon_dist = 5000 + + +@vehiclemod +class Vap_vc_bicycle_mortar(unittype.VehicleType): + id = "vap_vc_bicycle_mortar" + name = "VAP VC Bicycle Mortar" + detection_range = 0 + threat_range = 7000 + air_weapon_dist = 7000 + + +@vehiclemod +class Vap_zis_150_aa(unittype.VehicleType): + id = "vap_zis_150_aa" + name = "VAP VC Zis 150 AAA" + detection_range = 5000 + threat_range = 7000 + air_weapon_dist = 7000 + + +@vehiclemod +class Vap_us_hooch_LP(unittype.VehicleType): + id = "vap_us_hooch_LP" + name = "VAP US Hooch Low Poly" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_ammo_50cal_line(unittype.VehicleType): + id = "vap_ammo_50cal_line" + name = "VAP US Ammo 50Cal Line" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_ammo_50cal_pack(unittype.VehicleType): + id = "vap_ammo_50cal_pack" + name = "VAP US Ammo 50Cal Pack" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_barrels_line(unittype.VehicleType): + id = "vap_barrels_line" + name = "VAP Barrels Line" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_barrels(unittype.VehicleType): + id = "vap_barrels" + name = "VAP Barrels Pack" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_ammo_box_pile(unittype.VehicleType): + id = "vap_ammo_box_pile" + name = "VAP Ammo Box Pile" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_ammo_box_wood_long(unittype.VehicleType): + id = "vap_ammo_box_wood_long" + name = "VAP Ammo Box Long" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_ammo_box_wood_small(unittype.VehicleType): + id = "vap_ammo_box_wood_small" + name = "VAP Ammo Box Small" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_barrel_red(unittype.VehicleType): + id = "vap_barrel_red" + name = "VAP Barrel Red" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_barrel_green(unittype.VehicleType): + id = "vap_barrel_green" + name = "VAP Barrel Green" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_mre_boxes(unittype.VehicleType): + id = "vap_mre_boxes" + name = "VAP US MRE Boxes" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_mixed_cargo_1(unittype.VehicleType): + id = "vap_mixed_cargo_1" + name = "VAP US Mixed Cargo 1" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_mixed_cargo_2(unittype.VehicleType): + id = "vap_mixed_cargo_2" + name = "VAP US Mixed Cargo 2" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_watchtower(unittype.VehicleType): + id = "vap_watchtower" + name = "VAP Vietcong Watchtower" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_house_high(unittype.VehicleType): + id = "vap_house_high" + name = "VAP Bamboo House High" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_house_long(unittype.VehicleType): + id = "vap_house_long" + name = "VAP Bamboo House Long" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_house_small(unittype.VehicleType): + id = "vap_house_small" + name = "VAP Bamboo House Small" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_house_T(unittype.VehicleType): + id = "vap_house_T" + name = "VAP Bamboo House T-Shape" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_house_tiny(unittype.VehicleType): + id = "vap_house_tiny" + name = "VAP Bamboo House Tiny" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_house1(unittype.VehicleType): + id = "vap_house1" + name = "VAP Bamboo House" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_us_hooch_radio(unittype.VehicleType): + id = "vap_us_hooch_radio" + name = "VAP US Hooch Radio" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_us_hooch_closed(unittype.VehicleType): + id = "vap_us_hooch_closed" + name = "VAP US Hooch" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_vc_bunker_single(unittype.VehicleType): + id = "vap_vc_bunker_single" + name = "VAP VC Bunker" + detection_range = 0 + threat_range = 800 + air_weapon_dist = 800 + + +@vehiclemod +class Vap_vc_mg_nest(unittype.VehicleType): + id = "vap_vc_mg_nest" + name = "VAP VC MG Nest" + detection_range = 1000 + threat_range = 500 + air_weapon_dist = 500 + + +@vehiclemod +class Vap_mule(unittype.VehicleType): + id = "vap_mule" + name = "VAP US Mule" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_mutt(unittype.VehicleType): + id = "vap_mutt" + name = "VAP US MUTT" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_m35_truck(unittype.VehicleType): + id = "vap_m35_truck" + name = "VAP US M35 Truck" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_vc_zis(unittype.VehicleType): + id = "vap_vc_zis" + name = "VAP VC Zis 150" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_vc_bicycle(unittype.VehicleType): + id = "vap_vc_bicycle" + name = "VAP VC Bicycle" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class Vap_vc_zil(unittype.VehicleType): + id = "vap_vc_zil" + name = "VAP VC Zil 130" + detection_range = 5000 + threat_range = 500 + air_weapon_dist = 500 + + +@vehiclemod +class Vap_vc_bicycle_ak(unittype.VehicleType): + id = "vap_vc_bicycle_ak" + name = "VAP VC Bicycle AK" + detection_range = 5000 + threat_range = 500 + air_weapon_dist = 500 + + +@shipmod +class Vap_us_seafloat(unittype.ShipType): + id = "vap_us_seafloat" + name = "VAP - US Sea Float Barge" + helicopter_num = 4 + parking = 4 + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 diff --git a/qt_ui/main.py b/qt_ui/main.py index 658c75dd..a3fd8781 100644 --- a/qt_ui/main.py +++ b/qt_ui/main.py @@ -335,6 +335,9 @@ def create_game( f104_starfighter=False, f105_thunderchief=False, hercules=False, + oh_6=False, + oh_6_vietnamassetpack=False, + uh_60l=False, jas39_gripen=False, sk60_saab105=False, su15_flagon=False, diff --git a/qt_ui/windows/newgame/QNewGameWizard.py b/qt_ui/windows/newgame/QNewGameWizard.py index ce4e4599..8ad07fd5 100644 --- a/qt_ui/windows/newgame/QNewGameWizard.py +++ b/qt_ui/windows/newgame/QNewGameWizard.py @@ -107,6 +107,8 @@ class NewGameWizard(QtWidgets.QWizard): f106_deltadart=self.field("f106_deltadart"), hercules=self.field("hercules"), irondome=self.field("irondome"), + oh_6=self.field("oh_6"), + oh_6_vietnamassetpack=self.field("oh_6_vietnamassetpack"), uh_60l=self.field("uh_60l"), jas39_gripen=self.field("jas39_gripen"), super_etendard=self.field("super_etendard"), diff --git a/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py b/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py index 43306117..417a132d 100644 --- a/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py +++ b/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py @@ -98,6 +98,10 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.registerField("ea6b_prowler", self.ea6b_prowler) self.hercules = QtWidgets.QCheckBox() self.registerField("hercules", self.hercules) + self.oh_6 = QtWidgets.QCheckBox() + self.registerField("oh_6", self.oh_6) + self.oh_6_vietnamassetpack = QtWidgets.QCheckBox() + self.registerField("oh_6_vietnamassetpack", self.oh_6_vietnamassetpack) self.uh_60l = QtWidgets.QCheckBox() self.registerField("uh_60l", self.uh_60l) self.f4bc_phantom = QtWidgets.QCheckBox() @@ -196,6 +200,8 @@ class GeneratorOptions(QtWidgets.QWizardPage): ("Su-57 Felon (build-04)", self.su57_felon), ("Super Étendard (v2.5.5)", self.super_etendard), ("Swedish Military Assets pack (1.10)", self.swedishmilitaryassetspack), + ("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), ] diff --git a/resources/customized_payloads/OH-6A.lua b/resources/customized_payloads/OH-6A.lua new file mode 100644 index 00000000..55678978 --- /dev/null +++ b/resources/customized_payloads/OH-6A.lua @@ -0,0 +1,153 @@ +local unitPayloads = { + ["name"] = "OH-6A", + ["payloads"] = { + [1] = { + ["displayName"] = "Retribution BAI", + ["name"] = "Retribution BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{OH-6_M60_Door}", + ["num"] = 11, + }, + [2] = { + ["CLSID"] = "", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{OH-6_M134_Minigun}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{OH6_FRAG}", + ["num"] = 5, + }, + [6] = { + ["CLSID"] = "{OH6_SMOKE_BLUE}", + ["num"] = 4, + }, + [7] = { + ["CLSID"] = "{OH6_SMOKE_GREEN}", + ["num"] = 3, + }, + [8] = { + ["CLSID"] = "{OH6_SMOKE_RED}", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "{OH6_SMOKE_YELLOW}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 17, + [2] = 35, + }, + }, + [2] = { + ["displayName"] = "Retribution OCA/Aircraft", + ["name"] = "Retribution OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{OH6_XM158}", + ["num"] = 10, + }, + [2] = { + ["CLSID"] = "{OH6_XM158}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{OH6_FRAG}", + ["num"] = 5, + }, + [4] = { + ["CLSID"] = "{OH6_SMOKE_BLUE}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "", + ["num"] = 6, + }, + [6] = { + ["CLSID"] = "", + ["num"] = 7, + }, + [7] = { + ["CLSID"] = "{OH6_SMOKE_GREEN}", + ["num"] = 3, + }, + [8] = { + ["CLSID"] = "{OH6_SMOKE_RED}", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "{OH6_SMOKE_YELLOW}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 35, + [2] = 17, + [3] = 31, + [4] = 15, + }, + }, + [3] = { + ["displayName"] = "Retribution CAS", + ["name"] = "Retribution CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{OH-6 M60 Door}", + ["num"] = 11, + }, + [2] = { + ["CLSID"] = "", + ["num"] = 6, + }, + [3] = { + ["CLSID"] = "", + ["num"] = 7, + }, + [4] = { + ["CLSID"] = "{OH-6 M134 Minigun}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{OH6_FRAG}", + ["num"] = 5, + }, + [6] = { + ["CLSID"] = "{OH6_SMOKE_BLUE}", + ["num"] = 4, + }, + [7] = { + ["CLSID"] = "{OH6_SMOKE_GREEN}", + ["num"] = 3, + }, + [8] = { + ["CLSID"] = "{OH6_SMOKE_RED}", + ["num"] = 2, + }, + [9] = { + ["CLSID"] = "{OH6_SMOKE_YELLOW}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 17, + [2] = 35, + }, + }, + }, + ["tasks"] = { + [1] = 35, + [2] = 17, + [3] = 31, + [4] = 15, + }, + ["unitType"] = "OH-6A", +} +return unitPayloads diff --git a/resources/factions/USA 1970 Vietnam War.json b/resources/factions/USA 1970 Vietnam War.json index ad949c55..1b2a43ba 100644 --- a/resources/factions/USA 1970 Vietnam War.json +++ b/resources/factions/USA 1970 Vietnam War.json @@ -7,6 +7,7 @@ "aircrafts": [ "CH-47D", "CH-53E", + "OH-6A Cayuse", "UH-1H Iroquois", "AH-1W SuperCobra", "OV-10A Bronco", @@ -38,7 +39,8 @@ "frontline_units": [ "M113", "M163 Vulcan Air Defense System", - "M60A3 \"Patton\"" + "M60A3 \"Patton\"", + "M151A1C MUTT w/ 106mm Recoilless Rifle" ], "artillery_units": [ "M109A6 Paladin" @@ -48,7 +50,10 @@ "Infantry M4 Georgia" ], "logistics_units": [ - "Truck M818 6x6" + "Truck M818 6x6", + "VAP US M35 Truck", + "M151 1/4-ton 4x4 utility truck", + "M274 1/2-ton 4x4 utility truck" ], "air_defense_units": [ "SAM Hawk SR (AN/MPQ-50)", diff --git a/resources/factions/USA 1971 Vietnam War.json b/resources/factions/USA 1971 Vietnam War.json index a6fb177c..7a812755 100644 --- a/resources/factions/USA 1971 Vietnam War.json +++ b/resources/factions/USA 1971 Vietnam War.json @@ -7,6 +7,7 @@ "aircrafts": [ "CH-47D", "CH-53E", + "OH-6A Cayuse", "UH-1H Iroquois", "AH-1W SuperCobra", "OV-10A Bronco", @@ -36,7 +37,8 @@ "frontline_units": [ "M113", "M163 Vulcan Air Defense System", - "M60A3 \"Patton\"" + "M60A3 \"Patton\"", + "M151A1C MUTT w/ 106mm Recoilless Rifle" ], "artillery_units": [ "M109A6 Paladin" @@ -46,7 +48,10 @@ "Infantry M4 Georgia" ], "logistics_units": [ - "Truck M818 6x6" + "Truck M818 6x6", + "VAP US M35 Truck", + "M151 1/4-ton 4x4 utility truck", + "M274 1/2-ton 4x4 utility truck" ], "air_defense_units": [ "SAM Hawk SR (AN/MPQ-50)", diff --git a/resources/factions/usa_1965.json b/resources/factions/usa_1965.json index 57cb6d7c..1e17ecfb 100644 --- a/resources/factions/usa_1965.json +++ b/resources/factions/usa_1965.json @@ -23,6 +23,7 @@ "F-105G Thunderchief", "F-106A Delta Dart", "F-106B Delta Dart", + "OH-6A Cayuse", "UH-1H Iroquois" ], "awacs": [ diff --git a/resources/factions/usa_1970.json b/resources/factions/usa_1970.json index b5af2894..c8fcc7db 100644 --- a/resources/factions/usa_1970.json +++ b/resources/factions/usa_1970.json @@ -20,6 +20,7 @@ "C-47 Skytrain", "C-130", "C-130J-30 Super Hercules", + "OH-6A Cayuse", "UH-1H Iroquois", "AH-1W SuperCobra", "OH-58D(R) Kiowa Warrior", diff --git a/resources/factions/usa_1975.json b/resources/factions/usa_1975.json index d60fb74a..2e1b4c82 100644 --- a/resources/factions/usa_1975.json +++ b/resources/factions/usa_1975.json @@ -27,6 +27,7 @@ "F-106B Delta Dart", "S-3B Viking", "OV-10A Bronco", + "OH-6A Cayuse", "UH-1H Iroquois" ], "awacs": [ diff --git a/resources/factions/vietcong_1970.json b/resources/factions/vietcong_1970.json new file mode 100644 index 00000000..d8c23d11 --- /dev/null +++ b/resources/factions/vietcong_1970.json @@ -0,0 +1,54 @@ +{ + "country": "Vietnam", + "name": "Viet Cong 1970", + "authors": "Ghosti", + "description": "

National Liberation Front of South Vietnam during the Vietnam War from 1965 to 1975. Includes air units of the PAVN/VPAF. Requires the OH-6 Vietnam Asset Pack.

", + "locales": [ + "vi_Vn" + ], + "aircrafts": [ + "Mi-8MTV2 Hip", + "MiG-19P Farmer-B", + "MiG-21bis Fishbed-N" + ], + "awacs": [], + "tankers": [], + "frontline_units": [ + "PT-76", + "VAP VC Zil 130 Armed", + "VAP VC Bicycle AK", + "VAP VC MG Nest", + "VAP VC Bunker" + ], + "artillery_units": [ + "VAP VC Type63 107mm MLRS" + ], + "logistics_units": [ + "VAP VC Zis 150", + "VAP VC Bicycle" + ], + "infantry_units": [ + "Infantry AK-74 Rus", + "VAP VC Bicycle Mortar" + ], + "missiles": [], + "preset_groups": [ + "KS-19/SON-9" + ], + "naval_units": [ + "Boat Armed Hi-speed", + "Boat Schnellboot type S130" + ], + "air_defense_units": [ + "VAP VC Zis 150 AAA", + "S-60 57mm", + "ZSU-57-2 'Sparka'", + "AAA ZU-23 Emplacement", + "ZU-23 on Ural-375", + "ZSU-23-4 Shilka" + ], + "requirements": { + "OH-6 Vietnam Asset Pack": "https://github.com/tobi-be/DCS-OH-6A" + }, + "doctrine": "coldwar" +} \ No newline at end of file diff --git a/resources/ui/units/aircrafts/banners/OH-6A.jpg b/resources/ui/units/aircrafts/banners/OH-6A.jpg new file mode 100644 index 00000000..b64d2648 Binary files /dev/null and b/resources/ui/units/aircrafts/banners/OH-6A.jpg differ diff --git a/resources/ui/units/aircrafts/icons/OH-6A_24.jpg b/resources/ui/units/aircrafts/icons/OH-6A_24.jpg new file mode 100644 index 00000000..fd4db2cb Binary files /dev/null and b/resources/ui/units/aircrafts/icons/OH-6A_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/PT_76_24.jpg b/resources/ui/units/vehicles/icons/PT_76_24.jpg new file mode 100644 index 00000000..fd092155 Binary files /dev/null and b/resources/ui/units/vehicles/icons/PT_76_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_m35_truck_24.jpg b/resources/ui/units/vehicles/icons/vap_m35_truck_24.jpg new file mode 100644 index 00000000..799e4464 Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_m35_truck_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_mule_24.jpg b/resources/ui/units/vehicles/icons/vap_mule_24.jpg new file mode 100644 index 00000000..340e3bb2 Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_mule_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_mutt_24.jpg b/resources/ui/units/vehicles/icons/vap_mutt_24.jpg new file mode 100644 index 00000000..a80c05a6 Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_mutt_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_mutt_gun_24.jpg b/resources/ui/units/vehicles/icons/vap_mutt_gun_24.jpg new file mode 100644 index 00000000..51bc3ae6 Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_mutt_gun_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_type63_mlrs_24.jpg b/resources/ui/units/vehicles/icons/vap_type63_mlrs_24.jpg new file mode 100644 index 00000000..a3f1291e Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_type63_mlrs_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_vc_bicycle_24.jpg b/resources/ui/units/vehicles/icons/vap_vc_bicycle_24.jpg new file mode 100644 index 00000000..46854ccf Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_vc_bicycle_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_vc_bicycle_ak_24.jpg b/resources/ui/units/vehicles/icons/vap_vc_bicycle_ak_24.jpg new file mode 100644 index 00000000..3d5bad2b Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_vc_bicycle_ak_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_vc_bicycle_mortar_24.jpg b/resources/ui/units/vehicles/icons/vap_vc_bicycle_mortar_24.jpg new file mode 100644 index 00000000..a8738fd6 Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_vc_bicycle_mortar_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_vc_bunker_single_24.jpg b/resources/ui/units/vehicles/icons/vap_vc_bunker_single_24.jpg new file mode 100644 index 00000000..74b3444c Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_vc_bunker_single_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_vc_mg_nest_24.jpg b/resources/ui/units/vehicles/icons/vap_vc_mg_nest_24.jpg new file mode 100644 index 00000000..cefb69ff Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_vc_mg_nest_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_vc_zil_24.jpg b/resources/ui/units/vehicles/icons/vap_vc_zil_24.jpg new file mode 100644 index 00000000..f3b2ef97 Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_vc_zil_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_vc_zis_24.jpg b/resources/ui/units/vehicles/icons/vap_vc_zis_24.jpg new file mode 100644 index 00000000..38409d5a Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_vc_zis_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/vap_zis_150_aa_24.jpg b/resources/ui/units/vehicles/icons/vap_zis_150_aa_24.jpg new file mode 100644 index 00000000..38409d5a Binary files /dev/null and b/resources/ui/units/vehicles/icons/vap_zis_150_aa_24.jpg differ diff --git a/resources/units/aircraft/OH-6A.yaml b/resources/units/aircraft/OH-6A.yaml new file mode 100644 index 00000000..3c8e16c9 --- /dev/null +++ b/resources/units/aircraft/OH-6A.yaml @@ -0,0 +1,20 @@ +class: Helicopter +carrier_capable: false +description: + The Hughes OH-6 Cayuse is a single-engine light helicopter designed and + produced by the American aerospace company Hughes Helicopters. +introduced: 1966 +lha_capable: false +can_carry_crates: false +manufacturer: Hughes Helicopters +origin: USA +price: 3 +role: Light Observation/Light Attack +variants: + OH-6A Cayuse: {} +tasks: + BAI: 0 + CAS: 0 + OCA/Aircraft: 0 + Air Assault: 50 + Transport: 50 diff --git a/resources/units/ground_units/vap_m35_truck.yaml b/resources/units/ground_units/vap_m35_truck.yaml new file mode 100644 index 00000000..3f747493 --- /dev/null +++ b/resources/units/ground_units/vap_m35_truck.yaml @@ -0,0 +1,4 @@ +class: Logistics +price: 3 +variants: + VAP US M35 Truck: null diff --git a/resources/units/ground_units/vap_mule.yaml b/resources/units/ground_units/vap_mule.yaml new file mode 100644 index 00000000..5db17c48 --- /dev/null +++ b/resources/units/ground_units/vap_mule.yaml @@ -0,0 +1,5 @@ +class: Logistics +price: 3 +variants: + VAP US Mule: {} + M274 1/2-ton 4x4 utility truck: {} diff --git a/resources/units/ground_units/vap_mutt.yaml b/resources/units/ground_units/vap_mutt.yaml new file mode 100644 index 00000000..95feade9 --- /dev/null +++ b/resources/units/ground_units/vap_mutt.yaml @@ -0,0 +1,5 @@ +class: Logistics +price: 3 +variants: + VAP US MUTT: {} + M151 1/4-ton 4x4 utility truck: {} diff --git a/resources/units/ground_units/vap_mutt_gun.yaml b/resources/units/ground_units/vap_mutt_gun.yaml new file mode 100644 index 00000000..65be3a93 --- /dev/null +++ b/resources/units/ground_units/vap_mutt_gun.yaml @@ -0,0 +1,6 @@ +class: ATGM +price: 10 +role: Self-Propelled Recoilless Rifle +variants: + VAP US MUTT Gun: {} + M151A1C MUTT w/ 106mm Recoilless Rifle: {} diff --git a/resources/units/ground_units/vap_type63_mlrs.yaml b/resources/units/ground_units/vap_type63_mlrs.yaml new file mode 100644 index 00000000..31103149 --- /dev/null +++ b/resources/units/ground_units/vap_type63_mlrs.yaml @@ -0,0 +1,5 @@ +class: Artillery +price: 10 +role: Multiple-Launch Rocket System +variants: + VAP VC Type63 107mm MLRS: {} diff --git a/resources/units/ground_units/vap_vc_bicycle.yaml b/resources/units/ground_units/vap_vc_bicycle.yaml new file mode 100644 index 00000000..c4e61801 --- /dev/null +++ b/resources/units/ground_units/vap_vc_bicycle.yaml @@ -0,0 +1,4 @@ +class: Logistics +price: 2 +variants: + VAP VC Bicycle: null diff --git a/resources/units/ground_units/vap_vc_bicycle_ak.yaml b/resources/units/ground_units/vap_vc_bicycle_ak.yaml new file mode 100644 index 00000000..a8d6d319 --- /dev/null +++ b/resources/units/ground_units/vap_vc_bicycle_ak.yaml @@ -0,0 +1,5 @@ +class: Recon +price: 2 +role: Recon +variants: + VAP VC Bicycle AK: {} diff --git a/resources/units/ground_units/vap_vc_bicycle_mortar.yaml b/resources/units/ground_units/vap_vc_bicycle_mortar.yaml new file mode 100644 index 00000000..76a9660c --- /dev/null +++ b/resources/units/ground_units/vap_vc_bicycle_mortar.yaml @@ -0,0 +1,5 @@ +class: Infantry +price: 0 +spawn_weight: 1 +variants: + VAP VC Bicycle Mortar: null diff --git a/resources/units/ground_units/vap_vc_bunker_single.yaml b/resources/units/ground_units/vap_vc_bunker_single.yaml new file mode 100644 index 00000000..8f91b683 --- /dev/null +++ b/resources/units/ground_units/vap_vc_bunker_single.yaml @@ -0,0 +1,4 @@ +class: IFV +price: 4 +variants: + VAP VC Bunker: null diff --git a/resources/units/ground_units/vap_vc_mg_nest.yaml b/resources/units/ground_units/vap_vc_mg_nest.yaml new file mode 100644 index 00000000..5e826596 --- /dev/null +++ b/resources/units/ground_units/vap_vc_mg_nest.yaml @@ -0,0 +1,4 @@ +class: APC +price: 3 +variants: + VAP VC MG Nest: null diff --git a/resources/units/ground_units/vap_vc_zil.yaml b/resources/units/ground_units/vap_vc_zil.yaml new file mode 100644 index 00000000..1cde6af3 --- /dev/null +++ b/resources/units/ground_units/vap_vc_zil.yaml @@ -0,0 +1,6 @@ +class: ATGM +description: +price: 7 +role: Armed Truck +variants: + VAP VC Zil 130 Armed: {} diff --git a/resources/units/ground_units/vap_vc_zis.yaml b/resources/units/ground_units/vap_vc_zis.yaml new file mode 100644 index 00000000..3550e0e3 --- /dev/null +++ b/resources/units/ground_units/vap_vc_zis.yaml @@ -0,0 +1,4 @@ +class: Logistics +price: 3 +variants: + VAP VC Zis 150: null diff --git a/resources/units/ground_units/vap_zis_150_aa.yaml b/resources/units/ground_units/vap_zis_150_aa.yaml new file mode 100644 index 00000000..9c119068 --- /dev/null +++ b/resources/units/ground_units/vap_zis_150_aa.yaml @@ -0,0 +1,6 @@ +class: AAA +description: +price: 7 +role: Self-Propelled Anti-Aircraft Gun +variants: + VAP VC Zis 150 AAA: {} diff --git a/resources/units/ships/vap_us_seafloat.yaml b/resources/units/ships/vap_us_seafloat.yaml new file mode 100644 index 00000000..6cffc0b5 --- /dev/null +++ b/resources/units/ships/vap_us_seafloat.yaml @@ -0,0 +1,4 @@ +class: Boat +price: 0 +variants: + VAP - US Sea Float Barge: null \ No newline at end of file