Bug Fixes for updash and horizontal dash

This commit is contained in:
Melvin Weiß 2025-10-02 18:28:10 +02:00
parent e2ccf87792
commit 7451279024
3 changed files with 18 additions and 7 deletions

View file

@ -15,7 +15,7 @@ class_name ActiveItem extends Item
active_item_uses.add_child(uses_left_icon.instantiate()) active_item_uses.add_child(uses_left_icon.instantiate())
func collect() -> bool: func collect() -> bool:
if (player.active_item == null): if (player.active_item == null or (player.active_item.item_name == item_name and player.active_item.uses < uses)):
player.active_item = self player.active_item = self
uses = uses uses = uses
actually_collect() actually_collect()
@ -36,7 +36,8 @@ func trigger_activation():
func activate(): func activate():
assert(false) assert(false)
func remove(): func remove(reset_player_active = true):
uses = 0 uses = 0
player.active_item = null if reset_player_active:
player.active_item = null
self.queue_free() self.queue_free()

View file

@ -21,10 +21,11 @@ func activate():
dash_dir = player.earth_aligner.global_from_local(Vector2.RIGHT * player.facing * 1600) dash_dir = player.earth_aligner.global_from_local(Vector2.RIGHT * player.facing * 1600)
player.inv_time = max(player.inv_time, dash_time) player.inv_time = max(player.inv_time, dash_time)
func remove(): func remove(reset_player_active = true):
if(dash_timer != null): if(dash_timer != null):
player.active_item = null if reset_player_active:
player.active_item = null
await dash_timer.timeout await dash_timer.timeout
super() super(false)
else: else:
super() super()

View file

@ -1,5 +1,6 @@
extends ActiveItem extends ActiveItem
var cooldown = 10 var cooldown = 10
var timer : SceneTreeTimer
func actually_collect(): func actually_collect():
player.set_cooldown(cooldown) player.set_cooldown(cooldown)
@ -8,5 +9,13 @@ func activate():
$UpdashSound.play() $UpdashSound.play()
player.activate_cooldown() player.activate_cooldown()
player.reset_to_velocity = Vector2(0,1) player.reset_to_velocity = Vector2(0,1)
await get_tree().create_timer(0.1).timeout timer = get_tree().create_timer(0.1)
await timer.timeout
player.reset_to_velocity = Vector2(0, -2400) player.reset_to_velocity = Vector2(0, -2400)
func remove(reset_player_active = true):
if reset_player_active:
player.active_item = null
if timer != null and timer.time_left > 0:
await timer.timeout
super(false)