Ejemplo n.º 1
0
        public override void Pulse()        // Updated for Legion (tested and working for single target)
        {
            if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted)
            {
                SelectRotation(4, 2, 1);
                SelectRotation(4, 3, 1);
            }

            //Healthstone - Potion
            if ((WoW.CanCast("Healthstone") || WoW.CanCast("Potion")) &&
                (WoW.ItemCount("Healthstone") >= 1 || WoW.ItemCount("Potion") >= 1) &&
                (!WoW.ItemOnCooldown("Healthstone") || !WoW.ItemOnCooldown("Potion")) &&
                !WoW.PlayerHasBuff("Feign Death") &&
                WoW.HealthPercent <= 30 &&
                !WoW.IsMounted &&
                WoW.HealthPercent != 0)
            {
                Thread.Sleep(500);
                WoW.CastSpell("Healthstone");
                WoW.CastSpell("Potion");
                return;
            }

            //Exhilaration
            if (WoW.CanCast("Exhilaration") &&
                WoW.HealthPercent <= 20 &&
                !WoW.IsMounted &&
                !WoW.PlayerHasBuff("Feign Death") &&
                WoW.HealthPercent != 0)
            {
                WoW.CastSpell("Exhilaration");
                return;
            }

            //Counter Shot
            if (WoW.CanCast("Counter Shot") &&
                WoW.TargetIsCastingAndSpellIsInterruptible &&
                !WoW.IsSpellOnCooldown("Counter Shot") &&
                WoW.TargetIsCasting &&
                WoW.IsSpellInRange("Counter Shot") &&
                WoW.TargetPercentCast > 75)
            {
                WoW.CastSpell("Counter Shot");
                return;
            }

            ////Revive Pet Call pet
            if ((!WoW.HasPet || WoW.PetHealthPercent <= 0) &&
                !WoW.IsMounted &&
                WoW.HealthPercent != 0 &&
                !WoW.PlayerHasBuff("Feign Death"))
            {
                WoW.CastSpell("Heart of the Phoenix");
                WoW.CastSpell("Revive Pet");
                Thread.Sleep(500);
                WoW.CastSpell("Call Pet");
                return;
            }

            //Voley
            if (WoW.CanCast("Voley") &&
                !WoW.PlayerHasBuff("Feign Death") &&
                !WoW.PlayerHasBuff("Voley") &&
                WoW.HealthPercent != 0 &&
                WoW.Talent(6) == 3)
            {
                WoW.CastSpell("Voley");
                return;
            }

            //Intimidation //Binding Shot
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0 &&
                ((WoW.CanCast("Intimidation") && WoW.Talent(5) == 3) || (WoW.CanCast("Binding Shot") && WoW.Talent(5) == 1)))
            {
                WoW.CastSpell("Binding Shot");
                WoW.CastSpell("Intimidation");
                return;
            }

            //Freezing Trap
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_X) < 0 &&
                WoW.CanCast("Freezing Trap") &&
                !WoW.IsMounted)
            {
                WoW.CastSpell("Freezing Trap");
                return;
            }

            //Tar Trap
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_C) < 0 &&
                WoW.CanCast("Tar Trap") &&
                !WoW.IsMounted)
            {
                WoW.CastSpell("Tar Trap");
                return;
            }

            if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent != 0)
            {
                //Cooldowns
                if (UseCooldowns)
                {
                }

                //Stampede
                if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0 &&
                    WoW.CanCast("Stampede") &&
                    WoW.Talent(7) == 1)
                {
                    WoW.CastSpell("Stampede");
                    return;
                }

                /*/Aspect of the Wild
                 * if (WoW.CanCast("Aspect of the Wild")
                 *  && !WoW.PlayerHasBuff("Aspect of the Turtle")
                 *  && WoW.PlayerHasBuff("Bestial Wrath")
                 *  && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 1300)
                 * {
                 *  WoW.CastSpell("Aspect of the Wild");
                 * }*/

                //SINGLE TARGET
                //Bestial Wrath
                if ((combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) &&
                    WoW.CanCast("Bestial Wrath") &&
                    !WoW.PlayerHasBuff("Aspect of the Turtle") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    (WoW.Focus >= 97 || (WoW.Focus >= 90 && WoW.CanCast("Aspect of the Wild"))))
                {
                    WoW.CastSpell("Bestial Wrath");
                    WoW.CastSpell("Aspect of the Wild");
                    //WoW.CastSpell("A Murder of Crows");
                    WoW.CastSpell("Kill Command");
                }

                //Dire Frenzy
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    (WoW.CanCast("Dire Frenzy") || WoW.SpellCooldownTimeRemaining("Dire Frenzy") <= 100) &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 2 &&
                    ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy") || WoW.PlayerSpellCharges("Dire Frenzy") >= 2))
                {
                    WoW.CastSpell("Titan's Thunder");
                    WoW.CastSpell("Dire Frenzy");
                    return;
                }

                //A Murder of Crows
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("A Murder of Crows")
                    //&& WoW.PlayerHasBuff("Bestial Wrath")
                    && WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(6) == 1 &&
                    WoW.Focus >= 30)
                {
                    WoW.CastSpell("A Murder of Crows");
                    return;
                }

                // Dire beast
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Dire Beast") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) != 2)
                {
                    WoW.CastSpell("Dire Beast");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Kill Command
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    (WoW.SpellCooldownTimeRemaining("Kill Command") <= 100 || WoW.CanCast("Kill Command")) &&
                    WoW.Focus >= 30)
                {
                    WoW.CastSpell("Kill Command");
                    return;
                }

                //Chimaera Shot
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Chimaera Shot") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 3 &&
                    WoW.Focus < 80)
                {
                    WoW.CastSpell("Chimaera Shot");
                    return;
                }

                //Cobra Shot
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    ((WoW.Focus >= 90) || (WoW.PlayerHasBuff("Bestial Wrath") && WoW.Focus >= 32)) &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.CanCast("Cobra Shot") &&
                    !WoW.CanCast("Bestial Wrath"))
                {
                    WoW.CastSpell("Cobra Shot");
                    return;
                }

                //AOE

                //Bestial Wrath
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Bestial Wrath") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    !WoW.PlayerHasBuff("Aspect of the Turtle"))
                {
                    WoW.CastSpell("Bestial Wrath");
                    return;
                }

                // Dire beast
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Dire Beast") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) != 2)
                {
                    WoW.CastSpell("Dire Beast");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Dire Frenzy
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Dire Frenzy") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 2)
                {
                    WoW.CastSpell("Titan's Thunder");
                    WoW.CastSpell("Dire Frenzy");
                    return;
                }

                //Barrage
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Barrage") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(6) == 2 &&
                    (WoW.Focus >= 60))
                {
                    WoW.CastSpell("Barrage");
                    return;
                }

                //Multishot
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Multi-Shot") &&
                    WoW.IsSpellInRange("Multi-Shot") &&
                    WoW.Focus >= 40)
                {
                    WoW.CastSpell("Multi-Shot");
                    return;
                }

                //Chimaera Shot
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Chimaera Shot") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 3 &&
                    WoW.Focus < 80)
                {
                    WoW.CastSpell("Chimaera Shot");
                    return;
                }

                //CLEAVE
                //Multishot - Beast Cleave uptime
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Multi-Shot") &&
                    (/*!WoW.PetHasBuff("BeastCleave") ||*/ WoW.PetBuffTimeRemaining("BeastCleave") < 0.5) &&
                    WoW.IsSpellInRange("Multi-Shot") &&
                    !WoW.CanCast("Bestial Wrath") &&
                    !WoW.PlayerHasBuff("Bestial Wrath") &&
                    WoW.Focus >= 40)
                {
                    WoW.CastSpell("Multi-Shot");
                    return;
                }

                //Dire Frenzy
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Dire Frenzy") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 2 &&
                    ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy") || WoW.PlayerSpellCharges("Dire Frenzy") >= 2))
                {
                    WoW.CastSpell("Titan's Thunder");
                    WoW.CastSpell("Dire Frenzy");
                    return;
                }

                //A Murder of Crows
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("A Murder of Crows") &&
                    WoW.PlayerHasBuff("Bestial Wrath") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(6) == 1 &&
                    WoW.Focus >= 30)
                {
                    WoW.CastSpell("A Murder of Crows");
                    return;
                }

                // Dire beast
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Dire Beast") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) != 2)
                {
                    WoW.CastSpell("Dire Beast");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Barrage
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Barrage") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(6) == 2 &&
                    (WoW.Focus >= 60))
                {
                    WoW.CastSpell("Barrage");
                    return;
                }

                //Kill Command
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Kill Command") &&
                    WoW.Focus >= 30)
                {
                    WoW.CastSpell("Kill Command");
                    return;
                }

                //Chimaera Shot
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Chimaera Shot") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 3 &&
                    WoW.Focus < 80)
                {
                    WoW.CastSpell("Chimaera Shot");
                    return;
                }

                //Cobra Shot
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    ((WoW.Focus >= 85) || (WoW.PlayerHasBuff("Bestial Wrath") && (WoW.Focus >= 32))) &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.CanCast("Cobra Shot") &&
                    !WoW.CanCast("Bestial Wrath"))
                {
                    WoW.CastSpell("Cobra Shot");
                    return;
                }

                //Mend Pet
                if (WoW.HasPet &&
                    WoW.CanCast("Mend Pet") &&
                    WoW.HealthPercent != 0 &&
                    WoW.PetHealthPercent <= 75 &&
                    !WoW.PlayerHasBuff("Feign Death"))
                {
                    WoW.CastSpell("Mend Pet");
                    return;
                }
            }
        }
Ejemplo n.º 2
0
        public override void Pulse()
        {
            //Combat Time
            if (CombatTime.IsRunning && !WoW.IsInCombat)
            {
                CombatTime.Reset();
            }
            if (!CombatTime.IsRunning && WoW.IsInCombat)
            {
                CombatTime.Start();
            }

            //Dreadstalkers Time Remaining (12000 ms) (EXPERIMENTAL)
            if (DreadstalkersTime.IsRunning && WoW.DreadstalkersCount == 0)
            {
                DreadstalkersTime.Reset();
            }
            if (!DreadstalkersTime.IsRunning && WoW.DreadstalkersCount >= 1)
            {
                DreadstalkersTime.Start();
            }

            //Imp Time Remaining (12000 ms) (EXPERIMENTAL)
            if (ImpTime.IsRunning && WoW.WildImpsCount == 0)
            {
                ImpTime.Reset();
            }
            if (!ImpTime.IsRunning && WoW.WildImpsCount >= 1)
            {
                ImpTime.Start();
            }

            var DreadstalkersRemainingDuration = Convert.ToSingle((12000f - DreadstalkersTime.ElapsedMilliseconds) / 1000f);
            var ImpsRemainingDuration          = Convert.ToSingle((12000f - ImpTime.ElapsedMilliseconds) / 1000f + OneFiveCast);

            // Single Target Rotation
            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                // Normal Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting)
                {
                    Log.Write("Imp Time: " + ImpsRemainingDuration, Color.DarkViolet);
                    Log.Write("Dread Time: " + DreadstalkersRemainingDuration, Color.DarkViolet);
                    //Implosion (if talent)
                    if (WoW.CanCast("Implosion") && Implosion && WoW.IsSpellInRange("Doom"))
                    {
                        if (ImpsRemainingDuration <= SBExecuteTime && WoW.PlayerHasBuff("DemonicSynergy"))
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy"))
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                    }

                    //Shadowflame (if talent)
                    if (WoW.CanCast("Shadowflame") && Shadowflame && WoW.IsSpellInRange("Doom") && WoW.TargetHasDebuff("Shadowflame") &&
                        WoW.TargetDebuffTimeRemaining("Shadowflame") < TwoSecondCast + 2)
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    //Service Pet (if talent)
                    if (WoW.CanCast("GrimoireFelguard") && GrimoireOfService && WoW.IsSpellInRange("Doom") && WoW.CurrentSoulShards >= 1 && boss)
                    {
                        WoW.CastSpell("GrimoireFelguard");
                        empowered = false;
                        return;
                    }

                    // Doomguard
                    if (WoW.CanCast("Doomguard") && WoW.CurrentSoulShards >= 1 && boss && WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Doomguard");
                        empowered = false;
                        return;
                    }

                    //Felstorm
                    if (WoW.CanCast("Felstorm") && WoW.HasPet && WoW.PetHasBuff("DemonicEmpowerment"))
                    {
                        WoW.CastSpell("Felstorm");
                        return;
                    }

                    //Call Dreadstalkers (if NOT talent Summon Darkglare)
                    if (WoW.CanCast("CallDreadstalkers") && !SummonDarkglare && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("CallDreadstalkers");
                        empowered = false;
                        DreadstalkersTime.Restart();
                        return;
                    }

                    //Hand Of Guldan (if NOT talent Summon Darkglare)
                    if (WoW.CanCast("HandOfGuldan") && !SummonDarkglare && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("HandOfGuldan");
                        empowered = false;
                        threeimps = false;
                        ImpTime.Restart();
                        return;
                    }

                    //Summon Darkglare (if talent)
                    if (WoW.CanCast("SummonDarkglare") && SummonDarkglare && WoW.CurrentSoulShards >= 1 && WoW.TargetHasDebuff("Doom") && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        if (WoW.LastSpell == "HandOfGuldan" || WoW.LastSpell == "CallDreadstalkers")
                        {
                            WoW.CastSpell("SummonDarkglare");
                            Log.Write("1", Color.Red);
                            empowered = false;
                            return;
                        }
                        if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") > 5 && WoW.CurrentSoulShards < 3)
                        {
                            WoW.CastSpell("SummonDarkglare");
                            Log.Write("2", Color.Red);
                            empowered = false;
                            return;
                        }
                        if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") <= gcd && WoW.CurrentSoulShards >= 3)
                        {
                            WoW.CastSpell("SummonDarkglare");
                            Log.Write("3", Color.Red);
                            empowered = false;
                            return;
                        }
                        if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") <= gcd && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling"))
                        {
                            WoW.CastSpell("SummonDarkglare");
                            Log.Write("4", Color.Red);
                            empowered = false;
                            return;
                        }
                    }

                    //Call Dreadstalkers (if talent Summon Darkglare)
                    if (WoW.CanCast("CallDreadstalkers") && SummonDarkglare && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 3)
                        {
                            WoW.CastSpell("CallDreadstalkers");
                            empowered = false;
                            DreadstalkersTime.Restart();
                            return;
                        }
                        if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling"))
                        {
                            WoW.CastSpell("CallDreadstalkers");
                            empowered = false;
                            DreadstalkersTime.Restart();
                            return;
                        }
                    }

                    //Hand Of Guldan
                    if (WoW.CanCast("HandOfGuldan") && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 3 && WoW.LastSpell == "CallDreadstalkers" && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("HandOfGuldan");
                        empowered = false;
                        threeimps = true;
                        ImpTime.Restart();
                        return;
                    }

                    //Hand Of Guldan (if talent Summon Darkglare)
                    if (WoW.CanCast("HandOfGuldan") && SummonDarkglare && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 5 &&
                        WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= OneFiveCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("HandOfGuldan");
                        threeimps = false;
                        empowered = false;
                        ImpTime.Restart();
                        return;
                    }

                    //Hand Of Guldan (if talent Summon Darkglare)
                    if (WoW.CanCast("HandOfGuldan") && SummonDarkglare && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") > 2 &&
                        WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("HandOfGuldan");
                        threeimps = false;
                        empowered = false;
                        ImpTime.Restart();
                        return;
                    }

                    //Demonic Empowerment (if last spell was Hand Of Guldan)
                    if (WoW.CanCast("DemonicEmpowerment") && WoW.LastSpell == "HandOfGuldan" && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("DemonicEmpowerment");
                        empowered = true;
                        return;
                    }

                    //Demonic Empowerment
                    if (WoW.CanCast("DemonicEmpowerment") && (!empowered || !WoW.PetHasBuff("DemonicEmpowerment")) && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("DemonicEmpowerment");
                        empowered = true;
                        return;
                    }

/*
 *                                      //Doom (if NOT talent Hand of Doom)
 *                                      if(WoW.CanCast("Doom") && (!WoW.TargetHasDebuff("Doom") || WoW.TargetDebuffTimeRemaining("Doom") < 5) && WoW.IsSpellInRange("Doom"))
 *                                      {
 *                                              WoW.CastSpell("Doom");
 *                                              return;
 *                                      }
 *
 *                                      //Soul Harvest
 *                                      if(WoW.CanCast("SoulHarvest") && WoW.IsSpellInRange("Doom"))
 *                                      {
 *                                              WoW.CastSpell("SoulHarvest");
 *                                              return;
 *                                      }
 */
                    //Shadowflame (if talent)
                    if (WoW.CanCast("Shadowflame") && Shadowflame && WoW.IsSpellInRange("Doom") && WoW.PlayerSpellCharges("Shadowflame") == 2)
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    //Thal'kiel's Consumption
                    if (WoW.CanCast("TK") && WoW.DreadstalkersCount >= 1 && DreadstalkersRemainingDuration > TwoSecondCast && ((WoW.WildImpsCount >= 1 && !threeimps) || WoW.WildImpsCount >= 2) &&
                        ImpsRemainingDuration > TwoSecondCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("TK");
                        return;
                    }

                    //Life Tap
                    if (WoW.CanCast("LifeTap") && WoW.Mana <= 30)
                    {
                        WoW.CastSpell("LifeTap");
                        return;
                    }

                    //Demonwrath (if moving)
                    if (WoW.CanCast("Demonwrath") && WoW.IsMoving && !WoW.PlayerHasBuff("Norgannon"))
                    {
                        WoW.CastSpell("Demonwrath");
                        return;
                    }

                    //Demonbolt (if talent)
                    if (WoW.CanCast("Demonbolt") && Demonbolt && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("Demonbolt");
                        return;
                    }

                    //Shadowbolt (if NOT Demonbolt talent)
                    if (WoW.CanCast("Shadowbolt") && !Demonbolt && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("Demonbolt");
                        return;
                    }

                    //Life Tap
                    if (WoW.CanCast("LifeTap") && WoW.Mana < 100)
                    {
                        WoW.CastSpell("LifeTap");
                        return;
                    }
                }
            }

            // AoE Rotation
            if (combatRoutine.Type == RotationType.AOE)
            {
                Log.Write("Imp Time: " + ImpsRemainingDuration, Color.DarkViolet);
                // AoE Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting)
                {
                    //Implosion (if talent)
                    if (WoW.CanCast("Implosion") && Implosion && WoW.IsSpellInRange("Doom"))
                    {
                        if (ImpsRemainingDuration <= SBExecuteTime && WoW.PlayerHasBuff("DemonicSynergy"))
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy"))
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.WildImpsCount == 1 && ImpsRemainingDuration <= SBExecuteTime)
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1)
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                    }

                    //Shadowflame (if talent)
                    if (WoW.CanCast("Shadowflame") && Shadowflame && WoW.IsSpellInRange("Doom") && WoW.TargetHasDebuff("Shadowflame") &&
                        WoW.TargetDebuffTimeRemaining("Shadowflame") < TwoSecondCast + 2)
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    //Felstorm
                    if (WoW.CanCast("Felstorm") && WoW.HasPet && WoW.PetHasBuff("DemonicEmpowerment"))
                    {
                        WoW.CastSpell("Felstorm");
                        return;
                    }

                    //Call Dreadstalkers (if NOT talent Summon Darkglare or Implosion)
                    if (WoW.CanCast("CallDreadstalkers") && !SummonDarkglare && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && !Implosion && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("CallDreadstalkers");
                        empowered = false;
                        DreadstalkersTime.Restart();
                        return;
                    }

                    //Hand Of Guldan (if NOT talent Summon Darkglare)
                    if (WoW.CanCast("HandOfGuldan") && !SummonDarkglare && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("HandOfGuldan");
                        empowered = false;
                        threeimps = false;
                        ImpTime.Restart();
                        return;
                    }

                    //Summon Darkglare (if talent)
                    if (WoW.CanCast("SummonDarkglare") && SummonDarkglare && WoW.CurrentSoulShards >= 1 && WoW.TargetHasDebuff("Doom") && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        if (WoW.LastSpell == "HandOfGuldan" || WoW.LastSpell == "CallDreadstalkers")
                        {
                            WoW.CastSpell("SummonDarkglare");
                            Log.Write("1", Color.Red);
                            empowered = false;
                            return;
                        }
                        if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") > 5 && WoW.CurrentSoulShards < 3)
                        {
                            WoW.CastSpell("SummonDarkglare");
                            Log.Write("2", Color.Red);
                            empowered = false;
                            return;
                        }
                        if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") <= gcd && WoW.CurrentSoulShards >= 3)
                        {
                            WoW.CastSpell("SummonDarkglare");
                            Log.Write("3", Color.Red);
                            empowered = false;
                            return;
                        }
                        if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") <= gcd && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling"))
                        {
                            WoW.CastSpell("SummonDarkglare");
                            Log.Write("4", Color.Red);
                            empowered = false;
                            return;
                        }
                    }

                    //Call Dreadstalkers (if talent Summon Darkglare and not Implosion)
                    if (WoW.CanCast("CallDreadstalkers") && SummonDarkglare && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && !Implosion && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 3)
                        {
                            WoW.CastSpell("CallDreadstalkers");
                            empowered = false;
                            DreadstalkersTime.Restart();
                            return;
                        }
                        if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling"))
                        {
                            WoW.CastSpell("CallDreadstalkers");
                            empowered = false;
                            DreadstalkersTime.Restart();
                            return;
                        }
                    }

                    //Hand Of Guldan
                    if (WoW.CanCast("HandOfGuldan") && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 3 && WoW.LastSpell == "CallDreadstalkers" && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("HandOfGuldan");
                        empowered = false;
                        threeimps = true;
                        ImpTime.Restart();
                        return;
                    }

                    //Hand Of Guldan (if talent Summon Darkglare)
                    if (WoW.CanCast("HandOfGuldan") && SummonDarkglare && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 5 &&
                        WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= OneFiveCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("HandOfGuldan");
                        threeimps = false;
                        empowered = false;
                        ImpTime.Restart();
                        return;
                    }

                    //Hand Of Guldan (if talent Summon Darkglare)
                    if (WoW.CanCast("HandOfGuldan") && SummonDarkglare && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") > 2 &&
                        WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("HandOfGuldan");
                        threeimps = false;
                        empowered = false;
                        ImpTime.Restart();
                        return;
                    }

                    //Demonic Empowerment (if last spell was Hand Of Guldan)
                    if (WoW.CanCast("DemonicEmpowerment") && WoW.LastSpell == "HandOfGuldan" && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("DemonicEmpowerment");
                        empowered = true;
                        return;
                    }

                    //Demonic Empowerment
                    if (WoW.CanCast("DemonicEmpowerment") && (!empowered || !WoW.PetHasBuff("DemonicEmpowerment")) && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("DemonicEmpowerment");
                        empowered = true;
                        return;
                    }

/*
 *                                      //Doom (if NOT talent Hand of Doom)
 *                                      if(WoW.CanCast("Doom") && (!WoW.TargetHasDebuff("Doom") || WoW.TargetDebuffTimeRemaining("Doom") < 5) && WoW.IsSpellInRange("Doom"))
 *                                      {
 *                                              WoW.CastSpell("Doom");
 *                                              return;
 *                                      }
 *
 *                                      //Soul Harvest
 *                                      if(WoW.CanCast("SoulHarvest") && WoW.IsSpellInRange("Doom"))
 *                                      {
 *                                              WoW.CastSpell("SoulHarvest");
 *                                              return;
 *                                      }
 */
                    //Shadowflame (if talent)
                    if (WoW.CanCast("Shadowflame") && Shadowflame && WoW.IsSpellInRange("Doom") && WoW.PlayerSpellCharges("Shadowflame") == 2)
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    //Thal'kiel's Consumption
                    if (WoW.CanCast("TK") && ((WoW.DreadstalkersCount >= 1 && DreadstalkersRemainingDuration > TwoSecondCast) || Implosion) &&
                        ((WoW.WildImpsCount >= 1 && !threeimps) || WoW.WildImpsCount >= 2) && ImpsRemainingDuration > TwoSecondCast && WoW.IsSpellInRange("Doom") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon")))
                    {
                        WoW.CastSpell("TK");
                        return;
                    }

                    //Life Tap
                    if (WoW.CanCast("LifeTap") && WoW.Mana <= 30)
                    {
                        WoW.CastSpell("LifeTap");
                        return;
                    }

                    //Demonwrath
                    if (WoW.CanCast("Demonwrath") && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Demonwrath");
                        return;
                    }

                    //Life Tap
                    if (WoW.CanCast("LifeTap") && WoW.Mana < 100 && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("LifeTap");
                    }
                }
            }
        }
        public override void Pulse()
        {
            if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted)
            {
                SelectRotation(4, 100, 1);
            }

            if (DetectKeyPress.GetKeyState(0x6A) < 0)
            {
                UseCooldowns = !UseCooldowns;
                Thread.Sleep(150);
            }
            if (WoW.IsInCombat && !WoW.HasTarget)
            {
                WoW.KeyPressRelease(WoW.Keys.Tab);
                return;
            }
            if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
            {
                Log.Write("focus * cdremain KC >300 : " + ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300));
                if (WoW.CanCast("FeignDeath") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "FeignDeath Percent") && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("FeignDeath");
                    return;
                }
                if (WoW.CanCast("Exhilaration") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "Exhilaration Percent") && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Exhilaration");
                    return;
                }
                if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "AspectoftheTurtle Percent") && AspectoftheTurtle && !WoW.IsSpellOnCooldown("AspectoftheTurtle") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("AspectoftheTurtle");
                    return;
                }
                if (WoW.CanCast("Ancient Healing Potion") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ancient Healing Potion") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Ancient Healing Potion");
                    return;
                }
                if (WoW.CanCast("Silkweave Bandage") && WoW.HealthPercent < 40 && WoW.PlayerHasBuff("Turtle") && !WoW.IsMoving && !WoW.PlayerHasDebuff("Bandaged"))
                {
                    WoW.CastSpell("Silkweave Bandage");
                    return;
                }

                if (!WoW.HasPet && WoW.CanCast("Wolf"))
                {
                    WoW.CastSpell("Wolf");
                    return;
                }
                if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix"))
                {
                    WoW.CastSpell("Phoenix");
                    return;
                }

                if (WoW.PetHealthPercent <= 90 &&
                    !WoW.PetHasBuff("Heal Pet") &&
                    HealPet &&
                    WoW.CanCast("Revive Pet") &&
                    !WoW.IsMoving)
                {
                    WoW.CastSpell("Heal Pet");
                    return;
                }
                if (WoW.PetHealthPercent <= 0 &&
                    WoW.IsSpellOnCooldown("Phoenix") &&
                    WoW.CanCast("Revive Pet") &&
                    !WoW.IsMoving)
                {
                    WoW.CastSpell("Revive Pet");
                    return;
                }
                if (WoW.TargetIsCasting)
                {
                    if (WoW.CanCast("Counter Shot") &&
                        WoW.TargetIsCastingAndSpellIsInterruptible &&
                        WoW.TargetPercentCast >= 60 &&
                        !WoW.IsSpellOnCooldown("Counter Shot") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.WasLastCasted("Counter Shot"))
                    {
                        WoW.CastSpell("Counter Shot");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("A Murder of Crows") &&
                        WoW.Talent(6) == 1 &&
                        WoW.Focus >= 25 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("A Murder of Crows"))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }

                    if (WoW.CanCast("Volley") &&
                        !WoW.PlayerHasBuff("Volley") &&
                        WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Volley");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent")

                        && !WoW.IsSpellOnCooldown("Arcane Torrent") &&
                        WoW.PlayerRace == "BloodElf" &&
                        WoW.Focus <= 85)
                    {
                        WoW.CastSpell("Arcane Torrent");
                        return;
                    }
                    if (WoW.CanCast("Berserking")

                        && !WoW.IsSpellOnCooldown("Berserking") &&
                        WoW.PlayerRace == "Troll")
                    {
                        WoW.CastSpell("Berserking");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury")

                        && !WoW.IsSpellOnCooldown("Blood Fury") &&
                        WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Chimaera Shot") &&
                        WoW.Focus < 90 &&
                        WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.CanCast("Chimaera Shot") &&
                        WoW.Talent(2) == 3)
                    {
                        WoW.CastSpell("Chimaera Shot");
                        return;
                    }
                    if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish"))
                    {
                        WoW.CastSpell("Kil'jaeden's Burning Wish");
                        return;
                    }
//	stampede,if=buff.bloodlust.up|buff.bestial_wrath.up|cooldown.bestial_wrath.remains<=2|target.time_to_die<=14
                    if (WoW.CanCast("Stampede") && WoW.Talent(7) == 1 && WoW.IsSpellInRange("Cobra Shot") && ((WoW.PlayerHasBuff("Bestial Wrath")) || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2)) &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle") &&
                        !WoW.IsSpellOnCooldown("Stampede"))
                    {
                        WoW.CastSpell("Stampede");

                        return;
                    }
//dire_beast,if=cooldown.bestial_wrath.remains>3
                    if (WoW.CanCast("Dire Beast") && WoW.Talent(2) != 2 && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Beast");
                        return;
                    }
//dire_frenzy,if=(cooldown.bestial_wrath.remains>6&(!equipped.the_mantle_of_command|pet.cat.buff.dire_frenzy.remains<=gcd.max*1.2))
                    if (WoW.CanCast("Dire Frenzy") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && (WoW.Legendary(1) != 3 || WoW.PetBuffTimeRemaining("Dire Frenzy") <= 70)) && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
//|(charges>=2&focus.deficit>=25+talent.dire_stable.enabled*12)|target.time_to_die<9
                    if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 95 && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 83 && WoW.Talent(2) == 2 && WoW.Talent(1) == 3 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
//aspect_of_the_wild,if=buff.bestial_wrath.up|target.time_to_die<12
                    if (WoW.CanCast("Aspect of the Wild") && UseCooldowns && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        return;
                    }
//titans_thunder,if=talent.dire_frenzy.enabled|cooldown.dire_beast.remains>=3|(buff.bestial_wrath.up&pet.dire_beast.active)
                    if (WoW.CanCast("Titan's Thunder") && (WoW.Talent(2) == 2 || (WoW.Talent(2) != 2 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 300) || (WoW.Talent(2) != 2 && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerHasBuff("Dire Beast"))) && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Titan's Thunder");
                        return;
                    }
//bestial_wrath
                    if (WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
//kill_command
                    if (WoW.CanCast("Kill Command") && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
//cobra_shot,if=(cooldown.kill_command.remains>focus.time_to_max&cooldown.bestial_wrath.remains>focus.time_to_max)|(buff.bestial_wrath.up&focus.regen*cooldown.kill_command.remains>30)|target.time_to_die<cooldown.kill_command.remains
                    if (WoW.CanCast("Cobra Shot") && WoW.Focus > 32 && (WoW.SpellCooldownTimeRemaining("Kill Command") > FocusTimetoMax && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > FocusTimetoMax)

                        && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && WoW.Focus > 32 && WoW.PlayerHasBuff("Bestial Wrath") && ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300) && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish"))
                    {
                        WoW.CastSpell("Kil'jaeden's Burning Wish");
                        return;
                    }
                    if (WoW.CanCast("Volley") &&
                        !WoW.PlayerHasBuff("Volley") &&
                        WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Volley");
                        return;
                    }
                    if (WoW.CanCast("Berserking")

                        && !WoW.IsSpellOnCooldown("Berserking") &&
                        WoW.PlayerRace == "Troll")
                    {
                        WoW.CastSpell("Berserking");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent") &&
                        WoW.PlayerRace == "BloodElf" &&
                        WoW.Focus <= 85)
                    {
                        WoW.CastSpell("Arcane Torrent");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury")

                        && !WoW.IsSpellOnCooldown("Blood Fury") &&
                        WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Barrage") &&
                        WoW.Talent(6) == 2 &&
                        !WoW.IsSpellOnCooldown("Barrage") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.Focus >= 60)
                    {
                        WoW.CastSpell("Barrage");
                        return;
                    }
                    if (WoW.CanCast("Chimaera Shot") &&
                        WoW.Focus < 90 &&
                        WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.CanCast("Chimaera Shot") &&
                        WoW.Talent(2) == 3)
                    {
                        WoW.CastSpell("Chimaera Shot");
                        return;
                    }
                    if (WoW.CanCast("A Murder of Crows") &&
                        WoW.Talent(6) == 1 &&
                        WoW.Focus >= 46 - FocusRegen &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") > GCD &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("A Murder of Crows"))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.Focus >= 40 &&
                        !WoW.PetHasBuff("Beast Cleave") &&
                        WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.Focus >= 40 &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") <= 70 &&
                        WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
//	stampede,if=buff.bloodlust.up|buff.bestial_wrath.up|cooldown.bestial_wrath.remains<=2|target.time_to_die<=14
                    if (WoW.CanCast("Stampede") && WoW.Talent(7) == 1 && WoW.IsSpellInRange("Cobra Shot") && ((WoW.PlayerHasBuff("Bestial Wrath")) || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2)) &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle") &&
                        !WoW.IsSpellOnCooldown("Stampede"))
                    {
                        WoW.CastSpell("Stampede");

                        return;
                    }
//dire_beast,if=cooldown.bestial_wrath.remains>3
                    if (WoW.CanCast("Dire Beast") && WoW.Talent(2) != 2 && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Beast");
                        return;
                    }
//dire_frenzy,if=(cooldown.bestial_wrath.remains>6&(!equipped.the_mantle_of_command|pet.cat.buff.dire_frenzy.remains<=gcd.max*1.2))
                    if (WoW.CanCast("Dire Frenzy") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && (WoW.Legendary(1) != 3 || WoW.PetBuffTimeRemaining("Dire Frenzy") <= 70)) && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
//|(charges>=2&focus.deficit>=25+talent.dire_stable.enabled*12)|target.time_to_die<9
                    if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 95 && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 83 && WoW.Talent(2) == 2 && WoW.Talent(1) == 3 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
//aspect_of_the_wild,if=buff.bestial_wrath.up|target.time_to_die<12
                    if (WoW.CanCast("Aspect of the Wild") && UseCooldowns && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        return;
                    }
//titans_thunder,if=talent.dire_frenzy.enabled|cooldown.dire_beast.remains>=3|(buff.bestial_wrath.up&pet.dire_beast.active)
                    if (WoW.CanCast("Titan's Thunder") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && (WoW.Talent(2) == 2 || (WoW.Talent(2) != 2 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 300) || (WoW.Talent(2) != 2 && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerHasBuff("Dire Beast"))) && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Titan's Thunder");
                        return;
                    }
//bestial_wrath
                    if (WoW.CanCast("Bestial Wrath") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
//kill_command
                    if (WoW.CanCast("Kill Command") && WoW.Focus >= 70 - FocusRegen && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
//cobra_shot,if=(cooldown.kill_command.remains>focus.time_to_max&cooldown.bestial_wrath.remains>focus.time_to_max)|(buff.bestial_wrath.up&focus.regen*cooldown.kill_command.remains>30)|target.time_to_die<cooldown.kill_command.remains
                    if (WoW.CanCast("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.Focus > 72 - FocusRegen && (WoW.SpellCooldownTimeRemaining("Kill Command") > FocusTimetoMax && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > FocusTimetoMax)

                        && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.Focus > 72 - FocusRegen && WoW.PlayerHasBuff("Bestial Wrath") && ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300) && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)  // Do Single Target Stuff here
            {
                if (WoW.CanCast("Death") && WoW.HealthPercent < 40 && Death && !WoW.IsSpellOnCooldown("Death") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Death");
                    return;
                }
                if (WoW.CanCast("Exhil") && WoW.HealthPercent < 30 && Exhil && !WoW.IsSpellOnCooldown("Exhil") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Exhil");
                    return;
                }
                if (WoW.CanCast("Turtle") && WoW.HealthPercent < 20 && Turtle && !WoW.IsSpellOnCooldown("Turtle") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Turtle");
                    return;
                }

                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (!WoW.HasPet && WoW.CanCast("Wolf"))
                    {
                        WoW.CastSpell("Wolf");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix"))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Revive Pet");
                        return;
                    }
                    if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds == 0)
                    {
                        interruptwatch.Start();
                        Log.WritePixelMagic("interruptwatch started..", Color.Black);
                        return;
                    }
                    if (WoW.CanCast("A Murder of Crows") && !WoW.IsSpellOnCooldown("A Murder of Crows") && Crow && WoW.IsSpellInRange("A Murder of Crows") && WoW.Focus >= 30 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 2300)
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("A Murder of Crows") && WoW.Focus >= 25 && WoW.IsSpellInRange("A Murder of Crows") && WoW.PlayerHasBuff("Bestial Wrath"))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds > 800)
                    {
                        if (WoW.CanCast("Counter Shot") && !WoW.IsSpellOnCooldown("Counter Shot") && CounterShot && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Counter Shot"))
                        {
                            WoW.CastSpell("Counter Shot");
                            interruptwatch.Reset();
                            Log.WritePixelMagic("interruptwatch reset!", Color.Black);
                            interruptwatch.Start();
                            Log.WritePixelMagic("interruptwatch started...", Color.Black);
                            return;
                        }
                    }
                    if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 119 && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Turtle") && !WoW.IsSpellOnCooldown("Bestial Wrath"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 107 && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Turtle") && !WoW.IsSpellOnCooldown("Bestial Wrath") && WoW.SpellCooldownTimeRemaining("Kill Command") <= 290)
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Aspect of the Wild") && !WoW.IsSpellOnCooldown("Aspect of the Wild") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 1000 && (dpscooldowns || WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Ancient Hysteria") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums") || WoW.PlayerHasBuff("Heroism") || WoW.PlayerHasBuff("Time Warp")))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Kill Command") && WoW.Focus >= 100 && WoW.IsSpellInRange("Kill Command"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast") && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 390)
                    {
                        WoW.CastSpell("Dire Beast");
                        if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder"))
                        {
                            WoW.CastSpell("Titan's Thunder");
                            return;
                        }
                    }
                    if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && WoW.IsSpellInRange("Kill Command"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Kill Command") && WoW.Focus >= 26 && WoW.IsSpellInRange("Kill Command") && WoW.PlayerHasBuff("Bestial Wrath"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 28) && WoW.IsSpellInRange("Cobra Shot") && WoW.PlayerHasBuff("Bestial Wrath") && (WoW.SpellCooldownTimeRemaining("Kill Command") >= 300))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 91) && WoW.IsSpellInRange("Cobra Shot") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 100) && (WoW.SpellCooldownTimeRemaining("Kill Command") >= 150) && (WoW.SpellCooldownTimeRemaining("A Murder of Crows") >= 150))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 105) && WoW.IsSpellInRange("Cobra Shot") && WoW.SpellCooldownTimeRemaining("Kill Command") >= 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.CanCast("Death") && WoW.HealthPercent < 40 && Death && !WoW.IsSpellOnCooldown("Death") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Death");
                    return;
                }
                if (WoW.CanCast("Exhil") && WoW.HealthPercent < 30 && Exhil && !WoW.IsSpellOnCooldown("Exhil") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Exhil");
                    return;
                }
                if (WoW.CanCast("Turtle") && WoW.HealthPercent < 20 && Turtle && !WoW.IsSpellOnCooldown("Turtle") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Turtle");
                    return;
                }

                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (!WoW.HasPet && WoW.CanCast("Wolf"))
                    {
                        WoW.CastSpell("Wolf");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix"))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Revive Pet");
                        return;
                    }
                    if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds == 0)
                    {
                        interruptwatch.Start();
                        Log.WritePixelMagic("interruptwatch started..", Color.Black);
                        return;
                    }
                    if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds > 800)
                    {
                        if (WoW.CanCast("Counter Shot") && !WoW.IsSpellOnCooldown("Counter Shot") && CounterShot && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Counter Shot"))
                        {
                            WoW.CastSpell("Counter Shot");
                            interruptwatch.Reset();
                            Log.WritePixelMagic("interruptwatch reset!", Color.Black);
                            interruptwatch.Start();
                            Log.WritePixelMagic("interruptwatch started...", Color.Black);
                            return;
                        }
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && !WoW.PetHasBuff("Beast Cleave") && WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 34) && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PetBuffTimeRemaining("Beast Cleave") <= 70 && WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && WoW.PetBuffTimeRemaining("Beast Cleave") <= 70 && WoW.IsSpellInRange("Multi-Shot") && !WoW.CanCast("Bestial Wrath"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("A Murder of Crows") && !WoW.IsSpellOnCooldown("A Murder of Crows") && Crow && WoW.IsSpellInRange("A Murder of Crows") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 1 && WoW.Focus >= 50 && !(DetectKeyPress.GetKeyState(0x5A) < 0) && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2300))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Barrage") && Barrage && WoW.IsSpellInRange("Barrage") && WoW.Focus >= 60)
                    {
                        WoW.CastSpell("Barrage");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Turtle") && !WoW.IsSpellOnCooldown("Bestial Wrath"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Aspect of the Wild") && !WoW.IsSpellOnCooldown("Aspect of the Wild") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 1000 && (dpscooldowns || WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Ancient Hysteria") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums") || WoW.PlayerHasBuff("Heroism") || WoW.PlayerHasBuff("Time Warp")))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast") && !WoW.IsSpellOnCooldown("Dire Beast") && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 390))
                    {
                        WoW.CastSpell("Dire Beast");
                        if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder"))
                        {
                            WoW.CastSpell("Titan's Thunder");
                            return;
                        }
                    }                                                                                                                                 //Z Key Multi Shot Spam
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && WoW.IsSpellInRange("Multi-Shot") && (DetectKeyPress.GetKeyState(0x5A) < 0)) //Z key press
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Kill Command") && WoW.Focus >= 55 && WoW.IsSpellInRange("Kill Command") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 130 && !(DetectKeyPress.GetKeyState(0x5A) < 0) && !FourTarget && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 200))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && !FourTarget && WoW.IsSpellInRange("Kill Command") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 130 && (WoW.PlayerHasBuff("Aspect of the Wild") || WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Ancient Hysteria") || WoW.PlayerHasBuff("Drums") || WoW.PlayerHasBuff("Netherwinds")))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 40) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 130 && WoW.PlayerHasBuff("Bestial Wrath") && (WoW.SpellCooldownTimeRemaining("Kill Command") >= 300))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 110) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 130 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 100)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                if (WoW.CanCast("Death") && WoW.HealthPercent < 40 && Death && !WoW.IsSpellOnCooldown("Death") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Death");
                    return;
                }
                if (WoW.CanCast("Exhil") && WoW.HealthPercent < 30 && Exhil && !WoW.IsSpellOnCooldown("Exhil") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Exhil");
                    return;
                }
                if (WoW.CanCast("Turtle") && WoW.HealthPercent < 20 && Turtle && !WoW.IsSpellOnCooldown("Turtle") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Turtle");
                    return;
                }

                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (!WoW.HasPet && WoW.CanCast("Wolf"))
                    {
                        WoW.CastSpell("Wolf");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix"))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Revive Pet");
                        return;
                    }
                    if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && multishotwatch.ElapsedMilliseconds == 0)
                    {
                        multishotwatch.Start();
                        Log.WritePixelMagic("multishotwatch started..", Color.Black);
                        return;
                    }
                    if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds == 0)
                    {
                        interruptwatch.Start();
                        Log.WritePixelMagic("interruptwatch started..", Color.Black);
                        return;
                    }
                    if ((multishotwatch.ElapsedMilliseconds > 3000) && !WoW.IsSpellOnCooldown("Multi-Shot") && !WoW.WasLastCasted("Multi-Shot") && WoW.Focus >= 40)
                    {
                        WoW.CastSpell("Multi-Shot");
                        multishotwatch.Reset();
                        multishotwatch.Start();
                        return;
                    }
                    if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds > 800)
                    {
                        if (WoW.CanCast("Counter Shot") && !WoW.IsSpellOnCooldown("Counter Shot") && CounterShot && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Counter Shot"))
                        {
                            WoW.CastSpell("Counter Shot");
                            interruptwatch.Reset();
                            Log.WritePixelMagic("interruptwatch reset!", Color.Black);
                            interruptwatch.Start();
                            Log.WritePixelMagic("interruptwatch started...", Color.Black);
                            return;
                        }
                    }
                    if (WoW.CanCast("A Murder of Crows") && !WoW.IsSpellOnCooldown("A Murder of Crows") && Crow && WoW.IsSpellInRange("A Murder of Crows") && WoW.Focus >= 30 && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 10))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Barrage") && Barrage && WoW.IsSpellInRange("Barrage") && WoW.Focus >= 60)
                    {
                        WoW.CastSpell("Barrage");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Turtle") && !WoW.IsSpellOnCooldown("Bestial Wrath"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Aspect of the Wild") && !WoW.IsSpellOnCooldown("Aspect of the Wild") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 10 && (dpscooldowns || WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Ancient Hysteria") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums") || WoW.PlayerHasBuff("Heroism") || WoW.PlayerHasBuff("Time Warp")))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast") && !WoW.IsSpellOnCooldown("Dire Beast") && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 3))
                    {
                        WoW.CastSpell("Dire Beast");
                        if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder"))
                        {
                            WoW.CastSpell("Titan's Thunder");
                            return;
                        }
                    }
                    if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && WoW.IsSpellInRange("Kill Command") && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 1))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && !WoW.PetHasBuff("Beast Cleave") && WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 34) && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PetBuffTimeRemaining("Beast Cleave") <= 1 && WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && WoW.PetBuffTimeRemaining("Beast Cleave") <= 1 && WoW.IsSpellInRange("Multi-Shot") && !WoW.CanCast("Bestial Wrath"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 34) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 1 && WoW.PlayerHasBuff("Bestial Wrath") && (WoW.SpellCooldownTimeRemaining("Kill Command") >= 3))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 110) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 1 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 1)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }
        }
        public override void Pulse() // Updated for Legion (tested and working for single target)
        {
            AddonCreationPulse();
            PlayerStats();
            AoEStuff();
            if (WoW.IsInCombat && !WoW.PlayerHasBuff("Mount"))
            {
                SelectRotation();
            }

            //Dark Pact
            if (WoW.CanCast("Dark Pact") &&
                CharInfo.T5 == 3 &&
                WoW.HealthPercent <= 30 &&
                !WoW.PlayerHasBuff("Mount"))
            {
                WoW.CastSpell("Dark Pact");
                return;
            }

            //Shadowfury
            if (DetectKeyPress.GetKeyState(DetectKeyPress.Alt) < 0 &&
                CharInfo.T3 == 3 &&
                !WoW.IsMoving &&
                WoW.CanCast("Shadowfury"))
            {
                WoW.CastSpell("Shadowfury");
                return;
            }

            if (UseCooldowns)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount"))
                {
                    //Doomguard
                    if (WoW.CanCast("Doomguard") &&
                        (CharInfo.T6 == 0 || CharInfo.T6 == 2 || CharInfo.T6 == 3) &&
                        WoW.CurrentSoulShards >= 1 &&
                        WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Doomguard");
                        return;
                    }

                    //Grimoire of Service
                    if (WoW.CanCast("Grimoire: Felguard") &&
                        CharInfo.T6 == 2 &&
                        WoW.CurrentSoulShards >= 1 &&
                        WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Grimoire: Felguard");
                        return;
                    }

                    //Soul Harvest
                    if (WoW.CanCast("Soul Harvest") &&
                        CharInfo.T4 == 3 &&
                        !WoW.IsMoving &&
                        WoW.IsSpellInRange("Doom") &&
                        (WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Time Warp") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums of War") || WoW.PlayerHasBuff("Heroism")))
                    {
                        WoW.CastSpell("Soul Harvest");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount"))
                {
                    if ((!WoW.TargetHasDebuff("Doom") || WoW.TargetDebuffTimeRemaining("Doom") <= 1.5) &&
                        WoW.CanCast("Doom") &&
                        WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Doom");
                        return;
                    }

                    if (WoW.CanCast("Darkglare") &&
                        CharInfo.T7 == 1 &&
                        WoW.CurrentSoulShards >= 1 &&
                        WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Darkglare");
                        return;
                    }

                    if (WoW.CanCast("Call Dreadstalkers") &&
                        (WoW.CurrentSoulShards >= 2 || WoW.TargetHasDebuff("Demonic Calling")) &&
                        WoW.IsSpellInRange("Doom") &&
                        !WoW.IsMoving)
                    {
                        WoW.CastSpell("Call Dreadstalkers");
                        return;
                    }

                    if (WoW.CanCast("Hand of Guldan") &&
                        WoW.CurrentSoulShards >= 4 &&
                        WoW.IsSpellInRange("Doom") &&
                        !WoW.IsMoving)
                    {
                        WoW.CastSpell("Hand of Guldan");
                        return;
                    }

                    if (WoW.CanCast("Demonic Empowerment") &&
                        !WoW.IsMoving &&
                        !WoW.WasLastCasted("Demonic Empowerment") &&
                        (!WoW.PetHasBuff("Demonic Empowerment") || WoW.PetBuffTimeRemaining("Demonic Empowerment") <= 1.5 ||
                         WoW.WasLastCasted("Call Dreadstalkers") || WoW.WasLastCasted("Grimoire: Felguard") || WoW.WasLastCasted("Doomguard") || WoW.WasLastCasted("Hand of Guldan")))
                    {
                        WoW.CastSpell("Demonic Empowerment");
                        Thread.Sleep(1000);
                        return;
                    }

                    if (WoW.CanCast("Talkiels Consumption") &&
                        WoW.PetHasBuff("Demonic Empowerment") &&
                        WoW.PetBuffTimeRemaining("Demonic Empowerment") >= 2 &&
                        WoW.WildImpsCount >= 1 &&
                        WoW.DreadstalkersCount >= 1 &&
                        WoW.IsSpellInRange("Doom") &&
                        !WoW.IsMoving)
                    {
                        WoW.CastSpell("Talkiels Consumption");
                        return;
                    }

                    if (WoW.CanCast("Felstorm") &&
                        WoW.PetHasBuff("Demonic Empowerment") &&
                        WoW.PetBuffTimeRemaining("Demonic Empowerment") >= 6 &&
                        WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Felstorm");
                        return;
                    }

                    if (WoW.CanCast("Shadowflame") &&
                        CharInfo.T1 == 2 &&
                        !WoW.TargetHasDebuff("Shadowflame") &&
                        WoW.CanCast("Shadowflame") &&
                        WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    if (WoW.CanCast("Life Tap") &&
                        WoW.Mana < 60 &&
                        WoW.HealthPercent > 50)
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }

                    if (WoW.CanCast("Demonwrath") &&
                        WoW.Mana > 60 &&
                        WoW.IsMoving)
                    {
                        WoW.CastSpell("Demonwrath");
                        return;
                    }

                    if ((WoW.CanCast("Shadow Bolt") || WoW.CanCast("Demonbolt")) &&
                        WoW.IsSpellInRange("Doom") &&
                        !WoW.IsMoving)
                    {
                        WoW.CastSpell("Shadow Bolt");
                        WoW.CastSpell("Demonbolt");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount"))
                {
                    if (WoW.CanCast("Hand of Guldan") &&
                        WoW.CurrentSoulShards >= 4 &&
                        WoW.IsSpellInRange("Doom") &&
                        !WoW.IsMoving)
                    {
                        WoW.CastSpell("Hand of Guldan");
                        return;
                    }

                    if (WoW.CanCast("Implosion") &&
                        CharInfo.T2 == 3 &&
                        WoW.WildImpsCount >= 1 &&
                        WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Implosion");
                        return;
                    }

                    if (WoW.CanCast("Darkglare") &&
                        CharInfo.T7 == 1 &&
                        WoW.CurrentSoulShards >= 1 &&
                        WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Darkglare");
                        return;
                    }

                    if (WoW.CanCast("Demonic Empowerment") &&
                        WoW.CanCast("Felstorm") &&
                        !WoW.IsMoving &&
                        !WoW.WasLastCasted("Demonic Empowerment") &&
                        (!WoW.PetHasBuff("Demonic Empowerment") || WoW.PetBuffTimeRemaining("Demonic Empowerment") <= 6))
                    {
                        WoW.CastSpell("Demonic Empowerment");
                        Thread.Sleep(2000);
                        return;
                    }

                    if (WoW.CanCast("Felstorm") &&
                        WoW.PetHasBuff("Demonic Empowerment") &&
                        WoW.PetBuffTimeRemaining("Demonic Empowerment") >= 6 &&
                        WoW.IsSpellInRange("Doom"))
                    {
                        WoW.CastSpell("Felstorm");
                        return;
                    }

                    if (WoW.CanCast("Life Tap") &&
                        WoW.Mana < 60 &&
                        WoW.HealthPercent > 50)
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }

                    if (WoW.CanCast("Demonwrath") &&
                        WoW.Mana > 60)
                    {
                        WoW.CastSpell("Demonwrath");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("FeignDeath") && WoW.HealthPercent < 30 && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("FeignDeath");
                        return;
                    }
                    if (WoW.CanCast("Exhilaration") && WoW.HealthPercent < 40 && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Exhilaration");
                        return;
                    }
                    if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent < 20 && AspectoftheTurtle && !WoW.IsSpellOnCooldown("AspectoftheTurtle") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("AspectoftheTurtle");
                        return;
                    }
                    if (WoW.CanCast("Ancient Healing Potion") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ancient Healing Potion") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Ancient Healing Potion");
                        return;
                    }
                    if (WoW.CanCast("Silkweave Bandage") && WoW.HealthPercent < 40 && WoW.PlayerHasBuff("Turtle") && !WoW.IsMoving && !WoW.PlayerHasDebuff("Bandaged") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Silkweave Bandage");
                        return;
                    }
                    if (!WoW.HasPet && WoW.CanCast("Wolf"))
                    {
                        WoW.CastSpell("Wolf");
                        return;
                    }

                    /*if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix"))
                     * {
                     *      WoW.CastSpell("Phoenix") ;
                     *      return;
                     * }
                     */

                    if (WoW.PetHealthPercent <= 90 && HealPet && !WoW.PetHasBuff("Heal Pet") && WoW.CanCast("Revive Pet") && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Heal Pet");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Revive Pet");
                        return;
                    }
                    if (WoW.CanCast("A Murder of Crows") &&
                        WoW.Talent(6) == 1 &&
                        WoW.Focus >= 25 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("A Murder of Crows"))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.TargetIsCasting)
                    {
                        if (WoW.CanCast("Counter Shot") &&
                            WoW.TargetIsCastingAndSpellIsInterruptible &&
                            WoW.TargetPercentCast >= 60 &&
                            !WoW.IsSpellOnCooldown("Counter Shot") &&
                            !WoW.PlayerIsChanneling &&
                            !WoW.WasLastCasted("Counter Shot"))
                        {
                            WoW.CastSpell("Counter Shot");
                            return;
                        }
                    }
                    if (WoW.CanCast("Volley") &&
                        !WoW.PlayerHasBuff("Volley") &&
                        WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Volley");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent")

                        && !WoW.IsSpellOnCooldown("Arcane Torrent") &&
                        WoW.PlayerRace == "BloodElf" &&
                        WoW.Focus <= 85)
                    {
                        WoW.CastSpell("Arcane Torrent");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury")

                        && !WoW.IsSpellOnCooldown("Blood Fury") &&
                        WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish"))
                    {
                        WoW.CastSpell("Kil'jaeden's Burning Wish");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") &&
                        WoW.Focus >= 80 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle") &&
                        WoW.Talent(2) == 2 &&
                        !WoW.IsSpellOnCooldown("Dire Frenzy"))
                    {
                        WoW.CastSpell("Bestial Wrath");

                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") &&
                        WoW.Focus >= 115 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") &&
                        WoW.Focus >= 90 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("Kill Command") &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Aspect of the Wild") &&
                        !WoW.IsSpellOnCooldown("Aspect of the Wild") &&
                        UseCooldowns &&
                        WoW.PlayerHasBuff("Bestial Wrath"))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        return;
                    }
                    if (WoW.CanCast("Dire Beast") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        (WoW.Talent(2) == 1 || WoW.Talent(2) == 3) &&
                        !WoW.IsSpellOnCooldown("Dire Beast") &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300)
                    {
                        WoW.CastSpell("Dire Beast");
                        if (WoW.CanCast("Titan's Thunder") &&
                            !WoW.IsSpellOnCooldown("Titan's Thunder"))
                        {
                            WoW.CastSpell("Titan's Thunder");
                            return;
                        }
                    }
                    if (WoW.CanCast("Chimaera Shot") &&
                        WoW.Focus < 90 &&
                        WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.CanCast("Chimaera Shot") &&
                        WoW.Talent(2) == 3)
                    {
                        WoW.CastSpell("Chimaera Shot");
                        return;
                    }
                    if (WoW.CanCast("Titan's Thunder") &&
                        !WoW.IsSpellOnCooldown("Titan's Thunder") &&
                        !WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.CanCast("Dire Frenzy") &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Titan's Thunder");
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }

                    if (WoW.CanCast("Dire Frenzy") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        WoW.PlayerSpellCharges("Dire Frenzy") >= 2 &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 2) || !WoW.PetHasBuff("Dire Frenzy")) &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Kill Command") &&
                        WoW.Focus >= 30 &&
                        WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 50) &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.PlayerHasBuff("Bestial Wrath") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.SpellCooldownTimeRemaining("Kill Command") > 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 32) &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.PlayerHasBuff("Bestial Wrath") &&
                        WoW.PlayerBuffTimeRemaining("Bestial Wrath") <= 200 &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.SpellCooldownTimeRemaining("Kill Command") > 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 90) &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("FeignDeath") && WoW.HealthPercent < 30 && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("FeignDeath");
                        return;
                    }
                    if (WoW.CanCast("Exhilaration") && WoW.HealthPercent < 40 && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Exhilaration");
                        return;
                    }
                    if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent < 20 && AspectoftheTurtle && !WoW.IsSpellOnCooldown("AspectoftheTurtle") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("AspectoftheTurtle");
                        return;
                    }
                    if (WoW.CanCast("Ancient Healing Potion") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ancient Healing Potion") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Ancient Healing Potion");
                        return;
                    }
                    if (WoW.CanCast("Silkweave Bandage") && WoW.HealthPercent < 40 && WoW.PlayerHasBuff("Turtle") && !WoW.IsMoving && !WoW.PlayerHasDebuff("Bandaged"))
                    {
                        WoW.CastSpell("Silkweave Bandage");
                        return;
                    }

                    if (!WoW.HasPet && WoW.CanCast("Wolf"))
                    {
                        WoW.CastSpell("Wolf");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix"))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }

                    if (WoW.PetHealthPercent <= 90 &&
                        !WoW.PetHasBuff("Heal Pet") &&
                        HealPet &&
                        WoW.CanCast("Revive Pet") &&
                        !WoW.IsMoving)
                    {
                        WoW.CastSpell("Heal Pet");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 &&
                        WoW.IsSpellOnCooldown("Phoenix") &&
                        WoW.CanCast("Revive Pet") &&
                        !WoW.IsMoving)
                    {
                        WoW.CastSpell("Revive Pet");
                        return;
                    }
                    if (WoW.TargetIsCasting)
                    {
                        if (WoW.CanCast("Counter Shot") &&
                            WoW.TargetIsCastingAndSpellIsInterruptible &&
                            WoW.TargetPercentCast >= 60 &&
                            !WoW.IsSpellOnCooldown("Counter Shot") &&
                            !WoW.PlayerIsChanneling &&
                            !WoW.WasLastCasted("Counter Shot"))
                        {
                            WoW.CastSpell("Counter Shot");
                            return;
                        }
                    }
                    if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish"))
                    {
                        WoW.CastSpell("Kil'jaeden's Burning Wish");
                        return;
                    }
                    if (WoW.CanCast("Volley") &&
                        !WoW.PlayerHasBuff("Volley") &&
                        WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Volley");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent") &&
                        WoW.PlayerRace == "BloodElf" &&
                        WoW.Focus <= 85)
                    {
                        WoW.CastSpell("Arcane Torrent");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury")

                        && !WoW.IsSpellOnCooldown("Blood Fury") &&
                        WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Barrage") &&
                        WoW.Talent(6) == 2 &&
                        !WoW.IsSpellOnCooldown("Barrage") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.Focus >= 60)
                    {
                        WoW.CastSpell("Barrage");
                        return;
                    }
                    if (WoW.CanCast("Chimaera Shot") &&
                        WoW.Focus < 90 &&
                        WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.CanCast("Chimaera Shot") &&
                        WoW.Talent(2) == 3)
                    {
                        WoW.CastSpell("Chimaera Shot");
                        return;
                    }
                    if (WoW.CanCast("A Murder of Crows") &&
                        WoW.Talent(6) == 1 &&
                        WoW.Focus >= 25 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("A Murder of Crows"))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle") &&
                        !WoW.IsSpellOnCooldown("Bestial Wrath"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Aspect of the Wild") &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 &&
                        !WoW.IsSpellOnCooldown("Aspect of the Wild") &&
                        UseCooldowns &&
                        WoW.PlayerHasBuff("Bestial Wrath"))
                    {
                        WoW.CastSpell("Aspect of the Wild");

                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && WoW.IsSpellInRange("Cobra Shot") && (DetectKeyPress.GetKeyState(0x5A) < 0))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.Focus >= 40 &&
                        !WoW.PetHasBuff("Beast Cleave") &&
                        WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.Focus >= 40 &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") <= 80 &&
                        WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Dire Beast") &&
                        WoW.IsSpellInRange("Dire Beast") &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        (WoW.Talent(2) == 1 || WoW.Talent(2) == 3) &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 &&
                        !WoW.IsSpellOnCooldown("Dire Beast") &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300)
                    {
                        WoW.CastSpell("Dire Beast");
                        if (WoW.CanCast("Titan's Thunder") &&
                            !WoW.IsSpellOnCooldown("Titan's Thunder"))
                        {
                            WoW.CastSpell("Titan's Thunder");
                            return;
                        }
                    }
                    if (WoW.CanCast("Titan's Thunder") &&
                        !WoW.IsSpellOnCooldown("Titan's Thunder") &&
                        WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.SpellCooldownTimeRemaining("Dire Frenzy") <= 140 &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Titan's Thunder");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        WoW.PlayerSpellCharges("Dire Frenzy") >= 200 &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.PetHasBuff("Dire Frenzy") &&
                        WoW.PetBuffTimeRemaining("Dire Frenzy") <= 300 &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy")) &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 6 &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 &&
                        WoW.Talent(2) == 2 &&
                        WoW.IsSpellOnCooldown("Titan's Thunder") &&
                        WoW.SpellCooldownTimeRemaining("Titan's Thunder") >= 140)
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }



                    if (WoW.CanCast("Kill Command") &&
                        WoW.Focus >= 55 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") >= 140)
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 65) &&
                        WoW.Talent(7) == 2 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 &&
                        WoW.PlayerHasBuff("Bestial Wrath") &&
                        WoW.SpellCooldownTimeRemaining("Kill Command") >= 300)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        WoW.Focus >= 110 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("FeignDeath") && WoW.HealthPercent < 30 && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("FeignDeath");
                        return;
                    }
                    if (WoW.CanCast("Exhilaration") && WoW.HealthPercent < 40 && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Exhilaration");
                        return;
                    }
                    if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent < 20 && AspectoftheTurtle && !WoW.IsSpellOnCooldown("AspectoftheTurtle") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("AspectoftheTurtle");
                        return;
                    }
                    if (WoW.CanCast("Ancient Healing Potion") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ancient Healing Potion") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Ancient Healing Potion");
                        return;
                    }
                    if (WoW.CanCast("Silkweave Bandage") && WoW.HealthPercent < 40 && WoW.PlayerHasBuff("Turtle") && !WoW.IsMoving && !WoW.PlayerHasDebuff("Bandaged") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Silkweave Bandage");
                        return;
                    }
                    if (!WoW.HasPet && WoW.CanCast("Wolf"))
                    {
                        WoW.CastSpell("Wolf");
                        return;
                    }

                    /*if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix"))
                     * {
                     *      WoW.CastSpell("Phoenix") ;
                     *      return;
                     * }
                     */
                    if (WoW.PetHealthPercent <= 90 && HealPet && !WoW.PetHasBuff("Heal Pet") && WoW.CanCast("Revive Pet") && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Heal Pet");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Revive Pet");
                        return;
                    }
                    if (WoW.CanCast("A Murder of Crows") &&
                        WoW.Talent(6) == 1 &&
                        WoW.Focus >= 25 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("A Murder of Crows"))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.TargetIsCasting)
                    {
                        if (WoW.CanCast("Counter Shot") &&
                            WoW.TargetIsCastingAndSpellIsInterruptible &&
                            WoW.TargetPercentCast >= 60 &&
                            !WoW.IsSpellOnCooldown("Counter Shot") &&
                            !WoW.PlayerIsChanneling &&
                            !WoW.WasLastCasted("Counter Shot"))
                        {
                            WoW.CastSpell("Counter Shot");
                            return;
                        }
                    }
                    if (WoW.CanCast("Volley") &&
                        !WoW.PlayerHasBuff("Volley") &&
                        WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Volley");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent")

                        && !WoW.IsSpellOnCooldown("Arcane Torrent") &&
                        WoW.PlayerRace == "BloodElf" &&
                        WoW.Focus <= 85)
                    {
                        WoW.CastSpell("Arcane Torrent");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury")

                        && !WoW.IsSpellOnCooldown("Blood Fury") &&
                        WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish"))
                    {
                        WoW.CastSpell("Kil'jaeden's Burning Wish");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") &&
                        WoW.Focus >= 80 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle") &&
                        WoW.Talent(2) == 2 &&
                        !WoW.IsSpellOnCooldown("Dire Frenzy"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") &&
                        WoW.Focus >= 115 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") &&
                        WoW.Focus >= 90 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("Kill Command") &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Aspect of the Wild") &&
                        !WoW.IsSpellOnCooldown("Aspect of the Wild") &&
                        UseCooldowns &&
                        WoW.PlayerHasBuff("Bestial Wrath"))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        return;
                    }
                    if (WoW.CanCast("Chimaera Shot") &&
                        WoW.Focus <= 90 &&
                        WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.CanCast("Chimaera Shot") &&
                        WoW.Talent(2) == 3)
                    {
                        WoW.CastSpell("Chimaera Shot");
                        return;
                    }
                    if (WoW.CanCast("Dire Beast") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        (WoW.Talent(2) == 1 || WoW.Talent(2) == 3) &&
                        !WoW.IsSpellOnCooldown("Dire Beast") &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300)
                    {
                        WoW.CastSpell("Dire Beast");
                        if (WoW.CanCast("Titan's Thunder") &&
                            !WoW.IsSpellOnCooldown("Titan's Thunder"))
                        {
                            WoW.CastSpell("Titan's Thunder");
                            return;
                        }
                    }
                    if (WoW.CanCast("Titan's Thunder") &&
                        !WoW.IsSpellOnCooldown("Titan's Thunder") &&
                        !WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.CanCast("Dire Frenzy") &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Titan's Thunder");
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        WoW.PlayerSpellCharges("Dire Frenzy") >= 200 &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy")) &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 &&
                        WoW.Talent(2) == 2)
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }

                    if (WoW.CanCast("Kill Command") &&
                        WoW.Focus >= 30 &&
                        WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 50) &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.PlayerHasBuff("Bestial Wrath") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.SpellCooldownTimeRemaining("Kill Command") > 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 32) &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.PlayerHasBuff("Bestial Wrath") &&
                        WoW.PlayerBuffTimeRemaining("Bestial Wrath") <= 200 &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.SpellCooldownTimeRemaining("Kill Command") > 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 90) &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }
        }
Ejemplo n.º 7
0
        public override void Pulse()        // Updated for Legion (tested and working for single target)
        {
            AddonCreationPulse();
            PlayerStats();
            AoEStuff();
            if (WoW.IsInCombat && !WoW.PlayerHasBuff("Mount"))
            {
                SelectRotation();
            }

            //Healthstone - Potion
            if ((WoW.CanCast("Healthstone") || WoW.CanCast("Potion")) &&
                (WoW.ItemCount("Healthstone") >= 1 || WoW.ItemCount("Potion") >= 1) &&
                (!WoW.ItemOnCooldown("Healthstone") || !WoW.ItemOnCooldown("Potion")) &&
                !WoW.PlayerHasBuff("Feign Death") &&
                WoW.HealthPercent <= 30 &&
                !WoW.PlayerHasBuff("Mount") &&
                WoW.HealthPercent != 0)
            {
                WoW.CastSpell("Healthstone");
                WoW.CastSpell("Potion");
                return;
            }

            //Exhilaration
            if (WoW.CanCast("Exhilaration") &&
                WoW.HealthPercent <= 20 &&
                !WoW.PlayerHasBuff("Mount") &&
                !WoW.PlayerHasBuff("Feign Death") &&
                WoW.HealthPercent != 0)
            {
                WoW.CastSpell("Exhilaration");
                return;
            }

            //Call pet
            if (!WoW.HasPet &&
                !WoW.PlayerHasBuff("Mount") &&
                !WoW.PlayerHasBuff("Feign Death") &&
                WoW.HealthPercent != 0)
            {
                WoW.CastSpell("Call Pet");
                return;
            }

            //Revive Pet
            if ((!WoW.HasPet || WoW.PetHealthPercent < 1) &&
                !WoW.PlayerHasBuff("Mount") &&
                !WoW.PlayerHasBuff("Feign Death") &&
                WoW.HealthPercent != 0)
            {
                WoW.CastSpell("Heart of the Phoenix");
                WoW.CastSpell("Revive Pet");
                return;
            }

            //Voley
            if (WoW.CanCast("Voley") &&
                !WoW.PlayerHasBuff("Feign Death") &&
                !WoW.PlayerHasBuff("Voley") &&
                WoW.HealthPercent != 0 &&
                CharInfo.T6 == 3)
            {
                WoW.CastSpell("Voley");
                return;
            }

            if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerHasBuff("Mount") && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent != 0)
            {
                //Stampede
                if (DetectKeyPress.GetKeyState(DetectKeyPress.Shift) < 0 &&
                    WoW.CanCast("Stampede") &&
                    CharInfo.T7 == 1)
                {
                    WoW.CastSpell("Stampede");
                    return;
                }

                //Intimidation //Binding Shot
                if (DetectKeyPress.GetKeyState(DetectKeyPress.Ctrl) < 0 &&
                    ((WoW.CanCast("Intimidation") && CharInfo.T5 == 3) || (WoW.CanCast("Binding Shot") && CharInfo.T5 == 1)))
                {
                    WoW.CastSpell("Binding Shot");
                    WoW.CastSpell("Intimidation");
                    return;
                }

                //Cooldowns
                if (UseCooldowns)
                {
                    //Aspect of the Wild
                    if (WoW.CanCast("Aspect of the Wild") &&
                        !WoW.PlayerHasBuff("Aspect of the Turtle") &&
                        WoW.PlayerHasBuff("Bestial Wrath") &&
                        WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 12)
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        return;
                    }
                }

                //Legendary Trinket
                if (WoW.CanCast("Kil'jaeden's Burning Wish") &&
                    (((WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 15 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 5)) || WoW.PlayerHasBuff("Bestial Wrath")) &&
                    !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") &&
                    WoW.IsSpellInRange("Cobra Shot"))
                {
                    WoW.CastSpell("Kil'jaeden's Burning Wish");
                }

                //SINGLE TARGET

                //Bestial Wrath
                if ((combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) &&
                    WoW.CanCast("Bestial Wrath") &&
                    !WoW.PlayerHasBuff("Aspect of the Turtle") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    (WoW.Focus >= 110))
                {
                    WoW.CastSpell("Bestial Wrath");
                    WoW.CastSpell("Kill Command");
                    if (WoW.CanCast("A Murder of Crows") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        CharInfo.T6 == 1 &&
                        WoW.Focus >= 30)
                    {
                        WoW.CastSpell("A Murder of Crows");
                    }

                    return;
                }

                //A Murder of Crows
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 23 &&
                    WoW.CanCast("A Murder of Crows") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T6 == 1 &&
                    WoW.Focus >= 25)
                {
                    WoW.CastSpell("A Murder of Crows");
                    return;
                }

                //Kill Command
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Kill Command") &&
                    WoW.Focus >= 100)
                {
                    WoW.CastSpell("Kill Command");
                    return;
                }

                // Dire beast
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Dire Beast") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 3 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T2 != 2)
                {
                    WoW.CastSpell("Dire Beast");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Dire Frenzy
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Dire Frenzy") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 6 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T2 == 2)
                {
                    WoW.CastSpell("Titan's Thunder");
                    WoW.CastSpell("Dire Frenzy");
                    return;
                }

                //Kill Command
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Kill Command") &&
                    (WoW.SpellCooldownTimeRemaining("Bestial Wrath") - WoW.SpellCooldownTimeRemaining("Kill Command") > 2 || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 23 && WoW.SpellCooldownTimeRemaining("Dire Beast") - WoW.SpellCooldownTimeRemaining("Kill Command") > 2)) &&
                    WoW.Focus >= 25)
                {
                    WoW.CastSpell("Kill Command");
                    return;
                }

                //Chimaera Shot
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Chimaera Shot") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T2 == 3 &&
                    WoW.Focus < 90)
                {
                    WoW.CastSpell("Chimaera Shot");
                    return;
                }

                //Cobra Shot
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    ((WoW.Focus >= 110) || (WoW.PlayerHasBuff("Bestial Wrath") && (WoW.Focus >= 40))) &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.CanCast("Cobra Shot") &&
                    !WoW.CanCast("Bestial Wrath"))
                {
                    WoW.CastSpell("Cobra Shot");
                    return;
                }

                //AOE

                //Bestial Wrath
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Bestial Wrath") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    !WoW.PlayerHasBuff("Aspect of the Turtle"))
                {
                    WoW.CastSpell("Bestial Wrath");
                    return;
                }

                // Dire beast
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Dire Beast") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 3 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T2 != 2)
                {
                    WoW.CastSpell("Dire Beast");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Dire Frenzy
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Dire Frenzy") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 6 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T2 == 2)
                {
                    WoW.CastSpell("Dire Frenzy");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Barrage
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Barrage") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T6 == 2 &&
                    (WoW.Focus >= 60))
                {
                    WoW.CastSpell("Barrage");
                    return;
                }

                //Multishot
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Multi-Shot") &&
                    WoW.IsSpellInRange("Multi-Shot") &&
                    WoW.Focus >= 40)
                {
                    WoW.CastSpell("Multi-Shot");
                    return;
                }

                //Chimaera Shot
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Chimaera Shot") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T2 == 3 &&
                    WoW.Focus < 80)
                {
                    WoW.CastSpell("Chimaera Shot");
                    return;
                }

                //CLEAVE

                //A Murder of Crows
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 23 &&
                    WoW.CanCast("A Murder of Crows") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T6 == 1 &&
                    WoW.Focus >= 25)
                {
                    WoW.CastSpell("A Murder of Crows");
                    return;
                }

                //Multishot - Beast Cleave uptime
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Multi-Shot") &&
                    (!WoW.PetHasBuff("BeastCleave") || WoW.PetBuffTimeRemaining("BeastCleave") <= 1) &&
                    WoW.IsSpellInRange("Multi-Shot") &&
                    !WoW.CanCast("Bestial Wrath") &&
                    WoW.Focus >= 40)
                {
                    WoW.CastSpell("Multi-Shot");
                    return;
                }

                // Dire beast
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Dire Beast") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 3 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T2 != 2)
                {
                    WoW.CastSpell("Dire Beast");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Dire Frenzy
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Dire Frenzy") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 6 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T2 == 2)
                {
                    WoW.CastSpell("Dire Frenzy");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Barrage
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Barrage") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T6 == 2 &&
                    (WoW.Focus >= 60))
                {
                    WoW.CastSpell("Barrage");
                    return;
                }

                //Kill Command
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Kill Command") &&
                    (WoW.SpellCooldownTimeRemaining("Bestial Wrath") - WoW.SpellCooldownTimeRemaining("Kill Command") > 2 || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 23 && WoW.SpellCooldownTimeRemaining("Dire Beast") - WoW.SpellCooldownTimeRemaining("Kill Command") > 2)) &&
                    WoW.Focus >= 25)
                {
                    WoW.CastSpell("Kill Command");
                    return;
                }

                //Chimaera Shot
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Chimaera Shot") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    CharInfo.T2 == 3 &&
                    WoW.Focus < 80)
                {
                    WoW.CastSpell("Chimaera Shot");
                    return;
                }

                //Cobra Shot
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    ((WoW.Focus >= 110) || (WoW.PlayerHasBuff("Bestial Wrath") && (WoW.Focus >= 40))) &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.CanCast("Cobra Shot") &&
                    !WoW.CanCast("Bestial Wrath"))
                {
                    WoW.CastSpell("Cobra Shot");
                    return;
                }

                //Mend Pet
                if (WoW.HasPet &&
                    WoW.CanCast("Mend Pet") &&
                    WoW.PetHealthPercent <= 70 &&
                    !WoW.PlayerHasBuff("Feign Death"))
                {
                    WoW.CastSpell("Mend Pet");
                    return;
                }
            }
        }