diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 15554087c16..d6584a37666 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -177,11 +177,13 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /// If any admins were online when the ticket was initialized var/heard_by_no_admins = FALSE /// The collection of interactions with this ticket. Use AddInteraction() or, preferably, admin_ticket_log() - var/list/_interactions + var/list/ticket_interactions /// Statclick holder for the ticket var/obj/effect/statclick/ahelp/statclick /// Static counter used for generating each ticket ID var/static/ticket_counter = 0 + /// The list of clients currently responding to the opening ticket before it gets a response + var/list/opening_responders /** * Call this on its own to create a ticket, don't manually assign current_ticket @@ -214,7 +216,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) TimeoutVerb() statclick = new(null, src) - _interactions = list() + ticket_interactions = list() if(is_bwoink) AddInteraction("[key_name_admin(usr)] PM'd [LinkedReplyName()]") @@ -240,7 +242,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(heard_by_no_admins && usr && usr.ckey != initiator_ckey) heard_by_no_admins = FALSE send2adminchat(initiator_ckey, "Ticket #[id]: Answered by [key_name(usr)]") - _interactions += "[time_stamp()]: [formatted_message]" + ticket_interactions += "[time_stamp()]: [formatted_message]" //Removes the ahelp verb and returns it after 2 minutes /datum/admin_help/proc/TimeoutVerb() @@ -443,7 +445,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) else dat += "DISCONNECTED[FOURSPACES][ClosureLinks(ref_src)]
" dat += "
Log:

" - for(var/I in _interactions) + for(var/I in ticket_interactions) dat += "[I]
" // Append any tickets also opened by this user if relevant diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index b3b2fbcc64a..e1a0bd33fdb 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -64,9 +64,19 @@ var/datum/admin_help/AH = C.current_ticket + var/message_prompt = "Message:" + + if(AH?.opening_responders && length(AH.ticket_interactions) == 1) + SEND_SOUND(src, sound('sound/machines/buzz-sigh.ogg', volume=30)) + message_prompt += "\n\n**This ticket is already being responded to by: [english_list(AH.opening_responders)]**" + if(AH) message_admins("[key_name_admin(src)] has started replying to [key_name_admin(C, 0, 0)]'s admin help.") - var/msg = input(src,"Message:", "Private message to [C.holder?.fakekey ? "an Administrator" : key_name(C, 0, 0)].") as message|null + if(length(AH.ticket_interactions) == 1) // add the admin who is currently responding to the list of people responding + LAZYADD(AH.opening_responders, src) + + var/msg = input(src, message_prompt, "Private message to [C.holder?.fakekey ? "an Administrator" : key_name(C, 0, 0)].") as message|null + LAZYREMOVE(AH.opening_responders, src) if (!msg) message_admins("[key_name_admin(src)] has cancelled their reply to [key_name_admin(C, 0, 0)]'s admin help.") return