diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index a5dd55503ab..18863ecf804 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -11,6 +11,8 @@ var/datum/subsystem/ticker/ticker
var/current_state = GAME_STATE_STARTUP //state of current round (used by process()) Use the defines GAME_STATE_* !
var/force_ending = 0 //Round was ended by admin intervention
+ // If true, there is no lobby phase, the game starts immediately.
+ var/start_immediately = FALSE
var/hide_mode = 0
var/datum/game_mode/mode = null
@@ -82,6 +84,9 @@ var/datum/subsystem/ticker/ticker
if(player.ready)
++totalPlayersReady
+ if(start_immediately)
+ timeLeft = 0
+
//countdown
if(timeLeft < 0)
return
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 8711288b545..8e965377872 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -513,15 +513,17 @@ var/global/BSACooldown = 0
set category = "Server"
set desc="Start the round RIGHT NOW"
set name="Start Now"
- if(ticker.current_state == GAME_STATE_PREGAME)
- ticker.can_fire = 1
- ticker.timeLeft = 0
+ if(ticker.current_state == GAME_STATE_PREGAME || ticker.current_state == GAME_STATE_STARTUP)
+ ticker.start_immediately = TRUE
log_admin("[usr.key] has started the game.")
- message_admins("[usr.key] has started the game.")
+ var/msg = ""
+ if(ticker.current_state == GAME_STATE_STARTUP)
+ msg = " (The server is still setting up, but the round will be \
+ started as soon as possible.)"
+ message_admins("\
+ [usr.key] has started the game.[msg]")
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return 1
- else if (ticker.current_state == GAME_STATE_STARTUP)
- usr << "Error: Start Now: Game is in startup, please wait until it has finished."
else
usr << "Error: Start Now: Game has already started."