/datum/admins/proc/player_panel_new()//The new one if (!check_rights_for(usr.client, R_HOLDER)) return var/ui_scale = owner.prefs.read_preference(/datum/preference/toggle/ui_scale) var/dat = "Admin Player Panel" //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 += {"
"} + span_giant(span_bold("Player panel")) + {"
Hover over a line to see more information - Check antagonists

"} + span_bold("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 = is_special_character(M) var/M_job = "" if(isliving(M)) if(iscarbon(M)) //Carbon stuff if(ishuman(M)) M_job = M.job else if(isslime(M)) M_job = JOB_SLIME else if(issmall(M)) M_job = JOB_MONKEY else if(isalien(M)) M_job = JOB_ALIEN else M_job = JOB_CARBON_BASED else if(issilicon(M)) //silicon if(isAI(M)) M_job = JOB_AI else if(ispAI(M)) M_job = JOB_PAI else if(isrobot(M)) M_job = JOB_CYBORG else M_job = JOB_SILICON_BASED else if(isanimal(M)) //simple animals if(iscorgi(M)) M_job = JOB_CORGI else M_job = JOB_ANIMAL else M_job = JOB_LIVING else if(isnewplayer(M)) M_job = JOB_NEW_PLAYER else if(isobserver(M)) M_job = JOB_GHOST M_job = replacetext(M_job, "'", "") M_job = replacetext(M_job, "\"", "") M_job = replacetext(M_job, "\\", "") var/M_name = M.name M_name = replacetext(M_name, "'", "") M_name = replacetext(M_name, "\"", "") M_name = replacetext(M_name, "\\", "") var/M_rname = M.real_name M_rname = replacetext(M_rname, "'", "") M_rname = replacetext(M_rname, "\"", "") M_rname = replacetext(M_rname, "\\", "") var/M_key = M.key M_key = replacetext(M_key, "'", "") M_key = replacetext(M_key, "\"", "") M_key = replacetext(M_key, "\\", "") //output for each mob dat += {" "} i++ //player table ending dat += {"
"} + span_bold("[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]") //The old one /datum/admins/proc/player_panel_old() if (!check_rights_for(usr.client, R_HOLDER)) return var/dat = "Player Menu" dat += "" + span_bold("") //add to this if wanting to add back in IP checking //add if you want to know their ip to the lists below var/list/mobs = sort_mobs() for(var/mob/M in mobs) if(!M.ckey) continue dat += "" if(isAI(M)) dat += "" else if(isrobot(M)) dat += "" else if(ishuman(M)) dat += "" else if(ispAI(M)) dat += "" else if(isnewplayer(M)) dat += "" else if(isobserver(M)) dat += "" else if(issmall(M)) dat += "" else if(isalien(M)) dat += "" else dat += "" if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.mind && H.mind.assigned_role) dat += "" else dat += "" dat += {" "} if(usr.client) switch(is_special_character(M)) if(0) dat += {""} if(1) dat += {""} if(2) dat += {""} else dat += {""} dat += "
NameReal NameAssigned JobKeyOptionsPMTraitor?
IP:(IP: [M.lastKnownIP])
[M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienUnknown[H.mind.assigned_role]NA[M.key ? (M.client ? M.key : "[M.key] (DC)") : "No key"] X PMTraitor?"} + span_red("Traitor?") + {""} + span_red(span_bold("Traitor?")) + {" N/A
" usr << browse(dat, "window=players;size=640x480") /datum/admins/proc/check_antagonists() if (SSticker && SSticker.current_state >= GAME_STATE_PLAYING) var/dat = "Round Status

" + span_bold("Round Status") + "

" dat += "Current Game Mode: " + span_bold("[SSticker.mode.name]") + "
" dat += "Round Duration: " + span_bold("[roundduration2text()]") + "
" dat += span_bold("Emergency shuttle") + "
" if (!emergency_shuttle.online()) dat += "Call Shuttle
" else if (emergency_shuttle.wait_for_launch) var/timeleft = emergency_shuttle.estimate_launch_time() dat += "ETL: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" else if (emergency_shuttle.shuttle.has_arrive_time()) var/timeleft = emergency_shuttle.estimate_arrival_time() dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" dat += "Send Back
" if (emergency_shuttle.shuttle.moving_status == SHUTTLE_WARMUP) dat += "Launching now..." dat += "[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]
" dat += "
" for(var/antag_type in GLOB.all_antag_types) var/datum/antagonist/A = GLOB.all_antag_types[antag_type] dat += A.get_check_antag_output(src) dat += "" usr << browse(dat, "window=roundstatus;size=400x500") else tgui_alert_async(usr, "The game hasn't started yet!")