Improve prioritization of garrison targeting.

Garrison groups should be preferred with the following priority:

1. Groups blocking base capture
2. Groups at bases connected to an active front line
3. Rear guard units

Previously they were being prioritized based on the distance to the
closest friendy control point, which is similar to this but an
aggressively placed carrier could throw it off.
This commit is contained in:
Dan Albert
2021-07-12 16:59:49 -07:00
parent cd558daf5a
commit 7e4390d743
5 changed files with 70 additions and 14 deletions

View File

@@ -7,5 +7,5 @@ from game.htn import CompoundTask, Method
class AttackGarrisons(CompoundTask[TheaterState]):
def each_valid_method(self, state: TheaterState) -> Iterator[Method[TheaterState]]:
for garrison in state.enemy_garrisons:
for garrison in state.enemy_garrisons.in_priority_order:
yield [PlanBai(garrison)]

View File

@@ -17,7 +17,7 @@ class PlanBai(PackagePlanningTask[VehicleGroupGroundObject]):
return self.target_area_preconditions_met(state)
def apply_effects(self, state: TheaterState) -> None:
state.enemy_garrisons.remove(self.target)
state.enemy_garrisons.eliminate(self.target)
def propose_flights(self, doctrine: Doctrine) -> None:
self.propose_flight(FlightType.BAI, 2, doctrine.mission_ranges.offensive)