33 lines
908 B
GDScript
33 lines
908 B
GDScript
extends Tower
|
|
class_name SpeedyTower
|
|
|
|
var third_cooldown := 0.0
|
|
|
|
var time_since_firing_started := 0.0
|
|
var time_to_reach_max_speed := 3.0
|
|
var max_speed_multiplier := 2.0
|
|
var destination_multiplier := 0.0
|
|
|
|
func _ready() -> void:
|
|
cooldown = 1.0 / stats.fire_rate
|
|
destination_multiplier = 1.0 / max_speed_multiplier
|
|
|
|
|
|
func _process(delta: float) -> void:
|
|
other_cooldown -= delta
|
|
if !targeted_enemy:
|
|
acquire_target()
|
|
else:
|
|
if model.global_position.distance_to(targeted_enemy.global_position) > stats.fire_range:
|
|
targeted_enemy = null
|
|
time_since_firing_started = 0.0
|
|
third_cooldown = cooldown
|
|
if targeted_enemy:
|
|
time_since_firing_started += delta
|
|
var progress = clamp(time_since_firing_started / time_to_reach_max_speed, 0, 1.0)
|
|
third_cooldown = cooldown * (1.0 - (destination_multiplier * progress))
|
|
aim()
|
|
if other_cooldown <= 0:
|
|
shoot()
|
|
other_cooldown = third_cooldown
|