using BehaviorDesigner.Runtime.Tasks;
using GAS.Runtime;
using xFrame;
namespace CoreGame.Render
{
///
/// 遍历可以释放的主动技能
///
public class SelectCanCastActiveSkill : Conditional
{
public override TaskStatus OnUpdate()
{
var ownerEnt = Owner.GetEntity();
if (ownerEnt.abilitySystem.HasAbilityProcess(GTagLib.Solt_Active))
return TaskStatus.Failure;
var ass = ownerEnt.abilitySystem.AbilityContainer.QueryAbilitySpecArray;
var ac = ownerEnt.aI;
ac.abilitySeq = 0;
// 循环遍历所有的ability 轨道,指导普攻
for (int i = 0; i < ass.Count; i++)
{
var aga = ass[i];
var gameplayTagContainer = aga.Ability.Tag.AssetTag;
if (gameplayTagContainer.HasTag(GTagLib.Solt_Active))
{
if (aga.CanActivate() == AbilityActivateResult.Success)
{
ac.abilitySeq = aga.ctx.gaSeq;
XLog.LogDebug($"ai select ga {aga.Ability.Name} - {ac.abilitySeq} : {ownerEnt} ");
return TaskStatus.Success;
}
continue;
}
if (gameplayTagContainer.HasTag(GTagLib.Skill_ShotGun))
{
if (ac.abilitySeq == 0 && aga.CanActivate() == AbilityActivateResult.Success)
{
ac.abilitySeq = aga.ctx.gaSeq;
// XLog.LogDebug($"ai select ga {aga.Ability.Name} - {ac.abilitySeq} : {ownerEnt} ");
return TaskStatus.Success;
}
}
}
return TaskStatus.Failure;
}
}
}