/datum/admins/proc/player_panel_new()//The new one if(!check_rights()) return var/dat = "Player Panel" //javascript, the part that does most of the work~ dat += {" "} //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 = sortmobs() 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(ismonkey(M)) M_job = "Monkey" else if(isalien(M)) //aliens if(islarva(M)) M_job = "Alien larva" else M_job = "Alien" else M_job = "Carbon-based" else if(issilicon(M)) //silicon if(isAI(M)) M_job = "AI" else if(ispAI(M)) M_job = "pAI" else if(isrobot(M)) M_job = "Cyborg" else M_job = "Silicon-based" else if(isanimal(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(istype(M,/mob/new_player)) 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_name = html_encode(M.name) var/M_rname = html_encode(M.real_name) var/M_key = html_encode(M.key) //output for each mob dat += {" "} i++ //player table ending dat += {"
[M_name] - [M_rname] - [M_key] ([M_job])
"} usr << browse(dat, "window=players;size=600x480") /datum/admins/proc/check_antagonists() if (ticker && ticker.current_state >= GAME_STATE_PLAYING) var/dat = "Round Status

Round Status

" if(ticker.mode.replacementmode) dat += "Former Game Mode: [ticker.mode.name]
" dat += "Replacement Game Mode: [ticker.mode.replacementmode.name]
" else dat += "Current Game Mode: [ticker.mode.name]
" dat += "Round Duration: [round(world.time / 36000)]:[add_zero("[world.time / 600 % 60]", 2)]:[world.time / 100 % 6][world.time / 100 % 10]
" dat += "Emergency shuttle
" if(SSshuttle.emergency.mode < SHUTTLE_CALL) dat += "Call Shuttle
" else var/timeleft = SSshuttle.emergency.timeLeft() if(SSshuttle.emergency.mode < SHUTTLE_DOCKED) dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" dat += "Send Back
" else dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" dat += "Continuous Round Status
" dat += "[config.continuous[ticker.mode.config_tag] ? "Continue if antagonists die" : "End on antagonist death"]" if(config.continuous[ticker.mode.config_tag]) dat += ", [config.midround_antag[ticker.mode.config_tag] ? "creating replacement antagonists" : "not creating new antagonists"]
" else dat += "
" if(config.midround_antag[ticker.mode.config_tag]) dat += "Time limit: [config.midround_antag_time_check] minutes into round
" dat += "Living crew limit: [config.midround_antag_life_check * 100]% of crew alive
" dat += "If limits past: [ticker.mode.round_ends_with_antag_death ? "End The Round" : "Continue As Extended"]
" dat += "
" dat += "End Round Now
" dat += "[ticker.delay_end ? "End Round Normally" : "Delay Round End"]
" if(ticker.mode.syndicates.len) dat += "
" for(var/datum/mind/N in ticker.mode.syndicates) var/mob/M = N.current if(M) dat += "" dat += "" else dat += "" dat += "
Syndicates
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
Nuclear Operative not found!

" for(var/obj/item/weapon/disk/nuclear/N in world) dat += "" dat += "
Nuclear Disk(s)
[N.name], " var/atom/disk_loc = N.loc while(!istype(disk_loc, /turf)) if(istype(disk_loc, /mob)) var/mob/M = disk_loc dat += "carried by [M.real_name] " if(istype(disk_loc, /obj)) var/obj/O = disk_loc dat += "in \a [O.name] " disk_loc = disk_loc.loc dat += "in [disk_loc.loc] at ([disk_loc.x], [disk_loc.y], [disk_loc.z])
" if(ticker.mode.head_revolutionaries.len || ticker.mode.revolutionaries.len) dat += "
" for(var/datum/mind/N in ticker.mode.head_revolutionaries) var/mob/M = N.current if(!M) dat += "" else dat += "" dat += "" for(var/datum/mind/N in ticker.mode.revolutionaries) var/mob/M = N.current if(M) dat += "" dat += "" dat += "
Revolutionaries
Head Revolutionary not found!
[M.real_name] (Leader)[M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
" for(var/datum/mind/N in ticker.mode.get_living_heads()) var/mob/M = N.current if(M) dat += "" dat += "" var/turf/mob_loc = get_turf(M) dat += "" else dat += "" dat += "
Target(s)Location
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM[mob_loc.loc]
Head not found!
" for(var/datum/gang/G in ticker.mode.gangs) dat += "
" for(var/datum/mind/N in G.bosses) var/mob/M = N.current if(!M) dat += "" else dat += "" dat += "" for(var/datum/mind/N in G.gangsters) var/mob/M = N.current if(M) dat += "" dat += "" dat += "
[G.name] Gang: [G.points] Influence | [round((G.territory.len/start_state.num_territories)*100, 1)]% Control
Gang Boss not found!
[M.real_name] (Boss)[M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
" if(ticker.mode.changelings.len > 0) dat += "
" for(var/datum/mind/changeling in ticker.mode.changelings) var/mob/M = changeling.current if(M) dat += "" dat += "" dat += "" else dat += "" dat += "
Changelings
[M.mind.changeling.changelingID] as [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Changeling not found!
" if(ticker.mode.wizards.len > 0) dat += "
" for(var/datum/mind/wizard in ticker.mode.wizards) var/mob/M = wizard.current if(M) dat += "" dat += "" dat += "" else dat += "" dat += "
Wizards
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Wizard not found!
" if(ticker.mode.cult.len) dat += "
" for(var/datum/mind/N in ticker.mode.cult) var/mob/M = N.current if(M) dat += "" dat += "" dat += "
Cultists
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
" if(ticker.mode.traitors.len > 0) dat += "
" for(var/datum/mind/traitor in ticker.mode.traitors) var/mob/M = traitor.current if(M) dat += "" dat += "" dat += "" else dat += "" dat += "
Traitors
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Traitor not found!
" if(ticker.mode.shadows.len) dat += "
" for(var/datum/mind/N in ticker.mode.shadows) var/mob/M = N.current if(M) dat += "" dat += "" dat += "
Shadowlings
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
" if(ticker.mode.thralls.len) dat += "
" for(var/datum/mind/N in ticker.mode.thralls) var/mob/M = N.current if(M) dat += "" dat += "" dat += "
Shadowling Thralls
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
" if(ticker.mode.abductors.len) dat += "
" for(var/datum/mind/abductor in ticker.mode.abductors) var/mob/M = abductor.current if(M) dat += "" dat += "" dat += "" else dat += "" dat += "
Abductors
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Abductor not found!
" dat += "
" for(var/obj/machinery/abductor/experiment/E in machines) for(var/datum/mind/abductee in E.abductee_minds) var/mob/M = abductee.current if(M) dat += "" dat += "" dat += "" else dat += "" dat += "
Abductees
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Abductee not found!
" if(istype(ticker.mode, /datum/game_mode/blob)) var/datum/game_mode/blob/mode = ticker.mode dat += "
" dat += "" for(var/datum/mind/blob in mode.infected_crew) var/mob/M = blob.current if(M) dat += "" dat += "" else dat += "" dat += "
Blob
Progress: [blobs.len]/[mode.blobwincount]
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
Blob not found!
" if(istype(ticker.mode, /datum/game_mode/monkey)) var/datum/game_mode/monkey/mode = ticker.mode dat += "
" for(var/datum/mind/eek in mode.ape_infectees) var/mob/M = eek.current if(M) dat += "" dat += "" else dat += "" dat += "
Monkey
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
Monkey not found!
" dat += "" usr << browse(dat, "window=roundstatus;size=420x500") else alert("The game hasn't started yet!")