/** * Parse a movement tag for the given <code>Entity</code>. * * @param movementTag * @param entity */ private void parseMovement(Element movementTag, Entity entity){ String value = movementTag.getAttribute(MDAMAGE); try { int motiveDamage = Integer.parseInt(value); ((Tank) entity).setMotiveDamage(motiveDamage); if (motiveDamage >= ((Tank) entity).getOriginalWalkMP()) { ((Tank) entity).immobilize(); ((Tank) entity).applyDamage(); } } catch (Exception e) { warning.append("Invalid motive damage value in movement tag.\n"); } value = movementTag.getAttribute(MPENALTY); try { int motivePenalty = Integer.parseInt(value); ((Tank) entity).setMotivePenalty(motivePenalty); } catch (Exception e) { warning.append("Invalid motive penalty value in movement tag.\n"); } }
case 4: motiveDamage = getOriginalWalkMP(); immobilize();
/** * apply the effects of an "engine hit" crit */ public void engineHit() { engineHit = true; immobilize(); lockTurret(getLocTurret()); lockTurret(getLocTurret2()); for (Mounted m : getWeaponList()) { WeaponType wtype = (WeaponType) m.getType(); if (wtype.hasFlag(WeaponType.F_ENERGY) // Chemical lasers still work even after an engine hit. && !(wtype instanceof CLChemicalLaserWeapon) // And presumably vehicle flamers should, too; we can always // remove this again if ruled otherwise. && !(wtype instanceof VehicleFlamerWeapon)) { m.setBreached(true); // not destroyed, just unpowered } } }
@Override public void newPhase(IGame.Phase phase) { for (Mounted m : getEquipment()) { m.newPhase(phase); } if (getCrew().isDoomed()) { getCrew().setDoomed(false); getCrew().setDead(true); if (this instanceof Tank) { setCarcass(true); ((Tank) this).immobilize(); } else { setDestroyed(true); } } setIsJumpingNow(false); }