From 39794265b361c2f259a58d677f9e2e10b64d00af Mon Sep 17 00:00:00 2001 From: bd Date: Sun, 25 May 2025 15:17:58 -0400 Subject: Add more chaos to warlock bolts, fix crash with oob upgrades --- scripts/warlock_projectile.gd | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'scripts/warlock_projectile.gd') diff --git a/scripts/warlock_projectile.gd b/scripts/warlock_projectile.gd index 326dfba..2c3830f 100644 --- a/scripts/warlock_projectile.gd +++ b/scripts/warlock_projectile.gd @@ -3,11 +3,16 @@ extends CharacterBody2D var target : CharacterBody2D var speed : int var projectile_damage : int +var max_lifetime : float +var chaos_factor : float -func _physics_process(_delta: float): - if !is_instance_valid(target): +var _total_lifetime : float = 0.0 + +func _physics_process(delta: float): + if _total_lifetime > max_lifetime: queue_free() else: + _total_lifetime += delta _move_projectile() func _on_area_2d_body_entered(body: Node2D): @@ -16,8 +21,19 @@ func _on_area_2d_body_entered(body: Node2D): queue_free() func _move_projectile(): - var pos : Vector2 - pos = target.global_position - velocity = global_position.direction_to(pos) * speed - look_at(pos) + var pos : Vector2 = _get_target_position() + var curve_offset = Vector2( + sin(_total_lifetime * 5) * chaos_factor, + cos(_total_lifetime * 5) * chaos_factor, + ) + velocity = global_position.direction_to(pos) * speed + curve_offset move_and_slide() + +func _get_target_position() -> Vector2: + if is_instance_valid(target): + return target.global_position + else: + return Vector2(randf_range(-2.0, 2.0), randf_range(-2.0, 2.0)) + global_position + +#func _assign_new_target(): + #var enemies = get_tree().get_nodes_in_group("enemies") -- cgit v1.2.3