From 670868b77bf9d39227ee45656774a9bd20bab4e6 Mon Sep 17 00:00:00 2001 From: Couls Date: Sun, 7 Apr 2019 00:45:53 -0400 Subject: [PATCH 1/5] Allow ghosts to be resummoned as skeletons --- code/game/gamemodes/wizard/artefact.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index dbe3146dd7f..f3534375d87 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -618,6 +618,7 @@ var/global/list/multiverse = list() var/list/spooky_scaries = list() var/unlimited = 0 var/heresy = 0 + var/ghost = FALSE /obj/item/necromantic_stone/unlimited unlimited = 1 @@ -633,11 +634,12 @@ var/global/list/multiverse = list() if(M.stat != DEAD) to_chat(user, "This artifact can only affect the dead!") return + if(M.get_ghost() || M.get_ghost().client) // checks if the target is ghosted + ghost = TRUE - if(!M.mind || !M.client) + if((!M.client || !M.mind) && !ghost) // if there is no client connected to the ghost or mob to_chat(user, "There is no soul connected to this body...") return - check_spooky()//clean out/refresh the list if(spooky_scaries.len >= 3 && !unlimited) @@ -648,6 +650,7 @@ var/global/list/multiverse = list() else M.set_species(/datum/species/skeleton) 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() equip_skeleton(M) spooky_scaries |= M From 95ce665b951733c756c2f7f3828b744ee518d72e Mon Sep 17 00:00:00 2001 From: Couls Date: Sun, 7 Apr 2019 01:55:22 -0400 Subject: [PATCH 2/5] Update artefact.dm --- code/game/gamemodes/wizard/artefact.dm | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index f3534375d87..40da8fe11ec 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -618,7 +618,6 @@ var/global/list/multiverse = list() var/list/spooky_scaries = list() var/unlimited = 0 var/heresy = 0 - var/ghost = FALSE /obj/item/necromantic_stone/unlimited unlimited = 1 @@ -634,12 +633,6 @@ var/global/list/multiverse = list() if(M.stat != DEAD) to_chat(user, "This artifact can only affect the dead!") return - if(M.get_ghost() || M.get_ghost().client) // checks if the target is ghosted - ghost = TRUE - - if((!M.client || !M.mind) && !ghost) // if there is no client connected to the ghost or mob - to_chat(user, "There is no soul connected to this body...") - return check_spooky()//clean out/refresh the list if(spooky_scaries.len >= 3 && !unlimited) @@ -731,7 +724,7 @@ var/global/list/multiverse = list() H.update_dna() H.update_body() - + H.grab_ghost() H.revive() H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H), slot_shoes) From fbd5fffcb5d3faea9ba990e3e1b00cb7af676754 Mon Sep 17 00:00:00 2001 From: Couls Date: Sun, 7 Apr 2019 17:35:50 -0400 Subject: [PATCH 3/5] Return the check for mind and add in the option to give up body to ghosts(Taken from holopara proc) --- code/game/gamemodes/wizard/artefact.dm | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 40da8fe11ec..a8fc2b14532 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -633,6 +633,11 @@ var/global/list/multiverse = list() if(M.stat != DEAD) to_chat(user, "This artifact can only affect the dead!") return + + if(!M.mind || !M.client) + to_chat(user,"There is no soul connected to this body...") + return + check_spooky()//clean out/refresh the list if(spooky_scaries.len >= 3 && !unlimited) @@ -645,6 +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 equip_skeleton(M) spooky_scaries |= M to_chat(M, "You have been revived by [user.real_name]!") @@ -726,7 +732,7 @@ var/global/list/multiverse = list() H.update_body() H.grab_ghost() H.revive() - + H.verbs += /mob/living/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) @@ -876,3 +882,20 @@ var/global/list/multiverse = list() heal_brute = 25 heal_burn = 25 heal_oxy = 25 + +/mob/living/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.") From db8cb1403af1ae33491478ff3bdc15b66b9b63fd Mon Sep 17 00:00:00 2001 From: Couls Date: Mon, 8 Apr 2019 20:04:10 -0400 Subject: [PATCH 4/5] Update artefact.dm --- code/game/gamemodes/wizard/artefact.dm | 34 ++++++++++++++------------ 1 file changed, 18 insertions(+), 16 deletions(-) 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 From 32e36f06dd00fae40115db26a861f576ac5528b5 Mon Sep 17 00:00:00 2001 From: Couls Date: Thu, 2 May 2019 22:07:36 -0400 Subject: [PATCH 5/5] remove rerolling for ghosts --- code/game/gamemodes/wizard/artefact.dm | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index a35f990845c..58d4d814c62 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -650,7 +650,6 @@ 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/carbon/human/proc/skeleton_reset equip_skeleton(M) spooky_scaries |= M to_chat(M, "You have been revived by [user.real_name]!") @@ -732,7 +731,6 @@ var/global/list/multiverse = list() H.update_body() H.grab_ghost() H.revive() - 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) @@ -882,22 +880,3 @@ var/global/list/multiverse = list() heal_brute = 25 heal_burn = 25 heal_oxy = 25 - -/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." - 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