From 83c8a61f14b68995182b93fb076995f2f252e80a Mon Sep 17 00:00:00 2001 From: Artur David Date: Tue, 23 Jun 2026 08:40:42 +0200 Subject: [PATCH] filter perk offers by mode and enforce archetype exclusivity --- scripts/level_up_manager.gd | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/scripts/level_up_manager.gd b/scripts/level_up_manager.gd index 7dabd37..aa882cd 100644 --- a/scripts/level_up_manager.gd +++ b/scripts/level_up_manager.gd @@ -28,15 +28,22 @@ func _ready() -> void: func _process(delta: float) -> void: pass +func _is_eligible(perk: Perk) -> bool: + if perk.requires_mode == "": + return true + var parts = perk.requires_mode.split(":") + return perk_effects.get_mode(parts[0]) == parts[1] + func show_perks(): player.stream = level_sound player.play() - if perks.is_empty(): + var eligible = perks.filter(_is_eligible) + if eligible.is_empty(): return var tween = create_tween() tween.tween_property($ColorRect, "color:a", 0.6, 0.3) get_tree().paused = true - var shuffled = perks.duplicate() + var shuffled = eligible.duplicate() shuffled.shuffle() var chosen = shuffled.slice(0, 3) await get_tree().create_timer(0.4).timeout @@ -54,6 +61,8 @@ func select_perk(perk): _spawn_level_up_particles(get_node("/root/Game/World/Witch").global_position) _spawn_level_up_particles(get_node("/root/Game/World/Player").global_position) perks.erase(perk) + if perk.archetype_slot != "": + perks = perks.filter(func(p): return p.archetype_slot != perk.archetype_slot) for child in $HBoxContainer.get_children(): child.animate_out() var tween = create_tween()