From 0e93014f9d25621786f0b0d8c35e9c8ab83d59c7 Mon Sep 17 00:00:00 2001 From: Charlie Nolan Date: Sat, 13 Apr 2024 12:06:47 -0700 Subject: [PATCH] Mhelp/ahelp fixes. (#25122) Co-authored-by: FunnyMan3595 (Charlie Nolan) Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> --- code/modules/admin/verbs/adminpm.dm | 34 ++++++++++++++++++++------- code/modules/client/client_defines.dm | 2 +- code/modules/client/client_procs.dm | 3 +++ 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index cf562a6c90b..4da858daca0 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -120,7 +120,7 @@ var/datum/controller/subsystem/tickets/tickets_system // We treat PMs as mentorhelps if we were explicitly so, or if neither // party is an admin. - if(type == "Mentorhelp" || !(check_rights(R_ADMIN|R_MOD, 0, C.mob) || check_rights(R_ADMIN|R_MOD, 0, src.mob))) + if(type == "Mentorhelp" || !(check_rights(R_ADMIN|R_MOD, 0, C.mob) || check_rights(R_ADMIN|R_MOD, 0, mob))) send_span = "mentorhelp" recieve_span = "mentorhelp" message_type = MESSAGE_TYPE_MENTORPM @@ -167,22 +167,32 @@ return var/ping_link = check_rights(R_ADMIN, 0, mob) ? "(PING)" : "" - var/window_link = "(WINDOW)" + var/ticket_link var/alert_link = check_rights(R_ADMIN, FALSE, mob) ? "(ALERT)" : "" if(ticket_id != -1) if(message_type == MESSAGE_TYPE_MENTORPM) - window_link = "(TICKET)" + ticket_link = "(TICKET)" else - window_link = "(TICKET)" + ticket_link = "(TICKET)" 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]" : ""]
" + var/recieve_window_link = "(WINDOW)" + if(message_type == MESSAGE_TYPE_MENTORPM && check_rights(R_ADMIN|R_MENTOR, 0, C.mob)) + recieve_window_link = ticket_link + else if(message_type == MESSAGE_TYPE_ADMINPM && check_rights(R_ADMIN, 0, C.mob)) + recieve_window_link = ticket_link + 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] [recieve_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]" + var/send_window_link = "(WINDOW)" + if(message_type == MESSAGE_TYPE_MENTORPM && check_rights(R_ADMIN|R_MENTOR, 0, mob)) + send_window_link = ticket_link + else if(message_type == MESSAGE_TYPE_ADMINPM && check_rights(R_ADMIN, 0, mob)) + send_window_link = ticket_link + 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] [send_window_link] [alert_link]" if(message_type == MESSAGE_TYPE_MENTORPM) send_message = chat_box_mhelp(send_message) else @@ -191,9 +201,9 @@ 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]
") + 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] [ticket_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]
") + 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] [ticket_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 @@ -287,6 +297,7 @@ target.pm_tracker.show_ui(target.mob) /datum/pm_tracker + var/ckey var/current_title = "" var/open = FALSE var/list/datum/pm_convo/pms = list() @@ -294,6 +305,9 @@ var/window_id = "pms_window" var/forced = FALSE +/datum/pm_tracker/New(ckey_in) + ckey = ckey_in + /datum/pm_convo var/list/messages = list() var/archived = FALSE @@ -326,6 +340,10 @@ show_ui(user) /datum/pm_tracker/proc/show_ui(mob/user) + // Please do not open someone else's PMs, that makes them not very private. + if(user.ckey != ckey) + return + var/dat = "" // If it was forced open, make them use a special close button that alerts admins to closure diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 31edadc979f..aa06fa2055c 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -11,7 +11,7 @@ var/last_message = "" //contains the last message sent by this client - used to protect against copy-paste spamming. var/last_message_count = 0 //contains a number of how many times a message identical to last_message was sent. var/last_message_time = 0 //holds the last time (based on world.time) a message was sent - var/datum/pm_tracker/pm_tracker = new() + var/datum/pm_tracker/pm_tracker ///////// //OTHER// diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index d2412ed6d54..0ad98f3ae25 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -262,6 +262,9 @@ stat_panel = new(src, "statbrowser") stat_panel.subscribe(src, PROC_REF(on_stat_panel_message)) + // Create a PM tracker bound to this ckey. + pm_tracker = new(ckey) + tgui_panel = new(src, "browseroutput") tgui_say = new(src, "tgui_say") TopicData = null //Prevent calls to client.Topic from connect