extends Node const ATTACK_RANGE := 2.0 const ATTACK_COOLDOWN := 1.5 const ATTACK_DAMAGE := 5.0 var attack_timer := 0.0 @onready var enemy: CharacterBody3D = get_parent() func _physics_process(delta: float) -> void: attack_timer -= delta if enemy.state != enemy.State.ATTACK: return if not is_instance_valid(enemy.target): enemy.state = enemy.State.RETURN return var dist := enemy.global_position.distance_to(enemy.target.global_position) if dist > ATTACK_RANGE: enemy.state = enemy.State.CHASE return if attack_timer <= 0: attack_timer = ATTACK_COOLDOWN EventBus.damage_requested.emit(enemy, enemy.target, ATTACK_DAMAGE) enemy.velocity.x = 0 enemy.velocity.z = 0