using System.Linq; using Turbo.Plugins.glq; namespace Turbo.Plugins.LightningMod { public class NecDevourPlugin : AbstractSkillHandler, ISkillHandler { public NecDevourPlugin() : base(CastType.SimpleSkill, CastPhase.AutoCast, CastPhase.UseWpStart, CastPhase.Move, CastPhase.Attack, CastPhase.AttackIdle) { Enabled = false; } public override void Load(IController hud) { base.Load(hud); AssignedSnoPower = Hud.Sno.SnoPowers.Necromancer_Devour; CreateCastRule() .IfCanCastSkill(100, 150, 1000).ThenContinueElseNoCast() .IfInTown().ThenNoCastElseContinue() .IfCastingIdentify().ThenNoCastElseContinue() .IfCastingPortal().ThenNoCastElseContinue() .IfTrue(ctx => { return ctx.Skill.Rune == 3;//DevouringAura无效 }).ThenNoCastElseContinue() .IfTrue(ctx => ctx.Hud.Game.SpecialArea == SpecialArea.PvP || ctx.Skill.Player.Density.GetDensity(60) > 0).ThenContinueElseNoCast() .IfTrue(ctx => ctx.Skill.Player.Powers.BuffIsActive(ctx.Hud.Sno.SnoPowers.Necromancer_LandOfTheDead.Sno)).ThenCastElseContinue()//开大招时持续施放 .IfTrue(ctx => FleshCount() > 0).ThenContinueElseNoCast()//60码内有尸体 .IfTrue(ctx => (ctx.Hud.Game.Me.Defense.HealthPct < 70 || ctx.Hud.Game.Me.Defense.HealthPct < 95 - (FleshCount() * 3)) && ctx.Skill.Rune == 0).ThenCastElseContinue()//Cannibalize 回血符文 .IfTrue(ctx => ctx.Hud.Game.Me.Stats.ResourcePctEssence < 100).ThenCastElseContinue()//恢复资源 .IfTrue(ctx => { return ctx.Hud.Game.Me.GetSetItemCount(740282) >= 4 && (PublicClassPlugin.GetBuffCount(ctx.Hud, ctx.Hud.Sno.SnoPowers.Generic_P6ItemPassiveUniqueRing011.Sno, 1) < 25 || PublicClassPlugin.GetBuffLeftTime(ctx.Hud, ctx.Hud.Sno.SnoPowers.Generic_P6ItemPassiveUniqueRing011.Sno, 1) < 2);//保持死役4件buff }).ThenCastElseContinue() ; } private int FleshCount() { return Hud.Game.Actors.Count(actor => actor.SnoActor.Sno == ActorSnoEnum._p6_necro_corpse_flesh && actor.CentralXyDistanceToMe <= 60); } } }