mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +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
787 B
Python
20 lines
787 B
Python
from collections import Iterator
|
|
from dataclasses import dataclass
|
|
|
|
from game.commander.tasks.primitive.cas import PlanCas
|
|
from game.commander.tasks.primitive.defensivestance import DefensiveStance
|
|
from game.commander.tasks.primitive.retreatstance import RetreatStance
|
|
from game.commander.theaterstate import TheaterState
|
|
from game.htn import CompoundTask, Method
|
|
from game.theater import FrontLine
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class DefendBase(CompoundTask[TheaterState]):
|
|
front_line: FrontLine
|
|
|
|
def each_valid_method(self, state: TheaterState) -> Iterator[Method[TheaterState]]:
|
|
yield [DefensiveStance(self.front_line, state.context.coalition.player)]
|
|
yield [RetreatStance(self.front_line, state.context.coalition.player)]
|
|
yield [PlanCas(self.front_line)]
|