From 9568bc7ea69e6f38e1828347525a416d2e22a25f Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Tue, 13 Jul 2021 17:04:49 -0700 Subject: [PATCH] Fix inversion of AI management for opfor. --- game/coalition.py | 6 +++--- .../compound/reduceenemyfrontlinecapacity.py | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 game/commander/tasks/compound/reduceenemyfrontlinecapacity.py diff --git a/game/coalition.py b/game/coalition.py index 8b0ff812..1922f3ce 100644 --- a/game/coalition.py +++ b/game/coalition.py @@ -206,9 +206,9 @@ class Coalition: manage_front_line = self.game.settings.automate_front_line_reinforcements manage_aircraft = self.game.settings.automate_aircraft_reinforcements else: - manage_runways = False - manage_front_line = False - manage_aircraft = False + manage_runways = True + manage_front_line = True + manage_aircraft = True self.budget = ProcurementAi( self.game, diff --git a/game/commander/tasks/compound/reduceenemyfrontlinecapacity.py b/game/commander/tasks/compound/reduceenemyfrontlinecapacity.py new file mode 100644 index 00000000..327acecd --- /dev/null +++ b/game/commander/tasks/compound/reduceenemyfrontlinecapacity.py @@ -0,0 +1,19 @@ +from collections import Iterator +from dataclasses import dataclass + +from game.commander.tasks.primitive.aggressiveattack import AggressiveAttack +from game.commander.tasks.primitive.cas import PlanCas +from game.commander.tasks.primitive.eliminationattack import EliminationAttack +from game.commander.theaterstate import TheaterState +from game.htn import CompoundTask, Method +from game.theater import FrontLine + + +@dataclass(frozen=True) +class DestroyEnemyGroundUnits(CompoundTask[TheaterState]): + front_line: FrontLine + + def each_valid_method(self, state: TheaterState) -> Iterator[Method[TheaterState]]: + yield [EliminationAttack(self.front_line, state.context.coalition.player)] + yield [AggressiveAttack(self.front_line, state.context.coalition.player)] + yield [PlanCas(self.front_line)]