Merge pull request #324 from ZomgPonies/rev

New +MENTOR permission for mentors
This commit is contained in:
Mark van Alphen
2015-02-18 16:15:44 +01:00
10 changed files with 68 additions and 117 deletions
+1
View File
@@ -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
+16 -24
View File
@@ -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"
+2 -32
View File
@@ -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)
+4 -20
View File
@@ -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 << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //inform X
else if(!modholders.len && X.holder.rights & R_ADMIN)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //Any admins in backup of mod question
if("Bug Report")
if(X.holder.rights & R_DEBUG)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //inform X
else if(!debugholders.len && X.holder.rights & R_ADMIN)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //Any admins in backup of bug reports
if("Event")
if(X.holder.rights & R_EVENT)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //inform X
else if(!eventholders.len && X.holder.rights & R_BAN)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //Quality in backup of Event
if("Player Complaint")
if(X.holder.rights & R_BAN)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //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 << "<B><font color='blue'>PM: [key_name(src, X, 0)]-&gt;IRC-Admins:</B> \blue [msg]</font>"
+12 -13
View File
@@ -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 = "<A align='right' href='?src=\ref[src];refreshfaxpanel=1'>Refresh</A>"
html += "<A align='right' href='?src=\ref[src];AdminFaxCreate=1;faxtype=Administrator'>Create Fax</A>"
html += "<div class='block'>"
html += "<h2>Admin Faxes</h2>"
html += "<table>"
@@ -51,14 +51,14 @@ var/list/adminfaxes = list()
html += "<td><A align='right' href='?src=\ref[src];AdminFaxView=\ref[A.message]'>View</A></td>"
if(!A.reply_to)
if(A.from_department == "Administrator")
html += "<td>N/A</td>"
html += "<td>N/A</td>"
else
html += "<td><A align='right' href='?src=\ref[src];AdminFaxCreate=\ref[A.sent_by];originfax=\ref[A.origin];faxtype=[A.to_department];replyto=\ref[A.message]'>Reply</A></td>"
html += "<td>N/A</td>"
else
html += "<td>N/A</td>"
html += "<td><A align='right' href='?src=\ref[src];AdminFaxView=\ref[A.reply_to]'>Original</A></td>"
html += "</tr>"
html += "<td><A align='right' href='?src=\ref[src];AdminFaxView=\ref[A.reply_to]'>Original</A></td>"
html += "</tr>"
html += "</table>"
html += "</div>"
@@ -78,11 +78,10 @@ var/list/adminfaxes = list()
else
html += "<td>Unknown</td>"
html += "<td><A align='right' href='?src=\ref[src];AdminFaxView=\ref[F.message]'>View</A></td>"
html += "</tr>"
html += "</tr>"
html += "</table>"
html += "</div>"
var/datum/browser/popup = new(user, "fax_panel", "Fax Panel", 950, 450)
popup.set_content(html)
popup.open()
+11 -10
View File
@@ -130,8 +130,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
files.known_tech=files.possible_tech
for(var/datum/tech/KT in files.known_tech)
if(KT.level < KT.max_level)
KT.level=KT.max_level
KT.level=KT.max_level
/obj/machinery/computer/rdconsole/New()
..()
files = new /datum/research(src) //Setup the research data holder.
@@ -250,11 +250,12 @@ won't update every console in existence) but it's more of a hassle to do. Also,
linked_destroy.loaded_item = null
linked_destroy.icon_state = "d_analyzer"
screen = 2.1
else if(href_list["maxresearch"]) //Eject the item inside the destructive analyzer.
if(!usr.client.holder) return
if(usr.client.holder & R_MENTOR) return
screen = 0.0
if(alert("Are you sure you want to maximize research levels?","Confirmation","Yes","No")=="No")
if(alert("Are you sure you want to maximize research levels?","Confirmation","Yes","No")=="No")
return
log_admin("[key_name(usr)] has maximized the research levels.")
message_admins("[key_name_admin(usr)] has maximized the research levels.")
@@ -262,7 +263,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
Maximize()
screen = 1.0
updateUsrDialog()
griefProtection() //Update centcomm too
griefProtection() //Update centcomm too
else if(href_list["deconstruct"]) //Deconstruct the item in the destructive analyzer and update the research holder.
if(linked_destroy)
@@ -593,7 +594,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
spawn(20)
screen = 1.6
updateUsrDialog()
else if(href_list["search"]) //Search for designs with name matching pattern
var/compare
@@ -611,7 +612,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
continue
if(findtext(D.name,href_list["to_search"]))
matching_designs.Add(D)
updateUsrDialog()
return
@@ -873,7 +874,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += " | <span class='bad'>LOCKED</span>"
dat += "<BR>"
dat += "</div>"
if(3.17) //Display search result
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
dat += "<A href='?src=\ref[src];menu=3.1'>Protolathe Menu</A>"
@@ -981,7 +982,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "<h3>Circuit Imprinter Menu:</h3><BR>"
dat += "Material Amount: [linked_imprinter.TotalMaterials()]<BR>"
dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]<HR>"
dat += "<form name='search' action='?src=\ref[src]'> \
<input type='hidden' name='src' value='\ref[src]'> \
<input type='hidden' name='search' value='to_search'> \
@@ -1019,7 +1020,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(D.locked)
dat += " | <span class='bad'>LOCKED</span>"
dat += "</div>"
if(4.17)
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
dat += "<A href='?src=\ref[src];menu=4.1'>Circuit Imprinter Menu</A>"