/datum/admins/proc/player_panel_new()//The new one if(!check_rights()) return log_admin("[key_name(usr)] checked the player panel.") var/dat = "Player Panel" var/ui_scale = owner.prefs.read_preference(/datum/preference/toggle/ui_scale) //javascript, the part that does most of the work~ dat += {" [!ui_scale && owner.window_scaling ? "" : ""] "} //body tag start + onload and onkeypress (onkeyup) javascript event calls dat += "" //title + search bar dat += {"
Player panel
Hover over a line to see more information - Check antagonists - Kick everyone/AFKers in lobby

Search:
"} //player table header dat += {" "} var/list/mobs = sort_mobs() var/i = 1 for(var/mob/M in mobs) if(M.ckey) var/color = "#e6e6e6" if(i%2 == 0) color = "#f2f2f2" var/is_antagonist = M.is_antag(NONE) var/M_job = "" if(isliving(M)) if(iscarbon(M)) //Carbon stuff if(ishuman(M) && M.job) M_job = M.job else if(ismonkey(M)) M_job = "Monkey" else if(isalien(M)) //aliens if(islarva(M)) M_job = "Alien larva" else M_job = ROLE_ALIEN else M_job = "Carbon-based" else if(issilicon(M)) //silicon if(isAI(M)) M_job = "AI" else if(ispAI(M)) M_job = ROLE_PAI else if(iscyborg(M)) M_job = "Cyborg" else M_job = "Silicon-based" else if(isanimal_or_basicmob(M)) //simple animals if(iscorgi(M)) M_job = "Corgi" else if(isslime(M)) M_job = "slime" else M_job = "Animal" else M_job = "Living" else if(isnewplayer(M)) M_job = "New player" else if(isobserver(M)) var/mob/dead/observer/O = M if(O.started_as_observer)//Did they get BTFO or are they just not trying? M_job = "Observer" else M_job = "Ghost" var/M_key = html_encode(M.key) var/M_ip_address = isnull(M.lastKnownIP) ? "+localhost+" : M.lastKnownIP var/M_name = html_encode(M.name) var/M_rname = html_encode(M.real_name) var/M_rname_as_key = html_encode(ckey(M.real_name)) // so you can ignore punctuation if(M_rname == M_rname_as_key) M_rname_as_key = null var/previous_names_string = "" if(M.persistent_client) previous_names_string = M.persistent_client.get_played_names() //output for each mob dat += {" "} i++ //player table ending dat += {"
[M_name] - [M_rname] - [M_key] ([M_job])
"} var/window_size = "size=600x480" if(owner.window_scaling && ui_scale) window_size = "size=[600 * owner.window_scaling]x[400 * owner.window_scaling]" usr << browse(dat, "window=players;[window_size]")