diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 52a35b715b1a..b1358014bea5 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -31,6 +31,9 @@ ///Highest-intensity light affecting us, which determines our visibility. var/affecting_dynamic_lumi = 0 + /// Holds a reference to the emissive blocker overlay + var/emissive_overlay + //=========================================================================== /atom/movable/Destroy(force) for(var/atom/movable/I in contents) @@ -79,23 +82,33 @@ /atom/movable/Initialize(mapload, ...) . = ..() + + update_emissive_block() + + if(opacity) + AddElement(/datum/element/light_blocking) + if(light_system == MOVABLE_LIGHT) + AddComponent(/datum/component/overlay_lighting) + if(light_system == DIRECTIONAL_LIGHT) + AddComponent(/datum/component/overlay_lighting, is_directional = TRUE) + +/atom/movable/proc/update_emissive_block() + if(emissive_overlay) + overlays -= emissive_overlay + switch(blocks_emissive) if(EMISSIVE_BLOCK_GENERIC) var/mutable_appearance/gen_emissive_blocker = mutable_appearance(icon, icon_state, plane = EMISSIVE_PLANE, alpha = src.alpha) gen_emissive_blocker.color = GLOB.em_block_color gen_emissive_blocker.dir = dir gen_emissive_blocker.appearance_flags |= appearance_flags + emissive_overlay = gen_emissive_blocker overlays += gen_emissive_blocker if(EMISSIVE_BLOCK_UNIQUE) render_target = ref(src) em_block = new(src, render_target) + emissive_overlay = em_block overlays += list(em_block) - if(opacity) - AddElement(/datum/element/light_blocking) - if(light_system == MOVABLE_LIGHT) - AddComponent(/datum/component/overlay_lighting) - if(light_system == DIRECTIONAL_LIGHT) - AddComponent(/datum/component/overlay_lighting, is_directional = TRUE) /* diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 4c2c83d18257..c11d07d64a23 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -188,6 +188,10 @@ var/J = job_pref_to_gear_preset() if(isnull(preview_dummy)) preview_dummy = new() + + preview_dummy.blocks_emissive = FALSE + preview_dummy.update_emissive_block() + clear_equipment() if(refresh_limb_status) for(var/obj/limb/L in preview_dummy.limbs)