if (lightSmoke > 1 || heavySmoke > 0) { if (lightWoods > 1 || heavyWoods > 0) { return new ToHitData(ToHitData.IMPOSSIBLE, "LOS blocked by smoke and woods."); }
if (lightSmoke + (heavySmoke * 2) + lightWoods + (heavyWoods * 2) > 2) { return new ToHitData(ToHitData.IMPOSSIBLE, "LOS blocked by smoke and woods.");
    public ToHitData losModifiers(Game game) {        ToHitData modifiers = new ToHitData();        if (blocked) {            return new ToHitData(ToHitData.IMPOSSIBLE, "LOS blocked by terrain.");        }                if (lightWoods + (heavyWoods * 2) > 2) {            return new ToHitData(ToHitData.IMPOSSIBLE, "LOS blocked by woods.");        }        if (lightSmoke + (heavySmoke * 2) > 2) {        	return new ToHitData(ToHitData.IMPOSSIBLE, "LOS blocked by smoke.");        }        if (lightSmoke > 1 || heavySmoke > 0) {            if (lightWoods > 1 || heavyWoods > 0) {                return new ToHitData(ToHitData.IMPOSSIBLE, "LOS blocked by smoke and woods.");            }         }                if (lightWoods > 0) {            modifiers.addModifier(lightWoods, lightWoods + " intervening light woods");        }                if (heavyWoods > 0) {            modifiers.addModifier(heavyWoods * 2, heavyWoods + " intervening heavy woods");        }             if (lightSmoke > 0) {        	modifiers.addModifier(lightSmoke, lightSmoke + " intervening light smoke");        }                if (heavySmoke > 0) {            StringBuffer text = new StringBuffer(heavySmoke);            text.append(" intervening");            if (game.getOptions().booleanOption("maxtech_fire"))                text.append(" heavy");            text.append(" smoke");            modifiers.addModifier(heavySmoke * 2, text.toString());        }        if (targetCover) {            modifiers.addModifier(3, "target has partial cover");        }                return modifiers;    }