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!")