diff --git a/game/ato/flightplans/waypointbuilder.py b/game/ato/flightplans/waypointbuilder.py index 2c5a72a4..640ddb0b 100644 --- a/game/ato/flightplans/waypointbuilder.py +++ b/game/ato/flightplans/waypointbuilder.py @@ -129,10 +129,9 @@ class WaypointBuilder: position = divert.position altitude_type: AltitudeReference if isinstance(divert, OffMapSpawn): - if self.is_helo: - altitude = meters(500) - else: - altitude = self.doctrine.rendezvous_altitude + altitude = ( + meters(500) if self.is_helo else self.doctrine.rendezvous_altitude + ) altitude_type = "BARO" else: altitude = meters(0) diff --git a/game/missiongenerator/aircraft/waypoints/strikeingress.py b/game/missiongenerator/aircraft/waypoints/strikeingress.py index 375bedf6..b10ca422 100644 --- a/game/missiongenerator/aircraft/waypoints/strikeingress.py +++ b/game/missiongenerator/aircraft/waypoints/strikeingress.py @@ -3,9 +3,9 @@ import copy from dcs import Point from dcs.planes import B_17G, B_52H, Tu_22M3, B_1B from dcs.point import MovingPoint -from dcs.task import Bombing, Expend, OptFormation, WeaponType +from dcs.task import Bombing, Expend, OptFormation, WeaponType, CarpetBombing -from game.utils import mach, Distance +from game.utils import mach from .pydcswaypointbuilder import PydcsWaypointBuilder @@ -13,15 +13,12 @@ class StrikeIngressBuilder(PydcsWaypointBuilder): def add_tasks(self, waypoint: MovingPoint) -> None: bomber = self.group.units[0].unit_type in [B_17G, Tu_22M3] bomber_guided = self.group.units[0].unit_type in [B_1B, B_52H] - if bomber_guided: - self.add_strike_tasks(waypoint, WeaponType.Guided) - self.add_bombing_tasks(waypoint) - elif bomber: - self.add_bombing_tasks(waypoint) - else: - self.add_strike_tasks(waypoint) - waypoint.tasks.append(OptFormation.trail_open()) + if bomber_guided or not bomber: + self.add_strike_tasks(waypoint, WeaponType.Guided) + + waypoint.tasks.append(OptFormation.ww2_bomber_element_close()) + self.add_bombing_tasks(waypoint) def add_bombing_tasks(self, waypoint: MovingPoint) -> None: targets = self.waypoint.targets @@ -32,9 +29,15 @@ class StrikeIngressBuilder(PydcsWaypointBuilder): for target in targets[1:]: center += target.position center /= len(targets) - ga = True if self.flight.count > 1 else False - bombing = Bombing( - center, weapon_type=WeaponType.Bombs, expend=Expend.All, group_attack=ga + avg_spacing = 0.0 + 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, ) waypoint.tasks.append(bombing) @@ -49,7 +52,8 @@ class StrikeIngressBuilder(PydcsWaypointBuilder): bombing.params["expend"] = Expend.All.value waypoint.tasks.append(bombing) - waypoint.speed = mach(0.85, Distance.from_feet(20000)).meters_per_second + doctrine = self.flight.coalition.doctrine + waypoint.speed = mach(0.85, doctrine.ingress_altitude).meters_per_second # Register special waypoints self.register_special_waypoints(self.waypoint.targets)