public override void Pulse()
        {
            var FreeBeers = WoW.PlayerSpellCharges("Ironskin Brew");

            //Don't Interrupt.
            if (WoW.PlayerIsCasting || WoW.PlayerIsChanneling)
            {
                return;
            }

            //Don't continue out of combat
            if (!WoW.IsInCombat)
            {
                return;
            }

            if (FreeBeers == 3)
            {
                //Light Stagger (But still might kill us.  Throw ISB
                if ((Stagger == StaggerLevel.Light || Stagger == StaggerLevel.None) && NoIsbOrIsbExpiresSoon())
                {
                    Log.Write("FreeBeers == 3 and Stagger is Light or less, and (NoISB or ISB Expiring)", Color.SlateBlue);
                    if (WoW.CanCast("Ironskin Brew"))
                    {
                        WoW.CastSpell("Ironskin Brew");
                    }
                    return;
                }

                //If we have ISB on and > 3 seconds left throw Purifying
                if (WoW.PlayerHasBuff("Ironskin Brew") && WoW.PlayerBuffTimeRemaining("Ironskin Brew") > 3 && (Stagger == StaggerLevel.Medium || Stagger == StaggerLevel.Heavy))
                {
                    Log.Write("FreeBeers == 3 and ISB uptime > 3 and our stagger > light ", Color.SlateBlue);
                    if (WoW.CanCast("Purifying Brew"))
                    {
                        WoW.CastSpell("Purifying Brew");
                    }
                    return;
                }
            }

            if (FreeBeers == 2)
            {
                //If ISB has slipped or less than 3 seconds left then cast
                if (!WoW.PlayerHasBuff("Ironskin Brew"))
                {
                    Log.Write("FreeBeers == 2 but Player doesn't have Ironskin Brew Buff");
                    if (WoW.CanCast("Ironskin Brew"))
                    {
                        WoW.CastSpell("Ironskin Brew");
                    }
                    return;
                }
                if (WoW.PlayerHasBuff("Ironskin Brew") && WoW.PlayerBuffTimeRemaining("Ironskin Brew") <= 3)
                {
                    Log.Write("FreeBeers == 2 but player's ISB buff has less than 3 secos");
                    if (WoW.CanCast("Ironskin Brew"))
                    {
                        WoW.CastSpell("Ironskin Brew");
                    }
                    return;
                }

                if (Stagger != StaggerLevel.None && WoW.PlayerHealthPercent <= 70)
                {
                    Log.Write("FreeBeers == 2, Stagger > None, and Health less than 70%");
                    if (WoW.CanCast("Purifying Brew"))
                    {
                        WoW.CastSpell("Purifying Brew");
                    }
                    return;
                }
            }

            if (FreeBeers == 1)
            {
                if (Stagger != StaggerLevel.None && WoW.PlayerHealthPercent <= 60 &&
                    WoW.PlayerBuffTimeRemaining("Ironskin Brew") <= 3 && WoW.CanCast("Black Ox Brew"))
                {
                    Log.Write("FreeBeers == 1, Stagger > None, and Health less than 60% an CanCast Black Ox Brew");
                    DrinkBlackOxBrew();
                    return;
                }
                if (Stagger != StaggerLevel.None && WoW.PlayerBuffTimeRemaining("Ironskin Brew") >= 3)
                {
                    Log.Write("FreeBeers == 1, Stagger > None, and Uptime on ISB >= 3 seconds");
                    DrinkPurifyingBrew();
                    return;
                }
                if (WoW.CanCast("Black Ox Brew"))
                {
                    DrinkBlackOxBrew();
                    return;
                }
            }

            if (WoW.PlayerHealthPercent <= 85 && WoW.PlayerSpellCharges("Healing Elixir") > 1 &&
                !WoW.IsSpellOnCooldown("Healing Elixir"))
            {
                WoW.CastSpell("Healing Elixir");
                return;
            }

            if (WoW.TargetIsCasting && WoW.CanCast("Spear Hand Strike") &&
                !WoW.IsSpellOnCooldown("Spear Hand Strike") &&
                WoW.IsSpellInRange("Spear Hand Strike"))
            {
                WoW.CastSpell("Spear Hand Strike");
                return;
            }

            if (!WoW.HasTarget || WoW.HasTarget && WoW.TargetIsFriend)
            {
                Log.WriteFrozen("No Target", Color.Red);
                return;
            }


            //Always have Eye of the tiger up, it saves this profile
            //Maintain Eye of the Tiger
            if (
                !WoW.PlayerHasBuff("Eye of the Tiger") && !WoW.IsSpellOnCooldown("Tiger Palm") &&
                WoW.IsSpellInRange("Tiger Palm") ||
                WoW.Energy >= 75
                )
            {
                WoW.CastSpell("Tiger Palm");
                return;
            }

            if (WoW.TargetHasDebuff("Keg Smash") && WoW.CanCast("Breath of Fire"))
            {
                Log.WriteFrozen("Casting Breath of Fire", Color.CadetBlue);
                WoW.CastSpell("Breath of Fire");
                return;
            }

            if (WoW.CanCast("Blackout Strike"))
            {
                Log.WriteFrozen("Casting Blackout Strike", Color.CadetBlue);
                WoW.CastSpell("Blackout Strike");
                return;
            }

            if (!WoW.TargetHasDebuff("Keg Smash") && WoW.CanCast("Keg Smash") && WoW.Energy >= 40)
            {
                Log.WriteFrozen("Casting Keg Smash", Color.CadetBlue);
                WoW.CastSpell("Keg Smash");
                return;
            }

            //if We Can Cast Exploding Keg and in Melee range then do so
            if (WoW.CanCast("Exploding Keg") && !WoW.IsSpellOnCooldown("Exploding Keg") &&
                WoW.IsSpellInRange("Tiger Palm"))
            {
                WoW.CastSpellOnMe("Exploding Keg");
                return;
            }


            if (WoW.CanCast("Tiger Palm") && WoW.Energy >= 40)
            {
                Log.WriteFrozen("Casting Tiger Palm Filler", Color.CadetBlue);
                WoW.CastSpell("Tiger Palm");
                return;
            }

            Log.WriteFrozen("Nothing!", Color.Chocolate);
        }
Example #2
0
        public override void Pulse()
        {
            if (!WoW.InGame)
            {
                return;
            }

            if (WoW.TankId == 0)
            {
                string currentTalents = WoW.Talent(1) + "" + WoW.Talent(2) + "" + WoW.Talent(3) + "" + WoW.Talent(4) + "" + WoW.Talent(5) + "" + WoW.Talent(6) + "" + WoW.Talent(7);
                if (supportedTalents != currentTalents)
                {
                    MessageBox.Show("You are not using the supported talents " + supportedTalents + ", your currnet talents are " + currentTalents + ".", "Frozen", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    Log.Write("Talents are correct", Color.Green);
                }

                if (!WoW.PlayerHasBuff("Beacon of Faith") && !WoW.PlayerHasBuff("Beacon of Light") &&
                    WoW.CanCast("Beacon of Faith"))
                {
                    WoW.CastSpellOnMe("Beacon of Faith");
                }

                var f = new frmEnterTankId {
                    TopMost = true
                };
                f.ShowDialog();
            }

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

            var lowest = WoW.PartyLowestHealthPercent;

            int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent;

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

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

            var averageHp = WoW.PartyAverageHealthPercent;

            if (WoW.PlayerHealthPercent < 10 && WoW.IsInCombat && WoW.CanCast("Divine Shield") &&
                !WoW.PlayerHasDebuff("Forbearance"))
            {
                WoW.CastSpell("Divine Shield");
            }

            if (averageHp < 80 && WoW.CanCast("Aura Mastery"))
            {
                WoW.CastSpell("Aura Mastery");
            }

            if (averageHp < 60 && WoW.CanCast("Avenging Wrath") && !WoW.PlayerHasBuff("Aura Mastery"))
            {
                WoW.CastSpell("Avenging Wrath");
            }

            WoW.TargetMember(currentTargetId); // Target the lowest health party member

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

            // Beacon of Light or Beacon of Virtue(if selected) maintain on your primary target at all times.
            if (WoW.Talent(7) == 3)
            {
                if (WoW.TankHealth > 50 &&
                    averageHp > 90 &&
                    WoW.CanCast("Beacon of Virtue") &&
                    WoW.TankId == currentTargetId &&
                    !WoW.TargetHasBuff("Beacon of Virtue"))
                {
                    WoW.CastSpell("Beacon of Virtue");
                }
            }
            if (WoW.Talent(7) == 1)
            {
                if (WoW.CanCast("Beacon of Light") &&
                    WoW.TankId == currentTargetId &&
                    !WoW.TargetHasBuff("Beacon of Light"))
                {
                    WoW.CastSpell("Beacon of Light");
                }
            }

            if (WoW.CanCast("Lay On Hands") &&
                lowest <= 20 &&                        // Use LOH if tanks health < 20 %
                !WoW.TargetHasDebuff("Forbearance") && // Make sure we dont LOH a tank with forbearance debuff
                WoW.TankId == currentTargetId)         // Make sure we only use LOH on tank
            {
                WoW.CastSpell("Lay On Hands");
                return;
            }

            if (WoW.CanCast("Blessing of Sacrifice") &&
                lowest <= 30 &&
                WoW.TankId == currentTargetId &&
                !WoW.TargetHasBuff("Shield Wall Oto"))
            {
                WoW.CastSpell("Blessing of Sacrifice");
                return;
            }

            // Holy Shock use on cooldown to generate Infusion of Light procs.
            // Consume Infusion of Light procs using the appropriate heal before your next Holy Shock.
            if (WoW.CanCast("Holy Shock") && !WoW.PlayerHasBuff("Infusion of Light"))
            {
                WoW.CastSpell("Holy Shock");
                return;
            }

            if (WoW.Talent(5) == 3)
            {
                if (WoW.CanCast("Holy Prism") &&
                    WoW.TankId == currentTargetId &&
                    WoW.IsInCombat)
                {
                    WoW.CastSpell("Holy Prism");
                    return;
                }
            }

            //                  Bestow Faith on cooldown (if selected).
            //                  Judgment to maintain the buff from Judgment of Light (if selected).

            // Light of the Martyr a potent emergency heal as long as you have health to spare.
            if (WoW.CanCast("Light of the Martyr") && lowest <= 40 && WoW.PlayerHealthPercent >= 70)
            {
                WoW.CastSpell("Light of the Martyr");
                return;
            }

            // Flash of Light use as an emergency heal to save players facing death.
            if (WoW.CanCast("Flash of Light") && lowest <= 50 && !WoW.IsMoving)
            {
                WoW.CastSpell("Flash of Light");
                return;
            }

            // Holy Light use to heal moderate to high damage.
            if (WoW.CanCast("Holy Light") && lowest <= 90 && !WoW.IsMoving)
            {
                WoW.CastSpell("Holy Light");
                return;
            }

            if (WoW.CanCast("Tyr's Deliverance") && !WoW.IsMoving)
            {
                WoW.TargetNearestEnemy();
                if (WoW.HasTarget && WoW.TargetIsEnemy)
                {
                    WoW.CastSpell("Tyr's Deliverance");
                }
            }
        }
Example #3
0
        // Pulse Rotation
        public override void Pulse()
        {
            if (WoW.CanCast("Moonkin Form") && !WoW.PlayerHasBuff("Moonkin Form") && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.IsMounted && !WoW.PlayerHasBuff("Travel Form") && !WoW.PlayerHasBuff("Bear Form") && !WoW.PlayerHasBuff("Cat Form"))
            {
                WoW.CastSpell("Moonkin Form");
                return;
            }

            if (WoW.CanCast("Celestial Alignment") && WoW.HasBossTarget && WoW.IsInCombat || WoW.CanCast("Celestial Alignment") && WoW.IsInCombat && UseCooldowns)
            {
                WoW.CastSpell("Celestial Alignment");
                return;
            }

            if (combatRoutine.Type == RotationType.SingleTarget)  // Do Single Target Stuff here
            {
                Log.Write("Doing Singletarget", Color.Red);

                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("Solar Beam") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > 35)
                    {
                        WoW.CastSpell("Solar Beam");
                        return;
                    }

                    if (WoW.CanCast("Starsurge") && WoW.CurrentAstralPower > 70)
                    {
                        WoW.CastSpell("Starsurge");
                        return;
                    }

                    if (WoW.CanCast("Moonfire") && !WoW.TargetHasDebuff("Moonfire") || WoW.TargetDebuffTimeRemaining("Moonfire") < 300)
                    {
                        WoW.CastSpell("Moonfire");
                        return;
                    }

                    if (WoW.CanCast("Sunfire") && !WoW.TargetHasDebuff("Sunfire") && WoW.LastSpell != "Sunfire" || WoW.TargetDebuffTimeRemaining("Sunfire") < 300)
                    {
                        WoW.CastSpell("Sunfire");
                        return;
                    }

                    if (WoW.CanCast("Lunar Strike") && WoW.LastSpell != "Lunar Strike" && WoW.PlayerBuffTimeRemaining("Lunar Empowerment") > GCD && !WoW.IsMoving || WoW.CanCast("Lunar Strike") && WoW.PlayerBuffTimeRemaining("Lunar Empowerment") > GCD && !WoW.IsMoving && WoW.PlayerBuffStacks("Lunar Empowerment") >= 2)
                    {
                        WoW.CastSpell("Lunar Strike");
                        return;
                    }

                    if (WoW.CanCast("Solar Wrath") && WoW.PlayerBuffTimeRemaining("Solar Empowerment") > GCD && !WoW.IsMoving || WoW.CanCast("Solar Wrath") && WoW.CurrentAstralPower < 85 && !WoW.IsMoving || WoW.CanCast("Solar Wrath") && WoW.PlayerBuffTimeRemaining("Solar Empowerment") > GCD && !WoW.IsMoving && WoW.PlayerBuffStacks("Solar Empowerment") >= 2)
                    {
                        WoW.CastSpell("Solar Wrath");
                        return;
                    }

                    if (WoW.CanCast("Rejuv") && WoW.HealthPercent < 85 && !WoW.PlayerHasBuff("Rejuv") && !WoW.IsMounted && !WoW.PlayerHasBuff("Travel Form"))
                    {
                        WoW.CastSpell("Rejuv");
                        return;
                    }

                    if (WoW.CanCast("Regrowth") && WoW.HealthPercent < 50 && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Regrowth");
                        return;
                    }
                }
            }

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

            if (combatRoutine.Type == RotationType.AOE)
            {
                Log.Write("Doing AOE", Color.Red);

                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    if (WoW.CanCast("Starfall") && !WoW.PlayerHasBuff("Starfall") && WoW.CurrentAstralPower > 85)
                    {
                        //WoW.CastSpell("Starfall");
                        WoW.CastSpellOnMe("Starfall");
                        return;
                    }

                    if (WoW.CanCast("Starsurge") && WoW.CurrentAstralPower > 40)
                    {
                        WoW.CastSpell("Starsurge");
                        return;
                    }

                    if (WoW.CanCast("Moonfire") && !WoW.TargetHasDebuff("Moonfire") || WoW.TargetDebuffTimeRemaining("Moonfire") < 300)
                    {
                        WoW.CastSpell("Moonfire");
                        return;
                    }

                    if (WoW.CanCast("Sunfire") && !WoW.TargetHasDebuff("Sunfire") || WoW.TargetDebuffTimeRemaining("Sunfire") < 300)
                    {
                        WoW.CastSpell("Sunfire");
                        return;
                    }

                    if (WoW.CanCast("Lunar Strike") && WoW.LastSpell != "Lunar Strike" && WoW.PlayerBuffTimeRemaining("Lunar Empowerment") > GCD && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Lunar Strike");
                        return;
                    }

                    if (WoW.CanCast("Solar Wrath") && WoW.PlayerBuffTimeRemaining("Solar Empowerment") > GCD && !WoW.IsMoving || WoW.CanCast("Solar Wrath") && WoW.CurrentAstralPower < 85 && !WoW.IsMoving)
                    {
                        WoW.CastSpell("Solar Wrath");
                        return;
                    }

                    if (WoW.CanCast("Rejuv") && WoW.HealthPercent < 85 && !WoW.PlayerHasBuff("Rejuv") && WoW.IsInCombat)
                    {
                        WoW.CastSpell("Rejuv");
                        return;
                    }

                    if (WoW.CanCast("Regrowth") && WoW.HealthPercent < 50 && !WoW.IsMoving && WoW.IsInCombat)
                    {
                        WoW.CastSpell("Regrowth");
                        return;
                    }
                }
            }
        }