mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Tweak STRIKE ingress tasks
Use carpet-bombing instead, combine all tasks to better support guided/unguided attacks
This commit is contained in:
parent
d75c6d7e9a
commit
cebcee8d32
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user