/client/verb/who_advanced()
set name = "Advanced Who"
set category = "OOC"
var/msg = "Current Players:\n"
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"
else
entry += " - DEAD"
var/age
if(isnum(C.player_age))
age = C.player_age
else
age = 0
if(age <= 1)
age = "[age]"
else if(age < 10)
age = "[age]"
entry += " - [age]"
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)
var/entry = "\t"
if(C.holder && C.holder.fakekey)
entry += "[C.holder.fakekey]"
else
entry += "[C.key]"
var/mob/observer/dead/O = C.mob
if(isobserver(O))
entry += " - Observing"
else if(istype(O,/mob/new_player))
entry += " - In Lobby"
else
entry += " - Playing"
Lines += entry
for(var/line in sortList(Lines))
msg += "[line]\n"
msg += "Total Players: [length(Lines)]"
to_chat(src, msg)