Esempio n. 1
0
 public override void Pulse()                             // Updated for Legion (tested and working for single target)
 {
     if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy)
         {
             if (!WoW.TargetHasDebuff("Virulent Plague") && WoW.CurrentRunes >= 1 && WoW.CanCast("Outbreak", true, false, true))
             {
                 WoW.CastSpell("Outbreak");
                 return;
             }
             if (WoW.CanCast("Dark Transformation", true, true, true))
             {
                 WoW.CastSpell("Dark Transformation");
                 return;
             }
             if (WoW.CanCast("Death Coil") && WoW.RunicPower >= 80 ||
                 WoW.PlayerHasBuff("Sudden Doom") && WoW.IsSpellOnCooldown("Dark Arbiter"))
             {
                 WoW.CastSpell("Death Coil");
                 return;
             }
             if (WoW.CanCast("Festering Strike", true, true, true) &&
                 WoW.TargetDebuffStacks("Festering Wound") <= 4)
             {
                 WoW.CastSpell("Festering Strike");
                 return;
             }
             if (WoW.CanCast("Clawing Shadows") && WoW.CurrentRunes >= 3)
             {
                 WoW.CastSpell("Clawing Shadows");
             }
         }
     }
     if (combatRoutine.Type == RotationType.AOE)
     {
         // Do AOE stuff here
     }
     if (combatRoutine.Type == RotationType.Cleave)
     {
         // Do Single Target Cleave stuff here if applicable else ignore this one
     }
 }
Esempio n. 2
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("Rupture") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                        (!WoW.TargetHasDebuff("Rupture") || WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") < 5))
                    {
                        WoW.CastSpell("Rupture");
                        return;
                    }
                    if (WoW.CanCast("Vendetta") && !WoW.IsSpellOnCooldown("Vendetta") && WoW.Energy <= 50)
                    {
                        WoW.CastSpell("Vendetta");
                        return;
                    }
                    if (WoW.CanCast("Vanish") && WoW.CurrentComboPoints >= 6 && WoW.Energy >= 25 &&
                        (!WoW.TargetHasDebuff("Rupture") || WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") < 5))
                    {
                        WoW.CastSpell("Vanish");
                        return;
                    }
                    if (WoW.CanCast("Rupture") && WoW.CurrentComboPoints >= 6 && WoW.Energy >= 25 && WoW.PlayerHasBuff("Stealth") &&
                        (WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") < 5 || !WoW.TargetHasDebuff("Rupture")))
                    {
                        WoW.CastSpell("Rupture");
                        return;
                    }
                    if (WoW.CanCast("Garrote") && WoW.Energy >= 45 && (!WoW.TargetHasDebuff("Garrote") || WoW.TargetHasDebuff("Garrote") && WoW.TargetDebuffTimeRemaining("Garrote") < 3))
                    {
                        WoW.CastSpell("Garrote");
                        return;
                    }
                    if (WoW.CanCast("Kingsbane") && !WoW.IsSpellOnCooldown("Kingsbane") && (WoW.SpellCooldownTimeRemaining("Vendetta") >= 10 || WoW.TargetHasDebuff("Vendetta")))
                    {
                        WoW.CastSpell("Kingsbane");
                        return;
                    }
                    if (WoW.CanCast("Envenom") && WoW.Energy >= 35 && !WoW.PlayerHasBuff("Envenom") && WoW.CurrentComboPoints >= 3 && WoW.TargetHasDebuff("Rupture") &&
                        WoW.TargetDebuffTimeRemaining("Rupture") >= 10 && (!WoW.PlayerHasBuff("Elaborate Planning") || WoW.PlayerBuffTimeRemaining("Elaborate Planning") <= 2.0))
                    {
                        WoW.CastSpell("Envenom");
                        return;
                    }
                    if (WoW.CanCast("Mutilate") && WoW.Energy >= 55 && WoW.CurrentComboPoints <= 5 && WoW.PlayerBuffTimeRemaining("Elaborate Planning") >= 2.1)
                    {
                        WoW.CastSpell("Mutilate");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.SingleTargetCleave) // Do AoE Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("Rupture") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                        (!WoW.TargetHasDebuff("Rupture") || WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") < 5))
                    {
                        WoW.CastSpell("Rupture");
                        return;
                    }
                    if (WoW.CanCast("Vendetta") && !WoW.IsSpellOnCooldown("Vendetta") && WoW.Energy <= 50)
                    {
                        WoW.CastSpell("Vendetta");
                        return;
                    }
                    if (WoW.CanCast("Vanish") && WoW.CurrentComboPoints >= 6 && WoW.Energy >= 25 &&
                        (!WoW.TargetHasDebuff("Rupture") || WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") < 5))
                    {
                        WoW.CastSpell("Vanish");
                        return;
                    }
                    if (WoW.CanCast("Rupture") && WoW.CurrentComboPoints >= 6 && WoW.Energy >= 25 && WoW.PlayerHasBuff("Stealth") &&
                        (WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") < 5 || !WoW.TargetHasDebuff("Rupture")))
                    {
                        WoW.CastSpell("Rupture");
                        return;
                    }
                }
                if (WoW.CanCast("Garrote") && WoW.Energy >= 45 && (!WoW.TargetHasDebuff("Garrote") || WoW.TargetHasDebuff("Garrote") && WoW.TargetDebuffTimeRemaining("Garrote") < 3))
                {
                    WoW.CastSpell("Garrote");
                    return;
                }
                if (WoW.CanCast("Kingsbane") && !WoW.IsSpellOnCooldown("Kingsbane") && (WoW.SpellCooldownTimeRemaining("Vendetta") >= 10 || WoW.TargetHasDebuff("Vendetta")))
                {
                    WoW.CastSpell("Kingsbane");
                    return;
                }
                if (WoW.CanCast("Envenom") && WoW.Energy >= 35 && !WoW.PlayerHasBuff("Envenom") && WoW.CurrentComboPoints >= 3 && WoW.TargetHasDebuff("Rupture") &&
                    WoW.TargetDebuffTimeRemaining("Rupture") >= 10 && (!WoW.PlayerHasBuff("Elaborate Planning") || (WoW.PlayerBuffTimeRemaining("Elaborate Planning") <= 2.0)))
                {
                    WoW.CastSpell("Envenom");
                    return;
                }
                if (WoW.CanCast("Fan of Knives") && WoW.Energy >= 35 && !WoW.TargetHasDebuff("Agonizing Poison"))
                {
                    WoW.CastSpell("Fan of Knives");
                    return;
                }
                if (WoW.CanCast("Fan of Knives") && WoW.Energy >= 35 && WoW.TargetHasDebuff("Agonizing Poison") && WoW.TargetDebuffStacks("Agonizing Poison") <= 4)
                {
                    WoW.CastSpell("Fan of Knives");
                    return;
                }
                if (WoW.CanCast("Fan of Knives") && WoW.Energy >= 35 && WoW.TargetHasDebuff("Agonizing Poison") && WoW.TargetDebuffTimeRemaining("Agonizing Poison") < 2)
                {
                    WoW.CastSpell("Fan of Knives");
                    return;
                }
                if (WoW.CanCast("Mutilate") && WoW.Energy >= 55 && WoW.CurrentComboPoints <= 5)
                {
                    WoW.CastSpell("Mutilate");
                }
            }
        }
Esempio n. 3
0
        public override void Pulse()
        {
            //Talent Checker
            string currentTalents = WoW.Talent(1) + "" + WoW.Talent(2) + "" + WoW.Talent(3) + "" + WoW.Talent(4) + "" + WoW.Talent(5) + "" + WoW.Talent(6) + "" + WoW.Talent(7);

            if (WoW.Talent(3) != 2 && WoW.Talent(3) != 1)
            {
                Log.Write("Talents are not 1322322", Color.Green);
                return;
            }


            if (combatRoutine.Type == RotationType.SingleTarget)             // Do Single Target Stuff here
            {
                //Build one: Rend
                if (WoW.Talent(3) == 2 && WoW.IsSpellInRange("Slam") && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.CountEnemyNPCsInRange < 8)

                {
                    if (WoW.TargetHealthPercent > 20)
                    {
                        if (WoW.CanCast("Rend") &&
                            !WoW.TargetHasDebuff("Rend") || WoW.TargetDebuffTimeRemaining("Rend") <= 30)
                        {
                            WoW.CastSpell("Rend");
                        }

                        if (WoW.CanCast("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") &&
                            !WoW.IsSpellOnCooldown("Colossus Smash"))
                        {
                            WoW.CastSpell("Colossus Smash");
                        }

                        //MS
                        if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Mortal Strike");
                        }
                        //Slam
                        if (WoW.CanCast("Slam") && WoW.Rage >= 18 && WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && WoW.CountEnemyNPCsInRange == 1)
                        {
                            WoW.CastSpell("Slam");
                            return;
                        }
                        if (WoW.Rage >= 36 && WoW.CountEnemyNPCsInRange >= 2)
                        {
                            if (WoW.CanCast("Cleave") && !WoW.PlayerHasBuff("Cleave") && !WoW.IsSpellOnCooldown("Cleave") && WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses"))
                            {
                                WoW.CastSpell("Cleave");
                                return;
                            }

                            if (WoW.CanCast("Whirlwind") && WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && WoW.IsSpellOnCooldown("Cleave"))
                            {
                                WoW.CastSpell("Whirlwind");
                                return;
                            }
                        }
                        if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                    }
                    if (WoW.TargetHealthPercent <= 20)
                    {
                        //MS if you have EP x2 and SD
                        if (WoW.CanCast("Mortal Strike") &&
                            !WoW.IsSpellOnCooldown("Mortal Strike") &&
                            WoW.PlayerHasBuff("Shattered Defenses") &&
                            WoW.TargetHasDebuff("Executioner’s Precision") &&
                            WoW.TargetDebuffStacks("Executioner’s Precision") == 2)
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        //CS if no SD
                        if (WoW.CanCast("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") &&
                            !WoW.IsSpellOnCooldown("Colossus Smash"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        // Execute
                        if (WoW.CanCast("Execute"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        //OP if talented
                    }
                }

                //end of rend
                if (WoW.Talent(5) == 1)
                {
                }
                //Build two: Trauma/FoB


                if (WoW.CountEnemyNPCsInRange >= 8)
                {
                    if (WoW.CanCast("Cleave") && !WoW.PlayerHasBuff("Cleave") && !WoW.IsSpellOnCooldown("Cleave"))
                    {
                        WoW.CastSpell("Cleave");
                        return;
                    }
                    if (WoW.CanCast("Whirlwind") && WoW.Rage > 27 && WoW.IsSpellOnCooldown("Cleave"))
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.AOE)
            {
                // AOE stuff here
            }
            if (combatRoutine.Type == RotationType.Cleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
Esempio n. 4
0
 private void EnhancementCore()
 {
     if (WoW.CanCast("lava lash", true, true, true) && WoW.Maelstrom >= 40 &&
         (WoW.TargetDebuffStacks("Legionfall") > 90 || WoW.PlayerHasBuff("Hot Hands") && WoW.PlayerBuffTimeRemaining("Hot Hands") < 2))
     {
         Log.Write("Maelstrom overflow protection", Color.Blue);
         WoW.CastSpell("lava lash");
         return;
     }
     if (WoW.CanCast("Earthen spike") && WoW.Maelstrom >= 20 && WoW.Talent(7) == 3 && FuryCheck25)
     {
         WoW.CastSpell("Earthen spike");
         return;
     }
     if (WoW.CanCast("Crash lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Rockbiter") && !WoW.PlayerHasBuff("Crash lightning") &&
         combatRoutine.Type != RotationType.SingleTarget)
     {
         WoW.CastSpell("Crash lightning");
         return;
     }
     if (WoW.CanCast("Windsong", true, true, true) && WoW.Talent(1) == 1)
     {
         WoW.CastSpell("Windsong");
         return;
     }
     if (WoW.CanCast("Crash lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Rockbiter") && combatRoutine.Type == RotationType.AOE &&
         (WoW.CountEnemyNPCsInRange >= 8 || WoW.CountEnemyNPCsInRange >= 6 && WoW.Talent(6) == 1))
     {
         WoW.CastSpell("Crash lightning");
         return;
     }
     if (WoW.CanCast("Windstrike", true, true, true) && WoW.Maelstrom >= 8 && WoW.PlayerHasBuff("Ascendance"))
     {
         WoW.CastSpell("Windstrike");
         return;
     }
     if (WoW.CanCast("Stormstrike", true, true, true) && WoW.Maelstrom >= 20 && WoW.PlayerHasBuff("Stormbringer") && FuryCheck25)
     {
         WoW.CastSpell("Stormstrike");
         return;
     }
     if (WoW.CanCast("Crash lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Rockbiter") && combatRoutine.Type != RotationType.SingleTarget &&
         (WoW.CountEnemyNPCsInRange >= 4 || WoW.CountEnemyNPCsInRange > 2 && WoW.Talent(6) == 1))
     {
         WoW.CastSpell("Crash lightning");
         return;
     }
     if (WoW.CanCast("Lightning bolt") && WoW.Talent(5) == 2 && FuryCheck45 && WoW.Maelstrom >= 40)
     {
         WoW.CastSpell("Lightning bolt");
         return;
     }
     if (WoW.CanCast("Stormstrike", true, true, true) && WoW.Maelstrom > 40 && (WoW.Talent(5) != 2 && FuryCheck45 || WoW.Talent(5) == 2 && FuryCheck80))
     {
         WoW.CastSpell("Stormstrike");
         return;
     }
     if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && Akainus)
     {
         WoW.CastSpell("Frostbrand");
         return;
     }
     if (WoW.CanCast("lava lash", true, true, true) && WoW.PlayerHasBuff("Hot Hands") && (AkainuEquip && WoW.PlayerHasBuff("Frostbrand") || !AkainuEquip))
     {
         WoW.CastSpell("lava lash");
         return;
     }
     if (WoW.CanCast("Sundering") && WoW.Maelstrom >= 20 && WoW.Talent(6) == 3 && combatRoutine.Type == RotationType.AOE)
     {
         WoW.CastSpell("Sundering");
         return;
     }
     if (WoW.CanCast("Crash lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Rockbiter") && (combatRoutine.Type == RotationType.AOE || LightningCrashNotUp || AlphaWolfCheck))
     {
         Crash.Restart();
         WoW.CastSpell("Crash lightning");
     }
 }
        private void EnhancementCore()
        {
            if (WoW.CanCast("lava lash", true, true, true, false, true) && WoW.Maelstrom >= 40 && WoW.TargetDebuffStacks("Legionfall") > 90)
            {
                Log.Write("Maelstrom overflow protection", Color.Blue);
                WoW.CastSpell("lava lash");
                return;
            }
            //actions.core = earthen_spike,if= variable.furyCheck25
            if (WoW.CanCast("Earthen spike") && WoW.Talent(6) == 3 && furyCheck25)
            {
                WoW.CastSpell("Earthen spike", "Core spell");
                return;
            }
            //actions.core +=/ crash_lightning,if= !buff.crash_lightning.up & active_enemies >= 2
            if (WoW.CanCast("Crash lightning") && WoW.IsSpellInRange("Rockbiter") && !WoW.PlayerHasBuff("Crash lightning") && combatRoutine.Type != RotationType.SingleTarget)
            {
                WoW.CastSpell("Crash lightning", "Core spell");
                return;
            }
            //actions.core +=/ windsong
            if (WoW.CanCast("Windsong", true, true, true) && WoW.Talent(1) == 1)
            {
                WoW.CastSpell("Windsong", "Core spell");
                return;
            }
            //actions.core +=/ crash_lightning,if= active_enemies >= 8 | (active_enemies >= 6 & talent.crashing_storm.enabled)
            if (WoW.CanCast("Crash lightning") && WoW.IsSpellInRange("Rockbiter") && combatRoutine.Type == RotationType.AOE && (WoW.CountEnemyNPCsInRange >= 8 || WoW.CountEnemyNPCsInRange >= 6 && WoW.Talent(6) == 1))
            {
                WoW.CastSpell("Crash lightning", "Core spell");
                return;
            }
            //actions.core +=/ windstrike
            if (WoW.CanCast("Stormstrike", true, true, true) && WoW.PlayerHasBuff("Ascendance"))
            {
                WoW.CastSpell("Stormstrike", "Core spell");
                return;
            }
            //actions.core +=/ Stormstrike,if= buff.stormbringer.up & variable.furyCheck25
            if (WoW.CanCast("Stormstrike", true, true, true) && WoW.PlayerHasBuff("Stormbringer") && furyCheck25)
            {
                WoW.CastSpell("Stormstrike", "Core: Stormbriner react spell");
                return;
            }
            //actions.core +=/ crash_lightning,if= active_enemies >= 4 | (active_enemies >= 2 & talent.crashing_storm.enabled)
            if (WoW.CanCast("Crash lightning") && WoW.IsSpellInRange("Rockbiter") && combatRoutine.Type != RotationType.SingleTarget && (WoW.CountEnemyNPCsInRange >= 4 || WoW.CountEnemyNPCsInRange > 2 && WoW.Talent(6) == 1))
            {
                WoW.CastSpell("Crash lightning", "Core: Aoe with talent spell");
                return;
            }
            //actions.core +=/ lightning_bolt,if= talent.overcharge.enabled & variable.furyCheck45 & maelstrom >= 40
            if (WoW.CanCast("Lightning bolt") && WoW.Talent(5) == 2 && furyCheck45 && WoW.Maelstrom >= 40)
            {
                WoW.CastSpell("Lightning bolt", "Core spell");
                return;
            }

            //actions.core +=/ Stormstrike,if= (!talent.overcharge.enabled & variable.furyCheck45) | (talent.overcharge.enabled & variable.furyCheck80)
            if (WoW.CanCast("Stormstrike", true, true, true) && (WoW.Talent(5) != 2 && furyCheck45 || WoW.Talent(5) == 2 && furyCheck80))
            {
                WoW.CastSpell("Stormstrike", "Core spell");
                return;
            }
            //actions.core +=/ frostbrand,if= variable.akainuAS
            if (WoW.CanCast("Frostbrand", true, true, true) && akainus)
            {
                WoW.CastSpell("Frostbrand", "Core, With Akainus spell");
                return;
            }

            //actions.core +=/ lava_lash,if= buff.hot_hand.react & ((variable.akainuEquipped & buff.frostbrand.up) | !variable.akainuEquipped)
            if (WoW.CanCast("lava lash", true, true, true, false, true) && WoW.PlayerHasBuff("Hot Hands") && (akainuEquip && WoW.PlayerHasBuff("Frostbrand") || !akainuEquip))
            {
                WoW.CastSpell("lava lash", "Core, Hot Hand re-react spell");
                return;
            }
            //actions.core +=/ sundering,if= active_enemies >= 3
            if (WoW.CanCast("Sundering") && WoW.Talent(7) == 3 && combatRoutine.Type == RotationType.AOE)
            {
                WoW.CastSpell("Sundering", "Core: Aoe spell");
                return;
            }
            //actions.core +=/ crash_lightning,if= active_enemies >= 3 | variable.LightningCrashNotUp | variable.alphaWolfCheck
            if (WoW.CanCast("Crash lightning") && WoW.IsSpellInRange("Rockbiter") && (combatRoutine.Type == RotationType.AOE || LightningCrashNotUp || alphaWolfCheck))
            {
                Crash.Restart();
                WoW.CastSpell("Crash lightning", "Core: Wolves or t20 crit buff");
                return;
            }
        }
Esempio n. 6
0
        public override void Pulse()
        {
            if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.TargetIsVisible && !WoW.IsMounted)
            {
                if (!WoW.IsSpellOnCooldown("Diebythesword") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Diebythesword"))
                {
                    WoW.CastSpell("Diebythesword");
                    return;
                }
                if (WoW.IsSpellInRange("Mortal Strike") && WoW.HealthPercent <= 70 && WoW.PlayerHasBuff("Free Siegensrausch"))
                {
                    WoW.CastSpell("Siegensrausch");
                    return;
                }
                if (WoW.CanCast("Pummel") && WoW.IsSpellInRange("Mortal Strike") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 60 && !WoW.IsSpellOnCooldown("Pummel") && !WoW.PlayerIsChanneling)
                {
                    WoW.CastSpell("Pummel");
                    return;
                }
                //Cooldowns
                if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry") && WoW.TargetHasDebuff("Colossus Smash"))
                {
                    WoW.CastSpell("Battle Cry");
                    return;
                }
                if (WoW.CanCast("Bladestorm") && UseCooldowns && WoW.TargetHasDebuff("Colossus Smash") && !WoW.PlayerHasBuff("Battle Cry") && WoW.IsSpellInRange("Mortal Strike"))
                {
                    WoW.CastSpell("Bladestorm");
                    return;
                }

                /*if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Trinket") &&!WoW.ItemOnCooldown("Trinket") && WoW.TargetHasDebuff("Colossus Smash") && WoW.PlayerHasBuff("Battle Cry"))
                 * {
                 *      WoW.CastSpell("Trinket");
                 *      return;
                 * }*/
                if (WoW.CanCast("Blood Fury") && WoW.PlayerHasBuff("Battle Cry") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc" && UseCooldowns)
                {
                    WoW.CastSpell("Blood Fury");
                    return;
                }
                if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave)
                {
                    //Colossus smash control
                    if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Colossus Smash");
                        return;
                    }
                    if (WoW.CanCast("Warbreaker") && !WoW.TargetHasDebuff("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Warbreaker");
                        return;
                    }
                    if (WoW.CanCast("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Colossus Smash");
                        return;
                    }
                    if (WoW.CanCast("Mortal Strike") && WoW.Rage >= 20 && WoW.PlayerHasBuff("Shattered Defenses") && WoW.TargetDebuffStacks("Executioner's Precision") == 2 && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Mortal Strike");
                        return;
                    }
                    if (WoW.CanCast("Execute") && WoW.Rage >= 10 && WoW.TargetHealthPercent <= 20 && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }
                    if (WoW.CanCast("Colossus Smash") && WoW.SpellCooldownTimeRemaining("Battle Cry") < 100 && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Colossus Smash");
                        return;
                    }
                    if (WoW.CanCast("Mortal Strike") && WoW.Rage >= 20 && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Mortal Strike");
                        return;
                    }
                    if (WoW.CanCast("Whirlwind") && WoW.Rage >= 30 && !WoW.CanCast("Colossus Smash") && !WoW.CanCast("Mortal Strike") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }
                }
                if (combatRoutine.Type == RotationType.AOE)
                {
                    if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Colossus Smash");
                        return;
                    }
                    if (WoW.CanCast("Execute") && WoW.Rage >= 10 && WoW.TargetHealthPercent <= 20 && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Execute");
                        return;
                    }
                    if (WoW.CanCast("Warbreaker") && !WoW.TargetHasDebuff("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Warbreaker");
                        return;
                    }
                    if (WoW.CanCast("Cleave") && WoW.Rage >= 10 && !WoW.PlayerHasBuff("Cleave") && !WoW.IsSpellOnCooldown("Cleave") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Cleave");
                        return;
                    }
                    if (WoW.CanCast("Whirlwind") && WoW.Rage > 30 && WoW.IsSpellOnCooldown("Cleave") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Whirlwind");
                        return;
                    }
                    if (WoW.CanCast("Mortal Strike") && WoW.Rage > 20 && WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellOnCooldown("Cleave") && WoW.IsSpellInRange("Mortal Strike"))
                    {
                        WoW.CastSpell("Mortal Strike");
                        return;
                    }
                }
            }
        }
        private static void Generic()
        {
            if (WoW.CanCast("SoulReaper") && WoW.CanCast("Apocalipse") && WoW.CurrentRunes >= 1 && WoW.TargetDebuffStacks("Festering Wound") >= 7)
            {
                WoW.CastSpell("SoulReaper");
                Thread.Sleep(800);
                WoW.CastSpell("Apocalipse");
                Thread.Sleep(200);
                WoW.CastSpell("Apocalipse");
                Thread.Sleep(200);
                WoW.CastSpell("Apocalipse");
                Thread.Sleep(100);
                WoW.CastSpell("Apocalipse");
                stopwatch.Reset();
                stopwatch.Start();
                return;
            }

            if (WoW.CanCast("SoulReaper") && !WoW.CanCast("Apocalipse") && WoW.CurrentRunes >= 1 && WoW.TargetDebuffStacks("Festering Wound") >= 3 && stopwatch.ElapsedMilliseconds < 50000)
            {
                WoW.CastSpell("SoulReaper");
                return;
            }

            if ((WoW.CanCast("SoulReaper") && WoW.CanCast("Apocalipse") || WoW.CanCast("SoulReaper")) && WoW.CurrentRunes >= 1 && WoW.TargetDebuffStacks("Festering Wound") <= 7)
            {
                WoW.CastSpell("Festering Strike");
                return;
            }

            if (WoW.CanCast("Death Coil") && (WoW.RunicPower > 85 || WoW.PlayerHasBuff("Sudden Doom")))
            {
                WoW.CastSpell("Death Coil");
                return;
            }

            if (WoW.CanCast("Festering Strike") && WoW.CurrentRunes >= 2 && (!WoW.TargetHasDebuff("Festering Wound") || WoW.TargetDebuffStacks("Festering Wound") <= 4))
            {
                WoW.CastSpell("Festering Strike");
                return;
            }

            if (WoW.CanCast("Scourge Strike") && WoW.CurrentRunes >= 1 && WoW.TargetHasDebuff("Festering Wound"))
            {
                WoW.CastSpell("Scourge Strike");
                return;
            }

            if (WoW.CanCast("Death Coil") && WoW.RunicPower > 35)
            {
                WoW.CastSpell("Death Coil");
            }
        }