mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-13 11:24:34 +00:00
Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13
This commit is contained in:
@@ -88,3 +88,6 @@
|
||||
/datum/config_entry/number/rounds_until_hard_restart
|
||||
config_entry_value = -1
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/string/force_gamemode
|
||||
config_entry_value = null
|
||||
|
||||
@@ -71,6 +71,9 @@ SUBSYSTEM_DEF(ticker)
|
||||
var/station_integrity = 100 // stored at roundend for use in some antag goals
|
||||
var/emergency_reason
|
||||
|
||||
/// If the gamemode fails to be run too many times, we swap to a preset gamemode, this should give admins time to set their preferred one
|
||||
var/emergency_swap = 0
|
||||
|
||||
/datum/controller/subsystem/ticker/Initialize(timeofday)
|
||||
load_mode()
|
||||
|
||||
@@ -179,10 +182,11 @@ SUBSYSTEM_DEF(ticker)
|
||||
timeLeft = 0
|
||||
|
||||
if(!modevoted)
|
||||
if(!CONFIG_GET(string/force_gamemode))
|
||||
var/forcemode = CONFIG_GET(string/force_gamemode)
|
||||
if(forcemode)
|
||||
force_gamemode(forcemode)
|
||||
if(!forcemode || (GLOB.master_mode == "dynamic" && CONFIG_GET(flag/dynamic_voting)))
|
||||
send_gamemode_vote()
|
||||
else
|
||||
force_gamemode(CONFIG_GET(string/force_gamemode))
|
||||
//countdown
|
||||
if(timeLeft < 0)
|
||||
return
|
||||
@@ -230,14 +234,15 @@ SUBSYSTEM_DEF(ticker)
|
||||
/datum/controller/subsystem/ticker/proc/setup()
|
||||
to_chat(world, "<span class='boldannounce'>Starting game...</span>")
|
||||
var/init_start = world.timeofday
|
||||
// GLOB.master_mode = "dynamic" // NEVER LET THIS RUN, IT WILL ALWAYS FORCE DYNAMIC
|
||||
if(emergency_swap >= 10)
|
||||
force_gamemode("extended") // If everything fails extended does not have hard requirements for starting, could be changed if needed.
|
||||
mode = config.pick_mode(GLOB.master_mode)
|
||||
if(!mode.can_start())
|
||||
to_chat(world, "<B>Unable to start [mode.name].</B> Not enough players, [mode.required_players] players and [mode.required_enemies] eligible antagonists needed. Reverting to pre-game lobby.")
|
||||
qdel(mode)
|
||||
mode = null
|
||||
SSjob.ResetOccupations()
|
||||
force_gamemode("extended")
|
||||
emergency_swap++
|
||||
return 0
|
||||
|
||||
CHECK_TICK
|
||||
@@ -256,7 +261,7 @@ SUBSYSTEM_DEF(ticker)
|
||||
QDEL_NULL(mode)
|
||||
to_chat(world, "<B>Error setting up [GLOB.master_mode].</B> Reverting to pre-game lobby.")
|
||||
SSjob.ResetOccupations()
|
||||
force_gamemode("extended")
|
||||
emergency_swap++
|
||||
return 0
|
||||
else
|
||||
message_admins("<span class='notice'>DEBUG: Bypassing prestart checks...</span>")
|
||||
@@ -310,6 +315,19 @@ SUBSYSTEM_DEF(ticker)
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/force_gamemode(gamemode)
|
||||
if(gamemode)
|
||||
if(!modevoted)
|
||||
modevoted = TRUE
|
||||
if(gamemode in config.modes)
|
||||
GLOB.master_mode = gamemode
|
||||
SSticker.save_mode(gamemode)
|
||||
message_admins("The gamemode has been set to [gamemode].")
|
||||
else
|
||||
GLOB.master_mode = "extended"
|
||||
SSticker.save_mode("extended")
|
||||
message_admins("force_gamemode proc received an invalid gamemode, defaulting to extended.")
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/PostSetup()
|
||||
set waitfor = FALSE
|
||||
mode.post_setup()
|
||||
@@ -629,7 +647,7 @@ SUBSYSTEM_DEF(ticker)
|
||||
/datum/controller/subsystem/ticker/proc/load_mode()
|
||||
var/mode = trim(file2text("data/mode.txt"))
|
||||
if(mode)
|
||||
GLOB.master_mode = "dynamic"
|
||||
GLOB.master_mode = mode
|
||||
else
|
||||
GLOB.master_mode = GLOB.dynamic_forced_extended
|
||||
log_game("Saved mode is '[GLOB.master_mode]'")
|
||||
|
||||
Reference in New Issue
Block a user