From 6f9da1227670f8be27317d4713abfd906db6e6ab Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 3 May 2015 10:45:35 +0200 Subject: [PATCH] Implementing Destroy():s First out: APCs, security camera consoles, vents. --- code/ATMOSPHERICS/components/unary/vent_pump.dm | 14 +++++--------- code/defines/procs/radio.dm | 10 ++++++++++ code/game/machinery/computer/computer.dm | 2 +- code/modules/power/apc.dm | 12 ++++++++---- code/modules/power/cell.dm | 5 +++-- 5 files changed, 27 insertions(+), 16 deletions(-) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 1920b8c6af2..796e6be45ed 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -74,6 +74,10 @@ assign_uid() id_tag = num2text(uid) +/obj/machinery/atmospherics/unary/vent_pump/Destroy() + unregister_radio(src, frequency) + ..() + /obj/machinery/atmospherics/unary/vent_pump/high_volume name = "Large Air Vent" power_channel = EQUIP @@ -211,14 +215,6 @@ return pressure_delta -//Radio remote control - -/obj/machinery/atmospherics/unary/vent_pump/proc/set_frequency(new_frequency) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = radio_controller.add_object(src, frequency,radio_filter_in) - /obj/machinery/atmospherics/unary/vent_pump/proc/broadcast_status() if(!radio_connection) return 0 @@ -260,7 +256,7 @@ radio_filter_in = frequency==1439?(RADIO_FROM_AIRALARM):null radio_filter_out = frequency==1439?(RADIO_TO_AIRALARM):null if(frequency) - set_frequency(frequency) + radio_connection = register_radio(src, frequency, frequency, radio_filter_in) src.broadcast_status() /obj/machinery/atmospherics/unary/vent_pump/receive_signal(datum/signal/signal) diff --git a/code/defines/procs/radio.dm b/code/defines/procs/radio.dm index 1e0e045928b..0ee38f3b120 100644 --- a/code/defines/procs/radio.dm +++ b/code/defines/procs/radio.dm @@ -3,6 +3,16 @@ #define TELECOMMS_RECEPTION_RECEIVER 2 #define TELECOMMS_RECEPTION_BOTH 3 +/proc/register_radio(source, old_frequency, new_frequency, radio_filter) + if(old_frequency) + radio_controller.remove_object(source, old_frequency) + if(new_frequency) + return radio_controller.add_object(source, new_frequency, radio_filter) + +/proc/unregister_radio(source, frequency) + if(radio_controller) + radio_controller.remove_object(source, frequency) + /proc/get_frequency_name(var/display_freq) var/freq_text diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 076304694a4..0310d0288e7 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -21,7 +21,7 @@ for(var/x in verbs) verbs -= x set_broken() - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() + var/datum/effect/effect/system/smoke_spread/smoke = PoolOrNew(/datum/effect/effect/system/smoke_spread) smoke.set_up(5, 0, src) smoke.start() return diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 26ab2b2e98c..d6c04ec58fe 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -155,25 +155,29 @@ if (building==0) init() else - area = src.loc.loc:master + area = get_area(src) area.apc |= src opened = 1 operating = 0 name = "[area.name] APC" stat |= MAINT src.update_icon() - spawn(5) - src.update() + +/obj/machinery/power/apc/initialize() + ..() + src.update() /obj/machinery/power/apc/Destroy() if(operating && malf && src.z in config.station_levels) //if (is_type_in_list(get_area(src), the_station_areas)) malf.hacked_apcs -= src + + area.apc -= src area.power_light = 0 area.power_equip = 0 area.power_environ = 0 area.power_change() if(wires) - wires.Destroy() + qdel(wires) wires = null if(cell) cell.loc = loc diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index efccd0aa4f1..ad451dde052 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -6,8 +6,9 @@ ..() charge = maxcharge - spawn(5) - updateicon() +/obj/item/weapon/cell/initialize() + ..() + updateicon() /obj/item/weapon/cell/drain_power(var/drain_check, var/surge, var/amount = 0)