diff --git a/megamek/src/megamek/client/ui/SharedUtility.java b/megamek/src/megamek/client/ui/SharedUtility.java index 58acedf3151..57dac1113cf 100644 --- a/megamek/src/megamek/client/ui/SharedUtility.java +++ b/megamek/src/megamek/client/ui/SharedUtility.java @@ -297,12 +297,12 @@ private static Object doPSRCheck(MovePath md, boolean stringResult) { lastPos, curPos, isPavementStep); checkNag(rollTarget, nagReport, psrList); - // check for non-mech entering a fire + // check for non-heat tracking entering a fire boolean underwater = curHex.containsTerrain(Terrains.WATER) && (curHex.depth() > 0) && (step.getElevation() < curHex.getLevel()); if (curHex.containsTerrain(Terrains.FIRE) && !underwater - && !(entity instanceof Mech) && (step.getElevation() <= 1) + && !entity.tracksHeat() && (step.getElevation() <= 1) && !entity.isAirborne() && (moveType != EntityMovementType.MOVE_JUMP) && !(curPos.equals(lastPos))) { nagReport.append(Messages.getString("MovementDisplay.FireMoving", 8)); diff --git a/megamek/src/megamek/server/GameManager.java b/megamek/src/megamek/server/GameManager.java index f675a862b89..de5a6302e8d 100644 --- a/megamek/src/megamek/server/GameManager.java +++ b/megamek/src/megamek/server/GameManager.java @@ -7607,21 +7607,15 @@ private void processMovement(Entity entity, MovePath md, Map0 on a step in the midst of a jump || (0 == (step.getMpUsed() - step.getMp())))) { int heat = 0; @@ -7633,7 +7627,9 @@ private void processMovement(Entity entity, MovePath md, Map 0) + && (entity.getElevation() <= 1) && (entity.getAltitude() == 0)) { + int heatToAdd = 5; + boolean isMekWithHeatDissipatingArmor = (entity instanceof Mech) && ((Mech) entity).hasIntactHeatDissipatingArmor(); + if (isMekWithHeatDissipatingArmor) { + heatToAdd /= 2; + } + entity.heatFromExternal += heatToAdd; + r = new Report(5030); + r.add(heatToAdd); + r.subject = entity.getId(); + addReport(r); + if (isMekWithHeatDissipatingArmor) { + r = new Report(5550); + addReport(r); + } + } + // put in ASF heat build-up first because there are few differences if (entity instanceof Aero && !(entity instanceof ConvFighter)) { ServerHelper.resolveAeroHeat(game, entity, vPhaseReport, rhsReports, radicalHSBonus, hotDogMod, this); @@ -18731,22 +18745,6 @@ private void resolveHeat() { // Add +5 Heat if the hex you're in is on fire // and was on fire for the full round. if (entityHex != null) { - if (entityHex.containsTerrain(Terrains.FIRE) && (entityHex.getFireTurn() > 0) - && (entity.getElevation() <= 1)) { - int heatToAdd = 5; - if (((Mech) entity).hasIntactHeatDissipatingArmor()) { - heatToAdd /= 2; - } - entity.heatFromExternal += heatToAdd; - r = new Report(5030); - r.add(heatToAdd); - r.subject = entity.getId(); - addReport(r); - if (((Mech) entity).hasIntactHeatDissipatingArmor()) { - r = new Report(5550); - addReport(r); - } - } int magma = entityHex.terrainLevel(Terrains.MAGMA); if ((magma > 0) && (entity.getElevation() == 0)) { int heatToAdd = 5 * magma; @@ -19481,6 +19479,11 @@ private void resolveHarJelRepairs() { * @param coordinates the coordinate location of the fire */ private void doFlamingDamage(final Entity entity, final Coords coordinates) { + // TO:AR p.41,p.43 + if (entity.tracksHeat() || entity.isDropShip()) { + return; + } + Report r; int boomRoll = Compute.d6(2); @@ -19505,16 +19508,6 @@ private void doFlamingDamage(final Entity entity, final Coords coordinates) { return; } - // mechs shouldn't be here, but just in case - if (entity instanceof Mech) { - return; - } - - // fire has no effect on dropships - if (entity instanceof Dropship) { - return; - } - // Must roll 8+ to survive... r = new Report(5100); r.subject = entity.getId();