diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index 221fbc1224..10a2dca6aa 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -3,12 +3,11 @@
if(name != GetVoice())
alt_name = "(as [get_id_name("Unknown")])"
- if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
- src << "You're muzzled and cannot speak!"
- return
-
message = sanitize(message)
- ..(message, alt_name = alt_name) //ohgod we should really be passing a datum here.
+ ..(message, alt_name = alt_name)
+
+/mob/living/carbon/human/is_muzzled()
+ return istype(src.wear_mask, /obj/item/clothing/mask/muzzle)
/mob/living/carbon/human/proc/forcesay(list/append)
if(stat == CONSCIOUS)
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 6f5a82deba..3db012b44d 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -82,6 +82,9 @@ proc/get_radio_key_from_channel(var/channel)
/mob/living/proc/get_default_language()
return default_language
+/mob/living/proc/is_muzzled()
+ return 0
+
/mob/living/proc/handle_speech_problems(var/message, var/verb)
var/list/returns[3]
var/speech_problem_flag = 0
@@ -135,6 +138,10 @@ proc/get_radio_key_from_channel(var/channel)
return say_dead(message)
return
+ if(is_muzzled())
+ src << "You're muzzled and cannot speak!"
+ return
+
var/message_mode = parse_message_mode(message, "headset")
switch(copytext(message,1,2))