Fire Alarms are visible in the dark

This commit is contained in:
Poojawa
2018-09-27 07:17:39 -05:00
parent 1b26196c52
commit 7a41dfef26
+48 -16
View File
@@ -29,6 +29,10 @@
light_range = 7
light_color = "#ff3232"
var/timerid
var/flash_power = FLASH_LIGHT_POWER
var/flash_color = LIGHT_COLOR_HALOGEN
var/detecting = 1
var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone
var/last_alarm = 0
@@ -57,32 +61,43 @@
/obj/machinery/firealarm/update_icon()
cut_overlays()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
var/area/A = src.loc
A = A.loc
if(panel_open)
icon_state = "fire_b[buildstage]"
return
else
if(stat & BROKEN)
icon_state = "firex"
return
if(stat & NOPOWER)
icon_state = "fire0"
return
if(stat & BROKEN)
icon_state = "firex"
return
if(is_station_level(z))
add_overlay("overlay_[GLOB.security_level]")
SSvis_overlays.add_vis_overlay(src, icon, "overlay_[GLOB.security_level]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
if(GLOB.security_level == SEC_LEVEL_DELTA)
if(!timerid)
flash()
else if(GLOB.security_level <= SEC_LEVEL_RED)
if(timerid)
deltimer(timerid)
timerid = null
else
add_overlay("overlay_[SEC_LEVEL_GREEN]")
SSvis_overlays.add_vis_overlay(src, icon, "overlay_[SEC_LEVEL_GREEN]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
if(stat & NOPOWER)
return
if(is_station_level(z))
add_overlay("overlay_[GLOB.security_level]")
else
add_overlay("overlay_[SEC_LEVEL_GREEN]")
if(detecting)
add_overlay("overlay_[A.fire ? "fire" : "clear"]")
else
add_overlay("overlay_fire")
if(detecting)
add_overlay("overlay_[A.fire ? "fire" : "clear"]")
SSvis_overlays.add_vis_overlay(src, icon, "overlay_[A.fire ? "fire" : "clear"]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
else
add_overlay("overlay_fire")
SSvis_overlays.add_vis_overlay(src, icon, "overlay_fire", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
/obj/machinery/firealarm/emp_act(severity)
. = ..()
@@ -114,12 +129,29 @@
var/area/A = get_area(src)
A.firealert(src)
playsound(src.loc, 'goon/sound/machinery/FireAlarm.ogg', 75)
if(timerid)
return
flash()
/obj/machinery/firealarm/proc/flash()
if (!powered())
return
if(!is_operational())
return
flash_lighting_fx(FLASH_LIGHT_RANGE, flash_power, flash_color)
if(!timerid)
timerid = addtimer(CALLBACK(src, .proc/flash, world.time), 30, TIMER_STOPPABLE | TIMER_LOOP)
/obj/machinery/firealarm/proc/reset()
if(!is_operational())
return
var/area/A = get_area(src)
A.firereset(src)
if(!timerid)
return
deltimer(timerid)
timerid = null
/obj/machinery/firealarm/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)