From 3f5b93a5c19990f4bba86720bd6a3b21355f693f Mon Sep 17 00:00:00 2001 From: Raffson Date: Mon, 12 Feb 2024 00:04:13 +0100 Subject: [PATCH] Introduce AttackShips compound task --- game/commander/tasks/compound/attackships.py | 15 +++++++++++++++ game/commander/tasks/compound/nextaction.py | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 game/commander/tasks/compound/attackships.py diff --git a/game/commander/tasks/compound/attackships.py b/game/commander/tasks/compound/attackships.py new file mode 100644 index 00000000..e035c65b --- /dev/null +++ b/game/commander/tasks/compound/attackships.py @@ -0,0 +1,15 @@ +from collections.abc import Iterator + +from game.commander.tasks.primitive.antiship import PlanAntiShip +from game.commander.theaterstate import TheaterState +from game.htn import CompoundTask, Method + + +class AttackShips(CompoundTask[TheaterState]): + def each_valid_method(self, state: TheaterState) -> Iterator[Method[TheaterState]]: + for ship in state.enemy_ships: + # Ammo depots are targeted based on the needs of the front line by + # ReduceEnemyFrontLineCapacity. No reason to target them before that front + # line is active. + if ship.has_live_radar_sam: + yield [PlanAntiShip(ship)] diff --git a/game/commander/tasks/compound/nextaction.py b/game/commander/tasks/compound/nextaction.py index 19c197e3..4f1aac5e 100644 --- a/game/commander/tasks/compound/nextaction.py +++ b/game/commander/tasks/compound/nextaction.py @@ -6,6 +6,7 @@ from game.commander.tasks.compound.attackairinfrastructure import ( ) from game.commander.tasks.compound.attackbattlepositions import AttackBattlePositions from game.commander.tasks.compound.attackbuildings import AttackBuildings +from game.commander.tasks.compound.attackships import AttackShips from game.commander.tasks.compound.capturebases import CaptureBases from game.commander.tasks.compound.defendbases import DefendBases from game.commander.tasks.compound.degradeiads import DegradeIads @@ -32,3 +33,4 @@ class PlanNextAction(CompoundTask[TheaterState]): yield [CaptureBases()] yield [AttackAirInfrastructure(self.aircraft_cold_start)] yield [AttackBuildings()] + yield [AttackShips()]