Exemple #1
0
 public Composite CreateHunterBuffs()
 {
     WantedPet = "1";
     return(new PrioritySelector(
                new Decorator(
                    ctx => Me.CastingSpell != null && Me.CastingSpell.Name == "Revive " + WantedPet && Me.GotAlivePet,
                    new Action(ctx => SpellManager.StopCasting())),
                CreateWaitForCast(),
                CreateSpellBuffOnSelf("Aspect of the Hawk"),
                CreateSpellBuffOnSelf("Track Hidden"),
                //new ActionLogMessage(false, "Checking for pet"),
                new Decorator(
                    ret => !Me.GotAlivePet,
                    new Sequence(
                        new Action(ret => PetManager.CallPet(WantedPet)),
                        new Action(ret => Thread.Sleep(1000)),
                        new DecoratorContinue(
                            ret => !Me.GotAlivePet && SpellManager.CanCast("Revive Pet"),
                            new Sequence(
                                new Action(ret => SpellManager.Cast("Revive Pet")),
                                new Action(ret => StyxWoW.SleepForLagDuration()),
                                new WaitContinue(
                                    11,
                                    ret => !Me.IsCasting,
                                    new ActionAlwaysSucceed()))))),
                CreateSpellCast(
                    "Mend Pet",
                    ret =>
                    (Me.Pet.HealthPercent < 70 || (Me.Pet.HappinessPercent < 90 && TalentManager.HasGlyph("Mend Pet"))) && !Me.Pet.HasAura("Mend Pet"))
                ));
 }
Exemple #2
0
 public Composite CreateBeastMasterCombat()
 {
     WantedPet = "1";
     return(new PrioritySelector(
                new Decorator(
                    ret => !Me.GotAlivePet,
                    new Action(ret => PetManager.CallPet(WantedPet))),
                CreateEnsureTarget(),
                CreateHunterBackPedal(),
                // Make sure we're in range, and facing the damned target. (LOS check as well)
                CreateMoveToAndFace(35f, ret => Me.CurrentTarget),
                //Intimidation
                CreateSpellCast(
                    "Intimidation", ret => Me.CurrentTarget.IsAlive && Me.GotAlivePet &&
                    (Me.CurrentTarget.CurrentTarget == null || Me.CurrentTarget.CurrentTarget == Me)),
                // Always keep it up on our target!
                CreateSpellBuff("Hunter's Mark"),
                CreateHunterTrapOnAddBehavior(),
                new Decorator(
                    ret => Me.CurrentTarget.DistanceSqr < 5 * 5,
                    new PrioritySelector(
                        CreateSpellBuffOnSelf("Disengage"),
                        CreateSpellCast("Raptor Strike")
                        )),
                // Heal pet when below 70
                CreateSpellCast(
                    "Mend Pet",
                    ret =>
                    (Me.Pet.HealthPercent < 70 || (Me.Pet.HappinessPercent < 90 && TalentManager.HasGlyph("Mend Pet"))) && !Me.Pet.HasAura("Mend Pet")),
                CreateSpellCast(
                    "Concussive Shot",
                    ret => Me.CurrentTarget.CurrentTarget == null || Me.CurrentTarget.CurrentTarget == Me),
                //Rapid fire on elite
                CreateSpellBuffOnSelf("Rapid Fire", ret => CurrentTargetIsElite),
                CreateSpellBuff("Serpent Sting"),
                // Ignore these two when our pet is raging
                CreateSpellCast("Focus Fire", ret => !Me.Pet.HasAura("Bestial Wrath")),
                CreateSpellCast("Kill Shot", ret => !Me.Pet.HasAura("Bestial Wrath")),
                // Basically, cast it whenever its up.
                CreateSpellCast("Kill Command"),
                // Only really cast this when we need a sting refresh.
                CreateSpellCast(
                    "Cobra Shot",
                    ret => Me.CurrentTarget.HasAura("Serpent Sting") && Me.CurrentTarget.Auras["Serpent Sting"].TimeLeft.TotalSeconds < 3),
                // Focus dump on arcane shot, unless our pet has bestial wrath, then we use it for better DPS
                CreateSpellCast("Arcane Shot"),
                // For when we have no Focus
                CreateSpellCast("Steady Shot"),
                CreateAutoAttack(true)
                ));
 }
Exemple #3
0
 public Composite CreateWarlockPreCombatBuffs()
 {
     return(new PrioritySelector(
                CreateWaitForCast(),
                CreateSpellBuffOnSelf("Create Healthstone", ret => NeedToCreateHealthStone),
                CreateSpellBuffOnSelf("Demon Armor", ret => !Me.HasAura("Demon Armor") && !SpellManager.HasSpell("Fel Armor")),
                CreateSpellBuffOnSelf("Fel Armor", ret => !Me.HasAura("Fel Armor")),
                CreateSpellBuffOnSelf("Soul Link", ret => !Me.HasAura("Soul Link") && Me.GotAlivePet),
                new Decorator(
                    ret => !Me.GotAlivePet,
                    new Action(ret => PetManager.CallPet(WantedPet))),
                CreateSpellBuffOnSelf("Health Funnel", ret => Me.GotAlivePet && Me.Pet.HealthPercent < 60 && Me.HealthPercent > 40)
                ));
 }
Exemple #4
0
 public Composite CreateSurvivalCombat()
 {
     WantedPet = "1";
     return(new PrioritySelector(
                new Decorator(
                    ret => !Me.GotAlivePet,
                    new Action(ret => PetManager.CallPet(WantedPet))),
                CreateEnsureTarget(),
                CreateHunterBackPedal(),
                // Make sure we're in range, and facing the damned target. (LOS check as well)
                CreateMoveToAndFace(35f, ret => Me.CurrentTarget),
                // Always keep it up on our target!
                CreateSpellBuff("Hunter's Mark"),
                // Heal pet when below 70
                CreateSpellCast("Mend Pet", ret => Me.Pet.HealthPercent < 70 && !Me.Pet.HasAura("Mend Pet")),
                CreateSpellCast(
                    "Concussive Shot",
                    ret => Me.CurrentTarget.CurrentTarget == null || Me.CurrentTarget.CurrentTarget == Me),
                //Rapid fire on elite
                CreateSpellBuff("Rapid Fire", ret => CurrentTargetIsElite),
                //Cast when mob Hp below 20
                CreateSpellCast("Kill Shot", ret => Me.CurrentTarget.HealthPercent < 19),
                new Decorator(
                    ret => !Me.HasAura("Lock and Load"),
                    new PrioritySelector(
                        // The extra here 'flips' the explosive usage.
                        CreateSpellCast("Kill Command", ret => Me.FocusPercent == 100),
                        CreateSpellCast("Explosive Shot", ret => LastSpellCast != "Explosive Shot"),
                        CreateSpellCast("Steady Shot", ret => LastSpellCast != "Steady Shot"))),
                // Refresh when it wears off.
                CreateSpellBuff("Serpent Sting", ret => !Me.CurrentTarget.HasAura("Serpent Sting")),
                // Whenever it's not on CD
                CreateSpellCast("Explosive Shot"),
                // Whenever its not on CD
                CreateSpellCast("Black Arrow"),
                // Main DPS filler
                CreateSpellCast("Steady Shot"),
                CreateSpellCast("Arcane Shot"),
                CreateAutoAttack(true)
                ));
 }
Exemple #5
0
        public Composite CreateFrostMageCombat()
        {
            WantedPet = "Water Elemental";
            return(new PrioritySelector(
                       CreateEnsureTarget(),
                       //Move away from frozen targets
                       new Decorator(
                           ret => (Me.CurrentTarget.HasAura("Frost Nova") || Me.CurrentTarget.HasAura("Freeze")) && Me.CurrentTarget.DistanceSqr < 5 * 5,
                           new Action(
                               ret =>
            {
                Logger.Write("Getting away from frozen target");
                WoWPoint moveTo = WoWMathHelper.CalculatePointFrom(Me.Location, Me.CurrentTarget.Location, 10f);

                if (Navigator.CanNavigateFully(Me.Location, moveTo))
                {
                    Navigator.MoveTo(moveTo);
                }
            })),
                       CreateMoveToAndFace(34f, ret => Me.CurrentTarget),
                       CreateWaitForCast(true),
                       CreateCastPetActionOnLocation("Freeze", ret => !Me.CurrentTarget.HasAura("Frost Nova")),
                       CreateSpellBuff("Frost Nova", ret => NearbyUnfriendlyUnits.Any(u => u.DistanceSqr <= 8 * 8)),
                       CreateMagePolymorphOnAddBehavior(),
                       new Decorator(
                           ret => !Me.GotAlivePet,
                           new Action(ret => PetManager.CallPet(WantedPet))),
                       CreateSpellCast("Evocation", ret => Me.ManaPercent < 20),
                       CreateSpellCast("Counterspell", ret => Me.CurrentTarget.IsCasting),
                       CreateSpellCast("Mirror Image"),
                       CreateSpellCast("Time Warp"),
                       new Decorator(
                           ret => Me.CurrentTarget.HealthPercent > 50,
                           new Sequence(
                               new Action(ctx => Me.CurrentTarget.Face()),
                               new Action(ctx => StyxWoW.SleepForLagDuration()),
                               new PrioritySelector(CreateSpellCast("Flame Orb"))
                               )),
                       CreateSpellBuffOnSelf("Ice Barrier", ret => !Me.Auras.ContainsKey("Mana Shield")),
                       CreateSpellBuffOnSelf("Mana Shield", ret => !Me.Auras.ContainsKey("Ice Barrier") && Me.HealthPercent <= 50),
                       CreateSpellCast(
                           "Deep Freeze",
                           ret =>
                           (Me.ActiveAuras.ContainsKey("Fingers of Frost") || Me.CurrentTarget.HasAura("Frost Nova") || Me.CurrentTarget.HasAura("Freeze"))),
                       CreateSpellCast(
                           "Ice Lance",
                           ret =>
                           (Me.ActiveAuras.ContainsKey("Fingers of Frost") || Me.CurrentTarget.ActiveAuras.ContainsKey("Frost Nova") ||
                            Me.CurrentTarget.ActiveAuras.ContainsKey("Freeze"))),
                       //CreateSpellCast("Fireball", Me.ActiveAuras.ContainsKey("Brain Freeze")),
                       CreateSpellCast("Arcane Missiles", ret => Me.ActiveAuras.ContainsKey("Arcane Missiles!")),
                       new Decorator(
                           ret => Me.ActiveAuras.ContainsKey("Brain Freeze"),
                           new PrioritySelector(
                               CreateSpellCast("Frostfire Bolt"),
                               CreateSpellCast("Fireball")
                               )),
                       CreateSpellBuff("Fire Blast", ret => Me.CurrentTarget.HealthPercent < 10),
                       CreateSpellCast("Frostbolt")
                       ));
        }