Class ConvInfantry

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

public class ConvInfantry extends Infantry
This class represents Conventional Infantry. The lowest of the low, the ground pounders, the city rats, the PBI (Poor Bloody Infantry).
See Also:
  • Field Details

    • LOC_INFANTRY

      public static final int LOC_INFANTRY
      See Also:
    • LOC_FIELD_GUNS

      public static final int LOC_FIELD_GUNS
      See Also:
    • BRIDGE_ENGINEERS

      public static int BRIDGE_ENGINEERS
    • DEMO_ENGINEERS

      public static int DEMO_ENGINEERS
    • FIRE_ENGINEERS

      public static int FIRE_ENGINEERS
    • MINE_ENGINEERS

      public static int MINE_ENGINEERS
    • SENSOR_ENGINEERS

      public static int SENSOR_ENGINEERS
    • TRENCH_ENGINEERS

      public static int TRENCH_ENGINEERS
    • MARINES

      public static int MARINES
    • MOUNTAIN_TROOPS

      public static int MOUNTAIN_TROOPS
    • PARAMEDICS

      public static int PARAMEDICS
    • PARATROOPS

      public static int PARATROOPS
    • TAG_TROOPS

      public static int TAG_TROOPS
    • XCT

      public static int XCT
    • SCUBA

      public static int SCUBA
    • NUM_SPECIALIZATIONS

      public static int NUM_SPECIALIZATIONS
    • COMBAT_ENGINEERS

      public static int COMBAT_ENGINEERS
    • ANTI_MEK_SKILL_NO_GEAR

      public static final int ANTI_MEK_SKILL_NO_GEAR
      See Also:
    • INF_PLT_MAX_MEN

      public static final int INF_PLT_MAX_MEN
      The maximum number of troopers in an infantry platoon.
      See Also:
    • BRIDGE_BUILD_TURNS

      public static final int BRIDGE_BUILD_TURNS
      Number of full turns of work needed to raise a bridge, before any extensions from casualties. TO:AUE p.152.
      See Also:
    • BRIDGE_TYPE_LIGHT

      public static final int BRIDGE_TYPE_LIGHT
      A Light Bridge (CF 15). The value doubles as its point cost: the budget of 2 allows two per scenario.
      See Also:
    • BRIDGE_TYPE_MEDIUM

      public static final int BRIDGE_TYPE_MEDIUM
      A Medium Bridge (CF 40). The value doubles as its point cost: the budget of 2 allows one per scenario.
      See Also:
    • BRIDGE_BUILD_POINTS

      public static final int BRIDGE_BUILD_POINTS
      The per-scenario bridge building budget: 2 Light Bridges (1 point each) or 1 Medium Bridge (2 points).
      See Also:
  • Constructor Details

    • ConvInfantry

      public ConvInfantry()
      Generate a new, blank, infantry platoon. Hopefully, we'll be loaded from somewhere.
  • Method Details

    • isMechanized

      public boolean isMechanized()
      Overrides:
      isMechanized in class Infantry
    • getLocationAbbreviations

      public String[] getLocationAbbreviations()
      Specified by:
      getLocationAbbreviations in class Entity
    • getLocationNames

      public String[] getLocationNames()
      Specified by:
      getLocationNames in class Entity
    • locations

      public int locations()
      Description copied from class: Entity
      Returns the number of locations in the entity
      Specified by:
      locations in class Entity
    • getMaxElevationChange

      public int getMaxElevationChange()
      Description copied from class: Entity
      The maximum elevation change the entity can cross
      Overrides:
      getMaxElevationChange in class Entity
    • addSystemTechAdvancement

      protected void addSystemTechAdvancement(CompositeTechLevel techLevel)
      Description copied from class: Entity
      Incorporate dates for components that are not in the equipment list, such as engines and structure.
      Overrides:
      addSystemTechAdvancement in class Entity
    • hasAntiMekGear

      public boolean hasAntiMekGear()
      Returns true if this unit carries anti-mek gear. Only with this gear can it improve its anti-mek skill below 8.
      Returns:
      True when this infantry carries anti-mek gear
    • canMakeAntiMekAttacks

      public boolean canMakeAntiMekAttacks()
      Specified by:
      canMakeAntiMekAttacks in class Infantry
      Returns:
      True for all infantry that are allowed AM attacks. Mechanized infantry and infantry units with encumbering armor or field guns are not allowed to make AM attacks, while all other infantry are. Note that a conventional infantry unit without Anti-Mek gear (15 kg per trooper) can still make AM attacks but has a fixed 8 AM skill rating.
    • canAssaultDrop

      public boolean canAssaultDrop()
      Overrides:
      canAssaultDrop in class Entity
    • hasPoweredFlightWings

      public boolean hasPoweredFlightWings()
      Returns true if this conventional infantry unit has powered flight wings. Powered flight wings can only be used by conventional infantry (IO p.85).
      Returns:
      true if unit has powered flight wings ability
    • getPoweredFlightMP

      public int getPoweredFlightMP()
      Returns the VTOL movement points provided by powered flight wings. Per IO p.85, powered flight wings provide 2 MPs of VTOL movement.
      Returns:
      2 if powered flight is usable, 0 otherwise
    • hasVTOLMovementCapability

      public boolean hasVTOLMovementCapability()
      Returns true if this infantry unit can use VTOL-style movement. This includes infantry with VTOL movement mode (microcopter/microlite) OR infantry with usable powered flight wings.
      Returns:
      true if unit can use VTOL movement
    • getVTOLMP

      public int getVTOLMP()
      Returns the VTOL movement points for this infantry unit. For VTOL infantry (microcopter/microlite), this returns jumpMP. For powered flight infantry, this returns 2 MP per IO p.85.
      Returns:
      VTOL MP available, or 0 if no VTOL capability
    • isProtectedFromFallDamage

      public boolean isProtectedFromFallDamage()
      Returns true if this infantry unit is protected from fall damage. Glider wings and powered flight wings protect against damage from falls, whether from walking off terrain 2+ levels high (including buildings) or by displacement (IO p.85). Only conventional infantry can use these prosthetic wings.
      Returns:
      true if protected from fall damage
    • isXCT

      public boolean isXCT()
    • getPriceMultiplier

      public double getPriceMultiplier()
      Description copied from class: Entity
      Returns a multiplier that combines multiplicative construction cost modifiers for this Entity.

      This includes only modifiers that apply to an Entity's final, total cost (e.g. - the 1.25x modifier for being an omni-unit, or the 32.0x for being an aerodyne DropShip). It does NOT include multipliers that only apply to a sub-part of the unit (e.g. the weight based multiplier that applies to a vehicle's internal structure cost).

      This allows MekHQ to scale the price of a Unit's Parts in a more appropriate manner.

      Defaults to 1.0

      Overrides:
      getPriceMultiplier in class Entity
    • hasSpaceSuit

      public boolean hasSpaceSuit()
    • setSpaceSuit

      public void setSpaceSuit(boolean b)
    • hasDEST

      public boolean hasDEST()
    • setDEST

      public void setDEST(boolean b)
    • hasSpecialization

      public boolean hasSpecialization()
    • hasSpecialization

      public boolean hasSpecialization(int spec)
    • isFirefighter

      public boolean isFirefighter()
      Description copied from class: Entity
      Returns whether this unit is a firefighting engineer - specialized infantry that can extinguish an adjacent burning hex in place of a weapon attack (TO:AuE p.153). The base implementation returns false; ConvInfantry overrides this for platoons carrying the FIRE_ENGINEERS specialization. Putting the check here lets callers ask entity.isFirefighter() without first testing instanceof ConvInfantry.
      Overrides:
      isFirefighter in class Entity
      Returns:
      true if this platoon are firefighting engineers (FIRE_ENGINEERS specialization).
    • getPriorFirefightStreak

      public int getPriorFirefightStreak(Coords coords, int round)
      Number of consecutive prior rounds this platoon has already spent fighting a fire in the given hex, used for the cumulative firefighting target-number reduction (TO:AuE p.153). Returns 0 when the platoon did not fight this same hex on the immediately preceding round.
      Parameters:
      coords - the burning hex being targeted
      round - the current game round
      Returns:
      the prior consecutive firefighting streak for this hex, or 0 if the streak is broken
    • recordFirefight

      public void recordFirefight(Coords coords, int round)
      Records that this platoon fought a fire in the given hex on the given round, advancing the consecutive-turn streak. The streak resets when the platoon did not fight this same hex on the immediately preceding round (TO:AR p.53: a platoon that stops fighting a blaze starts over).
      Parameters:
      coords - the burning hex that was fought
      round - the current game round
    • getSpecializations

      public int getSpecializations()
    • setSpecializations

      public void setSpecializations(int spec)
    • getSpecializationName

      public static String getSpecializationName(int spec)
    • getSpecializationTooltip

      public static String getSpecializationTooltip(int spec)
    • isBuildingBridge

      public boolean isBuildingBridge()
      Returns:
      true while this platoon is actively raising a bridge (not paused). While actively building, the platoon is eligible only in the movement phase (to continue or change the build) and takes no other action.
    • isBridgePaused

      public boolean isBridgePaused()
      Returns:
      true while a bridge build is paused: progress is held but the platoon is freed to act normally and may return to its site to resume. TO:AUE p.152.
    • isDismantlingBridge

      public boolean isDismantlingBridge()
      Returns:
      true while this platoon is dismantling a cancelled bridge. Dismantling takes as many turns as were spent building; on completion the bridge building budget is refunded and the platoon is freed.
    • isBusyWithBridge

      public boolean isBusyWithBridge()
      Returns:
      true while this platoon is actively occupied raising or dismantling a bridge - it takes no other action this turn. A paused build is not "busy": the platoon is freed (see isBridgePaused()).
    • hasBridgeInProgress

      public boolean hasBridgeInProgress()
      Returns:
      true if this platoon has any bridge work in progress - actively building, paused, or dismantling. Used to block starting a second bridge and to show the in-progress indicator.
    • isBridgeTargetClaimed

      public static boolean isBridgeTargetClaimed(Game game, int boardId, Coords target, @Nullable Entity excluded)
      Parameters:
      game - the current game
      boardId - the board the target hex is on
      target - the candidate bridge hex
      excluded - a platoon to ignore (the one considering the build), or null
      Returns:
      true if another platoon already has bridge work in progress (building, paused, or dismantling) targeting this hex. An in-progress bridge places no terrain until it completes, so this is the only way to stop two platoons from raising two bridges in the same hex. TO:AUE p.152.
    • startBridgeBuild

      public void startBridgeBuild(Coords target, int exits, int bridgeType)
      Begins raising a bridge in the given hex. The declaring turn counts as the first full turn of work.
      Parameters:
      target - the hex the bridge will be raised in; must be adjacent to this platoon
      exits - exits bitmask of the two hexsides the finished bridge will connect
      bridgeType - BRIDGE_TYPE_LIGHT or BRIDGE_TYPE_MEDIUM
    • startBridgeRepair

      public void startBridgeRepair(Coords target, int exits, int bridgeType)
      Begins repairing a single destroyed section of an existing bridge (the unofficial bridge-repair option). The work, turn count, casualty extension, pause/dismantle/abandon lifecycle and budget cost are identical to a new bridge build; only the finished section differs - it is placed at the surviving span's deck so the bridge reconnects. The declaring turn counts as the first full turn of work.
      Parameters:
      target - the gap hex the section will be rebuilt in; must be adjacent to this platoon
      exits - exits bitmask of the two hexsides the repaired section will connect
      bridgeType - BRIDGE_TYPE_LIGHT or BRIDGE_TYPE_MEDIUM
    • cancelBridgeBuild

      public void cancelBridgeBuild()
      Stops all bridge work, losing any progress. The bridge building budget is not refunded.
    • abandonBridge

      public void abandonBridge()
      Abandons any bridge work in progress immediately: the partial structure is lost this turn and the spent budget is not refunded. Unlike dismantling (which takes turns and refunds), abandoning is instant and forfeits the points. TO:AUE p.152.
    • pauseBridgeBuild

      public void pauseBridgeBuild()
      Pauses an active bridge build: the partial progress is held on the platoon, which is then freed to move and fight normally until it returns to the site and resumes. The spent budget stays committed. TO:AUE p.152.
    • startBridgeDismantle

      public void startBridgeDismantle()
      Begins dismantling the partially built bridge instead of finishing it. Dismantling takes as many full turns as were already spent building (the declaring turn counts as the first). The target hex, exits and type are kept so the in-progress structure can keep being shown; the spent budget is refunded only once dismantling finishes.
    • resumeBridgeBuild

      public void resumeBridgeBuild()
      Resumes building, from either a paused build or a dismantling. From a pause, the held progress simply continues. From a dismantling, the structure still standing (the dismantle countback position) becomes the build's completed-turn total, so building resumes from where the dismantling left off. Either way the trooper snapshot is refreshed so casualty extensions resume cleanly, and the bridge site, exits, type and spent budget are unchanged. TO:AUE p.152.
    • bankBridgeBuildTurn

      public int bankBridgeBuildTurn()
      Banks one full turn of bridge building (called once per round from the END phase, where the work is actually completed) and returns the new completed-turn total.
      Returns:
      the number of full turns of work now completed
    • bankBridgeDismantleTurn

      public int bankBridgeDismantleTurn()
      Banks one full turn of bridge dismantling (called once per round from the END phase) and returns the new completed-turn total.
      Returns:
      the number of full turns of dismantling now completed
    • getBridgeDismantleRemaining

      public int getBridgeDismantleRemaining()
      Returns:
      the turns of built structure still standing while dismantling: the work banked at cancel time counts back down to zero. Shown on the same N / build-required scale as the build (e.g. cancel at 4/6 -> the dismantling counts 4/6, 3/6, 2/6, 1/6).
    • refundBridgeBuildPoints

      public void refundBridgeBuildPoints()
      Refunds the points spent on the cancelled bridge, capped at the per-scenario budget.
    • getBridgeDismantleTurns

      public int getBridgeDismantleTurns()
      Returns:
      full turns of dismantling completed so far before the current round, or -1 while not dismantling.
    • getBridgeDismantleRequiredTurns

      public int getBridgeDismantleRequiredTurns()
      Returns:
      total turns of dismantling needed to fully cancel the build.
    • getBridgeBuildTurns

      public int getBridgeBuildTurns()
      Returns:
      The number of full turns of bridge building completed before the current round, or -1 while not building. The current (in-progress) round is not included.
    • getBridgeBuildRequiredTurns

      public int getBridgeBuildRequiredTurns()
      Returns:
      The total turns of work needed to finish the current bridge: BRIDGE_BUILD_TURNS plus one for each turn the platoon took casualties while building. TO:AUE p.152.
    • getBridgeTargetCoords

      @Nullable public Coords getBridgeTargetCoords()
      Returns:
      The hex the bridge is being raised in, or null while not building.
    • getBridgeExits

      public int getBridgeExits()
      Returns:
      The exits bitmask of the two hexsides the finished bridge will connect.
    • getBridgeType

      public int getBridgeType()
      Returns:
      The bridge type under construction, BRIDGE_TYPE_LIGHT or BRIDGE_TYPE_MEDIUM.
    • isBridgeBuildRepair

      public boolean isBridgeBuildRepair()
      Returns:
      true if the current work is repairing a destroyed section of an existing bridge (unofficial bridge-repair option) rather than raising a new bridge. Decides the placement rule used when the work finishes.
    • getBridgeBuildPoints

      public int getBridgeBuildPoints()
      Returns:
      The remaining per-scenario bridge building points (Light Bridge costs 1, Medium Bridge costs 2).
    • spendBridgeBuildPoints

      public void spendBridgeBuildPoints(int bridgeType)
      Spends bridge building points when a build begins. The cost equals the bridge type value.
      Parameters:
      bridgeType - BRIDGE_TYPE_LIGHT or BRIDGE_TYPE_MEDIUM
    • canAffordBridge

      public boolean canAffordBridge(int bridgeType)
      Parameters:
      bridgeType - BRIDGE_TYPE_LIGHT or BRIDGE_TYPE_MEDIUM
      Returns:
      true if the remaining budget covers a bridge of the given type.
    • canStartBridgeBuild

      public boolean canStartBridgeBuild()
      Returns:
      true if this platoon is a Bridge-Building Engineer unit that still carries its bridge kit, has budget left, and is not already raising a bridge. Does not check the game option or terrain.
    • hasBridgeKit

      public boolean hasBridgeKit()
      Returns:
      true if this platoon carries an Infantry Bridge Kit.
    • isAdjacentToBridgeSite

      public boolean isAdjacentToBridgeSite()
      Returns:
      true while this platoon is adjacent to its bridge construction site. A platoon that is displaced, transported or destroyed is no longer adjacent and abandons the build.
    • updateBridgeBuildCasualties

      public boolean updateBridgeBuildCasualties()
      Checks whether this platoon lost troopers since the last check; a turn with casualties extends the build by one turn, regardless of how many separate attacks caused them. TO:AUE p.152. Called once per turn from the END phase.
      Returns:
      true if casualties extended the build this turn.
    • getBuiltBridgeCF

      public static int getBuiltBridgeCF(int bridgeType, boolean isOverWater)
      Parameters:
      bridgeType - the bridge type, BRIDGE_TYPE_LIGHT or BRIDGE_TYPE_MEDIUM
      isOverWater - true if the bridge is being raised over a water hex (water of any depth, swamp or rapids; see BridgeConstruction.isOverWater(megamek.common.Hex))
      Returns:
      The Construction Factor of a bridge raised by Bridge-Building Engineers: 15 for a Light Bridge, 40 for a Medium Bridge, doubled when built over water. TO:AUE p.152.
    • newRound

      public void newRound(int roundNumber)
      Description copied from class: Entity
      Start a new round
      Specified by:
      newRound in interface RoundUpdated
      Overrides:
      newRound in class Infantry
      Parameters:
      roundNumber - the int number of the new round
    • isEligibleFor

      public boolean isEligibleFor(GamePhase phase)
      Description copied from class: Entity
      Determines if an entity is eligible for a phase.
      Overrides:
      isEligibleFor in class Infantry
    • getMovementMode

      public EntityMovementMode getMovementMode()
      Returns the movement mode for this infantry unit. For powered flight infantry (IO p.85), this returns VTOL when the wings are usable, allowing them to use existing VTOL movement infrastructure. Note: During construction, crew is null so hasPoweredFlightWings() returns false, ensuring this override doesn't interfere with setMovementMode() initialization.
      Overrides:
      getMovementMode in class Entity
    • getWalkMP

      public int getWalkMP(MPCalculationSetting mpCalculationSetting)
      Overrides:
      getWalkMP in class Entity
    • doomedInVacuum

      public boolean doomedInVacuum()
      Overrides:
      doomedInVacuum in class Entity
      Returns:
      True when this unit will not survive vacuum conditions.
    • doomedInExtremeTemp

      public boolean doomedInExtremeTemp()
      Overrides:
      doomedInExtremeTemp in class Entity
      Returns:
      True when this unit will not survive temperatures outside -30 to +50 C.
    • getArmorKit

      public EquipmentType getArmorKit()
    • setArmorKit

      public void setArmorKit(EquipmentType armorKit)
    • hasArmor

      public boolean hasArmor()
      Checks if infantry has armor kit or custom armor (does not include Myomer Implants)
      Returns:
      true if infantry has armor kit or custom armor, false otherwise
    • calcDamageDivisor

      public double calcDamageDivisor()
    • getCustomArmorName

      @Nullable public String getCustomArmorName()
      Gets the custom armor name
      Returns:
      The custom armor name
    • setCustomArmorName

      public void setCustomArmorName(@Nullable String customArmorName)
      Sets the custom armor name. Cleans blank names to null.
      Parameters:
      customArmorName - Custom armor name
    • getCustomArmorDamageDivisor

      public double getCustomArmorDamageDivisor()
      Gets the damage divisor of this entity's custom armor kit. Meaningless when the infantry possesses a normal, non-custom armor kit, so check for one first.
      Returns:
      The damage divisor of the custom armor kit, or 1.0 for no armor.
    • setCustomArmorDamageDivisor

      public void setCustomArmorDamageDivisor(double d)
      Creates a custom armor kit for this entity. Should not be set for anything other than a custom armor kit, see calcDamageDivisor() to add any other source of damage divisor.
      Parameters:
      d - The damage divisor of the custom armor kit. Set it to 1.0 for no armor.
    • isArmorEncumbering

      public boolean isArmorEncumbering()
    • setArmorEncumbering

      public void setArmorEncumbering(boolean b)
    • hasSneakCamo

      public boolean hasSneakCamo()
    • setSneakCamo

      public void setSneakCamo(boolean b)
    • hasSneakIR

      public boolean hasSneakIR()
    • setSneakIR

      public void setSneakIR(boolean b)
    • hasSneakECM

      public boolean hasSneakECM()
    • setSneakECM

      public void setSneakECM(boolean b)
    • setPrimaryWeapon

      public void setPrimaryWeapon(InfantryWeapon w)
    • getPrimaryWeapon

      public InfantryWeapon getPrimaryWeapon()
    • setSecondaryWeapon

      public void setSecondaryWeapon(InfantryWeapon w)
    • getSecondaryWeapon

      public InfantryWeapon getSecondaryWeapon()
    • setDisposableWeapon

      public void setDisposableWeapon(@Nullable InfantryWeapon weapon)
      Sets the platoon's one-shot Disposable Weapon (TO:AuE p.116, Corrected Sixth Printing). All troopers carry the same Disposable Weapon. This only records the weapon type; the corresponding fireable WeaponMounted is added to LOC_INFANTRY by the loader/editor.
      Parameters:
      weapon - the Disposable Weapon, or null to clear it
    • getDisposableWeapon

      @Nullable public InfantryWeapon getDisposableWeapon()
      Returns:
      the platoon's one-shot Disposable Weapon (TO:AuE p.116, Corrected Sixth Printing), or null if it has none
    • hasDisposableWeapon

      public boolean hasDisposableWeapon()
      Returns:
      true if this platoon carries a one-shot Disposable Weapon (TO:AuE p.116, Corrected Sixth Printing)
    • equipDisposableWeapon

      public void equipDisposableWeapon(@Nullable InfantryWeapon weapon)
      Sets the platoon's one-shot Disposable Weapon (TO:AuE p.116, Corrected Sixth Printing) and synchronizes the corresponding fireable mount. Any previously-equipped Disposable Weapon mount is removed first; pass null to remove the Disposable Weapon entirely. Use this (rather than setDisposableWeapon(megamek.common.weapons.infantry.InfantryWeapon)) when changing the loadout of an already-built platoon, e.g. from the lobby configuration dialog.
      Parameters:
      weapon - the Disposable Weapon to equip, or null to remove it
    • setSecondaryWeaponsPerSquad

      public void setSecondaryWeaponsPerSquad(int n)
    • getSecondaryWeaponsPerSquad

      public int getSecondaryWeaponsPerSquad()
    • getDamagePerTrooper

      public double getDamagePerTrooper()
    • applyImpEnergyWeaponDisable

      public void applyImpEnergyWeaponDisable()
      Records an Improved Magnetic Pulse (iATM IMP) missile hit on this platoon (IO IMP rules). If the platoon uses energy weapons, they are rendered inoperative through the End Phase of the following turn. Other weapon types are unaffected.
    • isEnergyWeaponsDisabled

      public boolean isEnergyWeaponsDisabled()
      Returns:
      true while this platoon's energy weapons are rendered inoperative by an Improved Magnetic Pulse missile hit (IO IMP rules).
    • isCyberneticallyEnhanced

      public boolean isCyberneticallyEnhanced()
      Returns:
      true if this platoon is equipped with cybernetic enhancements of any kind (IO p.84 prosthetic enhancements). Improved Magnetic Pulse missiles deal double damage to such units.
    • isUsingEnergyWeapons

      public boolean isUsingEnergyWeapons()
      Returns:
      true if this platoon's primary or secondary weapon is an energy weapon. Improved Magnetic Pulse missiles render such weapons inoperative through the End Phase of the following turn.
    • primaryWeaponDamageCapped

      public boolean primaryWeaponDamageCapped()
    • getPrimaryWeaponDamage

      public double getPrimaryWeaponDamage()
    • getArmorDesc

      public String getArmorDesc()
    • getArmorSpecials

      public String getArmorSpecials()
    • restore

      public void restore()
      Description copied from class: Entity
      Restores the entity after serialization
      Overrides:
      restore in class Entity
    • getStealthModifier

      public TargetRoll getStealthModifier(int range, Entity ae)
      Description copied from class: Entity
      Determine the stealth modifier for firing at this unit from the given range. If the value supplied for range is not one of the Entity class range constants, an IllegalArgumentException will be thrown.

      Subclasses are encouraged to override this method.

      Overrides:
      getStealthModifier in class Entity
      Parameters:
      range - - an int value that must match one of the Compute class range constants.
      ae - - the entity making the attack, who maybe immune to certain kinds of stealth
      Returns:
      a TargetRoll value that contains the stealth modifier for the given range.
    • getJumpMP

      public int getJumpMP(MPCalculationSetting mpCalculationSetting)
      Overrides:
      getJumpMP in class Entity
    • isStealthy

      public boolean isStealthy()
      Specified by:
      isStealthy in class Infantry
      Returns:
      True if this infantry unit has any type of stealth system.
    • antiTSMVulnerable

      public boolean antiTSMVulnerable()
      Description copied from class: Entity
      Check for vulnerability to anti-TSM munitions. ATSM affects Meks with prototype TSM and any industrial TSM created before 3050, and conventional infantry with TSM implants.
      Overrides:
      antiTSMVulnerable in class Entity
      Returns:
      Whether the unit is affected by ATSM munitions
    • getAlternateCost

      public double getAlternateCost()
      The alternate cost here is used by MekHQ to create costs that reflect just the cost of equipment. The motive costs here are based on the costs associated with an auto-rifle platoon.
      Overrides:
      getAlternateCost in class Entity
      Returns:
      An alternative cost that will be added to the MekSummaryCache - at the moment it is primarily used to rework infantry costs for MekHQ, but it could be applied to other unit types as well - defaults to -1, so there is no confusion.
    • isLocationProhibited

      public boolean isLocationProhibited(Coords c, int testBoardId, int currElevation)
      Description copied from class: Entity
      Returns true when the given location cannot legally be entered or deployed into by this unit at the given elevation or altitude. Also returns true when the location doesn't exist. Even when this method returns true, the location need not be deadly to the unit.
      Overrides:
      isLocationProhibited in class Entity
      Parameters:
      c - The position to test
      testBoardId - The board to test
      currElevation - The elevation or altitude to test
      Returns:
      True when the location is illegal to be in for this unit, regardless of elevation
      See Also:
    • isElevationValid

      public boolean isElevationValid(int assumedElevation, Hex hex)
      Description copied from class: Entity
      Check if this entity can legally occupy the requested elevation. Does not check stacking, only terrain limitations
      Overrides:
      isElevationValid in class Entity
    • getUnitType

      public int getUnitType()
      Specified by:
      getUnitType in class Entity
      See Also:
    • setMovementMode

      public void setMovementMode(EntityMovementMode movementMode)
      Description copied from class: Entity
      Set the movement type of the entity
      Overrides:
      setMovementMode in class Entity
    • getMotiveTechAdvancement

      public TechAdvancement getMotiveTechAdvancement()
    • height

      public int height()
      Description copied from class: Entity
      Returns the height of the unit, that is, how many levels above its elevation it is for LOS purposes. Default is 0.
      Overrides:
      height in class Entity
    • rollHitLocation

      public HitData rollHitLocation(int table, int side)
      Description copied from class: Entity
      Rolls up a hit location
      Specified by:
      rollHitLocation in class Entity
    • getInternal

      public int getInternal(int loc)
      Description copied from class: Entity
      Returns the amount of internal structure in the location specified, or ARMOR_NA, or ARMOR_DESTROYED.
      Overrides:
      getInternal in class Entity
    • getOInternal

      public int getOInternal(int loc)
      Description copied from class: Entity
      Returns the original amount of internal structure in the location specified, or ARMOR_NA, or ARMOR_DESTROYED.
      Overrides:
      getOInternal in class Entity
    • activeFieldWeapons

      public List<Mounted<?>> activeFieldWeapons()
      Returns:
      Active field guns and artillery of this infantry (= not including destroyed ones). Empty on BA.
    • originalFieldWeapons

      public List<Mounted<?>> originalFieldWeapons()
      Returns:
      All field guns and artillery of this infantry including destroyed ones. Empty on BA.
    • isFieldWeapon

      protected boolean isFieldWeapon(Mounted<?> equipment)
      Returns:
      True when the given Mounted is a Field Gun or Artillery. On BA, always returns false.
    • hasDermalCamoStealth

      public boolean hasDermalCamoStealth()
      Returns:
      True if this infantry has Dermal Camo Armor and can benefit from its mimetic stealth properties (leg or jump infantry only, not wearing other armor).
    • hasMicrolite

      public boolean hasMicrolite()
    • setMicrolite

      public void setMicrolite(boolean microlite)
    • setMount

      public void setMount(InfantryMount mount)
    • getMount

      @Nullable public InfantryMount getMount()
    • isMounted

      public boolean isMounted()
    • isDmgHeavy

      public boolean isDmgHeavy()
      Description copied from class: Entity
      Returns TRUE if the entity has been heavily damaged.
      Specified by:
      isDmgHeavy in class Entity
      Returns:
      boolean
    • isDmgModerate

      public boolean isDmgModerate()
      Description copied from class: Entity
      Returns TRUE if the entity has been moderately damaged.
      Specified by:
      isDmgModerate in class Entity
      Returns:
      boolean
    • isDmgLight

      public boolean isDmgLight()
      Description copied from class: Entity
      Returns TRUE if the entity has been lightly damaged.
      Specified by:
      isDmgLight in class Entity
      Returns:
      boolean
    • hasFieldWeapon

      public boolean hasFieldWeapon()
      Returns:
      True if this infantry has any field gun or artillery (destroyed or not).
    • hasActiveFieldWeapon

      public boolean hasActiveFieldWeapon()
      Returns:
      True if this infantry has any working (not destroyed) field gun or artillery.
    • hasActiveFieldArtillery

      public boolean hasActiveFieldArtillery()
      Returns:
      True if this infantry has a field artillery weapon that is not destroyed.
    • getWeight

      public double getWeight()
      Overrides:
      getWeight in class Entity
      Returns:
      the tonnage of the Entity, not its weight
    • isCrippled

      public boolean isCrippled()
      Description copied from class: Entity
      Returns TRUE if the entity meets the requirements for crippling damage as detailed in TW pg 258.
      Specified by:
      isCrippled in class Entity
      Returns:
      boolean
    • addEquipment

      public void addEquipment(Mounted<?> mounted, int loc, boolean rearMounted) throws LocationFullException
      Description copied from class: Entity
      Adds the given mounted equipment to the unit in the given location, possibly rear-facing depending on the given parameter. This method adds the mounted to the right equipment lists, updates the unit's tech level and adds one-shot ammo where necessary. Overriding methods may perform more tasks. This method, by default, does *NOT* create crit slots, update or add linkages nor handle secondary locations. Overrides for unit types may however do that.
      Overrides:
      addEquipment in class Entity
      Parameters:
      mounted - The new equipment
      loc - The location; may be Entity.LOC_NONE
      rearMounted - True to make the equipment rear-facing
      Throws:
      LocationFullException - When the location is full
    • getEntityType

      public long getEntityType()
      Specified by:
      getEntityType in class Entity
    • getSpriteDrawPriority

      public int getSpriteDrawPriority()
      Description copied from class: Entity
      Used to determine the draw priority of different Entity subclasses. This allows different unit types to always be draw above/below other types.
      Overrides:
      getSpriteDrawPriority in class Entity
    • getGenericBattleValue

      public int getGenericBattleValue()
      Description copied from class: Entity
      Calculates a "generic" Battle Value that is based on the average of all units of this type and tonnage. The purpose of this generic Battle Value is to allow a comparison of this unit's actual BV to that for units of its class. This can be used to balance forces without respect to unit or pilot quality.

      The generic BV values are calculated by a statistical elasticity model based on all data from the MegaMek database.

      Specified by:
      getGenericBattleValue in class Entity
      Returns:
      The generic Battle value for this unit based on its tonnage and type
    • isConventionalInfantry

      public boolean isConventionalInfantry()
      Description copied from interface: BTObject
      Returns true when this object is a Conventional Infantry unit or of type CI for Alpha Strike. Returns false for any type of unit group even if it is of the right type.
      Returns:
      True when this is a Conventional Infantry unit
    • getMovementModeAsString

      public String getMovementModeAsString()
      Description copied from class: Entity
      Get the movement mode of the entity as a String.
      Overrides:
      getMovementModeAsString in class Entity
    • getProstheticEnhancement1

      @Nullable public ProstheticEnhancementType getProstheticEnhancement1()
      Returns:
      The prosthetic enhancement type in slot 1, or null if none
    • setProstheticEnhancement1

      public void setProstheticEnhancement1(@Nullable ProstheticEnhancementType enhancement)
      Sets the prosthetic enhancement type in slot 1.
      Parameters:
      enhancement - The enhancement type to set, or null to remove
    • getProstheticEnhancement1Count

      public int getProstheticEnhancement1Count()
      Returns:
      The number of slot 1 enhancements per trooper (0, 1, or 2)
    • setProstheticEnhancement1Count

      public void setProstheticEnhancement1Count(int count)
      Sets the number of slot 1 enhancements per trooper. Clamped to valid range of 0-2.
      Parameters:
      count - The enhancement count (0, 1, or 2)
    • getProstheticEnhancement2

      @Nullable public ProstheticEnhancementType getProstheticEnhancement2()
      Returns:
      The prosthetic enhancement type in slot 2, or null if none
    • setProstheticEnhancement2

      public void setProstheticEnhancement2(@Nullable ProstheticEnhancementType enhancement)
      Sets the prosthetic enhancement type in slot 2.
      Parameters:
      enhancement - The enhancement type to set, or null to remove
    • getProstheticEnhancement2Count

      public int getProstheticEnhancement2Count()
      Returns:
      The number of slot 2 enhancements per trooper (0, 1, or 2)
    • setProstheticEnhancement2Count

      public void setProstheticEnhancement2Count(int count)
      Sets the number of slot 2 enhancements per trooper. Clamped to valid range of 0-2.
      Parameters:
      count - The enhancement count (0, 1, or 2)
    • hasProstheticEnhancement

      public boolean hasProstheticEnhancement()
      Returns:
      True if this unit has any prosthetic enhancement configured (in either slot)
    • hasProstheticEnhancement1

      public boolean hasProstheticEnhancement1()
      Returns:
      True if this unit has a prosthetic enhancement in slot 1
    • hasProstheticEnhancement2

      public boolean hasProstheticEnhancement2()
      Returns:
      True if this unit has a prosthetic enhancement in slot 2
    • getProstheticDamageBonus

      public double getProstheticDamageBonus()
      Calculates the total prosthetic enhancement damage bonus per trooper from both slots. This sums the damage from both enhancement slots.
      Returns:
      The total damage bonus per trooper from all prosthetic enhancements
    • getBestProstheticAntiMekModifier

      public int getBestProstheticAntiMekModifier()
      Gets the best (most negative) anti-Mek modifier from all prosthetic enhancements.
      Returns:
      The best anti-Mek modifier, or 0 if no enhancement provides one
    • getBestProstheticAntiMekName

      @Nullable public String getBestProstheticAntiMekName()
      Gets the display name of the enhancement providing the best anti-Mek bonus.
      Returns:
      The display name, or null if no enhancement provides anti-Mek bonus
    • hasAntiMekBvMultiplier

      public boolean hasAntiMekBvMultiplier()
      Checks if any prosthetic enhancement provides an Anti-Mek BV multiplier. Per IO p.84, Grappler Lines and Climbing Claws provide a 1.2x multiplier on the Anti-Mek Battle Rating.
      Returns:
      True if any enhancement provides an Anti-Mek BV multiplier
    • getAntiMekBvMultiplier

      public double getAntiMekBvMultiplier()
      Gets the Anti-Mek BV multiplier from prosthetic enhancements. Per IO p.84, units with Grappler Lines or Climbing Claws multiply their Anti-Mek Battle Rating by 1.2.
      Returns:
      1.2 if the unit has Grappler or Climbing Claws, 1.0 otherwise
    • hasProstheticMeleeEnhancement

      public boolean hasProstheticMeleeEnhancement()
      Checks if any prosthetic enhancement (regular or extraneous) is a melee type.
      Returns:
      True if any enhancement is melee
    • getProstheticMeleeToHitModifier

      public int getProstheticMeleeToHitModifier()
      Gets the melee to-hit modifier from prosthetic enhancements. Per IO p.83, maximum modifier is +2 regardless of number of melee weapons.
      Returns:
      The melee to-hit modifier (capped at +2)
    • getProstheticEnhancement

      @Deprecated(since="0.50.07") @Nullable public ProstheticEnhancementType getProstheticEnhancement()
      Deprecated.
      Returns:
      The prosthetic enhancement type in slot 1 (legacy method)
    • setProstheticEnhancement

      @Deprecated(since="0.50.07") public void setProstheticEnhancement(@Nullable ProstheticEnhancementType enhancement)
      Sets the prosthetic enhancement type in slot 1 (legacy method).
      Parameters:
      enhancement - The enhancement type to set
    • getProstheticEnhancementCount

      @Deprecated(since="0.50.07") public int getProstheticEnhancementCount()
      Deprecated.
      Returns:
      The slot 1 enhancement count (legacy method)
    • setProstheticEnhancementCount

      @Deprecated(since="0.50.07") public void setProstheticEnhancementCount(int count)
      Deprecated.
      Sets the slot 1 enhancement count (legacy method).
      Parameters:
      count - The count to set
    • getExtraneousPair1

      @Nullable public ProstheticEnhancementType getExtraneousPair1()
      Returns:
      The prosthetic enhancement type for extraneous pair 1, or null if not set
    • setExtraneousPair1

      public void setExtraneousPair1(@Nullable ProstheticEnhancementType enhancement)
      Sets the prosthetic enhancement type for extraneous pair 1. Each pair always provides 2 items.
      Parameters:
      enhancement - The enhancement type to set, or null to clear
    • hasExtraneousPair1

      public boolean hasExtraneousPair1()
      Returns:
      True if extraneous pair 1 has an enhancement type set
    • getExtraneousPair2

      @Nullable public ProstheticEnhancementType getExtraneousPair2()
      Returns:
      The prosthetic enhancement type for extraneous pair 2, or null if not set
    • setExtraneousPair2

      public void setExtraneousPair2(@Nullable ProstheticEnhancementType enhancement)
      Sets the prosthetic enhancement type for extraneous pair 2. Each pair always provides 2 items.
      Parameters:
      enhancement - The enhancement type to set, or null to clear
    • hasExtraneousPair2

      public boolean hasExtraneousPair2()
      Returns:
      True if extraneous pair 2 has an enhancement type set
    • hasExtraneousLimbs

      public boolean hasExtraneousLimbs()
      Returns:
      True if this infantry unit has any extraneous limb pairs configured
    • getExtraneousDamageBonus

      public double getExtraneousDamageBonus()
      Gets the total bonus damage per trooper from extraneous limb enhancements. Each pair provides 2 items (1 per limb), so the damage is multiplied by 2 for each pair.
      Returns:
      Total damage bonus from extraneous limb enhancements
    • getExtraneousAntiMekModifier

      public int getExtraneousAntiMekModifier()
      Gets the best anti-Mek modifier from extraneous limb enhancements. Multiple enhancements do not stack; only the best modifier is used.
      Returns:
      Best anti-Mek modifier from extraneous limbs (negative values are better), or 0 if none
    • getExtraneousAntiMekEnhancementName

      @Nullable public String getExtraneousAntiMekEnhancementName()
      Gets the name of the extraneous limb enhancement that provides the best anti-Mek modifier.
      Returns:
      Name of the enhancement with best anti-Mek modifier, or null if none
    • hasExtraneousMeleeEnhancement

      public boolean hasExtraneousMeleeEnhancement()
      Returns:
      True if any extraneous limb enhancement is a melee weapon
    • getExtraneousMeleeToHitModifier

      @Deprecated(since="0.51.0", forRemoval=true) public int getExtraneousMeleeToHitModifier()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Gets the melee to-hit modifier from extraneous limb enhancements. Per IO p.83, maximum modifier is +2 regardless of number of melee weapons.
      Returns:
      The melee to-hit modifier from extraneous limbs (capped at +2)
    • damageFieldWeapons

      protected void damageFieldWeapons()
      Marks field guns and artillery as hit according to their crew requirement when losing troopers. Having them destroyed requires a later call of Infantry.applyDamage(). This method does not restore FG/FA when damage is removed from the unit. Only affects Conventional Infantry, not BattleArmor (can be called safely on BA).
    • damageOrRestoreFieldWeapons

      public void damageOrRestoreFieldWeapons()
      Destroys and restores field guns and artillery according to their crew requirements. This method is intended for any place where damage can be assigned and removed without cost (lobby). Only affects Conventional Infantry, not BattleArmor (can be called safely on BA).
    • restoreUncrewedFieldWeapons

      public void restoreUncrewedFieldWeapons()
      Field guns that are hit (uncrewed) will be set to not hit if they have the appropriate number of active troopers. Field guns that are destroyed will not be un-hit.
    • requiredCrewForFieldWeapon

      public int requiredCrewForFieldWeapon(WeaponType weaponType)
      Returns:
      The crew required to operate the given field gun or field artillery weapon, TO:AUE p.123. The rules are silent on rounding for the weight of artillery, therefore adopting that of field guns.
    • canChangeSecondaryFacing

      public boolean canChangeSecondaryFacing()
      Description copied from class: Entity
      Can this entity change secondary facing at all?
      Specified by:
      canChangeSecondaryFacing in class Entity
    • setInternal

      public void setInternal(int val, int loc)
      Description copied from class: Entity
      Sets the amount of armor in the location specified.
      Overrides:
      setInternal in class Entity
    • getInternalRemainingPercent

      public double getInternalRemainingPercent()
      Description copied from class: Entity
      Returns the percent of the armor remaining
      Overrides:
      getInternalRemainingPercent in class Entity
    • initializeInternal

      public void initializeInternal(int val, int loc)
      Description copied from class: Entity
      Initializes the internal structure on the unit. Sets the original and starting point of the internal structure to the same number.
      Overrides:
      initializeInternal in class Entity
    • isSecondaryArcWeapon

      public boolean isSecondaryArcWeapon(int wn)
      Description copied from class: Entity
      Returns true if this weapon fires into the secondary facing arc. If false, assume it fires into the primary.
      Specified by:
      isSecondaryArcWeapon in class Entity
    • autoSetInternal

      public void autoSetInternal()
      Description copied from class: Entity
      Sets the internal structure for every location to appropriate undamaged values for the unit and location.
      Specified by:
      autoSetInternal in class Entity
    • hasExcessiveExtraneousLimbs

      public boolean hasExcessiveExtraneousLimbs()
      Returns true if the current extraneous limb configuration exceeds the allowed maximum. Per IO p.85, if any wing prosthetics are installed, only one pair of extraneous limbs is allowed.
      Returns:
      true if invalid configuration (too many extraneous limb pairs)
    • getMovementString

      public String getMovementString(EntityMovementType movementType)
      Description copied from class: Entity
      Returns the name of the type of movement used.
      Specified by:
      getMovementString in class Entity
    • getWeaponArc

      public int getWeaponArc(int weaponNumber)
      Description copied from class: Entity
      Returns the Rules.ARC that the weapon, specified by number, fires into.
      Specified by:
      getWeaponArc in class Entity
      Parameters:
      weaponNumber - integer equipment number, index from equipment list
      Returns:
      arc the specified weapon is in
    • isProtectedFromGasAttacks

      public boolean isProtectedFromGasAttacks()
      Checks if this infantry unit is protected from gas attacks (including pheromone and toxin gas attacks). Protection comes from MD_FILTRATION implant or hostile environment gear (space suit, XCT vacuum, or toxic atmosphere armor kits).
      Returns:
      true if protected from gas attacks
    • getCost

      public double getCost(CalculationReport calcReport, boolean ignoreAmmo)
      Description copied from class: Entity
      Calculates and returns the C-bill cost of the unit. The parameter ignoreAmmo can be used to include or exclude ("dry cost") the cost of ammunition on the unit. A report for the cost calculation will be written to the given calcReport.
      Specified by:
      getCost in class Entity
      Parameters:
      calcReport - A CalculationReport to write the report for the cost calculation to
      ignoreAmmo - When true, the cost of ammo on the unit will be excluded from the cost
      Returns:
      The cost in C-Bills of the 'Mek in question.
    • getRunMP

      public int getRunMP(MPCalculationSetting mpCalculationSetting)
      Overrides:
      getRunMP in class Entity
    • hasMinimalGroundMP

      public boolean hasMinimalGroundMP(MPCalculationSetting mpCalculationSetting)
      Returns:
      True when this conventional infantry unit has ground movement of 0*, meaning it may still move a single hex despite having 0 walking MP.
    • hasMinimalGroundMP

      public boolean hasMinimalGroundMP()
      Returns:
      True when this conventional infantry unit has ground movement of 0*, meaning it may still move a single hex despite having 0 walking MP.
    • isExhaustedFromFastMove

      public boolean isExhaustedFromFastMove()
      Per TO:AR p.25, 0 MP infantry that used fast movement (MOVE_RUN) in the previous turn cannot move or fire in the following turn.
      Returns:
      true if this unit is exhausted from using fast movement last round
    • 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 Entity
      Returns:
      whether the entity is allowed to move
    • usedFastMoveThisTurn

      public boolean usedFastMoveThisTurn()
    • 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 Entity
    • isPheromoneImpaired

      public boolean isPheromoneImpaired()
      Returns:
      true if this unit is impaired by pheromone gas attack (IO pg 79)
    • setPheromoneImpaired

      public void setPheromoneImpaired(boolean impaired)
      Sets whether this unit is impaired by pheromone gas attack. Impaired units suffer +1 to-hit on all actions for remainder of scenario.
      Parameters:
      impaired - true to mark as pheromone impaired
    • setMotorizedScuba

      public void setMotorizedScuba()
      Standard and motorized SCUBA only differ in base movement, so they both use INF_UMU. If the motion_type contains the string "motorized", the movement is set here instead.
    • isEligibleForPavementOrRoadBonus

      public boolean isEligibleForPavementOrRoadBonus()
      Description copied from class: Entity
      Tanks and certain other units can get a +1 bonus to MP if their move is entirely on pavement.
      Overrides:
      isEligibleForPavementOrRoadBonus in class Entity
      Returns:
      true if the Entity gets a movement bonus on pavement
    • isNonMechSCUBA

      public boolean isNonMechSCUBA()
      Used to check for standard or motorized SCUBA infantry, which have a maximum depth of 2.
      Returns:
      true if this is a conventional infantry unit with non-mechanized SCUBA specialization
    • isNuclearHardened

      public boolean isNuclearHardened()
      Description copied from class: Entity
      Checks if the unit is hardened against nuclear strikes.
      Overrides:
      isNuclearHardened in class Entity
      Returns:
      true if this is a hardened unit.
    • canUseGliderWings

      public boolean canUseGliderWings()
      Returns true if this infantry unit can use glider wings in the current conditions. Glider wings cannot be used in vacuum or trace (very thin) atmospheres (IO:AE 3rd p.79).
      Returns:
      true if glider wings are usable
    • canUsePoweredFlightWings

      public boolean canUsePoweredFlightWings()
      Returns true if this infantry unit can use powered flight wings in the current conditions. Powered flight wings cannot be used in vacuum (IO:AE 3rd p.79). Note: Unlike glider wings, powered flight only mentions vacuum restriction, not trace atmosphere. However, for consistency and realism, we apply the same atmospheric restriction as glider wings.
      Returns:
      true if powered flight wings are usable
    • getMaxElevationDown

      public int getMaxElevationDown(int currElevation)
      Returns the maximum downward elevation change this infantry can make. Infantry with glider wings can descend any number of levels safely (IO p.85).
      Overrides:
      getMaxElevationDown in class Entity
    • getTransferLocation

      public HitData getTransferLocation(HitData hit)
      Description copied from class: Entity
      Gets the location that excess damage transfers to. That is, one location inwards.
      Specified by:
      getTransferLocation in class Entity
    • rollHitLocation

      public HitData rollHitLocation(int table, int side, int aimedLocation, AimingMode aimingMode, int cover)
      Description copied from class: Entity
      Rolls the to-hit number
      Specified by:
      rollHitLocation in class Entity
    • getConstructionTechAdvancement

      public TechAdvancement getConstructionTechAdvancement()
      Description copied from class: Entity
      return - the base construction option tech advancement
      Specified by:
      getConstructionTechAdvancement in class Entity
    • getCombatEngineerTA

      public static TechAdvancement getCombatEngineerTA()
    • getMarineTA

      public static TechAdvancement getMarineTA()
    • getMountainTA

      public static TechAdvancement getMountainTA()
    • getParatrooperTA

      public static TechAdvancement getParatrooperTA()
    • getParamedicTA

      public static TechAdvancement getParamedicTA()
    • getTAGTroopsTA

      public static TechAdvancement getTAGTroopsTA()
    • canExitVTOLWithGliderWings

      public boolean canExitVTOLWithGliderWings()
      Description copied from class: Infantry
      Returns true if this infantry unit can exit a VTOL using glider wings. Per IO:AE p.79, glider wings give a soldier the ability to leave a VTOL during movement as if the soldier were jump infantry.
      Overrides:
      canExitVTOLWithGliderWings in class Infantry
      Returns:
      true if this infantry can exit a VTOL using glider wings