public static Composite CreateShamanElementalPvPPullAndCombat() { return(new PrioritySelector( Safers.EnsureTarget(), Movement.CreateMoveToLosBehavior(), Movement.CreateFaceTargetBehavior(), Spell.WaitForCast(true), new Decorator( ret => !Common.InGCD, new PrioritySelector( Helpers.Common.CreateInterruptSpellCast(ret => StyxWoW.Me.CurrentTarget), new Decorator( ret => Common.GetImbue(StyxWoW.Me.Inventory.Equipped.MainHand) == Imbue.None, Common.CreateShamanImbueMainHandBehavior(Imbue.Flametongue)), Spell.BuffSelf("Lightning Shield"), Spell.BuffSelf("Spiritwalker's Grace", ret => StyxWoW.Me.IsMoving && StyxWoW.Me.Combat), Spell.BuffSelf("Elemental Mastery", ret => StyxWoW.Me.IsMoving && StyxWoW.Me.Combat && (!SpellManager.HasSpell("Spiritwalker's Grace") || SpellManager.Spells["Spiritwalker's Grace"].Cooldown && !StyxWoW.Me.HasAura("Spiritwalker's Grace"))), Spell.BuffSelf("Thunderstorm", ret => StyxWoW.Me.IsStunned() && Unit.NearbyUnfriendlyUnits.Any(u => u.Distance < 10f)), Totems.CreateTotemsPvPBehavior(), new Decorator( ret => Unit.UnfriendlyUnitsNearTarget(10f).Count() >= 3, new PrioritySelector( // Pop the ele on bosses Spell.BuffSelf("Fire Elemental Totem", ret => !StyxWoW.Me.Totems.Any(t => t.WoWTotem == WoWTotem.FireElemental)), Spell.CastOnGround("Earthquake", ret => StyxWoW.Me.CurrentTarget.Location), Spell.Cast("Chain Lightning", ret => Clusters.GetBestUnitForCluster(Unit.UnfriendlyUnitsNearTarget(15f), ClusterType.Chained, 12)) )), Spell.Buff("Flame Shock", true), Spell.Cast("Lava Burst"), Spell.Cast("Earth Shock", ret => StyxWoW.Me.HasAura("Lightning Shield", 5) && StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Flame Shock", true).TotalSeconds > 3), Spell.Cast("Unleash Elements", ret => StyxWoW.Me.IsMoving && !StyxWoW.Me.HasAura("Spiritwalker's Grace") && Common.IsImbuedForDPS(StyxWoW.Me.Inventory.Equipped.MainHand)), Spell.Cast("Chain Lightning", ret => Unit.UnfriendlyUnitsNearTarget(10f).Count() >= 2), Spell.Cast("Lightning Bolt") ) ), Movement.CreateMoveToTargetBehavior(true, 35f) )); }
public static Composite CreateShamanEnhancementPvPPullAndCombat() { return(new PrioritySelector( Safers.EnsureTarget(), Movement.CreateMoveToLosBehavior(), Movement.CreateFaceTargetBehavior(), Spell.WaitForCast(true), new Decorator( ret => !SpellManager.GlobalCooldown, new PrioritySelector( Helpers.Common.CreateAutoAttack(true), Helpers.Common.CreateInterruptSpellCast(ret => StyxWoW.Me.CurrentTarget), Common.CreateShamanImbueMainHandBehavior(Imbue.Windfury, Imbue.Flametongue), Common.CreateShamanImbueOffHandBehavior(Imbue.Frostbrand, Imbue.Flametongue), Spell.BuffSelf("Lightning Shield"), Spell.BuffSelf("Spiritwalker's Grace", ret => StyxWoW.Me.IsMoving && StyxWoW.Me.Combat), Spell.BuffSelf("Feral Spirit"), Totems.CreateTotemsPvPBehavior(), Spell.Cast("Stormstrike"), Spell.Cast("Primal Strike", ret => !SpellManager.HasSpell("Stormstrike")), Spell.Cast("Lava Lash", ret => StyxWoW.Me.Inventory.Equipped.OffHand != null && StyxWoW.Me.Inventory.Equipped.OffHand.ItemInfo.ItemClass == WoWItemClass.Weapon), new Decorator(ret => StyxWoW.Me.HasAura("Maelstrom Weapon", 5) && (StyxWoW.Me.GetAuraTimeLeft("Maelstom Weapon", true).TotalSeconds < 3000 || StyxWoW.Me.GetPredictedHealthPercent() > 90), new PrioritySelector( Spell.Cast("Chain Lightning", ret => Unit.UnfriendlyUnitsNearTarget(10f).Count() >= 2), Spell.Cast("Lightning Bolt") ) ), Spell.Cast("Unleash Elements"), Spell.Buff("Flame Shock", true, ret => StyxWoW.Me.HasAura("Unleash Wind") || !SpellManager.HasSpell("Unleash Elements")), Spell.Cast("Earth Shock", ret => StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Flame Shock", true).TotalSeconds > 6) ) ), Movement.CreateMoveToMeleeBehavior(true) )); }