Ejemplo n.º 1
0
        public override void Pulse()
        {
            var lowest          = WoW.PartyLowestHealthPercent;
            int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent;

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

            var test      = WoW.TargetIsPlayer;
            var averageHp = WoW.PartyAverageHealthPercent;

            WoW.TargetMember(currentTargetId);


            /*-----------------------------Cooldowns-------------------------------------*/
            WoW.CastSpell("HealingTideTotem", WoW.CountAlliesUnderHealthPercentage(40) >= 5 && !WoW.PlayerHasBuff("Ascendence"));
            WoW.CastSpell("Ascendence", WoW.CountAlliesUnderHealthPercentage(40) >= 5 && WoW.IsSpellOnCooldown("HealingTideTotem"));
            WoW.CastSpell("AncestrialGuidance", WoW.CountAlliesUnderHealthPercentage(75) >= 3 && WoW.IsSpellOnCooldown("HealingTideTotem") && !WoW.PlayerHasBuff("Ascendence"));
            /*-----------------------------Cooldowns-------------------------------------*/

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

            WoW.CastSpell("Riptide", lowest < 99 && !WoW.TargetHasBuff("Riptide"));
            WoW.CastSpell("HealingStreamTotem", lowest < 99);
            WoW.CastSpell("HealingSurge", lowest < 35);
            WoW.CastSpell("ChainHeal", WoW.CountAlliesUnderHealthPercentage(85) >= 3);
            WoW.CastSpell("HealingWave", lowest < 90);
        }
Ejemplo n.º 2
0
        public override void Pulse()
        {
            TimerReset();
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here

            //if (WoW.HasTarget && WoW.TargetIsEnemy) //First things go first
            //{

            /*	if (WoW.TargetIsCasting && WoW.IsSpellInRange("Wind Shear")) //interupt every spell - need to add kickable spells
             *                          {
             *                                  WoW.CastSpell("Wind Shear");
             *                                  return;
             *                          }*/
            {
                if (WoW.IsMoving && WoW.PartyLowestHealthPercent <= 70 && WoW.CanCast("Spiritwalker's Grace") && !WoW.PlayerHasBuff("Spiritwalker's Grace"))
                {
                    WoW.CastSpell("Spiritwalker's Grace");
                    return;
                }
            }
            if (WoW.CanCast("Riptide"))
            {
                WoW.CastSpell("Riptide");
                return;
            }
            if (WoW.CanCast("Cloudburst Totem"))
            {
                WoW.CastSpell("Cloudburst Totem");
                return;
            }
            if (WoW.CanCast("Healing Stream Totem"))
            {
                WoW.CastSpell("Healing Stream Totem");
                return;
            }
            if (WoW.CanCast("Healing Tide Totem") && WoW.CountAlliesUnderHealthPercentage(60) >= 6)
            {
                WoW.CastSpell("Healing Tide Totem");
                return;
            }

            if (WoW.CountAlliesUnderHealthPercentage(80) >= 3 && WoW.CanCast("Chain Heal"))
            {
                WoW.TargetMember(WoW.PartyMemberIdWithLowestHealthPercent);
                WoW.CastSpell("Chain Heal");
                return;
            }
            if (WoW.CanCast("Healing Surge") && WoW.PlayerHasBuff("Tidal Waves") && WoW.PartyLowestHealthPercent <= 60)
            {
                WoW.TargetMember(WoW.PartyMemberIdWithLowestHealthPercent);
                WoW.CastSpell("Healing Surge");
                return;
            }
            if (WoW.CanCast("Healing Wave") && WoW.PartyLowestHealthPercent <= 80)
            {
                WoW.TargetMember(WoW.PartyMemberIdWithLowestHealthPercent);
                WoW.CastSpell("Healing Wave");
                return;
            }
            // }
        }
Ejemplo n.º 3
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;
            }
        }