From 8b190dbc275c2c20f2cce452a6da2d6fdb0dc6cd Mon Sep 17 00:00:00 2001 From: tralezab <40974010+tralezab@users.noreply.github.com> Date: Sat, 17 Aug 2019 23:41:33 -0700 Subject: [PATCH] fixes golems not getting antag and other things when switching shells (#45941) fixes golems not getting antag and other things when switching shells --- code/game/objects/structures/ghost_role_spawners.dm | 11 +++++++---- code/modules/awaymissions/corpse.dm | 12 ++++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index fa4aabd3076..cc11d7f763e 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -174,16 +174,19 @@ if(.) return if(isgolem(user) && can_transfer) + var/mob/living/carbon/human/H = user var/transfer_choice = alert("Transfer your soul to [src]? (Warning, your old body will die!)",,"Yes","No") if(transfer_choice != "Yes") return if(QDELETED(src) || uses <= 0) return - log_game("[key_name(user)] golem-swapped into [src]") - user.visible_message("A faint light leaves [user], moving to [src] and animating it!","You leave your old body behind, and transfer into [src]!") + log_game("[key_name(H)] golem-swapped into [src]") + H.visible_message("A faint light leaves [H], moving to [src] and animating it!","You leave your old body behind, and transfer into [src]!") show_flavour = FALSE - create(ckey = user.ckey,name = user.real_name) - user.death() + var/mob/living/carbon/human/newgolem = create(newname = H.real_name) + H.transfer_trait_datums(newgolem) + H.mind.transfer_to(newgolem) + H.death() return /obj/effect/mob_spawn/human/golem/servant diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 019425927bb..ceb2197f504 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -69,10 +69,13 @@ /obj/effect/mob_spawn/proc/equip(mob/M) return -/obj/effect/mob_spawn/proc/create(ckey, name) +/obj/effect/mob_spawn/proc/create(ckey, newname) var/mob/living/M = new mob_type(get_turf(src)) //living mobs only - if(!random) - M.real_name = mob_name ? mob_name : M.name + if(!random || newname) + if(newname) + M.real_name = newname + else + M.real_name = mob_name ? mob_name : M.name if(!mob_gender) mob_gender = pick(MALE, FEMALE) M.gender = mob_gender @@ -106,12 +109,13 @@ A.objectives += O if(assignedrole) M.mind.assigned_role = assignedrole - special(M, name) + special(M) MM.name = M.real_name if(uses > 0) uses-- if(!permanent && !uses) qdel(src) + return M // Base version - place these on maps/templates. /obj/effect/mob_spawn/human