From f07cc83c5b1b6b8fd671248a36723df09fb8583a Mon Sep 17 00:00:00 2001 From: Druss99 <42724070+Druss99@users.noreply.github.com> Date: Tue, 7 Jan 2025 14:54:50 -0500 Subject: [PATCH] CurrentHill Russian Military Assets Pack (#448) --- game/data/radar_db.py | 35 + game/factions/faction.py | 55 + game/modsupport.py | 13 +- game/theater/start_generator.py | 1 + pydcs_extensions/__init__.py | 1 + .../russianmilitaryassetspack/__init__.py | 1 + .../russianmilitaryassetspack.py | 1250 +++++++++++++++++ qt_ui/uiconstants.py | 5 + qt_ui/windows/newgame/QNewGameWizard.py | 1 + .../newgame/WizardPages/QGeneratorSettings.py | 9 + resources/customized_payloads/CH_Ka52.lua | 158 +++ resources/customized_payloads/CH_Ka52K.lua | 151 ++ resources/customized_payloads/CH_Mi28N.lua | 109 ++ resources/customized_payloads/CH_Tu-160M2.lua | 60 + resources/customized_payloads/CH_Tu-95MSM.lua | 140 ++ resources/factions/CH_russia_2020.json | 120 ++ resources/groups/BAL_LBASM.yaml | 8 + resources/groups/BUK_M3.yaml | 11 + resources/groups/Bastion-P_LBASM.yaml | 8 + resources/groups/CH_Russian-Navy.yaml | 11 + resources/groups/S-350.yaml | 11 + resources/layouts/anti_air/BUK_M3_Site.yaml | 61 + resources/layouts/anti_air/S-350_Site.yaml | 58 + .../layouts/defenses/Bastion-P_LBASM.yaml | 37 + .../ui/units/aircrafts/banners/CH_Ka52.jpg | Bin 0 -> 24054 bytes .../ui/units/aircrafts/banners/CH_Ka52K.jpg | Bin 0 -> 22606 bytes .../ui/units/aircrafts/banners/CH_Mi28N.jpg | Bin 0 -> 13382 bytes .../units/aircrafts/banners/CH_Tu-160M2.jpg | Bin 0 -> 16742 bytes .../units/aircrafts/banners/CH_Tu-95MSM.jpg | Bin 0 -> 17527 bytes .../ui/units/aircrafts/icons/CH_Ka52.jpg | Bin 0 -> 941 bytes .../ui/units/aircrafts/icons/CH_Ka52K.jpg | Bin 0 -> 920 bytes .../ui/units/aircrafts/icons/CH_Mi28N.jpg | Bin 0 -> 809 bytes .../ui/units/aircrafts/icons/CH_Tu-160M2.jpg | Bin 0 -> 848 bytes .../ui/units/aircrafts/icons/CH_Tu-95MSM.jpg | Bin 0 -> 847 bytes resources/units/aircraft/CH_Ka52.yaml | 31 + resources/units/aircraft/CH_Ka52K.yaml | 32 + resources/units/aircraft/CH_Mi28N.yaml | 22 + resources/units/aircraft/CH_Tu-160M2.yaml | 23 + resources/units/aircraft/CH_Tu-95MSM.yaml | 23 + resources/units/ground_units/CH_2S35.yaml | 13 + resources/units/ground_units/CH_2S38.yaml | 13 + resources/units/ground_units/CH_2S38_LG.yaml | 13 + resources/units/ground_units/CH_3K60_BAL.yaml | 4 + resources/units/ground_units/CH_9M133.yaml | 5 + resources/units/ground_units/CH_BMD4.yaml | 15 + .../units/ground_units/CH_BukM3_9A317M.yaml | 4 + .../units/ground_units/CH_BukM3_9A317MA.yaml | 4 + .../units/ground_units/CH_BukM3_9S18M13.yaml | 19 + .../units/ground_units/CH_BukM3_9S36M.yaml | 12 + .../units/ground_units/CH_BukM3_9S510M.yaml | 4 + .../units/ground_units/CH_DSHK_HMG_RUS.yaml | 5 + .../units/ground_units/CH_DSHK_HMG_UKR.yaml | 5 + .../units/ground_units/CH_IskanderK.yaml | 11 + .../units/ground_units/CH_IskanderM.yaml | 11 + .../ground_units/CH_RussianInfantry_Kord.yaml | 5 + .../units/ground_units/CH_S350_50K6.yaml | 4 + .../units/ground_units/CH_S350_50N6.yaml | 18 + .../ground_units/CH_S350_50P6_9M100.yaml | 11 + .../ground_units/CH_S350_50P6_9M96D.yaml | 11 + .../units/ground_units/CH_S350_96L6.yaml | 18 + resources/units/ground_units/CH_T14.yaml | 11 + resources/units/ground_units/CH_T80BVM.yaml | 12 + resources/units/ground_units/CH_T90A.yaml | 13 + resources/units/ground_units/CH_T90M.yaml | 13 + resources/units/ground_units/CH_TOS1A.yaml | 14 + resources/units/ground_units/CH_TigrM.yaml | 4 + resources/units/ground_units/K300P.yaml | 4 + resources/units/ground_units/MonolitB.yaml | 4 + resources/units/ground_units/PantsirS1.yaml | 14 + resources/units/ground_units/PantsirS2.yaml | 14 + resources/units/ground_units/TorM2.yaml | 13 + resources/units/ground_units/TorM2K.yaml | 13 + resources/units/ground_units/TorM2M.yaml | 13 + resources/units/ships/Admiral_Gorshkov.yaml | 4 + .../units/ships/CH_Gremyashchiy_AShM.yaml | 4 + .../units/ships/CH_Gremyashchiy_LACM.yaml | 4 + .../units/ships/CH_Grigorovich_AShM.yaml | 4 + .../units/ships/CH_Grigorovich_LACM.yaml | 4 + resources/units/ships/CH_Project22160.yaml | 4 + resources/units/ships/CH_Steregushchiy.yaml | 4 + resources/units/ships/Karakurt_AShM.yaml | 4 + resources/units/ships/Karakurt_LACM.yaml | 4 + 82 files changed, 2827 insertions(+), 1 deletion(-) create mode 100644 pydcs_extensions/russianmilitaryassetspack/__init__.py create mode 100644 pydcs_extensions/russianmilitaryassetspack/russianmilitaryassetspack.py create mode 100644 resources/customized_payloads/CH_Ka52.lua create mode 100644 resources/customized_payloads/CH_Ka52K.lua create mode 100644 resources/customized_payloads/CH_Mi28N.lua create mode 100644 resources/customized_payloads/CH_Tu-160M2.lua create mode 100644 resources/customized_payloads/CH_Tu-95MSM.lua create mode 100644 resources/factions/CH_russia_2020.json create mode 100644 resources/groups/BAL_LBASM.yaml create mode 100644 resources/groups/BUK_M3.yaml create mode 100644 resources/groups/Bastion-P_LBASM.yaml create mode 100644 resources/groups/CH_Russian-Navy.yaml create mode 100644 resources/groups/S-350.yaml create mode 100644 resources/layouts/anti_air/BUK_M3_Site.yaml create mode 100644 resources/layouts/anti_air/S-350_Site.yaml create mode 100644 resources/layouts/defenses/Bastion-P_LBASM.yaml create mode 100644 resources/ui/units/aircrafts/banners/CH_Ka52.jpg create mode 100644 resources/ui/units/aircrafts/banners/CH_Ka52K.jpg create mode 100644 resources/ui/units/aircrafts/banners/CH_Mi28N.jpg create mode 100644 resources/ui/units/aircrafts/banners/CH_Tu-160M2.jpg create mode 100644 resources/ui/units/aircrafts/banners/CH_Tu-95MSM.jpg create mode 100644 resources/ui/units/aircrafts/icons/CH_Ka52.jpg create mode 100644 resources/ui/units/aircrafts/icons/CH_Ka52K.jpg create mode 100644 resources/ui/units/aircrafts/icons/CH_Mi28N.jpg create mode 100644 resources/ui/units/aircrafts/icons/CH_Tu-160M2.jpg create mode 100644 resources/ui/units/aircrafts/icons/CH_Tu-95MSM.jpg create mode 100644 resources/units/aircraft/CH_Ka52.yaml create mode 100644 resources/units/aircraft/CH_Ka52K.yaml create mode 100644 resources/units/aircraft/CH_Mi28N.yaml create mode 100644 resources/units/aircraft/CH_Tu-160M2.yaml create mode 100644 resources/units/aircraft/CH_Tu-95MSM.yaml create mode 100644 resources/units/ground_units/CH_2S35.yaml create mode 100644 resources/units/ground_units/CH_2S38.yaml create mode 100644 resources/units/ground_units/CH_2S38_LG.yaml create mode 100644 resources/units/ground_units/CH_3K60_BAL.yaml create mode 100644 resources/units/ground_units/CH_9M133.yaml create mode 100644 resources/units/ground_units/CH_BMD4.yaml create mode 100644 resources/units/ground_units/CH_BukM3_9A317M.yaml create mode 100644 resources/units/ground_units/CH_BukM3_9A317MA.yaml create mode 100644 resources/units/ground_units/CH_BukM3_9S18M13.yaml create mode 100644 resources/units/ground_units/CH_BukM3_9S36M.yaml create mode 100644 resources/units/ground_units/CH_BukM3_9S510M.yaml create mode 100644 resources/units/ground_units/CH_DSHK_HMG_RUS.yaml create mode 100644 resources/units/ground_units/CH_DSHK_HMG_UKR.yaml create mode 100644 resources/units/ground_units/CH_IskanderK.yaml create mode 100644 resources/units/ground_units/CH_IskanderM.yaml create mode 100644 resources/units/ground_units/CH_RussianInfantry_Kord.yaml create mode 100644 resources/units/ground_units/CH_S350_50K6.yaml create mode 100644 resources/units/ground_units/CH_S350_50N6.yaml create mode 100644 resources/units/ground_units/CH_S350_50P6_9M100.yaml create mode 100644 resources/units/ground_units/CH_S350_50P6_9M96D.yaml create mode 100644 resources/units/ground_units/CH_S350_96L6.yaml create mode 100644 resources/units/ground_units/CH_T14.yaml create mode 100644 resources/units/ground_units/CH_T80BVM.yaml create mode 100644 resources/units/ground_units/CH_T90A.yaml create mode 100644 resources/units/ground_units/CH_T90M.yaml create mode 100644 resources/units/ground_units/CH_TOS1A.yaml create mode 100644 resources/units/ground_units/CH_TigrM.yaml create mode 100644 resources/units/ground_units/K300P.yaml create mode 100644 resources/units/ground_units/MonolitB.yaml create mode 100644 resources/units/ground_units/PantsirS1.yaml create mode 100644 resources/units/ground_units/PantsirS2.yaml create mode 100644 resources/units/ground_units/TorM2.yaml create mode 100644 resources/units/ground_units/TorM2K.yaml create mode 100644 resources/units/ground_units/TorM2M.yaml create mode 100644 resources/units/ships/Admiral_Gorshkov.yaml create mode 100644 resources/units/ships/CH_Gremyashchiy_AShM.yaml create mode 100644 resources/units/ships/CH_Gremyashchiy_LACM.yaml create mode 100644 resources/units/ships/CH_Grigorovich_AShM.yaml create mode 100644 resources/units/ships/CH_Grigorovich_LACM.yaml create mode 100644 resources/units/ships/CH_Project22160.yaml create mode 100644 resources/units/ships/CH_Steregushchiy.yaml create mode 100644 resources/units/ships/Karakurt_AShM.yaml create mode 100644 resources/units/ships/Karakurt_LACM.yaml diff --git a/game/data/radar_db.py b/game/data/radar_db.py index ba810b72..31dd4482 100644 --- a/game/data/radar_db.py +++ b/game/data/radar_db.py @@ -26,6 +26,7 @@ from dcs.vehicles import AirDefence from pydcs_extensions import highdigitsams as hds from pydcs_extensions import vietnamwarvessels as vwv from pydcs_extensions import chinesemilitaryassetspack as cmap +from pydcs_extensions import russianmilitaryassetspack as rmap TELARS = { @@ -37,6 +38,10 @@ TELARS = { hds.SAM_SA_17_Buk_M1_2_LN_9A310M1_2, cmap.PGL_625, cmap.HQ17A, + rmap.CH_BukM3_9A317M, + rmap.CH_BukM3_9A317MA, + rmap.CH_S350_50P6_9M96D, + rmap.CH_S350_50P6_9M100, } TRACK_RADARS = { @@ -57,6 +62,8 @@ TRACK_RADARS = { hds.SAM_SA_20B_S_300PMU2_TR_92H6E_truck, hds.SAM_SA_23_S_300VM_9S32ME_TR, cmap.CH_HQ22_STR, + rmap.CH_BukM3_9S36M, + rmap.CH_S350_50N6, } LAUNCHER_TRACKER_PAIRS = { @@ -91,6 +98,10 @@ LAUNCHER_TRACKER_PAIRS = { hds.SAM_SA_23_S_300VM_9A82ME_LN: (hds.SAM_SA_23_S_300VM_9S32ME_TR,), hds.SAM_SA_23_S_300VM_9A83ME_LN: (hds.SAM_SA_23_S_300VM_9S32ME_TR,), cmap.CH_HQ22_LN: (cmap.CH_HQ22_STR,), + rmap.CH_BukM3_9A317M: (rmap.CH_BukM3_9S36M,), + rmap.CH_BukM3_9A317MA: (rmap.CH_BukM3_9S36M,), + rmap.CH_S350_50P6_9M96D: (rmap.CH_S350_50N6,), + rmap.CH_S350_50P6_9M100: (rmap.CH_S350_50N6,), } UNITS_WITH_RADAR = { @@ -126,6 +137,23 @@ UNITS_WITH_RADAR = { AirDefence.HQ_7_STR_SP, AirDefence.FuMG_401, AirDefence.FuSe_65, + cmap.PGL_625, + cmap.HQ17A, + cmap.CH_PGZ09, + cmap.CH_HQ22_SR, + cmap.CH_HQ22_STR, + cmap.CH_LD3000, + cmap.CH_LD3000_stationary, + cmap.CH_PGZ95, + rmap.PantsirS1, + rmap.PantsirS2, + rmap.TorM2, + rmap.TorM2K, + rmap.TorM2M, + rmap.CH_S350_96L6, + rmap.CH_S350_50N6, + rmap.CH_BukM3_9S18M13, + rmap.CH_BukM3_9S36M, # Ships ALBATROS, CVN_71, @@ -159,4 +187,11 @@ UNITS_WITH_RADAR = { cmap.CH_Type054B, cmap.Type055, cmap.CH_Type056A, + rmap.Admiral_Gorshkov, + rmap.CH_Steregushchiy, + rmap.CH_Project22160, + rmap.CH_Grigorovich_AShM, + rmap.CH_Grigorovich_LACM, + rmap.CH_Gremyashchiy_AShM, + rmap.CH_Gremyashchiy_LACM, } diff --git a/game/factions/faction.py b/game/factions/faction.py index 4003c2b9..0b28cfca 100644 --- a/game/factions/faction.py +++ b/game/factions/faction.py @@ -703,6 +703,61 @@ class Faction: self.remove_ship("CH_Type056A") self.remove_ship("CH_Type054B") self.remove_preset("HQ-22") + # Russian Military Assets Pack + if not mod_settings.russianmilitaryassetspack: + self.remove_vehicle("CH_2S35") + self.remove_vehicle("CH_TOS1A") + self.remove_vehicle("CH_DSHK_HMG_RUS") + self.remove_vehicle("CH_DSHK_HMG_UKR") + self.remove_vehicle("CH_9M133") + self.remove_vehicle("CH_RussianInfantry_Kord") + self.remove_vehicle("CH_2S38_LG") + self.remove_vehicle("CH_2S38") + self.remove_vehicle("PantsirS1") + self.remove_vehicle("PantsirS2") + self.remove_vehicle("CH_S350_50P6_9M96D") + self.remove_vehicle("CH_S350_50P6_9M100") + self.remove_vehicle("CH_S350_50N6") + self.remove_vehicle("CH_S350_50K6") + self.remove_vehicle("CH_S350_96L6") + self.remove_vehicle("TorM2K") + self.remove_vehicle("TorM2") + self.remove_vehicle("TorM2M") + self.remove_vehicle("CH_BukM3_9A317M") + self.remove_vehicle("CH_BukM3_9A317MA") + self.remove_vehicle("CH_BukM3_9S36M") + self.remove_vehicle("CH_BukM3_9S510M") + self.remove_vehicle("CH_BukM3_9S18M13") + self.remove_vehicle("CH_TM62_AT_Mine") + self.remove_vehicle("CH_T14") + self.remove_vehicle("CH_T90M") + self.remove_vehicle("CH_TigrM") + self.remove_vehicle("CH_T90A") + self.remove_vehicle("CH_T80BVM") + self.remove_vehicle("CH_BMD4") + self.remove_vehicle("CH_3K60_BAL") + self.remove_vehicle("K300P") + self.remove_vehicle("MonolitB") + self.remove_vehicle("CH_IskanderM") + self.remove_vehicle("CH_IskanderK") + self.remove_ship("CH_Project22160") + self.remove_ship("Admiral_Gorshkov") + self.remove_ship("CH_Grigorovich_AShM") + self.remove_ship("CH_Grigorovich_LACM") + self.remove_ship("Karakurt_AShM") + self.remove_ship("Karakurt_LACM") + self.remove_ship("CH_Steregushchiy") + self.remove_ship("CH_Gremyashchiy_AShM") + self.remove_ship("CH_Gremyashchiy_LACM") + self.remove_aircraft("CH_Tu-160M2") + self.remove_aircraft("CH_Tu-95MSM") + self.remove_aircraft("CH_Mi28N") + self.remove_aircraft("CH_Ka52") + self.remove_aircraft("CH_Ka52K") + self.remove_preset("BAL_LBASM") + self.remove_preset("BUK_M3") + self.remove_preset("Bastion-P_LBASM") + self.remove_preset("S-350") def remove_aircraft(self, name: str) -> None: for aircraft_set in [self.aircraft, self.awacs, self.tankers]: diff --git a/game/modsupport.py b/game/modsupport.py index f0f9bced..a31f4f52 100644 --- a/game/modsupport.py +++ b/game/modsupport.py @@ -2,9 +2,10 @@ from typing import Type from dcs.helicopters import HelicopterType, helicopter_map from dcs.planes import PlaneType, plane_map -from dcs.unittype import VehicleType, ShipType +from dcs.unittype import VehicleType, ShipType, StaticType from dcs.vehicles import vehicle_map from dcs.ships import ship_map +from dcs.statics import cargo_map, fortification_map def helicoptermod(helicopter: Type[HelicopterType]) -> Type[HelicopterType]: @@ -25,3 +26,13 @@ def vehiclemod(vehicle: Type[VehicleType]) -> Type[VehicleType]: def shipmod(ship: Type[ShipType]) -> Type[ShipType]: ship_map[ship.id] = ship return ship + + +def cargomod(static: Type[StaticType]) -> Type[StaticType]: + cargo_map[static.id] = static + return static + + +def fortificationmod(static: Type[StaticType]) -> Type[StaticType]: + fortification_map[static.id] = static + return static diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index ad41cc58..886c6bdf 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -102,6 +102,7 @@ class ModSettings: SWPack: bool = False vietnamwarvessels: bool = False chinesemilitaryassetspack: bool = False + russianmilitaryassetspack: bool = False class GameGenerator: diff --git a/pydcs_extensions/__init__.py b/pydcs_extensions/__init__.py index 7be91dcd..01e23314 100644 --- a/pydcs_extensions/__init__.py +++ b/pydcs_extensions/__init__.py @@ -36,6 +36,7 @@ from .coldwarassets import * from .uh60l import * from .vietnamwarvessels import * from .chinesemilitaryassetspack import * +from .russianmilitaryassetspack import * def load_mods() -> None: diff --git a/pydcs_extensions/russianmilitaryassetspack/__init__.py b/pydcs_extensions/russianmilitaryassetspack/__init__.py new file mode 100644 index 00000000..51b478d7 --- /dev/null +++ b/pydcs_extensions/russianmilitaryassetspack/__init__.py @@ -0,0 +1 @@ +from .russianmilitaryassetspack import * diff --git a/pydcs_extensions/russianmilitaryassetspack/russianmilitaryassetspack.py b/pydcs_extensions/russianmilitaryassetspack/russianmilitaryassetspack.py new file mode 100644 index 00000000..18b07bc0 --- /dev/null +++ b/pydcs_extensions/russianmilitaryassetspack/russianmilitaryassetspack.py @@ -0,0 +1,1250 @@ +# Requires Russian Military Assets for DCS by Currenthill: +# https://www.currenthill.com/russia +# + + +from typing import Set, Dict, Any + +from dcs import unittype, task +from dcs.helicopters import HelicopterType +from dcs.planes import PlaneType +from dcs.weapons_data import Weapons + +from game.modsupport import ( + fortificationmod, + helicoptermod, + planemod, + shipmod, + cargomod, + vehiclemod, +) +from pydcs_extensions.weapon_injector import inject_weapons + + +# Weapons +class WeaponsRU: + + Kh_555_ALCM = {"clsid": "{CH_Kh555}", "name": "Kh-555 ALCM", "weight": 1280} + + _6_x_Kh_555_ALCM = { + "clsid": "{CH_Kh555x6}", + "name": "6 x Kh-555 ALCM", + "weight": 7680, + } + + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = { + "clsid": "{Ka52_9M120_6}", + "name": "6 x 9M120 Ataka (AT-9 Spiral-2) - ATGM, SACLOS, Tandem HEAT", + "weight": 118, + } + + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = { + "clsid": "{Ka52_9M120F_6}", + "name": "6 x 9M120F Ataka (AT-9 Spiral-2) - AGM, SACLOS, HE", + "weight": 118, + } + + Kh_101_ALCM = {"clsid": "{Tu95MSM_Kh101}", "name": "Kh-101 ALCM", "weight": 2400} + + Kh_101_ALCM_ = {"clsid": "{Tu160M2_Kh101}", "name": "Kh-101 ALCM", "weight": 2400} + + _6_x_Kh_101_ALCM = { + "clsid": "{Tu160M2_Kh101x6}", + "name": "6 x Kh-101 ALCM", + "weight": 14400, + } + + _6_x_Kh_555_ALCM = { + "clsid": "{CH_Kh555x6}", + "name": "6 x Kh-555 ALCM", + "weight": 7680, + } + + Kh_31A = {"clsid": "{Ka52_Kh31A}", "name": "Kh-31A", "weight": 610} + + Kh_35U = {"clsid": "{Ka52_Kh35U}", "name": "Kh-35U", "weight": 550} + + Kh_38MA = {"clsid": "{Ka52_Kh38MA}", "name": "Kh-38MA", "weight": 50} + + _9M120 = {"clsid": "{Ka52_9M120}", "name": "9M120", "weight": None} + + _9M120F = {"clsid": "{Ka52_9M120F}", "name": "9M120F", "weight": None} + + +inject_weapons(WeaponsRU) + + +# Artillery +@vehiclemod +class CH_2S35(unittype.VehicleType): + id = "CH_2S35" + name = "[CH] 2S35 SPG" + detection_range = 5000 + threat_range = 40000 + air_weapon_dist = 1800 + eplrs = True + + +@vehiclemod +class CH_TOS1A(unittype.VehicleType): + id = "CH_TOS1A" + name = "[CH] TOS-1A MRL" + detection_range = 0 + threat_range = 6000 + air_weapon_dist = 6000 + eplrs = True + + +# Infantry +@vehiclemod +class CH_DSHK_HMG_RUS(unittype.VehicleType): + id = "CH_DSHK_HMG_RUS" + name = "[CH] DShK HMG" + detection_range = 5000 + threat_range = 1800 + air_weapon_dist = 1800 + eplrs = True + + +@vehiclemod +class CH_DSHK_HMG_UKR(unittype.VehicleType): + id = "CH_DSHK_HMG_UKR" + name = "[CH] DShK HMG" + detection_range = 5000 + threat_range = 1800 + air_weapon_dist = 1800 + eplrs = True + + +@vehiclemod +class CH_9M133(unittype.VehicleType): + id = "CH_9M133" + name = "[CH] 9M133 ATGM Soldier" + detection_range = 5500 + threat_range = 5500 + air_weapon_dist = 5500 + eplrs = True + + +@vehiclemod +class CH_RussianInfantry_Kord(unittype.VehicleType): + id = "CH_RussianInfantry_Kord" + name = "[CH] Kord HMG Soldier" + detection_range = 0 + threat_range = 1800 + air_weapon_dist = 1800 + eplrs = True + + +# Air Defense +@vehiclemod +class CH_2S38_LG(unittype.VehicleType): + id = "CH_2S38_LG" + name = "[CH] 2S38 SPAAG (LG-HE)" + detection_range = 12000 + threat_range = 8000 + air_weapon_dist = 8000 + eplrs = True + + +@vehiclemod +class CH_2S38(unittype.VehicleType): + id = "CH_2S38" + name = "[CH] 2S38 SPAAG" + detection_range = 12000 + threat_range = 5000 + air_weapon_dist = 5000 + eplrs = True + + +@vehiclemod +class PantsirS1(unittype.VehicleType): + id = "PantsirS1" + name = "[CH] Pantsir-S1 SPAAGM" + detection_range = 36000 + threat_range = 20000 + air_weapon_dist = 20000 + eplrs = True + + +@vehiclemod +class PantsirS2(unittype.VehicleType): + id = "PantsirS2" + name = "[CH] Pantsir-S2 SPAAGM" + detection_range = 40000 + threat_range = 30000 + air_weapon_dist = 30000 + eplrs = True + + +@vehiclemod +class CH_S350_50P6_9M96D(unittype.VehicleType): + id = "CH_S350_50P6_9M96D" + name = "[CH] S-350 50P6 9M96D LN" + detection_range = 0 + threat_range = 150000 + air_weapon_dist = 150000 + eplrs = True + + +@vehiclemod +class CH_S350_50P6_9M100(unittype.VehicleType): + id = "CH_S350_50P6_9M100" + name = "[CH] S-350 50P6 9M100 LN" + detection_range = 0 + threat_range = 15000 + air_weapon_dist = 15000 + eplrs = True + + +@vehiclemod +class CH_S350_50N6(unittype.VehicleType): + id = "CH_S350_50N6" + name = "[CH] S-350 50N6 STR" + detection_range = 200000 + threat_range = 0 + air_weapon_dist = 0 + eplrs = True + + +@vehiclemod +class CH_S350_50K6(unittype.VehicleType): + id = "CH_S350_50K6" + name = "[CH] S-350 50K6 CP" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + eplrs = True + + +@vehiclemod +class CH_S350_96L6(unittype.VehicleType): + id = "CH_S350_96L6" + name = "[CH] S-350 96L6 SR" + detection_range = 300000 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class TorM2K(unittype.VehicleType): + id = "TorM2K" + name = "[CH] Tor M2K SHORAD" + detection_range = 25000 + threat_range = 12000 + air_weapon_dist = 12000 + eplrs = True + + +@vehiclemod +class TorM2(unittype.VehicleType): + id = "TorM2" + name = "[CH] Tor M2 SHORAD" + detection_range = 25000 + threat_range = 12000 + air_weapon_dist = 12000 + eplrs = True + + +@vehiclemod +class TorM2M(unittype.VehicleType): + id = "TorM2M" + name = "[CH] Tor M2M SHORAD" + detection_range = 25000 + threat_range = 16000 + air_weapon_dist = 16000 + eplrs = True + + +@vehiclemod +class CH_BukM3_9A317M(unittype.VehicleType): + id = "CH_BukM3_9A317M" + name = "[CH] Buk M3 9A317M TELAR" + detection_range = 120000 + threat_range = 70000 + air_weapon_dist = 70000 + + +@vehiclemod +class CH_BukM3_9A317MA(unittype.VehicleType): + id = "CH_BukM3_9A317MA" + name = "[CH] Buk M3 9A317MA TELAR" + detection_range = 120000 + threat_range = 70000 + air_weapon_dist = 70000 + + +@vehiclemod +class CH_BukM3_9S36M(unittype.VehicleType): + id = "CH_BukM3_9S36M" + name = "[CH] Buk M3 9S36M TR" + detection_range = 120000 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class CH_BukM3_9S510M(unittype.VehicleType): + id = "CH_BukM3_9S510M" + name = "[CH] Buk M3 9S510M CP" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + eplrs = True + + +@vehiclemod +class CH_BukM3_9S18M13(unittype.VehicleType): + id = "CH_BukM3_9S18M13" + name = "[CH] Buk M3 9S18M1-3 SR" + detection_range = 150000 + threat_range = 0 + air_weapon_dist = 0 + + +# Fortification +@fortificationmod +class CH_TM62_AT_Mine(unittype.VehicleType): + id = "CH_TM62_AT_Mine" + name = "[CH] TM-62M AT mine" + detection_range = 0 + threat_range = 50 + air_weapon_dist = 50 + + +# Armor +@vehiclemod +class CH_T14(unittype.VehicleType): + id = "CH_T14" + name = "[CH] T-14 MBT" + detection_range = 8000 + threat_range = 5000 + air_weapon_dist = 5000 + eplrs = True + + +@vehiclemod +class CH_T90M(unittype.VehicleType): + id = "CH_T90M" + name = "[CH] T-90M MBT" + detection_range = 8000 + threat_range = 5000 + air_weapon_dist = 5000 + eplrs = True + + +@vehiclemod +class CH_TigrM(unittype.VehicleType): + id = "CH_TigrM" + name = "[CH] Tigr-M" + detection_range = 0 + threat_range = 1200 + air_weapon_dist = 1200 + eplrs = True + + +@vehiclemod +class CH_T90A(unittype.VehicleType): + id = "CH_T90A" + name = "[CH] T-90A MBT" + detection_range = 0 + threat_range = 8000 + air_weapon_dist = 1800 + eplrs = True + + +@vehiclemod +class CH_T80BVM(unittype.VehicleType): + id = "CH_T80BVM" + name = "[CH] T-80BVM MBT" + detection_range = 0 + threat_range = 8000 + air_weapon_dist = 1800 + eplrs = True + + +@vehiclemod +class CH_BMD4(unittype.VehicleType): + id = "CH_BMD4" + name = "[CH] BMD-4 IFV" + detection_range = 6000 + threat_range = 4000 + air_weapon_dist = 4000 + eplrs = True + + +# Missiles +@vehiclemod +class CH_3K60_BAL(unittype.VehicleType): + id = "CH_3K60_BAL" + name = "[CH] Bal LBASM TEL" + detection_range = 260000 + threat_range = 260000 + air_weapon_dist = 260000 + eplrs = True + + +@vehiclemod +class K300P(unittype.VehicleType): + id = "K300P" + name = "[CH] Bastion-P LBASM TEL" + detection_range = 400000 + threat_range = 400000 + air_weapon_dist = 400000 + eplrs = True + + +@vehiclemod +class MonolitB(unittype.VehicleType): + id = "MonolitB" + name = "[CH] Monolit-B LBASM STR" + detection_range = 800000 + threat_range = 0 + air_weapon_dist = 0 + + +@vehiclemod +class CH_IskanderM(unittype.VehicleType): + id = "CH_IskanderM" + name = "[CH] Iskander-M SRBM" + detection_range = 0 + threat_range = 500000 + air_weapon_dist = 500000 + eplrs = True + + +@vehiclemod +class CH_IskanderK(unittype.VehicleType): + id = "CH_IskanderK" + name = "[CH] Iskander-K GLCM" + detection_range = 1500000 + threat_range = 1500000 + air_weapon_dist = 1500000 + eplrs = True + + +## SHIPS + + +@shipmod +class CH_Project22160(unittype.ShipType): + id = "CH_Project22160" + name = "[CH] Project 22160 Patrol Ship" + plane_num = 0 + helicopter_num = 1 + parking = 1 + detection_range = 80000 + threat_range = 8000 + air_weapon_dist = 8000 + + +@shipmod +class Admiral_Gorshkov(unittype.ShipType): + id = "Admiral_Gorshkov" + name = "[CH] Project 22350 Admiral Gorshkov Frigate" + plane_num = 0 + helicopter_num = 1 + parking = 1 + detection_range = 150000 + threat_range = 150000 + air_weapon_dist = 150000 + + +@shipmod +class CH_Grigorovich_AShM(unittype.ShipType): + id = "CH_Grigorovich_AShM" + name = "[CH] Project 11356R Admiral Grigorovich Frigate (AShM)" + plane_num = 0 + helicopter_num = 1 + parking = 1 + detection_range = 300000 + threat_range = 70000 + air_weapon_dist = 70000 + + +@shipmod +class CH_Grigorovich_LACM(unittype.ShipType): + id = "CH_Grigorovich_LACM" + name = "[CH] Project 11356R Admiral Grigorovich Frigate (LACM)" + plane_num = 0 + helicopter_num = 1 + parking = 1 + detection_range = 300000 + threat_range = 70000 + air_weapon_dist = 70000 + + +@shipmod +class Karakurt_AShM(unittype.ShipType): + id = "Karakurt_AShM" + name = "[CH] Project 22800 Karakurt Corvette AShM" + plane_num = 0 + helicopter_num = 0 + parking = 0 + detection_range = 150000 + threat_range = 25000 + air_weapon_dist = 25000 + + +@shipmod +class Karakurt_LACM(unittype.ShipType): + id = "Karakurt_LACM" + name = "[CH] Project 22800 Karakurt Corvette LACM" + plane_num = 0 + helicopter_num = 0 + parking = 0 + detection_range = 150000 + threat_range = 25000 + air_weapon_dist = 25000 + + +@shipmod +class CH_Steregushchiy(unittype.ShipType): + id = "CH_Steregushchiy" + name = "[CH] Project 20381 Steregushchiy Corvette" + plane_num = 0 + helicopter_num = 1 + parking = 1 + detection_range = 150000 + threat_range = 150000 + air_weapon_dist = 150000 + + +@shipmod +class CH_Gremyashchiy_AShM(unittype.ShipType): + id = "CH_Gremyashchiy_AShM" + name = "[CH] Project 20385 Gremyashchiy Corvette (AShM)" + plane_num = 0 + helicopter_num = 1 + parking = 1 + detection_range = 300000 + threat_range = 150000 + air_weapon_dist = 150000 + + +@shipmod +class CH_Gremyashchiy_LACM(unittype.ShipType): + id = "CH_Gremyashchiy_LACM" + name = "[CH] Project 20385 Gremyashchiy Corvette (LACM)" + plane_num = 0 + helicopter_num = 1 + parking = 1 + detection_range = 300000 + threat_range = 150000 + air_weapon_dist = 150000 + + +# Helicopters +@helicoptermod +class CH_Ka52K(HelicopterType): + id = "CH_Ka52K" + height = 5.6 + width = 14.4 + length = 15.84 + fuel_max = 1450 + max_speed = 350 + chaff = 32 + flare = 96 + charge_total = 128 + chaff_charge_size = 1 + flare_charge_size = 1 + radio_frequency = 124 + + livery_name = "CH_KA52K" # from type + + class Pylon1: + B_8V20A_CM = (1, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (1, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (1, Weapons.B_8V20A_OM) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 1, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 1, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 1, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 1, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 1, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 1, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (1, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (1, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (1, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (1, Weapons.Fuel_tank_PTB_450) + APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag = ( + 1, + Weapons.APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag, + ) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 1, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 1, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + + class Pylon2: + B_8V20A_CM = (2, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (2, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (2, Weapons.B_8V20A_OM) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 2, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 2, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 2, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 2, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 2, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 2, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (2, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (2, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (2, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (2, Weapons.Fuel_tank_PTB_450) + APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag = ( + 2, + Weapons.APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag, + ) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 2, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 2, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + Kh_35U = (2, Weapons.Kh_35U) + Kh_38MA = (2, Weapons.Kh_38MA) + Kh_31A = (2, Weapons.Kh_31A) + + class Pylon3: + B_8V20A_CM = (3, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (3, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (3, Weapons.B_8V20A_OM) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 3, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 3, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 3, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 3, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 3, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 3, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (3, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (3, Weapons.Fuel_tank_PTB_450) + APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag = ( + 3, + Weapons.APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag, + ) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 3, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 3, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + Kh_35U = (3, Weapons.Kh_35U) + Kh_38MA = (3, Weapons.Kh_38MA) + Kh_31A = (3, Weapons.Kh_31A) + + class Pylon4: + B_8V20A_CM = (4, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (4, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (4, Weapons.B_8V20A_OM) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 4, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 4, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 4, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 4, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 4, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 4, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (4, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (4, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (4, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (4, Weapons.Fuel_tank_PTB_450) + APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag = ( + 4, + Weapons.APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag, + ) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 4, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 4, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + + pylons: Set[int] = {1, 2, 3, 4} + + tasks = [ + task.CAS, + task.GroundAttack, + task.Escort, + task.AFAC, + task.AntishipStrike, + task.Transport, + task.Reconnaissance, + ] + task_default = task.AntishipStrike + + +@helicoptermod +class CH_Ka52(HelicopterType): + id = "CH_Ka52" + height = 5.6 + width = 14.4 + length = 15.84 + fuel_max = 1450 + max_speed = 350 + chaff = 32 + flare = 96 + charge_total = 128 + chaff_charge_size = 1 + flare_charge_size = 1 + radio_frequency = 124 + + livery_name = "CH_KA52" # from type + + class Pylon1: + B_8V20A_CM = (1, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (1, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (1, Weapons.B_8V20A_OM) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 1, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 1, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 1, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 1, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 1, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 1, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (1, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (1, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (1, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (1, Weapons.Fuel_tank_PTB_450) + APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag = ( + 1, + Weapons.APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag, + ) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 1, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 1, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + + class Pylon2: + B_8V20A_CM = (2, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (2, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (2, Weapons.B_8V20A_OM) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 2, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 2, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 2, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 2, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 2, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (2, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (2, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (2, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (2, Weapons.Fuel_tank_PTB_450) + + class Pylon3: + B_8V20A_CM = (3, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (3, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (3, Weapons.B_8V20A_OM) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 3, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 3, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 3, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 3, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 3, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (3, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (3, Weapons.Fuel_tank_PTB_450) + + class Pylon4: + B_8V20A_CM = (4, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (4, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (4, Weapons.B_8V20A_OM) + Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_ = ( + 4, + Weapons.Kh_25ML__AS_10_Karen____300kg__ASM__Semi_Act_Laser_, + ) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 4, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 4, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 4, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 4, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 4, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (4, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (4, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (4, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (4, Weapons.Fuel_tank_PTB_450) + APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag = ( + 4, + Weapons.APU_6___6_x_9M127_Vikhr___ATGM__LOSBR__Tandem_HEAT_Frag, + ) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 4, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 4, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + + class Pylon5: + _9S846_Strelets___2_x_9M39_Igla = (5, Weapons._9S846_Strelets___2_x_9M39_Igla) + + # ERRR + + class Pylon6: + _9S846_Strelets___2_x_9M39_Igla = (6, Weapons._9S846_Strelets___2_x_9M39_Igla) + + # ERRR + + pylons: Set[int] = {1, 2, 3, 4, 5, 6} + + tasks = [ + task.CAS, + task.GroundAttack, + task.Escort, + task.AFAC, + task.AntishipStrike, + task.Transport, + task.Reconnaissance, + ] + task_default = task.CAS + + +@helicoptermod +class CH_Mi28N(HelicopterType): + id = "CH_Mi28N" + height = 5.087 + width = 17.2 + length = 17.87 + fuel_max = 1500 + max_speed = 365 + chaff = 0 + flare = 128 + charge_total = 128 + chaff_charge_size = 0 + flare_charge_size = 1 + eplrs = True + radio_frequency = 124 + + livery_name = "CH_MI28N" # from type + + class Pylon1: + B_8V20A_CM = (1, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (1, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (1, Weapons.B_8V20A_OM) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 1, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 1, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 1, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 1, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (1, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (1, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (1, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (1, Weapons.Fuel_tank_PTB_450) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 1, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 1, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + _9S846_Strelets___2_x_9M39_Igla = (1, Weapons._9S846_Strelets___2_x_9M39_Igla) + + class Pylon2: + B_8V20A_CM = (2, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (2, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (2, Weapons.B_8V20A_OM) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 2, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 2, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 2, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 2, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 2, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (2, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (2, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (2, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (2, Weapons.Fuel_tank_PTB_450) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 2, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 2, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + _9S846_Strelets___2_x_9M39_Igla = (2, Weapons._9S846_Strelets___2_x_9M39_Igla) + + class Pylon3: + B_8V20A_CM = (3, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (3, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (3, Weapons.B_8V20A_OM) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 3, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 3, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod = ( + 3, + Weapons.UPK_23_250___2_x_23mm__GSh_23L_Autocannon_Pod, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 3, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 3, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (3, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (3, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (3, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (3, Weapons.Fuel_tank_PTB_450) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 3, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 3, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + _9S846_Strelets___2_x_9M39_Igla = (3, Weapons._9S846_Strelets___2_x_9M39_Igla) + + class Pylon4: + B_8V20A_CM = (4, Weapons.B_8V20A_CM) + B_8V20A_OFP2 = (4, Weapons.B_8V20A_OFP2) + B_8V20A_OM = (4, Weapons.B_8V20A_OM) + B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag = ( + 4, + Weapons.B_8V20A___20_x_UnGd_Rkts__80_mm_S_8KOM_HEAT_Frag, + ) + B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation = ( + 4, + Weapons.B_13L___5_x_UnGd_Rkts__122_mm_S_13OF_Blast_Fragmentation, + ) + KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag = ( + 4, + Weapons.KMGU_2___96_x_AO_2_5RT_Dispenser__CBU__HE_Frag, + ) + KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP = ( + 4, + Weapons.KMGU_2___96_x_PTAB_2_5KO_Dispenser__CBU__HEAT_AP, + ) + FAB_250___250kg_GP_Bomb_LD = (4, Weapons.FAB_250___250kg_GP_Bomb_LD) + FAB_250_M62___250_kg_GP_Bomb_LD = (4, Weapons.FAB_250_M62___250_kg_GP_Bomb_LD) + FAB_500_M_62___500kg_GP_Bomb_LD = (4, Weapons.FAB_500_M_62___500kg_GP_Bomb_LD) + Fuel_tank_PTB_450 = (4, Weapons.Fuel_tank_PTB_450) + _6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT = ( + 4, + Weapons._6_x_9M120_Ataka__AT_9_Spiral_2____ATGM__SACLOS__Tandem_HEAT, + ) + _6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE = ( + 4, + Weapons._6_x_9M120F_Ataka__AT_9_Spiral_2____AGM__SACLOS__HE, + ) + _9S846_Strelets___2_x_9M39_Igla = (4, Weapons._9S846_Strelets___2_x_9M39_Igla) + + pylons: Set[int] = {1, 2, 3, 4} + + tasks = [ + task.CAS, + task.GroundAttack, + task.Escort, + task.AFAC, + task.AntishipStrike, + task.Transport, + task.Reconnaissance, + ] + task_default = task.CAS + + +# Planes +@planemod +class CH_Tu_95MSM(PlaneType): + id = "CH_Tu-95MSM" + large_parking_slot = True + height = 13.3 + width = 50.04 + length = 49.13 + fuel_max = 87000 + max_speed = 919.8 + chaff = 48 + flare = 48 + charge_total = 96 + chaff_charge_size = 1 + flare_charge_size = 1 + eplrs = True + + property_defaults: Dict[str, Any] = {} + + livery_name = "CH_TU-95MSM" # from type + + class Pylon1: + Kh_101_ALCM = (1, Weapons.Kh_101_ALCM) + Kh_555_ALCM = (1, Weapons.Kh_555_ALCM) + + # ERRR + + class Pylon2: + Kh_101_ALCM = (2, Weapons.Kh_101_ALCM) + Kh_555_ALCM = (2, Weapons.Kh_555_ALCM) + + class Pylon3: + Kh_101_ALCM = (3, Weapons.Kh_101_ALCM) + Kh_555_ALCM = (3, Weapons.Kh_555_ALCM) + + # ERRR + + class Pylon4: + Kh_101_ALCM = (4, Weapons.Kh_101_ALCM) + Kh_555_ALCM = (4, Weapons.Kh_555_ALCM) + + class Pylon5: + Kh_101_ALCM = (5, Weapons.Kh_101_ALCM) + Kh_555_ALCM = (5, Weapons.Kh_555_ALCM) + + # ERRR + + class Pylon6: + Kh_101_ALCM = (6, Weapons.Kh_101_ALCM) + Kh_555_ALCM = (6, Weapons.Kh_555_ALCM) + + class Pylon7: + Kh_101_ALCM = (7, Weapons.Kh_101_ALCM) + Kh_555_ALCM = (7, Weapons.Kh_555_ALCM) + + # ERRR + + class Pylon8: + Kh_101_ALCM = (8, Weapons.Kh_101_ALCM) + Kh_555_ALCM = (8, Weapons.Kh_555_ALCM) + + class Pylon9: + _6_x_Kh_555_ALCM = (9, Weapons._6_x_Kh_555_ALCM) + + pylons: Set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9} + + tasks = [ + task.Reconnaissance, + task.GroundAttack, + task.CAS, + task.AFAC, + task.RunwayAttack, + task.AntishipStrike, + task.PinpointStrike, + task.SEAD, + ] + task_default = task.GroundAttack + + +@planemod +class CH_Tu_160M2(PlaneType): + id = "CH_Tu-160M2" + large_parking_slot = True + height = 13.25 + width = 55.7 + length = 54.1 + fuel_max = 148000 + max_speed = 2199.6 + chaff = 72 + flare = 72 + charge_total = 144 + chaff_charge_size = 1 + flare_charge_size = 1 + eplrs = True + + property_defaults: Dict[str, Any] = {} + + livery_name = "CH_TU-160M2" # from type + + class Pylon1: + _6_x_Kh_101_ALCM = (1, Weapons._6_x_Kh_101_ALCM) + _6_x_Kh_555_ALCM = (1, Weapons._6_x_Kh_555_ALCM) + + class Pylon2: + _6_x_Kh_101_ALCM = (2, Weapons._6_x_Kh_101_ALCM) + _6_x_Kh_555_ALCM = (2, Weapons._6_x_Kh_555_ALCM) + + pylons: Set[int] = {1, 2} + + tasks = [ + task.Reconnaissance, + task.GroundAttack, + task.CAS, + task.AFAC, + task.RunwayAttack, + task.AntishipStrike, + task.PinpointStrike, + task.SEAD, + ] + task_default = task.GroundAttack + + +# Cargo +@cargomod +class BMD4_cargo(unittype.StaticType): + id = "BMD4_cargo" + name = "[CH] BMD-4 IFV" + shape_name = "CH_BMD-4" + category = "Cargos" + rate = 100 + can_cargo = True diff --git a/qt_ui/uiconstants.py b/qt_ui/uiconstants.py index 63bfe1bb..c9d19378 100644 --- a/qt_ui/uiconstants.py +++ b/qt_ui/uiconstants.py @@ -222,6 +222,11 @@ def load_aircraft_icons(): AIRCRAFT_ICONS["F-5E-3_FC"] = AIRCRAFT_ICONS["F-5E-3"] AIRCRAFT_ICONS["F-86F_FC"] = AIRCRAFT_ICONS["F-86F Sabre"] AIRCRAFT_ICONS["MiG-15bis_FC"] = AIRCRAFT_ICONS["MiG-15bis"] + AIRCRAFT_ICONS["CH_Ka52"] = AIRCRAFT_ICONS["CH_K"] + AIRCRAFT_ICONS["CH_Ka52K"] = AIRCRAFT_ICONS["CH_Ka"] + AIRCRAFT_ICONS["CH_Mi28N"] = AIRCRAFT_ICONS["CH_Mi"] + AIRCRAFT_ICONS["CH_Tu-95MSM"] = AIRCRAFT_ICONS["CH_Tu-95"] + AIRCRAFT_ICONS["CH_Tu-160M2"] = AIRCRAFT_ICONS["CH_Tu-16"] def load_vehicle_icons(): diff --git a/qt_ui/windows/newgame/QNewGameWizard.py b/qt_ui/windows/newgame/QNewGameWizard.py index d70549cf..7e235d00 100644 --- a/qt_ui/windows/newgame/QNewGameWizard.py +++ b/qt_ui/windows/newgame/QNewGameWizard.py @@ -125,6 +125,7 @@ class NewGameWizard(QtWidgets.QWizard): SWPack=self.field("SWPack"), vietnamwarvessels=self.field("vietnamwarvessels"), chinesemilitaryassetspack=self.field("chinesemilitaryassetspack"), + russianmilitaryassetspack=self.field("russianmilitaryassetspack"), ) 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 1b6e7d8e..4dd68ccc 100644 --- a/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py +++ b/qt_ui/windows/newgame/WizardPages/QGeneratorSettings.py @@ -162,6 +162,8 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.registerField("vietnamwarvessels", self.vietnamwarvessels) self.chinesemilitaryassetspack = QtWidgets.QCheckBox() self.registerField("chinesemilitaryassetspack", self.chinesemilitaryassetspack) + self.russianmilitaryassetspack = QtWidgets.QCheckBox() + self.registerField("russianmilitaryassetspack", self.russianmilitaryassetspack) 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.

" @@ -181,6 +183,10 @@ class GeneratorOptions(QtWidgets.QWizardPage): "CurrentHill Chinese Military Assets pack (1.1.4)", self.chinesemilitaryassetspack, ), + ( + "CurrentHill Russian Military Assets pack (1.2.1)", + self.russianmilitaryassetspack, + ), ( "CurrentHill Swedish Military Assets pack (1.10)", self.swedishmilitaryassetspack, @@ -286,3 +292,6 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.chinesemilitaryassetspack.setChecked( s.get("chinesemilitaryassetspack", False) ) + self.russianmilitaryassetspack.setChecked( + s.get("russianmilitaryassetspack", False) + ) diff --git a/resources/customized_payloads/CH_Ka52.lua b/resources/customized_payloads/CH_Ka52.lua new file mode 100644 index 00000000..afd8de2f --- /dev/null +++ b/resources/customized_payloads/CH_Ka52.lua @@ -0,0 +1,158 @@ +local unitPayloads = { + ["name"] = "CH_Ka52", + ["payloads"] = { + [1] = { + ["displayName"] = "Retribution CAS", + ["name"] = "Retribution CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 3, + }, + [5] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + [6] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [2] = { + ["displayName"] = "Retribution BAI", + ["name"] = "Retribution BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{6A4B9E69-64FE-439a-9163-3A87FB6A4D81}", + ["num"] = 3, + }, + [5] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + [6] = { + ["CLSID"] = "{6A4B9E69-64FE-439a-9163-3A87FB6A4D81}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [3] = { + ["displayName"] = "Retribution DEAD", + ["name"] = "Retribution DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [4] = { + ["displayName"] = "Retribution Escort", + ["name"] = "Retribution Escort", + ["pylons"] = { + [1] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [5] = { + ["displayName"] = "Retribution OCA/Aircraft", + ["name"] = "Retribution OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 6, + }, + [2] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + [5] = { + ["CLSID"] = "B_8V20A_OFP2", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "B_8V20A_OFP2", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "CH_Ka52", +} +return unitPayloads diff --git a/resources/customized_payloads/CH_Ka52K.lua b/resources/customized_payloads/CH_Ka52K.lua new file mode 100644 index 00000000..ab64bbce --- /dev/null +++ b/resources/customized_payloads/CH_Ka52K.lua @@ -0,0 +1,151 @@ +local unitPayloads = { + ["name"] = "CH_Ka52K", + ["payloads"] = { + [1] = { + ["displayName"] = "Retribution CAS", + ["name"] = "Retribution CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + [2] = { + ["displayName"] = "Retribution Anti-ship", + ["name"] = "Retribution Anti-ship", + ["pylons"] = { + [1] = { + ["CLSID"] = "{Ka52_Kh38MA}", + ["num"] = 3, + }, + [2] = { + ["CLSID"] = "{Ka52_Kh38MA}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + [3] = { + ["displayName"] = "Retribution DEAD", + ["name"] = "Retribution DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + [4] = { + ["displayName"] = "Retribution BAI", + ["name"] = "Retribution BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + [5] = { + ["displayName"] = "Retribution Escort", + ["name"] = "Retribution Escort", + ["pylons"] = { + [1] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + [6] = { + ["displayName"] = "Retribution OCA/Aircraft", + ["name"] = "Retribution OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{6DADF342-D4BA-4D8A-B081-BA928C4AF86D}", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{Ka52_9M120F_6}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{Ka52_9M120F_6}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 30, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "CH_Ka52K", +} +return unitPayloads diff --git a/resources/customized_payloads/CH_Mi28N.lua b/resources/customized_payloads/CH_Mi28N.lua new file mode 100644 index 00000000..217384dc --- /dev/null +++ b/resources/customized_payloads/CH_Mi28N.lua @@ -0,0 +1,109 @@ +local unitPayloads = { + ["name"] = "CH_Mi28N", + ["payloads"] = { + [1] = { + ["displayName"] = "Retribution CAS", + ["name"] = "Retribution CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 2, + }, + [4] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [2] = { + ["displayName"] = "Retribution BAI", + ["name"] = "Retribution BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 2, + }, + [4] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [3] = { + ["displayName"] = "Retribution Escort", + ["name"] = "Retribution Escort", + ["pylons"] = { + [1] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{Ka52_9M120_6}", + ["num"] = 2, + }, + [4] = { + ["CLSID"] = "{9S846_2xIGLA}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [4] = { + ["displayName"] = "Retribution OCA/Aircraft", + ["name"] = "Retribution OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{Ka52_9M120F_6}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{Ka52_9M120F_6}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{Ka52_9M120F_6}", + ["num"] = 2, + }, + [4] = { + ["CLSID"] = "{Ka52_9M120F_6}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "CH_Mi28N", +} +return unitPayloads diff --git a/resources/customized_payloads/CH_Tu-160M2.lua b/resources/customized_payloads/CH_Tu-160M2.lua new file mode 100644 index 00000000..6dc60b7e --- /dev/null +++ b/resources/customized_payloads/CH_Tu-160M2.lua @@ -0,0 +1,60 @@ +local unitPayloads = { + ["name"] = "CH_Tu-160M2", + ["payloads"] = { + [1] = { + ["displayName"] = "Retribution Strike", + ["name"] = "Retribution Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{Tu160M2_Kh101x6}", + ["num"] = 2, + }, + [2] = { + ["CLSID"] = "{Tu160M2_Kh101x6}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [2] = { + ["displayName"] = "Retribution Anti-ship", + ["name"] = "Retribution Anti-ship", + ["pylons"] = { + [1] = { + ["CLSID"] = "{Tu160M2_Kh101x6}", + ["num"] = 2, + }, + [2] = { + ["CLSID"] = "{Tu160M2_Kh101x6}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [3] = { + ["displayName"] = "BAI", + ["name"] = "BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{Tu160M2_Kh101x6}", + ["num"] = 2, + }, + [2] = { + ["CLSID"] = "{Tu160M2_Kh101x6}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "CH_Tu-160M2", +} +return unitPayloads diff --git a/resources/customized_payloads/CH_Tu-95MSM.lua b/resources/customized_payloads/CH_Tu-95MSM.lua new file mode 100644 index 00000000..882d449d --- /dev/null +++ b/resources/customized_payloads/CH_Tu-95MSM.lua @@ -0,0 +1,140 @@ +local unitPayloads = { + ["name"] = "CH_Tu-95MSM", + ["payloads"] = { + [1] = { + ["displayName"] = "Retribution Strike", + ["name"] = "Retribution Strike", + ["pylons"] = { + [1] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 1, + }, + [4] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 3, + }, + [5] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 2, + }, + [6] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 6, + }, + [7] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 7, + }, + [8] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 8, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [2] = { + ["displayName"] = "Retribution Anti-ship", + ["name"] = "Retribution Anti-ship", + ["pylons"] = { + [1] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 1, + }, + [4] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 3, + }, + [5] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 2, + }, + [6] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 6, + }, + [7] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 7, + }, + [8] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 8, + }, + [9] = { + ["CLSID"] = "{CH_Kh555x6}", + ["num"] = 9, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [2] = { + ["displayName"] = "BAI", + ["name"] = "BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 4, + }, + [2] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 5, + }, + [3] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 1, + }, + [4] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 3, + }, + [5] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 2, + }, + [6] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 6, + }, + [7] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 7, + }, + [8] = { + ["CLSID"] = "{CH_Kh555}", + ["num"] = 8, + }, + [9] = { + ["CLSID"] = "{CH_Kh555x6}", + ["num"] = 9, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + }, + ["tasks"] = { + }, + ["unitType"] = "CH_Tu-95MSM", +} +return unitPayloads diff --git a/resources/factions/CH_russia_2020.json b/resources/factions/CH_russia_2020.json new file mode 100644 index 00000000..8d9ef32d --- /dev/null +++ b/resources/factions/CH_russia_2020.json @@ -0,0 +1,120 @@ +{ + "country": "Russia", + "name": "[CH] Russia 2020", + "authors": "Eclipse", + "description": "

Russia in 2020, using the CurrentHill Russian Assets Pack.

", + "locales": [ + "ru_RU" + ], + "aircrafts": [ + "IL-76MD", + "Ka-50 Hokum III", + "[CH] Ka-52", + "[CH] Ka-52K", + "[CH] Mi-28N AH", + "L-39ZA Albatros", + "Mi-24V Hind-E", + "Mi-24P Hind-F", + "Mi-28N Havoc", + "Mi-8MTV2 Hip", + "MiG-29S Fulcrum-C", + "MiG-31 Foxhound", + "Su-24M Fencer-D", + "Su-25 Frogfoot", + "Su-25T Frogfoot", + "Su-27 Flanker-B", + "Su-30 Flanker-C", + "Su-30MKA Flanker-H", + "Su-30MKI Flanker-H", + "Su-30MKM Flanker-H", + "Su-30SM Flanker-H", + "Su-30MKA Flanker-H (A-G)", + "Su-30MKI Flanker-H (A-G)", + "Su-30MKM Flanker-H (A-G)", + "Su-30SM Flanker-H (A-G)", + "Su-33 Flanker-D", + "Su-34 Fullback", + "Tu-142 Bear-F", + "Tu-22M3 Backfire-C", + "[CH] Tu-160M2", + "[CH] Tu-95MSM" + ], + "awacs": [ + "A-50" + ], + "tankers": [ + "IL-78M" + ], + "frontline_units": [ + "[CH] T-14 MBT", + "[CH] T-90M MBT", + "[CH] Tigr-M", + "[CH] T-90A MBT", + "[CH] T-80BVM MBT", + "[CH] BMD-4 IFV" + ], + "artillery_units": [ + "[CH] 2S35 SPG", + "[CH] TOS-1A MRL" + ], + "logistics_units": [ + "LUV UAZ-469 Jeep", + "Truck Ural-375" + ], + "infantry_units": [ + "Infantry AK-74 Rus", + "MANPADS SA-18 Igla-S \"Grouse\"", + "Paratrooper AKS", + "Paratrooper RPG-16", + "[CH] DShK HMG", + "[CH] 9M133 ATGM Soldier", + "[CH] Kord HMG Soldier" + ], + "missiles": [ + "[CH] Iskander-M SRBM", + "[CH] Iskander-K GLCM" + ], + "preset_groups": [ + "BAL LBASM", + "Bastion-P LBASM", + "BUK M3", + "[CH] Russian Navy", + "SA-10/S-300PS", + "SA-10B/S-300PS", + "SA-11", + "S-350" + ], + "naval_units": [ + "[CH] Project 22160 Patrol Ship", + "[CH] Project 22350 Admiral Gorshkov Frigate", + "CV 1143.5 Admiral Kuznetsov", + "[CH] Project 11356R Admiral Grigorovich Frigate (AShM)", + "[CH] Project 11356R Admiral Grigorovich Frigate (LACM)", + "[CH] Project 22800 Karakurt Corvette AShM", + "[CH] Project 22800 Karakurt Corvette LACM", + "[CH] Project 20381 Steregushchiy Corvette", + "[CH] Project 20385 Gremyashchiy Corvette (AShM)", + "[CH] Project 20385 Gremyashchiy Corvette (LACM)" + ], + "air_defense_units": [ + "[CH] 2S38 SPAAG (LG-HE)", + "[CH] 2S38 SPAAG", + "[CH] Pantsir-S1 SPAAGM", + "[CH] Pantsir-S2 SPAAGM", + "[CH] Tor M2K SHORAD", + "[CH] Tor M2 SHORAD", + "[CH] Tor M2M SHORAD", + "AAA ZU-23 Closed Emplacement", + "ZU-23 on Ural-375", + "ZSU-23-4 Shilka" + ], + "helicopter_carrier_names": [], + "requirements": { + "CurrentHill Russian Assets Pack": "https://www.currenthill.com/russia" + }, + "carrier_names": [ + "Admiral Kuznetsov" + ], + "has_jtac": true, + "jtac_unit": "MQ-9 Reaper" +} \ No newline at end of file diff --git a/resources/groups/BAL_LBASM.yaml b/resources/groups/BAL_LBASM.yaml new file mode 100644 index 00000000..09a19082 --- /dev/null +++ b/resources/groups/BAL_LBASM.yaml @@ -0,0 +1,8 @@ +name: BAL LBASM +tasks: + - Coastal +units: + - "[CH] Bal LBASM TEL" + - "[CH] Monolit-B LBASM STR" +layouts: + - Bastion-P LBASM \ No newline at end of file diff --git a/resources/groups/BUK_M3.yaml b/resources/groups/BUK_M3.yaml new file mode 100644 index 00000000..f50fac65 --- /dev/null +++ b/resources/groups/BUK_M3.yaml @@ -0,0 +1,11 @@ +name: BUK M3 +tasks: + - MERAD +units: + - "[CH] Buk M3 9S18M1-3 SR" + - "[CH] Buk M3 9S36M TR" + - "[CH] Buk M3 9S510M CP" + - "[CH] Buk M3 9A317M TELAR" + - "[CH] Buk M3 9A317MA TELAR" +layouts: + - BUK M3 Site \ No newline at end of file diff --git a/resources/groups/Bastion-P_LBASM.yaml b/resources/groups/Bastion-P_LBASM.yaml new file mode 100644 index 00000000..6269358f --- /dev/null +++ b/resources/groups/Bastion-P_LBASM.yaml @@ -0,0 +1,8 @@ +name: Bastion-P LBASM +tasks: + - Coastal +units: + - "[CH] Bastion-P LBASM TEL" + - "[CH] Monolit-B LBASM STR" +layouts: + - Bastion-P LBASM \ No newline at end of file diff --git a/resources/groups/CH_Russian-Navy.yaml b/resources/groups/CH_Russian-Navy.yaml new file mode 100644 index 00000000..fd20018c --- /dev/null +++ b/resources/groups/CH_Russian-Navy.yaml @@ -0,0 +1,11 @@ +name: "[CH] Russian Navy" +tasks: + - Navy +units: + - "[CH] Project 20385 Gremyashchiy Corvette (AShM)" + - "[CH] Project 22800 Karakurt Corvette LACM" + - "[CH] Project 22350 Admiral Gorshkov Frigate" + - "[CH] Project 11356R Admiral Grigorovich Frigate (AShM)" + - Cruiser 1164 Moskva +layouts: + - Naval Group \ No newline at end of file diff --git a/resources/groups/S-350.yaml b/resources/groups/S-350.yaml new file mode 100644 index 00000000..e9433358 --- /dev/null +++ b/resources/groups/S-350.yaml @@ -0,0 +1,11 @@ +name: S-350 +tasks: + - MERAD +units: + - "[CH] S-350 96L6 SR" + - "[CH] S-350 50N6 STR" + - "[CH] S-350 50K6 CP" + - "[CH] S-350 50P6 9M96D LN" + - "[CH] S-350 50P6 9M100 LN" +layouts: + - S-350 Site \ No newline at end of file diff --git a/resources/layouts/anti_air/BUK_M3_Site.yaml b/resources/layouts/anti_air/BUK_M3_Site.yaml new file mode 100644 index 00000000..b5b08deb --- /dev/null +++ b/resources/layouts/anti_air/BUK_M3_Site.yaml @@ -0,0 +1,61 @@ +name: BUK M3 Site +tasks: + - MERAD +groups: + - S-300: + - name: S-300 Site SR1 + unit_count: + - 1 + unit_types: + - CH_BukM3_9S18M13 + - name: S-300 Site SR2 + unit_count: + - 1 + unit_types: + - CH_BukM3_9S18M13 + - name: S-300 Site CP + unit_count: + - 1 + unit_types: + - CH_BukM3_9S510M + - name: S-300 Site TR + unit_count: + - 1 + unit_types: + - CH_BukM3_9S36M + - name: S-300 Site LN1 + unit_count: + - 3 + unit_types: + - CH_BukM3_9A317M + - name: S-300 Site LN2 + unit_count: + - 3 + unit_types: + - CH_BukM3_9A317MA + - PD: + - name: S-300 Site SHORAD1 + optional: true + sub_task: PointDefense + unit_count: + - 0 + - 2 + unit_classes: + - SHORAD + - name: S-300 Site SHORAD2 + optional: true + sub_task: PointDefense + unit_count: + - 0 + - 1 + unit_types: + - TorM2M + - name: S-300 Site AAA + sub_task: AAA + optional: true + unit_count: + - 1 + - 2 + unit_classes: + - AAA +layout_file: resources/layouts/anti_air/S-300_Site.miz \ No newline at end of file diff --git a/resources/layouts/anti_air/S-350_Site.yaml b/resources/layouts/anti_air/S-350_Site.yaml new file mode 100644 index 00000000..15cffc71 --- /dev/null +++ b/resources/layouts/anti_air/S-350_Site.yaml @@ -0,0 +1,58 @@ +name: S-350 Site +tasks: + - MERAD +groups: + - S-300: + - name: S-300 Site SR1 + unit_count: + - 1 + unit_types: + - CH_S350_96L6 + - name: S-300 Site SR2 + unit_count: + - 1 + unit_types: + - CH_S350_50N6 + - name: S-300 Site CP + unit_count: + - 1 + unit_types: + - CH_S350_50K6 + - name: S-300 Site TR + unit_count: + - 1 + unit_types: + - CH_S350_50N6 + - name: S-300 Site LN1 + unit_count: + - 3 + unit_types: + - CH_S350_50P6_9M100 + - name: S-300 Site LN2 + unit_count: + - 3 + unit_types: + - CH_S350_50P6_9M96D + - PD: + - name: S-300 Site SHORAD1 + optional: true + sub_task: PointDefense + unit_count: + - 0 + unit_classes: + - SHORAD + - name: S-300 Site SHORAD2 + optional: true + sub_task: PointDefense + unit_count: + - 0 + unit_types: + - Tor 9A331 + - name: S-300 Site AAA + sub_task: AAA + optional: true + unit_count: + - 1 + unit_classes: + - AAA +layout_file: resources/layouts/anti_air/S-300_Site.miz \ No newline at end of file diff --git a/resources/layouts/defenses/Bastion-P_LBASM.yaml b/resources/layouts/defenses/Bastion-P_LBASM.yaml new file mode 100644 index 00000000..66317439 --- /dev/null +++ b/resources/layouts/defenses/Bastion-P_LBASM.yaml @@ -0,0 +1,37 @@ +name: Bastion-P LBASM +tasks: + - Coastal +groups: + - Silkworm: + - name: SilkwormGenerator 0 + unit_count: + - 1 + unit_types: + - MonolitB + - name: SilkwormGenerator 1 + unit_count: + - 5 + unit_classes: + - AntiShipMissile + - name: SilkwormGenerator 2 + optional: true + unit_count: + - 1 + - 2 + unit_classes: + - Logistics + - name: SilkwormGenerator 3 + optional: true + unit_count: + - 1 + - 2 + unit_classes: + - AAA + - name: SilkwormGenerator 4 + optional: true + unit_count: + - 0 + - 1 + unit_classes: + - SHORAD +layout_file: resources/layouts/defenses/Silkworm.miz \ No newline at end of file diff --git a/resources/ui/units/aircrafts/banners/CH_Ka52.jpg b/resources/ui/units/aircrafts/banners/CH_Ka52.jpg new file mode 100644 index 0000000000000000000000000000000000000000..21928e2c087c9c37c7d2bd5d982402b7fe5efb9f GIT binary patch literal 24054 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

0^czsx@`y7tc5v*jtM(z`FMD(>v|lZOR?o2_k| z#M~K@LK9P`Y@wlb98M_1Tt_6=@AO=*pW)mDZT2Py6B<=ravylk3kHHt(Kj?AbB_@u zLp}g6ROki?v8w`jMCSrnv~SFtl!8SS77cuVc^lSqP9H4VPQ7ymcVeBNzIo>iIFDVq z`-8{(mh%B<*nBtuzx|hyCU^}ZA#9AZcFy3`)8#21o1SA6AET3@#gpP$-l91aMe-P_ z^(S{O2`o;B#z0mHzXF(t2b&C&+QI@Nz2sSYGO?K318NG60r&H-^`} z{~iA8QPiCN8h%fGlUq1uhGaq?xy0a7kr9DTQwZri&8R&NMKPN`LZF3eN^QR$p)28o zL(amO0lEL7SwB$4LcGX348y;q?jb!x0R_lHzQ z*IpbQn`KO`Pku&ux>T^Jcs9*OC+jZYW!cUpbOl2|8;S+`@0FykxpI zRh`BekfW`nj(Wu|Hj<-{b+5y0&WKk#)f-9f@*6AQ{?fRfRK7A%l=*kIF}jY0nvD0C zT;1Zaxe9vOqwF12xN#>>>vX(VSd{rX*T$%zjf z!m`-B4}SnoLMtdnp7{K*mmF3&PVPm$x)XT#5ciACG}({6x|=Oh{ic#|^uy;1FA!xP zogB8p56&e0PYDZbJJMAblAXu28^up`T4yVVC&i|TCBEGoS0_lfQp5`+{S*JoH=GQJ z6rSOoIdV4$#CR~2`L)nq7otj9U+yU}-_vZ*LJw1=%qX9HLeJ9q410To87+Lbear`~ zkJPZWIiyGA!7hr&nmE#FO#Wl0;=2K}Z;lGLkFs2vEN2h{ub31?^vqAB>D9e9!g^XP zi9WJW&>j*Wcq@0wLqHcxyz!0Ljsft|*HS2ApXynF3KV!+|ays-} z1rv8uGy4i>Jrq?U`*yS%w6lw8<`)(MWeXb$rsHlOIaYP@g1YZ})#0eP>PmZm8^sti z0xQF1U3xnel{uQ+Sg5s*qPfKNr&#nXAlU1z8YUuIU^Oczx--<$5hI?8a%Y<_c1tid z;sxzdJk)WDR479-1S`O4l1KsvHzpjPH03VXhyF3p@hntJ(#wJyyFTvKLE z!hHb3awKsrl)bs(#_^V*Z<_}>Cc0>&D6H`HLzONum5ST zvyN50;q)6Ws;ppxaoksAE4QHmjo6%Y_@6e$|;yS84M%lRE}`e{bf>!RO(O z!J=6ToqV%m4%946W72B)R+>SC%ow$rxyr?bb`}<7G^+I4JbW>s5Wl*XDqK;bedt6{UX{qm9TgMN;_7=Zv1Rl0|H+ zuS-g#I+Z#KzG%qNnM3b1sxGjX)h=hvg?O$op)Q=7*?bM{%gEi~CKV~$c1zm94I?9A zwqaxKlk>}_e%@l2;uy{xDQ0S`)K-|j8l;n(ixyrFI1J05K+6b8mQkvg;;1ps?2@Bt z^*4ZM3a>;bYZVLBE{uXlUqP=5C{y4<)!vh8>k5g$wN@G8L_x!wgQZSaGe@T_i~Ob0 z%jYgK=q&zhtfn)89-NLvmqLcc+c5TjsyNT6Cc3t5qaX-^bPyvTAT>zu^_C_b1B4Pf zkxmF8C{-SmP68$nB30?V3XxC+r1##X1*8N76r_o7?&tm9AK(5nvwzH*S$kjSnl*Es z=aIK871!RVpvOt^jna7hdBuCtMGx8z zg^FzB?MWWP>pOnBq1ON=M(m~5nzNKddtPN z1z~47Y6h_-3pNQpXA`wyxOJPBySFO0?4+w;lq2E=gKO7N*zV%2rG9d%@J$neQ;T-= zy9{5MVE|}OrnTA5pa>IY`O8D$%rA9vAkF^D-qnci*TArOaCI9EqueLCFBo3xPmoKV zew~FG^nlxKGbM1oWRm>Qv!NC}G^|RyJkNIysyPk5j!;1fs& zz4^J82LB0CJhN8>3Sk1;{^+l+T%G1OC=6g;%V$)q7{X(HjcOg5|128VOr@|7r`yVC z=sD%($jhj1;WCV@^*rE%f!OSdT$WPZ7NPu_VbrwEvMEtz-SCJRA+42XBJ3gRPcV_5 z3NFd5EEQyESr=%V*I>%P`A~zK<6hGc+;h~Gclvf0X!1=M+iR<{BhKKf-RmOOFlI5& zKG(0vX?nV%k@sc#6K|(|&n4Cv(6abVp&@3tQbNJxGK7DqYa4Y2kY^vRkKFB)Q5Z+POMgeTJ5J*VK*;0C&&0)u_ zCVsaQYx|>b<(lOx*Rqr0VM8O#Og!ZKFi^jw?lG*THKb*=XZc4~KO=qC+Q;u{86EEZ z!EBasivmuZHS^`d{=L4{wGC7`qShgYb^Off>%|v^QfX>mH@ET))M==PhB3NnOt9wU zUxMB+y^hpxw0DhM4JHL4v15dfnVA`bkunosVlXz5GRt{$EH4z>w=0%jATzIr35HYY z{z>13|Ike--#aY|&8w?jpv_TqmPN@;zLaq#*J!aQ?Rnju8Z`w=Jq_-=fFY+os4z$t z92eP`G`&mltJcBTAItgRDre9Rk#1tvo+`k7mrVs&D-{9F!wX||DcSta_mAU9zoSqf zXVUm)#hJpSwab(8<4-dz8FGHk$K5+6@zPmL?r34fDyhlkJ5>5PV!1X>T8YY%4fgQ= zSl8^tRV+;Cv1Z{5xeg@(}l zBxKFEnv6gT3uWe-uK?Wry;63yGMx9} zhBPMTuJ>eZ8-);mEmwhg_^)$gF zavim4JA3T*X19ZD>{Xr`m}}ntM?z}#vE}`Y8UX9(^=#nAE#RANL^W>!Z4^FErrXF> zI6_Y&t0f{@ma-{GI)ZASHekFxnocC#@1 zM}NLp?Wg3&NUw(9eFF6^FbFc~z}lDpt@r9y?Y;`l6MGtCpDjm-=(lP!1Lld|mvc4% z8yv#P6j~R|?}%!Q+niW~zxhw?8@UxM#X+ME!%}$x1!CQwW^CX&veD zc3gvsxzfGdXyV%+kOd^}c&g3Lu$|~;ep(=RHU%=1yJ=={XPz2l!Eyc0>E37CyXPJ| zclOKU5YZpUAJfIjj`L-y8scQ36x`=uGE=BJLV=S|ReS4Ww-myF6t2Hmcii*qf|#_y z{5H(7C2mBQDiHT|@2UO!G%GA@(%>HM!b|Pf$K@`T#Iu?c#N_}YtB#6d7q+j18wPkf zW+O8;b8hJ!kUl!0X^Sn1Ot0;Pa(Xr|8~!v%^yqR& z;T?C!%n)jAtuj5i2~EF@avMTURr~r&CR)9sWTQHna|st`x_$uoFc#5e)SBfY z4L_AbRv=*uW9Ig*Opth5+Ac$jJVQVnxS(wgRmtSh^-2#g$*RBRqPCXyMz(;xftRJJ zSn8k^sNsf^Yj~-aUd*Rs=xHJ}#)u!8znz}JpP>MXDVgw`3izy5CEKP`@1fQp&L%M( zKN#JXH?dW7r_?1Tg4P-w7H_fBkM^jWH8c0D#WW5H+eKU9StMno0g81^;w{^{3xE;k ziP983Mcvo9C45iNFe4=P6$MedjIE2W!ULmY8UO5@@;u0nrAk~f8qyP^2>9M@tqBcQ zuSlzR5o?wD`TjZv=qf*G4PZT0@N9V8s~@C{dtL{+cw{&J4kn-CY6_Bm#Wg7dTcBXtFz%{j(IaVP`zCH#C zpEQJxT=m(z3ZhkTJ1iN3V?{(SQT+msUcNVEmgTnc^vmOJ?OLJ_rnz^=!X!zZo2Znl+j05Az z+7MV;b)t0mcZqg}9k*bngimy^ zFZ*SJH;83ZlTMng!t+>GsNu!4>CDxL-b;ZZIzHKN2uHYim=OotpsJ@F!?54%;iI@< zGrx1JC|{}0id7pUBwo}JdrMqF$1^8UY%!dMB3*ZG`tA$x_8yXE2ndcFFC)~{& zGnfF{E^M}vbgd;J3JWcgUdCT1CT+Xee|u0FdwqiBdC1;383#phxK7?erzkILzna%Q zV9aN>#nS(dEXs#Ti5@7GM;EyJqW2o6Ld^r z0<*4Z285YDe0tx!nJET{s&%1DI0yQmhHa(s9~d_tdGDvR^-e#Wxp$JdtvhnfEwD_d z+&nijidtG-PX|QczpsXAy`nw8ZgE53)6ldr3apIo|}-t`+b`p>o4i~w?=KDOg#>hau*S_SmgG7d9L z%kVjSQbTzU?WE)>qOESiHsh=#tGyVAV74uL6zrE2=>lHspQy~sWOmkJHWtP-ZC@)b zdfw$PP7(4(?IqC^MBC;4bY&<3z7mV}-Z$=bisX5SSpbCi*i$i6!&WD}P@+iBg!*y2 zUdOjnu=@S_oO+(z7)iAvE2%@3ulwShbo=n4>7=}W)1jQI0@ON$ z`2?>l-M`oQLLPWH_Qhv0<6!Mo{j&(;K-mevV!K~t^wLo>p z7H0CNzVgL`M|nLtUeMVS0~zmD40~uT$k#NrT4Ptv!k(5MI{%mKM$Fw<(>kB01ovr# zIk*%QrYd1>MlJ!>qf^qs7(yo^!Kl&+u$#wn+nq?e^bc{ z(5*ur=^XT9SW3K`CSzTuTbUnw{_2%*K+biAq_KZed_B0KCS%_M+Sk9b^IOLpn4X0p z&xog<@GED*?Jx$f!PtI%%R<1~nWx)R^x;!}?Tf<}4GiPzync&qa$@9Zgs(doDFf{A zRim3|IbB@{T_->Z`Kxf#?}QdQ8Nf1Y#S`}tN?;4CD#~C@-!`uf2SgvQ<35jj)jOlI^Hkc1|Z*?pj$qz{|#ohwvTgJ8-zZU&8IGlbE z;hhw2IEfXzhrgTPHa!KxM-m`l;v}mA4kQT;=}`1)xjwHmS>+N zZDeRF_-dm$+0E~O^FdH`7vORC_U8C4%}aI-LKFBT@=zrm1OuLn<@9!NeWPm$C$-Bf zW4OuVKSb|+>@-V0y#D5C0wPMa-3z3D5&J8Gm@WK4O&ZU!*tKHv;JUY~cPVSrT{<@L zQ0<%Y&-Z@$2cy`Oxx(UF`%T>a~>^OdbA9x7&6;=nnw*Hb8F583XWjm*sj71TKvPy$#0@ zI#F9`I=0esD=h7=h07nmz?6xM1QP44bN#b>3Q6^}pdxPBAJQi4FZ5O$oE!%$t0>pmmoPFTIZuNCrTfnJ%-!KCu_gtrEJyn z@~TK(vK~43+c)*#a?y9qnT^A@D1Wa7oj+O`MvU{XwXP%?eDH1z<{mrEheBPXbxwMP zV7A!x_g>-x%^~cR;LO~SF1XuTdu;>0_!lgma;5)6i{puE8az#&FFb9pLMr5P41Us) zTEAWRmuxMtgY<8|2N6csiGBMDT_QhXfW}%S{w0%aKS7`Rh_l;~?3-eR$#%+OcNDd) z2!%b-ytPF5P8w375OZesJ0Ua>%@_Oe+b3d?bY}+56|=vcnXnNTJ2wMtw`a;_yKv*y zQxpEpbVK-;mAk8*Z<~2OSL?{nbJVX8#(9?`&K%2kFYO)eyQ3Ls$wGZMlVo1GjR}=O?N(78Bi4 z-T`HgJn_F<0h>P7SWB zy8*iwr`Grv#_cH)D%s#|{NPiyp$BKp2X6if+96o?u+9xyZ#Xn%%%)_$C$5YXLfTSB znMP!IAbaK=f5%8A>gN#~S9G9x#XpWAII$4Cm{?V)*qxa+He#s9sU5vWTjF&hx&o^< zfV%{Su=s%cgJ$TBBy8TxmpWvS?3ku|C}gvLSfXKYArXeGTVpwOJ*!q$c@CJEa~HVM}YhHJHO%`16xw#p~p6^V<){lR@p z?}eB)lv2gv-wPif{cfmiKtH#pn_^-ivbXu`4! z<$#e0SV4qi>YP;=RQl85`nxU3s2k_FZ%r3N&*HiH%{Uy_k9z-vMU0DYtJG|k_N+vq z^&W~iO;1nGYI5FH)qMApOZS)yP9LT-b5+jn04{$*t+kF&Y6?ka`B=_%n}!H{~I@NQQRQEN%b$)h%`tW03z|=o;Wc{NSgjb&Wn2H$EV@w>>HW;|8|31ovee0 zdOg}_a;~gfbEJyLu?m=Q#&f6UKyvlR5!X-&2@wUwkIt{1qB5btWi7$^sOUzTik*gZoG%CWhe?<|aV4)pm^ixugbAjzdy_s&G> zMD8EQwD4Tq9c3j(6QjeD*(4Fr!78a@DTe4wkB-r7szB;33s#g#8H*ORH~;cDbTZeV z2e9h`^v{%vZW0z2uKhxkQ>R}2k$7*0=u?%}Bgp-@VsLb5N7w}W)yR6B%wei7iUnO+7`DQ@4 zTC8EChg5>l&NeKekdxdm@0o#l1CwNRRCIA98}xm)eueC(o}wlsb7z^r!`Jo5z1u$B z7Iq)jL6>n3Hkh!{A-FzQVJ*8Ezf&T9YaQ+By1c?DBnfs4f`g)DNkJ69O*ahKhxOvNn`zHl`A2HB)+hx@r(PxP+ei83ElMM=7Nh>q+ay;9genGjcX5ftT?)bH8BqJ-=rJ zQCSGNRl@4z)lqjlXFl04FpPAU)+;PB&#iQ&^4DyP0&e3l+8HQ0E5Q1Pv2{=R+p9@; ztdEI2cJM*dvEpZ$h}=JdKAEuAiqlcPOt1SQRpM6$$%mK-ruI&-!+u-j5!fNH_i*&b z|4EXZoZ==KIraZ4@?S|ZfFAPvtH>w+nDU}>$(c2tktFFC`Cmzr-yliy6ZFe0<|R01 z;uM5Nc?EG7D67!lGMIkfTRQKkA!u{p1j%Bd4tjd?OO4svMBca4C_UZi=RCJHM7U^T znpNnj$N?f9APbqJh*KBIaFcy5ni`cv-nv$8($KuOua+dE3S)g<&PQxM^fjgs*M-(G zBxsqMy+Na1J&TT%RM%Dz?l7j{akOHi5WRDMEK1ZvZ(R8xkn%ISdtK4AXv!* zHDO!d)8rhh(HbT_+2KozRCUe%XT6c@eRgRD=}l)NVRg!+>~FM>cBXCt;kU@ug9p~6 zc@)oWyYGuuEJ4$K$12H6R>#fNnj98XC<4Knnc;Iij9iswaywf1w#nRVkA|fSj5x6I z(h}W*y16j!v0@2+EQr6ppyd`|tq)9_kQ2BK~t9(La9v2=(Zw7${#*Fi;7xfIuul zQUW{zQd$ZMT6R`;5J(T^fAhos|103F8-R)c^X=W_dl*u{J5-qWs4#E60D^!0c=sOW zUvK`8gL(HJ7VZN)0^-{;0O5baU-GFDOiM6}5P)dHFh~Gm>S$OvoNJQk0P3mBS|4@KXLPq;xl%fj};#tT=B(zZ~ zQHkM*-%&A#P}7s3z(n+7&VrIBNnnsE5@-|Nr~gDF?+N+MWCMeMx%&4P8l^}?FvTyD zXj0Y6P-o7uaBXZkl;fT)iQ*KUu$yY54TC;xzD`$oZ=V@lSf5 z%F1^LurTzbfajLoH-OG}gr6c>$FlT|t86o@d&Ii|f*jM2z9pTaBqj(y#Ur`8Ud^9q zqlsbO!NB0DpuGXu8#69$RE>!fS!9Bx0#KeeE)6OmLQ_)0#D4Dp!DpnTZvfT>NYVnq z_sA^=ht|lI*3$tvyT(bs+%l79AN$LG%Hfz|)Yd*FR>yjHADFN#1cOZ@XZ`%C;Q%noaUbm^hyZ+gd&@~{S(fst2jm^BA1X=!-xd0nZwx07QN9p} zI2M(-p9Ceq3;udw`lX}ss@;0#Z1cyuym_1jp07~Vo-?adJPj#dH`(>XURV~h8 zR0v`yIS3sO;a+IhzWB8eV&n(REk9}G_r~L>>2bqr@wuah&k4bP*1QD!G(VZe5HLB1 zl3|c5Fr`1AL82)3+VhSb?*~Q%sLD>c1xMmfy|dUUVqmoxTXTeO(Bw>qeBiO#p9U6R zP?=wyeI*(@&}VK8t!Laf#Dm5=3T6%(4a9!k5SCmKIYWq;<}G^?hISkpENyQMEg|}E z0LPX@dKiR$^4@`Iko2}MQi_84ruX|(U;Wc&!=Cl)l7)$b%g5J(h`y=FGW<`xZ3XKc zO!rG`&Te~dZn*c&&Fvc&R7+1C@V6ImHxr&mW*`s(LX<4|Z@*{ZqVZixgPrw8Gvb(-e)6)2@0|{aTNWdD_C@T3mchvnnE~>^5tD)I_g)fS);VX{qf+u4K zn?ku@+F@G-dx&0u}RzdvL5Yp>Fw= zkL2KkAxVXucb0hOU`b-R0d7h;|M#LJJ_hcpwW+-hjnS*Q-{f%wcuxwxY^yIDjnXEf zS~t^j%H-iD*v}OM;F_y;#Sw?A5jv-l@93fX=dIe~6M0KRE2DF~YhmH7UJt2`pI$0V zBZYh(OZ~8?1w>6^$WTc^;pWdpw-5sy`|AuOp^chQ&MtaC;tUScSdWFpyh-HAebQhaES@; zBR3_(2#z)B3n32#5&sk??e0bhmy#^#V=*O<1xb^dV)uri2onSTz`P@uiXoep4#S8A z^-IOTf`S7is6&iY@&GEL(vF+zBPB%%ALCH!KJwg&m6$tf-E?C?#bg6@%R^O&*I<7z`qTu5rPp*x3SR;mT;DsG*<`5;Rg2 zDNz=*!GHklZc>z+D^PH72q`HlDKRlAISWWngCq=-lpGa4KUPi^4W$o_gj5!`Pz@xC z0+KSNLq-u5zG)mHkB*jxzQM!*KafeKKPtH>0wNJqKVm~QK3z+?bWgW{0_;r5mO(7>p~1MoZ5{}9&_|9PJp4}jC(68;H`2_u{>4EU=n ztplqJ8W0Cy;Ll;k6XTeiA1cu(fFh{hB}5AJ%jT)Wlf=o=&x-M1F7K$97YPgROZ9x` z;;`8(bzZY5=Y>?szziW$gk?}r@$BD8FiHBfK3KabZ5ERsI8)2-sH}$k&5W@7)gOv6 z!e7qHGiFtGICj$ZbDug}6E7uYXL&_C$$i2Io);+oPv3VJ|AbPQgg;OUg#zaPJ|Lhl zl)fj8|M#Qu4N71{!+!z*$Z$%DRR145dH;_mgC7rAgOR9_q=1cR0Ah_&*uRCJVtZlW z)M7v|B9o{nq9Zf_SQOqr2nbm8ws1dTs@?%$(g0{(a(>dn#Jo;WrC3#u3i#V>&z*vT zfZpVG5H0-6o6zc83aPLgfhw9c?vVV2mtA$rb|u{Bo?HcwWh?3Olm$8Q@ur9C)^5P} zPgVhc^D~}3>wbUMImvVoJ`YYj`K~6D#A#vD{ct@5vy6Z;qn{6vUy4=Wa*pKrc}V;V z-Mz)S19sf5wEwmjW*Sxm+6w?LDB$1c!|u<2AEbBm|32!d|LA+sfBght{v-e6U<{$0 zkw5{!yoZ5>Lxe?m{{jAA#6NI_3X4XNf>;{`n`TYwPm=z%Ce}_ium4Jxap&dB8!(y+u}<$cENG2LE7!+Ie||$CY2HPUkakQ4Z!o-IZZ@ zjD8x1M)E$poo`&YV+;4PH)arHAAhAztzpR>u%y9bbK^!ut0J}DWP-Sk&*)g^J~pes zbWFBlLEuJbtk5-6M07(yz<O-8l4SEbE zJh2ftW}vb+A^xQ7JyS{c@?F6T?y?Ix$ED<9jfgahhC79+zQ+w$JzdlVccAN9_LKU8 z+i$oTu)fe|I)dSX>Z;Y^k|CwyVj(ge(^3VWc_@}*Eu}olcuLO2(&|5d501x6;PKY1 zpyW@!GHp^jR|h{i+y8WHr1B;M@-jFo>Ef`oh!TKxyKBp7CoN$+F4d#X3oaYig;062 z1f@1|Jqw-*->tM%3Sk`E(^GJn7r!lk=}(1SY89FaKgJ*ktBRdcPA z?n!ugT&HPMJ6MbPE1~c)&}mWNS~2H!l~Y0^c9E^de^;Z5dwg)O9P%gn2ZIkmcF&ac zyxsEr>A`wnsn|M)rRiCqcT0CGP+eW(Rg$L+==>7_y58fll4WiS9eBzu4{Qj`2^+z16)x= zn@i9`{)tP8ORbKlwR78(MvcJrvz(J+!ZkN~rj)>$?XppdfIz^Ci_0+&vX|MdJXf}T zL@$8zj9M0TSmIK1Wf|WGX#bS|1`uKm)FN64POl<*pHih_vK6uAs_66v09R{#BTdM^ zZdUKoJ_V=74)4~<3Vpw(QwomLMZJ8+iQLKb0Wxw|Y zBiv^%tFxebqdfd3k}}WCE1uJ0L{uDC;ZHLg1b@{P5L+{EOwUnf#) zb%ds1&c*PE&#*2q{3jn9avPm3Zk|4oyS8}Otr>R4;?1*POSpG-Z9b4$)h(1LUKQ>+ zMEsiKtpzJQic&t2mt4t*5na_DI?9G{c_uSe*7WNrwY9sdW&Reo67%S1nr#WC8Nb8`^6jF(nJUcLyrX`FlvAc$ zaojm=*EJaXv9|80yI-j9A{~``6uVzps0ZoAUkdAEEni`{6}xU2f*4p9N&}{{zR`7Q z5`Fo#?6Ymi=nCY)u}aCD^O|886>yv4ln^T3R2R3@Q%&FBog@1pzNnP3WgRz(6p1(= zVt&YfqpFM0xB2HDFW&W9XNo}L*I`|ea;9ybrJ3d~_ni9E1W=N$z$tr|GW3pI{LgQG zH9N&e@z=o|H--Ve)fRZ}gd}c^wMKgUh3YeWJUyVAn*#)1Ewl(RxUC^1*Dr8Cf^nai9+AxhT2>f1`V8ACQZd>^Flt(vW-cz4M~3!@8)%Z!C@*c9EakNS&;?#25_` zde6h84W`lWsQG7_iG0JH(0sRs>MV1s1>~&3h&inFhq32x0AQh{VymliCDB&}5$l;pL_j)Og|b=UnP3BCVvMe3KPIIFSJHvni!d#d@d z_F|Nb`}3#fZ<4y^YWAMX_&V^n_i#BA1uZjq{HT>eX20+V{&*5UV3?#d^`9ftMt*}W z$wQH(oOOD_)T>aa1wT>te|Cb4lN6r9ddI4)iOYy2Gf7)qTsjBjIZOW~LnU|#?=;ik zsAE4}Tj11ct!5xACHg&odDyn7fStm4xmXZ}TrTnKC8%&|)6MaV9BO5!Q>%b-rJMOS zYUMZ|)f_g%r#rhFb+V7@9{Lc$*5Tr7>cT=rO07VTwd$I&;jHs8H>Bg1-{@ ztTc&94g9Kv z$6FE<-vH_kdu@YAjCcue061?$yaaHCI|K1*SQm^MZJ=_S8njE-v?ZJW^Rxj~Jrb4d z;wtyRO`8cb+`*63OY{dz1;v~nJeeFMI^O_ag}uNML);MSUDe!}wy)ejoRJW+$BJpg zW)jPHZw$hKVw;6tn1aYea8bXBVH@ePv4^LCIn?zR%ot=bODu!hUwI}ewY66Dr|-ja zs-%RZm0osD%}--$x-Z-WP^-i%8>zG$xX8Dg>)_dCzCE+aBTX}qPBT#XIiHA!h@?$o z5U)_)6=a+kk4{%tR5B5n=5%tIe&*Plc z+#!mvgLKcD?YbS5=lV=AC1k^u$q4(1&!EF9eb?mS>nNmxXbjU7>b#Y_=rS9O7z zg_X80jeh?5U$DsfgiZDw5Z4dgB}qSjL=k~S5h1!9bx)_QXV+IeM^Euh?hN>*xPxO^ zmYg%ZZ|;o7>d_sJS4`S`g|nLc)#>wu%Vd^aVTzgWK8YEpzSfF=4u{@E)62jGxzDMP zDNVUjSQ8|s_|@rFJm8C@X9y)n*0HaSiFfmMyRIOcH}{m4H9p9pU)~cF!10$?pudV} zr}YY$j3`L|VSt5ULbc%?XL3{=!63wYU@F>?mU37FRQG92QvKb~sla3jZ!snRa*U=j zM=G}G?+;AMvu!G0(b4T&je!%=NoJL(2IkguGEz-+LYI%*oOJXymjplWNC-_rrJhvq z%DE&(`YAT2zz3CiN_YC9xs49-Y#AKVXlXh#(h{O7fdWBZcg~wnF)z!4Xf$Ir=T^S;>6<+RsLStgh&?Vwzm& z3bN~5>0*x+>|=^Bs+jO&|1p~ETVg5fv0Mg%Ag%G@e<9Go{}!-98JL8W?3w)+1X z|9=Nk9X{N_ADkqTf~5BNywm>$D~7sHAXaJ9_hVLykn)b3@2B9cBYi!dbHJ6w_9~<3#ct3ue;RK6O6#CrMkoQv+6jcoJ(z*B zqYC)5qT8jmx)z;E__**2sLI|?%TA~NG&wndOM&PCdx!gm4e@~oT^n}A6?Eb%czJXgXI0{_v|YX!@>iZmq2&BvfTlz{(qDC)iKXU;BL?2I zCvFugG6^zk(xWPlx zV*U|px|fP?qxXlR5|i*D@)wus___DF7IE?rD*V{SQsFSrme_1ARRhLhL$KI7ncfF^ zvRgzebXMxtfrin#&sM=pE_{a&jHD^^V>3hMp|3GdV(zR)`OMdmITJTuTMFfalgDZY zXwcJt$guIVLDYuacVm4T3e-*TmvYulbeXk9?RC@Gj2trVPA0{Z zr!P=-$=G_5r@4q-$3b|7vrO8!=U6#3Br|5ME@FY4gAz2>L|Z6(>Rz3J$fm_NgqM!< zMzmD8UnL3|#aGFaPbT-cx!5t#ib}$D4P#1GJ3%6>4Pd`(eZkDro8-^r$p=pxea zFB+E7kveI`)`$^1-Sua3N*-3b6B4*{HL#~{(fhPo&Jrw)9+_{XDe58Unua6{h~wLI zm;}13$wrp*D5YU~H*S>Q^wJ!aJ)DYWW8GCMo8e zBzX5Gmm-7%uZ#mFB)9whwUm0e#y4+rOFWgTI>(k^JsQ7O>+@q47V){Cv8c5CDY9r< zDQbc#o(Zy9lL^j6lWZOVB9$ib7l;m5&#(nG9_1#PM>#W90-N=|By1+C<**^!(!fLt zTO+wV5oB(#23D(;CrpGc#h6v>ZZ$L~Jf`NC zXpa;l25Mh@C6&lKDx`qYY$I$YreqJ%27yf%eeB}WM$}OQ`e91#mz!7>8!FqV^l{0* zgy#raL_;Ywg3go8qReLLvYALHPP287e4#+iEx6#AoqhydxEKG`<{WDbU;P*w*>$Ny z$T?bSYp`Y9VJL1n&}d(x^m`iWW^da9k~^s?aWipAN|`JXoJ%gLD;6)0V^-(5nQWrD zUi!Y5Po%D!%CET3;a^qtdIBr5ct#r@(p3bdt)Ax%ehgzgKFRoB%d#Cs7C5C%yO8EJZK>vOm` z6 zWiggdVq9Cy6u}vY|LHv`4V%qn+s|9*^Vz8RiJz22f_9&9o^gfOn)Uj;r5UDv`{go< z<9Pi->m9_#rfQZO^5}H;vCO09)pKtS5~_asa+fiYkwx}G1cdN*OHphd_fg2GrhGB= zi;+$EA|^5yv55B(i|KuRu1R}yyrfh7j|8shG^PA|7 z*=)?<36g-LAISEIen_rG`RR5n_%jW?0V;Q}F8WCMd@hn7Y_sZk-T<|BQ32>+=8Hv@ z1ZefzzCj(v2oj3LRLzpYJ{qhJ3k^44Qh2GB5Y0Vg;IA4DTf^@0OHWVV0JJQxEY+p= z9~@5JbDVR=se3T_Z^`4lP70`ShUDKd>a;TsAs5j)GqSMZXcOK@2@}1u?TH#Csphm; za$V`pgSI*UM8>ePOBRB4+7e%5SUDBS)UqQWO%!>C>YlLOc4$4P^(RXcWrff`s)f9V z#qEqAfoE3n&`a`9^hCgF!zRsy2eR$73szgL`&G}XsIF%+BuVK)9?(i)9#(P4PzXNV zEjd%c#f+V|R4)s|N~x6Rpbc$iO(*QQzb{8dbnmJtiO^#Fy$wnsv>ry;P7ktKY>V91 zqa=OdMs_Jc)ekxOk*KV2zH@`2#7FV^zG7fWdN4H?xr$Kw@jTMhm?rsUl@(udmZx1< zEPW;pazk4k@d(CIxt73(Uke)f{8CX_a^O66%(+42{9>AN1UoOUDK_#3fI=l~POo;| zO&yB(D29Qgn#Ha+zI}@rO@}kmhcm zqtJrNyv4=~fsf?#=S6#qYg6d7c_KU$Y$_GPhne?quA9Dj|g(@J*a*(s?j#&4_n2z4r{Fc zd)Ia8V;41SM^;$@Upzzk1~3=sFI!m478uPkP9rhjAGrz^v)^v@;aHp};wp$I+UJz7 zP29TZj4enor3HWGi)UgBP1;nIg%JA6)A$oo75rQRxpALIvXW9xkegg>hy@XS6QPkK(KwIYrsf<#=u6L(?uJ#NwxO*>VZpGh(Lyscyb!*7+P$9p{ zlC9+_Y=CU#x>a>wjl`anf6MC>e)RH5w)0efckGnDgb%LSC`+|o?nrji92J!t%n|v?l;V%184a*$Ogip+l_C^xGdlR3*~PO;OntG39hVlIbUa$J)YPp^{NGHshup4FUc;xNYqdCi70*lySCr+iXXU7Gf8%c85B zcEKU*e*?`GBj3NyP3G04?c><*50V-*K34e4q3h3aIj;)RL_c6TdE$sKUc@aU);-y; z2K!u{DnE_Hb1U>ceK}`3!`gLe>q}W1XqK#D@94pm-akza$&XVg80h*p;e)@OxWz8J zJ*FO{P~5k1()|;u5TrYXVd?L)c}z1RKtL7fD4*OA#&b<=#eVi9)OKnP2)7c}~#N(Lnne@HR-w-Zy2*FObAs|yE zOwHcbKSH3Yx9Z~q;yLQHiB*U5Bx^!};t3Ys-4Be2iJwc&&9QoSXF zPY3n)ire^^JVR2u4T@P)JLV^5PW3ScOP@XpP>hlcH3!wE-H7 zD95VA{qHb3id*gPOQ?L}K$I zNgcs&kSkbLu4ZKNGACowD#$=g;4{ z4Zy}Rd2z{~Bx@S*ZSxE6V?>l2Z2f8;I$u%87_V1;q>|N5tiG^k$+WS6J&0aUFerN- zzSCvgqMLjU#*Qy`<@k_mS(?wV-*;$LPD*Kenc1y(OKmV7*nkXEk;zKLrJS?n^H;AU z4sMvN(QlTv?;L`Y*iUk>%Ot|GkHca443vPth~TsAv&4-Eu>`U@0blE-Y*O2_uijCoOMgqPIhwF^ckD zAWL0uuEW3-tOzfj4AJp)p6D7c@cNVV{X=|GY6(1CRk{#)h>iY6v5RaJkq(cjg&RSF7Eh<@-* zjwdmWcwBTTNJ=}q-Wq$Xb@)P^a{=e(ZES;4#@ACBeYyc-J|KhbnE)~UQT$IeL+V`` zBru%Qo)IDEWe8qR$_|^zB8x|$W!qso3W0v2v}4vF8uq!sROl6yu4X7+18*V7ld`c? zCU`KeVAGW>-S}MyxW+xJ{5|t}B|8XS8&n^ylbO{c>zSD_C<~xZ6pY;Wq`=MhIE?4M z#B1QQ%V3Wg^yjXRUK3Etss{SRG*ypG(arDkJC==TiZlf&_^#r89PKyWP-Wr=D;k%N z2uRzBO7wA%xIIg_Oz;sJt^1p9f5!?v%0#}p`b(RIDI~^(7BDr{Z)f`u0(-5eI3MNC zkW9LHvk}wInoYeox=ddm`#QXrjrBTFSQ{5Zkl7BR)VRmlXIhJFL7w}|ZR*rw8{GH_ zu_wYRDRT$X(&WAIzVWY)*5~`dwdXH4AEa@_qpl3y*DCinWG7DYrjLHa=P}miLGc5R z1RK6#kqDpX@BSI{_OFc!jt$4^U%uJ&e$V*8&1om^Y3S&jKjc5=sm$ywZtz@~^!bPv zKWgmpNB=U7E+Oebffma~m1oQ&n?6%Il;*Wu@x-exM3-Iwqc2 ztSxnGhLsZbaEIT@!N7wu*{h+^gYb@_@f6PAiKnhtOjftlc8G{+<=uiYamlFR@@>l1 zR&|~f1CC*C7;;VaMSWG*0}$WoPpx!gDX}X-h*t-_hxv)!%}qext;Q{nxkK8s@BE0q z@irxFn;u7k&Cf_G@#jO}yIW1h&!z z^@Cd|KRt*TE5WB{TD=}xh6oM`_+fo*V)AkNNbiw_P=h2Uk=DUAm@HF^ke0J%V#kK`J}~$YQi=CqKjEsxcc?Q$ z*$f?f+1n}EqULdRs$CklHP*RH(GzKqC83>#(d;gB5l_RXMbN6w({ywBsXRNipO<$< zQ@3zTa~;ww?`9CV4XYVFOtXN^W5tC!157K2E)TaeAT*=bnQsU!Rv|gX6%@FF z%HN)=5qo>Zw-f+DbJ4xZ#l^!yJKyfLE_Y6HX9b7 zcp>K=IMvS)&$rF@Xf{l4kq5+@h8~BVlQ51t5pXe)tgf4CzgRDQR1|Q134c8`4C0`_ zU26Oe;{Uaks~41Lz^ND=@9j37B=mr__M>C6W0~ma3u1!SO0J2t-Q69!xkYHhES2N_ zM$@Z{ebB>~laKb^JdbSF1!>pf#(4?eWfN5?VIL?Md(N(Vg(N?y2BoVDczim}R0zAo z6I>lb#QSmA#70ol;TQH}e@QwdYMz9d)|xK#sCQM~((qk;hpo?@@%-k*3u>(@x`Gwv zpzUU)K-tlz)3f`Smw_T74fs>YE!l@ZCtC~RJ&ifi)Uiv}Ub1COD;r4vjZAzV-mj3F zzaB?2`j$}UH2-5x-8I;&{qcpX>mRHBV;Phr$v`!~O42!0bnK&`bMRlxzmWgoXYGIK z+Tku4lc0&9+8{{>8p9ah3~gc_BNR0-HasBzmjHC{@ zil<}fq=6>x{FfFQk#pkGF$OK^zlxv)+Ds;}rtaMh6e<3ft^9)N_1%$ATG{`!|HP-|8Sc^&nlj1QQ(5lWZ)(vyw+ds`8$(BtY zK@&i|>%XR}K)2+WFPd)vJQ+i@6PI>@8R&@<&3{%9*mv*V1O8nF|7Qq+o;abfC>x77 z{)+i`;4}qhzT6W2UmFNYVM*L>N!GIo>1MET`|m{uqpk>J#3}YJ#8S{3VA@A1fCLp4 zLDUjK9@s?$OM-Z>5Zw6u${wcJnG;Ig;TI`7vfIW49>D|pIKBaP*hNt?tnSzv&&e}r zmQFom6&f0L?hgZqgTrcYMX@(CfIW16Y`ij}E>WU_h*KX^@MbpKfVtJ;dStw2;g%_H zfNqrVfD6!3beLW>E4pD;cYNMg`JpK=CErKz6RU`K4n}@%0^z8Z zNV^ac0c#>kxfGn;Av|oqLq#(Xaq^#(&2uKdB>%|(GC`?_8U7;#u?yJ;3%?u9u1t8@ zT*X>XIS5Cd7giY^W6E|z_A~Z4Rfia9O&%$@h?fe) zs&DC1Au|fK@rZ9#m?sTs8&pEXuYw;0>Lg1AKRT#)$>t=Lp$@?UvGma8d|Z7H<2!!l zN#)Vf(z4{HdeEg%b#pzP$vw&LA^1Yrrjej$>7T7<`oR_Vgnbt;>`{d+6^9&6ZvYy$ z<-k3Pd)6#iL$e~nH^7zf+D1QdVe=c{7v-}L&kUtY04eQet{sk~h_5n zRH}|LyeI=JxaGXE52du~rDSBk-T+2^&L*dZGkCdoFQZy91{3$CQ4$ug@h4x4TaDLL z6}R*9ivT;VB7Ih4>aE(St@!S#&07n5bjoIzSqh1o9AOWec>;t5BOnL$a7$%(RdL3G zY;8jduQ$MvngGIPBs}4=JaZ`22$DxPUEM@S$MnjcH^*6TYMWoJh#C^($vKz*@MkJ) zOfo_hi)>|uwE$ZzA^z_XlX~S#SfFg_{PUqRrh^ty5YhF*QDOHqml#A}A-Z4h*!0Va zOk3INhLqRh4O5@0d9p#jEfK3FX*UkI`e9Kw`T?Wcb5(0D;P7s~qe@9}=Cq-l_z9o;K#z>dE6?tOpd8RarTPtU7WI4#MGXdTfR8|| z+`}%tSg_)cA6JzVwu?!N*^R=04F<7ALd@Q!^4C%Xf4MFd{{uag^SGS|JKs|Xvw>i-kY*5?Z*^~^> zN*3}_qAf?Mqz9oRhNVHLKj@Y677;J* zIGNls$4Mxw=F7dQYRJAB7CAwU*;FRT%hE5t%4X0g%ih0WGpng2 zy#bIo#lFy6u(=erAXzx{rgATKC$TE86%*^<|p4X@fq5mj|O!l}+OVL;z*G(e#aV=Cw4zkJ;=TQ}+ ziF))qjdgzih#l@L{|3NL82HM`Z+U(H=wn15OVhF> zs;*yOJx!Vsm%yOQKJ;?E@VlqhgmZv;t=nhXTLIZOzy#FP_mXu-mGdMZWKneZgD|kV zrFzyI)x{w#duq*QA2vnN#8-{=HH3C@#93clRWT^amMc%L^wf~LdYFFg4X`z)n7z)d zJ}`ykX6cQ^#WX@=L#>iB={uGMHg}5pJ$2q5w%aZ%5apU5))MWlX3*rLFX%^{cuD=; zKt&ovr!+3r6A_V$V$4M$qvnM;%=9YmZec8brAgJKSCP9099*q#W=gnMUk%&CG~B{+ zT-7#D)P^ormu%MsYuj=kvcGp;A-nYVeL8Dtu^-u0^gn*6R5)LcP@!T@ z1BK0GbcYhjrO`>X>wHNc>L;VP^qu8`Y~1aA!D@Q_Lp|d-qImKG>vY{Mlp`T&7KEN# zV}0NIl5*IdA~UjZnAd{y28dqr6m)rD`j&TE5)W0tWHqFHW)zm=y_~qkd?ucz^oD7| z`lbcd@{#rV>hS| zTs^0IR}%}^km9txT~YW28LCgJqc+czs-xm|D+@N3q8=ih!krAn#T8>h)jyx9gu%WD znV`3Y^4B-ha8Th{;F6=(tCLszZVZ+*8(IvuwGTJ>n)ZB$@U98Q1b$y8%AQLQltbr! z((?6iX!2=5Ka1LVlmSvMgZ=xGIa+1Q(9$4Pg^t=5os2Ilu&H++GA!?Xuf((#lwND- zdh=fQ8B2JvQ$i*x?vm|~(_WR~{Pai6p0!TFh!<`bi-hZLbw2(l7Gwz3cpC|p2UJI&`zxP)Gjln=SOQK^PN z?WU(~@r5Nh7a4TBdHX882HKuP6nY6j6|z;oD}kmy+BZOo#!-TYCD1~sy4=_N0`eov z{Pxa&!2jg5|JFPC;4ELZqCcTCwdmu5Wfupc!SMK8JNZ>FVuE071Xob*o+Og};QHS) z4iF%=tl7PT`djPC!B>^|14UW66s9d5zV?0^E~vG%?J1tp@^!^~s0|_%>D2xVy#s}R zTa+#9k~{Gv{>gz%b$M?}K)Kp8&bP3aF-_32!msyTopz{E>w*blU!t;X)e8JJTPDeI zQ@MOLd=>e0BlSfr?LMng+qvzm5blF(ud#XsgYuqb8G0XEvu~GzX#TE+GxoQxrr0r$gu=u0^%~~7o@p8qXcT>ZbJef|W>@ri1 zQf|13{IPr|4-Cbudwo8zyCUu@*zNK8N*imkhZqhr_BmuD|jCkUS*s0QOlBWcI`S{^Q;i^SgU1e zYz6#=m(3ogkJ9-?xNGd1U02+!2=^4`Y?SVh+KCT81T{h*#Lv7lXG_bIs+*Y1nW`Z- z%BZw^v9%B;35(cvj?UxnbO)NfV8NB@R8Ec#A`D*v4#a^HxdxQ!W2rHPq86SuJ4OF3 zY%EtKRV;*_Q9e|irRpYgyU>oq9?zFoq=kk(U*`3VOZ@Q7CX8x4r{2uN7>W_Ie*Rlt z=_fumu(gXy#NWRsPuQ~8LgnrU^tv6n?^yUy7msqy9t&l5(WSssaXfcr_MHA}0$ zh=$>PRJr?A=QOeeCpO3MMHzz!Jz&XQK5}z;{;M`)f=5VGwas!Mzk#kI)EII6StZE> zT#so~)@p0BS5i!W-5Tdh>EuCRqhPpiuTsB}&ees6$oVvM*<)o(EuSu>EMM0pY-ElnVoHNUt^BE(t~g!w zJMbtl0#4(%f8#jXXWPFD$w`j)9Wqtu0=4US+6o*AySGe!_YB*tjf}=59r3QDVV$Kz z=@~c&u$d}@_1uEU&&)>l0)qs0cAl{^EM4S$epo@ErKC8{sk$}>8)bK)Y6wAiY+#ip zvO<6muKqJ!qh%kYOq-cIX5YsEGmBn+F@57u+-g-2=LJJ4Hcn0;Rf}4`gO(_K^ou)q z!3xBv+u5w~^afz02J&o*(20`a`EaGQy3j8K<7S`(Wa#3 z8npeEnkISa6hqO*zOEWaW@g53ocP(~YqoMINdqV$gZCiJ^)!@VPQbyk37tjOz-l=fW@QXFWKm#5Ua5kN;D+jp}ve(gu zRQG@u{;HGOneULse^h7OQL~39-@jTSpo^DrGUH%2>K%IJC0O-CuSg2KDI{{}L|a}OPi zD^;Wowdm%82Y7EXu;V7quUPW1PlpbZtNX9DT7%^2&!*o1_MO2f z`W&>=WwagYflif?Pu0tTW$xwo5MI+H5qDH&F2X~ZG^M^z4zllw(wxTj>*PBU`;FZT;NTql8pU`k0#94mz7MMFu`hAyPs5^*YUgE`z#Ov;g@9_u(LcTKA z-Q}T#8H`+iVGZKMTl+jWC&AuyAv+8XU||G~2t=$r(C)S+1sRNEv}N|4VV*LjM#XUt zX2#nTmc-_iE2y<2jeJ|mT*1_f=)yB#Y3@zLm_jfBR|-p1%kYzj2?XA16-{(X^Tk@y zjmSEi4Y_SqHH}gW>OPDJA}2`4ce?^mcUod?od`PTfXxAdBZ$$rcZr z61-@Fk@8ti^l;^rBF;E#52a-n^&p>Aj%MxU=!nAA^wDz1rYNHrJMtLbHi6!J1@)uh z^Y>*R`cFSbzw{ok#>sQK!B-@c$+L_u>(*8VY!GB*p?6WWv@_G#B!-k=*x6zQj?3-T zZg7OSamjY)PY=d<{Pm%$pV^H~4`~mnpZ(Th<7z&nref)^++mW%2D?-HVYkt8B;d|| z5fV2v zP$9RkT{Uv)o@bz2EUWl^s*CP0W7)Ko6tjB5pc+Y^G@u*j@F>PspgWenmnK&@c@sxV z6UW!jq>5P2=cFcO980SDYdAB!MQcv`8V~52=w|bQpJW%-YUE?GEvY{YAaKdzFHa_a z=r+H1b$-uA?#4&C#YUsnPFJH*;B!v7vL-du($vb%E>4}dhoLEsQMMd9G9`Cq7HJoL z1rj+{ghjQ@wvjMMRkl5lAg`ZIwjLdO!v4O_i)MS+sFyA;WJddu6Az|~7Tkn8Um!iC zv$Qvq3Co?@2AmqjE=)+R`n%7lulottx(QQvBGJ>7BOk1PU=n97F3o2sY7g9P$oaP2 zEsI#x-}ep!&q`)%bU84&WGhcdY6medO(_3~hbrUuYd=eH`5iKSyHC8fJU@r3#Gad7 zl{9_5w)~6_O$2>&s{ThEc}jZylrJ~}saB+(DyEc~bmggg+Z=(Mq_dgI#atS+<%Tx3 z)>bj>jYSdUxqA7n65zpNTl)}Hq1MpYQ^AsHxrx@b=(bsUq}EN9FwFL>@L=M+kqnA? z+pY(~dXhSbPEf+t3W5oY{0{Zz$|i}GzjjB;6%(*hIl9O6q0yj*bNI_=4bIuHWCq$T zK92o@$muD{~j65mGb z8WNSLx$=G2m{`OfxpHBV$o!nRr>EMDbn-%i%Y)6B!rC%E*7i3XV<(D^@c-)JyyMwy z+yAe3OIxa_Sz20zMr_J$gw`IV6+4JZB#IbSC2I7k+JeW3*lGl|6RY;E_H1J{L2X4F zvu2Hc)8~19zw>qdabDMX{&imG`;X%|KA%Hus&tXy1K!e>ced>4+O_P*z}xtdUfx?` zmJyGRkQ-ci3Y>wsw4Rylk1flAd;u=i+4+QwmnPF#WG>_8(}SB@4dF{~6aV%Q_dj6y zYWp;?P2i)3Ej`b}=#*)gRQC%lZFD^?Q!Hl~eOd&F6`stN@VG{)Zi%kmS1lDEC?qEh zR$2_c{1AD!_1c)L8a*j&oSH4#@cnz>Ew!Wjfy&Ac&;Q*ITLHw+@Z8DDj;<2TH%Q`? zuSnXKsMvK{eXcVuK|R*iSmLN14!G#rvgxX!%v7^4}sZK=4rt$4ghBPNcs}qiv)0+-jC* z-l#8_)g=qkVxMjS>AsWsbID;^xF@R$Hct-XXITL2>Aw9EiE+Ndiwxfj+nlt<2T=7y zWJUi8MLUu1vxM^7Y@;-n1W3xM+osdc0>`m-&#j_}&D$~X4`k`-7k49r@=`&>SDE~s zzZr~>$nKa=%bYx%VV;2G(xS(MmX?P4(DDGWj84=o;Zb+AGVy81*krjr%T>g!_|*RP zMRpQPt%Bz-w=}0s)TVXQ8Lnltu90dC_W4n@x*{SS|uzU0bKJ-vV#59RvL(SSJV z^+Y6Dg0FGFbF-NcW*W$;ij_xn$?vj`+nWGMC0Pr#T#d}{R{ggl!#w*ll+yM5~!riK8 z$%WR!FHaSKtRg{+vPWGlyY}y|KKWr61V*tXgOfE|e8SYl(n_Bi#z=h!_$Z18a&;6O zCc-V+=S`%VeFqi7vI?ae!<34`ncuI3|Ar)yeOx$OQ;uk$*ozc*@dsit?)si<}r`%Kw z3*ifQ1gXeW7htA4Q?l%t;2@?9qI4MWU?`JNXND@A&!Qm5-ID!TM(*M~UxkERYjeD| zg%RNUB|^%UIZ%HGkCtxc)bUU;8^nKej>??F0}fMlvwK&^3Otq1_9Rta&*?iYwI3+} zFdIXMm%6nR-^(8ZEz2Sre!+LuqyN5B{h6$J5my+7n^^w}nlCSJ!n}eRk(}ydCdj%! zH=XxS?lT|v97%y>@)~Lg(m0-_1ErrK3A%!579O{Bi{CN{dXcKc`=~{k_iJF6DLVdJ z7O%N%#?J3Ac&|CM_yNk+c_w&SH4P+6MJno5QSg*P=h_3Co~L6fW87UoT=f*QJP=?a zEB8&nmzr|R1Xr|Zjh#mKHpO!zrN=xf_nJ9hz-GUKV{7Dn_3DkdECOqT{A|u(P-}|g z6LSsLNqKo;b0t&$69uMZVPi-=YuK2&&2&o64eL+B!-dn25EsXQ(PCpREw>dMUE>qm zZsGe$mgaP}&aS#VLKlshDvo(7-WQRC7b}p6x|&k$XFS#?Hc9!UWRv%Pev57PF!Nmt zL*HjVEbTY1x;Qb_@C?7d8Tk^$>{d1Vo53)8hoCXH=C17C?A=<3@&JOT8iUg$&alDh zaSb}(hseWulc9#t-bdLh`nleb_@KsM=lF`3x+hk1!}RF(h9S$PB&z81Y|U3eEa-%h zOqw_1(RFYy)2GOJb*3XA2D!jBsJqsw^Bq|XY7B6RxF#E$LK1u3*NP*x_4Yl}n+)r^ zMJkEdSgaL?razc9qVx-NC0q(A+}HM~(Sv)zQ&*{vKy}Yd9s4Y$kv zlZvBpL%>xp$!;FaCvl%@WBD@54n)mQsWFaJJ|$cp_-mU77f(pHN&iZ40@|eL#Av}k4Goq+gHgSGY%#vCFo|Z@U9DR-zkSrjA&3#B(vs$Q3|ZKeY)R>LoXwb7 zrH{r`)>(nJuXlFUFR#XVbe*!z!xDnB7Rc^j05~G;$<(lfxvt1ay5xYC9JG{ zMi)o#2zJe?cskdWHfx1)fP4v8C9(1e%-(M1PS^u-{nHd>57(mUh`gH7EkB7rKM~@K~~$@~&V? zj(k8fIJEZ^=^?V}B@eU?TdN45+g$CXy-(xfDxxS+7zrz-!=gY9#Us(@$1+sgK@Ao{ zkMVMqF~L4(Pds&aXE_+hd;K)WciKtOcHZlxst7o;%-!GFI6(tvjJ+*j^C?2SWJ(URQ&$xgfkc8mYcVTmqf$A|Z-PfB6(8 zA&i>&5?2=T;#@DWE#5nq1(nyoD*D#a@J}oknOQWo|8`u(xJXC#;DCY;GQYLng?9ya z%vOLN08sQ@!3!JL22bm0gQuRMo`9k#EsP_tR$zhHd zaFCIV?Z1K;K_d!2X&CJG@$K@}iFnx*-L`=4enL#Ypp*fWFnkp?rct}&1+T!0yQ<)* zUQ*nQvoSShE~#BDeRr>M`tZ`BOjdLy3zi^M;xn1k^GP$jm|mwfg2ct)X=PN1cEDQY zLh4pM3l{ANV|Lit9Zp03#AU}gCN)Rqwb@XOlXe=t9T#4G?q1Tnep6~TYLo;{coEXt z5s1g8-@G;WVH>es@Iuc5;|XsNN9N;Vy9MlgMQ*CfmBpH>yN1UWGpWkjTotJs7Mg+n=O9c;96QP*ZP~EC2>)d zKoUf+Xo-TLB*^HJKd%k7wjIQoVidR!mekm!ILiL5b zH=5JCc+PTQBL=l38-J#LZV{4Ed5g~P8O+MQ{&KBAp;Ozxe{`)#_p5zeTuN(7(Z-_$ z_^uKH@mig`J|<8o7(e(o4;r>tHU%_7ysZ(4ZwzvMwoOq0f^ z#KR(%M&Ghoy@AY$6vD(d2I$**es_KVW(3)e*awJ!u?mYY-1gurM#Y2DQu zawNS1w2DX{!OiUok~gJWO_2!5(K&Y>Q9q({=EN~>ixFzcq5^caS_R^`xuHR)Irs&~ z{`!x|AsGZRgoSA22lUtOYsE9l0HiwfTV!U9r)3?_lj7=POAvWAcDD?z(S=Me&?UfdWhXY>N478B&E4vX}ewfb$%|GH47|R zkmKu1uQxdvnUQcQ{o7U$+_P3Zi&_f0HHF}aGA3>VmzAj)DG<;P$qSFYK-2{EbVGqg zPa*mF_#xl~`KU?BI+1jH^xQ+x?=E?~W9$nGUHd|>=Rjt!(Okdcj~b#|N+#naK^|r^ zql+X5AO&{K+8G6aM%Jr(_D<`5Hy^877NBdZpbk>9yS8~p&)PWrJM<}EOI=;fOa~l( z$dIkyDE7=opL1_5S68_~hG;f-VfZ&~EFC>~zR`1`+CZ|qQ&1*eRf$O0GG>P4E)!_Y zIKe@}4-s#|Oq1E#{BjUppDv&uTBRm+da23TYj-@)Mb5`#1U}Cm3v5$;2J?@QJ>NO1 zXR*X4{%h86>f^ft!k?h~2)aQ$yx;S4sM5?3d?+4;q5OCZ^(fZY3QWx%R*}xa&l8YQ z5IDCJ9{3FH(R%L#aIKZA8JvpOGwFoWJVsX5@(G9eAc)W@?9%CT)dHyysT8~z@s1wI2XAF zUkyq$&jwCr@vaeodW-Z7l@67>LiwecDcACCJF@Kvr4c)!q<5apnV{QtkLqjHx$VJ= ziX9XP00sj6wyl{uLs;_n3z9$x^Z;H)w|LE=yJQXeqA5GZoDC|3qcjUnNyjtxzXDgA zT?|TTUT));kO9a5Xsvj7WfbBCv7KI2og-~JRC{xR&Lsu#?3A8E#(B?=yN-b2@KpfN zR{xj|5Gkb@Um*)wVx%h?LV_R%FlI+pXK#W`BJo7x)l5p8GH^Tg&yA%K=+(G-`{)z` zOzoMMnKz6*7t77vosg$iJn)mxuA>#RqRpV>>sv6|W-N9du9_(4JsRpz4UsGdXOJjV%z&u%3 za-q_yuEHHU4uax9(0}>r)s;MDV04$`@1m=8gf3QVNDR&TXMZ@TiPV3`aQVedkao3l zoR8wp(P}Kcnb2od>n(-Uo-exr;z{QQvnZ5G1!k_8+tM-qXRlO|?Rdqb>;mObu>)-S zq>sGFJB?yvKIfAWQytTtUR5jj{ocq_;g1GdU;@KxZ-9x z@eu4c)~l|zzL;&T)LHV6i1^ivAHDpqfs<3tz44e9sQbb;z3Bw>6VHt5PNplzY4Op# zCf%YU?{w606sf;PccyePfH>%9#&C)8BHe=ZUk4W5kj24%_o3Mhxd#xZi+7#~%f88z zH-G-G|HzO2x^PjGL4C1D4jcRzdzf_MS>%q?u260uUyoeEyx`It+h6Pr>QzbKtXM&W zm>IjA$A7oI*`Oi#wh??i82YC4fIKXHDwiZGhYh?-OSs7QD+8s~4X3-dwAOQ$1pDw_ zwBX{%h#h!=TGYgQ((S%j-@-NkA*n{$ZCb>5{qEF5HM2X%`TQy}gG&2i?V@}8$Y0>c z8)x)T5ciuQ?38mt*r8xLzx1Qpe5#dpBm3qZeUxF789-oIuD|kbT#U+Bj#2ymXZ;$F z+;c#M?h!e~H|n?4)o+&JozRYk z1kjh8oWO4`&j6EaS0+@Yv@Z z90EE49NeQ;h865TRIa|1Fi|eLx=dyqxcByR=&(qZC_k!W zM&-0bX&I@kc5{u+Wzyf7eT8slGIok6~cYP@4Gc>d`dqJ2@?}ub21Y)R$xAgoYCzT(H)w zVJjZ{Hhm%jP8U&h(ACx8&xnCH&@E-hFsZiuKsAJt@yW@mqGSC|>dY79)O79w#<3T4 z?t0vC>i<)dewI>nL@r!lVq#!q{2w9zLF5jd5vPkcWa*d)%WJ*Kdtwg%A0!w5KvH)_ zOIRnt5{n?xFZ^a({6U_hHG5Sai{ou9g)$l1_UFcb*xdB=^jef+BxGU{pQ(EdXHr(F zgAdohtmRtY>FX_FAof4|*s<=YZ;St(hQDw85C$42;VCr#@1>iX{H=;oHm&WKclFjP zSVbdCWsP*9%Q}02g5ub?4@bZzWvys4@{OvY$CO;+eQNTs?pb2hbvBy52A8SO#!o~TR5aV_q{wc4^pY+`;Xb<6fN!4+r3}&Rq}=Vn;oOF z-OQq9RViBV~ za+KqAdwNF@>sw~`_vN3hLOlHL=(#T-d6Xq+gmOedUY9<*Z<(`IdGCtoDgM&vNDuK* sPI)d-o!iu)sF@VVDfSbPl`exarY0L!!d)lp#3g&ngir%6bVjKE2W{FeIsgCw literal 0 HcmV?d00001 diff --git a/resources/ui/units/aircrafts/banners/CH_Mi28N.jpg b/resources/ui/units/aircrafts/banners/CH_Mi28N.jpg new file mode 100644 index 0000000000000000000000000000000000000000..88eb3bcb1418161e199ea0d9eeaad2be7ae63f43 GIT binary patch literal 13382 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 literal 0 HcmV?d00001 diff --git a/resources/ui/units/aircrafts/banners/CH_Tu-95MSM.jpg b/resources/ui/units/aircrafts/banners/CH_Tu-95MSM.jpg new file mode 100644 index 0000000000000000000000000000000000000000..280d365d615ef976e9e7e0304ab091533d7fec81 GIT binary patch literal 17527 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 m`+vi$$Mkg~pXjgaNW9Sh0EhbR{)ma3|jiIItm zOAI4iKMQ#V{6EAX$iX1N5Y5b}#K0uT$SlbC{|JK&0|Ns)$SVlI$i&RT%Er#|{}uxW zMCO}s_L3P_s*)MfYaXs$a5gn#7u)^CH_Uct9Ks@^iblbO6U7`G7jA^QmC>HzMGxPhHS0fGT0EUCThDr?aHo5QN;ucyZ>r^s zU6XC++M6V+Z}0Xi6o1So{XTi6N%Atp2tk2A2JaIQB@yYS~ zw`0~V?_936&OOPItEx4{;y=TT4@a8p;*MNq|1q&-(&BywzN`8sKfdXzp4aoJEfrev z#(qK8e}=hpqIq=wGc3tXV3?{FGAFau|Gb`I<(#wWeI5)iT~enf*Pgr5b?9?&=Z3OR z(T{59xn#G^-TwOAJ?G7zHmu2C!k5R&IctNo%F9QQ?l%OY*8Kd~IrmXlw9cl@6PVrQ zqy97OUXw4@vqY_e_l+0dR-0VmI=Q{S^{-}qe{(j?I5Y7C0Iy>D-d;I_Ww0c=ZmZ=G`NQuL8$ z##dUW2rWPH(OuVF=j;1Qo9n>nlM`fM0s>}4!UCpma3|jiIItm zOAI4iKMQ#V{6EAX$iX1N5Y5b}#K0uT$SlbC{|JK&&=ahTAiux>8v`Q~Gb;-R`~O=E z91w|bVfikJ4lk{ITK2pMu`W7H1yQl;6w62VgY&`-L*hMN?x@=nd^zL>>yD+D=OyYbs9&UYd-aW-r+2&b=akIgTe@6i`iuyz zfb;r!E!+5v9Da5^O8&WM$26OZG2U{Szpo1%pH=rIFQNKH#@*uOTSLzJFMAg-&q%)Z z=%&|QexLJJtS+pSc@?+zRJwb%qLmkS=+EDJ zZSI8IyZ238qND2QdC$Wl;DuXu@A1S>B56&w>q?$1o5NsrDQtoxqk{l%)ses*f3mM} ztp~=OoFD@eBQq@4z>&u&%p~NqlE#&wOgyZry(1OQ`VC=&nx literal 0 HcmV?d00001 diff --git a/resources/ui/units/aircrafts/icons/CH_Mi28N.jpg b/resources/ui/units/aircrafts/icons/CH_Mi28N.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4bfb95789948f18c41969490aca41de547897d9 GIT binary patch literal 809 zcmex=ma3|jiIItm zOAI4iKMQ#V{6EAX$iX1N5Y5b}#K0uT$SlbC{|JLL&=ag6ufPEl10ypFD;vlETMQf! ziEkEMeG)f~b+Y!fRQz#kFUe7LR<^e5^uqFBWMvn12TeC%VQ>n|7!0ER>pG|w58M!(5b?e>-GI?`5INsMXYVD6bT5wg+De-I7`IXPxo;e_rL{B`t|ADRb6}iFjx1{cJdoeL+HSY2A!x zb2;Cwzx4Esxo`&S!*!py_XbAa*F6*`* zTNKXUYqz;J-*0vESG{eIcHMaUcX4>xm25kYYkXIMfhQ*j41X485 zghUD>Fr0#Kp1&~lU|`{2!|=_b=bc0~UN7=bnW?@RXo3RR1V&a^-~(w!CT1bwAZ0_x ri3>k~&0q$ZQSsH{tMu~EGAs4&otbd;r;)Sc#*=d+vvgfo{J#kRma3|jiIItm zOAI4iKMQ#V{6EAX$iX1N5Y5b}#K0uT$SlbC{|JK&&=ahTAiux>69Y2~D;py_$NyUl z91w|Lmvt-kn_5d5D)W+VyRB1nnqT%TbldFQZ7mG$Kr_UF`jJgwU|?ckVFYVu5&#-| z?da`juXwOR24*CiKsGWmv49magA^V$Q&u?zGSNtYfsvV+iG`Vk8>9#b7#WyA&Jq-I z3=B#V7Bys7oOn>g$TYaHaq_~An=V1!%4pAE=zVFE%(9E!Cml|oe%cYb^KJ5N?s>=F zTn_qlq3qWxty5XADqg)%@2aX~TQf;X?()ypN4_sVxnA0RmG|)V5Vt+?AEP-Rg|}7y zdwsav^x^)M6?w1z3BSu#Xed$9*)6pzWxu=HOP_;$f7j|xdA)nyciX6sF}IGrY9P%R8+cTDfp))G^*85ja<>IHanfP`!{Zrj+{8#;X_>ZWw zKWuB(*_Y}_@poUbRDF~oskzym`HrcfcaXXH#~U2MDVBLl9J97%p8cx-(^RI}iv7)P z^VcUkxRP^@((Og&a!>MGdtG<16WoN6cbFyvBAhB6d1%TsN@KVI7VPtw)*~6 zeNphAK`43F3ypot^qb}UST#-=^mtB5^9LFtC&<9W1WY}U7=lC-lMu6@F({58u?jL} hszpxFuM9ukcYFcgqU9I;_${3}uXScxma3|jiIItm zOAI4iKMQ#V{6EAX$iX1N5Y5b}#K0uT$SlbC{|JK&0|OHiGsrJ6z{teF#>~RX&hh^i z0|!Ln*SY>;#fvGE^&5-wW=Bj_j8Fb3vcEIF95WoM;SuU%50ozVF` zvH4%!3W7QIm2_+LdfwKG%Dr#0_>@<*wn6u^zon95!oI5|4?VX(Vdb{>R)F&_yK0pW z!P!A=))G>#yG^@%+l}XSTfAGK{EYYACg(7w{|s|ZxYX3v2`w-wE3&t_r!=$T&gRX$ z#13?JoYI>s`Imiso?YGK)WSU?YnqA z`b8aA{$5-;@xh9FtK@3~_g;TB@8jOPU;Qh9fh{e_0E&F%XklU$3S<^^f9%Emtl3@yYw1%{r%z&TQEf7is_hCIEUx{5${v literal 0 HcmV?d00001 diff --git a/resources/units/aircraft/CH_Ka52.yaml b/resources/units/aircraft/CH_Ka52.yaml new file mode 100644 index 00000000..9ceca3c8 --- /dev/null +++ b/resources/units/aircraft/CH_Ka52.yaml @@ -0,0 +1,31 @@ +class: Helicopter +always_keeps_gun: true +carrier_capable: true +description: + In the early 1980s, while comparative tests of the V-80 (Ka-50 prototype) and the Mi-28 were being conducted, + the Kamov design team came up with a proposal to develop a dedicated helicopter to conduct battlefield + reconnaissance, provide target designation, support and coordinate group attack helicopter operations based on + the Ka-60. However, the economic hardships that hit the nation in the late 1980s hampered this new development + program. This prompted Kamov's Designer General to choose a modified version of Ka-50 on which to install the + reconnaissance and target designation system. The modified "Black Shark" required a second crew member to + operate the optotronics/radar reconnaissance suite. Kamov decided to use side-by-side seating arrangement, + due to the verified improvements in co-operation between the crew members. This twin-seat version was + designated Ka-52. +introduced: 2008 +lha_capable: true +cabin_size: 0 # Can not transport troops +can_carry_crates: true +manufacturer: Kamov +origin: USSR/Russia +price: 20 +role: Attack +default_livery: CH_KA52 +variants: + "[CH] Ka-52": {} +kneeboard_units: "metric" +tasks: + BAI: 440 + CAS: 440 + DEAD: 113 + Escort: 100 + OCA/Aircraft: 440 diff --git a/resources/units/aircraft/CH_Ka52K.yaml b/resources/units/aircraft/CH_Ka52K.yaml new file mode 100644 index 00000000..fcc6486e --- /dev/null +++ b/resources/units/aircraft/CH_Ka52K.yaml @@ -0,0 +1,32 @@ +class: Helicopter +always_keeps_gun: true +carrier_capable: true +description: + In the early 1980s, while comparative tests of the V-80 (Ka-50 prototype) and the Mi-28 were being conducted, + the Kamov design team came up with a proposal to develop a dedicated helicopter to conduct battlefield + reconnaissance, provide target designation, support and coordinate group attack helicopter operations based on + the Ka-60. However, the economic hardships that hit the nation in the late 1980s hampered this new development + program. This prompted Kamov's Designer General to choose a modified version of Ka-50 on which to install the + reconnaissance and target designation system. The modified "Black Shark" required a second crew member to + operate the optotronics/radar reconnaissance suite. Kamov decided to use side-by-side seating arrangement, + due to the verified improvements in co-operation between the crew members. This twin-seat version was + designated Ka-52. +introduced: 2008 +lha_capable: true +cabin_size: 0 # Can not transport troops +can_carry_crates: true +manufacturer: Kamov +origin: USSR/Russia +price: 20 +role: Attack +default_livery: CH_KA52K +variants: + "[CH] Ka-52K": {} +kneeboard_units: "metric" +tasks: + Anti-ship: 500 + BAI: 440 + CAS: 440 + DEAD: 113 + Escort: 100 + OCA/Aircraft: 440 diff --git a/resources/units/aircraft/CH_Mi28N.yaml b/resources/units/aircraft/CH_Mi28N.yaml new file mode 100644 index 00000000..1bda45e6 --- /dev/null +++ b/resources/units/aircraft/CH_Mi28N.yaml @@ -0,0 +1,22 @@ +class: Helicopter +cabin_size: 0 +can_carry_crates: false +always_keeps_gun: true +description: + The Mil Mi-28 (NATO reporting name 'Havoc') is a Russian all-weather, + day-night, military tandem, two-seat anti-armor attack helicopter. It is an attack + helicopter with no intended secondary transport capability, better optimized than + the Mil Mi-24 gunship for the role. It carries a single gun in an undernose barbette, + plus external loads carried on pylons beneath stub wings. +introduced: 2009 +manufacturer: Mil +origin: USSR/Russia +price: 16 +role: Attack +variants: + "[CH] Mi-28N AH": {} +tasks: + BAI: 420 + CAS: 420 + Escort: 100 + OCA/Aircraft: 420 diff --git a/resources/units/aircraft/CH_Tu-160M2.yaml b/resources/units/aircraft/CH_Tu-160M2.yaml new file mode 100644 index 00000000..41ff0225 --- /dev/null +++ b/resources/units/aircraft/CH_Tu-160M2.yaml @@ -0,0 +1,23 @@ +description: + "The Tupolev Tu-160 (Russian: \u0422\u0443\u043F\u043E\u043B\u0435\u0432\ + \ \u0422\u0443-160 \u0411\u0435\u043B\u044B\u0439 \u043B\u0435\u0431\u0435\u0434\ + \u044C, romanized: Belyj Lebe\u010F, lit.\u2009'White Swan'; NATO reporting name:\ + \ Blackjack) is a supersonic, variable-sweep wing heavy strategic bomber designed\ + \ by the Tupolev Design Bureau in the Soviet Union in the 1970s. It is the largest\ + \ and heaviest Mach 2+ supersonic military aircraft ever built and next to the experimental\ + \ XB-70 Valkyrie in overall length. As of 2021, it is the largest and heaviest combat\ + \ aircraft, the fastest bomber in use and the largest and heaviest variable-sweep\ + \ wing airplane ever flown." +introduced: 2021 +manufacturer: Tupolev +origin: USSR/Russia +price: 45 +role: Supersonic Strategic Bomber +max_range: 2000 +variants: + "[CH] Tu-160M2": {} +tasks: + Anti-ship: 100 + BAI: 370 + DEAD: 210 + Strike: 680 diff --git a/resources/units/aircraft/CH_Tu-95MSM.yaml b/resources/units/aircraft/CH_Tu-95MSM.yaml new file mode 100644 index 00000000..29e5890b --- /dev/null +++ b/resources/units/aircraft/CH_Tu-95MSM.yaml @@ -0,0 +1,23 @@ +description: + "The Tupolev Tu-95 (Russian: \u0422\u0443\u043F\u043E\u043B\u0435\u0432\ + \ \u0422\u0443-95; NATO reporting name: \"Bear\") is a large, four-engine turboprop-powered\ + \ strategic bomber and missile platform. First flown in 1952, the Tu-95 entered\ + \ service with the Long-Range Aviation of the Soviet Air Forces in 1956 and is expected\ + \ to serve the Russian Aerospace Forces until at least 2040. A development of the\ + \ bomber for maritime patrol is designated Tu-142, while a passenger airliner derivative\ + \ was called Tu-114. The aircraft has four Kuznetsov NK-12 engines with contra-rotating\ + \ propellers. It is the only propeller-powered strategic bomber still in operational\ + \ use today. The Tu-95 is one of the loudest military aircraft, particularly because\ + \ the tips of the propeller blades move faster than the speed of sound" +introduced: 2019 +manufacturer: Tupolev +origin: USSR/Russia +price: 35 +role: Strategic Bomber +variants: + "[CH] Tu-95MSM": {} +tasks: + Anti-ship: 100 + BAI: 370 + DEAD: 210 + Strike: 670 diff --git a/resources/units/ground_units/CH_2S35.yaml b/resources/units/ground_units/CH_2S35.yaml new file mode 100644 index 00000000..c190bf60 --- /dev/null +++ b/resources/units/ground_units/CH_2S35.yaml @@ -0,0 +1,13 @@ +class: Artillery +description: "The 2S35 Koalitsiya-SV (Russian: 2C35 \xD0\x9A\xD0\xBE\xD0\xB0\xD0\xBB\xD0\xB8\xD1\x86\xD0\xB8\xD1\x8F\x2D\xD0\xA1\xD0\x92, + lit. Coalition-SV) is a Russian self-propelled gun first seen in public + (initially with its turret covered) in 2015 during rehearsals for the Moscow Victory + Day Parade. The 2S35 is expected to supplement and eventually replace the 2S19 Msta in + the Russian Ground Forces." +introduced: 2023 +manufacturer: Burevestnik Central Scientific Research Institute +origin: Russia +price: 25 +role: Self-Propelled Gun +variants: + "[CH] 2S35 SPG": {} \ No newline at end of file diff --git a/resources/units/ground_units/CH_2S38.yaml b/resources/units/ground_units/CH_2S38.yaml new file mode 100644 index 00000000..7a223e49 --- /dev/null +++ b/resources/units/ground_units/CH_2S38.yaml @@ -0,0 +1,13 @@ +class: AAA +description: "Self-propelled air defense vehicle based on BMP-3 chassis fitted with a 57 mm autocannon + and passive reconnaissance and target tracking equipment. It is designed to shoot down unmanned aerial + vehicles (UAVs), cruise missiles, air-to-surface missiles, aircraft, helicopters, and MLRS rockets. + 2S38 is equipped with a TV/thermal-imaging system with automatic target lock-on and tracking capabilities, + a laser rangefinder and a laser guidance system." +introduced: 2022 +manufacturer: Kurganmashzavod +origin: Russia +price: 15 +role: Self-Propelled Anti-Aircraft Gun +variants: + "[CH] 2S38 SPAAG": {} \ No newline at end of file diff --git a/resources/units/ground_units/CH_2S38_LG.yaml b/resources/units/ground_units/CH_2S38_LG.yaml new file mode 100644 index 00000000..81bb451c --- /dev/null +++ b/resources/units/ground_units/CH_2S38_LG.yaml @@ -0,0 +1,13 @@ +class: AAA +description: "Self-propelled air defense vehicle based on BMP-3 chassis fitted with a 57 mm autocannon + and passive reconnaissance and target tracking equipment. It is designed to shoot down unmanned aerial + vehicles (UAVs), cruise missiles, air-to-surface missiles, aircraft, helicopters, and MLRS rockets. + 2S38 is equipped with a TV/thermal-imaging system with automatic target lock-on and tracking capabilities, + a laser rangefinder and a laser guidance system." +introduced: 2022 +manufacturer: Kurganmashzavod +origin: Russia +price: 15 +role: Self-Propelled Anti-Aircraft Gun +variants: + "[CH] 2S38 SPAAG (LG-HE)": {} \ No newline at end of file diff --git a/resources/units/ground_units/CH_3K60_BAL.yaml b/resources/units/ground_units/CH_3K60_BAL.yaml new file mode 100644 index 00000000..b9163f66 --- /dev/null +++ b/resources/units/ground_units/CH_3K60_BAL.yaml @@ -0,0 +1,4 @@ +class: AntiShipMissile +price: 0 +variants: + "[CH] Bal LBASM TEL": null \ No newline at end of file diff --git a/resources/units/ground_units/CH_9M133.yaml b/resources/units/ground_units/CH_9M133.yaml new file mode 100644 index 00000000..5eb823ee --- /dev/null +++ b/resources/units/ground_units/CH_9M133.yaml @@ -0,0 +1,5 @@ +class: Infantry +price: 0 +spawn_weight: 1 +variants: + "[CH] 9M133 ATGM Soldier": null diff --git a/resources/units/ground_units/CH_BMD4.yaml b/resources/units/ground_units/CH_BMD4.yaml new file mode 100644 index 00000000..38b1565f --- /dev/null +++ b/resources/units/ground_units/CH_BMD4.yaml @@ -0,0 +1,15 @@ +class: IFV +description: "The BMD-4 (Russian: \xD0\x91\xD0\xBE\xD0\xB5\xD0\xB2\xD0\xB0\xD1\x8F\x20\xD0\x9C\xD0\xB0\xD1\x88\xD0\xB8\xD0\xBD\xD0\xB0\x20\xD0\x94\xD0\xB5\xD1\x81\xD0\xB0\xD0\xBD\xD1\x82\xD0\xB0\x2D\x34, + romanized: Boyevaya Mashina Desanta-4, English: Combat Vehicle of the Airborne) is an amphibious infantry + fighting vehicle (IFV) originating from post-Cold War Russia. Originally designated as the BMD-3M, the chassis + of the BMD-4 is the same as that of the BMD-3 because it was developed on the same basis. + This armored fighting vehicle is one of the lightest in its class, possessing a substantial amount of + firepower. The vehicle was designed to transport Russian Airborne Troops (VDV), increasing its mobility, + armament, and protection on the battlefield" +introduced: 2004 +manufacturer: Kurganmashzavod +origin: Russia +price: 12 +role: Infantry Fighting Vehicle +variants: + "[CH] BMD-4 IFV": null diff --git a/resources/units/ground_units/CH_BukM3_9A317M.yaml b/resources/units/ground_units/CH_BukM3_9A317M.yaml new file mode 100644 index 00000000..75d37910 --- /dev/null +++ b/resources/units/ground_units/CH_BukM3_9A317M.yaml @@ -0,0 +1,4 @@ +class: TELAR +price: 40 +variants: + "[CH] Buk M3 9A317M TELAR": null \ No newline at end of file diff --git a/resources/units/ground_units/CH_BukM3_9A317MA.yaml b/resources/units/ground_units/CH_BukM3_9A317MA.yaml new file mode 100644 index 00000000..6dfe692a --- /dev/null +++ b/resources/units/ground_units/CH_BukM3_9A317MA.yaml @@ -0,0 +1,4 @@ +class: TELAR +price: 40 +variants: + "[CH] Buk M3 9A317MA TELAR": null \ No newline at end of file diff --git a/resources/units/ground_units/CH_BukM3_9S18M13.yaml b/resources/units/ground_units/CH_BukM3_9S18M13.yaml new file mode 100644 index 00000000..aae8c80f --- /dev/null +++ b/resources/units/ground_units/CH_BukM3_9S18M13.yaml @@ -0,0 +1,19 @@ +class: SearchRadar +description: "The 9K317M 'Buk-M3' (9K37M3) is the latest production version, based on new hardware. + It has 36 target channels and features advanced electronic components. Specifications include a maximum + target speed of 3,000 m/s (11,000 km/h; 6,700 mph; Mach 8.8), an altitude range of 0.015-35 km (49-114,829 ft) + and a distance range of 2.5-70 km (1.6-43.5 mi). Extensive trials began in 2015, with the first deliveries + planned for 2016." +introduced: 2016 +manufacturer: Almaz-Antey +origin: Russia +price: 40 +variants: + "[CH] Buk M3 9S18M1-3 SR": {} +skynet_properties: # Override skynet default properties + can_engage_harm: true + # can_engage_air_weapon: true # https://github.com/walder/Skynet-IADS/tree/develop#engage-air-weapons + go_live_range_in_percent: 100 + harm_detection_chance: 90 + engagement_zone: SkynetIADSAbstractRadarElement.GO_LIVE_WHEN_IN_KILL_ZONE # https://github.com/walder/Skynet-IADS/tree/develop#engagement-zone + autonomous_behaviour: SkynetIADSAbstractRadarElement.AUTONOMOUS_STATE_DCS_AI # https://github.com/walder/Skynet-IADS/tree/develop#autonomous-mode-behaviour diff --git a/resources/units/ground_units/CH_BukM3_9S36M.yaml b/resources/units/ground_units/CH_BukM3_9S36M.yaml new file mode 100644 index 00000000..862097fc --- /dev/null +++ b/resources/units/ground_units/CH_BukM3_9S36M.yaml @@ -0,0 +1,12 @@ +class: TrackRadar +description: "The 9K317M 'Buk-M3' (9K37M3) is the latest production version, based on new hardware. + It has 36 target channels and features advanced electronic components. Specifications include a maximum + target speed of 3,000 m/s (11,000 km/h; 6,700 mph; Mach 8.8), an altitude range of 0.015-35 km (49-114,829 ft) + and a distance range of 2.5-70 km (1.6-43.5 mi). Extensive trials began in 2015, with the first deliveries + planned for 2016." +introduced: 2016 +manufacturer: Almaz-Antey +origin: Russia +price: 24 +variants: + "[CH] Buk M3 9S36M TR": null diff --git a/resources/units/ground_units/CH_BukM3_9S510M.yaml b/resources/units/ground_units/CH_BukM3_9S510M.yaml new file mode 100644 index 00000000..786d974e --- /dev/null +++ b/resources/units/ground_units/CH_BukM3_9S510M.yaml @@ -0,0 +1,4 @@ +class: CommandPost +price: 18 +variants: + "[CH] Buk M3 9S510M CP": null \ No newline at end of file diff --git a/resources/units/ground_units/CH_DSHK_HMG_RUS.yaml b/resources/units/ground_units/CH_DSHK_HMG_RUS.yaml new file mode 100644 index 00000000..74a06fc8 --- /dev/null +++ b/resources/units/ground_units/CH_DSHK_HMG_RUS.yaml @@ -0,0 +1,5 @@ +class: Infantry +price: 0 +spawn_weight: 3 +variants: + "[CH] DShK HMG": null diff --git a/resources/units/ground_units/CH_DSHK_HMG_UKR.yaml b/resources/units/ground_units/CH_DSHK_HMG_UKR.yaml new file mode 100644 index 00000000..74a06fc8 --- /dev/null +++ b/resources/units/ground_units/CH_DSHK_HMG_UKR.yaml @@ -0,0 +1,5 @@ +class: Infantry +price: 0 +spawn_weight: 3 +variants: + "[CH] DShK HMG": null diff --git a/resources/units/ground_units/CH_IskanderK.yaml b/resources/units/ground_units/CH_IskanderK.yaml new file mode 100644 index 00000000..cf815465 --- /dev/null +++ b/resources/units/ground_units/CH_IskanderK.yaml @@ -0,0 +1,11 @@ +class: Missile +description: "The 9K720 Iskander (Russian: \xD0\x98\xD1\x81\xD0\xBA\xD0\xB0\xD0\xBD\xD0\xB4\xD0\xB5\xD1\x80; + NATO reporting name SS-26 Stone) is a Russian mobile short-range ballistic missile system. It has a range of + 500 kilometres (270 nmi; 310 mi). It was intended to replace the OTR-21 Tochka in the Russian military by + 2020." +introduced: 2006 +manufacturer: Votkinsk Plant State Production Association +origin: Russia +price: 0 +variants: + "[CH] Iskander-K GLCM": null \ No newline at end of file diff --git a/resources/units/ground_units/CH_IskanderM.yaml b/resources/units/ground_units/CH_IskanderM.yaml new file mode 100644 index 00000000..307c649d --- /dev/null +++ b/resources/units/ground_units/CH_IskanderM.yaml @@ -0,0 +1,11 @@ +class: Missile +description: "The 9K720 Iskander (Russian: \xD0\x98\xD1\x81\xD0\xBA\xD0\xB0\xD0\xBD\xD0\xB4\xD0\xB5\xD1\x80; + NATO reporting name SS-26 Stone) is a Russian mobile short-range ballistic missile system. It has a range of + 500 kilometres (270 nmi; 310 mi). It was intended to replace the OTR-21 Tochka in the Russian military by + 2020." +introduced: 2006 +manufacturer: Votkinsk Plant State Production Association +origin: Russia +price: 0 +variants: + "[CH] Iskander-M SRBM": null \ No newline at end of file diff --git a/resources/units/ground_units/CH_RussianInfantry_Kord.yaml b/resources/units/ground_units/CH_RussianInfantry_Kord.yaml new file mode 100644 index 00000000..00f080a8 --- /dev/null +++ b/resources/units/ground_units/CH_RussianInfantry_Kord.yaml @@ -0,0 +1,5 @@ +class: Infantry +price: 0 +spawn_weight: 3 +variants: + "[CH] Kord HMG Soldier": null diff --git a/resources/units/ground_units/CH_S350_50K6.yaml b/resources/units/ground_units/CH_S350_50K6.yaml new file mode 100644 index 00000000..fcde6888 --- /dev/null +++ b/resources/units/ground_units/CH_S350_50K6.yaml @@ -0,0 +1,4 @@ +class: CommandPost +price: 18 +variants: + "[CH] S-350 50K6 CP": null \ No newline at end of file diff --git a/resources/units/ground_units/CH_S350_50N6.yaml b/resources/units/ground_units/CH_S350_50N6.yaml new file mode 100644 index 00000000..73a3dc4e --- /dev/null +++ b/resources/units/ground_units/CH_S350_50N6.yaml @@ -0,0 +1,18 @@ +class: SearchTrackRadar +description: "The S-350 Vityaz (Russian: C-350 \xD0\x92\xD0\xB8\xD1\x82\xD1\x8F\xD0\xB7\xD1\x8C) is a Russian + medium-range surface-to-air missile system developed by GSKB Almaz-Antey. Its purpose is to replace + the S-300PS. The system design traces its roots from the joint South Korean-Russian KM-SAM project + and uses the same 9M96 missile as the S-400 missile system." +introduced: 2019 +manufacturer: Almaz-Antey +origin: Russia +price: 30 +variants: + "[CH] S-350 50N6 STR": {} +skynet_properties: # Override skynet default properties + can_engage_harm: true + # can_engage_air_weapon: true # https://github.com/walder/Skynet-IADS/tree/develop#engage-air-weapons + go_live_range_in_percent: 100 + harm_detection_chance: 90 + engagement_zone: SkynetIADSAbstractRadarElement.GO_LIVE_WHEN_IN_KILL_ZONE # https://github.com/walder/Skynet-IADS/tree/develop#engagement-zone + autonomous_behaviour: SkynetIADSAbstractRadarElement.AUTONOMOUS_STATE_DCS_AI # https://github.com/walder/Skynet-IADS/tree/develop#autonomous-mode-behaviour diff --git a/resources/units/ground_units/CH_S350_50P6_9M100.yaml b/resources/units/ground_units/CH_S350_50P6_9M100.yaml new file mode 100644 index 00000000..f3ee96ef --- /dev/null +++ b/resources/units/ground_units/CH_S350_50P6_9M100.yaml @@ -0,0 +1,11 @@ +class: TELAR +description: "The S-350 Vityaz (Russian: C-350 \xD0\x92\xD0\xB8\xD1\x82\xD1\x8F\xD0\xB7\xD1\x8C) is a Russian + medium-range surface-to-air missile system developed by GSKB Almaz-Antey. Its purpose is to replace + the S-300PS. The system design traces its roots from the joint South Korean-Russian KM-SAM project + and uses the same 9M96 missile as the S-400 missile system." +introduced: 2019 +manufacturer: Almaz-Antey +origin: Russia +price: 20 +variants: + "[CH] S-350 50P6 9M100 LN": {} diff --git a/resources/units/ground_units/CH_S350_50P6_9M96D.yaml b/resources/units/ground_units/CH_S350_50P6_9M96D.yaml new file mode 100644 index 00000000..e141f61d --- /dev/null +++ b/resources/units/ground_units/CH_S350_50P6_9M96D.yaml @@ -0,0 +1,11 @@ +class: TELAR +description: "The S-350 Vityaz (Russian: C-350 \xD0\x92\xD0\xB8\xD1\x82\xD1\x8F\xD0\xB7\xD1\x8C) is a Russian + medium-range surface-to-air missile system developed by GSKB Almaz-Antey. Its purpose is to replace + the S-300PS. The system design traces its roots from the joint South Korean-Russian KM-SAM project + and uses the same 9M96 missile as the S-400 missile system." +introduced: 2019 +manufacturer: Almaz-Antey +origin: Russia +price: 20 +variants: + "[CH] S-350 50P6 9M96D LN": {} diff --git a/resources/units/ground_units/CH_S350_96L6.yaml b/resources/units/ground_units/CH_S350_96L6.yaml new file mode 100644 index 00000000..ae4d80ae --- /dev/null +++ b/resources/units/ground_units/CH_S350_96L6.yaml @@ -0,0 +1,18 @@ +class: SearchRadar +description: "The S-350 Vityaz (Russian: C-350 \xD0\x92\xD0\xB8\xD1\x82\xD1\x8F\xD0\xB7\xD1\x8C) is a Russian + medium-range surface-to-air missile system developed by GSKB Almaz-Antey. Its purpose is to replace + the S-300PS. The system design traces its roots from the joint South Korean-Russian KM-SAM project + and uses the same 9M96 missile as the S-400 missile system." +introduced: 2019 +manufacturer: Almaz-Antey +origin: Russia +price: 40 +variants: + "[CH] S-350 96L6 SR": {} +skynet_properties: # Override skynet default properties + can_engage_harm: true + # can_engage_air_weapon: true # https://github.com/walder/Skynet-IADS/tree/develop#engage-air-weapons + go_live_range_in_percent: 100 + harm_detection_chance: 90 + engagement_zone: SkynetIADSAbstractRadarElement.GO_LIVE_WHEN_IN_KILL_ZONE # https://github.com/walder/Skynet-IADS/tree/develop#engagement-zone + autonomous_behaviour: SkynetIADSAbstractRadarElement.AUTONOMOUS_STATE_DCS_AI # https://github.com/walder/Skynet-IADS/tree/develop#autonomous-mode-behaviour diff --git a/resources/units/ground_units/CH_T14.yaml b/resources/units/ground_units/CH_T14.yaml new file mode 100644 index 00000000..35aee715 --- /dev/null +++ b/resources/units/ground_units/CH_T14.yaml @@ -0,0 +1,11 @@ +class: Tank +description: "The T-14 Armata (Russian: T-14 \xD0\x90\xD1\x80\xD0\xBC\xD0\xB0\xD1\x82\xD0\xB0; industrial + designation Russian: \xD0\x9E\xD0\xB1\xD1\x8A\xD0\xB5\xD0\xBA\xD1\x82 148, romanized: Obyekt 148, lit. 'Object + 148') is a Russian fourth-generation main battle tank (MBT) based on the Armata Universal Combat Platform." +introduced: 2014 +manufacturer: Uralvagonzavod +origin: Russia +price: 20 +role: Main Battle Tank +variants: + "[CH] T-14 MBT": {} diff --git a/resources/units/ground_units/CH_T80BVM.yaml b/resources/units/ground_units/CH_T80BVM.yaml new file mode 100644 index 00000000..da2920cb --- /dev/null +++ b/resources/units/ground_units/CH_T80BVM.yaml @@ -0,0 +1,12 @@ +class: Tank +description: "The T-80 is a main battle tank (MBT) that was designed and manufactured in the former Soviet Union + and manufactured in Russia. The T-80 is based on the T-64, while incorporating features from the later T-72 + and changing the engine to a gas turbine. When it entered service in 1976, it was the first production tank to + be powered solely by turbine" +introduced: 2017 +manufacturer: LKZ and Omsk Transmash +origin: Russia +price: 25 +role: Main Battle Tank +variants: + "[CH] T-80BVM MBT": {} diff --git a/resources/units/ground_units/CH_T90A.yaml b/resources/units/ground_units/CH_T90A.yaml new file mode 100644 index 00000000..b6dfea04 --- /dev/null +++ b/resources/units/ground_units/CH_T90A.yaml @@ -0,0 +1,13 @@ +class: Tank +description: "The T-90 is a third-generation Russian main battle tank developed from, and designed to replace + the T-72. It uses a 125 mm 2A46 smoothbore main gun, the 1A45T fire-control system, an upgraded engine, + and gunner's thermal sight. Standard protective measures include a blend of steel and composite armour, + smoke grenade dischargers, Kontakt-5 explosive reactive armour (ERA) and the Shtora infrared anti-tank + guided missile (ATGM) jamming system." +introduced: 2004 +manufacturer: Uralvagonzavod +origin: Russia +price: 20 +role: Main Battle Tank +variants: + "[CH] T-90A MBT": {} diff --git a/resources/units/ground_units/CH_T90M.yaml b/resources/units/ground_units/CH_T90M.yaml new file mode 100644 index 00000000..eb6a837b --- /dev/null +++ b/resources/units/ground_units/CH_T90M.yaml @@ -0,0 +1,13 @@ +class: Tank +description: "The T-90 is a third-generation Russian main battle tank developed from, and designed to replace + the T-72. It uses a 125 mm 2A46 smoothbore main gun, the 1A45T fire-control system, an upgraded engine, + and gunner's thermal sight. Standard protective measures include a blend of steel and composite armour, + smoke grenade dischargers, Kontakt-5 explosive reactive armour (ERA) and the Shtora infrared anti-tank + guided missile (ATGM) jamming system." +introduced: 2019 +manufacturer: Uralvagonzavod +origin: Russia +price: 25 +role: Main Battle Tank +variants: + "[CH] T-90M MBT": {} diff --git a/resources/units/ground_units/CH_TOS1A.yaml b/resources/units/ground_units/CH_TOS1A.yaml new file mode 100644 index 00000000..30ebc41a --- /dev/null +++ b/resources/units/ground_units/CH_TOS1A.yaml @@ -0,0 +1,14 @@ +class: Artillery +description: "TOS-1 Buratino (Russian: \xD1\x82\xD1\x8F\xD0\xB6\xD1\x91\xD0\xBB\xD0\xB0\xD1\x8F\x20\xD0\xBE\xD0\xB3\xD0\xBD\xD0\xB5\xD0\xBC\xD1\x91\xD1\x82\xD0\xBD\xD0\xB0\xD1\x8F\x20\xD1\x81\xD0\xB8\xD1\x81\xD1\x82\xD0\xB5\xD0\xBC\xD0\xB0\x20\x5B\xD0\xA2\xD0\x9E\xD0\xA1\x2D\x31\x5D, + romanized: Tyazhyelaya ognemyetnaya sistema [TOS-1], Heavy Flamethrower System) is a Soviet 220 mm + 30-barrel (original system, Object 634 or TOS-1M) or 24-barrel (Object 634B or TOS-1A Solntsepyok) + multiple rocket launcher capable of using thermobaric warheads, mounted on a T-72 / T-90 tank chassis. + TOS-1 was designed to attack enemy fortified positions and lightly armored vehicles and transports, + particularly in open terrain." +introduced: 2003 +manufacturer: Uralvagonzavod +origin: USSR/Russia +price: 45 +role: Multiple-Launch Rocket System +variants: + "[CH] TOS-1A MRL": {} diff --git a/resources/units/ground_units/CH_TigrM.yaml b/resources/units/ground_units/CH_TigrM.yaml new file mode 100644 index 00000000..1556c39b --- /dev/null +++ b/resources/units/ground_units/CH_TigrM.yaml @@ -0,0 +1,4 @@ +class: IFV +price: 5 +variants: + "[CH] Tigr-M": null \ No newline at end of file diff --git a/resources/units/ground_units/K300P.yaml b/resources/units/ground_units/K300P.yaml new file mode 100644 index 00000000..d21f0797 --- /dev/null +++ b/resources/units/ground_units/K300P.yaml @@ -0,0 +1,4 @@ +class: AntiShipMissile +price: 0 +variants: + "[CH] Bastion-P LBASM TEL": null \ No newline at end of file diff --git a/resources/units/ground_units/MonolitB.yaml b/resources/units/ground_units/MonolitB.yaml new file mode 100644 index 00000000..d3738b8f --- /dev/null +++ b/resources/units/ground_units/MonolitB.yaml @@ -0,0 +1,4 @@ +class: SearchTrackRadar +price: 0 +variants: + "[CH] Monolit-B LBASM STR": null \ No newline at end of file diff --git a/resources/units/ground_units/PantsirS1.yaml b/resources/units/ground_units/PantsirS1.yaml new file mode 100644 index 00000000..1e445272 --- /dev/null +++ b/resources/units/ground_units/PantsirS1.yaml @@ -0,0 +1,14 @@ +class: SHORAD +description: "The Pantsir (Russian: \xD0\x9F\xD0\xB0\xD0\xBD\xD1\x86\xD0\xB8\xD1\x80\xD1\x8C, lit. '[body] + armour') missile system is a family of self-propelled, medium-range surface-to-air missile and + anti-aircraft artillery systems. Three types of vehicles make up one system: a missile launcher, + a radar truck and a command post. Starting with the Pantsir-S1 (Russian: \xD0\x9F\xD0\xB0\xD0\xBD\xD1\x86\xD0\xB8\xD1\x80\xD1\x8C\x2D\xD0\xA1\x31, + NATO reporting name SA-22 Greyhound) as the first version, it is produced by KBP Instrument Design + Bureau of Tula, Russia, and is the successor to the Tunguska M1." +introduced: 2012 +manufacturer: Ulyanovsk Mechanical Plant +origin: Russia +price: 40 +role: Self-Propelled Surface-to-Air Missile Launcher +variants: + "[CH] Pantsir-S1 SPAAGM": {} \ No newline at end of file diff --git a/resources/units/ground_units/PantsirS2.yaml b/resources/units/ground_units/PantsirS2.yaml new file mode 100644 index 00000000..d613624a --- /dev/null +++ b/resources/units/ground_units/PantsirS2.yaml @@ -0,0 +1,14 @@ +class: SHORAD +description: "The Pantsir (Russian: \xD0\x9F\xD0\xB0\xD0\xBD\xD1\x86\xD0\xB8\xD1\x80\xD1\x8C, lit. '[body] + armour') missile system is a family of self-propelled, medium-range surface-to-air missile and + anti-aircraft artillery systems. Three types of vehicles make up one system: a missile launcher, + a radar truck and a command post. Starting with the Pantsir-S1 (Russian: \xD0\x9F\xD0\xB0\xD0\xBD\xD1\x86\xD0\xB8\xD1\x80\xD1\x8C\x2D\xD0\xA1\x31, + NATO reporting name SA-22 Greyhound) as the first version, it is produced by KBP Instrument Design + Bureau of Tula, Russia, and is the successor to the Tunguska M1." +introduced: 2012 +manufacturer: Ulyanovsk Mechanical Plant +origin: Russia +price: 50 +role: Self-Propelled Surface-to-Air Missile Launcher +variants: + "[CH] Pantsir-S2 SPAAGM": {} \ No newline at end of file diff --git a/resources/units/ground_units/TorM2.yaml b/resources/units/ground_units/TorM2.yaml new file mode 100644 index 00000000..a831fae3 --- /dev/null +++ b/resources/units/ground_units/TorM2.yaml @@ -0,0 +1,13 @@ +class: SHORAD +description: "The Tor (Russian: \xD0\xA2\xD0\xBE\xD1\x80; English: torus) is an all-weather, low-to + medium-altitude, short-range surface-to-air missile system designed for destroying airplanes, helicopters, + cruise missiles, unmanned aerial vehicles and short-range ballistic threats (anti-munitions). Originally + developed by the Soviet Union under the GRAU designation 9K330 Tor, the system is commonly known by its + NATO reporting name, SA-15 Gauntlet." +introduced: 2007 +manufacturer: Almaz-Antey +origin: Russia +price: 40 +role: Self-Propelled Anti-Aircraft System +variants: + "[CH] Tor M2 SHORAD": {} \ No newline at end of file diff --git a/resources/units/ground_units/TorM2K.yaml b/resources/units/ground_units/TorM2K.yaml new file mode 100644 index 00000000..438815a2 --- /dev/null +++ b/resources/units/ground_units/TorM2K.yaml @@ -0,0 +1,13 @@ +class: SHORAD +description: "The Tor (Russian: \xD0\xA2\xD0\xBE\xD1\x80; English: torus) is an all-weather, low-to + medium-altitude, short-range surface-to-air missile system designed for destroying airplanes, helicopters, + cruise missiles, unmanned aerial vehicles and short-range ballistic threats (anti-munitions). Originally + developed by the Soviet Union under the GRAU designation 9K330 Tor, the system is commonly known by its + NATO reporting name, SA-15 Gauntlet." +introduced: 2007 +manufacturer: Almaz-Antey +origin: Russia +price: 40 +role: Self-Propelled Anti-Aircraft System +variants: + "[CH] Tor M2K SHORAD": {} \ No newline at end of file diff --git a/resources/units/ground_units/TorM2M.yaml b/resources/units/ground_units/TorM2M.yaml new file mode 100644 index 00000000..9ceb7f6e --- /dev/null +++ b/resources/units/ground_units/TorM2M.yaml @@ -0,0 +1,13 @@ +class: SHORAD +description: "The Tor (Russian: \xD0\xA2\xD0\xBE\xD1\x80; English: torus) is an all-weather, low-to + medium-altitude, short-range surface-to-air missile system designed for destroying airplanes, helicopters, + cruise missiles, unmanned aerial vehicles and short-range ballistic threats (anti-munitions). Originally + developed by the Soviet Union under the GRAU designation 9K330 Tor, the system is commonly known by its + NATO reporting name, SA-15 Gauntlet." +introduced: 2007 +manufacturer: Almaz-Antey +origin: Russia +price: 40 +role: Self-Propelled Anti-Aircraft System +variants: + "[CH] Tor M2M SHORAD": {} \ No newline at end of file diff --git a/resources/units/ships/Admiral_Gorshkov.yaml b/resources/units/ships/Admiral_Gorshkov.yaml new file mode 100644 index 00000000..c9e85621 --- /dev/null +++ b/resources/units/ships/Admiral_Gorshkov.yaml @@ -0,0 +1,4 @@ +class: Frigate +price: 0 +variants: + "[CH] Project 22350 Admiral Gorshkov Frigate": null \ No newline at end of file diff --git a/resources/units/ships/CH_Gremyashchiy_AShM.yaml b/resources/units/ships/CH_Gremyashchiy_AShM.yaml new file mode 100644 index 00000000..580194a9 --- /dev/null +++ b/resources/units/ships/CH_Gremyashchiy_AShM.yaml @@ -0,0 +1,4 @@ +class: Destroyer +price: 0 +variants: + "[CH] Project 20385 Gremyashchiy Corvette (AShM)": null \ No newline at end of file diff --git a/resources/units/ships/CH_Gremyashchiy_LACM.yaml b/resources/units/ships/CH_Gremyashchiy_LACM.yaml new file mode 100644 index 00000000..ceaa4267 --- /dev/null +++ b/resources/units/ships/CH_Gremyashchiy_LACM.yaml @@ -0,0 +1,4 @@ +class: Destroyer +price: 0 +variants: + "[CH] Project 20385 Gremyashchiy Corvette (LACM)": null \ No newline at end of file diff --git a/resources/units/ships/CH_Grigorovich_AShM.yaml b/resources/units/ships/CH_Grigorovich_AShM.yaml new file mode 100644 index 00000000..657b98cf --- /dev/null +++ b/resources/units/ships/CH_Grigorovich_AShM.yaml @@ -0,0 +1,4 @@ +class: Frigate +price: 0 +variants: + "[CH] Project 11356R Admiral Grigorovich Frigate (AShM)": null \ No newline at end of file diff --git a/resources/units/ships/CH_Grigorovich_LACM.yaml b/resources/units/ships/CH_Grigorovich_LACM.yaml new file mode 100644 index 00000000..3829b95e --- /dev/null +++ b/resources/units/ships/CH_Grigorovich_LACM.yaml @@ -0,0 +1,4 @@ +class: Frigate +price: 0 +variants: + "[CH] Project 11356R Admiral Grigorovich Frigate (LACM)": null \ No newline at end of file diff --git a/resources/units/ships/CH_Project22160.yaml b/resources/units/ships/CH_Project22160.yaml new file mode 100644 index 00000000..f5e719dc --- /dev/null +++ b/resources/units/ships/CH_Project22160.yaml @@ -0,0 +1,4 @@ +class: Destroyer +price: 0 +variants: + "[CH] Project 22160 Patrol Ship": null \ No newline at end of file diff --git a/resources/units/ships/CH_Steregushchiy.yaml b/resources/units/ships/CH_Steregushchiy.yaml new file mode 100644 index 00000000..cc9871b6 --- /dev/null +++ b/resources/units/ships/CH_Steregushchiy.yaml @@ -0,0 +1,4 @@ +class: Destroyer +price: 0 +variants: + "[CH] Project 20381 Steregushchiy Corvette": null \ No newline at end of file diff --git a/resources/units/ships/Karakurt_AShM.yaml b/resources/units/ships/Karakurt_AShM.yaml new file mode 100644 index 00000000..8bb508d2 --- /dev/null +++ b/resources/units/ships/Karakurt_AShM.yaml @@ -0,0 +1,4 @@ +class: Destroyer +price: 0 +variants: + "[CH] Project 22800 Karakurt Corvette AShM": null \ No newline at end of file diff --git a/resources/units/ships/Karakurt_LACM.yaml b/resources/units/ships/Karakurt_LACM.yaml new file mode 100644 index 00000000..bed9e531 --- /dev/null +++ b/resources/units/ships/Karakurt_LACM.yaml @@ -0,0 +1,4 @@ +class: Destroyer +price: 0 +variants: + "[CH] Project 22800 Karakurt Corvette LACM": null \ No newline at end of file