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

@@ -2,7 +2,7 @@ from __future__ import annotations
import math
import random
from dataclasses import dataclass
from dataclasses import dataclass, field
from typing import Iterator, List, Optional, TYPE_CHECKING, Tuple
from game import db
@@ -262,7 +262,7 @@ class ProcurementAi:
return budget, False
def purchase_aircraft(self, budget: float) -> float:
for request in self.game.procurement_requests_for(self.is_player):
for request in self.game.coalition_for(self.is_player).procurement_requests:
if not list(self.best_airbases_for(request)):
# No airbases in range of this request. Skip it.
continue