Mentor permissions fixes and such.

Created a helper proc /proc/is_mentor(client) use this when determining if someone is a mentor and they aren't the usr of the proc (rights_check uses usr)

Mentors will no longer hear ghosts while playing
Mentors will no longer see orange text around names in check_player_age panel if they have special_roles
Mentors will no longer be able to tell players with special roles through the use of player_panel
Mentors will no longer be able to aghost, use antagHUD, then return to their bodies.
This commit is contained in:
Ccomp5950
2014-06-10 19:21:40 -05:00
parent f0a75407b8
commit 77c733b17c
7 changed files with 77 additions and 24 deletions

View File

@@ -1099,7 +1099,29 @@ var/global/floorIsLava = 0
if(istype(H))
H.regenerate_icons()
proc/get_options_bar(whom, detail = 2, name = 0, link = 1)
/*
helper proc to test if someone is a mentor or not. Got tired of writing this same check all over the place.
*/
/client/verb/check_mentor()
set category = "Admin"
set name = "Test ur shit"
set desc = "This shouldn't be here"
src << is_mentor()
/proc/is_mentor(client/C)
if(!istype(C))
return 0
if(!C.holder)
return 0
if(C.holder.rights == R_MENTOR)
return 1
return 0
/proc/get_options_bar(whom, detail = 2, name = 0, link = 1)
if(!whom)
return "<b>(*null*)</b>"
var/mob/M
@@ -1136,7 +1158,7 @@ proc/get_options_bar(whom, detail = 2, name = 0, link = 1)
var/admin_shuttle_location = 0 // 0 = centcom 13, 1 = station
proc/move_admin_shuttle()
/proc/move_admin_shuttle()
var/area/fromArea
var/area/toArea
if (admin_shuttle_location == 1)
@@ -1156,7 +1178,7 @@ proc/move_admin_shuttle()
var/ferry_location = 0 // 0 = centcom , 1 = station
proc/move_ferry()
/proc/move_ferry()
var/area/fromArea
var/area/toArea
if (ferry_location == 1)
@@ -1176,7 +1198,7 @@ proc/move_ferry()
var/alien_ship_location = 1 // 0 = base , 1 = mine
proc/move_alien_ship()
/proc/move_alien_ship()
var/area/fromArea
var/area/toArea
if (alien_ship_location == 1)

View File

@@ -360,9 +360,16 @@ var/list/admin_verbs_mentor = list(
if(istype(mob,/mob/dead/observer))
//re-enter
var/mob/dead/observer/ghost = mob
ghost.can_reenter_corpse = 1 //just in-case.
ghost.reenter_corpse()
if(!is_mentor(usr.client))
ghost.can_reenter_corpse = 1
if(ghost.can_reenter_corpse)
ghost.reenter_corpse()
else
ghost << "<font color='red'>Error: Aghost: Can't reenter corpse, mentors that use adminHUD while aghosting are not permitted to enter their corpse again</font>"
return
feedback_add_details("admin_verb","P") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else if(istype(mob,/mob/new_player))
src << "<font color='red'>Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.</font>"
else

View File

@@ -322,6 +322,7 @@
/datum/admins/proc/player_panel_old()
if (!usr.client.holder)
return
var/dat = "<html><head><title>Player Menu</title></head>"
dat += "<body><table border=1 cellspacing=5><B><tr><th>Name</th><th>Real Name</th><th>Assigned Job</th><th>Key</th><th>Options</th><th>PM</th><th>Traitor?</th></tr></B>"
//add <th>IP:</th> to this if wanting to add back in IP checking
@@ -364,13 +365,25 @@
<td align=center><A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>X</A></td>
<td align=center><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>
"}
switch(is_special_character(M))
if(0)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
if(1)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red>Traitor?</font></A></td>"}
if(2)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red><b>Traitor?</b></font></A></td>"}
if(usr.client)
var/client/C = usr.client
if(is_mentor(C))
dat += {"<td align=center> N/A </td>"}
else
switch(is_special_character(M))
if(0)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
if(1)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red>Traitor?</font></A></td>"}
if(2)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red><b>Traitor?</b></font></A></td>"}
else
dat += {"<td align=center> N/A </td>"}
dat += "</table></body></html>"

View File

@@ -80,12 +80,17 @@
var/missing_ages = 0
var/msg = ""
var/highlight_special_characters = 1
if(is_mentor(usr.client))
highlight_special_characters = 0
for(var/client/C in clients)
if(C.player_age == "Requires database")
missing_ages = 1
continue
if(C.player_age < age)
msg += "[key_name_admin(C)]: account is [C.player_age] days old<br>"
msg += "[key_name(C, 1, 1, highlight_special_characters)]: account is [C.player_age] days old<br>"
if(missing_ages)
src << "Some accounts did not have proper ages set in their clients. This function requires database to be present"