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