diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 9c3b69676e..850cb6d124 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -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) . += "/([name])" //Orange else . += "/([name])" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index be28f26ab3..d494e52391 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -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 "(*null*)" 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) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index b668c3fa33..21a3047ce3 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -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 << "Error: Aghost: Can't reenter corpse, mentors that use adminHUD while aghosting are not permitted to enter their corpse again" + 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 << "Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first." else diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 87ed478705..cbd3b2a047 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -322,6 +322,7 @@ /datum/admins/proc/player_panel_old() if (!usr.client.holder) return + var/dat = "Player Menu" dat += "" //add to this if wanting to add back in IP checking @@ -364,13 +365,25 @@ "} - switch(is_special_character(M)) - if(0) - dat += {""} - if(1) - dat += {""} - if(2) - dat += {""} + + + + if(usr.client) + var/client/C = usr.client + if(is_mentor(C)) + dat += {""} + else + switch(is_special_character(M)) + if(0) + dat += {""} + if(1) + dat += {""} + if(2) + dat += {""} + else + dat += {""} + + dat += "
NameReal NameAssigned JobKeyOptionsPMTraitor?
IP:X PMTraitor?Traitor?Traitor? N/A Traitor?Traitor?Traitor? N/A
" diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 26cc3a75aa..06e702bc17 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -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
" + msg += "[key_name(C, 1, 1, highlight_special_characters)]: account is [C.player_age] days old
" if(missing_ages) src << "Some accounts did not have proper ages set in their clients. This function requires database to be present" diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 3eacd36e32..df0edf4b1a 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -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 You have been banned from using this feature" 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 diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index b08279354b..b48bf4d310 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -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)