Files
GS13NG/modular_citadel/code/modules/client/verbs/who.dm
2018-12-21 19:08:53 -08:00

132 lines
3.7 KiB
Plaintext

/client/verb/mentorwho()
set category = "Mentor"
set name = "Mentorwho"
var/msg = "<b>Current Mentors:</b>\n"
for(var/X in GLOB.mentors)
var/client/C = X
if(!C)
GLOB.mentors -= C
continue // weird runtime that happens randomly
var/suffix = ""
if(holder)
if(isobserver(C.mob))
suffix += " - Observing"
else if(istype(C.mob,/mob/dead/new_player))
suffix += " - Lobby"
else
suffix += " - Playing"
if(C.is_afk())
suffix += " (AFK)"
msg += "\t[C][suffix]\n"
to_chat(src, msg)
/client/verb/who()
set name = "Who"
set category = "OOC"
var/msg = ""
var/list/Lines = list()
var/list/assembled = list()
var/admin_mode = check_rights_for(src, R_ADMIN) && isobserver(mob)
if(admin_mode)
log_admin("[key_name(usr)] checked advanced who in-round")
if(length(GLOB.admins))
Lines += "<b>Admins:</b>"
for(var/X in GLOB.admins)
var/client/C = X
if(C && C.holder && !C.holder.fakekey)
assembled += "\t <font color='#FF0000'>[C.key]</font>[admin_mode? "[show_admin_info(C)]":""] ([round(C.avgping, 1)]ms)"
Lines += sortList(assembled)
assembled.len = 0
if(length(GLOB.mentors))
Lines += "<b>Mentors:</b>"
for(var/X in GLOB.mentors)
var/client/C = X
if(C && (!C.holder || (C.holder && !C.holder.fakekey))) //>using stuff this complex instead of just using if/else lmao
assembled += "\t <font color='#0033CC'>[C.key]</font>[admin_mode? "[show_admin_info(C)]":""] ([round(C.avgping, 1)]ms)"
Lines += sortList(assembled)
assembled.len = 0
Lines += "<b>Players:</b>"
for(var/X in sortList(GLOB.clients))
var/client/C = X
if(!C)
continue
var/key = C.key
if(C.holder && C.holder.fakekey)
key = C.holder.fakekey
assembled += "\t [key][admin_mode? "[show_admin_info(C)]":""] ([round(C.avgping, 1)]ms)"
Lines += sortList(assembled)
for(var/line in Lines)
msg += "[line]\n"
msg += "<b>Total Players: [length(GLOB.clients)]</b>"
to_chat(src, msg)
/client/proc/show_admin_info(var/client/C)
if(!C)
return ""
var/entry = ""
if(C.holder && C.holder.fakekey)
entry += " <i>(as [C.holder.fakekey])</i>"
if (isnewplayer(C.mob))
entry += " - <font color='darkgray'><b>In Lobby</b></font>"
else
entry += " - Playing as [C.mob.real_name]"
switch(C.mob.stat)
if(UNCONSCIOUS)
entry += " - <font color='darkgray'><b>Unconscious</b></font>"
if(DEAD)
if(isobserver(C.mob))
var/mob/dead/observer/O = C.mob
if(O.started_as_observer)
entry += " - <font color='gray'>Observing</font>"
else
entry += " - <font color='black'><b>DEAD</b></font>"
else
entry += " - <font color='black'><b>DEAD</b></font>"
if(is_special_character(C.mob))
entry += " - <b><font color='red'>Antagonist</font></b>"
entry += " (<A HREF='?_src_=holder;[HrefToken()];adminmoreinfo=\ref[C.mob]'>?</A>)"
return entry
/client/verb/adminwho()
set category = "Admin"
set name = "Adminwho"
var/msg = "<b>Current Admins:</b>\n"
if(check_rights_for(src, R_ADMIN))
for(var/X in GLOB.admins)
var/client/C = X
if(!check_rights_for(C, R_ADMIN))
continue
msg += "\t[C] is a [C.holder.rank]"
if(C.holder.fakekey)
msg += " <i>(as [C.holder.fakekey])</i>"
if(isobserver(C.mob))
msg += " - Observing"
else if(isnewplayer(C.mob))
msg += " - Lobby"
else
msg += " - Playing"
if(C.is_afk())
msg += " (AFK)"
msg += "\n"
else
for(var/X in GLOB.admins)
var/client/C = X
if(!check_rights_for(C, R_ADMIN))
continue
if(C.is_afk())
continue //Don't show afk admins to adminwho
if(!C.holder.fakekey)
msg += "\t[C] is a [C.holder.rank]\n"
msg += "<span class='info'>Adminhelps are also sent to Discord. If no admins are available in game adminhelp anyways and an admin on Discord will see it and respond.</span>"
to_chat(src, msg)