From cb75108c7067f171e258ee099d5acd874f96f1aa Mon Sep 17 00:00:00 2001 From: Charlie Nolan Date: Fri, 12 Apr 2024 11:35:22 -0700 Subject: [PATCH] Ahelp and Mhelp QOL 2 (#24796) * Consistently box mhelp/ahelp messages, change mhelp sound. * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> --------- Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> --- code/__DEFINES/chat_box_defines.dm | 2 + .../subsystem/tickets/mentor_tickets.dm | 2 +- code/controllers/subsystem/tickets/tickets.dm | 16 +++---- code/modules/admin/misc_admin_procs.dm | 2 +- code/modules/admin/verbs/adminhelp.dm | 6 ++- code/modules/admin/verbs/adminpm.dm | 43 +++++++++++++------ 6 files changed, 47 insertions(+), 24 deletions(-) diff --git a/code/__DEFINES/chat_box_defines.dm b/code/__DEFINES/chat_box_defines.dm index 40a1c491cf3..35d4d879018 100644 --- a/code/__DEFINES/chat_box_defines.dm +++ b/code/__DEFINES/chat_box_defines.dm @@ -6,3 +6,5 @@ #define chat_box_notice(str) ("
" + str + "
") #define chat_box_healthscan(str) ("
" + str + "
") #define chat_box_notice_thick(str) ("
" + str + "
") +#define chat_box_ahelp(str) ("
" + str + "
") +#define chat_box_mhelp(str) ("
" + str + "
") diff --git a/code/controllers/subsystem/tickets/mentor_tickets.dm b/code/controllers/subsystem/tickets/mentor_tickets.dm index b2db4ed044f..10f87fe836c 100644 --- a/code/controllers/subsystem/tickets/mentor_tickets.dm +++ b/code/controllers/subsystem/tickets/mentor_tickets.dm @@ -44,7 +44,7 @@ GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets /datum/controller/subsystem/tickets/mentor_tickets/message_staff(msg, prefix_type = NONE, important = FALSE) - message_mentorTicket(msg, important) + message_mentorTicket(chat_box_mhelp(msg), important) /datum/controller/subsystem/tickets/mentor_tickets/create_other_system_ticket(datum/ticket/T) SStickets.newTicket(get_client_by_ckey(T.client_ckey), T.first_raw_response, T.title) diff --git a/code/controllers/subsystem/tickets/tickets.dm b/code/controllers/subsystem/tickets/tickets.dm index 88959e5f3b7..bb6c762cf0e 100644 --- a/code/controllers/subsystem/tickets/tickets.dm +++ b/code/controllers/subsystem/tickets/tickets.dm @@ -139,7 +139,7 @@ SUBSYSTEM_DEF(tickets) * msg - The raw message * ticketNum - Which ticket number the ticket has */ -/datum/controller/subsystem/tickets/proc/makeUrlMessage(target, msg, ticketNum) +/datum/controller/subsystem/tickets/proc/makeUrlMessage(target, msg, ticketNum, one_line = FALSE) var/mob/M var/key_and_name if(istype(target, /datum/ticket)) @@ -154,13 +154,13 @@ SUBSYSTEM_DEF(tickets) key_and_name = key_name(M, TRUE, ticket_help_type, ticket_id = ticketNum) var/list/L = list() - L += "[ticket_help_type]: [key_and_name] " + L += "[ticket_help_type]: [key_and_name][one_line ? " " : "
"]
" if(M) L += "([ADMIN_QUE(M,"?")]) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_TP(M,"TP")]) ([ADMIN_SM(M,"SM")]) ([admin_jump_link(M)])" L += "(TICKET) " L += "[isAI(M) ? "(CL)" : ""] (TAKE) " L += "(RESOLVE) (AUTO) " - L += "(CONVERT) :
[msg]" + L += "(CONVERT) : [one_line ? " " : "

"][msg]
" return L.Join() //Open a new ticket and populate details then add to the list of open tickets @@ -500,7 +500,7 @@ UI STUFF for(var/T in allTickets) ticket = T if(ticket.ticketState == TICKET_OPEN || ticket.ticketState == TICKET_STALE) - dat += "ResolveDetails
#[ticket.ticketNum] ([ticket.ingame_time_opened]) [ticket.ticketState == TICKET_STALE ? "STALE" : ""] [makeUrlMessage(ticket)]" + dat += "ResolveDetails
#[ticket.ticketNum] ([ticket.ingame_time_opened]) [ticket.ticketState == TICKET_STALE ? "STALE" : ""] [makeUrlMessage(ticket, one_line = TRUE)]" else continue else if(tab == TICKET_RESOLVED) @@ -508,7 +508,7 @@ UI STUFF for(var/T in allTickets) ticket = T if(ticket.ticketState == TICKET_RESOLVED) - dat += "ResolveDetails
#[ticket.ticketNum] ([ticket.ingame_time_opened]) [makeUrlMessage(ticket)]" + dat += "ResolveDetails
#[ticket.ticketNum] ([ticket.ingame_time_opened]) [makeUrlMessage(ticket, one_line = TRUE)]" else continue else if(tab == TICKET_CLOSED) @@ -516,7 +516,7 @@ UI STUFF for(var/T in allTickets) ticket = T if(ticket.ticketState == TICKET_CLOSED) - dat += "ResolveDetails
#[ticket.ticketNum] ([ticket.ingame_time_opened]) [makeUrlMessage(ticket)]" + dat += "ResolveDetails
#[ticket.ticketNum] ([ticket.ingame_time_opened]) [makeUrlMessage(ticket, one_line = TRUE)]" else continue @@ -549,7 +549,7 @@ UI STUFF dat += "

[T.client_ckey] / [T.mobControlled] opened this [ticket_name] at [T.ingame_time_opened] at location [T.locationSent]

" dat += "

Ticket Status: [status]" dat += "" - dat += "" + dat += "" if(length(T.ticket_responses) > 1) for(var/i in 2 to length(T.ticket_responses)) @@ -620,7 +620,7 @@ UI STUFF msg = "ADMIN TICKET: [msg]" if(TICKET_STAFF_MESSAGE_PREFIX) msg = "ADMIN TICKET: [msg]" - message_adminTicket(msg, important) + message_adminTicket(chat_box_ahelp(msg), important) /datum/controller/subsystem/tickets/Topic(href, href_list) diff --git a/code/modules/admin/misc_admin_procs.dm b/code/modules/admin/misc_admin_procs.dm index 4d7805a8bca..8995343bbca 100644 --- a/code/modules/admin/misc_admin_procs.dm +++ b/code/modules/admin/misc_admin_procs.dm @@ -47,7 +47,7 @@ GLOBAL_VAR_INIT(nologevent, 0) to_chat(C, msg, MESSAGE_TYPE_MENTORPM, confidential = TRUE) if(important) if(C.prefs?.sound & SOUND_MENTORHELP) - SEND_SOUND(C, sound('sound/effects/adminhelp.ogg')) + SEND_SOUND(C, sound('sound/machines/notif1.ogg')) window_flash(C) /proc/admin_ban_mobsearch(mob/M, ckey_to_find, mob/admin_to_notify) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 78febb17ac3..e8de49e3c02 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -32,13 +32,15 @@ T = SSmentor_tickets.newHelpRequest(src, msg) // Mhelp span_type = "mentorhelp" message_type = MESSAGE_TYPE_MENTORPM + //show it to the person mentorhelping too + to_chat(src, chat_box_mhelp("[selected_type]

[msg]
"), message_type, confidential = TRUE) else T = SStickets.newHelpRequest(src, msg) // Ahelp span_type = "adminhelp" message_type = MESSAGE_TYPE_ADMINPM + //show it to the person adminhelping too + to_chat(src, chat_box_ahelp("[selected_type]

[msg]
"), message_type, confidential = TRUE) - //show it to the person adminhelping too - to_chat(src, "[selected_type]: [msg]", message_type, confidential = TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Adminhelp") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! switch(selected_type) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 5132c5a99f5..cf562a6c90b 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -166,23 +166,42 @@ adminhelp(reply) //sender has left, adminhelp instead return - - var/emoji_msg = "[msg]" - recieve_message = chat_box_red("[type] from-[recieve_pm_type] [C.holder ? key_name(src, TRUE, type, ticket_id = ticket_id) : key_name_hidden(src, TRUE, type, ticket_id = ticket_id)]:

[emoji_msg]
") - to_chat(C, recieve_message) var/ping_link = check_rights(R_ADMIN, 0, mob) ? "(PING)" : "" var/window_link = "(WINDOW)" - var/alert_link = check_rights(R_ADMIN, FALSE, mob) ? " (ALERT)" : "" - to_chat(src, "[send_pm_type][type] to-[holder ? key_name(C, TRUE, type, ticket_id = ticket_id) : key_name_hidden(C, TRUE, type, ticket_id = ticket_id)]: [emoji_msg] [ping_link] [window_link][alert_link]", message_type) + var/alert_link = check_rights(R_ADMIN, FALSE, mob) ? "(ALERT)" : "" + if(ticket_id != -1) + if(message_type == MESSAGE_TYPE_MENTORPM) + window_link = "(TICKET)" + else + window_link = "(TICKET)" - /*if(holder && !C.holder) - C.last_pm_recieved = world.time - C.ckey_last_pm = ckey*/ + var/emoji_msg = "[msg]" + recieve_message = "[type] from-[recieve_pm_type] [C.holder ? key_name(src, TRUE, type, ticket_id = ticket_id) : key_name_hidden(src, TRUE, type, ticket_id = ticket_id)]:

[emoji_msg][C.holder ? "
[ping_link] [window_link] [alert_link]" : ""]
" + if(message_type == MESSAGE_TYPE_MENTORPM) + recieve_message = chat_box_mhelp(recieve_message) + else + recieve_message = chat_box_ahelp(recieve_message) + to_chat(C, recieve_message) + var/send_message = "[send_pm_type][type] to-[holder ? key_name(C, TRUE, type, ticket_id = ticket_id) : key_name_hidden(C, TRUE, type, ticket_id = ticket_id)]:

[emoji_msg]

[ping_link] [window_link] [alert_link]" + if(message_type == MESSAGE_TYPE_MENTORPM) + send_message = chat_box_mhelp(send_message) + else + send_message = chat_box_ahelp(send_message) + to_chat(src, send_message) + + var/third_party_message + if(message_type == MESSAGE_TYPE_MENTORPM) + third_party_message = chat_box_mhelp("[type]: [key_name(src, TRUE, type, ticket_id = ticket_id)]->[key_name(C, TRUE, type, ticket_id = ticket_id)]:

[emoji_msg]
[ping_link] [window_link] [alert_link]
") + else + third_party_message = chat_box_ahelp("[type]: [key_name(src, TRUE, type, ticket_id = ticket_id)]->[key_name(C, TRUE, type, ticket_id = ticket_id)]:

[emoji_msg]
[ping_link] [window_link] [alert_link]
") //play the recieving admin the adminhelp sound (if they have them enabled) //non-admins always hear the sound, as they cannot toggle it if((!C.holder) || (C.prefs.sound & SOUND_ADMINHELP)) - SEND_SOUND(C, sound('sound/effects/adminhelp.ogg')) + if(message_type == MESSAGE_TYPE_MENTORPM) + SEND_SOUND(C, sound('sound/machines/notif1.ogg')) + else + SEND_SOUND(C, sound('sound/effects/adminhelp.ogg')) log_admin("PM: [key_name(src)]->[key_name(C)]: [msg]") //we don't use message_admins here because the sender/receiver might get it too @@ -193,10 +212,10 @@ if(X.key != key && X.key != C.key) if(message_type == MESSAGE_TYPE_MENTORPM) if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob)) - to_chat(X, "[type]: [key_name(src, TRUE, type, ticket_id = ticket_id)]->[key_name(C, TRUE, type, ticket_id = ticket_id)]: [emoji_msg]", type = message_type) + to_chat(X, third_party_message) else if(check_rights(R_ADMIN|R_MOD, 0, X.mob)) - to_chat(X, "[type]: [key_name(src, TRUE, type, ticket_id = ticket_id)]->[key_name(C, TRUE, type, ticket_id = ticket_id)]: [emoji_msg]", type = message_type) + to_chat(X, third_party_message) //Check if the mob being PM'd has any open tickets. var/list/tickets = tickets_system.checkForTicket(C, ticket_id)
[makeUrlMessage(T)]
[makeUrlMessage(T, one_line = TRUE)]