Ejemplo n.º 1
0
        public override void Pulse()
        {
            if (WoW.TargetHealthPercent == 0)
            {
                return;
            }

            if (!WoW.TargetIsEnemy)
            {
                return;
            }
            WoW.CastSpell("Rebuke", WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > 60);
            WoW.CastSpell("ArdentDefender", WoW.PlayerHealthPercent < 15);
            WoW.CastSpell("LayOnHands", WoW.CanCast("LayOnHands") && !WoW.PlayerHasDebuff("Forbearance") && WoW.PlayerHealthPercent < 20 && !WoW.PlayerHasBuff("ArdentDefender"));
            WoW.CastSpell("GuardianOfAncientKings", WoW.PlayerHealthPercent < 50 && !WoW.PlayerHasBuff("ArdentDefender"));
            if (!WoW.HasTarget)
            {
                return;
            }
            WoW.CastSpell("AvengingWrath", UseCooldowns, false); // Off the GCD no return needed.
            WoW.CastSpell("AvengersShield", true);
            WoW.CastSpell("EyeOfTyr", WoW.PlayerHealthPercent < 100);
            WoW.CastSpell("Judgment", true);
            WoW.CastSpell("Consecration", true);
            WoW.CastSpell("LightOfTheProtector", WoW.PlayerHasBuff("Consecration") && WoW.PlayerHealthPercent < 70);
            WoW.CastSpell("BlessedHammer", WoW.Talent(1) == 2);
            WoW.CastSpell("BastionOfLight", WoW.PlayerSpellCharges("ShieldOfTheRighteous") == 0 && !WoW.PlayerHasBuff("ShieldOfTheRighteous"));
            WoW.CastSpell("ShieldOfTheRighteous", WoW.PlayerHasBuff("Consecration") &&
                          WoW.PlayerSpellCharges("ShieldOfTheRighteous") > 0 &&
                          !WoW.PlayerHasBuff("ShieldOfTheRighteous"));
            WoW.CastSpell("Seraphim", WoW.Talent(7) == 2);
            WoW.CastSpell("BlessedHammer", true);
        }
Ejemplo n.º 2
0
 public override void Initialize()
 {
     Log.DrawHorizontalLine();
     Log.WriteFrozen("Welcome to Frozen Protection", Color.Black);
     Log.Write("Supported Talents: 2212321");
     Log.Write("Current Talents  : " + WoW.Talent(1) + WoW.Talent(2) + WoW.Talent(3) + WoW.Talent(4) + WoW.Talent(5) + WoW.Talent(6) + WoW.Talent(7));
 }
Ejemplo n.º 3
0
 public override void Pulse()
 {
     if (!coolDownStopWatch.IsRunning || coolDownStopWatch.ElapsedMilliseconds > 60000)
     {
         coolDownStopWatch.Restart();
     }
     if (DetectKeyPress.GetKeyState(cooldownKey) < 0 && (cooldownModifier == -1 || cooldownModifier != -1 && DetectKeyPress.GetKeyState(cooldownModifier) < 0))
     {
         if (coolDownStopWatch.ElapsedMilliseconds > 1000)
         {
             combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns;
             coolDownStopWatch.Restart();
         }
     }
     if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.TargetIsVisible)
     {
         isMelee      = WoW.CanCast("Obliterate", false, false, true, false, false);
         currentRunes = WoW.CurrentRunes;
         runicPower   = WoW.RunicPower;
         if (WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 40 && WoW.CanCast("Mind Freeze", false, true, true, false, false) &&
             isCastingListedSpell())
         {
             WoW.CastSpell("Mind Freeze");
         }
         if (WoW.CanCast("Sindragosa's Fury") && (DetectKeyPress.GetKeyState(0x5A) < 0))
         {
             WoW.CastSpell("Sindragosa's Fury");
             return;
         }
         if (CanCastNoRange("Anti-Magic Shell") && WoW.HealthPercent <= FrostAMSHPPercent && !WoW.IsSpellOnCooldown("Anti-Magic Shell") && isCheckHotkeysFrostIceboundFortitude)
         {
             WoW.CastSpell("Anti-Magic Shell");
         }
         if (CanCastNoRange("Icebound Fortitude") && WoW.HealthPercent < FrostIceboundHPPercent && !WoW.IsSpellOnCooldown("Icebound Fortitude") && isCheckHotkeysFrostAntiMagicShield)
         {
             WoW.CastSpell("Icebound Fortitude");
         }
         if (useChainofIce && CanCastInRange("ChainofIce") && !isMelee && !WoW.TargetHasDebuff("ChainofIce") && currentRunes >= 1)
         {
             WoW.CastSpell("ChainofIce");
             return;
         }
         if (WoW.Talent(7) == 2)
         {
             BreathRotation();
         }
         else
         {
             MGRotation();
         }
     }
 }
 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.º 5
0
        private void cmdRefresh_Click(object sender, EventArgs e)
        {
            WoW.KeyPressRelease(WoW.Keys.D0);
            Thread.Sleep(400);

            Log.Clear();
            // Row 1 Pixel Testing
            Log.Write("Player Health: " + WoW.HealthPercent);
            Log.Write("Player Level: " + WoW.Level);
            Log.Write("Player Power: " + WoW.Power);
            Log.Write("Target Health: " + WoW.TargetHealthPercent);
            Log.Write("Unit In Combat: " + WoW.IsInCombat);
            Log.Write("Unit Power: " + WoW.UnitPower);
            Log.Write("Target Is Friend: " + WoW.TargetIsFriend);
            Log.Write("Has Target: " + WoW.HasTarget);
            Log.Write("Player Is Casting: " + WoW.PlayerIsCasting);
            Log.Write("Target Is Casting: " + WoW.TargetIsCasting);
            Log.Write("Player Haste Percent: " + WoW.HastePercent);
            Log.Write("Target Visible: " + WoW.TargetIsVisible);
            Log.Write("Pet Out: " + WoW.HasPet);
            Log.Write("Pet Health: " + WoW.PetHealthPercent);
            Log.Write("Wild Imps Count: " + WoW.WildImpsCount);
            Log.Write("Dreadstalkers Count: " + WoW.DreadstalkersCount);
            // Row 2 Pixel Testing

            Log.Write("Is Moving: " + WoW.IsMoving);
            Log.Write("Auto Attacking: " + WoW.AutoAtacking);
            Log.Write("Target Is Player: " + WoW.TargetIsPlayer);
            Log.Write("Flag: " + WoW.Flag);
            Log.Write("Last Casted Id: " + WoW.LastSpellCastedID);
            Log.Write("Target Casting Id: " + WoW.TargetCastingSpellID);
            for (int i = 1; i < 8; i++)
            {
                Log.Write($"Talent {i} : " + WoW.Talent(i));
            }
            Log.Write($"Race : " + WoW.PlayerRace + " Spec : " + WoW.PlayerSpec);
            for (int i = 19; i < 21; i++)
            {
                Log.Write($"SetBonus T{i}: " + WoW.SetBonus(i));
            }
            for (int i = 1; i < 3; i++)
            {
                Log.Write($"Legendary {i}: " + WoW.Legendary(i));
            }

            while (WoW.TargetCastingSpellID != 0)
            {
                Log.Write("Target % Cast: " + WoW.TargetPercentCast);
                Thread.Sleep(100);
            }
        }
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");
     }
 }
Ejemplo n.º 7
0
        public override void Pulse()
        {
            var SavageRoarTime = WoW.PlayerBuffTimeRemaining("SavageRoar"); // 200 = 2 seconds
            var RakeTime       = WoW.TargetDebuffTimeRemaining("Rake");
            var RipTime        = WoW.TargetDebuffTimeRemaining("Rip");
            var MoonfireTime   = WoW.TargetDebuffTimeRemaining("Moonfire");

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

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

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

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

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

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

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

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

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

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

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

            // When using Brutal Slash, try to make sure that you always have at least one charge on cooldown,
            // but have as many charges as possible when a wave of enemies comes into range.
            // Try to have short duration buffs such as Tiger's Fury and Bloodtalons active
            // on as many high target casts of this as possible, as it deals massive AoE burst damage with each cast.
            WoW.CastSpell("BrutalSlash", WoW.Talent(6) == 2 && WoW.Energy >= 20 && WoW.PlayerSpellCharges("BrutalSlash") > 1);
            WoW.CastSpell("BrutalSlash", WoW.Talent(6) == 2 && WoW.Energy >= 20 && WoW.PlayerSpellCharges("BrutalSlash") == 1 && WoW.PlayerHasBuff("TigersFury"));
        }
 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.º 9
0
 private static void Defensive()
 {
     if (WoW.Talent(2) == 1 && WoW.CanCast("Rainfall") && !WoW.PlayerHasBuff("Rainfall") && !WoW.IsSpellOnCooldown("Rainfall"))
     {
         WoW.CastSpell("Rainfall");
         return;
     }
     if (WoW.CanCast("Astral Shift") && WoW.PlayerHealthPercent < 60 && !WoW.IsSpellOnCooldown("Astral Shift"))
     {
         WoW.CastSpell("Astral Shift");
         return;
     }
     if (WoW.PlayerRace == "Dreanei" && WoW.PlayerHealthPercent < 80 && !WoW.IsSpellOnCooldown("Gift Naaru"))
     {
         WoW.CastSpell("Gift Naaru");
     }
 }
        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;
                }
            }
        }
        private void Defensive()
        {
            if (WoW.Talent(2) == 1 && WoW.CanCast("Rainfall") && !WoW.PlayerHasBuff("Rainfall") && !WoW.IsSpellOnCooldown("Rainfall")) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP
            {
                WoW.CastSpell("Rainfall");
                return;
            }

            /* if (CharInfo.Mana > 21 && WoW.Maelstrom > 20 && WoW.CanCast("Healing Surge") && WoW.HealthPercent < EnhLowHp && !WoW.IsSpellOnCooldown("Healing Surge")) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP
             * {
             *   WoW.CastSpell("Healing Surge");
             *   return;
             * }*/
            if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60 && !WoW.IsSpellOnCooldown("Astral Shift")) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP
            {
                WoW.CastSpell("Astral Shift");
                return;
            }
            if (WoW.PlayerRace == "Dreanei" && WoW.HealthPercent < 80 && !WoW.IsSpellOnCooldown("Gift Naaru"))
            {
                WoW.CastSpell("Gift Naaru");
            }
        }
Ejemplo n.º 12
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.º 13
0
        public void MGRotation()
        {
            if (isCheckHotkeysFrostOffensivePillarofFrost && isMelee && combatRoutine.UseCooldowns && !WoW.IsSpellOnCooldown("PillarofFrost"))
            {
                WoW.CastSpell("PillarofFrost");
            }
            if (combatRoutine.UseCooldowns && isCheckHotkeysFrostOffensiveErW && isMelee && currentRunes == 0 && WoW.PlayerHasBuff("PillarofFrost") && !WoW.IsSpellOnCooldown("Empower Rune"))
            {
                WoW.CastSpell("Empower Rune");
            }
            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here
            {
                if (CanCastInRange("Frost Strike") && (!WoW.PlayerHasBuff("Icy Talons") || WoW.PlayerBuffTimeRemaining("Icy Talons") <= 200) && runicPower >= 25 && !(combatRoutine.UseCooldowns && CanCastNoRange("Obliteration") && WoW.Talent(7) == 1) &&
                    (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))))
                {
                    Log.Write("Hasbuff " + WoW.PlayerHasBuff("Icy Talons") + " Remaining " + WoW.PlayerBuffTimeRemaining("Icy Talons"));
                    WoW.CastSpell("Frost Strike");
                    return;
                }
                if (isMelee && WoW.HealthPercent <= 40 && WoW.PlayerHasBuff("Free DeathStrike") && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))))
                {
                    WoW.CastSpell("Death Strike");
                    return;
                }
                if (CanCastInRange("Howling Blast") && !WoW.IsSpellOnCooldown("Howling Blast") && !WoW.TargetHasDebuff("Frost Fever") && currentRunes >= 1 && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))))
                {
                    WoW.CastSpell("Howling Blast");
                    return;
                }
                if (WoW.Talent(6) == 1 && runicPower >= 80 && CanCastInRange("Frost Strike"))
                {
                    WoW.CastSpell("Frost Strike");
                    return;
                }
                if (CanCastInRange("Howling Blast") && WoW.PlayerHasBuff("Rime") && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration"))))
                {
                    WoW.CastSpell("Howling Blast");
                    return;
                }

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

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

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

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

                if (WoW.CanCast("Sindragosa's Fury") && (DetectKeyPress.GetKeyState(0x5A) < 0))
                {
                    WoW.CastSpell("Sindragosa's Fury");
                    return;
                }
            }
        }
Ejemplo n.º 14
0
        public void BreathRotation()
        {
            hasBreath = WoW.PlayerHasBuff("Breath");
            if (combatRoutine.UseCooldowns && isCheckHotkeysFrostOffensivePillarofFrost && !WoW.IsSpellOnCooldown("PillarofFrost") && hasBreath)
            {
                WoW.CastSpell("PillarofFrost");
            }
            if (combatRoutine.UseCooldowns && isCheckHotkeysFrostOffensivePillarofFrost && !WoW.IsSpellOnCooldown("PillarofFrost") && !hasBreath && WoW.SpellCooldownTimeRemaining("Breath") >= 5900)
            {
                WoW.CastSpell("PillarofFrost");
            }
            if ((haveCoF || useNextHRWCharge) && isCheckHotkeyslegyring && haveHRW && runicPower <= 30 && isCheckHotkeysFrostOffensiveErW && combatRoutine.UseCooldowns && !WoW.PlayerHasBuff("HEmpower Rune") && !WoW.IsSpellOnCooldown("HEmpower Rune") && hasBreath && legyringtest == true)
            {
                useNextHRWCharge = false;
                WoW.CastSpell("HEmpower Rune");
                legyringtest = false;
            }
            if ((haveCoF || useNextHRWCharge) && !isCheckHotkeyslegyring && haveHRW && runicPower <= 30 && isCheckHotkeysFrostOffensiveErW && combatRoutine.UseCooldowns && !WoW.PlayerHasBuff("HEmpower Rune") && !WoW.IsSpellOnCooldown("HEmpower Rune") && hasBreath)
            {
                useNextHRWCharge = false;
                WoW.CastSpell("HEmpower Rune");
            }
            if (isCheckHotkeyslegyring && !WoW.PlayerHasBuff("Breath"))
            {
                legyringtest = true;
            }
            if ((haveCoF || useNextHRWCharge) && !haveHRW && runicPower <= 50 && currentRunes <= 1 && isCheckHotkeysFrostOffensiveErW && combatRoutine.UseCooldowns && !WoW.IsSpellOnCooldown("HEmpower Rune") && hasBreath)
            {
                WoW.CastSpell("Empower Rune");
            }
            if (combatRoutine.UseCooldowns && isMelee && currentRunes >= 2 && runicPower >= 70 && CanCastNoRange("Breath"))
            {
                WoW.CastSpell("Breath");
                useNextHRWCharge = true;
                return;
            }
            if (combatRoutine.UseCooldowns && isMelee && runicPower >= 70 && CanCastNoRange("Breath"))
            {
                return;
            }
            if (!WoW.TargetHasDebuff("Frost Fever") && currentRunes >= 1 && !hasBreath && CanCastInRange("Howling Blast") && !WoW.IsSpellOnCooldown("Howling Blast"))
            {
                WoW.CastSpell("Howling Blast");
                return;
            }
            if (isMelee && currentRunes >= 1 && ((runicPower >= 48 && hasBreath) || !hasBreath) && (!combatRoutine.UseCooldowns || (combatRoutine.UseCooldowns && WoW.SpellCooldownTimeRemaining("Breath") >= 1500)) && CanCastNoRange("Remorseless Winter"))
            {
                WoW.CastSpell("Remorseless Winter");
                return;
            }
            if (((runicPower >= 46 && hasBreath) || !hasBreath) && CanCastInRange("Howling Blast") && WoW.PlayerHasBuff("Rime"))
            {
                WoW.CastSpell("Howling Blast");
                return;
            }
            if (WoW.Talent(6) != 1 && isMelee && currentRunes >= 2 && !hasBreath && WoW.PlayerHasBuff("Gathering Storm"))
            {
                WoW.CastSpell("Obliterate");
                return;
            }
            if (runicPower >= 70 && !hasBreath && CanCastInRange("Frost Strike"))
            {
                WoW.CastSpell("Frost Strike");
                return;
            }
            if (WoW.Talent(6) == 1 && CanCastInRange("Frost Strike") && currentRunes >= 1 && WoW.PlayerHasBuff("Killing Machine") && !hasBreath)
            {
                WoW.CastSpell("Frostscythe");
                return;
            }

            if (isMelee && currentRunes >= 2 && (!hasBreath || (hasBreath && (runicPower <= 70 || hasBreath && currentRunes > 3))))
            {
                WoW.CastSpell("Obliterate");
                return;
            }
            if (runicPower >= 25 && CanCastInRange("Frost Strike") && !hasBreath && (!combatRoutine.UseCooldowns || (combatRoutine.UseCooldowns && WoW.SpellCooldownTimeRemaining("Breath") >= 1500)))
            {
                WoW.CastSpell("Frost Strike");
                return;
            }
            if (WoW.Talent(2) == 3 && currentRunes <= 4 && runicPower <= 70 && CanCastNoRange("Horn") && !WoW.PlayerHasBuff("HEmpower Rune") && (hasBreath || (!hasBreath && WoW.SpellCooldownTimeRemaining("Breath") >= 1500)))
            {
                WoW.CastSpell("Horn");
            }
            if (isMelee && WoW.HealthPercent <= 40 && WoW.PlayerHasBuff("Free DeathStrike") && !hasBreath)
            {
                WoW.CastSpell("Death Strike");
                return;
            }
        }
Ejemplo n.º 15
0
 public override void Pulse()
 {
     if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsVisible && !WoW.IsMounted)
     {
         if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave)
         {
             if (WoW.CanCast("UnendingResolve") && WoW.HealthPercent <= 20 && WoW.HealthPercent != 0)
             {
                 WoW.CastSpell("UnendingResolve");
                 return;
             }
             if (WoW.CanCast("Healthstone") && WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.HealthPercent <= 30 && WoW.HealthPercent != 0)
             {
                 WoW.CastSpell("Healthstone");
                 return;
             }
             if (WoW.CanCast("DoomGuard") && !WoW.IsSpellOnCooldown("DoomGuard") && (WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || WoW.Talent(4) != 3) && UseCooldowns)
             {
                 WoW.CastSpell("DoomGuard");
                 return;
             }
             if (WoW.CanCast("Soul Harvest") && !WoW.IsMoving && UseCooldowns && !WoW.IsSpellOnCooldown("Soul Harvest") && WoW.CurrentSoulShards >= 4 && WoW.Talent(4) == 3)
             {
                 WoW.CastSpell("Soul Harvest");
                 return;
             }
             if (WoW.CanCast("Berserk") && UseCooldowns && !WoW.IsSpellOnCooldown("Berserk") && WoW.PlayerRace == "Troll")
             {
                 WoW.CastSpell("Berserk");
                 return;
             }
             if (WoW.CanCast("Havoc") && !WoW.IsSpellOnCooldown("Havoc") && Control.ModifierKeys == Keys.Alt)                     // you will need a mouseover macro
             {
                 WoW.CastSpell("Havoc");
                 return;
             }
             if (!WoW.IsMoving)
             {
                 if (WoW.CanCast("Life Tap") && !WoW.PlayerHasBuff("Life Tap") && WoW.HealthPercent >= 40 && WoW.Talent(2) == 3)
                 {
                     WoW.CastSpell("Life Tap");
                     return;
                 }
                 if ((!WoW.TargetHasDebuff("Immolate") || WoW.TargetDebuffTimeRemaining("Immolate") <= 420) && !WoW.WasLastCasted("Immolate") && WoW.CanCast("Immolate"))
                 {
                     WoW.CastSpell("Immolate");
                     return;
                 }
                 if (WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") == 3)
                 {
                     WoW.CastSpell("DimRift");
                     return;
                 }
                 if (WoW.CanCast("Channel Demonfire") && !WoW.IsSpellOnCooldown("Channel Demonfire") && WoW.TargetHasDebuff("Immolate") && WoW.TargetDebuffTimeRemaining("Immolate") >= 500 && WoW.Talent(7) == 2)
                 {
                     WoW.CastSpell("Channel Demonfire");
                     return;
                 }
                 if (WoW.TargetDebuffTimeRemaining("Immolate") >= 1000 && WoW.CanCast("Conflagrate"))
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
                 if (WoW.TargetDebuffTimeRemaining("Immolate") >= 1000 && WoW.PlayerSpellCharges("Conflagrate") == 1 && WoW.WasLastCasted("Conflagrate") && WoW.CanCast("Conflagrate"))
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
                 if (WoW.PlayerHasBuff("Conflagrate") && WoW.TargetHasDebuff("ChaosBolt") && WoW.CanCast("Conflagrate") && WoW.CurrentSoulShards <= 4 && WoW.CanCast("Conflagrate"))
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
                 if (WoW.CanCast("Conflagrate") && WoW.PlayerSpellCharges("Conflagrate") == 2 && !WoW.WasLastCasted("Immolate") && WoW.CurrentSoulShards <= 4)
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
                 if (WoW.CanCast("ServiceImp") && WoW.CurrentSoulShards >= 1 && (UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns))
                 {
                     WoW.CastSpell("ServiceImp");
                     return;
                 }
                 if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards > 3 && (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") >= 500 && WoW.Talent(4) == 3 || UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns))
                 {
                     WoW.CastSpell("ChaosBolt");
                     return;
                 }
                 if (WoW.CanCast("DimRift") && !WoW.IsSpellOnCooldown("DimRift") && WoW.PlayerSpellCharges("DimRift") <= 2)
                 {
                     WoW.CastSpell("DimRift");
                     return;
                 }
                 if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards >= 2 && (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") >= 500 && WoW.Talent(4) == 3 || UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns))
                 {
                     WoW.CastSpell("ChaosBolt");
                     return;
                 }
                 if (WoW.CanCast("Incinerate") && WoW.CurrentSoulShards <= 1 || (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") <= 500 && WoW.CurrentSoulShards < 4 && WoW.Talent(4) == 3))
                 {
                     WoW.CastSpell("Incinerate");
                     return;
                 }
                 if (WoW.CanCast("Incinerate") && WoW.TargetHasDebuff("ChaosBolt") && WoW.TargetDebuffTimeRemaining("ChaosBolt") >= 200 && WoW.CurrentSoulShards <= 3)
                 {
                     WoW.CastSpell("Incinerate");
                     return;
                 }
             }
             if (WoW.IsMoving)
             {
                 if (WoW.CanCast("DimRift"))
                 {
                     WoW.CastSpell("DimRift");
                     return;
                 }
                 if (WoW.CanCast("Conflagrate"))
                 {
                     WoW.CastSpell("Conflagrate");
                     return;
                 }
             }
         }
     }
 }
        public override void Pulse() // Updated for Legion (tested and working for single target)
        {
            if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted)
            {
                SelectRotation(4, 9999, 1);
            }

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

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

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

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

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

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

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

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

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

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

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

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

                    if (WoW.CanCast("Seed of Corruption") && WoW.IsSpellInRange("Agony") && !WoW.TargetHasDebuff("Seed of Corruption") && !WoW.IsMoving && WoW.CurrentSoulShards >= 1)
                    {
                        WoW.CastSpell("Seed of Corruption");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
Ejemplo n.º 17
0
        public override void Pulse()
        {
            //validtargetmelee = WoW.HasTarget && WoW.IsInCombat && !WoW.PlayerIsChanneling && WoW.TargetIsVisible && WoW.RangeToTarget < 6;

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

            if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget < 6) // buff stuff
            {
                WoW.CastSpell("BattleCry", !WoW.PlayerHasBuff("BattleCryBuff") && WoW.CooldownsOn == true && WoW.Level >= 60);
                WoW.CastSpell("Avatar", WoW.Talent(3) == 3 && WoW.PlayerHasBuff("BattleCryBuff"));
                WoW.CastSpell("OdynsFury", WoW.PlayerHasBuff("BattleCryBuff") && WoW.PlayerHasBuff("Frothing") && WoW.Level >= 101);
                WoW.CastSpell("Bloodthirst", WoW.PlayerHasBuff("Enraged Regeneration") && WoW.Level >= 12);
                WoW.CastSpell("Furious Slash", WoW.IsSpellOnCooldown("Bloodthirst") && WoW.PlayerHasBuff("Enraged Regeneration") && WoW.Level >= 12);
                WoW.CastSpell("Raging Blow", WoW.IsSpellOnCooldown("Bloodthirst") && WoW.IsSpellOnCooldown("Furious Slash") && WoW.PlayerHasBuff("Enraged Regeneration") && WoW.Level >= 13);
            }

            // target stuff
            if (WoW.TargetHealthPercent == 0 && WoW.IsInCombat && WoW.RangeToTarget >= 5 && WoW.CountEnemyNPCsInRange >= 1 && !WoW.IsMounted || !WoW.HasTarget && WoW.IsInCombat && WoW.CountEnemyNPCsInRange <= 6 && WoW.RangeToTarget <= 6 && !WoW.IsMounted)
            {
                WoW.TargetNearestEnemy();
                return;
            }

            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && !WoW.PlayerHasBuff("BattleCryBuff"))             // Do Single Target Unbuffed Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget < 6)
                {
                    WoW.CastSpell("Rampage", WoW.Rage >= 100 && WoW.Level >= 18);
                    WoW.CastSpell("Bloodthirst", WoW.Rage < 100 && !WoW.PlayerHasBuff("Enrage") && WoW.Level >= 10 || WoW.IsSpellOnCooldown("Raging Blow") && WoW.Rage < 100 && WoW.Level >= 10);
                    WoW.CastSpell("Raging Blow", WoW.IsSpellOnCooldown("Bloodthirst") && WoW.Rage < 100 && WoW.Level >= 13);
                    WoW.CastSpell("Whirlwind", WoW.IsSpellOnCooldown("Bloodthirst") && WoW.IsSpellOnCooldown("Raging Blow") && WoW.PlayerHasBuff("Wrecking Ball") && WoW.Talent(3) == 1);
                    WoW.CastSpell("Furious Slash", WoW.IsSpellOnCooldown("Bloodthirst") && WoW.IsSpellOnCooldown("Raging Blow") && WoW.Rage < 90 && WoW.Level >= 10);
                }
            }

            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && WoW.PlayerHasBuff("BattleCryBuff"))             // Do Single Target Buffed Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget < 6)
                {
                    WoW.CastSpell("Rampage", WoW.Rage >= 100);
                    WoW.CastSpell("Raging Blow", WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Frothing") && WoW.Rage < 100 || WoW.IsSpellOnCooldown("Bloodthirst"));
                    WoW.CastSpell("Bloodthirst", WoW.Rage < 100 && WoW.IsSpellOnCooldown("Raging Blow"));
                }
            }

            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && WoW.SpellCooldownTimeRemaining("BattleCry") >= 1100 && WoW.Level >= 60)             // Do Single Target Execute Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget < 6)
                {
                    WoW.CastSpell("Execute", WoW.Rage >= 100);
                    WoW.CastSpell("Bloodthirst", WoW.Rage < 100);
                    WoW.CastSpell("Raging Blow", WoW.Rage < 100 && WoW.IsSpellOnCooldown("Bloodthirst"));
                    WoW.CastSpell("Furious Slash", WoW.IsSpellOnCooldown("Bloodthirst") && WoW.IsSpellOnCooldown("Raging Blow"));
                }
            }

            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && WoW.SpellCooldownTimeRemaining("BattleCry") <= 900 && WoW.Level >= 60)             // Do Single Target Execute Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget < 6)
                {
                    WoW.CastSpell("Execute", WoW.PlayerHasBuff("SenseDeath") || WoW.Rage >= 25 && WoW.Level >= 8);
                    WoW.CastSpell("Bloodthirst", WoW.Rage < 25 && WoW.Level >= 10);
                    WoW.CastSpell("Raging Blow", WoW.Rage < 25 && WoW.IsSpellOnCooldown("Bloodthirst") && WoW.Level >= 13);
                }
            }

            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && WoW.Level <= 59)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget < 6)
                {
                    WoW.CastSpell("Execute", WoW.PlayerHasBuff("SenseDeath") || WoW.Rage >= 25 && WoW.Level >= 8);
                    WoW.CastSpell("Bloodthirst", WoW.Rage < 25 && WoW.Level >= 10);
                    WoW.CastSpell("Raging Blow", WoW.Rage < 25 && WoW.IsSpellOnCooldown("Bloodthirst") && WoW.Level >= 13);
                }
            }

            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent <= 20 && WoW.Level <= 9 && WoW.PlayerClassSpec == "Warrior-Arms")             // more leveling
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget < 6)
                {
                    WoW.CastSpell("Slam", WoW.IsSpellOnCooldown("Mortal Strike") && WoW.Rage >= 20);
                    WoW.CastSpell("Mortal Strike", WoW.Rage >= 20 && WoW.Level >= 5);
                }
            }

            if (combatRoutine.Type == RotationType.AOE)                 // Aoe stuff
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.RangeToTarget < 6)
                {
                    WoW.CastSpell("Whirlwind", !WoW.PlayerHasBuff("Meat-Cleaver") && WoW.Level >= 28 || WoW.PlayerHasBuff("Wrecking Ball") && WoW.Talent(3) == 1 && WoW.Level >= 45);
                    WoW.CastSpell("Rampage", WoW.Rage >= 100 && WoW.PlayerHasBuff("Meat-Cleaver") && WoW.Level >= 18);
                    WoW.CastSpell("Bloodthirst", WoW.Rage < 100 && WoW.CountEnemyNPCsInRange < 8 && WoW.PlayerHasBuff("Meat-Cleaver") && !WoW.PlayerHasBuff("Enrage") && WoW.Level >= 10);
                    WoW.CastSpell("Raging Blow", WoW.PlayerHasBuff("Enrage") && WoW.CountEnemyNPCsInRange < 4 && WoW.Level >= 13);
                    //WoW.CastSpell("Furious Slash",  WoW.IsSpellOnCooldown("Bloodthirst") && WoW.IsSpellOnCooldown("Raging Blow"));
                }
            }

            if (combatRoutine.Type == RotationType.Cleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
Ejemplo n.º 18
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;
                }
            }
        }
        public override void Pulse()
        {
            //Combat Time
            if (CombatTime.IsRunning && !WoW.IsInCombat)
            {
                CombatTime.Reset();
            }
            if (!CombatTime.IsRunning && WoW.IsInCombat)
            {
                CombatTime.Start();
            }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

            int OOCPlea = 1;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

            var averageHp = WoW.PartyAverageHealthPercent;

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

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

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

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

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

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

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


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

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

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

            // Refresh PW:S on self (For Questing, doesn't Work in Group)
            if (WoW.PlayerBuffTimeRemaining("Power Word: Shield") < 400 && WoW.CanCast("Power Word: Shield") && WoW.GroupSize == 1)
            {
                WoW.CastSpell("Power Word: Shield");
                return;
            }
        }
Ejemplo n.º 21
0
        public override void Pulse()
        {
            if (UseCooldowns)
            {
            }

            if (combatRoutine.Type == RotationType.SingleTarget)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.TargetIsVisible && !WoW.IsMounted && !WoW.PlayerIsChanneling)
                {
                    if (WoW.CanPreCast("Kick") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 60 && WoW.IsSpellInRange("Ghostly Strike") && !WoW.IsSpellOnCooldown("Kick"))
                    {
                        WoW.CastSpell("Kick");
                        return;
                    }
                    if (WoW.CanPreCast("Blade Flurry") && WoW.IsSpellInRange("Ghostly Strike") && WoW.CountEnemyNPCsInRange >= 2 && !WoW.PlayerHasBuff("Blade Flurry"))
                    {
                        WoW.CastSpell("Blade Flurry");
                        return;
                    }
                    if (WoW.CanPreCast("Cancel Blade Flurry") && WoW.IsSpellInRange("Ghostly Strike") && WoW.PlayerHasBuff("Blade Flurry") && WoW.CountEnemyNPCsInRange <= 1)
                    {
                        WoW.CastSpell("Cancel Blade Flurry");
                        return;
                    }
                    if (WoW.CanPreCast("Ambush") && WoW.Energy >= 60 && WoW.IsSpellInRange("Ghostly Strike") && WoW.CurrentComboPoints >= 4 && (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Vanish")))
                    {
                        WoW.CastSpell("Ambush");
                        return;
                    }
                    if (WoW.CanCast("Slice and Dice") && WoW.Energy >= 21 && WoW.IsSpellInRange("Ghostly Strike") && WoW.Talent(7) == 1 && WoW.CurrentComboPoints >= 4 && WoW.PlayerHasBuff("Loaded Dice"))
                    {
                        WoW.CastSpell("Slice and Dice");
                        return;
                    }
                    if (WoW.CanCast("Slice and Dice") && WoW.Energy >= 21 && WoW.IsSpellInRange("Ghostly Strike") && !WoW.PlayerHasBuff("Slice and Dice") && WoW.PlayerBuffTimeRemaining("Slice and Dice") <= 500 && WoW.CurrentComboPoints >= 4 && WoW.Talent(7) == 1)
                    {
                        WoW.CastSpell("Slice and Dice");
                        return;
                    }
                    if (WoW.CanCast("Roll the Bones") && WoW.Energy >= 21 && WoW.IsSpellInRange("Ghostly Strike") && WoW.Talent(7) == 2 && WoW.PlayerHasBuff("Loaded Dice") && WoW.CurrentComboPoints >= 4)
                    {
                        WoW.CastSpell("Roll the Bones");
                        return;
                    }
                    if (WoW.CanCast("Roll the Bones") && WoW.Talent(7) == 2 && WoW.Energy >= 21 && WoW.IsSpellInRange("Ghostly Strike") && WoW.CurrentComboPoints >= 4 &&
                        !WoW.PlayerHasBuff("Buried Treasure") && !WoW.PlayerHasBuff("Shark Infested Waters") && !WoW.PlayerHasBuff("True Bearing") &&
                        !WoW.PlayerHasBuff("Jolly Roger") && !WoW.PlayerHasBuff("Broadsides"))
                    {
                        WoW.CastSpell("Roll the Bones");
                        return;
                    }
                    if (WoW.CanPreCast("Ghostly Strike") && WoW.IsSpellInRange("Ghostly Strike") && WoW.Energy >= 30 && WoW.CurrentComboPoints <= 5 && !WoW.TargetHasDebuff("Ghostly Strike") && WoW.TargetDebuffTimeRemaining("Ghostly Strike") <= 200 && WoW.Talent(1) == 1)
                    {
                        WoW.CastSpell("Ghostly Strike");
                        return;
                    }
                    if (WoW.CanPreCast("Adrenaline Rush") && UseCooldowns && WoW.IsSpellInRange("Ghostly Strike"))
                    {
                        WoW.CastSpell("Adrenaline Rush");
                        return;
                    }
                    if (WoW.CanPreCast("Vanish") && UseCooldowns && WoW.IsSpellInRange("Ghostly Strike") && WoW.Energy >= 60 && !WoW.PlayerHasBuff("Adrenaline Rush"))
                    {
                        WoW.CastSpell("Vanish");
                        return;
                    }
                    if (WoW.CanPreCast("Arcane Torrent") && UseCooldowns && WoW.IsSpellInRange("Ghostly Strike") && !WoW.PlayerHasBuff("Adrenaline Rush") && WoW.Energy <= 20 && WoW.PlayerRace == "BloodElf")
                    {
                        WoW.CastSpell("Arcane Torrent");
                        return;
                    }
                    if (WoW.CanPreCast("Marked for Death") && WoW.IsSpellInRange("Ghostly Strike") && WoW.CurrentComboPoints <= 1 && WoW.Talent(7) == 2)
                    {
                        WoW.CastSpell("Marked for Death");
                        return;
                    }
                    if (WoW.CanPreCast("Curse of the Dreadblades") && UseCooldowns && WoW.IsSpellInRange("Ghostly Strike"))
                    {
                        WoW.CastSpell("Curse of the Dreadblades");
                        return;
                    }
                    if (WoW.CanCast("Between the Eyes") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 31 && WoW.IsSpellInRange("Ghostly Strike"))
                    {
                        WoW.CastSpell("Between the Eyes");
                        return;
                    }
                    if (WoW.CanCast("Run Through") && WoW.CurrentComboPoints == 6 && WoW.Energy >= 31 && WoW.IsSpellInRange("Ghostly Strike") || (WoW.PlayerHasBuff("Broadsides") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 31))
                    {
                        WoW.CastSpell("Run Through");
                        return;
                    }
                    if (WoW.CanPreCast("Pistol Shot") && WoW.IsSpellInRange("Ghostly Strike") && WoW.PlayerHasBuff("Opportunity") && WoW.CurrentComboPoints <= 5)
                    {
                        WoW.CastSpell("Pistol Shot");
                        return;
                    }
                    if (WoW.CanPreCast("Saber Slash") && WoW.CurrentComboPoints <= 5 && WoW.Energy >= 50 && WoW.IsSpellInRange("Ghostly Strike"))
                    {
                        WoW.CastSpell("Saber Slash");
                        return;
                    }
                }
            }
        }
Ejemplo n.º 22
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.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear"))
                    {
                        WoW.CastSpell("Wind Shear");
                        return;
                    }
                    if (WoW.IsMoving)
                    {//Stormkeeper
                        if (WoW.CanCast("Flame Shock") && !WoW.TargetHasDebuff("Flame Shock"))
                        {
                            WoW.CastSpell("Flame Shock");
                            return;
                        }
                        if (WoW.PlayerHasBuff("Lava Surge") && WoW.CanCast("Lava Burst"))
                        {
                            WoW.CastSpell("Lava Burst");
                            return;
                        }
                        if (WoW.PlayerHasBuff("Stormkeeper") && WoW.CanCast("Lightning Bolt"))
                        {
                            WoW.CastSpell("Lightning Bolt");
                            return;
                        }
                        if (WoW.CanCast("Totem Mastery") && !WoW.PlayerHasBuff("Totem Mastery"))
                        {
                            WoW.CastSpell("Totem Mastery");
                            return;
                        }
                        return;
                    }
                    if (WoW.CanCast("Flame Shock") && (!WoW.TargetHasDebuff("Flame Shock") || (WoW.TargetDebuffTimeRemaining("Flame Shock") <= 9 && WoW.Maelstrom >= 20 && WoW.PlayerHasBuff("Elemental Focus"))))
                    {
                        WoW.CastSpell("Flame Shock");
                        return;
                    }
                    if (WoW.CanCast("Fire Elemental") && WoW.CooldownsOn)
                    {
                        WoW.CastSpell("Fire Elemental");
                        return;
                    }
                    if (WoW.Talent(7) == 1 && WoW.CanCast("Ascendance") && WoW.CooldownsOn) // && WoW.IsBoss) //use Ascendance
                    {
                        WoW.CastSpell("Ascendance");
                        return;
                    }
                    if (WoW.CanCast("Totem Mastery") && !WoW.PlayerHasBuff("Totem Mastery"))
                    {
                        WoW.CastSpell("Totem Mastery");
                        return;
                    }
                    if (WoW.CanCast("Elemental Blast"))
                    {
                        WoW.CastSpell("Elemental Blast");
                        return;
                    }
                    if (WoW.Talent(7) == 3 && WoW.CanCast("Icefury") && WoW.Maelstrom < 101)
                    {
                        WoW.CastSpell("Icefury");
                    }
                    if (WoW.PlayerHasBuff("Icefury") && WoW.Maelstrom >= 20 && WoW.CanCast("Frost Shock"))
                    {
                        WoW.CastSpell("Frost Shock");
                    }
                    if (WoW.CanCast("Earth Shock") && WoW.Maelstrom >= 117)
                    {
                        WoW.CastSpell("Earth Shock");
                        return;
                    }
                    if (WoW.CanCast("Lava Burst") && WoW.PlayerHasBuff("Lava Surge"))
                    {
                        WoW.CastSpell("Lava Burst");
                        return;
                    }
                    if (WoW.CanCast("Lightning Bolt") && WoW.PlayerHasBuff("Power of the Maelstrom"))
                    {
                        WoW.CastSpell("Lightning Bolt");
                        return;
                    }
                    if (WoW.CanCast("Earth Shock") && !WoW.PlayerHasBuff("Lava Surge") && WoW.Maelstrom >= 111)
                    {
                        WoW.CastSpell("Earth Shock");
                        return;
                    }
                    if (WoW.CanCast("Stormkeeper") && !WoW.PlayerHasBuff("Ascendance")) //use stormkeeper after ascendance
                    {
                        WoW.CastSpell("Stormkeeper");
                        return;
                    }
                    if (WoW.CanCast("Lava Burst"))
                    {
                        WoW.CastSpell("Lava Burst");
                        return;
                    }
                    if (WoW.CanCast("Lightning Bolt"))
                    {
                        WoW.CastSpell("Lightning Bolt");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy) //First things go first
                {
                    if (WoW.CanCast("Elemental Blast"))
                    {
                        WoW.CastSpell("Elemental Blast");
                        return;
                    }
                    if (WoW.CanCast("Flame Shock") && !WoW.TargetHasDebuff("Flame Shock"))
                    {
                        WoW.CastSpell("Flame Shock");
                        return;
                    }
                    if (WoW.CanCast("Lava Burst") && WoW.PlayerHasBuff("Lava Surge"))
                    {
                        WoW.CastSpell("Lava Burst");
                        return;
                    }
                    if (WoW.PlayerHasBuff("Ascendance") && WoW.CanCast("Lava Beam"))
                    {
                        WoW.CastSpell("Lava Beam");
                        return;
                    }
                    if (WoW.CanCast("Chain Lightning"))
                    {
                        WoW.CastSpell("Chain Lightning");
                        return;
                    }
                }
            }
        }
        public override void Pulse()        // Updated for Legion (tested and working for single target)
        {
            if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted)
            {
                SelectRotation(4, 9999, 1);
            }

            //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
                }
            }
        }
        public override void Pulse()
        {
            if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted)
            {
                SelectRotation(4, 100, 1);
            }

            if (DetectKeyPress.GetKeyState(0x6A) < 0)
            {
                UseCooldowns = !UseCooldowns;
                Thread.Sleep(150);
            }
            if (WoW.IsInCombat && !WoW.HasTarget)
            {
                WoW.KeyPressRelease(WoW.Keys.Tab);
                return;
            }
            if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
            {
                Log.Write("focus * cdremain KC >300 : " + ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300));
                if (WoW.CanCast("FeignDeath") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "FeignDeath Percent") && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("FeignDeath");
                    return;
                }
                if (WoW.CanCast("Exhilaration") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "Exhilaration Percent") && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Exhilaration");
                    return;
                }
                if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "AspectoftheTurtle Percent") && AspectoftheTurtle && !WoW.IsSpellOnCooldown("AspectoftheTurtle") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("AspectoftheTurtle");
                    return;
                }
                if (WoW.CanCast("Ancient Healing Potion") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ancient Healing Potion") && WoW.HealthPercent != 0)
                {
                    WoW.CastSpell("Ancient Healing Potion");
                    return;
                }
                if (WoW.CanCast("Silkweave Bandage") && WoW.HealthPercent < 40 && WoW.PlayerHasBuff("Turtle") && !WoW.IsMoving && !WoW.PlayerHasDebuff("Bandaged"))
                {
                    WoW.CastSpell("Silkweave Bandage");
                    return;
                }

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

                if (WoW.PetHealthPercent <= 90 &&
                    !WoW.PetHasBuff("Heal Pet") &&
                    HealPet &&
                    WoW.CanCast("Revive Pet") &&
                    !WoW.IsMoving)
                {
                    WoW.CastSpell("Heal Pet");
                    return;
                }
                if (WoW.PetHealthPercent <= 0 &&
                    WoW.IsSpellOnCooldown("Phoenix") &&
                    WoW.CanCast("Revive Pet") &&
                    !WoW.IsMoving)
                {
                    WoW.CastSpell("Revive Pet");
                    return;
                }
                if (WoW.TargetIsCasting)
                {
                    if (WoW.CanCast("Counter Shot") &&
                        WoW.TargetIsCastingAndSpellIsInterruptible &&
                        WoW.TargetPercentCast >= 60 &&
                        !WoW.IsSpellOnCooldown("Counter Shot") &&
                        !WoW.PlayerIsChanneling &&
                        !WoW.WasLastCasted("Counter Shot"))
                    {
                        WoW.CastSpell("Counter Shot");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("A Murder of Crows") &&
                        WoW.Talent(6) == 1 &&
                        WoW.Focus >= 25 &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("A Murder of Crows"))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }

                    if (WoW.CanCast("Volley") &&
                        !WoW.PlayerHasBuff("Volley") &&
                        WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Volley");
                        return;
                    }
                    if (WoW.CanCast("Arcane Torrent")

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

                        && !WoW.IsSpellOnCooldown("Berserking") &&
                        WoW.PlayerRace == "Troll")
                    {
                        WoW.CastSpell("Berserking");
                        return;
                    }
                    if (WoW.CanCast("Blood Fury")

                        && !WoW.IsSpellOnCooldown("Blood Fury") &&
                        WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Chimaera Shot") &&
                        WoW.Focus < 90 &&
                        WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.CanCast("Chimaera Shot") &&
                        WoW.Talent(2) == 3)
                    {
                        WoW.CastSpell("Chimaera Shot");
                        return;
                    }
                    if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish"))
                    {
                        WoW.CastSpell("Kil'jaeden's Burning Wish");
                        return;
                    }
//	stampede,if=buff.bloodlust.up|buff.bestial_wrath.up|cooldown.bestial_wrath.remains<=2|target.time_to_die<=14
                    if (WoW.CanCast("Stampede") && WoW.Talent(7) == 1 && WoW.IsSpellInRange("Cobra Shot") && ((WoW.PlayerHasBuff("Bestial Wrath")) || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2)) &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle") &&
                        !WoW.IsSpellOnCooldown("Stampede"))
                    {
                        WoW.CastSpell("Stampede");

                        return;
                    }
//dire_beast,if=cooldown.bestial_wrath.remains>3
                    if (WoW.CanCast("Dire Beast") && WoW.Talent(2) != 2 && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Beast");
                        return;
                    }
//dire_frenzy,if=(cooldown.bestial_wrath.remains>6&(!equipped.the_mantle_of_command|pet.cat.buff.dire_frenzy.remains<=gcd.max*1.2))
                    if (WoW.CanCast("Dire Frenzy") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && (WoW.Legendary(1) != 3 || WoW.PetBuffTimeRemaining("Dire Frenzy") <= 70)) && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
//|(charges>=2&focus.deficit>=25+talent.dire_stable.enabled*12)|target.time_to_die<9
                    if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 95 && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 83 && WoW.Talent(2) == 2 && WoW.Talent(1) == 3 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
//aspect_of_the_wild,if=buff.bestial_wrath.up|target.time_to_die<12
                    if (WoW.CanCast("Aspect of the Wild") && UseCooldowns && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        return;
                    }
//titans_thunder,if=talent.dire_frenzy.enabled|cooldown.dire_beast.remains>=3|(buff.bestial_wrath.up&pet.dire_beast.active)
                    if (WoW.CanCast("Titan's Thunder") && (WoW.Talent(2) == 2 || (WoW.Talent(2) != 2 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 300) || (WoW.Talent(2) != 2 && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerHasBuff("Dire Beast"))) && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Titan's Thunder");
                        return;
                    }
//bestial_wrath
                    if (WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
//kill_command
                    if (WoW.CanCast("Kill Command") && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
//cobra_shot,if=(cooldown.kill_command.remains>focus.time_to_max&cooldown.bestial_wrath.remains>focus.time_to_max)|(buff.bestial_wrath.up&focus.regen*cooldown.kill_command.remains>30)|target.time_to_die<cooldown.kill_command.remains
                    if (WoW.CanCast("Cobra Shot") && WoW.Focus > 32 && (WoW.SpellCooldownTimeRemaining("Kill Command") > FocusTimetoMax && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > FocusTimetoMax)

                        && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && WoW.Focus > 32 && WoW.PlayerHasBuff("Bestial Wrath") && ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300) && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }

            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish"))
                    {
                        WoW.CastSpell("Kil'jaeden's Burning Wish");
                        return;
                    }
                    if (WoW.CanCast("Volley") &&
                        !WoW.PlayerHasBuff("Volley") &&
                        WoW.Talent(6) == 3)
                    {
                        WoW.CastSpell("Volley");
                        return;
                    }
                    if (WoW.CanCast("Berserking")

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

                        && !WoW.IsSpellOnCooldown("Blood Fury") &&
                        WoW.PlayerRace == "Orc")
                    {
                        WoW.CastSpell("Blood Fury");
                        return;
                    }
                    if (WoW.CanCast("Barrage") &&
                        WoW.Talent(6) == 2 &&
                        !WoW.IsSpellOnCooldown("Barrage") &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        WoW.Focus >= 60)
                    {
                        WoW.CastSpell("Barrage");
                        return;
                    }
                    if (WoW.CanCast("Chimaera Shot") &&
                        WoW.Focus < 90 &&
                        WoW.IsSpellOnCooldown("Dire Frenzy") &&
                        WoW.IsSpellOnCooldown("Kill Command") &&
                        WoW.CanCast("Chimaera Shot") &&
                        WoW.Talent(2) == 3)
                    {
                        WoW.CastSpell("Chimaera Shot");
                        return;
                    }
                    if (WoW.CanCast("A Murder of Crows") &&
                        WoW.Talent(6) == 1 &&
                        WoW.Focus >= 46 - FocusRegen &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") > GCD &&
                        WoW.IsSpellInRange("Cobra Shot") &&
                        !WoW.IsSpellOnCooldown("A Murder of Crows"))
                    {
                        WoW.CastSpell("A Murder of Crows");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.Focus >= 40 &&
                        !WoW.PetHasBuff("Beast Cleave") &&
                        WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
                    if (WoW.CanCast("Multi-Shot") &&
                        WoW.Focus >= 40 &&
                        WoW.PetHasBuff("Beast Cleave") &&
                        WoW.PetBuffTimeRemaining("Beast Cleave") <= 70 &&
                        WoW.IsSpellInRange("Multi-Shot"))
                    {
                        WoW.CastSpell("Multi-Shot");
                        return;
                    }
//	stampede,if=buff.bloodlust.up|buff.bestial_wrath.up|cooldown.bestial_wrath.remains<=2|target.time_to_die<=14
                    if (WoW.CanCast("Stampede") && WoW.Talent(7) == 1 && WoW.IsSpellInRange("Cobra Shot") && ((WoW.PlayerHasBuff("Bestial Wrath")) || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2)) &&
                        !WoW.PlayerHasBuff("AspectoftheTurtle") &&
                        !WoW.IsSpellOnCooldown("Stampede"))
                    {
                        WoW.CastSpell("Stampede");

                        return;
                    }
//dire_beast,if=cooldown.bestial_wrath.remains>3
                    if (WoW.CanCast("Dire Beast") && WoW.Talent(2) != 2 && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Beast");
                        return;
                    }
//dire_frenzy,if=(cooldown.bestial_wrath.remains>6&(!equipped.the_mantle_of_command|pet.cat.buff.dire_frenzy.remains<=gcd.max*1.2))
                    if (WoW.CanCast("Dire Frenzy") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && (WoW.Legendary(1) != 3 || WoW.PetBuffTimeRemaining("Dire Frenzy") <= 70)) && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
//|(charges>=2&focus.deficit>=25+talent.dire_stable.enabled*12)|target.time_to_die<9
                    if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 95 && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
                    if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 83 && WoW.Talent(2) == 2 && WoW.Talent(1) == 3 && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Dire Frenzy");
                        return;
                    }
//aspect_of_the_wild,if=buff.bestial_wrath.up|target.time_to_die<12
                    if (WoW.CanCast("Aspect of the Wild") && UseCooldowns && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Aspect of the Wild");
                        return;
                    }
//titans_thunder,if=talent.dire_frenzy.enabled|cooldown.dire_beast.remains>=3|(buff.bestial_wrath.up&pet.dire_beast.active)
                    if (WoW.CanCast("Titan's Thunder") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && (WoW.Talent(2) == 2 || (WoW.Talent(2) != 2 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 300) || (WoW.Talent(2) != 2 && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerHasBuff("Dire Beast"))) && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Titan's Thunder");
                        return;
                    }
//bestial_wrath
                    if (WoW.CanCast("Bestial Wrath") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Bestial Wrath");
                        return;
                    }
//kill_command
                    if (WoW.CanCast("Kill Command") && WoW.Focus >= 70 - FocusRegen && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Kill Command");
                        return;
                    }
//cobra_shot,if=(cooldown.kill_command.remains>focus.time_to_max&cooldown.bestial_wrath.remains>focus.time_to_max)|(buff.bestial_wrath.up&focus.regen*cooldown.kill_command.remains>30)|target.time_to_die<cooldown.kill_command.remains
                    if (WoW.CanCast("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.Focus > 72 - FocusRegen && (WoW.SpellCooldownTimeRemaining("Kill Command") > FocusTimetoMax && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > FocusTimetoMax)

                        && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                    if (WoW.CanCast("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.Focus > 72 - FocusRegen && WoW.PlayerHasBuff("Bestial Wrath") && ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300) && WoW.IsSpellInRange("Cobra Shot"))
                    {
                        WoW.CastSpell("Cobra Shot");
                        return;
                    }
                }
            }
        }
Ejemplo n.º 25
0
        public override void Initialize()
        {
            if (!RetToDef)
            {
                if (ConfigFile.ReadValue("ProtectionLesion", "SB HP Percent") == "")
                {
                    ConfigFile.WriteValue("ProtectionLesion", "SB HP Percent", "90");
                }
                if (ConfigFile.ReadValue("ProtectionLesion", "LS HP Percent") == "")
                {
                    ConfigFile.WriteValue("ProtectionLesion", "LS HP Percent", "35");
                }
                if (ConfigFile.ReadValue("ProtectionLesion", "SW HP Percent") == "")
                {
                    ConfigFile.WriteValue("ProtectionLesion", "SW HP Percent", "20");
                }
                if (ConfigFile.ReadValue("ProtectionLesion", "HS HP Percent") == "")
                {
                    ConfigFile.WriteValue("ProtectionLesion", "HS HP Percent", "30");
                }
                if (ConfigFile.ReadValue("ProtectionLesion", "IV HP Percent") == "")
                {
                    ConfigFile.WriteValue("ProtectionLesion", "IV HP Percent", "80");
                }
            }


            Log.Write("Welcome to Protection Warrior", Color.Red);
            Log.Write("Suggested build: 1213112", Color.Red);
            Log.Write("Version 4.1", Color.Red);
            Log.Write("Last Edited by Lesion 08/02 - Added more abilities to edit.", Color.Blue);

            SettingsForm = new Form {
                Text = "Settings", StartPosition = FormStartPosition.CenterScreen, Width = 350, Height = 250, ShowIcon = false
            };

            //var picBox = new PictureBox {Left = 0, Top = 0, Width = 800, Height = 100, Image = TopLogo};
            //SettingsForm.Controls.Add(picBox);

            var lblGeneralInterruptsText = new Label //12; 114 LEFT is first value, Top is second.
            {
                Text = "Interrupt all",
                Size = new Size(81, 13), //81; 13
                Left = 12,
                Top  = 14
            };

            SettingsForm.Controls.Add(lblGeneralInterruptsText); //113; 114

            generalint = new CheckBox {
                Checked = generalInterrupts, TabIndex = 2, Size = new Size(15, 14), Left = 115, Top = 14
            };
            SettingsForm.Controls.Add(generalint);

            var lblMythicPlusText = new Label //12; 129 is first value, Top is second.
            {
                Text = "M+ Interrupts",
                Size = new Size(95, 13), //95; 13
                Left = 12,
                Top  = 29
            };

            SettingsForm.Controls.Add(lblMythicPlusText); //113; 114

            mplusint = new CheckBox {
                Checked = mythicplusinterrupts, TabIndex = 4, Size = new Size(15, 14), Left = 115, Top = 29
            };
            SettingsForm.Controls.Add(mplusint);

            var lbldefcooldownsText = new Label //12; 129 is first value, Top is second.
            {
                Text = "Def Cooldowns used automatically SW/LS",
                Size = new Size(95, 13), //95; 13
                Left = 12,
                Top  = 44
            };

            SettingsForm.Controls.Add(lbldefcooldownsText); //113; 114

            CDint = new CheckBox {
                Checked = defcooldowns, TabIndex = 5, Size = new Size(15, 14), Left = 115, Top = 44
            };
            SettingsForm.Controls.Add(CDint);

            var lblspellrefText = new Label //12; 129 is first value, Top is second.
            {
                Text = "Spell Reflect",
                Size = new Size(95, 13), //95; 13
                Left = 12,
                Top  = 59
            };

            SettingsForm.Controls.Add(lblspellrefText); //113; 114

            SRint = new CheckBox {
                Checked = spellref, TabIndex = 6, Size = new Size(15, 14), Left = 115, Top = 59
            };
            SettingsForm.Controls.Add(SRint);

            var lblImpendingVicText = new Label //12; 129 is first value, Top is second.
            {
                Text = "Impending Victory",
                Size = new Size(95, 13), //95; 13
                Left = 12,
                Top  = 74
            };

            SettingsForm.Controls.Add(lblImpendingVicText); //113; 114

            IVint = new CheckBox {
                Checked = ImpendingVic, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 74
            };
            SettingsForm.Controls.Add(IVint);

            var lblIndomitableText = new Label //12; 129 is first value, Top is second.
            {
                Text = "Indomitable",
                Size = new Size(95, 13), //95; 13
                Left = 12,
                Top  = 89
            };

            SettingsForm.Controls.Add(lblIndomitableText); //113; 114

            IDint = new CheckBox {
                Checked = Indomitable, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 89
            };
            SettingsForm.Controls.Add(IDint);

            var lblBattleCText = new Label //12; 129 is first value, Top is second.
            {
                Text = "Battle Cry",
                Size = new Size(95, 13), //95; 13
                Left = 12,
                Top  = 104
            };

            SettingsForm.Controls.Add(lblBattleCText); //113; 114

            BCint = new CheckBox {
                Checked = BattleC, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 104
            };
            SettingsForm.Controls.Add(BCint);
            //
            var lblHPText = new Label //12; 129 is first value, Top is second.
            {
                Text = "Use HP Pot",
                Size = new Size(95, 13), //95; 13
                Left = 12,
                Top  = 119
            };

            SettingsForm.Controls.Add(lblHPText); //113; 114

            HPint = new CheckBox {
                Checked = Pots, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 119
            };
            SettingsForm.Controls.Add(HPint);
            //
            var lblAMText = new Label //12; 129 is first value, Top is second.
            {
                Text = "M+ AM/BV",
                Size = new Size(95, 13), //95; 13
                Left = 12,
                Top  = 134
            };

            SettingsForm.Controls.Add(lblAMText); //113; 114

            AMint = new CheckBox {
                Checked = AngerM, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 134
            };
            SettingsForm.Controls.Add(AMint);
            //
            var lblRTDText = new Label //12; 129 is first value, Top is second.
            {
                Text = "Custom %",
                Size = new Size(70, 13), //95; 13
                Left = 160,
                Top  = 120
            };

            SettingsForm.Controls.Add(lblRTDText); //113; 114

            RTDint = new CheckBox {
                Checked = RetToDef, TabIndex = 7, Size = new Size(15, 14), Left = 240, Top = 120
            };
            SettingsForm.Controls.Add(RTDint);
            //

            var lblSBHPercent = new Label {
                Text = "SB HP %", Size = new Size(80, 13), Left = 130, Top = 14
            };

            SettingsForm.Controls.Add(lblSBHPercent);

            SBHPPercentValue = new NumericUpDown {
                Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "SB HP Percent"), Left = 210, Top = 12
            };
            SettingsForm.Controls.Add(SBHPPercentValue);
            //

            var lblLSHPercent = new Label {
                Text = "LS HP %", Size = new Size(80, 13), Left = 130, Top = 34
            };

            SettingsForm.Controls.Add(lblLSHPercent);

            LSHPPercentValue = new NumericUpDown {
                Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "LS HP Percent"), Left = 210, Top = 32
            };
            SettingsForm.Controls.Add(LSHPPercentValue);
            //

            var lblSWHPercent = new Label {
                Text = "SW HP %", Size = new Size(80, 13), Left = 130, Top = 54
            };

            SettingsForm.Controls.Add(lblSWHPercent);

            SWHPPercentValue = new NumericUpDown {
                Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "SW HP Percent"), Left = 210, Top = 52
            };
            SettingsForm.Controls.Add(SWHPPercentValue);
            //

            var lblHSHPercent = new Label {
                Text = "HP Stones or Pots HP %", Size = new Size(80, 13), Left = 130, Top = 74
            };

            SettingsForm.Controls.Add(lblHSHPercent);

            HSHPPercentValue = new NumericUpDown {
                Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "HS HP Percent"), Left = 210, Top = 72
            };
            SettingsForm.Controls.Add(HSHPPercentValue);
            //

            var lblIVHPercent = new Label {
                Text = "ImpV or VR %", Size = new Size(80, 13), Left = 130, Top = 94
            };

            SettingsForm.Controls.Add(lblIVHPercent);

            IVHPPercentValue = new NumericUpDown {
                Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "IV HP Percent"), Left = 210, Top = 92
            };
            SettingsForm.Controls.Add(IVHPPercentValue);


            var cmdSave = new Button {
                Text = "Save", Width = 65, Height = 25, Left = 15, Top = 150, Size = new Size(120, 48)
            };

            generalint.Checked = generalInterrupts;
            mplusint.Checked   = mythicplusinterrupts;
            CDint.Checked      = defcooldowns;
            SRint.Checked      = spellref;
            IVint.Checked      = ImpendingVic;
            IDint.Checked      = Indomitable;
            BCint.Checked      = BattleC;
            HPint.Checked      = Pots;
            AMint.Checked      = AngerM;
            RTDint.Checked     = RetToDef;


            cmdSave.Click             += CmdSave_Click;
            generalint.CheckedChanged += GI_Click;
            mplusint.CheckedChanged   += MP_Click;
            CDint.CheckedChanged      += CD_Click;
            SRint.CheckedChanged      += SR_Click;
            IVint.CheckedChanged      += IV_Click;
            IDint.CheckedChanged      += ID_Click;
            BCint.CheckedChanged      += BC_Click;
            HPint.CheckedChanged      += HP_Click;
            AMint.CheckedChanged      += AM_Click;
            RTDint.CheckedChanged     += RTD_Click;


            SettingsForm.Controls.Add(cmdSave);
            lblGeneralInterruptsText.BringToFront();
            lblMythicPlusText.BringToFront();
            lbldefcooldownsText.BringToFront();
            lblspellrefText.BringToFront();
            lblImpendingVicText.BringToFront();
            lblIndomitableText.BringToFront();
            lblBattleCText.BringToFront();
            lblHPText.BringToFront();
            lblAMText.BringToFront();
            lblRTDText.BringToFront();
            SBHPPercentValue.BringToFront();
            LSHPPercentValue.BringToFront();
            SWHPPercentValue.BringToFront();
            HSHPPercentValue.BringToFront();
            IVHPPercentValue.BringToFront();

            Log.Write("Player Talents = " + WoW.Talent(1) + WoW.Talent(2) + WoW.Talent(3) + WoW.Talent(4) + WoW.Talent(5) + WoW.Talent(6) + WoW.Talent(7), Color.Green);

            Log.Write("---------------------------------------------------------", Color.Blue);
            Log.Write("Interupt all 				= "+ generalInterrupts, Color.Red);
            Log.Write("Mythic Plus				= "+ mythicplusinterrupts, Color.Red);
            Log.Write("Def-cooldowns being used 		= "+ defcooldowns, Color.Red);
            Log.Write("Spell Reflect 				= "+ spellref, Color.Red);
            Log.Write("Using Impending Victory 			= "+ ImpendingVic, Color.Red);
            Log.Write("Using Indomitable Talent 			= "+ Indomitable, Color.Red);
            Log.Write("Auto using Battle Cry 			= "+ BattleC, Color.Red);
            Log.Write("Use HP Pots 				= "+ Pots, Color.Red);
            Log.Write("Use Bv & AM for M+&Magic 		= "+ AngerM, Color.Red);
            Log.Write("Shield Block being used 			@ "+ SBHPPercentValue.Value + "%", Color.Red);
            Log.Write("Last Stand being used 			@ "+ LSHPPercentValue.Value + "%", Color.Red);
            Log.Write("Shield Wall being used 			@ "+ SWHPPercentValue.Value + "%", Color.Red);
            Log.Write("Health Pots being used 			@ "+ HSHPPercentValue.Value + "%", Color.Red);
            Log.Write("ImpendingVic & Victory Rush used 	@ "+ IVHPPercentValue.Value + "%", Color.Red);
            Log.Write("---------------------------------------------------------", Color.Blue);
        }
Ejemplo n.º 26
0
        public override void Pulse()
        {
            //Talent Checker
            string currentTalents = WoW.Talent(1) + "" + WoW.Talent(2) + "" + WoW.Talent(3) + "" + WoW.Talent(4) + "" + WoW.Talent(5) + "" + WoW.Talent(6) + "" + WoW.Talent(7);

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


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

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

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

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

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

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


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

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

                    if (WoW.SpellCooldownTimeRemaining("DnD") == 0 && isMelee && currentRunes >= 1 && WoW.TargetHealthPercent >= 10 && !renewBones && bonesStack > 2)
                    {
                        WoW.CastSpell("DnD");
                        return;
                    }
                    if (isMelee && currentRunes >= 1 && !renewBones && bonesStack > 2)
                    {
                        WoW.CastSpell("Heart Strike");
                        return;
                    }
                    if (WoW.CanCast("Blood Boil", false, true, false, true, false) && isMelee)
                    {
                        WoW.CastSpell("Blood Boil");
                        return;
                    }
                    if (WoW.Talent(1) == 3 && CanCastInRange("BD") && !renewBones && currentRunes >= 1)
                    {
                        WoW.CastSpell("BD");
                    }
                }
            }
        }
Ejemplo n.º 29
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                validtarget = WoW.HasTarget && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Greater Invisibility") && !WoW.TargetHasDebuff("Polymorph") && WoW.RangeToTarget < 41;

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

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

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

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

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

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


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

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


            if (combatRoutine.Type == RotationType.AOE)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
            if (combatRoutine.Type == RotationType.Cleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
Ejemplo n.º 30
0
        public override void Pulse()
        {
            if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted)
            {
                return;
            }
            if (!WoW.HasTarget || !WoW.TargetIsEnemy)
            {
                return;
            }
            if (WoW.PlayerIsChanneling)
            {
                return;
            }

            if (!WoW.IsSpellInRange("Felblade"))
            {
                if (WoW.CanCast("ThrowGlaives"))
                {
                    WoW.CastSpell("ThrowGlaives");
                }
                return;
            }

            // Cast Nemesis on your primary target, synchronise with Metamorphosis and Chaos Blades if possible.
            if (WoW.HasBossTarget || UseCooldowns)
            {
                if (WoW.CanCast("Nemesis"))
                {
                    WoW.CastSpell("Nemesis");       // Off the GCD no return
                }
                if (WoW.CanCast("Metamorphosis"))   // This requires macro to "/cast [@player] Metamorphosis"
                {
                    WoW.CastSpell("Metamorphosis"); // Off the GCD no return
                }
                if (WoW.CanCast("ChaosBlades") &&
                    WoW.Talent(7) == 1)           // If we have taken Chaos Blades Talent
                {
                    WoW.CastSpell("ChaosBlades"); // Off the GCD no return
                }
            }

            // Cast Fel Rush if about to hit 2 charges.
            //if (WoW.CanCast("FelRush") && WoW.PlayerSpellCharges("FelRush") == 2)
            //{
            //    WoW.CastSpell("FelRush");
            //    return;
            //}

            // Cast Fel Barrage at 5 charges.
            if (WoW.CanCast("FelBarrage") && WoW.PlayerSpellCharges("FelBarrage") == 5 &&
                WoW.Talent(7) == 2) // If we have taken Fel Barrage Talent
            {
                WoW.CastSpell("FelBarrage");
                return;
            }

            // Cast Fury of the Illidari.
            if (WoW.CanCast("FOTI"))
            {
                WoW.CastSpell("FOTI");
                return;
            }

            // Cast Eye Beam to trigger Demonic.
            if (WoW.CanCast("EyeBeam") &&
                WoW.Talent(7) == 3 && // If we have taken Demonic Talent
                WoW.Fury > 50)
            {
                WoW.CastSpell("EyeBeam");
                return;
            }

            // Cast Metamorphosis if available and not active. - this is done above to ensure its timed with other CD's
            // Cast Chaos Blades. - this is done above to ensure its timed with Meta and other CD's
            // Cast Felblade if available and more than 30 Fury from your cap.
            if (WoW.CanCast("Felblade") &&
                WoW.Fury <= 100) // ToDo: Here we assume Fury Cap is 130, no clue if something changes that.
            {
                WoW.CastSpell("Felblade");
                return;
            }

            // Cast Blade Dance / Death Sweep with First Blood.
            if (WoW.CanCast("BladeDance") &&
                WoW.Fury >= 15 &&
                WoW.Talent(3) == 2) // If we have taken First Blood Talent
            {
                WoW.CastSpell("BladeDance");
                return;
            }

            // Cast Chaos Strike / Annihilation.
            if (!WoW.PlayerHasBuff("Metamorphosis"))
            {
                if (WoW.CanCast("ChaosStrike") && WoW.Fury >= 40)
                {
                    WoW.CastSpell("ChaosStrike");
                    return;
                }
            }
            else
            {
                if (WoW.CanCast("Annihilation") && WoW.Fury >= 40)
                {
                    WoW.CastSpell("Annihilation");
                    return;
                }
            }

            // Cast Demon's Bite if Demon Blades is not taken.
            if (WoW.CanCast("DemonsBite") && WoW.Talent(2) != 2)
            {
                WoW.CastSpell("DemonsBite");
                return;
            }

            // Cast Throw Glaive if nothing else is available during empty Globals with Demon Blades.
            if (WoW.CanCast("ThrowGlaives") && WoW.Talent(2) == 2)
            {
                WoW.CastSpell("ThrowGlaives");
            }
        }