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