diff --git a/code/controllers/subsystem/chat.dm b/code/controllers/subsystem/chat.dm
index bbeb0683f0..ba2794d00f 100644
--- a/code/controllers/subsystem/chat.dm
+++ b/code/controllers/subsystem/chat.dm
@@ -31,19 +31,13 @@ SUBSYSTEM_DEF(chat)
//Some macros remain in the string even after parsing and fuck up the eventual output
var/original_message = message
- message = replacetext(message, "\improper", "")
- message = replacetext(message, "\proper", "")
- if(handle_whitespace)
- message = replacetext(message, "\n", "
")
- message = replacetext(message, "\t", "[FOURSPACES][FOURSPACES]")
- if (trailing_newline)
- message += "
"
//url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript.
//Do the double-encoding here to save nanoseconds
- var/twiceEncoded = url_encode(url_encode(message))
+ var/twiceEncoded
if(islist(target))
+ var/sanitized_message = FALSE
for(var/I in target)
var/client/C = CLIENT_FROM_VAR(I) //Grab us a client if possible
@@ -55,6 +49,17 @@ SUBSYSTEM_DEF(chat)
if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file.
continue
+
+ if(!sanitized_message)
+ message = replacetext(message, "\improper", "")
+ message = replacetext(message, "\proper", "")
+ if(handle_whitespace)
+ message = replacetext(message, "\n", "
")
+ message = replacetext(message, "\t", "[FOURSPACES][FOURSPACES]")
+ if (trailing_newline)
+ message += "
"
+ twiceEncoded = url_encode(url_encode(message))
+ sanitized_message = TRUE
if(!C.chatOutput.loaded) //Client still loading, put their messages in a queue
C.chatOutput.messageQueue += message
@@ -74,6 +79,15 @@ SUBSYSTEM_DEF(chat)
if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file.
return
+ message = replacetext(message, "\improper", "")
+ message = replacetext(message, "\proper", "")
+ if(handle_whitespace)
+ message = replacetext(message, "\n", "
")
+ message = replacetext(message, "\t", "[FOURSPACES][FOURSPACES]")
+ if (trailing_newline)
+ message += "
"
+ twiceEncoded = url_encode(url_encode(message))
+
if(!C.chatOutput.loaded) //Client still loading, put their messages in a queue
C.chatOutput.messageQueue += message
return