Ejemplo n.º 1
0
 public override void Pulse()
 {
     if (combatRoutine.Type == RotationType.SingleTarget)
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.HasDebuff("Paralysis"))
         {
             if (WoW.CanCast("Energizing Elixir") && WoW.IsSpellInRange("Tiger Palm") && !WoW.IsSpellOnCooldown("Energizing Elixir") && !WoW.IsSpellOnCooldown("Fists of Fury") && WoW.CurrentChi <= 1)
             {
                 WoW.CastSpellByName("Energizing Elixir");
                 return;
             }
             if (WoW.CanCast("Strike of the Windlord") && WoW.CurrentChi >= 2 && !WoW.lastSpell.Equals("Strike of the Windlord") && WoW.IsSpellInRange("Tiger Palm"))
             {
                 WoW.CastSpellByName("Strike of the Windlord");
                 return;
             }
             if (WoW.CanCast("Fists of Fury") && WoW.CurrentChi >= 3 && !WoW.lastSpell.Equals("Fists of Fury") && WoW.IsSpellInRange("Tiger Palm"))
             {
                 WoW.CastSpellByName("Fists of Fury");
                 return;
             }
             if (WoW.CanCast("Rising Sun Kick") && !WoW.lastSpell.Equals("Rising Sun Kick") && WoW.CurrentChi >= 2 && WoW.IsSpellInRange("Tiger Palm"))
             {
                 WoW.CastSpellByName("Rising Sun Kick");
                 return;
             }
             if (WoW.CanCast("Whirling Dragon Punch") && WoW.IsSpellOnCooldown("Rising Sun Kick") && WoW.IsSpellOnCooldown("Fists of Fury") && WoW.IsSpellInRange("Tiger Palm"))
             {
                 WoW.CastSpellByName("Whirling Dragon Punch");
                 return;
             }
             if (WoW.CanCast("Chi Wave") && !WoW.lastSpell.Equals("Chi Wave"))
             {
                 WoW.CastSpellByName("Chi Wave");
                 return;
             }
             if (WoW.CanCast("Touch of Death") && !WoW.lastSpell.Equals("Touch of Death") && WoW.IsSpellInRange("Tiger Palm"))
             {
                 WoW.CastSpellByName("Touch of Death");
                 return;
             }
             if (WoW.CanCast("Blackout Kick") && !WoW.lastSpell.Equals("Blackout Kick") && (WoW.CurrentChi >= 1 || WoW.HasBuff("Blackout Kick!")) && WoW.IsSpellInRange("Tiger Palm"))
             {
                 WoW.CastSpellByName("Blackout Kick");
                 return;
             }
             if (WoW.CanCast("Tiger Palm") && !WoW.lastSpell.Equals("Tiger Palm") && WoW.CurrentChi < 4 && WoW.Energy >= 50 && WoW.IsSpellInRange("Tiger Palm"))
             {
                 WoW.CastSpellByName("Tiger Palm");
                 return;
             }
         }
     }
     if (combatRoutine.Type == RotationType.AOE)
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy)
         {
         }
     }
 }
Ejemplo n.º 2
0
        private static void Interruptcast()
        {
            var random       = new Random();
            var randomNumber = random.Next(interMin, interMax);

            if (WoW.TargetPercentCast > randomNumber && WoW.TargetIsCastingAndSpellIsInterruptible)
            {
                if (WoW.CanCast("Wind Shear") && !WoW.IsSpellOnCooldown("Wind Shear") && WoW.TargetIsCasting &&
                    WoW.IsSpellInRange("Wind Shear")) //interupt every spell, not a boss.
                {
                    WoW.CastSpell("Wind Shear");
                    return;
                }
                if (WoW.PlayerRace == "BloodElf" && WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Wind Shear") &&
                    WoW.IsSpellInRange("Stormstrike")) //interupt every spell, not a boss.
                {
                    WoW.CastSpell("Arcane Torrent");
                    return;
                }
                if (WoW.PlayerRace == "Pandaren" && WoW.CanCast("Quaking palm", true, true, true)) //interupt every spell, not a boss.
                {
                    WoW.CastSpell("Quaking palm");
                }
            }
        }
Ejemplo n.º 3
0
        public override void Pulse()
        {
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LSHIFT) < 0)
            {
                return;
            }
            if (!WoW.HasTarget || !WoW.TargetIsEnemy)
            {
                WoW.TargetNearestEnemy();
            }

            if (WoW.IsSpellInRange("Soul Carver"))
            {
                if (combatRoutine.Type == RotationType.SingleTarget)
                {
                    SurvivalRotation();
                }
                else
                {
                    BombRotation();
                }
            }

            else if (WoW.IsSpellInRange("Throw Glaive"))
            {
                WoW.CastSpell("Throw Glaive", !WoW.IsSpellOnCooldown("Throw Glaive"));
            }
        }
Ejemplo n.º 4
0
 public override void OutOfCombatPulse()
 {
     if (WoW.CanCast("DemonsBite") && WoW.IsSpellInRange("DemonsBite") && WoW.AoeOn)
     {
         WoW.CastSpell("DemonsBite");
         return;
     }
 }
 private void EnhancementBuffs()
 {
     //actions +=/ windstrike,if= (variable.heartEquipped | set_bonus.tier19_2pc) & (!talent.earthen_spike.enabled | (cooldown.earthen_spike.remains > 1 & cooldown.doom_winds.remains > 1) | debuff.earthen_spike.up)
     if (WoW.CanCast("Windstrike", true, true, true) && WoW.PlayerHasBuff("Ascendance") && WoW.Maelstrom >= 8 && (/*heart equip place holder*/ WoW.SetBonus(19) >= 2) && (WoW.Talent(7) != 3 || (WoW.SpellCooldownTimeRemaining("Earthen spike") > 1 && WoW.SpellCooldownTimeRemaining("Doom winds") > 1 || WoW.TargetHasDebuff("Earthen spike"))))
     {
         WoW.CastSpell("Windstrike", "Top prioity spell");
         return;
     }
     //actions.buffs = rockbiter,if= talent.landslide.enabled & !buff.landslide.up
     if (WoW.CanCast("Rockbiter", true, true, true) && WoW.Talent(1) == 3 && !WoW.PlayerHasBuff("Landslide"))
     {
         WoW.CastSpell("Rockbiter", "Buff spell");
         return;
     }
     //actions.buffs +=/ fury_of_air,if= buff.ascendance.up | (feral_spirit.remains > 5) | level < 100
     if (WoW.CanCast("FoA") && WoW.Maelstrom >= 5 && WoW.Talent(6) == 2 && !WoW.PlayerHasBuff("FoA") && (WoW.PlayerHasBuff("Ascendance") && Pets.IsRunning))
     {
         WoW.CastSpell("FoA", "Buff spell");
         return;
     }
     //actions.buffs +=/ crash_lightning,if= artifact.alpha_wolf.rank & prev_gcd.1.feral_spirit
     if (WoW.CanCast("Crash lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Rockbiter") && Pets.IsRunning && !Crash.IsRunning)
     {
         Crash.Restart();
         WoW.CastSpell("Crash lightning", "Buff spell");
         return;
     }
     //actions.buffs +=/ flametongue,if= !buff.flametongue.up
     if (!WoW.PlayerHasBuff("Flametongue") && WoW.CanCast("Flametongue", true, true, true))
     {
         WoW.CastSpell("Flametongue", "Buff spell");
         return;
     }
     //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & !buff.frostbrand.up & variable.furyCheck45
     if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.Talent(4) == 3 && !WoW.PlayerHasBuff("Frostbrand") && furyCheck45)
     {
         WoW.CastSpell("Frostbrand", "Buff spell");
         return;
     }
     //actions.buffs +=/ flametongue,if= buff.flametongue.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2
     if (WoW.CanCast("Flametongue", true, true, true) && WoW.PlayerBuffTimeRemaining("Flametongue") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2)
     {
         WoW.CastSpell("Flametongue", "Buff spell");
         return;
     }
     //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & buff.frostbrand.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2
     if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.PlayerBuffTimeRemaining("Frostbrand") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2)
     {
         WoW.CastSpell("Frostbrand", "Buff spell");
         return;
     }
 }
Ejemplo n.º 6
0
 private void EnhancementBuffs()
 {
     if (WoW.CanCast("Windstrike", true, true, true) && WoW.PlayerHasBuff("Ascendance") && WoW.Maelstrom >= 8 && WoW.SetBonus(19) >= 2 &&
         (WoW.Talent(7) != 3 || WoW.SpellCooldownTimeRemaining("Earthen spike") > 1 && WoW.SpellCooldownTimeRemaining("Doom winds") > 1 ||
          WoW.TargetHasDebuff("Earthen spike")))
     {
         WoW.CastSpell("Windstrike");
         return;
     }
     if (WoW.CanCast("Rockbiter", true, true, true) && WoW.Talent(1) == 3 && !WoW.PlayerHasBuff("Landslide"))
     {
         WoW.CastSpell("Rockbiter");
         return;
     }
     if (WoW.CanCast("FoA") && WoW.Maelstrom >= 5 && WoW.Talent(6) == 2 && !WoW.PlayerHasBuff("FoA") && WoW.PlayerHasBuff("Ascendance") &&
         Pets.IsRunning)
     {
         WoW.CastSpell("FoA");
         return;
     }
     if (WoW.CanCast("Crash lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Rockbiter") && Pets.IsRunning && !Crash.IsRunning)
     {
         Crash.Restart();
         WoW.CastSpell("Crash lightning");
         return;
     }
     if (!WoW.PlayerHasBuff("Flametongue") && WoW.CanCast("Flametongue", true, true, true))
     {
         WoW.CastSpell("Flametongue");
         return;
     }
     if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.Talent(4) == 3 && !WoW.PlayerHasBuff("Frostbrand") && FuryCheck45)
     {
         WoW.CastSpell("Frostbrand");
         return;
     }
     if (WoW.CanCast("Flametongue", true, true, true) && WoW.PlayerBuffTimeRemaining("Flametongue") < 600 + GCD &&
         WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2)
     {
         WoW.CastSpell("Flametongue");
         return;
     }
     if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.PlayerBuffTimeRemaining("Frostbrand") < 600 + GCD &&
         WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2)
     {
         WoW.CastSpell("Frostbrand");
     }
 }
 private void EnhancementBuffs()
 {
     //actions.buffs = rockbiter,if= talent.landslide.enabled & !buff.landslide.up
     if (WoW.CanCast("Rockbiter", true, true, true) && WoW.Talent(1) == 3 && !WoW.PlayerHasBuff("Landslide"))
     {
         WoW.CastSpell("Rockbiter", "Buff spell");
         return;
     }
     //actions.buffs +=/ fury_of_air,if= buff.ascendance.up | (feral_spirit.remains > 5) | level < 100
     if (WoW.CanCast("FoA") && WoW.Talent(6) == 2 && !WoW.PlayerHasBuff("FoA") && (WoW.PlayerHasBuff("Ascendance") && Pets.IsRunning))
     {
         WoW.CastSpell("FoA", "Buff spell");
         return;
     }
     //actions.buffs +=/ crash_lightning,if= artifact.alpha_wolf.rank & prev_gcd.1.feral_spirit
     if (WoW.CanCast("Crash lightning") && WoW.IsSpellInRange("Rockbiter") && Pets.IsRunning && !Crash.IsRunning)
     {
         Crash.Restart();
         WoW.CastSpell("Crash lightning", "Buff spell");
         return;
     }
     //actions.buffs +=/ flametongue,if= !buff.flametongue.up
     if (!WoW.PlayerHasBuff("Flametongue") && WoW.CanCast("Flametongue", true, true, true))
     {
         WoW.CastSpell("Flametongue", "Buff spell");
         return;
     }
     //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & !buff.frostbrand.up & variable.furyCheck45
     if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Talent(4) == 3 && !WoW.PlayerHasBuff("Frostbrand") && furyCheck45)
     {
         WoW.CastSpell("Frostbrand", "Buff spell");
         return;
     }
     //actions.buffs +=/ flametongue,if= buff.flametongue.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2
     if (WoW.CanCast("Flametongue", true, true, true) && WoW.PlayerBuffTimeRemaining("Flametongue") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2)
     {
         WoW.CastSpell("Flametongue", "Buff spell");
         return;
     }
     //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & buff.frostbrand.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2
     if (WoW.CanCast("Frostbrand", true, true, true) && WoW.PlayerBuffTimeRemaining("Frostbrand") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2)
     {
         WoW.CastSpell("Frostbrand", "Buff spell");
         return;
     }
 }
Ejemplo n.º 8
0
        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
        }
Ejemplo n.º 9
0
 private void SpellCast(string spellName)
 {
     if (WoW.PlayerIsCasting || (WoW.LastSpell == VOID_TORRENT && WoW.PlayerIsChanneling))
     {
         return;
     }
     if (spellName == MIND_FLAY && WoW.LastSpell == MIND_FLAY && WoW.PlayerIsChanneling)
     {
         return;
     }
     if (WoW.CanCast(spellName) && WoW.IsSpellInRange(SHADOW_WORD_PAIN))
     {
         WoW.CastSpell(spellName);
         if (WoW.IsSpellOnGCD(spellName))
         {
             Thread.Sleep(WoW.SpellCooldownTimeRemaining(spellName));
         }
     }
 }
        public void EnhancementCD()
        {
            if (UseCooldowns)
            {
                //actions.CDs = bloodlust,if= target.health.pct < 25 | time > 0.500

                //actions.CDs +=/ berserking,if= buff.ascendance.up | (feral_spirit.remains > 5)
                if (WoW.PlayerRace == "Troll" && WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && ((WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance")) || Pets.ElapsedMilliseconds < 10000))
                {
                    WoW.CastSpell("Berserking");
                    return;
                }
                //actions.CDs +=/ blood_fury,if= buff.ascendance.up | (feral_spirit.remains > 5) | level < 100
                if (WoW.PlayerRace == "Orc" && WoW.CanCast("Blood Fury") &&
                    ((WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance")) || Pets.ElapsedMilliseconds < 10000))
                {
                    WoW.CastSpell("Blood Fury");
                    return;
                }
                //actions.CDs +=/ feral_spirit
                if (WoW.CanCast("Feral Spirit", true, true, false, false, true) && WoW.IsSpellInRange("Rockbiter") && WoW.Maelstrom >= 20 && (WoW.CanCast("Crash lightning", true, true, false, false, true) || WoW.SpellCooldownTimeRemaining("Crash lightning") < GCD))  //feral spirit on boss - normally cast manually
                {
                    Pets.Start();
                    WoW.CastSpell("Feral Spirit");
                    return;
                }
                //actions.CDs +=/ potion,if= buff.ascendance.up | !talent.ascendance.enabled & feral_spirit.remains > 5 | target.time_to_die <= 60

                //actions.CDs +=/ doom_winds,if= debuff.earthen_spike.up & talent.earthen_spike.enabled | !talent.earthen_spike.enabled
                if (WoW.CanCast("Doom Winds") && WoW.IsSpellInRange("Rockbiter") && (WoW.Talent(7) == 3 && WoW.TargetHasDebuff("Earthen spike") || WoW.Talent(7) != 3))
                {
                    WoW.CastSpell("Doom Winds");
                    return;
                }
                //actions.CDs +=/ ascendance,if= buff.doom_winds.up
                if (WoW.CanCast("Ascendance") && WoW.PlayerHasBuff("Doom Winds"))
                {
                    WoW.CastSpell("Ascendance");
                    return;
                }
            }
        }
Ejemplo n.º 11
0
 public void EnhancementCD()
 {
     if (UseCooldowns)
     {
         if (WoW.PlayerRace == "Troll" && WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") &&
             (WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance") || Pets.ElapsedMilliseconds < 10000))
         {
             WoW.CastSpell("Berserking");
             return;
         }
         if (WoW.PlayerRace == "Orc" && WoW.CanCast("Blood Fury") &&
             (WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance") || Pets.ElapsedMilliseconds < 10000))
         {
             WoW.CastSpell("Blood Fury");
             return;
         }
         if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Rockbiter") && WoW.Maelstrom >= 20 &&
             (WoW.CanCast("Crash lightning") ||
              WoW.SpellCooldownTimeRemaining("Crash lightning") < GCD)) //feral spirit on boss - normally cast manually
         {
             Pets.Start();
             WoW.CastSpell("Feral Spirit");
             return;
         }
         if (WoW.CanCast("Doom Winds") && WoW.IsSpellInRange("Rockbiter") &&
             (WoW.Talent(7) == 3 && WoW.TargetHasDebuff("Earthen spike") || WoW.Talent(7) != 3))
         {
             WoW.CastSpell("Doom Winds");
             return;
         }
         if (WoW.CanCast("Ascendance") && WoW.PlayerHasBuff("Doom Winds"))
         {
             WoW.CastSpell("Ascendance");
         }
     }
 }
Ejemplo n.º 12
0
        public override void Pulse()
        {
            if (WoW.PlayerHasBuff("Mount"))
            {
                return;
            }
            if (UseCooldowns)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("BattleCry"))
                    {
                        WoW.CastSpell("BattleCry");
                        return;
                    }
                    if (WoW.CanCast("Avatar") && (WoW.SpellCooldownTimeRemaining("BattleCry") > 14))
                    {
                        WoW.CastSpell("Avatar");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    /* interrupting */
                    if (WoW.TargetIsCastingAndSpellIsInterruptible && WoW.CanCast("Pummel") && WoW.IsSpellInRange("Pummel"))
                    {
                        WoW.CastSpell("Pummel");
                        return;
                    }
                    /* --------------------- end of interrupting--------------------*/
                    /* defensive CD */
                    if (WoW.CanCast("Enraged Regeneration") && (WoW.HealthPercent < 20))
                    {
                        WoW.CastSpell("Enraged Regeneration");
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && WoW.PlayerHasBuff("Enraged Regeneration"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                        return;
                    }
                    if (WoW.CanCast("Commanding Shout") && (WoW.HealthPercent < 15))
                    {
                        WoW.CastSpell("Commanding Shout");
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                        return;
                    }
                    if (WoW.PlayerHasDebuff("Fear") && WoW.CanCast("Berserker Rage"))
                    {
                        WoW.CastSpell("Berserker Rage");
                        return;
                    }
                    if (WoW.PlayerHasDebuff("Stunned") && WoW.CanCast("Every Man for Himself"))
                    {
                        WoW.CastSpell("Every Man for Himself");
                        return;
                    }
                    /* --------------------- end of defensive CD--------------------*/
                    /* dps-ing */
                    if (!WoW.PlayerHasBuff("BattleCry"))
                    {
                        if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && (WoW.Rage >= 100) && !WoW.PlayerHasBuff("Enrage"))
                        {
                            WoW.CastSpell("Rampage");
                            return;
                        }
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && !WoW.PlayerHasBuff("Enrage"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                        if (WoW.CanCast("OdynsFury") && WoW.IsSpellInRange("OdynsFury") && (WoW.PlayerHasBuff("BattleCry") || WoW.HealthPercent < 10))
                        {
                            WoW.CastSpell("OdynsFury");
                            return;
                        }
                        if (WoW.CanCast("Execute") && WoW.IsSpellInRange("Execute") && WoW.PlayerHasBuff("Enrage") && WoW.TargetHealthPercent <= 20)
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                        if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                        {
                            WoW.CastSpell("Raging Blow");
                            return;
                        }
                        if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball") && WoW.IsSpellInRange("Whirlwind"))
                        {
                            WoW.CastSpell("Whirlwind");
                            return;
                        }
                        if (WoW.CanCast("Furious Slash") && WoW.IsSpellInRange("Furious Slash") && (WoW.SpellCooldownTimeRemaining("Raging Blow") > 0.5))
                        {
                            WoW.CastSpell("Furious Slash");
                            return;
                        }
                    }
                    if (WoW.PlayerHasBuff("BattleCry"))
                    {
                        if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && (WoW.Rage >= 100) && (!WoW.PlayerHasBuff("Enrage") || (WoW.PlayerBuffTimeRemaining("Enrage") <= 2)))
                        {
                            WoW.CastSpell("Rampage");
                            return;
                        }
                        if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                        {
                            WoW.CastSpell("Raging Blow");
                            return;
                        }
                        if (WoW.CanCast("OdynsFury") && WoW.IsSpellInRange("OdynsFury") && (WoW.PlayerHasBuff("BattleCry") || WoW.HealthPercent < 10))
                        {
                            WoW.CastSpell("OdynsFury");
                            return;
                        }
                        if (WoW.CanCast("Execute") && WoW.IsSpellInRange("Execute") && WoW.PlayerHasBuff("Enrage") && WoW.TargetHealthPercent <= 20)
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                        {
                            WoW.CastSpell("Bloodthirst");
                            return;
                        }
                    }
                    /* --------------------- end of dps-ing--------------------*/
                }
            }
            if ((combatRoutine.Type == RotationType.AOE) || (combatRoutine.Type == RotationType.Cleave))
            {
                if (WoW.CanCast("OdynsFury") && WoW.IsSpellInRange("OdynsFury") && (WoW.PlayerHasBuff("BattleCry") || WoW.HealthPercent < 10))
                {
                    WoW.CastSpell("OdynsFury");
                    return;
                }
                if (!WoW.PlayerHasBuff("Meat-Cleaver"))
                {
                    WoW.CastSpell("Whirlwind");
                    return;
                }
                if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && (WoW.Rage >= 100) && !WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat-Cleaver"))
                {
                    WoW.CastSpell("Rampage");
                    return;
                }
                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && !WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat-Cleaver"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }

                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && WoW.PlayerHasBuff("Meat-Cleaver"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }
                if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                {
                    WoW.CastSpell("Raging Blow");
                    return;
                }
                if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball") && WoW.IsSpellInRange("Whirlwind"))
                {
                    WoW.CastSpell("Whirlwind");
                    return;
                }
            }
        }
Ejemplo n.º 13
0
        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, 2, 1);
                SelectRotation(4, 3, 1);
            }

            //Healthstone - Potion
            if ((WoW.CanCast("Healthstone") || WoW.CanCast("Potion")) &&
                (WoW.ItemCount("Healthstone") >= 1 || WoW.ItemCount("Potion") >= 1) &&
                (!WoW.ItemOnCooldown("Healthstone") || !WoW.ItemOnCooldown("Potion")) &&
                !WoW.PlayerHasBuff("Feign Death") &&
                WoW.HealthPercent <= 30 &&
                !WoW.IsMounted &&
                WoW.HealthPercent != 0)
            {
                Thread.Sleep(500);
                WoW.CastSpell("Healthstone");
                WoW.CastSpell("Potion");
                return;
            }

            //Exhilaration
            if (WoW.CanCast("Exhilaration") &&
                WoW.HealthPercent <= 20 &&
                !WoW.IsMounted &&
                !WoW.PlayerHasBuff("Feign Death") &&
                WoW.HealthPercent != 0)
            {
                WoW.CastSpell("Exhilaration");
                return;
            }

            //Counter Shot
            if (WoW.CanCast("Counter Shot") &&
                WoW.TargetIsCastingAndSpellIsInterruptible &&
                !WoW.IsSpellOnCooldown("Counter Shot") &&
                WoW.TargetIsCasting &&
                WoW.IsSpellInRange("Counter Shot") &&
                WoW.TargetPercentCast > 75)
            {
                WoW.CastSpell("Counter Shot");
                return;
            }

            ////Revive Pet Call pet
            if ((!WoW.HasPet || WoW.PetHealthPercent <= 0) &&
                !WoW.IsMounted &&
                WoW.HealthPercent != 0 &&
                !WoW.PlayerHasBuff("Feign Death"))
            {
                WoW.CastSpell("Heart of the Phoenix");
                WoW.CastSpell("Revive Pet");
                Thread.Sleep(500);
                WoW.CastSpell("Call Pet");
                return;
            }

            //Voley
            if (WoW.CanCast("Voley") &&
                !WoW.PlayerHasBuff("Feign Death") &&
                !WoW.PlayerHasBuff("Voley") &&
                WoW.HealthPercent != 0 &&
                WoW.Talent(6) == 3)
            {
                WoW.CastSpell("Voley");
                return;
            }

            //Intimidation //Binding Shot
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0 &&
                ((WoW.CanCast("Intimidation") && WoW.Talent(5) == 3) || (WoW.CanCast("Binding Shot") && WoW.Talent(5) == 1)))
            {
                WoW.CastSpell("Binding Shot");
                WoW.CastSpell("Intimidation");
                return;
            }

            //Freezing Trap
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_X) < 0 &&
                WoW.CanCast("Freezing Trap") &&
                !WoW.IsMounted)
            {
                WoW.CastSpell("Freezing Trap");
                return;
            }

            //Tar Trap
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_C) < 0 &&
                WoW.CanCast("Tar Trap") &&
                !WoW.IsMounted)
            {
                WoW.CastSpell("Tar Trap");
                return;
            }

            if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent != 0)
            {
                //Cooldowns
                if (UseCooldowns)
                {
                }

                //Stampede
                if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0 &&
                    WoW.CanCast("Stampede") &&
                    WoW.Talent(7) == 1)
                {
                    WoW.CastSpell("Stampede");
                    return;
                }

                /*/Aspect of the Wild
                 * if (WoW.CanCast("Aspect of the Wild")
                 *  && !WoW.PlayerHasBuff("Aspect of the Turtle")
                 *  && WoW.PlayerHasBuff("Bestial Wrath")
                 *  && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 1300)
                 * {
                 *  WoW.CastSpell("Aspect of the Wild");
                 * }*/

                //SINGLE TARGET
                //Bestial Wrath
                if ((combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) &&
                    WoW.CanCast("Bestial Wrath") &&
                    !WoW.PlayerHasBuff("Aspect of the Turtle") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    (WoW.Focus >= 97 || (WoW.Focus >= 90 && WoW.CanCast("Aspect of the Wild"))))
                {
                    WoW.CastSpell("Bestial Wrath");
                    WoW.CastSpell("Aspect of the Wild");
                    //WoW.CastSpell("A Murder of Crows");
                    WoW.CastSpell("Kill Command");
                }

                //Dire Frenzy
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    (WoW.CanCast("Dire Frenzy") || WoW.SpellCooldownTimeRemaining("Dire Frenzy") <= 100) &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 2 &&
                    ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy") || WoW.PlayerSpellCharges("Dire Frenzy") >= 2))
                {
                    WoW.CastSpell("Titan's Thunder");
                    WoW.CastSpell("Dire Frenzy");
                    return;
                }

                //A Murder of Crows
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("A Murder of Crows")
                    //&& WoW.PlayerHasBuff("Bestial Wrath")
                    && WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(6) == 1 &&
                    WoW.Focus >= 30)
                {
                    WoW.CastSpell("A Murder of Crows");
                    return;
                }

                // Dire beast
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Dire Beast") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) != 2)
                {
                    WoW.CastSpell("Dire Beast");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Kill Command
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    (WoW.SpellCooldownTimeRemaining("Kill Command") <= 100 || WoW.CanCast("Kill Command")) &&
                    WoW.Focus >= 30)
                {
                    WoW.CastSpell("Kill Command");
                    return;
                }

                //Chimaera Shot
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Chimaera Shot") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 3 &&
                    WoW.Focus < 80)
                {
                    WoW.CastSpell("Chimaera Shot");
                    return;
                }

                //Cobra Shot
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    ((WoW.Focus >= 90) || (WoW.PlayerHasBuff("Bestial Wrath") && WoW.Focus >= 32)) &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.CanCast("Cobra Shot") &&
                    !WoW.CanCast("Bestial Wrath"))
                {
                    WoW.CastSpell("Cobra Shot");
                    return;
                }

                //AOE

                //Bestial Wrath
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Bestial Wrath") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    !WoW.PlayerHasBuff("Aspect of the Turtle"))
                {
                    WoW.CastSpell("Bestial Wrath");
                    return;
                }

                // Dire beast
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Dire Beast") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) != 2)
                {
                    WoW.CastSpell("Dire Beast");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Dire Frenzy
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Dire Frenzy") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 2)
                {
                    WoW.CastSpell("Titan's Thunder");
                    WoW.CastSpell("Dire Frenzy");
                    return;
                }

                //Barrage
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Barrage") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(6) == 2 &&
                    (WoW.Focus >= 60))
                {
                    WoW.CastSpell("Barrage");
                    return;
                }

                //Multishot
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Multi-Shot") &&
                    WoW.IsSpellInRange("Multi-Shot") &&
                    WoW.Focus >= 40)
                {
                    WoW.CastSpell("Multi-Shot");
                    return;
                }

                //Chimaera Shot
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Chimaera Shot") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 3 &&
                    WoW.Focus < 80)
                {
                    WoW.CastSpell("Chimaera Shot");
                    return;
                }

                //CLEAVE
                //Multishot - Beast Cleave uptime
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Multi-Shot") &&
                    (/*!WoW.PetHasBuff("BeastCleave") ||*/ WoW.PetBuffTimeRemaining("BeastCleave") < 0.5) &&
                    WoW.IsSpellInRange("Multi-Shot") &&
                    !WoW.CanCast("Bestial Wrath") &&
                    !WoW.PlayerHasBuff("Bestial Wrath") &&
                    WoW.Focus >= 40)
                {
                    WoW.CastSpell("Multi-Shot");
                    return;
                }

                //Dire Frenzy
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Dire Frenzy") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 2 &&
                    ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy") || WoW.PlayerSpellCharges("Dire Frenzy") >= 2))
                {
                    WoW.CastSpell("Titan's Thunder");
                    WoW.CastSpell("Dire Frenzy");
                    return;
                }

                //A Murder of Crows
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("A Murder of Crows") &&
                    WoW.PlayerHasBuff("Bestial Wrath") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(6) == 1 &&
                    WoW.Focus >= 30)
                {
                    WoW.CastSpell("A Murder of Crows");
                    return;
                }

                // Dire beast
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Dire Beast") &&
                    WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) != 2)
                {
                    WoW.CastSpell("Dire Beast");
                    WoW.CastSpell("Titan's Thunder");
                    return;
                }

                //Barrage
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Barrage") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(6) == 2 &&
                    (WoW.Focus >= 60))
                {
                    WoW.CastSpell("Barrage");
                    return;
                }

                //Kill Command
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Kill Command") &&
                    WoW.Focus >= 30)
                {
                    WoW.CastSpell("Kill Command");
                    return;
                }

                //Chimaera Shot
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    WoW.CanCast("Chimaera Shot") &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.Talent(2) == 3 &&
                    WoW.Focus < 80)
                {
                    WoW.CastSpell("Chimaera Shot");
                    return;
                }

                //Cobra Shot
                if (combatRoutine.Type == RotationType.SingleTargetCleave &&
                    ((WoW.Focus >= 85) || (WoW.PlayerHasBuff("Bestial Wrath") && (WoW.Focus >= 32))) &&
                    WoW.IsSpellInRange("Cobra Shot") &&
                    WoW.CanCast("Cobra Shot") &&
                    !WoW.CanCast("Bestial Wrath"))
                {
                    WoW.CastSpell("Cobra Shot");
                    return;
                }

                //Mend Pet
                if (WoW.HasPet &&
                    WoW.CanCast("Mend Pet") &&
                    WoW.HealthPercent != 0 &&
                    WoW.PetHealthPercent <= 75 &&
                    !WoW.PlayerHasBuff("Feign Death"))
                {
                    WoW.CastSpell("Mend Pet");
                    return;
                }
            }
        }
Ejemplo n.º 14
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");
            }
        }
Ejemplo n.º 15
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)                 // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy)                          //First things go first
                {
                    if (WoW.TargetIsCasting && WoW.IsSpellInRange("Wind Shear")) //interupt every spell - need to add kickable spells
                    {
                        WoW.CastSpell("Wind Shear");
                        return;
                    }

                    if (WoW.CanCast("Totem Mastery") && !WoW.PlayerHasBuff("Totem Mastery")) //Totem mastery at beggining
                    {
                        WoW.CastSpell("Totem Mastery");
                        return;
                    }

                    if (!WoW.IsSpellOnCooldown("Fire Elemental")) // && WoW.IsBoss) // use Fire Elemental
                    {
                        Log.Write("Boss detected, using Fire Elemental", Color.Purple);
                        WoW.CastSpell("Fire Elemental");
                        return;
                    }

                    if (WoW.CanCast("Ascendance") && !WoW.IsSpellOnCooldown("Ascendance")) // && WoW.IsBoss) //use Ascendance
                    {
                        WoW.CastSpell("Ascendance");
                        return;
                    }

                    if (WoW.CanCast("Stormkeeper") && !WoW.IsSpellOnCooldown("Stormkeeper") && !WoW.PlayerHasBuff("Ascendance")) //use stormkeeper after ascendance
                    {
                        WoW.CastSpell("Stormkeeper");
                        return;
                    }

                    if (WoW.CanCast("Lightning Bolt") && WoW.PlayerHasBuff("Stormkeeper") && !WoW.IsMoving) //Filler with stormkeeper
                    {
                        WoW.CastSpell("Lightning Bolt");
                    }

                    if (WoW.CanCast("Elemental Mastery") && WoW.IsSpellOnCooldown("Elemental Mastery")) //use Elemental Mastery on CD
                    {
                        WoW.CastSpell("Elemental Mastery");
                        return;
                    }

                    if (WoW.CanCast("Flame Shock") && !WoW.TargetHasDebuff("Flame Shock")) //Refresh Flame shock
                    {
                        WoW.CastSpell("Flame Shock");
                        return;
                    }

                    if (WoW.CanCast("Earth Shock") && WoW.Maelstrom > 99) //Earth shock on 100 maelstrom
                    {
                        WoW.CastSpell("Earth Shock");
                        return;
                    }

                    if (WoW.CanCast("Lava Burst") && WoW.TargetHasDebuff("Flame Shock") && WoW.PlayerHasBuff("Lava Surge")) //lava burst when we have lava surge
                    {
                        WoW.CastSpell("Lava Burst");
                        return;
                    }

                    if (WoW.CanCast("Lava Burst") && WoW.TargetHasDebuff("Flame Shock") && !WoW.IsMoving) //lava burst when not moving
                    {
                        WoW.CastSpell("Lava Burst");
                        return;
                    }

                    if (WoW.CanCast("Lightning Bolt") && !WoW.IsMoving) //Filler
                    {
                        WoW.CastSpell("Lightning Bolt");
                        return;
                    }

                    if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 40 && !WoW.IsSpellOnCooldown("Astral Shift")) //ASTRAL SHIFT - DMG REDUCTION if we are below 40% of HP
                    {
                        WoW.CastSpell("Astral Shift");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)                          //cast chain light and earthguake, using CDs without fire elemental
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy)                          //First things go first
                {
                    if (WoW.TargetIsCasting && WoW.IsSpellInRange("Wind Shear")) //interupt every spell - need to add kickable spells
                    {
                        WoW.CastSpell("Wind Shear");
                        return;
                    }

                    if (WoW.CanCast("Totem Mastery") && !WoW.PlayerHasBuff("Totem Mastery")) //Totem mastery at beggining
                    {
                        WoW.CastSpell("Totem Mastery");
                        return;
                    }

                    if (WoW.CanCast("Ascendance") && !WoW.IsSpellOnCooldown("Ascendance")) // && WoW.IsBoss) //use Ascendance on boss
                    {
                        WoW.CastSpell("Ascendance");
                        return;
                    }

                    if (WoW.CanCast("Stormkeeper") && !WoW.IsSpellOnCooldown("Stormkeeper") && !WoW.PlayerHasBuff("Ascendance")) //Stormkeeper after ascendance
                    {
                        WoW.CastSpell("Stormkeeper");
                        return;
                    }

                    if (WoW.CanCast("Lava Beam") && WoW.PlayerHasBuff("Ascendance") && !WoW.IsMoving) //Filler
                    {
                        WoW.CastSpell("Lava Beam");
                    }

                    if (WoW.CanCast("Lava Burst") && WoW.TargetHasDebuff("Flame Shock") && WoW.PlayerHasBuff("Lava Surge")) //lava burst when we have lava surge
                    {
                        WoW.CastSpell("Lava Burst");
                        return;
                    }

                    if (WoW.CanCast("Earthquake") && WoW.Maelstrom > 50)
                    //Earthquake using this macro #showtooltip Earthquake /cast [@cursor] Earthquake Need to point at location where EQ is cast

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

                    if (WoW.CanCast("Chain Lightning") && WoW.PlayerHasBuff("Stormkeeper") && !WoW.IsMoving) //Chain with stormkeeper
                    {
                        WoW.CastSpell("Chain Lightning");
                    }

                    if (WoW.CanCast("Elemental Mastery") && !WoW.IsSpellOnCooldown("Elemental Mastery")) //use Elemental Mastery on CD
                    {
                        WoW.CastSpell("Elemental Mastery");
                        return;
                    }

                    if (WoW.CanCast("Chain Lightning") && !WoW.IsMoving) //Filler
                    {
                        WoW.CastSpell("Chain Lightning");
                    }

                    if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 40 && !WoW.IsSpellOnCooldown("Astral Shift")) //ASTRAL SHIFT - DMG REDUCTION if we are below 40% of HP
                    {
                        WoW.CastSpell("Astral Shift");
                    }
                }
            }
        }
Ejemplo n.º 16
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;
                //}
            }
        }
Ejemplo n.º 17
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;
                    }
                }
            }
        }
Ejemplo n.º 18
0
        public override void Pulse()
        {
            if (defcooldowns && WoW.IsInCombat)
            {
                if (WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "LS HP Percent") && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand"))
                {
                    WoW.CastSpell("Last Stand");
                    return;
                }
                if (WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "SW HP Percent") && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall"))
                {
                    WoW.CastSpell("Shield Wall");
                    return;
                }
            }

            if (Pots && WoW.IsInCombat && WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "HS HP Percent"))
            {
                if (WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.ItemCount("HealthPotion") == 0)
                {
                    WoW.CastSpell("Healthstone");
                    return;
                }

                if (WoW.ItemCount("HealthPotion") >= 1 && !WoW.ItemOnCooldown("HealthPotion"))
                {
                    WoW.CastSpell("HealthPotion");
                    return;
                }
            }


            if (!Indomitable && WoW.IsInCombat && WoW.IsSpellInRange("Shield Slam"))
            {
                swingwatch.Start();
            }

            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Shield Slam"))
                {
                    if (BattleC && !WoW.IsSpellOnCooldown("Battle Cry"))
                    {
                        WoW.CastSpell("Battle Cry");
                        return;
                    }
                    if (AngerM && !WoW.IsSpellOnCooldown("Demoralizing Shout") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0))
                    {
                        WoW.CastSpell("Demoralizing Shout");
                    }
                    if (generalInterrupts)
                    {
                        if (WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible)
                        {
                            if (!WoW.IsSpellOnCooldown("Pummel") && WoW.IsSpellInRange("Shield Slam") && WoW.TargetPercentCast >= 50)
                            {
                                WoW.CastSpell("Pummel");
                                return;
                            }
                            if (spellref && !WoW.IsSpellOnCooldown("SpellReflect") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 80)
                            {
                                WoW.CastSpell("SpellReflect");
                                return;
                            }
                        }
                    }

                    if (mythicplusinterrupts)
                    {
                        if (WoW.CanCast("Pummel") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible)
                        {
//int spell list for all important spells in M+
                            if (WoW.TargetCastingSpellID == 200248
//Court Of Stars Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 225573 || WoW.TargetCastingSpellID == 208165 || WoW.TargetCastingSpellID == 211401 || WoW.TargetCastingSpellID == 21147 ||
                                WoW.TargetCastingSpellID == 211299 || WoW.TargetCastingSpellID == 2251 || WoW.TargetCastingSpellID == 209413 || WoW.TargetCastingSpellID == 209404 ||
                                WoW.TargetCastingSpellID == 215204 || WoW.TargetCastingSpellID == 210261
//Darkheart Thicket Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 200658 || WoW.TargetCastingSpellID == 200631 || WoW.TargetCastingSpellID == 204246 || WoW.TargetCastingSpellID == 2014
//Eye of Azshara Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 19687 || WoW.TargetCastingSpellID == 218532 || WoW.TargetCastingSpellID == 195129 || WoW.TargetCastingSpellID == 195046 ||
                                WoW.TargetCastingSpellID == 197502 || WoW.TargetCastingSpellID == 196027 || WoW.TargetCastingSpellID == 196175 || WoW.TargetCastingSpellID == 192003 ||
                                WoW.TargetCastingSpellID == 191848
//Halls of Valor Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 198595 || WoW.TargetCastingSpellID == 198962 || WoW.TargetCastingSpellID == 198931 || WoW.TargetCastingSpellID == 192563 ||
                                WoW.TargetCastingSpellID == 192288 || WoW.TargetCastingSpellID == 199726
//Maw of Souls Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 198495 || WoW.TargetCastingSpellID == 195293 || WoW.TargetCastingSpellID == 199589 || WoW.TargetCastingSpellID == 194266 ||
                                WoW.TargetCastingSpellID == 198405 || WoW.TargetCastingSpellID == 199514 || WoW.TargetCastingSpellID == 194657
//Neltharions Lair Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 193585 || WoW.TargetCastingSpellID == 202181
//The Arcway Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 226269 || WoW.TargetCastingSpellID == 211007 || WoW.TargetCastingSpellID == 211757 || WoW.TargetCastingSpellID == 226285 ||
                                WoW.TargetCastingSpellID == 226206 || WoW.TargetCastingSpellID == 211115 || WoW.TargetCastingSpellID == 196392
// Advisor Vandros (Interrupt manually) Spell,203176,Accelerating Blast
                                || WoW.TargetCastingSpellID == 203957
//Vault of the Wardens Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 193069 || WoW.TargetCastingSpellID == 191823 || WoW.TargetCastingSpellID == 202661 || WoW.TargetCastingSpellID == 201488 ||
                                WoW.TargetCastingSpellID == 195332
//Raid Interrupts
                                || WoW.TargetCastingSpellID == 209485 || WoW.TargetCastingSpellID == 209410 || WoW.TargetCastingSpellID == 211470 || WoW.TargetCastingSpellID == 225100 ||
                                WoW.TargetCastingSpellID == 207980 || WoW.TargetCastingSpellID == 196870 || WoW.TargetCastingSpellID == 195284 || WoW.TargetCastingSpellID == 192005 ||
                                WoW.TargetCastingSpellID == 228255 || WoW.TargetCastingSpellID == 228239 || WoW.TargetCastingSpellID == 227917 || WoW.TargetCastingSpellID == 228625 ||
                                WoW.TargetCastingSpellID == 228606 || WoW.TargetCastingSpellID == 229714 || WoW.TargetCastingSpellID == 227592 || WoW.TargetCastingSpellID == 229083 ||
                                WoW.TargetCastingSpellID == 228025 || WoW.TargetCastingSpellID == 228019 || WoW.TargetCastingSpellID == 227987 || WoW.TargetCastingSpellID == 227420 ||
                                WoW.TargetCastingSpellID == 200905)

                            {
                                if (!WoW.IsSpellOnCooldown("Pummel") && WoW.TargetPercentCast >= 40)
                                {
                                    WoW.CastSpell("Pummel");
                                    return;
                                }
                                if (spellref && !WoW.IsSpellOnCooldown("SpellReflect") && WoW.TargetPercentCast >= 80)
                                {
                                    WoW.CastSpell("SpellReflect");
                                    return;
                                }
                            }
                        }
                    }

                    if (WoW.CanCast("Shield Block") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "SB HP Percent") && WoW.Rage >= 15 &&
                        !WoW.IsSpellOnCooldown("Shield Block") && !WoW.PlayerHasBuff("Shield Block"))
                    {
                        WoW.CastSpell("Shield Block");
                        return;
                    }

                    if (WoW.CanCast("Shield Block") && WoW.Rage >= 15 && WoW.PlayerBuffTimeRemaining("Shield Block") <= 2)
                    {
                        WoW.CastSpell("Shield Block");
                        return;
                    }


                    // IP Control
                    if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 60) && !WoW.PlayerHasBuff("Vengeance Ignore Pain"))
                    {
                        WoW.CastSpell("Ignore Pain");
                        return;
                    }
                    if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 39) && WoW.PlayerHasBuff("Vengeance Ignore Pain"))
                    {
                        WoW.CastSpell("Ignore Pain");
                    }
                    if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 13) && WoW.PlayerHasBuff("Vengeance Ignore Pain") && WoW.IsSpellOverlayed("Revenge"))
                    {
                        WoW.CastSpell("Ignore Pain");
                    }
                    // Revenge Control
                    if (Indomitable)
                    {
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                        }
                        if (AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30)
                        {
                            WoW.CastSpell("Revenge");
                        }
                        if (AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                        }
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                        }
                        if (WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap"))
                        {
                            WoW.CastSpell("Thunder Clap");
                            return;
                        }
                    }

                    if (!Indomitable && swingwatch.ElapsedMilliseconds > AttackspeedMS)
                    {
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30)
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 19 && !WoW.IsSpellOnCooldown("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap"))
                        {
                            WoW.CastSpell("Thunder Clap");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                    }

                    //Rotational shiz

                    if (!Indomitable && (!WoW.IsSpellOnCooldown("Shield Slam") || WoW.IsSpellOverlayed("Shield Slam")) && !AngerM && WoW.PlayerHasBuff("Shield Block") &&
                        WoW.SpellCooldownTimeRemaining("Shield Block") > 2)
                    {
                        WoW.CastSpell("Shield Slam");
                        return;
                    }


                    if ((AngerM || Indomitable) && (!WoW.IsSpellOnCooldown("Shield Slam") || WoW.IsSpellOverlayed("Shield Slam")))
                    {
                        WoW.CastSpell("Shield Slam");
                    }
                    //will cast SS when proc's
                    if (WoW.CanCast("Shield Slam") && WoW.IsSpellOverlayed("Shield Slam"))
                    {
                        WoW.CastSpell("Shield Slam");
                        return;
                    }


                    if (Indomitable && WoW.CanCast("Devastate") && WoW.IsSpellOnCooldown("Shield Slam") && WoW.IsSpellOnCooldown("Thunder Clap"))
                    {
                        WoW.CastSpell("Devastate");
                        return;
                    }


                    if (ImpendingVic && WoW.Rage >= 10 && !WoW.IsSpellOnCooldown("Impending Victory") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "IV HP Percent"))
                    {
                        WoW.CastSpell("Impending Victory");
                        return;
                    }
                    if (!ImpendingVic && WoW.IsSpellOverlayed("Victory Rush") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "IV HP Percent"))
                    {
                        WoW.CastSpell("Victory Rush");
                        return;
                    }
                }
                //Artifact / Shockwave Combo.
                if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun") && WoW.IsSpellOnCooldown("Neltharion's Fury"))
                {
                    WoW.CastSpell("Neltharion's Fury");
                    return;
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                // Do AOE Stuff here
            }
        }
Ejemplo n.º 19
0
 public override void Pulse()
 {
     if (combatRoutine.Type == RotationType.SingleTarget)
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasBuff("Moonkin") && !WoW.IsMoving())
         {
             if (WoW.IsSpellInRange("Moonfire") && WoW.CanCast("Moonfire") && !WoW.HasDebuff("Moonfire"))
             {
                 WoW.CastSpellByName("Moonfire");
                 return;
             }
             if (WoW.IsSpellInRange("Sunfire") && WoW.CanCast("Sunfire") && !WoW.HasDebuff("Sunfire"))
             {
                 WoW.CastSpellByName("Sunfire");
                 return;
             }
             if (WoW.IsSpellInRange("LStrike") && WoW.CanCast("LStrike") && WoW.GetBuffStacks("LunarEmp") == 3 && WoW.Astral <= 80)
             {
                 WoW.CastSpellByName("LStrike");
                 return;
             }
             if ((WoW.IsSpellInRange("SolarW") && WoW.CanCast("SolarW") && WoW.HasBuff("SolarEmp") && WoW.Astral <= 80) || (WoW.IsSpellInRange("SolarW") &&
                                                                                                                            WoW.Astral <= 40 && WoW.GetSpellCharges("Moon") < 1 && WoW.GetSpellCharges("HalfMoon") < 1 && WoW.GetSpellCharges("FullMoon") < 1 && WoW.GetBuffStacks("LunarEmp") <= 2))
             {
                 WoW.CastSpellByName("SolarW");
                 return;
             }
             if (WoW.IsSpellInRange("StarSurge") && WoW.CanCast("StarSurge") && WoW.Astral >= 40 && !(WoW.GetBuffStacks("LunarEmp") == 3) && !(WoW.GetBuffStacks("SolarEmp") == 3))
             {
                 WoW.CastSpellByName("StarSurge");
                 return;
             }
             if (WoW.IsSpellInRange("Moon") && WoW.CanCast("Moon") && WoW.Astral <= 60 && WoW.HasDebuff("Moonfire") && WoW.HasDebuff("Sunfire"))
             {
                 WoW.CastSpellByName("Moon");
                 return;
             }
         }
         if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasBuff("Moonkin") && WoW.IsMoving())
         {
             if (WoW.IsSpellInRange("Moonfire") && WoW.CanCast("Moonfire") && WoW.Astral <= 40)
             {
                 WoW.CastSpellByName("Moonfire");
                 return;
             }
             if (WoW.IsSpellInRange("StarSurge") && WoW.CanCast("StarSurge") && WoW.Astral >= 40)
             {
                 WoW.CastSpellByName("StarSurge");
                 return;
             }
             if (WoW.IsSpellInRange("Sunfire") && WoW.CanCast("Sunfire") && !WoW.HasDebuff("Sunfire"))
             {
                 WoW.CastSpellByName("Sunfire");
                 return;
             }
         }
     }
     //12 e 18
     if (combatRoutine.Type == RotationType.AOE)
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasBuff("Moonkin") && !WoW.IsMoving())
         {
             if (WoW.CanCast("Moonfire") && !WoW.HasDebuff("Moonfire"))
             {
                 WoW.CastSpellByName("Moonfire");
                 return;
             }
             if (WoW.CanCast("Sunfire") && !WoW.HasDebuff("Sunfire"))
             {
                 WoW.CastSpellByName("Sunfire");
                 return;
             }
             if (WoW.CanCast("SolarW") && WoW.GetBuffStacks("SolarEmp") == 3 && WoW.Astral <= 80)
             {
                 WoW.CastSpellByName("SolarW");
                 return;
             }
             if ((WoW.CanCast("LStrike") && WoW.HasBuff("LunarEmp") && WoW.Astral <= 80) || (
                     WoW.Astral <= 40 && WoW.GetSpellCharges("Moon") < 1 && WoW.GetSpellCharges("HalfMoon") < 1 && WoW.GetSpellCharges("FullMoon") < 1 && WoW.GetBuffStacks("SolarEmp") <= 2))
             {
                 WoW.CastSpellByName("LStrike");
                 return;
             }
             if (WoW.CanCast("StarSurge") && WoW.Astral >= 40 && !(WoW.GetBuffStacks("LunarEmp") == 3) && !(WoW.GetBuffStacks("SolarEmp") == 3))
             {
                 WoW.CastSpellByName("StarSurge");
                 return;
             }
             if (WoW.CanCast("Moon") && WoW.Astral <= 60 && WoW.HasDebuff("Sunfire") && WoW.HasDebuff("Moonfire"))
             {
                 WoW.CastSpellByName("Moon");
                 return;
             }
         }
         if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasBuff("Moonkin") && WoW.IsMoving())
         {
             if (WoW.IsSpellInRange("Moonfire") && WoW.CanCast("Moonfire") && WoW.Astral <= 40)
             {
                 WoW.CastSpellByName("Moonfire");
                 return;
             }
             if (WoW.IsSpellInRange("StarSurge") && WoW.CanCast("StarSurge") && WoW.Astral >= 40)
             {
                 WoW.CastSpellByName("StarSurge");
                 return;
             }
             if (WoW.IsSpellInRange("Sunfire") && WoW.CanCast("Sunfire") && !WoW.HasDebuff("Sunfire"))
             {
                 WoW.CastSpellByName("Sunfire");
                 return;
             }
         }
     }
 }
Ejemplo n.º 20
0
        public override void Pulse()
        {
            //Combat Time
            if (CombatTime.IsRunning && !WoW.IsInCombat)
            {
                CombatTime.Reset();
            }
            if (!CombatTime.IsRunning && WoW.IsInCombat)
            {
                CombatTime.Start();
            }

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

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

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

            // Single Target Rotation
            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                // Normal Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting)
                {
                    Log.Write("Imp Time: " + ImpsRemainingDuration, Color.DarkViolet);
                    Log.Write("Dread Time: " + DreadstalkersRemainingDuration, Color.DarkViolet);
                    //Implosion (if talent)
                    if (WoW.CanCast("Implosion") && Implosion && WoW.IsSpellInRange("Doom"))
                    {
                        if (ImpsRemainingDuration <= SBExecuteTime && WoW.PlayerHasBuff("DemonicSynergy"))
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy"))
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            // AoE Rotation
            if (combatRoutine.Type == RotationType.AOE)
            {
                Log.Write("Imp Time: " + ImpsRemainingDuration, Color.DarkViolet);
                // AoE Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting)
                {
                    //Implosion (if talent)
                    if (WoW.CanCast("Implosion") && Implosion && WoW.IsSpellInRange("Doom"))
                    {
                        if (ImpsRemainingDuration <= SBExecuteTime && WoW.PlayerHasBuff("DemonicSynergy"))
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy"))
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.WildImpsCount == 1 && ImpsRemainingDuration <= SBExecuteTime)
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                        if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1)
                        {
                            WoW.CastSpell("Implosion");
                            return;
                        }
                    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    //Life Tap
                    if (WoW.CanCast("LifeTap") && WoW.Mana < 100 && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("LifeTap");
                    }
                }
            }
        }
Ejemplo n.º 21
0
        public override void Pulse()
        {
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LSHIFT) < 0)
            {
                return;
            }

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

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

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

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

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

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

                    if (WoW.CanCast("Avatar") && (WoW.SpellCooldownTimeRemaining("Battle Cry") < 1200 || WoW.SpellCooldownTimeRemaining("Battle Cry") > 2200))
                    {
                        WoW.CastSpell("Avatar");
                        return;
                    }
                }
                else
                {
                    BattleCryRotationSequence = 0;
                }
                if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && ((!WoW.PlayerHasBuff("Enrage") && WoW.Rage >= 85) || WoW.Rage >= 100))
                {
                    WoW.CastSpell("Rampage");
                    return;
                }
                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && !WoW.PlayerHasBuff("Enrage"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }
                if (WoW.CanCast("Odyns Fury") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Battle Cry"))
                {
                    WoW.CastSpell("Odyns Fury");
                    return;
                }
                if (WoW.CanCast("Execute") && WoW.IsSpellInRange("Execute") && WoW.PlayerHasBuff("Enrage") && WoW.TargetHealthPercent <= 20)
                {
                    WoW.CastSpell("Execute");
                    return;
                }
                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }
                if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                {
                    WoW.CastSpell("Raging Blow");
                    return;
                }
                if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball"))
                {
                    WoW.CastSpell("Whirlwind");
                    return;
                }
                WoW.CastSpell("Furious Slash", WoW.CanCast("Furious Slash") && WoW.IsSpellInRange("Furious Slash"));
            }
        }
Ejemplo n.º 22
0
        /* public static List<DateTime> imps = new List<DateTime>();
         *
         *      public static bool ImpCounting()
         *      {
         *              if (!WoW.IsInCombat && imps.Any())
         *              {
         *                      imps.Clear(); // to clear list when out of combat
         *                      return true;
         *              }
         *
         *              if (WoW.WasLastCasted("HoG"))
         *              {
         *                      imps.Add(DateTime.UtcNow); // to add new entry
         *                      return true;
         *              }
         *              return true;
         *      }
         *
         *      public static int CountImpPacks
         *      {
         *              get
         *              {
         *                      if (imps.Any())
         *                      {
         *                              return imps.Count(i => i.AddSeconds(10) > DateTime.UtcNow);
         *                      }
         *                      return 0;
         *              }
         *      } */

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

                    if (WoW.IsInCombat && WoW.CanCast("Demonwrath") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling)
                    {
                        WoW.CastSpell("Demonwrath");
                    }
                }
            }
        }
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.PlayerHasBuff("Metamorphosis"))
                    {
                        if (WoW.CanCast("Chaos Blades") && !WoW.IsSpellOnCooldown("Chaos Blades") && UseCooldowns)
                        {
                            WoW.CastSpell("Chaos Blades");
                            return;
                        }
                        if (WoW.CanCast("FOTI") && !WoW.IsSpellOnCooldown("FOTI") && !WoW.IsMoving && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("FOTI");
                            return;
                        }
                        if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70))
                        {
                            WoW.CastSpell("Annihilation");
                            return;
                        }
                        if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && (WoW.PlayerHasBuff("Momentum") || WoW.PlayerSpellCharges("Throw Glaive") == 2))
                        {
                            WoW.CastSpell("Throw Glaive");
                            return;
                        }
                        if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator
                        {
                            WoW.CastSpell("Demons Bite");
                            return;
                        }
                    }
                    if (WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike") && !WoW.IsSpellOnCooldown("Chaos Blades"))
                    {
                        WoW.CastSpell("Chaos Blades");
                        return;
                    }

                    if (WoW.CanCast("FOTI") && !WoW.IsSpellOnCooldown("FOTI") && !WoW.IsMoving && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike"))
                    {
                        WoW.CastSpell("FOTI");
                        return;
                    }
                    if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70)) // Fury Spender
                    {
                        WoW.CastSpell("Chaos Strike");
                        return;
                    }
                    if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && (WoW.PlayerHasBuff("Momentum") || WoW.PlayerSpellCharges("Throw Glaive") == 2))
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }
                    if (WoW.CanCast("Blur") && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Blur") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Blur Usage Percent"))
                    {
                        WoW.CastSpell("Blur");
                        return;
                    }
                    if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator
                    {
                        WoW.CastSpell("Demons Bite");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do AOE Stuff here
                if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.PlayerHasBuff("Metamorphosis"))
                    {
                        if (WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike") && !WoW.IsSpellOnCooldown("Chaos Blades"))
                        {
                            WoW.CastSpell("Chaos Blades");
                            return;
                        }

                        if (WoW.CanCast("FOTI") && !WoW.IsSpellOnCooldown("FOTI") && !WoW.IsMoving && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("FOTI");
                            return;
                        }
                        if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("Eye Beam");
                            return;
                        }
                        if (WoW.CanCast("Death Sweep") && WoW.Fury >= 35 && WoW.IsSpellOnCooldown("Eye Beam") && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike"))
                        {
                            WoW.CastSpell("Death Sweep");
                            return;
                        }
                        if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && WoW.IsSpellOnCooldown("Eye Beam") &&
                            (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70))
                        {
                            WoW.CastSpell("Annihilation");
                            return;
                        }
                        if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && (WoW.PlayerHasBuff("Momentum") || WoW.PlayerSpellCharges("Throw Glaive") == 2))
                        {
                            WoW.CastSpell("Throw Glaive");
                            return;
                        }
                        if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator
                        {
                            WoW.CastSpell("Demons Bite");
                            return;
                        }
                    }
                    if (WoW.CanCast("Chaos Blades") && !WoW.IsSpellOnCooldown("Chaos Blades") && UseCooldowns && WoW.IsSpellInRange("Chaos Strike"))
                    {
                        WoW.CastSpell("Chaos Blades");
                        return;
                    }

                    if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike") && !WoW.IsSpellOnCooldown("FOTI") && !WoW.IsMoving && WoW.PlayerHasBuff("Momentum"))
                    {
                        WoW.CastSpell("FOTI");
                        return;
                    }
                    if (WoW.CanCast("Eye Beam") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 50 && WoW.PlayerHasBuff("Momentum"))
                    {
                        WoW.CastSpell("Eye Beam");
                        return;
                    }
                    if (WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 35 && WoW.IsSpellOnCooldown("Eye Beam") && WoW.PlayerHasBuff("Momentum"))
                    {
                        WoW.CastSpell("Blade Dance");
                        return;
                    }
                    if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && WoW.IsSpellOnCooldown("Eye Beam") &&
                        (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70))
                    {
                        WoW.CastSpell("Chaos Strike");
                        return;
                    }
                    if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && (WoW.PlayerHasBuff("Momentum") || WoW.PlayerSpellCharges("Throw Glaive") == 2))
                    {
                        WoW.CastSpell("Throw Glaive");
                        return;
                    }
                    if (WoW.CanCast("Blur") && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Blur") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Blur Usage Percent"))
                    {
                        WoW.CastSpell("Blur");
                        return;
                    }
                    if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator
                    {
                        WoW.CastSpell("Demons Bite");
                    }
                }
            }
        }
        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
            }
        }
        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);
            }

            //Healthstone - Potion
            if ((WoW.CanCast("Healthstone") || WoW.CanCast("Potion")) &&
                (WoW.ItemCount("Healthstone") >= 1 || WoW.ItemCount("Potion") >= 1) &&
                (!WoW.ItemOnCooldown("Healthstone") || !WoW.ItemOnCooldown("Potion")) &&
                WoW.HealthPercent <= 30 &&
                !WoW.IsMounted)
            {
                WoW.CastSpell("Healthstone");
                WoW.CastSpell("Potion");
                return;
            }

            //Shield of Vengeance
            if (WoW.CanCast("Shield of Vengeance") &&
                WoW.HealthPercent <= 40 &&
                !WoW.IsMounted)
            {
                WoW.CastSpell("Shield of Vengeance");
                return;
            }

            //Lay on Hands
            if (WoW.CanCast("Lay on Hands") &&
                WoW.HealthPercent <= 20 &&
                !WoW.IsMounted)
            {
                WoW.CastSpell("Lay on Hands");
                return;
            }

            //Divine Steed
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_4) < 0 &&
                WoW.CanCast("Divine Steed") &&
                !WoW.PlayerHasBuff("Divine Steed"))
            {
                WoW.CastSpell("Divine Steed");
                return;
            }

            if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.HealthPercent != 0)
            {
                //Crusade
                if (WoW.CanCast("Crusade") &&
                    WoW.Talent(7) == 2 &&
                    WoW.CurrentHolyPower >= 3 &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    (WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Time Warp") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums of War")))
                {
                    WoW.CastSpell("Crusade");
                    return;
                }

                //Avenging Wrath
                if (WoW.CanCast("Avenging Wrath") &&
                    WoW.CurrentHolyPower >= 3 &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    (WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Time Warp") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums of War")))
                {
                    WoW.CastSpell("Avenging Wrath");
                    return;
                }

                //Hammer of Justice
                if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_ADD) < 0 &&
                    WoW.CanCast("Hammer of Justice")
                    )
                {
                    WoW.CastSpell("Hammer of Justice");
                    return;
                }

                //Holy Wrath
                if (WoW.CanCast("Holy Wrath") &&
                    WoW.Talent(7) == 3 &&
                    WoW.HealthPercent <= 40 &&
                    WoW.IsSpellInRange("Templar Verdict"))
                {
                    WoW.CastSpell("Holy Wrath");
                    return;
                }

                //Single Target Rotation

                //Execution Sentence
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Execution Sentence") &&
                    WoW.TargetHasDebuff("Judgement") &&
                    WoW.TargetDebuffTimeRemaining("Judgement") >= 650 &&
                    WoW.Talent(1) == 2)
                {
                    WoW.CastSpell("Execution Sentence");
                    return;
                }

                //Justicar's Vengeance
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Justicars Vengeance") &&
                    WoW.PlayerHasBuff("Divine Purpose") &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.Talent(5) == 1)
                {
                    WoW.CastSpell("Justicars Vengeance");
                    return;
                }

                //Templar's Verdict
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    (WoW.CurrentHolyPower >= 3 || WoW.PlayerHasBuff("Divine Purpose") || (WoW.CurrentHolyPower >= 2 && WoW.PlayerHasBuff("The Fires of Justice"))) &&
                    WoW.CanCast("Templar Verdict") &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.TargetHasDebuff("Judgement") &&
                    WoW.TargetDebuffTimeRemaining("Judgement") >= 50)
                {
                    WoW.CastSpell("Templar Verdict");
                    return;
                }

                //Judgement
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Judgement") &&
                    WoW.CurrentHolyPower >= 3)
                {
                    WoW.CastSpell("Judgement");
                    return;
                }

                //Wake of Ashes
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CurrentHolyPower == 0 &&
                    WoW.CanCast("Wake of Ashes") &&
                    WoW.IsSpellInRange("Templar Verdict"))
                {
                    WoW.CastSpell("Wake of Ashes");
                    return;
                }

                //Blade of Justice
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Blade of Justice") &&
                    WoW.IsSpellInRange("Blade of Justice") &&
                    WoW.CurrentHolyPower <= 3 &&
                    WoW.Talent(4) != 3)
                {
                    WoW.CastSpell("Blade of Justice");
                    return;
                }

                //Divine Hammer
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Divine Hammer") &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.CurrentHolyPower <= 3 &&
                    WoW.Talent(4) == 3)
                {
                    WoW.CastSpell("Divine Hammer");
                    return;
                }

                //Crusader Strike
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.CurrentHolyPower < 5 &&
                    WoW.PlayerSpellCharges("Crusader Strike") >= 1 &&
                    WoW.CanCast("Crusader Strike") &&
                    WoW.Talent(2) != 2)
                {
                    WoW.CastSpell("Crusader Strike");
                    return;
                }

                //Zeal
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.CurrentHolyPower < 5 &&
                    WoW.PlayerSpellCharges("Zeal") >= 1 &&
                    WoW.CanCast("Zeal") &&
                    WoW.Talent(2) == 2)
                {
                    WoW.CastSpell("Zeal");
                    return;
                }

                //Consecration
                if (combatRoutine.Type == RotationType.SingleTarget &&
                    WoW.CanCast("Consecration") &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.Talent(1) == 3)
                {
                    WoW.CastSpell("Consecration");
                    return;
                }

                //AoE Rotation = 3+ Targets

                //Divine Storm
                if (combatRoutine.Type == RotationType.AOE &&
                    (WoW.CurrentHolyPower >= 3 || WoW.PlayerHasBuff("Divine Purpose") || (WoW.CurrentHolyPower >= 2 && WoW.PlayerHasBuff("The Fires of Justice"))) &&
                    WoW.CanCast("Divine Storm") &&
                    WoW.IsSpellInRange("Templar Verdict"))
                {
                    WoW.CastSpell("Divine Storm");
                    return;
                }

                //Judgement
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Judgement"))
                {
                    WoW.CastSpell("Judgement");
                    return;
                }

                //Wake of Ashes
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CurrentHolyPower == 0 &&
                    WoW.CanCast("Wake of Ashes") &&
                    WoW.IsSpellInRange("Templar Verdict"))
                {
                    WoW.CastSpell("Wake of Ashes");
                    return;
                }

                //Consecration
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Consecration") &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.Talent(1) == 3)
                {
                    WoW.CastSpell("Consecration");
                    return;
                }

                //Blade of Justice
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Blade of Justice") &&
                    WoW.IsSpellInRange("Blade of Justice") &&
                    WoW.CurrentHolyPower <= 3 &&
                    WoW.Talent(4) != 3)
                {
                    WoW.CastSpell("Blade of Justice");
                    return;
                }

                //Divine Hammer
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.CanCast("Divine Hammer") &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.CurrentHolyPower <= 3 &&
                    WoW.Talent(4) == 3)
                {
                    WoW.CastSpell("Divine Hammer");
                    return;
                }

                //Crusader Strike
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.CurrentHolyPower < 5 &&
                    WoW.PlayerSpellCharges("Crusader Strike") >= 1 &&
                    WoW.CanCast("Crusader Strike") &&
                    WoW.Talent(2) != 2)
                {
                    WoW.CastSpell("Crusader Strike");
                    return;
                }

                //Zeal
                if (combatRoutine.Type == RotationType.AOE &&
                    WoW.IsSpellInRange("Templar Verdict") &&
                    WoW.CurrentHolyPower < 5 &&
                    WoW.PlayerSpellCharges("Zeal") >= 1 &&
                    WoW.CanCast("Zeal") &&
                    WoW.Talent(2) == 2)
                {
                    WoW.CastSpell("Zeal");
                    return;
                }


                if (combatRoutine.Type == RotationType.SingleTargetCleave) //Cleave rotation = 2 targets
                {
                    // Do Single Target Cleave stuff here if applicable else ignore this one
                }
            }
        }
Ejemplo n.º 26
0
        public override void Pulse()
        {
            if (!coolDownStopWatch.IsRunning || coolDownStopWatch.ElapsedMilliseconds > 60000)
            {
                coolDownStopWatch.Restart();
            }
            if (DetectKeyPress.GetKeyState(0x6A) < 0)                              //Use cooldowns manage by *numButton
            {
                if (coolDownStopWatch.ElapsedMilliseconds > 1000)
                {
                    combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns;
                    WoW.Speak("Cooldowns " + (combatRoutine.UseCooldowns ? "On" : "Off"));
                    coolDownStopWatch.Restart();
                }
            }

            if (combatRoutine.Type == RotationType.SingleTarget)                                                                     // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Ghost Wolf") && WoW.IsInCombat)                        //First things go first but break if we wanna run in Wolf
                {
                    if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) //interupt every spell
                    {
                        WoW.CastSpell("Wind Shear");
                        return;
                    }

                    if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Stormstrike") && combatRoutine.UseCooldowns && WoW.Maelstrom >= 20)                     //Wolves in melee range
                    {
                        Log.Write("Using Feral Spirit", Color.Red);
                        WoW.CastSpell("Feral Spirit");
                        return;
                    }

                    if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 115)                     //Crash lightning for alpha wolf
                    {
                        WoW.CastSpell("Crash Lightning");
                        return;
                    }

                    if (WoW.CanCast("Rockbiter") && (!WoW.PlayerHasBuff("Landslide") || WoW.PlayerBuffTimeRemaining("Landslide") <= 1) && WoW.IsSpellInRange("Flametongue")) //REFRESH LANDSLIDE
                    {
                        Log.Write("Reseting Landslide", Color.Red);
                        WoW.CastSpell("Rockbiter");
                        return;
                    }

                    if (WoW.CanCast("Fury of Air") && !WoW.PlayerHasBuff("Fury of Air") && WoW.IsSpellInRange("Flametongue") && WoW.Maelstrom >= 22) //REFRESH Fury of Air
                    {
                        Log.Write("Reseting Fury of Air", Color.Red);
                        WoW.CastSpell("Fury of Air");
                        return;
                    }

                    if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue") && ((!WoW.PlayerHasBuff("Flametongue") || WoW.PlayerBuffTimeRemaining("Flametongue") <= 1)) || (WoW.SpellCooldownTimeRemaining("Doom Winds") <= 6 && WoW.PlayerBuffTimeRemaining("Flametongue") <= 4)) //REFRESH FLAMETONGUE
                    {
                        Log.Write("Reseting Flametongue buff", Color.Red);
                        WoW.CastSpell("Flametongue");
                        return;
                    }

                    if (WoW.CanCast("Doom Winds") && combatRoutine.UseCooldowns && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Flametongue"))
                    {
                        WoW.CastSpell("Doom Winds");
                        return;
                    }

                    if (WoW.CanCast("Lightning Bolt") && WoW.IsSpellInRange("Lightning Bolt") && WoW.Maelstrom >= 46)                     //Overcharge
                    {
                        WoW.CastSpell("Lightning Bolt");
                        return;
                    }

                    if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Stormbringer") && WoW.Maelstrom >= 26)
                    {
                        WoW.CastSpell("Stormstrike");
                        return;
                    }

                    if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Hot Hand"))                     //Hot Hand
                    {
                        WoW.CastSpell("Lava Lash");
                        return;
                    }

                    if (WoW.SpellCooldownTimeRemaining("Lightning Bolt") >= 1)                      // to get not GCD locked on Bolt
                    {
                        if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 80)
                        {
                            WoW.CastSpell("Stormstrike");
                            return;
                        }

                        if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 120)
                        {
                            WoW.CastSpell("Lava Lash");                                     //Buffer Lava
                            return;
                        }

                        if (WoW.CanCast("Flametongue") && WoW.PlayerBuffTimeRemaining("Flametongue") <= 5 && WoW.IsSpellInRange("Flametongue"))
                        {
                            WoW.CastSpell("Flametongue");                                     //REFRESH FLAMETONGUE PANDEMIC
                            return;
                        }

                        if (WoW.CanCast("Rockbiter") && WoW.IsSpellInRange("Flametongue"))
                        {
                            WoW.CastSpell("Rockbiter");                                     //Nothing to do
                            return;
                        }
                        if (WoW.CanCast("Feral Lunge") && !WoW.IsSpellInRange("Flametongue") && WoW.IsSpellInRange("Feral Lunge"))                         //out of range of flametongue 10y and in range of feral lunge 8-25y
                        {
                            WoW.CastSpell("Feral Lunge");
                            return;
                        }
                    }

                    if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP
                    {
                        WoW.CastSpell("Astral Shift");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Ghost Wolf") && WoW.IsInCombat)                        //First things go first
                {
                    if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) //interupt every spell
                    {
                        WoW.CastSpell("Wind Shear");
                        return;
                    }

                    if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Stormstrike") && combatRoutine.UseCooldowns && WoW.Maelstrom >= 20)                     //Wolves in melee range
                    {
                        Log.Write("Using Feral Spirit", Color.Red);
                        WoW.CastSpell("Feral Spirit");
                        return;
                    }

                    if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 115)                     //Crash lightning for alpha wolf
                    {
                        WoW.CastSpell("Crash Lightning");
                        return;
                    }

                    if (WoW.CanCast("Rockbiter") && (!WoW.PlayerHasBuff("Landslide") || WoW.PlayerBuffTimeRemaining("Landslide") <= 1) && WoW.IsSpellInRange("Flametongue")) //REFRESH LANDSLIDE
                    {
                        Log.Write("Reseting Landslide", Color.Red);
                        WoW.CastSpell("Rockbiter");
                        return;
                    }

                    if (WoW.CanCast("Fury of Air") && !WoW.PlayerHasBuff("Fury of Air") && WoW.IsSpellInRange("Flametongue") && WoW.Maelstrom >= 22) //REFRESH Fury of Air
                    {
                        Log.Write("Reseting Fury of Air", Color.Red);
                        WoW.CastSpell("Fury of Air");
                        return;
                    }

                    if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue") && ((!WoW.PlayerHasBuff("Flametongue") || WoW.PlayerBuffTimeRemaining("Flametongue") <= 1)) || (WoW.SpellCooldownTimeRemaining("Doom Winds") <= 6 && WoW.PlayerBuffTimeRemaining("Flametongue") <= 4)) //REFRESH FLAMETONGUE
                    {
                        Log.Write("Reseting Flametongue buff", Color.Red);
                        WoW.CastSpell("Flametongue");
                        return;
                    }

                    if (WoW.CanCast("Doom Winds") && combatRoutine.UseCooldowns && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Flametongue"))
                    {
                        WoW.CastSpell("Doom Winds");
                        return;
                    }

                    if (WoW.CanCast("Lightning Bolt") && WoW.IsSpellInRange("Lightning Bolt") && WoW.Maelstrom >= 46)                     //Overcharge
                    {
                        WoW.CastSpell("Lightning Bolt");
                        return;
                    }

                    if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Stormbringer") && WoW.Maelstrom >= 26)
                    {
                        WoW.CastSpell("Stormstrike");
                        return;
                    }

                    if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Hot Hand"))                     //Hot Hand
                    {
                        WoW.CastSpell("Lava Lash");
                        return;
                    }

                    if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 22 && WoW.IsSpellInRange("Stormstrike") && !WoW.PlayerHasBuff("Crash Lightning"))                     //Crash lightning for cleave to enable storm
                    {
                        Log.Write("Reseting Crashing buff", Color.Blue);
                        WoW.CastSpell("Crash Lightning");
                        return;
                    }

                    if (WoW.SpellCooldownTimeRemaining("Lightning Bolt") >= 1)                      // to get not GCD locked on Bolt
                    {
                        if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 80)
                        {
                            WoW.CastSpell("Stormstrike");
                            return;
                        }

                        if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 120)
                        {
                            WoW.CastSpell("Lava Lash");                                     //Buffer Lava
                            return;
                        }

                        if (WoW.CanCast("Flametongue") && WoW.PlayerBuffTimeRemaining("Flametongue") <= 5 && WoW.IsSpellInRange("Flametongue"))
                        {
                            WoW.CastSpell("Flametongue");                                     //REFRESH FLAMETONGUE PANDEMIC
                            return;
                        }

                        if (WoW.CanCast("Rockbiter") && WoW.IsSpellInRange("Flametongue"))
                        {
                            WoW.CastSpell("Rockbiter");                                     //Nothing to do
                            return;
                        }
                        if (WoW.CanCast("Feral Lunge") && !WoW.IsSpellInRange("Flametongue") && WoW.IsSpellInRange("Feral Lunge"))                         //out of range of flametongue 10y and in range of feral lunge 8-25y
                        {
                            WoW.CastSpell("Feral Lunge");
                            return;
                        }
                    }

                    if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP
                    {
                        WoW.CastSpell("Astral Shift");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Ghost Wolf") && WoW.IsInCombat)                        //First things go first
                {
                    if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) //interupt every spell
                    {
                        WoW.CastSpell("Wind Shear");
                        return;
                    }

                    if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Stormstrike") && combatRoutine.UseCooldowns && WoW.Maelstrom >= 20)                     //Wolves in melee range
                    {
                        Log.Write("Using Feral Spirit", Color.Red);
                        WoW.CastSpell("Feral Spirit");
                        return;
                    }

                    if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 115)                     //Crash lightning for alpha wolf
                    {
                        WoW.CastSpell("Crash Lightning");
                        return;
                    }

                    if (WoW.CanCast("Rockbiter") && (!WoW.PlayerHasBuff("Landslide") || WoW.PlayerBuffTimeRemaining("Landslide") <= 1) && WoW.IsSpellInRange("Flametongue")) //REFRESH LANDSLIDE
                    {
                        Log.Write("Reseting Landslide", Color.Red);
                        WoW.CastSpell("Rockbiter");
                        return;
                    }

                    if (WoW.CanCast("Fury of Air") && !WoW.PlayerHasBuff("Fury of Air") && WoW.IsSpellInRange("Flametongue") && WoW.Maelstrom >= 22) //REFRESH Fury of Air
                    {
                        Log.Write("Reseting Fury of Air", Color.Red);
                        WoW.CastSpell("Fury of Air");
                        return;
                    }

                    if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue") && ((!WoW.PlayerHasBuff("Flametongue") || WoW.PlayerBuffTimeRemaining("Flametongue") <= 1)) || (WoW.SpellCooldownTimeRemaining("Doom Winds") <= 6 && WoW.PlayerBuffTimeRemaining("Flametongue") <= 4)) //REFRESH FLAMETONGUE
                    {
                        Log.Write("Reseting Flametongue buff", Color.Red);
                        WoW.CastSpell("Flametongue");
                        return;
                    }

                    if (WoW.CanCast("Doom Winds") && combatRoutine.UseCooldowns && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Flametongue"))
                    {
                        WoW.CastSpell("Doom Winds");
                        return;
                    }

                    if (WoW.CanCast("Lightning Bolt") && WoW.IsSpellInRange("Lightning Bolt") && WoW.Maelstrom >= 46)                     //Overcharge
                    {
                        WoW.CastSpell("Lightning Bolt");
                        return;
                    }

                    if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Stormbringer") && WoW.Maelstrom >= 26)
                    {
                        WoW.CastSpell("Stormstrike");
                        return;
                    }

                    if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Hot Hand"))                     //Hot Hand
                    {
                        WoW.CastSpell("Lava Lash");
                        return;
                    }

                    if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 22 && WoW.IsSpellInRange("Stormstrike"))                     //Crash lightning priority for aoe
                    {
                        WoW.CastSpell("Crash Lightning");
                        return;
                    }

                    if (WoW.SpellCooldownTimeRemaining("Lightning Bolt") >= 1)                      // to get not GCD locked on Bolt
                    {
                        if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 80)
                        {
                            WoW.CastSpell("Stormstrike");
                            return;
                        }

                        if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 120)
                        {
                            WoW.CastSpell("Lava Lash");                                     //Buffer Lava
                            return;
                        }

                        if (WoW.CanCast("Flametongue") && WoW.PlayerBuffTimeRemaining("Flametongue") <= 5 && WoW.IsSpellInRange("Flametongue"))
                        {
                            WoW.CastSpell("Flametongue");                                     //REFRESH FLAMETONGUE PANDEMIC
                            return;
                        }

                        if (WoW.CanCast("Rockbiter") && WoW.IsSpellInRange("Flametongue"))
                        {
                            WoW.CastSpell("Rockbiter");                                     //Nothing to do
                            return;
                        }
                        if (WoW.CanCast("Feral Lunge") && !WoW.IsSpellInRange("Flametongue") && WoW.IsSpellInRange("Feral Lunge"))                         //out of range of flametongue 10y and in range of feral lunge 8-25y
                        {
                            WoW.CastSpell("Feral Lunge");
                            return;
                        }
                    }

                    if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP
                    {
                        WoW.CastSpell("Astral Shift");
                        return;
                    }
                }
            }
        }
Ejemplo n.º 27
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;
                        }
                    }
                }
            }
        }
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Subterfuge") || WoW.PlayerHasBuff("Shadow Dance"))
                    {
                        if (WoW.CanCast("Symbols of Death") && WoW.Energy >= 35 &&
                            (!WoW.PlayerHasBuff("Symbols of Death") || WoW.PlayerBuffTimeRemaining("Symbols of Death") <= 10))
                        {
                            WoW.CastSpell("Symbols of Death");
                            return;
                        }

                        if (WoW.CanCast("Nightblade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                            (!WoW.TargetHasDebuff("Nightblade") || WoW.TargetDebuffTimeRemaining("Nightblade") <= 4) && WoW.IsSpellInRange("Nightblade"))
                        {
                            WoW.CastSpell("Nightblade");
                            return;
                        }

                        if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("Nightblade") &&
                            WoW.IsSpellInRange("Eviscerate"))

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

                        if (WoW.CanCast("Shadowstrike") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 40 && WoW.IsSpellInRange("Shadowstrike"))
                        {
                            WoW.CastSpell("Shadowstrike");
                            return;
                        }
                    }

                    if (WoW.CanCast("Shadow Blades") && WoW.HasTarget && WoW.PlayerHasBuff("Symbols of Death") && WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Shadow Blades");
                        return;
                    }

                    if (WoW.CanCast("Shadow Dance") &&
                        (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("Shadow Dance") || !WoW.PlayerHasBuff("Subterfuge")) && WoW.Energy >= 55 &&
                        (WoW.PlayerSpellCharges("Shadow Dance") == 3 && WoW.CurrentComboPoints <= 3 ||
                         WoW.PlayerSpellCharges("Shadow Dance") == 2 && WoW.CurrentComboPoints <= 1) &&
                        WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Shadow Dance");
                        return;
                    }

                    if (WoW.CanCast("Goremaw's Bite") && WoW.CurrentComboPoints <= 2 && WoW.Energy <= 50 && WoW.IsSpellInRange("Goremaw's Bite") &&
                        WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Goremaw's Bite");
                        return;
                    }

                    if (WoW.CanCast("Nightblade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                        (!WoW.TargetHasDebuff("Nightblade") || WoW.TargetDebuffTimeRemaining("Nightblade") <= 4) &&
                        WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Nightblade");
                        return;
                    }

                    if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("Nightblade") &&
                        WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Eviscerate");
                        return;
                    }

                    if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 55 && WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Backstab");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.Cleave) // Do AoE Target Stuff here
            {
                if ((WoW.HasTarget || UseCooldowns) && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Subterfuge") || WoW.PlayerHasBuff("Shadow Dance"))
                    {
                        if (WoW.CanCast("Symbols of Death") && WoW.Energy >= 35 &&
                            (!WoW.PlayerHasBuff("Symbols of Death") || WoW.PlayerBuffTimeRemaining("Symbols of Death") <= 10))
                        {
                            WoW.CastSpell("Symbols of Death");
                            return;
                        }


                        if (WoW.CanCast("Nightblade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                            (!WoW.TargetHasDebuff("Nightblade") || WoW.TargetDebuffTimeRemaining("Nightblade") <= 4) && WoW.IsSpellInRange("Nightblade"))
                        {
                            WoW.CastSpell("Nightblade");
                            return;
                        }

                        if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("Nightblade") &&
                            WoW.IsSpellInRange("Eviscerate"))

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

                        if (WoW.CanCast("Shadowstrike") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 40 && WoW.IsSpellInRange("Shadowstrike"))
                        {
                            WoW.CastSpell("Shadowstrike");
                            return;
                        }

                        if (WoW.CanCast("Shuriken Storm") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 35 && WoW.IsSpellInRange("Eviscerate"))
                        {
                            WoW.CastSpell("Shuriken Storm");
                            return;
                        }
                    }

                    if (WoW.CanCast("Shadow Blades") && WoW.HasTarget && WoW.PlayerHasBuff("Symbols of Death") && WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Shadow Blades");
                        return;
                    }

                    if (WoW.CanCast("Shadow Dance") &&
                        (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("Shadow Dance") || !WoW.PlayerHasBuff("Subterfuge")) &&
                        (WoW.PlayerSpellCharges("Shadow Dance") == 3 && WoW.CurrentComboPoints <= 3 ||
                         WoW.PlayerSpellCharges("Shadow Dance") == 2 && WoW.CurrentComboPoints <= 1) &&
                        WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Shadow Dance");
                        return;
                    }

                    if (WoW.CanCast("Goremaw's Bite") && WoW.CurrentComboPoints <= 2 && WoW.Energy <= 50 && WoW.IsSpellInRange("Goremaw's Bite") &&
                        WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Goremaw's Bite");
                        return;
                    }

                    if (WoW.CanCast("Nightblade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 &&
                        (!WoW.TargetHasDebuff("Nightblade") || WoW.TargetDebuffTimeRemaining("Nightblade") <= 4) &&
                        WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Nightblade");
                        return;
                    }

                    if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("Nightblade") &&
                        WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Eviscerate");
                        return;
                    }

                    if (WoW.CanCast("Shuriken Storm") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 35 && WoW.IsSpellInRange("Eviscerate"))
                    {
                        WoW.CastSpell("Shuriken Storm");
                    }
                }
            }
        }
Ejemplo n.º 29
0
 public override void Pulse()                             // Updated for Legion (tested and working for single target)
 {
     if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy)
         {
             if (WoW.CanCast("A Murder of Crows") && WoW.IsSpellInRange("A Murder of Crows") && WoW.Focus >= 30)
             {
                 WoW.CastSpell("A Murder of Crows");
                 return;
             }
             if (WoW.CanCast("Titan's Thunder"))
             {
                 WoW.CastSpell("Titan's Thunder");
                 return;
             }
             if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast"))
             {
                 WoW.CastSpell("Dire Beast");
                 return;
             }
             if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Dire Frenzy"))
             {
                 WoW.CastSpell("Dire Frenzy");
                 return;
             }
             if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && WoW.IsSpellInRange("Kill Command"))
             {
                 WoW.CastSpell("Kill Command");
                 return;
             }
             if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 90) && WoW.IsSpellInRange("Cobra Shot"))
             {
                 WoW.CastSpell("Cobra Shot");
                 return;
             }
         }
     }
     if (combatRoutine.Type == RotationType.AOE)
     {
         if (WoW.HasTarget && WoW.TargetIsEnemy)
         {
             if (WoW.CanCast("A Murder of Crows") && WoW.IsSpellInRange("A Murder of Crows") && WoW.Focus >= 30)
             {
                 WoW.CastSpell("A Murder of Crows");
                 return;
             }
             if (WoW.CanCast("Titan's Thunder"))
             {
                 WoW.CastSpell("Titan's Thunder");
                 return;
             }
             if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast"))
             {
                 WoW.CastSpell("Dire Beast");
                 return;
             }
             if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Dire Frenzy"))
             {
                 WoW.CastSpell("Dire Frenzy");
                 return;
             }
             if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && WoW.IsSpellInRange("Kill Command"))
             {
                 WoW.CastSpell("Kill Command");
                 return;
             }
             if (WoW.CanCast("Multi-Shot") && WoW.IsSpellInRange("Multi-Shot") && WoW.Focus >= 40) // We need a PetBuff command!
             {
                 WoW.CastSpell("Multi-Shot");
                 return;
             }
             if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 90) && WoW.IsSpellInRange("Cobra Shot"))
             {
                 WoW.CastSpell("Cobra Shot");
                 return;
             }
         }
     }
     if (combatRoutine.Type == RotationType.SingleTargetCleave)
     {
         // Do Single Target Cleave stuff here if applicable else ignore this one
     }
 }
Ejemplo n.º 30
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy)
                {
                    if (!doneOpener)
                    {
                        if (WoW.CanCast("Judgement") && WoW.Level >= 3)
                        {
                            WoW.CastSpell("Judgement");
                            doneOpener = true;
                        }
                    }

                    if (WoW.CanCast("Judgement") && WoW.Level >= 3 && WoW.IsSpellInRange("Judgement"))

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

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

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

                    if (WoW.CanCast("Lay on Hands") && WoW.PlayerHealthPercent < 25)

                    {
                        WoW.CastSpell("Lay on Hands");
                        return;
                    }

                    if (WoW.CanCast("Divine Shield") && WoW.PlayerHealthPercent < 15)

                    {
                        WoW.CastSpell("Divine Shield");
                        return;
                    }
                    if (WoW.CanCast("Flash of Light") && WoW.PlayerHealthPercent < 60 && WoW.Mana > 20)

                    {
                        WoW.CastSpell("Flash of Light");
                        return;
                    }
                }
                if (WoW.CanCast("Judgement") && WoW.Level >= 3 && WoW.IsSpellInRange("Judgement"))

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

                if (WoW.CanCast("Wake of Ashes"))
                {
                    WoW.CastSpell("Wake of Ashes");
                    return;
                }
                if (WoW.CanCast("Templar's Verdict") && WoW.Level >= 10 && WoW.TargetHasDebuff("Judgement") && WoW.UnitPower >= 3)
                {
                    WoW.CastSpell("Templar's Verdict");
                    return;
                }
                if (WoW.CanCast("Blade of Justice") && WoW.Level >= 20)
                {
                    WoW.CastSpell("Blade of Justice");
                    return;
                }

                if (WoW.CanCast("Crusader Strike") && WoW.Level <= 30)
                {
                    WoW.CastSpell("Crusader Strike");
                    return;
                }

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

                if (WoW.Level >= 100 && WoW.Talent(7) == 2 && WoW.CanCast("Crusade") && UseCooldowns)
                {
                    WoW.CastSpell("Crusade");
                }
                if (WoW.Level >= 80 && WoW.Level < 100 && WoW.CanCast("Avenging Wrath") && UseCooldowns)
                {
                    WoW.CastSpell("Avenging Wrath");
                }
                return;

                if (WoW.CanCast("Crusade") && WoW.Level >= 100 && WoW.Talent(7) == 2)
                {
                    WoW.CastSpell("Crusade");
                    return;
                }

                if (WoW.CanCast("Justicar's Vengeance") && WoW.Level >= 100 && WoW.CurrentHolyPower >= 5 && UseCooldowns)
                {
                    WoW.CastSpell("Justicar's Vengeance");
                    return;
                }
            }

            if (combatRoutine.Type == RotationType.Cleave)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy)
                {
                    if (!doneOpener)
                    {
                        if (WoW.CanCast("Judgement") && WoW.Level >= 3)
                        {
                            WoW.CastSpell("Judgement");
                            doneOpener = true;
                        }
                    }

                    if (WoW.CanCast("Judgement") && WoW.Level >= 3 && WoW.IsSpellInRange("Judgement"))

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

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

                    {
                        WoW.CastSpell("Rebuke");
                        return;
                    }
                    if (WoW.CanCast("Lay on Hands") && WoW.PlayerHealthPercent < 25)

                    {
                        WoW.CastSpell("Lay on Hands");
                        return;
                    }
                    if (WoW.CanCast("Divine Shield") && WoW.PlayerHealthPercent < 15)

                    {
                        WoW.CastSpell("Divine Shield");
                        return;
                    }

                    if (WoW.CanCast("Flash of Light") && WoW.PlayerHealthPercent < 60 && WoW.Mana > 20)

                    {
                        WoW.CastSpell("Flash of Light");
                        return;
                    }
                }

                if (WoW.CanCast("Judgement") && WoW.Level >= 3 && WoW.IsSpellInRange("Judgement"))

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

                if (WoW.CanCast("Divine Storm") && WoW.Level >= 10 && WoW.TargetHasDebuff("Judgement") && WoW.UnitPower >= 3)
                {
                    WoW.CastSpell("Divine Storm");
                    return;
                }

                if (WoW.CanCast("Blade of Justice") && WoW.Level >= 20)
                {
                    WoW.CastSpell("Blade of Justice");
                    return;
                }

                if (WoW.CanCast("Crusader Strike") && WoW.Level <= 30)
                {
                    WoW.CastSpell("Crusader Strike");
                    return;
                }

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

                if (WoW.CanCast("Wake of Ashes"))
                {
                    WoW.CastSpell("Wake of Ashes");
                    return;
                }

                if (WoW.Level >= 100 && WoW.Talent(7) == 2 && WoW.CanCast("Crusade") && UseCooldowns)
                {
                    WoW.CastSpell("Crusade");
                }

                if (WoW.Level >= 80 && WoW.Level < 100 && WoW.CanCast("Avenging Wrath") && UseCooldowns)
                {
                    WoW.CastSpell("Avenging Wrath");
                }
                return;

                if (WoW.CanCast("Justicar's Vengeance") && WoW.Level >= 100 && WoW.CurrentHolyPower >= 5 && UseCooldowns)
                {
                    WoW.CastSpell("Justicar's Vengeance");
                    return;
                }
            }
        }