diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 4e645879bfe..ccc68b0eac9 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,47 @@ 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.") + return + var/DBQuery/query = dbcon.NewQuery("SELECT ckey, rank FROM [format_table_name("admin")] WHERE ckey = '[ckey]'") + query.Execute() + while(query.NextRow()) + rank = ckeyEx(query.item[2]) + verbs -= /client/proc/readmin + if(!rank) + return + if(!D) + if(rank_names[rank] == null) + error("Admin rank ([rank]) does not exist.") + return + D = new(rank_names[rank],ckey) + var/client/C = directory[ckey] + D.associate(C) + message_admins("[src] re-adminned.") + log_admin("[src] re-adminned.") + feedback_add_details("admin_verb","RAS") + return + else + src << "You are already an admin." + return