also make weight adjustment round-to-round work, probs

This commit is contained in:
Putnam
2019-12-24 22:05:04 -08:00
parent f38d1ab218
commit 5cd9edb37f
3 changed files with 10 additions and 9 deletions

View File

@@ -390,7 +390,7 @@ SUBSYSTEM_DEF(persistence)
/datum/controller/subsystem/persistence/proc/CollectThreatLevel(var/datum/game_mode/dynamic/mode) /datum/controller/subsystem/persistence/proc/CollectThreatLevel(var/datum/game_mode/dynamic/mode)
saved_threat_levels[3] = saved_threat_levels[2] 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 saved_threat_levels[1] = mode.threat_level
var/json_file = file("data/RecentThreatLevels.json") var/json_file = file("data/RecentThreatLevels.json")
var/list/file_data = list() var/list/file_data = list()
@@ -402,8 +402,9 @@ SUBSYSTEM_DEF(persistence)
saved_dynamic_rules[3] = saved_dynamic_rules[2] saved_dynamic_rules[3] = saved_dynamic_rules[2]
saved_dynamic_rules[2] = saved_dynamic_rules[1] saved_dynamic_rules[2] = saved_dynamic_rules[1]
saved_dynamic_rules[1] = list() saved_dynamic_rules[1] = list()
for(var/datum/dynamic_ruleset/ruleset in mode.executed_rules) for(var/r in mode.executed_rules)
saved_dynamic_rules[1] += ruleset.config_tag var/datum/dynamic_ruleset/rule = r
saved_dynamic_rules[1] += rule.config_tag
var/json_file = file("data/RecentRulesets.json") var/json_file = file("data/RecentRulesets.json")
var/list/file_data = list() var/list/file_data = list()
file_data["data"] = saved_dynamic_rules file_data["data"] = saved_dynamic_rules

View File

@@ -85,6 +85,8 @@
/// Whether or not recent-round weight values are taken into account for this ruleset. /// 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. /// Weight reduction uses the same values as secret's recent-round mode weight reduction.
var/always_max_weight = FALSE var/always_max_weight = FALSE
/// Weight reduction by recent-rounds. Saved on new.
var/weight_mult = 1
/datum/dynamic_ruleset/New() /datum/dynamic_ruleset/New()
..() ..()
@@ -98,13 +100,11 @@
var/high_population_requirements = CONFIG_GET(keyed_list/dynamic_high_population_requirement) var/high_population_requirements = CONFIG_GET(keyed_list/dynamic_high_population_requirement)
var/list/repeated_mode_adjust = CONFIG_GET(number_list/repeated_mode_adjust) var/list/repeated_mode_adjust = CONFIG_GET(number_list/repeated_mode_adjust)
if(config_tag in weights) if(config_tag in weights)
var/weight_mult = 1
if(!always_max_weight && SSpersistence.saved_dynamic_rules.len == 3 && repeated_mode_adjust.len == 3) if(!always_max_weight && SSpersistence.saved_dynamic_rules.len == 3 && repeated_mode_adjust.len == 3)
var/saved_dynamic_rules = SSpersistence.saved_dynamic_rules var/saved_dynamic_rules = SSpersistence.saved_dynamic_rules
for(var/i in 1 to 3) for(var/i in 1 to 3)
if(config_tag in saved_dynamic_rules[i]) if(config_tag in saved_dynamic_rules[i])
weight_mult -= (repeated_mode_adjust[i]/100) weight_mult -= (repeated_mode_adjust[i]/100)
weight = weights[config_tag] * weight_mult
if(config_tag in costs) if(config_tag in costs)
cost = costs[config_tag] cost = costs[config_tag]
if(config_tag in requirementses) if(config_tag in requirementses)

View File

@@ -90,7 +90,7 @@ Property weights are:
for(var/property in property_weights) for(var/property in property_weights)
if(property in rule.property_weights) // just treat it as 0 if it's not in there 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] 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 return drafted_rules
/datum/dynamic_storyteller/proc/midround_draft() /datum/dynamic_storyteller/proc/midround_draft()
@@ -107,7 +107,7 @@ Property weights are:
for(var/property in property_weights) for(var/property in property_weights)
if(property in rule.property_weights) if(property in rule.property_weights)
property_weight += rule.property_weights[property] * property_weights[property] 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) else if(mode.threat < rule.cost)
SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend")
return drafted_rules return drafted_rules
@@ -131,7 +131,7 @@ Property weights are:
for(var/property in property_weights) for(var/property in property_weights)
if(property in rule.property_weights) if(property in rule.property_weights)
property_weight += rule.property_weights[property] * property_weights[property] 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) else if(mode.threat < rule.cost)
SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend")
return drafted_rules return drafted_rules
@@ -145,7 +145,7 @@ Property weights are:
for(var/property in property_weights) for(var/property in property_weights)
if(property in rule.property_weights) if(property in rule.property_weights)
property_weight += rule.property_weights[property] * property_weights[property] 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) else if(mode.threat < rule.cost)
SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend") SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend")
return drafted_rules return drafted_rules