diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm
index a5ce1f7b792..1608a81a748 100644
--- a/code/game/verbs/who.dm
+++ b/code/game/verbs/who.dm
@@ -46,11 +46,12 @@
set category = "Admin"
set name = "Adminwho"
- var/msg = "Current Admins:\n"
+ var/msg = ""
var/num_mods_online = 0
+ var/num_admins_online = 0
if(holder)
for(var/client/C in admins)
- if(C.holder.rank != "Moderator")
+ if(R_ADMIN & C.holder.rights || !(R_MOD & C.holder.rights))
msg += "\t[C] is a [C.holder.rank]"
if(C.holder.fakekey)
@@ -66,16 +67,20 @@
if(C.is_afk())
msg += " (AFK)"
msg += "\n"
+
+ num_admins_online++
else
num_mods_online++
else
for(var/client/C in admins)
- if(C.holder.rank != "Moderator")
+ if(R_ADMIN & C.holder.rights || !(R_MOD & C.holder.rights))
if(!C.holder.fakekey)
msg += "\t[C] is a [C.holder.rank]\n"
+ num_admins_online++
else
num_mods_online++
+ msg = "Current Admins ([num_admins_online]):\n" + msg
msg += "There are also [num_mods_online] moderators online. To view online moderators, type 'modwho'\n"
src << msg
@@ -83,11 +88,14 @@
set category = "Admin"
set name = "Modwho"
- var/msg = "Current Moderators:\n"
+ var/msg = ""
var/num_admins_online = 0
+ var/num_mods_online = 0
if(holder)
for(var/client/C in admins)
- if(C.holder.rank == "Moderator")
+ if(R_ADMIN & C.holder.rights || !(R_MOD & C.holder.rights))
+ num_admins_online++
+ else
msg += "\t[C] is a [C.holder.rank]"
if(isobserver(C.mob))
@@ -100,14 +108,14 @@
if(C.is_afk())
msg += " (AFK)"
msg += "\n"
- else
- num_admins_online++
+ num_mods_online++
else
for(var/client/C in admins)
- if(C.holder.rank == "Moderator")
- msg += "\t[C] is a [C.holder.rank]\n"
- else
+ if(R_ADMIN & C.holder.rights || !(R_MOD & C.holder.rights))
num_admins_online++
+ else
+ msg += "\t[C] is a [C.holder.rank]\n"
+ msg = "Current Moderators ([num_mods_online]):\n" + msg
msg += "There are also [num_admins_online] admins online. To view online admins, type 'adminwho'\n"
src << msg