Example #1
0
 private void BombRotation()
 {
     WoW.CastSpell("Soul Carver", true);
     WoW.CastSpell("Fiery Brand", !WoW.TargetHasDebuff("Fiery Demise") && !WoW.IsSpellOnCooldown("Fiery Brand"));
     WoW.CastSpell("Immolation Aura", true);
     WoW.CastSpell("Shear", WoW.Pain < 30, !WoW.PlayerHasBuff("Metamorphasis"));             // generate pain
     WoW.CastSpell("Sever", WoW.Pain < 30, WoW.PlayerHasBuff("Metamorphasis"));
     WoW.CastSpell("Fracture", !WoW.PlayerHasBuff("Soul Fragments") || WoW.PlayerBuffStacks("Soul Fragments") <= 3);
     WoW.CastSpell("Soul Cleave", WoW.PlayerHealthPercent < 50);
     WoW.CastSpell("Spirit Bomb", WoW.PlayerHasBuff("Soul Fragments") && WoW.PlayerBuffStacks("Soul Fragments") >= 4);
     WoW.CastSpell("Sigil of Flame", !WoW.TargetHasDebuff("Sigil of Flame"));
     WoW.CastSpell("Shear", !WoW.PlayerHasBuff("Metamorphasis"));             // filler
     WoW.CastSpell("Sever", WoW.PlayerHasBuff("Metamorphasis"));
 }
Example #2
0
        public override void Pulse()
        {
            var SavageRoarTime = WoW.PlayerBuffTimeRemaining("SavageRoar"); // 200 = 2 seconds
            var RakeTime       = WoW.TargetDebuffTimeRemaining("Rake");
            var RipTime        = WoW.TargetDebuffTimeRemaining("Rip");
            var MoonfireTime   = WoW.TargetDebuffTimeRemaining("Moonfire");

            WoW.CastSpell("Berserk", UseCooldowns && !WoW.PlayerHasBuff("Prowl"));

            WoW.CastSpell("Regrowth", WoW.PlayerHasBuff("PredatorySwiftness") && WoW.PlayerBuffStacks("Bloodtalons") != 2 && !WoW.PlayerHasBuff("Prowl"));

            // Cast Ferocious Bite if at 5 Combo Points and Rip / Savage Roar do not need refreshing within 10 sec.
            WoW.CastSpell("FerociousBite", WoW.CurrentComboPoints >= 5 && RipTime > 1000 && SavageRoarTime > 1000 && !WoW.PlayerHasBuff("Prowl"));

            // Maintain Savage Roar if taken.
            WoW.CastSpell("SavageRoar", WoW.Talent(6) == 3 && SavageRoarTime <= 200 && WoW.CurrentComboPoints >= 1 && WoW.Energy >= 40 && !WoW.PlayerHasBuff("Prowl"));

            // Maintain Rake.
            WoW.CastSpell("Rake", RakeTime <= 200 && WoW.Energy >= 35);

            // Maintain Rip (at below 25%, or with Sabertooth taken, replace with Ferocious Bite).
            WoW.CastSpell("Rip", RipTime <= 200 && WoW.Talent(6) != 1 && WoW.CurrentComboPoints >= 1 && WoW.Energy >= 30);
            WoW.CastSpell("FerociousBite", RipTime <= 200 && WoW.TargetHealthPercent <= 25 && WoW.Talent(6) == 1 && WoW.CurrentComboPoints >= 1);

            // Maintain Moonfire if Lunar Inspiration is taken.
            WoW.CastSpell("Moonfire", MoonfireTime <= 200 && WoW.Energy >= 30 && WoW.Talent(1) == 3);

            // Use any Omen of Clarity procs to maintain Thrash if using Luffa Wrappings.
            // Will code this when i get the item till then stuff it.... :)

            // Cast Tiger's Fury at 20 Energy or less.
            WoW.CastSpell("TigersFury", WoW.Energy <= 20, false);

            // Cast Ashamane's Frenzy, try to sync this with Tiger's Fury uses.
            WoW.CastSpell("Ashamane", true);

            // Cast Shred to build combo points.
            WoW.CastSpell("Shred", (WoW.Energy >= 40 || WoW.PlayerHasBuff("ClearCasting")) && WoW.CountEnemyNPCsInRange <= 1);
            WoW.CastSpell("Thrash", (WoW.Energy >= 40 || WoW.PlayerHasBuff("ClearCasting")) && WoW.CountEnemyNPCsInRange >= 2);

            // When using Brutal Slash, try to make sure that you always have at least one charge on cooldown,
            // but have as many charges as possible when a wave of enemies comes into range.
            // Try to have short duration buffs such as Tiger's Fury and Bloodtalons active
            // on as many high target casts of this as possible, as it deals massive AoE burst damage with each cast.
            WoW.CastSpell("BrutalSlash", WoW.Talent(6) == 2 && WoW.Energy >= 20 && WoW.PlayerSpellCharges("BrutalSlash") > 1);
            WoW.CastSpell("BrutalSlash", WoW.Talent(6) == 2 && WoW.Energy >= 20 && WoW.PlayerSpellCharges("BrutalSlash") == 1 && WoW.PlayerHasBuff("TigersFury"));
        }
Example #3
0
 private void CooldownUsage()
 {
     if (!UseCooldowns)
     {
         return;
     }
     if (PIBloodlustBox.Checked && CheckBloodlust() >= 20)
     {
         SpellCast(POWER_INFUSION);
     }
     if (PIStacksBox.Checked && WoW.PlayerHasBuff(VOIDFORM_AURA) && WoW.PlayerBuffStacks(VOIDFORM_AURA) >= 20)
     {
         SpellCast(POWER_INFUSION);
     }
     if (PIWaitBox.Checked && WoW.IsSpellOnCooldown(SHADOW_FIEND) && WoW.SpellCooldownTimeRemaining(SHADOW_FIEND) > txtPIWait)
     {
         SpellCast(POWER_INFUSION);
     }
     if (SFPIBox.Checked && (WoW.PlayerBuffTimeRemaining(POWER_INFUSION_AURA) == 1200 || CheckBloodlust() == 1200))
     {
         SpellCast(SHADOW_FIEND);
     }
     if (SFWaitBox.Checked && WoW.IsSpellOnCooldown(POWER_INFUSION) && WoW.SpellCooldownTimeRemaining(POWER_INFUSION) > txtSFWait)
     {
         SpellCast(SHADOW_FIEND);
     }
     if (!MoveCheck() && VoidTorrentRadio1.Checked && DotsUp() && VoidTorrentBox.Checked && WoW.IsSpellOnCooldown(MIND_BLAST) && WoW.IsSpellOnCooldown(VOID_BOLT))
     {
         SpellCast(VOID_TORRENT);
     }
     if (WoW.HealthPercent < txtVE && !WoW.IsSpellOnCooldown(VAMPIRIC_EMBRACE))
     {
         Log.Write("Health below " + txtVE + "% - Using Vampiric Embrace now", Color.Red);
         SpellCast(VAMPIRIC_EMBRACE);
         return;
     }
     if (!WoW.ItemOnCooldown(ITEM_KILJAEDEN) && LegTrinketBox.Checked && DotsUp())
     {
         SpellCast(ITEM_KILJAEDEN);
     }
 }
Example #4
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
                }
            }
        }
Example #5
0
        public override void Pulse()
        {
            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.CanCast("Metamorphosis") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Metamorphosis Usage Percent"))
                    {
                        //Log.Write("Metamorphosis");
                        Log.Write("Health low < set % using CDs...", Color.Red);
                        WoW.CastSpell("Metamorphosis"); // Off the GCD no return needed
                    }

                    if (WoW.TargetIsCastingAndSpellIsInterruptible)                     //interupt every spell with all we got
                    {
                        if (WoW.CanCast("Consume Magic") && WoW.TargetPercentCast >= 60 && WoW.IsSpellInRange("Consume Magic"))
                        {
                            WoW.CastSpell("Consume Magic");
                            return;
                        }

                        if (Bloodelf && WoW.CanCast("Arcane Torrent") && WoW.IsSpellOnCooldown("Consume Magic") && WoW.TargetPercentCast >= 60 && WoW.IsSpellInRange("Soul Carver"))
                        {
                            WoW.CastSpell("Arcane Torrent");
                            return;
                        }

                        if (WoW.CanCast("Sigil of Silence") && WoW.IsSpellOnCooldown("Consume Magic") && (WoW.IsSpellOnCooldown("Arcane Torrent") || !Bloodelf) && WoW.IsSpellInRange("Soul Carver"))
                        {
                            WoW.CastSpell("Sigil of Silence");
                            return;
                        }
                    }

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

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

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

                    if (WoW.CanCast("Sigil of Flame") && WoW.IsSpellInRange("Soul Carver") && WoW.TargetHasDebuff("Fiery Demise") && WoW.TargetDebuffTimeRemaining("Fiery Demise") >= 7)
                    {
                        WoW.CastSpell("Sigil of Flame");
                        return;
                    }

                    if (WoW.CanCast("Fel Eruption") && WoW.IsSpellInRange("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 >= 92 || WoW.HealthPercent < 90 && WoW.Pain >= 20)) // to not waste cd and pain
                    {
                        WoW.CastSpell("Demon Spikes");
                    }

                    if (WoW.IsSpellInRange("Soul Carver"))
                    {
                        if (WoW.CanCast("Soul Cleave") && ((WoW.Pain >= 30 && WoW.HealthPercent < 25) || (WoW.Pain >= 80 && WoW.HealthPercent < 50 && !WoW.CanCast("Demon Spikes")) ||
                                                           (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.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.CastSpell("Sigil of Flame");
                            return;
                        }
                    }

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

                    if (WoW.CanCast("Sever") && WoW.IsSpellInRange("Soul Carver") && WoW.PlayerHasBuff("Metamorphosis")) // Pain Generator
                    {
                        WoW.CastSpell("Sever");
                        return;
                    }

                    if (WoW.CanCast("Shear") && WoW.IsSpellInRange("Soul Carver") && !WoW.PlayerHasBuff("Metamorphosis")) // Pain Generator
                    {
                        WoW.CastSpell("Shear");
                        return;
                    }

                    if (WoW.CanCast("Throw Glaive") && !WoW.IsSpellInRange("Soul Carver") && WoW.IsSpellInRange("Throw Glaive"))                     //Need to implement range 30y for Throw Glaive spell 204157
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE || 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.CanCast("Metamorphosis") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Metamorphosis Usage Percent"))
                    {
                        //Log.Write("Metamorphosis");
                        Log.Write("Health low < set % using CDs...", Color.Red);
                        WoW.CastSpell("Metamorphosis"); // Off the GCD no return needed
                    }

                    if (WoW.TargetIsCastingAndSpellIsInterruptible)                     //interupt every spell with all we got
                    {
                        if (WoW.CanCast("Consume Magic") && WoW.TargetPercentCast >= 60 && WoW.IsSpellInRange("Consume Magic"))
                        {
                            WoW.CastSpell("Consume Magic");
                            return;
                        }

                        if (Bloodelf && WoW.CanCast("Arcane Torrent") && WoW.IsSpellOnCooldown("Consume Magic") && WoW.TargetPercentCast >= 60 && WoW.IsSpellInRange("Soul Carver"))
                        {
                            WoW.CastSpell("Arcane Torrent");
                            return;
                        }

                        if (WoW.CanCast("Sigil of Silence") && WoW.IsSpellOnCooldown("Consume Magic") && (WoW.IsSpellOnCooldown("Arcane Torrent") || !Bloodelf) && WoW.IsSpellInRange("Soul Carver"))
                        {
                            WoW.CastSpell("Sigil of Silence");
                            return;
                        }
                    }

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

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

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

                    if (WoW.CanCast("Sigil of Flame") && WoW.IsSpellInRange("Soul Carver") && WoW.TargetHasDebuff("Fiery Demise") && WoW.TargetDebuffTimeRemaining("Fiery Demise") >= 7)
                    {
                        WoW.CastSpell("Sigil of Flame");
                        return;
                    }

                    if (WoW.CanCast("Fel Eruption") && WoW.IsSpellInRange("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 >= 92 || WoW.HealthPercent < 90 && WoW.Pain >= 20)) // to not waste cd and pain
                    {
                        WoW.CastSpell("Demon Spikes");
                    }

                    if (WoW.IsSpellInRange("Soul Carver"))
                    {
                        if (WoW.CanCast("Soul Cleave") && ((WoW.Pain >= 30 && WoW.HealthPercent < 25) || (WoW.Pain >= 80 && !WoW.CanCast("Demon Spikes")) ||
                                                           (WoW.Pain >= 60 && WoW.PlayerHasBuff("Demon Spikes"))))
                        {
                            WoW.CastSpell("Soul Cleave");
                            return;
                        }

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

                        if (WoW.CanCast("Sigil of Flame"))
                        {
                            WoW.CastSpell("Sigil of Flame");
                            return;
                        }
                    }

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

                    if (WoW.CanCast("Sever") && WoW.IsSpellInRange("Soul Carver") && WoW.PlayerHasBuff("Metamorphosis")) // Pain Generator
                    {
                        WoW.CastSpell("Sever");
                        return;
                    }

                    if (WoW.CanCast("Shear") && WoW.IsSpellInRange("Soul Carver") && !WoW.PlayerHasBuff("Metamorphosis")) // Pain Generator
                    {
                        WoW.CastSpell("Shear");
                        return;
                    }

                    if (WoW.CanCast("Throw Glaive") && !WoW.IsSpellInRange("Soul Carver") && WoW.IsSpellInRange("Throw Glaive"))                     //Need to implement range 30y for Throw Glaive spell 204157
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }
                }
            }
        }
Example #6
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");
                    }
                }
            }
        }
Example #7
0
        public override void Pulse()
        {
            Log.Write("Mana: " + WoW.Mana, Color.Red);

            if (WoW.TankId == 0)
            {
                var f = new frmEnterTankId {
                    TopMost = true
                };
                f.ShowDialog();
            }

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

            var lowest = WoW.PartyLowestHealthPercent;

            var currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent;

            var averageHp = WoW.PartyAverageHealthPercent;

            WoW.TargetMember(currentTargetId);

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

            if (WoW.GroupSize == 5)
            {
                Log.Write($"Lowest Health Target = [/target party{currentTargetId}] health = {averageHp}");
            }
            else
            {
                Log.Write($"Lowest Health Target = [/target raid{currentTargetId}] health = {averageHp}");
            }

            if (lowest < 85 && !WoW.IsSpellOnCooldown("ThunderFocusTea"))
            {
                WoW.CastSpell("ThunderFocusTea");
            }

            if (WoW.PlayerHasBuff("ThunderFocusTea"))
            {
                if (averageHp < 70 &&
                    WoW.CanCast("EssenceFont") &&
                    !WoW.IsSpellOnCooldown("EssenceFont") &&
                    !WoW.PlayerHasBuff("EssenceFont"))
                {
                    WoW.CastSpell("EssenceFont");
                }

                if (averageHp < 90 &&
                    WoW.CanCast("Vivify") &&
                    !WoW.IsSpellOnCooldown("Vivify"))
                {
                    WoW.CastSpell("Vivify");
                }
            }

            if (WoW.IsInCombat && WoW.Mana <= 70 &&
                !WoW.IsSpellOnCooldown("Manatea"))
            {
                WoW.CastSpell("Manatea");
                return;
            }

            if (WoW.CanCast("RenewingMist") && WoW.IsInCombat &&
                !WoW.TargetHasBuff("RenewingMist") &&
                !WoW.PlayerHasBuff("RenewingMist") &&
                !WoW.IsSpellOnCooldown("RenewingMist"))
            {
                WoW.CastSpell("RenewingMist");
                return;
            }
            if (UseCooldowns)
            {
                if (lowest > 90)
                {
                    if (WoW.CanCast("RSK") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                    {
                        WoW.CastSpell("RSK");
                        return;
                    }

                    if (WoW.CanCast("BlackoutKick") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat &&
                        WoW.PlayerBuffStacks("BlackoutBuff") == 3)
                    {
                        WoW.CastSpell("BlackoutKick");
                        return;
                    }

                    if (WoW.CanCast("Tiger") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat &&
                        WoW.PlayerBuffStacks("BlackoutBuff") < 3)
                    {
                        WoW.CastSpell("Tiger");
                        return;
                    }
                }
            }
            if (WoW.CanCast("Revival") &&
                averageHp < 65 &&
                !WoW.IsSpellOnCooldown("Revival"))
            {
                WoW.CastSpell("Revival");
                return;
            }

            if (WoW.CanCast("LifeCocoon") &&
                lowest <= 25 &&
                !WoW.IsSpellOnCooldown("LifeCocoon"))
            {
                WoW.CastSpell("LifeCocoon");
                return;
            }


            if (averageHp < 75)
            {
                if (WoW.CanCast("InvokeChiJitheRedCrane") &&
                    !WoW.IsSpellOnCooldown("InvokeChiJitheRedCrane"))
                {
                    WoW.CastSpell("InvokeChiJitheRedCrane");
                    return;
                }

                if (WoW.CanCast("EssenceFont") &&
                    !WoW.IsSpellOnCooldown("EssenceFont") &&
                    !WoW.PlayerHasBuff("EssenceFont"))
                {
                    WoW.CastSpell("EssenceFont");
                    return;
                }

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

            if (WoW.Level > 100)
            {
                if (WoW.CanCast("SheilunsGift") &&
                    lowest <= 75 && !WoW.IsMoving &&
                    WoW.PlayerSpellCharges("SheilunsGift") >= 4)
                {
                    WoW.CastSpell("SheilunsGift");
                    return;
                }
            }

            if (WoW.CanCast("EnvelopingMist") &&
                lowest <= 70 &&
                !WoW.IsMoving &&
                !WoW.TargetHasBuff("EnvelopingMist") &&
                WoW.LastSpell != ("EnvelopingMist"))
            {
                WoW.CastSpell("EnvelopingMist");
                return;
            }

            if (WoW.CanCast("Vivify") &&
                lowest <= 65)
            {
                WoW.CastSpell("Vivify");
                return;
            }

            if (WoW.CanCast("Effuse") && lowest <= 90 &&
                !WoW.PlayerIsChanneling)
            {
                WoW.CastSpell("Effuse");
                return;
            }

            if (WoW.CanCast("ChiWave") && lowest <= 90 &&
                WoW.IsInCombat)
            {
                WoW.CastSpell("ChiWave");
                return;
            }

            if (WoW.IsInCombat && WoW.Mana <= 70 &&
                !WoW.IsSpellOnCooldown("Manatea"))
            {
                WoW.CastSpell("Manatea");
            }
        }
Example #8
0
 public override void Pulse()                             // Updated for Legion (tested and working for single target)
 {
     if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
         {
             if (WoW.CanCast("Marrowrend") && WoW.PlayerBuffTimeRemaining("Bone Shield") >= 3 && WoW.CurrentRunes >= 1 && !WoW.IsSpellOnCooldown("Marrowrend"))
             {
                 WoW.CastSpell("Marrowrend");
                 return;
             }
             if (WoW.CanCast("Blood Boil") && !WoW.TargetHasDebuff("Blood Plague") && !WoW.IsSpellOnCooldown("Blood Boil"))
             {
                 WoW.CastSpell("Blood Boil");
                 return;
             }
             if (WoW.CanCast("Dancing Rune Weapon") && WoW.HealthPercent < 50)
             {
                 WoW.CastSpell("Dancing Rune Weapon");
                 return;
             }
             if (WoW.CanCast("Death Strike") && WoW.RunicPower >= 45 && WoW.HealthPercent < 85 && !WoW.IsSpellOnCooldown("Death Strike"))
             {
                 WoW.CastSpell("Death Strike");
                 return;
             }
             if (WoW.CanCast("Marrowrend") && WoW.PlayerBuffStacks("Bone Shield") >= 6 && !WoW.IsSpellOnCooldown("Marrowrend"))
             {
                 WoW.CastSpell("Marrowrend");
                 return;
             }
             if (WoW.CanCast("Heart Strike") && WoW.CurrentRunes >= 3 || WoW.RunicPower <= 45 && !WoW.IsSpellOnCooldown("Heart Strike"))
             {
                 WoW.CastSpell("Heart Strike");
                 return;
             }
             if (WoW.CanCast("Consumption") && !WoW.IsSpellOnCooldown("Consumption"))
             {
                 WoW.CastSpell("Consumption");
                 return;
             }
             if (WoW.CanCast("Blood Boil") && !WoW.IsSpellOnCooldown("Blood Boil"))
             {
                 WoW.CastSpell("Blood Boil");
                 return;
             }
         }
     }
     if (combatRoutine.Type == RotationType.AOE)
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
         {
             if (WoW.CanCast("Anti-Magic Shell") && WoW.HealthPercent < 50 && !WoW.IsSpellOnCooldown("Anti-Magic Shell"))
             {
                 WoW.CastSpell("Anti-Magic Shell");
                 return;
             }
             if (WoW.CanCast("Icebound Fortitude") && WoW.HealthPercent < 40 && !WoW.IsSpellOnCooldown("Icebound Fortitude"))
             {
                 WoW.CastSpell("Icebound Fortitude");
                 return;
             }
             if (WoW.CanCast("Vampiric Blood") && WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Vampiric Blood"))
             {
                 WoW.CastSpell("Vampiric Blood");
                 return;
             }
             if (WoW.CanCast("Marrowrend") && WoW.PlayerBuffTimeRemaining("Bone Shield") >= 3 && WoW.CurrentRunes >= 1 && !WoW.IsSpellOnCooldown("Marrowrend"))
             {
                 WoW.CastSpell("Marrowrend");
                 return;
             }
             if (WoW.CanCast("Blood Boil") && !WoW.TargetHasDebuff("Blood Plague") && !WoW.IsSpellOnCooldown("Blood Boil"))
             {
                 WoW.CastSpell("Blood Boil");
                 return;
             }
             if (WoW.CanCast("Dancing Rune Weapon") && WoW.HealthPercent < 50)
             {
                 WoW.CastSpell("Dancing Rune Weapon");
                 return;
             }
             if (WoW.CanCast("Death Strike") && WoW.RunicPower >= 45 && WoW.HealthPercent < 85 && !WoW.IsSpellOnCooldown("Death Strike"))
             {
                 WoW.CastSpell("Death Strike");
                 return;
             }
             if (WoW.CanCast("Marrowrend") && WoW.PlayerBuffStacks("Bone Shield") >= 6 && !WoW.IsSpellOnCooldown("Marrowrend"))
             {
                 WoW.CastSpell("Marrowrend");
                 return;
             }
             if (WoW.CanCast("Heart Strike") && WoW.CurrentRunes >= 3 || WoW.RunicPower <= 45 && !WoW.IsSpellOnCooldown("Heart Strike"))
             {
                 WoW.CastSpell("Heart Strike");
                 return;
             }
             if (WoW.CanCast("Consumption") && !WoW.IsSpellOnCooldown("Consumption"))
             {
                 WoW.CastSpell("Consumption");
                 return;
             }
             if (WoW.CanCast("Blood Boil") && !WoW.IsSpellOnCooldown("Blood Boil"))
             {
                 WoW.CastSpell("Blood Boil");
                 return;
             }
         }
     }
     if (combatRoutine.Type == RotationType.SingleTargetCleave)
     {
         // Do Single Target Cleave stuff here if applicable else ignore this one
     }
 }
Example #9
0
        public override void Pulse()
        {
            if (WoW.IsInCombat && interruptwatch.ElapsedMilliseconds == 0)
            {
                Log.Write("Starting interrupt timer", Color.Blue);
                interruptwatch.Start();
            }

            if (UseCooldowns)
            {
            }

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

            if (WoW.IsInCombat && (!WoW.TargetIsEnemy || WoW.TargetHealthPercent == 0))
            {
                WoW.TargetNearestEnemy();
            }

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

            if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis"))
            {
                Log.Write("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.TargetIsCastingAndSpellIsInterruptible && interruptwatch.ElapsedMilliseconds > 1200 && WoW.TargetPercentCast > 70)
            {
                if (!WoW.IsSpellOnCooldown("Sigil of Silence"))
                {
                    Log.Write("Interrupting spell");
                    WoW.CastSpell("Sigil of Silence");
                    interruptwatch.Reset();
                    interruptwatch.Start();
                    return;
                }

                if (!WoW.IsSpellOnCooldown("Arcane Torrent"))
                {
                    Log.Write("Interrupting spell");
                    WoW.CastSpell("Arcane Torrent");
                    interruptwatch.Reset();
                    interruptwatch.Start();
                    return;
                }

                if (!WoW.IsSpellOnCooldown("Consume Magic"))
                {
                    Log.Write("Interrupting spell");
                    WoW.CastSpell("Consume Magic");
                    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.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigil's" talent
                return;
            }

            if (WoW.CanCast("Shear")) // Pain Generator
            {
                WoW.CastSpell("Shear");
            }
        }
 public override void Pulse()                             // Updated for Legion (tested and working for single target)
 {
     if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
         {
             if (WoW.CanCast("Fury of Eagle") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.PlayerBuffStacks("Mongoose Fury") >= 5)
             {
                 WoW.CastSpell("Fury of Eagle");
                 return;
             }
             if (WoW.CanCast("Explosive Trap") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Explosive Trap");
                 return;
             }
             if (WoW.CanCast("Dragonsfire Grenade") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Dragonsfire Grenade");
                 return;
             }
             if (WoW.CanCast("Lacerate") && !WoW.TargetHasDebuff("Lacerate") && (WoW.Focus >= 35) && WoW.IsSpellInRange("Lacerate") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Lacerate");
                 return;
             }
             if (WoW.CanCast("Snake Hunter") && (WoW.PlayerSpellCharges("Mongoose Bite") <= 0) && (WoW.PlayerBuffTimeRemaining("Mongoose Fury") >= 6) &&
                 WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Snake Hunter");
                 return;
             }
             if (WoW.CanCast("Aspect of the Eagle") && (WoW.PlayerSpellCharges("Mongoose Bite") >= 2) && (WoW.PlayerBuffTimeRemaining("Mongoose Fury") >= 11) &&
                 WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Aspect of the Eagle");
                 return;
             }
             if (WoW.CanCast("Mongoose Bite") && (!WoW.TargetHasDebuff("Mongoose Fury") || (WoW.PlayerBuffTimeRemaining("Mongoose Fury") >= 3)) && WoW.IsSpellInRange("Mongoose Bite") &&
                 !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Mongoose Bite");
                 return;
             }
             if (WoW.CanCast("Mongoose Bite") && WoW.PlayerHasBuff("Aspect of the Eagle") && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Mongoose Bite");
                 return;
             }
             if (WoW.CanCast("Throwing Axes") && WoW.IsSpellInRange("Throwing Axes") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Throwing Axes");
                 return;
             }
             if (WoW.CanCast("Flanking Strike") && (WoW.Focus >= 50) && WoW.IsSpellInRange("Flanking Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Flanking Strike");
                 return;
             }
             if (WoW.CanCast("Raptor Strike") && (WoW.Focus >= 25) && WoW.IsSpellInRange("Raptor Strike") && WoW.IsSpellOnCooldown("Lacerate") &&
                 WoW.IsSpellOnCooldown("Flanking Strike") && WoW.IsSpellOnCooldown("Throwing Axes") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
             {
                 WoW.CastSpell("Raptor Strike");
                 return;
             }
         }
     }
     if (combatRoutine.Type == RotationType.AOE)
     {
         // Do 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 (WoW.IsMounted)
            {
                return;
            }

            int OOCPlea = 1;

            while (WoW.PlayerBuffStacks("Sins of the Many") < WoW.GroupSize && !WoW.IsInCombat && OOCAtonement)
            {
                WoW.TargetMember(OOCPlea);
                if (WoW.TargetHasBuff("Atonement"))
                {
                    OOCPlea++;
                    continue;
                }
                if (!WoW.CanCast("Plea"))
                {
                    continue;
                }
                if (OOCPlea > WoW.GroupSize)
                {
                    OOCPlea = 1;
                }
                WoW.TargetMember(OOCPlea);
                WoW.CastSpell("Plea");
                OOCPlea++;
            }

            // While rapture is active, spread Power Word: Shield to players
            int RaptureSpread = 1;

            while (WoW.PlayerHasBuff("Rapture") && WoW.PartyLowestHealthPercent > 60)
            {
                WoW.TargetMember(RaptureSpread);
                if (WoW.TargetHasBuff("Power Word: Shield"))
                {
                    RaptureSpread++;
                    continue;
                }
                if (!WoW.CanCast("Power Word: Shield"))
                {
                    continue;
                }
                if (RaptureSpread > WoW.GroupSize)
                {
                    RaptureSpread = 1;
                }
                WoW.TargetMember(RaptureSpread);
                WoW.CastSpell("Power Word: Shield");
                RaptureSpread++;
            }

            // Ask player for TankId when first loading Rotation
            if (WoW.TankId == 0)
            {
                var f = new frmEnterTankId {
                    TopMost = true
                };
                f.ShowDialog();
            }

            // Use Angelic Feather for speed if enabled in UI
            if (WoW.CanCast("Angelic Feather") && WoW.IsMoving && !WoW.PlayerHasBuff("Angelic Feather") && UseFeatherForSpeed)
            {
                WoW.CastSpell("Angelic Feather");
                return;
            }

            // Use Arcane Torrent if selected in UI
            if (WoW.CanCast("Arcane Torrent") && WoW.Mana < 90 && ArcaneTorrentUI && WoW.IsInCombat && !WoW.PlayerIsChanneling)
            {
                WoW.CastSpell("Arcane Torrent");
                return;
            }

            var lowest          = WoW.PartyLowestHealthPercent;
            int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent;

            Log.Write("Party Lowest HP: " + lowest);

            if (lowest >= DPSWhenPartyAbove && WoW.PartyMemberIsNeedingADispel == 0 && WoW.IsInCombat)
            {
                // If active Atonements are below UI threshold then spread Atonement with Plea until threshold is met
                int PleaStack = 1;
                while (WoW.PlayerBuffStacks("Sins of the Many") < ActiveAtonements && ActiveAtonements != 0)
                {
                    WoW.TargetMember(PleaStack);
                    if (WoW.TargetHasBuff("Atonement"))
                    {
                        PleaStack++;
                        continue;
                    }
                    if (!WoW.CanCast("Plea"))
                    {
                        continue;
                    }
                    if (PleaStack > WoW.GroupSize)
                    {
                        PleaStack = 1;
                    }
                    WoW.TargetMember(PleaStack);
                    WoW.CastSpell("Plea");
                    PleaStack++;
                }

                // Mitigate damage with Power Word: Shield
                if (WoW.CanCast("Power Word: Shield") && lowest < 90)
                {
                    WoW.CastSpell("Power Word: Shield");
                    return;
                }

                //DPS Rotation
                WoW.TargetNearestEnemy();
                if (WoW.HasTarget && WoW.TargetIsEnemy)
                {
                    if (lowest < 99 && lowest > 95 && WoW.PlayerBuffStacks("Sins of the Many") < ActiveAtonements && ActiveAtonements != 0)
                    {
                        WoW.CastSpell("Plea");
                        return;
                    }
                    //Maintain Shadow Word: Pain(or Purge the Wicked, if you have taken this talent) on the target.
                    if (WoW.TargetDebuffTimeRemaining("Shadow Word: Pain") < 400 && WoW.CanCast("Shadow Word: Pain") && WoW.Talent(6) != 1)
                    {
                        WoW.CastSpell("Shadow Word: Pain");
                        return;
                    }
                    if (WoW.TargetDebuffTimeRemaining("Purge the Wicked") < 400 && WoW.CanCast("Purge the Wicked") && WoW.Talent(6) == 1)
                    {
                        WoW.CastSpell("Purge the Wicked");
                        return;
                    }

                    //Use Schism on cooldown(if you have taken this talent).
                    if (WoW.CanCast("Schism") && WoW.Talent(1) == 3)
                    {
                        WoW.CastSpell("Schism");
                        return;
                    }

                    //Use Penance on cooldown.
                    if (WoW.CanCast("Penance"))
                    {
                        WoW.CastSpell("Penance");
                        return;
                    }

                    //Use Power Word: Solace on cooldown(if you have taken this talent).
                    if (WoW.CanCast("Power Word: Solace") && WoW.Talent(4) == 1)
                    {
                        WoW.CastSpell("Power Word: Solace");
                        return;
                    }

                    if (WoW.CanCast("Shadowfiend") && WoW.Talent(4) != 3)
                    {
                        WoW.CastSpell("Shadowfiend");
                        return;
                    }

                    if (WoW.CanCast("Mindbender") && WoW.Talent(4) == 3)
                    {
                        WoW.CastSpell("Mindbender");
                        return;
                    }

                    //Use Smite as a filler.
                    if (WoW.CanCast("Smite"))
                    {
                        WoW.CastSpell("Smite");
                        return;
                    }
                }
                return;
            }


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

            var averageHp = WoW.PartyAverageHealthPercent;

            if (averageHp < 60 && WoW.CanCast("Power Infusion") && WoW.Talent(7) == 1)
            {
                WoW.CastSpell("Power Infusion"); // Off GCD no return needed
            }

            // Use Shadowfiend to boost healing output via Atonement
            if (averageHp < 90 && WoW.CanCast("Shadowfiend") && WoW.Talent(4) != 3 && WoW.IsInCombat)
            {
                WoW.TargetNearestEnemy();
                WoW.CastSpell("Shadowfiend");
                return;
            }
            // Use Mindbender for mana regardless of Party HP
            if (WoW.CanCast("Mindbender") && WoW.Talent(4) == 3 && WoW.IsInCombat && WoW.Mana < 90)
            {
                WoW.TargetNearestEnemy();
                WoW.CastSpell("Mindbender");
                return;
            }

            WoW.TargetMember(currentTargetId); // Target the lowest health party member or the member needing a dispell

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

            // If we are targeting the tank and his HP < 20% Pain Suppression him
            if (lowest <= PainSuppressionHealth && WoW.CanCast("Pain Suppression") && WoW.TankId == currentTargetId)
            {
                WoW.CastSpell("Pain Suppression");
                return;
            }

            // Uses Power Word: Radiance when UI values are met
            if (WoW.PlayerSpellCharges("PWRadiance") == 2 && WoW.CountAlliesUnderHealthPercentage(PWRHealth) >= PWRAlliesUnderHP)
            {
                WoW.CastSpell("PWRadiance");
                return;
            }

            // Use Shadow Mend when DPSWhenPartyAbove is less than UI value
            if (lowest <= DPSWhenPartyAbove && WoW.CanCast("Shadow Mend"))
            {
                WoW.CastSpell("Shadow Mend");
                return;
            }


            // Auto Light's Wrath For Dungeons
            if (WoW.CountAlliesUnderHealthPercentage(60) <= 3 && WoW.GroupSize <= 5 && WoW.PlayerBuffStacks("Sins of the Many") >= 3 && WoW.CanCast("Light's Wrath"))
            {
                WoW.TargetNearestEnemy();
                WoW.CastSpell("Light's Wrath");
                return;
            }
            // Auto Light's Wrath For Raids
            if (WoW.CountAlliesUnderHealthPercentage(60) >= 8 && WoW.GroupSize >= 5 && WoW.PlayerBuffStacks("Sins of the Many") >= 8 && WoW.CanCast("Light's Wrath"))
            {
                WoW.TargetNearestEnemy();
                WoW.CastSpell("Light's Wrath");
                return;
            }

            // When player uses Fade, PWRx2+Evangelism to ramp up atonement
            if (WoW.PlayerHasBuff("Fade") && !WoW.IsSpellOnCooldown("Evangelism") && WoW.Talent(7) != 3 && WoW.PlayerSpellCharges("PWRadiance") >= 1)
            {
                WoW.TargetMember(lowest);
                WoW.CastSpell("PWRadiance");
                WoW.TargetMember(2);
                WoW.CastSpell("PWRadiance");
                WoW.CastSpell("Evangelism");
                WoW.TargetNearestEnemy();
                return;
            }

            // When player uses Fade, PWRx2+Evangelism to ramp up atonement
            if (WoW.PlayerHasBuff("Fade") && WoW.Talent(7) != 3 && WoW.PlayerSpellCharges("PWRadiance") >= 1)
            {
                WoW.TargetMember(lowest);
                WoW.CastSpell("PWRadiance");
                WoW.TargetMember(2);
                WoW.CastSpell("PWRadiance");
                WoW.CastSpell("Evangelism");
                WoW.TargetNearestEnemy();
                return;
            }

            // Refresh PW:S on self (For Questing, doesn't Work in Group)
            if (WoW.PlayerBuffTimeRemaining("Power Word: Shield") < 400 && WoW.CanCast("Power Word: Shield") && WoW.GroupSize == 1)
            {
                WoW.CastSpell("Power Word: Shield");
                return;
            }
        }
Example #12
0
        public override void Pulse()                             // Updated for Legion (tested and working for single target)
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if ((WoW.HasTarget) && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    /*
                     *              if (WoW.CanCast("Raptor Strike") && !WoW.PlayerHasBuff("MOK"))
                     * {
                     *   WoW.CastSpell("Raptor Strike");
                     *   Log.Write("KEIN MOK!", Color.Green);
                     *   return;
                     * }
                     * if (WoW.CanCast("Raptor Strike") && WoW.PlayerHasBuff("MOK") && WoW.PlayerBuffStacks("MOK") <= 4 && WoW.PlayerBuffTimeRemaining("MOK") < 2)
                     * {
                     *   WoW.CastSpell("Raptor Strike");
                     * Log.Write("weniger als 4x MOK! keine zeit", Color.Green);
                     *   return;
                     * }
                     */
                    if (WoW.CanCast("Fury of Eagle") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.PlayerBuffStacks("Mongoose Fury") >= 6 && WoW.PlayerBuffTimeRemaining("Mongoose Fury") < 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Fury of Eagle");
                        return;
                    }

                    if (WoW.CanCast("Mongoose Bite") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.PlayerBuffStacks("Mongoose Fury") >= 6 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mongoose Bite");
                        return;
                    }
                    if (WoW.CanCast("Flanking Strike") && WoW.Focus >= 50 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Flanking Strike");
                        return;
                    }
                    if (WoW.CanCast("Mongoose Bite") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mongoose Bite");
                        return;
                    }

                    if (WoW.CanCast("Murder of Crows") && WoW.Focus >= 30 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Caltrops") && WoW.TargetHasDebuff("Caltrops") && WoW.TargetDebuffTimeRemaining("Caltrops") < 2 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Caltrops");
                        return;
                    }
                    if (WoW.CanCast("Caltrops") && !WoW.TargetHasDebuff("Caltrops") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Caltrops");
                        return;
                    }
                    if (WoW.CanCast("Lacerate") && WoW.Focus >= 35 && WoW.TargetHasDebuff("Lacerate") && WoW.TargetDebuffTimeRemaining("Lacerate") < 2 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Lacerate");
                        return;
                    }
                    if (WoW.CanCast("Lacerate") && WoW.Focus >= 35 && !WoW.TargetHasDebuff("Lacerate") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Lacerate");
                        return;
                    }
                    if (WoW.CanCast("Explosive Trap") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Explosive Trap");
                        return;
                    }
                    if (WoW.CanCast("Lacerate") && WoW.Focus >= 35 && !WoW.TargetHasDebuff("Lacerate") && (WoW.Focus >= 35) && WoW.IsSpellInRange("Lacerate") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Lacerate");
                        return;
                    }

                    if (WoW.CanCast("Mongoose Bite") && WoW.PlayerSpellCharges("Mongoose Bite") >= 3 && WoW.TargetHasDebuff("Lacerate") && WoW.TargetDebuffTimeRemaining("Lacerate") > 8 && !WoW.PlayerHasBuff("Mongoose Fury") && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mongoose Bite");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if ((WoW.HasTarget) && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    /*
                     *              if (WoW.CanCast("Raptor Strike") && !WoW.PlayerHasBuff("MOK"))
                     * {
                     *   WoW.CastSpell("Raptor Strike");
                     *   Log.Write("KEIN MOK!", Color.Green);
                     *   return;
                     * }
                     * if (WoW.CanCast("Raptor Strike") && WoW.PlayerHasBuff("MOK") && WoW.PlayerBuffStacks("MOK") <= 4 && WoW.PlayerBuffTimeRemaining("MOK") < 2)
                     * {
                     *   WoW.CastSpell("Raptor Strike");
                     * Log.Write("weniger als 4x MOK! keine zeit", Color.Green);
                     *   return;
                     * }
                     */
                    if (WoW.CanCast("Fury of Eagle") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.PlayerBuffStacks("Mongoose Fury") >= 4 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Fury of Eagle");
                        return;
                    }

                    if (WoW.CanCast("Mongoose Bite") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.PlayerBuffStacks("Mongoose Fury") >= 6 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mongoose Bite");
                        return;
                    }
                    if (WoW.CanCast("Flanking Strike") && WoW.Focus >= 50 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Flanking Strike");
                        return;
                    }
                    if (WoW.CanCast("Mongoose Bite") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mongoose Bite");
                        return;
                    }

                    if (WoW.CanCast("Murder of Crows") && WoW.Focus >= 30 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Caltrops") && WoW.TargetHasDebuff("Caltrops") && WoW.TargetDebuffTimeRemaining("Caltrops") < 2 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Caltrops");
                        return;
                    }
                    if (WoW.CanCast("Caltrops") && !WoW.TargetHasDebuff("Caltrops") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Caltrops");
                        return;
                    }
                    if (WoW.CanCast("Butchery") && WoW.Focus >= 40 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Butchery");
                        return;
                    }
                    if (WoW.CanCast("Lacerate") && WoW.Focus >= 35 && WoW.TargetHasDebuff("Lacerate") && WoW.TargetDebuffTimeRemaining("Lacerate") < 2 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Lacerate");
                        return;
                    }
                    if (WoW.CanCast("Lacerate") && WoW.Focus >= 35 && !WoW.TargetHasDebuff("Lacerate") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Lacerate");
                        return;
                    }
                    if (WoW.CanCast("Explosive Trap") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Explosive Trap");
                        return;
                    }
                    if (WoW.CanCast("Lacerate") && WoW.Focus >= 35 && !WoW.TargetHasDebuff("Lacerate") && (WoW.Focus >= 35) && WoW.IsSpellInRange("Lacerate") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Lacerate");
                        return;
                    }

                    if (WoW.CanCast("Mongoose Bite") && WoW.PlayerSpellCharges("Mongoose Bite") >= 3 && WoW.TargetHasDebuff("Lacerate") && WoW.TargetDebuffTimeRemaining("Lacerate") > 8 && !WoW.PlayerHasBuff("Mongoose Fury") && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mongoose Bite");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                if ((WoW.HasTarget) && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    /*
                     *              if (WoW.CanCast("Raptor Strike") && !WoW.PlayerHasBuff("MOK"))
                     * {
                     *   WoW.CastSpell("Raptor Strike");
                     *   Log.Write("KEIN MOK!", Color.Green);
                     *   return;
                     * }
                     * if (WoW.CanCast("Raptor Strike") && WoW.PlayerHasBuff("MOK") && WoW.PlayerBuffStacks("MOK") <= 4 && WoW.PlayerBuffTimeRemaining("MOK") < 2)
                     * {
                     *   WoW.CastSpell("Raptor Strike");
                     * Log.Write("weniger als 4x MOK! keine zeit", Color.Green);
                     *   return;
                     * }
                     */
                    if (WoW.CanCast("Fury of Eagle") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.PlayerBuffStacks("Mongoose Fury") >= 4 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Fury of Eagle");
                        return;
                    }

                    if (WoW.CanCast("Mongoose Bite") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.PlayerBuffStacks("Mongoose Fury") >= 6 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mongoose Bite");
                        return;
                    }
                    if (WoW.CanCast("Flanking Strike") && WoW.Focus >= 50 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Flanking Strike");
                        return;
                    }
                    if (WoW.CanCast("Mongoose Bite") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mongoose Bite");
                        return;
                    }

                    if (WoW.CanCast("Murder of Crows") && WoW.Focus >= 30 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Caltrops") && WoW.TargetHasDebuff("Caltrops") && WoW.TargetDebuffTimeRemaining("Caltrops") < 2 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Caltrops");
                        return;
                    }
                    if (WoW.CanCast("Caltrops") && !WoW.TargetHasDebuff("Caltrops") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Caltrops");
                        return;
                    }
                    if (WoW.CanCast("Lacerate") && WoW.Focus >= 35 && WoW.TargetHasDebuff("Lacerate") && WoW.TargetDebuffTimeRemaining("Lacerate") < 2 && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Lacerate");
                        return;
                    }
                    if (WoW.CanCast("Lacerate") && WoW.Focus >= 35 && !WoW.TargetHasDebuff("Lacerate") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Lacerate");
                        return;
                    }
                    if (WoW.CanCast("Explosive Trap") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Explosive Trap");
                        return;
                    }
                    if (WoW.CanCast("Lacerate") && WoW.Focus >= 35 && !WoW.TargetHasDebuff("Lacerate") && (WoW.Focus >= 35) && WoW.IsSpellInRange("Lacerate") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Lacerate");
                        return;
                    }

                    if (WoW.CanCast("Mongoose Bite") && WoW.PlayerSpellCharges("Mongoose Bite") >= 3 && WoW.TargetHasDebuff("Lacerate") && WoW.TargetDebuffTimeRemaining("Lacerate") > 8 && !WoW.PlayerHasBuff("Mongoose Fury") && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mongoose Bite");
                        return;
                    }
                }
            }
        }
Example #13
0
        public override void Pulse()
        {
            if (stopwatch.ElapsedMilliseconds == 0)
            {
                stopwatch.Start();
                Log.Write("The Cooldown toggle button is now Active (Numpad0). The delay is set to 1000ms ( 1 second )", Color.Black);
                return;
            }
            {
                if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_NUMPAD0) < 0)
                {
                    if (stopwatch.ElapsedMilliseconds > 1000)
                    {
                        combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns;
                        WoW.Speak("Cooldowns " + (combatRoutine.UseCooldowns ? "On" : "Off"));
                        stopwatch.Restart();
                    }
                }
                if (combatRoutine.Type == RotationType.SingleTarget)
                {
                    if (WoW.IsSpellInRange("Rupture") && WoW.IsInCombat)
                    {
                        if (UseCooldowns && WoW.CanCast("Kingsbane") && WoW.CurrentComboPoints <= 4 && WoW.Energy >= 35 &&
                            !WoW.IsSpellOnCooldown("Kingsbane") &&
                            (WoW.SpellCooldownTimeRemaining("Vendetta") >= 10 || WoW.TargetHasDebuff("Vendetta")))
                        {
                            WoW.CastSpell("Kingsbane");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.CanCast("Garrote") && WoW.Energy >= 45 && !WoW.TargetHasDebuff("Garrote") &&
                            !WoW.IsSpellOnCooldown("Garrote") &&
                            WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Garrote");
                            return;
                        }
                        if (WoW.TargetHasDebuff("Vendetta") && WoW.CanCast("Fan Of Knives") && WoW.Energy >= 35 && WoW.PlayerHasBuff("FoK") &&
                            WoW.PlayerBuffStacks("FoK") == 30 &&
                            WoW.CurrentComboPoints <= 4)
                        {
                            WoW.CastSpell("Fan Of Knives");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.CanCast("Garrote") && WoW.Energy >= 45 && WoW.TargetHasDebuff("Garrote") &&
                            WoW.TargetDebuffTimeRemaining("Garrote") <= 3 &&
                            WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Garrote");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 4 && WoW.Energy >= 25 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture") &&
                            WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 4 && WoW.Energy >= 25 && WoW.TargetHasDebuff("Rupture") &&
                            WoW.TargetDebuffTimeRemaining("Rupture") <= 6 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 5 && WoW.Energy >= 25 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture") &&
                            WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 5 && WoW.Energy >= 25 && WoW.TargetHasDebuff("Rupture") &&
                            WoW.TargetDebuffTimeRemaining("Rupture") <= 6 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetDebuffTimeRemaining("Toxins") <= 1.5 &&
                            WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 &&
                            WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 6 &&
                            WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetDebuffTimeRemaining("Toxins") <= 1.5 &&
                            WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 &&
                            WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 6 &&
                            WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && !WoW.TargetHasDebuff("Toxins") && WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 &&
                            WoW.CanCast("Envenom") &&
                            WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 6 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && !WoW.TargetHasDebuff("Toxins") && WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 &&
                            WoW.CanCast("Envenom") &&
                            WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 6 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetHasDebuff("Vendetta") && WoW.Energy >= 140 &&
                            WoW.CurrentComboPoints >= 4 &&
                            WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 6 &&
                            WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (WoW.CanCast("Mutilate") && WoW.Energy >= 55 && WoW.CurrentComboPoints <= 3)
                        {
                            WoW.CastSpell("Mutilate");
                            return;
                        }
                        if (UseCooldowns && WoW.CanCast("Vendetta") && !WoW.IsSpellOnCooldown("Vendetta") && WoW.Energy <= 50)
                        {
                            WoW.CastSpell("Vendetta");
                            return;
                        }

                        /*if (UseCooldowns &&
                         * WoW.CanCast("Vanish") &&
                         * WoW.CurrentComboPoints >= 5 &&
                         * WoW.Energy >= 25 && WoW.TargetHasDebuff("Vendetta") &&
                         * (
                         *  WoW.TargetHasDebuff("Rupture") &&
                         *  WoW.TargetDebuffTimeRemaining("Rupture") < 10
                         * )
                         * ) {
                         * WoW.CastSpell("Vanish");
                         * return;
                         * }*/
                        if (UseCooldowns && WoW.CurrentComboPoints == 5 && !WoW.IsSpellOnCooldown("Vanish") && WoW.Energy >= 35 &&
                            WoW.TargetHasDebuff("Vendetta"))
                        {
                            WoW.CastSpell("Vanish");
                            return;
                        }
                        if (UseCooldowns && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("Vanish") && WoW.Energy >= 35 && WoW.TargetHasDebuff("Vendetta"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                    }
                }


                if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.Cleave) // Do AoE Target Stuff here
                {
                    if (WoW.HasTarget && WoW.IsSpellInRange("Rupture") && WoW.IsInCombat)
                    {
                        if (WoW.Energy >= 35 && WoW.CurrentComboPoints <= 4 && WoW.CanCast("Fan Of Knives"))
                        {
                            WoW.CastSpell("Fan Of Knives");
                            return;
                        }
                        if (WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.TargetHealthPercent <= 35 && WoW.CanCast("Envenom"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.TargetHealthPercent <= 35 && WoW.CanCast("Envenom"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (WoW.Energy >= 25 && WoW.CurrentComboPoints == 4 && WoW.TargetHealthPercent >= 36 && WoW.CanCast("Rupture") &&
                            !WoW.TargetHasDebuff("Rupture"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.Energy >= 25 && WoW.CurrentComboPoints == 5 && WoW.TargetHealthPercent >= 36 && WoW.CanCast("Rupture") &&
                            !WoW.TargetHasDebuff("Rupture"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.Energy >= 35 && WoW.CurrentComboPoints >= 4 && WoW.TargetHealthPercent >= 36 && WoW.TargetHasDebuff("Rupture") &&
                            WoW.CanCast("Envenom"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (WoW.CanCast("Garrote") && WoW.Energy >= 45 && !WoW.TargetHasDebuff("Garrote") && !WoW.IsSpellOnCooldown("Garrote") &&
                            WoW.CurrentComboPoints <= 4 &&
                            WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Garrote");
                        }
                    }
                }
            }
        }
Example #14
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
                }
            }
        }
Example #15
0
        public override void Pulse()
        {
            if (WoW.PlayerIsChanneling)
            {
                return;
            }

            if (WoW.CanCast("Muzzle") && WoW.Level >= 35 && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Muzzle") && WoW.TargetPercentCast > Random.Next(30, 85))

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


            if (WoW.CanCast("Aspect of the Eagle") && WoW.Level >= 40 && UseCooldowns)
            {
                WoW.CastSpell("Aspect of the Eagle");
                return;
            }
            if (WoW.CanCast("Exhilaration") && WoW.PlayerHealthPercent <= 35)
            {
                WoW.CastSpell("Exhilaration");
                return;
            }

            if (WoW.CanCast("Aspect of the turtle") && WoW.PlayerHealthPercent <= 25)
            {
                WoW.CastSpell("Aspect of the turtle");
                return;
            }


            if (combatRoutine.Type == RotationType.SingleTarget)

            {
                if (WoW.HasTarget && WoW.TargetIsEnemy)
                {
                    if (!doneOpener)
                    {
                        if (WoW.CanCast("Harpoon") && WoW.Level >= 10)
                        {
                            WoW.CastSpell("Harpoon");
                            doneOpener = true;
                        }
                    }
                }


                if (WoW.CanCast("Spitting Cobra") && WoW.Level >= 100 && WoW.Talent(7) == 1)
                {
                    WoW.CastSpell("Spitting Cobra");
                    return;
                }

                if (WoW.CanCast("Raptor Strike") && WoW.Level >= 20 && WoW.PlayerSpellCharges("Mongoose Bite") <= 0)
                {
                    WoW.CastSpell("Raptor Strike");
                    return;
                }
                if (WoW.CanCast("Fury of the Eagle") && WoW.Level >= 40 && WoW.PlayerBuffStacks("Mongoose Fury") >= 3)
                {
                    WoW.CastSpell("Fury of the Eagle");
                    return;
                }
                if (WoW.CanCast("Caltrops") && WoW.Level >= 60 && WoW.Talent(4) == 1)
                {
                    WoW.CastSpell("Caltrops");
                    return;
                }

                if (WoW.CanCast("Explosive Trap") && WoW.Level >= 50)
                {
                    WoW.CastSpell("Explosive Trap");
                    return;
                }



                if (WoW.CanCast("Lacerate") && WoW.Level >= 26 && !WoW.TargetHasDebuff("Lacerate") && WoW.TargetDebuffTimeRemaining("Lacerate") <= 1000)
                {
                    WoW.CastSpell("Lacerate");
                    return;
                }
                if (WoW.CanCast("Mongoose Bite") && WoW.Level >= 20)
                {
                    WoW.CastSpell("Mongoose Bite");
                    return;
                }

                if (WoW.CanCast("Snake hunter") && WoW.Level >= 30 && WoW.PlayerSpellCharges("Mongoose Bite") < 1)
                {
                    WoW.CastSpell("Snake hunter");
                    return;
                }

                if (WoW.CanCast("Flanking Strike") && WoW.Level >= 12)
                {
                    WoW.CastSpell("Flanking Strike");
                    return;
                }
            }
        }
Example #16
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
            }
        }
Example #17
0
        public override void Pulse() // Updated for Legion (tested and working for single target)
        {
            renewBones   = !WoW.PlayerHasBuff("Bone Shield") || WoW.PlayerBuffTimeRemaining("Bone Shield") <= 500;
            isMelee      = WoW.CanCast("Marrowrend", false, false, true, false, false);
            bonesStack   = WoW.PlayerBuffStacks("Bone Shield");
            currentRunes = WoW.CurrentRunes;
            runicPower   = WoW.RunicPower;
            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsVisible)
                {
                    if (isCDDefEnable)
                    {
                        useCDDef();
                    }
                    if ((renewBones || bonesStack < 3) && isMelee)
                    {
                        if (currentRunes >= 2)
                        {
                            WoW.CastSpell("Marrowrend");
                            return;
                        }
                    }
                    if (WoW.CanCast("Mind Freeze") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 60 && !WoW.IsSpellOnCooldown("Mind Freeze") && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Mind Freeze");
                        return;
                    }
                    if (WoW.CanCast("Blood Boil", false, true, false, true, false) && isMelee && !WoW.TargetHasDebuff("Blood Plague"))
                    {
                        WoW.CastSpell("Blood Boil");
                        return;
                    }
                    if (CanCastNoRange("Consumption") && isMelee)
                    {
                        WoW.CastSpell("Consumption");
                        return;
                    }
                    if (WoW.Talent(1) == 3 && CanCastInRange("BD") && !renewBones && currentRunes >= 1)
                    {
                        WoW.CastSpell("BD");
                        return;
                    }
                    if (isMelee && WoW.PlayerHasBuff("Crimson Scourge") && WoW.TargetHealthPercent >= 10)
                    {
                        WoW.CastSpell("DnD");
                        return;
                    }
                    if (isMelee && runicPower >= 45 && ((WoW.PlayerHasBuff("Ossuary") && (runicPower >= 85 || WoW.HealthPercent < 80)) || WoW.HealthPercent < 50))
                    {
                        WoW.CastSpell("Death Strike");
                        return;
                    }
                    if (isMelee && currentRunes >= 2 && bonesStack <= 6)
                    {
                        WoW.CastSpell("Marrowrend");
                        return;
                    }
                    if (WoW.SpellCooldownTimeRemaining("DnD") == 0 && isMelee && currentRunes >= 2 && WoW.TargetHealthPercent >= 10 && !renewBones && bonesStack > 6)
                    {
                        WoW.CastSpell("DnD");
                        return;
                    }
                    if (isMelee && currentRunes >= 2 && !renewBones && bonesStack > 6 && WoW.TargetHasDebuff("Blood Plague"))
                    {
                        WoW.CastSpell("Heart Strike");
                        return;
                    }
                    if (WoW.CanCast("Blood Boil", false, true, false, true, false) && isMelee)
                    {
                        WoW.CastSpell("Blood Boil");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsVisible)
                {
                    if (isCDDefEnable)
                    {
                        useCDDef();
                    }
                    if ((renewBones || bonesStack < 3) && isMelee)
                    {
                        if (currentRunes >= 2)
                        {
                            WoW.CastSpell("Marrowrend");
                            return;
                        }
                    }
                    if (WoW.CanCast("Blood Boil", true, true, false, true, true) && isMelee && !WoW.TargetHasDebuff("Blood Plague"))
                    {
                        WoW.CastSpell("Blood Boil");
                        return;
                    }
                    if (WoW.Talent(1) == 3 && CanCastInRange("BD") && WoW.HealthPercent <= 60 && !renewBones && currentRunes >= 1)
                    {
                        WoW.CastSpell("BD");
                        return;
                    }
                    if (CanCastNoRange("Consumption") && isMelee)
                    {
                        WoW.CastSpell("Consumption");
                        return;
                    }
                    if (isMelee && WoW.PlayerHasBuff("Crimson Scourge") && WoW.TargetHealthPercent >= 10)
                    {
                        WoW.CastSpell("DnD");
                        return;
                    }
                    if (WoW.Talent(7) == 1 && WoW.SpellCooldownTimeRemaining("Bonestorm") == 0 && isMelee && runicPower >= 100)
                    {
                        WoW.CastSpell("Bonestorm");
                        return;
                    }
                    if (WoW.Talent(7) == 1 && isMelee && runicPower >= 45 && ((runicPower >= 85 && WoW.SpellCooldownTimeRemaining("Bonestorm") >= 300) || WoW.HealthPercent < 70 || WoW.HealthPercent < 50))
                    {
                        WoW.CastSpell("Death Strike");
                        return;
                    }
                    if (WoW.Talent(7) != 1 && isMelee && runicPower >= 45 && (runicPower >= 85 || WoW.HealthPercent < 70))
                    {
                        WoW.CastSpell("Death Strike");
                        return;
                    }

                    if (WoW.SpellCooldownTimeRemaining("DnD") == 0 && isMelee && currentRunes >= 1 && WoW.TargetHealthPercent >= 10 && !renewBones && bonesStack > 2)
                    {
                        WoW.CastSpell("DnD");
                        return;
                    }
                    if (isMelee && currentRunes >= 1 && !renewBones && bonesStack > 2)
                    {
                        WoW.CastSpell("Heart Strike");
                        return;
                    }
                    if (WoW.CanCast("Blood Boil", false, true, false, true, false) && isMelee)
                    {
                        WoW.CastSpell("Blood Boil");
                        return;
                    }
                    if (WoW.Talent(1) == 3 && CanCastInRange("BD") && !renewBones && currentRunes >= 1)
                    {
                        WoW.CastSpell("BD");
                    }
                }
            }
        }
        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");
            }
        }
Example #19
0
        public void MGRotation()
        {
            if (isCheckHotkeysFrostOffensivePillarofFrost && isMelee && combatRoutine.UseCooldowns && !WoW.IsSpellOnCooldown("PillarofFrost"))
            {
                WoW.CastSpell("PillarofFrost");
            }
            if (combatRoutine.UseCooldowns && isCheckHotkeysFrostOffensiveErW && isMelee && currentRunes == 0 && WoW.PlayerHasBuff("PillarofFrost") && !WoW.IsSpellOnCooldown("Empower Rune"))
            {
                WoW.CastSpell("Empower Rune");
            }
            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here
            {
                if (CanCastInRange("Frost Strike") && (!WoW.PlayerHasBuff("Icy Talons") || WoW.PlayerBuffTimeRemaining("Icy Talons") <= 200) && runicPower >= 25 && !(combatRoutine.UseCooldowns && CanCastNoRange("Obliteration") && WoW.Talent(7) == 1) &&
                    (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))))
                {
                    Log.Write("Hasbuff " + WoW.PlayerHasBuff("Icy Talons") + " Remaining " + WoW.PlayerBuffTimeRemaining("Icy Talons"));
                    WoW.CastSpell("Frost Strike");
                    return;
                }
                if (isMelee && WoW.HealthPercent <= 40 && WoW.PlayerHasBuff("Free DeathStrike") && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))))
                {
                    WoW.CastSpell("Death Strike");
                    return;
                }
                if (CanCastInRange("Howling Blast") && !WoW.IsSpellOnCooldown("Howling Blast") && !WoW.TargetHasDebuff("Frost Fever") && currentRunes >= 1 && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))))
                {
                    WoW.CastSpell("Howling Blast");
                    return;
                }
                if (WoW.Talent(6) == 1 && runicPower >= 80 && CanCastInRange("Frost Strike"))
                {
                    WoW.CastSpell("Frost Strike");
                    return;
                }
                if (CanCastInRange("Howling Blast") && WoW.PlayerHasBuff("Rime") && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))))
                {
                    WoW.CastSpell("Howling Blast");
                    return;
                }

                if (combatRoutine.UseCooldowns && isMelee && currentRunes >= 2 && runicPower >= 25 && WoW.Talent(7) == 1 && CanCastNoRange("Obliteration"))
                {
                    WoW.CastSpell("Obliteration");
                    return;
                }
                if (WoW.Talent(7) == 1 && runicPower >= 25 && CanCastInRange("Frost Strike") && WoW.PlayerHasBuff("Obliteration") && !WoW.PlayerHasBuff("Killing Machine"))
                {
                    WoW.CastSpell("Frost Strike");
                    return;
                }

                if (WoW.Talent(7) == 1 && isMelee && currentRunes >= 1 && WoW.PlayerHasBuff("Killing Machine") && WoW.PlayerHasBuff("Obliteration"))
                {
                    WoW.CastSpell("Obliterate");
                    return;
                }
                if (WoW.Talent(6) == 1 && isMelee && currentRunes >= 1 && WoW.PlayerHasBuff("Killing Machine"))
                {
                    WoW.CastSpell("Frostscythe");
                    return;
                }

                if (isMelee && currentRunes >= 2)
                {
                    WoW.CastSpell("Obliterate");
                    return;
                }
                if (WoW.Talent(7) == 3 && isMelee && currentRunes >= 1 && CanCastNoRange("Glacial Advance"))
                {
                    WoW.CastSpell("Glacial Advance");
                    return;
                }
                if (WoW.Talent(7) == 1 && runicPower >= 40 && CanCastInRange("Frost Strike") && !(combatRoutine.UseCooldowns && CanCastNoRange("Obliteration")) && WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))
                {
                    WoW.CastSpell("Frost Strike");
                    return;
                }
                if (isMelee && currentRunes >= 1 && CanCastNoRange("Remorseless Winter") && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))))
                {
                    WoW.CastSpell("Remorseless Winter");
                    return;
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (CanCastInRange("Frost Strike") && (!WoW.PlayerHasBuff("Icy Talons") || WoW.PlayerBuffTimeRemaining("Icy Talons") <= 200) && runicPower >= 25)
                {
                    WoW.CastSpell("Frost Strike");
                    return;
                }
                if (isMelee && WoW.HealthPercent <= 40 && WoW.PlayerHasBuff("Free DeathStrike"))
                {
                    WoW.CastSpell("Death Strike");
                    return;
                }
                if (CanCastInRange("Howling Blast") && !WoW.IsSpellOnCooldown("Howling Blast") && !WoW.TargetHasDebuff("Frost Fever") && currentRunes >= 1)
                {
                    WoW.CastSpell("Howling Blast");
                    return;
                }
                if (CanCastInRange("Howling Blast") && WoW.PlayerHasBuff("Rime"))
                {
                    WoW.CastSpell("Howling Blast");
                    return;
                }
                if (WoW.Talent(6) != 1 && isMelee && currentRunes >= 1 && CanCastNoRange("Remorseless Winter"))
                {
                    WoW.CastSpell("Remorseless Winter");
                    return;
                }
                if (runicPower >= 80 && CanCastInRange("Frost Strike"))
                {
                    WoW.CastSpell("Frost Strike");
                    return;
                }
                if (WoW.Talent(6) != 1 && isMelee && currentRunes >= 2)
                {
                    WoW.CastSpell("Obliterate");
                    return;
                }
                if (WoW.Talent(6) == 1 && currentRunes >= 1 && isMelee && WoW.PlayerHasBuff("Killing Machine"))
                {
                    WoW.CastSpell("Frostscythe");
                    return;
                }
                if (WoW.Talent(7) == 3 && isMelee && currentRunes >= 1 && CanCastNoRange("Glacial Advance"))
                {
                    WoW.CastSpell("Glacial Advance");
                    return;
                }
                if (isMelee && currentRunes >= 1 && CanCastNoRange("Remorseless Winter"))
                {
                    WoW.CastSpell("Remorseless Winter");
                    return;
                }
                if (WoW.Talent(6) == 1 && isMelee && currentRunes >= 1)
                {
                    WoW.CastSpell("Frostscythe");
                    return;
                }

                if (runicPower >= 25 && CanCastInRange("Frost Strike") && WoW.PlayerBuffStacks("Icy Talons") < 3)
                {
                    WoW.CastSpell("Frost Strike");
                    return;
                }

                if (WoW.CanCast("Sindragosa's Fury") && (DetectKeyPress.GetKeyState(0x5A) < 0))
                {
                    WoW.CastSpell("Sindragosa's Fury");
                    return;
                }
            }
        }
Example #20
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
                }
            }
        }
Example #21
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                // Stopwatch START
                if (WoW.IsInCombat && !pullwatch.IsRunning)
                {
                    pullwatch.Start();
                    Log.Write("Entering Combat, Starting opener timer.", Color.Red);
                }
                // Stopwatch stop
                if (!WoW.IsInCombat && pullwatch.ElapsedMilliseconds >= 1000)
                {
                    pullwatch.Reset();
                    ripunbuffed.Reset();
                    ripbuffed.Reset();
                    superrip.Reset();
                    Log.Write("Leaving Combat, Resetting opener timer.", Color.Red);
                }

                //PVP, Basic PVP with Brutal Slash, Incarnation and Renewal (if enabled)
                if (WoW.TargetIsPlayer && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("Regrowth") && WoW.PlayerHasBuff("Regrowth") && WoW.HealthPercent <= 80 && WoW.PlayerHasBuff("PredatorySwiftness"))
                    {
                        WoW.CastSpell("Regrowth");
                        return;
                    }
                    if (Renewal && WoW.CanCast("Renwal") && WoW.HealthPercent <= 70)
                    {
                        WoW.CastSpell("Renewal");
                        return;
                    }
                    if ((WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.CurrentComboPoints >= 5 && WoW.TargetHasDebuff("Rip")) && WoW.TargetDebuffTimeRemaining("Rip") >= 500 && (WoW.Energy >= 50 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk")))
                    {
                        WoW.CastSpell("FerociousBite");
                        return;
                    }

                    if ((WoW.IsSpellInRange("Rake") && WoW.CanCast("Rake") && (!WoW.TargetHasDebuff("Rake") || WoW.TargetDebuffTimeRemaining("Rake") <= 300)) && (WoW.Energy >= 35 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk")))
                    {
                        WoW.CastSpell("Rake");
                        return;
                    }
                    if (WoW.IsSpellInRange("Ashamane") && WoW.CanCast("Ashamane") && !WoW.IsSpellOnCooldown("Ashamane") && WoW.CurrentComboPoints <= 2)
                    {
                        WoW.CastSpell("Ashamane");
                        return;
                    }

                    if ((WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.CurrentComboPoints >= 5 && (!WoW.TargetHasDebuff("Rip") || WoW.TargetDebuffTimeRemaining("Rip") <= 500)) && (WoW.Energy >= 30 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk")))
                    {
                        WoW.CastSpell("Rip");
                        return;
                    }

                    if ((WoW.IsSpellInRange("Shred") && WoW.CanCast("Shred") && WoW.CurrentComboPoints < 5 && WoW.TargetHasDebuff("Rake") && (WoW.IsSpellOnCooldown("BrutalSlash") || !BrutalSlash) && (WoW.Energy >= 40 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk"))))
                    {
                        WoW.CastSpell("Shred");
                        return;
                    }
                    if (WoW.CanCast("TigersFury") && WoW.Energy <= 20 && !WoW.IsSpellOnCooldown("TigersFury"))
                    {
                        WoW.CastSpell("TigersFury");
                        return;
                    }
                    if (BrutalSlash && WoW.IsSpellInRange("Shred") && WoW.CanCast("BrutalSlash") && !WoW.IsSpellOnCooldown("BrutalSlash") && (WoW.Energy >= 20 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk")))
                    {
                        WoW.CastSpell("BrutalSlash");
                        return;
                    }
                }

                // OPENER
                if (WoW.IsInCombat && WoW.TargetIsEnemy && WoW.IsBoss && pullwatch.ElapsedMilliseconds < 10000 && UseCooldowns)
                {
                    if (Bloodtalons && WoW.CanCast("Regrowth"))
                    {
                        if (WoW.CurrentComboPoints >= 2 && !WoW.PlayerHasBuff("Savage Roar") && WoW.PlayerHasBuff("PredatorySwiftness"))
                        {
                            WoW.CastSpell("Regrowth");
                            return;
                        }
                        if (WoW.CurrentComboPoints >= 5 && WoW.PlayerHasBuff("PredatorySwiftness"))
                        {
                            WoW.CastSpell("Regrowth");
                            return;
                        }
                        if (WoW.PlayerBuffTimeRemaining("PredatorySwiftness") < 150 && WoW.PlayerHasBuff("PredatorySwiftness"))
                        {
                            WoW.CastSpell("Regrowth");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 2 && !WoW.PlayerHasBuff("Bloodtalons") && WoW.SpellCooldownTimeRemaining("Ashamane") <= 100 && WoW.PlayerHasBuff("PredatorySwiftness"))
                        {
                            WoW.CastSpell("Regrowth");
                            return;
                        }
                        // If Elunes Guidance talent enabled
                        if (ElunesGuidance)
                        {
                            if (WoW.SpellCooldownTimeRemaining("ElunesGuidance") <= 100 && WoW.CurrentComboPoints == 0)
                            {
                                WoW.CastSpell("Regrowth");
                                return;
                            }
                            if (WoW.PlayerHasBuff("ElunesGuidance") && WoW.CurrentComboPoints >= 4)
                            {
                                WoW.CastSpell("Regrowth");
                                return;
                            }
                        }
                    }
                    if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.CurrentComboPoints == 5 && !WoW.PlayerHasBuff("SavageRoar"))
                    {
                        WoW.CastSpell("SavageRoar");
                        return;
                    }
                    if (SavageRoar && WoW.CanCast("SavageRoar") && !WoW.PlayerHasBuff("SavageRoar") && WoW.CurrentComboPoints >= 2)
                    {
                        WoW.CastSpell("SavageRoar");
                        return;
                    }
                    if (WoW.CanCast("TigersFury") && WoW.Energy <= 30)
                    {
                        WoW.CastSpell("TigersFury");
                        return;
                    }
                    if (WoW.CanCast("TigersFury") &&
                        WoW.PlayerHasBuff("SavageRoar"))
                    {
                        WoW.CastSpell("TigersFury");
                        return;
                    }
                    if (!Incarnation && WoW.CanCast("Berserk") &&
                        WoW.PlayerHasBuff("SavageRoar"))
                    {
                        WoW.CastSpell("Berserk");
                        return;
                    }
                    if (Incarnation && WoW.CanCast("Incarnation") &&
                        WoW.PlayerHasBuff("SavageRoar"))
                    {
                        WoW.CastSpell("Incarnation");
                        return;
                    }
                    if (WoW.CanCast("Rake") && !WoW.TargetHasDebuff("Rake"))
                    {
                        WoW.CastSpell("Rake");
                        return;
                    }
                    if (LunarInspiration && !WoW.TargetHasDebuff("Moonfire") && WoW.IsSpellInRange("SkullBash") && WoW.Energy >= 30 && WoW.CurrentComboPoints < 5)
                    {
                        WoW.CastSpell("Moonfire");
                        return;
                    }
                    {
                        WoW.CastSpell("Moonfire");
                        return;
                    }
                    if (WoW.CanCast("Ashamane") && WoW.TargetHasDebuff("Rip"))
                    {
                        WoW.CastSpell("Ashamane");
                        return;
                    }
                    if (WoW.CanCast("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.CurrentComboPoints == 5)
                    {
                        WoW.CastSpell("Rip");
                        return;
                    }
                    if (WoW.CanCast("Shred") && WoW.CurrentComboPoints < 5)
                    {
                        WoW.CastSpell("Shred");
                        return;
                    }
                }

                // OPEN COMBAT WITH SHADOWMELD RAKE
                if (WoW.TargetIsEnemy && WoW.IsInCombat && (WoW.PlayerHasBuff("Prowl") || WoW.PlayerHasBuff("Shadowmeld")))
                {
                    if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Rake"))
                    {
                        WoW.CastSpell("Rake");
                        return;
                    }
                }

                // COOLDOWN ROTATION
                if (WoW.IsInCombat && WoW.TargetIsEnemy && UseCooldowns)
                {
                    if (!Incarnation && WoW.CanCast("Berserk") && WoW.PlayerHasBuff("TigersFury") || WoW.SpellCooldownTimeRemaining("TigersFury") < 200)
                    {
                        WoW.CastSpell("Berserk");
                        return;
                    }
                    if (Incarnation && WoW.CanCast("Incarnation") && WoW.PlayerHasBuff("TigersFury") || WoW.SpellCooldownTimeRemaining("TigersFury") < 200)
                    {
                        WoW.CastSpell("Incarnation");
                        return;
                    }
                }

                // PRIMARY ROTATION
                if (WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Prowl") && WoW.PlayerHasBuff("Cat Form"))
                {
                    // Tigers Fury on cooldown if under 30 Energy
                    if (WoW.CanCast("TigersFury") && WoW.Energy <= 30)
                    {
                        WoW.CastSpell("TigersFury");
                        return;
                    }
                    // Keep Rip from falling off during execute range
                    if (WoW.IsSpellInRange("Rake") && WoW.CanCast("FerociousBite") && WoW.TargetHasDebuff("Rip") && WoW.TargetHasDebuff("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.TargetDebuffTimeRemaining("Rip") < 3 && WoW.TargetHealthPercent <= 25 && WoW.Energy >= 25)
                    {
                        WoW.CastSpell("FerociousBite");
                        return;
                    }
                    // Regrowth logic with Bloodtalons talent enabled
                    if (Bloodtalons && WoW.CanCast("Regrowth"))
                    {
                        if (WoW.CurrentComboPoints >= 5 && WoW.PlayerHasBuff("PredatorySwiftness"))
                        {
                            WoW.CastSpell("Regrowth");
                            return;
                        }
                        if (WoW.PlayerBuffTimeRemaining("PredatorySwiftness") < 1500 && WoW.PlayerHasBuff("PredatorySwiftness"))
                        {
                            WoW.CastSpell("Regrowth");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 2 && !WoW.PlayerHasBuff("Bloodtalons") && WoW.SpellCooldownTimeRemaining("Ashamane") <= 100 && WoW.PlayerHasBuff("PredatorySwiftness"))
                        {
                            WoW.CastSpell("Regrowth");
                            return;
                        }
                        // If Elunes Guidance talent enabled
                        if (ElunesGuidance)
                        {
                            if (WoW.SpellCooldownTimeRemaining("ElunesGuidance") <= 100 && WoW.CurrentComboPoints == 0)
                            {
                                WoW.CastSpell("Regrowth");
                                return;
                            }
                            if (WoW.PlayerHasBuff("ElunesGuidance") && WoW.CurrentComboPoints >= 4)
                            {
                                WoW.CastSpell("Regrowth");
                                return;
                            }
                        }
                    }
                    // Sabertooth Opener
                    //if (Sabertooth)
                    //{

                    //}

                    // LEGENDARY LOGIC
                    if (AiluroPouncers)
                    {
                        if (Bloodtalons && WoW.CanCast("Regrowth") && WoW.PlayerBuffStacks("PredatorySwiftness") > 1 && !WoW.PlayerHasBuff("Bloodtalons") && WoW.PlayerHasBuff("PredatorySwiftness"))
                        {
                            WoW.CastSpell("Regrowth");
                            return;
                        }
                    }
                    // FINISHER LOGIC
                    // FINISHER LOGIC
                    // If have Savage Roar and Rip under 3 seconds remaining and target above 25% hp, cast BUFFED rip.
                    //if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && WoW.TargetHasDebuff("Rip") && WoW.TargetDebuffTimeRemaining("Rip") < 2 && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") < 8 && WoW.TargetHealthPercent > 25 && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("TigersFury"))
                    //{
                    //    WoW.CastSpell("Rip");
                    //    ripbuffed.Reset();
                    //    ripbuffed.Start();
                    //    ripunbuffed.Reset();
                    //    Log.Write("Override Savage Roar refresh when Rip under 3seconds remaining.", Color.Red);
                    //    return;
                    //}
                    ////
                    //if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && WoW.TargetHasDebuff("Rip") && WoW.TargetDebuffTimeRemaining("Rip") < 2 && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") < 8 && WoW.TargetHealthPercent > 25 && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("TigersFury"))
                    //{
                    //    WoW.CastSpell("Rip");
                    //    ripbuffed.Reset();
                    //    ripbuffed.Start();
                    //    ripunbuffed.Reset();
                    //    Log.Write("Override Savage Roar refresh when Rip under 3seconds remaining.", Color.Red);
                    //    return;
                    //}
                    // Savage Roar if player dont have buff Savage Roar and is at 5 combo points.
                    if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.Energy >= 40 && !WoW.PlayerHasBuff("SavageRoar") && WoW.CurrentComboPoints == 5)
                    {
                        WoW.CastSpell("SavageRoar");
                        return;
                    }
                    // Savage Roar if player have buff Savage Roar and is under 2 seconds remaining and is at 5 combo points.
                    if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.Energy >= 40 && WoW.PlayerBuffTimeRemaining("SavageRoar") <= 200 && WoW.PlayerHasBuff("SavageRoar") && WoW.CurrentComboPoints == 5)
                    {
                        WoW.CastSpell("SavageRoar");
                        return;
                    }
                    // Ferocious Bite if HP under 25% and Rip Remaining under 3 seconds. (will extend Rip)
                    if (WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.CurrentComboPoints > 1 && WoW.TargetDebuffTimeRemaining("Rip") < 300 && WoW.TargetHealthPercent < 25 && WoW.TargetHasDebuff("Rip"))
                    {
                        WoW.CastSpell("FerociousBite");
                        return;
                    }
                    // If TigersFury running.
                    if (WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.CurrentComboPoints == 5 && ripbuffed.IsRunning && WoW.TargetHasBuff("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") <= 1000 && WoW.TargetDebuffTimeRemaining("Rip") > 7)
                    {
                        WoW.CastSpell("FerociousBite");
                        Log.Write("O mighty super bite.");
                    }
                    // Refresh Rip if not on target and tigersfury or berserk
                    if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && !WoW.TargetHasDebuff("Rip") && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("TigersFury"))
                    {
                        WoW.CastSpell("Rip");
                        ripbuffed.Start();
                        ripunbuffed.Reset();
                        Log.Write("Buffed Rip. Berserk or Tigers Fury buff.", Color.Red);
                        return;
                    }
                    // Refresh Rip for stronger Rip
                    if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && ripunbuffed.IsRunning && WoW.PlayerHasBuff("TigersFury") && WoW.CurrentComboPoints == 5)
                    {
                        WoW.CastSpell("Rip");
                        ripbuffed.Start();
                        ripunbuffed.Reset();
                        Log.Write("Buffed Rip. Berserk or Tigers Fury buff.", Color.Red);
                        return;
                    }
                    // Refresh Rip at 8 seconds if have Tigers fury or Berserk buff.
                    if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && !Sabertooth && WoW.TargetDebuffTimeRemaining("Rip") < 800 && WoW.TargetHealthPercent > 25 && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("TigersFury"))
                    {
                        WoW.CastSpell("Rip");
                        ripbuffed.Start();
                        ripunbuffed.Reset();
                        Log.Write("Buffed Rip. Berserk or Tigers Fury buff.", Color.Red);
                        return;
                    }
                    // Refresh Rip at 8 seconds if no buff and no sabertooth talent and non-buffed rip is running.
                    if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && !Sabertooth && WoW.TargetDebuffTimeRemaining("Rip") < 800 && WoW.TargetHealthPercent > 25 && WoW.CurrentComboPoints == 5 && !ripbuffed.IsRunning)
                    {
                        WoW.CastSpell("Rip");
                        ripunbuffed.Start();
                        ripbuffed.Reset();
                        Log.Write("Unbuffed Rip. Under 8 secs remaining on Unbuffed Rip.", Color.Red);
                        return;
                    }
                    // Refresh Rip if not on target.
                    if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && !WoW.TargetHasDebuff("Rip") && WoW.CurrentComboPoints == 5)
                    {
                        WoW.CastSpell("Rip");
                        ripunbuffed.Start();
                        ripbuffed.Reset();
                        Log.Write("Unbuffed Rip. No Rip on target.", Color.Red);
                        return;
                    }
                    // Refresh Rip if under 2 seconds remaining.
                    if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && WoW.TargetDebuffTimeRemaining("Rip") < 200 && WoW.CurrentComboPoints == 5)
                    {
                        WoW.CastSpell("Rip");
                        ripunbuffed.Start();
                        ripbuffed.Reset();
                        Log.Write("Unbuffed Rip. No Rip under 2secs remaining.", Color.Red);
                        return;
                    }
                    // Refresh Savage roar at under 7.2 secons remaining if no JaggedWounds talent
                    if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.Energy >= 40 && !JaggedWounds && WoW.PlayerBuffTimeRemaining("SavageRoar") < 720 && WoW.CurrentComboPoints == 5)
                    {
                        WoW.CastSpell("SavageRoar");
                        return;
                    }
                    // Refresh Savage Roar early with jagged wounds talent
                    if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.Energy >= 40 && JaggedWounds && WoW.PlayerBuffTimeRemaining("SavageRoar") < 1050 && WoW.CurrentComboPoints == 5)
                    {
                        WoW.CastSpell("SavageRoar");
                        return;
                    }
                    // FB cast without JaggedWounds talent
                    if (WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.Energy >= 25 && WoW.CurrentComboPoints == 5 && !JaggedWounds && WoW.TargetHasDebuff("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") > 920 && WoW.TargetDebuffTimeRemaining("Rip") > 1000)
                    {
                        WoW.CastSpell("FerociousBite");
                        return;
                    }
                    // FB cast with JaggedWounds talent
                    if (WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.Energy >= 25 && WoW.CurrentComboPoints == 5 && JaggedWounds && WoW.TargetHasDebuff("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") > 1250 && WoW.TargetDebuffTimeRemaining("Rip") > 1000)
                    {
                        WoW.CastSpell("FerociousBite");
                        return;
                    }
                    // GENERATOR LOGIC
                    // GENERATOR LOGIC
                    if (WoW.IsSpellInRange("Ashamane") && WoW.CanCast("Ashamane") && WoW.CurrentComboPoints <= 2 && !ElunesGuidance)
                    {
                        WoW.CastSpell("Ashamane");
                        return;
                    }
                    if (ElunesGuidance && WoW.CanCast("ElunesGuidance") && WoW.CurrentComboPoints == 0 && WoW.Energy >= 30)
                    {
                        WoW.CastSpell("ElunesGuidance");
                        return;
                    }
                    if (NightElf && WoW.CanCast("Shadowmeld") && WoW.CurrentComboPoints < 5 && WoW.Energy >= 35 && WoW.PlayerHasBuff("TigersFury"))
                    {
                        WoW.CastSpell("Shadowmeld");
                        return;
                    }
                    if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Rake") && WoW.Energy >= 35)
                    {
                        // TODO : Code in bleed multiplier
                        if (WoW.CurrentComboPoints < 5 && Bloodtalons && WoW.PlayerHasBuff("Bloodtalons") && WoW.TargetDebuffTimeRemaining("Rake") <= 500)
                        {
                            WoW.CastSpell("Rake");
                            return;
                        }
                        if (WoW.CurrentComboPoints < 5 && !WoW.TargetHasDebuff("Rake"))
                        {
                            WoW.CastSpell("Rake");
                            return;
                        }
                        if (WoW.CurrentComboPoints < 5 && WoW.TargetDebuffTimeRemaining("Rake") <= 300)
                        {
                            WoW.CastSpell("Rake");
                            return;
                        }
                    }
                    if (LunarInspiration && !WoW.TargetHasDebuff("Moonfire") && WoW.IsSpellInRange("SkullBash") && WoW.Energy >= 30 && WoW.CurrentComboPoints < 5)
                    {
                        WoW.CastSpell("Moonfire");
                        return;
                    }
                    //if (LunarInspiration && WoW.IsSpellInRange("Moonfire") && WoW.CanCast("Moonfire") && WoW.Energy >= 30)
                    //{
                    //    if (WoW.CurrentComboPoints < 5 && WoW.TargetDebuffTimeRemaining("Moonfire") <= 4.2)
                    //    {
                    //        WoW.CastSpell("Moonfire");
                    //        return;
                    //    }
                    //    if (WoW.CurrentComboPoints < 5 && !WoW.TargetHasDebuff("Moonfire"))
                    //    {
                    //        WoW.CastSpell("Moonfire");
                    //        return;
                    //    }
                    //}
                    if (BrutalSlash && WoW.IsSpellInRange("Rake") && WoW.CanCast("BrutalSlash") && WoW.PlayerSpellCharges("BrutalSlash") == 3 && WoW.Energy >= 20)
                    {
                        WoW.CastSpell("BrutalSlash");
                        return;
                    }
                    if (WoW.IsSpellInRange("Shred") && WoW.CanCast("Shred") && WoW.CurrentComboPoints < 5 && WoW.Energy >= 40)
                    {
                        WoW.CastSpell("Shred");
                        return;
                    }
                }
            }

            //  AOE ROTATION
            if (combatRoutine.Type == RotationType.AOE)
            {
                // In combat, target is enemy, target is not player, i dont have prowl and i have buff catform
                if (WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.TargetIsPlayer && !WoW.PlayerHasBuff("Prowl") && WoW.PlayerHasBuff("Cat Form"))
                {
                    if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Rake") && !WoW.TargetHasDebuff("Rake") && WoW.Energy >= 35)
                    {
                        WoW.CastSpell("Rake");
                        return;
                    }
                    if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Thrash") && !WoW.TargetHasDebuff("Thrash") && WoW.Energy >= 50)
                    {
                        WoW.CastSpell("Thrash");
                        return;
                    }
                    if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Swipe") && WoW.TargetHasDebuff("Thrash") && WoW.CurrentComboPoints < 5 && WoW.Energy >= 45)
                    {
                        WoW.CastSpell("Swipe");
                        return;
                    }
                    if (SavageRoar && WoW.CanCast("Savage Roar") && WoW.CurrentComboPoints == 5 && !WoW.PlayerHasBuff("Savage Roar") && WoW.Energy >= 40)
                    {
                        WoW.CastSpell("SavageRoar");
                        return;
                    }
                    if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.CurrentComboPoints == 5 && !WoW.TargetHasDebuff("Rip") && WoW.Energy >= 30)
                    {
                        WoW.CastSpell("Rip");
                        return;
                    }
                }
            }
        }
        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
            }
        }
Example #23
0
        public override void Pulse()
        {
            if (WoW.IsMounted)
            {
                return;
            }

            // if (WoW.TargetIsCasting && interruptwatch.ElapsedMilliseconds > 1200)
            // {
            // if (!WoW.IsSpellOnCooldown("Sigil of Silence") && WoW.WasLastCasted("Arcane Torrent"))
            // {

            // WoW.CastSpell("Sigil of Silence");
            // interruptwatch.Reset();
            // interruptwatch.Start();
            // return;
            // }

            // if (!WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.WasLastCasted("Sigil of Silence"))
            // {

            // WoW.CastSpell("Arcane Torrent");
            // interruptwatch.Reset();
            // interruptwatch.Start();
            // return;
            // }
            // }
            if (UseCooldowns)
            {
            }

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

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

            if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphosis"))
            {
                Log.Write("Health low < 30% using CDs...", Color.Red);
                WoW.CastSpell("Metamorphosis"); // Off the GCD no return needed
            }
            {
                if (!WoW.PlayerHasBuff("Metamorphosis"))
                {
                    if (!WoW.PlayerIsCasting && WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.HealthPercent < 35)
                    {
                        WoW.CastSpell("HealthstoneKeybind");
                    }

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

                    if (WoW.CanCast("Sigil of Flame") && (!WoW.TargetHasDebuff("Sigil of Flame") && WoW.IsSpellInRange("Soul Carver")))
                    {
                        WoW.CastSpell("Sigil of Flame");                  // Must have "Concentrated Sigil's" talent or macro set up
                        return;
                    }



                    if (WoW.CanCast("Immolation Aura") && WoW.IsSpellInRange("Soul Carver"))
                    {
                        WoW.CastSpell("Immolation Aura");
                        return;
                    }
                    if (WoW.CanCast("Soul Carver") && WoW.IsSpellInRange("Soul Carver"))
                    {
                        WoW.CastSpell("Soul Carver");
                        return;
                    }
                    if (WoW.CanCast("Fracture") && WoW.IsSpellInRange("Soul Carver") && (WoW.Pain > 30 && (WoW.PlayerBuffStacks("Soul Fragments") < 3)))
                    {
                        WoW.CastSpell("Fracture");
                        return;
                    }
                    if (WoW.CanCast("Spirit Bomb") && !WoW.IsSpellOnCooldown("Spirit Bomb") && (WoW.PlayerHasBuff("Soul Fragments") && !WoW.TargetHasDebuff("Frailty")))
                    {
                        WoW.CastSpell("Spirit Bomb");
                        return;
                    }
                    if (WoW.CanCast("Spirit Bomb") && !WoW.IsSpellOnCooldown("Spirit Bomb") && (WoW.PlayerHasBuff("Soul Fragments") && (WoW.PlayerBuffStacks("Soul Fragments") >= 3)))
                    {
                        WoW.CastSpell("Spirit Bomb");
                        return;
                    }
                    if (WoW.CanCast("Fiery Brand") && !WoW.TargetHasDebuff("Fiery Demise"))
                    {
                        WoW.CastSpell("Fiery Brand");
                    }
                    if (WoW.CanCast("Soul Cleave") && !WoW.IsSpellOnCooldown("Soul Cleave") && WoW.IsSpellInRange("Soul Carver") && WoW.Pain > 100)
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }
                    // if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && !WoW.IsSpellOnCooldown("Demon Spikes") && (WoW.Pain == 80 || WoW.HealthPercent < 80 && WoW.Pain > 20 )) // to not waste cd and pain
                    // {
                    // WoW.CastSpell("Demon Spikes");
                    // }


                    // if (WoW.CanCast("Shear") && WoW.IsSpellInRange("Soul Carver") && WoW.Pain < 30 || WoW.Pain < 100 && !WoW.PlayerHasBuff("Soul Fragments")) // Pain Generator
                    // {
                    // WoW.CastSpell("Shear");
                    // return;
                    // }

                    if (WoW.CanCast("Shear") && WoW.IsSpellInRange("Soul Carver") && WoW.Pain <= 30 && !WoW.PlayerHasBuff("Soul Fragments"))            // Pain Generator
                    {
                        WoW.CastSpell("Shear");
                        return;
                    }
                    if (WoW.CanCast("Shear") && WoW.IsSpellInRange("Soul Carver") && WoW.Pain <= 30)            // Pain Generator
                    {
                        WoW.CastSpell("Shear");
                        return;
                    }
                    if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && (WoW.Pain >= 90 || WoW.HealthPercent < 80 && WoW.Pain >= 20))             // to not waste CD and Pain
                    {
                        WoW.CastSpell("Demon Spikes");
                    }



                    // if (WoW.ItemCount("Trinket") == 1 && !WoW.ItemOnCooldown("Trinket") && WoW.IsSpellInRange("Soul Carver"))
                    // {
                    // WoW.CastSpell("TrinketKeybind");
                    // return;
                    // }
                }
                if (WoW.PlayerHasBuff("Metamorphosis"))
                {
                    if (WoW.CanCast("Sigil of Flame") && (!WoW.TargetHasDebuff("Sigil of Flame") && WoW.IsSpellInRange("Soul Carver")))
                    {
                        WoW.CastSpell("Sigil of Flame");                          // NB must have "Concentrated Sigil's" talent or macro setup
                        return;
                    }

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

                    if (WoW.CanCast("Sever") && WoW.IsSpellInRange("Soul Carver") && WoW.PlayerBuffStacks("Soul Fragments") <= 3)
                    {
                        WoW.CastSpell("Sever");
                        return;
                    }
                    if (!WoW.PlayerIsCasting && WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.HealthPercent < 30)
                    {
                        WoW.CastSpell("HealthstoneKeybind");
                    }
                    if (WoW.CanCast("Throw Glaive") && !WoW.IsSpellOnCooldown("Throw Glaive") && !WoW.IsSpellInRange("Soul Carver"))
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }

                    if (WoW.CanCast("Immolation Aura") && WoW.IsSpellInRange("Soul Carver"))
                    {
                        WoW.CastSpell("Immolation Aura");
                        return;
                    }
                    if (WoW.CanCast("Soul Cleave") && !WoW.IsSpellOnCooldown("Soul Cleave") && WoW.IsSpellInRange("Soul Carver") && (WoW.Pain > 50 && WoW.PlayerBuffStacks("Soul Fragments") >= 3))
                    {
                        WoW.CastSpell("Soul Cleave");
                        return;
                    }
                    if (WoW.CanCast("Fracture") && WoW.IsSpellInRange("Soul Carver") && (WoW.Pain >= 90 && (!WoW.PlayerHasBuff("Soul Fragments"))))
                    {
                        WoW.CastSpell("Fracture");
                        return;
                    }
                    // if (WoW.CanCast("Spirit Bomb") && !WoW.IsSpellOnCooldown("Spirit Bomb") && (WoW.PlayerHasBuff("Soul Fragments") && (WoW.PlayerBuffStacks("Soul Fragments") >= 5)))
                    // {
                    // WoW.CastSpell("Spirit Bomb");
                    // return;
                    // }
                    // if (WoW.CanCast("Sever") && !WoW.CanCast("Soul Carver") && WoW.PlayerBuffStacks("Soul Fragments") < 5)
                    // {
                    // WoW.CastSpell("Sever");
                    // return;
                    // }



                    // if (WoW.ItemCount("Trinket") == 1 && !WoW.ItemOnCooldown("Trinket") && WoW.IsSpellInRange("Soul Carver"))
                    // {
                    // WoW.CastSpell("TrinketKeybind");
                    // return;
                    // }
                }



                // if (WoW.TargetIsChanneling == 233441)
                // {
                // WoW.CastSpell("Empower Wards");



                // }
                // if (WoW.CanCast("Fiery Brand") && !WoW.TargetHasDebuff("Fiery Demise") && WoW.PlayerHasBuff("Spirit of the Darkness Flame") && (WoW.PlayerBuffStacks("Spirit of the Darkness Flame") >= 7))
                // {
                // WoW.CastSpell("Fiery Brand");
                // }
                // if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && (WoW.Pain >= 90 || WoW.HealthPercent < 90 && WoW.Pain >= 20)) // to not waste cd and pain
                // {
                // WoW.CastSpell("Demon Spikes");
                // }
                // if (WoW.CanCast("Fel Devastation") && WoW.IsSpellInRange("Soul Carver") && WoW.Pain >= 30)
                // {
                // WoW.CastSpell("Fel Devastation");
                // }
                // 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.IsSpellInRange("Soul Carver") && ((WoW.Pain >= 60 && WoW.HealthPercent >= 40 && WoW.PlayerHasBuff("Demon Spikes")) || (WoW.Pain >= 80 && WoW.HealthPercent >= 40 && !WoW.CanCast("Demon Spikes"))))
                // {
                // WoW.CastSpell("Fracture");
                // return;
                // }
                //if (WoW.CanCast("Felblade"))  // Pain Generator
                //{
                //    WoW.CastSpell("Felblade");
                //	return;
                //}
            }
        }
Example #24
0
        public override void Pulse()
        {
            {
                if (combatRoutine.Type == RotationType.SingleTarget)
                {
                    if (WoW.IsSpellInRange("Rupture") && WoW.IsInCombat && !WoW.IsMounted)
                    {
                        if (UseCooldowns &&
                            WoW.CanCast("Kingsbane") && WoW.CurrentComboPoints <= 4 && WoW.Energy >= 35 && WoW.PlayerHasBuff("Envenom") && WoW.PlayerBuffTimeRemaining("Envenom") >= 150 &&
                            !WoW.IsSpellOnCooldown("Kingsbane") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") >= 1400 &&
                            (
                                WoW.SpellCooldownTimeRemaining("Vendetta") >= 1000 ||
                                WoW.TargetHasDebuff("Vendetta")
                            ))
                        {
                            WoW.CastSpell("Kingsbane");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.CanCast("Garrote") && WoW.Energy >= 45 && !WoW.TargetHasDebuff("Garrote") && !WoW.IsSpellOnCooldown("Garrote") && WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Garrote");
                            return;
                        }
                        if (WoW.TargetHasDebuff("Vendetta") && WoW.CanCast("Fan Of Knives") && WoW.Energy >= 35 && WoW.PlayerHasBuff("FoK") && WoW.PlayerBuffStacks("FoK") == 30 && WoW.CurrentComboPoints <= 4)
                        {
                            WoW.CastSpell("Fan Of Knives");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.CanCast("Garrote") && WoW.Energy >= 45 && WoW.TargetHasDebuff("Garrote") && WoW.TargetDebuffTimeRemaining("Garrote") <= 300 && WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Garrote");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 4 && WoW.Energy >= 25 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture") && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 4 && WoW.Energy >= 25 && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") <= 600 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 5 && WoW.Energy >= 25 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture") && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.CurrentComboPoints == 5 && WoW.Energy >= 25 && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") <= 600 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetDebuffTimeRemaining("Toxins") <= 150 && WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetDebuffTimeRemaining("Toxins") <= 150 && WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (WoW.TargetHasDebuff("Kingsbane") && WoW.TargetDebuffTimeRemaining("Rupture") >= 400 && WoW.Energy >= 35 && WoW.CurrentComboPoints >= 2 && WoW.PlayerHasBuff("Envenom") && WoW.PlayerBuffTimeRemaining("Envenom") <= 150)
                        {
                            WoW.CastSpell("Envenom");
                            Log.Write("Extend Envenom remaining");
                            return;
                        }
                        if (WoW.TargetHasDebuff("Kingsbane") && WoW.TargetDebuffTimeRemaining("Rupture") >= 400 && WoW.Energy >= 35 && WoW.CurrentComboPoints >= 2 && !WoW.PlayerHasBuff("Envenom"))
                        {
                            WoW.CastSpell("Envenom");
                            Log.Write("Getting Envenom up for kingsbane");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && !WoW.TargetHasDebuff("Toxins") && WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && !WoW.TargetHasDebuff("Toxins") && WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetHasDebuff("Vendetta") && WoW.Energy >= 140 && WoW.CurrentComboPoints >= 4 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (WoW.CanCast("Mutilate") && WoW.Energy >= 55 && WoW.CurrentComboPoints <= 3)
                        {
                            WoW.CastSpell("Mutilate");
                            return;
                        }
                        if (UseCooldowns && WoW.CanCast("Vendetta") &&
                            !WoW.IsSpellOnCooldown("Vendetta") &&
                            WoW.Energy <= 50
                            )
                        {
                            WoW.CastSpell("Vendetta");
                            return;
                        }

                        /*if (UseCooldowns &&
                         * WoW.CanCast("Vanish") &&
                         * WoW.CurrentComboPoints >= 5 &&
                         * WoW.Energy >= 25 && WoW.TargetHasDebuff("Vendetta") &&
                         * (
                         * WoW.TargetHasDebuff("Rupture") &&
                         * WoW.TargetDebuffTimeRemaining("Rupture") < 10
                         * )
                         * ) {
                         * WoW.CastSpell("Vanish");
                         * return;
                         * }*/
                        if (!WoW.PlayerHasBuff("Critbuff") && UseCooldowns && WoW.CurrentComboPoints == 5 && !WoW.IsSpellOnCooldown("Vanish") && WoW.Energy >= 35 && WoW.TargetHasDebuff("Vendetta"))
                        {
                            WoW.CastSpell("Vanish");
                            return;
                        }
                        if (UseCooldowns && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("Vanish") && WoW.Energy >= 35 && WoW.TargetHasDebuff("Vendetta"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (UseCooldowns && WoW.CanCast("Berserk") && !WoW.IsSpellOnCooldown("Berserk") && WoW.TargetHasDebuff("Vendetta") && WoW.PlayerRace == "Troll")
                        {
                            WoW.CastSpell("Berserk");
                            return;
                        }
                    }
                }


                if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.SingleTargetCleave) // Do AoE Target Stuff here
                {
                    if (WoW.HasTarget && WoW.IsSpellInRange("Rupture") && WoW.IsInCombat && !WoW.IsMounted)
                    {
                        if (WoW.Energy >= 35 && WoW.CurrentComboPoints <= 4 && WoW.CanCast("Fan Of Knives"))
                        {
                            WoW.CastSpell("Fan Of Knives");
                            return;
                        }
                        if (WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.TargetHealthPercent <= 35 && WoW.CanCast("Envenom"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.TargetHealthPercent <= 35 && WoW.CanCast("Envenom"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (WoW.Energy >= 25 && WoW.CurrentComboPoints == 4 && WoW.TargetHealthPercent >= 36 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.Energy >= 25 && WoW.CurrentComboPoints == 5 && WoW.TargetHealthPercent >= 36 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture"))
                        {
                            WoW.CastSpell("Rupture");
                            return;
                        }
                        if (WoW.Energy >= 35 && WoW.CurrentComboPoints >= 4 && WoW.TargetHealthPercent >= 36 && WoW.TargetHasDebuff("Rupture") && WoW.CanCast("Envenom"))
                        {
                            WoW.CastSpell("Envenom");
                            return;
                        }
                        if (WoW.CanCast("Garrote") && WoW.Energy >= 45 && !WoW.TargetHasDebuff("Garrote") && !WoW.IsSpellOnCooldown("Garrote") && WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote"))
                        {
                            WoW.CastSpell("Garrote");
                            return;
                        }
                        if (UseCooldowns && WoW.CanCast("Berserk") && !WoW.IsSpellOnCooldown("Berserk"))
                        {
                            WoW.CastSpell("Berserk");
                            return;
                        }
                    }
                }
            }
        }
        /// <summary>
        ///     Do the rotation.
        /// </summary>
        private void doRotation(bool isSingleTarget = true)
        {
            var ignoreMovement = WoW.PlayerHasBuff(SURRENDER_MADNESS);

            if (WoW.Insanity >= 70 || WoW.PlayerHasBuff(VOIDFORM_AURA))
            {
                //Expend insanity in voidform.
                if (WoW.HasTarget && !WoW.PlayerHasBuff(VOIDFORM_AURA))
                {
                    castWithRangeCheck(VOID_ERUPTION);
                }
                else
                {
                    //If we can, cast it.
                    castWithRangeCheck(VOID_BOLT);

                    //Cast it.
                    castWithRangeCheck(VOID_TORRENT, ignoreMovement);

                    //If the boss health is at or below our set threshold SW:D
                    if (WoW.TargetHealthPercent <= HEALTH_PERCENT_FOR_SWD)
                    {
                        if (WoW.PlayerSpellCharges(SHADOW_DEATH) == 2 && WoW.Insanity <= 70)
                        {
                            //If we have 2 charges, always cast
                            castWithRangeCheck(SHADOW_DEATH);
                        }
                        else if (WoW.PlayerSpellCharges(SHADOW_DEATH) == 1)
                        {
                            //If we have 1 charge, only cast if at high insanity and mindblast is off CD or extremely low insanity
                            if ((WoW.Insanity > PANIC_INSANITY_VALUE && !(WoW.IsSpellOnCooldown(MIND_BLAST) || WoW.IsSpellOnCooldown(VOID_BOLT))) || WoW.Insanity <= calculateInsanityDrain())
                            {
                                castWithRangeCheck(SHADOW_DEATH);
                            }
                        }
                    }

                    //Cast shadowfiend if we have more than 15 stacks of voidform aura.
                    if (WoW.PlayerBuffStacks(VOIDFORM_AURA) >= 15)
                    {
                        castWithRangeCheck(SHADOW_FIEND);
                    }

                    //If we can, cast it.
                    castWithRangeCheck(MIND_BLAST);

                    //If we have high stacks, cast shadowfiend.

                    /* Disabled, allow player to cast.
                     * if (WoW.PlayerBuffStacks(VOIDFORM_AURA)>=15) {
                     *  castWithRangeCheck(SHADOWFIEND);
                     * }
                     */

                    if (!isPlayerBusy(ignoreChanneling: false))
                    {
                        //Always fill with mind flay on single target.
                        castWithRangeCheck(MIND_FLAY);
                    }
                }
            }
            else
            {
                //Build up insanity
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.TargetIsVisible)
                {
                    //If we can, cast mind blast.
                    if (castWithRangeCheck(MIND_BLAST))
                    {
                        return;
                    }

                    //If we don't have anything else to do, cast Mind flay.
                    if (!isPlayerBusy(ignoreChanneling: false))
                    {
                        castWithRangeCheck(MIND_FLAY);
                    }
                }
            }
        }
Example #26
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;
                    }
                }
            }
        }
        public override void Pulse()
        {
            if (!WoW.HasTarget || !WoW.TargetIsEnemy || !WoW.IsSpellInRange("Throw Glaive"))
            {
                return;
            }

            WoW.CastSpell("Metamorphasis", WoW.PlayerHealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis") && UseCooldowns, false);
            WoW.CastSpell("Sever", WoW.PlayerHasBuff("Metamorphasis"));
            WoW.CastSpell("Soul Cleave", WoW.PlayerHasBuff("Metamorphasis") && WoW.PlayerHasBuff("Soul Fragments") && WoW.PlayerBuffStacks("Soul Fragments") >= 5 && WoW.Pain >= 50);
            WoW.CastSpell("Throw Glaive", !WoW.IsSpellInRange("Soul Carver") && !WoW.IsSpellOnCooldown("Throw Glaive"));

            if (!WoW.IsSpellInRange("Soul Carver"))
            {
                return;                                     // If we are out of melee range return
            }
            if (WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > Random.Next(50, 70))
            {
                if (!WoW.IsSpellOnCooldown("Sigil of Silence"))
                {
                    Log.Write("Interrupting spell");
                    WoW.CastSpell("Sigil of Silence", true);
                }

                if (!WoW.IsSpellOnCooldown("Arcane Torrent"))
                {
                    Log.Write("Interrupting spell");
                    WoW.CastSpell("Arcane Torrent", true);
                }

                if (!WoW.IsSpellOnCooldown("Consume Magic"))
                {
                    Log.Write("Interrupting spell");
                    WoW.CastSpell("Consume Magic", true);
                }
            }

            WoW.CastSpell("Fiery Brand", !WoW.TargetHasDebuff("Fiery Demise") && !WoW.IsSpellOnCooldown("Fiery Brand"));
            WoW.CastSpell("Demon Spikes", !WoW.PlayerHasBuff("Demon Spikes") && WoW.Pain > 20 && !WoW.PlayerHasBuff("Magnum Opus"));
            WoW.CastSpell("Soul Carver", true);
            WoW.CastSpell("Fel Devastation", WoW.Pain >= 30);
            WoW.CastSpell("Soul Cleave", WoW.Pain >= 50);
            WoW.CastSpell("Immolation Aura", true);
            WoW.CastSpell("Sigil of Flame", !WoW.TargetHasDebuff("Sigil of Flame"));
            WoW.CastSpell("Shear", true); // Pain Generator
        }
 /// <summary>
 ///     Calculate the amount of insanity currently drained per second
 /// </summary>
 /// <returns>The amount of insanity drained per second</returns>
 private float calculateInsanityDrain()
 {
     return(9 + (WoW.PlayerBuffStacks(VOIDFORM_AURA) - 1 / 2));
 }
Example #29
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                validtarget = WoW.HasTarget && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Greater Invisibility") && !WoW.TargetHasDebuff("Polymorph") && WoW.RangeToTarget < 41;

                // Prismatic Barrier if health < 80%
                WoW.CastSpell("Prismatic Barrier", WoW.PlayerHealthPercent <= 80 && !WoW.PlayerHasBuff("Prismatic Barrier"));
                // Arcane Familiar if not up
                WoW.CastSpell("Arcane Familiar", WoW.Talent(1) == 1 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Arcane Familiar"));

                // Single Target Combat Begins - No casting if Invisible or Target is Polymorphed
                if (validtarget)
                {
                    // Arcane Barrage when moving without Ice Floes
                    WoW.CastSpell("Arcane Barrage", WoW.CanCast("Arcane Barrage") && WoW.IsMoving && !WoW.PlayerHasBuff("Ice Floes") && WoW.PlayerBuffStacks("Arcane Missiles") == 0);

                    //Burn Phase
                    //----------------------------------------------------------

                    // BURN BEGIN - Only use Burn if Burn is selected and Arcane Power is available or active
                    // Charged Up if zero arcane charges
                    if (UseCooldowns)
                    {
                        // BURN - Arcane Missle if you can
                        WoW.CastSpell("Arcane Missiles", WoW.PlayerHasBuff("Arcane Missiles!") && WoW.PlayerBuffStacks("Arcane Missiles!") == 3, true);
                        WoW.CastSpell("Arcane Missiles", WoW.LastSpell == ("Arcane Missiles") && WoW.PlayerHasBuff("Arcane Missiles!") && WoW.PlayerBuffStacks("Arcane Missiles!") >= 1, true);
                        // Mark Of Aluneth is up
                        WoW.CastSpell("Mark Of Aluneth", WoW.CanCast("Mark Of Aluneth"));
                        // Cast Arcane Blast if < 4 charges
                        WoW.CastSpell("Arcane Blast", WoW.CurrentArcaneCharges < 4);
                        // BURN - Rune of Power at 4 Arcane Blast Charges
                        WoW.CastSpell("Rune of Power", !WoW.PlayerHasBuff("Rune of Power") && WoW.CurrentArcaneCharges == 4);

                        // BURN - Rune of Power if >30% mana
                        WoW.CastSpell("Rune of Power", WoW.PlayerHasBuff("Arcane Power") && !WoW.PlayerHasBuff("Rune of Power") && WoW.Mana >= 30);
                        // BURN - Arcane Power if Rune of Power down and 4 Arcane Blast Charges
                        WoW.CastSpell("Arcane Power", WoW.PlayerHasBuff("Rune of Power") && WoW.CurrentArcaneCharges == 4);

                        // Evocate if low on mana
                        WoW.CastSpell("Evocation", WoW.Mana <= 5);
                        // Arcane Blast otherwise
                        WoW.CastSpell("Arcane Blast", validtarget);
                    }
                    // BURN END
                    // Conserve Begin
                    if (!UseCooldowns)
                    {
                        WoW.CastSpell("Rune of Power", WoW.PlayerSpellCharges("Rune of Power") == 2);
                        // Mark Of Aluneth is up - If no Rune of Power...cast Rune of Power - If Rune of Power...cast Mark Of Aluneth
                        WoW.CastSpell("Rune of Power", WoW.CanCast("Mark Of Aluneth") && !WoW.PlayerHasBuff("Rune of Power"));
                        WoW.CastSpell("Mark Of Aluneth", WoW.CanCast("Mark Of Aluneth") && WoW.PlayerHasBuff("Rune of Power"));


                        // Arcane Missles with 4 Arcane Blast Charges
                        WoW.CastSpell("Arcane Missiles", WoW.PlayerHasBuff("Arcane Missiles!") && WoW.CurrentArcaneCharges == 4);
                        // Arcane Missles with 3 stacks of Arcane Missiles! Buff - Not sure how to check buff stacks *NEED FIXED*
                        WoW.CastSpell("Arcane Missiles", WoW.PlayerHasBuff("Arcane Missiles!") && WoW.PlayerBuffStacks("Arcane Missiles!") == 3);

                        WoW.CastSpell("Arcane Barrage", WoW.Mana < 55);
                        // Arcane Blast otherwise
                        WoW.CastSpell("Arcane Blast", validtarget);
                    }
                    // SingleTarget Combat Ends
                }
            }


            if (combatRoutine.Type == RotationType.AOE)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
            if (combatRoutine.Type == RotationType.Cleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
Example #30
0
        public override void Pulse()
        {
            validtarget = WoW.HasTarget && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible && WoW.RangeToTarget < 41;

            // Cooldown rotation
            if (validtarget && WoW.CooldownsOn && WoW.PlayerHasBuff("Moonkin"))
            {
                // Incarnation
                // TODO : Confugrable usage
                WoW.CastSpell("Incarnation", WoW.Talent(5) == 2 && WoW.CurrentAstralPower >= 40);
                WoW.CastSpell("CelestialAlignment", WoW.Talent(5) != 2 && WoW.CurrentAstralPower >= 40);

                // Astral Communion if Astral Power smaller than 25
                // TODO : Confugrable usage
                //WoW.CastSpell("Astral Communion", WoW.Talent(6) == 2 && WoW.CurrentAstralPower <= 25);
            }


            if (WoW.SingleTargetOn && validtarget && WoW.Talent(1) == 3)
            {
                // If Blessing of the Ancients get it up.
                WoW.CastSpell("BlessingOfAncients", WoW.Talent(6) == 3 && !WoW.PlayerHasBuff("BlessingOfElune") && !WoW.PlayerHasBuff("BlessingOfAnshe") && WoW.PlayerHealthPercent >= 10);
                WoW.CastSpell("BlessingOfAncients", WoW.Talent(6) == 3 && WoW.PlayerHasBuff("BlessingOfAnshe") && WoW.PlayerHealthPercent >= 10);

                // Stellar Drift
                if (WoW.Talent(7) == 2 && WoW.IsMoving && WoW.PlayerHasBuff("StarfallP"))
                {
                    WoW.CastSpell("FullMoon", WoW.PlayerHasBuff("StarfallP") && WoW.PlayerBuffTimeRemaining("StarfallP") >= 300);
                    WoW.CastSpell("LStrike", WoW.PlayerHasBuff("StarfallP") && WoW.PlayerBuffTimeRemaining("StarfallP") >= 250);
                    WoW.CastSpell("Moon", WoW.PlayerHasBuff("StarfallP") && WoW.PlayerBuffTimeRemaining("StarfallP") >= 120);
                    WoW.CastSpell("HalfMoon", WoW.PlayerHasBuff("StarfallP") && WoW.PlayerBuffTimeRemaining("StarfallP") >= 200);
                    WoW.CastSpell("SolarW", WoW.PlayerHasBuff("StarfallP") && WoW.PlayerBuffTimeRemaining("StarfallP") >= 200);
                }

                // Priority execute order
                WoW.CastSpell("Starsurge", WoW.CurrentAstralPower >= 80 && (!WoW.PlayerHasBuff("SolarEmp") || WoW.PlayerBuffStacks("SolarEmp") < 3) && (!WoW.PlayerHasBuff("LunarEmp") || WoW.PlayerBuffStacks("LunarEmp") < 3));
                // New Moon
                // Moonfire if not on target
                WoW.CastSpell("Moonfire", !WoW.TargetHasDebuff("Moonfire"));
                // Sunfire if not on target
                WoW.CastSpell("Sunfire", !WoW.TargetHasDebuff("Sunfire"));
                //moon shizz
                WoW.CastSpell("Moon", WoW.PlayerSpellCharges("Moon") == 3 && WoW.TargetHasDebuff("Moonfire") && WoW.TargetHasDebuff("Sunfire"));
                // HalfMoon
                WoW.CastSpell("HalfMoon", WoW.PlayerSpellCharges("HalfMoon") == 3 && WoW.TargetHasDebuff("Moonfire") && WoW.TargetHasDebuff("Sunfire"));
                // FullMoon
                WoW.CastSpell("FullMoon", WoW.PlayerSpellCharges("FullMoon") == 3 && WoW.TargetHasDebuff("Moonfire") && WoW.TargetHasDebuff("Sunfire"));
                // Moonfire if under 6.6 remaining (no Natures Balance)
                WoW.CastSpell("Moonfire", WoW.Talent(7) == 2 && WoW.TargetDebuffTimeRemaining("Moonfire") <= 660);
                // Sunfire if under 5.4 remaining (no Natures Balance)
                WoW.CastSpell("Sunfire", WoW.Talent(7) == 2 && WoW.TargetDebuffTimeRemaining("Sunfire") <= 540);
                // Solar Wrath if natures balance and betwean 5-2seconds left on sunfire
                WoW.CastSpell("SolarW", WoW.Talent(7) == 3 && WoW.TargetDebuffTimeRemaining("Sunfire") <= 500 && WoW.TargetDebuffTimeRemaining("Sunfire") >= 200);
                // Lunar Strike if natures abalnce and betwean 5-2seconds left on moonfire
                WoW.CastSpell("LStrike", WoW.Talent(7) == 3 && WoW.TargetDebuffTimeRemaining("Moonfire") <= 600 && WoW.TargetDebuffTimeRemaining("Moonfire") >= 300);
                // Solar Wrath at 3 solar empowerement
                WoW.CastSpell("SolarW", WoW.PlayerBuffStacks("SolarEmp") == 3);
                // Lunar Strike at 3 solar empowerement
                WoW.CastSpell("LStrike", WoW.PlayerBuffStacks("LunarEmp") == 3);

                // Secondary priority execute order
                // New Moon
                WoW.CastSpell("Moon", WoW.CurrentAstralPower <= 90 && WoW.TargetHasDebuff("Moonfire") && WoW.TargetHasDebuff("Sunfire"));
                // HalfMoon
                WoW.CastSpell("HalfMoon", WoW.CurrentAstralPower <= 80 && WoW.TargetHasDebuff("Moonfire") && WoW.TargetHasDebuff("Sunfire"));
                // FullMoon
                WoW.CastSpell("FullMoon", WoW.CurrentAstralPower <= 60 && WoW.TargetHasDebuff("Moonfire") && WoW.TargetHasDebuff("Sunfire"));
                // Starsurge for Emerald Dreamcatcher
                WoW.CastSpell("Starsurge", WoW.PlayerSpellCharges("Starsurge") <= 2 && WoW.CurrentAstralPower >= 40);
                // Starsurge
                WoW.CastSpell("Starsurge", WoW.CurrentAstralPower >= 80 && (!WoW.PlayerHasBuff("SolarEmp") || WoW.PlayerBuffStacks("SolarEmp") < 3) && (!WoW.PlayerHasBuff("LunarEmp") || WoW.PlayerBuffStacks("LunarEmp") < 3));
                // Solar Wrath at solar empowerement
                WoW.CastSpell("SolarW", WoW.PlayerBuffStacks("SolarEmp") <= 1);
                // Cast LunarStrike if no SolarEmp and have LunarEmp
                WoW.CastSpell("LStrike", WoW.PlayerHasBuff("LunarEmp") && !WoW.PlayerHasBuff("SolarEmp"));
                // Cast SolarWrath when nothing else to do
                WoW.CastSpell("SolarW", validtarget);
            }


            if (combatRoutine.Type == RotationType.AOE)
            {
            }
        }