&& !(entity instanceof Protomech)
    private void doEntityFall(Entity entity, Coords fallPos, int height, int facing, PilotingRollData roll) {        Report r;        IHex fallHex = game.getBoard().getHex(fallPos);        // we don't need to deal damage yet, if the entity is doing DFA        if (entity.isMakingDfa()) {            r = new Report(2305);            r.subject = entity.getId();            vPhaseReport.addElement(r);            entity.setProne(true);            return;        }        // facing after fall        String side;        int table;        switch(facing) {            case 1:            case 2:                side = "right side";                table = ToHitData.SIDE_RIGHT;                break;            case 3:                side = "rear";                table = ToHitData.SIDE_REAR;                break;            case 4:            case 5:                side = "left side";                table = ToHitData.SIDE_LEFT;                break;            case 0:            default:                side = "front";                table = ToHitData.SIDE_FRONT;        }        int waterDepth = fallHex.terrainLevel(Terrains.WATER);        int damageHeight = height;        // HACK: if the dest hex is water, assume that the fall height given is        // to the floor of the hex, and modifiy it so that it's to the surface        if (waterDepth > 0) {            damageHeight = height - waterDepth;        } else {            waterDepth = 0; //because it will be used to set elevation        }        if(fallHex.containsTerrain(Terrains.ICE)) {            waterDepth = 0;        }                //Falling into water instantly destroys most non-mechs        if(waterDepth > 0                && !(entity instanceof Mech)                && (entity.getRunMP() > 0 && entity.getMovementMode() != IEntityMovementMode.HOVER)                && entity.getMovementMode() != IEntityMovementMode.HYDROFOIL                && entity.getMovementMode() != IEntityMovementMode.NAVAL                && entity.getMovementMode() != IEntityMovementMode.SUBMARINE) {            vPhaseReport.addAll(                    destroyEntity(entity, "a watery grave", false));            return;        }        // calculate damage for hitting the surface        int damage = (int)Math.round(entity.getWeight() / 10.0) * (damageHeight + 1);        // calculate damage for hitting the ground, but only if we actually fell        // into water        // if we fell onto the water surface, that damage is halved.        int waterDamage = 0;        if (waterDepth > 0) {            damage /= 2;            waterDamage = (int)Math.round(entity.getWeight() / 10.0) * (waterDepth + 1) /2;        }        // If the waterDepth is larger than the fall height,        // we fell underwater        if (waterDepth > height) {            damage = 0;            waterDamage = (int)Math.round(entity.getWeight() / 10.0) * (height + 1) /2;        }        // adjust damage for gravity        damage = Math.round(damage * game.getOptions().floatOption("gravity"));        waterDamage = Math.round(waterDamage * game.getOptions().floatOption("gravity"));        // report falling        if (waterDamage == 0) {            r = new Report(2310);            r.subject = entity.getId();            r.indent();            r.newlines = 0;            r.addDesc(entity);            r.add(side); //international issue            r.add(damage);        } else if (damage > 0) {            r = new Report(2315);            r.subject = entity.getId();            r.indent();            r.newlines = 0;            r.addDesc(entity);            r.add(side); //international issue            r.add(damage);            r.add(waterDamage);        } else {            r = new Report(2310);            r.subject = entity.getId();            r.indent();            r.newlines = 0;            r.addDesc(entity);            r.add(side); //international issue            r.add(waterDamage);        }        vPhaseReport.addElement(r);        damage += waterDamage;        // Any swarming infantry will be dislodged, but we don't want to        // interrupt the fall's report.  We have to get the ID now because        // the fall may kill the entity which will reset the attacker ID.        final int swarmerId = entity.getSwarmAttackerId();        // Positioning must be prior to damage for proper handling of breaches        // Only Mechs can fall prone.        if ( entity instanceof Mech ) {            entity.setProne(true);        }        entity.setPosition(fallPos);        entity.setFacing((entity.getFacing() + (facing - 1)) % 6);        entity.setSecondaryFacing(entity.getFacing());        entity.setElevation(-waterDepth);        if (waterDepth > 0) {            for (int loop=0; loop< entity.locations();loop++){                entity.setLocationStatus(loop, ILocationExposureStatus.WET);            }        }        // standard damage loop        while (damage > 0) {            int cluster = Math.min(5, damage);            HitData hit = entity.rollHitLocation(ToHitData.HIT_NORMAL, table);            vPhaseReport.addAll( damageEntity(entity, hit, cluster));            damage -= cluster;        }        //check for location exposure        doSetLocationsExposure(entity, fallHex, false, -waterDepth);        // we want to be able to avoid pilot damage even when it was        // an automatic fall, only unconsciousness should cause auto-damage        roll.removeAutos();        if (height > 0) {            roll.addModifier(height, "height of fall");        }        entity.addPilotingModifierForTerrain(roll, fallPos);        if (roll.getValue() == PilotingRollData.IMPOSSIBLE) {            r = new Report(2320);            r.subject = entity.getId();            r.addDesc(entity);            r.add(entity.crew.getName());            r.indent();            vPhaseReport.addElement(r);            vPhaseReport.addAll( damageCrew(entity, 1));            ((Report) vPhaseReport.elementAt(vPhaseReport.size() - 1)).newlines++;        } else {            int diceRoll = Compute.d6(2);            r = new Report(2325);            r.subject = entity.getId();            r.addDesc(entity);            r.add(entity.crew.getName());            r.add(roll.getValueAsString());            r.add(diceRoll);            if (diceRoll >= roll.getValue()) {                r.choose(true);                vPhaseReport.addElement(r);            } else {                r.choose(false);                vPhaseReport.addElement(r);                vPhaseReport.addAll( damageCrew(entity, 1));                ((Report) vPhaseReport.elementAt(vPhaseReport.size() - 1)).newlines++;            }        }        // Now dislodge any swarming infantry.        if ( Entity.NONE != swarmerId ) {            final Entity swarmer = game.getEntity( swarmerId );            entity.setSwarmAttackerId( Entity.NONE );            swarmer.setSwarmTargetId( Entity.NONE );            // Did the infantry fall into water?            if ( waterDepth > 0 ) {                // Swarming infantry die.                swarmer.setPosition( fallPos );                r = new Report(2330);                r.newlines = 0;                r.subject = swarmer.getId();                r.addDesc(swarmer);                vPhaseReport.addElement(r);                vPhaseReport.addAll( destroyEntity(swarmer, "a watery grave", false));            } else {                // Swarming infantry take an 11 point hit.                // ASSUMPTION : damage should not be doubled.                r = new Report(2335);                r.newlines = 0;                r.subject = swarmer.getId();                r.addDesc(swarmer);                vPhaseReport.addElement(r);                vPhaseReport.addAll( damageEntity(swarmer, swarmer.rollHitLocation(ToHitData.HIT_NORMAL, ToHitData.SIDE_FRONT), 11));                ((Report) vPhaseReport.elementAt(vPhaseReport.size() - 1)).newlines++;            }            swarmer.setPosition( fallPos );            entityUpdate( swarmerId );        } // End dislodge-infantry        // clear all PSRs after a fall -- the Mek has already failed ONE and fallen, it'd be cruel to make it fail some more!        game.resetPSRs(entity);    }