/** * Parse a tankCrit tag for the given <code>Entity</code>. * * @param tankCrit * @param entity */ private void parseTankCrit(Element tankCrit, Entity entity){ String sensors = tankCrit.getAttribute(SENSORS); String engine = tankCrit.getAttribute(ENGINE); String driver = tankCrit.getAttribute(DRIVER); String commander = tankCrit.getAttribute(COMMANDER); Tank t = (Tank) entity; if (sensors.length() > 0) { t.setSensorHits(Integer.parseInt(sensors)); } if (engine.equalsIgnoreCase("hit")) { t.engineHit(); t.applyDamage(); } if (driver.equalsIgnoreCase("hit")) { t.setDriverHit(true); } if (commander.equalsIgnoreCase("console")) { t.setUsingConsoleCommander(true); } else if (commander.equalsIgnoreCase("hit")) { t.setCommanderHit(true); } }
@Override public void updateConditionFromPart() { if(null != unit) { if(unit.getEntity() instanceof Mech) { unit.destroySystem(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_ENGINE); } if(unit.getEntity() instanceof Aero) { ((Aero)unit.getEntity()).setEngineHits(((Aero)unit.getEntity()).getMaxEngineHits()); } if(unit.getEntity() instanceof Tank) { ((Tank)unit.getEntity()).engineHit(); } if(unit.getEntity() instanceof Protomech) { ((Protomech)unit.getEntity()).setEngineHit(true); } } }
@Override public void remove(boolean salvage) { if(null != unit) { if(unit.getEntity() instanceof Mech) { unit.destroySystem(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_ENGINE); } if(unit.getEntity() instanceof Aero) { ((Aero)unit.getEntity()).setEngineHits(((Aero)unit.getEntity()).getMaxEngineHits()); } if(unit.getEntity() instanceof Tank) { ((Tank)unit.getEntity()).engineHit(); } if(unit.getEntity() instanceof Protomech) { ((Protomech)unit.getEntity()).setEngineHit(true); } Part spare = campaign.checkForExistingSparePart(this); if(!salvage) { campaign.removePart(this); } else if(null != spare) { spare.incrementQuantity(); campaign.removePart(this); } unit.removePart(this); Part missing = getMissingPart(); unit.addPart(missing); campaign.addPart(missing, 0); } setUnit(null); }
((Tank)unit.getEntity()).engineHit();
if (null != engineCrit) { if (engineCrit.getHits() > 0) { tank.engineHit(); } else { tank.engineFix();