Dedup purchase requests.

Since the theater commander runs once per campaign action, missions that
do not have aircraft available may be checked more than once a turn.
Without deduping requests this can lead to cases where the AI buys
dozens of tankers on turn 0.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/1470
This commit is contained in:
Dan Albert
2021-08-01 13:09:48 -07:00
parent a3e3e9046f
commit edf95ea9fb
9 changed files with 93 additions and 19 deletions

View File

@@ -10,6 +10,8 @@ from gen.flights.flight import FlightType
@dataclass
class PlanBarcap(PackagePlanningTask[ControlPoint]):
max_orders: int
def preconditions_met(self, state: TheaterState) -> bool:
if not state.barcaps_needed[self.target]:
return False
@@ -20,3 +22,7 @@ class PlanBarcap(PackagePlanningTask[ControlPoint]):
def propose_flights(self) -> None:
self.propose_flight(FlightType.BARCAP, 2)
@property
def purchase_multiplier(self) -> int:
return self.max_orders