extends Area3D @export var dps: float @export var damage_timer: Timer var damage_targets: Array[Player] func _ready() -> void: body_entered.connect(on_body_entered) body_exited.connect(on_body_exited) func damage(): for target in damage_targets: if target.is_on_floor(): target.take_damage(int(dps*damage_timer.wait_time)) func on_body_entered(body: Node3D): if body is Player: damage_targets.append(body) func on_body_exited(body: Node3D): if body is Player: damage_targets.erase(body)