Fixes multibrain weirdness

This commit is contained in:
Crazylemon64
2016-03-17 13:44:21 -07:00
parent bb4580fee5
commit 09f10f3e98
3 changed files with 11 additions and 7 deletions
@@ -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.
@@ -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("<span class='danger'><b>[user]</b> 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)
@@ -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