mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
This makes it so that the mission planning effects are applied only if the package can be fulfilled. For example, breakthrough will be used only if all the BAI missions were fulfilled, not if they will *attempt* to be fulfilled.
20 lines
815 B
Python
20 lines
815 B
Python
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)]
|