extends StaticBody2D @export var projectile_damage = 5 var projectile = preload("res://scenes/defenders/warlock_projectile.tscn") var path_name 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 var 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("../") path_name = null if (curr == null) else curr.get_parent().name func _on_tower_body_entered(body: Node2D): if "CrawlerSoldier" in body.name: select_target(get_node("Tower").get_overlapping_bodies()) func _on_tower_body_exited(_body: Node2D): select_target(get_node("Tower").get_overlapping_bodies()) func _on_fire_rate_timeout(): if (path_name != null): var tmp_projectile = projectile.instantiate() tmp_projectile.path_name = path_name tmp_projectile.projectile_damage = projectile_damage get_node("ProjectileContainer").call_deferred("add_child", tmp_projectile) tmp_projectile.global_position = $Aim.global_position