/obj/admins/proc/player_panel_new()//The new one if (!usr.client.holder) return var/dat = "Player Menu" dat += "" //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 = get_sorted_mobs() var/i = 1 for(var/mob/M in mobs) if(M.ckey) var/color = "#e6e6e6" i++ if(i%2 == 0) color = "#f2f2f2" var/real = (M.real_name == M.original_name ? "[M.name]/[M.real_name]" : "[M.original_name] (as [M.name]/[M.real_name])") var/turf/T = get_turf(M) var/client_key = (M.key? M.key : "No key") dat += "" // Adds current name if(isobserver(M)) dat += "" else if(isalien(M)) dat += "" else if(islarva(M)) dat += "" else if(istajaran(M)) dat += "" else if(ishuman(M)) dat += "" else if(ismetroid(M)) dat += "" else if(ismonkey(M)) dat += "" else if(isAI(M)) dat += "" else if(ispAI(M)) dat += "" else if(isrobot(M)) dat += "" else if(isanimal(M)) dat += "" else if(iscorgi(M)) dat += "" else if(istype(M,/mob/new_player)) dat += "" else dat += "\black" if(M.mind && M.mind.assigned_role && istype(M, /mob/living/carbon/human)) // Adds a column to Player Panel that shows their current job. var/mob/living/carbon/human/H = M if (H.wear_id) var/obj/item/weapon/card/id/id if(istype(H.wear_id, /obj/item/device/pda)) var/obj/item/device/pda/PDA = H.wear_id if(!isnull(PDA.id)) // The PDA may contain no ID id = PDA.id // The ID is contained inside the PDA else id = H.wear_id // The ID was on the ID slot if(!id) // Happens when there's no ID in the PDA located on the wear_id slot dat += "" else if(isnull(id.assignment)) // Preventing runtime errors blocking the player panel if(istype(id, /obj/item/weapon/card/id/syndicate)) dat += "" else usr << "ERROR: Inform the coders that an [id.name] was checked for its assignment variable, and it was null." dat += "" else if(M.mind.assigned_role == id.assignment) // Polymorph dat += "" else dat += "" else dat += "" var/muting = "Mute unavailable - no client" if(M.client) muting = {"Mute: [(M.client.muted ? "Muted" : "Voiced")] | Complete mute: [(M.client.muted ? "Completely Muted" : "Voiced")] "} dat += {" "} switch(is_special_character(M)) if(0) dat += {""} if(1) dat += {""} if(2) dat += {""} dat += "
Name/Real NameTypeAssigned JobInfoOptionsTraitor?
IP:(IP: [M.lastKnownIP])
[real]
[M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z])
GhostAlienAlien larvaTajaran[M.job]MetroidMonkeyAIpAICyborgAnimalCorgiNew Player\red ERROR[M.mind.assigned_role] (No ID)AntagonistERROR[M.mind.assigned_role][M.mind.assigned_role] ([id.assignment])" else dat += "[M.mind.assigned_role] (No ID)No Assigned Role[player_has_info(M.ckey) ? "Info" : "N/A"] PM | PP | VV | TP | SM | JMP
[muting]
Warn | Boot | Ban | Jobban
Traitor?Traitor?Traitor?
" usr << browse(dat, "window=players;size=905x600") /obj/admins/proc/mod_panel()//The new one if (!usr.client.holder) return var/dat = "Player Menu" dat += "" //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 = get_sorted_mobs() var/i = 1 for(var/mob/M in mobs) if(M.ckey) var/color = "#e6e6e6" i++ if(i%2 == 0) color = "#f2f2f2" var/real = (M.real_name == M.original_name ? "[M.name]/[M.real_name]" : "[M.original_name] (as [M.name]/[M.real_name])") var/turf/T = get_turf(M) var/client_key = (M.key? M.key : "No key") dat += "" // Adds current name /* if(isobserver(M)) dat += "" else if(isalien(M)) dat += "" else if(islarva(M)) dat += "" else if(istajaran(M)) dat += "" else if(ishuman(M)) dat += "" else if(ismetroid(M)) dat += "" else if(ismonkey(M)) dat += "" else if(isAI(M)) dat += "" else if(ispAI(M)) dat += "" else if(isrobot(M)) dat += "" else if(isanimal(M)) dat += "" else if(iscorgi(M)) dat += "" else if(istype(M,/mob/new_player)) dat += "" else dat += "\black" if(M.mind && M.mind.assigned_role && istype(M, /mob/living/carbon/human)) // Adds a column to Player Panel that shows their current job. var/mob/living/carbon/human/H = M if (H.wear_id) var/obj/item/weapon/card/id/id if(istype(H.wear_id, /obj/item/device/pda)) var/obj/item/device/pda/PDA = H.wear_id if(!isnull(PDA.id)) // The PDA may contain no ID id = PDA.id // The ID is contained inside the PDA else id = H.wear_id // The ID was on the ID slot if(!id) // Happens when there's no ID in the PDA located on the wear_id slot dat += "" else if(isnull(id.assignment)) // Preventing runtime errors blocking the player panel if(istype(id, /obj/item/weapon/card/id/syndicate)) dat += "" else usr << "ERROR: Inform the coders that an [id.name] was checked for its assignment variable, and it was null." dat += "" else if(M.mind.assigned_role == id.assignment) // Polymorph dat += "" else dat += "" else dat += "" */ dat += {" "} dat += {" "} switch(is_special_character(M)) if(0) dat += {""} if(1) dat += {""} if(2) dat += {""} dat += "
Name/Real NameIP/CIDInfoOptionsTraitor?
IP:Type Assigned Job Traitor?(IP: [M.lastKnownIP])
[real]
[M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z])
GhostAlienAlien larvaTajaran[M.job]MetroidMonkeyAIpAICyborgAnimalCorgiNew Player\red ERROR[M.mind.assigned_role] (No ID)AntagonistERROR[M.mind.assigned_role][M.mind.assigned_role] ([id.assignment])" else dat += "[M.mind.assigned_role] (No ID)No Assigned RoleIP: [M.client ? M.client.address : "Disconnected"]
CID: [M.client ? M.client.computer_id : "Disconnected"]
[player_has_info(M.ckey) ? "Info" : "N/A"] PMLoyalAntagMode-Antag
" usr << browse(dat, "window=players;size=600x600") //The old one /obj/admins/proc/player_panel_old() if (!usr.client.holder) return var/dat = "Player Menu" dat += "" //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 = get_sorted_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(istype(M, /mob/living/silicon/pai)) dat += "" else if(istype(M, /mob/new_player)) dat += "" else if(isobserver(M)) dat += "" else if(ismonkey(M)) dat += "" else if(isalien(M)) dat += "" else dat += "" if(istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M if(H.mind && H.mind.assigned_role) dat += "" else dat += "" dat += {" "} switch(is_special_character(M)) if(0) dat += {""} if(1) dat += {""} if(2) dat += {""} dat += "
NameReal NameAssigned JobKeyOptionsPMTraitor?
IP:(IP: [M.lastKnownIP])
[M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienUnknown[H.mind.assigned_role]NA[(M.client ? "[M.client]" : "No client")] X PMTraitor?Traitor?Traitor?
" usr << browse(dat, "window=players;size=640x480") /obj/admins/proc/check_antagonists() if (ticker && ticker.current_state >= GAME_STATE_PLAYING) var/dat = "Round Status

Round Status

" 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 (!emergency_shuttle.online) dat += "Call Shuttle
" else var/timeleft = emergency_shuttle.timeleft() switch(emergency_shuttle.location) if(0) dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" dat += "Send Back
" if(1) dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" 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 ? "" : " (logged out)"][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 ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
[M.real_name][M.client ? "" : " (logged out)"][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 ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM[mob_loc.loc]
Head not found!
" 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.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Changeling not found!
" if(ticker.mode.memes.len > 0) dat += "
" for(var/datum/mind/meme in ticker.mode.memes) // BUG: For some reason, the memes themselves aren't showing up, even though the list isn't empty // and the "Meme" header is displayed var/mob/living/parasite/meme/M = meme.current if(M) dat += "" dat += "" dat += "" // need this check because the meme may be possessing someone right now if(istype(M)) dat += "\t" dat += "
Memes
[M.key][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Attuned: " for(var/mob/attuned in M.indoctrinated) if(attuned.key) dat += "[attuned.real_name]([attuned.key]) " else dat += "[attuned.real_name] " else dat += "
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 ? "" : " (logged out)"][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 ? "" : " (logged out)"][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 ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Traitor not found!
" dat += "" usr << browse(dat, "window=roundstatus;size=400x500") else alert("The game hasn't started yet!")