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/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 4505663b0c4..61ec3c862ee 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -120,18 +120,19 @@ var/global/normal_ooc_colour = "#002eb8" log_ooc("(LOCAL) [mob.name]/[key] : [msg]") var/list/heard = get_mobs_in_view(7, src.mob) var/mob/S = src.mob - + var/display_name = S.key if(S.stat != DEAD) display_name = S.name - + // Handle non-admins for(var/mob/M in heard) if(!M.client) continue var/client/C = M.client - if (C in admins) - continue //they are handled after that + if(C in admins) + if(C.holder.rights | R_MENTOR) + continue //they are handled after that if(C.prefs.toggles & CHAT_LOOC) if(holder) @@ -141,15 +142,16 @@ var/global/normal_ooc_colour = "#002eb8" else display_name = holder.fakekey C << "LOOC: [display_name]: " - + // Now handle admins display_name = S.key if(S.stat != DEAD) display_name = "[S.name]/([S.key])" - + for(var/client/C in admins) - if(C.prefs.toggles & CHAT_LOOC) - var/prefix = "(R)LOOC" - if (C.mob in heard) - prefix = "LOOC" - C << "[prefix]: [display_name]: " + if(C.holder.rights | R_MENTOR) + if(C.prefs.toggles & CHAT_LOOC) + var/prefix = "(R)LOOC" + if (C.mob in heard) + prefix = "LOOC" + C << "[prefix]: [display_name]: " diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index f5d5998e24a..7cdd9579e13 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -77,7 +77,7 @@ num_admins_online++ - else if(R_MOD & C.holder.rights) + else if((R_MOD | R_MENTOR) & C.holder.rights) modmsg += "\t[C] is a [C.holder.rank]" if(isobserver(C.mob)) @@ -98,9 +98,9 @@ if(!C.holder.fakekey) msg += "\t[C] is a [C.holder.rank]\n" num_admins_online++ - else if (R_MOD & C.holder.rights) + else if ((R_MOD | R_MENTOR) & C.holder.rights) modmsg += "\t[C] is a [C.holder.rank]\n" num_mods_online++ - msg = "Current Admins ([num_admins_online]):\n" + msg + "\n Current Mentors ([num_mods_online]):\n" + modmsg + msg = "Current Admins ([num_admins_online]):\n" + msg + "\n Current Mods/Mentors ([num_mods_online]):\n" + modmsg src << msg 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 01aae828579..b4d24b90ec1 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -1,10 +1,8 @@ //admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless var/list/admin_verbs_default = list( // /datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/ - /client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/ - /client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/ + /client/proc/deadmin_self /*destroys our own admin datum so we can play as a regular player*/ // /client/proc/check_antagonists, /*shows all antags*/ - /client/proc/cmd_mentor_check_new_players // /client/proc/deadchat /*toggles deadchat on/off*/ ) var/list/admin_verbs_admin = list( @@ -46,7 +44,6 @@ var/list/admin_verbs_admin = list( /client/proc/toggleprayers, /*toggles prayers on/off*/ // /client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/ /client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/ - /client/proc/secrets, /datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/ /datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/ /datum/admins/proc/toggledsay, /*toggles dsay on/off for everyone*/ @@ -56,7 +53,6 @@ var/list/admin_verbs_admin = list( /client/proc/cmd_mod_say, /datum/admins/proc/show_player_info, /client/proc/free_slot, /*frees slot for chosen job*/ - /client/proc/cmd_admin_rejuvenate, /client/proc/toggleattacklogs, /client/proc/toggledebuglogs, /client/proc/update_mob_sprite, @@ -64,9 +60,7 @@ var/list/admin_verbs_admin = list( /client/proc/man_up, /client/proc/global_man_up, /client/proc/delbook, - /client/proc/event_manager_panel, - /client/proc/empty_ai_core_toggle_latejoin, - /client/proc/fax_panel + /client/proc/empty_ai_core_toggle_latejoin ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, @@ -99,6 +93,9 @@ var/list/admin_verbs_event = list( /client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/ /client/proc/response_team, // Response Teams admin verb /client/proc/cmd_admin_create_centcom_report, + /client/proc/fax_panel, + /client/proc/secrets, + /client/proc/event_manager_panel ) var/list/admin_verbs_spawn = list( @@ -123,21 +120,7 @@ var/list/admin_verbs_server = list( /client/proc/delbook, /client/proc/toggle_antagHUD_use, /client/proc/toggle_antagHUD_restrictions, - /client/proc/set_ooc, - - //Doubling of certain event verbs for senior admins - /datum/admins/proc/access_news_network, /*allows access of newscasters*/ - /client/proc/cmd_admin_direct_narrate, /*send text directly to a player with no padding. Useful for narratives and fluff-text*/ - /client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/ - /client/proc/toggle_random_events, - /client/proc/toggle_ert_calling, - /client/proc/one_click_antag, - /client/proc/cmd_admin_change_custom_event, - /client/proc/cmd_admin_create_centcom_report, - /client/proc/cmd_admin_dress, - /client/proc/editappear, - /client/proc/response_team, // Response Teams admin verb - /client/proc/nanomapgen_DumpImage + /client/proc/set_ooc ) var/list/admin_verbs_debug = list( /client/proc/cmd_admin_list_open_jobs, @@ -167,7 +150,8 @@ var/list/admin_verbs_permissions = list( /client/proc/edit_admin_permissions ) var/list/admin_verbs_rejuv = list( - /client/proc/respawn_character + /client/proc/respawn_character, + /client/proc/cmd_admin_rejuvenate ) var/list/admin_verbs_mod = list( /client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/ @@ -182,9 +166,16 @@ var/list/admin_verbs_mod = list( /client/proc/dsay, /datum/admins/proc/show_player_panel, /client/proc/jobbans, + /client/proc/debug_variables /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/ // /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_mentor_check_new_players +) /client/proc/add_admin_verbs() if(holder) @@ -202,6 +193,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..2dd6ed7f892 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -21,7 +21,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps//Go to hell **/ var/msg - var/list/type = list("Player Complaint","Question","Bug Report","Event") + var/list/type = list("Question","Player Complaint") var/selected_type = input("Pick a category.", "Admin Help", null, null) as null|anything in type if(selected_type) msg = input("Please enter your message.", "Admin Help", null, null) as text @@ -100,11 +100,9 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," var/admin_number_afk = 0 var/list/modholders = list() var/list/banholders = list() - var/list/debugholders = list() 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 @@ -114,10 +112,6 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," adminholders += X if(R_BAN & X.holder.rights) banholders += X - if(R_DEBUG & X.holder.rights) - debugholders += X - if(R_EVENT & X.holder.rights) - eventholders += X switch(selected_type) if("Question") @@ -132,30 +126,6 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(X.prefs.sound & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' X << msg - else if("Bug Report") - if(debugholders.len) - for(var/client/X in debugholders) - if(X.prefs.sound & SOUND_ADMINHELP) - X << 'sound/effects/adminhelp.ogg' - X << msg - else - if(adminholders.len) - for(var/client/X in adminholders) - if(X.prefs.sound & SOUND_ADMINHELP) - X << 'sound/effects/adminhelp.ogg' - X << msg - else if("Event") - if(eventholders.len) - for(var/client/X in eventholders) - if(X.prefs.sound & SOUND_ADMINHELP) - X << 'sound/effects/adminhelp.ogg' - X << msg - else - if(banholders.len) - for(var/client/X in banholders) - if(X.prefs.sound & SOUND_ADMINHELP) - X << 'sound/effects/adminhelp.ogg' - X << msg else if("Player Complaint") if(banholders.len) for(var/client/X in banholders) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 83f43ba6d9c..0b244992381 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" @@ -204,20 +204,14 @@ var/list/modholders = list() var/list/banholders = list() - var/list/debugholders = list() 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 - if(R_DEBUG & X.holder.rights) - debugholders += X if(R_BAN & X.holder.rights) banholders += X - if(R_EVENT & X.holder.rights) - eventholders += X //we don't use message_admins here because the sender/receiver might get it too for(var/client/X in admins) @@ -227,20 +221,10 @@ 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 - if("Bug Report") - if(X.holder.rights & R_DEBUG) - X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X - else if(!debugholders.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 bug reports - if("Event") - if(X.holder.rights & R_EVENT) - X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X - else if(!eventholders.len && X.holder.rights & R_BAN) - X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //Quality in backup of Event if("Player Complaint") if(X.holder.rights & R_BAN) X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //There should always be at least 1 person with +BAN on @@ -273,6 +257,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/paperwork/fax.dm b/code/modules/paperwork/fax.dm index e494a68d7dd..a4b13a2876f 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -13,26 +13,26 @@ var/list/adminfaxes = list() /datum/fax/New() faxes += src - + /datum/fax/admin var/list/reply_to = null - + /datum/fax/admin/New() adminfaxes += src - -// Fax panel - lets admins check all faxes sent during the round + +// Fax panel - lets admins check all faxes sent during the round /client/proc/fax_panel() set name = "Fax Panel" - set category = "Admin" + set category = "Event" if(holder) holder.fax_panel(usr) feedback_add_details("admin_verb","FXP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return - + /datum/admins/proc/fax_panel(var/mob/living/user) var/html = "Refresh" html += "Create Fax" - + html += "
| View | " if(!A.reply_to) if(A.from_department == "Administrator") - html += "N/A | " + html += "N/A | " else html += "Reply | " html += "N/A | " else html += "N/A | " - html += "Original | " - html += "" + html += "Original | " + html += "" html += "