mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from typing import TYPE_CHECKING
|
|
|
|
from game.commander.missionproposals import ProposedMission, ProposedFlight
|
|
from game.commander.tasks.theatercommandertask import TheaterCommanderTask
|
|
from game.commander.theaterstate import TheaterState
|
|
from game.profiling import MultiEventTracer
|
|
from game.theater import ControlPoint
|
|
from gen.flights.flight import FlightType
|
|
|
|
if TYPE_CHECKING:
|
|
from gen.flights.ai_flight_planner import CoalitionMissionPlanner
|
|
|
|
|
|
@dataclass
|
|
class PlanBarcap(TheaterCommanderTask):
|
|
target: ControlPoint
|
|
rounds: int
|
|
|
|
def preconditions_met(self, state: TheaterState) -> bool:
|
|
if state.player and not state.ato_automation_enabled:
|
|
return False
|
|
return self.target in state.vulnerable_control_points
|
|
|
|
def apply_effects(self, state: TheaterState) -> None:
|
|
state.vulnerable_control_points.remove(self.target)
|
|
|
|
def execute(
|
|
self, mission_planner: CoalitionMissionPlanner, tracer: MultiEventTracer
|
|
) -> None:
|
|
for _ in range(self.rounds):
|
|
mission_planner.plan_mission(
|
|
ProposedMission(
|
|
self.target,
|
|
[
|
|
ProposedFlight(
|
|
FlightType.BARCAP,
|
|
2,
|
|
mission_planner.doctrine.mission_ranges.cap,
|
|
),
|
|
],
|
|
),
|
|
tracer,
|
|
)
|