diff --git a/code/datums/components/food/decomposition.dm b/code/datums/components/food/decomposition.dm index 15a187396e8..3ee6d6191fc 100644 --- a/code/datums/components/food/decomposition.dm +++ b/code/datums/components/food/decomposition.dm @@ -73,7 +73,7 @@ var/turf/open/open_turf = food.loc - if(!istype(open_turf) || istype(open_turf, /turf/open/lava) || istype(open_turf, /turf/open/misc/asteroid)) //Are we actually in a valid open turf? + if(!istype(open_turf) || islava(open_turf) || istype(open_turf, /turf/open/misc/asteroid)) //Are we actually in a valid open turf? remove_timer() return diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index d665138ee21..0cc4c9c91ba 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -59,11 +59,15 @@ /// Since it's above everything else, this is the layer used by default. TURF_LAYER is below mobs and walls if you need to use that. var/overlay_layer = AREA_LAYER /// Plane for the overlay - var/overlay_plane = ABOVE_LIGHTING_PLANE + var/overlay_plane = AREA_PLANE /// If the weather has no purpose other than looks var/aesthetic = FALSE /// Used by mobs (or movables containing mobs, such as enviro bags) to prevent them from being affected by the weather. var/immunity_type + /// If this bit of weather should also draw an overlay that's uneffected by lighting onto the area + /// Taken from weather_glow.dmi + var/use_glow = TRUE + var/mutable_appearance/current_glow /// The stage of the weather, from 1-4 var/stage = END_STAGE @@ -224,23 +228,37 @@ * */ /datum/weather/proc/update_areas() + var/using_icon_state = "" + switch(stage) + if(STARTUP_STAGE) + using_icon_state = telegraph_overlay + if(MAIN_STAGE) + using_icon_state = weather_overlay + if(WIND_DOWN_STAGE) + using_icon_state = end_overlay + if(END_STAGE) + using_icon_state = "" + + var/mutable_appearance/glow_overlay = mutable_appearance('icons/effects/glow_weather.dmi', using_icon_state, overlay_layer, ABOVE_LIGHTING_PLANE, 100) for(var/V in impacted_areas) var/area/N = V - N.layer = overlay_layer - N.plane = overlay_plane - N.icon = 'icons/effects/weather_effects.dmi' - N.color = weather_color - switch(stage) - if(STARTUP_STAGE) - N.icon_state = telegraph_overlay - if(MAIN_STAGE) - N.icon_state = weather_overlay - if(WIND_DOWN_STAGE) - N.icon_state = end_overlay - if(END_STAGE) - N.color = null - N.icon_state = "" - N.icon = 'icons/area/areas_misc.dmi' - N.layer = initial(N.layer) - N.plane = initial(N.plane) - N.set_opacity(FALSE) + if(current_glow) + N.overlays -= current_glow + if(stage == END_STAGE) + N.color = null + N.icon_state = using_icon_state + N.icon = 'icons/area/areas_misc.dmi' + N.layer = initial(N.layer) + N.plane = initial(N.plane) + N.set_opacity(FALSE) + else + N.layer = overlay_layer + N.plane = overlay_plane + N.icon = 'icons/effects/weather_effects.dmi' + N.icon_state = using_icon_state + N.color = weather_color + if(use_glow) + N.overlays += glow_overlay + + current_glow = glow_overlay + diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm index 1ee58c68fa6..90a8d6fd55c 100644 --- a/code/datums/weather/weather_types/floor_is_lava.dm +++ b/code/datums/weather/weather_types/floor_is_lava.dm @@ -21,6 +21,10 @@ overlay_layer = ABOVE_OPEN_TURF_LAYER //Covers floors only overlay_plane = FLOOR_PLANE immunity_type = TRAIT_LAVA_IMMUNE + /// We don't draw on walls, so this ends up lookin weird + /// Can't really use like, the emissive system here because I am not about to make + /// all walls block emissive + use_glow = FALSE /datum/weather/floor_is_lava/can_weather_act(mob/living/mob_to_check) diff --git a/icons/effects/glow_weather.dmi b/icons/effects/glow_weather.dmi new file mode 100644 index 00000000000..021da02fe37 Binary files /dev/null and b/icons/effects/glow_weather.dmi differ diff --git a/icons/effects/weather_effects.dmi b/icons/effects/weather_effects.dmi index 0149245d943..00083c464a2 100644 Binary files a/icons/effects/weather_effects.dmi and b/icons/effects/weather_effects.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 1230a2fbba2..56a05834959 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ