diff --git a/code/modules/mob/dead/new_player/latejoin_menu.dm b/code/modules/mob/dead/new_player/latejoin_menu.dm index aae5b30bf29..9f4d3dfffc4 100644 --- a/code/modules/mob/dead/new_player/latejoin_menu.dm +++ b/code/modules/mob/dead/new_player/latejoin_menu.dm @@ -23,9 +23,6 @@ GLOBAL_DATUM_INIT(latejoin_menu, /datum/latejoin_menu, new) user.jobs_menu_mounted = TRUE // Don't flood a user's chat if they open and close the UI. /datum/latejoin_menu/ui_interact(mob/dead/new_player/user, datum/tgui/ui) - if(!istype(user)) - return - ui = SStgui.try_update_ui(user, src, ui) if(!ui) // In case they reopen the GUI @@ -51,7 +48,7 @@ GLOBAL_DATUM_INIT(latejoin_menu, /datum/latejoin_menu, new) switch(SSshuttle.emergency.mode) if(SHUTTLE_ESCAPE) data["shuttle_status"] = "The station has been evacuated." - if(SHUTTLE_CALL || SHUTTLE_DOCKED || SHUTTLE_IGNITING || SHUTTLE_ESCAPE) + if(SHUTTLE_CALL, SHUTTLE_DOCKED, SHUTTLE_IGNITING, SHUTTLE_ESCAPE) if(!SSshuttle.canRecall()) data["shuttle_status"] = "The station is currently undergoing evacuation procedures." @@ -114,8 +111,9 @@ GLOBAL_DATUM_INIT(latejoin_menu, /datum/latejoin_menu, new) return list("departments_static" = departments) -/datum/latejoin_menu/ui_state(mob/user) - return GLOB.new_player_state +// we can't use GLOB.new_player_state here since it also allows any admin to see the ui, which will cause runtimes +/datum/latejoin_menu/ui_status(mob/user) + return isnewplayer(user) ? UI_INTERACTIVE : UI_CLOSE /datum/latejoin_menu/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() @@ -158,9 +156,9 @@ GLOBAL_DATUM_INIT(latejoin_menu, /datum/latejoin_menu, new) tgui_alert(owner, "The server is full!", "Oh No!") return TRUE - SStgui.close_user_uis(owner, src) // Bandaid fix cause ui_state doesn't react properly to spawning in. // SAFETY: AttemptLateSpawn has it's own sanity checks. This is perfectly safe. owner.AttemptLateSpawn(params["job"]) + return TRUE if("viewpoll")