Example #1
0
        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;
                    }
                }
            }
        }
Example #2
0
        public override void Pulse()
        {
            var TasteForBloodTime = WoW.PlayerBuffTimeRemaining("TasteForBlood");
            var EnrageTime        = WoW.PlayerBuffTimeRemaining("Enrage");
            var FujiedaTime       = WoW.PlayerBuffTimeRemaining("Fujieda");
            var Bloodbathtime     = WoW.PlayerBuffTimeRemaining("Bloodbath");

            //validtargetmelee = WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <=5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible;
            //validtargetaoe = WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <=5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible && WoW.CountEnemyNPCsInRange >=2;

            Ragepoints = WoW.Rage;

            if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted || WoW.PlayerIsChanneling || WoW.PlayerHasBuff("Bladestorm") || !WoW.IsInCombat)
            {
                return;
            }

            // Retarget stuff
            if (WoW.TargetHealthPercent == 0 && WoW.IsInCombat && WoW.RangeToTarget >= 5 && WoW.CountEnemyNPCsInRange >= 1 && !WoW.IsMounted &&
                ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoRetarget") || !WoW.HasTarget && WoW.IsInCombat && WoW.CountEnemyNPCsInRange >= 1 && WoW.RangeToTarget >= 1 &&
                !WoW.IsMounted && ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoRetarget"))
            {
                WoW.TargetNextEnemy();
                Log.Write("Retarget", Color.Blue);
                return;
            }


            //Fujeda Upkeep

            /*if (WoW.CanCast("Bloodthirst") && FujiedaTime < 2000 && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <=5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible)
             * {
             *      WoW.CastSpell("Bloodthirst");
             *      Log.Write("Fujieda", Color.Green);
             *      return;
             * }*/

            // buff stuff
            if (UseCooldowns && WoW.HasTarget && WoW.RangeToTarget <= 5)
            {
                if (WoW.CanCast("DragonRoar") && level >= 100 && WoW.Talent(7) == 3)
                {
                    WoW.CastSpell("DragonRoar");
                }

                //if (WoW.CanCast("BattleCry") && level >= 60 && SetBoniListT21 <=0 && (WoW.Talent(7) == 3 && WoW.PlayerHasBuff("DragonRoarBuff") || WoW.Talent(7) != 3))
                //{
                //    WoW.CastSpell("BattleCry");
                //}

                if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("BattleCry") /*&& SetBoniListT21 >= 4*/ && WoW.CountEnemyNPCsInRange <= 1 &&
                    (WoW.IsSpellOnCooldown("Rampage") && WoW.Rage < 50 && battlecrycount >= 1 || battlecrycount == 0))
                {
                    WoW.CastSpell("BattleCry");
                    battlecrycount += 1;
                }

                if (WoW.CanCast("BattleCry") /*&& SetBoniListT21 >= 4*/ && WoW.PlayerHasBuff("Meat-Cleaver") && (combatRoutine.Type == RotationType.AOE ||
                                                                                                                 combatRoutine.Type == RotationType.SingleTarget && WoW.CountEnemyNPCsInRange >= 2 && ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoAoE")))
                {
                    WoW.CastSpell("BattleCry");
                }

                if (WoW.CanCast("Avatar") && WoW.Talent(3) == 3 && (WoW.PlayerHasBuff("BattleCryBuff") && ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AvatarOnBoss") &&
                                                                    WoW.HasBossTarget || WoW.PlayerHasBuff("BattleCryBuff") && !ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AvatarOnBoss")))
                {
                    WoW.CastSpell("Avatar");
                }

                if (WoW.CanCast("Bloodbath") && WoW.Talent(6) == 1 && (WoW.PlayerHasBuff("BattleCryBuff") || WoW.SpellCooldownTimeRemaining("BattleCry") >= 20000))
                {
                    WoW.CastSpell("Bloodbath");
                }
            }

            //Autokick
            if (WoW.CanCast("Pummel") && WoW.TargetPercentCast >= Random.Next(50, 70) && WoW.TargetIsCastingAndSpellIsInterruptible &&
                ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "Autokick") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling &&
                WoW.TargetIsVisible)
            {
                WoW.CastSpell("Pummel");
                Log.Write("Pummel", Color.Green);
                return;
            }

            //Heal stuff
            if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible &&
                ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoRegeneration") && level >= 36 && WoW.PlayerHealthPercent <= 20)
            {
                if (WoW.CanCast("Enraged Regeneration"))
                {
                    WoW.CastSpell("Enraged Regeneration");
                }

                if (WoW.CanCast("Commanding Shout") && level >= 80)
                {
                    WoW.CastSpell("Commanding Shout");
                }

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

                if (WoW.CanCast("Furious-Slash") && WoW.IsSpellOnCooldown("Bloodthirst"))
                {
                    WoW.CastSpell("Furious-Slash");
                    return;
                }

                if (WoW.CanCast("Raging-Blow") && WoW.IsSpellOnCooldown("Bloodthirst") && WoW.IsSpellOnCooldown("Furious-Slash"))
                {
                    WoW.CastSpell("Raging-Blow");
                    return;
                }

                Log.Write("Heal", Color.Green);
                return;
            }

            // T21
            if (ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "T21Rotation") && !ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "T20Rotation"))
            {
                // Aoe stuff T21 Unbuffed + auto
                if (combatRoutine.Type == RotationType.AOE && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling &&
                    WoW.TargetIsVisible && WoW.CountEnemyNPCsInRange >= 2 && !WoW.PlayerHasBuff("BattleCryBuff") && !ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoAoE") ||
                    combatRoutine.Type == RotationType.SingleTarget && WoW.CountEnemyNPCsInRange >= 3 && ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoAoE") &&
                    WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible && WoW.CountEnemyNPCsInRange >= 2 &&
                    !WoW.PlayerHasBuff("BattleCryBuff"))
                {
                    if (WoW.CanCast("Bloodthirst") && Ragepoints < 100 && WoW.PlayerHasBuff("Meat-Cleaver"))
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }

                    if (WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Meat-Cleaver") && Ragepoints >= 100)
                    {
                        WoW.CastSpell("Rampage");
                        Log.Write("Rampage", Color.Blue);
                        return;
                    }

                    if (WoW.CanCast("Whirlwind") && !WoW.PlayerHasBuff("Meat-Cleaver"))
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }
                }

                // Aoe stuff T21 Buffed + auto
                if (combatRoutine.Type == RotationType.AOE && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling &&
                    WoW.TargetIsVisible && WoW.CountEnemyNPCsInRange >= 2 && WoW.PlayerHasBuff("BattleCryBuff") && !ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoAoE") ||
                    combatRoutine.Type == RotationType.SingleTarget && WoW.CountEnemyNPCsInRange >= 3 && ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoAoE") &&
                    WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible && WoW.CountEnemyNPCsInRange >= 2 &&
                    WoW.PlayerHasBuff("BattleCryBuff"))
                {
                    if (WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Meat-Cleaver") && Ragepoints >= 85)
                    {
                        WoW.CastSpell("Rampage");
                        Log.Write("Rampage", Color.Red);
                        return;
                    }

                    if (WoW.CanCast("OdynsFury"))
                    {
                        WoW.CastSpell("OdynsFury");
                        Log.Write("OdynsFury", Color.Pink);
                        return;
                    }

                    if (WoW.CanCast("Whirlwind") && !WoW.PlayerHasBuff("Meat-Cleaver"))
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && Ragepoints < 100 && WoW.PlayerHasBuff("Meat-Cleaver"))
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }
                }

                //T21
                // Do Single Target Unbuffed Stuff here T21
                if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && !WoW.PlayerHasBuff("BattleCryBuff") && WoW.HasTarget && WoW.TargetIsEnemy &&
                    WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible)
                {
                    if (WoW.CanCast("Rampage") && (Ragepoints >= 100 || WoW.SpellCooldownTimeRemaining("BattleCry") < 1000 && Ragepoints >= 85 && UseCooldowns))
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if (WoW.CanCast("Execute") && WoW.PlayerHasBuff("Ayala"))
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && Ragepoints < 100)
                    {
                        WoW.CastSpell("Bloodthirst");
                        Log.Write("Bloodthirst", Color.Red);
                        return;
                    }

                    if (WoW.CanCast("Whirlwind") && (WoW.PlayerHasBuff("Wrecking-Ball") && WoW.PlayerHasBuff("Enrage") && Ragepoints < 100))
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }

                    if (WoW.CanCast("Raging-Blow") && WoW.PlayerHasBuff("Enrage") && Ragepoints < 100 && WoW.SpellCooldownTimeRemaining("Bloodthirst") > 650)
                    {
                        WoW.CastSpell("Raging-Blow");
                        return;
                    }

                    if (WoW.CanCast("Furious-Slash") && WoW.SpellCooldownTimeRemaining("Bloodthirst") > 650 && WoW.Rage < 100)
                    {
                        WoW.CastSpell("Furious-Slash");
                        return;
                    }
                }

                // Do Single Target Buffed Stuff here T21
                if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && WoW.PlayerHasBuff("BattleCryBuff") && WoW.HasTarget && WoW.TargetIsEnemy &&
                    WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible)
                {
                    if (WoW.CanCast("Rampage") && (WoW.PlayerHasBuff("Massacre") || Ragepoints >= 85))
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if (WoW.CanCast("OdynsFury") && WoW.Rage < 100)
                    {
                        WoW.CastSpell("OdynsFury");
                        Log.Write("OdynsFury", Color.Pink);
                        return;
                    }

                    if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking-Ball") && Ragepoints < 100)
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && Ragepoints < 100 && WoW.SpellCooldownTimeRemaining("BattleCry") < 49000)
                    {
                        WoW.CastSpell("Bloodthirst");
                        Log.Write("Bloodthirst", Color.Green);
                        return;
                    }

                    if (WoW.CanCast("Raging-Blow") && Ragepoints < 100 && WoW.SpellCooldownTimeRemaining("Bloodthirst") > 650 && WoW.PlayerHasBuff("Enrage"))
                    {
                        WoW.CastSpell("Raging-Blow");
                        return;
                    }
                }

                // Do Single Target Unbuffed Execute Stuff here T21
                if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && level >= 60 && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 &&
                    WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible && !WoW.PlayerHasBuff("BattleCryBuff") &&
                    !WoW.IsEquippedItem("SouloftheBattlelord"))
                {
                    if (WoW.CanCast("Bloodthirst") && Ragepoints < 25)
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }

                    if (WoW.CanCast("Execute") && (WoW.PlayerHasBuff("Ayala") || (Ragepoints >= 25 || (!WoW.PlayerHasBuff("Juggernaut") && Ragepoints >= 25 ||
                                                                                                       WoW.PlayerBuffTimeRemaining("Juggernaut") < 2000 && Ragepoints >= 25))))
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("Raging-Blow") && WoW.PlayerHasBuff("Enrage") && Ragepoints < 25)
                    {
                        WoW.CastSpell("Raging-Blow");
                        return;
                    }

                    if (WoW.CanCast("Furious-Slash") && WoW.SpellCooldownTimeRemaining("Bloodthirst") > 650 && Ragepoints < 25)
                    {
                        WoW.CastSpell("Furious-Slash");
                        return;
                    }
                }

                // Do Single Target Buffed Execute Stuff here T21
                if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && level >= 60 && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 &&
                    WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible && WoW.PlayerHasBuff("BattleCryBuff") &&
                    !WoW.IsEquippedItem("SouloftheBattlelord"))
                {
                    if (WoW.CanCast("Execute") && (WoW.PlayerHasBuff("Ayala") || (Ragepoints >= 25 || (!WoW.PlayerHasBuff("Juggernaut") && Ragepoints >= 25 ||
                                                                                                       WoW.PlayerBuffTimeRemaining("Juggernaut") < 2000 && Ragepoints >= 25))))
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("Rampage") && (WoW.PlayerHasBuff("Massacre") && (!WoW.PlayerHasBuff("Enrage") || EnrageTime < 1000)))
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && Ragepoints < 25)
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }
                }

                // Do Single Target Buffed Execute Stuff here T21 SouloftheBattlelord
                if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && level >= 60 && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 &&
                    WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible && !WoW.PlayerHasBuff("BattleCryBuff") &&
                    WoW.IsEquippedItem("SouloftheBattlelord"))
                {
                    if (WoW.CanCast("Execute") && (WoW.PlayerHasBuff("Ayala") || (Ragepoints >= 25 || (!WoW.PlayerHasBuff("Juggernaut") && Ragepoints >= 25 ||
                                                                                                       WoW.PlayerBuffTimeRemaining("Juggernaut") < 2000 && Ragepoints >= 25))))
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("Rampage") && (WoW.PlayerHasBuff("Massacre") && (!WoW.PlayerHasBuff("Enrage") || EnrageTime < 1000)))
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && Ragepoints < 25)
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }
                }
            }

            // T20
            if (!ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "T21Rotation") && ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "T20Rotation"))
            {
                //AutoAoET20
                if (combatRoutine.Type == RotationType.SingleTarget && WoW.CountEnemyNPCsInRange >= 3 && ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoAoE") && WoW.HasTarget &&
                    WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible &&
                    SetBoniListT21 <= 0)
                {
                    if (WoW.CanCast("Bladestorm") && WoW.Talent(7) == 1 && EnrageTime > 2000)
                    {
                        WoW.CastSpell("Bladestorm");
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && FujiedaTime < 2000)
                    {
                        WoW.CastSpell("Bloodthirst");
                        Log.Write("Fujieda", Color.Green);
                        return;
                    }

                    if (WoW.CanCast("Rampage") && Ragepoints >= 100 && level >= 18 && WoW.PlayerHasBuff("Meat-Cleaver") || WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Massacre") &&
                        WoW.PlayerHasBuff("Meat-Cleaver"))
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if (WoW.CanCast("Raging-Blow") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Frothing") && Ragepoints < 100 && WoW.CountEnemyNPCsInRange < 4)
                    {
                        WoW.CastSpell("Raging-Blow");
                        return;
                    }

                    if (WoW.CanCast("OdynsFury") && level >= 101 && WoW.SpellCooldownTimeRemaining("Raging-Blow") > 0 && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("BattleCryBuff"))
                    {
                        WoW.CastSpell("OdynsFury");
                        Log.Write("OdynsFury", Color.Green);
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && Ragepoints < 90 && !WoW.PlayerHasBuff("Enrage") && level >= 10 && WoW.PlayerHasBuff("Meat-Cleaver"))
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }

                    if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking-Ball") && WoW.Talent(3) == 1 && WoW.PlayerHasBuff("Enrage") || WoW.CanCast("Whirlwind") &&
                        !WoW.PlayerHasBuff("Meat-Cleaver") && WoW.SpellCooldownTimeRemaining("Bloodthirst") <= 1000)
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }

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

                    Log.Write("AoE", Color.Green);
                    return;
                }

                // Do Single Target Unbuffed Stuff here T20
                if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && !WoW.PlayerHasBuff("BattleCryBuff") && WoW.HasTarget && WoW.TargetIsEnemy &&
                    WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible)
                {
                    if (WoW.CanCast("Raging-Blow") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Frothing") && Ragepoints < 100)
                    {
                        WoW.CastSpell("Raging-Blow");
                        return;
                    }

                    if (WoW.CanCast("Execute") && WoW.PlayerHasBuff("Ayala") && WoW.SpellCooldownTimeRemaining("Raging-Blow") > 1000 || WoW.CanCast("Execute") && WoW.PlayerHasBuff("Ayala") &&
                        WoW.PlayerHasBuff("Massacre"))
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("Rampage") && Ragepoints >= 100 && level >= 18 || WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Massacre"))
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

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

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

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

                    if (WoW.CanCast("Furious-Slash") && EnrageTime < 1000 && WoW.SpellCooldownTimeRemaining("Bloodthirst") > 1000 && Ragepoints < 90)
                    {
                        WoW.CastSpell("Furious-Slash");
                        return;
                    }
                }

                // Do Single Target Buffed Stuff here T20
                if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && WoW.PlayerHasBuff("BattleCryBuff") && WoW.HasTarget && WoW.TargetIsEnemy &&
                    WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible && WoW.Talent(6) == 3)
                {
                    if (WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Massacre") && EnrageTime <= 1000)
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if (WoW.CanCast("Execute") && WoW.PlayerHasBuff("Ayala") && WoW.SpellCooldownTimeRemaining("Raging-Blow") > 1000 || WoW.CanCast("Execute") && WoW.PlayerHasBuff("Ayala") &&
                        WoW.PlayerHasBuff("Massacre"))
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("Raging-Blow") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Frothing") && Ragepoints < 100)
                    {
                        WoW.CastSpell("Raging-Blow");
                        return;
                    }

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

                    if (WoW.CanCast("OdynsFury") && level >= 101 && WoW.SpellCooldownTimeRemaining("Raging-Blow") > 0 && WoW.PlayerHasBuff("Enrage"))
                    {
                        WoW.CastSpell("OdynsFury");
                        Log.Write("OdynsFury", Color.Green);
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && EnrageTime <= 1000)
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }

                    if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking-Ball"))
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }

                    if (WoW.CanCast("Raging-Blow"))
                    {
                        WoW.CastSpell("Raging-Blow");
                        return;
                    }

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

                    if (WoW.CanCast("Furious-Slash") && EnrageTime < 1000 && WoW.SpellCooldownTimeRemaining("Bloodthirst") > 1000 && Ragepoints < 90)
                    {
                        WoW.CastSpell("Furious-Slash");
                        return;
                    }
                }

                // Do Single Target Execute Stuff here T20

                if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && level >= 60 && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 &&
                    WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible)
                {
                    if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Juggernaut") && Ragepoints >= 25 || WoW.CanCast("Execute") && WoW.PlayerBuffTimeRemaining("Juggernaut") < 2000 && Ragepoints >= 25 ||
                        WoW.CanCast("Execute") && WoW.SpellCooldownTimeRemaining("BattleCry") < 5000 && Ragepoints >= 25 || WoW.CanCast("Execute") && WoW.PlayerHasBuff("Ayala") ||
                        WoW.CanCast("Execute") && Ragepoints >= 25 && WoW.PlayerHasBuff("BattleCryBuff") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Frothing"))
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Massacre") && EnrageTime < 1000)
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if (WoW.CanCast("Execute") && Ragepoints >= 25 && WoW.Talent(6) != 3 || WoW.CanCast("Execute") && Ragepoints >= 100 && WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }

                    if (WoW.CanCast("OdynsFury") && level >= 101 && WoW.SpellCooldownTimeRemaining("Raging-Blow") > 0 && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("BattleCryBuff"))
                    {
                        WoW.CastSpell("OdynsFury");
                        Log.Write("OdynsFury", Color.Green);
                        return;
                    }

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

                    if (WoW.CanCast("Furious-Slash") && SetBoniListT20 >= 2)
                    {
                        WoW.CastSpell("Furious-Slash");
                        return;
                    }

                    if (WoW.CanCast("Raging-Blow"))
                    {
                        WoW.CastSpell("Raging-Blow");
                        return;
                    }

                    if (WoW.CanCast("Furious-Slash") && EnrageTime < 1000 && WoW.SpellCooldownTimeRemaining("Bloodthirst") > 1000 && Ragepoints < 90)
                    {
                        WoW.CastSpell("Furious-Slash");
                        return;
                    }
                }

                // Aoe stuff
                if (combatRoutine.Type == RotationType.AOE && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <= 5 && WoW.IsInCombat && !WoW.PlayerIsChanneling &&
                    WoW.TargetIsVisible && !ConfigFile.ReadValue <bool>("Fury-Warrior-Lelefi", "AutoAoE"))
                {
                    if (WoW.CanCast("Bladestorm") && WoW.Talent(7) == 1 && EnrageTime > 2000)
                    {
                        WoW.CastSpell("Bladestorm");
                        return;
                    }

                    if (WoW.CanCast("Rampage") && Ragepoints >= 100 && level >= 18 && WoW.PlayerHasBuff("Meat-Cleaver") || WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Massacre") &&
                        WoW.PlayerHasBuff("Meat-Cleaver"))
                    {
                        WoW.CastSpell("Rampage");
                        return;
                    }

                    if (WoW.CanCast("Raging-Blow") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Frothing") && Ragepoints < 100 && WoW.CountEnemyNPCsInRange < 4)
                    {
                        WoW.CastSpell("Raging-Blow");
                        return;
                    }

                    if (WoW.CanCast("OdynsFury") && level >= 101 && WoW.SpellCooldownTimeRemaining("Raging-Blow") > 0 && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("BattleCryBuff"))
                    {
                        WoW.CastSpell("OdynsFury");
                        Log.Write("OdynsFury", Color.Green);
                        return;
                    }

                    if (WoW.CanCast("Bloodthirst") && Ragepoints < 90 && !WoW.PlayerHasBuff("Enrage") && level >= 10 && WoW.PlayerHasBuff("Meat-Cleaver"))
                    {
                        WoW.CastSpell("Bloodthirst");
                        return;
                    }

                    if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking-Ball") && WoW.Talent(3) == 1 && WoW.PlayerHasBuff("Enrage") || WoW.CanCast("Whirlwind") &&
                        !WoW.PlayerHasBuff("Meat-Cleaver") && WoW.SpellCooldownTimeRemaining("Bloodthirst") <= 1500)
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }

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

                    Log.Write("AoE", Color.Green);
                    return;
                }
            }

/*
 *
 *                      //Anti Fear
 *                      //if (WoW.CanCast("Berserker Rage") && WoW.IsInCombat && WoW.PlayerHasDebuff("Fear") && ConfigFile.ReadValue<bool>("Fury-Warrior-Lelefi", "AntiFear"))
 *                      //{
 *                      //	WoW.CastSpell("Berserker Rage");
 *                      //	return;
 *                      //}
 *
 *                      //if (WoW.CanCast("Commanding Shout") && WoW.PartyAverageHealthPercent <= 50 && level >= 80 && ConfigFile.ReadValue<bool>("Fury-Warrior-Lelefi", "AutoPartyCommandingShout"))
 *                      //{
 *                      //	WoW.CastSpell("Commanding Shout");
 *                      //	return;
 *                      //}
 *
 *                      //leveling
 *          if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && level <= 59 && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <=5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible)
 *          {
 *                              if (WoW.CanCast("Execute") && Ragepoints >= 25 && level >= 8)
 *                              {
 *                                      WoW.CastSpell("Execute");
 *                                      return;
 *                              }
 *
 *                              if (WoW.CanCast("Bloodthirst") && Ragepoints < 25 && level >= 10)
 *                              {
 *                                      WoW.CastSpell("Bloodthirst");
 *                                      return;
 *                              }
 *
 *                              if (WoW.CanCast("Raging-Blow") && Ragepoints < 25 && WoW.IsSpellOnCooldown("Bloodthirst") && level >= 13)
 *                              {
 *                                      WoW.CastSpell("Raging-Blow");
 *                                      return;
 *                              }
 *
 *                              if (WoW.CanCast("Furious-Slash") && WoW.IsSpellOnCooldown("Raging-Blow") && !WoW.IsSpellOnGCD("Bloodthirst") && level >= 10 && !WoW.IsSpellOnGCD("Raging-Blow") &&
 *                                      TasteForBloodTime <= 4000)
 *                              {
 *                                      WoW.CastSpell("Furious-Slash");
 *                                      return;
 *                              }
 *          }
 *
 *          if (combatRoutine.Type == RotationType.SingleTarget && level <= 9 && WoW.PlayerClassSpec == "Warrior-Arms" && WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget <=5 && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible)
 *          {
 *              if (WoW.CanCast("Slam") && WoW.IsSpellOnCooldown("Mortal Strike") && Ragepoints >= 20)
 *              {
 *                  WoW.CastSpell("Slam");
 *                  return;
 *              }
 *
 *              if (WoW.CanCast("Mortal Strike") && Ragepoints >= 20 && level >= 5)
 *              {
 *                                      WoW.CastSpell("Mortal Strike");
 *                                      return;
 *              }
 *          }
 */
            if (combatRoutine.Type == RotationType.Cleave) //
            {
            }
        }
Example #3
0
        public override void Pulse()
        {
            if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted)
            {
                return;
            }
            if (!WoW.HasTarget || !WoW.TargetIsEnemy)
            {
                return;
            }
            if (WoW.PlayerIsChanneling)
            {
                return;
            }
            bool range           = WoW.IsSpellInRange("DemonsBite");
            int  fury            = WoW.Fury;
            int  fury_max        = 140;
            int  fury_deficit    = fury_max - WoW.Fury;
            var  eb_cd           = WoW.SpellCooldownTimeRemaining("EyeBeam");
            var  meta_cd         = WoW.SpellCooldownTimeRemaining("Metamorphosis");
            var  nemisis_cd      = WoW.SpellCooldownTimeRemaining("Nemesis");
            var  chaos_blades_cd = WoW.SpellCooldownTimeRemaining("ChaosBlades");
            var  pummel          = WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > 50;

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


            if (WoW.CanCast("ConsumeMagic") && pummel)
            {
                WoW.CastSpell("ConsumeMagic");
                return;
            }
            if (WoW.CanCast("ArcaneTorrent") && WoW.IsSpellOnCooldown("ConsumeMagic") && pummel)
            {
                WoW.CastSpell("ArcaneTorrent");
                return;
            }


            if (WoW.Talent(7) != 3)
            {
                if (WoW.HasBossTarget && !WoW.IsSpellOnCooldown("FOTI") && WoW.IsSpellInRange("ChaosStrike"))
                {
                    WoW.CastSpell("FOTI");
                    return;
                }

                if (WoW.CanCast("FOTI") && !WoW.IsSpellOnCooldown("FOTI") && WoW.IsSpellInRange("ChaosStrike") &&
                    WoW.CountEnemyNPCsInRange >= 2 && !WoW.IsMoving)
                {
                    WoW.CastSpell("FOTI");
                    return;
                }

                if (WoW.CanCast("EyeBeam") && WoW.Fury > 50 && WoW.CountEnemyNPCsInRange >= 2 &&
                    !WoW.IsMoving)
                {
                    WoW.CastSpell("EyeBeam");
                    return;
                }

                if (WoW.PlayerHasBuff("Metamorphosis"))
                {
                    if (WoW.CanCast("Nemesis") && !WoW.IsSpellOnCooldown("Nemesis") && WoW.Talent(5) == 3)
                    {
                        WoW.CastSpell("Nemesis");
                    }

                    if (WoW.CanCast("ChaosBlades") && !WoW.IsSpellOnCooldown("ChaosBlades") && WoW.Talent(7) == 1)
                    {
                        WoW.CastSpell("ChaosBlades");
                    }

                    if (WoW.CanCast("Deathsweep") && !WoW.IsSpellOnCooldown("Deathsweep") && WoW.IsSpellInRange("Annihilation") &&
                        WoW.Fury > 15)
                    {
                        WoW.CastSpell("Deathsweep");
                        return;
                    }

                    if (WoW.CanCast("Annihilation") && !WoW.IsSpellOnCooldown("Annihilation") && WoW.IsSpellInRange("Annihilation") &&
                        WoW.Fury > 40)
                    {
                        WoW.CastSpell("Annihilation");
                        return;
                    }

                    if (WoW.CanCast("Felblade") && WoW.IsSpellInRange("Annihilation"))
                    {
                        WoW.CastSpell("Felblade");
                        return;
                    }
                }

                if (WoW.CanCast("BladeDance") && !WoW.IsSpellOnCooldown("BladeDance") && WoW.IsSpellInRange("ChaosStrike") &&
                    WoW.Fury > 15)
                {
                    WoW.CastSpell("BladeDance");
                    return;
                }

                if (WoW.CanCast("Felblade") && WoW.IsSpellInRange("ChaosStrike") && WoW.Fury < 110)
                {
                    WoW.CastSpell("Felblade");
                    return;
                }

                if (WoW.CanCast("ChaosStrike") && !WoW.IsSpellOnCooldown("ChaosStrike") && WoW.IsSpellInRange("ChaosStrike") &&
                    WoW.Fury > 40)
                {
                    WoW.CastSpell("ChaosStrike");
                    return;
                }

                if (WoW.CanCast("Felblade") && WoW.IsSpellInRange("ChaosStrike"))
                {
                    WoW.CastSpell("Felblade");
                    return;
                }

                if (WoW.CanCast("ThrowGlaives") && WoW.IsInCombat)
                {
                    WoW.CastSpell("ThrowGlaives");
                    return;
                }
            }

            if (WoW.CanCast("ThrowGlaives") && WoW.RangeToTarget >= 8 && WoW.RangeToTarget <= 30)
            {
                WoW.CastSpell("ThrowGlaives");
                return;
            }

            if (WoW.Talent(7) == 3 && range)
            {
                if (WoW.CanCast("Deathsweep") && (WoW.CountEnemyNPCsInRange >= 5 || WoW.Talent(3) == 2) && fury >= 35 && WoW.PlayerHasBuff("Metamorphosis"))
                {
                    WoW.CastSpell("Deathsweep");
                    return;
                }
                if (WoW.CanCast("FelEruption") && fury >= 10 && WoW.Talent(5) == 2)
                {
                    WoW.CastSpell("FelEruption");
                    return;
                }
                if (WoW.CanCast("FOTI") && (WoW.CountEnemyNPCsInRange >= 2 || WoW.HasBossTarget))
                {
                    WoW.CastSpell("FOTI");
                    return;
                }
                if (WoW.CanCast("BladeDance") && (WoW.CountEnemyNPCsInRange >= 5 || WoW.Talent(3) == 2) && fury >= 35 && eb_cd > 5000 && meta_cd > 0 && !WoW.PlayerHasBuff("Metamorphosis"))
                {
                    WoW.CastSpell("BladeDance");
                    return;
                }
                if (WoW.CanCast("EyeBeam") && fury >= 30 && (WoW.CountEnemyNPCsInRange >= 2 || !WoW.PlayerHasBuff("Metamorphosis")))
                {
                    WoW.CastSpell("EyeBeam");
                    return;
                }
                if (WoW.CanCast("Annihilation") && fury >= 40 && WoW.PlayerHasBuff("Metamorphosis"))
                {
                    WoW.CastSpell("Annihilation");
                    return;
                }
                if (WoW.CanCast("ChaosStrike") && fury >= 40 && !WoW.PlayerHasBuff("Metamorphosis"))
                {
                    WoW.CastSpell("ChaosStrike");
                    return;
                }
                if (WoW.CanCast("DemonsBite"))
                {
                    WoW.CastSpell("DemonsBite");
                    return;
                }
            }
        }