using System.Linq; namespace Turbo.Plugins.LightningMod { public class BarbarianWarCryPlugin : AbstractSkillHandler, ISkillHandler { public int CastBelowFuryPercentage { get; set; } public BarbarianWarCryPlugin() : base(CastType.BuffSkill, CastPhase.AutoCast, CastPhase.UseTpStart, CastPhase.UseWpStart, CastPhase.Move, CastPhase.PreAttack, CastPhase.Attack) { Enabled = false; CastBelowFuryPercentage = 50; } public override void Load(IController hud) { base.Load(hud); AssignedSnoPower = Hud.Sno.SnoPowers.Barbarian_WarCry; CreateCastRule() .IfInTown().ThenNoCastElseContinue() .IfCastingIdentify().ThenNoCastElseContinue() .IfCastingPortal().ThenNoCastElseContinue() .IfOnCooldown().ThenNoCastElseContinue() .IfCanCastBuff().ThenContinueElseNoCast() .IfCanCastSimple().ThenContinueElseNoCast() .IfBuffIsAboutToExpire(5000, 15000).ThenCastElseContinue() .IfPrimaryResourcePercentageIsBelow(CastBelowFuryPercentage).ThenCastElseContinue() .IfTrue(ctx => { var players = ctx.Hud.Game.Players.Where(p => !p.IsDead && p.SnoArea.Sno == hud.Game.Me.SnoArea.Sno && p.CentralXyDistanceToMe <= 200); return ctx.Skill.Player.Powers.BuffIsActive(ctx.Hud.Sno.SnoPowers.ChilaniksChain.Sno) && players.All(p => p.CentralXyDistanceToMe <= 50 && !p.Powers.BuffIsActive(Hud.Sno.SnoPowers.Generic_ActorGhostedBuff.Sno));//队友都在50码内且不是灵魂状态 } ).ThenCastElseContinue() .IfSpecificBuffIsAboutToExpireOnParty(Hud.Sno.SnoPowers.Barbarian_WarCry, 0, 200, 500, HeroClass.All, 100).ThenCastElseContinue() ; } } }