ai/ai_state.cs
// AiState.cs
using Sandbox;

public abstract class AiState
{
    public AiBrain Brain { get; private set; }
    public abstract string StateName { get; }

    protected Fighter Fighter => Brain.Fighter;
    protected FighterMovement Movement => Brain.Movement;
    protected FighterCombat Combat => Brain.Combat;
    protected AiBlackboard Blackboard => Brain.Blackboard;

    public void Bind( AiBrain brain ) => Brain = brain;

    public virtual void OnEnter() { }
    public virtual void OnUpdate() { }
    public virtual void OnExit() { }

    /// <summary>
    /// Retourne une ligne de synthèse pour l'UI de debug/monitoring.
    /// </summary>
    public virtual string GetDebugStatus() => StateName;
}