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!