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