diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index febae49fca2..98c2322e5be 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -44,6 +44,16 @@ if(!.) return + // Transfer brainmob from the head if we're being transferred from a head to a new body. + // And example of this ocurring is reattaching an amputated/severed head via surgery. + if(istype(loc, /obj/item/bodypart/head)) + var/obj/item/bodypart/head/brain_holder = loc + if(brain_holder.brainmob) + brainmob = brain_holder.brainmob + brain_holder.brainmob = null + brainmob.container = null + brainmob.forceMove(src) + name = initial(name) if(brain_owner.mind && brain_owner.mind.has_antag_datum(/datum/antagonist/changeling) && !no_id_transfer) //congrats, you're trapped in a body you don't control diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 39ec2ca6e6e..44a5bc77039 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -373,18 +373,12 @@ var/real_name = src.real_name . = ..() - if(!.) - return . - //Transfer some head appearance vars over - if(brain) - if(brainmob) - brainmob.container = null //Reset brainmob head var. - brainmob.forceMove(brain) //Throw mob into brain. - brain.brainmob = brainmob //Set the brain to use the brainmob - brainmob = null //Set head brainmob var to null - brain.Insert(new_head_owner) //Now insert the brain proper - brain = null //No more brain in the head + if(!.) + return + + if(brain) + brain = null if(tongue) tongue = null if(ears)