extends Trap @onready var ball : Area2D = $Area2D var anglespeed = 0.3 var player_damage = 1 var enemy_damage = 10 @onready var dmg_id = Global.next_dmg_id var id_refreshing = false func _ready() -> void: rotate(randf() * TAU) anglespeed = anglespeed * (2 * randi_range(0,1) - 1) func _process(delta: float) -> void: rotate(anglespeed * delta * TAU) for target in ball.get_overlapping_areas(): damage_target(target) for target in ball.get_overlapping_bodies(): damage_target(target) func damage_target(target: CollisionObject2D): var dir = (ball.global_position - target.global_position).normalized() if(target.get_collision_layer_value(3)): target.hurt(player_damage, dir) else: target.hurt(enemy_damage, 2.5*dir, dmg_id) refresh_id() func refresh_id(): if not id_refreshing: id_refreshing = true await get_tree().create_timer(0.2).timeout id_refreshing = false dmg_id = Global.next_dmg_id