extends StaticBody2D @onready var sprite_node = $Sprite2D var defender_range: float var damage: int var curr : PathFollow2D func _on_tower_body_entered(_body: Node2D): select_target(get_node("Tower").get_overlapping_bodies()) handle_animation() func _on_tower_body_exited(_body: Node2D): select_target(get_node("Tower").get_overlapping_bodies()) handle_animation() func handle_animation(): if (curr == null): sprite_node.idle_state() else: sprite_node.attack_state() func select_target(targets): var tmp = [] for i in targets: if "Crawler" in i.name: tmp.append(i) # this is all to select the furthest target on the track curr = null for i in tmp: if curr == null: curr = i.get_node("../") else: if i.get_parent().get_progress() > curr.get_progress(): curr = i.get_node("../")