def test_statsowner_get_stats(): so = StatsOwner() s1 = Stat("str") s2 = Stat("int") so.add(s1) so.add(s2) assert s1 in so.stats and s2 in so.stats
def test_lvlup(): owner = StatsOwner() owner.lvl = 1 owner.xp = 0 owner.load_rules(load_rules_from_file("rules.cfg")) owner.award_xp(150) assert owner.lvl > 1
def test_stat_scale_exp(): owner = StatsOwner() s = Stat("int") s.base_value = 10 s.scale_method = s.lvl_scale_exp s.scale_amount = 1 owner.claim(s) owner.set_lvl(1) s.update() lvl1 = s.get_value() owner.set_lvl(20) s.update() lvl20 = s.get_value() assert lvl1 == 10 and lvl20 == 18
def test_stat_scale_flat(): owner = StatsOwner() s = Stat("int") s.base_value = 10 s.scale_method = s.scale_flat s.scale_stat = "lvl" s.scale_amount = 1 owner.claim(s) owner.set_lvl(1) s.update() lvl1 = s.get_value() owner.set_lvl(10) s.update() lvl10 = s.get_value() assert lvl1 == 10 and lvl10 == 19
def test_stat_scale_stat(): owner = StatsOwner() s1 = Stat("sta") s2 = Stat("hp") s1.value = 10 s2.base_value = 100 s2.scale_stat = "sta" s2.scale_method = s2.scale_flat s2.scale_amount = 10 owner.add([s1, s2]) owner.get("hp").update() assert s2.get_value() == 200
def test_override_rules(): owner = StatsOwner() rules = load_rules_from_file("rules.cfg") rules["str"]["cap"] = 1 rules["str"]["scale_amount"] = 8 owner.load_rules(rules) d = {"str": {"cap": 1337}} owner.load_rules(d) assert ( owner.rules["str"]["cap"] == 1337 and owner.rules["str"]["scale_amount"] == 8 )
def test_build_stat(): import configparser rules = configparser.ConfigParser() rules.read("rules.cfg") rules["str"]["scale_method"] = "flat" d = parse_rules(rules) so = StatsOwner() so.load_rules(d) s = Stat("str") so.add(s) s = so.stat_objects["str"] assert s.scale_method == s.scale_flat
def main(): import matplotlib.pyplot as plt lvls = 80 so = StatsOwner() so.load_rules(load_rules_from_file("rules.cfg")) p = [] for lvl in range(lvls): v1 = so.get_next_lvl_target() so.lvl += 1 r = so.get_next_lvl_target() - v1 p.append(r) print(p) y = [y for y in range(lvls)] plt.plot(y, p) plt.xlabel("level") plt.ylabel("value") plt.show()
def test_statsowner_claim_multiple(): so = StatsOwner() s1 = Stat("str") s2 = Stat("int") so.claim([s1, s2]) assert s1.owner == so and s2.owner == so
def test_statsowner_claim(): so = StatsOwner() s1 = Stat("str") s2 = Stat("int") so.claim(s2) assert not s1.owner and s2.owner == so
def test_statowner_no_duplicate(): s1 = Stat("int") s2 = Stat("int") so = StatsOwner() so.add([s1, s2]) assert len(so.stats) == 1
def test_statowner_add_multiple_stats(): s1 = Stat("int") s2 = Stat("str") so = StatsOwner() so.add([s1, s2]) assert s1 in so.stats and s2 in so.stats
def test_statowner_add_stat(): s = Stat("int") so = StatsOwner() so.add(s) assert s in so.stats