using BehaviorDesigner.Runtime.Tasks; using GAS.Runtime; namespace CoreGame.Render { public class TryCastSkillAction : Action { public override TaskStatus OnUpdate() { var ownerEnt = Owner.GetEntity(); var ac = ownerEnt.aI; ac.abilitySeq = 0; var ass = ownerEnt.abilitySystem.AbilityContainer.QueryAbilitySpecArray; // 循环遍历所有的ability 轨道,指导普攻 var assCount = ass.Count; for (var index = 0; index < assCount; index++) { var ability = ass[index]; if (ability.Ability.Tag.AssetTag.HasTag(GTagLib.Solt_Active)) { if (ability.CanActivate() == AbilityActivateResult.Success) { ac.abilitySeq = ability.ctx.gaSeq; break; } } } // TraceLog.Debug("abilitySeq: "+ac.abilitySeq); if (ac.abilitySeq == 0) { if (ownerEnt.abilitySystem.HasAbilityProcess(GTagLib.Solt_Active)) return TaskStatus.Success; return TaskStatus.Failure; } ownerEnt.abilitySystem.TryActivateAbility_WithSeq(ac.abilitySeq); BlackboardSrv.SetAttackCount(ownerEnt.creationIndex); return TaskStatus.Success; } } }