small update

boss prototype, auto planter, visual reworks, bug fixes
This commit is contained in:
2026-08-29 10:45:34 +02:00
parent 6840b715de
commit feb4500c6c
31 changed files with 1293 additions and 213 deletions
+15 -4
View File
@@ -1,7 +1,7 @@
from collections import Counter
from assets import icon
from engine import collection, runes
from engine import bosses, collection, runes
from engine.battle import Battle
from engine.relics import RELIC_BY_KEY, grant_rune_rewards, roll_relics, rune_reward_count
from engine.roster import make_enemy_team, pick_team, player_team_level, player_team_stage
@@ -24,6 +24,7 @@ def _pack_reward_items(pack_types):
})
return items
#test_ignore
def _rune_reward_item(rune):
"""Reward entry for a rune drop (label + rune sprite path)."""
@@ -51,7 +52,8 @@ def _totals_txt(total_water, total_packs, run_relics):
def _battle_win_reward(floor):
"""Grant and describe a floor-battle win: a lesser pack, or on every 5th win
(5, 10, 15, ...) a better general/type-boosted pack instead. Advances the
floor. Runes can drop on any win regardless."""
floor. Runes can drop on any win regardless. Boss floors additionally grant
a boss-specific rune drop at a much higher chance and mark the boss fought."""
collection.advance_floor()
wins = collection.record_win()
if wins % 5 == 0:
@@ -61,6 +63,12 @@ def _battle_win_reward(floor):
rune = collection.roll_battle_rune()
if rune:
reward.append(_rune_reward_item(rune))
boss = bosses.boss_for_floor(floor)
if boss:
collection.mark_boss_fought(boss)
bdrop = collection.boss_rune_drop(boss)
if bdrop:
reward.append(_rune_reward_item(bdrop))
return reward
@@ -255,7 +263,10 @@ def main():
floor = collection.floor_progress()
enemy_names = floor_enemy_names(floor, player_type)
enemy_types = roll_enemy_types(enemy_names, player_type, floor)
enemy_levels = [floor_enemy_level(floor)] * len(enemy_names)
enemy_levels = [
bosses.boss_floor_level(floor) if bosses.is_boss(n) else floor_enemy_level(floor)
for n in enemy_names
]
from ui.picker import TeamSelect
ts = TeamSelect(initial_enemies=enemy_names, difficulty=floor,
enemy_types=enemy_types, no_roll=True,
@@ -269,7 +280,7 @@ def main():
allies, enemies = result
collection.mark_owned(allies)
collection.mark_found(enemies)
collection.mark_found([n for n in enemies if not bosses.is_boss(n)])
players = pick_team(allies, TEAM_PLAYER)
enemy_units = build_floor_enemies(enemy_names, enemy_types, floor)
battle = Battle(players, enemy_units)