filter perk offers by mode and enforce archetype exclusivity
parent
6d1fcfce07
commit
83c8a61f14
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue