[MIRROR] [MDB IGNORE] Adds pinging to asay (#8431)

* Adds pinging to asay (#61712)

I spend a lot of my time adminning the servers alt tabbed when not much is going on, tabbing back in every 5-10 minutes to see what's happening or when I hear a bwoink. Sometimes I miss out on other admins asking me questions or trying to get my attention, and I'll only realize way later when I'm scrolling back up through the chat logs, if at all.

This PR adds the ability to @  other admins in asay by their ckey, which underlines the pinged name, plays a bloop sound (the one when a vote starts) and flashes their window icon if they're not tabbed in.

* Adds pinging to asay

Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
This commit is contained in:
SkyratBot
2021-09-27 23:38:45 +02:00
committed by GitHub
parent 87607a26d6
commit f385a06a98
3 changed files with 44 additions and 0 deletions

View File

@@ -847,3 +847,32 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
break
return potential_hits
/**
* Checks a given message to see if any of the words contain an active admin's ckey with an @ before it
*
* Returns nothing if no pings are found, otherwise returns an associative list with ckey -> client
* Also modifies msg to underline the pings, then stores them in the key [ADMINSAY_PING_UNDERLINE_NAME_INDEX] for returning
*
* Arguments:
* * msg - the message being scanned
*/
/proc/check_admin_pings(msg)
//explode the input msg into a list
var/list/msglist = splittext(msg, " ")
var/list/admins_to_ping = list()
var/i = 0
for(var/word in msglist)
i++
if(word[1] != "@")
continue
var/ckey_check = lowertext(copytext(word, 2))
var/client/client_check = GLOB.directory[ckey_check]
if(client_check?.holder)
msglist[i] = "<u>[word]</u>"
admins_to_ping[ckey_check] = client_check
if(length(admins_to_ping))
admins_to_ping[ADMINSAY_PING_UNDERLINE_NAME_INDEX] = jointext(msglist, " ") // without tuples, we must make do!
return admins_to_ping