&& !isPavementStep) {
&& !isPavementStep && movementType != IEntityMovementType.MOVE_JUMP) {
    public static boolean isPilotingSkillNeeded(IGame game, int entityId,            Coords src, Coords dest, int movementType, boolean isTurning,            boolean prevStepIsOnPavement, int srcElevation, int destElevation) {        final Entity entity = game.getEntity(entityId);        final IHex srcHex = game.getBoard().getHex(src);        final IHex destHex = game.getBoard().getHex(dest);        final boolean isInfantry = (entity instanceof Infantry);        final boolean isPavementStep = canMoveOnPavement(game, src, dest);        // arguments valid?        if (entity == null) {            throw new IllegalArgumentException("Entity invalid.");        }        if (src.distance(dest) > 1) {            throw new IllegalArgumentException("Coordinates must be adjacent.");        }        // let's only worry about actual movement, please        if (src.equals(dest)) {            return false;        }        // check for rubble        if (movementType != IEntityMovementType.MOVE_JUMP                && destHex.terrainLevel(Terrains.RUBBLE) > 0                && entity.getMovementMode() != IEntityMovementMode.VTOL                && !isInfantry) {            return true;        }        // check for swamp        if (destHex.containsTerrain(Terrains.SWAMP)                && !(entity.getElevation() > destHex.getElevation())                && entity.getMovementMode() != IEntityMovementMode.HOVER                && entity.getMovementMode() != IEntityMovementMode.VTOL                && movementType != IEntityMovementType.MOVE_JUMP) {            return true;        }        // check for thin ice        if (destHex.containsTerrain(Terrains.ICE)                && destHex.containsTerrain(Terrains.WATER)                && !(entity.getElevation() > destHex.getElevation())                && !isPavementStep) {            return true;        }        // Check for water unless we're a hovercraft or naval or using a bridge        // or flying.        if (movementType != IEntityMovementType.MOVE_JUMP                && !(entity.getElevation() > destHex.surface())                && !(entity.getMovementMode() == IEntityMovementMode.HOVER                        || entity.getMovementMode() == IEntityMovementMode.NAVAL                        || entity.getMovementMode() == IEntityMovementMode.HYDROFOIL || entity                        .getMovementMode() == IEntityMovementMode.SUBMARINE)                && destHex.terrainLevel(Terrains.WATER) > 0 && !isPavementStep) {            return true;        }        // Check for skid. Please note, the skid will be rolled on the        // current step, but starts from the previous step's location.        // TODO: add check for elevation of pavement, road,        // or bridge matches entity elevation.        /*         * Bug 754610: Revert fix for bug 702735. if ( (         * srcHex.contains(Terrain.PAVEMENT) || srcHex.contains(Terrain.ROAD) ||         * srcHex.contains(Terrain.BRIDGE) )         */        if (((prevStepIsOnPavement && movementType == IEntityMovementType.MOVE_RUN) || srcHex                .containsTerrain(Terrains.ICE))                && isTurning && !isInfantry) {            return true;        }        // If we entering or leaving a building, all non-infantry        // need to make a piloting check to avoid damage.        // TODO: allow entities to occupy different levels of buildings.        if ((srcElevation < srcHex.terrainLevel(Terrains.BLDG_ELEV) || destElevation < destHex                .terrainLevel(Terrains.BLDG_ELEV))                && !(entity instanceof Infantry)) {            return true;        }        // check sideslips        if (entity instanceof VTOL) {            if (isTurning                    && ((movementType == IEntityMovementType.MOVE_RUN) || (movementType == IEntityMovementType.MOVE_VTOL_RUN)))                return true;        }        return false;    }