Compare commits

...

7 Commits

Author SHA1 Message Date
Raffson
801e9efe8c Fix heli spawn/landing at FOB/FARP
Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2719.

(cherry picked from commit 34de855b8f889b72406c101d0cea385988e24bf9)
(cherry picked from commit b41ef0ab13)
2023-02-05 14:41:47 -08:00
Dan Albert
5708fe625b Don't generate runway data for heliports.
Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2710.

(cherry picked from commit c33a0d5deb)
2023-02-05 14:41:47 -08:00
Dan Albert
1dda0c9497 Pin version of black used in GHA.
Black rolls out style changes every year, and using "stable" means that
the check run on PRs might start formatting differently than we do
locally, or require a reformat of the codebase to make a PR submittable.

Pin to the version that we've been using. We should update to 23 at some
point, but we want to do that deliberately.

(cherry picked from commit 937bacacb7)
2023-02-05 12:15:50 -08:00
Dan Albert
56d7641251 Fix line endings.
(cherry-picked from commit e8824e5d03)
2023-02-05 12:15:50 -08:00
Dan Albert
938d6b4bdf Fix invalid tanker planning.
All three refueling missions share a common task type and differentiate
their behavior based on the type and allegiance of the package target.
This means that if the theater commander identifies a carrier as the
best location for a theater refueling task, a recovery tanker will be
planned by mistake.

If this happens on a sunken carrier, mission generation will fail
because a recovery tanker cannot be generated for a sunken carrier.

Fix the crash and the misplanned theater tanker by preventing the
commander from choosing fleet control points as refueling targets.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2693.

(cherry picked from commit eea98b01f6)
2023-01-28 14:05:57 -08:00
Dan Albert
5caf07f476 Fix unit ID of the KS-19.
It seems like this unit has never worked because of the unit ID
mismatch.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2701.

(cherry picked from commit 0df268f331)
2023-01-28 12:10:38 -08:00
Dan Albert
d1d4fde6a3 Update game version to 6.1.1. 2023-01-28 12:10:38 -08:00
14 changed files with 483 additions and 447 deletions

View File

@@ -11,6 +11,7 @@ jobs:
- uses: actions/setup-python@v2
- uses: psf/black@stable
with:
version: ~=22.12
src: "."
options: "--check"

View File

@@ -1,3 +1,12 @@
# 6.1.1
## Fixes
* **[Data]** Fixed unit ID for the KS-19 AAA. KS-19 would not previously generate correctly in missions. A new game is required for this fix to take effect.
* **[Flight Planning]** Automatic flight planning will no longer accidentally plan a recovery tanker instead of a theater refueling package. This fixes a potential crash during mission generation when opfor plans a refueling task at a sunk carrier. You'll need to skip the current turn to force opfor to replan their flights to get the fix.
* **[Mission Generation]** Using heliports (airports without any runways) will no longer cause mission generation to fail.
* **[Mission Generation]** Prevent helicopters from spawning into collisions at FARPs when more than one flight uses the same FARP.
# 6.1.0
Saves from 6.0.0 are compatible with 6.1.0

View File

@@ -5,6 +5,7 @@ import operator
from collections.abc import Iterable, Iterator
from typing import TYPE_CHECKING, TypeVar
from game.ato.closestairfields import ClosestAirfields, ObjectiveDistanceCache
from game.theater import (
Airfield,
ControlPoint,
@@ -15,12 +16,11 @@ from game.theater import (
)
from game.theater.theatergroundobject import (
BuildingGroundObject,
IadsBuildingGroundObject,
IadsGroundObject,
NavalGroundObject,
IadsBuildingGroundObject,
)
from game.utils import meters, nautical_miles
from game.ato.closestairfields import ClosestAirfields, ObjectiveDistanceCache
if TYPE_CHECKING:
from game import Game
@@ -209,22 +209,20 @@ class ObjectiveFinder:
raise RuntimeError("Found no friendly control points. You probably lost.")
return farthest
def closest_friendly_control_point(self) -> ControlPoint:
def preferred_theater_refueling_control_point(self) -> ControlPoint | None:
"""Finds the friendly control point that is closest to any threats."""
threat_zones = self.game.threat_zone_for(not self.is_player)
closest = None
min_distance = meters(math.inf)
for cp in self.friendly_control_points():
if isinstance(cp, OffMapSpawn):
if isinstance(cp, OffMapSpawn) or cp.is_fleet:
continue
distance = threat_zones.distance_to_threat(cp.position)
if distance < min_distance:
closest = cp
min_distance = distance
if closest is None:
raise RuntimeError("Found no friendly control points. You probably lost.")
return closest
def enemy_control_points(self) -> Iterator[ControlPoint]:

View File

@@ -153,6 +153,11 @@ class TheaterState(WorldState["TheaterState"]):
barcap_duration = coalition.doctrine.cap_duration.total_seconds()
barcap_rounds = math.ceil(mission_duration / barcap_duration)
refueling_targets: list[MissionTarget] = []
theater_refuling_point = finder.preferred_theater_refueling_control_point()
if theater_refuling_point is not None:
refueling_targets.append(theater_refuling_point)
return TheaterState(
context=context,
barcaps_needed={
@@ -162,7 +167,7 @@ class TheaterState(WorldState["TheaterState"]):
front_line_stances={f: None for f in finder.front_lines()},
vulnerable_front_lines=list(finder.front_lines()),
aewc_targets=[finder.farthest_friendly_control_point()],
refueling_targets=[finder.closest_friendly_control_point()],
refueling_targets=refueling_targets,
enemy_air_defenses=list(finder.enemy_air_defenses()),
threatening_air_defenses=[],
detecting_air_defenses=[],

View File

@@ -26,6 +26,7 @@ from game.settings import Settings
from game.theater.controlpoint import (
Airfield,
ControlPoint,
Fob,
)
from game.unitmap import UnitMap
from .aircraftpainter import AircraftPainter
@@ -180,4 +181,12 @@ class AircraftGenerator:
self.unit_map,
).configure()
)
wpt = group.waypoint("LANDING")
if flight.is_helo and isinstance(flight.arrival, Fob) and wpt:
hpad = self.helipads[flight.arrival].units.pop(0)
wpt.helipad_id = hpad.id
wpt.link_unit = hpad.id
self.helipads[flight.arrival].units.append(hpad)
return group

View File

@@ -230,16 +230,22 @@ class FlightGroupSpawner:
def _generate_at_cp_helipad(self, name: str, cp: ControlPoint) -> FlyingGroup[Any]:
try:
helipad = self.helipads[cp]
except IndexError as ex:
except IndexError:
raise NoParkingSlotError()
group = self._generate_at_group(name, helipad)
if self.start_type is not StartType.COLD:
if self.start_type is StartType.WARM:
group.points[0].type = "TakeOffParkingHot"
hpad = helipad.units[0]
for i in range(self.flight.count):
group.units[i].position = helipad.units[i].position
group.units[i].heading = helipad.units[i].heading
group.units[i].position = hpad.position
group.units[i].heading = hpad.heading
# pydcs has just `parking_id = None`, so mypy thinks str is invalid. Ought
# to fix pydcs, but that's not the kind of change we want to pull into the
# 6.1 branch, and frankly we should probably just improve pydcs's handling
# of FARPs instead.
group.units[i].parking_id = str(i + 1) # type: ignore
return group
def dcs_start_type(self) -> DcsStartType:

View File

@@ -31,10 +31,11 @@ class RecoveryTankerBuilder(PydcsWaypointBuilder):
for key, value in theater_objects.items():
# Check name and position in case there are multiple of same carrier.
if name in key and value.theater_unit.position == carrier_position:
theater_mapping = value
break
assert theater_mapping is not None
return theater_mapping.dcs_group_id
return value.dcs_group_id
raise RuntimeError(
f"Could not find a carrier in the mission matching {name} at "
f"({carrier_position.x}, {carrier_position.y})"
)
def configure_tanker_tacan(self, waypoint: MovingPoint) -> None:

View File

@@ -878,6 +878,11 @@ class ControlPoint(MissionTarget, SidcDescribable, ABC):
) -> RunwayData:
...
def stub_runway_data(self) -> RunwayData:
return RunwayData(
self.full_name, runway_heading=Heading.from_degrees(0), runway_name=""
)
@property
def airdrome_id_for_landing(self) -> Optional[int]:
return None
@@ -1134,6 +1139,14 @@ class Airfield(ControlPoint):
conditions: Conditions,
dynamic_runways: Dict[str, RunwayData],
) -> RunwayData:
if not self.airport.runways:
# Some airfields are heliports and don't have any runways. This isn't really
# the best fix, since we should still try to generate partial data for TACAN
# beacons, but it'll do for a bug fix, and the proper fix probably involves
# making heliports their own CP type.
# https://github.com/dcs-liberation/dcs_liberation/issues/2710
return self.stub_runway_data()
assigner = RunwayAssigner(conditions)
return assigner.get_preferred_runway(theater, self.airport)
@@ -1269,8 +1282,6 @@ class Carrier(NavalControlPoint):
return SymbolSet.SEA_SURFACE, SeaSurfaceEntity.CARRIER
def mission_types(self, for_player: bool) -> Iterator[FlightType]:
from game.ato import FlightType
yield from super().mission_types(for_player)
if self.is_friendly(for_player):
yield from [
@@ -1375,9 +1386,7 @@ class OffMapSpawn(ControlPoint):
dynamic_runways: Dict[str, RunwayData],
) -> RunwayData:
logging.warning("TODO: Off map spawns have no runways.")
return RunwayData(
self.full_name, runway_heading=Heading.from_degrees(0), runway_name=""
)
return self.stub_runway_data()
@property
def runway_status(self) -> RunwayStatus:
@@ -1419,9 +1428,7 @@ class Fob(ControlPoint):
dynamic_runways: Dict[str, RunwayData],
) -> RunwayData:
logging.warning("TODO: FOBs have no runways.")
return RunwayData(
self.full_name, runway_heading=Heading.from_degrees(0), runway_name=""
)
return self.stub_runway_data()
@property
def runway_status(self) -> RunwayStatus:

View File

@@ -3,7 +3,7 @@ from pathlib import Path
MAJOR_VERSION = 6
MINOR_VERSION = 1
MICRO_VERSION = 0
MICRO_VERSION = 1
VERSION_NUMBER = ".".join(str(v) for v in (MAJOR_VERSION, MINOR_VERSION, MICRO_VERSION))

View File

@@ -1,101 +1,101 @@
---
name: Nevada - Exercise Vegas Nerve
theater: Nevada
authors: Starfire
recommended_player_faction: USA 2005
recommended_enemy_faction: Redfor (China) 2010
description: <p>Welcome to Vegas Nerve, an asymmetrical Red Flag Exercise scenario. You are starting off in control of the two Tonopah airports, and will push south from there. For the duration of this exercise, Creech AFB has been cleared of all fixed wing aircraft and will function as a FARP for rotor ops. OPFOR has a substantial resource advantage and an extensive IADS. Reducing that resource advantage while degrading their IADS will be vital to a successful completion of this exercise. Good luck, Commander.</p>
miz: exercise_vegas_nerve.miz
performance: 1
recommended_start_date: 2011-02-24
version: "10.5"
squadrons:
# Tonopah Airport
17:
- primary: TARCAP
secondary: air-to-air
aircraft:
- F-15C Eagle
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
- primary: AEW&C
aircraft:
- E-3A
- primary: Refueling
aircraft:
- KC-135 Stratotanker
- primary: Refueling
aircraft:
- KC-135 Stratotanker MPRS
- primary: Transport
aircraft:
- C-130
- primary: Strike
secondary: air-to-ground
aircraft:
- F-15E Strike Eagle
# Tonopah Test Range
18:
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-64D Apache Longbow
- primary: DEAD
secondary: air-to-ground
aircraft:
- F/A-18C Hornet (Lot 20)
- primary: SEAD
secondary: air-to-ground
aircraft:
- F-16CM Fighting Falcon (Block 50)
- primary: BAI
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
- primary: Air Assault
secondary: air-to-ground
aircraft:
- UH-1H Iroquois
# Groom Lake
2:
- primary: BARCAP
secondary: air-to-air
aircraft:
- J-11A Flanker-L
- primary: BAI
secondary: air-to-ground
aircraft:
- Su-34 Fullback
# Creech
Creech FARP:
- primary: CAS
secondary: air-to-ground
aircraft:
- Ka-50 Hokum
# Nellis AFB
4:
- primary: SEAD
secondary: any
aircraft:
- FC-1 Fierce Dragon
- primary: Strike
secondary: air-to-ground
aircraft:
- H-6J Badger
# Boulder City Airport
6:
- primary: AEW&C
aircraft:
- KJ-2000
- primary: Refueling
aircraft:
- IL-78M
- primary: Transport
aircraft:
---
name: Nevada - Exercise Vegas Nerve
theater: Nevada
authors: Starfire
recommended_player_faction: USA 2005
recommended_enemy_faction: Redfor (China) 2010
description: <p>Welcome to Vegas Nerve, an asymmetrical Red Flag Exercise scenario. You are starting off in control of the two Tonopah airports, and will push south from there. For the duration of this exercise, Creech AFB has been cleared of all fixed wing aircraft and will function as a FARP for rotor ops. OPFOR has a substantial resource advantage and an extensive IADS. Reducing that resource advantage while degrading their IADS will be vital to a successful completion of this exercise. Good luck, Commander.</p>
miz: exercise_vegas_nerve.miz
performance: 1
recommended_start_date: 2011-02-24
version: "10.5"
squadrons:
# Tonopah Airport
17:
- primary: TARCAP
secondary: air-to-air
aircraft:
- F-15C Eagle
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
- primary: AEW&C
aircraft:
- E-3A
- primary: Refueling
aircraft:
- KC-135 Stratotanker
- primary: Refueling
aircraft:
- KC-135 Stratotanker MPRS
- primary: Transport
aircraft:
- C-130
- primary: Strike
secondary: air-to-ground
aircraft:
- F-15E Strike Eagle
# Tonopah Test Range
18:
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-64D Apache Longbow
- primary: DEAD
secondary: air-to-ground
aircraft:
- F/A-18C Hornet (Lot 20)
- primary: SEAD
secondary: air-to-ground
aircraft:
- F-16CM Fighting Falcon (Block 50)
- primary: BAI
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
- primary: Air Assault
secondary: air-to-ground
aircraft:
- UH-1H Iroquois
# Groom Lake
2:
- primary: BARCAP
secondary: air-to-air
aircraft:
- J-11A Flanker-L
- primary: BAI
secondary: air-to-ground
aircraft:
- Su-34 Fullback
# Creech
Creech FARP:
- primary: CAS
secondary: air-to-ground
aircraft:
- Ka-50 Hokum
# Nellis AFB
4:
- primary: SEAD
secondary: any
aircraft:
- FC-1 Fierce Dragon
- primary: Strike
secondary: air-to-ground
aircraft:
- H-6J Badger
# Boulder City Airport
6:
- primary: AEW&C
aircraft:
- KJ-2000
- primary: Refueling
aircraft:
- IL-78M
- primary: Transport
aircraft:
- IL-76MD

View File

@@ -1,110 +1,110 @@
---
name: Falklands - Operation Grabthar's Hammer
theater: Falklands
authors: Starfire
recommended_player_faction: USA 2005
recommended_enemy_faction: Russia 1990
description:
<p>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 Ushaia
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 Ushaia from an LHA in order to
disable the bomb production facility. Fortunately, Ushaia is lightly defended as
the SoW are trying to avoid unwanted attention.</p>
miz: grabthars_hammer.miz
performance: 2
recommended_start_date: 2000-07-13
version: "10.5"
squadrons:
#Mount Pleasant
2:
- primary: TARCAP
secondary: air-to-air
aircraft:
- F-15C Eagle
- primary: BAI
secondary: air-to-ground
aircraft:
- F-15E Strike Eagle
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
- primary: Strike
secondary: air-to-ground
aircraft:
- B-1B Lancer
- primary: Refueling
aircraft:
- KC-135 Stratotanker
#San Julian
11:
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
#El Calafate
14:
- primary: CAS
secondary: air-to-ground
aircraft:
- Su-25T Frogfoot
#Rio Gallegros
5:
- primary: BARCAP
secondary: any
aircraft:
- Su-27 Flanker-B
#Punta Arenas
9:
- primary: BAI
secondary: air-to-ground
aircraft:
- Su-24M Fencer-D
- primary: Strike
secondary: air-to-ground
aircraft:
- Tu-22M3 Backfire-C
#Ushuaia
7:
- primary: Transport
aircraft:
- IL-76MD
#Ushuaia Helo Port
8:
- primary: BAI
secondary: air-to-ground
aircraft:
- Mi-24P Hind-F
#Blue CV
Blue-CV:
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
- primary: AEW&C
aircraft:
- E-2C Hawkeye
- primary: Refueling
aircraft:
- S-3B Tanker
# Blue LHA
Blue-LHA:
- primary: DEAD
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
- primary: Air Assault
secondary: air-to-ground
aircraft:
- UH-1H Iroquois
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-64D Apache Longbow
---
name: Falklands - Operation Grabthar's Hammer
theater: Falklands
authors: Starfire
recommended_player_faction: USA 2005
recommended_enemy_faction: Russia 1990
description:
<p>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 Ushaia
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 Ushaia from an LHA in order to
disable the bomb production facility. Fortunately, Ushaia is lightly defended as
the SoW are trying to avoid unwanted attention.</p>
miz: grabthars_hammer.miz
performance: 2
recommended_start_date: 2000-07-13
version: "10.5"
squadrons:
#Mount Pleasant
2:
- primary: TARCAP
secondary: air-to-air
aircraft:
- F-15C Eagle
- primary: BAI
secondary: air-to-ground
aircraft:
- F-15E Strike Eagle
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
- primary: Strike
secondary: air-to-ground
aircraft:
- B-1B Lancer
- primary: Refueling
aircraft:
- KC-135 Stratotanker
#San Julian
11:
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
#El Calafate
14:
- primary: CAS
secondary: air-to-ground
aircraft:
- Su-25T Frogfoot
#Rio Gallegros
5:
- primary: BARCAP
secondary: any
aircraft:
- Su-27 Flanker-B
#Punta Arenas
9:
- primary: BAI
secondary: air-to-ground
aircraft:
- Su-24M Fencer-D
- primary: Strike
secondary: air-to-ground
aircraft:
- Tu-22M3 Backfire-C
#Ushuaia
7:
- primary: Transport
aircraft:
- IL-76MD
#Ushuaia Helo Port
8:
- primary: BAI
secondary: air-to-ground
aircraft:
- Mi-24P Hind-F
#Blue CV
Blue-CV:
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
- primary: AEW&C
aircraft:
- E-2C Hawkeye
- primary: Refueling
aircraft:
- S-3B Tanker
# Blue LHA
Blue-LHA:
- primary: DEAD
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
- primary: Air Assault
secondary: air-to-ground
aircraft:
- UH-1H Iroquois
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-64D Apache Longbow

View File

@@ -1,111 +1,111 @@
---
name: Syria - Operation Peace Spring
theater: Syria
authors: Starfire
recommended_player_faction: Bluefor Modern
recommended_enemy_faction: Iraq 1991
description: <p>This is a semi-fictional what-if scenario for Operation Peace Spring, during which Turkish forces that crossed into Syria on an offensive against Kurdish militias were emboldened by early successes to continue pushing further southward. Attempts to broker a ceasefire have failed. Members of Operation Inherent Resolve have gathered at Ramat David Airbase in Israel to launch a counter-offensive.</p><p><strong>Note:</strong> The default faction is set as Iraq 1991 in order to provide an opponent with a wider variety of units. While Turkey 2005 would be the historical faction (and has preset squadrons included), they only have two jets available (F-4 and F-16).</p>
miz: operation_peace_spring.miz
performance: 1
recommended_start_date: 2019-12-23
version: "10.5"
squadrons:
# Ramat David
30:
- primary: BARCAP
secondary: air-to-air
aircraft:
- F-15C Eagle
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-64D Apache Longbow
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
- primary: BAI
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
- primary: Strike
secondary: air-to-ground
aircraft:
- F-15E Strike Eagle
- primary: Air Assault
secondary: air-to-ground
aircraft:
- UH-1H Iroquois
- primary: AEW&C
aircraft:
- E-3A
- primary: Refueling
aircraft:
- KC-135 Stratotanker
- primary: Refueling
aircraft:
- KC-135 Stratotanker MPRS
- primary: Transport
aircraft:
- C-130
# Damascus
7:
- primary: BARCAP
secondary: any
aircraft:
- F-4E Phantom II
- MiG-21bis Fishbed-N
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-1W SuperCobra
- Su-25 Frogfoot
# Tiyas
39:
- primary: SEAD
secondary: air-to-ground
aircraft:
- F-16CM Fighting Falcon (Block 50)
- Su-24M Fencer-D
# Abu Al Duhur
# 1:
# Gaziantep
11:
- primary: CAS
secondary: air-to-ground
aircraft:
- OH-58D Kiowa Warrior
- Mi-24P Hind-F
# Incirlik
16:
- primary: TARCAP
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
- MiG-29A Fulcrum-A
- primary: Strike
secondary: air-to-ground
aircraft:
- F-4E Phantom II
- H-6J Badger
- primary: AEW&C
aircraft:
- E-3A
- A-50
- primary: Refueling
aircraft:
- KC-135 Stratotanker
- IL-78M
- primary: Transport
aircraft:
- C-130
- IL-76MD
---
name: Syria - Operation Peace Spring
theater: Syria
authors: Starfire
recommended_player_faction: Bluefor Modern
recommended_enemy_faction: Iraq 1991
description: <p>This is a semi-fictional what-if scenario for Operation Peace Spring, during which Turkish forces that crossed into Syria on an offensive against Kurdish militias were emboldened by early successes to continue pushing further southward. Attempts to broker a ceasefire have failed. Members of Operation Inherent Resolve have gathered at Ramat David Airbase in Israel to launch a counter-offensive.</p><p><strong>Note:</strong> The default faction is set as Iraq 1991 in order to provide an opponent with a wider variety of units. While Turkey 2005 would be the historical faction (and has preset squadrons included), they only have two jets available (F-4 and F-16).</p>
miz: operation_peace_spring.miz
performance: 1
recommended_start_date: 2019-12-23
version: "10.5"
squadrons:
# Ramat David
30:
- primary: BARCAP
secondary: air-to-air
aircraft:
- F-15C Eagle
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-64D Apache Longbow
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
- primary: BAI
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
- primary: Strike
secondary: air-to-ground
aircraft:
- F-15E Strike Eagle
- primary: Air Assault
secondary: air-to-ground
aircraft:
- UH-1H Iroquois
- primary: AEW&C
aircraft:
- E-3A
- primary: Refueling
aircraft:
- KC-135 Stratotanker
- primary: Refueling
aircraft:
- KC-135 Stratotanker MPRS
- primary: Transport
aircraft:
- C-130
# Damascus
7:
- primary: BARCAP
secondary: any
aircraft:
- F-4E Phantom II
- MiG-21bis Fishbed-N
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-1W SuperCobra
- Su-25 Frogfoot
# Tiyas
39:
- primary: SEAD
secondary: air-to-ground
aircraft:
- F-16CM Fighting Falcon (Block 50)
- Su-24M Fencer-D
# Abu Al Duhur
# 1:
# Gaziantep
11:
- primary: CAS
secondary: air-to-ground
aircraft:
- OH-58D Kiowa Warrior
- Mi-24P Hind-F
# Incirlik
16:
- primary: TARCAP
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
- MiG-29A Fulcrum-A
- primary: Strike
secondary: air-to-ground
aircraft:
- F-4E Phantom II
- H-6J Badger
- primary: AEW&C
aircraft:
- E-3A
- A-50
- primary: Refueling
aircraft:
- KC-135 Stratotanker
- IL-78M
- primary: Transport
aircraft:
- C-130
- IL-76MD

View File

@@ -1,104 +1,104 @@
---
name: Caucasus - Operation Vectron's Claw
theater: Caucasus
authors: Starfire
recommended_player_faction: USA 2005
recommended_enemy_faction: Russia 1990
description: <p>United Nations Observer Mission in Georgia (UNOMIG) observers stationed in Georgia to monitor the ceasefire between Georgia and Abkhazia have been cut off from friendly forces by Russian troops backing the separatist state. The UNOMIG HQ at Sukhumi has been taken, and a small contingent of observers and troops at the Zugdidi Sector HQ will have to make a run for the coast, supported by offshore US naval aircraft. The contingent is aware that their best shot at survival is to swiftly retake Sukhumi before Russian forces have a chance to dig in, so that friendly ground forces can land and reinforce them.</p><p><strong>Note:</strong> Ground unit purchase will not be available past Turn 0 until Sukhumi is retaken, so it is imperative you reach Sukhumi with at least one surviving ground unit to capture it. Two Hueys are available at Zugdidi for some close air support. The player can either play the first leg of the scenario as an evacuation with a couple of light vehicles (e.g. Humvees) set on breakthrough (modifying waypoints in the mission editor so they are not charging head-on into enemy ground forces is suggested), or purchase heavier ground units if they wish to experience a more traditional frontline ground war. Once Sukhumi has been captured, squadrons based in Incirlik Turkey can be ferried in via the "From Incirlik" off-map spawn point.</p>
miz: operation_vectrons_claw.miz
performance: 1
recommended_start_date: 2008-08-08
version: "10.5"
squadrons:
Blue CV-1:
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
- primary: AEW&C
aircraft:
- E-2C Hawkeye
- primary: Refueling
aircraft:
- S-3B Tanker
Blue LHA:
- primary: BAI
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-64D Apache Longbow
From Incirlik:
- primary: BARCAP
secondary: air-to-air
aircraft:
- F-15C Eagle
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
- primary: Strike
secondary: air-to-ground
aircraft:
- F-15E Strike Eagle
- primary: AEW&C
aircraft:
- E-3A
- primary: Refueling
aircraft:
- KC-135 Stratotanker
#FARPs
UNOMIG Sector HQ:
- primary: Air Assault
secondary: air-to-ground
aircraft:
- UH-1H Iroquois
Dzhugba:
- primary: CAS
secondary: air-to-ground
aircraft:
- Mi-24P Hind-F
#Sukhumi-Babushara
20:
- primary: BARCAP
secondary: any
aircraft:
- MiG-29S Fulcrum-C
#Sochi-Adler
18:
- primary: CAS
secondary: air-to-ground
aircraft:
- Su-24M Fencer-D
#Anapa-Vityazevo
12:
- primary: CAS
secondary: air-to-ground
aircraft:
- Su-25T Frogfoot
- primary: AEW&C
aircraft:
- A-50
- primary: Refueling
aircraft:
- IL-78M
Red CV:
- primary: BARCAP
secondary: any
aircraft:
- SU-33 Flanker-D
#I am aware there is no Russian LHA. This is just for campaign inversion.
Red LHA:
- primary: BAI
secondary: air-to-ground
---
name: Caucasus - Operation Vectron's Claw
theater: Caucasus
authors: Starfire
recommended_player_faction: USA 2005
recommended_enemy_faction: Russia 1990
description: <p>United Nations Observer Mission in Georgia (UNOMIG) observers stationed in Georgia to monitor the ceasefire between Georgia and Abkhazia have been cut off from friendly forces by Russian troops backing the separatist state. The UNOMIG HQ at Sukhumi has been taken, and a small contingent of observers and troops at the Zugdidi Sector HQ will have to make a run for the coast, supported by offshore US naval aircraft. The contingent is aware that their best shot at survival is to swiftly retake Sukhumi before Russian forces have a chance to dig in, so that friendly ground forces can land and reinforce them.</p><p><strong>Note:</strong> Ground unit purchase will not be available past Turn 0 until Sukhumi is retaken, so it is imperative you reach Sukhumi with at least one surviving ground unit to capture it. Two Hueys are available at Zugdidi for some close air support. The player can either play the first leg of the scenario as an evacuation with a couple of light vehicles (e.g. Humvees) set on breakthrough (modifying waypoints in the mission editor so they are not charging head-on into enemy ground forces is suggested), or purchase heavier ground units if they wish to experience a more traditional frontline ground war. Once Sukhumi has been captured, squadrons based in Incirlik Turkey can be ferried in via the "From Incirlik" off-map spawn point.</p>
miz: operation_vectrons_claw.miz
performance: 1
recommended_start_date: 2008-08-08
version: "10.5"
squadrons:
Blue CV-1:
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
- primary: SEAD
secondary: any
aircraft:
- F/A-18C Hornet (Lot 20)
- primary: AEW&C
aircraft:
- E-2C Hawkeye
- primary: Refueling
aircraft:
- S-3B Tanker
Blue LHA:
- primary: BAI
secondary: air-to-ground
aircraft:
- AV-8B Harrier II Night Attack
- primary: CAS
secondary: air-to-ground
aircraft:
- AH-64D Apache Longbow
From Incirlik:
- primary: BARCAP
secondary: air-to-air
aircraft:
- F-15C Eagle
- primary: CAS
secondary: air-to-ground
aircraft:
- A-10C Thunderbolt II (Suite 7)
- primary: DEAD
secondary: any
aircraft:
- F-16CM Fighting Falcon (Block 50)
- primary: Strike
secondary: air-to-ground
aircraft:
- F-15E Strike Eagle
- primary: AEW&C
aircraft:
- E-3A
- primary: Refueling
aircraft:
- KC-135 Stratotanker
#FARPs
UNOMIG Sector HQ:
- primary: Air Assault
secondary: air-to-ground
aircraft:
- UH-1H Iroquois
Dzhugba:
- primary: CAS
secondary: air-to-ground
aircraft:
- Mi-24P Hind-F
#Sukhumi-Babushara
20:
- primary: BARCAP
secondary: any
aircraft:
- MiG-29S Fulcrum-C
#Sochi-Adler
18:
- primary: CAS
secondary: air-to-ground
aircraft:
- Su-24M Fencer-D
#Anapa-Vityazevo
12:
- primary: CAS
secondary: air-to-ground
aircraft:
- Su-25T Frogfoot
- primary: AEW&C
aircraft:
- A-50
- primary: Refueling
aircraft:
- IL-78M
Red CV:
- primary: BARCAP
secondary: any
aircraft:
- SU-33 Flanker-D
#I am aware there is no Russian LHA. This is just for campaign inversion.
Red LHA:
- primary: BAI
secondary: air-to-ground