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."