diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index e4cb0028408..b5612389def 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -213,6 +213,10 @@ radio_controller.remove_object(src, frequency) air_alarm_repository.update_cache(src) QDEL_NULL(wires) + if(alarm_area && alarm_area.master_air_alarm == src) + alarm_area.master_air_alarm = null + elect_master(exclude_self = 1) + alarm_area = null return ..() /obj/machinery/alarm/proc/first_run() @@ -236,8 +240,10 @@ return alarm_area.master_air_alarm && !(alarm_area.master_air_alarm.stat & (NOPOWER|BROKEN)) -/obj/machinery/alarm/proc/elect_master() +/obj/machinery/alarm/proc/elect_master(exclude_self = 0) //Why is this an alarm and not area proc? for(var/obj/machinery/alarm/AA in alarm_area) + if(exclude_self && AA == src) + continue if(!(AA.stat & (NOPOWER|BROKEN))) alarm_area.master_air_alarm = AA return 1 diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 586b45f0a13..da85a864214 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -19,13 +19,6 @@ FIRE ALARM var/last_process = 0 var/wiresexposed = 0 var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone - var/area/master_area - -/obj/machinery/firealarm/New() - var/area/A = get_area_master(src) - if(!istype(A, /area)) - return - master_area = A /obj/machinery/firealarm/update_icon() @@ -294,14 +287,6 @@ Just a object used in constructing fire alarms idle_power_usage = 2 active_power_usage = 6 - var/area/master_area - -/obj/machinery/partyalarm/New() - var/area/A = get_area_master(src) - if(!( istype(A, /area) )) - return - master_area=A - /obj/machinery/partyalarm/attack_hand(mob/user) if((user.stat && !isobserver(user)) || stat & (NOPOWER|BROKEN)) return diff --git a/code/modules/security_levels/security levels.dm b/code/modules/security_levels/security levels.dm index 0d25330177c..42bfb39b4eb 100644 --- a/code/modules/security_levels/security levels.dm +++ b/code/modules/security_levels/security levels.dm @@ -34,9 +34,9 @@ post_status("alert", "outline") - for(var/obj/machinery/firealarm/FA in world) + for(var/obj/machinery/firealarm/FA in machines) if(is_station_contact(FA.z)) - FA.overlays = list() + FA.overlays.Cut() FA.overlays += image('icons/obj/monitors.dmi', "overlay_green") if(SEC_LEVEL_BLUE) @@ -48,9 +48,9 @@ post_status("alert", "outline") - for(var/obj/machinery/firealarm/FA in world) + for(var/obj/machinery/firealarm/FA in machines) if(is_station_contact(FA.z)) - FA.overlays = list() + FA.overlays.Cut() FA.overlays += image('icons/obj/monitors.dmi', "overlay_blue") if(SEC_LEVEL_RED) @@ -60,16 +60,16 @@ security_announcement_down.Announce("The station's self-destruct mechanism has been deactivated, but there is still an immediate and serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised.","Attention! Code Red!") security_level = SEC_LEVEL_RED - var/obj/machinery/door/airlock/highsecurity/red/R = locate(/obj/machinery/door/airlock/highsecurity/red) in world + var/obj/machinery/door/airlock/highsecurity/red/R = locate(/obj/machinery/door/airlock/highsecurity/red) in airlocks if(R && is_station_level(R.z)) R.locked = 0 R.update_icon() post_status("alert", "redalert") - for(var/obj/machinery/firealarm/FA in world) + for(var/obj/machinery/firealarm/FA in machines) if(is_station_contact(FA.z)) - FA.overlays = list() + FA.overlays.Cut() FA.overlays += image('icons/obj/monitors.dmi', "overlay_red") if(SEC_LEVEL_GAMMA) @@ -91,9 +91,9 @@ post_status("alert", "gammaalert") - for(var/obj/machinery/firealarm/FA in world) + for(var/obj/machinery/firealarm/FA in machines) if(is_station_contact(FA.z)) - FA.overlays = list() + FA.overlays.Cut() FA.overlays += image('icons/obj/monitors.dmi', "overlay_gamma") FA.update_icon() @@ -103,9 +103,9 @@ post_status("alert", "epsilonalert") - for(var/obj/machinery/firealarm/FA in world) + for(var/obj/machinery/firealarm/FA in machines) if(is_station_contact(FA.z)) - FA.overlays = list() + FA.overlays.Cut() FA.overlays += image('icons/obj/monitors.dmi', "overlay_epsilon") if(SEC_LEVEL_DELTA) @@ -114,9 +114,9 @@ post_status("alert", "deltaalert") - for(var/obj/machinery/firealarm/FA in world) + for(var/obj/machinery/firealarm/FA in machines) if(is_station_contact(FA.z)) - FA.overlays = list() + FA.overlays.Cut() FA.overlays += image('icons/obj/monitors.dmi', "overlay_delta") else