More GC and Performance Fixes (#7248)

This commit is contained in:
Fox McCloud
2017-05-07 02:48:18 -04:00
committed by Crazy Lemon
parent 3278af5799
commit 7fd86096af
3 changed files with 20 additions and 29 deletions
+7 -1
View File
@@ -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
-15
View File
@@ -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
+13 -13
View File
@@ -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