extends ProjectileBase var enemies_hit = 0 func _ready() -> void: speed = 500 super() var first = get_nearest_enemy(global_position) if first == null: queue_free() return 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) 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