summaryrefslogtreecommitdiff
path: root/scenes/defenders/wyvern.gd
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-05-21 16:50:44 -0400
committerbd <bdunahu@operationnull.com>2025-05-21 16:50:44 -0400
commit515a81c313d83195ea77c5ae5e222b0118276279 (patch)
tree61c3e90a84a92751ae485df7e4d276ce5a430454 /scenes/defenders/wyvern.gd
parentbae54d556e064414eb1823764b5368a300f1d1e1 (diff)
Add wyvern logic and projectiles
Diffstat (limited to 'scenes/defenders/wyvern.gd')
-rw-r--r--scenes/defenders/wyvern.gd36
1 files changed, 36 insertions, 0 deletions
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()