Ejemplo n.º 1
0
 public static bool PetBuffStatus()
 {
     if (!WoW.IsInCombat)
     {
         lastpetstatus = false;
         return(lastpetstatus);
     }
     if (WoW.WasLastCasted("DemonicEmpowerment") || WoW.WasLastCasted("Implosion"))
     {
         lastpetstatus = false;
         return(lastpetstatus);
     }
     if (lastpetstatus && (!WoW.WasLastCasted("DemonicEmpowerment") || !WoW.WasLastCasted("Implosion")))
     {
         return(lastpetstatus);
     }
     if (WoW.WasLastCasted("Dreadstalkers") || WoW.WasLastCasted("HoG"))
     {
         lastpetstatus = true;
         return(lastpetstatus);
     }
     return(lastpetstatus);
 }
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) //Single Target

            {
                if (WoW.TargetIsCasting) //Kick
                {
                    if (WoW.CanCast("Consume Magic") &&
                        WoW.TargetIsCastingAndSpellIsInterruptible &&
                        WoW.TargetPercentCast >= 55 &&
                        !WoW.IsSpellOnCooldown("Consume Magic") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.WasLastCasted("Consume Magic"))
                    {
                        WoW.CastSpell("Consume Magic");
                        return;
                    }
                }
                if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.PlayerHasBuff("Metamorphosis"))
                    {
                        if (combatRoutine.UseCooldowns)
                        {
                            if (WoW.Talent(5) == 3 && WoW.CanCast("Nemesis") && WoW.IsSpellInRange("Chaos Strike"))
                            {
                                WoW.CastSpell("Nemesis");
                                return;
                            }
                            if (WoW.Talent(7) == 1 && WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike"))
                            {
                                WoW.CastSpell("Chaos Blades");
                                return;
                            }

                            if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike"))
                            {
                                WoW.CastSpell("FOTI");
                                return;
                            }
                        }

                        /*if (WoW.CanCast("Fel Rush") && WoW.PlayerSpellCharges("Fel Rush")>=1 && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <=100)
                         * {
                         *      WoW.CastSpell("Fel Rush");
                         *      return;
                         * }	*/// Use at own Risk may end up dead
                        if (WoW.Talent(7) == 2 && WoW.CanCast("FelBarrage") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerSpellCharges("FelBarrage") >= 5)
                        {
                            WoW.CastSpell("FelBarrage");
                            return;
                        }
                        if (WoW.Talent(7) == 3 && WoW.Talent(1) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("Eye Beam");
                            return;
                        }
                        if (WoW.Talent(1) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("Eye Beam");
                            return;
                        }
                        if (WoW.Talent(7) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("Eye Beam");
                            return;
                        }
                        if (WoW.Talent(5) == 2 && WoW.CanCast("FelEruption") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 10)
                        {
                            WoW.CastSpell("FelEruption");
                            return;
                        }
                        if (WoW.Talent(3) == 3 && WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive"))
                        {
                            WoW.CastSpell("Throw Glaive");
                            return;
                        }
                        if (WoW.Talent(1) == 2 && WoW.CanCast("Felblade") && WoW.Fury < 100 && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("Felblade");
                            return;
                        }
                        if (WoW.Talent(3) == 2 && WoW.CanCast("Death Sweep") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15)
                        {
                            WoW.CastSpell("Death Sweep");
                            return;
                        }
                        if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerHasBuff("Chaos Blades") && (WoW.Fury >= 40))
                        {
                            WoW.CastSpell("Annihilation");
                            return;
                        }
                        if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 55))
                        {
                            WoW.CastSpell("Annihilation");
                            return;
                        }
                        if (WoW.Talent(2) == 3 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70)
                        {
                            WoW.CastSpell("Demons Bite");
                            return;
                        }
                        if (WoW.Talent(2) == 1 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70)
                        {
                            WoW.CastSpell("Demons Bite");
                            return;
                        }
                        if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive"))
                        {
                            WoW.CastSpell("Throw Glaive");
                            return;
                        }
                        if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Y) < 0))
                        {
                            WoW.CastSpell("Eye Beam");
                            return;
                        }
                    }
                    if (combatRoutine.UseCooldowns)
                    {
                        if (WoW.Talent(5) == 3 && WoW.CanCast("Nemesis") && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("Nemesis");
                            return;
                        }
                        if (WoW.CanCast("Metamorphosis") && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("Metamorphosis");
                            return;
                        }
                        if (WoW.Talent(7) == 1 && WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("Chaos Blades");
                            return;
                        }

                        if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("FOTI");
                            return;
                        }
                        if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Fury <= 50)
                        {
                            WoW.CastSpell("Arcane Torrent");
                            return;
                        }
                    }

                    /*if (WoW.CanCast("Fel Rush") && WoW.PlayerSpellCharges("Fel Rush")>=1 && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <=100)
                     * {
                     *      WoW.CastSpell("Fel Rush");
                     *      return;
                     * }	*///Use at own Risk may end up dead
                    if (WoW.Talent(7) == 2 && WoW.CanCast("FelBarrage") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerSpellCharges("FelBarrage") >= 5)
                    {
                        WoW.CastSpell("FelBarrage");
                        return;
                    }
                    if (WoW.Talent(7) == 3 && WoW.Talent(1) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike"))
                    {
                        WoW.CastSpell("Eye Beam");
                        return;
                    }
                    if (WoW.Talent(1) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike"))
                    {
                        WoW.CastSpell("Eye Beam");
                        return;
                    }
                    if (WoW.Talent(7) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike"))
                    {
                        WoW.CastSpell("Eye Beam");
                        return;
                    }
                    if (WoW.Talent(5) == 2 && WoW.CanCast("FelEruption") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 10)
                    {
                        WoW.CastSpell("FelEruption");
                        return;
                    }
                    if (WoW.Talent(3) == 3 && WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive"))
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }
                    if (WoW.Talent(1) == 2 && WoW.CanCast("Felblade") && WoW.Fury < 100 && WoW.IsSpellInRange("Chaos Strike"))
                    {
                        WoW.CastSpell("Felblade");
                        return;
                    }
                    if (WoW.Talent(3) == 2 && WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15)
                    {
                        WoW.CastSpell("Blade Dance");
                        return;
                    }
                    if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerHasBuff("Chaos Blades") && (WoW.Fury >= 40))
                    {
                        WoW.CastSpell("Chaos Strike");
                        return;
                    }
                    if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 55))
                    {
                        WoW.CastSpell("Chaos Strike");
                        return;
                    }
                    if (WoW.Talent(2) == 3 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70)
                    {
                        WoW.CastSpell("Demons Bite");
                        return;
                    }
                    if (WoW.Talent(2) == 1 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70)
                    {
                        WoW.CastSpell("Demons Bite");
                        return;
                    }
                    if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive"))
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }
                    if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Y) < 0))
                    {
                        WoW.CastSpell("Eye Beam");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE) // AOE
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("Vengeful Retreat") && WoW.Talent(5) == 1 && WoW.Talent(2) == 1 && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 55)
                    {
                        WoW.CastSpell("Vengeful Retreat");
                        return;
                    }
                    if (WoW.CanCast("Vengeful Retreat") && WoW.Talent(5) == 1 && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 85)
                    {
                        WoW.CastSpell("Vengeful Retreat");
                        return;
                    }
                    if (WoW.CanCast("Fel Rush") && WoW.IsSpellInRange("Fel Blade") && WoW.Fury <= 100)
                    {
                        WoW.CastSpell("Fel Rush");
                        return;
                    }
                    if (WoW.Talent(7) == 2 && WoW.CanCast("FelBarrage") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerSpellCharges("FelBarrage") >= 5 && WoW.PlayerHasBuff("Momentum"))
                    {
                        WoW.CastSpell("FelBarrage");
                        return;
                    }
                    if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerHasBuff("Momentum"))
                    {
                        WoW.CastSpell("FOTI");
                        return;
                    }
                    if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerHasBuff("Momentum"))
                    {
                        WoW.CastSpell("Eye Beam");
                        return;
                    }
                    if (WoW.Talent(3) == 2 && WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15)
                    {
                        WoW.CastSpell("Blade Dance");
                        return;
                    }
                    if (WoW.Talent(3) == 2 && WoW.CanCast("Death Sweep") && WoW.PlayerHasBuff("Metamorphosis") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15)
                    {
                        WoW.CastSpell("Death Sweep");
                        return;
                    }
                    if (WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 35)
                    {
                        WoW.CastSpell("Blade Dance");
                        return;
                    }
                    if (WoW.CanCast("Death Sweep") && WoW.PlayerHasBuff("Metamorphosis") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 35)
                    {
                        WoW.CastSpell("Death Sweep");
                        return;
                    }
                    if (WoW.Talent(3) == 3 && WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive"))
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }
                    if ((WoW.Talent(3) == 1 && WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 65 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.TargetHasDebuff("Nemesis"))))))
                    {
                        WoW.CastSpell("Chaos Strike");
                        return;
                    }
                    if ((WoW.Talent(3) == 1 && WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 65 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.TargetHasDebuff("Nemesis"))))))
                    {
                        WoW.CastSpell("Annihilation");
                        return;
                    }
                    if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive"))
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }
                    if ((WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 65 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.TargetHasDebuff("Nemesis"))))))
                    {
                        WoW.CastSpell("Chaos Strike");
                        return;
                    }
                    if ((WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 65 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.TargetHasDebuff("Nemesis"))))))
                    {
                        WoW.CastSpell("Annihilation");
                        return;
                    }
                    if (WoW.Talent(2) == 1 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70)
                    {
                        WoW.CastSpell("Demons Bite");
                        return;
                    }
                    if (WoW.Talent(2) == 3 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70)
                    {
                        WoW.CastSpell("Demons Bite");
                        return;
                    }
                    if (WoW.Talent(6) == 2 && WoW.CanCast("Chaos Nova") && WoW.IsSpellInRange("Chaos Blade"))
                    {
                        WoW.CastSpell("Chaos Nova");
                        return;
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public override void Pulse() // Updated for Legion (tested and working for single target)
        {
            AddonCreationPulse();
            PlayerStats();
            AoEStuff();
            if (WoW.IsInCombat && !WoW.PlayerHasBuff("Mount"))
            {
                SelectRotation();
            }

            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount"))
                {
                    if (WoW.CurrentSoulShards >= 1 &&
                        WoW.WasLastCasted("Unstable Affliction") &&
                        WoW.CanCast("Reap Souls") &&
                        WoW.IsSpellInRange("Agony") &&
                        !WoW.PlayerIsCasting &&
                        !WoW.PlayerHasBuff("Deadwind Harvester") &&
                        WoW.PlayerHasBuff("Tormented Souls"))
                    {
                        WoW.CastSpell("Reap Souls");
                        Thread.Sleep(200);
                        return;
                    }

                    if ((!WoW.TargetHasDebuff("Agony") || WoW.TargetDebuffTimeRemaining("Agony") <= 5.4) &&
                        (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Agony") <= 1.5) &&
                        WoW.CanCast("Agony") &&
                        WoW.IsSpellInRange("Agony"))
                    {
                        WoW.CastSpell("Agony");
                        return;
                    }

                    if ((WoW.CurrentSoulShards >= 3 || WoW.WasLastCasted("Unstable Affliction") &&
                         !WoW.IsMoving &&
                         WoW.CanCast("Unstable Affliction") &&
                         WoW.IsSpellInRange("Agony")))
                    {
                        WoW.CastSpell("Unstable Affliction");
                        Thread.Sleep(200);
                        return;
                    }

                    if (WoW.CanCast("Life Tap") && !WoW.PlayerIsChanneling && CharInfo.T2 == 3 && !WoW.PlayerHasBuff("Empowered Life Tap"))
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }

                    if ((!WoW.TargetHasDebuff("Corruption") || WoW.TargetDebuffTimeRemaining("Corruption") <= 4.2) &&
                        (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Corruption") <= 1) &&
                        WoW.CanCast("Corruption") &&
                        WoW.IsSpellInRange("Agony"))
                    {
                        WoW.CastSpell("Corruption");
                        return;
                    }

                    if ((!WoW.TargetHasDebuff("Siphon Life") || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 4.2) &&
                        (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 1) &&
                        CharInfo.T4 == 1 &&
                        WoW.CanCast("Siphon Life") &&
                        WoW.IsSpellInRange("Agony"))
                    {
                        WoW.CastSpell("Siphon Life");
                        return;
                    }

                    /*if (WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction2")
                    || (WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction3"))
                    || (WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction4"))
                    || (WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction5"))
                    || (WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction3"))
                    || (WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction4"))
                    || (WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction5"))
                    || (WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction4"))
                    || (WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction5"))
                    || (WoW.TargetHasDebuff("Unstable Affliction4") && WoW.TargetHasDebuff("Unstable Affliction5"))
                    ||  && !WoW.PlayerIsCasting
                    ||  && WoW.CanCast("Reap Souls")
                    ||  && !WoW.PlayerHasBuff("Deadwind Harvester")
                    ||  && WoW.PlayerHasBuff("Tormented Souls"))
                    || {
                    ||  WoW.CastSpell("Reap Souls");
                    ||  return;
                    || }*/



                    if (WoW.CanCast("Reap Souls") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Deadwind Harvester") && WoW.PlayerHasBuff("Tormented Souls"))
                    {
                        WoW.CastSpell("Reap Souls");
                        return;
                    }

                    if (WoW.CanCast("Felhunter") && CharInfo.T6 == 2 && !WoW.IsSpellOnCooldown("Felhunter") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Felhunter");
                        return;
                    }

                    if (WoW.CanCast("Unstable Affliction") && !WoW.IsMoving && CharInfo.T2 == 1 && !WoW.IsMoving && WoW.IsSpellInRange("Unstable Affliction") && !WoW.PlayerIsChanneling && WoW.CurrentSoulShards >= 1 &&
                        (!WoW.TargetHasDebuff("Unstable Affliction1") || !WoW.TargetHasDebuff("Unstable Affliction2") || !WoW.TargetHasDebuff("Unstable Affliction3") || !WoW.TargetHasDebuff("Unstable Affliction4") || !WoW.TargetHasDebuff("Unstable Affliction5") ||
                         (WoW.TargetDebuffTimeRemaining("Unstable Affliction1") <= 1.5) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction2") <= 1.5) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction3") <= 1.5) ||
                         (WoW.TargetDebuffTimeRemaining("Unstable Affliction4") <= 1.5) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction5") <= 1.5)))
                    {
                        WoW.CastSpell("Unstable Affliction");
                        Thread.Sleep(200);
                        return;
                    }

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

                    if (WoW.CanCast("Haunt") && CharInfo.T1 == 1 && !WoW.IsSpellOnCooldown("Haunt") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Haunt");
                        return;
                    }

                    if (WoW.CanCast("Drain Soul") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Drain Soul");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount")) // Do AOE stuff here
                {
                    if (WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Agony") || (WoW.TargetDebuffTimeRemaining("Agony") <= 5.4)))
                    {
                        WoW.CastSpell("Agony");
                        return;
                    }

                    if (WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Corruption") || (WoW.TargetDebuffTimeRemaining("Corruption") <= 4.2)))
                    {
                        WoW.CastSpell("Corruption");
                        return;
                    }

                    if (WoW.CanCast("Seed of Corruption") && WoW.IsSpellInRange("Agony") && !WoW.TargetHasDebuff("Seed of Corruption") && !WoW.IsMoving && WoW.CurrentSoulShards >= 1)
                    {
                        WoW.CastSpell("Seed of Corruption");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
        public override void Pulse()
        {
            //Combat Time
            if (CombatTime.IsRunning && !WoW.IsInCombat)
            {
                CombatTime.Reset();
            }
            if (!CombatTime.IsRunning && WoW.IsInCombat)
            {
                CombatTime.Start();
            }

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

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

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

            // Single Target Rotation
            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                // Normal Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting)
                {
                    Log.Write("Imp Timer running: " + ImpsRemainingDuration, Color.DarkViolet);
                    Log.Write("Imp Time: " + ImpTime.ElapsedMilliseconds, Color.DarkViolet);
                    Log.Write("Imp Count: " + WoW.WildImpsCount, Color.Green);
                    Log.Write("Dread Timer running: " + DreadstalkersTime.ElapsedMilliseconds, Color.DarkViolet);
                    Log.Write("Dread Time: " + DreadstalkersRemainingDuration, Color.DarkViolet);
                    //Implosion (if talent)
                    if (WoW.CanCast("Implosion") && WoW.Talent(2) == 3 && WoW.IsSpellInRange("Doom"))
                    {
                        //                       if (ImpsRemainingDuration <= GCD && WoW.PlayerHasBuff("DemonicSynergy"))

                        if (WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy") && ImpsRemainingDuration >= GCD)
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

            // AoE Rotation
            if (combatRoutine.Type == RotationType.AOE)
            {
                Log.Write("Imp Time: " + ImpsRemainingDuration, Color.DarkViolet);
                // AoE Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting)
                {
                    //Implosion (if talent)
                    if (WoW.CanCast("Implosion") && WoW.Talent(2) == 3 && WoW.IsSpellInRange("Doom"))
                    {
                        if (ImpsRemainingDuration <= GCD && WoW.PlayerHasBuff("DemonicSynergy"))

                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy"))
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.WildImpsCount == 1 && ImpsRemainingDuration <= GCD)
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        //                      if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1)
                        if (WoW.WasLastCasted("HandOfGuldan") && WoW.WildImpsCount == 1)
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                    }

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

                    //Life Tap
                    if (WoW.CanCast("LifeTap") && WoW.Mana < 100 && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("LifeTap");
                    }
                }
            }
        }
        public override void Pulse()
        {
            if (DetectKeyPress.GetKeyState(0x6A) < 0)
            {
                UseCooldowns = !UseCooldowns;
                Thread.Sleep(150);
            }
            if (!WoW.IsInCombat && !WoW.PlayerHasBuff("Stealth") && !WoW.IsMounted && WoW.CanCast("Stealth"))
            {
                WoW.CastSpell("Stealth");
                return;
            }
            if (WoW.CanCast("Symbols of Death") && WoW.PlayerHasBuff("Stealth") && !WoW.IsInCombat && !WoW.IsMounted)
            {
                WoW.CastSpell("Symbols of Death");
                return;
            }
            if (WoW.CanCast("CrimsonVial") && WoW.HealthPercent <= 40 && WoW.Energy >= 35)
            {
                WoW.CastSpell("CrimsonVial");
                return;
            }
            if (WoW.TargetIsCasting)             // Kick
            {
                if (WoW.CanCast("Kick") && WoW.IsSpellInRange("Kick") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 55 && !WoW.IsSpellOnCooldown("Kick") && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Kick"))
                {
                    WoW.CastSpell("Kick");
                    return;
                }
            }
            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted)
                {
                    if (combatRoutine.UseCooldowns)
                    {
                        if (WoW.CanCast("ShadowBlades") && WoW.PlayerHasBuff("Symbols of Death") && WoW.IsSpellInRange("NightBlade"))
                        {
                            WoW.CastSpell("ShadowBlades");
                            return;
                        }
                        if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll")
                        {
                            WoW.CastSpell("Berserking");
                            return;
                        }
                        if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Energy <= 20)
                        {
                            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("Vanish") && WoW.IsSpellInRange("NightBlade") && WoW.TargetHasDebuff("NightBlade") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance")))
                        {
                            WoW.CastSpell("Vanish");
                            return;
                        }
                    }
                    if (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Subterfuge") || WoW.PlayerHasBuff("ShadowDance"))
                    {
                        if (WoW.CanCast("Symbols of Death") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.PlayerBuffTimeRemaining("Symbols of Death") <= 500)
                        {
                            WoW.CastSpell("Symbols of Death");
                            return;
                        }
                        if (WoW.CanCast("ShadowStrike") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 40 && WoW.CurrentComboPoints <= 5)
                        {
                            WoW.CastSpell("ShadowStrike");
                            return;
                        }
                        if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                            (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && WoW.IsSpellInRange("NightBlade"))
                        {
                            WoW.CastSpell("NightBlade");
                            return;
                        }
                        if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3)
                        {
                            WoW.CastSpell("GoremawsBite");
                            return;
                        }
                        if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade"))
                        {
                            WoW.CastSpell("Eviscerate");
                            return;
                        }
                    }
                    if (WoW.CanCast("ShadowDance") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance") || !WoW.PlayerHasBuff("Vanish") || !WoW.PlayerHasBuff("Subterfuge")) && WoW.Energy >= 55 &&
                        (WoW.PlayerSpellCharges("ShadowDance") >= 2 && WoW.CurrentComboPoints <= 3 && WoW.IsSpellInRange("NightBlade")))
                    {
                        WoW.CastSpell("ShadowDance");
                        return;
                    }
                    if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                        (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("NightBlade");
                        return;
                    }
                    if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3)
                    {
                        WoW.CastSpell("GoremawsBite");
                        return;
                    }
                    if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade") && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("Eviscerate");
                        return;
                    }
                    if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 45 && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("Backstab");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.AOE) // Do AoE Stuff here
            {
                if (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Subterfuge") || WoW.PlayerHasBuff("ShadowDance"))
                {
                    if (WoW.CanCast("Symbols of Death") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.PlayerBuffTimeRemaining("Symbols of Death") <= 500)
                    {
                        WoW.CastSpell("Symbols of Death");
                        return;
                    }
                    if (WoW.CanCast("ShurikenStorm") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 40 && WoW.CurrentComboPoints <= 5)
                    {
                        WoW.CastSpell("ShurikenStorm");
                        return;
                    }
                    if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                        (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("NightBlade");
                        return;
                    }
                    if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3)
                    {
                        WoW.CastSpell("GoremawsBite");
                        return;
                    }
                    if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade"))
                    {
                        WoW.CastSpell("Eviscerate");
                        return;
                    }
                }
                if (WoW.CanCast("ShadowDance") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance") || !WoW.PlayerHasBuff("Vanish") || !WoW.PlayerHasBuff("Subterfuge")) && WoW.Energy >= 55 &&
                    (WoW.PlayerSpellCharges("ShadowDance") >= 2 && WoW.CurrentComboPoints <= 3 && WoW.IsSpellInRange("NightBlade")))
                {
                    WoW.CastSpell("ShadowDance");
                    return;
                }
                if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                    (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && WoW.IsSpellInRange("NightBlade"))
                {
                    WoW.CastSpell("NightBlade");
                    return;
                }
                if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade"))
                {
                    WoW.CastSpell("GoremawsBite");
                    return;
                }
                if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade") && WoW.IsSpellInRange("NightBlade"))
                {
                    WoW.CastSpell("Eviscerate");
                    return;
                }
                if (WoW.CanCast("ShurikenStorm") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 35 && WoW.IsSpellInRange("NightBlade"))
                {
                    WoW.CastSpell("ShurikenStorm");
                    return;
                }
            }
        }
Ejemplo n.º 6
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) /* Singel Target Rotation*/
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasTarget && WoW.IsInCombat && WoW.HealthPercent <= 20)
                /* Defensive Cooldowns */
                {
                    if (WoW.IsMoving && WoW.CanCast("UnendingResolve"))
                    {
                        WoW.CastSpell("UnendingResolve");
                        return;
                    }

                    if (!WoW.IsMoving && WoW.CanCast("UnendingResolve"))
                    {
                        WoW.CastSpell("UnendingResolve");
                        return;
                    }

                    if (!WoW.IsMoving && WoW.CanCast("DrainLife"))
                    {
                        WoW.CastSpell("DrainLife");
                        return;
                    }
                }

                if (WoW.IsInCombat && Control.ModifierKeys == Keys.Shift && !WoW.PlayerIsCasting)
                /* Havoc on mouseover target, create macro to use: #showtooltip /cast [target=mouseover,harm,exists,nodead] Havoc; Havoc */
                {
                    WoW.CastSpell("Havoc");
                    return;
                }

                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.IsMoving && WoW.IsInCombat) /* What to do when we are NOT moving */
                {
                    if (!WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.TargetHasDebuff("AuraImmolate"))
                    {
                        if (WoW.HasTarget && WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") == 3)
                        {
                            WoW.CastSpell("DimRift");
                            return;
                        }

                        if (!WoW.WasLastCasted("Immolate") && WoW.CanCast("Immolate"))
                        {
                            WoW.CastSpell("Immolate");
                            return;
                        }
                    }

                    if (!WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.TargetHasDebuff("AuraImmolate"))
                    {
                        if (WoW.HasTarget && WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") == 3)
                        {
                            WoW.CastSpell("DimRift");
                            return;
                        }

                        if (WoW.TargetDebuffTimeRemaining("AuraImmolate") >= 10 && WoW.CanCast("Conflagrate"))
                        {
                            WoW.CastSpell("Conflagrate");
                            return;
                        }

                        if (WoW.TargetDebuffTimeRemaining("AuraImmolate") <= 4.2 && !WoW.WasLastCasted("Immolate") && WoW.CanCast("Immolate"))
                        {
                            WoW.CastSpell("Immolate");
                            return;
                        }

                        if (WoW.TargetDebuffTimeRemaining("AuraImmolate") >= 10 && WoW.PlayerSpellCharges("Conflagrate") == 1 && WoW.WasLastCasted("Conflagrate") && WoW.CanCast("Conflagrate"))
                        {
                            WoW.CastSpell("Conflagrate");
                            return;
                        }

                        if (WoW.PlayerHasBuff("AuraConflagrateBuff") && WoW.TargetHasDebuff("AuraChaosBolt") && WoW.CanCast("Conflagrate") && WoW.CurrentSoulShards <= 4 &&
                            WoW.CanCast("Conflagrate"))
                        {
                            WoW.CastSpell("Conflagrate");
                            return;
                        }

                        if (WoW.CanCast("Conflagrate") && WoW.PlayerSpellCharges("Conflagrate") == 2 && !WoW.WasLastCasted("Immolate") && WoW.CurrentSoulShards <= 4)
                        {
                            WoW.CastSpell("Conflagrate");
                            return;
                        }

                        if (WoW.HasTarget && WoW.CanCast("ServiceImp") && WoW.CurrentSoulShards >= 1)
                        {
                            WoW.CastSpell("ServiceImp");
                            return;
                        }

                        /* Summon Infernal on the target but its an AOE ground Spell. I'm not able to code that: */
                        /* Summon DoomGuard if LordOfFlames debuff is up*/

                        if (WoW.HasTarget && WoW.CanCast("DoomGuard"))
                        /*Since I can't do the Infernal check, I just summon DoomGuard*/
                        {
                            WoW.CastSpell("DoomGuard");
                            return;
                        }

                        if (WoW.CanCast("ChaosBolt") /* && !WoW.WasLastCasted("ChaosBolt")  */ && WoW.CurrentSoulShards > 3)
                        {
                            WoW.CastSpell("ChaosBolt");
                            return;
                        }

                        if (WoW.HasTarget && WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") <= 2)
                        {
                            WoW.CastSpell("DimRift");
                            return;
                        }

                        if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards >= 2)
                        {
                            WoW.CastSpell("ChaosBolt");
                            return;
                        }

                        if (WoW.CanCast("Incinerate") && WoW.WasLastCasted("ChaosBolt")
                            /*&& WoW.HasDebuff("AuraChaosBolt")*/)
                        {
                            WoW.CastSpell("Incinerate");
                            return;
                        }

                        if (WoW.CanCast("Incinerate") && WoW.CurrentSoulShards <= 1)
                        {
                            WoW.CastSpell("Incinerate");
                            return;
                        }

                        if (WoW.CanCast("Incinerate") && WoW.TargetHasDebuff("AuraChaosBolt") && WoW.TargetDebuffTimeRemaining("AuraChaosBolt") >= 2 && WoW.CurrentSoulShards <= 3)
                        {
                            WoW.CastSpell("Incinerate");
                            return;
                        }
                    }
                }

                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsMoving && WoW.IsInCombat)
                /* What to do when we are moving */
                {
                    if (!WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.HasTarget && WoW.CanCast("DimRift"))
                    {
                        WoW.CastSpell("DimRift");
                        return;
                    }

                    if (!WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.CanCast("Conflagrate"))
                    {
                        WoW.CastSpell("Conflagrate");
                    }
                }
            }
        }
Ejemplo n.º 7
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (!WoW.PlayerHasBuff("Battle Cry"))
                {
                    if (WoW.TargetHealthPercent > 20 && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        if (WoW.CanCast("Focused Rage") && WoW.WasLastCasted("Charge"))
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Focused Rage") && WoW.WasLastCasted("Colossus Smash"))
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Focused Rage") && WoW.Rage >= 105)
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike"))
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }

                        if (WoW.CanCast("Slam") && WoW.Rage >= 32 && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike"))
                        {
                            WoW.CastSpell("Slam");
                            return;
                        }
                        if (WoW.CanCast("Warbreaker") && !WoW.IsSpellOnCooldown("Battle Cry") && !WoW.TargetHasDebuff("Colossus Smash"))
                        {
                            WoW.CastSpell("Warbreaker");
                            return;
                        }
                    }
                    if (WoW.TargetHealthPercent < 20 && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)

                    {
                        if (WoW.CanCast("Focused Rage") && WoW.WasLastCasted("Charge"))
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Focused Rage") && WoW.Rage > 105)
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") == 3)
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        if (WoW.CanCast("Execute") && WoW.Rage == 18 && WoW.PlayerHasBuff("Precise Strikes"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        if (WoW.CanCast("Execute") && WoW.Rage == 38 && !WoW.PlayerHasBuff("Precise Strikes"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        if (WoW.CanCast("Slam") && WoW.Rage > 32 && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike"))
                        {
                            WoW.CastSpell("Slam");
                            return;
                        }
                        if (WoW.CanCast("Warbreaker") && !WoW.IsSpellOnCooldown("Battle Cry") && !WoW.TargetHasDebuff("Colossus Smash"))
                        {
                            WoW.CastSpell("Warbreaker");
                            return;
                        }
                    }
                }
                if (WoW.PlayerHasBuff("Battle Cry"))
                {
                    if (WoW.TargetHealthPercent > 20 && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)

                    {
                        if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") < 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }

                        if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        if (WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") == 3)
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        if (WoW.CanCast("Slam") && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike"))
                        {
                            WoW.CastSpell("Slam");
                            return;
                        }
                    }
                    if (WoW.TargetHealthPercent < 20 && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)

                    {
                        if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") < 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }

                        if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && (WoW.PlayerBuffStacks("Focused Rage") == 3))
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        if (WoW.CanCast("Execute"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                    }
                }
            }


            if (combatRoutine.Type == RotationType.AOE)
            {
                if (combatRoutine.Type == RotationType.SingleTargetCleave)
                {
                    // Do Single Target Cleave stuff here if applicable else ignore this one
                }
            }
        }
Ejemplo n.º 8
0
        public override void Pulse()
        {
            /* Log.Write("Starting.....", Color.Red); */
            /* Place to check target's (boss) buffs/debuffs in order to stop casting */

            /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.TargetPlayerHasBuff("Focusing")) return; */
            if (togglewatch.ElapsedMilliseconds == 0)
            {
                togglewatch.Start();
                return;
            }

            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_RCONTROL) < 0)
            {
                if (togglewatch.ElapsedMilliseconds > 1000)
                {
                    combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns;
                    WoW.Speak("Cooldowns " + (combatRoutine.UseCooldowns ? "On" : "Off"));
                    togglewatch.Restart();
                    if (!UseCooldowns && Opener)
                    {
                        Opener = !Opener;
                        WoW.Speak("Opener " + (Opener ? "Enabled" : "Disabled"));
                        Log.WritePixelMagic("Disabling Opener because you disabled Cooldowns.", Color.Red);
                    }
                    if (!UseCooldowns && autoCD)
                    {
                        autoCD = !autoCD;
                        WoW.Speak("Auto Burst " + (Opener ? "Enabled" : "Disabled"));
                        Log.WritePixelMagic("Disabling Automatic burst because you disabled Cooldowns.", Color.Red);
                    }
                }
            }
            if (openerwatch.ElapsedMilliseconds == 0)
            {
                openerwatch.Start();
                Log.Write("To activate/deactivate cooldowns press RIGHT CONTROL button", Color.Black);
                Log.Write("To activate/deactivate auto Combustion/Mirror Image press LEFT ALT button (cooldowns must be ENABLED)", Color.Black);
                Log.Write("it will use it when conditions are met and disable after that so you have to enable manually again", Color.Black);
                Log.Write("To activate/deactivate Opener press F1 (make sure it's not binded in WoW keybinds first!)", Color.Black);
                Log.Write("To activate/deactivate using of Living Bomb press F2 (make sure it's not binded in WoW keybinds first!)", Color.Black);
                Log.Write("To activate/deactivate automatic interrupting F3 (it will interrupt above 80 percent of cast,)", Color.Black);
                Log.Write("To switch between PYROBLAST and FLAMESTRIKE on HotStreak press F4, default is always PYROBLAST)", Color.Black);
                Log.Write("To cast Meteor use MOUSE button 3, keep it pressed and cursor where you want to cast Meteor untill it's done.", Color.Black);
                Log.Write("To cast instant Flamestrike use Tilde button (left from number 1), keep mouse cursor where you want to cast Flamestrike.", Color.Black);
                Log.Write("OPENER is used on bosses, it requires Fire Blast(3 charges),Phoenix(3 charges),Mirror Image & Combustion off CD", Color.Black);
                Log.Write("When you enable OPENER, your task is to prepot and precast first spell, routine will do the rest including Mi/Combustion", Color.Black);
                Log.Write("You must first ENABLE COOLDOWNS to be able to use OPENER. When OPENER finishes it's work it will automatically DISABLE", Color.Black);
                Log.Write("itself so you must enable OPENER on next pull. This is to prevent nabness and unwanted routine behaviour.", Color.Black);
                Log.Write("For Flamestrike and Meteor you have to create macros /cast [@cursor] spell_name (Flamestrike or Meteor).", Color.Black);

                return;
            }

            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_F1) < 0)
            {
                if (openerwatch.ElapsedMilliseconds > 1000)
                {
                    if (!Opener)
                    {
                        if (UseCooldowns && WoW.PlayerSpellCharges("Phoenix") == 3 && WoW.PlayerSpellCharges("Fire Blast") == 3 && !WoW.IsSpellOnCooldown("Combustion") &&
                            !WoW.IsSpellOnCooldown("Mirror Image"))
                        {
                            Opener = !Opener;
                            WoW.Speak("Opener " + (Opener ? "Enabled" : "Disabled"));
                            Log.Write("Opener " + (Opener ? "Enabled" : "Disabled"), Color.Red);
                            openerwatch.Restart();
                        }
                        else
                        {
                            WoW.Speak("Error");
                            Log.Write("ERROR: You don't have all necessary CD's/CHARGES to enable OPENER or you didn't ENABLE COOLDOWNS first!", Color.Red);
                            openerwatch.Restart();
                        }
                    }
                    else
                    {
                        Opener = !Opener;
                        WoW.Speak("Opener " + (Opener ? "Enabled" : "Disabled"));
                        Log.Write("Opener " + (Opener ? "Enabled" : "Disabled"), Color.Red);
                        openerwatch.Restart();
                    }
                }
            }

            if (LBwatch.ElapsedMilliseconds == 0)
            {
                LBwatch.Start();
                return;
            }


            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_F2) < 0)
            {
                if (LBwatch.ElapsedMilliseconds > 1000)
                {
                    UseLB = !UseLB;
                    WoW.Speak("Bomb " + (UseLB ? "On" : "Off"));
                    Log.Write("Living Bomb " + (UseLB ? "ON" : "OFF"), Color.Red);
                    LBwatch.Restart();
                }
            }

            if (interruptwatch.ElapsedMilliseconds == 0)
            {
                interruptwatch.Start();
                return;
            }


            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_F3) < 0)
            {
                if (interruptwatch.ElapsedMilliseconds > 1000)
                {
                    autointerrupt = !autointerrupt;
                    WoW.Speak("Interrupt " + (autointerrupt ? "On" : "Off"));
                    Log.Write("Auto interrupt " + (autointerrupt ? "ON" : "OFF"), Color.Red);
                    interruptwatch.Restart();
                }
            }

            if (pyrowatch.ElapsedMilliseconds == 0)
            {
                pyrowatch.Start();
                return;
            }


            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_F4) < 0)
            {
                if (pyrowatch.ElapsedMilliseconds > 1000)
                {
                    pyrocast = !pyrocast;
                    WoW.Speak("Using " + (pyrocast ? "Pyro" : "Flamestrike"));
                    Log.Write("Using " + (pyrocast ? "PYROBLAST" : "FLAMESTRIKE"), Color.Red);
                    pyrowatch.Restart();
                }
            }


            if (autoCDwatch.ElapsedMilliseconds == 0)
            {
                autoCDwatch.Start();
                return;
            }

            if (DetectKeyPress.GetKeyState(DetectKeyPress.Alt) < 0 && UseCooldowns)
            {
                if (autoCDwatch.ElapsedMilliseconds > 1000)
                {
                    autoCD = !autoCD;
                    WoW.Speak("Auto Burst " + (autoCD ? "On" : "Off"));
                    Log.Write("Automatic burst " + (autoCD ? "ON" : "OFF"), Color.Red);
                    autoCDwatch.Restart();
                }
            }


            if (WoW.PlayerHasBuff("Mount") || WoW.PlayerHasBuff("Invisibility") || WoW.PlayerHasBuff("InvisiStart"))
            {
                return;
            }

            /* Log.Write ("Combustion: " + WoW.SpellCooldownTimeRemaining("Combustion")); */

            if (flamewatch.ElapsedMilliseconds == 0)
            {
                flamewatch.Start();
                return;
            }

            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_OEM_3) < 0 && WoW.PlayerHasBuff("HotStreak") && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Flamestrike") &&
                flamewatch.ElapsedMilliseconds > 1200)
            {
                WoW.CastSpell("Flamestrike");
                ForcePyro = false;
                flamewatch.Reset();
                Log.Write("Flamestrike CASTED", Color.Black);
                return;
            }

            if (meteorwatch.ElapsedMilliseconds == 0)
            {
                meteorwatch.Start();
                return;
            }

            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_XBUTTON1) < 0 && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Meteor") && WoW.CanCast("Meteor") &&
                meteorwatch.ElapsedMilliseconds > 1000)
            {
                WoW.CastSpell("Meteor");
                meteorwatch.Reset();
                Log.Write("Meteor CASTED", Color.Black);
                return;
            }

            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                if (CombatWatch.IsRunning && !WoW.IsInCombat)
                {
                    CombatWatch.Reset();
                }
                if (!CombatWatch.IsRunning && WoW.IsInCombat && UseCooldowns && Opener && WoW.HasTarget && WoW.TargetIsEnemy)
                {
                    CombatWatch.Start();
                    Log.Write("Entering Combat, Starting Opener.", Color.Red);
                    Log.Write("Aaalllriiiight! Who ordered up an extra large can of whoop-ass?", Color.Red);
                }

                if (CombatWatch.IsRunning && CombatWatch.ElapsedMilliseconds < 4500)
                {
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Phoenix") == 3 && WoW.CanCast("Phoenix") &&
                        !WoW.IsSpellOnCooldown("Phoenix") && !WoW.LastSpell.Equals("Phoenix") && !WoW.LastSpell.Equals("Fire Blast") &&
                        WoW.IsSpellInRange("Fireball"))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Combustion") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Phoenix") == 2 &&
                        WoW.CanCast("Combustion") && WoW.CanCast("Mirror Image"))
                    {
                        Thread.Sleep(100);
                        WoW.CastSpell("Mirror Image");
                        Thread.Sleep(700);
                        WoW.CastSpell("Combustion");
                        Opener = !Opener;
                        WoW.Speak("Opener Finished" + (Opener ? "Enabled" : "Disabled"));
                        Log.Write("Opener Finished and disabled", Color.Red);
                        CombatWatch.Reset();
                        return;
                    }

                    Log.Write("Executing opener sequence");
                }

                if (CombatWatch.IsRunning && CombatWatch.ElapsedMilliseconds > 6500 && Opener)
                {
                    Opener = !Opener;
                    WoW.Speak("Opener Finished" + (Opener ? "Enabled" : "Disabled"));
                    Log.Write("Opener Finished and disabled", Color.Red);
                    CombatWatch.Reset();
                }

                if (CombatWatch.IsRunning && CombatWatch.ElapsedMilliseconds < 4300 && Opener)
                {
                    return;
                }

                if (autointerrupt && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Counterspell") && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Combustion Aura") &&
                    WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 80)
                {
                    WoW.CastSpell("Counterspell");
                    return;
                }

                if (WoW.IsInCombat && WoW.CanCast("Blazing Barrier") && !WoW.PlayerHasBuff("Blazing Barrier Aura") && !WoW.LastSpell.Equals("Blazing Barrier") && WoW.HealthPercent < 70 &&
                    !WoW.PlayerHasBuff("Combustion Aura"))
                {
                    WoW.CastSpell("Blazing Barrier");
                    return;
                }

                if (WoW.IsInCombat && WoW.CanCast("Ice Block") && !WoW.PlayerHasBuff("Ice Block") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ice Block"))
                {
                    WoW.CastSpell("Ice Block");
                    return;
                }

                if (autoCD && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Combustion") && !WoW.IsSpellOnCooldown("Mirror Image") && WoW.HasTarget && WoW.TargetIsEnemy &&
                    WoW.CanCast("Combustion") && WoW.CanCast("Mirror Image") && (WoW.PlayerHasBuff("HotStreak") || WoW.PlayerHasBuff("HeatingUp")))
                {
                    Thread.Sleep(100);
                    WoW.CastSpell("Mirror Image");
                    Thread.Sleep(700);
                    WoW.CastSpell("Combustion");
                    autoCD = !autoCD;
                    WoW.Speak("Burst Finished");
                    Log.Write("Burst done, disabling burst", Color.Red);
                    return;
                }

                // Log.WritePixelMagic("Force Pyro "+ (ForcePyro ? "TRUE" : "FALSE"), Color.Red);

                // COMBUSTION PHASE //

                if (WoW.PlayerHasBuff("Combustion Aura"))                 /* What to do if we are in COMBUSTION BURST PHASE  */
                {
                    if (ForcePyro)
                    {
                        ForcePyro = !ForcePyro;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerHasBuff("HotStreak") && WoW.CanCast("Pyroblast"))
                    {
                        WoW.CastSpell("Pyroblast");

                        /* Thread.Sleep(100);
                         * if (WoW.PlayerSpellCharges("Fire Blast") >= 1) WoW.CastSpell("Fire Blast"); */
                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerHasBuff("HeatingUp") &&
                        !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak"))
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") &&
                        WoW.PlayerSpellCharges("Phoenix") >= 1 && !WoW.IsSpellOnCooldown("Phoenix") && !WoW.PlayerHasBuff("HotStreak") &&
                        !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball"))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Phoenix") >= 1 && !WoW.IsSpellOnCooldown("Phoenix") &&
                        !WoW.PlayerHasBuff("HotStreak") && !WoW.PlayerHasBuff("HeatingUp") && WoW.CanCast("Phoenix") && !WoW.LastSpell.Equals("Phoenix") &&
                        !WoW.LastSpell.Equals("Fire Blast") && WoW.LastSpell.Equals("Combustion") && WoW.IsSpellInRange("Fireball"))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Scorch") && !WoW.PlayerHasBuff("HotStreak") &&
                        WoW.PlayerSpellCharges("Phoenix") == 0 && !WoW.LastSpell.Equals("Phoenix") && WoW.PlayerSpellCharges("Fire Blast") == 0)
                    {
                        WoW.CastSpell("Scorch");
                        return;
                    }
                    return;
                }

                // END COMBUSTION PHASE //

                // SUB 30% for BELT ROTATION //

                if (!WoW.PlayerHasBuff("Combustion Aura") && !WoW.LastSpell.Equals("Combustion") && !Opener &&
                    WoW.TargetHealthPercent <= 30 && !WoW.WasLastCasted("Combustion"))                        /* What to do if we are NOT MOVING - NON BURST PHASE */
                {
                    if (WoW.WasLastCasted("Pyroblast") && ForcePyro)
                    {
                        ForcePyro = !ForcePyro;
                    }
                    if (WoW.PlayerHasBuff("HeatingUp") && WoW.PlayerIsCasting && WoW.LastSpell.Equals("Scorch") && !ForcePyro)
                    {
                        ForcePyro = !ForcePyro;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Pyroblast") && ForcePyro)
                    {
                        if (pyrocast)
                        {
                            WoW.CastSpell("Pyroblast");
                        }
                        else
                        {
                            WoW.CastSpell("Flamestrike");
                        }
                        //WoW.CastSpell("Pyroblast");
                        Log.WritePixelMagic("FORCING PYRO/FLAMESTRIKE....", Color.Red);
                        ForcePyro = !ForcePyro;
                        if (WoW.PlayerSpellCharges("Fire Blast") >= 1 && UseCooldowns &&
                            ((WoW.SpellCooldownTimeRemaining("Combustion") > 22 && WoW.PlayerSpellCharges("Fire Blast") >= 1) ||
                             (WoW.SpellCooldownTimeRemaining("Combustion") > 13 && WoW.PlayerSpellCharges("Fire Blast") >= 2) ||
                             (WoW.SpellCooldownTimeRemaining("Combustion") > 7 && WoW.PlayerSpellCharges("Fire Blast") > 2)))
                        {
                            Thread.Sleep(500);
                            WoW.CastSpell("Fire Blast");
                            return;
                        }
                        else if (WoW.PlayerSpellCharges("Fire Blast") >= 1 && !UseCooldowns)
                        {
                            Thread.Sleep(500);
                            WoW.CastSpell("Fire Blast");
                            return;
                        }

                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerHasBuff("HotStreak") && WoW.CanCast("Pyroblast") &&
                        !ForcePyro)
                    {
                        if (pyrocast)
                        {
                            WoW.CastSpell("Pyroblast");
                        }
                        else
                        {
                            WoW.CastSpell("Flamestrike");
                        }
                        //WoW.CastSpell("Pyroblast");
                        return;
                    }

                    /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Mirror Image")
                     *       && !WoW.IsSpellOnCooldown("Mirror Image"))
                     * {
                     *      WoW.CastSpell("Mirror Image");
                     *      return;
                     * }  */
                    /* if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1
                     *      && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak") && !WoW.PlayerHasBuff("HeatingUp"))
                     * {
                     *      Thread.Sleep(350);
                     *      WoW.CastSpell("Fire Blast");
                     *      return;
                     * }  */
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 &&
                        !WoW.PlayerHasBuff("HeatingUp") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Combustion") &&
                        ((WoW.SpellCooldownTimeRemaining("Combustion") > 22 && WoW.PlayerSpellCharges("Fire Blast") >= 1) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 13 && WoW.PlayerSpellCharges("Fire Blast") >= 2) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 7 && WoW.PlayerSpellCharges("Fire Blast") > 2)))
                    {
                        Thread.Sleep(500);
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") &&
                        !WoW.PlayerHasBuff("HotStreak") && !WoW.PlayerHasBuff("HeatingUp") && WoW.IsSpellOnCooldown("Fire Blast") &&
                        WoW.IsSpellInRange("Fireball") && !WoW.LastSpell.Equals("Fire Blast") && (WoW.PlayerSpellCharges("Phoenix") > 1))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") &&
                        !WoW.PlayerHasBuff("HotStreak") && !WoW.PlayerHasBuff("HeatingUp") && WoW.IsSpellOnCooldown("Fire Blast") &&
                        WoW.IsSpellInRange("Fireball") && !WoW.LastSpell.Equals("Fire Blast") &&
                        ((WoW.PlayerSpellCharges("Phoenix") > 2) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.PlayerSpellCharges("Phoenix") > 1) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 45 && WoW.PlayerSpellCharges("Phoenix") == 1)))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (UseLB && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.CanCast("Living Bomb") && !WoW.IsSpellOnCooldown("Living Bomb") &&
                        !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellInRange("Fireball"))
                    {
                        WoW.CastSpell("Living Bomb");
                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Scorch") && WoW.CanCast("Scorch") && WoW.TargetHealthPercent <= 30 &&
                        !WoW.PlayerHasBuff("HotStreak") && !WoW.IsSpellOnGCD("Scorch") && !WoW.PlayerIsCasting && !ForcePyro)
                    {
                        WoW.CastSpell("Scorch");
                        return;
                    }

                    return;
                }

                // END SUB 30% for BELT ROTATION //


                // MOVING PHASE //

                if (WoW.IsMoving && !WoW.PlayerHasBuff("Combustion Aura") && !WoW.LastSpell.Equals("Combustion") && !WoW.WasLastCasted("Combustion") && !Opener &&
                    WoW.TargetHealthPercent > 30)                         /* What to do if we are MOVING */
                {
                    if (ForcePyro)
                    {
                        ForcePyro = !ForcePyro;
                    }

                    // Legendary Bracers support
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") &&
                        !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion Aura") && WoW.PlayerHasBuff("Legendary Bracers") && WoW.PlayerBuffTimeRemaining("Legendary Bracers") > 4 &&
                        !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Pyroblast");
                        return;
                    }
                    // END Legendary Bracers support

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerHasBuff("HotStreak") && WoW.CanCast("Pyroblast"))
                    {
                        WoW.CastSpell("Pyroblast");
                        return;
                    }

                    /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Mirror Image")
                     *       && !WoW.IsSpellOnCooldown("Mirror Image"))
                     * {
                     *      WoW.CastSpell("Mirror Image");
                     *      return;
                     * }   */
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerHasBuff("HeatingUp") &&
                        !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Combustion") &&
                        ((WoW.SpellCooldownTimeRemaining("Combustion") > 24 && WoW.PlayerSpellCharges("Fire Blast") >= 1) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 15 && WoW.PlayerSpellCharges("Fire Blast") >= 2) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 8 && WoW.PlayerSpellCharges("Fire Blast") > 2)))
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 &&
                        WoW.PlayerHasBuff("HeatingUp") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak"))
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") &&
                        !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Fire Blast") &&
                        !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball") && !WoW.LastSpell.Equals("Fire Blast") &&
                        ((WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.PlayerSpellCharges("Phoenix") > 2) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 30 && WoW.PlayerSpellCharges("Phoenix") > 1) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 65 && WoW.PlayerSpellCharges("Phoenix") == 1)))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") &&
                        !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.LastSpell.Equals("Fire Blast") &&
                        !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Phoenix") > 1)
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (UseLB && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.CanCast("Living Bomb") && !WoW.IsSpellOnCooldown("Living Bomb") &&
                        !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellInRange("Fireball"))
                    {
                        WoW.CastSpell("Living Bomb");
                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Scorch") && WoW.CanCast("Scorch") && !WoW.PlayerHasBuff("HotStreak"))
                    {
                        WoW.CastSpell("Scorch");
                        return;
                    }
                    return;
                }

                // END MOVING PHASE //

                // SINGLE TARGET STAND STILL PHASE //

                if (!WoW.IsMoving && !WoW.PlayerHasBuff("Combustion Aura") && !WoW.LastSpell.Equals("Combustion") && !WoW.WasLastCasted("Combustion") && !Opener &&
                    WoW.TargetHealthPercent > 30)                        /* What to do if we are NOT MOVING - NON BURST PHASE */
                {
                    /* double dur = WoW.GetDebuffTimeRemaining("Shadowflame");
                     * Log.Write(System.Convert.ToString(dur), Color.Red); */
                    if (ForcePyro)
                    {
                        ForcePyro = !ForcePyro;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerHasBuff("HotStreak") && WoW.CanCast("Pyroblast") &&
                        !WoW.WasLastCasted("Pyroblast"))
                    {
                        if (pyrocast)
                        {
                            WoW.CastSpell("Pyroblast");
                        }
                        else
                        {
                            WoW.CastSpell("Flamestrike");
                        }
                        //WoW.CastSpell("Pyroblast");
                        return;
                    }

                    // Legendary Bracers support
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") &&
                        !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion Aura") && WoW.PlayerHasBuff("Legendary Bracers") && WoW.PlayerBuffTimeRemaining("Legendary Bracers") > 4 &&
                        !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Pyroblast");
                        return;
                    }
                    // END Legendary Bracers support

                    /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Mirror Image")
                     *       && !WoW.IsSpellOnCooldown("Mirror Image"))
                     * {
                     *      WoW.CastSpell("Mirror Image");
                     *      return;
                     * }   */
                    /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Cinderstorm")
                     *      && WoW.TargetHasDebuff("Ignite") && !WoW.IsSpellOnCooldown("Cinderstorm"))
                     * {
                     *      WoW.CastSpell("Cinderstorm");
                     *      return;
                     * }   */
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerHasBuff("HeatingUp") &&
                        !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Combustion") &&
                        ((WoW.SpellCooldownTimeRemaining("Combustion") > 24 && WoW.PlayerSpellCharges("Fire Blast") >= 1) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 15 && WoW.PlayerSpellCharges("Fire Blast") >= 2) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 8 && WoW.PlayerSpellCharges("Fire Blast") > 2)))
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 &&
                        WoW.PlayerHasBuff("HeatingUp") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak"))
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") &&
                        !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Fire Blast") &&
                        !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball") && !WoW.LastSpell.Equals("Fire Blast") &&
                        ((WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.PlayerSpellCharges("Phoenix") > 2) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 30 && WoW.PlayerSpellCharges("Phoenix") > 1) ||
                         (WoW.SpellCooldownTimeRemaining("Combustion") > 65 && WoW.PlayerSpellCharges("Phoenix") == 1)))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") &&
                        !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.LastSpell.Equals("Fire Blast") &&
                        !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Phoenix") > 1)
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (UseLB && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.CanCast("Living Bomb") && !WoW.IsSpellOnCooldown("Living Bomb") &&
                        !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellInRange("Fireball"))
                    {
                        WoW.CastSpell("Living Bomb");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Fireball") && WoW.TargetHealthPercent > 30)
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                }

                return;
            }
            if ((combatRoutine.Type == RotationType.AOE) || (combatRoutine.Type == RotationType.SingleTargetCleave))
            {
                if (WoW.IsMoving)                 /* AOE WHEN MOVING */
                {
                }

                if (!WoW.IsMoving)                      /* AOE WHEN NOT MOVING */
                {
                }
            }
        }
Ejemplo n.º 9
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                //if (WoW.IsSpellInRange("Mortal Strike") && WoW.IsInCombat && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry"))
                //{
                //    WoW.CastSpell("Battle Cry");
                //    return;
                // }

                //AOE on Press
                if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Q) < 0)
                {
                    if (WoW.HasTarget && WoW.IsInCombat)
                    {
                        if (WoW.CanCast("Bladestorm") && WoW.IsSpellOnCooldown("Warbreaker"))
                        {
                            WoW.CastSpell("Bladestorm");
                            return;
                        }
                        if (!WoW.WasLastCasted("Warbreaker") && !WoW.PlayerHasBuff("Bladestorm"))
                        {
                            if (WoW.CanCast("Cleave") && !WoW.PlayerHasBuff("Cleave") && !WoW.IsSpellOnCooldown("Cleave"))
                            {
                                WoW.CastSpell("Cleave");
                                return;
                            }
                            if (WoW.CanCast("Whirlwind") && WoW.Rage > 20 && WoW.IsSpellOnCooldown("Cleave"))
                            {
                                WoW.CastSpell("Whirlwind");
                                return;
                            }
                            if (WoW.CanCast("Colossus Smash") && WoW.Rage > 28 && !WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellOnCooldown("Cleave"))
                            {
                                WoW.CastSpell("Colossus Smash");
                                return;
                            }
                            if (WoW.CanCast("Mortal Strike") && WoW.Rage > 28 && WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellOnCooldown("Cleave"))
                            {
                                WoW.CastSpell("Mortal Strike");
                                return;
                            }
                        }
                    }
                }
                if (WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike") && DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_X) < 0)
                {
                    //Colossus smash control
                    if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash"))
                    {
                        WoW.CastSpell("Colossus Smash");
                    }
                    if (WoW.CanCast("Colossus Smash") &&
                        WoW.TargetHasDebuff("Colossus Smash") &&
                        !WoW.PlayerHasBuff("Shattered Defenses") &&
                        WoW.PlayerBuffStacks("Focused Rage") == 3)
                    {
                        WoW.CastSpell("Colossus Smash");
                    }
                    //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.IsSpellInRange("Mortal Strike") &&
                        WoW.CanCast("Avatar") &&
                        !WoW.IsSpellOnCooldown("Avatar") &&
                        WoW.TargetHasDebuff("Colossus Smash"))
                    {
                        WoW.CastSpell("Avatar");
                        return;
                    }
                    // Mortal Strike Control
                    if (WoW.IsSpellInRange("Mortal Strike") &&
                        WoW.CanCast("Mortal Strike") &&
                        WoW.TargetHasDebuff("Colossus Smash") &&
                        WoW.PlayerHasBuff("Battle Cry") &&
                        WoW.PlayerHasBuff("Avatar") &&
                        WoW.PlayerHasBuff("Shattered Defenses") &&
                        WoW.PlayerBuffStacks("Focused Rage") == 3)
                    {
                        WoW.CastSpell("Mortal Strike");
                        return;
                    }

                    //Slam control
                    if (WoW.IsSpellInRange("Mortal Strike") &&
                        WoW.CanCast("Slam") &&
                        !WoW.CanCast("Colossus Smash") &&
                        !WoW.CanCast("Mortal Strike") &&
                        WoW.PlayerHasBuff("Shattered Defenses"))
                    {
                        WoW.CastSpell("Slam");
                        return;
                    }

                    // Focused Rage whenever.
                    if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") < 3)
                    {
                        WoW.CastSpell("Focused Rage");
                    }
                }


                //Normal ST rotation
                if (!WoW.PlayerHasBuff("Battle Cry") && WoW.HasTarget && WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike"))
                {
                    if (WoW.TargetHealthPercent > 20)
                    //When targets are above 20%. Not in Execute phase.
                    {
                        //FR Control
                        if (WoW.CanCast("Focused Rage") && WoW.Rage > 50)
                        {
                            WoW.CastSpell("Focused Rage");
                        }

                        if (WoW.CanCast("Focused Rage") &&
                            WoW.IsSpellOnCooldown("Battle Cry") &&
                            WoW.SpellCooldownTimeRemaining("Battle Cry") < 6 &&
                            WoW.PlayerBuffStacks("Focused Rage") < 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }



                        //CS Control
                        if (WoW.CanCast("Colossus Smash") &&
                            !WoW.PlayerHasBuff("Shattered Defenses") &&
                            !WoW.IsSpellOnCooldown("Colossus Smash") || WoW.IsSpellOverlayed("Colossus Smash"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        if (WoW.CanCast("Colossus Smash") &&
                            WoW.SpellCooldownTimeRemaining("Battle Cry") < 1)
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        //MS
                        if (WoW.CanCast("Mortal Strike") &&
                            !WoW.IsSpellOnCooldown("Mortal Strike") || WoW.IsSpellOverlayed("Mortal Strike"))
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        //Slam
                        if (WoW.CanCast("Slam") && WoW.Rage >= 32 &&
                            !WoW.CanCast("Colossus Smash") &&
                            !WoW.CanCast("Mortal Strike"))
                        {
                            WoW.CastSpell("Slam");
                            return;
                        }
                    }
                    if (WoW.TargetHealthPercent < 20)

                    {
                        //Non BC ST
                        if (WoW.CanCast("Colossus Smash") &&
                            !WoW.IsSpellOnCooldown("Colossus Smash") &&
                            !WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }

                        if (WoW.CanCast("Focused Rage") &&
                            WoW.Rage >= 85 &&
                            !WoW.PlayerHasBuff("Focused Rage") ||
                            WoW.PlayerBuffStacks("Focused Rage") < 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }

                        if (WoW.CanCast("Execute") &&
                            WoW.Rage >= 18 &&
                            WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                    }
                }

                if (WoW.PlayerHasBuff("Battle Cry") && WoW.HasTarget && WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike"))


                {
                    if (WoW.CanCast("Avatar") && WoW.PlayerHasBuff("Battle Cry") && WoW.IsSpellOnCooldown("Battle Cry"))
                    {
                        WoW.CastSpell("Avatar");
                        return;
                    }
                    if (WoW.TargetHealthPercent > 20)
                    {
                        //Maintain FR Stacks
                        if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") <= 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }

                        //CS on cooldown but not overlapping SD
                        if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        //MS with SD
                        if (WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") == 3)
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        //MS on cooldown
                        if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.IsSpellOnCooldown("Colossus Smash"))
                        {
                            WoW.CastSpell("Mortal Strike");
                        }
                        //if all else fails, slam.
                        if (WoW.CanCast("Slam") && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") >= 3)
                        {
                            WoW.CastSpell("Slam");
                            return;
                        }
                    }
                    if (WoW.TargetHealthPercent <= 20)
                    {
                        if (WoW.CanCast("Focused Rage") && !WoW.PlayerHasBuff("Focused Rage") || WoW.PlayerBuffStacks("Focused Rage") < 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && (WoW.PlayerBuffStacks("Focused Rage") == 3))
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        if (WoW.CanCast("Execute") && !WoW.CanCast("Mortal Strike"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                // AOE stuff here
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("FeignDeath") && WoW.HealthPercent < 30 && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("FeignDeath");
                        return;
                    }
                    if (WoW.CanCast("Exhilaration") && WoW.HealthPercent < 40 && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Exhilaration");
                        return;
                    }
                    if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent < 20 && AspectoftheTurtle && !WoW.IsSpellOnCooldown("AspectoftheTurtle") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("AspectoftheTurtle");
                        return;
                    }
                    if (WoW.CanCast("Ancient Healing Potion") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ancient Healing Potion") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Ancient Healing Potion");
                        return;
                    }
                    if (WoW.CanCast("Silkweave Bandage") && WoW.HealthPercent < 40 && WoW.PlayerHasBuff("Turtle") && !WoW.IsMoving && !WoW.PlayerHasDebuff("Bandaged") && WoW.HealthPercent != 0)
                    {
                        WoW.CastSpell("Silkweave Bandage");
                        return;
                    }
                    if (!WoW.HasPet && WoW.CanCast("Wolf"))
                    {
                        WoW.CastSpell("Wolf");
                        return;
                    }

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

                    if (WoW.CanCast("Kill Command") &&
                        WoW.Focus >= 30 &&
                        WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 50) &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.PlayerHasBuff("Bestial Wrath") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.SpellCooldownTimeRemaining("Kill Command") > 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 32) &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.PlayerHasBuff("Bestial Wrath") &&
                        WoW.PlayerBuffTimeRemaining("Bestial Wrath") <= 200 &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.SpellCooldownTimeRemaining("Kill Command") > 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") &&
                        (WoW.Focus >= 90) &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.IsSpellOnCooldown("Bestial Wrath") &&
                        WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 140)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }
        }
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted)
                {
                    if (UseCooldowns && RuneOfPower && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") >= 4000 &&
                        WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerIsCasting && !WoW.IsMoving && !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power") ||
                        (UseCooldowns && RuneOfPower && !WoW.PlayerIsCasting && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 &&
                         !WoW.IsMoving && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.PlayerHasBuff("Hot Streak!") &&
                         !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power")))
                    {
                        WoW.CastSpell("Rune of Power");
                        return;
                    }
                    if (UseCooldowns && Mirrors && WoW.CanCast("Mirror Image") && !WoW.IsSpellOnCooldown("Mirror Image") && WoW.PlayerHasBuff("Combustion"))
                    {
                        WoW.CastSpell("Mirror Image");
                        return;
                    }
                    if (WoW.CanCast("Scorch") && WoW.IsMoving && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Scorch");
                        return;
                    }
                    if (WoW.IsInCombat && Meteor && Control.ModifierKeys == Keys.Alt && !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Meteor");
                        return;
                    }
                    if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 &&
                        WoW.PlayerHasBuff("Heating Up") && UseCooldowns && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && !WoW.IsSpellOnCooldown("Combustion"))
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }
                    if (WoW.PlayerIsCasting && UseCooldowns && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 &&
                        !WoW.IsSpellOnCooldown("Combustion"))
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }
                    if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerHasBuff("Heating Up") && WoW.LastSpell != "Fire Blast" &&
                        WoW.LastSpell != "Phoenix's Flames" && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && !UseCooldowns && Combustion &&
                        WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsSpellOnCooldown("Combustion"))
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }
                    if (!UseCooldowns && Combustion && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (WoW.CanCast("Phoenix's Flames") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && WoW.PlayerHasBuff("Heating Up") &&
                        Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 6000 && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }

                    if (WoW.IsInCombat && Control.ModifierKeys == Keys.Alt && ROF && !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Ring of Frost");
                        return;
                    }
                    if (Barrier && WoW.CanCast("Blazing Barrier") && WoW.HealthPercent <= 80 && !WoW.IsSpellOnCooldown("Blazing Barrier") && !WoW.PlayerHasBuff("Blazing Barrier"))
                    {
                        WoW.CastSpell("Blazing Barrier");
                        return;
                    }

                    if (!UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Cinderstorm");
                        return;
                    }
                    if (UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") &&
                        WoW.IsSpellOnCooldown("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 500 && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Cinderstorm");
                        return;
                    }
                    if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") >= 1 &&
                        WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling ||
                        UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 &&
                        WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") && !WoW.IsSpellOnCooldown("Mirror Image") && !WoW.PlayerIsCasting &&
                        !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Combustion");
                        return;
                    }

                    if (DragBr && WoW.CanCast("Dragon's Breath") && WoW.IsSpellInRange("Scorch") && !WoW.PlayerHasBuff("Combustion"))
                    {
                        WoW.CastSpell("Dragon's Breath");
                        return;
                    }
                    if (WoW.PlayerSpellCharges("Phoenix's Flames") > 2 && !WoW.PlayerHasBuff("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000 &&
                        WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 &&
                        WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" ||
                        WoW.SpellCooldownTimeRemaining("Combustion") < 2000 && WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") &&
                        WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast")
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }
                    if (WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!") &&
                        WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Fire Blast") > 50 && WoW.LastSpell != "Phoenix's Flames" &&
                        WoW.LastSpell != "Fire Blast")
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }

                    if (WoW.CanCast("Living Bomb") && LivingBomb && !WoW.IsSpellOnCooldown("Living Bomb") && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Living Bomb");
                        return;
                    }
                    if (WoW.CanCast("Ice Block") && !WoW.PlayerHasBuff("Ice Block") && IceBlock && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ice Block"))
                    {
                        WoW.CastSpell("Ice Block");
                        Log.Write("--------Activating Ice Block, you were below 20%HealthPoints.--------");
                        return;
                    }
                    // Legendary Bracers Support.
                    if (Legendary && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") &&
                        WoW.PlayerBuffTimeRemaining("Marquee Bindings of the Sun King") > 400 && WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!") ||
                        (!WoW.PlayerHasBuff("Combustion") && !WoW.WasLastCasted("Pyroblast") && WoW.PlayerHasBuff("Ice Floes") && !WoW.PlayerIsCasting &&
                         WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!")))
                    {
                        WoW.CastSpell("Pyroblast");
                        return;
                    }
                    if (WoW.CanCast("Pyroblast") && WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Combustion"))
                    {
                        WoW.CastSpell("Pyroblast");
                        return;
                    }
                    if (WoW.CanCast("Pyroblast") && WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Phoenix's Flames") < 2)
                    {
                        WoW.CastSpell("Pyroblast");
                        return;
                    }
                    if (WoW.CanCast("Pyroblast") && WoW.PlayerHasBuff("Hot Streak!") && WoW.LastSpell == "Combustion")
                    {
                        WoW.CastSpell("Pyroblast");
                        return;
                    }
                    if (WoW.CanCast("Pyroblast") && !UseCooldowns && Combustion && WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Pyroblast");
                        return;
                    }
                    if (WoW.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                    if (WoW.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") < 2000)
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                    if (WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 130 && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000)
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000)
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (!WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Heating Up") && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling &&
                        !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                    if (!WoW.PlayerIsCasting && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                    if (WoW.IsMoving && WoW.PlayerHasBuff("Ice Floes") && WoW.IsSpellInRange("Fireball") && !WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Heating Up"))
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                    if (!WoW.PlayerHasBuff("Combustion") && !WoW.IsMoving && WoW.CanCast("Fireball") && !WoW.PlayerIsCasting && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 ||
                        WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 ||
                        WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                        !WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 ||
                        WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") >= 2000 ||
                        WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000)
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted)
                {
                    if (UseCooldowns && RuneOfPower && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") >= 4000 && WoW.PlayerHasBuff("Hot Streak!") &&
                        !WoW.PlayerIsCasting && !WoW.IsMoving && !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power") ||
                        (UseCooldowns && RuneOfPower && !WoW.PlayerIsCasting && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsMoving &&
                         !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Rune of Power") &&
                         !WoW.IsSpellOnCooldown("Rune of Power")))
                    {
                        WoW.CastSpell("Rune of Power");
                        return;
                    }
                    if (UseCooldowns && Mirrors && WoW.CanCast("Mirror Image") && !WoW.IsSpellOnCooldown("Mirror Image") && WoW.PlayerHasBuff("Combustion"))
                    {
                        WoW.CastSpell("Mirror Image");
                        return;
                    }
                    if (WoW.CanCast("Scorch") && WoW.IsMoving && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Scorch");
                        return;
                    }
                    if (WoW.IsInCombat && Meteor && Control.ModifierKeys == Keys.Alt && !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Meteor");
                        return;
                    }
                    if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 &&
                        WoW.PlayerHasBuff("Heating Up") && UseCooldowns && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && !WoW.IsSpellOnCooldown("Combustion"))
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }
                    if (WoW.PlayerIsCasting && UseCooldowns && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 &&
                        !WoW.IsSpellOnCooldown("Combustion"))
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }
                    if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerHasBuff("Heating Up") && WoW.LastSpell != "Fire Blast" &&
                        WoW.LastSpell != "Phoenix's Flames" && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && !UseCooldowns && Combustion &&
                        WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsSpellOnCooldown("Combustion"))
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }
                    if (!UseCooldowns && Combustion && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (WoW.CanCast("Phoenix's Flames") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && WoW.PlayerHasBuff("Heating Up") &&
                        Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 6000 && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }

                    if (WoW.IsInCombat && Control.ModifierKeys == Keys.Alt && ROF && !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Ring of Frost");
                        return;
                    }
                    if (Barrier && WoW.CanCast("Blazing Barrier") && WoW.HealthPercent <= 80 && !WoW.IsSpellOnCooldown("Blazing Barrier") && !WoW.PlayerHasBuff("Blazing Barrier"))
                    {
                        WoW.CastSpell("Blazing Barrier");
                        return;
                    }

                    if (!UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Cinderstorm");
                        return;
                    }
                    if (UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && WoW.IsSpellOnCooldown("Combustion") &&
                        WoW.SpellCooldownTimeRemaining("Combustion") > 500 && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Cinderstorm");
                        return;
                    }
                    if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") >= 1 &&
                        WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling ||
                        UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && WoW.PlayerHasBuff("Hot Streak!") &&
                        !WoW.IsSpellOnCooldown("Combustion") && !WoW.IsSpellOnCooldown("Mirror Image") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Combustion");
                        return;
                    }

                    if (DragBr && WoW.CanCast("Dragon's Breath") && WoW.IsSpellInRange("Scorch") && !WoW.PlayerHasBuff("Combustion"))
                    {
                        WoW.CastSpell("Dragon's Breath");
                        return;
                    }
                    if (WoW.PlayerSpellCharges("Phoenix's Flames") > 2 && !WoW.PlayerHasBuff("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000 && WoW.CanCast("Phoenix's Flames") &&
                        WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.IsSpellOnCooldown("Fire Blast") &&
                        WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" ||
                        WoW.SpellCooldownTimeRemaining("Combustion") < 2000 && WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") &&
                        WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast")
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }
                    if (WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!") &&
                        WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Fire Blast") > 5000 && WoW.LastSpell != "Phoenix's Flames" &&
                        WoW.LastSpell != "Fire Blast")
                    {
                        WoW.CastSpell("Phoenix's Flames");
                        return;
                    }

                    if (WoW.CanCast("Living Bomb") && LivingBomb && !WoW.IsSpellOnCooldown("Living Bomb") && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Living Bomb");
                        return;
                    }
                    if (WoW.CanCast("Ice Block") && !WoW.PlayerHasBuff("Ice Block") && IceBlock && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ice Block"))
                    {
                        WoW.CastSpell("Ice Block");
                        Log.Write("--------Activating Ice Block, you were below 20%HealthPoints.--------");
                        return;
                    }
                    // Legendary Bracers Support.
                    if (Legendary && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") &&
                        WoW.PlayerBuffTimeRemaining("Marquee Bindings of the Sun King") > 400 && WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!") ||
                        (!WoW.PlayerHasBuff("Combustion") && !WoW.WasLastCasted("Pyroblast") && WoW.PlayerHasBuff("Ice Floes") && !WoW.PlayerIsCasting &&
                         WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!")))
                    {
                        WoW.CastSpell("Pyroblast");
                        return;
                    }
                    if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Combustion"))
                    {
                        WoW.CastSpell("Flamestrike");
                        return;
                    }
                    if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") &&
                        WoW.PlayerSpellCharges("Phoenix's Flames") < 2)
                    {
                        WoW.CastSpell("Flamestrike");
                        return;
                    }
                    if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && WoW.PlayerHasBuff("Hot Streak!") && WoW.LastSpell == "Combustion")
                    {
                        WoW.CastSpell("Flamestrike");
                        return;
                    }
                    if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && !UseCooldowns && Combustion && WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Flamestrike");
                        return;
                    }
                    if (WoW.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") &&
                        !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                    if (WoW.SpellCooldownTimeRemaining("Combustion") > 200 && WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 130 && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" &&
                        WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }
                    if (WoW.SpellCooldownTimeRemaining("Combustion") > 200 && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fire Blast");
                        return;
                    }


                    if (!WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Heating Up") && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling &&
                        !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                    if (!WoW.PlayerIsCasting && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!"))
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                    if (WoW.IsMoving && WoW.PlayerHasBuff("Ice Floes") && WoW.IsSpellInRange("Fireball") && !WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Heating Up"))
                    {
                        WoW.CastSpell("Fireball");
                        return;
                    }
                    if (!WoW.PlayerHasBuff("Combustion") && !WoW.IsMoving && WoW.CanCast("Fireball") && !WoW.PlayerIsCasting && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 ||
                        WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 ||
                        WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                        !WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 ||
                        WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") >= 2000 ||
                        WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                        WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000)
                    {
                        WoW.CastSpell("Fireball");
                    }
                }
            }
        }
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave)  // Do Single Target Stuff here
            {
                /* if (WoW.CanCast("Death") && WoW.HealthPercent < 40 && Death && !WoW.IsSpellOnCooldown("Death") && WoW.HealthPercent != 0)
                 * {
                 *   WoW.CastSpell("Death");
                 *   return;
                 * }
                 * if (WoW.CanCast("Exhil") && WoW.HealthPercent < 30 && Exhil && !WoW.IsSpellOnCooldown("Exhil") && WoW.HealthPercent != 0)
                 * {
                 *   WoW.CastSpell("Exhil");
                 *   return;
                 * }
                 *                   if (WoW.CanCast("Turtle") && WoW.HealthPercent < 20 && Turtle && !WoW.IsSpellOnCooldown("Turtle") && WoW.HealthPercent != 0)
                 * {
                 *   WoW.CastSpell("Turtle");
                 *   return;
                 * }
                 *                   /*if (WoW.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.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("Counter Shot") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.TargetIsCasting &&
                        WoW.TargetIsCastingAndSpellIsInterruptible &&
                        WoW.TargetPercentCast >= 24 &&
                        CounterShot)
                    {
                        WoW.CastSpell("Counter Shot");
                        return;
                    }
                    if (WoW.CanCast("Volley") &&
                        !WoW.PlayerHasBuff("Volley") &&
                        WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Volley");
                        return;
                    }
                    if (KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish"))
                    {
                        WoW.CastSpell("Kil'jaeden's Burning Wish");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent")

                        && !WoW.IsSpellOnCooldown("Arcane Torrent") &&
                        WoW.PlayerHasBuff("Trueshot") &&
                        WoW.PlayerRace == "BloodElf"

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

                        && !WoW.IsSpellOnCooldown("Berserking") &&
                        WoW.PlayerHasBuff("Trueshot") &&
                        WoW.PlayerRace == "Troll")
                    {
                        WoW.CastSpell("Berserking");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury") &&
                        WoW.PlayerHasBuff("Trueshot") &&
                        !WoW.IsSpellOnCooldown("Blood Fury") &&
                        WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Trueshot") &&
                        UseCooldowns &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Trueshot");
                        return;
                    }
                    if (WoW.CanCast("Murder of Crows") && // AMurderOfCrows if (not HasBuff(Vulnerable)
                        WoW.Talent(6) == 1 &&
                        (WoW.Focus >= 30) &&
                        !WoW.TargetHasDebuff("Vulnerable") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst"))
                    {
                        WoW.CastSpell("Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Murder of Crows") && // or (BuffRemainingSec(Vulnerable) < SpellCastTimeSec(AimedShot) and not HasBuff(LockAndLoad)))
                        WoW.Talent(6) == 1 &&
                        (WoW.Focus >= 30) &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.TargetDebuffTimeRemaining("Vulnerable") < AimedShotCastTime &&
                        !WoW.PlayerHasBuff("Lock and Load") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst"))
                    {
                        WoW.CastSpell("Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Piercing Shot") &&                           //  PiercingShot if HasBuff(Vulnerable) and PowerToMax < 20
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.Talent(7) == 2 &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.Focus >= 100 &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Piercing Shot");
                        return;
                    }
                    if (WoW.CanCast("Arcane Shot") &&                           //  ArcaneShot if WasLastCast(MarkedShot) and HasTalent(PatientSniper)
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.Talent(4) == 3 &&
                        WoW.WasLastCasted("Marked Shot") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Arcane Shot");
                        return;
                    }

                    if (WoW.TargetHasDebuff("Vulnerable") &&                          // AimedShot if HasBuff(LockAndLoad) and HasBuff(Vulnerable)
                        WoW.PlayerHasBuff("Lock and Load") &&
                        WoW.CanCast("AS") &&
                        WoW.IsSpellInRange("Windburst") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("AS");
                        return;
                    }
                    if (WoW.Focus >= 50 &&                          // AimedShot if (WasLastCast(Windburst)
                        WoW.WasLastCasted("Windburst") &&
                        WoW.CanCast("AS") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&
                        WoW.IsSpellInRange("Windburst") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("AS");
                        return;
                    }
                    if (WoW.Focus >= 50 &&                          /* SpellCastTimeSec(AimedShot) < BuffRemainingSec(Vulnerable)) and (not HasTalent(PiercingShot)*/
                        WoW.CanCast("AS") &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.TargetDebuffTimeRemaining("Vulnerable") > 200 &&
                        WoW.Talent(7) == 3 &&
                        WoW.IsSpellInRange("Windburst") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("AS");
                        return;
                    }
                    if (WoW.Focus >= 50                             // CooldownSecRemaining(PiercingShot) > BuffRemainingSec(Vulnerable))

                        && WoW.CanCast("AS") &&
                        (!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.TargetDebuffTimeRemaining("Vulnerable") > 200 &&
                        WoW.Talent(7) == 2 &&
                        WoW.IsSpellOnCooldown("Piercing Shot") &&
                        WoW.SpellCooldownTimeRemaining("Piercing Shot") > 200 &&
                        WoW.IsSpellInRange("Windburst") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("AS");
                        return;
                    }
                    if (WoW.CanCast("Windburst") &&                  // Windburst
                        !WoW.IsMoving &&
                        WoW.Focus >= 20 &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst"))
                    {
                        WoW.CastSpell("Windburst");
                        return;
                    }
                    if (WoW.CanCast("Arcane Shot") &&                           // ArcaneShot if (HasBuff(MarkingTargets)
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.PlayerHasBuff("Marking Targets") &&
                        !WoW.PlayerHasBuff("Hunters Mark") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Arcane Shot");
                        return;
                    }

                    /*	if (WoW.CanCast("Arcane Shot")  //HasBuff(Trueshot)) and not HasBuff(HuntersMark)
                     *      && WoW.IsSpellInRange("Windburst")
                     *      && WoW.Focus <=94
                     *      && WoW.PlayerHasBuff("Trueshot")
                     *      && !WoW.PlayerHasBuff("Hunters Mark")
                     *      && !WoW.PlayerIsChanneling
                     *      && !WoW.PlayerIsCasting)
                     * {
                     * WoW.CastSpell("Arcane Shot");
                     * return;
                     * }	*/
                    if (WoW.CanCast("Marked Shot") &&                    // MarkedShot if not HasTalent(PatientSniper)
                        (WoW.Focus >= 25) &&
                        WoW.TargetHasDebuff("Hunters Mark") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst") &&
                        (WoW.Talent(4) == 1 || WoW.Talent(4) == 2))
                    {
                        WoW.CastSpell("Marked Shot");
                        return;
                    }
                    if (WoW.CanCast("Marked Shot") &&                    // (BuffRemainingSec(Vulnerable) < SpellCastTimeSec(AimedShot) and (Power > SpellPowerCost(MarkedShot) + SpellPowerCost(AimedShot)
                        (WoW.Focus >= 75) &&
                        WoW.TargetHasDebuff("Hunters Mark") &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.TargetDebuffTimeRemaining("Vulnerable") < AimedShotCastTime &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst"))
                    {
                        WoW.CastSpell("Marked Shot");
                        return;
                    }
                    if (WoW.CanCast("Marked Shot") &&                    //  not HasTalent(TrueAim)
                        (WoW.Focus >= 25) &&
                        WoW.TargetHasDebuff("Hunters Mark") &&
                        (WoW.Talent(1) == 2 || WoW.Talent(1) == 1) &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst"))
                    {
                        WoW.CastSpell("Marked Shot");
                        return;
                    }
                    if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&                            // AimedShot if PowerToMax < 25
                        WoW.Focus >= 95 &&
                        WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") &&
                        (WoW.Talent(7) == 3 || WoW.Talent(7) == 1) &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("AS");

                        return;
                    }
                    if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&                            // AimedShot if PowerToMax < 25
                        WoW.Focus >= 95 &&
                        WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") &&
                        WoW.Talent(7) == 2 &&
                        WoW.IsSpellOnCooldown("Piercing Shot") &&
                        WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("AS");

                        return;
                    }
                    if (WoW.CanCast("Arcane Shot") &&                           //  added: less than 50 focus
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.Focus <= 49 &&
                        WoW.Talent(1) == 1 &&
                        !WoW.PlayerHasBuff("Lock and Load") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Arcane Shot");
                        return;
                    }
                    if (WoW.CanCast("Arcane Shot") &&                           // arcane shot
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.Focus <= 99 &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.Talent(7) == 2)

                    {
                        WoW.CastSpell("Arcane Shot");
                        return;
                    }
                    if (WoW.CanCast("Arcane Shot") &&                           // arcane shot
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.Focus <= 94 &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        !WoW.TargetHasDebuff("Vulnerable"))

                    {
                        WoW.CastSpell("Arcane Shot");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.PlayerHasBuff("Trueshot"))

                {
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.Focus >= 40 &&
                        WoW.IsSpellInRange("Windburst") &&
                        !WoW.TargetHasDebuff("Hunters Mark") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)

                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }

                    if (WoW.CanCast("Marked Shot") &&
                        (WoW.Focus >= 25) &&
                        WoW.TargetHasDebuff("Hunters Mark") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst") &&
                        (WoW.TargetHasDebuff("Vulnerable") || !WoW.TargetHasDebuff("Vulnerable")))
                    {
                        WoW.CastSpell("Marked Shot");
                        return;
                    }
                }
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerHasBuff("Trueshot"))
                {
                    if (WoW.CanCast("Counter Shot") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.TargetIsCasting &&
                        WoW.TargetIsCastingAndSpellIsInterruptible &&
                        WoW.TargetPercentCast >= 24 &&
                        CounterShot)
                    {
                        WoW.CastSpell("Counter Shot");
                        return;
                    }
                    if (WoW.CanCast("Volley") &&
                        !WoW.PlayerHasBuff("Volley") &&
                        WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Volley");
                        return;
                    }
                    if (KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish"))
                    {
                        WoW.CastSpell("Kil'jaeden's Burning Wish");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent")

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

                        && !WoW.IsSpellOnCooldown("Berserking") &&
                        WoW.PlayerHasBuff("Trueshot") &&
                        WoW.PlayerRace == "Troll")
                    {
                        WoW.CastSpell("Berserking");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury") &&
                        WoW.PlayerHasBuff("Trueshot") &&
                        !WoW.IsSpellOnCooldown("Blood Fury") &&
                        WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Trueshot") &&
                        UseCooldowns &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Trueshot");
                        return;
                    }
                    if (WoW.CanCast("Piercing Shot") &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.Focus >= 100 &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.Talent(7) == 2 &&
                        WoW.IsSpellInRange("Windburst"))
                    {
                        WoW.CastSpell("Piercing Shot");
                        return;
                    }

                    if (WoW.CanCast("Murder of Crows") &&
                        WoW.Talent(6) == 1 &&
                        (WoW.Focus >= 30) &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst"))
                    {
                        WoW.CastSpell("Murder of Crows");
                        return;
                    }

                    if (WoW.CanCast("Marked Shot") &&
                        (WoW.Focus >= 25) &&
                        WoW.TargetHasDebuff("Hunters Mark") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        (WoW.TargetDebuffTimeRemaining("Vulnerable") <= 100))
                    {
                        WoW.CastSpell("Marked Shot");
                        return;
                    }
                    if (WoW.CanCast("Marked Shot") &&
                        (WoW.Focus >= 25) &&
                        WoW.TargetHasDebuff("Hunters Mark") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellInRange("Windburst") &&
                        !WoW.TargetHasDebuff("Vulnerable"))

                    {
                        WoW.CastSpell("Marked Shot");
                        return;
                    }

/*                  if (WoW.CanCast("Windburst")
 *                                              && !WoW.IsMoving
 *                                              && WoW.Focus >= 20
 *                                              && WoW.TargetHasDebuff("Vulnerable")
 *                                              && !WoW.PlayerIsChanneling
 *                                              && !WoW.PlayerIsCasting
 *                                              && (WoW.TargetDebuffTimeRemaining("Vulnerable") <= 1)
 *                                              && WoW.IsSpellInRange("Windburst"))
 *                  {
 *                      WoW.CastSpell("Windburst");
 *                      return;
 *                  }
 *                                      if (WoW.CanCast("Windburst")
 *                                              && !WoW.IsMoving
 *                                              && WoW.Focus >= 20
 *                                              && !WoW.PlayerIsChanneling
 *                                              && !WoW.PlayerIsCasting
 *                                              && !WoW.TargetHasDebuff("Vulnerable")
 *                                              && WoW.IsSpellInRange("Windburst"))
 *                  {
 *                      WoW.CastSpell("Windburst");
 *                      return;
 *                  }
 */


                    if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // with piercing shot
                        WoW.Focus >= 50 &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.CanCast("AS") &&
                        (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) &&
                        WoW.IsSpellInRange("Windburst") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellOnCooldown("Piercing Shot") &&
                        WoW.Talent(7) == 2 &&
                        (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100))
                    {
                        WoW.CastSpell("AS");

                        if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&                                            // with piercing shot
                            WoW.Focus >= 50 &&
                            WoW.TargetHasDebuff("Vulnerable") &&
                            WoW.CanCast("AS") &&
                            (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) &&
                            WoW.IsSpellInRange("Windburst") &&
                            !WoW.PlayerIsChanneling &&
                            !WoW.PlayerIsCasting &&
                            WoW.IsSpellOnCooldown("Piercing Shot") &&
                            WoW.Talent(7) == 2 &&
                            (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100))
                        {
                            WoW.CastSpell("AS");

                            if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&                                        // with piercing shot
                                WoW.Focus >= 50 &&
                                WoW.TargetHasDebuff("Vulnerable") &&
                                WoW.CanCast("AS") &&
                                (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) &&
                                WoW.IsSpellInRange("Windburst") &&
                                !WoW.PlayerIsChanneling &&
                                !WoW.PlayerIsCasting &&
                                WoW.IsSpellOnCooldown("Piercing Shot") &&
                                WoW.Talent(7) == 2 &&
                                (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100))
                            {
                                WoW.CastSpell("AS");
                                return;
                            }
                        }
                    }
                    if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&
                        WoW.Focus >= 95 &&
                        !WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.IsSpellOnCooldown("Piercing Shot") &&
                        WoW.Talent(7) == 2 &&
                        (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100))
                    {
                        WoW.CastSpell("AS");

                        if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&
                            WoW.Focus >= 95 &&
                            !WoW.TargetHasDebuff("Vulnerable") &&
                            WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") &&
                            !WoW.PlayerIsChanneling &&
                            !WoW.PlayerIsCasting &&
                            WoW.IsSpellOnCooldown("Piercing Shot") &&
                            WoW.Talent(7) == 2 &&
                            (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100))
                        {
                            WoW.CastSpell("AS");

                            if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&
                                WoW.Focus >= 95 &&
                                !WoW.TargetHasDebuff("Vulnerable") &&
                                WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") &&
                                !WoW.PlayerIsChanneling &&
                                !WoW.PlayerIsCasting &&
                                WoW.IsSpellOnCooldown("Piercing Shot") &&
                                WoW.Talent(7) == 2 &&
                                (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100))
                            {
                                WoW.CastSpell("AS");

                                return;
                            }
                        }
                    }
                    if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // without piercing shot
                        WoW.Focus >= 50 &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.CanCast("AS") &&
                        (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) &&
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.Talent(7) == 3 &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)

                    {
                        WoW.CastSpell("AS");

                        if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&                                            // without piercing shot
                            WoW.Focus >= 50 &&
                            WoW.TargetHasDebuff("Vulnerable") &&
                            WoW.CanCast("AS") &&
                            (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) &&
                            WoW.IsSpellInRange("Windburst") &&
                            WoW.Talent(7) == 3 &&
                            !WoW.PlayerIsChanneling &&
                            !WoW.PlayerIsCasting)

                        {
                            WoW.CastSpell("AS");

                            if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) &&                                        // without piercing shot
                                WoW.Focus >= 50 &&
                                WoW.TargetHasDebuff("Vulnerable") &&
                                WoW.CanCast("AS") &&
                                (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) &&
                                WoW.IsSpellInRange("Windburst") &&
                                WoW.Talent(7) == 3 &&
                                !WoW.PlayerIsChanneling &&
                                !WoW.PlayerIsCasting)

                            {
                                WoW.CastSpell("AS");

                                return;
                            }
                        }
                    }

                    if (WoW.PlayerHasBuff("Lock and Load") &&
                        WoW.CanCast("AS") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.IsSpellInRange("Windburst"))
                    {
                        WoW.CastSpell("AS");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.Focus <= 94 &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.TargetDebuffTimeRemaining("Vulnerable") < AimedShotCastTime &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)

                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.PlayerHasBuff("Marking Targets") &&
                        !WoW.TargetHasDebuff("Hunters Mark") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)

                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.IsSpellInRange("Windburst") &&
                        !WoW.PlayerHasBuff("Marking Targets") &&
                        !WoW.TargetHasDebuff("Vulnerable") &&
                        !WoW.TargetHasDebuff("Hunters Mark") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)

                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.Focus <= 99 &&
                        WoW.Talent(7) == 2 &&
                        !WoW.IsSpellOnCooldown("Piercing Shot") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)

                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.Focus <= 99 &&
                        WoW.Talent(7) == 2 &&
                        WoW.IsSpellOnCooldown("Piercing Shot") &&
                        WoW.SpellCooldownTimeRemaining("Piercing Shot") < 3 &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)

                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.IsSpellInRange("Windburst") &&
                        WoW.TargetHasDebuff("Vulnerable") &&
                        WoW.Focus <= 49 &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.PlayerIsCasting)

                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }

                    /* if (WoW.CanCast("Arcane Shot")
                     *                           && WoW.IsSpellInRange("Windburst")
                     *                           && WoW.Focus <=94
                     *                           && !WoW.TargetHasDebuff("Vulnerable")
                     *                           && !WoW.PlayerIsChanneling
                     *                           && !WoW.PlayerIsCasting)
                     *
                     * {
                     *   WoW.CastSpell("Arcane Shot");
                     *   return;
                     * }
                     * if (WoW.CanCast("Arcane Shot")
                     *                           && WoW.IsSpellInRange("Windburst")
                     *                           && WoW.Focus <=94
                     *                           && WoW.TargetHasDebuff("Vulnerable")
                     *                           && (WoW.TargetDebuffTimeRemaining("Vulnerable") <= 1.9 ||	WoW.TargetDebuffTimeRemaining("Vulnerable") >= 5)
                     *                           && WoW.IsSpellOnCooldown("Windburst")
                     *                           && !WoW.PlayerIsChanneling
                     *                           && !WoW.PlayerIsCasting)
                     *
                     * {
                     *   WoW.CastSpell("Arcane Shot");
                     *   return;
                     * }
                     */
                }
            }
        }
Ejemplo n.º 13
0
        public override void Pulse()
        {
            if (WoW.IsInCombat)
            {
                interruptwatch.Start();
            }

            if (UseCooldowns)
            {
            }

            //if (WoW.PlayerHasBuff("Mount")) return;

            if (combatRoutine.Type == RotationType.SingleTarget)                                     // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat) //Pull need to do by yourself - to prevent a mess
                {
                    if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis"))
                    {
                        WoW.Speak("Metamorphosis");
                        Log.Write("Health low < 30% using CDs...", Color.Red);
                        WoW.CastSpell("Metamorphasis"); // Off the GCD no return needed
                    }

                    if (WoW.CanCast("Throw Glaive") && !WoW.IsSpellInRange("Soul Carver") && WoW.IsSpellInRange("Fel Eruption")) //Need to implement range 30y for Throw Glaive spell 204157
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }

                    if (!WoW.IsSpellInRange("Soul Carver")) // If we are out of melee range return
                    {
                        return;
                    }

                    if (WoW.TargetIsCasting && interruptwatch.ElapsedMilliseconds > 1200)
                    {
                        if (!WoW.IsSpellOnCooldown("Sigal of Silence") && WoW.WasLastCasted("Arcane Torrent"))
                        {
                            WoW.Speak("Interrupting spell");
                            WoW.CastSpell("Sigal of Silence");
                            interruptwatch.Reset();
                            interruptwatch.Start();
                            return;
                        }

                        if (!WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.WasLastCasted("Sigal of Silence"))
                        {
                            WoW.Speak("Interrupting spell");
                            WoW.CastSpell("Arcane Torrent");
                            interruptwatch.Reset();
                            interruptwatch.Start();
                            return;
                        }
                    }

                    if (WoW.CanCast("Fiery Brand") && !WoW.TargetHasDebuff("Fiery Demise"))
                    {
                        WoW.CastSpell("Fiery Brand");
                    }

                    if (WoW.CanCast("Soul Carver") && WoW.SpellCooldownTimeRemaining("Fiery Brand") >= 10)
                    {
                        WoW.CastSpell("Soul Carver");
                        return;
                    }

                    if (WoW.CanCast("Spirit Bomb") && WoW.PlayerHasBuff("Soul Fragments") && !WoW.TargetHasDebuff("Frailty"))
                    {
                        WoW.CastSpell("Spirit Bomb");
                        return;
                    }

                    if (WoW.CanCast("Sigil of Flame") && WoW.TargetHasDebuff("Fiery Demise") && WoW.TargetDebuffTimeRemaining("Fiery Demise") >= 7)
                    {
                        //WoW.CastSpellOnMe("Sigil of Flame");  // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!!
                        WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent
                        return;
                    }

                    if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10 && WoW.TargetHasDebuff("Fiery Demise"))
                    {
                        WoW.CastSpell("Fel Eruption");
                        return;
                    }

                    if (WoW.CanCast("Soul Barrier") && WoW.Pain >= 10 && WoW.PlayerHasBuff("Soul Fragments") && WoW.PlayerBuffStacks("Soul Fragments") >= 4)
                    {
                        WoW.CastSpell("Soul Barrier");
                        return;
                    }

                    if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && (WoW.Pain == 100 || WoW.HealthPercent < 80 && WoW.Pain >= 20)) // to not waste cd and pain
                    {
                        WoW.CastSpell("Demon Spikes");
                    }

                    if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 30 && WoW.HealthPercent < 25) // Extra save, when we are on too low hp
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }

                    if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 80 && WoW.HealthPercent < 50 && !WoW.CanCast("Demon Spikes"))
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }

                    if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 60 && WoW.HealthPercent < 50 && WoW.PlayerHasBuff("Demon Spikes"))
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }

                    if (WoW.CanCast("Fracture") && WoW.Pain >= 20 && WoW.HealthPercent >= 50 && WoW.PlayerHasBuff("Demon Spikes"))
                    {
                        WoW.CastSpell("Fracture");
                        return;
                    }

                    if (WoW.CanCast("Fracture") && WoW.Pain >= 80 && WoW.HealthPercent >= 50 && !WoW.CanCast("Demon Spikes"))
                    {
                        WoW.CastSpell("Fracture");
                        return;
                    }

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

                    if (WoW.CanCast("Sigil of Flame"))
                    {
                        //WoW.CastSpellOnMe("Sigil of Flame");  // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!!
                        WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent
                        return;
                    }

                    if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10)
                    {
                        WoW.CastSpell("Fel Eruption");
                        return;
                    }

                    if (WoW.CanCast("Sever") && WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator
                    {
                        WoW.CastSpell("Sever");
                        return;
                    }

                    if (WoW.CanCast("Shear") && !WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator
                    {
                        WoW.CastSpell("Shear");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat) //Pull need to do by yourself - to prevent a mess
                {
                    if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis"))
                    {
                        WoW.Speak("Metamorphosis");
                        Log.Write("Health low < 30% using CDs...", Color.Red);
                        WoW.CastSpell("Metamorphasis"); // Off the GCD no return needed
                    }

                    if (!WoW.IsSpellInRange("Soul Carver") && !WoW.IsSpellOnCooldown("Throw Glaive") && WoW.IsSpellInRange("Fel Eruption"))
                    //Need to implement range 30y for Throw Glaive spell 204157
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }

                    if (!WoW.IsSpellInRange("Soul Carver")) // If we are out of melee range return
                    {
                        return;
                    }

                    if (WoW.TargetIsCasting && interruptwatch.ElapsedMilliseconds > 1200)
                    {
                        if (!WoW.IsSpellOnCooldown("Sigal of Silence") && WoW.WasLastCasted("Arcane Torrent"))
                        {
                            WoW.Speak("Interrupting spell");
                            WoW.CastSpell("Sigal of Silence");
                            interruptwatch.Reset();
                            interruptwatch.Start();
                            return;
                        }

                        if (!WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.WasLastCasted("Sigal of Silence"))
                        {
                            WoW.Speak("Interrupting spell");
                            WoW.CastSpell("Arcane Torrent");
                            interruptwatch.Reset();
                            interruptwatch.Start();
                            return;
                        }
                    }

                    if (WoW.CanCast("Fiery Brand") && !WoW.TargetHasDebuff("Fiery Demise"))
                    {
                        WoW.CastSpell("Fiery Brand");
                    }

                    if (WoW.CanCast("Soul Carver") && WoW.SpellCooldownTimeRemaining("Fiery Brand") >= 10)
                    {
                        WoW.CastSpell("Soul Carver");
                        return;
                    }

                    if (WoW.CanCast("Spirit Bomb") && WoW.PlayerHasBuff("Soul Fragments") && !WoW.TargetHasDebuff("Frailty"))
                    {
                        WoW.CastSpell("Spirit Bomb");
                        return;
                    }

                    if (WoW.CanCast("Sigil of Flame") && WoW.TargetHasDebuff("Fiery Demise") && WoW.TargetDebuffTimeRemaining("Fiery Demise") >= 7)
                    {
                        //WoW.CastSpellOnMe("Sigil of Flame");  // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!!
                        WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent
                        return;
                    }

                    if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10 && WoW.TargetHasDebuff("Fiery Demise"))
                    {
                        WoW.CastSpell("Fel Eruption");
                        return;
                    }

                    if (WoW.CanCast("Soul Barrier") && WoW.Pain >= 10 && WoW.PlayerHasBuff("Soul Fragments") && WoW.PlayerBuffStacks("Soul Fragments") >= 4)
                    {
                        WoW.CastSpell("Soul Barrier");
                        return;
                    }

                    if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && (WoW.Pain == 100 || WoW.HealthPercent < 90 && WoW.Pain >= 20)) // to not waste cd and pain
                    {
                        WoW.CastSpell("Demon Spikes");
                    }

                    if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 30 && WoW.HealthPercent < 25) // Extra save, when we are on too low hp
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }

                    if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 60 && WoW.PlayerHasBuff("Demon Spikes"))
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }
                    if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 80 && !WoW.CanCast("Demon Spikes"))
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }

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

                    if (WoW.CanCast("Sigil of Flame"))
                    {
                        //WoW.CastSpellOnMe("Sigil of Flame");  // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!!
                        WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent
                        return;
                    }

                    if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10)
                    {
                        WoW.CastSpell("Fel Eruption");
                        return;
                    }

                    if (WoW.CanCast("Sever") && WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator
                    {
                        WoW.CastSpell("Sever");
                        return;
                    }

                    if (WoW.CanCast("Shear") && !WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator
                    {
                        WoW.CastSpell("Shear");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat) //Pull need to do by yourself - to prevent a mess
                {
                    if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis"))
                    {
                        WoW.Speak("Metamorphosis");
                        Log.Write("Health low < 30% using CDs...", Color.Red);
                        WoW.CastSpell("Metamorphasis"); // Off the GCD no return needed
                    }

                    if (!WoW.IsSpellInRange("Soul Carver") && !WoW.IsSpellOnCooldown("Throw Glaive") && WoW.IsSpellInRange("Fel Eruption"))
                    //Need to implement range 30y for Throw Glaive spell 204157
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }

                    if (!WoW.IsSpellInRange("Soul Carver")) // If we are out of melee range return
                    {
                        return;
                    }

                    if (WoW.TargetIsCasting && interruptwatch.ElapsedMilliseconds > 1200)
                    {
                        if (!WoW.IsSpellOnCooldown("Sigal of Silence") && WoW.WasLastCasted("Arcane Torrent"))
                        {
                            WoW.Speak("Interrupting spell");
                            WoW.CastSpell("Sigal of Silence");
                            interruptwatch.Reset();
                            interruptwatch.Start();
                            return;
                        }

                        if (!WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.WasLastCasted("Sigal of Silence"))
                        {
                            WoW.Speak("Interrupting spell");
                            WoW.CastSpell("Arcane Torrent");
                            interruptwatch.Reset();
                            interruptwatch.Start();
                            return;
                        }
                    }

                    if (WoW.CanCast("Fiery Brand") && !WoW.TargetHasDebuff("Fiery Demise"))
                    {
                        WoW.CastSpell("Fiery Brand");
                    }

                    if (WoW.CanCast("Soul Carver") && WoW.SpellCooldownTimeRemaining("Fiery Brand") >= 10)
                    {
                        WoW.CastSpell("Soul Carver");
                        return;
                    }

                    if (WoW.CanCast("Spirit Bomb") && WoW.PlayerHasBuff("Soul Fragments") && !WoW.TargetHasDebuff("Frailty"))
                    {
                        WoW.CastSpell("Spirit Bomb");
                        return;
                    }

                    if (WoW.CanCast("Sigil of Flame"))
                    {
                        //WoW.CastSpellOnMe("Sigil of Flame");  // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!!
                        WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent
                        return;
                    }

                    if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10 && WoW.TargetHasDebuff("Fiery Demise"))
                    {
                        WoW.CastSpell("Fel Eruption");
                        return;
                    }

                    if (WoW.CanCast("Soul Barrier") && WoW.Pain >= 10 && WoW.PlayerHasBuff("Soul Fragments") && WoW.PlayerBuffStacks("Soul Fragments") >= 4)
                    {
                        WoW.CastSpell("Soul Barrier");
                        return;
                    }

                    if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && (WoW.Pain == 100 || WoW.HealthPercent < 80 && WoW.Pain >= 20)) // to not waste cd and pain
                    {
                        WoW.CastSpell("Demon Spikes");
                    }

                    if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 30 && WoW.HealthPercent < 25) // Extra save, when we are on too low hp
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }

                    if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 60 && WoW.PlayerHasBuff("Demon Spikes"))
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }
                    if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 80 && !WoW.CanCast("Demon Spikes"))
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }

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

                    if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10)
                    {
                        WoW.CastSpell("Fel Eruption");
                        return;
                    }

                    if (WoW.CanCast("Sever") && WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator
                    {
                        WoW.CastSpell("Sever");
                        return;
                    }

                    if (WoW.CanCast("Shear") && !WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator
                    {
                        WoW.CastSpell("Shear");
                    }
                }
            }
        }
        public override void Pulse()
        {
            if (stopwatch.ElapsedMilliseconds == 0)
            {
                stopwatch.Start();
                Log.WriteCloudMagic("The Cooldown toggle button is now Active (Numpad9). The delay is set to 1000ms ( 1 second )", Color.Black);
                return;
            }
            {
                if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_NUMPAD9) < 0)
                {
                    if (stopwatch.ElapsedMilliseconds > 1000)
                    {
                        combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns;
                        stopwatch.Restart();
                    }
                }
                if (combatRoutine.Type == RotationType.SingleTarget)
                {
                    if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                    {
                        if (UseCooldowns && RuneOfPower && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") >= 4000 &&
                            WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerIsCasting && !WoW.IsMoving && !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power") ||
                            (UseCooldowns && RuneOfPower && !WoW.PlayerIsCasting && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 &&
                             !WoW.IsMoving && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.PlayerHasBuff("Hot Streak!") &&
                             !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power")))
                        {
                            WoW.CastSpell("Rune of Power");
                            return;
                        }
                        if (UseCooldowns && Mirrors && WoW.CanCast("Mirror Image") && !WoW.IsSpellOnCooldown("Mirror Image") && WoW.PlayerHasBuff("Combustion"))
                        {
                            WoW.CastSpell("Mirror Image");
                            return;
                        }
                        if (WoW.CanCast("Scorch") && WoW.IsMoving && !WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Scorch");
                            return;
                        }
                        if (WoW.IsInCombat && Meteor && Control.ModifierKeys == Keys.Alt && !WoW.PlayerIsCasting)
                        {
                            WoW.CastSpell("Meteor");
                            return;
                        }
                        if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 &&
                            WoW.PlayerHasBuff("Heating Up") && UseCooldowns && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && !WoW.IsSpellOnCooldown("Combustion"))
                        {
                            WoW.CastSpell("Phoenix's Flames");
                            return;
                        }
                        if (WoW.PlayerIsCasting && UseCooldowns && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 &&
                            !WoW.IsSpellOnCooldown("Combustion"))
                        {
                            WoW.CastSpell("Phoenix's Flames");
                            return;
                        }
                        if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerHasBuff("Heating Up") && WoW.LastSpell != "Fire Blast" &&
                            WoW.LastSpell != "Phoenix's Flames" && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && !UseCooldowns && Combustion &&
                            WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsSpellOnCooldown("Combustion"))
                        {
                            WoW.CastSpell("Phoenix's Flames");
                            return;
                        }
                        if (!UseCooldowns && Combustion && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") &&
                            WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Fire Blast");
                            return;
                        }
                        if (WoW.CanCast("Phoenix's Flames") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && WoW.PlayerHasBuff("Heating Up") &&
                            Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 6000 && !WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Phoenix's Flames");
                            return;
                        }

                        if (WoW.IsInCombat && Control.ModifierKeys == Keys.Alt && ROF && !WoW.PlayerIsCasting)
                        {
                            WoW.CastSpell("Ring of Frost");
                            return;
                        }
                        if (Barrier && WoW.CanCast("Blazing Barrier") && WoW.HealthPercent <= 80 && !WoW.IsSpellOnCooldown("Blazing Barrier") && !WoW.PlayerHasBuff("Blazing Barrier"))
                        {
                            WoW.CastSpell("Blazing Barrier");
                            return;
                        }

                        if (!UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Cinderstorm");
                            return;
                        }
                        if (UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") &&
                            WoW.IsSpellOnCooldown("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 500 && !WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Cinderstorm");
                            return;
                        }
                        if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") >= 1 &&
                            WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling ||
                            UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 &&
                            WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") && !WoW.IsSpellOnCooldown("Mirror Image") && !WoW.PlayerIsCasting &&
                            !WoW.PlayerIsChanneling)
                        {
                            WoW.CastSpell("Combustion");
                            return;
                        }

                        if (DragBr && WoW.CanCast("Dragon's Breath") && WoW.IsSpellInRange("Scorch") && !WoW.PlayerHasBuff("Combustion"))
                        {
                            WoW.CastSpell("Dragon's Breath");
                            return;
                        }
                        if (WoW.PlayerSpellCharges("Phoenix's Flames") > 2 && !WoW.PlayerHasBuff("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000 &&
                            WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 &&
                            WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" ||
                            WoW.SpellCooldownTimeRemaining("Combustion") < 2000 && WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") &&
                            WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast")
                        {
                            WoW.CastSpell("Phoenix's Flames");
                            return;
                        }
                        if (WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!") &&
                            WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Fire Blast") > 50 && WoW.LastSpell != "Phoenix's Flames" &&
                            WoW.LastSpell != "Fire Blast")
                        {
                            WoW.CastSpell("Phoenix's Flames");
                            return;
                        }

                        if (WoW.CanCast("Living Bomb") && LivingBomb && !WoW.IsSpellOnCooldown("Living Bomb") && !WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Living Bomb");
                            return;
                        }
                        if (WoW.CanCast("Ice Block") && !WoW.PlayerHasBuff("Ice Block") && IceBlock && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ice Block"))
                        {
                            WoW.CastSpell("Ice Block");
                            Log.Write("--------Activating Ice Block, you were below 20%HealthPoints.--------");
                            return;
                        }
                        // Legendary Bracers Support.
                        if (Legendary && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") &&
                            WoW.PlayerBuffTimeRemaining("Marquee Bindings of the Sun King") > 400 && WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!") ||
                            (!WoW.PlayerHasBuff("Combustion") && !WoW.WasLastCasted("Pyroblast") && WoW.PlayerHasBuff("Ice Floes") && !WoW.PlayerIsCasting &&
                             WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!")))
                        {
                            WoW.CastSpell("Pyroblast");
                            return;
                        }
                        if (WoW.CanCast("Pyroblast") && WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Combustion"))
                        {
                            WoW.CastSpell("Pyroblast");
                            return;
                        }
                        if (WoW.CanCast("Pyroblast") && WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Phoenix's Flames") < 2)
                        {
                            WoW.CastSpell("Pyroblast");
                            return;
                        }
                        if (WoW.CanCast("Pyroblast") && WoW.PlayerHasBuff("Hot Streak!") && WoW.LastSpell == "Combustion")
                        {
                            WoW.CastSpell("Pyroblast");
                            return;
                        }
                        if (WoW.CanCast("Pyroblast") && !UseCooldowns && Combustion && WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Pyroblast");
                            return;
                        }
                        if (WoW.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Fireball");
                            return;
                        }
                        if (WoW.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") < 2000)
                        {
                            WoW.CastSpell("Fireball");
                            return;
                        }
                        if (WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 130 && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000)
                        {
                            WoW.CastSpell("Fire Blast");
                            return;
                        }
                        if (WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000)
                        {
                            WoW.CastSpell("Fire Blast");
                            return;
                        }
                        if (!WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Heating Up") && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling &&
                            !WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Fireball");
                            return;
                        }
                        if (!WoW.PlayerIsCasting && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Heating Up") &&
                            WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!"))
                        {
                            WoW.CastSpell("Fireball");
                            return;
                        }
                        if (WoW.IsMoving && WoW.PlayerHasBuff("Ice Floes") && WoW.IsSpellInRange("Fireball") && !WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Heating Up"))
                        {
                            WoW.CastSpell("Fireball");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Combustion") && !WoW.IsMoving && WoW.CanCast("Fireball") && !WoW.PlayerIsCasting && WoW.PlayerHasBuff("Heating Up") &&
                            WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 ||
                            WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                            WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 ||
                            WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                            !WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 ||
                            WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                            WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") >= 2000 ||
                            WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                            WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000)
                        {
                            WoW.CastSpell("Fireball");
                            return;
                        }
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (UseCooldowns && RuneOfPower && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") >= 4000 && WoW.PlayerHasBuff("Hot Streak!") &&
                    !WoW.PlayerIsCasting && !WoW.IsMoving && !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power") ||
                    (UseCooldowns && RuneOfPower && !WoW.PlayerIsCasting && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsMoving &&
                     !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Rune of Power") &&
                     !WoW.IsSpellOnCooldown("Rune of Power")))
                {
                    WoW.CastSpell("Rune of Power");
                    return;
                }
                if (UseCooldowns && Mirrors && WoW.CanCast("Mirror Image") && !WoW.IsSpellOnCooldown("Mirror Image") && WoW.PlayerHasBuff("Combustion"))
                {
                    WoW.CastSpell("Mirror Image");
                    return;
                }
                if (WoW.CanCast("Scorch") && WoW.IsMoving && !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Scorch");
                    return;
                }
                if (WoW.IsInCombat && Meteor && Control.ModifierKeys == Keys.Alt && !WoW.PlayerIsCasting)
                {
                    WoW.CastSpell("Meteor");
                    return;
                }
                if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 &&
                    WoW.PlayerHasBuff("Heating Up") && UseCooldowns && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && !WoW.IsSpellOnCooldown("Combustion"))
                {
                    WoW.CastSpell("Phoenix's Flames");
                    return;
                }
                if (WoW.PlayerIsCasting && UseCooldowns && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 &&
                    !WoW.IsSpellOnCooldown("Combustion"))
                {
                    WoW.CastSpell("Phoenix's Flames");
                    return;
                }
                if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerHasBuff("Heating Up") && WoW.LastSpell != "Fire Blast" &&
                    WoW.LastSpell != "Phoenix's Flames" && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && !UseCooldowns && Combustion &&
                    WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsSpellOnCooldown("Combustion"))
                {
                    WoW.CastSpell("Phoenix's Flames");
                    return;
                }
                if (!UseCooldowns && Combustion && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") &&
                    WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Fire Blast");
                    return;
                }
                if (WoW.CanCast("Phoenix's Flames") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && WoW.PlayerHasBuff("Heating Up") &&
                    Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 6000 && !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Phoenix's Flames");
                    return;
                }

                if (WoW.IsInCombat && Control.ModifierKeys == Keys.Alt && ROF && !WoW.PlayerIsCasting)
                {
                    WoW.CastSpell("Ring of Frost");
                    return;
                }
                if (Barrier && WoW.CanCast("Blazing Barrier") && WoW.HealthPercent <= 80 && !WoW.IsSpellOnCooldown("Blazing Barrier") && !WoW.PlayerHasBuff("Blazing Barrier"))
                {
                    WoW.CastSpell("Blazing Barrier");
                    return;
                }

                if (!UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Cinderstorm");
                    return;
                }
                if (UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && WoW.IsSpellOnCooldown("Combustion") &&
                    WoW.SpellCooldownTimeRemaining("Combustion") > 500 && !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Cinderstorm");
                    return;
                }
                if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") >= 1 &&
                    WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling ||
                    UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && WoW.PlayerHasBuff("Hot Streak!") &&
                    !WoW.IsSpellOnCooldown("Combustion") && !WoW.IsSpellOnCooldown("Mirror Image") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                {
                    WoW.CastSpell("Combustion");
                    return;
                }

                if (DragBr && WoW.CanCast("Dragon's Breath") && WoW.IsSpellInRange("Scorch") && !WoW.PlayerHasBuff("Combustion"))
                {
                    WoW.CastSpell("Dragon's Breath");
                    return;
                }
                if (WoW.PlayerSpellCharges("Phoenix's Flames") > 2 && !WoW.PlayerHasBuff("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000 && WoW.CanCast("Phoenix's Flames") &&
                    WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.IsSpellOnCooldown("Fire Blast") &&
                    WoW.SpellCooldownTimeRemaining("Fire Blast") > 110 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" ||
                    WoW.SpellCooldownTimeRemaining("Combustion") < 2000 && WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") &&
                    WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast")
                {
                    WoW.CastSpell("Phoenix's Flames");
                    return;
                }
                if (WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!") &&
                    WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Fire Blast") > 5000 && WoW.LastSpell != "Phoenix's Flames" &&
                    WoW.LastSpell != "Fire Blast")
                {
                    WoW.CastSpell("Phoenix's Flames");
                    return;
                }

                if (WoW.CanCast("Living Bomb") && LivingBomb && !WoW.IsSpellOnCooldown("Living Bomb") && !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Living Bomb");
                    return;
                }
                if (WoW.CanCast("Ice Block") && !WoW.PlayerHasBuff("Ice Block") && IceBlock && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ice Block"))
                {
                    WoW.CastSpell("Ice Block");
                    Log.Write("--------Activating Ice Block, you were below 20%HealthPoints.--------");
                    return;
                }
                // Legendary Bracers Support.
                if (Legendary && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") &&
                    WoW.PlayerBuffTimeRemaining("Marquee Bindings of the Sun King") > 400 && WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!") ||
                    (!WoW.PlayerHasBuff("Combustion") && !WoW.WasLastCasted("Pyroblast") && WoW.PlayerHasBuff("Ice Floes") && !WoW.PlayerIsCasting &&
                     WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!")))
                {
                    WoW.CastSpell("Pyroblast");
                    return;
                }
                if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Combustion"))
                {
                    WoW.CastSpell("Flamestrike");
                    return;
                }
                if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") &&
                    WoW.PlayerSpellCharges("Phoenix's Flames") < 2)
                {
                    WoW.CastSpell("Flamestrike");
                    return;
                }
                if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && WoW.PlayerHasBuff("Hot Streak!") && WoW.LastSpell == "Combustion")
                {
                    WoW.CastSpell("Flamestrike");
                    return;
                }
                if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && !UseCooldowns && Combustion && WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Flamestrike");
                    return;
                }
                if (WoW.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") &&
                    !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Fireball");
                    return;
                }
                if (WoW.SpellCooldownTimeRemaining("Combustion") > 200 && WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 130 && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" &&
                    WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Fire Blast");
                    return;
                }
                if (WoW.SpellCooldownTimeRemaining("Combustion") > 200 && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") &&
                    WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Fire Blast");
                    return;
                }


                if (!WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Heating Up") && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling &&
                    !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Fireball");
                    return;
                }
                if (!WoW.PlayerIsCasting && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Heating Up") &&
                    WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!"))
                {
                    WoW.CastSpell("Fireball");
                    return;
                }
                if (WoW.IsMoving && WoW.PlayerHasBuff("Ice Floes") && WoW.IsSpellInRange("Fireball") && !WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Heating Up"))
                {
                    WoW.CastSpell("Fireball");
                    return;
                }
                if (!WoW.PlayerHasBuff("Combustion") && !WoW.IsMoving && WoW.CanCast("Fireball") && !WoW.PlayerIsCasting && WoW.PlayerHasBuff("Heating Up") &&
                    WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 ||
                    WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                    WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 ||
                    WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                    !WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000 ||
                    WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                    WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") >= 2000 ||
                    WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") &&
                    WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 2000)
                {
                    WoW.CastSpell("Fireball");
                }
            }
        }
        public override void Pulse()
        {
            if (WoW.IsInCombat)
            {
                interruptwatch.Start();
            }

            if (UseCooldowns)
            {
            }

            //if (WoW.PlayerHasBuff("Mount")) return;

            if (combatRoutine.Type != RotationType.SingleTarget && combatRoutine.Type != RotationType.AOE)
            {
                return;
            }

            if (!WoW.HasTarget || !WoW.TargetIsEnemy)
            {
                return;
            }

            if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis"))
            {
                WoW.Speak("Metamorphasis");
                Log.Write("Health low < 70% using CDs...", Color.Red);
                WoW.CastSpell("Metamorphasis"); // Off the GCD no return needed
            }

            if (WoW.PlayerHasBuff("Metamorphasis") && WoW.CanCast("Sever"))
            {
                WoW.CastSpell("Sever");
                return;
            }

            if (WoW.PlayerHasBuff("Metamorphasis") && WoW.PlayerHasBuff("Soul Fragments") && (WoW.PlayerBuffStacks("Soul Fragments") >= 5) && WoW.Pain >= 50)
            {
                WoW.CastSpell("Soul Cleave");
                return;
            }

            if (!WoW.IsSpellInRange("Soul Carver") && !WoW.IsSpellOnCooldown("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && WoW.CanCast("Throw Glaive"))
            {
                WoW.CastSpell("Throw Glaive");
                return;
            }

            if (!WoW.IsSpellInRange("Soul Carver")) // If we are out of melee range return
            {
                return;
            }

            if (WoW.TargetIsCasting && interruptwatch.ElapsedMilliseconds > 1200)
            {
                if (!WoW.IsSpellOnCooldown("Sigil of Silence") && WoW.WasLastCasted("Arcane Torrent"))
                {
                    WoW.Speak("Interrupting spell");
                    WoW.CastSpell("Sigil of Silence");
                    interruptwatch.Reset();
                    interruptwatch.Start();
                    return;
                }

                if (!WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.WasLastCasted("Sigil of Silence"))
                {
                    WoW.Speak("Interrupting spell");
                    WoW.CastSpell("Arcane Torrent");
                    interruptwatch.Reset();
                    interruptwatch.Start();
                    return;
                }
            }

            if (!WoW.TargetHasDebuff("Fiery Demise") && !WoW.IsSpellOnCooldown("Fiery Brand"))
            {
                WoW.CastSpell("Fiery Brand");
            }

            if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && WoW.Pain > 20 && !WoW.PlayerHasBuff("Magnum Opus"))
            {
                WoW.CastSpell("Demon Spikes");
            }

            if (WoW.CanCast("Soul Carver"))
            {
                WoW.CastSpell("Soul Carver");
            }

            if (WoW.CanCast("Fel Devastation") && WoW.Pain >= 30)
            {
                WoW.CastSpell("Fel Devastation");
            }

            if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 50)
            {
                WoW.CastSpell("Soul Cleave");
                return;
            }

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

            if (WoW.CanCast("Sigil of Flame") && !WoW.TargetHasDebuff("Sigil of Flame"))
            {
                //WoW.CastSpellOnMe("Sigil of Flame");  // Use this if you not using "Concentrated Sigil's" talent - this is a little buggy!!!
                WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigil's" talent
                return;
            }

            //if (WoW.CanCast("Felblade"))  // Pain Generator
            //{
            //    WoW.CastSpell("Felblade");
            //	return;
            //}

            if (WoW.CanCast("Shear")) // Pain Generator
            {
                WoW.CastSpell("Shear");
            }
        }
Ejemplo n.º 16
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)  // Do Single Target Stuff here
            {
                if (WoW.CanCast("Death") && WoW.HealthPercent < 40 && Death && !WoW.IsSpellOnCooldown("Death") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Death");
                    return;
                }
                if (WoW.CanCast("Exhil") && WoW.HealthPercent < 30 && Exhil && !WoW.IsSpellOnCooldown("Exhil") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Exhil");
                    return;
                }
                if (WoW.CanCast("Turtle") && WoW.HealthPercent < 20 && Turtle && !WoW.IsSpellOnCooldown("Turtle") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Turtle");
                    return;
                }

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

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

                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (!WoW.HasPet && WoW.CanCast("Wolf"))
                    {
                        WoW.CastSpell("Wolf");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix"))
                    {
                        WoW.CastSpell("Phoenix");
                        return;
                    }
                    if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Revive Pet");
                        return;
                    }
                    if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && multishotwatch.ElapsedMilliseconds == 0)
                    {
                        multishotwatch.Start();
                        Log.WritePixelMagic("multishotwatch started..", Color.Black);
                        return;
                    }
                    if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds == 0)
                    {
                        interruptwatch.Start();
                        Log.WritePixelMagic("interruptwatch started..", Color.Black);
                        return;
                    }
                    if ((multishotwatch.ElapsedMilliseconds > 3000) && !WoW.IsSpellOnCooldown("Multi-Shot") && !WoW.WasLastCasted("Multi-Shot") && WoW.Focus >= 40)
                    {
                        WoW.CastSpell("Multi-Shot");
                        multishotwatch.Reset();
                        multishotwatch.Start();
                        return;
                    }
                    if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds > 800)
                    {
                        if (WoW.CanCast("Counter Shot") && !WoW.IsSpellOnCooldown("Counter Shot") && CounterShot && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Counter Shot"))
                        {
                            WoW.CastSpell("Counter Shot");
                            interruptwatch.Reset();
                            Log.WritePixelMagic("interruptwatch reset!", Color.Black);
                            interruptwatch.Start();
                            Log.WritePixelMagic("interruptwatch started...", Color.Black);
                            return;
                        }
                    }
                    if (WoW.CanCast("A Murder of Crows") && !WoW.IsSpellOnCooldown("A Murder of Crows") && Crow && WoW.IsSpellInRange("A Murder of Crows") && WoW.Focus >= 30 && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 10))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Barrage") && Barrage && WoW.IsSpellInRange("Barrage") && WoW.Focus >= 60)
                    {
                        WoW.CastSpell("Barrage");
                        return;
                    }
                    if (WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Turtle") && !WoW.IsSpellOnCooldown("Bestial Wrath"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
                    if (WoW.CanCast("Aspect of the Wild") && !WoW.IsSpellOnCooldown("Aspect of the Wild") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 10 && (dpscooldowns || WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Ancient Hysteria") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums") || WoW.PlayerHasBuff("Heroism") || WoW.PlayerHasBuff("Time Warp")))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast") && !WoW.IsSpellOnCooldown("Dire Beast") && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 3))
                    {
                        WoW.CastSpell("Dire Beast");
                        if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder"))
                        {
                            WoW.CastSpell("Titan's Thunder");
                            return;
                        }
                    }
                    if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && WoW.IsSpellInRange("Kill Command") && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 1))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && !WoW.PetHasBuff("Beast Cleave") && WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 34) && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PetBuffTimeRemaining("Beast Cleave") <= 1 && WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && WoW.PetBuffTimeRemaining("Beast Cleave") <= 1 && WoW.IsSpellInRange("Multi-Shot") && !WoW.CanCast("Bestial Wrath"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 34) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 1 && WoW.PlayerHasBuff("Bestial Wrath") && (WoW.SpellCooldownTimeRemaining("Kill Command") >= 3))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 110) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 1 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 1)
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }
        }
        }                                              //please Set between 1-99 NpC in range for ST if not desired set to 99

        public override void Pulse()
        {
            if (DetectKeyPress.GetKeyState(0x6A) < 0)
            {
                UseCooldowns = !UseCooldowns;
                Thread.Sleep(150);
            }

            if (WoW.TargetIsCasting)             // Kick
            {
                if (WoW.CanCast("Kick") && WoW.IsSpellInRange("Kick") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 55 && !WoW.IsSpellOnCooldown("Kick") && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Kick"))
                {
                    WoW.CastSpell("Kick");
                    return;
                }
            }
            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted)
                {
// Spell ShadowDance if TimerSecRemaining(DeathFromAbove) > 0 and HasTalent(DarkShadow)
                    if (WoW.CanCast("ShadowDance") && WoW.Talent(6) == 1 && WoW.LastSpell == "DeathFromAbove")
                    {
                        WoW.CastSpell("ShadowDance");
                        return;
                    }
                    // Cooldowns Spell ShadowBlades if AlternatePowerToMax >= 2
                    if (combatRoutine.UseCooldowns)
                    {
                        if (!stealth)
                        {
//StealthCooldowns Spell ShadowDance if ChargesRemaining(ShadowDance) = SpellCharges(ShadowDance)
                            if (WoW.CanCast("ShadowDance") && WoW.PlayerSpellCharges("ShadowDance") >= 2)
                            {
                                WoW.CastSpell("ShadowDance");
                                return;
                            }
//StealthCooldowns Spell Vanish if HasTalent(Subterfuge) and not HasBuff(MasterAssassinsInitiative)
                            if (WoW.CanCast("Vanish") && WoW.IsSpellInRange("NightBlade") && WoW.Talent(2) == 2 && !WoW.PlayerHasBuff("MasterAssassinsInitiative") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance")))
                            {
                                WoW.CastSpell("Vanish");
                                return;
                            }
                        }
                        if (WoW.CanCast("ShadowBlades") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 4)
                        {
                            WoW.CastSpell("ShadowBlades");
                            return;
                        }
//Cooldowns Spell GoremawsBite if AlternatePowerToMax >= 3 and not HasBuff(Stealth) and not HasBuff(ShadowDance) and not HasBuff(Subterfuge) and ChargesRemaining(ShadowDance) < SpellCharges(ShadowDance)
                        if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3 && !stealth && WoW.PlayerSpellCharges("ShadowDance") < 2)
                        {
                            WoW.CastSpell("GoremawsBite");
                            return;
                        }
                    }
                    if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll")
                    {
                        WoW.CastSpell("Berserking");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Energy <= 20)
                    {
                        WoW.CastSpell("Arcane Torrent");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }

// Spell Backstab Once if AlternatePower < 5 and FightDurationSec - FightSecRemaining < 2
                    if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 45 && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("Backstab");
                        return;
                    }
//Spell Vanish if not HasTalent(Subterfuge) and not HasBuff(ShadowDance) and not HasBuff(MasterAssassinsInitiative) and Power >= 40 and ChargesRemaining(ShadowDance) < SpellCharges(ShadowDance) and not IsOnGcd and (AlternatePowerToMax >= 3 or (AlternatePowerToMax >= 2 and not HasBuff(ShadowBlades)))
                    if (WoW.CanCast("Vanish") && !stealth && WoW.IsSpellInRange("NightBlade") && WoW.Talent(2) != 2 && !WoW.PlayerHasBuff("ShadowDance") && !WoW.PlayerHasBuff("MasterAssassinsInitiative") && WoW.Energy >= 40 && WoW.PlayerSpellCharges("ShadowDance") < 2 && (WoW.CurrentComboPoints >= 3 || (WoW.CurrentComboPoints >= 2 && !WoW.PlayerHasBuff("ShadowBlades"))))
                    {
                        WoW.CastSpell("Vanish");
                        return;
                    }
//AmrRogueSubtletyDefault2 Spell SymbolsOfDeath if ((PowerToMax >= 40 and (not HasBuff(ShadowDance) or BuffRemainingSec(ShadowDance) >= BuffDurationSec(ShadowDance) - 1)) or
                    if (WoW.CanCast("Symbols of Death") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.Energy <= 60 && (WoW.PlayerHasBuff("ShadowDance") || WoW.PlayerBuffTimeRemaining("ShadowDance") >= 300))
                    {
                        WoW.CastSpell("Symbols of Death");
                        return;
                    }
//(HasBuff(ShadowDance) and FightDurationSec - FightSecRemaining < 10) or

//(HasItem(TheFirstOfTheDead) and AlternatePowerToMax >= 5 and Power >= 40)) and not IsOnGcd
// Finisher Spell Nightblade if CanRefreshDot(Nightblade) and TargetSecRemaining > 6 and (not HasBuff(MasterAssassinsInitiative) or DotRemainingSec(Nightblade) < BuffRemainingSec(MasterAssassinsInitiative))
                    if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && ((!WoW.TargetHasDebuff("MasterAssassinsInitiative")) || (WoW.TargetDebuffTimeRemaining("Nightblade") < WoW.PlayerBuffTimeRemaining("MasterAssassinsInitiative"))) && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("NightBlade");
                        return;
                    }
                    //Finisher Spell DeathFromAbove if HasBuff(SymbolsOfDeath) or CooldownSecRemaining(SymbolsOfDeath) > 10
                    if (WoW.CanCast("DeathFromAbove") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (WoW.PlayerHasBuff("SymbolsOfDeath") || WoW.SpellCooldownTimeRemaining("SymbolsOfDeath") > 10000) && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("DeathFromAbove");
                        return;
                    }
//Finisher Spell Eviscerate
                    if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade"))
                    {
                        WoW.CastSpell("Eviscerate");
                        return;
                    }
//InsideStealth Spell Shadowstrike
                    if (WoW.CanCast("ShadowStrike") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 40 && WoW.CurrentComboPoints <= 5 && stealth)
                    {
                        WoW.CastSpell("ShadowStrike");
                        return;
                    }
// Spell ShadowDance if TimerSecRemaining(DeathFromAbove) > 0 and HasTalent(DarkShadow)
                    if (WoW.CanCast("ShadowDance") && WoW.Talent(6) == 1 && WoW.LastSpell == "DeathFromAbove")
                    {
                        WoW.CastSpell("ShadowDance");
                        return;
                    }
//StealthCooldowns Spell ShadowDance
                    if (WoW.CanCast("ShadowDance"))
                    {
                        WoW.CastSpell("ShadowDance");
                        return;
                    }
//Builder Spell Backstab
                    if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 45 && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("Backstab");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.AOE) // Do AoE Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted)
                {
// Spell ShadowDance if TimerSecRemaining(DeathFromAbove) > 0 and HasTalent(DarkShadow)
                    if (WoW.CanCast("ShadowDance") && WoW.Talent(6) == 1 && WoW.LastSpell == "DeathFromAbove")
                    {
                        WoW.CastSpell("ShadowDance");
                        return;
                    }
                    // Cooldowns Spell ShadowBlades if AlternatePowerToMax >= 2
                    if (combatRoutine.UseCooldowns)
                    {
                        if (!stealth)
                        {
//StealthCooldowns Spell ShadowDance if ChargesRemaining(ShadowDance) = SpellCharges(ShadowDance)
                            if (WoW.CanCast("ShadowDance") && WoW.PlayerSpellCharges("ShadowDance") >= 2)
                            {
                                WoW.CastSpell("ShadowDance");
                                return;
                            }
//StealthCooldowns Spell Vanish if HasTalent(Subterfuge) and not HasBuff(MasterAssassinsInitiative)
                            if (WoW.CanCast("Vanish") && WoW.IsSpellInRange("NightBlade") && WoW.Talent(2) == 2 && !WoW.PlayerHasBuff("MasterAssassinsInitiative") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance")))
                            {
                                WoW.CastSpell("Vanish");
                                return;
                            }
                        }
                        if (WoW.CanCast("ShadowBlades") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 4)
                        {
                            WoW.CastSpell("ShadowBlades");
                            return;
                        }
//Cooldowns Spell GoremawsBite if AlternatePowerToMax >= 3 and not HasBuff(Stealth) and not HasBuff(ShadowDance) and not HasBuff(Subterfuge) and ChargesRemaining(ShadowDance) < SpellCharges(ShadowDance)
                        if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3 && !stealth && WoW.PlayerSpellCharges("ShadowDance") < 2)
                        {
                            WoW.CastSpell("GoremawsBite");
                            return;
                        }
                    }
                    if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll")
                    {
                        WoW.CastSpell("Berserking");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Energy <= 20)
                    {
                        WoW.CastSpell("Arcane Torrent");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }

// Spell Backstab Once if AlternatePower < 5 and FightDurationSec - FightSecRemaining < 2
                    if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 45 && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("Backstab");
                        return;
                    }
//Spell Vanish if not HasTalent(Subterfuge) and not HasBuff(ShadowDance) and not HasBuff(MasterAssassinsInitiative) and Power >= 40 and ChargesRemaining(ShadowDance) < SpellCharges(ShadowDance) and not IsOnGcd and (AlternatePowerToMax >= 3 or (AlternatePowerToMax >= 2 and not HasBuff(ShadowBlades)))
                    if (WoW.CanCast("Vanish") && !stealth && WoW.IsSpellInRange("NightBlade") && WoW.Talent(2) != 2 && !WoW.PlayerHasBuff("ShadowDance") && !WoW.PlayerHasBuff("MasterAssassinsInitiative") && WoW.Energy >= 40 && WoW.PlayerSpellCharges("ShadowDance") < 2 && (WoW.CurrentComboPoints >= 3 || (WoW.CurrentComboPoints >= 2 && !WoW.PlayerHasBuff("ShadowBlades"))))
                    {
                        WoW.CastSpell("Vanish");
                        return;
                    }
//AmrRogueSubtletyDefault2 Spell SymbolsOfDeath if ((PowerToMax >= 40 and (not HasBuff(ShadowDance) or BuffRemainingSec(ShadowDance) >= BuffDurationSec(ShadowDance) - 1)) or
                    if (WoW.CanCast("Symbols of Death") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.Energy <= 60 && (WoW.PlayerHasBuff("ShadowDance") || WoW.PlayerBuffTimeRemaining("ShadowDance") >= 300))
                    {
                        WoW.CastSpell("Symbols of Death");
                        return;
                    }
//(HasBuff(ShadowDance) and FightDurationSec - FightSecRemaining < 10) or

//(HasItem(TheFirstOfTheDead) and AlternatePowerToMax >= 5 and Power >= 40)) and not IsOnGcd
// Finisher Spell Nightblade if CanRefreshDot(Nightblade) and TargetSecRemaining > 6 and (not HasBuff(MasterAssassinsInitiative) or DotRemainingSec(Nightblade) < BuffRemainingSec(MasterAssassinsInitiative))
                    if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && ((!WoW.TargetHasDebuff("MasterAssassinsInitiative")) || (WoW.TargetDebuffTimeRemaining("Nightblade") < WoW.PlayerBuffTimeRemaining("MasterAssassinsInitiative"))) && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("NightBlade");
                        return;
                    }
                    //Finisher Spell DeathFromAbove if HasBuff(SymbolsOfDeath) or CooldownSecRemaining(SymbolsOfDeath) > 10
                    if (WoW.CanCast("DeathFromAbove") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (WoW.PlayerHasBuff("SymbolsOfDeath") || WoW.SpellCooldownTimeRemaining("SymbolsOfDeath") > 10000) && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("DeathFromAbove");
                        return;
                    }
//Finisher Spell Eviscerate
                    if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade"))
                    {
                        WoW.CastSpell("Eviscerate");
                        return;
                    }
//InsideStealth Spell Shadowstrike
                    if (WoW.CanCast("ShurikenStorm") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 40 && WoW.CurrentComboPoints <= 5 && stealth)
                    {
                        WoW.CastSpell("ShurikenStorm");
                        return;
                    }
// Spell ShadowDance if TimerSecRemaining(DeathFromAbove) > 0 and HasTalent(DarkShadow)
                    if (WoW.CanCast("ShadowDance") && WoW.Talent(6) == 1 && WoW.LastSpell == "DeathFromAbove")
                    {
                        WoW.CastSpell("ShadowDance");
                        return;
                    }
//StealthCooldowns Spell ShadowDance
                    if (WoW.CanCast("ShadowDance"))
                    {
                        WoW.CastSpell("ShadowDance");
                        return;
                    }
//Builder Spell Backstab
                    if (WoW.CanCast("ShurikenStorm") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 35 && WoW.IsSpellInRange("NightBlade"))
                    {
                        WoW.CastSpell("ShurikenStorm");
                        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;
                    }
                }
            }
        }
Ejemplo n.º 19
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.CanCast("Summon Water Elemental") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.HasPet)
                {
                    WoW.CastSpell("Summon Water Elemental");
                    return;
                }

                if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Invisibility"))

                {
                    //Movement Control
                    if (WoW.CanCast("Ice Floes") && WoW.IsMoving && !WoW.PlayerHasBuff("Ice Floes"))
                    {
                        WoW.CastSpell("Ice Floes");
                    }
                    //Insta-Cast Flurry on Proc and ice lance for shatter.
                    if (WoW.CanCast("Flurry") && WoW.PlayerHasBuff("Brain Freeze"))
                    {
                        WoW.CastSpell("Flurry");
                    }
                    if (WoW.CanCast("Ice Lance") && WoW.WasLastCasted("Flurry") && WoW.PlayerHasBuff("Icy Veins"))
                    {
                        WoW.CastSpell("Ice Lance");
                    }
                    //RoP Control
                    if (WoW.CanCast("Rune of Power") && !WoW.PlayerHasBuff("Rune of Power") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 120)
                    {
                        WoW.CastSpell("Rune of Power");
                        return;
                    }
                    //Ray of Frost control
                    if (WoW.CanCast("Ray of Frost") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Rune of Power") == 0 && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 60)
                    {
                        WoW.CastSpell("Ray of Frost");
                    }

                    // FoF Creation
                    if (WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 30 && !WoW.WasLastCasted("Flurry"))
                    {
                        if (WoW.CanCast("Frozen Orb") && !WoW.IsSpellOnCooldown("Frozen Orb") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 60)
                        {
                            WoW.CastSpell("Frozen Orb");
                        }
                        if (WoW.CanCast("Frozen Touch") && WoW.PlayerBuffStacks("Fingers of Frost") <= 1 && WoW.IsSpellOnCooldown("Frozen Orb") && !WoW.WasLastCasted("Frozen Orb"))
                        {
                            WoW.CastSpell("Frozen Touch");
                        }

                        if (WoW.CanCast("Ebonbolt") && !WoW.PlayerHasBuff("Fingers of Frost") && !WoW.PlayerHasBuff("Brain Freeze") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 45)
                        {
                            WoW.CastSpell("Ebonbolt");
                            return;
                        }
                        //Waterjet on cooldown within parameters
                        if (WoW.CanCast("Water Jet") && WoW.PlayerBuffStacks("Fingers of Frost") <= 1 && !WoW.WasLastCasted("Frozen Touch") && !WoW.WasLastCasted("Frozen Orb") &&
                            WoW.IsSpellOnCooldown("Frozen Orb") && WoW.IsSpellOnCooldown("Frozen Touch"))
                        {
                            WoW.CastSpell("Water Jet");
                        }
                        if (WoW.CanCast("Frostbolt") && WoW.TargetHasDebuff("Water Jet"))
                        {
                            WoW.CastSpell("Frostbolt");
                            return;
                        }
                    }
                    //Ice Lance Control
                    if (WoW.CanCast("Ice Lance") && WoW.WasLastCasted("Frostbolt") && WoW.PlayerHasBuff("Chain Reaction") && WoW.PlayerBuffStacks("Chain Reaction") >= 1 &&
                        WoW.PlayerHasBuff("Fingers of Frost") && WoW.PlayerBuffStacks("Fingers of Frost") >= 2)
                    {
                        WoW.CastSpell("Ice Lance");
                    }
                    if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Fingers of Frost") == 3)
                    {
                        WoW.CastSpell("Ice Lance");
                    }

                    if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Fingers of Frost") >= 1 && WoW.WasLastCasted("Ice Lance"))
                    {
                        WoW.CastSpell("Ice Lance");
                    }
                    if (WoW.CanCast("Ice Lance") && !WoW.PlayerHasBuff("Brain Freeze") && WoW.WasLastCasted("Flurry"))
                    {
                        WoW.CastSpell("Ice Lance");
                    }
                    if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.PlayerHasBuff("Fingers of Frost") && WoW.PlayerBuffStacks("Fingers of Frost") >= 1)
                    {
                        WoW.CastSpell("Ice Lance");
                        return;
                    }
                    //Frostbolt Control
                    if (!WoW.PlayerHasBuff("Brain Freeze") && !WoW.WasLastCasted("Flurry"))
                    {
                        if (WoW.CanCast("Frostbolt") && !WoW.PlayerHasBuff("Fingers of Frost") && !WoW.WasLastCasted("Frostbolt"))
                        {
                            WoW.CastSpell("Frostbolt");
                            return;
                        }

                        if (WoW.CanCast("Frostbolt") && WoW.PlayerBuffStacks("Chain Reaction") <= 2 && !WoW.WasLastCasted("Frostbolt"))
                        {
                            WoW.CastSpell("Frostbolt");
                            return;
                        }
                        if (WoW.CanCast("Frostbolt") && WoW.PlayerHasBuff("Chain Reaction") && WoW.PlayerBuffStacks("Chain Reaction") == 3 && WoW.PlayerBuffTimeRemaining("Chain Reaction") <= 2)
                        {
                            WoW.CastSpell("Frostbolt");
                            return;
                        }
                    }

                    //Frost Bomb - i dont use
                    //if	((WoW.CanCast("Frost Bomb")&&WoW.PlayerHasBuff("Fingers of Frost")&&WoW.PlayerBuffStacks("Fingers of Frost") == 2)&&!WoW.TargetHasDebuff("Frost Bomb")&&!WoW.WasLastCasted("Ice Lance")&&!WoW.WasLastCasted("Rune of Power"))
                    //		{
                    //		WoW.CastSpell("Frost Bomb");
                    //		return;
                    //		}
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (combatRoutine.Type == RotationType.SingleTargetCleave)
                {
                    // Do Single Target Cleave stuff here if applicable else ignore this one
                }
            }
        }
Ejemplo n.º 20
0
 public override void Pulse()
 {
     if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsVisible && !WoW.IsMounted)
     {
         if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave)
         {
             if (WoW.CanCast("UnendingResolve") && WoW.HealthPercent <= 20 && WoW.HealthPercent != 0)
             {
                 WoW.CastSpell("UnendingResolve");
                 return;
             }
             if (WoW.CanCast("Healthstone") && WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.HealthPercent <= 30 && WoW.HealthPercent != 0)
             {
                 WoW.CastSpell("Healthstone");
                 return;
             }
             if (WoW.CanCast("DoomGuard") && !WoW.IsSpellOnCooldown("DoomGuard") && (WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || WoW.Talent(4) != 3) && UseCooldowns)
             {
                 WoW.CastSpell("DoomGuard");
                 return;
             }
             if (WoW.CanCast("Soul Harvest") && !WoW.IsMoving && UseCooldowns && !WoW.IsSpellOnCooldown("Soul Harvest") && WoW.CurrentSoulShards >= 4 && WoW.Talent(4) == 3)
             {
                 WoW.CastSpell("Soul Harvest");
                 return;
             }
             if (WoW.CanCast("Berserk") && UseCooldowns && !WoW.IsSpellOnCooldown("Berserk") && WoW.PlayerRace == "Troll")
             {
                 WoW.CastSpell("Berserk");
                 return;
             }
             if (WoW.CanCast("Havoc") && !WoW.IsSpellOnCooldown("Havoc") && Control.ModifierKeys == Keys.Alt)                     // you will need a mouseover macro
             {
                 WoW.CastSpell("Havoc");
                 return;
             }
             if (!WoW.IsMoving)
             {
                 if (WoW.CanCast("Life Tap") && !WoW.PlayerHasBuff("Life Tap") && WoW.HealthPercent >= 40 && WoW.Talent(2) == 3)
                 {
                     WoW.CastSpell("Life Tap");
                     return;
                 }
                 if ((!WoW.TargetHasDebuff("Immolate") || WoW.TargetDebuffTimeRemaining("Immolate") <= 420) && !WoW.WasLastCasted("Immolate") && WoW.CanCast("Immolate"))
                 {
                     WoW.CastSpell("Immolate");
                     return;
                 }
                 if (WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") == 3)
                 {
                     WoW.CastSpell("DimRift");
                     return;
                 }
                 if (WoW.CanCast("Channel Demonfire") && !WoW.IsSpellOnCooldown("Channel Demonfire") && WoW.TargetHasDebuff("Immolate") && WoW.TargetDebuffTimeRemaining("Immolate") >= 500 && WoW.Talent(7) == 2)
                 {
                     WoW.CastSpell("Channel Demonfire");
                     return;
                 }
                 if (WoW.TargetDebuffTimeRemaining("Immolate") >= 1000 && WoW.CanCast("Conflagrate"))
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
                 if (WoW.TargetDebuffTimeRemaining("Immolate") >= 1000 && WoW.PlayerSpellCharges("Conflagrate") == 1 && WoW.WasLastCasted("Conflagrate") && WoW.CanCast("Conflagrate"))
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
                 if (WoW.PlayerHasBuff("Conflagrate") && WoW.TargetHasDebuff("ChaosBolt") && WoW.CanCast("Conflagrate") && WoW.CurrentSoulShards <= 4 && WoW.CanCast("Conflagrate"))
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
                 if (WoW.CanCast("Conflagrate") && WoW.PlayerSpellCharges("Conflagrate") == 2 && !WoW.WasLastCasted("Immolate") && WoW.CurrentSoulShards <= 4)
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
                 if (WoW.CanCast("ServiceImp") && WoW.CurrentSoulShards >= 1 && (UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns))
                 {
                     WoW.CastSpell("ServiceImp");
                     return;
                 }
                 if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards > 3 && (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") >= 500 && WoW.Talent(4) == 3 || UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns))
                 {
                     WoW.CastSpell("ChaosBolt");
                     return;
                 }
                 if (WoW.CanCast("DimRift") && !WoW.IsSpellOnCooldown("DimRift") && WoW.PlayerSpellCharges("DimRift") <= 2)
                 {
                     WoW.CastSpell("DimRift");
                     return;
                 }
                 if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards >= 2 && (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") >= 500 && WoW.Talent(4) == 3 || UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns))
                 {
                     WoW.CastSpell("ChaosBolt");
                     return;
                 }
                 if (WoW.CanCast("Incinerate") && WoW.CurrentSoulShards <= 1 || (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") <= 500 && WoW.CurrentSoulShards < 4 && WoW.Talent(4) == 3))
                 {
                     WoW.CastSpell("Incinerate");
                     return;
                 }
                 if (WoW.CanCast("Incinerate") && WoW.TargetHasDebuff("ChaosBolt") && WoW.TargetDebuffTimeRemaining("ChaosBolt") >= 200 && WoW.CurrentSoulShards <= 3)
                 {
                     WoW.CastSpell("Incinerate");
                     return;
                 }
             }
             if (WoW.IsMoving)
             {
                 if (WoW.CanCast("DimRift"))
                 {
                     WoW.CastSpell("DimRift");
                     return;
                 }
                 if (WoW.CanCast("Conflagrate"))
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
             }
         }
     }
 }
        /// <summary>
        ///     Get whether we can cast spells based on what the player is currently doing.
        /// </summary>
        /// <param name="ignoreMovement">Can we ignore movement</param>
        /// <param name="ignoreChanneling"></param>
        /// <returns>True if we can not currently cast another spell.</returns>
        private bool isPlayerBusy(bool ignoreMovement = false, bool ignoreChanneling = true)
        {
            var canCast = WoW.PlayerIsCasting || (WoW.PlayerIsChanneling && !(ignoreChanneling && !WoW.WasLastCasted(VOID_TORRENT))) || (WoW.IsMoving && ignoreMovement);

            return(canCast);
        }
        public override void Pulse()
        {
            //Combat Time
            if (CombatTime.IsRunning && !WoW.IsInCombat)
            {
                CombatTime.Reset();
            }
            if (!CombatTime.IsRunning && WoW.IsInCombat)
            {
                CombatTime.Start();
            }

            if (!WoW.PlayerHasBuff("HitCombo"))
            {
                HitCombo = "";
            }

            if (!WoW.IsInCombat || (!WoW.TargetHasDebuff("TouchOfDeath") && !WoW.PlayerHasBuff("Serenity")) || (IsOpenerDone && !Serenity))
            {
                OpenerOrder = 1;
            }

            var EnergyPct = WoW.Energy / EnergyMax * 100f;

            // Single Target Rotation
            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                //Log.Write($"[HitCombo] '{HitCombo}'");
                //Stop Casting CJL
                if (HitCombo == "CracklingJadeLightning" && WoW.PlayerIsChanneling)
                {
                    WoW.CastSpell("StopCasting");
                    return;
                }

                //Cooldowns
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                {
                    //Touch Of Death
                    if (WoW.CanCast("TouchOfDeath") && WoW.IsSpellInRange("TigerPalm") && !GaleBurst && UseCooldowns)
                    {
                        WoW.CastSpell("TouchOfDeath");
                        HitCombo = "TouchOfDeath";
                        return;
                    }

                    //Touch Of Death (Serenity talent) [Gale]
                    if (WoW.CanCast("TouchOfDeath") && WoW.IsSpellInRange("TigerPalm") && WoW.SpellCooldownTimeRemaining("Serenity") < 2 && WoW.SpellCooldownTimeRemaining("RisingSunKick") < 2 &&
                        WoW.SpellCooldownTimeRemaining("FistsOfFury") < 8 && WoW.SpellCooldownTimeRemaining("StrikeOfTheWindlord") <= 4 && Serenity && GaleBurst && WoW.CurrentChi >= 2 &&
                        UseCooldowns)
                    {
                        WoW.CastSpell("TouchOfDeath");
                        HitCombo = "TouchOfDeath";
                        return;
                    }

                    //Touch Of Death (WDP talent) [Gale]
                    if (WoW.CanCast("TouchOfDeath") && WoW.IsSpellInRange("TigerPalm") && WoW.SpellCooldownTimeRemaining("RisingSunKick") < 7 &&
                        WoW.SpellCooldownTimeRemaining("FistsOfFury") <= 4 && WoW.SpellCooldownTimeRemaining("StrikeOfTheWindlord") < 8 && !Serenity && GaleBurst && WoW.CurrentChi >= 2 &&
                        UseCooldowns)
                    {
                        WoW.CastSpell("TouchOfDeath");
                        HitCombo = "TouchOfDeath";
                        return;
                    }

                    //Serenity
                    if (WoW.CanCast("Serenity") && WoW.IsSpellInRange("TigerPalm") && (WoW.IsSpellOnCooldown("TouchOfDeath") || WoW.TargetHasDebuff("TouchOfDeath")) &&
                        WoW.SpellCooldownTimeRemaining("FistsOfFury") < 15 && WoW.SpellCooldownTimeRemaining("StrikeOfTheWindlord") < 13 && !WoW.IsSpellOnCooldown("RisingSunKick") && Serenity &&
                        UseCooldowns)
                    {
                        WoW.CastSpell("Serenity");
                        return;
                    }

                    //SEF (Opener not done)
                    if (WoW.CanCast("SEF") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2 && !IsOpenerDone && !WoW.PlayerHasBuff("SEF") && !Serenity && UseCooldowns)
                    {
                        WoW.CastSpell("SEF");
                        return;
                    }

                    //SEF
                    if (WoW.CanCast("SEF") && WoW.IsSpellInRange("TigerPalm") && IsOpenerDone && (WoW.IsSpellOnCooldown("TouchOfDeath") || WoW.TargetHasDebuff("TouchOfDeath")) &&
                        WoW.SpellCooldownTimeRemaining("FistsOfFury") <= 6 && WoW.SpellCooldownTimeRemaining("StrikeOfTheWindlord") <= 14 &&
                        WoW.SpellCooldownTimeRemaining("RisingSunKick") <= 6 && !WoW.PlayerHasBuff("SEF") && !Serenity &&
                        (!WoW.IsSpellOnCooldown("EnergizingElixir") || WoW.PlayerSpellCharges("SEF") == 2 || WoW.TargetHasDebuff("TouchOfDeath")) && UseCooldowns)
                    {
                        WoW.CastSpell("SEF");
                        return;
                    }

                    //Energizing Elixir
                    if (WoW.CanCast("EnergizingElixir") && WoW.IsSpellInRange("TigerPalm") && IsOpenerDone && WoW.PlayerHasBuff("SEF"))
                    {
                        WoW.CastSpell("EnergizingElixir");
                        return;
                    }

                    //Energizing Elixir
                    if (WoW.CanCast("EnergizingElixir") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy < EnergyMax && (IsOpenerDone || !Serenity) && WoW.CurrentChi <= 1 &&
                        (!WoW.IsSpellOnCooldown("StrikeOfTheWindlord") || !WoW.IsSpellOnCooldown("RisingSunKick")))
                    {
                        WoW.CastSpell("EnergizingElixir");
                        return;
                    }
                }

                //Serenity Opener (With Touch of Death)
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Serenity") &&
                    WoW.TargetHasDebuff("TouchOfDeath"))
                {
                    //Rising Sun Kick
                    if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 1)
                    {
                        WoW.CastSpell("RisingSunKick");
                        HitCombo    = "RisingSunKick";
                        OpenerOrder = 2;
                        return;
                    }

                    //Strike Of The Windlord
                    if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 2)
                    {
                        WoW.CastSpell("StrikeOfTheWindlord");
                        HitCombo    = "StrikeOfTheWindlord";
                        OpenerOrder = 3;
                        return;
                    }

                    //Fists of Fury
                    if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 3)
                    {
                        WoW.CastSpell("FistsOfFury");
                        HitCombo    = "FistsOfFury";
                        OpenerOrder = 4;
                        return;
                    }

                    //Rising Sun Kick
                    if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 4)
                    {
                        WoW.CastSpell("RisingSunKick");
                        HitCombo    = "RisingSunKick";
                        OpenerOrder = 5;
                        return;
                    }

                    //Spinning Crane Kick
                    if (WoW.CanCast("SpinningCraneKick") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 5)
                    {
                        WoW.CastSpell("SpinningCraneKick");
                        HitCombo    = "SpinningCraneKick";
                        OpenerOrder = 6;
                        return;
                    }

                    //Blackout Kick
                    if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "BlackoutKick" && OpenerOrder == 6)
                    {
                        WoW.CastSpell("BlackoutKick");
                        HitCombo = "BlackoutKick";
                        return;
                    }
                }

                //WDP Opener
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("SEF") && WoW.TargetHasDebuff("TouchOfDeath") &&
                    !IsOpenerDone)
                {
                    //Rising Sun Kick
                    if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 1)
                    {
                        WoW.CastSpell("RisingSunKick");
                        HitCombo    = "RisingSunKick";
                        OpenerOrder = 2;
                        return;
                    }

                    //Energizing Elixir
                    if (WoW.CanCast("EnergizingElixir") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 2)
                    {
                        WoW.CastSpell("EnergizingElixir");
                        OpenerOrder = 3;
                        return;
                    }

                    //Fists of Fury
                    if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 3)
                    {
                        WoW.CastSpell("FistsOfFury");
                        HitCombo    = "FistsOfFury";
                        OpenerOrder = 4;
                        return;
                    }

                    //Strike Of The Windlord
                    if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 4)
                    {
                        WoW.CastSpell("StrikeOfTheWindlord");
                        HitCombo    = "StrikeOfTheWindlord";
                        OpenerOrder = 5;
                        return;
                    }

                    //Tiger Palm
                    if (WoW.CanCast("TigerPalm") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "TigerPalm" && OpenerOrder == 5)
                    {
                        WoW.CastSpell("TigerPalm");
                        HitCombo    = "TigerPalm";
                        OpenerOrder = 6;
                        return;
                    }

                    //Whirling Dragon Punch
                    if (WoW.CanCast("WhirlingDragonPunch") && WoW.IsSpellInRange("TigerPalm") && WoW.IsSpellOnCooldown("FistsOfFury") && WoW.IsSpellOnCooldown("RisingSunKick") &&
                        OpenerOrder == 6)
                    {
                        WoW.CastSpell("WhirlingDragonPunch");
                        HitCombo     = "WhirlingDragonPunch";
                        IsOpenerDone = true;
                        return;
                    }
                }

                //Serenity Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Serenity") &&
                    !WoW.TargetHasDebuff("TouchOfDeath"))
                {
                    //Strike Of The Windlord
                    if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm"))
                    {
                        WoW.CastSpell("StrikeOfTheWindlord");
                        HitCombo = "StrikeOfTheWindlord";
                        WasStrikeOfTheWindlordCasted = true;
                        return;
                    }

                    //Rising Sun Kick
                    if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm"))
                    {
                        WoW.CastSpell("RisingSunKick");
                        HitCombo = "RisingSunKick";
                        return;
                    }

                    //Fists of Fury
                    if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && WasStrikeOfTheWindlordCasted && WoW.PlayerBuffTimeRemaining("Serenity") <= 2)
                    {
                        WoW.CastSpell("FistsOfFury");
                        HitCombo = "FistsOfFury";
                        WasStrikeOfTheWindlordCasted = false;
                        return;
                    }

                    //Spinning Crane Kick
                    if (WoW.CanCast("SpinningCraneKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "SpinningCraneKick" && (HitCombo == "BlackoutKick" || OpenerOrder == 5))
                    {
                        WoW.CastSpell("SpinningCraneKick");
                        HitCombo = "SpinningCraneKick";
                        return;
                    }

                    //Blackout Kick
                    if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "BlackoutKick")
                    {
                        WoW.CastSpell("BlackoutKick");
                        HitCombo = "BlackoutKick";
                        return;
                    }
                }

                // Normal Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Serenity") &&
                    (!WoW.TargetHasDebuff("TouchOfDeath") || !Serenity))
                {
                    //Fists of Fury
                    if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && (WoW.CurrentChi >= 3 || (Katsuo && WoW.CurrentChi >= 1)) && !WoW.WasLastCasted("EnergizingElixir"))
                    {
                        WoW.CastSpell("FistsOfFury");
                        HitCombo = "FistsOfFury";
                        return;
                    }

                    //Strike Of The Windlord
                    if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2)
                    {
                        WoW.CastSpell("StrikeOfTheWindlord");
                        HitCombo = "StrikeOfTheWindlord";
                        return;
                    }

                    //Tiger Palm (if <4 Chi and about to cap energy)
                    if (WoW.CanCast("TigerPalm") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 50 && EnergyPct > 90 && !WoW.WasLastCasted("EnergizingElixir") && WoW.CurrentChi < 4 &&
                        HitCombo != "TigerPalm")
                    {
                        WoW.CastSpell("TigerPalm");
                        HitCombo = "TigerPalm";
                        return;
                    }

                    //Rising Sun Kick
                    if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2)
                    {
                        WoW.CastSpell("RisingSunKick");
                        HitCombo = "RisingSunKick";
                        return;
                    }

                    //Whirling Dragon Punch
                    if (WoW.CanCast("WhirlingDragonPunch") && WoW.IsSpellInRange("TigerPalm") && WoW.IsSpellOnCooldown("FistsOfFury") && WoW.IsSpellOnCooldown("RisingSunKick") && !Serenity)
                    {
                        WoW.CastSpell("WhirlingDragonPunch");
                        HitCombo = "WhirlingDragonPunch";
                        return;
                    }

                    //Chi Wave
                    if (WoW.CanCast("ChiWave") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy < 50 && WoW.CurrentChi < 5 && !WoW.PlayerHasBuff("SEF"))
                    {
                        WoW.CastSpell("ChiWave");
                        HitCombo = "ChiWave";
                        return;
                    }

                    //Blackout Kick
                    if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && (WoW.CurrentChi > 1 || WoW.PlayerHasBuff("BlackoutKick!")) && HitCombo != "BlackoutKick")
                    {
                        WoW.CastSpell("BlackoutKick");
                        HitCombo = "BlackoutKick";
                        return;
                    }

                    //Tiger Palm
                    if (WoW.CanCast("TigerPalm") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 50 && HitCombo != "TigerPalm")
                    {
                        WoW.CastSpell("TigerPalm");
                        HitCombo = "TigerPalm";
                        return;
                    }

                    //CracklingJadeLightning (only to counter the Tiger Palm issue)
                    if (WoW.CanCast("CracklingJadeLightning") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 20 && HitCombo == "TigerPalm" && WoW.CurrentChi == 0)
                    {
                        WoW.CastSpell("CracklingJadeLightning");
                        HitCombo = "CracklingJadeLightning";
                        return;
                    }
                }
            }

            // AoE Rotation
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (HitCombo == "CracklingJadeLightning" && WoW.PlayerIsChanneling)
                {
                    WoW.CastSpell("StopCasting");
                    return;
                }

                //Cooldowns
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                {
                    //Energizing Elixir
                    if (WoW.CanCast("EnergizingElixir") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy < EnergyMax && WoW.CurrentChi <= 1 &&
                        (!WoW.IsSpellOnCooldown("StrikeOfTheWindlord") || !WoW.IsSpellOnCooldown("RisingSunKick")))
                    {
                        WoW.CastSpell("EnergizingElixir");
                        return;
                    }
                }

                //Serenity Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Serenity"))
                {
                    //Strike Of The Windlord
                    if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm"))
                    {
                        WoW.CastSpell("StrikeOfTheWindlord");
                        HitCombo = "StrikeOfTheWindlord";
                        WasStrikeOfTheWindlordCasted = true;
                        return;
                    }

                    //Rising Sun Kick
                    if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm"))
                    {
                        WoW.CastSpell("RisingSunKick");
                        HitCombo = "RisingSunKick";
                        return;
                    }

                    //Fists of Fury
                    if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && WasStrikeOfTheWindlordCasted && WoW.PlayerBuffTimeRemaining("Serenity") <= 2)
                    {
                        WoW.CastSpell("FistsOfFury");
                        HitCombo = "FistsOfFury";
                        WasStrikeOfTheWindlordCasted = false;
                        return;
                    }

                    //Spinning Crane Kick
                    if (WoW.CanCast("SpinningCraneKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "SpinningCraneKick" && (HitCombo == "BlackoutKick" || OpenerOrder == 5))
                    {
                        WoW.CastSpell("SpinningCraneKick");
                        HitCombo = "SpinningCraneKick";
                        return;
                    }

                    //Blackout Kick
                    if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "BlackoutKick")
                    {
                        WoW.CastSpell("BlackoutKick");
                        HitCombo = "BlackoutKick";
                        return;
                    }
                }

                // Normal Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Serenity") &&
                    (!WoW.TargetHasDebuff("TouchOfDeath") || !Serenity))
                {
                    //Fists of Fury
                    if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && (WoW.CurrentChi >= 3 || (Katsuo && WoW.CurrentChi >= 1)) && !WoW.WasLastCasted("EnergizingElixir"))
                    {
                        WoW.CastSpell("FistsOfFury");
                        HitCombo = "FistsOfFury";
                        return;
                    }

                    //Whirling Dragon Punch
                    if (WoW.CanCast("WhirlingDragonPunch") && WoW.IsSpellInRange("TigerPalm") && WoW.IsSpellOnCooldown("FistsOfFury") && WoW.IsSpellOnCooldown("RisingSunKick") && !Serenity)
                    {
                        WoW.CastSpell("WhirlingDragonPunch");
                        HitCombo = "WhirlingDragonPunch";
                        return;
                    }

                    //Strike Of The Windlord
                    if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2)
                    {
                        WoW.CastSpell("StrikeOfTheWindlord");
                        HitCombo = "StrikeOfTheWindlord";
                        return;
                    }

                    //Rising Sun Kick
                    if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2 && !Serenity && WoW.SpellCooldownTimeRemaining("WhirlingDragonPunch") < gcd * 2 &&
                        WoW.IsSpellOnCooldown("FistsOfFury"))
                    {
                        WoW.CastSpell("RisingSunKick");
                        HitCombo = "RisingSunKick";
                        return;
                    }

                    //Spinning Crane Kick
                    if (WoW.CanCast("SpinningCraneKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "SpinningCraneKick" && WoW.CurrentChi >= 3)
                    {
                        WoW.CastSpell("SpinningCraneKick");
                        HitCombo = "SpinningCraneKick";
                        return;
                    }

                    //Chi Wave
                    if (WoW.CanCast("ChiWave") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy < 50 && WoW.CurrentChi < 5 && !WoW.PlayerHasBuff("SEF") && HitCombo == "TigerPalm")
                    {
                        WoW.CastSpell("ChiWave");
                        HitCombo = "ChiWave";
                        return;
                    }

                    //Blackout Kick
                    if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && (WoW.CurrentChi > 1 || WoW.PlayerHasBuff("BlackoutKick!")) && HitCombo != "BlackoutKick" &&
                        (HitCombo == "TigerPalm" || !WoW.TargetHasDebuff("MotC")))
                    {
                        WoW.CastSpell("BlackoutKick");
                        HitCombo = "BlackoutKick";
                        return;
                    }

                    //Tiger Palm
                    if (WoW.CanCast("TigerPalm") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 50 && HitCombo != "TigerPalm")
                    {
                        WoW.CastSpell("TigerPalm");
                        HitCombo = "TigerPalm";
                        return;
                    }

                    //CracklingJadeLightning (only to counter the Tiger Palm issue)
                    if (WoW.CanCast("CracklingJadeLightning") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 20 && HitCombo == "TigerPalm" && WoW.CurrentChi == 0)
                    {
                        WoW.CastSpell("CracklingJadeLightning");
                        HitCombo = "CracklingJadeLightning";
                    }
                }
            }
        }
Ejemplo n.º 23
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.CanCast("Summon Water Elemental") && WoW.Talent(1) != 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.HasPet)
                {
                    WoW.CastSpell("Summon Water Elemental");
                    return;
                }

                if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Invisibility"))

                {
                    //Movement Control

                    //Insta-Cast Flurry on Proc and ice lance for shatter.
                    if (WoW.CanCast("Flurry") && WoW.PlayerHasBuff("Brain Freeze"))
                    {
                        WoW.CastSpell("Flurry");
                    }
                    if (WoW.CanCast("Ice Lance") && WoW.WasLastCasted("Flurry") && WoW.PlayerHasBuff("Icy Veins"))
                    {
                        WoW.CastSpell("Ice Lance");
                    }

                    // FoF Creation
                    if (WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 30 && !WoW.WasLastCasted("Flurry"))
                    {
                        if (WoW.CanCast("Frozen Orb") && !WoW.IsSpellOnCooldown("Frozen Orb") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 60)
                        {
                            WoW.CastSpell("Frozen Orb");
                        }
                        if (WoW.CanCast("Blizzard") && WoW.PlayerHasBuff("Free Blizzard"))
                        {
                            WoW.CastSpell("Blizzard");
                            return;
                        }
                        if (WoW.CanCast("Frozen Touch") && !WoW.IsMoving && WoW.PlayerBuffStacks("Fingers of Frost") <= 1 && WoW.IsSpellOnCooldown("Frozen Orb") && !WoW.WasLastCasted("Frozen Orb"))
                        {
                            WoW.CastSpell("Frozen Touch");
                        }

                        if (WoW.CanCast("Ebonbolt") && !WoW.IsMoving && !WoW.PlayerHasBuff("Fingers of Frost") && !WoW.PlayerHasBuff("Brain Freeze") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 45)
                        {
                            WoW.CastSpell("Ebonbolt");
                            return;
                        }
                    }
                    //Ice Lance Control
                    if (WoW.CanCast("Ice Lance") && WoW.WasLastCasted("Frostbolt") && WoW.PlayerHasBuff("Chain Reaction") && WoW.PlayerBuffStacks("Chain Reaction") >= 1 &&
                        WoW.PlayerHasBuff("Fingers of Frost") && WoW.PlayerBuffStacks("Fingers of Frost") >= 2)
                    {
                        WoW.CastSpell("Ice Lance");
                    }
                    if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Fingers of Frost") == 3)
                    {
                        WoW.CastSpell("Ice Lance");
                    }

                    if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Fingers of Frost") >= 1 && WoW.WasLastCasted("Ice Lance"))
                    {
                        WoW.CastSpell("Ice Lance");
                    }
                    if (WoW.CanCast("Ice Lance") && !WoW.PlayerHasBuff("Brain Freeze") && WoW.WasLastCasted("Flurry"))
                    {
                        WoW.CastSpell("Ice Lance");
                    }
                    if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.PlayerHasBuff("Fingers of Frost") && WoW.PlayerBuffStacks("Fingers of Frost") >= 1)
                    {
                        WoW.CastSpell("Ice Lance");
                        return;
                    }
                    //Frostbolt Control
                    if (!WoW.PlayerHasBuff("Brain Freeze") && !WoW.WasLastCasted("Flurry") && !WoW.IsMoving)
                    {
                        if (WoW.CanCast("Frostbolt") && !WoW.PlayerHasBuff("Fingers of Frost") && !WoW.WasLastCasted("Frostbolt"))
                        {
                            WoW.CastSpell("Frostbolt");
                            return;
                        }

                        if (WoW.CanCast("Frostbolt") && WoW.PlayerBuffStacks("Chain Reaction") <= 2 && !WoW.WasLastCasted("Frostbolt"))
                        {
                            WoW.CastSpell("Frostbolt");
                            return;
                        }
                        if (WoW.CanCast("Frostbolt") && WoW.PlayerHasBuff("Chain Reaction") && WoW.PlayerBuffStacks("Chain Reaction") == 3 && WoW.PlayerBuffTimeRemaining("Chain Reaction") <= 2)
                        {
                            WoW.CastSpell("Frostbolt");
                            return;
                        }
                    }
                    if (!WoW.PlayerHasBuff("Brain Freeze") && !WoW.WasLastCasted("Flurry") && WoW.IsMoving)
                    {
                        if (WoW.CanCast("Ice Lance"))
                        {
                            WoW.CastSpell("Ice Lance");
                        }
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (combatRoutine.Type == RotationType.SingleTargetCleave)
                {
                    // Do Single Target Cleave stuff here if applicable else ignore this one
                }
            }
        }
Ejemplo n.º 24
0
        /* public static List<DateTime> imps = new List<DateTime>();
         *
         *      public static bool ImpCounting()
         *      {
         *              if (!WoW.IsInCombat && imps.Any())
         *              {
         *                      imps.Clear(); // to clear list when out of combat
         *                      return true;
         *              }
         *
         *              if (WoW.WasLastCasted("HoG"))
         *              {
         *                      imps.Add(DateTime.UtcNow); // to add new entry
         *                      return true;
         *              }
         *              return true;
         *      }
         *
         *      public static int CountImpPacks
         *      {
         *              get
         *              {
         *                      if (imps.Any())
         *                      {
         *                              return imps.Count(i => i.AddSeconds(10) > DateTime.UtcNow);
         *                      }
         *                      return 0;
         *              }
         *      } */

        /* imps.Count(i => i.AddSeconds(10) > DateTime.UtcNow); */

        public override void Pulse()
        {
            /* Log.Write("Starting.....", Color.Red); */
            /* Place to check target's (boss) buffs/debuffs in order to stop casting */

            /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.TargetHasBuff("Focusing")) return; */

            if (WoW.PlayerHasBuff("Mount"))
            {
                return;
            }

            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                if (CombatWatch.IsRunning && !WoW.IsInCombat)
                {
                    CombatWatch.Reset();
                }
                if (!CombatWatch.IsRunning && WoW.IsInCombat)
                {
                    CombatWatch.Start();
                }

                /* if (CombatWatch.IsRunning && CombatWatch.ElapsedMilliseconds > 5000)
                 *                      {
                 *                      Log.Write ("CombatWatch > 5 seconds");
                 *                      } */


                /* if (WoW.IsInCombat && WoW.HealthPercent<30 && WoW.CanCast("Healthstone") && WoW.PlayerSpellCharges("Healthstone") >= 1 && !WoW.IsSpellOnCooldown("Healthstone"))
                 *                      {
                 *                              WoW.CastSpellByName("Healthstone");
                 *                              return;
                 *                      } */

                PetBuffStatus();
                /* Log.Write ("Pets need buff: " + lastpetstatus); */

                /* impnumber = WoW.GetWildImpsCount();
                 *              dreadnumber = WoW.GetDreadstalkersCount(); */
                /* Log.Write ("Wild imps: " + WoW.GetWildImpsCount);
                 *              Log.Write ("Dreadretards: " + WoW.GetDreadstalkersCount); */


                if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.CanCast("Doomguard") && WoW.IsSpellInRange("Doomguard") &&
                    (WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("TimeWarp")) && WoW.CurrentSoulShards >= 1 && !WoW.IsSpellOnCooldown("Doomguard"))
                {
                    WoW.CastSpell("Doomguard");
                    return;
                }

                if (WoW.IsMoving) /* What to do if we are MOVING */
                {
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Shadowflame") == 1 && WoW.TargetHasDebuff("Shadowflame") &&
                        WoW.TargetDebuffTimeRemaining("Shadowflame") < 3 && WoW.CanCast("Shadowflame") && WoW.IsSpellInRange("Shadowflame"))
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && WoW.CanCast("Wrathstorm") && CombatWatch.ElapsedMilliseconds > 2000)
                    {
                        WoW.CastSpell("Wrathstorm");
                    }

                    if (!WoW.IsInCombat && WoW.Mana < 80 && WoW.HealthPercent > 75 && WoW.CanCast("Life Tap"))
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.Mana < 30 && WoW.HealthPercent > 65 && WoW.CanCast("Life Tap"))
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.CanCast("Shadowflame") && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling &&
                        WoW.PlayerSpellCharges("Shadowflame") == 2 && WoW.IsSpellInRange("Shadowflame"))
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.CanCast("Demonwrath") && WoW.HasPet && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Demonwrath");
                        return;
                    }
                }

                if (!WoW.IsMoving) /* What to do if we are NOT MOVING */
                {
                    /* double dur = WoW.TargetDebuffTimeRemaining("Shadowflame");
                     *                  Log.Write(System.Convert.ToString(dur), Color.Red); */
                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Shadowflame") == 1 && WoW.TargetHasDebuff("Shadowflame") &&
                        WoW.TargetDebuffTimeRemaining("Shadowflame") < 3 && WoW.IsSpellInRange("Shadowflame") && WoW.CanCast("Shadowflame"))
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && WoW.CanCast("Wrathstorm") && CombatWatch.ElapsedMilliseconds > 2000)
                    {
                        WoW.CastSpell("Wrathstorm");
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.IsSpellOnCooldown("Dreadstalkers") && WoW.CurrentSoulShards >= 2 &&
                        WoW.IsSpellInRange("Dreadstalkers") && WoW.CanCast("Dreadstalkers"))
                    {
                        WoW.CastSpell("Dreadstalkers");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("HoG") && WoW.CanCast("HoG"))
                    {
                        WoW.CastSpell("HoG");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && WoW.CurrentSoulShards >= 3 && WoW.IsSpellInRange("HoG") &&
                        WoW.WasLastCasted("Dreadstalkers") && WoW.CanCast("HoG"))
                    {
                        WoW.CastSpell("HoG");
                        return;
                    }

                    if (WoW.IsInCombat && !WoW.PlayerIsCasting && lastpetstatus && !WoW.WasLastCasted("DemonicEmpowerment") && WoW.CanCast("DemonicEmpowerment"))
                    {
                        WoW.CastSpell("DemonicEmpowerment");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !lastpetstatus && !WoW.IsSpellOnCooldown("TK") && WoW.CanCast("TK") &&
                        WoW.WildImpsCount >= 1 && WoW.DreadstalkersCount >= 1)
                    {
                        WoW.CastSpell("TK");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerSpellCharges("Shadowflame") == 2 &&
                        WoW.IsSpellInRange("Shadowflame") && WoW.CanCast("Shadowflame"))
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

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

                    if (WoW.CanCast("Demonbolt") && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && WoW.IsInCombat && WoW.IsSpellInRange("Shadowflame"))
                    {
                        WoW.CastSpell("Demonbolt");
                        return;
                    }


                    /* shadowflame,if=debuff.shadowflame.stack>0&remains<action.shadow_bolt.cast_time+travel_time   - DONE
                     *                  call_dreadstalkers,if=!talent.summon_darkglare.enabled&(spell_targets.implosion<3|!talent.implosion.enabled) - DONE
                     *                  hand_of_guldan,if=soul_shard>=4&!talent.summon_darkglare.enabled - DONE
                     *                  hand_of_guldan,if=soul_shard>=3&prev_gcd.call_dreadstalkers - DONE
                     *                  demonic_empowerment,if=wild_imp_no_de>3|prev_gcd.hand_of_guldan - DONE
                     *                  demonic_empowerment,if=dreadstalker_no_de>0|darkglare_no_de>0|doomguard_no_de>0|infernal_no_de>0|service_no_de>0 - DONE
                     *                  felguard:felstorm - DONE
                     *                  shadowflame,if=charges=2 - DONE
                     *                  thalkiels_consumption,if=(dreadstalker_remaining_duration>execute_time|talent.implosion.enabled&spell_targets.implosion>=3)&wild_imp_count>3&wild_imp_remaining_duration>execute_time - DONE
                     *                  life_tap,if=mana.pct<=30 - DONE
                     *                  demonbolt - DONE
                     *                  life_tap - NOT NEEDED CAN BE CAST OUT OF COMBAT MANUALLY + WE HAVE IT ON MOVING */
                }
            }
            if ((combatRoutine.Type == RotationType.AOE) || (combatRoutine.Type == RotationType.SingleTargetCleave))
            {
                if (WoW.IsMoving) /* AOE WHEN MOVING */
                {
                    if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsInCombat && WoW.WasLastCasted("HoG") && WoW.CanCast("Implosion"))
                    {
                        WoW.CastSpell("Implosion");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Shadowflame") == 1 && WoW.TargetHasDebuff("Shadowflame") &&
                        WoW.TargetDebuffTimeRemaining("Shadowflame") < 3 && WoW.CanCast("Shadowflame") && WoW.IsSpellInRange("Shadowflame"))
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }


                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && WoW.CanCast("Wrathstorm") && CombatWatch.ElapsedMilliseconds > 2000)
                    {
                        WoW.CastSpell("Wrathstorm");
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.CanCast("Shadowflame") && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling &&
                        WoW.PlayerSpellCharges("Shadowflame") == 2 && WoW.IsSpellInRange("Shadowflame"))
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    if (!WoW.IsInCombat && WoW.Mana < 80 && WoW.HealthPercent > 75 && WoW.CanCast("Life Tap"))
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }

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

                    if (WoW.IsInCombat && WoW.CanCast("Demonwrath") && WoW.HasTarget && WoW.HasPet && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Demonwrath");
                        return;
                    }
                }

                if (!WoW.IsMoving) /* AOE WHEN NOT MOVING */
                {
                    if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsInCombat && WoW.WasLastCasted("HoG") && WoW.CanCast("Implosion"))
                    {
                        WoW.CastSpell("Implosion");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Shadowflame") == 1 && WoW.TargetHasDebuff("Shadowflame") &&
                        WoW.TargetDebuffTimeRemaining("Shadowflame") < 3 && WoW.CanCast("Shadowflame") && WoW.IsSpellInRange("Shadowflame"))
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && WoW.CanCast("Wrathstorm") && CombatWatch.ElapsedMilliseconds > 2000)
                    {
                        WoW.CastSpell("Wrathstorm");
                    }

                    if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.CurrentSoulShards >= 3 && WoW.IsSpellInRange("HoG") && WoW.CanCast("HoG"))
                    {
                        WoW.CastSpell("HoG");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.HasTarget && WoW.CanCast("Shadowflame") && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling &&
                        WoW.PlayerSpellCharges("Shadowflame") == 2 && WoW.IsSpellInRange("Shadowflame"))
                    {
                        WoW.CastSpell("Shadowflame");
                        return;
                    }

                    if (!WoW.IsInCombat && WoW.Mana < 80 && WoW.HealthPercent > 75 && WoW.CanCast("Life Tap"))
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.Mana < 30 && WoW.HealthPercent > 65 && WoW.CanCast("Life Tap"))
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }

                    if (WoW.IsInCombat && WoW.CanCast("Demonwrath") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Demonwrath");
                    }
                }
            }
        }
        public override void Pulse() // Updated for Legion (tested and working for single target)
        {
            AddonCreationPulse();
            PlayerStats();
            AoEStuff();
            if (WoW.IsInCombat && !WoW.PlayerHasBuff("Mount"))
            {
                SelectRotation();
            }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
        public override void Pulse() // Updated for Legion (tested and working for single target)
        {
            if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted)
            {
                SelectRotation(4, 9999, 1);
            }

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

                    if ((WoW.CurrentSoulShards >= 3 || (WoW.CurrentSoulShards >= 2 && WoW.WasLastCasted("Unstable Affliction"))) &&
                        !WoW.IsMoving &&
                        WoW.CanCast("Unstable Affliction") &&
                        WoW.IsSpellInRange("Agony"))
                    {
                        WoW.CastSpell("Unstable Affliction");
                        Thread.Sleep(200);
                        return;
                    }

                    if ((WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction2") ||
                         WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction3") ||
                         WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction4") ||
                         WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction5") ||
                         WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction3") ||
                         WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction4") ||
                         WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction5") ||
                         WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction4") ||
                         WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction5") ||
                         WoW.TargetHasDebuff("Unstable Affliction4") && WoW.TargetHasDebuff("Unstable Affliction5") ||
                         WoW.PlayerBuffStacks("Reap Souls") >= 12) &&
                        !WoW.PlayerIsCasting &&
                        WoW.CanCast("Reap Souls") &&
                        !WoW.PlayerHasBuff("Deadwind Harvester") &&
                        WoW.PlayerHasBuff("Tormented Souls"))
                    {
                        WoW.CastSpell("Reap Souls");
                        return;
                    }

                    if (WoW.CanCast("Life Tap") && !WoW.PlayerIsChanneling && WoW.Talent(2) == 3 && !WoW.PlayerHasBuff("Empowered Life Tap"))
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }

                    if ((!WoW.TargetHasDebuff("Corruption") || WoW.TargetDebuffTimeRemaining("Corruption") <= 420) &&
                        (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Corruption") <= 150) &&
                        WoW.CanCast("Corruption") &&
                        WoW.IsSpellInRange("Agony"))
                    {
                        WoW.CastSpell("Corruption");
                        return;
                    }

                    if ((!WoW.TargetHasDebuff("Siphon Life") || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 420) &&
                        (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 150) &&
                        WoW.Talent(4) == 1 &&
                        WoW.CanCast("Siphon Life") &&
                        WoW.IsSpellInRange("Agony"))
                    {
                        WoW.CastSpell("Siphon Life");
                        return;
                    }

                    if (WoW.CanCast("Felhunter") && WoW.Talent(6) == 2 && !WoW.IsSpellOnCooldown("Felhunter") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting)
                    {
                        WoW.CastSpell("Felhunter");
                        return;
                    }

                    if (WoW.CanCast("Unstable Affliction") && !WoW.IsMoving && WoW.Talent(2) == 1 && !WoW.IsMoving && WoW.IsSpellInRange("Unstable Affliction") && !WoW.PlayerIsChanneling && WoW.CurrentSoulShards >= 1 &&
                        (!WoW.TargetHasDebuff("Unstable Affliction1") || !WoW.TargetHasDebuff("Unstable Affliction2") || !WoW.TargetHasDebuff("Unstable Affliction3") || !WoW.TargetHasDebuff("Unstable Affliction4") || !WoW.TargetHasDebuff("Unstable Affliction5") ||
                         (WoW.TargetDebuffTimeRemaining("Unstable Affliction1") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction2") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction3") <= 150) ||
                         (WoW.TargetDebuffTimeRemaining("Unstable Affliction4") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction5") <= 150)))
                    {
                        WoW.CastSpell("Unstable Affliction");
                        Thread.Sleep(200);
                        return;
                    }

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

                    if (WoW.CanCast("Haunt") && WoW.Talent(1) == 1 && !WoW.IsSpellOnCooldown("Haunt") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Haunt");
                        return;
                    }

                    if (WoW.CanCast("Drain Soul") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Drain Soul");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMounted) // Do AOE stuff here
                {
                    if (WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Agony") || (WoW.TargetDebuffTimeRemaining("Agony") <= 540)))
                    {
                        WoW.CastSpell("Agony");
                        return;
                    }

                    if (WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Corruption") || (WoW.TargetDebuffTimeRemaining("Corruption") <= 420)))
                    {
                        WoW.CastSpell("Corruption");
                        return;
                    }

                    if (WoW.CanCast("Seed of Corruption") && WoW.IsSpellInRange("Agony") && !WoW.TargetHasDebuff("Seed of Corruption") && !WoW.IsMoving && WoW.CurrentSoulShards >= 1)
                    {
                        WoW.CastSpell("Seed of Corruption");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
Ejemplo n.º 27
0
        public override void Pulse() // Updated for Legion (tested and working for single target)
        {
            if (WoW.CanCast("Healthstone") && WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.HealthPercent <= 60 && WoW.HealthPercent != 0 && WoW.IsInCombat)
            {
                WoW.CastSpell("Healthstone");
                return;
            }
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.IsMounted)
                {
                    if ((!WoW.TargetHasDebuff("Agony") || WoW.TargetDebuffTimeRemaining("Agony") <= 540) &&
                        (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Agony") <= 150) &&
                        WoW.CanCast("Agony") &&
                        WoW.IsSpellInRange("Agony"))
                    {
                        WoW.CastSpell("Agony");
                        return;
                    }
                    if ((WoW.CurrentSoulShards >= 3 || (WoW.CurrentSoulShards >= 2 && WoW.WasLastCasted("Unstable Affliction"))) &&
                        !WoW.IsMoving &&
                        WoW.CanCast("Unstable Affliction") &&
                        WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption"))
                    {
                        WoW.CastSpell("Unstable Affliction");
                        Thread.Sleep(200);
                        return;
                    }
                    if ((WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction2") ||
                         WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction3") ||
                         WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction4") ||
                         WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction5") ||
                         WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction3") ||
                         WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction4") ||
                         WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction5") ||
                         WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction4") ||
                         WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction5") ||
                         WoW.TargetHasDebuff("Unstable Affliction4") && WoW.TargetHasDebuff("Unstable Affliction5") ||
                         WoW.PlayerBuffStacks("Reap Souls") >= 12) &&
                        !WoW.PlayerIsCasting &&
                        WoW.CanCast("Reap Souls") &&
                        !WoW.PlayerHasBuff("Deadwind Harvester") &&
                        WoW.PlayerHasBuff("Tormented Souls") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption"))
                    {
                        WoW.CastSpell("Reap Souls");
                        return;
                    }
                    if (WoW.CanCast("Phantom") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption"))
                    {
                        WoW.CastSpell("Phantom");
                        return;
                    }

                    /*if (WoW.IsSpellInRange("Agony") && WoW.CanCast("Trinket") &&!WoW.ItemOnCooldown("Trinket") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption"))
                     * {
                     *      WoW.CastSpell("Trinket");
                     *      return;
                     * }*/
                    if (WoW.CanCast("Berserk") && UseCooldowns && !WoW.IsSpellOnCooldown("Berserk") && WoW.PlayerRace == "Troll")
                    {
                        WoW.CastSpell("Berserk");
                        return;
                    }
                    if (WoW.CanCast("Life Tap") && !WoW.PlayerIsChanneling && WoW.Talent(2) == 3 && !WoW.PlayerHasBuff("Empowered Life Tap"))
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }
                    if ((!WoW.TargetHasDebuff("Corruption") || WoW.TargetDebuffTimeRemaining("Corruption") <= 420) &&
                        (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Corruption") <= 150) &&
                        WoW.CanCast("Corruption") &&
                        WoW.IsSpellInRange("Agony"))
                    {
                        WoW.CastSpell("Corruption");
                        return;
                    }
                    if ((!WoW.TargetHasDebuff("Siphon Life") || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 420) &&
                        (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 150) &&
                        WoW.Talent(4) == 1 &&
                        WoW.CanCast("Siphon Life") &&
                        WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption"))
                    {
                        WoW.CastSpell("Siphon Life");
                        return;
                    }
                    if (WoW.CanCast("Unstable Affliction") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption") && !WoW.IsMoving && WoW.Talent(2) == 1 && !WoW.IsMoving && WoW.IsSpellInRange("Unstable Affliction") && !WoW.PlayerIsChanneling && WoW.CurrentSoulShards >= 1 &&
                        (!WoW.TargetHasDebuff("Unstable Affliction1") || !WoW.TargetHasDebuff("Unstable Affliction2") || !WoW.TargetHasDebuff("Unstable Affliction3") || !WoW.TargetHasDebuff("Unstable Affliction4") || !WoW.TargetHasDebuff("Unstable Affliction5") ||
                         (WoW.TargetDebuffTimeRemaining("Unstable Affliction1") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction2") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction3") <= 150) ||
                         (WoW.TargetDebuffTimeRemaining("Unstable Affliction4") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction5") <= 150)))
                    {
                        WoW.CastSpell("Unstable Affliction");
                        Thread.Sleep(200);
                        return;
                    }
                    if (WoW.IsInCombat && WoW.Mana < 70 && WoW.HealthPercent > 70 && WoW.CanCast("Life Tap"))
                    {
                        WoW.CastSpell("Life Tap");
                        return;
                    }
                    if (WoW.CanCast("Drain Soul") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption"))
                    {
                        WoW.CastSpell("Drain Soul");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMounted) // Do AOE stuff here
                {
                    if (WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Agony") || (WoW.TargetDebuffTimeRemaining("Agony") <= 540)))
                    {
                        WoW.CastSpell("Agony");
                        return;
                    }

                    if (WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Corruption") || (WoW.TargetDebuffTimeRemaining("Corruption") <= 420)))
                    {
                        WoW.CastSpell("Corruption");
                        return;
                    }
                    if (WoW.CanCast("Seed of Corruption") && WoW.IsSpellInRange("Agony") && !WoW.TargetHasDebuff("Seed of Corruption") && !WoW.IsMoving && WoW.CurrentSoulShards >= 1 && !WoW.WasLastCasted("Seed of Corruption"))
                    {
                        WoW.CastSpell("Seed of Corruption");
                        return;
                    }
                    if (WoW.CanCast("Drain Soul") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption"))
                    {
                        WoW.CastSpell("Drain Soul");
                        return;
                    }
                }
            }
        }