diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 4e645879bfe..33f4fc66233 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -245,7 +245,8 @@ var/list/admin_verbs_hideable = list(
/client/proc/startSinglo,
/client/proc/ticklag,
/client/proc/cmd_admin_grantfullaccess,
- /client/proc/cmd_admin_areatest
+ /client/proc/cmd_admin_areatest,
+ /client/proc/readmin
)
if(holder)
verbs.Remove(holder.rank.adds)
@@ -501,11 +502,11 @@ var/list/admin_verbs_hideable = list(
set category = "Admin"
if(holder)
- if(alert("Confirm self-deadmin for the round? You can't re-admin yourself without someont promoting you.",,"Yes","No") == "Yes")
- log_admin("[src] deadmined themself.")
- message_admins("[src] deadmined themself.")
- deadmin()
- src << "You are now a normal player."
+ log_admin("[src] deadmined themself.")
+ message_admins("[src] deadmined themself.")
+ deadmin()
+ verbs += /client/proc/readmin
+ src << "You are now a normal player."
feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggle_log_hrefs()
@@ -526,3 +527,52 @@ var/list/admin_verbs_hideable = list(
if(holder)
src.holder.output_ai_laws()
+/client/proc/readmin()
+ set name = "Re-admin self"
+ set category = "Admin"
+ set desc = "Regain your admin powers."
+ var/list/rank_names = list()
+ for(var/datum/admin_rank/R in admin_ranks)
+ rank_names[R.name] = R
+ var/datum/admins/D = admin_datums[ckey]
+ var/rank = null
+ if(config.admin_legacy_system)
+ //load text from file
+ var/list/Lines = file2list("config/admins.txt")
+ for(var/line in Lines)
+ var/list/splitline = text2list(line, " = ")
+ if(splitline[1] == ckey)
+ if(splitline.len >= 2)
+ rank = ckeyEx(splitline[2])
+ break
+ continue
+ else
+ if(!dbcon.IsConnected())
+ message_admins("Warning, mysql database is not connected.")
+ src << "Warning, mysql database is not connected."
+ return
+ var/sql_ckey = sanitizeSQL(ckey)
+ var/DBQuery/query = dbcon.NewQuery("SELECT rank FROM [format_table_name("admin")] WHERE ckey = '[sql_ckey]'")
+ query.Execute()
+ while(query.NextRow())
+ rank = ckeyEx(query.item[1])
+ if(!D)
+ if(rank_names[rank] == null)
+ var/error_extra = ""
+ if(!config.admin_legacy_system)
+ error_extra = " Check mysql DB connection."
+ error("Error while re-adminning [src], admin rank ([rank]) does not exist.[error_extra]")
+ src << "Error while re-adminning, admin rank ([rank]) does not exist.[error_extra]"
+ return
+ D = new(rank_names[rank],ckey)
+ var/client/C = directory[ckey]
+ D.associate(C)
+ message_admins("[src] re-adminned themselves.")
+ log_admin("[src] re-adminned themselves.")
+ feedback_add_details("admin_verb","RAS")
+ verbs -= /client/proc/readmin
+ return
+ else
+ src << "You are already an admin."
+ verbs -= /client/proc/readmin
+ return