From 8b2dc21e4e006827645e2912aab5eccce9ceba79 Mon Sep 17 00:00:00 2001 From: Atermonera Date: Fri, 18 Jun 2021 10:32:47 -0700 Subject: [PATCH] Merge pull request #8143 from MarinaGryphon/more-linter Code fixes + refactors who/staffwho --- code/modules/client/verbs/who.dm | 234 ++++++++++--------------------- 1 file changed, 76 insertions(+), 158 deletions(-) diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm index 6c309a6566..81fee4e764 100644 --- a/code/modules/client/verbs/who.dm +++ b/code/modules/client/verbs/who.dm @@ -6,55 +6,46 @@ var/list/Lines = list() - if(holder && (R_ADMIN & holder.rights || R_MOD & holder.rights)) - for(var/client/C in GLOB.clients) - var/entry = "\t[C.key]" - if(C.holder && C.holder.fakekey) - entry += " (as [C.holder.fakekey])" - entry += " - Playing as [C.mob.real_name]" - switch(C.mob.stat) - if(UNCONSCIOUS) - entry += " - Unconscious" - if(DEAD) - if(isobserver(C.mob)) - var/mob/observer/dead/O = C.mob - if(O.started_as_observer) - entry += " - Observing" - else - entry += " - DEAD" + for(var/client/C in GLOB.clients) + if(!check_rights_for(src, R_ADMIN|R_MOD)) + Lines += "\t[C.holder?.fakekey || C.key]" + continue + var/entry = "\t[C.key]" + if(C.holder?.fakekey) + entry += " (as [C.holder.fakekey])" + entry += " - Playing as [C.mob.real_name]" + switch(C.mob.stat) + if(UNCONSCIOUS) + entry += " - Unconscious" + if(DEAD) + if(isobserver(C.mob)) + var/mob/observer/dead/O = C.mob + if(O.started_as_observer) + entry += " - Observing" else entry += " - DEAD" + else + entry += " - DEAD" - var/age - if(isnum(C.player_age)) - age = C.player_age - else - age = 0 + if(C.player_age != initial(C.player_age) && isnum(C.player_age)) // database is on + var/age = C.player_age + switch(age) + if(0 to 1) + age = "[age] days old" + if(1 to 10) + age = "[age] days old" + else + entry += " - [age] days old" - if(age <= 1) - age = "[age]" - else if(age < 10) - age = "[age]" + if(is_special_character(C.mob)) + entry += " - Antagonist" - entry += " - [age]" + if(C.is_afk()) + var/seconds = C.last_activity_seconds() + entry += " (AFK - [round(seconds / 60)] minutes, [seconds % 60] seconds)" - if(is_special_character(C.mob)) - entry += " - Antagonist" - - if(C.is_afk()) - var/seconds = C.last_activity_seconds() - entry += " (AFK - " - entry += "[round(seconds / 60)] minutes, " - entry += "[seconds % 60] seconds)" - - entry += " (?)" - Lines += entry - else - for(var/client/C in GLOB.clients) - if(C.holder && C.holder.fakekey) - Lines += C.holder.fakekey - else - Lines += C.key + entry += " (?)" + Lines += entry for(var/line in sortList(Lines)) msg += "[line]\n" @@ -66,11 +57,6 @@ set category = "Admin" set name = "Staffwho" - var/message = get_staffwho_message(holder) - to_chat(src, message) - -// VOREStation Edit - This whole proc has various vorestation edits throughout. Practically every other line. -/proc/get_staffwho_message(datum/admins/holder) var/msg = "" var/modmsg = "" var/devmsg = "" @@ -79,117 +65,50 @@ var/num_admins_online = 0 var/num_devs_online = 0 var/num_event_managers_online = 0 - - if(holder) - for(var/client/C in GLOB.admins) - if(R_ADMIN & C.holder.rights && R_BAN & C.holder.rights) - - if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights))) //Event Managerss can't see stealthmins - continue - - msg += "\t[C] is a [C.holder.rank]" - - if(C.holder.fakekey) - msg += " (as [C.holder.fakekey])" - - if(isobserver(C.mob)) - msg += " - Observing" - else if(istype(C.mob,/mob/new_player)) - msg += " - Lobby" - else - msg += " - Playing" - - if(C.is_afk()) - var/seconds = C.last_activity_seconds() - msg += " (AFK - " - msg += "[round(seconds / 60)] minutes, " - msg += "[seconds % 60] seconds)" - msg += "\n" - - num_admins_online++ - else if(R_ADMIN & C.holder.rights && !(R_SERVER & C.holder.rights)) - modmsg += "\t[C] is a [C.holder.rank]" - - if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights))) - continue - if(C.holder.fakekey) - msg += " (as [C.holder.fakekey])" - - if(isobserver(C.mob)) - modmsg += " - Observing" - else if(istype(C.mob,/mob/new_player)) - modmsg += " - Lobby" - else - modmsg += " - Playing" - - if(C.is_afk()) - var/seconds = C.last_activity_seconds() - modmsg += " (AFK - " - modmsg += "[round(seconds / 60)] minutes, " - modmsg += "[seconds % 60] seconds)" - modmsg += "\n" - num_mods_online++ - - else if(R_SERVER & C.holder.rights) - if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights))) - continue - devmsg += "\t[C] is a [C.holder.rank]" - if(C.holder.fakekey) - devmsg += " (as [C.holder.fakekey])" - if(isobserver(C.mob)) - devmsg += " - Observing" - else if(istype(C.mob,/mob/new_player)) - devmsg += " - Lobby" - else - devmsg += " - Playing" - - if(C.is_afk()) - var/seconds = C.last_activity_seconds() - devmsg += "(AFK - " - devmsg += "[round(seconds / 60)] minutes, " - devmsg += "[seconds % 60] seconds)" - devmsg += "\n" - num_devs_online++ + for(var/client/C in GLOB.admins) // VOREStation Edit - GLOB + var/temp = "" + var/category = R_ADMIN + // VOREStation Edit - Apply stealthmin protection to all levels + if(C.holder.fakekey && check_rights(R_ADMIN|R_MOD, FALSE, src)) // Only admins and mods can see stealthmins + continue + // VOREStation Edit End + if(check_rights(R_ADMIN, FALSE, C)) // admins + num_admins_online++ + else if(check_rights(R_MOD, FALSE, C)) // mods + category = R_MOD + num_mods_online++ + else if(check_rights(R_SERVER, FALSE, C)) // developers + category = R_SERVER + num_devs_online++ + else if(check_rights(R_EVENT, FALSE, C)) // event managers + category = R_EVENT + num_event_managers_online++ + + temp += "\t[C] is a [C.holder.rank]" + if(holder) + if(C.holder.fakekey) + temp += " (as [C.holder.fakekey])" + if(isobserver(C.mob)) + temp += " - Observing" + else if(istype(C.mob,/mob/new_player)) + temp += " - Lobby" else - if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights))) - continue - eventMmsg += "\t[C] is a [C.holder.rank]" - if(C.holder.fakekey) - eventMmsg += " (as [C.holder.fakekey])" - if(isobserver(C.mob)) - eventMmsg += " - Observing" - else if(istype(C.mob,/mob/new_player)) - eventMmsg += " - Lobby" - else - eventMmsg += " - Playing" + temp += " - Playing" - if(C.is_afk()) - var/seconds = C.last_activity_seconds() - eventMmsg += " (AFK - " - eventMmsg += "[round(seconds / 60)] minutes, " - eventMmsg += "[seconds % 60] seconds)" - eventMmsg += "\n" - num_event_managers_online++ - - else - for(var/client/C in GLOB.admins) - if(R_ADMIN & C.holder.rights && R_BAN & C.holder.rights) - if(!C.holder.fakekey) - msg += "\t[C] is a [C.holder.rank]\n" - num_admins_online++ - else if(R_ADMIN & C.holder.rights && !(R_SERVER & C.holder.rights)) - if(!C.holder.fakekey) - modmsg += "\t[C] is a [C.holder.rank]\n" - num_mods_online++ - else if(R_SERVER & C.holder.rights) - if(!C.holder.fakekey) - devmsg += "\t[C] is a [C.holder.rank]\n" - num_devs_online++ - else - if(!C.holder.fakekey) - eventMmsg += "\t[C] is a [C.holder.rank]\n" - num_event_managers_online++ + if(C.is_afk()) + var/seconds = C.last_activity_seconds() + temp += " (AFK - [round(seconds / 60)] minutes, [seconds % 60] seconds)" + temp += "\n" + switch(category) + if(R_ADMIN) + msg += temp + if(R_MOD) + modmsg += temp + if(R_SERVER) + devmsg += temp + if(R_EVENT) + eventMmsg += temp msg = "Current Admins ([num_admins_online]):\n" + msg @@ -204,5 +123,4 @@ msg += "\nAdminhelps are also sent to Discord. If no admins are available in game try anyway and an admin on Discord may see it and respond." - return msg - + to_chat(src, msg)