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;
}
}