diff --git a/goon/code/datums/browserOutput.dm b/goon/code/datums/browserOutput.dm
index bc5392e2251..bdd165d2c7a 100644
--- a/goon/code/datums/browserOutput.dm
+++ b/goon/code/datums/browserOutput.dm
@@ -201,20 +201,42 @@ var/list/chatResources = list(
return "
"
+/proc/is_valid_tochat_message(message)
+ return istext(message)
+
+/proc/is_valid_tochat_target(target)
+ return !istype(target, /savefile) && (ismob(target) || islist(target) || isclient(target) || target == world)
+
var/to_chat_filename
var/to_chat_line
var/to_chat_src
// Call using macro: to_chat(target, message)
/proc/__to_chat(target, message)
- if(istype(message, /image) || istype(message, /sound) || istype(target, /savefile) || !(ismob(target) || islist(target) || isclient(target) || target == world))
+ if(!is_valid_tochat_message(message) || !is_valid_tochat_target(target))
target << message
- if(!istext(message))
- message = "(non-text type)"
- world.Error(new/exception("DEBUG: to_chat called with invalid message: [message]", to_chat_filename, to_chat_line), e_src = to_chat_src)
+
+ // Info about the "message"
+ if(isnull(message))
+ message = "(null)"
+ else if(istype(target, /datum))
+ var/datum/D = target
+ message = "([D.type]): '[D]'"
+ else if(!is_valid_tochat_message(message))
+ message = "(bad message) : '[message]'"
+
+ // Info about the target
+ var/targetstring = "'[target]'"
+ if(istype(target, /datum))
+ var/datum/D = target
+ targetstring += ", [D.type]"
+
+ // The final output
+ log_runtime(new/exception("DEBUG: to_chat called with invalid message/target.", to_chat_filename, to_chat_line), to_chat_src, list("Message: '[message]'", "Target: [targetstring]"))
return
- else if(istext(message))
+ else if(is_valid_tochat_message(message))
if(istext(target))
+ log_runtime(EXCEPTION("Somehow, to_chat got a text as a target"))
return
message = replacetext(message, "\n", "
")
@@ -241,4 +263,4 @@ var/to_chat_src
return
- target << output(url_encode(message), "browseroutput:output")
\ No newline at end of file
+ target << output(url_encode(message), "browseroutput:output")