mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Fixes Secret.
This commit is contained in:
@@ -831,21 +831,15 @@ var/list/gamemode_cache = list()
|
||||
for (var/game_mode in gamemode_cache)
|
||||
var/datum/game_mode/M = gamemode_cache[game_mode]
|
||||
if (M.config_tag && M.config_tag == mode_name)
|
||||
M.create_antagonists()
|
||||
return M
|
||||
return gamemode_cache["extended"]
|
||||
|
||||
/datum/configuration/proc/get_runnable_modes()
|
||||
var/list/datum/game_mode/runnable_modes = new
|
||||
for (var/game_mode in gamemode_cache)
|
||||
var/list/runnable_modes = list()
|
||||
for(var/game_mode in gamemode_cache)
|
||||
var/datum/game_mode/M = gamemode_cache[game_mode]
|
||||
if (!(M.config_tag in modes))
|
||||
continue
|
||||
if (probabilities[M.config_tag]<=0)
|
||||
continue
|
||||
if (M.can_start())
|
||||
runnable_modes[M] = probabilities[M.config_tag]
|
||||
//world << "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]"
|
||||
if(M && M.can_start() && !isnull(config.probabilities[M.config_tag]) && config.probabilities[M.config_tag] > 0)
|
||||
runnable_modes |= M
|
||||
return runnable_modes
|
||||
|
||||
/datum/configuration/proc/post_load()
|
||||
|
||||
@@ -114,6 +114,13 @@ var/global/list/additional_antag_types = list()
|
||||
)
|
||||
)
|
||||
|
||||
/datum/game_mode/New()
|
||||
..()
|
||||
// Enforce some formatting.
|
||||
// This will probably break something.
|
||||
name = capitalize(lowertext(name))
|
||||
config_tag = lowertext(config_tag)
|
||||
|
||||
/datum/game_mode/Topic(href, href_list[])
|
||||
if(..())
|
||||
return
|
||||
|
||||
@@ -69,33 +69,34 @@ var/global/datum/controller/gameticker/ticker
|
||||
//Create and announce mode
|
||||
if(master_mode=="secret")
|
||||
src.hide_mode = 1
|
||||
var/list/datum/game_mode/runnable_modes
|
||||
var/mode_started
|
||||
|
||||
var/list/runnable_modes = config.get_runnable_modes()
|
||||
if((master_mode=="random") || (master_mode=="secret"))
|
||||
runnable_modes = config.get_runnable_modes()
|
||||
if (runnable_modes.len==0)
|
||||
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
|
||||
if(secret_force_mode != "secret")
|
||||
var/datum/game_mode/M = config.pick_mode(secret_force_mode)
|
||||
if(M.can_start())
|
||||
mode_started = 1
|
||||
src.mode = config.pick_mode(secret_force_mode)
|
||||
job_master.ResetOccupations()
|
||||
if(!src.mode)
|
||||
src.mode = pickweight(runnable_modes)
|
||||
if(src.mode)
|
||||
var/mtype = src.mode.type
|
||||
src.mode = new mtype
|
||||
var/list/weighted_modes = list()
|
||||
for(var/datum/game_mode/GM in runnable_modes)
|
||||
weighted_modes[GM.config_tag] = config.probabilities[GM.config_tag]
|
||||
src.mode = gamemode_cache[pickweight(weighted_modes)]
|
||||
else
|
||||
src.mode = config.pick_mode(master_mode)
|
||||
|
||||
src.mode.pre_setup()
|
||||
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
|
||||
|
||||
job_master.ResetOccupations()
|
||||
src.mode.create_antagonists()
|
||||
src.mode.pre_setup()
|
||||
job_master.DivideOccupations() // Apparently important for new antagonist system to register specific job antags properly.
|
||||
|
||||
if(!mode_started && !src.mode.can_start())
|
||||
if(!src.mode.can_start())
|
||||
world << "<B>Unable to start [mode.name].</B> Not enough players, [mode.required_players] players needed. Reverting to pre-game lobby."
|
||||
current_state = GAME_STATE_PREGAME
|
||||
mode.fail_setup()
|
||||
@@ -104,12 +105,14 @@ var/global/datum/controller/gameticker/ticker
|
||||
return 0
|
||||
|
||||
if(hide_mode)
|
||||
var/list/modes = new
|
||||
for (var/datum/game_mode/M in runnable_modes)
|
||||
modes+=M.name
|
||||
modes = sortList(modes)
|
||||
world << "<B>The current game mode is - Secret!</B>"
|
||||
world << "<B>Possibilities:</B> [english_list(modes)]"
|
||||
if(runnable_modes.len)
|
||||
var/list/tmpmodes = new
|
||||
for (var/datum/game_mode/M in runnable_modes)
|
||||
tmpmodes+=M.name
|
||||
tmpmodes = sortList(tmpmodes)
|
||||
if(tmpmodes.len)
|
||||
world << "<B>Possibilities:</B> [english_list(tmpmodes)]"
|
||||
else
|
||||
src.mode.announce()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user