diff --git a/game/ato/flightplans/barcap.py b/game/ato/flightplans/barcap.py index 4815a88f..22548061 100644 --- a/game/ato/flightplans/barcap.py +++ b/game/ato/flightplans/barcap.py @@ -18,7 +18,7 @@ class BarCapFlightPlan(PatrollingFlightPlan[PatrollingLayout]): @property def patrol_duration(self) -> timedelta: - return self.flight.coalition.doctrine.cap_duration + return self.flight.coalition.game.settings.desired_barcap_mission_duration @property def patrol_speed(self) -> Speed: diff --git a/game/commander/theaterstate.py b/game/commander/theaterstate.py index acd35501..7fd983db 100644 --- a/game/commander/theaterstate.py +++ b/game/commander/theaterstate.py @@ -171,7 +171,7 @@ class TheaterState(WorldState["TheaterState"]): # Plan enough rounds of CAP that the target has coverage over the expected # mission duration. mission_duration = game.settings.desired_player_mission_duration.total_seconds() - barcap_duration = coalition.doctrine.cap_duration.total_seconds() + barcap_duration = game.settings.desired_barcap_mission_duration.total_seconds() barcap_rounds = math.ceil(mission_duration / barcap_duration) battle_postitions: Dict[ControlPoint, BattlePositions] = { diff --git a/game/settings/settings.py b/game/settings/settings.py index 13198a8e..a5f91190 100644 --- a/game/settings/settings.py +++ b/game/settings/settings.py @@ -214,6 +214,16 @@ class Settings: ), ) # CAMPAIGN DOCTRINE + desired_barcap_mission_duration: timedelta = minutes_option( + "Desired BARCAP on-station time", + page=CAMPAIGN_DOCTRINE_PAGE, + section=GENERAL_SECTION, + default=timedelta(minutes=60), + min=30, + max=150, + detail="Implicitly determines the number of BARCAPs planned by taking the mission duration" + " and dividing it by the desired on-station time.", + ) desired_awacs_mission_duration: timedelta = minutes_option( "Desired AWACS on-station time", page=CAMPAIGN_DOCTRINE_PAGE,