From b318bc4941e81fdcea0f1b97f00380f0f130c22d Mon Sep 17 00:00:00 2001 From: Raffson Date: Sat, 3 Jun 2023 19:04:25 +0200 Subject: [PATCH] Tweak ingress waypoint tasks for OCA-Runway, STRIKE & FighterSweep --- .../aircraft/waypoints/ocarunwayingress.py | 18 ++++++++++++--- .../aircraft/waypoints/strikeingress.py | 22 +++++++++++++------ .../aircraft/waypoints/sweepingress.py | 10 ++++----- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/game/missiongenerator/aircraft/waypoints/ocarunwayingress.py b/game/missiongenerator/aircraft/waypoints/ocarunwayingress.py index 204de148..84cb5733 100644 --- a/game/missiongenerator/aircraft/waypoints/ocarunwayingress.py +++ b/game/missiongenerator/aircraft/waypoints/ocarunwayingress.py @@ -1,7 +1,7 @@ import logging from dcs.point import MovingPoint -from dcs.task import BombingRunway, OptFormation +from dcs.task import BombingRunway, OptFormation, WeaponType from game.theater import Airfield from .pydcswaypointbuilder import PydcsWaypointBuilder @@ -10,6 +10,7 @@ from .pydcswaypointbuilder import PydcsWaypointBuilder class OcaRunwayIngressBuilder(PydcsWaypointBuilder): def add_tasks(self, waypoint: MovingPoint) -> None: target = self.package.target + waypoint.tasks.append(OptFormation.trail_open()) if not isinstance(target, Airfield): logging.error( "Unexpected target type for runway bombing mission: %s", @@ -18,6 +19,17 @@ class OcaRunwayIngressBuilder(PydcsWaypointBuilder): return waypoint.tasks.append( - BombingRunway(airport_id=target.airport.id, group_attack=True) + BombingRunway( + airport_id=target.airport.id, + weapon_type=WeaponType.Guided, + altitude=waypoint.alt, + group_attack=True, + ) + ) + waypoint.tasks.append( + BombingRunway( + airport_id=target.airport.id, + weapon_type=WeaponType.Bombs, + group_attack=True, + ) ) - waypoint.tasks.append(OptFormation.trail_open()) diff --git a/game/missiongenerator/aircraft/waypoints/strikeingress.py b/game/missiongenerator/aircraft/waypoints/strikeingress.py index 386263d2..2812ab20 100644 --- a/game/missiongenerator/aircraft/waypoints/strikeingress.py +++ b/game/missiongenerator/aircraft/waypoints/strikeingress.py @@ -34,13 +34,21 @@ class StrikeIngressBuilder(PydcsWaypointBuilder): for t in targets: avg_spacing += center.distance_to_point(t.position) avg_spacing /= len(targets) - bombing = CarpetBombing( - center, - weapon_type=WeaponType.Bombs, - expend=Expend.All, - carpet_length=avg_spacing, - altitude=waypoint.alt, - ) + if self.group.task == "Ground Attack": + bombing = CarpetBombing( + center, + weapon_type=WeaponType.Bombs, + expend=Expend.All, + carpet_length=avg_spacing, + altitude=waypoint.alt, + ) + else: + bombing = Bombing( + center, + weapon_type=WeaponType.Bombs, + expend=Expend.All, + altitude=waypoint.alt, + ) waypoint.tasks.append(bombing) def add_strike_tasks( diff --git a/game/missiongenerator/aircraft/waypoints/sweepingress.py b/game/missiongenerator/aircraft/waypoints/sweepingress.py index c4e78909..791227fd 100644 --- a/game/missiongenerator/aircraft/waypoints/sweepingress.py +++ b/game/missiongenerator/aircraft/waypoints/sweepingress.py @@ -10,6 +10,11 @@ from .pydcswaypointbuilder import PydcsWaypointBuilder class SweepIngressBuilder(PydcsWaypointBuilder): def add_tasks(self, waypoint: MovingPoint) -> None: + if self.flight.count < 4: + waypoint.tasks.append(OptFormation.line_abreast_open()) + else: + waypoint.tasks.append(OptFormation.spread_four_open()) + if not isinstance(self.flight.flight_plan, SweepFlightPlan): flight_plan_type = self.flight.flight_plan.__class__.__name__ logging.error( @@ -27,8 +32,3 @@ class SweepIngressBuilder(PydcsWaypointBuilder): ], ) ) - - if self.flight.count < 4: - waypoint.tasks.append(OptFormation.line_abreast_open()) - else: - waypoint.tasks.append(OptFormation.spread_four_open())