filter perk offers by mode and enforce archetype exclusivity

main
Artur David 2026-06-23 08:40:42 +02:00
parent 6d1fcfce07
commit 83c8a61f14
1 changed files with 11 additions and 2 deletions

View File

@ -28,15 +28,22 @@ func _ready() -> void:
func _process(delta: float) -> void: func _process(delta: float) -> void:
pass 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(): func show_perks():
player.stream = level_sound player.stream = level_sound
player.play() player.play()
if perks.is_empty(): var eligible = perks.filter(_is_eligible)
if eligible.is_empty():
return return
var tween = create_tween() var tween = create_tween()
tween.tween_property($ColorRect, "color:a", 0.6, 0.3) tween.tween_property($ColorRect, "color:a", 0.6, 0.3)
get_tree().paused = true get_tree().paused = true
var shuffled = perks.duplicate() var shuffled = eligible.duplicate()
shuffled.shuffle() shuffled.shuffle()
var chosen = shuffled.slice(0, 3) var chosen = shuffled.slice(0, 3)
await get_tree().create_timer(0.4).timeout 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/Witch").global_position)
_spawn_level_up_particles(get_node("/root/Game/World/Player").global_position) _spawn_level_up_particles(get_node("/root/Game/World/Player").global_position)
perks.erase(perk) 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(): for child in $HBoxContainer.get_children():
child.animate_out() child.animate_out()
var tween = create_tween() var tween = create_tween()