extends EnemyState class_name EnemyReload @export var reload_sound : AudioStreamPlayer3D @export var run_distance : float = 3 @export var body_turn_speed : float = 1 @onready var player = get_tree().current_scene.player var move_target var look_target var heartbeat : float = 3.0 var remaining_bullets func Enter(): super() remaining_bullets = enemy.max_ammo enemy.servo_single.play() func Exit(): super() enemy.ammo = enemy.max_ammo enemy.servo_single.play() func Update(delta): if heartbeat > 0: heartbeat -= delta else: update_waypoint_or_idle() if remaining_bullets > 0: if !reload_sound.is_playing(): remaining_bullets -= 1 reload_sound.play() else: finished_reload() func Physics_Update(delta): enemy.turret_look_next.look_at(look_target) enemy.turret_look.rotation = lerp(enemy.turret_look.rotation,Vector3(deg_to_rad(90),0,0),delta * enemy.turret_look_speed) var destination = enemy.nav_agent.get_next_path_position() var local_destination = destination - enemy.global_position var direction = local_destination.normalized() if enemy.global_position.distance_to(local_destination) > 1: enemy.velocity = direction * move_speed enemy.global_rotation.y = rotate_to_face2D(enemy,move_target,delta,turret_speed) func finished_reload(): if enemy.turret_look_next.is_colliding(): if enemy.turret_look_next.get_collider() is Player: Transitioned.emit(self,"attack") else: Transitioned.emit(self,"search") else: Transitioned.emit(self,"search")