diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index e95315bb88c..cf0297ac4ea 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -67,7 +67,7 @@ if(borer) borer.detatch() //Should remove borer if the brain is removed - RR - if(owner.mind)//don't transfer if the owner does not have a mind. + if(owner.mind && !non_primary)//don't transfer if the owner does not have a mind. B.transfer_identity(user) if(istype(owner,/mob/living/carbon/human)) @@ -94,7 +94,7 @@ brainmob.mind.transfer_to(target) else target.key = brainmob.key - ..() + ..(target, special = special, dont_remove_slot = brain_already_exists) /obj/item/organ/internal/brain/prepare_eat() return // Too important to eat. diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index c020b873354..2cddf6e490b 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -105,7 +105,7 @@ O.status |= ORGAN_CUT_AWAY if(!O.sterile) spread_germs_to_organ(O,user) // This wouldn't be any cleaner than the actual surgery - O.forceMove(src) + O.forceMove(get_turf(src)) if(!(user.l_hand && user.r_hand)) user.put_in_hands(removing) user.visible_message("[user] extracts [removing] from [src] with [W]!") @@ -892,13 +892,13 @@ Note that amputating the affected organ does in fact remove the infection from t // Attached organs also fly off. if(!ignore_children) for(var/obj/item/organ/external/O in children) - O.remove() + O.remove(victim) if(O) O.forceMove(src) // Grab all the internal giblets too. for(var/obj/item/organ/internal/organ in internal_organs) - organ.remove() + organ.remove(victim) organ.forceMove(src) release_restraints(victim) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 48b97ed4c88..693feff936a 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -9,19 +9,23 @@ var/slot vital = 0 var/organ_action_name = null + var/non_primary = 0 /obj/item/organ/internal/New(var/mob/living/carbon/holder) if(istype(holder)) insert(holder) ..() -/obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0) +/obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0, var/dont_remove_slot = 0) if(!iscarbon(M) || owner == M) return var/obj/item/organ/internal/replaced = M.get_organ_slot(slot) if(replaced) - replaced.remove(M, special = 1) + if(dont_remove_slot) + non_primary = 1 + else + replaced.remove(M, special = 1) owner = M