From dffb7d4ad8b04f38e68f536e9ada6b4a334c9615 Mon Sep 17 00:00:00 2001
From: Contrabang <91113370+Contrabang@users.noreply.github.com>
Date: Tue, 2 Sep 2025 10:58:46 -0400
Subject: [PATCH] Staff say channels now show user's OOC/role color (#30165)
* lets see
* some changes
---
code/game/verbs/ooc.dm | 29 ++++++++--------
code/modules/admin/verbs/adminsay.dm | 50 ++++++++++++++++------------
2 files changed, 43 insertions(+), 36 deletions(-)
diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm
index 65f445dcd8e..ed460cdf7da 100644
--- a/code/game/verbs/ooc.dm
+++ b/code/game/verbs/ooc.dm
@@ -53,21 +53,7 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")
log_ooc(msg, src)
mob.create_log(OOC_LOG, msg)
- var/display_colour = GLOB.normal_ooc_colour
- if(holder && !holder.fakekey)
- display_colour = GLOB.mentor_ooc_colour
- if(check_rights(R_MOD,0) && !check_rights(R_ADMIN,0))
- display_colour = GLOB.moderator_ooc_colour
- else if(check_rights(R_ADMIN,0))
- if(GLOB.configuration.admin.allow_admin_ooc_colour)
- display_colour = src.prefs.ooccolor
- else
- display_colour = GLOB.admin_ooc_colour
-
- if(prefs.unlock_content)
- if(display_colour == GLOB.normal_ooc_colour)
- if(prefs.toggles & PREFTOGGLE_MEMBER_PUBLIC)
- display_colour = GLOB.member_ooc_colour
+ var/display_colour = get_ooc_color()
for(var/client/C in GLOB.clients)
if(C.prefs.toggles & PREFTOGGLE_CHAT_OOC)
@@ -95,6 +81,19 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")
to_chat(C, "OOC: [display_name]: [msg]")
+/client/proc/get_ooc_color()
+ if(!holder || holder.fakekey)
+ if(prefs.unlock_content && (prefs.toggles & PREFTOGGLE_MEMBER_PUBLIC))
+ return GLOB.member_ooc_colour
+ return GLOB.normal_ooc_colour
+ if(!check_rights(R_ADMIN, FALSE))
+ if(check_rights(R_MOD, FALSE))
+ return GLOB.moderator_ooc_colour
+ return GLOB.mentor_ooc_colour
+ if(!GLOB.configuration.admin.allow_admin_ooc_colour)
+ return GLOB.admin_ooc_colour
+ return prefs.ooccolor
+
/proc/toggle_ooc()
GLOB.ooc_enabled = (!GLOB.ooc_enabled)
if(GLOB.ooc_enabled)
diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm
index c5c9b71b0f2..f179b9f522c 100644
--- a/code/modules/admin/verbs/adminsay.dm
+++ b/code/modules/admin/verbs/adminsay.dm
@@ -12,26 +12,26 @@
GLOB.asays += asay
log_adminsay(msg, src)
- if(check_rights(R_ADMIN,0))
- // Do this up here before it gets sent to everyone & emoji'd
- if(SSredis.connected)
- var/list/data = list()
- data["author"] = usr.ckey
- data["source"] = GLOB.configuration.system.instance_id
- data["message"] = html_decode(msg)
- SSredis.publish("byond.asay", json_encode(data))
+ // Do this up here before it gets sent to everyone & emoji'd
+ if(SSredis.connected)
+ var/list/data = list()
+ data["author"] = usr.ckey
+ data["source"] = GLOB.configuration.system.instance_id
+ data["message"] = html_decode(msg)
+ SSredis.publish("byond.asay", json_encode(data))
- for(var/client/C in GLOB.admins)
- var/temp_message = msg
- if(R_ADMIN & C.holder.rights)
- // Lets see if this admin was pinged in the asay message
- if(findtext(temp_message, "@[C.ckey]") || findtext(temp_message, "@[C.key]")) // Check ckey and key, so you can type @AffectedArc07 or @affectedarc07
- SEND_SOUND(C, sound('sound/misc/ping.ogg'))
- temp_message = replacetext(temp_message, "@[C.ckey]", "@[C.ckey]")
- temp_message = replacetext(temp_message, "@[C.key]", "@[C.key]") // Same applies here. key and ckey.
+ var/display_color = get_staffsay_color()
+ for(var/client/C in GLOB.admins)
+ var/temp_message = msg
+ if(R_ADMIN & C.holder.rights)
+ // Lets see if this admin was pinged in the asay message
+ if(findtext(temp_message, "@[C.ckey]") || findtext(temp_message, "@[C.key]")) // Check ckey and key, so you can type @AffectedArc07 or @affectedarc07
+ SEND_SOUND(C, sound('sound/misc/ping.ogg'))
+ temp_message = replacetext(temp_message, "@[C.ckey]", "@[C.ckey]")
+ temp_message = replacetext(temp_message, "@[C.key]", "@[C.key]") // Same applies here. key and ckey.
- temp_message = "[temp_message]"
- to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): [temp_message]", MESSAGE_TYPE_ADMINCHAT, confidential = TRUE)
+ temp_message = "[temp_message]"
+ to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): [temp_message]", MESSAGE_TYPE_ADMINCHAT, confidential = TRUE)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -59,6 +59,7 @@
data["message"] = html_decode(msg)
SSredis.publish("byond.devsay", json_encode(data))
+ var/display_color = get_staffsay_color()
for(var/client/C in GLOB.admins)
if(check_rights(R_ADMIN|R_MOD|R_DEV_TEAM, 0, C.mob))
var/display_name = key
@@ -68,7 +69,7 @@
else
display_name = holder.fakekey
msg = "[msg]"
- to_chat(C, "DEV: [display_name] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_DEVCHAT, confidential = TRUE)
+ to_chat(C, "DEV: [display_name] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_DEVCHAT, confidential = TRUE)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Devsay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -96,6 +97,7 @@
data["message"] = html_decode(msg)
SSredis.publish("byond.staffsay", json_encode(data))
+ var/display_color = get_staffsay_color()
for(var/client/C in GLOB.admins)
if(check_rights(0, 0, C.mob))
var/display_name = key
@@ -105,7 +107,7 @@
else
display_name = holder.fakekey
msg = "[msg]"
- to_chat(C, "STAFF: [display_name] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_STAFFCHAT, confidential = TRUE)
+ to_chat(C, "STAFF: [display_name] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_STAFFCHAT, confidential = TRUE)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Staffsay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -143,6 +145,7 @@
data["message"] = html_decode(msg)
SSredis.publish("byond.msay", json_encode(data))
+ var/display_color = get_staffsay_color()
for(var/client/C in GLOB.admins)
if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, C.mob))
var/display_name = key
@@ -152,7 +155,7 @@
else
display_name = holder.fakekey
msg = "[msg]"
- to_chat(C, "MENTOR: [display_name] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_MENTORCHAT, confidential = TRUE)
+ to_chat(C, "MENTOR: [display_name] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_MENTORCHAT, confidential = TRUE)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Msay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -188,3 +191,8 @@
log_and_message_admins("toggled mentor chat [enabling ? "on" : "off"].")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Toggle Msay")
+
+/client/proc/get_staffsay_color()
+ if(!GLOB.configuration.admin.allow_admin_ooc_colour || !check_rights(R_ADMIN, FALSE))
+ return client2rankcolour(src)
+ return prefs.ooccolor