diff options
author | bd <bdunahu@operationnull.com> | 2025-05-21 16:50:44 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-21 16:50:44 -0400 |
commit | 515a81c313d83195ea77c5ae5e222b0118276279 (patch) | |
tree | 61c3e90a84a92751ae485df7e4d276ce5a430454 /scenes/defenders/wyvern.gd | |
parent | bae54d556e064414eb1823764b5368a300f1d1e1 (diff) |
Add wyvern logic and projectiles
Diffstat (limited to 'scenes/defenders/wyvern.gd')
-rw-r--r-- | scenes/defenders/wyvern.gd | 36 |
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() |