diff --git a/game/commander/packagebuilder.py b/game/commander/packagebuilder.py index a4baf9c7..c990056b 100644 --- a/game/commander/packagebuilder.py +++ b/game/commander/packagebuilder.py @@ -43,9 +43,8 @@ class PackageBuilder: if assignment is None: return False airfield, squadron = assignment - if isinstance(airfield, OffMapSpawn): - start_type = "In Flight" - else: + start_type = airfield.required_aircraft_start_type + if start_type is None: start_type = self.start_type flight = Flight( diff --git a/game/theater/controlpoint.py b/game/theater/controlpoint.py index 7ea8a842..27f7aa14 100644 --- a/game/theater/controlpoint.py +++ b/game/theater/controlpoint.py @@ -670,6 +670,10 @@ class ControlPoint(MissionTarget, ABC): self._coalition = new_coalition self.base.set_strength_to_minimum() + @property + def required_aircraft_start_type(self) -> Optional[str]: + return None + @abstractmethod def can_operate(self, aircraft: AircraftType) -> bool: ... @@ -1106,6 +1110,10 @@ class OffMapSpawn(ControlPoint): def can_operate(self, aircraft: AircraftType) -> bool: return True + @property + def required_aircraft_start_type(self) -> Optional[str]: + return "In Flight" + @property def heading(self) -> Heading: return Heading.from_degrees(0) diff --git a/game/transfers.py b/game/transfers.py index d7db80af..862af050 100644 --- a/game/transfers.py +++ b/game/transfers.py @@ -349,13 +349,17 @@ class AirliftPlanner: else: transfer = self.transfer + start_type = squadron.location.required_aircraft_start_type + if start_type is None: + start_type = self.game.settings.default_start_type + flight = Flight( self.package, self.game.country_for(squadron.player), squadron, flight_size, FlightType.TRANSPORT, - self.game.settings.default_start_type, + start_type, departure=squadron.location, arrival=squadron.location, divert=None,