using System; using Colosseum.Enemy; using Unity.Behavior; using Unity.Properties; using UnityEngine; using Action = Unity.Behavior.Action; /// /// 최근 전투 부활 트리거에서 우선 압박할 대상을 선택합니다. /// [Serializable, GeneratePropertyBag] [NodeDescription( name: "Select Recent Revive Target", story: "최근 부활 트리거 대상을 [Target]으로 선택", category: "Action", id: "464c3911-46d3-4138-88cf-8ba696ba4c13")] public partial class SelectRecentReviveTargetAction : Action { [SerializeReference] public BlackboardVariable Target; [SerializeReference] public BlackboardVariable MaxAge = new BlackboardVariable(4f); [SerializeReference] public BlackboardVariable PreferCaster = new BlackboardVariable(true); [SerializeReference] public BlackboardVariable FallbackToRevivedTarget = new BlackboardVariable(true); protected override Status OnStart() { BossBehaviorRuntimeState runtimeState = GameObject.GetComponent(); if (runtimeState == null) return Status.Failure; GameObject resolvedTarget = runtimeState.ResolveRecentReviveTriggerTarget( MaxAge?.Value ?? 0f, PreferCaster?.Value ?? true, FallbackToRevivedTarget?.Value ?? true); if (resolvedTarget == null) return Status.Failure; Target.Value = resolvedTarget; runtimeState.SetCurrentTarget(resolvedTarget); runtimeState.LogDebug(nameof(SelectRecentReviveTargetAction), $"부활 트리거 대상 선택: {resolvedTarget.name}"); return Status.Success; } }