mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 20:43:10 +01:00
Made BYOND to automaticly retry setup if mode fails to start (#4892)
As title says. Also tries up to 12 times, what should be more than enough.
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
#define LOBBY_TIME 180
|
||||
|
||||
#define SETUP_OK 0
|
||||
#define SETUP_REVOTE 1
|
||||
#define SETUP_REATTEMPT 2
|
||||
|
||||
var/datum/controller/subsystem/ticker/SSticker
|
||||
|
||||
/datum/controller/subsystem/ticker
|
||||
@@ -137,11 +141,14 @@ var/datum/controller/subsystem/ticker/SSticker
|
||||
if (pregame_timeleft <= 0 || current_state == GAME_STATE_SETTING_UP)
|
||||
current_state = GAME_STATE_SETTING_UP
|
||||
wait = 2 SECONDS
|
||||
if (!setup())
|
||||
// Something fucked up.
|
||||
wait = 1 SECOND
|
||||
is_revote = TRUE
|
||||
pregame()
|
||||
switch (setup())
|
||||
if (SETUP_REVOTE)
|
||||
wait = 1 SECOND
|
||||
is_revote = TRUE
|
||||
pregame()
|
||||
if (SETUP_REATTEMPT)
|
||||
pregame_timeleft = 1 SECOND
|
||||
to_world("Reattempting gamemode selection.")
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/game_tick()
|
||||
if(current_state != GAME_STATE_PLAYING)
|
||||
@@ -354,7 +361,7 @@ var/datum/controller/subsystem/ticker/SSticker
|
||||
if(!runnable_modes.len)
|
||||
current_state = GAME_STATE_PREGAME
|
||||
world << "<B>Unable to choose playable game mode.</B> Reverting to pre-game lobby."
|
||||
return 0
|
||||
return SETUP_REVOTE
|
||||
if(secret_force_mode != ROUNDTYPE_STR_SECRET && secret_force_mode != ROUNDTYPE_STR_MIXED_SECRET)
|
||||
src.mode = config.pick_mode(secret_force_mode)
|
||||
if(!src.mode)
|
||||
@@ -379,7 +386,7 @@ var/datum/controller/subsystem/ticker/SSticker
|
||||
if(!src.mode)
|
||||
current_state = GAME_STATE_PREGAME
|
||||
world << "<span class='danger'>Serious error in mode setup!</span> Reverting to pre-game lobby."
|
||||
return 0
|
||||
return SETUP_REVOTE
|
||||
|
||||
SSjobs.ResetOccupations()
|
||||
src.mode.create_antagonists()
|
||||
@@ -398,7 +405,10 @@ var/datum/controller/subsystem/ticker/SSticker
|
||||
mode.fail_setup()
|
||||
mode = null
|
||||
SSjobs.ResetOccupations()
|
||||
return 0
|
||||
if(master_mode in list(ROUNDTYPE_STR_RANDOM, ROUNDTYPE_STR_SECRET, ROUNDTYPE_STR_MIXED_SECRET))
|
||||
return SETUP_REATTEMPT
|
||||
else
|
||||
return SETUP_REVOTE
|
||||
|
||||
var/starttime = REALTIMEOFDAY
|
||||
|
||||
@@ -444,7 +454,7 @@ var/datum/controller/subsystem/ticker/SSticker
|
||||
|
||||
log_debug("SSticker: Round-start setup took [(REALTIMEOFDAY - starttime)/10] seconds.")
|
||||
|
||||
return 1
|
||||
return SETUP_OK
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/run_callback_list(list/callbacklist)
|
||||
set waitfor = FALSE
|
||||
@@ -514,7 +524,6 @@ var/datum/controller/subsystem/ticker/SSticker
|
||||
world << sound('sound/effects/explosionfar.ogg')
|
||||
//flick("end",cinematic)
|
||||
|
||||
|
||||
if(2) //nuke was nowhere nearby //TODO: a really distant explosion animation
|
||||
sleep(50)
|
||||
world << sound('sound/effects/explosionfar.ogg')
|
||||
@@ -602,4 +611,7 @@ var/datum/controller/subsystem/ticker/SSticker
|
||||
LAZYADD(roundstart_callbacks, callback)
|
||||
|
||||
|
||||
#undef SETUP_OK
|
||||
#undef SETUP_REVOTE
|
||||
#undef SETUP_REATTEMPT
|
||||
#undef LOBBY_TIME
|
||||
|
||||
Reference in New Issue
Block a user