From c218a2457f217fe0792e130460412a1b85fbed02 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Tue, 17 Feb 2015 02:28:00 -0500 Subject: [PATCH] New +MENTOR permission for mentors --- code/__HELPERS/type2type.dm | 3 ++- code/modules/admin/admin_ranks.dm | 1 + code/modules/admin/admin_verbs.dm | 7 +++++++ code/modules/admin/verbs/adminhelp.dm | 2 +- code/modules/admin/verbs/adminpm.dm | 8 ++++---- code/modules/admin/verbs/adminsay.dm | 6 +++--- code/setup.dm | 5 +++-- 7 files changed, 21 insertions(+), 11 deletions(-) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index c26d2e8d7b8..634697b8e44 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -227,7 +227,7 @@ proc/tg_text2list(text, glue=",", assocglue=";") . += copytext(text, last_found, found) last_found = found + delim_len while(found) - + /proc/text2numlist(text, delimiter="\n") var/list/num_list = list() for(var/x in text2list(text, delimiter)) @@ -347,6 +347,7 @@ proc/tg_text2list(text, glue=",", assocglue=";") if(rights & R_SOUNDS) . += "[seperator]+SOUND" if(rights & R_SPAWN) . += "[seperator]+SPAWN" if(rights & R_MOD) . += "[seperator]+MODERATOR" + if(rights & R_MENTOR) . += "[seperator]+MENTOR" return . /proc/ui_style2icon(ui_style) diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index a9afe87debf..d9f5d7d54ba 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -41,6 +41,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights if("sound","sounds") rights |= R_SOUNDS if("spawn","create") rights |= R_SPAWN if("mod") rights |= R_MOD + if("mentor") rights |= R_MENTOR admin_ranks[rank] = rights previous_rights = rights diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 6e2f9b1d4b4..b9844597065 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -185,6 +185,12 @@ var/list/admin_verbs_mod = list( // /client/proc/cmd_admin_subtle_message /*send an message to somebody as a 'voice in their head'*/ ) +var/list/admin_verbs_mentor = list( + /client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/ + /client/proc/cmd_admin_pm_panel, /*admin-pm list*/ + /client/proc/cmd_admin_pm_by_key_panel, /*admin-pm list by key*/ + /client/proc/cmd_mod_say, +) /client/proc/add_admin_verbs() if(holder) @@ -202,6 +208,7 @@ var/list/admin_verbs_mod = list( if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn if(holder.rights & R_MOD) verbs += admin_verbs_mod + if(holder.rights & R_MENTOR) verbs += admin_verbs_mentor /client/proc/admin_ghost() set category = "Admin" diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 3038b414334..7b0b6f759b7 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -104,7 +104,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," var/list/adminholders = list() var/list/eventholders = list() for(var/client/X in admins) - if(R_MOD & X.holder.rights) + if((R_MOD | R_MENTOR) & X.holder.rights) if(X.is_afk()) admin_number_afk++ modholders += X diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 83f43ba6d9c..be65a42e0f6 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -103,7 +103,7 @@ //mod PMs are maroon //PMs sent from admins and mods display their rank if(holder) - if( holder.rights & R_MOD && !holder.rights & R_ADMIN ) + if( holder.rights & (R_MOD | R_MENTOR) && !holder.rights & R_ADMIN ) recieve_color = "maroon" else recieve_color = "red" @@ -208,7 +208,7 @@ var/list/adminholders = list() var/list/eventholders = list() for(var/client/X in admins) - if(R_MOD & X.holder.rights) + if((R_MOD | R_MENTOR) & X.holder.rights) modholders += X if(R_ADMIN & X.holder.rights) adminholders += X @@ -227,7 +227,7 @@ if(X.key!=key && X.key!=C.key) switch(type) if("Question") - if(X.holder.rights & R_MOD) + if(X.holder.rights & (R_MOD | R_MENTOR)) X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X else if(!modholders.len && X.holder.rights & R_ADMIN) X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //Any admins in backup of mod question @@ -273,6 +273,6 @@ for(var/client/X in admins) if(X == src) continue - if((X.holder.rights & R_ADMIN) || (X.holder.rights & R_MOD)) + if((X.holder.rights & R_ADMIN) || (X.holder.rights & (R_MOD | R_MENTOR))) X << "PM: [key_name(src, X, 0)]->IRC-Admins: \blue [msg]" diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index ceefd17c3a6..b45e267c058 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -24,7 +24,7 @@ set name = "Msay" set hidden = 1 - if(!check_rights(R_ADMIN|R_MOD)) return + if(!check_rights(R_ADMIN|R_MOD|R_MENTOR)) return msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) log_admin("MOD: [key_name(src)] : [msg]") @@ -36,8 +36,8 @@ color = "adminmod" var/channel = "MOD:" - if(config.mods_are_mentors) + if(check_rights(R_MENTOR,0)) channel = "MENTOR:" for(var/client/C in admins) - if((R_ADMIN|R_MOD) & C.holder.rights) + if((R_ADMIN|R_MOD|R_MENTOR) & C.holder.rights) C << "[channel] [key_name(src,1)] (JMP): [msg]" diff --git a/code/setup.dm b/code/setup.dm index 4906f0e6bdf..5640ccd817b 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -698,6 +698,7 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define R_SOUNDS 2048 #define R_SPAWN 4096 #define R_MOD 8192 +#define R_MENTOR 16384 #define R_MAXPERMISSION 8192 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. @@ -735,7 +736,7 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define BE_CULTIST 256 #define BE_NINJA 512 #define BE_RAIDER 1024 -#define BE_VAMPIRE 2048 +#define BE_VAMPIRE 2048 #define BE_MUTINEER 4096 #define BE_BLOB 8192 @@ -807,7 +808,7 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse "NukeOps", "Thunderdome", "UO45", - "UO45R", + "UO45R", "Xeno" )