From 3cd929cdbea08815f078abf3f3b1fa3dc69dfe01 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 30 Apr 2017 11:24:28 -0500 Subject: [PATCH] Fixes seeing the you are a brain! message during monkey transformation --- code/modules/mob/living/brain/brain_item.dm | 2 + code/modules/mob/transform_procs.dm | 43 +++++++++++++-------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index ea97bc30ae..4648911985 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -60,6 +60,8 @@ name = "[L.name]'s brain" if(brainmob || decoy_override) return + if(!L.mind) + return brainmob = new(src) brainmob.name = L.real_name brainmob.real_name = L.real_name diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 0dded30e39..9e5e86836b 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -13,12 +13,6 @@ stored_implants += IMP IMP.removed(src, 1, 1) - if (tr_flags & TR_KEEPORGANS) - for(var/X in internal_organs) - var/obj/item/organ/I = X - int_organs += I - I.Remove(src, 1) - var/list/missing_bodyparts_zones = get_missing_limbs() var/obj/item/cavity_object @@ -92,10 +86,21 @@ var/obj/item/weapon/implant/IMP = Y IMP.implant(O, null, 1) - //re-add organs to new mob + //re-add organs to new mob. this order prevents moving the mind to a brain at any point if(tr_flags & TR_KEEPORGANS) for(var/X in O.internal_organs) - qdel(X) + var/obj/item/organ/I = X + I.Remove(O, 1) + + if(mind) + mind.transfer_to(O) + if(O.mind.changeling) + O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null) + + for(var/X in internal_organs) + var/obj/item/organ/I = X + int_organs += I + I.Remove(src, 1) for(var/X in int_organs) var/obj/item/organ/I = X @@ -118,7 +123,7 @@ qdel(G) //we lose the organs in the missing limbs qdel(BP) - //transfer mind and delete old mob + //transfer mind if we didn't yet if(mind) mind.transfer_to(O) if(O.mind.changeling) @@ -154,12 +159,6 @@ stored_implants += IMP IMP.removed(src, 1, 1) - if (tr_flags & TR_KEEPORGANS) - for(var/X in internal_organs) - var/obj/item/organ/I = X - int_organs += I - I.Remove(src, 1) - var/list/missing_bodyparts_zones = get_missing_limbs() var/obj/item/cavity_object @@ -244,7 +243,19 @@ if(tr_flags & TR_KEEPORGANS) for(var/X in O.internal_organs) - qdel(X) + var/obj/item/organ/I = X + I.Remove(O, 1) + + if(mind) + mind.transfer_to(O) + if(O.mind.changeling) + for(var/obj/effect/proc_holder/changeling/humanform/HF in O.mind.changeling.purchasedpowers) + mind.changeling.purchasedpowers -= HF + + for(var/X in internal_organs) + var/obj/item/organ/I = X + int_organs += I + I.Remove(src, 1) for(var/X in int_organs) var/obj/item/organ/I = X