From acfc496491f92f218f2c90c10ddd396faa0ac601 Mon Sep 17 00:00:00 2001 From: Cazdon <47765135+JKnutson101@users.noreply.github.com> Date: Tue, 8 Oct 2019 21:02:09 -0400 Subject: [PATCH] Shade related Soul Stone fixes and tweak. (#12496) --- code/game/gamemodes/wizard/soulstone.dm | 55 ++++++++++++------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 97c56af39bb..cca11dc0a98 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -7,10 +7,9 @@ w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_BELT origin_tech = "bluespace=4;materials=5" - var/imprinted = "empty" var/optional = FALSE //does this soulstone ask the victim whether they want to be turned into a shade - var/usability = TRUE // Can this soul stone be used by anyone, or only cultists/wizards? + var/usability = FALSE // Can this soul stone be used by anyone, or only cultists/wizards? var/reusable = TRUE // Can this soul stone be used more than once? var/spent = FALSE // If the soul stone can only be used once, has it been used? @@ -224,46 +223,44 @@ if("VICTIM") var/mob/living/carbon/human/T = target var/obj/item/soulstone/C = src - if(C.imprinted != "empty") - to_chat(U, "Capture failed!: The soul stone has already been imprinted with [C.imprinted]'s mind!") + if(T.stat == 0) + to_chat(U, "Capture failed!: Kill or maim the victim first!") else - if(T.stat == 0) - to_chat(U, "Capture failed!: Kill or maim the victim first!") + if(!T.client_mobs_in_contents?.len) + to_chat(U, "They have no soul!") else - if(!T.client_mobs_in_contents?.len) - to_chat(U, "They have no soul!") + if(T.client == null) + to_chat(U, "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back...") + C.getCultGhost(T,U) else - if(T.client == null) - to_chat(U, "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back...") - C.getCultGhost(T,U) + if(C.contents.len) + to_chat(U, "Capture failed!: The soul stone is full! Use or free an existing soul to make room.") else - if(C.contents.len) - to_chat(U, "Capture failed!: The soul stone is full! Use or free an existing soul to make room.") - else - for(var/obj/item/W in T) - T.unEquip(W) - C.init_shade(T, U, vic = 1) - qdel(T) + for(var/obj/item/W in T) + T.unEquip(W) + C.init_shade(T, U, vic = 1) + qdel(T) if("SHADE") var/mob/living/simple_animal/shade/T = target var/obj/item/soulstone/C = src + if(!C.can_use(U)) + U.Paralyse(5) + to_chat(U, "Your body is wracked with debilitating pain!") + return if(T.stat == DEAD) to_chat(U, "Capture failed!: The shade has already been banished!") else if(C.contents.len) to_chat(U, "Capture failed!: The soul stone is full! Use or free an existing soul to make room.") else - if(T.name != C.imprinted) - to_chat(U, "Capture failed!: The soul stone has already been imprinted with [C.imprinted]'s mind!") - else - T.loc = C //put shade in stone - T.status_flags |= GODMODE - T.canmove = 0 - T.health = T.maxHealth - T.faction |= "\ref[U]" - C.icon_state = "soulstone2" - to_chat(T, "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form") - to_chat(U, "Capture successful!: [T.name]'s has been recaptured and stored within the soul stone.") + T.loc = C //put shade in stone + T.status_flags |= GODMODE + T.canmove = 0 + T.health = T.maxHealth + T.faction |= "\ref[U]" + C.icon_state = "soulstone2" + to_chat(T, "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form") + to_chat(U, "Capture successful!: [T.name]'s has been recaptured and stored within the soul stone.") if("CONSTRUCT") var/obj/structure/constructshell/T = target var/obj/item/soulstone/C = src