diff --git a/game/commander/objectivefinder.py b/game/commander/objectivefinder.py index bc2e17ec..d00905da 100644 --- a/game/commander/objectivefinder.py +++ b/game/commander/objectivefinder.py @@ -15,6 +15,7 @@ from game.theater import ( MissionTarget, OffMapSpawn, ParkingType, + NavalControlPoint, ) from game.theater.theatergroundobject import ( BuildingGroundObject, @@ -147,6 +148,9 @@ class ObjectiveFinder: if isinstance(cp, OffMapSpawn): # Off-map spawn locations don't need protection. continue + if isinstance(cp, NavalControlPoint): + yield cp # always consider CVN/LHA as vulnerable + continue airfields_in_proximity = self.closest_airfields_to(cp) airbase_threat_range = self.game.settings.airbase_threat_range if ( diff --git a/game/commander/theaterstate.py b/game/commander/theaterstate.py index 312a715a..6cd27dce 100644 --- a/game/commander/theaterstate.py +++ b/game/commander/theaterstate.py @@ -180,13 +180,16 @@ class TheaterState(WorldState["TheaterState"]): } vulnerable_control_points = [ - cp for cp, bp in battle_postitions.items() if not bp.blocking_capture + cp + for cp, bp in battle_postitions.items() + if not bp.blocking_capture or cp.is_fleet ] return TheaterState( context=context, barcaps_needed={ - cp: barcap_rounds for cp in finder.vulnerable_control_points() + cp: 2 * barcap_rounds if cp.is_fleet else barcap_rounds + for cp in finder.vulnerable_control_points() }, active_front_lines=list(finder.front_lines()), front_line_stances={f: None for f in finder.front_lines()},