if (game.board.getHex(curPos).levelOf(Terrain.WATER) > 0) {
if (game.board.getHex(curPos).levelOf(Terrain.WATER) > 0 && entity.getMovementType() != Entity.MovementType.HOVER) {
    public static void compile(Game game, int entityId, MovementData md) {        final Entity entity = game.getEntity(entityId);                // some flags        int curFacing = entity.getFacing();        Coords lastPos;        Coords curPos = new Coords(entity.getPosition());        int mpUsed = 0;        int distance = 0;        boolean isProne = entity.isProne();        boolean hasJustStood = false;        boolean firstStep = true;        boolean lastWasBackwards = false;        boolean thisStepBackwards = false;        int overallMoveType = Entity.MOVE_WALK;        boolean isJumping = false;        boolean isRunProhibited = false;        // check for jumping        if (md.contains(MovementData.STEP_START_JUMP)) {            overallMoveType = Entity.MOVE_JUMP;            isJumping = true;        }                if (entity instanceof QuadMech && !isJumping) {            md.transformLateralShifts();            md.transformLateralShiftsBackwards();        }        // check for backwards movement        if (md.contains(MovementData.STEP_BACKWARDS)            || md.contains(MovementData.STEP_LATERAL_LEFT_BACKWARDS)            || md.contains(MovementData.STEP_LATERAL_RIGHT_BACKWARDS)) {            isRunProhibited = true;        }                // first pass: set position, facing and mpUsed; figure out overallMoveType        for (final Enumeration i = md.getSteps(); i.hasMoreElements();) {            final MovementData.Step step = (MovementData.Step)i.nextElement();                        int stepMp = 0;                        lastPos = new Coords(curPos);            //             switch(step.getType()) {            case MovementData.STEP_TURN_LEFT :            case MovementData.STEP_TURN_RIGHT :                stepMp = (isJumping || hasJustStood) ? 0 : 1;                curFacing = MovementData.getAdjustedFacing(curFacing, step.getType());                break;            case MovementData.STEP_FORWARDS :            case MovementData.STEP_BACKWARDS :            case MovementData.STEP_CHARGE :            case MovementData.STEP_DFA :                // step forwards or backwards                if (step.getType() == MovementData.STEP_BACKWARDS) {                    curPos = curPos.translated((curFacing + 3) % 6);                    thisStepBackwards = true;                } else {                    curPos = curPos.translated(curFacing);                    thisStepBackwards = false;                }                stepMp = getMovementCostFor(game, entityId, lastPos, curPos,                                            overallMoveType);                // check for water                if (game.board.getHex(curPos).levelOf(Terrain.WATER) > 0) {                    isRunProhibited = true;                }                hasJustStood = false;                if (lastWasBackwards != thisStepBackwards) {                    distance = 0; //start over after shifting gears                }                distance += 1;                break;            case MovementData.STEP_LATERAL_LEFT :            case MovementData.STEP_LATERAL_RIGHT :            case MovementData.STEP_LATERAL_LEFT_BACKWARDS :            case MovementData.STEP_LATERAL_RIGHT_BACKWARDS :                if (step.getType() == MovementData.STEP_LATERAL_LEFT_BACKWARDS                     || step.getType() == MovementData.STEP_LATERAL_RIGHT_BACKWARDS) {                    curPos = curPos.translated((MovementData.getAdjustedFacing(curFacing, MovementData.turnForLateralShiftBackwards(step.getType())) + 3) % 6);                    thisStepBackwards = true;                } else {                    curPos = curPos.translated(MovementData.getAdjustedFacing(curFacing, MovementData.turnForLateralShift(step.getType())));                    thisStepBackwards = false;                }                stepMp = getMovementCostFor(game, entityId, lastPos, curPos,                                            overallMoveType) + 1;                // check for water                if (game.board.getHex(curPos).levelOf(Terrain.WATER) > 0) {                    isRunProhibited = true;                }                hasJustStood = false;                if (lastWasBackwards != thisStepBackwards) {                      distance = 0;  //start over after shifting gears                }                distance += 1;                break;            case MovementData.STEP_GET_UP :                // mechs with 1 MP are allowed to get up                stepMp = entity.getWalkMP() == 1 ? 1 : 2;                hasJustStood = true;                break;            default :                stepMp = 0;            }                        mpUsed += stepMp;                        // check for running            if (overallMoveType == Entity.MOVE_WALK                 && mpUsed > entity.getWalkMP()) {                overallMoveType = Entity.MOVE_RUN;            }                        // set flags            step.setPosition(curPos);            step.setFacing(curFacing);            step.setMpUsed(mpUsed);            step.setDistance(distance);            lastWasBackwards = thisStepBackwards;        }                // running with gyro or hip hit is dangerous!        if (!isRunProhibited && overallMoveType == Entity.MOVE_RUN            && (entity.getDestroyedCriticals(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_GYRO,Mech.LOC_CT) > 0                || entity.hasHipCrit())) {            md.getStep(0).setDanger(true);        }                // set moveType, illegal, trouble flags        compileIllegal(game, entityId, md, overallMoveType, isRunProhibited);        // avoid stacking violations        compileStackingViolations(game, entityId, md);                // check for illegal jumps        if (isJumping) {            compileJumpCheck(game, entityId, md);        }                md.setCompiled(true);    }