/datum/admins/proc/check_antagonists()
if (SSticker.current_state >= GAME_STATE_PLAYING)
var/dat = "
Round StatusRound Status
"
dat += "Current Game Mode: [SSticker.mode.name]
"
dat += "Round Duration: [get_round_duration_formatted()]"
dat += "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 all_antag_types)
var/datum/antagonist/A = all_antag_types[antag_type]
dat += A.get_check_antag_output(src)
dat += ""
usr << browse(dat, "window=roundstatus;size=400x500")
else
alert("The game hasn't started yet!")
/datum/vueui_module/player_panel
/datum/vueui_module/player_panel/ui_interact(mob/user)
if (!usr.client.holder)
return
var/datum/vueui/ui = SSvueui.get_open_ui(user, src)
if(!ui)
ui = new(user, src, "admin-player-panel", 800, 600, "Modern player panel", state = interactive_state)
ui.header = "minimal"
ui.auto_update_content = TRUE
ui.open()
/datum/vueui_module/player_panel/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
if(!data)
. = data = list()
if(!user.client.holder)
return
var/isMod = check_rights(R_MOD|R_ADMIN, 0, user)
VUEUI_SET_CHECK(data["holder_ref"], "\ref[user.client.holder]", ., data)
VUEUI_SET_CHECK(data["ismod"], isMod, ., data)
var/list/mobs = sortmobs()
LAZYINITLIST(data["players"])
if(LAZYLEN(data["players"]) != mobs.len)
data["players"] = list()
for(var/mob/M in mobs)
var/ref = "\ref[M]"
LAZYINITLIST(data["players"][ref])
if(!M.ckey)
data["players"][ref] = FALSE
continue
LAZYINITLIST(data["players"][ref])
VUEUI_SET_CHECK(data["players"][ref]["ref"], ref, ., data)
VUEUI_SET_CHECK(data["players"][ref]["name"], M.name, ., data)
var/real_name = GetMobRealName(M)
VUEUI_SET_CHECK(data["players"][ref]["real_name"], real_name, ., data)
if(istype(M,/mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(H.mind?.assigned_role)
VUEUI_SET_CHECK(data["players"][ref]["assigment"], H.mind.assigned_role, ., data)
else
VUEUI_SET_CHECK(data["players"][ref]["assigment"], "NA", ., data)
VUEUI_SET_CHECK(data["players"][ref]["key"], M.key, ., data)
if(isMod)
VUEUI_SET_CHECK(data["players"][ref]["ip"], M.lastKnownIP, ., data)
else
VUEUI_SET_CHECK(data["players"][ref]["ip"], FALSE, ., data)
VUEUI_SET_CHECK(data["players"][ref]["connected"], !!M.client, ., data)
if(isMod)
var/special_char = is_special_character(M)
VUEUI_SET_CHECK(data["players"][ref]["antag"], special_char, ., data)
else
VUEUI_SET_CHECK(data["players"][ref]["antag"], -1, ., data)
if(isMod && (M.client?.player_age || M.player_age))
var/age = "Requires database"
if(M.client?.player_age)
age = M.client.player_age
else if(M.player_age)
age = M.player_age
else
age = "NA"
if(age == "Requires database")
age = "NA"
VUEUI_SET_CHECK(data["players"][ref]["age"], age, ., data)
else
VUEUI_SET_CHECK(data["players"][ref]["age"], FALSE, ., data)
/datum/vueui_module/player_panel/proc/GetMobRealName(var/mob/M)
if(isAI(M))
return "AI"
if(isrobot(M))
return "Cyborg"
if(ishuman(M))
if(M.real_name)
return M.real_name
return "Unknown"
if(istype(M, /mob/living/silicon/pai))
return "pAI"
if(istype(M, /mob/abstract/new_player))
return "New Player"
if(isobserver(M))
return "Ghost"
if(issmall(M))
return "Monkey"
if(isalien(M))
return "Alien"
return "Unknown"