From ac5259836fe91c40304e238bf41b6409b5716883 Mon Sep 17 00:00:00 2001 From: "aranclanos@hotmail.com" Date: Tue, 16 Oct 2012 03:07:08 +0000 Subject: [PATCH] My first commit, yay! Removing: -Erro code of r4861. Xsi gave me permission p-please don't kill me. Proc added: -Added a proc that checks the rank of the admin and compares it to a var given. If the check fails, returns a 0 and a "You need more acces" message. If not, returns an 1. admin_rank_check(var/rank, var/requested) Admin option changes: -You need to be at least a trialmin to change a var in VV. -You need to be at least a trialmin to change the vars on the tator panel -You need to be at least a trialmin to allow votes or start a custom one. (All admins can cancel votes) -All mob transformations (of playerpanel and VV) and special options (like godmode), now requires trialmin status or higher. -All admins can use aghost now. -All admins can right click - VV if they are a ghosting. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4889 316c924e-a436-60f5-8080-3fe189b3f50e --- code/controllers/voting.dm | 13 ++++++---- code/datums/datumvars.dm | 27 +++++++++++++++++++-- code/datums/mind.dm | 4 +++ code/modules/admin/admin_verbs.dm | 11 +++++++-- code/modules/admin/holder2.dm | 4 +++ code/modules/admin/verbs/massmodvar.dm | 2 ++ code/modules/admin/verbs/modifyvariables.dm | 1 + 7 files changed, 53 insertions(+), 9 deletions(-) diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index f2596cd5f20..2cf82f11233 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -167,8 +167,11 @@ datum/controller/vote proc/interface(var/client/C) if(!C) return var/admin = 0 + var/trialmin = 0 if(C.holder) admin = 1 + if (C.holder.level >= 3) + trialmin = 1 voting |= C . = "Voting Panel" @@ -186,24 +189,24 @@ datum/controller/vote else . += "

Start a vote:



" . += "Close" diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index a36117bbd0e..fba1e04b19c 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -8,8 +8,8 @@ client //set src in world - if(!usr.client || !usr.client.holder || !(usr.client.holder.level >= 2) ) //admin candidate and up. - usr << "\red You need to be a higher level administrator to access this." + if(!usr.client || !usr.client.holder) + usr << "\red You need to be an administrator to access this." return @@ -408,6 +408,7 @@ client else if (href_list["rename"]) var/mob/M = locate(href_list["rename"]) if(!istype(M)) return + if(!admin_rank_check(src.holder.level, 3)) return var/new_name = copytext(sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null),1,MAX_NAME_LEN) if( !new_name || !M ) return @@ -473,6 +474,7 @@ client return if(!src.holder) return + if(!admin_rank_check(src.holder.level, 3)) return src.give_spell(MOB) href_list["datumrefresh"] = href_list["give_spell"] else if (href_list["ninja"]) @@ -485,6 +487,7 @@ client return if(!src.holder) return + if(!admin_rank_check(src.holder.level, 3)) return src.cmd_admin_ninjafy(MOB) href_list["datumrefresh"] = href_list["ninja"] else if (href_list["godmode"]) @@ -497,6 +500,7 @@ client return if(!src.holder) return + if(!admin_rank_check(src.holder.level, 3)) return src.cmd_admin_godmode(MOB) href_list["datumrefresh"] = href_list["godmode"] else if (href_list["gib"]) @@ -509,6 +513,7 @@ client return if(!src.holder) return + if(!admin_rank_check(src.holder.level, 3)) return src.cmd_admin_gib(MOB) else if (href_list["build_mode"]) @@ -521,6 +526,7 @@ client return if(!src.holder) return + if(!admin_rank_check(src.holder.level, 3)) return togglebuildmode(MOB) href_list["datumrefresh"] = href_list["build_mode"] @@ -536,6 +542,7 @@ client return if(usr.client) + if(!admin_rank_check(src.holder.level, 3)) return usr.client.cmd_admin_drop_everything(MOB) else if (href_list["direct_control"]) @@ -550,6 +557,7 @@ client return if(usr.client) + if(!admin_rank_check(src.holder.level, 3)) return usr.client.cmd_assume_direct_control(MOB) else if (href_list["make_skeleton"]) @@ -564,6 +572,7 @@ client return if(ishuman(MOB)) + if(!admin_rank_check(src.holder.level, 3)) return var/mob/living/carbon/human/HUMANMOB = MOB HUMANMOB.makeSkeleton() @@ -571,6 +580,7 @@ client if(!href_list["delall"]) return var/atom/A = locate(href_list["delall"]) + if(!admin_rank_check(src.holder.level, 3)) return if(!A) return if(!isobj(A)) @@ -617,6 +627,7 @@ client return if(!isobj(A) && !ismob(A) && !isturf(A)) return + if(!admin_rank_check(src.holder.level, 3)) return src.cmd_admin_explosion(A) href_list["datumrefresh"] = href_list["explode"] else if (href_list["emp"]) @@ -627,6 +638,7 @@ client return if(!isobj(A) && !ismob(A) && !isturf(A)) return + if(!admin_rank_check(src.holder.level, 3)) return src.cmd_admin_emp(A) href_list["datumrefresh"] = href_list["emp"] else if (href_list["mark_object"]) @@ -637,9 +649,11 @@ client return if(!src.holder) return + if(!admin_rank_check(src.holder.level, 3)) return src.holder.marked_datum = D href_list["datumrefresh"] = href_list["mark_object"] else if (href_list["rotatedatum"]) + if(!admin_rank_check(src.holder.level, 3)) return if(!href_list["rotatedir"]) return var/atom/A = locate(href_list["rotatedatum"]) @@ -660,6 +674,7 @@ client var/mob/M = locate(href_list["makemonkey"]) if(!M) return + if(!admin_rank_check(src.holder.level, 3)) return if(!ishuman(M)) usr << "This can only be done to objects of type /mob/living/carbon/human" return @@ -677,6 +692,7 @@ client var/mob/M = locate(href_list["makerobot"]) if(!M) return + if(!admin_rank_check(src.holder.level, 3)) return if(!ishuman(M)) usr << "This can only be done to objects of type /mob/living/carbon/human" return @@ -694,6 +710,7 @@ client var/mob/M = locate(href_list["makealien"]) if(!M) return + if(!admin_rank_check(src.holder.level, 3)) return if(!ishuman(M)) usr << "This can only be done to objects of type /mob/living/carbon/human" return @@ -711,6 +728,7 @@ client var/mob/M = locate(href_list["makemetroid"]) if(!M) return + if(!admin_rank_check(src.holder.level, 3)) return if(!ishuman(M)) usr << "This can only be done to objects of type /mob/living/carbon/human" return @@ -728,6 +746,7 @@ client var/mob/M = locate(href_list["makeai"]) if(!M) return + if(!admin_rank_check(src.holder.level, 3)) return if(!ishuman(M)) usr << "This can only be done to objects of type /mob/living/carbon/human" return @@ -743,6 +762,7 @@ client holder.Topic(href, list("makeai"=href_list["makeai"])) else if (href_list["setmutantrace"]) var/mob/living/carbon/human/H = locate(href_list["setmutantrace"]) + if(!admin_rank_check(src.holder.level, 3)) return if(!istype(H)) usr << "This can only be done to objects of type /mob/living/carbon/human" return @@ -761,6 +781,7 @@ client H.update_mutantrace() else if (href_list["regenerateicons"]) var/mob/M = locate(href_list["regenerateicons"]) + if(!admin_rank_check(src.holder.level, 3)) return if(!istype(M)) usr << "This can only be done to objects of type /mob" return @@ -775,6 +796,8 @@ client if(!isliving(M)) return var/mob/living/L = M + if(!admin_rank_check(src.holder.level, 3)) return + var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num if(Text == "brute") L.adjustBruteLoss(amount) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index e3a62571cb5..3710c3b76b4 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -340,6 +340,10 @@ datum/mind log_admin("[key_name(usr)] tried to access [current]'s mind without authorization.") return + if (!(usr.client.holder in list("Trial Admin", "Badmin", "Game Admin", "Game Master"))) + alert("You cannot perform this action. You must be of a higher administrative rank!") + return + if (href_list["role_edit"]) var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in get_all_jobs() if (!new_role) return diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index bd66109623e..98e5f9c90c0 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -16,6 +16,12 @@ // verbs += /client/proc/air_status //Air things // verbs += /client/proc/Cell //More air things +/client/proc/admin_rank_check(var/rank, var/requested) + if(rank < requested) + alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null) + return(0) + return(1) + /client/proc/update_admins(var/rank) if(!holder) holder = new /datum/admins(rank) @@ -55,7 +61,6 @@ if ("Trial Admin") holder.level = 3 if(holder.state == 2) // if observing - verbs += /client/proc/debug_variables verbs += /client/proc/cmd_modify_ticker_variables verbs += /client/proc/toggle_view_range verbs += /client/proc/Getmob @@ -89,6 +94,8 @@ if ("Admin Observer") holder.level = -1 + if(holder.state == 2) // if observing + verbs += /client/proc/debug_variables // if ("Banned") // holder.level = -2 @@ -106,6 +113,7 @@ if (holder.level >= -1) verbs += /client/proc/cmd_admin_say verbs += /client/proc/deadmin_self + verbs += /client/proc/admin_ghost else return //Moderator @@ -123,7 +131,6 @@ verbs += /client/proc/cmd_admin_pm_panel verbs += /client/proc/cmd_admin_subtle_message verbs += /client/proc/dsay - verbs += /client/proc/admin_ghost verbs += /client/proc/game_panel verbs += /client/proc/player_panel verbs += /client/proc/player_panel_new diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 7949e046dca..3b96ba378e1 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -181,6 +181,10 @@ var/list/admin_datums = list() if(href_list["simplemake"]) + if (!(src.rank in list("Trial Admin", "Badmin", "Game Admin", "Game Master"))) + alert("You cannot perform this action. You must be of a higher administrative rank!") + return + if(!href_list["mob"]) usr << "Invalid mob" return diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index 0acf6863021..b5e15dc6d20 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -5,6 +5,8 @@ var/method = 0 //0 means strict type detection while 1 means this type and all subtypes (IE: /obj/item with this set to 1 will set it to ALL itms) + if(!admin_rank_check(src.holder.level, 3)) return + if(A && A.type) if(typesof(A.type)) switch(input("Strict object type detection?") as null|anything in list("Strictly this type","This type and subtypes", "Cancel")) diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 877fd47182e..6771f00f9b4 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -269,6 +269,7 @@ var/list/forbidden_varedit_object_types = list( if(!src.holder) src << "Only administrators may use this command." return + if(!admin_rank_check(src.holder.level, 3)) return for(var/p in forbidden_varedit_object_types) if( istype(O,p) )