return LosEffects.losStraight(game, ai);
attUnderWater = attHex.containsTerrain(Terrains.WATER) && attHex.depth() > 0 && attEl < attHex.surface(); attInWater = attHex.containsTerrain(Terrains.WATER) && attHex.depth() > 0 && attEl == attHex.surface(); attOnLand = !(attUnderWater || attInWater);
    public static LosEffects calculateLos(IGame game, AttackInfo ai) {                if (ai.attOffBoard) {            LosEffects los = new LosEffects();            los.blocked = true;            return los;        }        if (ai.attOnLand && ai.targetUnderWater ||            ai.attUnderWater && ai.targetOnLand) {            LosEffects los = new LosEffects();            los.blocked = true;            return los;                     }                double degree = ai.attackPos.degree(ai.targetPos);        if (degree % 60 == 30) {            return LosEffects.losDivided(game, ai);        } else {            return LosEffects.losStraight(game, ai);        }    }