extends "res://scripts/base_defender.gd" var projectile: PackedScene = preload("res://scenes/wyvern_projectile.tscn") var damage_tick_rate: float var range_collision : CollisionShape2D var firing : bool = false func _ready(): set_tower_stats(game_stats_config.defenders_index.WYVERN) reset_tower_range() reset_tower_sprite() func _process(delta): select_target() if firing: if target == null: $WyvernProjectile.queue_free() firing = false else: $WyvernProjectile.target = target $WyvernProjectile.move_projectile(delta) func _on_tower_body_entered(_body: Node2D) -> void: var old_target : CharacterBody2D = target select_target() if old_target == null && old_target != target: $FireTimer.start(tower_data["fire_delay"]) func _on_fire_timer_timeout(): if target && !firing: var stream : CharacterBody2D = _get_projectile() add_child(stream) stream.target = target stream.global_position = $Aim.global_position firing = true $FireTimer.stop() func _get_projectile() -> CharacterBody2D: var stream = projectile.instantiate() stream.projectile_damage = tower_data["damage"] stream.chaos_factor = tower_data["chaos_factor"] stream.damage_tick_rate = tower_data["damage_tick_rate"] return stream