diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index a8fc2b14532..a35f990845c 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -634,7 +634,7 @@ var/global/list/multiverse = list()
to_chat(user, "This artifact can only affect the dead!")
return
- if(!M.mind || !M.client)
+ if((!M.mind || !M.client) && !M.grab_ghost())
to_chat(user,"There is no soul connected to this body...")
return
@@ -650,7 +650,7 @@ var/global/list/multiverse = list()
M.visible_message(" A massive amount of flesh sloughs off [M] and a skeleton rises up!")
M.grab_ghost() // yoinks the ghost if its not in the body
M.revive()
- M.verbs += /mob/living/proc/skeleton_reset
+ M.verbs += /mob/living/carbon/human/proc/skeleton_reset
equip_skeleton(M)
spooky_scaries |= M
to_chat(M, "You have been revived by [user.real_name]!")
@@ -732,7 +732,7 @@ var/global/list/multiverse = list()
H.update_body()
H.grab_ghost()
H.revive()
- H.verbs += /mob/living/proc/skeleton_reset
+ H.verbs += /mob/living/carbon/human/proc/skeleton_reset
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/head/kitty(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/clothing/under/schoolgirl(H), slot_w_uniform)
@@ -883,19 +883,21 @@ var/global/list/multiverse = list()
heal_burn = 25
heal_oxy = 25
-/mob/living/proc/skeleton_reset()
+/mob/living/carbon/human/proc/skeleton_reset()
set name = "Offer skeleton to ghosts"
set category = "Skeleton"
set desc = "Give up your skeleton to ghosts so you can observe the round."
- for(var/mob/living/carbon/human/G in GLOB.mob_list)
- if(G == src)
- var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as Skeleton?", ROLE_WIZARD, 0, 100)
- var/mob/dead/observer/new_stand = null
- if(candidates.len)
- new_stand = pick(candidates)
- to_chat(src,"Your body has been given up and taken over by someone else.")
- message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])")
- G.ghostize()
- G.key = new_stand.key
- else
- to_chat(src, "There were no ghosts willing to take control. Looks like you're stuck as a skeleton for now.")
+ src.verbs -= /mob/living/carbon/human/proc/skeleton_reset
+ if (src.stat != DEAD)
+ var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as Skeleton?", ROLE_WIZARD, 0, 100)
+ var/mob/dead/observer/new_stand = null
+ if(candidates.len && src.stat != DEAD) // make sure they haven't died since
+ new_stand = pick(candidates)
+ to_chat(src,"Your body has been given up and taken over by someone else.")
+ message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(src)])")
+ src.ghostize()
+ src.key = new_stand.key
+ else
+ to_chat(src, "There were no ghosts willing to take control. Looks like you're stuck as a skeleton for now.")
+ spawn(600)
+ src.verbs += /mob/living/carbon/human/proc/skeleton_reset