extends "res://scripts/base_defender.gd" var game_stats_config = preload("res://resources/game_stats_config.tres") var projectile: PackedScene = preload("res://scenes/wyvern_projectile.tscn") var damage_tick_rate: float var range_collision : CollisionShape2D var firing : bool = false func _ready(): damage = game_stats_config.wyvern_damage fire_rate = game_stats_config.wyvern_fire_rate damage_tick_rate = game_stats_config.wyvern_damage_tick_rate defender_range = game_stats_config.wyvern_defender_range range_collision = $Tower/CollisionShape2D range_collision.shape.radius = defender_range func _process(_delta): select_target() if firing: if target == null: $WyvernProjectile.queue_free() firing = false else: $WyvernProjectile.target = target $WyvernProjectile.move_projectile() func _on_tower_body_entered(_body: Node2D) -> void: var old_target : CharacterBody2D = target select_target() if old_target == null && old_target != target: $FireTimer.start(fire_rate) func _on_fire_timer_timeout(): if (target != null): var tmp_projectile = projectile.instantiate() tmp_projectile.target = target tmp_projectile.projectile_damage = damage tmp_projectile.damage_tick_rate = 0.25 add_child(tmp_projectile) tmp_projectile.global_position = $Aim.global_position firing = true $FireTimer.stop()