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