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