From 9affbbd1becd8fa71451a3069aa8e8d800560312 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Wed, 28 Mar 2018 23:29:20 -0400 Subject: [PATCH] may work --- code/controllers/configuration.dm | 35 +++++++++++++------------------ 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 88fdb83da10..12602b817b8 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -200,21 +200,17 @@ var/disable_high_pop_mc_mode_amount = 60 /datum/configuration/New() - var/list/L = subtypesof(/datum/game_mode) - for(var/T in L) - // I wish I didn't have to instance the game modes in order to look up - // their information, but it is the only way (at least that I know of). - var/datum/game_mode/M = new T() + for(var/T in subtypesof(/datum/game_mode)) + var/datum/game_mode/M = T - if(M.config_tag) - if(!(M.config_tag in modes)) // ensure each mode is added only once - diary << "Adding game mode [M.name] ([M.config_tag]) to configuration." - src.modes += M.config_tag - src.mode_names[M.config_tag] = M.name - src.probabilities[M.config_tag] = M.probability - if(M.votable) - src.votable_modes += M.config_tag - qdel(M) + if(initial(M.config_tag)) + if(!(initial(M.config_tag) in modes)) // ensure each mode is added only once + diary << "Adding game mode [initial(M.name)] ([initial(M.config_tag)]) to configuration." + src.modes += initial(M.config_tag) + src.mode_names[initial(M.config_tag)] = initial(M.name) + src.probabilities[initial(M.config_tag)] = initial(M.probability) + if(initial(M.votable)) + src.votable_modes += initial(M.config_tag) src.votable_modes += "secret" /datum/configuration/proc/load(filename, type = "config") //the type can also be game_options, in which case it uses a different switch. not making it separate to not copypaste code - Urist @@ -750,13 +746,10 @@ config.overflow_whitelist += t /datum/configuration/proc/pick_mode(mode_name) - // I wish I didn't have to instance the game modes in order to look up - // their information, but it is the only way (at least that I know of). for(var/T in subtypesof(/datum/game_mode)) - var/datum/game_mode/M = new T() - if(M.config_tag && M.config_tag == mode_name) - return M - qdel(M) + var/datum/game_mode/M = T + if(initial(M.config_tag) && initial(M.config_tag) == mode_name) + return new T() return new /datum/game_mode/extended() /datum/configuration/proc/get_runnable_modes() @@ -773,4 +766,4 @@ if(M.can_start()) runnable_modes[M] = probabilities[M.config_tag] // to_chat(world, "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]") - return runnable_modes + return runnable_modes \ No newline at end of file