diff --git a/code/game/verbs/advanced_who.dm b/code/game/verbs/advanced_who.dm
index 9f067054f2..4498136b2b 100644
--- a/code/game/verbs/advanced_who.dm
+++ b/code/game/verbs/advanced_who.dm
@@ -7,24 +7,36 @@
var/list/Lines = list()
- if(holder && (R_ADMIN & holder.rights || R_MOD & holder.rights))
+ if(holder)
for(var/client/C in GLOB.clients)
- var/entry = "\t[C.key]"
+ var/entry = "
| [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"
+
+ entry += " | "
+
+ if(C.mob.real_name)
+ switch(C.mob.stat)
+ if(UNCONSCIOUS)
+ entry += "Unconscious" // these are literally all spans so I can apply .inverted to them because black on dark grey isn't legible
+
+ if(DEAD)
+ if(isobserver(C.mob))
+ var/mob/observer/dead/O = C.mob
+ if(O.started_as_observer)
+ entry += "Observing"
+ else
+ entry += "Died"
+
else
- entry += " - DEAD"
+ entry += "Playing"
+
+ entry += " as [C.mob.real_name]"
+
+ else if(isnewplayer(C.mob))
+ entry += "In lobby"
+
+ entry += " | "
var/age
if(isnum(C.player_age))
@@ -33,14 +45,20 @@
age = 0
if(age <= 1)
- age = "[age]"
+ age = "[age]"
else if(age < 10)
- age = "[age]"
+ age = "[age]"
- entry += " - [age]"
+ entry += "Age: [age]"
+ entry += " | "
if(is_special_character(C.mob))
- entry += " - Antagonist"
+ if(C.mob?.mind?.special_role)
+ entry += "[C.mob.mind.special_role]"
+ else
+ entry += "Antagonist"
+
+ entry += " | "
if(C.is_afk())
var/seconds = C.last_activity_seconds()
@@ -48,7 +66,9 @@
entry += "[round(seconds / 60)] minutes, "
entry += "[seconds % 60] seconds)"
+ entry += " | "
entry += " (?)"
+ entry += " |
"
Lines += entry
else
@@ -60,16 +80,17 @@
entry += "[C.key]"
var/mob/observer/dead/O = C.mob
if(isobserver(O))
- entry += " -