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)
|
for (var/game_mode in gamemode_cache)
|
||||||
var/datum/game_mode/M = gamemode_cache[game_mode]
|
var/datum/game_mode/M = gamemode_cache[game_mode]
|
||||||
if (M.config_tag && M.config_tag == mode_name)
|
if (M.config_tag && M.config_tag == mode_name)
|
||||||
M.create_antagonists()
|
|
||||||
return M
|
return M
|
||||||
return gamemode_cache["extended"]
|
return gamemode_cache["extended"]
|
||||||
|
|
||||||
/datum/configuration/proc/get_runnable_modes()
|
/datum/configuration/proc/get_runnable_modes()
|
||||||
var/list/datum/game_mode/runnable_modes = new
|
var/list/runnable_modes = list()
|
||||||
for (var/game_mode in gamemode_cache)
|
for(var/game_mode in gamemode_cache)
|
||||||
var/datum/game_mode/M = gamemode_cache[game_mode]
|
var/datum/game_mode/M = gamemode_cache[game_mode]
|
||||||
if (!(M.config_tag in modes))
|
if(M && M.can_start() && !isnull(config.probabilities[M.config_tag]) && config.probabilities[M.config_tag] > 0)
|
||||||
continue
|
runnable_modes |= M
|
||||||
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]"
|
|
||||||
return runnable_modes
|
return runnable_modes
|
||||||
|
|
||||||
/datum/configuration/proc/post_load()
|
/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[])
|
/datum/game_mode/Topic(href, href_list[])
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -69,33 +69,34 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
//Create and announce mode
|
//Create and announce mode
|
||||||
if(master_mode=="secret")
|
if(master_mode=="secret")
|
||||||
src.hide_mode = 1
|
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"))
|
if((master_mode=="random") || (master_mode=="secret"))
|
||||||
runnable_modes = config.get_runnable_modes()
|
if(!runnable_modes.len)
|
||||||
if (runnable_modes.len==0)
|
|
||||||
current_state = GAME_STATE_PREGAME
|
current_state = GAME_STATE_PREGAME
|
||||||
world << "<B>Unable to choose playable game mode.</B> Reverting to pre-game lobby."
|
world << "<B>Unable to choose playable game mode.</B> Reverting to pre-game lobby."
|
||||||
return 0
|
return 0
|
||||||
if(secret_force_mode != "secret")
|
if(secret_force_mode != "secret")
|
||||||
var/datum/game_mode/M = config.pick_mode(secret_force_mode)
|
src.mode = 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)
|
if(!src.mode)
|
||||||
src.mode = pickweight(runnable_modes)
|
var/list/weighted_modes = list()
|
||||||
if(src.mode)
|
for(var/datum/game_mode/GM in runnable_modes)
|
||||||
var/mtype = src.mode.type
|
weighted_modes[GM.config_tag] = config.probabilities[GM.config_tag]
|
||||||
src.mode = new mtype
|
src.mode = gamemode_cache[pickweight(weighted_modes)]
|
||||||
else
|
else
|
||||||
src.mode = config.pick_mode(master_mode)
|
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.
|
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."
|
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
|
current_state = GAME_STATE_PREGAME
|
||||||
mode.fail_setup()
|
mode.fail_setup()
|
||||||
@@ -104,12 +105,14 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(hide_mode)
|
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>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
|
else
|
||||||
src.mode.announce()
|
src.mode.announce()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user