mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
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:
@@ -493,7 +493,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
return -M
|
||||
|
||||
|
||||
/proc/key_name(var/whom, var/include_link = null, var/include_name = 1)
|
||||
/proc/key_name(var/whom, var/include_link = null, var/include_name = 1, var/highlight_special_characters = 1)
|
||||
var/mob/M
|
||||
var/client/C
|
||||
var/key
|
||||
@@ -538,7 +538,8 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
else if(M.name)
|
||||
name = M.name
|
||||
|
||||
if(include_link && is_special_character(M))
|
||||
|
||||
if(include_link && is_special_character(M) && highlight_special_characters)
|
||||
. += "/(<font color='#FFA500'>[name]</font>)" //Orange
|
||||
else
|
||||
. += "/([name])"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -257,20 +257,22 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set category = "Ghost"
|
||||
set name = "Toggle AntagHUD"
|
||||
set desc = "Toggles AntagHUD allowing you to see who is the antagonist"
|
||||
if(!config.antag_hud_allowed && !client.holder)
|
||||
|
||||
if(!client)
|
||||
return
|
||||
var/mentor = is_mentor(usr.client)
|
||||
if(!config.antag_hud_allowed && (!client.holder || mentor))
|
||||
src << "\red Admins have disabled this for this round."
|
||||
return
|
||||
if(!client)
|
||||
return
|
||||
var/mob/dead/observer/M = src
|
||||
if(jobban_isbanned(M, "AntagHUD"))
|
||||
src << "\red <B>You have been banned from using this feature</B>"
|
||||
return
|
||||
if(config.antag_hud_restricted && !M.has_enabled_antagHUD &&!client.holder)
|
||||
if(config.antag_hud_restricted && !M.has_enabled_antagHUD && (!client.holder || mentor))
|
||||
var/response = alert(src, "If you turn this on, you will not be able to take any part in the round.","Are you sure you want to turn this feature on?","Yes","No")
|
||||
if(response == "No") return
|
||||
M.can_reenter_corpse = 0
|
||||
if(!M.has_enabled_antagHUD && !client.holder)
|
||||
if(!M.has_enabled_antagHUD && (!client.holder || mentor))
|
||||
M.has_enabled_antagHUD = 1
|
||||
if(M.antagHUD)
|
||||
M.antagHUD = 0
|
||||
|
||||
@@ -58,11 +58,14 @@
|
||||
for(var/mob/M in player_list)
|
||||
if(istype(M, /mob/new_player))
|
||||
continue
|
||||
if(M.client && M.client.holder && (M.client.holder.rights & R_ADMIN|R_MOD) && (M.client.prefs.toggles & CHAT_DEAD)) // Show the message to admins/mods with deadchat toggled on
|
||||
if(M.client && M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD))
|
||||
M << rendered
|
||||
continue
|
||||
|
||||
if(M.client && M.client.holder && !is_mentor(M.client) && (M.client.prefs.toggles & CHAT_DEAD) ) // Show the message to admins/mods with deadchat toggled on
|
||||
M << rendered //Admins can hear deadchat, if they choose to, no matter if they're blind/deaf or not.
|
||||
|
||||
else if(M.client && M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // Show the message to regular ghosts with deadchat toggled on.
|
||||
M.show_message(rendered, 2) //Takes into account blindness and such.
|
||||
|
||||
return
|
||||
|
||||
/mob/proc/say_understands(var/mob/other,var/datum/language/speaking = null)
|
||||
|
||||
Reference in New Issue
Block a user