private static String formatArmorBattleArmor(BattleArmor b) { StringBuffer sb = new StringBuffer(32); for (int i = 1; i < b.locations(); i++) { sb.append("Trooper ").append(i).append(": ") .append(renderArmor(b.getArmor(i))).append(" / ") .append(renderArmor(b.getInternal(i))); sb.append(CommonConstants.NL); } return sb.toString(); }
@Override public double getWeightArmor() { return ba.getOArmor(1) * EquipmentType.getBaArmorWeightPerPoint(ba.getArmorType(1), TechConstants.isClan(ba.getArmorTechLevel(1))); }
public BattleArmorSuit(BattleArmor ba, int loc, Campaign c) { super((int)ba.getWeight(), c); this.trooper = loc; this.quad = ba.getChassisType() == BattleArmor.CHASSIS_TYPE_QUAD; this.weightClass= ba.getWeightClass(); this.groundMP = ba.getOriginalWalkMP(); this.jumpMP = ba.getOriginalJumpMP(); this.clan = ba.isClan(); this.chassis = ba.getChassis(); this.model = ba.getModel(); this.jumpType = ba.getMovementMode(); this.name = chassis + " " + model + " Suit"; initializeExtraCostsAndTons(); }
public static int maxVtolMP(BattleArmor ba) { if ((ba.getChassisType() == BattleArmor.CHASSIS_TYPE_QUAD) || (ba.getWeightClass() > EntityWeightClass.WEIGHT_MEDIUM)) { return 0; } else { return 7 - ba.getWeightClass() + EntityWeightClass.WEIGHT_ULTRA_LIGHT; } }
/** * Returns true if this <code>BattleArmor</code> can use a detachable weapon * pack. A <code>BattleArmor</code> must have 2 or more walking MP and be * Medium or heavier to mount DWP. * * @return */ public boolean canMountDWP() { return (getOriginalWalkMP() >= 2) && (getWeightClass() >= EntityWeightClass.WEIGHT_MEDIUM); }
@Override public boolean canMakeAntiMekAttacks() { return !isBurdened() && canDoMechanizedBA() && (getWeightClass() < EntityWeightClass.WEIGHT_HEAVY) && (getMovementMode() != EntityMovementMode.INF_UMU); }
buff.append(getChassis()); buff.append(newline); buff.append("</name>"); buff.append(getModel()); buff.append(newline); buff.append("</model>"); buff.append(getYear()); buff.append(newline); buff.append("</year>"); switch (getTechLevel()) { case TechConstants.T_INTRO_BOXSET: buff.append("IS Level 1"); buff.append(getWeight()); buff.append(newline); buff.append("</trooper count>"); switch (getWeightClass()) { case EntityWeightClass.WEIGHT_ULTRA_LIGHT: buff.append("0"); switch (getMovementMode()) { case INF_JUMP: buff.append("jump"); switch (getChassisType()) {
for (int i = 1; i < locations(); i++) { if (this.getInternal(i) <= 0) { continue; if (isFireResistant() || isReflective() || isReactive()) { armorBV = 3.5; dBV += (getArmor(i) * armorBV) + 1; if (hasImprovedSensors()) { dBV += 1; if (hasActiveProbe()) { dBV += 1; for (Mounted mounted : getMisc()) { if (mounted.getType().hasFlag(MiscType.F_ECM)) { if (mounted.getType().hasFlag(MiscType.F_ANGEL_ECM)) { for (Mounted weapon : getWeaponList()) { if (weapon.getType().hasFlag(WeaponType.F_AMS)) { if (weapon.getLocation() == LOC_SQUAD) { / getTotalOInternal(); int runMP = getWalkMP(false, false, true, true, false); int umuMP = getActiveUMUCount(); int tmmRan = Compute.getTargetMovementModifier(Math.max(runMP,umuMP), false, false, game).getValue();
Justification.LEFT, Justification.LEFT, Justification.CENTER, Justification.RIGHT })); final TestBattleArmor testBA = new TestBattleArmor(ba, verifier.baOption, null); if (ba.getChassisType() == BattleArmor.CHASSIS_TYPE_QUAD) { setModelData("chassisType", Messages.getString("TROView.chassisQuad")); } else { EntityWeightClass.getClassName(EntityWeightClass.getWeightClass(ba.getTrooperWeight(), ba))); setModelData("weight", ba.getTrooperWeight() * 1000); setModelData("swarmAttack", ba.canMakeAntiMekAttacks() ? "Yes" : "No"); (ba.canDoMechanizedBA() && (ba.getWeightClass() < EntityWeightClass.WEIGHT_HEAVY)) ? "Yes" : "No"); setModelData("mechanized", ba.canDoMechanizedBA() ? "Yes" : "No"); setModelData("antiPersonnel", ba.getEquipment().stream().anyMatch(m -> m.isAPMMounted()) ? "Yes" : "No"); setModelData("groundMP", ba.getWalkMP()); setModelData("groundMass", testBA.getWeightGroundMP() * 1000); if (ba.getMovementMode() == EntityMovementMode.VTOL) { setModelData("vtolMP", ba.getOriginalJumpMP()); setModelData("vtolMass", testBA.getWeightSecondaryMotiveSystem() * 1000); } else if (ba.getMovementMode() == EntityMovementMode.INF_UMU) { setModelData("umuMP", ba.getOriginalJumpMP()); setModelData("umuMass", testBA.getWeightSecondaryMotiveSystem() * 1000); } else { setModelData("jumpMP", ba.getOriginalJumpMP()); setModelData("jumpMass", testBA.getWeightSecondaryMotiveSystem() * 1000); manipulators.add(formatManipulatorRow(BattleArmor.MOUNT_LOC_LARM, ba.getLeftManipulator())); manipulators.add(formatManipulatorRow(BattleArmor.MOUNT_LOC_RARM, ba.getRightManipulator())); setModelData("manipulators", manipulators);
if(getChassis().equals("Longinus Battle Armor") && getModel().equals("[Flamer]") && !includeTrainingAndClan) { case EntityWeightClass.WEIGHT_MEDIUM: cost += 100000; if (getMovementMode() == EntityMovementMode.VTOL) { cost += getOriginalJumpMP() * 100000; } else { cost += getOriginalJumpMP() * 75000; if (getMovementMode() == EntityMovementMode.INF_UMU) { cost += getOriginalJumpMP() * 100000; } else { cost += getOriginalJumpMP() * 150000; if (getMovementMode() == EntityMovementMode.INF_UMU) { cost += getOriginalJumpMP() * 150000; } else { cost += getOriginalJumpMP() * 300000; cost += 50000 * getOriginalJumpMP(); cost += 25000 * (getOriginalWalkMP() - 1); for (Mounted mounted : getEquipment()) { if ((mounted.getType() instanceof MiscType) && ((MiscType) mounted.getType()).hasFlag(MiscType.F_BA_MANIPULATOR)) {
public boolean correctMovement(StringBuffer buff) { if (ba.getOriginalWalkMP() > ba.getMaximumWalkMP()) { buff.append("Walk MP is " + ba.getOriginalWalkMP() + " but maximum is " + ba.getMaximumWalkMP() + "!"); return false; if (ba.getOriginalJumpMP() > ba.getMaximumJumpMP()) { buff.append("Jump MP is " + ba.getOriginalWalkMP() + " but maximum is " + ba.getMaximumWalkMP() + "!"); return false; if (ba.hasWorkingMisc(MiscType.F_JUMP_BOOSTER) && ((ba.getMovementMode() != EntityMovementMode.INF_JUMP) || (ba .getJumpMP() < 1))) { buff.append("BattleArmor with jump boosters " + "must have jump jets with a least 1MP!"); if (ba.hasWorkingMisc(MiscType.F_PARTIAL_WING) && ((ba.getMovementMode() != EntityMovementMode.INF_JUMP) || (ba .getJumpMP() < 1))) { buff.append("BattleArmor with a partial wing " + "must have jump jets with a least 1MP!"); if (ba.hasWorkingMisc(MiscType.F_JUMP_BOOSTER) && ba.hasWorkingMisc(MiscType.F_PARTIAL_WING)) { buff.append("BattleArmor may not mount a jump booster " + "and a partial wing!"); if (ba.hasWorkingMisc(MiscType.F_MECHANICAL_JUMP_BOOSTER) && ba.hasMyomerBooster()) {
int critsUsed[][] = new int[ba.getTroopers() + 1] [BattleArmor.MOUNT_NUM_LOCS]; int numAPWeapons[][] = new int[ba.getTroopers() + 1] [BattleArmor.MOUNT_NUM_LOCS]; int numAMWeapons[][] = new int[ba.getTroopers() + 1] [BattleArmor.MOUNT_NUM_LOCS]; int numSSWMs = 0; for (Mounted m : ba.getEquipment()) { for (int t = 0; t <= ba.getTroopers(); t++) { critsUsed[t][m.getBaMountLoc()] += critSize; if ((m.getType() instanceof WeaponType) && ba.getChassisType() == BattleArmor.CHASSIS_TYPE_QUAD){ buff.append("Quad BattleArmor cannot use squad support " + "weapon mounts!\n"); for (Mounted ammo : ba.getAmmo()){ if (ammo.isSquadSupportWeapon() && !AmmoType.isAmmoValid(ammo, sswType)){ for (int t = 0; t < ba.locations(); t++) { numAMWeapons[t][BattleArmor.MOUNT_LOC_BODY] += numAMWeapons[t][BattleArmor.MOUNT_LOC_TURRET]; numAPWeapons[t][BattleArmor.MOUNT_LOC_BODY] += numAPWeapons[t][BattleArmor.MOUNT_LOC_TURRET]; for (int t = 0; t <= ba.getTroopers(); t++) { for (int loc = 0; loc < BattleArmor.MOUNT_NUM_LOCS; loc++) { if (critsUsed[t][loc] > ba.getNumCrits(loc)) {
if (ba.getChassisType() == BattleArmor.CHASSIS_TYPE_BIPED) { blk.writeBlockData("chassis", "biped"); } else if (ba.getChassisType() == BattleArmor.CHASSIS_TYPE_QUAD) { blk.writeBlockData("chassis", "quad"); if (ba.getTurretCapacity() > 0) { blk.writeBlockData("turret", (ba.hasModularTurretMount()? "Modular:" : "Standard:") + ba.getTurretCapacity()); if (ba.isExoskeleton()) { blk.writeBlockData("exoskeleton", "true"); blk.writeBlockData("jumpingMP", ba.getOriginalJumpMP()); blk.writeBlockData("armor", new int[] { ba.getArmor(1) }); blk.writeBlockData("Trooper Count", (int) t.getWeight()); blk.writeBlockData("weightclass", ba.getWeightClass()); } else if (t instanceof Infantry) { Infantry infantry = (Infantry) t;
public int getWalkMP(boolean gravity, boolean ignoreheat, boolean ignoremodulararmor, boolean ignoreDWP, boolean ignoreMyomerBooster) { int j = getOriginalWalkMP(); if (hasMyomerBooster()) { if (!ignoreMyomerBooster) { if (getWeightClass() >= EntityWeightClass.WEIGHT_HEAVY) { j++; } else { } else if (hasWorkingMisc(MiscType.F_MECHANICAL_JUMP_BOOSTER)) { if (hasDWP() && !ignoreDWP) { if (getWeightClass() == EntityWeightClass.WEIGHT_MEDIUM) { j -= 3; } else if (getWeightClass() >= EntityWeightClass.WEIGHT_HEAVY) { j -= 2; j = applyGravityEffectsOnMP(j);
if (isBurdened() && !ignoreBurden) { return 0; if (hasDWP() && !ignoreDWP) { return 0; if (getMovementMode() != EntityMovementMode.INF_UMU) { mp = getOriginalJumpMP(); if ((mp == 0) && hasWorkingMisc(MiscType.F_MECHANICAL_JUMP_BOOSTER)) { mp++; && hasWorkingMisc(MiscType.F_PARTIAL_WING) && ((game == null) || !game.getPlanetaryConditions().isVacuum())) { mp++; if ((mp > 0) && hasWorkingMisc(MiscType.F_JUMP_BOOSTER)) { mp = applyGravityEffectsOnMP(mp);
Mockito.when(mockBA.locations()).thenReturn(5); Mockito.when(mockBA.getArmor(Mockito.anyInt())).thenReturn(5); Mockito.when(mockBA.getCrew()).thenReturn(mockCrew); Mockito.when(mockBA.getHeatCapacity()).thenReturn(999); Mockito.when(mockBA.isFireResistant()).thenReturn(true); Mockito.when(mockHexThree.getTerrainTypes()).thenReturn(new int[]{Terrains.BUILDING, Terrains.FIRE}); Assert.assertEquals(0, testRanker.checkPathForHazards(mockPath, mockBA, mockGame), TOLERANCE);
@Override public void setAlphaStrikeMovement(Map<String,Integer> moves) { if (getMovementMode().equals(EntityMovementMode.INF_JUMP)) { moves.put("j", getJumpMP(true, true, true) * 2); } else if (getMovementMode().equals(EntityMovementMode.INF_UMU)) { moves.put("s", getActiveUMUCount() * 2); } else { moves.put(getMovementModeAsBattleForceString(), getOriginalWalkMP() * 2); } }
public double getWeightGroundMP() { int walkMP = ba.getOriginalWalkMP(); if (ba.getChassisType() == BattleArmor.CHASSIS_TYPE_QUAD) { walkMP -= QUAD_FREE_MP; } else { walkMP -= BIPED_FREE_MP; } if (walkMP > 0) { return ADDITIONAL_GROUND_MP_WEIGHT[ba.getWeightClass()] * walkMP; } else { return 0; } }
public int getBodyCrits() { if(getChassisType() == CHASSIS_TYPE_QUAD) { int turret = 0; if (getTurretCapacity() > 0) { turret = 1; if (hasModularTurretMount()) { turret++; switch(getWeightClass()) { case EntityWeightClass.WEIGHT_ULTRA_LIGHT: return 0; switch(getWeightClass()) { case EntityWeightClass.WEIGHT_ULTRA_LIGHT: return 2;
public double getWeightSecondaryMotiveSystem() { int jumpMP = ba.getOriginalJumpMP(); if (ba.getMovementMode() == EntityMovementMode.VTOL) { return jumpMP * BAMotiveSystems.BA_VTOL.getWeight(ba.getWeightClass()); } else if (ba.getMovementMode() == EntityMovementMode.INF_UMU) { return jumpMP * BAMotiveSystems.BA_UMU.getWeight(ba.getWeightClass()); } else { return jumpMP * BAMotiveSystems.BA_JUMP.getWeight(ba.getWeightClass()); } }