From 5cd9edb37f29f4e3b0147e15b4c238338f0db85b Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 24 Dec 2019 22:05:04 -0800 Subject: [PATCH] also make weight adjustment round-to-round work, probs --- code/controllers/subsystem/persistence.dm | 7 ++++--- code/game/gamemodes/dynamic/dynamic_rulesets.dm | 4 ++-- code/game/gamemodes/dynamic/dynamic_storytellers.dm | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 8329493818..f920c265d7 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -390,7 +390,7 @@ SUBSYSTEM_DEF(persistence) /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[2] = saved_threat_levels[1] saved_threat_levels[1] = mode.threat_level var/json_file = file("data/RecentThreatLevels.json") var/list/file_data = list() @@ -402,8 +402,9 @@ SUBSYSTEM_DEF(persistence) saved_dynamic_rules[3] = saved_dynamic_rules[2] saved_dynamic_rules[2] = saved_dynamic_rules[1] saved_dynamic_rules[1] = list() - for(var/datum/dynamic_ruleset/ruleset in mode.executed_rules) - saved_dynamic_rules[1] += ruleset.config_tag + for(var/r in mode.executed_rules) + var/datum/dynamic_ruleset/rule = r + saved_dynamic_rules[1] += rule.config_tag var/json_file = file("data/RecentRulesets.json") var/list/file_data = list() file_data["data"] = saved_dynamic_rules diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index 03a447d869..2f143f7233 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -85,6 +85,8 @@ /// Whether or not recent-round weight values are taken into account for this ruleset. /// Weight reduction uses the same values as secret's recent-round mode weight reduction. var/always_max_weight = FALSE + /// Weight reduction by recent-rounds. Saved on new. + var/weight_mult = 1 /datum/dynamic_ruleset/New() ..() @@ -98,13 +100,11 @@ var/high_population_requirements = CONFIG_GET(keyed_list/dynamic_high_population_requirement) var/list/repeated_mode_adjust = CONFIG_GET(number_list/repeated_mode_adjust) if(config_tag in weights) - var/weight_mult = 1 if(!always_max_weight && SSpersistence.saved_dynamic_rules.len == 3 && repeated_mode_adjust.len == 3) var/saved_dynamic_rules = SSpersistence.saved_dynamic_rules for(var/i in 1 to 3) if(config_tag in saved_dynamic_rules[i]) weight_mult -= (repeated_mode_adjust[i]/100) - weight = weights[config_tag] * weight_mult if(config_tag in costs) cost = costs[config_tag] if(config_tag in requirementses) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index 94bfc37020..b6a3220c80 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -90,7 +90,7 @@ Property weights are: for(var/property in property_weights) if(property in rule.property_weights) // just treat it as 0 if it's not in there property_weight += rule.property_weights[property] * property_weights[property] - drafted_rules[rule] = rule.get_weight() + property_weight + drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult return drafted_rules /datum/dynamic_storyteller/proc/midround_draft() @@ -107,7 +107,7 @@ Property weights are: for(var/property in property_weights) if(property in rule.property_weights) property_weight += rule.property_weights[property] * property_weights[property] - drafted_rules[rule] = rule.get_weight() + property_weight + drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult else if(mode.threat < rule.cost) SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") return drafted_rules @@ -131,7 +131,7 @@ Property weights are: for(var/property in property_weights) if(property in rule.property_weights) property_weight += rule.property_weights[property] * property_weights[property] - drafted_rules[rule] = rule.get_weight() + property_weight + drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult else if(mode.threat < rule.cost) SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") return drafted_rules @@ -145,7 +145,7 @@ Property weights are: for(var/property in property_weights) if(property in rule.property_weights) property_weight += rule.property_weights[property] * property_weights[property] - drafted_rules[rule] = rule.get_weight() + property_weight + drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult else if(mode.threat < rule.cost) SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") return drafted_rules