diff --git a/code/modules/admin/ticket.dm b/code/modules/admin/ticket.dm
index 593586035f7..d81533f601f 100644
--- a/code/modules/admin/ticket.dm
+++ b/code/modules/admin/ticket.dm
@@ -297,7 +297,7 @@ GLOBAL_LIST_EMPTY(ticket_panels)
if("close")
ticket.close(usr.client)
if("pm")
- if(check_rights(R_MOD|R_ADMIN) && ticket.owner != usr.ckey)
+ if(ticket.owner != usr.ckey && check_rights(R_MOD|R_ADMIN))
usr.client.cmd_admin_pm(client_by_ckey(ticket.owner), ticket = ticket)
else if(ticket.status == TICKET_ASSIGNED)
// manually check that the target client exists here as to not spam the usr for each logged out admin on the ticket
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 7140a79de6e..c659d92e415 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -46,9 +46,10 @@
return
var/receive_pm_type = "Player"
+ var/sender_is_ahelp_staff = check_rights(R_ADMIN|R_MOD, FALSE)
//mod PMs are maroon
//PMs sent from admins and mods display their rank
- if(holder)
+ if(sender_is_ahelp_staff)
if(!C.holder && holder.fakekey)
receive_pm_type = "Admin"
else
@@ -61,12 +62,12 @@
//get message text, limit it's length.and clean/escape html
// only sanitize it if we're getting it from this proc
if(!msg)
- msg = input(src,"Message:", "Private message to [key_name(C, 0, holder ? 1 : 0)]") as text|null
+ msg = input(src,"Message:", "Private message to [key_name(C, 0, sender_is_ahelp_staff ? 1 : 0)]") as text|null
if(!msg)
return
if(!C)
- if(holder)
+ if(sender_is_ahelp_staff)
to_chat(src, SPAN_WARNING("Error: Admin-PM: Client not found."))
else
to_chat(src, SPAN_WARNING("Error: Private-Message: Client not found. They may have lost connection, so try using an adminhelp!"))
@@ -81,7 +82,7 @@
// searches for an open ticket, in case an outdated link was clicked
// I'm paranoid about the problems that could be caused by accidentally finding the wrong ticket, which is why this is strict
if(isnull(ticket))
- if(holder)
+ if(sender_is_ahelp_staff)
ticket = get_open_ticket_by_ckey(C.ckey) // it's more likely an admin clicked a different PM link, so check admin -> player with ticket first
if(isnull(ticket) && C.holder)
ticket = get_open_ticket_by_ckey(src.ckey) // if still no dice, try an admin with ticket -> admin
@@ -90,7 +91,7 @@
if(isnull(ticket)) // finally, accept that no ticket exists
- if(holder && src != C)
+ if(sender_is_ahelp_staff && src != C)
ticket = new /datum/ticket(C.ckey)
ticket.take(src)
else
@@ -101,13 +102,13 @@
return
// if the sender is an admin and they're not assigned to the ticket, ask them if they want to take/join it, unless the admin is responding to their own ticket
- if(holder && !(src.ckey in ticket.assigned_admins))
+ if(sender_is_ahelp_staff && !(src.ckey in ticket.assigned_admins))
if(src.ckey != ticket.owner && !ticket.take(src))
return
var/receive_message
- if(holder && !C.holder)
+ if(sender_is_ahelp_staff && !C.holder)
receive_message = "-- Click the [receive_pm_type]'s name to reply --\n"
if(C.adminhelped)
to_chat(C, receive_message)
@@ -126,8 +127,8 @@
adminhelp(reply) //sender has left, adminhelp instead
return
- var/sender_message = "" + create_text_tag("PM <-", src) + " to [get_options_bar(C, holder ? 1 : 0, holder ? 1 : 0, 1)]"
- if(holder)
+ var/sender_message = "" + create_text_tag("PM <-", src) + " to [get_options_bar(C, sender_is_ahelp_staff ? 1 : 0, sender_is_ahelp_staff ? 1 : 0, 1)]"
+ if(sender_is_ahelp_staff)
sender_message += " ([(ticket.status == TICKET_OPEN) ? "TAKE" : "JOIN"]) (CLOSE)"
sender_message += ": [generate_ahelp_key_words(mob, msg)]"
else
diff --git a/html/changelogs/johnwildkins-HELP.yml b/html/changelogs/johnwildkins-HELP.yml
new file mode 100644
index 00000000000..501811c0754
--- /dev/null
+++ b/html/changelogs/johnwildkins-HELP.yml
@@ -0,0 +1,13 @@
+# Your name.
+author: JohnWildkins
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
+# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - bugfix: "Fixed devs and other non-modmin staff getting errors attempting to submit/reply to ahelps."