Пример #1
0
        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)
                       ));
        }
Пример #2
0
        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)
                       ));
        }