diff --git a/modular_citadel/code/modules/client/verbs/who.dm b/modular_citadel/code/modules/client/verbs/who.dm
index 091dd7bf79..8000e80f84 100644
--- a/modular_citadel/code/modules/client/verbs/who.dm
+++ b/modular_citadel/code/modules/client/verbs/who.dm
@@ -28,28 +28,37 @@
var/msg = ""
var/list/Lines = list()
+ var/list/assembled = list()
+ var/admin_mode = check_rights_for(src, R_ADMIN) && isobserver(mob)
+ if(admin_mode)
+ log_admin("[key_name(usr)] checked advanced who in-round")
if(length(GLOB.admins))
Lines += "Admins:"
for(var/X in GLOB.admins)
var/client/C = X
if(C && C.holder && !C.holder.fakekey)
- Lines += "\t [C.key][show_admin_info(C)] ([round(C.avgping, 1)]ms)"
+ assembled += "\t [C.key][admin_mode? "[show_admin_info(C)]":""] ([round(C.avgping, 1)]ms)"
+ Lines += sortList(assembled)
+ assembled.len = 0
if(length(GLOB.mentors))
- Lines += "Mentors:"
+ Lines += "Mentors:"https://github.com/Citadel-Station-13/Citadel-Station-13
for(var/X in GLOB.mentors)
var/client/C = X
- if(C)
- Lines += "\t [C.key][show_admin_info(C)] ([round(C.avgping, 1)]ms)"
-
+ if(C && (!C.holder || (C.holder && !C.holder.fakekey))) //>using stuff this complex instead of just using if/else lmao
+ assembled += "\t [C.key][admin_mode? "[show_admin_info(C)]":""] ([round(C.avgping, 1)]ms)"
+ Lines += sortList(assembled)
+ assembled.len = 0
Lines += "Players:"
for(var/X in sortList(GLOB.clients))
var/client/C = X
- if(!C) continue
+ if(!C)
+ continue
var/key = C.key
if(C.holder && C.holder.fakekey)
key = C.holder.fakekey
- Lines += "\t [key][show_admin_info(C)] ([round(C.avgping, 1)]ms)"
-
+ assembled += "\t [key][admin_mode? "[show_admin_info(C)]":""] ([round(C.avgping, 1)]ms)"
+ Lines += sortList(assembled)
+
for(var/line in Lines)
msg += "[line]\n"
@@ -60,9 +69,6 @@
if(!C)
return ""
- if(!check_rights_for(src, R_ADMIN))
- return ""
-
var/entry = ""
if(C.holder && C.holder.fakekey)
entry += " (as [C.holder.fakekey])"