From 70b9bed2c37dc1e2b50db3f115efc763691b730b Mon Sep 17 00:00:00 2001 From: Toastical <20125180+Toastical@users.noreply.github.com> Date: Tue, 27 Jan 2026 03:46:00 +0200 Subject: [PATCH] Add pingability to staff-say, dev-say and mentor-say (#31377) * Add pingability to staff-say and dev-say * Consolidate all pinging to a proc, add it to mentor-say * Make pings work with ckeys regardless of stealth-mode --- code/datums/user_verb.dm | 11 +++++++++++ code/modules/admin/verbs/adminsay.dm | 25 +++++++++++++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/code/datums/user_verb.dm b/code/datums/user_verb.dm index 0911e5c75d5..81a17f51b3a 100644 --- a/code/datums/user_verb.dm +++ b/code/datums/user_verb.dm @@ -25,3 +25,14 @@ GENERAL_PROTECT_DATUM(/datum/user_verb) /// Unassigns the verb from the user. /datum/user_verb/proc/unassign_from_client(client/user) remove_verb(user, verb_path) + +/// Lets people be pinged inside of staff channels. +/datum/user_verb/proc/do_chat_ping(client/C, message) + var/display_name = C.ckey || C.key + if(C.holder.fakekey && findtext(message, "@[C.holder.fakekey]")) + SEND_SOUND(C, sound('sound/misc/ping.ogg')) + message = replacetext(message, "@[C.holder.fakekey]", "@[C.holder.fakekey]") + else if(findtext(message, "@[display_name]")) + SEND_SOUND(C, sound('sound/misc/ping.ogg')) + message = replacetext(message, "@[display_name]", "@[display_name]") + return message diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index 7206c7b62ef..0b3476a18d2 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -24,14 +24,9 @@ USER_VERB(admin_say, R_ADMIN, "Asay", "Asay", VERB_CATEGORY_HIDDEN, msg as text) var/display_color = client.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. - + var/temp_message = do_chat_ping(C, msg) temp_message = SPAN_EMOJI_ENABLED("[temp_message]") to_chat(C, SPAN_ADMIN_CHANNEL("ADMIN: [key_name(client, 1)] ([admin_jump_link(client.mob)]): [SPAN_MESSAGE("[temp_message]")]"), MESSAGE_TYPE_ADMINCHAT, confidential = TRUE) @@ -64,8 +59,10 @@ USER_VERB(dev_say, R_ADMIN|R_DEV_TEAM, "Devsay", "Devsay", VERB_CATEGORY_HIDDEN, display_name = "[client.holder.fakekey]/([client.key])" else display_name = client.holder.fakekey - msg = SPAN_EMOJI_ENABLED("[msg]") - to_chat(C, "DEV: [display_name] ([admin_jump_link(client.mob)]): [SPAN_MESSAGE("[msg]")]", MESSAGE_TYPE_DEVCHAT, confidential = TRUE) + + var/temp_message = do_chat_ping(C, msg) + temp_message = SPAN_EMOJI_ENABLED("[temp_message]") + to_chat(C, "DEV: [display_name] ([admin_jump_link(client.mob)]): [SPAN_MESSAGE("[temp_message]")]", 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! @@ -99,8 +96,10 @@ USER_VERB(staff_say, R_ADMIN|R_MENTOR|R_DEV_TEAM, "Staffsay", "Staffsay", VERB_C display_name = "[client.holder.fakekey]/([client.key])" else display_name = client.holder.fakekey - msg = SPAN_EMOJI_ENABLED("[msg]") - to_chat(C, "STAFF: [display_name] ([admin_jump_link(client.mob)]): [SPAN_MESSAGE("[msg]")]", MESSAGE_TYPE_STAFFCHAT, confidential = TRUE) + + var/temp_message = do_chat_ping(C, msg) + temp_message = SPAN_EMOJI_ENABLED("[temp_message]") + to_chat(C, "STAFF: [display_name] ([admin_jump_link(client.mob)]): [SPAN_MESSAGE("[temp_message]")]", 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! @@ -135,8 +134,10 @@ USER_VERB(mentor_say, R_ADMIN|R_MENTOR|R_MOD, "Msay", "Use mentorsay.", VERB_CAT display_name = "[client.holder.fakekey]/([client.key])" else display_name = client.holder.fakekey - msg = SPAN_EMOJI_ENABLED("[msg]") - to_chat(C, "MENTOR: [display_name] ([admin_jump_link(client.mob)]): [SPAN_MESSAGE("[msg]")]", MESSAGE_TYPE_MENTORCHAT, confidential = TRUE) + + var/temp_message = do_chat_ping(C, msg) + temp_message = SPAN_EMOJI_ENABLED("[temp_message]") + to_chat(C, "MENTOR: [display_name] ([admin_jump_link(client.mob)]): [SPAN_MESSAGE("[temp_message]")]", 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!