diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index bd9fc8a7d10..63af5844e70 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -13,11 +13,17 @@ var/_wifi_id var/datum/wifi/sender/button/wifi_sender -/obj/machinery/button/New() +/obj/machinery/button/initialize() ..() if(_wifi_id) wifi_sender = new(_wifi_id) +/obj/machinery/button/Destroy() + if(wifi_sender) + qdel(wifi_sender) + wifi_sender = null + return..() + /obj/machinery/button/attack_ai(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 3cf38a6ef7d..98d4b928a42 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -190,15 +190,18 @@ var/_wifi_id var/datum/wifi/receiver/button/crematorium/wifi_receiver -/obj/structure/crematorium/New() +/obj/structure/crematorium/initialize() ..() if(_wifi_id) - wifi_receiver = new(_wifi_id) + wifi_receiver = new(_wifi_id, src) /obj/structure/crematorium/Destroy() if(connected) qdel(connected) connected = null + if(wifi_receiver) + qdel(wifi_receiver) + wifi_receiver = null return ..() /obj/structure/crematorium/proc/update() diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 11ad0b7e7a1..3a8441f0188 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -24,6 +24,7 @@ var/state = 0 var/locked = 0 + var/_wifi_id var/datum/wifi/receiver/button/emitter/wifi_receiver /obj/machinery/power/emitter/verb/rotate() @@ -41,13 +42,16 @@ ..() if(state == 2 && anchored) connect_to_network() - wifi_receiver = new(id, src) + if(_wifi_id) + wifi_receiver = new(_wifi_id, src) /obj/machinery/power/emitter/Destroy() message_admins("Emitter deleted at ([x],[y],[z] - JMP)",0,1) log_game("Emitter deleted at ([x],[y],[z])") investigate_log("deleted at ([x],[y],[z])","singulo") - wifi_receiver.Destroy() + if(wifi_receiver) + qdel(wifi_receiver) + wifi_receiver = null ..() /obj/machinery/power/emitter/update_icon() diff --git a/code/modules/wireless/devices.dm b/code/modules/wireless/devices.dm index fbc3bfc321d..40a293c17de 100644 --- a/code/modules/wireless/devices.dm +++ b/code/modules/wireless/devices.dm @@ -1,6 +1,16 @@ /datum/wifi/receiver/button var/obj/parent +/datum/wifi/receiver/button/New(var/new_id, var/obj/O) + id = new_id + if(istype(O)) + parent = O + ..() + +/datum/wifi/receiver/button/Destroy() + parent = null + return ..() + /datum/wifi/receiver/button/proc/activate(mob/living/user) @@ -11,27 +21,17 @@ //------------------------------- // Emitter //------------------------------- -/datum/wifi/receiver/button/emitter/New(var/new_id, var/obj/machinery/power/emitter/E) - id = new_id - if(istype(E)) - parent = E - ..() - /datum/wifi/receiver/button/emitter/activate(mob/living/user) ..() var/obj/machinery/power/emitter/E = parent - E.activate(user) + if(istype(E)) + E.activate(user) //------------------------------- // Crematorium //------------------------------- -/datum/wifi/receiver/button/crematorium/New(var/new_id, var/obj/structure/crematorium/C) - id = new_id - if(istype(C)) - parent = C - ..() - /datum/wifi/receiver/button/crematorium/activate(mob/living/user) ..() var/obj/structure/crematorium/C = parent - C.cremate(user) + if(istype(C)) + C.cremate(user) diff --git a/code/modules/wireless/interfaces.dm b/code/modules/wireless/interfaces.dm index 275c3f90358..22dfa92e149 100644 --- a/code/modules/wireless/interfaces.dm +++ b/code/modules/wireless/interfaces.dm @@ -5,9 +5,10 @@ connected_devices = new() /datum/wifi/Destroy(var/wifi/device) - ..() for(var/datum/wifi/D in connected_devices) D.disconnect_device(src) + disconnect_device(D) + return ..() /datum/wifi/proc/connect_device(var/datum/wifi/device) connected_devices |= device @@ -26,9 +27,8 @@ wirelessProcess.add_device(src) /datum/wifi/receiver/Destroy() - ..() wirelessProcess.remove_device(src) - + return ..() /datum/wifi/sender @@ -37,6 +37,7 @@ /datum/wifi/sender/New(var/new_target) ..() target = new_target + send_connection_request() /datum/wifi/sender/proc/set_target(var/new_target) target = new_target