From 515a81c313d83195ea77c5ae5e222b0118276279 Mon Sep 17 00:00:00 2001 From: bd Date: Wed, 21 May 2025 16:50:44 -0400 Subject: Add wyvern logic and projectiles --- scenes/defenders/wyvern.gd | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 scenes/defenders/wyvern.gd (limited to 'scenes/defenders/wyvern.gd') diff --git a/scenes/defenders/wyvern.gd b/scenes/defenders/wyvern.gd new file mode 100644 index 0000000..8341d41 --- /dev/null +++ b/scenes/defenders/wyvern.gd @@ -0,0 +1,36 @@ +extends "res://scenes/defenders/base_defender.gd" + +var projectile: PackedScene = preload("res://scenes/defenders/wyvern_projectile.tscn") +var damage_tick_rate: float = 0.25 +var firing : bool = false + +func _ready(): + damage = 2 + fire_rate = 1.0 + +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() -- cgit v1.2.3