From 42b2f4dec4cc88aeedfc6a320e351b4cd406fb68 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Sat, 20 Jul 2024 01:26:22 +0100 Subject: [PATCH] Fixes organizer sometimes deleting brains (#85076) ## About The Pull Request Closes #85058 by adding a special = TRUE (essentially organ hotswap) arg to its Remove call, and added a safety check in case insertion fails which should drop the organ. ## Changelog :cl: fix: Fixes organizer sometimes deleting brains /:cl: --- code/modules/mod/modules/modules_medical.dm | 23 +++++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm index 936c261dd20..b828169e3bf 100644 --- a/code/modules/mod/modules/modules_medical.dm +++ b/code/modules/mod/modules/modules_medical.dm @@ -212,15 +212,20 @@ continue succeed = TRUE break - if(succeed) - var/list/organs_to_boot_out = organ_receiver.get_organ_slot(organ.slot) - for(var/obj/item/organ/organ_evacced as anything in organs_to_boot_out) - if(organ_evacced.organ_flags & ORGAN_UNREMOVABLE) - continue - organ_evacced.Remove(target) - organ_evacced.forceMove(get_turf(target)) - organ.Insert(target) - else + + if(!succeed) + organ.forceMove(drop_location()) + organ = null + return + + var/list/organs_to_boot_out = organ_receiver.get_organ_slot(organ.slot) + for(var/obj/item/organ/organ_evacced as anything in organs_to_boot_out) + if(organ_evacced.organ_flags & ORGAN_UNREMOVABLE) + continue + organ_evacced.Remove(target, special = TRUE) + organ_evacced.forceMove(get_turf(target)) + + if (!organ.Insert(target)) organ.forceMove(drop_location()) organ = null