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