From e148daf36f214fd90b74cabf3b7b1bb9d31ab7df Mon Sep 17 00:00:00 2001 From: Cameron653 Date: Mon, 23 May 2016 20:51:51 -0400 Subject: [PATCH] Adds in an "Advanced who" Adds in an "Advanced who" which lets normal players see if someone is observing/in the lobby/playing. --- code/game/verbs/advanced_who_vr.dm | 86 ++++++++++++++++++++++++++++++ vorestation.dme | 1 + 2 files changed, 87 insertions(+) create mode 100644 code/game/verbs/advanced_who_vr.dm diff --git a/code/game/verbs/advanced_who_vr.dm b/code/game/verbs/advanced_who_vr.dm new file mode 100644 index 0000000000..0bc0d13b57 --- /dev/null +++ b/code/game/verbs/advanced_who_vr.dm @@ -0,0 +1,86 @@ + +/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 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 += " (?)" + if(C.is_afk()) + var/seconds = C.last_activity_seconds() + entry += " (AFK - " + entry += "[round(seconds / 60)] minutes, " + entry += "[seconds % 60] seconds)" //Let's go into the seconds, why not? + Lines += entry + else + for(var/client/C in clients) + if(C.holder && C.holder.fakekey) + var/entry = "\t[C.key]" + var/mob/observer/dead/O = C.mob + entry += C.holder.fakekey + if(isobserver(O)) + entry += " - Observing" + else if(istype(O,/mob/new_player)) + entry += " - In Lobby" + else + entry += " - Playing" + Lines += entry + else + var/entry = "\t[C.key]" + var/mob/observer/dead/O = C.mob + if(isobserver(O)) //Woo, players can see + 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)]" + src << msg diff --git a/vorestation.dme b/vorestation.dme index 219d456797..859c3cf697 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -889,6 +889,7 @@ #include "code\game\turfs\unsimulated\beach.dm" #include "code\game\turfs\unsimulated\floor.dm" #include "code\game\turfs\unsimulated\walls.dm" +#include "code\game\verbs\advanced_who_vr.dm" #include "code\game\verbs\ignore.dm" #include "code\game\verbs\ooc.dm" #include "code\game\verbs\suicide.dm"