Vary number of aircraft for main task

The following tasks plan according to the number of targets left:
- BAI
- ANTISHIP
- DEAD
- STRIKE

Other tasks use a random value between 2 and 4.
This commit is contained in:
Raffson 2022-08-15 01:20:14 +02:00
parent a14bf6d1ba
commit 1f4cca329e
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
9 changed files with 18 additions and 9 deletions

View File

@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass from dataclasses import dataclass
from random import randint
from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.tasks.packageplanningtask import PackagePlanningTask
from game.commander.theaterstate import TheaterState from game.commander.theaterstate import TheaterState
@ -29,6 +30,6 @@ class PlanAirAssault(PackagePlanningTask[ControlPoint]):
state.air_assault_targets.remove(self.target) state.air_assault_targets.remove(self.target)
def propose_flights(self) -> None: 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? # TODO Validate this.. / is Heli escort possible?
self.propose_flight(FlightType.TARCAP, 2) self.propose_flight(FlightType.TARCAP, 2)

View File

@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass from dataclasses import dataclass
from random import randint
from game.commander.missionproposals import EscortType from game.commander.missionproposals import EscortType
from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.tasks.packageplanningtask import PackagePlanningTask
@ -22,5 +23,5 @@ class PlanAntiShip(PackagePlanningTask[NavalGroundObject]):
state.eliminate_ship(self.target) state.eliminate_ship(self.target)
def propose_flights(self) -> None: 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) self.propose_flight(FlightType.ESCORT, 2, EscortType.AirToAir)

View File

@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass from dataclasses import dataclass
from random import randint
from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.tasks.packageplanningtask import PackagePlanningTask
from game.commander.theaterstate import TheaterState from game.commander.theaterstate import TheaterState
@ -21,5 +22,5 @@ class PlanAntiShipping(PackagePlanningTask[CargoShip]):
state.enemy_shipping.remove(self.target) state.enemy_shipping.remove(self.target)
def propose_flights(self) -> None: def propose_flights(self) -> None:
self.propose_flight(FlightType.ANTISHIP, 2) self.propose_flight(FlightType.ANTISHIP, randint(2, 4))
self.propose_common_escorts() self.propose_common_escorts()

View File

@ -21,5 +21,6 @@ class PlanBai(PackagePlanningTask[VehicleGroupGroundObject]):
state.eliminate_battle_position(self.target) state.eliminate_battle_position(self.target)
def propose_flights(self) -> None: 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() self.propose_common_escorts()

View File

@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass from dataclasses import dataclass
from random import randint
from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.tasks.packageplanningtask import PackagePlanningTask
from game.commander.theaterstate import TheaterState from game.commander.theaterstate import TheaterState
@ -21,7 +22,7 @@ class PlanBarcap(PackagePlanningTask[ControlPoint]):
state.barcaps_needed[self.target] -= 1 state.barcaps_needed[self.target] -= 1
def propose_flights(self) -> None: def propose_flights(self) -> None:
self.propose_flight(FlightType.BARCAP, 2) self.propose_flight(FlightType.BARCAP, randint(2, 4))
@property @property
def purchase_multiplier(self) -> int: def purchase_multiplier(self) -> int:

View File

@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass from dataclasses import dataclass
from random import randint
from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.tasks.packageplanningtask import PackagePlanningTask
from game.commander.theaterstate import TheaterState from game.commander.theaterstate import TheaterState
@ -29,5 +30,5 @@ class PlanCas(PackagePlanningTask[FrontLine]):
state.vulnerable_front_lines.remove(self.target) state.vulnerable_front_lines.remove(self.target)
def propose_flights(self) -> None: 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) self.propose_flight(FlightType.TARCAP, 2)

View File

@ -25,7 +25,8 @@ class PlanDead(PackagePlanningTask[IadsGroundObject]):
state.eliminate_air_defense(self.target) state.eliminate_air_defense(self.target)
def propose_flights(self) -> None: 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 # 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 # suppress an EWR, and SEAD isn't useful against a SAM that no longer has a

View File

@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass from dataclasses import dataclass
from random import randint
from game.commander.tasks.packageplanningtask import PackagePlanningTask from game.commander.tasks.packageplanningtask import PackagePlanningTask
from game.commander.theaterstate import TheaterState from game.commander.theaterstate import TheaterState
@ -23,7 +24,7 @@ class PlanOcaStrike(PackagePlanningTask[ControlPoint]):
state.oca_targets.remove(self.target) state.oca_targets.remove(self.target)
def propose_flights(self) -> None: 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: if self.aircraft_cold_start:
self.propose_flight(FlightType.OCA_AIRCRAFT, 2) self.propose_flight(FlightType.OCA_AIRCRAFT, 2)
self.propose_common_escorts() self.propose_common_escorts()

View File

@ -22,5 +22,6 @@ class PlanStrike(PackagePlanningTask[TheaterGroundObject]):
state.strike_targets.remove(self.target) state.strike_targets.remove(self.target)
def propose_flights(self) -> None: 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() self.propose_common_escorts()