From 784c6b39863c8f2b18a461602ddd1eaae6c21c52 Mon Sep 17 00:00:00 2001 From: san7890 Date: Tue, 27 Sep 2022 23:29:44 -0600 Subject: [PATCH] [s] You can no longer Summon Cultist to get out of Admin Prison (#70156) There's an old issue report that detailed how, using the Summon Cultist rune, you could be able to escape the Admin Prison (!!!) from CentCom (and could even go back to the station from CentCom using this in general!). This is very bad! So, let's do TWO things to fix this issue report. The first is just to ensure that you can not summon a cultist from CentCom. They are "too far away from the veil" to be reachable. I can un-add this, but I think there's no reason we shouldn't leave it in. The second is to ensure that the Summon Cultist rune respects TRAIT_NO_TELEPORT, so let's do that. I also whipped up a fast component that tracks the location of the "prisoner" that we send to Admin Prison, and ensure that the trait easily clears if an admin determines they are worthy of re-entering the game (so they don't have to delete the trait/component/whatever themselves, because that is non-intuitive). Should be all good now in this edge-case. --- code/modules/antagonists/cult/runes.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index e7008911623..bc668ab4901 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -733,7 +733,12 @@ structure_check() searches for nearby cultist structures required for the invoca "Overwhelming vertigo consumes you as you are hurled through the air!") ..() visible_message(span_warning("A foggy shape materializes atop [src] and solidifies into [cultist_to_summon]!")) - cultist_to_summon.forceMove(get_turf(src)) + if(!do_teleport(cultist_to_summon, get_turf(src))) + to_chat(user, span_warning("The summoning has completely failed for [cultist_to_summon]!")) + fail_logmsg += "target failed criteria to teleport." //catch-all term, just means they failed do_teleport somehow. The most common reasons why someone should fail to be summoned already have verbose messages. + log_game(fail_logmsg) + fail_invoke() + return qdel(src) //Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby