XP-System korrigiert: Level 2 gratis nach erster Welle, 1-1-Carousel-XP banken

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
team3
2026-07-23 07:21:06 +02:00
parent 889cced7bb
commit 11dc8994ff
6 changed files with 31 additions and 9 deletions

View File

@@ -19,8 +19,8 @@ def test_shop_odds_shape(c):
def test_xp_reaches_max_level(c):
start = c["xp"].get("start_level", 1)
assert len(c["xp"]["to_next"]) == c["xp"]["max_level"] - start
# Level 1 -> 2 ist gratis; to_next deckt 2->3 bis 9->10.
assert len(c["xp"]["to_next"]) == c["xp"]["max_level"] - 2
assert all(x > 0 for x in c["xp"]["to_next"])

View File

@@ -192,3 +192,17 @@ def test_pve_freezes_streak_and_pays_no_win_bonus(art, cfg):
while game.round["stage"] == 1 and not game.over:
game.step()
assert game.player.streak == 0
def test_natural_level_progression(art, cfg):
"""Ohne XP-Kauf: Level 1 bei 1-2, Level 4 bei 2-1, Level 5 mit 6/20 bei 3-2."""
game = Game(art, cfg, seed=6)
assert game.player.level == 1 and game.player.xp == 2 # 1-1-XP gebankt
checks = {}
while not game.over and game.round["label"] != "3-3":
checks[game.round["label"]] = (game.player.level, game.player.xp)
game.step()
assert checks["1-2"][0] == 1
assert checks["1-3"][0] == 3 # gratis Level 2 + kaskadierte XP
assert checks["2-1"] == (4, 0)
assert checks["3-2"] == (5, 6)