From 15a2ac8f1d4d2db9052821728cf3d9e7241ff697 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Sat, 29 May 2021 16:11:06 -0400 Subject: [PATCH] Makes offstation roles (bar ERT) unable to be sharded (#16102) * Makes offstation roles (bar ERT) unable to be converted / sharded * Grammer changes Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com> * either or * Update code/game/gamemodes/cult/runes.dm Co-authored-by: dearmochi Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com> Co-authored-by: dearmochi --- code/game/gamemodes/cult/runes.dm | 8 ++++++-- code/game/gamemodes/wizard/soulstone.dm | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 272076e1f67..90498c9ab26 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -366,6 +366,7 @@ structure_check() searches for nearby cultist structures required for the invoca return var/sacrifice_fulfilled + var/worthless = FALSE var/datum/game_mode/gamemode = SSticker.mode if(offering.mind) GLOB.sacrificed += offering.mind @@ -379,13 +380,16 @@ structure_check() searches for nearby cultist structures required for the invoca if(sacrifice_fulfilled) to_chat(M, "\"Yes! This is the one I desire! You have done well.\"") else - if(ishuman(offering) || isrobot(offering)) + if(ishuman(offering) && offering.mind.offstation_role && offering.mind.special_role != SPECIAL_ROLE_ERT) //If you try it on a ghost role, you get nothing + to_chat(M, "\"This soul is of no use to either of us.\"") + worthless = TRUE + else if(ishuman(offering) || isrobot(offering)) to_chat(M, "\"I accept this sacrifice.\"") else to_chat(M, "\"I accept this meager sacrifice.\"") playsound(offering, 'sound/misc/demon_consume.ogg', 100, TRUE) - if((ishuman(offering) || isrobot(offering) || isbrain(offering)) && offering.mind) + if(((ishuman(offering) || isrobot(offering) || isbrain(offering)) && offering.mind) && !worthless) var/obj/item/soulstone/stone = new /obj/item/soulstone(get_turf(src)) stone.invisibility = INVISIBILITY_MAXIMUM // So it's not picked up during transfer_soul() stone.transfer_soul("FORCE", offering, user) // If it cannot be added diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index c54ce2a5b9e..6c1b6052a78 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -95,6 +95,10 @@ to_chat(user, "\"Come now, do not capture your fellow's soul.\"") return ..() + if(M.mind.offstation_role && M.mind.special_role != SPECIAL_ROLE_ERT) + to_chat(user, "This being's soul seems worthless. Not even the stone will absorb it.") + return ..() + if(optional) if(!M.ckey) to_chat(user, "They have no soul!")