From 6ceb3a8654e5da6ac1f4f1ca68f88ce63f49d51e Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Sat, 12 Oct 2019 19:37:46 -0400 Subject: [PATCH] Makes Xenobio Related Things GC Better (#12558) --- .../kitchen_machinery/monkeyrecycler.dm | 4 +++- .../modules/mob/living/simple_animal/slime/slime.dm | 7 ++++--- code/modules/research/xenobiology/xenobio_camera.dm | 13 ++++++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 22394eaa9f9..6bbd1f20ee5 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -29,8 +29,10 @@ GLOBAL_LIST_EMPTY(monkey_recyclers) /obj/machinery/monkey_recycler/Destroy() GLOB.monkey_recyclers -= src - for(var/obj/machinery/computer/camera_advanced/xenobio/console in connected) + for(var/thing in connected) + var/obj/machinery/computer/camera_advanced/xenobio/console = thing console.connected_recycler = null + connected.Cut() return ..() /obj/machinery/monkey_recycler/RefreshParts() diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index d9326b78ab3..e8cec4d3e22 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -97,9 +97,10 @@ for(var/A in actions) var/datum/action/AC = A AC.Remove(src) - for(var/obj/machinery/computer/camera_advanced/xenobio/X in GLOB.machines) - if(src in X.stored_slimes) - X.stored_slimes -= src + Target = null + Leader = null + Friends.Cut() + speech_buffer.Cut() return ..() /mob/living/simple_animal/slime/proc/set_colour(new_colour) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index db6a195fe2d..dbb8f597905 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -48,9 +48,20 @@ /obj/machinery/computer/camera_advanced/xenobio/Destroy() QDEL_NULL(current_potion) - for(var/mob/living/simple_animal/slime/S in stored_slimes) + for(var/thing in stored_slimes) + var/mob/living/simple_animal/slime/S = thing S.forceMove(drop_location()) stored_slimes.Cut() + if(connected_recycler) + connected_recycler.connected -= src + connected_recycler = null + return ..() + +/obj/machinery/computer/camera_advanced/xenobio/handle_atom_del(atom/A) + if(A == current_potion) + current_potion = null + if(A in stored_slimes) + stored_slimes -= A return ..() /obj/machinery/computer/camera_advanced/xenobio/CreateEye()