mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Fix some CAS planning quirks.
CAS would never be planned for turn 0 because there were no enemy ground units, so a breakthrough attack was planned and CAS was considered unnecessary. Fix that by rejecting all frontline stance tasks when there are no *friendly* ground units to command. Another issue is that CAS missions were being planned even when there were no enemy front line forces. Skip planning in that case except on turn 0 since we expect there to be enemy ground units on turn 1. Fixes https://github.com/dcs-liberation/dcs_liberation/issues/1629
This commit is contained in:
@@ -66,6 +66,8 @@ class FrontLineStanceTask(TheaterCommanderTask, ABC):
|
||||
return False
|
||||
if self.better_stance_already_set(state):
|
||||
return False
|
||||
if self.friendly_cp.deployable_front_line_units == 0:
|
||||
return False
|
||||
return self.have_sufficient_front_line_advantage
|
||||
|
||||
def apply_effects(self, state: TheaterState) -> None:
|
||||
|
||||
@@ -13,6 +13,16 @@ class PlanCas(PackagePlanningTask[FrontLine]):
|
||||
def preconditions_met(self, state: TheaterState) -> bool:
|
||||
if self.target not in state.vulnerable_front_lines:
|
||||
return False
|
||||
|
||||
# Do not bother planning CAS when there are no enemy ground units at the front.
|
||||
# An exception is made for turn zero since that's not being truly planned, but
|
||||
# just to determine what missions should be planned on turn 1 (when there *will*
|
||||
# be ground units) and what aircraft should be ordered.
|
||||
enemy_cp = self.target.control_point_friendly_to(
|
||||
player=not state.context.coalition.player
|
||||
)
|
||||
if enemy_cp.deployable_front_line_units == 0 and state.context.turn > 0:
|
||||
return False
|
||||
return super().preconditions_met(state)
|
||||
|
||||
def apply_effects(self, state: TheaterState) -> None:
|
||||
|
||||
Reference in New Issue
Block a user