mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 09:54:52 +00:00
also make weight adjustment round-to-round work, probs
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user