The_Dark_Side_of_Earth/traps/morning_star.gd

29 lines
852 B
GDScript3
Raw Normal View History

2025-09-18 18:10:44 +02:00
extends Trap
2025-09-16 19:12:40 +02:00
@onready var ball : Area2D = $Area2D
2025-10-14 16:09:40 +02:00
var angular_speed = 0.3
2025-09-16 19:12:40 +02:00
var player_damage = 1
var enemy_damage = 10
@onready var dmg_id = Global.next_dmg_id
var id_refreshing = false
2025-09-16 19:12:40 +02:00
func _ready() -> void:
2025-10-14 16:09:40 +02:00
# Randomize starting position and rotation direction
2025-09-16 19:12:40 +02:00
rotate(randf() * TAU)
2025-10-14 16:09:40 +02:00
angular_speed = angular_speed * (2 * randi_range(0,1) - 1)
2025-09-16 19:12:40 +02:00
2025-09-23 12:36:15 +02:00
func _process(delta: float) -> void:
2025-10-14 16:09:40 +02:00
rotate(angular_speed * delta * TAU)
2025-09-16 19:12:40 +02:00
for target in ball.get_overlapping_areas():
damage_target(target)
2025-10-14 16:09:40 +02:00
2025-09-16 19:12:40 +02:00
for target in ball.get_overlapping_bodies():
damage_target(target)
2025-09-16 19:12:40 +02:00
func damage_target(target: CollisionObject2D):
2025-10-14 16:09:40 +02:00
# Targets are knocked away from the ball
2025-09-17 16:43:44 +02:00
var dir = (ball.global_position - target.global_position).normalized()
2025-09-16 19:12:40 +02:00
if(target.get_collision_layer_value(3)):
target.hurt(player_damage, dir)
else:
target.hurt(enemy_damage, 2.5*dir, dmg_id)