anchor.diff:  
   		if (C && C.chatOutput)
   			if(C.chatOutput.broken) // A player who hasn't updated his skin file.
  -				to_chat(C, message)
  +				C << message
   				return TRUE
   			if(!C.chatOutput.loaded && C.chatOutput.messageQueue && islist(C.chatOutput.messageQueue))
   				//Client sucks at loading things, put their messages in a queue
  
positive.code: 	var/list/messageQueue //If they haven't loaded chat, this is where messages will go until they do
  	var/cookieSent   = FALSE // Has the client sent a cookie for analysis
  	var/list/connectionHistory //Contains the connection history passed from chat cookie
  	var/broken       = FALSE
  	var/static/debug_log
  
  /datum/chatOutput/New(client/C)
  	if(!debug_log)
  		debug_log = file("[GLOB.log_directory]/goonchat.log")
  
  	owner = C
  	messageQueue = list()
  	connectionHistory = list()
  	// log_world("chatOutput: New()")
  
  /datum/chatOutput/proc/start()
  	//Check for existing chat
  
negative.code: /datum/chatOutput/proc/debug(error)
  	log_world("\[[time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")]\] Client: [(src.owner.key ? src.owner.key : src.owner)] triggered JS error: [error]")
  
  //Global chat procs
  
  //Converts an icon to base64. Operates by putting the icon in the iconCache savefile,
  