diff --git a/game/commander/packagefulfiller.py b/game/commander/packagefulfiller.py index be903548..d4d8352b 100644 --- a/game/commander/packagefulfiller.py +++ b/game/commander/packagefulfiller.py @@ -105,8 +105,9 @@ class PackageFulfiller: missing_types_str = ", ".join(sorted([t.name for t in missing_types])) builder.release_planned_aircraft() + color = "Blue" if self.is_player else "Red" logging.debug( - f"Not enough aircraft in range for {mission.location.name} " + f"{color}: not enough aircraft in range for {mission.location.name} " f"capable of: {missing_types_str}" ) diff --git a/game/commander/tasks/primitive/antiship.py b/game/commander/tasks/primitive/antiship.py index 10a55477..3f85c74c 100644 --- a/game/commander/tasks/primitive/antiship.py +++ b/game/commander/tasks/primitive/antiship.py @@ -13,11 +13,11 @@ from gen.flights.flight import FlightType @dataclass class PlanAntiShip(PackagePlanningTask[NavalGroundObject]): def preconditions_met(self, state: TheaterState) -> bool: - if not super().preconditions_met(state): - return False if self.target not in state.threatening_air_defenses: return False - return self.target_area_preconditions_met(state, ignore_iads=True) + if not self.target_area_preconditions_met(state, ignore_iads=True): + return False + return super().preconditions_met(state) def apply_effects(self, state: TheaterState) -> None: state.eliminate_ship(self.target) diff --git a/game/commander/tasks/primitive/antishipping.py b/game/commander/tasks/primitive/antishipping.py index 64be2cb9..303a9af1 100644 --- a/game/commander/tasks/primitive/antishipping.py +++ b/game/commander/tasks/primitive/antishipping.py @@ -12,11 +12,11 @@ from gen.flights.flight import FlightType @dataclass class PlanAntiShipping(PackagePlanningTask[CargoShip]): def preconditions_met(self, state: TheaterState) -> bool: - if not super().preconditions_met(state): - return False if self.target not in state.enemy_shipping: return False - return self.target_area_preconditions_met(state) + if not self.target_area_preconditions_met(state): + return False + return super().preconditions_met(state) def apply_effects(self, state: TheaterState) -> None: state.enemy_shipping.remove(self.target) diff --git a/game/commander/tasks/primitive/bai.py b/game/commander/tasks/primitive/bai.py index 352aa0b4..f9d61818 100644 --- a/game/commander/tasks/primitive/bai.py +++ b/game/commander/tasks/primitive/bai.py @@ -12,11 +12,11 @@ from gen.flights.flight import FlightType @dataclass class PlanBai(PackagePlanningTask[VehicleGroupGroundObject]): def preconditions_met(self, state: TheaterState) -> bool: - if not super().preconditions_met(state): - return False if not state.has_garrison(self.target): return False - return self.target_area_preconditions_met(state) + if not self.target_area_preconditions_met(state): + return False + return super().preconditions_met(state) def apply_effects(self, state: TheaterState) -> None: state.eliminate_garrison(self.target) diff --git a/game/commander/tasks/primitive/barcap.py b/game/commander/tasks/primitive/barcap.py index 8d3cf456..77302adf 100644 --- a/game/commander/tasks/primitive/barcap.py +++ b/game/commander/tasks/primitive/barcap.py @@ -12,9 +12,9 @@ from gen.flights.flight import FlightType @dataclass class PlanBarcap(PackagePlanningTask[ControlPoint]): def preconditions_met(self, state: TheaterState) -> bool: - if not super().preconditions_met(state): + if not state.barcaps_needed[self.target]: return False - return state.barcaps_needed[self.target] > 0 + return super().preconditions_met(state) def apply_effects(self, state: TheaterState) -> None: state.barcaps_needed[self.target] -= 1 diff --git a/game/commander/tasks/primitive/cas.py b/game/commander/tasks/primitive/cas.py index 14255c2e..7a9997ff 100644 --- a/game/commander/tasks/primitive/cas.py +++ b/game/commander/tasks/primitive/cas.py @@ -12,9 +12,9 @@ from gen.flights.flight import FlightType @dataclass class PlanCas(PackagePlanningTask[FrontLine]): def preconditions_met(self, state: TheaterState) -> bool: - if not super().preconditions_met(state): + if self.target not in state.vulnerable_front_lines: return False - return self.target in state.vulnerable_front_lines + return super().preconditions_met(state) def apply_effects(self, state: TheaterState) -> None: state.vulnerable_front_lines.remove(self.target) diff --git a/game/commander/tasks/primitive/convoyinterdiction.py b/game/commander/tasks/primitive/convoyinterdiction.py index 9026057d..11ed4ee4 100644 --- a/game/commander/tasks/primitive/convoyinterdiction.py +++ b/game/commander/tasks/primitive/convoyinterdiction.py @@ -12,11 +12,11 @@ from gen.flights.flight import FlightType @dataclass class PlanConvoyInterdiction(PackagePlanningTask[Convoy]): def preconditions_met(self, state: TheaterState) -> bool: - if not super().preconditions_met(state): - return False if self.target not in state.enemy_convoys: return False - return self.target_area_preconditions_met(state) + if not self.target_area_preconditions_met(state): + return False + return super().preconditions_met(state) def apply_effects(self, state: TheaterState) -> None: state.enemy_convoys.remove(self.target) diff --git a/game/commander/tasks/primitive/dead.py b/game/commander/tasks/primitive/dead.py index 77ca80cb..3861908c 100644 --- a/game/commander/tasks/primitive/dead.py +++ b/game/commander/tasks/primitive/dead.py @@ -13,14 +13,14 @@ from gen.flights.flight import FlightType @dataclass class PlanDead(PackagePlanningTask[IadsGroundObject]): def preconditions_met(self, state: TheaterState) -> bool: - if not super().preconditions_met(state): - return False if ( self.target not in state.threatening_air_defenses and self.target not in state.detecting_air_defenses ): return False - return self.target_area_preconditions_met(state, ignore_iads=True) + if not self.target_area_preconditions_met(state, ignore_iads=True): + return False + return super().preconditions_met(state) def apply_effects(self, state: TheaterState) -> None: state.eliminate_air_defense(self.target) diff --git a/game/commander/tasks/primitive/oca.py b/game/commander/tasks/primitive/oca.py index f3d43b18..4c995f75 100644 --- a/game/commander/tasks/primitive/oca.py +++ b/game/commander/tasks/primitive/oca.py @@ -14,11 +14,11 @@ class PlanOcaStrike(PackagePlanningTask[ControlPoint]): aircraft_cold_start: bool def preconditions_met(self, state: TheaterState) -> bool: - if not super().preconditions_met(state): - return False if self.target not in state.oca_targets: return False - return self.target_area_preconditions_met(state) + if not self.target_area_preconditions_met(state): + return False + return super().preconditions_met(state) def apply_effects(self, state: TheaterState) -> None: state.oca_targets.remove(self.target) diff --git a/game/commander/tasks/primitive/strike.py b/game/commander/tasks/primitive/strike.py index 7090eb86..ce322dad 100644 --- a/game/commander/tasks/primitive/strike.py +++ b/game/commander/tasks/primitive/strike.py @@ -13,11 +13,11 @@ from gen.flights.flight import FlightType @dataclass class PlanStrike(PackagePlanningTask[TheaterGroundObject[Any]]): def preconditions_met(self, state: TheaterState) -> bool: - if not super().preconditions_met(state): - return False if self.target not in state.strike_targets: return False - return self.target_area_preconditions_met(state) + if not self.target_area_preconditions_met(state): + return False + return super().preconditions_met(state) def apply_effects(self, state: TheaterState) -> None: state.strike_targets.remove(self.target)