mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Improve AI strike targeting.
We were setting up all the correct *target* waypoints but the AI doesn't use the target waypoints; they use the targets property of the ingress waypoint. This meant that the flight plan looked correct in the UI and was correct for players but the tasks were set up incorrectly for the AI because building TGOs are aggravatingly multiple TGOs with the same name in the implementation. Mission targets now enumerate their own strike targets so that this mistake is harder to make in the future. This won't be perfect, the AI is still not able to parallelize tasks and since buildings aren't groups they can only attack one structure at a time, but they'll now at least switch to the next target after hitting the first one. As a bonus, stop bombing the dead buildings. Fixes https://github.com/dcs-liberation/dcs_liberation/issues/235 Fixes https://github.com/dcs-liberation/dcs_liberation/issues/244
This commit is contained in:
@@ -2,10 +2,11 @@ from __future__ import annotations
|
||||
|
||||
from datetime import timedelta
|
||||
from enum import Enum
|
||||
from typing import List, Optional, TYPE_CHECKING, Type
|
||||
from typing import List, Optional, TYPE_CHECKING, Type, Union
|
||||
|
||||
from dcs.mapping import Point
|
||||
from dcs.point import MovingPoint, PointAction
|
||||
from dcs.unit import Unit
|
||||
from dcs.unittype import FlyingType
|
||||
|
||||
from game import db
|
||||
@@ -107,7 +108,7 @@ class FlightWaypoint:
|
||||
# Only used in the waypoint list in the flight edit page. No sense
|
||||
# having three names. A short and long form is enough.
|
||||
self.description = ""
|
||||
self.targets: List[MissionTarget] = []
|
||||
self.targets: List[Union[MissionTarget, Unit]] = []
|
||||
self.obj_name = ""
|
||||
self.pretty_name = ""
|
||||
self.only_for_player = False
|
||||
|
||||
@@ -202,8 +202,7 @@ class WaypointBuilder:
|
||||
waypoint.pretty_name = "INGRESS on " + objective.name
|
||||
waypoint.description = "INGRESS on " + objective.name
|
||||
waypoint.name = "INGRESS"
|
||||
# TODO: This seems wrong, but it's what was there before.
|
||||
waypoint.targets.append(objective)
|
||||
waypoint.targets = objective.strike_targets
|
||||
return waypoint
|
||||
|
||||
def egress(self, position: Point, target: MissionTarget) -> FlightWaypoint:
|
||||
|
||||
Reference in New Issue
Block a user