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
707 B
Python
20 lines
707 B
Python
from collections import Iterator
|
|
from dataclasses import dataclass
|
|
|
|
from game.commander.tasks.compound.destroyenemygroundunits import (
|
|
DestroyEnemyGroundUnits,
|
|
)
|
|
from game.commander.tasks.primitive.breakthroughattack import BreakthroughAttack
|
|
from game.commander.theaterstate import TheaterState
|
|
from game.htn import CompoundTask, Method
|
|
from game.theater import FrontLine
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class CaptureBase(CompoundTask[TheaterState]):
|
|
front_line: FrontLine
|
|
|
|
def each_valid_method(self, state: TheaterState) -> Iterator[Method[TheaterState]]:
|
|
yield [BreakthroughAttack(self.front_line, state.context.coalition.player)]
|
|
yield [DestroyEnemyGroundUnits(self.front_line)]
|