public void affectEnvStats(Environmental affected, EnvStats affectableStats) { super.affectEnvStats(affected, affectableStats); if ((affected instanceof MOB) && (((MOB) affected).location() != null)) { MOB mob = (MOB) affected; Room room = mob.location(); int classLevel = mob.charStats().getClassLevel(this); if ((CMLib.flags().isHidden(mob)) && (classLevel >= 30) && ((room.domainType() & Room.INDOORS) == 0) && (room.domainType() != Room.DOMAIN_OUTDOORS_CITY)) affectableStats.setDisposition(affectableStats.disposition() | EnvStats.IS_NOT_SEEN); if (classLevel >= 5) { if (CMLib.flags().isInDark(room)) affectableStats.setAttackAdjustment( affectableStats.attackAdjustment() - ((classLevel / 5) + 1)); else if ((room.domainType() & Room.INDOORS) == 0) switch (room.getArea().getClimateObj().weatherType(room)) { case Climate.WEATHER_BLIZZARD: case Climate.WEATHER_CLOUDY: case Climate.WEATHER_DUSTSTORM: case Climate.WEATHER_HAIL: case Climate.WEATHER_RAIN: case Climate.WEATHER_SLEET: case Climate.WEATHER_SNOW: case Climate.WEATHER_THUNDERSTORM: break; default: affectableStats.setAttackAdjustment( affectableStats.attackAdjustment() + ((classLevel / 5) + 1)); break; } } } }