using System.Linq; namespace Turbo.Plugins.LightningMod { public class WizardHydraPlugin : AbstractSkillHandler, ISkillHandler { public int SpareResource { get; set; } private int CoeIndex = 0; public WizardHydraPlugin() : base(CastType.BuffSkill, CastPhase.AutoCast, CastPhase.Attack, CastPhase.AttackIdle) { Enabled = true; } public override void Load(IController hud) { base.Load(hud); AssignedSnoPower = Hud.Sno.SnoPowers.Wizard_Hydra; CreateCastRule() .IfInTown().ThenNoCastElseContinue() .IfCastingIdentify().ThenNoCastElseContinue() .IfCastingPortal().ThenNoCastElseContinue() .IfOnCooldown().ThenNoCastElseContinue() .IfCanCastBuff().ThenContinueElseNoCast() .IfCanCastSimple().ThenContinueElseNoCast() .IfTrue(ctx => ctx.Skill.Player.GetSetItemCount(59609) >=4 && ctx.Skill.Player.Powers.BuffIsActive(ctx.Hud.Sno.SnoPowers.SerpentsSparker.Sno) && ctx.Skill.Rune != 3).ThenContinueElseNoCast()//蛇套专用(提丰+蛇杖 + 非巨蛇符文) .IfTrue(ctx => { var HydraBuff = ctx.Skill.Player.Powers.GetBuff(ctx.Hud.Sno.SnoPowers.Wizard_Hydra.Sno); return !ctx.Skill.BuffIsActive || HydraBuff?.IconCounts[7] <= 8;//<=蛇头数 } ).ThenCastElseContinue() .IfEliteOrBossNearbyCursor(ctx => 15).ThenContinueElseNoCast()//精英BOSS哥布林在鼠标15码内时 .IfTrue(ctx => { IWorldCoordinate cursor = Hud.Window.CreateScreenCoordinate(Hud.Window.CursorX, Hud.Window.CursorY).ToWorldCoordinate(); var HydraCount = ctx.Hud.Game.Actors.Where(act => act.SummonerAcdDynamicId == ctx.Skill.Player.SummonerAcdDynamicId && ( act.SnoActor.Sno == ActorSnoEnum._wizard_hydra_defaultfire_pool || act.SnoActor.Sno == ActorSnoEnum._wizard_hydra_runearcane_pool || act.SnoActor.Sno == ActorSnoEnum._wizard_hydra_runefrost_pool || act.SnoActor.Sno == ActorSnoEnum._wizard_hydra_runelightning_pool ) && act.FloorCoordinate.XYZDistanceTo(cursor) <= 15).Count();//15码内多头蛇数量 var ArcaneDynamo = ctx.Skill.Player.Powers.GetBuff(ctx.Hud.Sno.SnoPowers.Wizard_Passive_ArcaneDynamo.Sno); bool a = (ctx.Skill.Player.Powers.BuffIsActive(ctx.Hud.Sno.SnoPowers.Wizard_Passive_ArcaneDynamo.Sno) ? ArcaneDynamo?.IconCounts[1] >= 5 : true);// 奥能迸进5层(不带该被动时不判断此层数) return HydraCount < 2 && a; }).ThenCastElseContinue() ; } } }