diff --git a/game/commander/tasks/primitive/airassault.py b/game/commander/tasks/primitive/airassault.py index 48a59a97..bac5d86e 100644 --- a/game/commander/tasks/primitive/airassault.py +++ b/game/commander/tasks/primitive/airassault.py @@ -1,6 +1,7 @@ from __future__ import annotations from dataclasses import dataclass +from random import randint from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.theaterstate import TheaterState @@ -29,6 +30,6 @@ class PlanAirAssault(PackagePlanningTask[ControlPoint]): state.air_assault_targets.remove(self.target) def propose_flights(self) -> None: - self.propose_flight(FlightType.AIR_ASSAULT, 2) + self.propose_flight(FlightType.AIR_ASSAULT, randint(2, 4)) # TODO Validate this.. / is Heli escort possible? self.propose_flight(FlightType.TARCAP, 2) diff --git a/game/commander/tasks/primitive/antiship.py b/game/commander/tasks/primitive/antiship.py index cd3726ba..31b06724 100644 --- a/game/commander/tasks/primitive/antiship.py +++ b/game/commander/tasks/primitive/antiship.py @@ -1,6 +1,7 @@ from __future__ import annotations from dataclasses import dataclass +from random import randint from game.commander.missionproposals import EscortType from game.commander.tasks.packageplanningtask import PackagePlanningTask @@ -22,5 +23,5 @@ class PlanAntiShip(PackagePlanningTask[NavalGroundObject]): state.eliminate_ship(self.target) def propose_flights(self) -> None: - self.propose_flight(FlightType.ANTISHIP, 2) + self.propose_flight(FlightType.ANTISHIP, randint(2, 4)) self.propose_flight(FlightType.ESCORT, 2, EscortType.AirToAir) diff --git a/game/commander/tasks/primitive/antishipping.py b/game/commander/tasks/primitive/antishipping.py index 1c5e2144..cafefb4f 100644 --- a/game/commander/tasks/primitive/antishipping.py +++ b/game/commander/tasks/primitive/antishipping.py @@ -1,6 +1,7 @@ from __future__ import annotations from dataclasses import dataclass +from random import randint from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.theaterstate import TheaterState @@ -21,5 +22,5 @@ class PlanAntiShipping(PackagePlanningTask[CargoShip]): state.enemy_shipping.remove(self.target) def propose_flights(self) -> None: - self.propose_flight(FlightType.ANTISHIP, 2) + self.propose_flight(FlightType.ANTISHIP, randint(2, 4)) self.propose_common_escorts() diff --git a/game/commander/tasks/primitive/bai.py b/game/commander/tasks/primitive/bai.py index a06c151e..6b6f8d9f 100644 --- a/game/commander/tasks/primitive/bai.py +++ b/game/commander/tasks/primitive/bai.py @@ -21,5 +21,6 @@ class PlanBai(PackagePlanningTask[VehicleGroupGroundObject]): state.eliminate_battle_position(self.target) def propose_flights(self) -> None: - self.propose_flight(FlightType.BAI, 2) + tgt_count = self.target.alive_unit_count + self.propose_flight(FlightType.BAI, min(4, (tgt_count // 4) + 1)) self.propose_common_escorts() diff --git a/game/commander/tasks/primitive/barcap.py b/game/commander/tasks/primitive/barcap.py index 4f2f96a5..ba752ea0 100644 --- a/game/commander/tasks/primitive/barcap.py +++ b/game/commander/tasks/primitive/barcap.py @@ -1,6 +1,7 @@ from __future__ import annotations from dataclasses import dataclass +from random import randint from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.theaterstate import TheaterState @@ -21,7 +22,7 @@ class PlanBarcap(PackagePlanningTask[ControlPoint]): state.barcaps_needed[self.target] -= 1 def propose_flights(self) -> None: - self.propose_flight(FlightType.BARCAP, 2) + self.propose_flight(FlightType.BARCAP, randint(2, 4)) @property def purchase_multiplier(self) -> int: diff --git a/game/commander/tasks/primitive/cas.py b/game/commander/tasks/primitive/cas.py index 2785da43..2c4d8740 100644 --- a/game/commander/tasks/primitive/cas.py +++ b/game/commander/tasks/primitive/cas.py @@ -1,6 +1,7 @@ from __future__ import annotations from dataclasses import dataclass +from random import randint from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.theaterstate import TheaterState @@ -29,5 +30,5 @@ class PlanCas(PackagePlanningTask[FrontLine]): state.vulnerable_front_lines.remove(self.target) def propose_flights(self) -> None: - self.propose_flight(FlightType.CAS, 2) + self.propose_flight(FlightType.CAS, randint(2, 4)) self.propose_flight(FlightType.TARCAP, 2) diff --git a/game/commander/tasks/primitive/dead.py b/game/commander/tasks/primitive/dead.py index 4431577f..a8211c89 100644 --- a/game/commander/tasks/primitive/dead.py +++ b/game/commander/tasks/primitive/dead.py @@ -25,7 +25,8 @@ class PlanDead(PackagePlanningTask[IadsGroundObject]): state.eliminate_air_defense(self.target) def propose_flights(self) -> None: - self.propose_flight(FlightType.DEAD, 2) + tgt_count = self.target.alive_unit_count + self.propose_flight(FlightType.DEAD, min(4, (tgt_count // 2) + 1)) # Only include SEAD against SAMs that still have emitters. No need to # suppress an EWR, and SEAD isn't useful against a SAM that no longer has a diff --git a/game/commander/tasks/primitive/oca.py b/game/commander/tasks/primitive/oca.py index 29b54e76..de62b54c 100644 --- a/game/commander/tasks/primitive/oca.py +++ b/game/commander/tasks/primitive/oca.py @@ -1,6 +1,7 @@ from __future__ import annotations from dataclasses import dataclass +from random import randint from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.theaterstate import TheaterState @@ -23,7 +24,7 @@ class PlanOcaStrike(PackagePlanningTask[ControlPoint]): state.oca_targets.remove(self.target) def propose_flights(self) -> None: - self.propose_flight(FlightType.OCA_RUNWAY, 2) + self.propose_flight(FlightType.OCA_RUNWAY, randint(2, 4)) if self.aircraft_cold_start: self.propose_flight(FlightType.OCA_AIRCRAFT, 2) self.propose_common_escorts() diff --git a/game/commander/tasks/primitive/strike.py b/game/commander/tasks/primitive/strike.py index 8bb4a9c5..bf230ed0 100644 --- a/game/commander/tasks/primitive/strike.py +++ b/game/commander/tasks/primitive/strike.py @@ -22,5 +22,6 @@ class PlanStrike(PackagePlanningTask[TheaterGroundObject]): state.strike_targets.remove(self.target) def propose_flights(self) -> None: - self.propose_flight(FlightType.STRIKE, 2) + tgt_count = self.target.alive_unit_count + self.propose_flight(FlightType.STRIKE, min(4, (tgt_count // 2) + 1)) self.propose_common_escorts()