diff --git a/code/game/gamemodes/clock_cult/clock_helpers/ratvarian_language.dm b/code/game/gamemodes/clock_cult/clock_helpers/ratvarian_language.dm
index a9727017d3..2d49787348 100644
--- a/code/game/gamemodes/clock_cult/clock_helpers/ratvarian_language.dm
+++ b/code/game/gamemodes/clock_cult/clock_helpers/ratvarian_language.dm
@@ -104,7 +104,7 @@ List of nuances:
if(isliving(AM))
var/mob/living/L = AM
if(!whisper)
- L.say(message, "clock", spans, language=/datum/language/common)
+ L.say(message, "clock", spans, language=/datum/language/common, ignore_spam = TRUE)
else
L.whisper(message, "clock", spans, language=/datum/language/common)
else
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index a38a361cf3..be1c2ccaff 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -137,7 +137,7 @@ structure_check() searches for nearby cultist structures required for the invoca
for(var/M in invokers)
var/mob/living/L = M
if(invocation)
- L.say(invocation, language = /datum/language/common)
+ L.say(invocation, language = /datum/language/common, ignore_spam = TRUE)
if(invoke_damage)
L.apply_damage(invoke_damage, BRUTE)
to_chat(L, "[src] saps your strength!")
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 7e3d1cd320..c141460731 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -69,7 +69,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
"÷" = "cords"
))
-/mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null)
+/mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE)
var/static/list/crit_allowed_modes = list(MODE_WHISPER = TRUE, MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE)
var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE)
@@ -105,7 +105,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
say_dead(original_message)
return
- if(check_emote(original_message) || !can_speak_basic(original_message))
+ if(check_emote(original_message) || !can_speak_basic(original_message, ignore_spam))
return
if(in_critical)
@@ -270,12 +270,12 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
if(can_speak_basic(message) && can_speak_vocal(message))
return 1
-/mob/living/proc/can_speak_basic(message) //Check BEFORE handling of xeno and ling channels
+/mob/living/proc/can_speak_basic(message, ignore_spam = FALSE) //Check BEFORE handling of xeno and ling channels
if(client)
if(client.prefs.muted & MUTE_IC)
to_chat(src, "You cannot speak in IC (muted).")
return 0
- if(client.handle_spam_prevention(message,MUTE_IC))
+ if(!ignore_spam && client.handle_spam_prevention(message,MUTE_IC))
return 0
return 1
diff --git a/code/modules/mob/living/simple_animal/guardian/types/standard.dm b/code/modules/mob/living/simple_animal/guardian/types/standard.dm
index 72bb57513e..4edd9d9e41 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/standard.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/standard.dm
@@ -24,7 +24,7 @@
/mob/living/simple_animal/hostile/guardian/punch/AttackingTarget()
. = ..()
if(isliving(target))
- src.say("[src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]!!")
+ say("[battlecry][battlecry][battlecry][battlecry][battlecry][battlecry][battlecry][battlecry][battlecry][battlecry]!!", ignore_spam = TRUE)
playsound(loc, src.attack_sound, 50, 1, 1)
playsound(loc, src.attack_sound, 50, 1, 1)
playsound(loc, src.attack_sound, 50, 1, 1)