/** * Is this a primitive Mech? * * @return */ public boolean isPrimitive() { return (getCockpitType() == Mech.COCKPIT_PRIMITIVE) || (getCockpitType() == Mech.COCKPIT_PRIMITIVE_INDUSTRIAL); }
final String METHOD_NAME = "isDmgHeavy"; MMLogger logger = DefaultMmLogger.getInstance(); if (getArmor(LOC_HEAD) < getOArmor(LOC_HEAD)) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " LIGHT DAMAGE: head armor damaged"); return true; if (getArmorRemainingPercent() <= 0.75) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " LIGHT DAMAGE: less than 75% armor remaining"); return true; if ((getCrew() != null) && (getCrew().getHits() == 1)) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " LIGHT DAMAGE: crew hit"); return true; if (!isMilitary()) { return false; int totalWeapons = getTotalWeaponList().size(); int totalInoperable = 0; for (Mounted weap : getTotalWeaponList()) { if (weap.isCrippled()) { totalInoperable++; getDisplayName() + " HEAVY DAMAGE: Less than 75% weapons operable"); return true;
public String getSystemName(int index) { if (index == SYSTEM_GYRO) { return Mech.getGyroDisplayString(gyroType); } if (index == SYSTEM_COCKPIT) { if (isIndustrial() && (cockpitType == Mech.COCKPIT_STANDARD)) { return "Industrial Cockpit (adv. FCS)"; } return Mech.getCockpitDisplayString(cockpitType); } return systemNames[index]; }
public double getGyroMultiplier() { if ((getGyroType() == GYRO_HEAVY_DUTY)) { return 1.0; } if (getGyroType() == GYRO_NONE && getCockpitType() != COCKPIT_INTERFACE) { return 0; } return 0.5; }
@Override public boolean isGyroDestroyed() { if (getGyroType() == GYRO_HEAVY_DUTY) { return getGyroHits() > 2; } else { return getGyroHits() > 1; } }
bvText.append(getChassis()); bvText.append(" "); bvText.append(getModel()); bvText.append("</b></CENTER>"); bvText.append(nl); for (int loc = 0; loc < locations(); loc++) { switch (getArmorType(loc)) { case EquipmentType.T_ARMOR_COMMERCIAL: armorMultiplier = 0.5; if (hasWorkingMisc(MiscType.F_BLUE_SHIELD)) { armorMultiplier += 0.2; if (countWorkingMisc(MiscType.F_HARJEL_II, loc) > 0) { armorMultiplier *= 1.1; if (countWorkingMisc(MiscType.F_HARJEL_III, loc) > 0) { armorMultiplier *= 1.2; if ((getCockpitType() == Mech.COCKPIT_TORSO_MOUNTED) && (loc == LOC_CT)) { bvText.append(startRow); bvText.append(startColumn); double cockpitArmor = this.getArmor(Mech.LOC_CT) + this.getArmor(Mech.LOC_CT, true); cockpitArmor *= armorMultiplier; bvText.append("extra BV for torso mounted cockpit");
double[] costs = new double[17 + locations()]; int i = 0; if (getCockpitType() == Mech.COCKPIT_TORSO_MOUNTED) { cockpitCost = 750000; } else if (getCockpitType() == Mech.COCKPIT_DUAL) { } else if (getCockpitType() == Mech.COCKPIT_COMMAND_CONSOLE) { } else if (getCockpitType() == Mech.COCKPIT_SMALL) { cockpitCost = 175000; } else if (getCockpitType() == Mech.COCKPIT_VRRP) { cockpitCost = 1250000; } else if (getCockpitType() == Mech.COCKPIT_INDUSTRIAL) { cockpitCost = 100000; } else if (getCockpitType() == Mech.COCKPIT_QUADVEE) { cockpitCost = 375000; } else { cockpitCost = 200000; if (hasEiCockpit() && ((null != getCrew()) && hasAbility(OptionsConstants.UNOFF_EI_IMPLANT))) { cockpitCost = 400000; costs[i++] = 50000;// life support costs[i++] = weight * 2000;// sensors int muscCost = hasSCM() ? 10000 : hasTSM() ? 16000 : hasIndustrialTSM() ? 12000 : 2000; costs[i++] = getActuatorCost();// arm and/or leg actuators
boolean standard = (getCockpitType() == Mech.COCKPIT_STANDARD) && (getGyroType() == Mech.GYRO_STANDARD); boolean fullHead = hasFullHeadEject(); if (standard && !fullHead) { sb.append("Version:1.0").append(newLine); if (isOmni()) { sb.append(" Omnimech"); if (isMixedTech()) { if (isClan()) { sb.append("Mixed (Clan Chassis)"); } else { sb.append("Mass:").append(tonnage.intValue()).append(newLine); sb.append("Engine:"); if(hasEngine()) { sb.append(getEngine().getEngineName()) .append(" Engine") .append(!(getEngine().hasFlag(Engine.CLAN_ENGINE) && isMixedTech()) ? ("(IS)") : ""); } else { sb.append(EquipmentType.getStructureTypeName(getStructureType(), TechConstants.isClan(structureTechLevel))); sb.append(newLine); if (hasTSM()) { sb.append("Triple-Strength");
boolean hasStealth = mech.hasStealth(); boolean hasC3 = mech.hasC3(); boolean hasHarjelII = false; boolean hasHarjelIII = false; for (Mounted m : mech.getMisc()) { hasHarjelII |= m.getType().hasFlag(MiscType.F_HARJEL_II); hasHarjelIII |= m.getType().hasFlag(MiscType.F_HARJEL_III); && m.getLocation() != Mech.LOC_RT && m.getLocation() != Mech.LOC_LT && !mech.locationIsLeg(m.getLocation())) { buff.append("Jump jet must be mounted in leg or torso\n"); illegal = true; if (misc.hasFlag(MiscType.F_UMU) && (mech.getJumpType() != Mech.JUMP_NONE) && (mech.getJumpType() != Mech.JUMP_BOOSTER)) { illegal = true; buff.append("UMUs cannot be mounted with jump jets " && !mech.locationIsLeg(m.getLocation())) { buff.append("A-Pod must be mounted in leg\n"); illegal = true; if (mech.getCockpitType() == Mech.COCKPIT_COMMAND_CONSOLE) { buff.append("cockpit command console can't be combined with remote drone command console\n"); illegal = true; if ((mech.getCockpitType() == Mech.COCKPIT_TORSO_MOUNTED) && (m.getLocation() != Mech.LOC_CT)) {
Justification.CENTER, Justification.CENTER })); addFluff(); mech.setConversionMode(0); setModelData("isOmni", mech.isOmni()); setModelData("isQuad", mech.hasETypeFlag(Entity.ETYPE_QUAD_MECH)); setModelData("isTripod", mech.hasETypeFlag(Entity.ETYPE_TRIPOD_MECH)); final TestMech testMech = new TestMech(mech, verifier.mechOption, null); setModelData("structureName", mech.getStructureType() == EquipmentType.T_STRUCTURE_STANDARD ? "" : EquipmentType.getStructureTypeName(mech.getStructureType())); setModelData("isMass", NumberFormat.getInstance().format(testMech.getWeightStructure())); setModelData("engineName", stripNotes(mech.getEngine().getEngineName())); setModelData("engineMass", NumberFormat.getInstance().format(testMech.getWeightEngine())); setModelData("walkMP", mech.getWalkMP()); setModelData("runMP", mech.getRunMPasString()); setModelData("jumpMP", mech.getJumpMP()); setModelData("hsType", mech.getHeatSinkTypeName()); setModelData("hsCount", mech.hasDoubleHeatSinks() ? mech.heatSinks() + " [" + (mech.heatSinks() * 2) + "]" : mech.heatSinks()); setModelData("hsMass", NumberFormat.getInstance().format(testMech.getWeightHeatSinks())); if (mech.getGyroType() == Mech.GYRO_STANDARD) { setModelData("gyroType", mech.getRawSystemName(Mech.SYSTEM_GYRO)); } else { setModelData("gyroType", Mech.getGyroDisplayString(mech.getGyroType())); if ((mech.getCockpitType() == Mech.COCKPIT_STANDARD) || (mech.getCockpitType() == Mech.COCKPIT_INDUSTRIAL)) { setModelData("cockpitType", mech.getRawSystemName(Mech.SYSTEM_COCKPIT)); } else { setModelData("cockpitType", Mech.getCockpitDisplayString(mech.getCockpitType()));
Mockito.when(mockMech.getRunMP()).thenReturn(6); Mockito.when(mockMech.isImmobile()).thenReturn(false); Mockito.when(mockMech.isShutDown()).thenReturn(false); Mockito.when(mockMech.isProne()).thenReturn(false); Mockito.when(mockMech.isStuck()).thenReturn(false); Mockito.when(mockMech.isStalled()).thenReturn(false); Mockito.when(mockMech.cannotStandUpFromHullDown()).thenReturn(false); Mockito.when(mockMech.checkGetUp(Mockito.any(MoveStep.class), Mockito.any(EntityMovementType.class))).thenReturn(mockPilotingRollData); Mockito.when(mockMech.getPosition()).thenReturn(mockPosiiton); Mockito.when(mockMech.getPriorPosition()).thenReturn(mockPriorPosition); Mockito.when(mockMech.checkBogDown(Mockito.any(MoveStep.class), Mockito.any(EntityMovementType.class), Mockito.eq(mockHex), Mockito.eq(mockPriorPosition), Mockito.eq(mockPosiiton), Mockito.anyInt(), Mockito.anyBoolean())) Mockito.when(mockMech.isImmobile()).thenReturn(true); Mockito.when(mockMech.isShutDown()).thenReturn(true); Assert.assertFalse(mockPrincess.isImmobilized(mockMech)); Mockito.when(mockMech.isImmobile()).thenReturn(true); Mockito.when(mockMech.isShutDown()).thenReturn(false); Assert.assertTrue(mockPrincess.isImmobilized(mockMech)); Mockito.when(mockMech.isImmobile()).thenReturn(false); Mockito.when(mockMech.getRunMP()).thenReturn(0); Assert.assertTrue(mockPrincess.isImmobilized(mockMech)); Mockito.when(mockMech.getRunMP()).thenReturn(6); Mockito.when(mockMech.isImmobile()).thenReturn(false); Mockito.when(mockMech.isShutDown()).thenReturn(false);
for (int i = 0; i < m.locations(); i++) { a = m.getArmor(i); a0 = m.getOArmor(i); vLabels[i].setValue(m.getArmorString(i)); WidgetUtils.setAreaColor(areas[i], vLabels[i], (double) a / (double) a0); if (m.hasRearArmor(i)) { a = m.getArmor(i, true); a0 = m.getOArmor(i, true); vLabels[i + REAR_AREA_OFFSET].setValue(m .getArmorString(i, true)); WidgetUtils.setAreaColor(areas[i + REAR_AREA_OFFSET], vLabels[i + REAR_AREA_OFFSET], (double) a / (double) a0); a = m.getInternal(i); a0 = m.getOInternal(i); vLabels[i + INT_STRUCTURE_OFFSET].setValue(m.getInternalString(i)); WidgetUtils.setAreaColor(areas[i + INT_STRUCTURE_OFFSET], vLabels[i + INT_STRUCTURE_OFFSET], (double) a / (double) a0); if (!m.hasPatchworkArmor() && m.hasBARArmor(1)) { content.addArea(labels[19]); content.addArea(vLabels[20]); vLabels[20].setValue(String.valueOf(m.getBARRating(1))); } else { content.removeArea(labels[19]);
final String METHOD_NAME = "isCrippled(boolean)"; MMLogger logger = DefaultMmLogger.getInstance(); if (countInternalDamagedLimbs() >= 3) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " CRIPPLED: 3+ limbs have taken internals."); return true; if (countInternalDamagedTorsos() >= 2) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " CRIPPLED: 2+ torsos have taken internals."); return true; if (isLocationBad(LOC_LT)) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " CRIPPLED: Left Torso destroyed."); return true; if (isLocationBad(LOC_RT)) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " CRIPPLED: Right Torso destroyed."); return true; if (getEngineHits() >= 2) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " CRIPPLED: 2 Engine Hits."); return true; if ((getEngineHits() == 1) && (getGyroHits() == 1)) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG,
if (!mech.isProne() && !mech.isStuck() && !mech.isStalled()) { return false; if (mech.isProne()) { if (mech.cannotStandUpFromHullDown()) { log(getClass(), METHOD_NAME, LogLevel.INFO, "Cannot stand up."); final PilotingRollData target = mech.checkGetUp(getUp, movePath.getLastStepMovementType()); log(getClass(), METHOD_NAME, LogLevel.INFO, final IHex hex = getHex(mech.getPosition()); final PilotingRollData target = mech.checkBogDown(walk, movePath.getLastStepMovementType(), hex, mech.getPriorPosition(), mech.getPosition(), hex.getLevel(), false); log(getClass(), METHOD_NAME, LogLevel.INFO,
if (getBadCriticals(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_GYRO, Mech.LOC_CT) > 0) { if (getGyroType() == Mech.GYRO_HEAVY_DUTY) { if (getBadCriticals(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_GYRO, Mech.LOC_CT) == 1) { roll.addModifier(1, "HD Gyro damaged once"); if (hasActiveEiCockpit()) { roll.addModifier(-1, "Enhanced Imaging"); if (hasAbility(OptionsConstants.MD_VDNI) && !hasAbility(OptionsConstants.MD_BVDNI)) { roll.addModifier(-1, "VDNI"); if ((getCockpitType() == Mech.COCKPIT_SMALL) && (!hasAbility(OptionsConstants.MD_BVDNI) && !hasAbility(OptionsConstants.UNOFF_SMALL_PILOT))) { roll.addModifier(1, "Small Cockpit"); } else if (getCockpitType() == Mech.COCKPIT_TORSO_MOUNTED) { roll.addModifier(1, "Torso-Mounted Cockpit"); int sensorHits = getHitCriticals(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_SENSORS, Mech.LOC_HEAD); int sensorHits2 = getHitCriticals(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_SENSORS, Mech.LOC_CT); if ((sensorHits + sensorHits2) == 3) { } else if (getCockpitType() == Mech.COCKPIT_DUAL) {
Mech aMech = (Mech) entity; StringBuilder hsString = new StringBuilder(); hsString.append(aMech.heatSinks()); if (aMech.getHeatCapacity() > aMech.heatSinks()) { hsString.append(" [") //$NON-NLS-1$ .append(aMech.getHeatCapacity()).append("]"); //$NON-NLS-1$ if (aMech.damagedHeatSinks() > 0) { hsString.append(" ").append(warningStart()).append("(") .append(aMech.damagedHeatSinks()) .append(" damaged)").append(warningEnd()); sBasic.add(new LabeledElement(aMech.getHeatSinkTypeName() + "s", hsString.toString())); if ((aMech.getCockpitType() != Mech.COCKPIT_STANDARD) || aMech.hasArmoredCockpit()) { sBasic.add(new LabeledElement(Messages.getString("MechView.Cockpit"), aMech.getCockpitTypeString() + (aMech.hasArmoredCockpit()? " (armored)" : ""))); String gyroString = aMech.getGyroTypeString(); if (aMech.getGyroHits() > 0) { gyroString += " " + warningStart() + "(" + aMech.getGyroHits() + " hits)" + warningEnd(); if (aMech.hasArmoredGyro()) { gyroString += " (armored)";
for (int i = 0; i < m.locations(); i++) { a = m.getArmor(i); a0 = m.getOArmor(i); vLabels[i].setValue(m.getArmorString(i)); WidgetUtils.setAreaColor(areas[i], vLabels[i], (double) a / (double) a0); if (m.hasRearArmor(i)) { a = m.getArmor(i, true); a0 = m.getOArmor(i, true); vLabels[i + REAR_AREA_OFFSET].setValue(m .getArmorString(i, true)); WidgetUtils.setAreaColor(areas[i + REAR_AREA_OFFSET], vLabels[i + REAR_AREA_OFFSET], (double) a / (double) a0); a = m.getInternal(i); a0 = m.getOInternal(i); vLabels[i + INT_STRUCTURE_OFFSET].setValue(m.getInternalString(i)); WidgetUtils.setAreaColor(areas[i + INT_STRUCTURE_OFFSET], vLabels[i + INT_STRUCTURE_OFFSET], (double) a / (double) a0);
int hitLocation = i; while (targetMech.isLocationBad(hitLocation) && (Mech.LOC_CT != hitLocation)) { hitLocation = Mech.getInnerLocation(hitLocation); final int targetArmor = Math.max(0, targetMech.getArmor(hitLocation, (3 == getDamageDirection()))); final int targetInternals = Math.max(0, targetMech.getInternal(hitLocation)); setKillProbability(getKillProbability() + (hitLocationProbability * getProbabilityToHit())); } else if ((Mech.LOC_HEAD == hitLocation) && (Mech.COCKPIT_TORSO_MOUNTED != targetMech.getCockpitType())) { setKillProbability(getKillProbability() + (hitLocationProbability * getProbabilityToHit()));
final String METHOD_NAME = "isDmgHeavy"; MMLogger logger = DefaultMmLogger.getInstance(); if (((double) getArmor(LOC_HEAD) / getOArmor(LOC_HEAD)) <= 0.33) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " HEAVY DAMAGE: Less than 1/3 head armor remaining"); return true; if (getArmorRemainingPercent() <= 0.25) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " HEAVY DAMAGE: Less than 25% armor remaining"); return true; if (countInternalDamagedLimbs() == 2) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " HEAVY DAMAGE: Two limbs with internal damage"); return true; if (countInternalDamagedTorsos() == 1) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " HEAVY DAMAGE: Torse internal damage"); return true; if (getEngineHits() == 1) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG, getDisplayName() + " HEAVY DAMAGE: Engine hit"); return true; if (getGyroHits() == 1) { logger.log(Mech.class, METHOD_NAME, LogLevel.DEBUG,
if (mech.getCockpitType() == Mech.COCKPIT_TORSO_MOUNTED) { hasEjectSeat = false; if (mech.isIndustrial()) { hasEjectSeat = false; for (Mounted misc : mech.getMisc()) { if (misc.getType().hasFlag(MiscType.F_EJECTION_SEAT)) { hasEjectSeat = true; add(labAutoEject, GBC.std()); add(chAutoEject, GBC.eol()); chAutoEject.setSelected(!mech.isAutoEject()); chCondEjectAmmo.setSelected(mech.isCondEjectAmmo()); add(labCondEjectEngine, GBC.std()); add(chCondEjectEngine, GBC.eol()); chCondEjectEngine.setSelected(mech.isCondEjectEngine()); add(labCondEjectCTDest, GBC.std()); add(chCondEjectCTDest, GBC.eol()); chCondEjectCTDest.setSelected(mech.isCondEjectCTDest()); add(labCondEjectHeadshot, GBC.std()); add(chCondEjectHeadshot, GBC.eol()); chCondEjectHeadshot.setSelected(mech.isCondEjectHeadshot());