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.
24 lines
817 B
Python
24 lines
817 B
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
|
|
from game.commander.tasks.packageplanningtask import PackagePlanningTask
|
|
from game.commander.theaterstate import TheaterState
|
|
from game.data.doctrine import Doctrine
|
|
from game.theater import ControlPoint
|
|
from gen.flights.flight import FlightType
|
|
|
|
|
|
@dataclass
|
|
class PlanBarcap(PackagePlanningTask[ControlPoint]):
|
|
def preconditions_met(self, state: TheaterState) -> bool:
|
|
if not super().preconditions_met(state):
|
|
return False
|
|
return state.barcaps_needed[self.target] > 0
|
|
|
|
def apply_effects(self, state: TheaterState) -> None:
|
|
state.barcaps_needed[self.target] -= 1
|
|
|
|
def propose_flights(self, doctrine: Doctrine) -> None:
|
|
self.propose_flight(FlightType.BARCAP, 2, doctrine.mission_ranges.cap)
|