extends State class_name EnemyState @export var enemy : CharacterBody3D @export var move_speed : float = 3 @export var can_see : bool = false # indicates whether the enemy is able to see things in the state @export var time_to_lose_target = 1.0 @onready var target_lost_timer = time_to_lose_target func Update(delta): pass func move_target(): if enemy.player_last_seen != null: return enemy.player_last_seen elif enemy.points_of_interest.size() > 0: var move_point = {"loudness" : 0.0,"point" : Vector3.ZERO} for point in enemy.points_of_interest: if point["loudness"] > move_point["loudness"]: move_point = point return move_point["point"] else: Transitioned.emit(self,"idle") func attack_on_sight(): if can_see: if enemy.is_player_in_area() and enemy.is_player_visible(): Transitioned.emit(self,"attack") func search_on_lost_target(delta): if !enemy.is_player_visible(): Transitioned.emit(self,"attack")