extends StaticBody2D @export var projectile_damage = 5 @onready var sprite_node = $Sprite2D var projectile = preload("res://scenes/defenders/warlock_projectile.tscn") var curr 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("../") 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 _on_fire_rate_timeout(): if (curr != null): var tmp_projectile = projectile.instantiate() tmp_projectile.curr = curr tmp_projectile.projectile_damage = projectile_damage get_node("ProjectileContainer").call_deferred("add_child", tmp_projectile) tmp_projectile.global_position = $Aim.global_position func handle_animation(): if (curr == null): sprite_node.idle_state() else: sprite_node.attack_state()