diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 6b1920a1c4..a1763ccd6f 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -125,5 +125,6 @@ #define APPROVAL_VOTING 1 #define RANKED_CHOICE_VOTING 2 -// Dynamic stuff (see above, move later) -#define NO_ASSASSIN (1<<0) +// Dynamic storyteller stuff (see above, move later) +#define NO_ASSASSIN (1<<0) +#define EXTREME_ROUND (1<<1) diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index f920c265d7..dca2dfe581 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -13,7 +13,7 @@ SUBSYSTEM_DEF(persistence) var/list/saved_messages = list() var/list/saved_modes = list(1,2,3) var/list/saved_dynamic_rules = list(list(),list(),list()) - var/list/saved_threat_levels = list(1,1,1) + var/list/saved_storytellers = list("extended","chaotic","secret") var/list/saved_maps var/list/saved_trophies = list() var/list/spawned_objects = list() @@ -29,7 +29,7 @@ SUBSYSTEM_DEF(persistence) LoadChiselMessages() LoadTrophies() LoadRecentModes() - LoadRecentThreats() + LoadRecentStorytellers() LoadRecentMaps() LoadPhotoPersistence() if(CONFIG_GET(flag/use_antag_rep)) @@ -169,14 +169,14 @@ SUBSYSTEM_DEF(persistence) return saved_modes = json["data"] -/datum/controller/subsystem/persistence/proc/LoadRecentThreats() - var/json_file = file("data/RecentThreatLevels.json") +/datum/controller/subsystem/persistence/proc/LoadRecentStorytellers() + var/json_file = file("data/RecentStorytellers.json") if(!fexists(json_file)) return var/list/json = json_decode(file2text(json_file)) if(!json) return - saved_threat_levels = json["data"] + saved_storytellers = json["data"] /datum/controller/subsystem/persistence/proc/LoadRecentMaps() var/json_file = file("data/RecentMaps.json") @@ -230,7 +230,7 @@ SUBSYSTEM_DEF(persistence) CollectRoundtype() if(istype(SSticker.mode, /datum/game_mode/dynamic)) var/datum/game_mode/dynamic/mode = SSticker.mode - CollectThreatLevel(mode) + CollectStoryteller(mode) CollectRulesets(mode) RecordMaps() SavePhotoPersistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION. @@ -388,13 +388,13 @@ SUBSYSTEM_DEF(persistence) fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) -/datum/controller/subsystem/persistence/proc/CollectThreatLevel(var/datum/game_mode/dynamic/mode) - saved_threat_levels[3] = saved_threat_levels[2] - saved_threat_levels[2] = saved_threat_levels[1] - saved_threat_levels[1] = mode.threat_level - var/json_file = file("data/RecentThreatLevels.json") +/datum/controller/subsystem/persistence/proc/CollectStoryteller(var/datum/game_mode/dynamic/mode) + saved_storytellers[3] = saved_storytellers[2] + saved_storytellers[2] = saved_storytellers[1] + saved_storytellers[1] = mode.storyteller.name + var/json_file = file("data/RecentStorytellers.json") var/list/file_data = list() - file_data["data"] = saved_threat_levels + file_data["data"] = saved_storytellers fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 6c3852de69..29962d5f29 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -328,8 +328,14 @@ SUBSYSTEM_DEF(vote) if("dynamic") for(var/T in config.storyteller_cache) var/datum/dynamic_storyteller/S = T - choices.Add(initial(S.name)) - choice_descs.Add(initial(S.desc)) + var/recent_rounds = 0 + if(initial(S.flags) & EXTREME_ROUND) + for(var/i in 1 to 3) + if(SSpersistence.saved_storytellers[i] == initial(S.name)) + recent_rounds++ + if(recent_rounds<2) + choices.Add(initial(S.name)) + choice_descs.Add(initial(S.desc)) choices.Add("Secret") choice_descs.Add("Standard secret. Switches mode if it wins.") if("custom") diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index 92d83b307a..d97fdecd89 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -155,6 +155,7 @@ Property weights are: name = "Chaotic" curve_centre = 10 desc = "Chaos: high. Variation: high. Likely antags: clock cult, revs, wizard." + flags = EXTREME_ROUND property_weights = list("extended" = -1, "chaos" = 10) var/refund_cooldown @@ -209,6 +210,7 @@ Property weights are: name = "Extended" desc = "Chaos: none. Variation: none. Likely antags: none." curve_centre = -20 + flags = EXTREME_ROUND curve_width = 0.5 /datum/dynamic_storyteller/extended/on_start()