diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index e53c91ac20d..3a1ba7595c0 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -65,6 +65,8 @@ SUBSYSTEM_DEF(ticker)
to_chat(world, "Please, setup your character and select ready. Game will start in [config.pregame_timestart] seconds")
current_state = GAME_STATE_PREGAME
fire() // TG says this is a good idea
+ for(var/mob/new_player/N in GLOB.player_list)
+ N.new_player_panel_proc() // to enable the observe option
if(GAME_STATE_PREGAME)
if(!SSticker.ticker_going) // This has to be referenced like this, and I dont know why. If you dont put SSticker. it will break
return
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index f53daba6626..2bb2466ce02 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -77,7 +77,10 @@
else output += "
Global Antag Candidacy"
output += "
You are [client.skip_antag ? "ineligible" : "eligible"] for all antag roles.
"
- output += "Observe
"
+ if(!SSticker || SSticker.current_state == GAME_STATE_STARTUP)
+ output += "Observe (Please wait...)
"
+ else
+ output += "Observe
"
if(GLOB.join_tos)
output += "Terms of Service
"
@@ -103,7 +106,7 @@
output += ""
- var/datum/browser/popup = new(src, "playersetup", "New Player Options
", 220, 290)
+ var/datum/browser/popup = new(src, "playersetup", "New Player Options
", 240, 330)
popup.set_window_options("can_close=0")
popup.set_content(output)
popup.open(0)
@@ -144,7 +147,8 @@
/mob/new_player/Topic(href, href_list[])
- if(!client) return 0
+ if(!client)
+ return FALSE
if(href_list["consent_signed"])
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
@@ -162,12 +166,12 @@
if(href_list["show_preferences"])
client.prefs.ShowChoices(src)
- return 1
+ return TRUE
if(href_list["ready"])
if(!tos_consent)
to_chat(usr, "You must consent to the terms of service before you can join!")
- return 0
+ return FALSE
ready = !ready
new_player_panel_proc()
@@ -182,7 +186,11 @@
if(href_list["observe"])
if(!tos_consent)
to_chat(usr, "You must consent to the terms of service before you can join!")
- return 0
+ return FALSE
+
+ if(!SSticker || SSticker.current_state == GAME_STATE_STARTUP)
+ to_chat(usr, "You must wait for the server to finish starting before you can join!")
+ return FALSE
if(alert(src,"Are you sure you wish to observe? You cannot normally join the round after doing this!","Player Setup","Yes","No") == "Yes")
if(!client)
@@ -216,12 +224,12 @@
return 1
if(href_list["tos"])
privacy_consent()
- return 0
+ return FALSE
if(href_list["late_join"])
if(!tos_consent)
to_chat(usr, "You must consent to the terms of service before you can join!")
- return 0
+ return FALSE
if(!SSticker || SSticker.current_state != GAME_STATE_PLAYING)
to_chat(usr, "The round is either not ready, or has already finished...")
return
@@ -229,7 +237,7 @@
if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist)
to_chat(src, alert("You are currently not whitelisted to play [client.prefs.species]."))
- return 0
+ return FALSE
LateChoices()
@@ -248,7 +256,7 @@
if(client.prefs.species in GLOB.whitelisted_species)
if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist)
to_chat(src, alert("You are currently not whitelisted to play [client.prefs.species]."))
- return 0
+ return FALSE
AttemptLateSpawn(href_list["SelectedJob"],client.prefs.spawnpoint)
return