namespace Turbo.Plugins.LightningMod { using System.Linq; public class WitchDoctorSoulHarvestJadeHarvesterPlugin : AbstractSkillHandler, ISkillHandler { public int ActivationRange { get; set; } public WitchDoctorSoulHarvestJadeHarvesterPlugin() : base(CastType.BuffSkill, CastPhase.AutoCast, CastPhase.PreAttack, CastPhase.Attack, CastPhase.Move) { Enabled = true; ActivationRange = 18; } public override void Load(IController hud) { base.Load(hud); AssignedSnoPower = Hud.Sno.SnoPowers.WitchDoctor_SoulHarvest; CreateCastRule() .IfInTown().ThenNoCastElseContinue() .IfCastingIdentify().ThenNoCastElseContinue() .IfCastingPortal().ThenNoCastElseContinue() .IfOnCooldown().ThenNoCastElseContinue() .IfCanCastBuff().ThenContinueElseNoCast() .IfCanCastSimple().ThenContinueElseNoCast() .IfEnoughMonstersNearby(ctx => 18, ctx => 1).ThenContinueElseNoCast() .IfTrue(ctx => { return (Hud.Game.Me.GetSetItemCount(842970) >= 6);//玉魂6件 } ).ThenContinueElseNoCast() .IfSpecificBuffIsAboutToExpire(Hud.Sno.SnoPowers.WitchDoctor_SoulHarvest, 5, 300, 500).ThenCastElseContinue()//优先考虑减伤buff .IfTrue(ctx => { var monsters = Hud.Game.AliveMonsters.Where(m => ((m.SummonerAcdDynamicId == 0 && m.IsElite) || !m.IsElite) && m.FloorCoordinate.XYDistanceTo(Hud.Game.Me.FloorCoordinate) <= 18);//18码内除幻术以外怪 int Count = 0; bool RingOfEmptiness = Hud.Game.Me.Powers.BuffIsActive(Hud.Sno.SnoPowers.RingOfEmptiness.Sno, 0);//空虚之戒 foreach (var monster in monsters) { if(RingOfEmptiness) { if (monster.Haunted && monster.Locust) Count++;//虫群和蚀魂怪物计数 } else { if (monster.Haunted) Count++;//虫群和蚀魂怪物计数 } } return (Count >= 1); } ).ThenCastElseContinue() ; } } }