diff --git a/scripts/shuriken.gd b/scripts/shuriken.gd index 5a58b9b..7ac34f8 100644 --- a/scripts/shuriken.gd +++ b/scripts/shuriken.gd @@ -13,28 +13,28 @@ func _ready() -> void: launch(first.global_position) func _on_body_entered(body: Node2D) -> void: - if body.is_in_group("enemies"): - enemies_hit += 1 - body.hit() - if enemies_hit == 20: - queue_free() - else: - var next = get_nearest_enemy(global_position, body) - if next == null: - queue_free() - else: - launch(next.global_position) + if body.is_in_group("enemies") and not body.is_hurt and not body.is_dying: + enemies_hit += 1 + body.hit() + if enemies_hit == 20: + queue_free() + else: + var next = get_nearest_enemy(global_position, body) + if next == null: + queue_free() + else: + launch(next.global_position) func get_nearest_enemy(from: Vector2, exclude: Node = null) -> Node: - var nearest = null - var min_distance = INF - for enemy in get_tree().get_nodes_in_group("enemies"): - if enemy == exclude or enemy.is_dying: - continue - var dist = from.distance_to(enemy.global_position) - if dist < min_distance: - min_distance = dist - nearest = enemy - return nearest - - + var nearest = null + var min_distance = INF + for enemy in get_tree().get_nodes_in_group("enemies"): + if enemy == exclude or enemy.is_dying or enemy.is_hurt: + continue + var dist = from.distance_to(enemy.global_position) + if dist < min_distance: + min_distance = dist + nearest = enemy + return nearest + +