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
🆑
fix: Fixes organizer sometimes deleting brains
/🆑
This commit is contained in:
SmArtKar
2024-07-20 02:26:22 +02:00
committed by GitHub
parent 9ea062e4a2
commit 42b2f4dec4
+14 -9
View File
@@ -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