diff --git a/code/_onclick/hud/new_player.dm b/code/_onclick/hud/new_player.dm
index 438a71619ca..2e167093325 100644
--- a/code/_onclick/hud/new_player.dm
+++ b/code/_onclick/hud/new_player.dm
@@ -679,25 +679,20 @@
///Lobby screen that appears before the game has started showing how many players there are and who is ready.
/atom/movable/screen/lobby/new_player_info
name = "New Player Info"
- screen_loc = "TOP:-20,CENTER:192"
+ screen_loc = "EAST-3,CENTER:140"
icon = 'icons/hud/lobby/newplayer.dmi'
icon_state = null //we only show up when we get update appearance called, cause we need our overlay to not look bad.
base_icon_state = "newplayer"
- maptext_height = 70
+ maptext_height = 75
maptext_width = 80
maptext_x = OVERLAY_X_DIFF
maptext_y = OVERLAY_Y_DIFF
+ ///Boolean on whether or not we should have our static overlay, so we 'turn' the TV off when collapsing.
var/show_static = TRUE
/atom/movable/screen/lobby/new_player_info/Initialize(mapload, datum/hud/hud_owner)
. = ..()
- switch(SSticker.current_state)
- if(GAME_STATE_PREGAME, GAME_STATE_STARTUP)
- RegisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP, PROC_REF(hide_info))
- if(GAME_STATE_SETTING_UP)
- RegisterSignal(SSticker, COMSIG_TICKER_ERROR_SETTING_UP, PROC_REF(show_info))
-
START_PROCESSING(SSnewplayer_info, src)
update_text()
update_appearance(UPDATE_ICON)
@@ -706,26 +701,22 @@
STOP_PROCESSING(SSnewplayer_info, src)
return ..()
-/atom/movable/screen/lobby/new_player_info/update_overlays()
- . = ..()
- if(!always_available)
- return .
- . += mutable_appearance(icon, "[base_icon_state]_overlay", layer = src.layer+0.03)
- if(show_static)
- . += mutable_appearance(icon, "static_base", alpha = 20, layer = src.layer+0.01)
- //we have this in a separate file because `generate_icon_alpha_mask` puts lighting even on non-existent pixels,
- //giving the icon a weird background color.
- var/mutable_appearance/scanline = mutable_appearance(generate_icon_alpha_mask('icons/hud/lobby/newplayer_scanline.dmi', "scanline"), alpha = 20, layer = src.layer+0.02)
- scanline.pixel_y = OVERLAY_X_DIFF
- scanline.pixel_x = OVERLAY_Y_DIFF
- . += scanline
-
/atom/movable/screen/lobby/new_player_info/update_icon_state()
. = ..()
- if(!always_available)
- icon_state = "[base_icon_state]_disabled"
- else
- icon_state = base_icon_state
+ icon_state = base_icon_state
+
+/atom/movable/screen/lobby/new_player_info/update_overlays()
+ . = ..()
+ . += mutable_appearance(icon, "[base_icon_state]_overlay", layer = src.layer+0.03)
+ if(!show_static)
+ return .
+ . += mutable_appearance(icon, "static_base", alpha = 20, layer = src.layer+0.01)
+ //we have this in a separate file because `generate_icon_alpha_mask` puts lighting even on non-existent pixels,
+ //giving the icon a weird background color.
+ var/mutable_appearance/scanline = mutable_appearance(generate_icon_alpha_mask('icons/hud/lobby/newplayer_scanline.dmi', "scanline"), alpha = 20, layer = src.layer+0.02)
+ scanline.pixel_y = OVERLAY_X_DIFF
+ scanline.pixel_x = OVERLAY_Y_DIFF
+ . += scanline
/atom/movable/screen/lobby/new_player_info/process(seconds_per_tick)
update_text()
@@ -744,33 +735,28 @@
update_appearance(UPDATE_ICON)
update_text()
-/atom/movable/screen/lobby/new_player_info/proc/hide_info()
- SIGNAL_HANDLER
-
- STOP_PROCESSING(SSnewplayer_info, src)
- UnregisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP)
- RegisterSignal(SSticker, COMSIG_TICKER_ERROR_SETTING_UP, PROC_REF(show_info))
- always_available = FALSE
- update_appearance(UPDATE_ICON)
- update_text()
-
-/atom/movable/screen/lobby/new_player_info/proc/show_info()
- SIGNAL_HANDLER
-
- always_available = TRUE
- update_appearance(UPDATE_ICON)
- update_text()
- START_PROCESSING(SSnewplayer_info, src)
- UnregisterSignal(SSticker, COMSIG_TICKER_ERROR_SETTING_UP)
- RegisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP, PROC_REF(hide_info))
-
/atom/movable/screen/lobby/new_player_info/proc/update_text()
- if(!always_available || !hud || !show_static)
+ if(!hud || !show_static)
maptext = null
return
- var/new_maptext
if(!MC_RUNNING())
- new_maptext = "Loading..."
+ maptext = MAPTEXT("Loading...")
+ return
+ if(SSticker.IsPostgame())
+ maptext = MAPTEXT("Game ended,
\
+ restart soon")
+ return
+
+ var/new_maptext
+ var/round_started = SSticker.HasRoundStarted()
+ if(round_started)
+ new_maptext = "[SSmapping.current_map.map_name]
\
+ [LAZYLEN(GLOB.clients)] player\s online
\
+ [ROUND_TIME()] in
"
+ var/datum/station_trait/overflow_job_bureaucracy/overflow = locate() in SSstation.station_traits
+ if(overflow)
+ new_maptext += "[overflow.chosen_job_name] overflow"
+ new_maptext += ""
else
var/time_remaining = SSticker.GetTimeLeft()
if(time_remaining > 0)
diff --git a/code/controllers/subsystem/processing/newplayer.dm b/code/controllers/subsystem/processing/newplayer.dm
index 796f7405ef8..e7537da5ead 100644
--- a/code/controllers/subsystem/processing/newplayer.dm
+++ b/code/controllers/subsystem/processing/newplayer.dm
@@ -2,4 +2,4 @@ PROCESSING_SUBSYSTEM_DEF(newplayer_info)
name = "New Player Info"
flags = SS_NO_INIT | SS_BACKGROUND
wait = 1 SECONDS
- runlevels = RUNLEVEL_LOBBY|RUNLEVEL_SETUP
+ runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 2af1a2d57c2..40c7769a31c 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -546,12 +546,18 @@ SUBSYSTEM_DEF(ticker)
queued_players -= next_in_line
queue_delay = 0
+///Whether the game has started, including roundend.
/datum/controller/subsystem/ticker/proc/HasRoundStarted()
return current_state >= GAME_STATE_PLAYING
+///Whether the game is currently in progress, excluding roundend
/datum/controller/subsystem/ticker/proc/IsRoundInProgress()
return current_state == GAME_STATE_PLAYING
+///Whether the game is currently in progress, excluding roundend
+/datum/controller/subsystem/ticker/proc/IsPostgame()
+ return current_state == GAME_STATE_FINISHED
+
/datum/controller/subsystem/ticker/Recover()
current_state = SSticker.current_state
force_ending = SSticker.force_ending