You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.8 KiB
53 lines
1.8 KiB
using BehaviorDesigner.Runtime.Tasks;
|
|
using GAS.Runtime;
|
|
using xFrame;
|
|
|
|
namespace CoreGame.Render
|
|
{
|
|
/// <summary>
|
|
/// 遍历可以释放的主动技能
|
|
/// </summary>
|
|
public class SelectCanCastActiveSkill : Conditional
|
|
{
|
|
public override TaskStatus OnUpdate()
|
|
{
|
|
var ownerEnt = Owner.GetEntity<CombatEntity>();
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|