From 0be874efff77bb6d0f4b19b15fb26f21581c8e08 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 18 Aug 2014 21:27:42 -0600 Subject: [PATCH] -Added proc for setting the flashing red alarm lights -moved all the Related Areas checking for fire alarms into the procs in areas.dm -Added sound for burglar alarm due to popular request --- code/game/area/areas.dm | 103 +++++++++++--------- code/game/machinery/alarm.dm | 16 +-- code/game/objects/structures/displaycase.dm | 1 + 3 files changed, 61 insertions(+), 59 deletions(-) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 7dcdf0761b0..617c58401a2 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -98,63 +98,67 @@ /area/proc/firealert() if(always_unpowered == 1) //no fire alarms in space/asteroid return - if (!( src.fire )) - src.fire = 1 - src.updateicon() - src.mouse_opacity = 0 - for(var/obj/machinery/door/firedoor/D in src) - if(!D.blocked) - if(D.operating) - D.nextstate = CLOSED - else if(!D.density) - spawn(0) - D.close() - var/list/cameras = list() - for (var/obj/machinery/camera/C in src) + + var/list/cameras = list() + + for(var/area/RA in related) + if (!( RA.fire )) + RA.set_fire_alarm_effect() + for(var/obj/machinery/door/firedoor/D in RA) + if(!D.blocked) + if(D.operating) + D.nextstate = CLOSED + else if(!D.density) + spawn(0) + D.close() + for (var/obj/machinery/camera/C in RA) cameras += C - for (var/mob/living/silicon/aiPlayer in player_list) - aiPlayer.triggerAlarm("Fire", src, cameras, src) - for (var/obj/machinery/computer/station_alert/a in machines) - a.triggerAlarm("Fire", src, cameras, src) + + for (var/obj/machinery/computer/station_alert/a in machines) + a.triggerAlarm("Fire", src, cameras, src) + for (var/mob/living/silicon/aiPlayer in player_list) + aiPlayer.triggerAlarm("Fire", src, cameras, src) return /area/proc/firereset() - if (src.fire) - src.fire = 0 - src.mouse_opacity = 0 - src.updateicon() - for(var/obj/machinery/door/firedoor/D in src) - if(!D.blocked) - if(D.operating) - D.nextstate = OPEN - else if(D.density) - spawn(0) - D.open() - for (var/mob/living/silicon/aiPlayer in player_list) - aiPlayer.cancelAlarm("Fire", src, src) - for (var/obj/machinery/computer/station_alert/a in machines) - a.cancelAlarm("Fire", src, src) + for(var/area/RA in related) + if (src.fire) + src.fire = 0 + src.mouse_opacity = 0 + src.updateicon() + for(var/obj/machinery/door/firedoor/D in src) + if(!D.blocked) + if(D.operating) + D.nextstate = OPEN + else if(D.density) + spawn(0) + D.open() + + for (var/mob/living/silicon/aiPlayer in player_list) + aiPlayer.cancelAlarm("Fire", src, src) + for (var/obj/machinery/computer/station_alert/a in machines) + a.cancelAlarm("Fire", src, src) return /area/proc/burglaralert(var/obj/trigger) if(always_unpowered == 1) //no burglar alarms in space/asteroid return - //Trigger alarm effect - var/RAcontents = area_contents(src) - for(var/area/related_areas in related) - related_areas.fire = 1 - related_areas.updateicon() - related_areas.mouse_opacity = 0 - //Lockdown airlocks - for(var/obj/machinery/door/airlock/DOOR in RAcontents) - DOOR.close() - if(DOOR.density) - DOOR.locked = 1 - DOOR.update_icon() - //Alert silicons + var/list/cameras = list() - for (var/obj/machinery/camera/C in RAcontents) - cameras += C + + for(var/area/RA in related) + //Trigger alarm effect + RA.set_fire_alarm_effect() + //Lockdown airlocks + for(var/obj/machinery/door/airlock/DOOR in RA) + spawn(0) + DOOR.close() + if(DOOR.density) + DOOR.locked = 1 + DOOR.update_icon() + for (var/obj/machinery/camera/C in RA) + cameras += C + for (var/mob/living/silicon/SILICON in player_list) SILICON.triggerAlarm("Burglar", src, cameras, trigger) //Cancel silicon alert after 1 minute @@ -162,6 +166,11 @@ for (var/mob/living/silicon/SILICON in player_list) SILICON.cancelAlarm("Burglar", src, trigger) +/area/proc/set_fire_alarm_effect() + fire = 1 + updateicon() + mouse_opacity = 0 + /area/proc/readyalert() if(name == "Space") return diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 86e3fb583fd..5a6fb6fe390 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -1135,24 +1135,16 @@ FIRE ALARM /obj/machinery/firealarm/proc/reset() if (stat & (NOPOWER|BROKEN)) // can't reset alarm if it's unpowered or broken. return - var/area/A = src.loc - A = A.loc - if (!( istype(A, /area) )) - return - for(var/area/RA in A.related) - RA.firereset() + var/area/A = get_area(src) + A.firereset() update_icon() return /obj/machinery/firealarm/proc/alarm() if (stat & (NOPOWER|BROKEN)) // can't activate alarm if it's unpowered or broken. return - var/area/A = src.loc - A = A.loc - if (!( istype(A, /area) )) - return - for(var/area/RA in A.related) - RA.firealert() + var/area/A = get_area(src) + A.firealert() update_icon() //playsound(src.loc, 'sound/ambience/signal.ogg', 75, 0) return diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index f4fee386a2e..c6b14f3e01a 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -57,6 +57,7 @@ //Activate Anti-theft var/area/alarmed = get_area(src) alarmed.burglaralert(src) + playsound(src, "sound/effects/alert.ogg", 50, 1) else playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)