diff --git a/changelog.md b/changelog.md index 5dbf3d54..9e34c673 100644 --- a/changelog.md +++ b/changelog.md @@ -17,6 +17,7 @@ * **[ATO]** Allow planning as OPFOR * **[Campaign Design]** Support for Kola map by Orbx * **[UI]** Zoom level retained when switching campaigns +* **[UX]** Allow changing squadrons in flight's edit dialog ## Fixes * **[UI/UX]** A-10A flights can be edited again diff --git a/game/ato/flightwaypoint.py b/game/ato/flightwaypoint.py index ac625f57..567015e2 100644 --- a/game/ato/flightwaypoint.py +++ b/game/ato/flightwaypoint.py @@ -1,8 +1,9 @@ from __future__ import annotations +from copy import deepcopy from dataclasses import dataclass, field from datetime import datetime -from typing import Literal, TYPE_CHECKING +from typing import Literal, TYPE_CHECKING, Any, Dict, Optional from dcs import Point @@ -56,3 +57,17 @@ class FlightWaypoint: def __hash__(self) -> int: return hash(id(self)) + + def __deepcopy__(self, memo: Optional[Dict[int, Any]] = None) -> FlightWaypoint: + obj = FlightWaypoint(self.name, self.waypoint_type, self.position) + for attr in dir(self): + if attr == "control_point": + obj.control_point = self.control_point + elif attr == "targets": + obj.targets = self.targets + elif "__" in attr or attr not in obj.__dataclass_fields__: + continue + else: + attr_copy = deepcopy(getattr(self, attr)) + setattr(obj, attr, attr_copy) + return obj diff --git a/game/ato/package.py b/game/ato/package.py index fed5ad76..387b03ed 100644 --- a/game/ato/package.py +++ b/game/ato/package.py @@ -235,6 +235,7 @@ class Package(RadioFrequencyContainer): clone.time_over_target = deepcopy(package.time_over_target) for f in package.flights: cf = Flight.clone_flight(f) + cf.flight_plan.layout = deepcopy(f.flight_plan.layout) cf.package = clone clone.add_flight(cf) return clone diff --git a/game/campaignloader/mizcampaignloader.py b/game/campaignloader/mizcampaignloader.py index eafc372d..1dcc028c 100644 --- a/game/campaignloader/mizcampaignloader.py +++ b/game/campaignloader/mizcampaignloader.py @@ -74,6 +74,8 @@ class MizCampaignLoader: AirDefence.Hawk_ln.id, AirDefence.S_75M_Volhov.id, AirDefence.x_5p73_s_125_ln.id, + AirDefence.NASAMS_LN_B.id, + AirDefence.NASAMS_LN_C.id, } SHORT_RANGE_SAM_UNIT_TYPES = { diff --git a/game/commander/packagebuilder.py b/game/commander/packagebuilder.py index dcc50770..b2694959 100644 --- a/game/commander/packagebuilder.py +++ b/game/commander/packagebuilder.py @@ -78,7 +78,11 @@ class PackageBuilder: ) # If this is a client flight, set the start_type again to match the configured default # https://github.com/dcs-liberation/dcs_liberation/issues/1567 - if flight.roster is not None and flight.roster.player_count > 0: + if ( + squadron.location.required_aircraft_start_type is None + and flight.roster is not None + and flight.roster.player_count > 0 + ): flight.start_type = ( squadron.coalition.game.settings.default_start_type_client ) diff --git a/game/commander/packagefulfiller.py b/game/commander/packagefulfiller.py index cd335910..95e0d9a9 100644 --- a/game/commander/packagefulfiller.py +++ b/game/commander/packagefulfiller.py @@ -133,6 +133,21 @@ class PackageFulfiller: threats[EscortType.Sead] = True return threats + def can_plan_escort(self, type: EscortType) -> bool: + if type == EscortType.AirToAir: + return self.air_wing_can_plan(FlightType.ESCORT) + elif type == EscortType.Sead: + for task in [ + FlightType.SEAD, + FlightType.SEAD_ESCORT, + FlightType.SEAD_SWEEP, + ]: + if self.air_wing_can_plan(task): + return True + elif type == EscortType.Refuel: + return self.air_wing_can_plan(FlightType.REFUELING) + return False + def plan_mission( self, mission: ProposedMission, @@ -207,7 +222,9 @@ class PackageFulfiller: # This list was generated from the not None set, so this should be # impossible. assert escort.escort_type is not None - if needed_escorts[escort.escort_type]: + if needed_escorts[escort.escort_type] and self.can_plan_escort( + escort.escort_type + ): with tracer.trace("Flight planning"): self.plan_flight( mission, escort, builder, missing_types, purchase_multiplier diff --git a/game/dcs/aircrafttype.py b/game/dcs/aircrafttype.py index 4cbe65ba..20f967ae 100644 --- a/game/dcs/aircrafttype.py +++ b/game/dcs/aircrafttype.py @@ -40,6 +40,7 @@ from game.radio.channels import ( ViperChannelNamer, WarthogChannelNamer, PhantomChannelNamer, + KiowaChannelNamer, ) from game.utils import ( Distance, @@ -116,6 +117,7 @@ class RadioConfig: "a10c-legacy": LegacyWarthogChannelNamer, "a10c-ii": WarthogChannelNamer, "phantom": PhantomChannelNamer, + "kiowa": KiowaChannelNamer, }[config.get("namer", "default")] diff --git a/game/missiongenerator/aircraft/aircraftgenerator.py b/game/missiongenerator/aircraft/aircraftgenerator.py index bd520486..63179163 100644 --- a/game/missiongenerator/aircraft/aircraftgenerator.py +++ b/game/missiongenerator/aircraft/aircraftgenerator.py @@ -119,7 +119,7 @@ class AircraftGenerator: if not package.flights: continue for flight in package.flights: - if flight.alive: + if flight.alive and not isinstance(flight.state, Completed): if not flight.squadron.location.runway_is_operational(): logging.warning( f"Runway not operational, skipping flight: {flight.flight_type}" diff --git a/game/persistency.py b/game/persistency.py index 98a00108..f196bf33 100644 --- a/game/persistency.py +++ b/game/persistency.py @@ -93,7 +93,6 @@ class MigrationUnpickler(pickle.Unpickler): except AttributeError: alternate = name.split('.')[:-1] + [name.split('.')[-1][0].lower() + name.split('.')[-1][1:]] name = '.'.join(alternate) - print(name) return super().find_class(module, name) # fmt: on diff --git a/game/radio/channels.py b/game/radio/channels.py index 7a4a6f23..6983f5e7 100644 --- a/game/radio/channels.py +++ b/game/radio/channels.py @@ -421,3 +421,16 @@ class PhantomChannelNamer(ChannelNamer): @classmethod def name(cls) -> str: return "phantom" + + +class KiowaChannelNamer(ChannelNamer): + """Channel namer for OH58D Kiowa Warrior""" + + @staticmethod + def channel_name(radio_id: int, channel_id: int) -> str: + radio_name = ["UHF AM", "VHF AM", "VHF FM1", "VHF FM2"][radio_id - 1] + return f"{radio_name} Ch {channel_id}" + + @classmethod + def name(cls) -> str: + return "kiowa" diff --git a/game/transfers.py b/game/transfers.py index efc14211..c8c91b83 100644 --- a/game/transfers.py +++ b/game/transfers.py @@ -661,10 +661,16 @@ class PendingTransfers: def _cancel_transport_air( self, transport: Airlift, _transfer: TransferOrder ) -> None: + from game.sim import GameUpdateEvents + from game.server import EventStream + flight = transport.flight flight.package.remove_flight(flight) + events = GameUpdateEvents().delete_flight(flight) if not flight.package.flights: self.game.ato_for(self.player).remove_package(flight.package) + events = events.delete_flights_in_package(flight.package) + EventStream().put_nowait(events) @cancel_transport.register def _cancel_transport_convoy( diff --git a/qt_ui/widgets/ato.py b/qt_ui/widgets/ato.py index 3606e470..7eb42a81 100644 --- a/qt_ui/widgets/ato.py +++ b/qt_ui/widgets/ato.py @@ -1,5 +1,6 @@ """Widgets for displaying air tasking orders.""" import logging +from copy import deepcopy from typing import Optional from PySide6.QtCore import ( @@ -143,6 +144,7 @@ class QFlightList(QListView): ) return self.package_model.add_flight(clone) + clone.flight_plan.layout = deepcopy(flight.flight_plan.layout) EventStream.put_nowait(GameUpdateEvents().new_flight(clone)) def cancel_or_abort_flight(self, index: QModelIndex) -> None: diff --git a/qt_ui/windows/PendingTransfersDialog.py b/qt_ui/windows/PendingTransfersDialog.py index e671a161..188b8854 100644 --- a/qt_ui/windows/PendingTransfersDialog.py +++ b/qt_ui/windows/PendingTransfersDialog.py @@ -121,6 +121,8 @@ class PendingTransfersDialog(QDialog): ) -> None: """Updates the state of the delete button.""" if selected.empty(): - self.cancel_button.setEnabled(False) + self.cancel_button.setEnabled( + self.can_cancel(self.transfer_list.currentIndex()) + ) return self.cancel_button.setEnabled(self.can_cancel(selected.indexes()[0])) diff --git a/qt_ui/windows/mission/QEditFlightDialog.py b/qt_ui/windows/mission/QEditFlightDialog.py index ab191a85..806ce2aa 100644 --- a/qt_ui/windows/mission/QEditFlightDialog.py +++ b/qt_ui/windows/mission/QEditFlightDialog.py @@ -26,6 +26,8 @@ class QEditFlightDialog(QDialog): self.game_model = game_model self.flight = flight + self.package_model = package_model + self.events = GameUpdateEvents() self.setWindowTitle("Edit flight") self.setWindowIcon(EVENT_ICONS["strike"]) @@ -34,11 +36,24 @@ class QEditFlightDialog(QDialog): layout = QVBoxLayout() self.flight_planner = QFlightPlanner(package_model, flight, game_model) + self.flight_planner.squadron_changed.connect(self.on_squadron_change) layout.addWidget(self.flight_planner) self.setLayout(layout) self.finished.connect(self.on_close) - def on_close(self, _result) -> None: - EventStream.put_nowait(GameUpdateEvents().update_flight(self.flight)) + def on_squadron_change(self, flight: Flight): + self.events = GameUpdateEvents().delete_flight(self.flight) + self.events = self.events.new_flight(flight) + self.game_model.ato_model.client_slots_changed.emit() + self.flight = flight + self.reject() + new_dialog = QEditFlightDialog( + self.game_model, self.package_model, flight, self.parent() + ) + new_dialog.show() + + def on_close(self, _result) -> None: + self.events = self.events.update_flight(self.flight) + EventStream.put_nowait(self.events) self.game_model.ato_model.client_slots_changed.emit() diff --git a/qt_ui/windows/mission/flight/QFlightPlanner.py b/qt_ui/windows/mission/flight/QFlightPlanner.py index 362c41e7..d04fe412 100644 --- a/qt_ui/windows/mission/flight/QFlightPlanner.py +++ b/qt_ui/windows/mission/flight/QFlightPlanner.py @@ -1,3 +1,4 @@ +from PySide6.QtCore import Signal from PySide6.QtWidgets import QTabWidget from game.ato.flight import Flight @@ -10,6 +11,8 @@ from qt_ui.windows.mission.flight.waypoints.QFlightWaypointTab import QFlightWay class QFlightPlanner(QTabWidget): + squadron_changed = Signal(Flight) + def __init__(self, package_model: PackageModel, flight: Flight, gm: GameModel): super().__init__() @@ -28,6 +31,7 @@ class QFlightPlanner(QTabWidget): self.general_settings_tab.flight_size_changed.connect( self.payload_tab.resize_for_flight ) + self.general_settings_tab.squadron_changed.connect(self.squadron_changed) self.addTab(self.general_settings_tab, "General Flight settings") self.addTab(self.payload_tab, "Payload") self.addTab(self.waypoint_tab, "Waypoints") diff --git a/qt_ui/windows/mission/flight/settings/QFlightSlotEditor.py b/qt_ui/windows/mission/flight/settings/QFlightSlotEditor.py index 4a153780..827d01b7 100644 --- a/qt_ui/windows/mission/flight/settings/QFlightSlotEditor.py +++ b/qt_ui/windows/mission/flight/settings/QFlightSlotEditor.py @@ -11,14 +11,21 @@ from PySide6.QtWidgets import ( QHBoxLayout, QCheckBox, QVBoxLayout, + QPushButton, + QDialog, + QWidget, ) from game import Game +from game.ato.closestairfields import ClosestAirfields from game.ato.flight import Flight from game.ato.flightroster import FlightRoster from game.ato.iflightroster import IFlightRoster +from game.dcs.aircrafttype import AircraftType from game.squadrons import Squadron from game.squadrons.pilot import Pilot +from game.theater import ControlPoint, OffMapSpawn +from game.utils import nautical_miles from qt_ui.models import PackageModel @@ -237,8 +244,49 @@ class FlightRosterEditor(QVBoxLayout): controls.replace(squadron, new_roster) +class QSquadronSelector(QDialog): + def __init__(self, flight: Flight, parent: Optional[QWidget] = None): + super().__init__(parent) + self.flight = flight + self.parent = parent + self.init() + + def init(self): + vbox = QVBoxLayout() + self.setLayout(vbox) + + self.selector = QComboBox() + air_wing = self.flight.coalition.air_wing + for squadron in air_wing.best_squadrons_for( + self.flight.package.target, + self.flight.flight_type, + self.flight.roster.max_size, + self.flight.is_helo, + True, + ignore_range=True, + ): + if squadron is self.flight.squadron: + continue + self.selector.addItem( + f"{squadron.name} - {squadron.aircraft.variant_id}", squadron + ) + + vbox.addWidget(self.selector) + + hbox = QHBoxLayout() + accept = QPushButton("Accept") + accept.clicked.connect(self.accept) + hbox.addWidget(accept) + cancel = QPushButton("Cancel") + cancel.clicked.connect(self.reject) + hbox.addWidget(cancel) + + vbox.addLayout(hbox) + + class QFlightSlotEditor(QGroupBox): flight_resized = Signal(int) + squadron_changed = Signal(Flight) def __init__( self, @@ -250,6 +298,10 @@ class QFlightSlotEditor(QGroupBox): self.package_model = package_model self.flight = flight self.game = game + self.closest_airfields = ClosestAirfields( + flight.package.target, + list(game.theater.control_points_for(self.flight.coalition.player)), + ) available = self.flight.squadron.untasked_aircraft max_count = self.flight.count + available if max_count > 4: @@ -268,7 +320,12 @@ class QFlightSlotEditor(QGroupBox): layout.addWidget(self.aircraft_count_spinner, 0, 1) layout.addWidget(QLabel("Squadron:"), 1, 0) - layout.addWidget(QLabel(str(self.flight.squadron)), 1, 1) + hbox = QHBoxLayout() + hbox.addWidget(QLabel(str(self.flight.squadron))) + squadron_btn = QPushButton("Change Squadron") + squadron_btn.clicked.connect(self._change_squadron) + hbox.addWidget(squadron_btn) + layout.addLayout(hbox, 1, 1) layout.addWidget(QLabel("Assigned pilots:"), 2, 0) self.roster_editor = FlightRosterEditor(flight.squadron, flight.roster) @@ -276,6 +333,46 @@ class QFlightSlotEditor(QGroupBox): self.setLayout(layout) + def _change_squadron(self): + dialog = QSquadronSelector(self.flight) + if dialog.exec(): + squadron: Optional[Squadron] = dialog.selector.currentData() + if not squadron: + return + flight = Flight( + self.package_model.package, + squadron, + self.flight.count, + self.flight.flight_type, + self.flight.start_type, + self._find_divert_field(squadron.aircraft, squadron.location), + frequency=self.flight.frequency, + cargo=self.flight.cargo, + channel=self.flight.tacan, + callsign_tcn=self.flight.tcn_name, + ) + self.package_model.add_flight(flight) + self.package_model.delete_flight(self.flight) + self.squadron_changed.emit(flight) + + def _find_divert_field( + self, aircraft: AircraftType, arrival: ControlPoint + ) -> Optional[ControlPoint]: + divert_limit = nautical_miles(150) + for airfield in self.closest_airfields.operational_airfields_within( + divert_limit + ): + if airfield.captured != self.flight.coalition.player: + continue + if airfield == arrival: + continue + if not airfield.can_operate(aircraft): + continue + if isinstance(airfield, OffMapSpawn): + continue + return airfield + return None + def _changed_aircraft_count(self): old_count = self.flight.count new_count = int(self.aircraft_count_spinner.value()) diff --git a/qt_ui/windows/mission/flight/settings/QFlightStartType.py b/qt_ui/windows/mission/flight/settings/QFlightStartType.py index 7f8351cd..daa44328 100644 --- a/qt_ui/windows/mission/flight/settings/QFlightStartType.py +++ b/qt_ui/windows/mission/flight/settings/QFlightStartType.py @@ -49,7 +49,9 @@ class QFlightStartType(QGroupBox): # Otherwise, set the start_type as configured for AI. # https://github.com/dcs-liberation/dcs_liberation/issues/1567 - if self.flight.roster.player_count > 0: + if isinstance(self.flight.departure, OffMapSpawn): + return + elif self.flight.roster.player_count > 0: self.flight.start_type = ( self.flight.coalition.game.settings.default_start_type_client ) diff --git a/qt_ui/windows/mission/flight/settings/QGeneralFlightSettingsTab.py b/qt_ui/windows/mission/flight/settings/QGeneralFlightSettingsTab.py index a04ab9ab..7b9a1d3d 100644 --- a/qt_ui/windows/mission/flight/settings/QGeneralFlightSettingsTab.py +++ b/qt_ui/windows/mission/flight/settings/QGeneralFlightSettingsTab.py @@ -21,6 +21,7 @@ from qt_ui.windows.mission.flight.waypoints.QFlightWaypointList import ( class QGeneralFlightSettingsTab(QFrame): flight_size_changed = Signal() + squadron_changed = Signal(Flight) def __init__( self, @@ -36,6 +37,7 @@ class QGeneralFlightSettingsTab(QFrame): self.flight_slot_editor = QFlightSlotEditor(package_model, flight, game.game) self.flight_slot_editor.flight_resized.connect(self.flight_size_changed) + self.flight_slot_editor.squadron_changed.connect(self.squadron_changed) for pc in self.flight_slot_editor.roster_editor.pilot_controls: pc.player_toggled.connect(self.on_player_toggle) pc.player_toggled.connect( diff --git a/qt_ui/windows/newgame/WizardPages/QFactionSelection.py b/qt_ui/windows/newgame/WizardPages/QFactionSelection.py index 9d4e1186..833df92f 100644 --- a/qt_ui/windows/newgame/WizardPages/QFactionSelection.py +++ b/qt_ui/windows/newgame/WizardPages/QFactionSelection.py @@ -146,11 +146,6 @@ class QFactionUnits(QScrollArea): self, cb: QComboBox, callback: Callable, predicate: Callable ): for ac_dcs in sorted(AircraftType.each_dcs_type(), key=lambda x: x.id): - if ( - ac_dcs not in self.faction.country.planes - and ac_dcs not in self.faction.country.helicopters - ): - continue for ac in AircraftType.for_dcs_type(ac_dcs): if ac in self.faction.aircraft: continue diff --git a/requirements.txt b/requirements.txt index 005bf5e3..2f83aba1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,7 +32,7 @@ pluggy==1.5.0 pre-commit==3.7.0 pydantic==2.7.1 pydantic-settings==2.2.1 -pydcs @ git+https://github.com/dcs-retribution/pydcs@805088f20263025eda61398d10383e4d73945dc7 +pydcs @ git+https://github.com/dcs-retribution/pydcs@4f4d3fd51dc14ad8e16e3bf6b130e8efc18dcabd pyinstaller==5.13.2 pyinstaller-hooks-contrib==2024.0 pyparsing==3.1.2 diff --git a/resources/campaigns/battle_for_no_mans_land.miz b/resources/campaigns/battle_for_no_mans_land.miz index 36f3dda8..dbf7cefb 100644 Binary files a/resources/campaigns/battle_for_no_mans_land.miz and b/resources/campaigns/battle_for_no_mans_land.miz differ diff --git a/resources/campaigns/battle_for_no_mans_land.yaml b/resources/campaigns/battle_for_no_mans_land.yaml index 612cb3dd..4455657c 100644 --- a/resources/campaigns/battle_for_no_mans_land.yaml +++ b/resources/campaigns/battle_for_no_mans_land.yaml @@ -34,6 +34,8 @@ miz: battle_for_no_mans_land.miz performance: 1 recommended_start_date: 2001-11-10 version: "10.7" +settings: + squadron_start_full: true squadrons: #Port Stanley 1: @@ -45,12 +47,11 @@ squadrons: - primary: BAI secondary: any aircraft: - - AH-64D Apache Longbow + - OH-58D(R) Kiowa Warrior size: 6 - primary: Air Assault secondary: any aircraft: - - UH-60L - UH-60A size: 4 #San Carlos FOB diff --git a/resources/campaigns/black_sea.yaml b/resources/campaigns/black_sea.yaml index afacc57b..7fea36d9 100644 --- a/resources/campaigns/black_sea.yaml +++ b/resources/campaigns/black_sea.yaml @@ -3,12 +3,12 @@ name: Caucasus - Black Sea theater: Caucasus authors: Colonel Panic description: -
A medium sized theater with bases along the coast of the Black Sea.
+A medium sized theater with bases along the coast of the Black Sea. Note that due to heavy SAM coverage, performance on this campaign can be noticeably worse than in many others.
recommended_player_faction: USA 2005 recommended_enemy_faction: Russia 2010 recommended_start_date: 2004-01-07 miz: black_sea.miz -performance: 2 +performance: 3 version: "10.7" squadrons: # Anapa-Vityazevo diff --git a/resources/campaigns/exercise_able_archer.miz b/resources/campaigns/exercise_able_archer.miz index e30ae86e..614182bb 100644 Binary files a/resources/campaigns/exercise_able_archer.miz and b/resources/campaigns/exercise_able_archer.miz differ diff --git a/resources/campaigns/exercise_able_archer.yaml b/resources/campaigns/exercise_able_archer.yaml index 62df3d3a..704600ed 100644 --- a/resources/campaigns/exercise_able_archer.yaml +++ b/resources/campaigns/exercise_able_archer.yaml @@ -29,8 +29,8 @@ performance: 1 recommended_start_date: 1983-11-09 version: "10.7" settings: - restrict_weapons_by_date: true hercules: true + squadron_start_full: true squadrons: #Bodo 7: @@ -43,17 +43,12 @@ squadrons: secondary: any aircraft: - F-5E Tiger II - size: 12 + size: 8 - primary: TARCAP secondary: any aircraft: - F-15C Eagle - size: 12 - - primary: BAI - secondary: any - aircraft: - - F-4E Phantom II - size: 12 + size: 8 - primary: Refueling aircraft: - KC-135 Stratotanker @@ -70,12 +65,17 @@ squadrons: secondary: any aircraft: - F-16CM Fighting Falcon (Block 50) - size: 16 + size: 12 + - primary: CAS + secondary: any + aircraft: + - OH-58D(R) Kiowa Warrior + size: 4 - primary: Refueling aircraft: - KC-130 size: 1 - - primary: Air Assault + - primary: Transport secondary: any aircraft: - C-130J-30 Super Hercules @@ -87,7 +87,7 @@ squadrons: secondary: any aircraft: - MiG-21bis Fishbed-N - size: 12 + size: 8 - primary: BAI secondary: any aircraft: @@ -97,7 +97,7 @@ squadrons: secondary: any aircraft: - Mirage-F1CE - size: 12 + size: 8 - primary: Air Assault secondary: any aircraft: @@ -116,7 +116,7 @@ squadrons: secondary: air-to-ground aircraft: - AJS-37 Viggen - size: 10 + size: 8 #Blue Carrier Blue-CV: - primary: TARCAP @@ -127,7 +127,7 @@ squadrons: - primary: AEW&C aircraft: - E-2C Hawkeye - size: 4 + size: 2 - primary: BAI secondary: air-to-ground aircraft: @@ -136,26 +136,15 @@ squadrons: - primary: Air Assault secondary: any aircraft: - - UH-60L - UH-60A - size: 4 + size: 4 #Blue LHA Blue-LHA: - primary: DEAD secondary: air-to-ground aircraft: - AV-8B Harrier II Night Attack - size: 16 - - primary: Air Assault - secondary: any - aircraft: - - UH-1H Iroquois - size: 2 - - primary: Escort - secondary: any - aircraft: - - AH-1J SeaCobra - size: 2 + size: 20 #RAF Fairford Bombers from RAF Fairford: - primary: Strike @@ -174,7 +163,7 @@ squadrons: secondary: air-to-ground aircraft: - Su-17M4 Fitter-K - size: 6 + size: 4 #Severomorsk-1 8: - primary: BARCAP @@ -191,7 +180,7 @@ squadrons: secondary: any aircraft: - MiG-27K Flogger-J2 - size: 16 + size: 12 #Severomorsk-3 6: - primary: Refueling @@ -202,7 +191,7 @@ squadrons: secondary: any aircraft: - Su-24M Fencer-D - size: 20 + size: 12 - primary: TARCAP secondary: any aircraft: @@ -212,19 +201,19 @@ squadrons: secondary: any aircraft: - Mi-8MTV2 Hip - size: 4 + size: 2 #Olenya 9: - primary: Strike secondary: any aircraft: - Tu-95MS Bear-H - size: 16 + size: 8 - primary: Strike secondary: any aircraft: - Tu-22M3 Backfire-C - size: 16 + size: 8 - primary: Refueling aircraft: - IL-78M @@ -245,7 +234,7 @@ squadrons: secondary: any aircraft: - MiG-21bis Fishbed-N - size: 16 + size: 12 #Murmansk International 12: - primary: AEW&C diff --git a/resources/campaigns/exercise_bright_star.miz b/resources/campaigns/exercise_bright_star.miz index 577cc290..e3ecc087 100644 Binary files a/resources/campaigns/exercise_bright_star.miz and b/resources/campaigns/exercise_bright_star.miz differ diff --git a/resources/campaigns/exercise_bright_star.yaml b/resources/campaigns/exercise_bright_star.yaml index bd8aaf08..bcf0be69 100644 --- a/resources/campaigns/exercise_bright_star.yaml +++ b/resources/campaigns/exercise_bright_star.yaml @@ -11,31 +11,32 @@ description: Exercise Bright Star. The exercise has grown over the years to incorporate a wide array of international participants. The 2025 iteration of Exercise Bright Star features eight participating nations alongside - fourteen observer nations.- For the 2025 exercises, the United States, along with a select contingent + fourteen observer nations.
+For the 2025 exercises, the United States, along with a select contingent from the exercise coalition, will take on the role of a hypothetical adversarial nation, dubbed Orangeland. This scenario is designed to simulate a mock invasion against Cairo, and presents a valuable opportunity for participating nations to refine their joint operational - capabilities and improve logistical and tactical interoperability.
- A historic addition to Exercise Bright Star 2025 is the participation of + capabilities and improve logistical and tactical interoperability.
+A historic addition to Exercise Bright Star 2025 is the participation of Israel as an observer nation. This marks a significant milestone, given the complex historical relations in the region, and symbolises a step forward in regional collaboration and military diplomacy. Israel's role, hosting the aggressor faction of the exercise coalition at its airfields, not only demonstrates the broadening scope of the exercise but also highlights the value of fostering an environment of mutual cooperation and shared - security objectives.
- Note: There is no overland supply route between Melez and + security objectives.
+Note: There is no overland supply route between Melez and Wadi al Jandali due to the simulated destruction of the Al Salam Bridge spanning the Suez Canal. Consequently, ground units will have to be ferried across by - air during the exercise. + air during the exercise.
miz: exercise_bright_star.miz performance: 1 recommended_start_date: 2025-09-01 version: "10.7" settings: hercules: true + squadron_start_full: true squadrons: Blue CV-1: - primary: SEAD @@ -56,12 +57,12 @@ squadrons: secondary: air-to-ground aircraft: - B-52H Stratofortress - size: 8 + size: 4 - primary: Strike secondary: air-to-ground aircraft: - B-1B Lancer - size: 8 + size: 4 # Ovda 10: - primary: CAS @@ -73,7 +74,7 @@ squadrons: secondary: any aircraft: - F-15C Eagle - size: 20 + size: 16 - primary: OCA/Runway secondary: any aircraft: @@ -83,19 +84,14 @@ squadrons: secondary: any aircraft: - JF-17 Thunder - size: 12 + size: 16 # Ramon Airbase 9: - - primary: BARCAP - secondary: any - aircraft: - - Mirage 2000C - size: 12 - primary: DEAD secondary: any aircraft: - F-16CM Fighting Falcon (Block 50) - size: 20 + size: 16 - primary: BAI secondary: any aircraft: @@ -104,7 +100,6 @@ squadrons: - primary: Air Assault secondary: any aircraft: - - UH-60L - UH-60A size: 4 # Ben-Gurion @@ -114,7 +109,7 @@ squadrons: aircraft: - C-130J-30 Super Hercules - C-130 - size: 8 + size: 2 - primary: AEW&C aircraft: - E-3A @@ -184,7 +179,7 @@ squadrons: aircraft: - C-130J-30 Super Hercules - C-130 - size: 8 + size: 2 - primary: BARCAP secondary: air-to-air aircraft: diff --git a/resources/campaigns/exercise_vegas_nerve.miz b/resources/campaigns/exercise_vegas_nerve.miz index 6570446d..f56c3b45 100644 Binary files a/resources/campaigns/exercise_vegas_nerve.miz and b/resources/campaigns/exercise_vegas_nerve.miz differ diff --git a/resources/campaigns/exercise_vegas_nerve.yaml b/resources/campaigns/exercise_vegas_nerve.yaml index 89001659..0a815e0f 100644 --- a/resources/campaigns/exercise_vegas_nerve.yaml +++ b/resources/campaigns/exercise_vegas_nerve.yaml @@ -16,6 +16,9 @@ miz: exercise_vegas_nerve.miz performance: 1 recommended_start_date: 2011-02-24 version: "10.7" +settings: + hercules: true + squadron_start_full: true squadrons: Bombers from Minot AFB: - primary: Strike @@ -35,16 +38,12 @@ squadrons: secondary: any aircraft: - F-15C Eagle - size: 12 + size: 16 - primary: Strike secondary: air-to-ground aircraft: - F-15E Strike Eagle (Suite 4+) - size: 12 - - primary: AEW&C - aircraft: - - E-3A - size: 1 + size: 8 # Tonopah Test Range 18: - primary: BAI @@ -56,7 +55,12 @@ squadrons: secondary: any aircraft: - AH-64D Apache Longbow - size: 10 + size: 2 + - primary: CAS + secondary: any + aircraft: + - OH-58D(R) Kiowa Warrior + size: 2 - primary: DEAD secondary: air-to-ground aircraft: @@ -67,24 +71,28 @@ squadrons: aircraft: - F-16CM Fighting Falcon (Block 50) size: 24 - - primary: Air Assault - secondary: air-to-ground + - primary: AEW&C aircraft: - - UH-60L - - UH-60A - size: 2 + - E-3A + size: 1 + - primary: Transport + secondary: any + aircraft: + - C-130J-30 Super Hercules + - CH-47D + size: 1 # Groom Lake 2: - primary: Escort secondary: air-to-air aircraft: - J-11A Flanker-L - size: 20 + size: 16 - primary: BAI secondary: air-to-ground aircraft: - Su-25T Frogfoot - size: 20 + size: 12 # Creech 1: - primary: CAS @@ -113,16 +121,16 @@ squadrons: secondary: air-to-ground aircraft: - Su-24M Fencer-D - size: 20 + size: 16 - primary: DEAD secondary: air-to-ground aircraft: - Su-34 Fullback - size: 20 + size: 16 # Boulder City Airport 6: - primary: SEAD Escort secondary: any aircraft: - FC-1 Fierce Dragon - size: 20 + size: 16 diff --git a/resources/campaigns/final_countdown_2.miz b/resources/campaigns/final_countdown_2.miz index 835d69f5..378a6387 100644 Binary files a/resources/campaigns/final_countdown_2.miz and b/resources/campaigns/final_countdown_2.miz differ diff --git a/resources/campaigns/final_countdown_2.yaml b/resources/campaigns/final_countdown_2.yaml index d08f7fa0..1273d5d1 100644 --- a/resources/campaigns/final_countdown_2.yaml +++ b/resources/campaigns/final_countdown_2.yaml @@ -21,6 +21,8 @@ miz: final_countdown_2.miz performance: 2 recommended_start_date: 1944-06-06 version: "10.7" +settings: + squadron_start_full: true squadrons: #Blue CV (90) Blue-CV: @@ -50,7 +52,6 @@ squadrons: - primary: Air Assault secondary: any aircraft: - - UH-60L - UH-60A size: 6 #Stoney Cross (39) diff --git a/resources/campaigns/grabthars_hammer.miz b/resources/campaigns/grabthars_hammer.miz index 06af6fa5..82e68ccb 100644 Binary files a/resources/campaigns/grabthars_hammer.miz and b/resources/campaigns/grabthars_hammer.miz differ diff --git a/resources/campaigns/grabthars_hammer.yaml b/resources/campaigns/grabthars_hammer.yaml index 77c2a3dd..6118953f 100644 --- a/resources/campaigns/grabthars_hammer.yaml +++ b/resources/campaigns/grabthars_hammer.yaml @@ -7,7 +7,7 @@ recommended_enemy_faction: Russia 2010 description:An Argentinean extremist group has contracted the Sons of Warvan (SoW), an unusually well-equipped PMC with close ties to the Russian government, to - construct a beryllium bomb at the secret Omega 13 production facility in + construct a beryllium bomb at the secret Omega-13 production facility in Ushuaia for use in its ongoing conflict with Chile. United States military forces have established a foothold at San Julian. While the SoW are distracted up north, it is up to the Marines to launch an assault upon Ushuaia from an LHA @@ -19,6 +19,7 @@ recommended_start_date: 1999-12-25 version: "10.7" settings: hercules: true + squadron_start_full: true squadrons: #Mount Pleasant 2: @@ -41,12 +42,17 @@ squadrons: secondary: any aircraft: - AH-64D Apache Longbow - size: 8 + size: 4 + - primary: CAS + secondary: any + aircraft: + - OH-58D(R) Kiowa Warrior + size: 4 - primary: Refueling aircraft: - KC-135 Stratotanker size: 1 - - primary: Air Assault + - primary: Transport secondary: any aircraft: - C-130J-30 Super Hercules @@ -70,12 +76,12 @@ squadrons: secondary: any aircraft: - F/A-18C Hornet (Lot 20) - size: 40 + size: 32 - primary: DEAD secondary: air-to-ground aircraft: - S-3B Viking - size: 20 + size: 16 - primary: AEW&C aircraft: - E-2C Hawkeye @@ -87,7 +93,6 @@ squadrons: - primary: Air Assault secondary: any aircraft: - - UH-60L - UH-60A size: 4 # Blue LHA @@ -107,18 +112,18 @@ squadrons: secondary: air-to-ground aircraft: - B-52H Stratofortress - size: 12 + size: 4 - primary: OCA/Runway secondary: air-to-ground aircraft: - B-1B Lancer - size: 12 + size: 4 #El Calafate 14: - primary: Transport aircraft: - Mi-8MTV2 Hip - size: 10 + size: 8 #Rio Gallegros 5: - primary: Escort diff --git a/resources/campaigns/operation_aegean_aegis.miz b/resources/campaigns/operation_aegean_aegis.miz index b7d92525..debaff32 100644 Binary files a/resources/campaigns/operation_aegean_aegis.miz and b/resources/campaigns/operation_aegean_aegis.miz differ diff --git a/resources/campaigns/operation_aegean_aegis.yaml b/resources/campaigns/operation_aegean_aegis.yaml index 9a04fbcd..ef9daeb9 100644 --- a/resources/campaigns/operation_aegean_aegis.yaml +++ b/resources/campaigns/operation_aegean_aegis.yaml @@ -38,12 +38,14 @@ description:
miz: operation_aegean_aegis.miz performance: 1 -recommended_start_date: 2017-04-20 +recommended_start_date: 2013-04-20 recommended_player_money: 1000 recommended_enemy_money: 0 recommended_player_income_multiplier: 1.0 recommended_enemy_income_multiplier: 0.0 version: "10.7" +settings: + squadron_start_full: true squadrons: #Tarawa Class LHA Blue-LHA: @@ -51,7 +53,12 @@ squadrons: secondary: any aircraft: - AH-64D Apache Longbow - size: 12 + size: 8 + - primary: CAS + secondary: any + aircraft: + - OH-58D(R) Kiowa Warrior + size: 4 - primary: DEAD secondary: air-to-ground aircraft: @@ -79,7 +86,7 @@ squadrons: - primary: CAS secondary: air-to-ground aircraft: - - OH-58D Kiowa Warrior + - OH-58D(R) Kiowa Warrior size: 4 - primary: Transport secondary: any diff --git a/resources/campaigns/operation_allied_sword.yaml b/resources/campaigns/operation_allied_sword.yaml index 2d32f7ba..dc42ba6f 100644 --- a/resources/campaigns/operation_allied_sword.yaml +++ b/resources/campaigns/operation_allied_sword.yaml @@ -13,6 +13,7 @@ recommended_player_faction: - en_US aircrafts: - F-4E Phantom II + - F-4E-45MC Phantom II - F-15C Eagle - F-15E Strike Eagle - F-15E Strike Eagle (Suite 4+) @@ -261,7 +262,9 @@ squadrons: - primary: SEAD secondary: any aircraft: + - F-4E-45MC Phantom II - 201th Squadron + size: 16 - primary: Refueling aircraft: - VMGR-352 @@ -327,6 +330,7 @@ squadrons: - primary: BARCAP secondary: air-to-air aircraft: + - MiG-21bis Fishbed-N - MiG-29A Fulcrum-A size: 12 - primary: Strike @@ -383,6 +387,7 @@ squadrons: - primary: BARCAP secondary: air-to-air aircraft: + - MiG-23MLD Flogger-K - Su-30 Flanker-C - primary: CAS secondary: air-to-ground @@ -394,6 +399,7 @@ squadrons: - primary: TARCAP secondary: air-to-air aircraft: + - MiG-25PD Foxbat-E - MiG-23ML Flogger-G - primary: BARCAP secondary: any @@ -403,6 +409,7 @@ squadrons: - primary: Strike secondary: air-to-ground aircraft: + - Su-24M Fencer-D - Su-34 Fullback - primary: Transport secondary: air-to-ground diff --git a/resources/campaigns/operation_gazelle.miz b/resources/campaigns/operation_gazelle.miz index 847b9e72..1787bb8f 100644 Binary files a/resources/campaigns/operation_gazelle.miz and b/resources/campaigns/operation_gazelle.miz differ diff --git a/resources/campaigns/operation_gazelle.yaml b/resources/campaigns/operation_gazelle.yaml index 045b2635..0dcbbc83 100644 --- a/resources/campaigns/operation_gazelle.yaml +++ b/resources/campaigns/operation_gazelle.yaml @@ -23,6 +23,7 @@ version: "10.7" settings: a4_skyhawk: true hercules: true + squadron_start_full: true squadrons: # Ben-Gurion 24: diff --git a/resources/campaigns/operation_noisy_cricket.miz b/resources/campaigns/operation_noisy_cricket.miz index 78096bea..ef8a7445 100644 Binary files a/resources/campaigns/operation_noisy_cricket.miz and b/resources/campaigns/operation_noisy_cricket.miz differ diff --git a/resources/campaigns/operation_noisy_cricket.yaml b/resources/campaigns/operation_noisy_cricket.yaml index 93076ab1..323b79f7 100644 --- a/resources/campaigns/operation_noisy_cricket.yaml +++ b/resources/campaigns/operation_noisy_cricket.yaml @@ -32,6 +32,7 @@ recommended_player_income_multiplier: 0.2 recommended_enemy_income_multiplier: 0.2 settings: hercules: true + squadron_start_full: true version: "10.7" squadrons: Blue CV-1: @@ -42,7 +43,7 @@ squadrons: size: 40 - primary: AEW&C aircraft: - - E-2D Advanced Hawkeye + - E-2C Hawkeye size: 2 - primary: Refueling aircraft: @@ -51,7 +52,6 @@ squadrons: - primary: Air Assault secondary: any aircraft: - - UH-60L - UH-60A size: 4 #Al Minhad AFB (61) @@ -66,12 +66,12 @@ squadrons: secondary: any aircraft: - F-16CM Fighting Falcon (Block 50) - size: 32 + size: 20 - primary: Escort secondary: air-to-air aircraft: - F-15C Eagle - size: 24 + size: 20 #Al Dhafra AFB (251) 4: - primary: Strike @@ -87,12 +87,12 @@ squadrons: secondary: any aircraft: - F-15E Strike Eagle (Suite 4+) - size: 20 + size: 16 - primary: DEAD secondary: air-to-ground aircraft: - AV-8B Harrier II Night Attack - size: 20 + size: 16 #Bandar Abbas Intl (51) 2: - primary: SEAD @@ -114,7 +114,7 @@ squadrons: size: 12 #Abu Musa Island (8) 1: - - primary: DEAD + - primary: SEAD Escort secondary: air-to-ground aircraft: - Su-25T Frogfoot @@ -134,9 +134,10 @@ squadrons: #Shiraz Intl (122) 19: - primary: Transport + secondary: any aircraft: - IL-76MD - size: 5 + size: 4 - primary: BARCAP secondary: air-to-air aircraft: diff --git a/resources/campaigns/operation_peace_spring.miz b/resources/campaigns/operation_peace_spring.miz index 19ba89aa..cedd7dff 100644 Binary files a/resources/campaigns/operation_peace_spring.miz and b/resources/campaigns/operation_peace_spring.miz differ diff --git a/resources/campaigns/operation_peace_spring.yaml b/resources/campaigns/operation_peace_spring.yaml index 66d7b331..34ca8212 100644 --- a/resources/campaigns/operation_peace_spring.yaml +++ b/resources/campaigns/operation_peace_spring.yaml @@ -20,18 +20,14 @@ recommended_start_date: 2019-12-23 version: "10.7" settings: hercules: true + squadron_start_full: true squadrons: Blue CV-1: - primary: SEAD secondary: any aircraft: - F/A-18C Hornet (Lot 20) - size: 40 - - primary: BAI - secondary: air-to-ground - aircraft: - - S-3B Viking - size: 20 + size: 24 - primary: AEW&C aircraft: - E-2D Advanced Hawkeye @@ -67,12 +63,6 @@ squadrons: aircraft: - F-15C Eagle size: 20 - - primary: Air Assault - secondary: any - aircraft: - - UH-60L - - UH-60A - size: 4 # Ramat David 30: - primary: BAI @@ -90,6 +80,16 @@ squadrons: aircraft: - AH-64D Apache Longbow size: 4 + - primary: CAS + secondary: any + aircraft: + - OH-58D(R) Kiowa Warrior + size: 4 + - primary: Air Assault + secondary: any + aircraft: + - UH-60A + size: 4 # Damascus 7: - primary: Strike @@ -107,7 +107,7 @@ squadrons: - primary: CAS secondary: any aircraft: - - OH-58D Kiowa Warrior + - OH-58D(R) Kiowa Warrior - Mi-24P Hind-F size: 4 # Tiyas @@ -145,7 +145,7 @@ squadrons: - primary: Strike secondary: air-to-ground aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II - Tu-22M3 Backfire-C size: 16 - primary: AEW&C @@ -161,6 +161,6 @@ squadrons: - primary: Escort secondary: any aircraft: - - F-4E Phantom II + - F-4E-45MC Phantom II - MiG-21bis Fishbed-N size: 16 \ No newline at end of file diff --git a/resources/campaigns/operation_vectrons_claw.miz b/resources/campaigns/operation_vectrons_claw.miz index 79ca542c..09914baf 100644 Binary files a/resources/campaigns/operation_vectrons_claw.miz and b/resources/campaigns/operation_vectrons_claw.miz differ diff --git a/resources/campaigns/operation_vectrons_claw.yaml b/resources/campaigns/operation_vectrons_claw.yaml index b1173a2e..d9a7e7df 100644 --- a/resources/campaigns/operation_vectrons_claw.yaml +++ b/resources/campaigns/operation_vectrons_claw.yaml @@ -5,19 +5,30 @@ authors: Starfire recommended_player_faction: USA 2005 recommended_enemy_faction: Russia 2010 description: -Background - The United Nations Observer Mission in Georgia (UNOMIG) has been actively monitoring the ceasefire agreement between Georgia and its breakaway region of Abkhazia. Recent developments have escalated tensions in the area, leading to a precarious situation for UN observers and affiliated personnel. -
Current Situation - UNOMIG observers, along with a contingent of international troops, have found themselves isolated due to the intervention of Russian forces supporting the separatist ambitions of Abkhazia. The UNOMIG headquarters located in Sukhumi has fallen into enemy hands. A smaller group based at the Zugdidi Sector Headquarters now faces the daunting task of navigating to safety with the aid of offshore naval air support. -
Objective - The immediate goal is to orchestrate a strategic withdrawal of UN forces to the coastline, leveraging support from US naval aircraft positioned offshore. The critical mission objective is the rapid recapture of Sukhumi. This action is essential to enable the landing of friendly ground forces and the ferrying in of land-based sqwuadrons from Incirlik. -
Operational Constraints - It is crucial to note that reinforcement of ground units will not be possible until Sukhumi is successfully recaptured. This recapture can either be performed using existing UN personnel and ground vehicles, or via heliborne assault troop insertion. -
Assets & Support - Available assets include two Huey helicopters for close air support. Commanders may opt to initiate the operation with light vehicles, such as Humvees, employing breakthrough tactics to avoid direct confrontations with enemy forces. Alternatively, the use of heavier ground units is an option for commanders seeking a more conventional combat engagement. Upon the recapture of Sukhumi, additional squadrons from Incirlik, Turkey, will become operational. -
Secondary Objective - Consider prioritising the capture of the Batumi airfield, located to the south, for its strategic value as a forward operating base. Commanders should be aware of the inherent risks, as the airfield is relatively small and lacks air defence systems, posing a significant threat to any stationed aircraft.
+The United Nations Observer Mission in Georgia (UNOMIG) has been actively + monitoring the ceasefire agreement between Georgia and its breakaway region + of Abkhazia. However, recent developments have escalated tensions, leading + to a precarious situation for the UN observers. Along with a small contingent + of international troops, they have found themselves isolated due to the + intervention of Russian forces supporting Abkhazia's separatist ambitions. + The UNOMIG headquarters in Sukhumi has fallen into enemy hands, leaving a + small group based at the Zugdidi Sector Headquarters facing the daunting + task of navigating to safety with the aid of close air support.
+The immediate goal is to orchestrate a strategic withdrawal of UN forces to + the coastline, leveraging support from US naval aircraft positioned offshore + as well as US Air force squadrons newly arrived at Tbilisi. Commanders may opt + to begin the operation with light vehicles, employing breakthrough tactics to + avoid direct confrontations with enemy forces. Alternatively, the use of + heavier ground units is an option for commanders seeking a more conventional + combat engagement. C-17 Globemasters stand ready bring in additional ground + units from Incirlik to reinforce existing troops, upon recapture of Sukhumi.
miz: operation_vectrons_claw.miz performance: 1 recommended_start_date: 2008-08-08 version: "10.7" -control_points: - Squadrons from Incirlik: - ferry_only: true +settings: + hercules: true + squadron_start_full: true squadrons: Blue CV-1: - primary: BARCAP @@ -29,12 +40,12 @@ squadrons: secondary: any aircraft: - F/A-18C Hornet (Lot 20) - size: 60 - - primary: CAS + size: 24 + - primary: BAI secondary: air-to-ground aircraft: - S-3B Viking - size: 8 + size: 12 - primary: AEW&C aircraft: - E-2C Hawkeye @@ -42,30 +53,46 @@ squadrons: - primary: Refueling aircraft: - S-3B Tanker - size: 2 + size: 4 - primary: Air Assault secondary: any aircraft: - - UH-60L - UH-60A - size: 2 + size: 4 Blue LHA: - primary: BAI secondary: air-to-ground aircraft: - AV-8B Harrier II Night Attack size: 20 - Squadrons from Incirlik: + #Tbilisi-Lochini + 29: + - primary: OCA/Runway + secondary: air-to-ground + aircraft: + - B-1B Lancer + size: 4 + - primary: Refueling + aircraft: + - KC-135 Stratotanker + size: 2 + - primary: CAS + secondary: air-to-ground + aircraft: + - A-10C Thunderbolt II (Suite 7) + size: 4 - primary: CAS secondary: any aircraft: - AH-64D Apache Longbow size: 4 - primary: CAS - secondary: air-to-ground + secondary: any aircraft: - - A-10C Thunderbolt II (Suite 7) - size: 6 + - OH-58D(R) Kiowa Warrior + size: 4 + #Vaziani + 31: - primary: DEAD secondary: any aircraft: @@ -75,82 +102,109 @@ squadrons: secondary: any aircraft: - F-15E Strike Eagle (Suite 4+) - size: 8 - - primary: Refueling + size: 12 + - primary: Escort + secondary: any aircraft: - - KC-135 Stratotanker - size: 1 + - F-15C Eagle + size: 12 + - primary: Transport + secondary: any + aircraft: + - C-130J-30 Super Hercules + - C-130 + size: 2 Bombers from RAF Fairford: - primary: Anti-ship secondary: air-to-ground aircraft: - B-52H Stratofortress size: 4 - Bombers from Base Aérea de Morón: - - primary: OCA/Runway - secondary: air-to-ground - aircraft: - - B-1B Lancer - size: 4 - #FARPs + #OWNFOR FARP UNOMIG Sector HQ: - primary: Transport secondary: any aircraft: - UH-1H Iroquois size: 2 + #OPFOR FARP Dzhugba: - - primary: CAS + - primary: Air Assault secondary: any aircraft: - Mi-24P Hind-F size: 4 #Sukhumi-Babushara 20: - - primary: TARCAP - secondary: air-to-air - aircraft: - - MiG-29S Fulcrum-C - size: 8 - - primary: BAI + - primary: SEAD Sweep secondary: air-to-ground aircraft: - Su-25T Frogfoot - size: 12 + size: 20 #Sochi-Adler 18: - - primary: Escort + - primary: TARCAP secondary: air-to-air aircraft: - Su-27 Flanker-B size: 8 - - primary: SEAD - secondary: air-to-ground + - primary: SEAD Escort + secondary: + - BAI + - SEAD + - DEAD + - OCA/Runway + - SEAD Sweep aircraft: - Su-24M Fencer-D size: 20 - - primary: DEAD - secondary: air-to-ground + - primary: BAI + secondary: + - SEAD + - DEAD + - OCA/Runway + - SEAD Escort + - SEAD Sweep aircraft: - Su-34 Fullback size: 20 + #Mineralnye Vody + 26: + - primary: Strike + secondary: air-to-ground + aircraft: + - Tu-95MS Bear-H + size: 12 + - primary: Escort + secondary: air-to-air + aircraft: + - MiG-29S Fulcrum-C + size: 12 #Maykop-Khanskaya 16: - - primary: Strike + - primary: DEAD secondary: air-to-ground aircraft: - Tu-22M3 Backfire-C size: 20 #Anapa-Vityazevo 12: - - primary: Strike - secondary: air-to-ground + - primary: AEW&C aircraft: - - Tu-95MS Bear-H - size: 16 + - A-50 + size: 2 + - primary: Transport + secondary: any + aircraft: + - IL-76MD + size: 2 + - primary: Refueling + aircraft: + - IL-78M + size: 2 Red CV: - primary: BARCAP secondary: any aircraft: - SU-33 Flanker-D - size: 16 \ No newline at end of file + size: 12 \ No newline at end of file diff --git a/resources/campaigns/operation_velvet_thunder.miz b/resources/campaigns/operation_velvet_thunder.miz index 66176d01..a465cb97 100644 Binary files a/resources/campaigns/operation_velvet_thunder.miz and b/resources/campaigns/operation_velvet_thunder.miz differ diff --git a/resources/campaigns/operation_velvet_thunder.yaml b/resources/campaigns/operation_velvet_thunder.yaml index 8a4cd9c1..1355ee09 100644 --- a/resources/campaigns/operation_velvet_thunder.yaml +++ b/resources/campaigns/operation_velvet_thunder.yaml @@ -17,6 +17,7 @@ description: A-4 Skyhawk, OV-10A, and C-130J aircraft mods active. The C-101CC has also been included as a stand-in for the Cessna A-37 Dragonfly in order to provide a CAS platform of roughly equivalent combat capability. + Note: Airbase threat range should be set to 25 for this campaign. miz: operation_velvet_thunder.miz performance: 1 recommended_start_date: 1970-11-29 @@ -27,6 +28,7 @@ settings: a4_skyhawk: true hercules: true ov10a_bronco: true + squadron_start_full: true squadrons: #Andersen AFB 6: diff --git a/resources/campaigns/syria_TheLongRoadToH3.miz b/resources/campaigns/syria_TheLongRoadToH3.miz new file mode 100644 index 00000000..160886a1 Binary files /dev/null and b/resources/campaigns/syria_TheLongRoadToH3.miz differ diff --git a/resources/campaigns/syria_TheLongRoadToH3.yaml b/resources/campaigns/syria_TheLongRoadToH3.yaml new file mode 100644 index 00000000..2f28069d --- /dev/null +++ b/resources/campaigns/syria_TheLongRoadToH3.yaml @@ -0,0 +1,377 @@ +--- +name: Syria - The Long Road to H3 +theater: Syria +authors: tmz42 (original campaign by Plob) +description: +From Incirlik to H-3, repel the alliance between Iraq and Syria.
+This campaign is based on and meant as a lighter alternative to Syria - Full Map.
+recommended_player_faction: NATO OIF +recommended_enemy_faction: + country: Combined Joint Task Forces Red + name: Iraq-Syria 2000s + authors: tmz42 + description:Iraq - Syria fictional alliance in the 2000s.
+ aircrafts: + - IL-76MD + - L-39ZA Albatros + - MiG-21bis Fishbed-N + - Mi-24V Hind-E + - Mi-24P Hind-F + - Mi-8MTV2 Hip + - MiG-19P Farmer-B + - MiG-23MLD Flogger-K + - MiG-25PD Foxbat-E + - MiG-29A Fulcrum-A + - SA 342L Gazelle + - Su-22M4 Fitter-K + - Su-24M Fencer-D + - Tu-22M3 Backfire-C + - Su-25 Frogfoot + - Mirage-F1EQ + - H-6J Badger + awacs: + - A-50 + tankers: + - IL-78M + frontline_units: + - BMP-1 + - BMP-2 + - BTR-80 + - BRDM-2 + - Cobra + - MT-LB + - T-55A + - T-72B with Kontakt-1 ERA + - T-90A + - ZSU-57-2 'Sparka' + artillery_units: + - BM-21 Grad + - 2S1 Gvozdika + - 2S9 Nona-S + logistics_units: + - Truck Ural-375 + - LUV UAZ-469 Jeep + infantry_units: + - Paratrooper AKS + - Infantry AK-74 Rus + - Paratrooper RPG-16 + - MANPADS SA-18 Igla-S "Grouse" + preset_groups: + - SA-5/S-200 + - SA-2/S-75 + - SA-2/S-75 V-759/5V23 + - SA-3/S-125 + - SA-3/S-125 V-601P/5V27 + - SA-6 + - SA-11 + - SA-10/S-300PS + - SA-12/S-300V + - Cold-War-Flak + - Silkworm + - KS-19/SON-9 + naval_units: + - Corvette 1124.4 Grish + - Corvette 1241.1 Molniya + - FAC La Combattante IIa + - Frigate 1135M Rezky + air_defense_units: + - SAM P19 "Flat Face" SR (SA-2/3) + - EWR 1L13 + - EWR 55G6 + - SAM SA-8 Osa "Gecko" TEL + - SA-9 Strela + - SA-13 Gopher (9K35 Strela-10M3) + - SA-19 Grison (2K22 Tunguska) + - SA-15 Tor + - ZSU-57-2 'Sparka' + - AAA ZU-23 Closed Emplacement + - ZU-23 on Ural-375 + - ZSU-23-4 Shilka + missiles: + - SSM SS-1C Scud-B + helicopter_carrier_names: [] + requirements: {} + carrier_names: [] +recommended_start_date: 2005-06-05 +miz: syria_TheLongRoadToH3.miz +performance: 2 +version: 10.7 +advanced_iads: true +settings: + # Set mission duration to 45 minutes + desired_player_mission_duration: 45 + # Set max frontline width to 30 km + max_frontline_width: 30 +squadrons: +####################### BLUEFOR + Blue CV: + # Tomcat F-14B - Swordsmen + - primary: BARCAP + secondary: any + aircraft: + - VF-32 + - F-14B Tomcat + size: 14 + # Tomcat F-14A - Black Aces + - primary: BARCAP + secondary: any + aircraft: + - VF-41 + - F-14A Tomcat (Block 135-GR Late) + size: 14 + # Hornet - Golden Dragons + - primary: SEAD + secondary: any + aircraft: + - VFA-192 + - F/A-18C Hornet (Lot 20) + # Hornet - Bulls + - primary: DEAD + secondary: any + aircraft: + - VFA-37 + - F/A-18C Hornet (Lot 20) + - primary: Refueling + aircraft: + - S-3B Tanker + size: 4 + - primary: BAI + secondary: air-to-ground + aircraft: + - S-3B Viking + size: 8 + - primary: AEW&C + aircraft: + - E-2C Hawkeye + size: 2 + Blue LHA: + - primary: BAI + secondary: air-to-ground + aircraft: + - AV-8B Harrier II Night Attack + size: 10 + - primary: Air Assault + secondary: air-to-ground + aircraft: + - UH-1H Iroquois + size: 4 + - primary: BAI + secondary: air-to-ground + aircraft: + - AH-1W SuperCobra + size: 6 + # Incirlik + 16: + - primary: Refueling + aircraft: + - KC-135 Stratotanker + size: 2 + - primary: Refueling + aircraft: + - KC-135 Stratotanker + size: 2 + - primary: AEW&C + aircraft: + - E-3A + size: 2 + - primary: Transport + secondary: any + aircraft: + - C-130J-30 Super Hercules + - C-130 + size: 8 + # Viper Warhawks + - primary: SEAD + secondary: any + aircraft: + - 480th FS + - F-16CM Fighting Falcon (Block 50) + size: 12 + - primary: Strike + secondary: air-to-ground + aircraft: + - B-1B Lancer + size: 4 + - primary: Strike + secondary: any + aircraft: + - 494th Fighter Squadron + - F-15E Strike Eagle (Suite 4+) + size: 12 + - primary: BAI + secondary: air-to-ground + aircraft: + - AV-8B Harrier II Night Attack + size: 12 + # Hornet - Thunderbolts + - primary: DEAD + secondary: any + aircraft: + - VMFA-251 + size: 12 + # Gaziantep + 11: + - primary: CAS + secondary: air-to-ground + aircraft: + - UH-1H Iroquois + size: 4 + - primary: CAS + secondary: air-to-ground + aircraft: + - AH-64D Apache Longbow + size: 8 +####################### REDFOR + Red CV: + - primary: BARCAP + secondary: any + aircraft: + - Su-33 Flanker-D + size: 12 + # Aleppo - 29 + 27: + - primary: BARCAP + secondary: any + aircraft: + - MiG-19P Farmer-B + - MiG-23MLD Flogger-K + # Tabqa - 29 + 37: + - primary: CAS + secondary: air-to-ground + aircraft: + - L-39ZA Albatros + - Su-25 Frogfoot + size: 12 + - primary: BAI + secondary: air-to-ground + aircraft: + - Su-22M4 Fitter-K + - Su-24M Fencer-D + size: 8 + - primary: BARCAP + secondary: air-to-air + aircraft: + - MiG-23MLD Flogger-K + - MiG-29S Fulcrum-C + - primary: CAS + secondary: air-to-ground + aircraft: + - Mi-24P Hind-F + size: 2 + # Al-Tanf - 2 + 63: + - primary: CAS + secondary: air-to-ground + aircraft: + - Mi-24P Hind-F + size: 2 +# Al Quasyr - 34 + 3: + - primary: CAS + secondary: air-to-ground + aircraft: + - Mi-24P Hind-F + size: 2 + - primary: BARCAP + secondary: air-to-air + aircraft: + - MiG-21bis Fishbed-N + - MiG-23MLD Flogger-K + size: 12 + - primary: Strike + secondary: air-to-ground + aircraft: + - Su-22M4 Fitter-K + - Su-24M Fencer-D + size: 12 + # Bassel Al-Assad - 53 + 21: + - primary: CAS + secondary: air-to-ground + aircraft: + - Mi-24P Hind-F + size: 4 + - primary: BARCAP + secondary: air-to-air + aircraft: + - MiG-29A Fulcrum-A + - MiG-29S Fulcrum-C + size: 12 + - primary: Refueling + aircraft: + - IL-78M + size: 2 + - primary: Transport + aircraft: + - IL-76MD + size: 2 + - primary: CAS + secondary: air-to-ground + aircraft: + - SA 342L Gazelle + size: 4 + - primary: Strike + secondary: air-to-ground + aircraft: + - Su-24M Fencer-D + - Su-34 Fullback + size: 6 +# Tiyas - 82 + 39: + - primary: TARCAP + secondary: air-to-air + aircraft: + - MiG-25PD Foxbat-E + size: 12 + - primary: Strike + secondary: air-to-ground + aircraft: + - Su-24M Fencer-D + size: 12 + - primary: AEW&C + aircraft: + - A-50 + size: 2 +# H3 - 68 + 53: + - primary: TARCAP + secondary: air-to-air + aircraft: + - MiG-25PD Foxbat-E + size: 12 + - primary: BARCAP + secondary: any + aircraft: + - Mirage-F1EQ + size: 12 + - primary: Strike + secondary: air-to-ground + aircraft: + - Su-24M Fencer-D + size: 8 + - primary: Strike + secondary: air-to-ground + aircraft: + - H-6J Badger + size: 8 + - primary: CAS + secondary: air-to-ground + aircraft: + - Mi-24P Hind-F + - primary: AEW&C + aircraft: + - A-50 + size: 2 + # Kharab - 11 + 59: + - primary: CAS + secondary: air-to-ground + aircraft: + - Mi-24P Hind-F + size: 4 + - primary: CAS + secondary: air-to-ground + aircraft: + - Mi-8MTV2 Hip + size: 4 \ No newline at end of file diff --git a/resources/customized_payloads/OH58D.lua b/resources/customized_payloads/OH58D.lua new file mode 100644 index 00000000..216f2b7d --- /dev/null +++ b/resources/customized_payloads/OH58D.lua @@ -0,0 +1,101 @@ +local unitPayloads = { + ["name"] = "OH58D", + ["payloads"] = { + [1] = { + ["name"] = "Retribution CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "OH58D_AGM_114_R", + ["num"] = 5, + }, + [2] = { + ["CLSID"] = "OH58D_M3P_L500", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 16, + }, + }, + [2] = { + ["displayName"] = "Retribution DEAD", + ["name"] = "Retribution DEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "OH58D_AGM_114_R", + ["num"] = 5, + }, + [2] = { + ["CLSID"] = "OH58D_AGM_114_L", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 16, + }, + }, + [3] = { + ["displayName"] = "Retribution BAI", + ["name"] = "Retribution BAI", + ["pylons"] = { + [1] = { + ["CLSID"] = "OH58D_AGM_114_R", + ["num"] = 5, + }, + [2] = { + ["CLSID"] = "{M260_APKWS_M151}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 16, + }, + }, + [4] = { + ["displayName"] = "Retribution OCA/Aircraft", + ["name"] = "Retribution OCA/Aircraft", + ["pylons"] = { + [1] = { + ["CLSID"] = "{M260_APKWS_M151}", + ["num"] = 5, + }, + [2] = { + ["CLSID"] = "{M260_APKWS_M151}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 16, + }, + }, + [5] = { + ["displayName"] = "Retribution Escort", + ["name"] = "Retribution Escort", + ["pylons"] = { + [1] = { + ["CLSID"] = "OH58D_AGM_114_R", + ["num"] = 5, + }, + [2] = { + ["CLSID"] = "OH58D_FIM_92_L", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 16, + }, + }, + }, + ["tasks"] = { + [1] = 11, + [2] = 31, + [3] = 32, + [4] = 16, + [5] = 18, + [6] = 35, + [7] = 30, + [8] = 17, + }, + ["unitType"] = "OH58D", +} +return unitPayloads diff --git a/resources/factions/NATO_Desert_Storm.json b/resources/factions/NATO_Desert_Storm.json index 825f8145..cc2b6b66 100644 --- a/resources/factions/NATO_Desert_Storm.json +++ b/resources/factions/NATO_Desert_Storm.json @@ -29,6 +29,7 @@ "F/A-18C Hornet (Lot 20)", "Mirage 2000C", "OH-58D Kiowa Warrior", + "OH-58D(R) Kiowa Warrior", "S-3B Viking", "SA 342L Gazelle", "SA 342M Gazelle", diff --git a/resources/factions/NATO_OIF.json b/resources/factions/NATO_OIF.json index 3a44d35a..1dbf7a63 100644 --- a/resources/factions/NATO_OIF.json +++ b/resources/factions/NATO_OIF.json @@ -31,6 +31,7 @@ "F/A-18C Hornet (Lot 20)", "Mirage 2000C", "OH-58D Kiowa Warrior", + "OH-58D(R) Kiowa Warrior", "S-3B Viking", "SA 342L Gazelle", "SA 342M Gazelle", diff --git a/resources/factions/bluefor_modern.json b/resources/factions/bluefor_modern.json index 6b23ebc0..3df638cb 100644 --- a/resources/factions/bluefor_modern.json +++ b/resources/factions/bluefor_modern.json @@ -49,6 +49,7 @@ "Mi-24P Hind-F", "Mi-8MTV2 Hip", "MiG-29S Fulcrum-C", + "OH-58D(R) Kiowa Warrior", "SA 342L Gazelle", "SA 342M Gazelle", "Su-25T Frogfoot", diff --git a/resources/factions/blufor_late_coldwar.json b/resources/factions/blufor_late_coldwar.json index 9d3f4ef7..de7efce5 100644 --- a/resources/factions/blufor_late_coldwar.json +++ b/resources/factions/blufor_late_coldwar.json @@ -28,6 +28,7 @@ "F-4E Phantom II", "F-4E-45MC Phantom II", "F-5E Tiger II", + "OH-58D(R) Kiowa Warrior", "Mi-8MTV2 Hip", "MiG-21bis Fishbed-N", "Mirage-F1B", diff --git a/resources/factions/germany_1944.json b/resources/factions/germany_1944.json index 83cfa69b..3bf8bc0f 100644 --- a/resources/factions/germany_1944.json +++ b/resources/factions/germany_1944.json @@ -28,7 +28,11 @@ "Sturmgeschütz IV", "Sturmpanzer IV Brummbär" ], - "artillery_units": [], + "artillery_units": [ + "FH Pak 40 75mm", + "FH LeFH-18 105mm", + "SPH Sd.Kfz.124 Wespe 105mm" + ], "logistics_units": [ "LUV Kettenrad", "LUV Kubelwagen 82", @@ -44,7 +48,8 @@ "Freya" ], "naval_units": [ - "Boat Schnellboot type S130" + "Boat Schnellboot type S130", + "U-boat VIIC U-flak" ], "requirements": { "WW2 Asset Pack": "https://www.digitalcombatsimulator.com/en/products/other/wwii_assets_pack/" @@ -58,4 +63,4 @@ "doctrine": "ww2", "building_set": "ww2germany", "cargo_ship": "LST Mk.II" -} \ No newline at end of file +} diff --git a/resources/factions/russia_1990.json b/resources/factions/russia_1990.json index 4480fa26..41cd721d 100644 --- a/resources/factions/russia_1990.json +++ b/resources/factions/russia_1990.json @@ -91,5 +91,5 @@ "Admiral Gorshkov" ], "has_jtac": true, - "jtac_unit": "MQ-9 Reaper" -} \ No newline at end of file + "jtac_unit": "Yak-52" +} diff --git a/resources/factions/russia_2010.json b/resources/factions/russia_2010.json index 7803ca2a..b8859e5f 100644 --- a/resources/factions/russia_2010.json +++ b/resources/factions/russia_2010.json @@ -63,6 +63,7 @@ ], "missiles": [], "preset_groups": [ + "SA-6", "SA-11", "SA-10/S-300PS", "SA-10B/S-300PS", @@ -99,5 +100,5 @@ "Admiral Kuznetsov" ], "has_jtac": true, - "jtac_unit": "MQ-9 Reaper" -} \ No newline at end of file + "jtac_unit": "Yak-52" +} diff --git a/resources/factions/turkey_2005.json b/resources/factions/turkey_2005.json index 749fb643..a4e21cad 100644 --- a/resources/factions/turkey_2005.json +++ b/resources/factions/turkey_2005.json @@ -16,6 +16,7 @@ "F-4E Phantom II", "F-4E-45MC Phantom II", "OH-58D Kiowa Warrior", + "OH-58D(R) Kiowa Warrior", "UH-1H Iroquois", "UH-60A", "UH-60L" diff --git a/resources/factions/usa_1970.json b/resources/factions/usa_1970.json index c5569c00..b5af2894 100644 --- a/resources/factions/usa_1970.json +++ b/resources/factions/usa_1970.json @@ -22,7 +22,7 @@ "C-130J-30 Super Hercules", "UH-1H Iroquois", "AH-1W SuperCobra", - "OH-58D Kiowa Warrior", + "OH-58D(R) Kiowa Warrior", "CH-47D", "CH-53E" ], diff --git a/resources/factions/usa_1990.json b/resources/factions/usa_1990.json index 77e1217d..e23ab278 100644 --- a/resources/factions/usa_1990.json +++ b/resources/factions/usa_1990.json @@ -30,6 +30,7 @@ "F-16D Fighting Falcon (Block 50+)", "F-16D Fighting Falcon (Block 50)", "F/A-18C Hornet (Lot 20)", + "OH-58D(R) Kiowa Warrior", "S-3B Viking", "SH-60B Seahawk", "UH-1H Iroquois", diff --git a/resources/factions/usa_2005.json b/resources/factions/usa_2005.json index 1f0bc0de..b678f3ec 100644 --- a/resources/factions/usa_2005.json +++ b/resources/factions/usa_2005.json @@ -35,6 +35,7 @@ "F/A-18E Super Hornet", "F/A-18F Super Hornet", "EA-18G Growler", + "OH-58D(R) Kiowa Warrior", "S-3B Viking", "SH-60B Seahawk", "UH-1H Iroquois", diff --git a/resources/plugins/splashdamage2/Splash_Damage_2_0.lua b/resources/plugins/splashdamage2/Splash_Damage_2_0.lua index af1c2bae..bba9aea5 100644 --- a/resources/plugins/splashdamage2/Splash_Damage_2_0.lua +++ b/resources/plugins/splashdamage2/Splash_Damage_2_0.lua @@ -110,6 +110,7 @@ explTable = { ["HB_F4E_GBU_8_HOBOS"] = 874, -- Heatblur F-4E HOBOS ["GBU_10"] = 874, -- ["GBU_12"] = 241, -- + ["HB_F4E_GBU15V1"] = 874, -- Heatblur F-4E GBU-15 ["GBU_16"] = 447, -- ["GBU_31"] = 874, ["GBU_31_V_3B"] = 874, -- @@ -145,6 +146,7 @@ explTable = { ["AGM_12A"] = 113, -- Bullpup A ["AGM_12B"] = 113, -- Bullpup B ["AGM_12C"] = 454, -- Bullpup C + ["HB_F4E_AGM_12C"] = 454, -- Bullpup C - Heatblur ["AGM_45A"] = 66, -- Shrike A ["AGM_45B"] = 66, -- Shrike B ["AGM_65A"] = 57, @@ -280,9 +282,6 @@ explTable = { --["BLU-97/B"] = 10, --["BLU-97B"] = 10, --["MK118"] = 8, - ["HB_F4E_AGM_12C"] = 440, - ["HB_F4E_GBU_8_HOBOS"] = 429, - ["HB_F4E_GBU15V1"] = 910, } clusterDamage = { diff --git a/resources/squadrons/OH58D/AUS Army.yaml b/resources/squadrons/OH58D/AUS Army.yaml new file mode 100644 index 00000000..81419f07 --- /dev/null +++ b/resources/squadrons/OH58D/AUS Army.yaml @@ -0,0 +1,13 @@ +--- +name: Australian Army +country: Australia +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - AUS Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/DE Army.yaml b/resources/squadrons/OH58D/DE Army.yaml new file mode 100644 index 00000000..8bf42d01 --- /dev/null +++ b/resources/squadrons/OH58D/DE Army.yaml @@ -0,0 +1,13 @@ +--- +name: German Army +country: Germany +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - DE Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/ES Army.yaml b/resources/squadrons/OH58D/ES Army.yaml new file mode 100644 index 00000000..c9d469aa --- /dev/null +++ b/resources/squadrons/OH58D/ES Army.yaml @@ -0,0 +1,13 @@ +--- +name: Spanish Army +country: Spain +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - ES Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/FR Army.yaml b/resources/squadrons/OH58D/FR Army.yaml new file mode 100644 index 00000000..9f5df872 --- /dev/null +++ b/resources/squadrons/OH58D/FR Army.yaml @@ -0,0 +1,13 @@ +--- +name: French Army +country: France +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - FR Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/GR Army.yaml b/resources/squadrons/OH58D/GR Army.yaml new file mode 100644 index 00000000..8dc89f39 --- /dev/null +++ b/resources/squadrons/OH58D/GR Army.yaml @@ -0,0 +1,13 @@ +--- +name: Greek Army +country: Greece +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - GR Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/HR 393EH.yaml b/resources/squadrons/OH58D/HR 393EH.yaml new file mode 100644 index 00000000..a1823b6a --- /dev/null +++ b/resources/squadrons/OH58D/HR 393EH.yaml @@ -0,0 +1,29 @@ +--- +name: Croatian Air Force 393rd Helicopter Squadron +nickname: Night Owls +country: Croatia +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery_set: + - HR 393EH 321 + - HR 393EH 322 + - HR 393EH 323 + - HR 393EH 324 + - HR 393EH 325 + - HR 393EH 326 + - HR 393EH 327 + - HR 393EH 328 + - HR 393EH 329 + - HR 393EH 330 + - HR 393EH 331 + - HR 393EH 332 + - HR 393EH 333 + - HR 393EH 334 + - HR 393EH 335 + - HR 393EH 336 +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/ISR Army.yaml b/resources/squadrons/OH58D/ISR Army.yaml new file mode 100644 index 00000000..911c1e63 --- /dev/null +++ b/resources/squadrons/OH58D/ISR Army.yaml @@ -0,0 +1,13 @@ +--- +name: Israeli Army +country: Israel +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - ISR Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/JPN Army.yaml b/resources/squadrons/OH58D/JPN Army.yaml new file mode 100644 index 00000000..fff41212 --- /dev/null +++ b/resources/squadrons/OH58D/JPN Army.yaml @@ -0,0 +1,13 @@ +--- +name: Japanese Army +country: Japan +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - JPN Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/NL Army.yaml b/resources/squadrons/OH58D/NL Army.yaml new file mode 100644 index 00000000..0a342576 --- /dev/null +++ b/resources/squadrons/OH58D/NL Army.yaml @@ -0,0 +1,13 @@ +--- +name: Dutch Army +country: The Netherlands +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - NL Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/PL Army.yaml b/resources/squadrons/OH58D/PL Army.yaml new file mode 100644 index 00000000..d9c713a5 --- /dev/null +++ b/resources/squadrons/OH58D/PL Army.yaml @@ -0,0 +1,13 @@ +--- +name: Polish Army +country: Poland +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - PL Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/RU Army.yaml b/resources/squadrons/OH58D/RU Army.yaml new file mode 100644 index 00000000..6f81909a --- /dev/null +++ b/resources/squadrons/OH58D/RU Army.yaml @@ -0,0 +1,13 @@ +--- +name: Russian Army +country: Russia +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - RU Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/TN ANG 1-230.yaml b/resources/squadrons/OH58D/TN ANG 1-230.yaml new file mode 100644 index 00000000..d1303bcc --- /dev/null +++ b/resources/squadrons/OH58D/TN ANG 1-230.yaml @@ -0,0 +1,16 @@ +--- +name: Tennessee National Guard 1-230th Air Cavalry Squadron +nickname: Pink Fuzzy Bunnies of Death +female_pilot_percentage: 10 +country: USA +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery_set: + - US Tennessee ANG 1-230 113 + - US Tennessee ANG 1-230 152 +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/TUN Army.yaml b/resources/squadrons/OH58D/TUN Army.yaml new file mode 100644 index 00000000..a39ed6a2 --- /dev/null +++ b/resources/squadrons/OH58D/TUN Army.yaml @@ -0,0 +1,13 @@ +--- +name: Tunisian Army +country: Tunisia +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - TUN Army +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/TWN Army.yaml b/resources/squadrons/OH58D/TWN Army.yaml new file mode 100644 index 00000000..f02dd1a2 --- /dev/null +++ b/resources/squadrons/OH58D/TWN Army.yaml @@ -0,0 +1,13 @@ +--- +name: Taiwanese Army +country: Combined Joint Task Forces Blue +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - TWN Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/UK Army Desert.yaml b/resources/squadrons/OH58D/UK Army Desert.yaml new file mode 100644 index 00000000..2caef78d --- /dev/null +++ b/resources/squadrons/OH58D/UK Army Desert.yaml @@ -0,0 +1,13 @@ +--- +name: British Army Air Corps Desert +country: UK +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - UK Army Fictional Desert +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/UK Army.yaml b/resources/squadrons/OH58D/UK Army.yaml new file mode 100644 index 00000000..3139ee77 --- /dev/null +++ b/resources/squadrons/OH58D/UK Army.yaml @@ -0,0 +1,13 @@ +--- +name: British Army Air Corps +country: UK +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - UK Army Fictional +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/US 1-17 A.yaml b/resources/squadrons/OH58D/US 1-17 A.yaml new file mode 100644 index 00000000..cd939f4c --- /dev/null +++ b/resources/squadrons/OH58D/US 1-17 A.yaml @@ -0,0 +1,18 @@ +--- +name: US Army 17th Cavalry Regiment 1st Squadron Troop A +nickname: Roughnecks +female_pilot_percentage: 10 +country: USA +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery_set: + - US 1-17 A 002 + - US 1-17 A 079 + - US 1-17 A 115 + - US 1-17 A 344 +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/US 1-17 B.yaml b/resources/squadrons/OH58D/US 1-17 B.yaml new file mode 100644 index 00000000..95db4031 --- /dev/null +++ b/resources/squadrons/OH58D/US 1-17 B.yaml @@ -0,0 +1,16 @@ +--- +name: US Army 17th Cavalry Regiment 1st Squadron Troop B +nickname: Bootleg +female_pilot_percentage: 10 +country: USA +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery_set: + - US 1-17 B 024 + - US 1-17 B 381 +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/US 1-6 A.yaml b/resources/squadrons/OH58D/US 1-6 A.yaml new file mode 100644 index 00000000..c606a0bc --- /dev/null +++ b/resources/squadrons/OH58D/US 1-6 A.yaml @@ -0,0 +1,16 @@ +--- +name: US Army 6th Cavalry Regiment 1st Squadron Troop A +nickname: Fighting Sixth +female_pilot_percentage: 10 +country: USA +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery_set: + - US 1-6 A 161 + - US 1-6 A 340 +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/US 3-17 B.yaml b/resources/squadrons/OH58D/US 3-17 B.yaml new file mode 100644 index 00000000..fdd02416 --- /dev/null +++ b/resources/squadrons/OH58D/US 3-17 B.yaml @@ -0,0 +1,15 @@ +--- +name: US Army 17th Cavalry Regiment 3rd Squadron Troop B +nickname: Blackjack +female_pilot_percentage: 10 +country: USA +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery: + - US 3-17 B 937 Iraq +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/US 3-17 C.yaml b/resources/squadrons/OH58D/US 3-17 C.yaml new file mode 100644 index 00000000..efd4a566 --- /dev/null +++ b/resources/squadrons/OH58D/US 3-17 C.yaml @@ -0,0 +1,18 @@ +--- +name: US Army 17th Cavalry Regiment 3rd Squadron Troop C +nickname: Crazy Horse +female_pilot_percentage: 10 +country: USA +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery_set: + - US 3-17 C 001 Jasmine + - US 3-17 C 179 Presley Marie + - US 3-17 C 561 Ariel + - US 3-17 C 976 Jenny +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/US 6-17.yaml b/resources/squadrons/OH58D/US 6-17.yaml new file mode 100644 index 00000000..532d64a6 --- /dev/null +++ b/resources/squadrons/OH58D/US 6-17.yaml @@ -0,0 +1,17 @@ +--- +name: US Army 17th Cavalry Regiment 6th Squadron +female_pilot_percentage: 10 +country: USA +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery_set: + - US 6-17 A 523 Iraq 2011 + - US 6-17 A 571 Korea 2014 + - US 6-17 B 366 + - US 6-17 C 367 +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/US 6-6.yaml b/resources/squadrons/OH58D/US 6-6.yaml new file mode 100644 index 00000000..ece7b818 --- /dev/null +++ b/resources/squadrons/OH58D/US 6-6.yaml @@ -0,0 +1,17 @@ +--- +name: US Army 6th Cavalry Regiment 6th Squadron +nickname: Fighting Sixth +female_pilot_percentage: 10 +country: USA +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery_set: + - US 6-6 C 179 + - US 6-6 C 587 + - US 6-6 C 971 +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/OH58D/US 7-17 A.yaml b/resources/squadrons/OH58D/US 7-17 A.yaml new file mode 100644 index 00000000..1061a06a --- /dev/null +++ b/resources/squadrons/OH58D/US 7-17 A.yaml @@ -0,0 +1,18 @@ +--- +name: US Army 17th Cavalry Regiment 7th Squadron Troop A +nickname: Shadow +female_pilot_percentage: 10 +country: USA +role: Light Attack and Scout Helicopter +aircraft: OH-58D(R) Kiowa Warrior +livery_set: + - US 7-17 A 014 Bugs + - US 7-17 A 039 Lola + - US 7-17 A 964 Marvin + - US -17 A 604 Taz +mission_types: + - BAI + - CAS + - DEAD + - Escort + - OCA/Aircraft \ No newline at end of file diff --git a/resources/squadrons/hornet/VFA-87.yaml b/resources/squadrons/hornet/VFA-87.yaml new file mode 100644 index 00000000..cf565513 --- /dev/null +++ b/resources/squadrons/hornet/VFA-87.yaml @@ -0,0 +1,23 @@ +--- +name: VFA-87 +nickname: Golden Warriors +female_pilot_percentage: 7 +country: USA +role: Strike Fighter +aircraft: F/A-18C Hornet (Lot 20) +livery: VFA-87 +mission_types: + - Anti-ship + - BAI + - BARCAP + - CAS + - DEAD + - Escort + - Intercept + - OCA/Aircraft + - OCA/Runway + - SEAD + - SEAD Escort + - Strike + - Fighter sweep + - TARCAP \ No newline at end of file diff --git a/resources/ui/units/aircrafts/banners/OH58D.jpg b/resources/ui/units/aircrafts/banners/OH58D.jpg new file mode 100644 index 00000000..e451dd78 Binary files /dev/null and b/resources/ui/units/aircrafts/banners/OH58D.jpg differ diff --git a/resources/ui/units/aircrafts/icons/OH58D_24.jpg b/resources/ui/units/aircrafts/icons/OH58D_24.jpg new file mode 100644 index 00000000..5040d3b4 Binary files /dev/null and b/resources/ui/units/aircrafts/icons/OH58D_24.jpg differ diff --git a/resources/units/aircraft/OH58D.yaml b/resources/units/aircraft/OH58D.yaml new file mode 100644 index 00000000..b5502bc5 --- /dev/null +++ b/resources/units/aircraft/OH58D.yaml @@ -0,0 +1,46 @@ +class: Helicopter +cabin_size: 0 # Can not transport troops +can_carry_crates: false # Can not carry crates +carrier_capable: true +description: + The Bell OH-58 Kiowa is a family of single-engine, single-rotor, military + helicopters used for observation, utility, and direct fire support. Bell Helicopter + manufactured the OH-58 for the United States Army based on its Model 206A JetRanger + helicopter. The OH-58 was in continuous U.S. Army service from 1969 to 2017, when + it was replaced in these roles by the Boeing AH-64 Apache and Eurocopter UH-72 Lakota. + The latest model, the OH-58D Kiowa Warrior, is primarily operated in an armed reconnaissance + role in support of ground troops. The OH-58 has been exported to Austria, Canada, + Croatia, the Dominican Republic, Taiwan, Saudi Arabia, and Greece. It has also been + produced under license in Australia. +introduced: 1983 +lha_capable: true +manufacturer: Bell +origin: USA +price: 6 +role: Light Attack/Forward Air Control +radios: + inter_flight: AN/ARC-164 + intra_flight: AN/ARC-186(V) AM + channels: + type: common + namer: kiowa + intra_flight_radio_index: 2 + inter_flight_radio_index: 1 +default_overrides: + #NetCrewControlPriority: 0, + #Remove_doors: true, + PDU: true, + #Rifles: true, + #MMS_removal: false, + #Rapid_Deployment_Gear: false, + #ALQ144: false, + #importDrawings: true, + #tacNet: 1, +variants: + OH-58D(R) Kiowa Warrior: {} +tasks: + BAI: 470 + CAS: 470 + OCA/Aircraft: 470 + DEAD: 50 + Escort: 10 diff --git a/resources/units/aircraft/Yak-52.yaml b/resources/units/aircraft/Yak-52.yaml new file mode 100644 index 00000000..41b9b471 --- /dev/null +++ b/resources/units/aircraft/Yak-52.yaml @@ -0,0 +1,7 @@ +price: 5 +variants: + Yak-52: null +tasks: + BAI: 0 + CAS: 0 + OCA/Aircraft: 0 diff --git a/resources/units/ground_units/FuSe-65.yaml b/resources/units/ground_units/FuSe-65.yaml new file mode 100644 index 00000000..cee0c2b9 --- /dev/null +++ b/resources/units/ground_units/FuSe-65.yaml @@ -0,0 +1,4 @@ +class: EarlyWarningRadar +price: 25 +variants: + EWR FuSe-65 Würzburg-Riese: null