Exemple #1
0
        public override void Pulse()
        {
            if (WoW.TargetHealthPercent == 0)
            {
                return;
            }

            if (!WoW.TargetIsEnemy)
            {
                return;
            }
            WoW.CastSpell("Rebuke", WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > 60);
            WoW.CastSpell("ArdentDefender", WoW.PlayerHealthPercent < 15);
            WoW.CastSpell("LayOnHands", WoW.CanCast("LayOnHands") && !WoW.PlayerHasDebuff("Forbearance") && WoW.PlayerHealthPercent < 20 && !WoW.PlayerHasBuff("ArdentDefender"));
            WoW.CastSpell("GuardianOfAncientKings", WoW.PlayerHealthPercent < 50 && !WoW.PlayerHasBuff("ArdentDefender"));
            if (!WoW.HasTarget)
            {
                return;
            }
            WoW.CastSpell("AvengingWrath", UseCooldowns, false); // Off the GCD no return needed.
            WoW.CastSpell("AvengersShield", true);
            WoW.CastSpell("EyeOfTyr", WoW.PlayerHealthPercent < 100);
            WoW.CastSpell("Judgment", true);
            WoW.CastSpell("Consecration", true);
            WoW.CastSpell("LightOfTheProtector", WoW.PlayerHasBuff("Consecration") && WoW.PlayerHealthPercent < 70);
            WoW.CastSpell("BlessedHammer", WoW.Talent(1) == 2);
            WoW.CastSpell("BastionOfLight", WoW.PlayerSpellCharges("ShieldOfTheRighteous") == 0 && !WoW.PlayerHasBuff("ShieldOfTheRighteous"));
            WoW.CastSpell("ShieldOfTheRighteous", WoW.PlayerHasBuff("Consecration") &&
                          WoW.PlayerSpellCharges("ShieldOfTheRighteous") > 0 &&
                          !WoW.PlayerHasBuff("ShieldOfTheRighteous"));
            WoW.CastSpell("Seraphim", WoW.Talent(7) == 2);
            WoW.CastSpell("BlessedHammer", true);
        }
        private static bool PartyHasDeBuff(string debuffName, int partyID)
        {
            if (partyID == 0)
            {
                return(WoW.PlayerHasDebuff(debuffName));
            }
            Aura aura = null;

            for (var i = 0; i < SpellBook.Auras.Count; i++)
            {
                if (SpellBook.Auras[i].AuraName == debuffName)
                {
                    aura = SpellBook.Auras[i];
                }
            }
            if (aura == null)
            {
                Log.Write($"[HasDebuff] Fant ikke debuff '{debuffName}' in Spell Book");
                return(false);
            }
            var c = WoW.GetBlockColor(aura.InternalAuraNo, 16 + partyID);

            return((c.R != 255) && (c.G != 255) && (c.B != 255));
        }
Exemple #3
0
        public override void Pulse()
        {
            if (WoW.PlayerHasBuff("Mount"))
            {
                return;
            }
            if (UseCooldowns)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("BattleCry"))
                    {
                        WoW.CastSpell("BattleCry");
                        return;
                    }
                    if (WoW.CanCast("Avatar") && (WoW.SpellCooldownTimeRemaining("BattleCry") > 14))
                    {
                        WoW.CastSpell("Avatar");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    /* interrupting */
                    if (WoW.TargetIsCastingAndSpellIsInterruptible && WoW.CanCast("Pummel") && WoW.IsSpellInRange("Pummel"))
                    {
                        WoW.CastSpell("Pummel");
                        return;
                    }
                    /* --------------------- end of interrupting--------------------*/
                    /* defensive CD */
                    if (WoW.CanCast("Enraged Regeneration") && (WoW.HealthPercent < 20))
                    {
                        WoW.CastSpell("Enraged Regeneration");
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && WoW.PlayerHasBuff("Enraged Regeneration"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                        return;
                    }
                    if (WoW.CanCast("Commanding Shout") && (WoW.HealthPercent < 15))
                    {
                        WoW.CastSpell("Commanding Shout");
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                        return;
                    }
                    if (WoW.PlayerHasDebuff("Fear") && WoW.CanCast("Berserker Rage"))
                    {
                        WoW.CastSpell("Berserker Rage");
                        return;
                    }
                    if (WoW.PlayerHasDebuff("Stunned") && WoW.CanCast("Every Man for Himself"))
                    {
                        WoW.CastSpell("Every Man for Himself");
                        return;
                    }
                    /* --------------------- end of defensive CD--------------------*/
                    /* dps-ing */
                    if (!WoW.PlayerHasBuff("BattleCry"))
                    {
                        if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && (WoW.Rage >= 100) && !WoW.PlayerHasBuff("Enrage"))
                        {
                            WoW.CastSpell("Rampage");
                            return;
                        }
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && !WoW.PlayerHasBuff("Enrage"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                        if (WoW.CanCast("OdynsFury") && WoW.IsSpellInRange("OdynsFury") && (WoW.PlayerHasBuff("BattleCry") || WoW.HealthPercent < 10))
                        {
                            WoW.CastSpell("OdynsFury");
                            return;
                        }
                        if (WoW.CanCast("Execute") && WoW.IsSpellInRange("Execute") && WoW.PlayerHasBuff("Enrage") && WoW.TargetHealthPercent <= 20)
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                        if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                        {
                            WoW.CastSpell("Raging Blow");
                            return;
                        }
                        if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball") && WoW.IsSpellInRange("Whirlwind"))
                        {
                            WoW.CastSpell("Whirlwind");
                            return;
                        }
                        if (WoW.CanCast("Furious Slash") && WoW.IsSpellInRange("Furious Slash") && (WoW.SpellCooldownTimeRemaining("Raging Blow") > 0.5))
                        {
                            WoW.CastSpell("Furious Slash");
                            return;
                        }
                    }
                    if (WoW.PlayerHasBuff("BattleCry"))
                    {
                        if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && (WoW.Rage >= 100) && (!WoW.PlayerHasBuff("Enrage") || (WoW.PlayerBuffTimeRemaining("Enrage") <= 2)))
                        {
                            WoW.CastSpell("Rampage");
                            return;
                        }
                        if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                        {
                            WoW.CastSpell("Raging Blow");
                            return;
                        }
                        if (WoW.CanCast("OdynsFury") && WoW.IsSpellInRange("OdynsFury") && (WoW.PlayerHasBuff("BattleCry") || WoW.HealthPercent < 10))
                        {
                            WoW.CastSpell("OdynsFury");
                            return;
                        }
                        if (WoW.CanCast("Execute") && WoW.IsSpellInRange("Execute") && WoW.PlayerHasBuff("Enrage") && WoW.TargetHealthPercent <= 20)
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                    }
                    /* --------------------- end of dps-ing--------------------*/
                }
            }
            if ((combatRoutine.Type == RotationType.AOE) || (combatRoutine.Type == RotationType.Cleave))
            {
                if (WoW.CanCast("OdynsFury") && WoW.IsSpellInRange("OdynsFury") && (WoW.PlayerHasBuff("BattleCry") || WoW.HealthPercent < 10))
                {
                    WoW.CastSpell("OdynsFury");
                    return;
                }
                if (!WoW.PlayerHasBuff("Meat-Cleaver"))
                {
                    WoW.CastSpell("Whirlwind");
                    return;
                }
                if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && (WoW.Rage >= 100) && !WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat-Cleaver"))
                {
                    WoW.CastSpell("Rampage");
                    return;
                }
                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && !WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat-Cleaver"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }

                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && WoW.PlayerHasBuff("Meat-Cleaver"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }
                if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                {
                    WoW.CastSpell("Raging Blow");
                    return;
                }
                if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball") && WoW.IsSpellInRange("Whirlwind"))
                {
                    WoW.CastSpell("Whirlwind");
                    return;
                }
            }
        }
Exemple #4
0
        public override void Pulse()
        {
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LSHIFT) < 0)
            {
                return;
            }

            // Interrupt
            if (WoW.TargetIsCastingAndSpellIsInterruptible && WoW.CanCast("Pummel") && WoW.IsSpellInRange("Pummel") && WoW.TargetPercentCast > Random.Next(20, 40))
            {
                WoW.CastSpell("Pummel");
                return;
            }

            // Defensive CD's
            if (WoW.CanCast("Enraged Regeneration") && WoW.HealthPercent < 30)
            {
                WoW.CastSpell("Enraged Regeneration");
                WoW.CastSpell("Bloodthirst", WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"));
                return;
            }
            if (WoW.CanCast("Commanding Shout") && (WoW.HealthPercent < 15))
            {
                WoW.CastSpell("Commanding Shout");
                WoW.CastSpell("Bloodthirst", WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"));
                return;
            }
            if (WoW.PlayerHasDebuff("Fear"))
            {
                if (WoW.CanCast("Berserker Rage"))
                {
                    WoW.CastSpell("Berserker Rage");
                }
                else if (WoW.CanCast("Will of the Forsaken"))
                {
                    WoW.CastSpell("Will of the Forsaken");
                }
            }

            // Targeting
            if (!WoW.HasTarget || !WoW.TargetIsEnemy)
            {
                WoW.TargetNearestEnemy();
            }

            if (combatRoutine.Type != RotationType.SingleTarget || DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0)
            {
                // Multitarget Rotation
                BattleCryRotationSequence = 0;
                if (UseCooldowns)
                {
                    if (WoW.CanCast("Battle Cry") && WoW.IsSpellInRange("Rampage") && !WoW.IsSpellOnCooldown("Rampage"))
                    {
                        WoW.CastSpell("Battle Cry");
                        WoW.CastSpell("Avatar", WoW.CanCast("Avatar"));
                    }
                }

                if (WoW.CanCast("Odyns Fury") && WoW.IsSpellInRange("Bloodthirst") && WoW.PlayerHasBuff("Battle Cry"))
                {
                    WoW.CastSpell("Odyns Fury");
                    return;
                }
                if (!WoW.PlayerHasBuff("Meat Cleaver") && WoW.CanCast("Whirlwind") && WoW.IsSpellInRange("Bloodthirst"))
                {
                    WoW.CastSpell("Whirlwind");
                    return;
                }
                if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && ((!WoW.PlayerHasBuff("Enrage") && WoW.Rage >= 85) || WoW.Rage >= 100))
                {
                    WoW.CastSpell("Rampage");
                    return;
                }
                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && !WoW.PlayerHasBuff("Enrage"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }
                if (combatRoutine.Type == RotationType.Cleave && WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                {
                    WoW.CastSpell("Raging Blow");
                    return;
                }
                if (WoW.CanCast("Whirlwind") && WoW.IsSpellInRange("Bloodthirst"))
                {
                    WoW.CastSpell("Whirlwind");
                    return;
                }
            }

            else
            {
                // Singletarget Rotation
                if (UseCooldowns)
                {
                    if (BattleCryRotationSequence == 0)
                    {
                        if (WoW.CanCast("Battle Cry") && WoW.IsSpellInRange("Rampage") && !WoW.IsSpellOnCooldown("Rampage"))
                        {
                            if (WoW.SpellCooldownTimeRemaining("Raging Blow") > 150)
                            {
                                //wait for raging blow to come up before using cooldowns
                                WoW.CastSpell("Furious Slash", WoW.CanCast("Furious Slash") && WoW.IsSpellInRange("Furious Slash"));
                                return;
                            }
                            WoW.CastSpell("Battle Cry");
                            WoW.CastSpell("Avatar", WoW.CanCast("Avatar"));
                            WoW.CastSpell("Rampage");
                            BattleCryRotationSequence++;
                            return;
                        }
                    }
                    else if (BattleCryRotationSequence == 1)
                    {
                        if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                        {
                            WoW.CastSpell("Raging Blow");
                            BattleCryRotationSequence++;
                        }
                        return;
                    }
                    else if (BattleCryRotationSequence == 2)
                    {
                        if (WoW.CanCast("Odyns Fury"))
                        {
                            WoW.CastSpell("Odyns Fury");
                            BattleCryRotationSequence++;
                        }
                        return;
                    }
                    else if (BattleCryRotationSequence == 3)
                    {
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            BattleCryRotationSequence++;
                        }
                        return;
                    }
                    else if (BattleCryRotationSequence == 4)
                    {
                        if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                        {
                            WoW.CastSpell("Raging Blow");
                            BattleCryRotationSequence = 0;
                        }
                        return;
                    }

                    if (WoW.CanCast("Avatar") && (WoW.SpellCooldownTimeRemaining("Battle Cry") < 1200 || WoW.SpellCooldownTimeRemaining("Battle Cry") > 2200))
                    {
                        WoW.CastSpell("Avatar");
                        return;
                    }
                }
                else
                {
                    BattleCryRotationSequence = 0;
                }
                if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && ((!WoW.PlayerHasBuff("Enrage") && WoW.Rage >= 85) || WoW.Rage >= 100))
                {
                    WoW.CastSpell("Rampage");
                    return;
                }
                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && !WoW.PlayerHasBuff("Enrage"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }
                if (WoW.CanCast("Odyns Fury") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Battle Cry"))
                {
                    WoW.CastSpell("Odyns Fury");
                    return;
                }
                if (WoW.CanCast("Execute") && WoW.IsSpellInRange("Execute") && WoW.PlayerHasBuff("Enrage") && WoW.TargetHealthPercent <= 20)
                {
                    WoW.CastSpell("Execute");
                    return;
                }
                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }
                if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                {
                    WoW.CastSpell("Raging Blow");
                    return;
                }
                if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball"))
                {
                    WoW.CastSpell("Whirlwind");
                    return;
                }
                WoW.CastSpell("Furious Slash", WoW.CanCast("Furious Slash") && WoW.IsSpellInRange("Furious Slash"));
            }
        }
Exemple #5
0
        public override void Pulse()
        {
            if (WoW.HealthPercent == 0 || WoW.IsMounted)
            {
                return;
            }
            if (!WoW.IsInCombat && WoW.CanCast("Mount") && WoW.IsOutdoors && !WoW.IsMoving && !WoW.PlayerIsChanneling)
            {
                WoW.CastSpell("Mount");
            }

            if (WoW.TargetHealthPercent == 0)
            {
                return;
            }

            if (!WoW.TargetIsEnemy &&
                WoW.HealthPercent < 100 &&
                WoW.CanCast("FlashHeal") &&
                WoW.Mana > 25 &&
                !WoW.IsMoving &&
                !WoW.PlayerIsChanneling)
            {
                WoW.CastSpell("FlashHeal");
                return;
            }

            if (!WoW.TargetIsEnemy)
            {
                return;
            }

            if (WoW.TargetIsCastingAndSpellIsInterruptible &&
                WoW.TargetPercentCast > 60 &&
                WoW.CanCast("Rebuke"))
            {
                WoW.CastSpell("Rebuke");
                return;
            }

            if (WoW.CanCast("ArdentDefender") && WoW.HealthPercent < 15)
            {
                Log.Write("Health < 15% using CD: [Ardent Defender]", Color.Red);
                WoW.CastSpell("ArdentDefender");
                return;
            }

            if (WoW.HealthPercent < 20 && !WoW.PlayerHasBuff("ArdentDefender"))
            {
                if (WoW.CanCast("LayOnHands") &&
                    !WoW.PlayerHasDebuff("Forbearance"))
                {
                    Log.Write("Health < 20% using CD: [Lay On Hands]", Color.Red);
                    WoW.CastSpell("LayOnHands");
                    return;
                }

                if (WoW.CanCast("DivineShield") &&
                    !WoW.PlayerHasDebuff("Forbearance") &&
                    WoW.CanCast("HandOfReckoning"))
                {
                    Log.Write("Health < 20% using CD: [Taunt & Divine Shield]", Color.Red);
                    WoW.CastSpell("HandOfReckoning");
                    WoW.CastSpell("DivineShield");
                    return;
                }
            }

            if (WoW.HealthPercent < 50)
            {
                if (WoW.CanCast("GuardianOfAncientKings") &&
                    !WoW.PlayerHasBuff("ArdentDefender"))
                {
                    Log.Write("Health < 50% using CD: [Guardian Of Ancient Kings]", Color.Red);
                    WoW.CastSpell("GuardianOfAncientKings");
                    return;
                }
            }

            if (!WoW.HasTarget)
            {
                return;
            }

            if (WoW.HasBossTarget &&
                WoW.CanCast("AvengingWrath"))
            {
                WoW.CastSpell("AvengingWrath"); // Off the GCD no return needed.
            }

            if (WoW.CanCast("AvengersShield"))
            {
                WoW.CastSpell("AvengersShield");
                return;
            }

            if (WoW.HealthPercent < 100)
            {
                if (WoW.CanCast("EyeOfTyr"))
                {
                    WoW.CastSpell("EyeOfTyr");
                    return;
                }
            }

            if (WoW.CanCast("Judgment"))
            {
                WoW.CastSpell("Judgment");
                return;
            }

            if (WoW.CanCast("Consecration"))
            {
                WoW.CastSpell("Consecration");
                return;
            }

            if (WoW.CanCast("LightOfTheProtector") &&
                WoW.PlayerHasBuff("Consecration") &&
                WoW.HealthPercent < 70)
            {
                WoW.CastSpell("LightOfTheProtector");
                return;
            }

            if (WoW.CanCast("BlessedHammer") &&
                WoW.CountEnemyNPCsInRange > 1)
            {
                WoW.CastSpell("BlessedHammer");
                return;
            }

            if (WoW.CanCast("BastionOfLight") &&
                WoW.PlayerSpellCharges("ShieldOfTheRighteous") == 0 &&
                !WoW.PlayerHasBuff("ShieldOfTheRighteous"))
            {
                WoW.CastSpell("BastionOfLight");
                return;
            }

            if (WoW.CanCast("ShieldOfTheRighteous") &&
                WoW.PlayerHasBuff("Consecration") &&
                WoW.PlayerSpellCharges("ShieldOfTheRighteous") > 0 &&
                !WoW.PlayerHasBuff("ShieldOfTheRighteous"))

            {
                WoW.CastSpell("ShieldOfTheRighteous");
                return;
            }

            if (WoW.CanCast("BlessedHammer"))
            {
                WoW.CastSpell("BlessedHammer");
                return;
            }
        }
        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;
                    }
                }
            }
        }
        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;
                    }
                }
            }
        }
        public override void Pulse()



        {
            if (WoW.CanCast("Battle cry") && UseCooldowns)
            {
                WoW.CastSpell("Battle cry");
                return;
            }

            if (WoW.CanCast("Avatar") && UseCooldowns && WoW.Talent(3) == 3 && WoW.PlayerHasBuff("Battle cry"))
            {
                WoW.CastSpell("Avatar");
                return;
            }

            if (WoW.CanCast("Odyns fury") && WoW.Level >= 101 && WoW.IsSpellOnCooldown("Raging Blow") && WoW.PlayerHasBuff("Battle cry") && !WoW.IsSpellOnGCD("Raging Blow") &&
                WoW.PlayerHasBuff("Frothing") && WoW.Rage < 100)
            {
                WoW.CastSpell("Odyns fury");
                return;
            }

            if (WoW.PlayerHealthPercent <= EnragedRegenerationHealth && WoW.CanCast("Enraged Regeneration"))
            {
                WoW.CastSpell("Enraged Regeneration");
                WoW.CastSpell("Raging Blow");
                return;
            }

            if (WoW.PlayerHealthPercent <= CommandingShout && WoW.CanCast("Commanding shout"))
            {
                WoW.CastSpell("Commanding shout");
                return;
            }

            if (Pummel && WoW.CanCast("Pummel") && WoW.Level >= 24 && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Pummel") && WoW.TargetPercentCast > Random.Next(50, 85))

            {
                WoW.CastSpell("Pummel");
                return;
            }

            if (WoW.PlayerHasDebuff("Fear"))
            {
                if (WoW.CanCast("Berserker Rage"))
                {
                    WoW.CastSpell("Berserker Rage");
                }
                else if (WoW.CanCast("Will of the Forsaken"))
                {
                    WoW.CastSpell("Will of the Forsaken");
                }
                else if (WoW.CanCast("Every Man For Himself"))
                {
                    WoW.CastSpell("Every Man For Himself");
                }
                return;
            }

            if (WoW.TargetHealthPercent == 0 && WoW.IsInCombat && WoW.RangeToTarget <= 5 && WoW.CountEnemyNPCsInRange >= 1 && !WoW.IsMounted || !WoW.HasTarget && WoW.IsInCombat && WoW.CountEnemyNPCsInRange >= 1 && WoW.RangeToTarget <= 6 && !WoW.IsMounted)
            {
                WoW.TargetNextEnemy();
                return;
            }

            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && WoW.Level >= 60)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 6 && WoW.IsInCombat)


                {
                    if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Juggernaut") || WoW.CanCast("Execute") && WoW.PlayerBuffTimeRemaining("Juggernaut") < 2 || WoW.CanCast("Execute") &&
                        WoW.SpellCooldownTimeRemaining("Battle cry") < 10000 || WoW.CanCast("Execute") && WoW.Rage >= 100 || WoW.CanCast("Execute") && WoW.PlayerHasBuff("SenseDeath") &&
                        WoW.Rage >= 100 || WoW.CanCast("Execute") && WoW.PlayerHasBuff("Battle cry") && WoW.PlayerHasBuff("Frothing"))
                    {
                        WoW.CastSpell("Execute");
                        return;

                        if (WoW.CanCast("Execute") && WoW.Level >= 8 && WoW.Rage >= 50)
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        if (WoW.CanCast("Bloodthirst") && WoW.Rage < 100 && WoW.SpellCooldownTimeRemaining("Battle cry") >= 11000 || WoW.CanCast("Bloodthirst") && WoW.Rage < 25 && WoW.Level >= 10 && WoW.SpellCooldownTimeRemaining("Battle cry") <= 9000 || WoW.CanCast("Bloodthirst") && WoW.IsSpellOnCooldown("Raging Blow") || WoW.CanCast("Rampage") && WoW.Level >= 12 && HasSouloftheBattlelord && WoW.PlayerHasBuff("Massacre"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                        if (WoW.CanCast("Raging Blow") && WoW.Rage < 100 && WoW.IsSpellOnCooldown("Bloodthirst") && WoW.SpellCooldownTimeRemaining("Battle cry") >= 11000 || WoW.CanCast("Raging Blow") && WoW.Rage < 25 && WoW.IsSpellOnCooldown("Bloodthirst") && WoW.Level >= 13 && WoW.SpellCooldownTimeRemaining("BattleCry") <= 9000)
                        {
                            WoW.CastSpell("Raging Blow");
                            return;
                        }

                        if (WoW.CanCast("Furious Slash") && WoW.IsSpellOnCooldown("Raging Blow") && !WoW.IsSpellOnGCD("Bloodthirst") && WoW.Level >= 10 && !WoW.IsSpellOnGCD("Raging Blow") &&
                            WoW.PlayerBuffTimeRemaining("TasteForBlood") <= 4000)
                        {
                            WoW.CastSpell("Furious Slash");
                            return;
                        }
                    }
                }
            }



            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && !WoW.PlayerHasBuff("Battle cry"))
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 6 && WoW.IsInCombat)


                {
                    if (WoW.CanCast("Execute") && WoW.Level >= 8 && HasAyalasStoneHeart)
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("Rampage") && WoW.Rage == 100 && WoW.Level >= 18)
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if ((WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage") && WoW.Rage < 100 && WoW.Level >= 10) || WoW.CanCast("Bloodthirst") && WoW.IsSpellOnCooldown("Raging Blow") &&
                        WoW.Rage < 100 && WoW.Level >= 10)
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }

                    if (WoW.CanCast("Raging Blow") && WoW.Level >= 13)
                    {
                        WoW.CastSpell("Raging Blow");
                        return;
                    }

                    if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball") && WoW.IsSpellOnCooldown("Raging Blow") && WoW.Talent(3) == 1 && WoW.PlayerHasBuff("Enrage"))
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }

                    if (WoW.CanCast("Furious Slash") && WoW.IsSpellOnCooldown("Raging Blow") && !WoW.IsSpellOnGCD("Bloodthirst") && WoW.Level >= 10 && !WoW.IsSpellOnGCD("Raging Blow") && WoW.PlayerBuffTimeRemaining("TasteForBlood") <= 4000 && WoW.Rage <= 90 && WoW.SpellCooldownTimeRemaining("Bloodthirst") <= 1000)
                    {
                        WoW.CastSpell("Furious Slash");
                        return;
                    }
                }
            }


            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && WoW.PlayerHasBuff("Battle cry"))
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 6 && WoW.IsInCombat)

                {
                    if (WoW.CanCast("Execute") && WoW.Level >= 8 && HasAyalasStoneHeart)
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("Rampage") && WoW.Level >= 12 && WoW.Rage >= 100)
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }
                    if (WoW.CanCast("Raging Blow") && WoW.Level >= 20 && WoW.PlayerHasBuff("Enrage"))
                    {
                        WoW.CastSpell("Raging Blow");
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && WoW.Level >= 10)
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }

                    if (WoW.CanCast("Furious Slash") && WoW.Level >= 10)
                    {
                        WoW.CastSpell("Furious Slash");
                        return;
                    }
                }
            }


            if (combatRoutine.Type == RotationType.Cleave)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 6 && WoW.IsInCombat)

                {
                    if (WoW.CanCast("Execute") && WoW.Level >= 8 && HasAyalasStoneHeart)
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }
                    if (WoW.CanCast("Whirlwind") && !WoW.PlayerHasBuff("Meat-Cleaver") && WoW.Level >= 28 || WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball") && WoW.Talent(3) == 1 &&
                        WoW.Level >= 45)
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }
                    if (WoW.CanCast("Rampage") && WoW.Rage == 100 && WoW.Level >= 12 && !WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat cleaver"))
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if (WoW.CanCast("Furious Slash") && WoW.IsSpellOnCooldown("Raging Blow") && !WoW.IsSpellOnGCD("Bloodthirst") && WoW.Level >= 10 && !WoW.IsSpellOnGCD("Raging Blow") &&
                        WoW.PlayerBuffTimeRemaining("TasteForBlood") <= 4000)
                    {
                        WoW.CastSpell("Furious Slash");
                        return;
                    }


                    if (WoW.CanCast("Bloodthirst") && WoW.Rage < 100 && WoW.CountEnemyNPCsInRange < 8 && WoW.PlayerHasBuff("Meat-Cleaver") && !WoW.PlayerHasBuff("Enrage") && WoW.Level >= 10)
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }
                    if (WoW.CanCast("Raging Blow") && WoW.PlayerHasBuff("Enrage") && WoW.CountEnemyNPCsInRange < 4 && WoW.Level >= 13)
                    {
                        WoW.CastSpell("Raging Blow");
                        return;
                    }
                }
            }
        }
Exemple #9
0
        public override void Pulse()
        {
            if (!WoW.InGame)
            {
                return;
            }

            if (WoW.TankId == 0)
            {
                string currentTalents = WoW.Talent(1) + "" + WoW.Talent(2) + "" + WoW.Talent(3) + "" + WoW.Talent(4) + "" + WoW.Talent(5) + "" + WoW.Talent(6) + "" + WoW.Talent(7);
                if (supportedTalents != currentTalents)
                {
                    MessageBox.Show("You are not using the supported talents " + supportedTalents + ", your currnet talents are " + currentTalents + ".", "Frozen", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    Log.Write("Talents are correct", Color.Green);
                }

                if (!WoW.PlayerHasBuff("Beacon of Faith") && !WoW.PlayerHasBuff("Beacon of Light") &&
                    WoW.CanCast("Beacon of Faith"))
                {
                    WoW.CastSpellOnMe("Beacon of Faith");
                }

                var f = new frmEnterTankId {
                    TopMost = true
                };
                f.ShowDialog();
            }

            if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted)
            {
                return;
            }
            if (WoW.PlayerIsCasting)
            {
                return;
            }

            var lowest = WoW.PartyLowestHealthPercent;

            int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent;

            if (WoW.PartyMemberIsNeedingADispel != 0)
            {
                currentTargetId = WoW.PartyMemberIsNeedingADispel;
            }

            if (currentTargetId == 0)
            {
                return;
            }
            if (lowest == 100)
            {
                return;
            }

            var averageHp = WoW.PartyAverageHealthPercent;

            if (WoW.PlayerHealthPercent < 10 && WoW.IsInCombat && WoW.CanCast("Divine Shield") &&
                !WoW.PlayerHasDebuff("Forbearance"))
            {
                WoW.CastSpell("Divine Shield");
            }

            if (averageHp < 80 && WoW.CanCast("Aura Mastery"))
            {
                WoW.CastSpell("Aura Mastery");
            }

            if (averageHp < 60 && WoW.CanCast("Avenging Wrath") && !WoW.PlayerHasBuff("Aura Mastery"))
            {
                WoW.CastSpell("Avenging Wrath");
            }

            WoW.TargetMember(currentTargetId); // Target the lowest health party member

            if (WoW.PartyMemberIsNeedingADispel != 0 && WoW.CanCast("Cleanse"))
            {
                WoW.CastSpell("Cleanse");
                return;
            }

            // Beacon of Light or Beacon of Virtue(if selected) maintain on your primary target at all times.
            if (WoW.Talent(7) == 3)
            {
                if (WoW.TankHealth > 50 &&
                    averageHp > 90 &&
                    WoW.CanCast("Beacon of Virtue") &&
                    WoW.TankId == currentTargetId &&
                    !WoW.TargetHasBuff("Beacon of Virtue"))
                {
                    WoW.CastSpell("Beacon of Virtue");
                }
            }
            if (WoW.Talent(7) == 1)
            {
                if (WoW.CanCast("Beacon of Light") &&
                    WoW.TankId == currentTargetId &&
                    !WoW.TargetHasBuff("Beacon of Light"))
                {
                    WoW.CastSpell("Beacon of Light");
                }
            }

            if (WoW.CanCast("Lay On Hands") &&
                lowest <= 20 &&                        // Use LOH if tanks health < 20 %
                !WoW.TargetHasDebuff("Forbearance") && // Make sure we dont LOH a tank with forbearance debuff
                WoW.TankId == currentTargetId)         // Make sure we only use LOH on tank
            {
                WoW.CastSpell("Lay On Hands");
                return;
            }

            if (WoW.CanCast("Blessing of Sacrifice") &&
                lowest <= 30 &&
                WoW.TankId == currentTargetId &&
                !WoW.TargetHasBuff("Shield Wall Oto"))
            {
                WoW.CastSpell("Blessing of Sacrifice");
                return;
            }

            // Holy Shock use on cooldown to generate Infusion of Light procs.
            // Consume Infusion of Light procs using the appropriate heal before your next Holy Shock.
            if (WoW.CanCast("Holy Shock") && !WoW.PlayerHasBuff("Infusion of Light"))
            {
                WoW.CastSpell("Holy Shock");
                return;
            }

            if (WoW.Talent(5) == 3)
            {
                if (WoW.CanCast("Holy Prism") &&
                    WoW.TankId == currentTargetId &&
                    WoW.IsInCombat)
                {
                    WoW.CastSpell("Holy Prism");
                    return;
                }
            }

            //                  Bestow Faith on cooldown (if selected).
            //                  Judgment to maintain the buff from Judgment of Light (if selected).

            // Light of the Martyr a potent emergency heal as long as you have health to spare.
            if (WoW.CanCast("Light of the Martyr") && lowest <= 40 && WoW.PlayerHealthPercent >= 70)
            {
                WoW.CastSpell("Light of the Martyr");
                return;
            }

            // Flash of Light use as an emergency heal to save players facing death.
            if (WoW.CanCast("Flash of Light") && lowest <= 50 && !WoW.IsMoving)
            {
                WoW.CastSpell("Flash of Light");
                return;
            }

            // Holy Light use to heal moderate to high damage.
            if (WoW.CanCast("Holy Light") && lowest <= 90 && !WoW.IsMoving)
            {
                WoW.CastSpell("Holy Light");
                return;
            }

            if (WoW.CanCast("Tyr's Deliverance") && !WoW.IsMoving)
            {
                WoW.TargetNearestEnemy();
                if (WoW.HasTarget && WoW.TargetIsEnemy)
                {
                    WoW.CastSpell("Tyr's Deliverance");
                }
            }
        }