diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index b291a295c..ac9a37eb2 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -104,6 +104,8 @@ var/icon_update_needed = FALSE var/obj/machinery/computer/apc_control/remote_control = null + var/obj/effect/light/lighteffect //light effect + /obj/machinery/power/apc/unlocked locked = FALSE @@ -185,6 +187,8 @@ addtimer(CALLBACK(src, .proc/update), 5) /obj/machinery/power/apc/Destroy() + if(lighteffect) + lighteffect.Del() GLOB.apcs_list -= src if(malfai && operating) @@ -320,6 +324,13 @@ // And now, separately for cleanness, the lighting changing if(update_state & UPSTATE_ALLGOOD) + if(!lighteffect)//make the light + lighteffect = new/obj/effect/light + lighteffect.loc = src.loc + lighteffect.alpha = 50 + lighteffect.pixel_x = pixel_x + lighteffect.pixel_y = pixel_y + switch(charging) if(APC_NOT_CHARGING) light_color = LIGHT_COLOR_RED @@ -328,6 +339,7 @@ if(APC_FULLY_CHARGED) light_color = LIGHT_COLOR_GREEN set_light(lon_range) + lighteffect.color = light_color else if(update_state & UPSTATE_BLUESCREEN) light_color = LIGHT_COLOR_BLUE set_light(lon_range) @@ -336,6 +348,10 @@ icon_update_needed = FALSE +/obj/machinery/power/apc/Move() + if(lighteffect) + lighteffect.loc = src.loc //move the light overlay + /obj/machinery/power/apc/proc/check_updates() var/last_update_state = update_state var/last_update_overlay = update_overlay diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 39072d5b4..0ddd588e7 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -223,6 +223,9 @@ var/bulb_emergency_pow_mul = 0.75 // the multiplier for determining the light's power in emergency mode var/bulb_emergency_pow_min = 0.5 // the minimum value for the light's power in emergency mode + var/obj/effect/light/lighteffect //light effect + + /obj/machinery/light/broken status = LIGHT_BROKEN icon_state = "tube-broken" @@ -242,6 +245,8 @@ icon_state = "bulb-broken" /obj/machinery/light/Move() + if(lighteffect) + lighteffect.loc = src.loc if(status != LIGHT_BROKEN) break_light_tube(1) return ..() @@ -285,6 +290,8 @@ /obj/machinery/light/Destroy() var/area/A = get_area(src) + if(lighteffect) + lighteffect.Del() if(A) on = FALSE // A.update_lights() @@ -292,6 +299,8 @@ return ..() /obj/machinery/light/update_icon() + if(lighteffect) + lighteffect.Del() cut_overlays() switch(status) // set icon_states if(LIGHT_OK) @@ -301,6 +310,10 @@ else icon_state = "[base_state]" if(on) + lighteffect = new/obj/effect/light/large + lighteffect.loc = src.loc + lighteffect.alpha = CLAMP(light_power*33, 5, 100) + lighteffect.color = light_color var/mutable_appearance/glowybit = mutable_appearance(overlayicon, base_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) glowybit.alpha = CLAMP(light_power*250, 30, 200) add_overlay(glowybit) diff --git a/hyperstation/code/effects/lighting.dm b/hyperstation/code/effects/lighting.dm new file mode 100644 index 000000000..90a80ccb5 --- /dev/null +++ b/hyperstation/code/effects/lighting.dm @@ -0,0 +1,17 @@ +/obj/effect/light/ + name = "bloom" + icon = 'hyperstation/icons/effects/lighting.dmi' + icon_state = "light" + plane = ABOVE_LIGHTING_PLANE + blend_mode = BLEND_ADD + mouse_opacity = 0 + +/obj/effect/light/medium + icon = 'hyperstation/icons/effects/lightingmed.dmi' + pixel_x = -16 + pixel_y = -16 + +/obj/effect/light/large + icon = 'hyperstation/icons/effects/lightinglarge.dmi' + pixel_x = -48 + pixel_y = -48 \ No newline at end of file diff --git a/hyperstation/icons/effects/lighting.dmi b/hyperstation/icons/effects/lighting.dmi new file mode 100644 index 000000000..3f59b47d2 Binary files /dev/null and b/hyperstation/icons/effects/lighting.dmi differ diff --git a/hyperstation/icons/effects/lightinglarge.dmi b/hyperstation/icons/effects/lightinglarge.dmi new file mode 100644 index 000000000..fb1eeebc8 Binary files /dev/null and b/hyperstation/icons/effects/lightinglarge.dmi differ diff --git a/hyperstation/icons/effects/lightingmed.dmi b/hyperstation/icons/effects/lightingmed.dmi new file mode 100644 index 000000000..0b87ce7dc Binary files /dev/null and b/hyperstation/icons/effects/lightingmed.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 55c1497ec..7ab0343dd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3105,6 +3105,7 @@ #include "hyperstation\code\datums\traits\neutral.dm" #include "hyperstation\code\datums\weather\lithium_aurora.dm" #include "hyperstation\code\datums\weather\oxygen_rain.dm" +#include "hyperstation\code\effects\lighting.dm" #include "hyperstation\code\game\machinery\lore_terminal.dm" #include "hyperstation\code\game\objects\railings.dm" #include "hyperstation\code\game\objects\items\cards.dm"