Esempio n. 1
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;
            }
        }
Esempio n. 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");
                }
            }
        }
Esempio n. 3
0
        public override void Pulse()
        {
            Log.Write("Mana: " + WoW.Mana, Color.Red);

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

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

            var lowest = WoW.PartyLowestHealthPercent;

            var currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent;

            var averageHp = WoW.PartyAverageHealthPercent;

            WoW.TargetMember(currentTargetId);

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

            if (WoW.IsInCombat && WoW.Mana <= 70 &&
                !WoW.IsSpellOnCooldown("Manatea"))
            {
                WoW.CastSpell("Manatea");
            }
        }
Esempio n. 4
0
        public override void Pulse()
        {
            if (WoW.IsMounted)
            {
                return;
            }

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

            if (!WoW.IsInCombat && WoW.CanCast("Angelic Feather") && WoW.IsMoving && !WoW.PlayerHasBuff("Angelic Feather"))
            {
                WoW.CastSpell("Angelic Feather");
                return;
            }

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

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

            if (lowest >= 80 && WoW.PartyMemberIsNeedingADispel == 0 && WoW.IsInCombat)
            {
                WoW.TargetNearestEnemy();

                //DPS Rotation
                if (WoW.HasTarget && WoW.TargetIsEnemy)
                {
                    //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;
                    }

                    if (WoW.PlayerHasBuff("Overloaded with Light") && WoW.CanCast("Light's Wrath"))
                    {
                        WoW.CastSpell("Light's Wrath");
                        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.CastSpell("Power Infusion"); // Off GCD no return needed
            }

            if (WoW.CanCast("Shadowfiend") && WoW.Talent(4) != 3 && WoW.IsInCombat && WoW.Mana < 90)
            {
                WoW.TargetNearestEnemy();
                WoW.CastSpell("Shadowfiend");
                return;
            }

            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 <= 20 && WoW.CanCast("Pain Suppression") && WoW.TankId == currentTargetId)
            {
                WoW.CastSpell("Pain Suppression");
                return;
            }

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

            if (WoW.CanCast("Penance") && lowest <= 60 && WoW.TankId == currentTargetId)
            {
                WoW.CastSpell("Penance");
                return;
            }

            if (WoW.CanCast("Shadow Mend") && (lowest < 80 || (WoW.TargetHasBuff("Attonement") && lowest < 99)))
            {
                WoW.CastSpell("Shadow Mend");
                return;
            }

            if (WoW.CanCast("Plea") && lowest < 99 && lowest >= 80)
            {
                WoW.CastSpell("Plea");
                return;
            }

            // Mitigate as much damage as possible and always keep PWS up on self
            if (WoW.PlayerBuffTimeRemaining("Power Word: Shield") < 400 && WoW.CanCast("Power Word: Shield"))
            {
                WoW.CastSpell("Power Word: Shield");
                return;
            }
        }
Esempio n. 5
0
        // Checks current Mana
        // Checks if currently in game
        // Allows Tank ID Selection
        public override void Pulse()
        {
            if (!WoW.InGame)
            {
                return;
            }

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

            // Checks if player is dead, mounted or casting and does nothing if true
            if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted)
            {
                return;
            }
            if (WoW.PlayerIsCasting)
            {
                return;
            }

            // Sets a variable for the player with the lowest HP
            var lowest = WoW.PartyLowestHealthPercent;

            // Sets a variable for our current target
            var currentTargetID = WoW.PartyMemberIdWithLowestHealthPercent;

            // Sets variable for the average party HP
            var averageHp = WoW.PartyAverageHealthPercent;

            // Sets our target to be the player with the lowest health percentage
            WoW.TargetMember(currentTargetID);

            // Checks if player has a target or if their target is at full health and if so it does nothing.
            if (currentTargetID == 0)
            {
                return;
            }
            if (lowest == 100)
            {
                return;
            }

            // DPS Rotation
            // Checks is cleave button is turned on.
            if (combatRoutine.Type == RotationType.Cleave)

            {
                // Cast Rising Sun Kick
                if (WoW.CanCast("RisingSunKick") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat)
                {
                    WoW.CastSpell("RisingSunKick");
                    return;
                }
                // Cast Blackout kick if you have 3 buff stacks
                if (WoW.CanCast("Blackout Kick") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat &&
                    WoW.PlayerBuffStacks("Blackout Buff") == 3)
                {
                    WoW.CastSpell("Blackout Kick");
                    return;
                }
                // Cast Tiger palm if you dont have 3 buff stacks
                if (WoW.CanCast("Tiger Palm") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat &&
                    WoW.PlayerBuffStacks("Blackout Buff") < 3)
                {
                    WoW.CastSpell("Tiger Palm");
                    return;
                }
            }

            //CoolDowns
            // If lowest HP party member has less than 85% HP then cast Thunder Focus Tea
            if (lowest <= 85 && !WoW.IsSpellOnCooldown("Thunder Focus Tea"))
            {
                WoW.CastSpell("Thunder Focus Tea");
            }
            // Checks if player has Thunder Focus Tea buff
            if (WoW.PlayerHasBuff("Thunder Focus Tea"))
            {
                // If Player has Thunder Focus tea Buff and Average party HP is 65% then cast Essence Font
                if (averageHp <= 65 &&
                    WoW.CanCast("Essence Font") &&
                    !WoW.IsSpellOnCooldown("Essence Font") &&
                    !WoW.PlayerHasBuff("Essence Font"))
                {
                    WoW.CastSpell("Essence Font");
                }

                // If Player has Thunder Focus tea Buff and Average party HP is 65% then cast Vivify
                if (averageHp <= 90 &&
                    WoW.CanCast("Vivify") &&
                    !WoW.IsSpellOnCooldown("Vivify"))
                {
                    WoW.CastSpell("Vivify");
                }
            }

            //Cast Mana Tea if mana is less than or equal to 70%
            if (WoW.IsInCombat && WoW.Mana <= 70 &&
                !WoW.IsSpellOnCooldown("Mana Tea"))
            {
                WoW.CastSpell("Mana Tea");
                return;
            }
            // If the average HP of party is below 65% cast Revival
            if (WoW.CanCast("Revival") &&
                averageHp <= 65 &&
                !WoW.IsSpellOnCooldown("Revival"))
            {
                WoW.CastSpell("Revival");
                return;
            }

            // If Tank HP is below 15% cast Life Cocoon on Tank
            if (WoW.TankHealth <= 25 &&
                WoW.TankId == currentTargetID &&
                WoW.CanCast("Life Cocoon") &&
                !WoW.IsSpellOnCooldown("Life Cocoon"))
            {
                WoW.CastSpell("Life Cocoon");
                return;
            }

            // If party hits 15% HP Cast life Cocoon
            if (WoW.CanCast("Life Cocoon") &&
                lowest <= 15 &&
                !WoW.IsSpellOnCooldown("Life Cocoon"))
            {
                WoW.CastSpell("Life Cocoon");
                return;
            }

            // Average Healing Priority
            // If the average Hp of the Party is 75% then cast Chi Ji
            if (averageHp < 80)
            {
                if (WoW.CanCast("InvokeChiJitheRedCrane") &&
                    !WoW.IsSpellOnCooldown("InvokeChiJitheRedCrane"))
                {
                    WoW.CastSpell("InvokeChiJitheRedCrane");
                    return;
                }

                // If the average Hp of the Party is 75% then cast Essence Font
                if (WoW.CanCast("Essence Font") &&
                    !WoW.IsSpellOnCooldown("Essence Font") &&
                    !WoW.PlayerHasBuff("Essence Font"))
                {
                    WoW.CastSpell("Essence Font");
                    return;
                }

                // If the average Hp of the Party is 75% then cast Vivify
                if (WoW.CanCast("Vivify"))
                {
                    WoW.CastSpell("Vivify");
                    return;
                }
            }

            // If Renewing Mist can be cast on player without it it will be casted.
            if (WoW.CanCast("Renewing Mist") && WoW.IsInCombat &&
                !WoW.TargetHasBuff("Renewing Mist") &&
                !WoW.PlayerHasBuff("Renewing Mist") &&
                !WoW.IsSpellOnCooldown("Renewing Mist"))
            {
                WoW.CastSpell("Renewing Mist");
                return;
            }

            // If above level 100 then cast Sheilun's Gift when not moving
            if (WoW.Level > 100)
            {
                if (WoW.CanCast("Sheiluns Gift") &&
                    lowest <= 75 && !WoW.IsMoving &&
                    WoW.PlayerSpellCharges("Sheiluns Gift") >= 5)
                {
                    WoW.CastSpell("Sheiluns Gift");
                    return;
                }
            }

            // Cast Enveloping Mist and does not cast it if it was the last spell cast.
            if (WoW.CanCast("Enveloping Mist") &&
                lowest <= 70 &&
                !WoW.IsMoving &&
                !WoW.TargetHasBuff("Enveloping Mist") &&
                WoW.LastSpell != ("Enveloping Mist"))
            {
                WoW.CastSpell("Enveloping Mist");
                return;
            }

            // Casts Vivfy on target with less than or 65% HP
            if (WoW.CanCast("Vivify") &&
                lowest <= 65)
            {
                WoW.CastSpell("Vivify");
                return;
            }

            // Casts Effuse on target with less than or 90% HP
            if (WoW.CanCast("Effuse") && lowest <= 90 &&
                !WoW.PlayerIsChanneling)
            {
                WoW.CastSpell("Effuse");
                return;
            }
            // Casts Chi Wave on target with less than or 65% HP
            if (WoW.CanCast("Chi Wave") && lowest <= 95 &&
                WoW.IsInCombat)
            {
                WoW.CastSpell("Chi Wave");
                return;
            }
        }