Ports my air alarm night lights

This commit is contained in:
Poojawa
2018-09-21 23:34:00 -05:00
parent db05319261
commit 18e08763d8
2 changed files with 49 additions and 12 deletions
+49 -12
View File
@@ -56,6 +56,11 @@
#define AALARM_REPORT_TIMEOUT 100
#define AALARM_OVERLAY_OFF "alarm_off"
#define AALARM_OVERLAY_GREEN "alarm_green"
#define AALARM_OVERLAY_WARN "alarm_amber"
#define AALARM_OVERLAY_DANGER "alarm_red"
/obj/machinery/airalarm
name = "air alarm"
desc = "A machine that monitors atmosphere levels. Goes off if the area is dangerous."
@@ -78,6 +83,7 @@
var/aidisabled = 0
var/shorted = 0
var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone
var/brightness_on = 1
var/frequency = FREQ_ATMOS_CONTROL
var/alarm_frequency = FREQ_ATMOS_ALARMS
@@ -198,12 +204,11 @@
panel_open = TRUE
pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24)
pixel_y = (dir & 3)? (dir == 1 ? -24 : 24) : 0
update_icon()
if(name == initial(name))
name = "[get_area_name(src)] Air Alarm"
update_icon()
/obj/machinery/airalarm/Destroy()
SSradio.remove_object(src, frequency)
qdel(wires)
@@ -212,7 +217,11 @@
/obj/machinery/airalarm/Initialize(mapload)
. = ..()
if(!mapload)
return
power_change()
set_frequency(frequency)
update_icon()
/obj/machinery/airalarm/examine(mob/user)
. = ..()
@@ -619,6 +628,16 @@
))
/obj/machinery/airalarm/update_icon()
set_light(0)
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
if(stat & NOPOWER)
icon_state = "alarm0"
return
if(stat & BROKEN)
icon_state = "alarmx"
return
if(panel_open)
switch(buildstage)
if(2)
@@ -629,22 +648,29 @@
icon_state = "alarm_b1"
return
if((stat & (NOPOWER|BROKEN)) || shorted)
icon_state = "alarmp"
return
icon_state = "alarm1"
var/overlay_state = AALARM_OVERLAY_OFF
var/area/A = get_area(src)
switch(max(danger_level, A.atmosalm))
if(0)
icon_state = "alarm0"
overlay_state = AALARM_OVERLAY_GREEN
light_color = LIGHT_COLOR_GREEN
set_light(brightness_on)
if(1)
icon_state = "alarm2" //yes, alarm2 is yellow alarm
overlay_state = AALARM_OVERLAY_WARN
light_color = LIGHT_COLOR_LAVA
set_light(brightness_on)
if(2)
icon_state = "alarm1"
overlay_state = AALARM_OVERLAY_DANGER
light_color = LIGHT_COLOR_RED
set_light(brightness_on)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
update_light()
/obj/machinery/airalarm/process()
if((stat & (NOPOWER|BROKEN)) || shorted)
return
return FALSE
var/turf/location = get_turf(src)
if(!location)
@@ -681,6 +707,8 @@
mode = AALARM_MODE_SCRUBBING
apply_mode()
return TRUE
/obj/machinery/airalarm/proc/post_alert(alert_level)
var/datum/radio_frequency/frequency = SSradio.return_frequency(alarm_frequency)
@@ -816,7 +844,12 @@
/obj/machinery/airalarm/power_change()
..()
if(stat & NOPOWER)
set_light(0)
else
set_light(brightness_on)
update_icon()
return
/obj/machinery/airalarm/emag_act(mob/user)
if(obj_flags & EMAGGED)
@@ -826,8 +859,12 @@
playsound(src, "sparks", 50, 1)
/obj/machinery/airalarm/obj_break(damage_flag)
..()
update_icon()
if(circuit && !(flags_1 & NODECONSTRUCT_1)) //no circuit, no breaking
if(!(stat & BROKEN))
playsound(loc, 'sound/effects/glassbr3.ogg', 100, 1)
stat |= BROKEN
update_icon()
set_light(0)
/obj/machinery/airalarm/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))