/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)