Remove soulhook. Fix cloning with mind transfer. Fix drone join (#15002)

This commit is contained in:
Farie82
2020-12-16 21:13:13 +01:00
committed by GitHub
parent 1843266a4a
commit e66c91c7c4
6 changed files with 24 additions and 68 deletions
+1
View File
@@ -119,6 +119,7 @@
if(active)
new_character.key = key //now transfer the key to link the client to our new body
SEND_SIGNAL(src, COMSIG_MIND_TRANSER_TO, new_character)
/datum/mind/proc/store_memory(new_text)
memory += "[new_text]<BR>"
-49
View File
@@ -164,52 +164,3 @@
/datum/soullink/multisharer/replacementpool/sharerDies(gibbed, mob/living/sharer)
removeSoulsharer(sharer)
////////////////
// SOUL HOOK //
////////////////
// When the owner transitions from dead to alive or vice versa,
// the linked atom is notified
// Atoms that actually utilize this system are responsible for handling the GC cleanup themselves
// Splashing the GC handling onto every atom would be a big old waste
/datum/soullink/soulhook
var/atom/movable/otherend
/datum/soullink/soulhook/Destroy()
if(otherend)
LAZYREMOVE(otherend.sharedSoulhooks, src)
otherend = null
return ..()
/datum/soullink/soulhook/parseArgs(mob/living/owner, atom/movable/other)
if(!owner || !other)
return FALSE
soulowner = owner
otherend = other
LAZYADD(owner.ownedSoullinks, src)
LAZYADD(other.sharedSoulhooks, src)
return TRUE
/datum/soullink/soulhook/ownerDies(gibbed, mob/living/owner)
if(otherend)
otherend.onSoullinkDeath(gibbed, owner)
/datum/soullink/soulhook/ownerRevives(mob/living/owner)
if(otherend)
otherend.onSoullinkRevive(owner)
// oops I'm butchering the application of this
/datum/soullink/soulhook/removeSoulsharer(atom/movable/other)
if(otherend == other)
otherend = null
LAZYREMOVE(other.sharedSoulhooks, src)
qdel(src) // not much point in a soul link with one end out of the picture for good
/atom/movable
var/list/sharedSoulhooks = null
/atom/movable/proc/onSoullinkDeath(gibbed, mob/living/owner)
/atom/movable/proc/onSoullinkRevive(mob/living/owner)