class_name cCharacter extends Node const Map = preload("res://Scripts/Levels/lsOffice.gd") # --- Parameters --- @export_range(0, 20) var ai_level := 10 @export var min_interval := 8 @export var max_interval := 12 @export var reset_after_climax := true # --- Constants --- const MAX_STATE := 6 const DEBUG := true # --- Runtime --- var state: int = 0 var current_location: int = Global.LocationID.POWER_STATION var move_timer := 0.0 var stunted: bool = false func get_room_presence(room_id): if current_location != room_id: return -1 return state func _ready() -> void: randomize() _set_next_interval() # Pick the next random movement interval (3–5 sec) func _set_next_interval() -> void: move_timer = randf_range(min_interval, max_interval) # Rolls to see if the character may move func try_move(delta: float) -> bool: move_timer -= delta if move_timer > 0.0: return false # Interval completed → immediately pick the next one _set_next_interval() # Roll 1–20 like OG FNAF var roll := randi_range(1, 20) if DEBUG: print(name, " | AI:", ai_level, " | Roll:", roll) return roll <= ai_level func advance_state() -> void: if state >= MAX_STATE: if reset_after_climax: state = 0 else: state += 1 func _process(delta: float) -> void: if try_move(delta): if(stunted): stunted = false return advance_state() if (randi_range(1, 20) > 10): stunted = true match state: 0: pass # dormant 1: pass 2: pass 3: pass 4: pass 5: pass 6: pass