Class CombatVehicleEscapePod

All Implemented Interfaces:
Serializable, ICarryable, Transporter, InGameObject, CombatRole, ForceAssignable, ITechnology, ITurnOrdered, PhaseUpdated, RoundUpdated, BTObject, Deployable, Targetable

public class CombatVehicleEscapePod extends EjectedCrew
Represents a Combat Vehicle Escape Pod (CVEP) that has been launched from a combat vehicle. Per TO:AUE p.121, this is a one-use system that allows vehicle crew to escape their vehicle.

The escape pod lands on the battlefield and the crew can choose to:

  • Exit the pod as conventional foot infantry
  • Remain inside the pod (useful in water or toxic environments)

The pod itself is immobile and uses the Life Boat sprite.

Damage Model (TO:AUE p.121): Attacks against a jettisoned CVEP may be made as if targeting an immobile unit. The CVEP is considered breached (and its occupants killed) after sustaining more than 2 points of damage. This class tracks cumulative damage rather than using the infantry trooper-based damage model.

See Also:
  • Field Details

    • CVEP_SPRITE_NAME

      public static final String CVEP_SPRITE_NAME
      Chassis name used for image lookup in mekset.txt
      See Also:
    • CVEP_DISPLAY_NAME

      public static final String CVEP_DISPLAY_NAME
      Display name for the escape pod in game logs and UI
      See Also:
    • BREACH_THRESHOLD

      public static final int BREACH_THRESHOLD
      Per TO:AUE p.121, the CVEP is breached after sustaining MORE than this amount of damage. So 1-2 damage = OK, 3+ damage = breached and crew killed.
      See Also:
  • Constructor Details

    • CombatVehicleEscapePod

      public CombatVehicleEscapePod(Tank originalRide, Coords landingCoords)
      Creates a new Combat Vehicle Escape Pod from a launching vehicle.
      Parameters:
      originalRide - The Tank that launched this escape pod
      landingCoords - The coordinates where the pod landed
    • CombatVehicleEscapePod

      public CombatVehicleEscapePod()
      Default constructor for serialization/MUL parser.
  • Method Details

    • isImmobile

      public boolean isImmobile()
      Description copied from class: Entity
      Returns true if the target is considered immobile (-4 to hit) as a target and also if it is considered immobile or temporarily or permanently immbolized for active movement. Overriding methods should check the status of the unit (shutdown, damage) and also the status of the crew (unconscious).
      Specified by:
      isImmobile in interface Targetable
      Overrides:
      isImmobile in class Entity
      Returns:
      True if the target is considered immobile as a target and unable to move actively.
    • getWalkMP

      public int getWalkMP(MPCalculationSetting mpCalculationSetting)
      Overrides:
      getWalkMP in class ConvInfantry
    • getRunMP

      public int getRunMP(MPCalculationSetting mpCalculationSetting)
      Overrides:
      getRunMP in class ConvInfantry
    • getJumpMP

      public int getJumpMP(MPCalculationSetting mpCalculationSetting)
      Overrides:
      getJumpMP in class ConvInfantry
    • isCrewInside

      @Deprecated(since="0.51.0", forRemoval=true) public boolean isCrewInside()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns:
      true if the crew is still inside the pod
    • setCrewInside

      public void setCrewInside(boolean crewInside)
      Sets whether the crew is inside the pod.
      Parameters:
      crewInside - true if crew is inside, false if they have exited
    • getCumulativeDamage

      public int getCumulativeDamage()
      Returns the cumulative damage sustained by this pod.
      Returns:
      the total damage taken
    • applyDamage

      public boolean applyDamage(int damage)
      Applies damage to the escape pod. Per TO:AUE p.121, the pod is breached (and occupants killed) after sustaining more than 2 points of damage.
      Parameters:
      damage - the amount of damage to apply
      Returns:
      true if the pod was breached by this damage
    • isBreached

      public boolean isBreached()
      Returns whether this pod has been breached (hull integrity compromised). A breached pod has its occupants killed.
      Returns:
      true if the pod has been breached
    • setBreached

      public void setBreached(boolean breached)
      Sets the breached status of the pod.
      Parameters:
      breached - true if the pod is breached
    • canCrewExit

      public boolean canCrewExit()
      Checks if the crew can safely exit the pod at its current location. Crew cannot exit into deep water or other hazardous terrain without appropriate equipment.
      Returns:
      true if crew can safely exit
    • canAnnounceAbandon

      public boolean canAnnounceAbandon()
      Description copied from class: Entity
      Checks whether this unit can announce abandonment of its crew in the End Phase. Abandonment is declared in the PREEND_DECLARATIONS phase. The base implementation returns false; unit types that support abandonment (Meks, vehicles, and escape pods) override this.
      Overrides:
      canAnnounceAbandon in class Entity
      Returns:
      true if this unit can announce crew abandonment
    • getEntityType

      public long getEntityType()
      Overrides:
      getEntityType in class ConvInfantry
    • isConventionalInfantry

      public boolean isConventionalInfantry()
      Returns false because CVEP uses its own damage model (2-point threshold breach), not the infantry platoon damage model (burst-fire multipliers, "in the open" doubling, etc.). Per TO:AUE p.121, attacks against a jettisoned CVEP are treated as targeting an immobile unit.
      Specified by:
      isConventionalInfantry in interface BTObject
      Overrides:
      isConventionalInfantry in class ConvInfantry
      Returns:
      false - CVEP is not conventional infantry for damage purposes
    • isEligibleForMovement

      public boolean isEligibleForMovement()
      Description copied from class: Entity
      Pretty much anybody's eligible for movement. If the game option is toggled on, inactive and immobile entities are not eligible. OffBoard units are always ineligible
      Overrides:
      isEligibleForMovement in class ConvInfantry
      Returns:
      whether the entity is allowed to move
    • isEligibleForFiring

      public boolean isEligibleForFiring()
      Description copied from class: Entity
      An entity is eligible for firing if it's not taking some kind of action that prevents it from firing, such as a full-round physical attack or sprinting.
      Overrides:
      isEligibleForFiring in class ConvInfantry
    • isEligibleForTargetingPhase

      public boolean isEligibleForTargetingPhase()
      Overrides:
      isEligibleForTargetingPhase in class Entity
    • isEligibleForOffboard

      public boolean isEligibleForOffboard()
      Overrides:
      isEligibleForOffboard in class Entity
    • isEligibleForPhysical

      public boolean isEligibleForPhysical()
      Description copied from class: Entity
      Check if the entity has any valid targets for physical attacks.
      Overrides:
      isEligibleForPhysical in class Entity
    • isSelectableThisTurn

      public boolean isSelectableThisTurn()
      Description copied from class: Entity
      Returns true if this entity is selectable for action. Transported entities can not be selected.
      Overrides:
      isSelectableThisTurn in class Entity
    • getShortNameRaw

      public String getShortNameRaw()
      Override to use CVEP display name instead of chassis name ("Life Boat") for game messages. The chassis is set to "Life Boat" for sprite lookup, but we want "CVEP" in messages.
      Overrides:
      getShortNameRaw in class Entity
      Returns:
      Short name using CVEP terminology