Ability/AbilityOnce 建图期校验 abilityId 非空,与 BrainBuilder.RequireState 同一类"漏配即快速失败"约束保持一致,避免定制 AiScript 漏配 id 时产出静默 不作为的状态。同时补 4 个测试:Locomotion/Ability 的 OnExit 收尾行为,以及 两个原语对空 id 的报错行为。
从 PerceptionStateMachine 的 private static 辅助方法提升为公开原语,供后续 模块化重构(骨架+可插拔模块)与定制 AiScript 复用。新增 AbilityOnce: 只在进入时触发能力、不每帧重触发,修复用 Ability() 驱动死亡态时演出播完 被 Tick 无限重播的隐患(现有 PerceptionStateMachine 因 E001 死亡能力 id 为空未暴露,本次不改它,留待 T11 整体退役)。