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"