SUBSYSTEM_DEF(chat) name = "Chat" flags = SS_TICKER wait = 1 priority = FIRE_PRIORITY_CHAT init_order = INIT_ORDER_CHAT var/list/payload_by_client = list() /datum/controller/subsystem/chat/fire() for(var/key in payload_by_client) var/client/client = key var/payload = payload_by_client[key] payload_by_client -= key if(client) // Send to tgchat client.tgui_panel?.window.send_message("chat/message", payload) // Send to old chat for(var/msg in payload) SEND_TEXT(client, msg["text"]) if(MC_TICK_CHECK) return /datum/controller/subsystem/chat/proc/queue(target, text, flags) if(islist(target)) for(var/_target in target) var/client/client = CLIENT_FROM_VAR(_target) if(client) LAZYADD(payload_by_client[client], list(list( "text" = text, "flags" = flags, ))) return var/client/client = CLIENT_FROM_VAR(target) if(client) LAZYADD(payload_by_client[client], list(list( "text" = text, "flags" = flags, )))