diff --git a/changelog.md b/changelog.md index 8b7c212c..df301ba3 100644 --- a/changelog.md +++ b/changelog.md @@ -13,6 +13,7 @@ * **[Mission Generation]** Also save kneeboards in txt-format, found under "kneeboards" within Retribution's installation folder after pressing take-off. * **[Modding]** Support for SW mod v2.55 * **[Modding]** Support for Spanish & Australian Naval Assets v3.2.0 by desdemicabina +* **[Modding]** Support for Iron Dome v1.2 by IDF Mods Project ## Fixes * **[New Game Wizard]** Settings would not persist when going back to a previous page. diff --git a/game/factions/faction.py b/game/factions/faction.py index fe072c38..83a48c6d 100644 --- a/game/factions/faction.py +++ b/game/factions/faction.py @@ -439,6 +439,13 @@ class Faction: self.remove_ship("L52") self.remove_ship("L02") self.remove_ship("DDG39") + if not mod_settings.irondome: + self.remove_vehicle("I9K51_GRAD") + self.remove_vehicle("I9K57_URAGAN") + self.remove_vehicle("I9K58_SMERCH") + self.remove_vehicle("IRON_DOME_CP") + self.remove_vehicle("IRON_DOME_LN") + self.remove_vehicle("ELM2048_MMR") # swedish military assets pack if not mod_settings.swedishmilitaryassetspack: self.remove_vehicle("BV410_RBS70") diff --git a/game/theater/start_generator.py b/game/theater/start_generator.py index 1f3112c3..50df8295 100644 --- a/game/theater/start_generator.py +++ b/game/theater/start_generator.py @@ -66,6 +66,7 @@ class ModSettings: f104_starfighter: bool = False f105_thunderchief: bool = False hercules: bool = False + irondome: bool = False uh_60l: bool = False jas39_gripen: bool = False su30_flanker_h: bool = False diff --git a/pydcs_extensions/__init__.py b/pydcs_extensions/__init__.py index d2c5abb7..9ca19a3b 100644 --- a/pydcs_extensions/__init__.py +++ b/pydcs_extensions/__init__.py @@ -14,6 +14,7 @@ from .fa18efg import * from .frenchpack import * from .hercules import * from .highdigitsams import * +from .irondome import * from .jas39 import * from .ov10a import * from .spanishnavypack import * diff --git a/pydcs_extensions/irondome/__init__.py b/pydcs_extensions/irondome/__init__.py new file mode 100644 index 00000000..b06bc486 --- /dev/null +++ b/pydcs_extensions/irondome/__init__.py @@ -0,0 +1 @@ +from .irondome import * diff --git a/pydcs_extensions/irondome/irondome.py b/pydcs_extensions/irondome/irondome.py new file mode 100644 index 00000000..4b2cdd70 --- /dev/null +++ b/pydcs_extensions/irondome/irondome.py @@ -0,0 +1,61 @@ +from dcs.unittype import VehicleType + +from game.modsupport import vehiclemod + + +@vehiclemod +class I9K51_GRAD(VehicleType): + id = "I9K51_GRAD" + name = "(IDF Mods Project) BM-21 Grad 122mm" + detection_range = 0 + threat_range = 19000 + air_weapon_dist = 19000 + eplrs = True + + +@vehiclemod +class I9K57_URAGAN(VehicleType): + id = "I9K57_URAGAN" + name = "(IDF Mods Project) Urgan BM-27 220mm" + detection_range = 0 + threat_range = 35800 + air_weapon_dist = 35800 + eplrs = True + + +@vehiclemod +class I9K58_SMERCH(VehicleType): + id = "I9K58_SMERCH" + name = "(IDF Mods Project) 9A52 Smerch CM 300mm" + detection_range = 0 + threat_range = 70000 + air_weapon_dist = 70000 + eplrs = True + + +@vehiclemod +class IRON_DOME_CP(VehicleType): + id = "IRON_DOME_CP" + name = "Iron Dome CP" + detection_range = 0 + threat_range = 0 + air_weapon_dist = 0 + eplrs = True + + +@vehiclemod +class IRON_DOME_LN(VehicleType): + id = "IRON_DOME_LN" + name = "Iron Dome LN" + detection_range = 0 + threat_range = 25000 + air_weapon_dist = 25000 + + +@vehiclemod +class ELM2048_MMR(VehicleType): + id = "ELM2048_MMR" + name = "Iron Dome ELM-2048 MMR" + detection_range = 412000 + threat_range = 0 + air_weapon_dist = 0 diff --git a/qt_ui/uiconstants.py b/qt_ui/uiconstants.py index dcd87b58..4b7fa551 100644 --- a/qt_ui/uiconstants.py +++ b/qt_ui/uiconstants.py @@ -219,6 +219,7 @@ def load_vehicle_icons(): VEHICLES_ICONS[vehicle[:-7]] = QPixmap( os.path.join("./resources/ui/units/vehicles/icons/", vehicle) ) + VEHICLES_ICONS["(IDF Mods Project) BM-21 Grad 122mm"] = VEHICLES_ICONS["Grad-URAL"] def load_aircraft_banners(): @@ -252,3 +253,12 @@ def load_vehicle_banners(): VEHICLE_BANNERS[aircraft[:-7]] = QPixmap( os.path.join("./resources/ui/units/vehicles/banners/", aircraft) ) + VEHICLE_BANNERS["(IDF Mods Project) BM-21 Grad 122mm"] = VEHICLE_BANNERS[ + "Grad-URAL" + ] + VEHICLE_BANNERS["(IDF Mods Project) Urgan BM-27 220mm"] = VEHICLE_BANNERS[ + "Uragan_BM-27" + ] + VEHICLE_BANNERS["(IDF Mods Project) 9A52 Smerch CM 300mm"] = VEHICLE_BANNERS[ + "Smerch_HE" + ] diff --git a/qt_ui/windows/newgame/QNewGameWizard.py b/qt_ui/windows/newgame/QNewGameWizard.py index a4b96b8a..090fd28b 100644 --- a/qt_ui/windows/newgame/QNewGameWizard.py +++ b/qt_ui/windows/newgame/QNewGameWizard.py @@ -196,6 +196,7 @@ class NewGameWizard(QtWidgets.QWizard): f104_starfighter=self.field("f104_starfighter"), f105_thunderchief=self.field("f105_thunderchief"), hercules=self.field("hercules"), + irondome=self.field("irondome"), uh_60l=self.field("uh_60l"), jas39_gripen=self.field("jas39_gripen"), su30_flanker_h=self.field("su30_flanker_h"), @@ -877,6 +878,8 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.registerField("SWPack", self.SWPack) self.spanishnavypack = QtWidgets.QCheckBox() self.registerField("spanishnavypack", self.spanishnavypack) + self.irondome = QtWidgets.QCheckBox() + self.registerField("irondome", self.irondome) 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.

" @@ -913,6 +916,7 @@ class GeneratorOptions(QtWidgets.QWizardPage): ("UH-60L Black Hawk (v1.3.1)", self.uh_60l), ("Star Wars Modpack 2.54+", self.SWPack), ("Spanish Naval Assets pack (desdemicabina 3.2.0)", self.spanishnavypack), + ("Iron Dome (v1.2 by IDF Mods Project)", self.irondome), ] for i in range(len(mod_pairs)): @@ -968,6 +972,7 @@ class GeneratorOptions(QtWidgets.QWizardPage): self.frenchpack.setChecked(s.get("frenchpack", False)) self.high_digit_sams.setChecked(s.get("high_digit_sams", False)) self.spanishnavypack.setChecked(s.get("spanishnavypack", False)) + self.irondome.setChecked(s.get("irondome", False)) self.swedishmilitaryassetspack.setChecked( s.get("swedishmilitaryassetspack", False) ) diff --git a/resources/factions/israel_1973.json b/resources/factions/israel_1973.json index de06d524..57a5165b 100644 --- a/resources/factions/israel_1973.json +++ b/resources/factions/israel_1973.json @@ -25,7 +25,9 @@ "M4A2(75) Sherman", "M60A3 \"Patton\"" ], - "artillery_units": [], + "artillery_units": [ + "(IDF Mods Project) BM-21 Grad 122mm", + ], "logistics_units": [ "Truck M818 6x6" ], diff --git a/resources/factions/israel_1982.json b/resources/factions/israel_1982.json index 0e38c3dc..517b3491 100644 --- a/resources/factions/israel_1982.json +++ b/resources/factions/israel_1982.json @@ -27,7 +27,10 @@ "M163 Vulcan Air Defense System", "M60A3 \"Patton\"" ], - "artillery_units": [], + "artillery_units": [ + "(IDF Mods Project) BM-21 Grad 122mm", + "(IDF Mods Project) Urgan BM-27 220mm", + ], "logistics_units": [ "Truck M818 6x6" ], diff --git a/resources/factions/israel_2000.json b/resources/factions/israel_2000.json index 2d10b275..eaf7570d 100644 --- a/resources/factions/israel_2000.json +++ b/resources/factions/israel_2000.json @@ -39,7 +39,10 @@ ], "artillery_units": [ "M109A6 Paladin", - "M270 Multiple Launch Rocket System" + "M270 Multiple Launch Rocket System", + "(IDF Mods Project) BM-21 Grad 122mm", + "(IDF Mods Project) Urgan BM-27 220mm", + "(IDF Mods Project) 9A52 Smerch CM 300mm" ], "logistics_units": [ "Truck M818 6x6" diff --git a/resources/factions/israel_2012.json b/resources/factions/israel_2012.json index 65c00e39..f44a9849 100644 --- a/resources/factions/israel_2012.json +++ b/resources/factions/israel_2012.json @@ -40,7 +40,10 @@ ], "artillery_units": [ "M109A6 Paladin", - "M270 Multiple Launch Rocket System" + "M270 Multiple Launch Rocket System", + "(IDF Mods Project) BM-21 Grad 122mm", + "(IDF Mods Project) Urgan BM-27 220mm", + "(IDF Mods Project) 9A52 Smerch CM 300mm" ], "logistics_units": [ "Truck M818 6x6" @@ -52,6 +55,7 @@ ], "preset_groups": [ "Hawk", + "Iron Dome", "Patriot" ], "naval_units": [ diff --git a/resources/groups/IronDome.yaml b/resources/groups/IronDome.yaml new file mode 100644 index 00000000..e16f25dd --- /dev/null +++ b/resources/groups/IronDome.yaml @@ -0,0 +1,9 @@ +name: Iron Dome +tasks: + - MERAD +units: + - Iron Dome ELM-2048 MMR + - Iron Dome CP + - Iron Dome LN +layouts: + - 4 Launcher Site (Circle) \ No newline at end of file diff --git a/resources/ui/units/vehicles/banners/Grad-URAL_24.jpg b/resources/ui/units/vehicles/banners/Grad-URAL_24.jpg new file mode 100644 index 00000000..d3c33342 Binary files /dev/null and b/resources/ui/units/vehicles/banners/Grad-URAL_24.jpg differ diff --git a/resources/ui/units/vehicles/icons/Grad-Ural.jpg b/resources/ui/units/vehicles/icons/Grad-URAL_24.jpg similarity index 100% rename from resources/ui/units/vehicles/icons/Grad-Ural.jpg rename to resources/ui/units/vehicles/icons/Grad-URAL_24.jpg diff --git a/resources/units/ground_units/ELM2048_MMR.yaml b/resources/units/ground_units/ELM2048_MMR.yaml new file mode 100644 index 00000000..472dd100 --- /dev/null +++ b/resources/units/ground_units/ELM2048_MMR.yaml @@ -0,0 +1,11 @@ +class: SearchRadar +price: 25 +variants: + Iron Dome ELM-2048 MMR: null +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/I9K51_GRAD.yaml b/resources/units/ground_units/I9K51_GRAD.yaml new file mode 100644 index 00000000..cec19e22 --- /dev/null +++ b/resources/units/ground_units/I9K51_GRAD.yaml @@ -0,0 +1,10 @@ +class: Artillery +description: "The BM-21 \"Grad\" (Russian: \u0411\u041C-21 \"\u0413\u0440\u0430\u0434\ + \", lit.\u2009'hail') is a Soviet truck-mounted 122 mm multiple rocket launcher." +introduced: 1963 +manufacturer: Splav +origin: USSR/Russia +price: 15 +role: Multiple-Launch Rocket System +variants: + (IDF Mods Project) BM-21 Grad 122mm: {} diff --git a/resources/units/ground_units/I9K57_URAGAN.yaml b/resources/units/ground_units/I9K57_URAGAN.yaml new file mode 100644 index 00000000..4f8dbc6d --- /dev/null +++ b/resources/units/ground_units/I9K57_URAGAN.yaml @@ -0,0 +1,11 @@ +class: Artillery +description: "The BM-27 Uragan (Russian: \u0423\u0440\u0430\u0433\u0430\u043D, lit.\u2009\ + 'Hurricane'; GRAU index 9P140) is a self-propelled multiple rocket launcher system\ + \ designed in the Soviet Union." +introduced: 1975 +manufacturer: Splav +origin: USSR/Russia +price: 40 +role: Multiple-Launch Rocket System +variants: + (IDF Mods Project) Urgan BM-27 220mm: {} diff --git a/resources/units/ground_units/I9K58_SMERCH.yaml b/resources/units/ground_units/I9K58_SMERCH.yaml new file mode 100644 index 00000000..2f280a14 --- /dev/null +++ b/resources/units/ground_units/I9K58_SMERCH.yaml @@ -0,0 +1,12 @@ +class: Artillery +description: "The BM-30 Smerch (Russian: \u0421\u043C\u0435\u0440\u0447, \"tornado\"\ + , \"whirlwind\"), 9K58 Smerch or 9A52-2 Smerch-M is a Soviet heavy multiple rocket\ + \ launcher. The system is intended to defeat personnel, armored, and soft targets\ + \ in concentration areas, artillery batteries, command posts and ammunition depots." +introduced: 1989 +manufacturer: Splav +origin: USSR/Russia +price: 50 +role: Multiple-Launch Rocket System +variants: + (IDF Mods Project) 9A52 Smerch CM 300mm: {} diff --git a/resources/units/ground_units/IRON_DOME_CP.yaml b/resources/units/ground_units/IRON_DOME_CP.yaml new file mode 100644 index 00000000..3b71bc1e --- /dev/null +++ b/resources/units/ground_units/IRON_DOME_CP.yaml @@ -0,0 +1,4 @@ +class: CommandPost +price: 18 +variants: + Iron Dome CP: null diff --git a/resources/units/ground_units/IRON_DOME_LN.yaml b/resources/units/ground_units/IRON_DOME_LN.yaml new file mode 100644 index 00000000..54dc2de1 --- /dev/null +++ b/resources/units/ground_units/IRON_DOME_LN.yaml @@ -0,0 +1,4 @@ +class: Launcher +price: 23 +variants: + Iron Dome LN: null diff --git a/resources/units/ground_units/Smerch_HE.yaml b/resources/units/ground_units/Smerch_HE.yaml index e8b25887..72dfc314 100644 --- a/resources/units/ground_units/Smerch_HE.yaml +++ b/resources/units/ground_units/Smerch_HE.yaml @@ -6,7 +6,7 @@ description: "The BM-30 Smerch (Russian: \u0421\u043C\u0435\u0440\u0447, \"torna introduced: 1989 manufacturer: Splav origin: USSR/Russia -price: 40 +price: 50 role: Multiple-Launch Rocket System variants: BM-30 Smerch (9M55K5 HE Rockets): {} diff --git a/resources/units/ground_units/Uragan_BM-27.yaml b/resources/units/ground_units/Uragan_BM-27.yaml index fa65c388..1ef3fd8c 100644 --- a/resources/units/ground_units/Uragan_BM-27.yaml +++ b/resources/units/ground_units/Uragan_BM-27.yaml @@ -5,7 +5,7 @@ description: "The BM-27 Uragan (Russian: \u0423\u0440\u0430\u0433\u0430\u043D, l introduced: 1975 manufacturer: Splav origin: USSR/Russia -price: 50 +price: 40 role: Multiple-Launch Rocket System variants: BM-27 Uragan: {}