From c51fa5c1dfa58f9901535b39615cebbd3aec268c Mon Sep 17 00:00:00 2001 From: MetalStormGhost Date: Tue, 1 Aug 2023 19:12:41 +0300 Subject: [PATCH] CAS engagement range New option in Settings: CAS engagement range (nmi) --- changelog.md | 3 ++- game/ato/flightplans/cas.py | 7 ++++--- game/missiongenerator/aircraft/waypoints/casingress.py | 6 +++++- game/settings/settings.py | 8 ++++++++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/changelog.md b/changelog.md index be659e79..5dd919d6 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,7 @@ * **[Package Planning]** Option to "Auto-Create" package * **[Modding]** Custom weapons injection system (definition in aircraft's yaml file) * **[Payload Editor]** Ability to save/back-up payloads +* **[Options]** New option in Settings: CAS engagement range (nmi) ## Fixes * **[Mission Generation]** Anti-ship strikes should use "group attack" in their attack-task @@ -38,7 +39,7 @@ * AEW&C threat buffer distance (nmi) * Theater tanker threat buffer distance (nmi) * **[Options]** Improved the option to configure OPFOR autoplanner aggressiveness. The AI might now take even more risks and plan missions against defended targets. -* Added three new options in Settings: +* **[Options]** Added three new options in Settings: * Autoplanner plans refueling flights for Strike packages * Autoplanner plans refueling flights for OCA packages * Autoplanner plans refueling flights for DEAD packages diff --git a/game/ato/flightplans/cas.py b/game/ato/flightplans/cas.py index 0011bd9a..275d1b09 100644 --- a/game/ato/flightplans/cas.py +++ b/game/ato/flightplans/cas.py @@ -6,7 +6,7 @@ from datetime import timedelta from typing import TYPE_CHECKING, Type from game.theater import FrontLine -from game.utils import Distance, Speed, kph, meters +from game.utils import Distance, Speed, kph, meters, nautical_miles from .ibuilder import IBuilder from .invalidobjectivelocation import InvalidObjectiveLocation from .patrolling import PatrollingFlightPlan, PatrollingLayout @@ -53,8 +53,9 @@ class CasFlightPlan(PatrollingFlightPlan[CasLayout], UiZoneDisplay): @property def engagement_distance(self) -> Distance: - max_length = self.flight.coalition.game.settings.max_frontline_width * 1000 - return meters(max_length) / 2 + return nautical_miles( + self.flight.coalition.game.settings.cas_engagement_range_distance + ) @property def combat_speed_waypoints(self) -> set[FlightWaypoint]: diff --git a/game/missiongenerator/aircraft/waypoints/casingress.py b/game/missiongenerator/aircraft/waypoints/casingress.py index d63b20dc..af891c5c 100644 --- a/game/missiongenerator/aircraft/waypoints/casingress.py +++ b/game/missiongenerator/aircraft/waypoints/casingress.py @@ -26,7 +26,11 @@ class CasIngressBuilder(PydcsWaypointBuilder): logging.error("No CAS waypoint found. Falling back to search and engage") waypoint.add_task( EngageTargets( - max_distance=int(nautical_miles(10).meters), + max_distance=int( + nautical_miles( + self.flight.coalition.game.settings.cas_engagement_range_distance + ).meters + ), targets=[ Targets.All.GroundUnits.GroundVehicles, Targets.All.GroundUnits.AirDefence.AAA, diff --git a/game/settings/settings.py b/game/settings/settings.py index 0cd19258..c6c10515 100644 --- a/game/settings/settings.py +++ b/game/settings/settings.py @@ -267,6 +267,14 @@ class Settings: "lower threat range generally means less BARCAPs are planned." ), ) + cas_engagement_range_distance: int = bounded_int_option( + "CAS engagement range (nmi)", + page=CAMPAIGN_DOCTRINE_PAGE, + section=DOCTRINE_DISTANCES_SECTION, + default=10, + min=0, + max=100, + ) sead_sweep_engagement_range_distance: int = bounded_int_option( "SEAD Sweep engagement range (nmi)", page=CAMPAIGN_DOCTRINE_PAGE,