diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index c13ba057..498c0647 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -1290,6 +1290,8 @@ var/global/floorIsLava = 0
if(2)
var/ref_mob = "\ref[M]"
return "[key_name(C, link, name)](?) (PP) (VV) (SM) (JMP) (CA)"
+ if(3)
+ return "[key_name(C, link, name)](?) (DIBS) (PP) (JMP)"
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 2cbb0efd..1156cc24 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -2819,4 +2819,21 @@
var/playerckey = href_list["warnsearchckey"]
warning_panel(adminckey, playerckey)
+ return
+
+ else if(href_list["admindibs"])
+ if(!check_rights(R_ADMIN|R_MOD)) return
+ var/mob/M = locate(href_list["admindibs"])
+
+ if(M.client.adminhelped == 2)
+ log_admin("[key_name(usr)] called dibs on [key_name(M)]'s adminhelp!")
+ message_admins("[key_name_admin(usr)] has called dibs on [key_name_admin(M)]'s adminhelp!")
+ message_mods("[key_name_admin(usr)] has called dibs on [key_name_admin(M)]'s adminhelp!")
+ usr << "You have taken over [key_name_admin(M)]'s adminhelp."
+ usr << "[get_options_bar(M, 2, 1, 1)]"
+
+ M << "Your adminhelp will be tended to [usr.client.holder.fakekey ? "shortly" : "by [key_name(usr, 0, 0)]"]. Please allow the staff member a minute or two to type up a response."
+ M.client.adminhelped = 1
+ else
+ usr << "The adminhelp has already been claimed."
return
\ No newline at end of file
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index a35c8aa1..41ff2003 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -18,7 +18,13 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(src.handle_spam_prevention(msg,MUTE_ADMINHELP))
return
- adminhelped = 1 //Determines if they get the message to reply by clicking the name.
+ adminhelped = 2 //Determines if they get the message to reply by clicking the name.
+
+ /*A wee bit of an update here: we're using the following table for adminhelped values:
+ 2 - Adminhelp has not been claimed by anyone.
+ 1 - Adminhelp has been claimed, initial message has not been sent.
+ 0 - Adminhelp has been claimed, initial message has been sent.
+ */
/**src.verbs -= /client/verb/adminhelp
@@ -91,7 +97,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(!mob) return //this doesn't happen
var/ref_mob = "\ref[mob]"
- msg = "\blue HELP: [get_options_bar(mob, 2, 1, 1)][ai_found ? " (CL)" : ""]: [msg]"
+ msg = "\blue HELP: [get_options_bar(mob, 3, 1, 1)][ai_found ? " (CL)" : ""]: [msg]"
//send this msg to all admins
var/admin_number_present = 0