if ((ai.minimumWaterDepth < 1) && ai.underWaterCombat) { los.blocked = true; }
    private static LosEffects losStraight(IGame game, AttackInfo ai) {        Coords[] in = Coords.intervening(ai.attackPos, ai.targetPos);        LosEffects los = new LosEffects();        boolean targetInBuilding = false;        if (ai.targetEntity) {            targetInBuilding = Compute.isInBuilding(game, game.getBoard().getHex(ai.targetPos).floor(), ai.targetPos);        }            // If the target and attacker are both in a        // building, set that as the first LOS effect.        if ( targetInBuilding && Compute.isInBuilding( game, game.getBoard().getHex(ai.attackPos).floor(), ai.attackPos ) ) {            los.setThruBldg( game.getBoard().getBuildingAt( in[0] ) );        }            for (int i = 0; i < in.length; i++) {            los.add( LosEffects.losForCoords(game, ai, in[i], los.getThruBldg()) );        }            // Infantry inside a building can only be        // targeted by units in the same building.        if ( ai.targetInfantry && targetInBuilding &&             null == los.getThruBldg() ) {            los.blocked = true;        }            // If a target Entity is at a different elevation as its        // attacker, and if the attack is through a building, the        // target has cover.        if ( null != los.getThruBldg() &&             ai.attackAbsHeight != ai.targetAbsHeight ) {            los.setTargetCover( true );        }            return los;    }