diff options
author | bd <bdunahu@operationnull.com> | 2025-05-25 15:17:58 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-25 15:17:58 -0400 |
commit | 39794265b361c2f259a58d677f9e2e10b64d00af (patch) | |
tree | 5fb9b7f027c9f721964c4ea494ddb184e11da043 /scripts/warlock_projectile.gd | |
parent | 2e0c1c719db8bd6949a98678d0848c314bdaa0d7 (diff) |
Add more chaos to warlock bolts, fix crash with oob upgrades
Diffstat (limited to 'scripts/warlock_projectile.gd')
-rw-r--r-- | scripts/warlock_projectile.gd | 28 |
1 files changed, 22 insertions, 6 deletions
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") |