Ejemplo n.º 1
0
        public override void Pulse()
        {
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LSHIFT) < 0)
            {
                return;
            }
            if (!WoW.HasTarget || !WoW.TargetIsEnemy)
            {
                WoW.TargetNearestEnemy();
            }

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

            else if (WoW.IsSpellInRange("Throw Glaive"))
            {
                WoW.CastSpell("Throw Glaive", !WoW.IsSpellOnCooldown("Throw Glaive"));
            }
        }
Ejemplo n.º 2
0
        public override void Pulse()
        {
            if (WoW.IsInCombat && interruptwatch.ElapsedMilliseconds == 0)
            {
                Log.Write("Starting interrupt timer", Color.Blue);
                interruptwatch.Start();
            }

            if (UseCooldowns)
            {
            }

            if (combatRoutine.Type != RotationType.SingleTarget && combatRoutine.Type != RotationType.AOE)
            {
                return;
            }

            if (WoW.IsInCombat && (!WoW.TargetIsEnemy || WoW.TargetHealthPercent == 0))
            {
                WoW.TargetNearestEnemy();
            }

            if (!WoW.HasTarget || !WoW.TargetIsEnemy)
            {
                return;
            }

            if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis"))
            {
                Log.Write("Metamorphasis");
                Log.Write("Health low < 70% using CDs...", Color.Red);
                WoW.CastSpell("Metamorphasis"); // Off the GCD no return needed
            }

            if (WoW.PlayerHasBuff("Metamorphasis") && WoW.CanCast("Sever"))
            {
                WoW.CastSpell("Sever");
                return;
            }

            if (WoW.PlayerHasBuff("Metamorphasis") && WoW.PlayerHasBuff("Soul Fragments") && (WoW.PlayerBuffStacks("Soul Fragments") >= 5) && WoW.Pain >= 50)
            {
                WoW.CastSpell("Soul Cleave");
                return;
            }

            if (!WoW.IsSpellInRange("Soul Carver") && !WoW.IsSpellOnCooldown("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && WoW.CanCast("Throw Glaive"))
            {
                WoW.CastSpell("Throw Glaive");
                return;
            }

            if (!WoW.IsSpellInRange("Soul Carver")) // If we are out of melee range return
            {
                return;
            }

            if (WoW.TargetIsCastingAndSpellIsInterruptible && interruptwatch.ElapsedMilliseconds > 1200 && WoW.TargetPercentCast > 70)
            {
                if (!WoW.IsSpellOnCooldown("Sigil of Silence"))
                {
                    Log.Write("Interrupting spell");
                    WoW.CastSpell("Sigil of Silence");
                    interruptwatch.Reset();
                    interruptwatch.Start();
                    return;
                }

                if (!WoW.IsSpellOnCooldown("Arcane Torrent"))
                {
                    Log.Write("Interrupting spell");
                    WoW.CastSpell("Arcane Torrent");
                    interruptwatch.Reset();
                    interruptwatch.Start();
                    return;
                }

                if (!WoW.IsSpellOnCooldown("Consume Magic"))
                {
                    Log.Write("Interrupting spell");
                    WoW.CastSpell("Consume Magic");
                    interruptwatch.Reset();
                    interruptwatch.Start();
                    return;
                }
            }

            if (!WoW.TargetHasDebuff("Fiery Demise") && !WoW.IsSpellOnCooldown("Fiery Brand"))
            {
                WoW.CastSpell("Fiery Brand");
            }

            if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && WoW.Pain > 20 && !WoW.PlayerHasBuff("Magnum Opus"))
            {
                WoW.CastSpell("Demon Spikes");
            }

            if (WoW.CanCast("Soul Carver"))
            {
                WoW.CastSpell("Soul Carver");
            }

            if (WoW.CanCast("Fel Devastation") && WoW.Pain >= 30)
            {
                WoW.CastSpell("Fel Devastation");
            }

            if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 50)
            {
                WoW.CastSpell("Soul Cleave");
                return;
            }

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

            if (WoW.CanCast("Sigil of Flame") && !WoW.TargetHasDebuff("Sigil of Flame"))
            {
                WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigil's" talent
                return;
            }

            if (WoW.CanCast("Shear")) // Pain Generator
            {
                WoW.CastSpell("Shear");
            }
        }
Ejemplo n.º 3
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.º 4
0
        public override void Pulse()
        {
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LSHIFT) < 0)
            {
                return;
            }

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

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

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

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

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

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

                    if (WoW.CanCast("Avatar") && (WoW.SpellCooldownTimeRemaining("Battle Cry") < 1200 || WoW.SpellCooldownTimeRemaining("Battle Cry") > 2200))
                    {
                        WoW.CastSpell("Avatar");
                        return;
                    }
                }
                else
                {
                    BattleCryRotationSequence = 0;
                }
                if (WoW.CanCast("Rampage") && WoW.IsSpellInRange("Rampage") && ((!WoW.PlayerHasBuff("Enrage") && WoW.Rage >= 85) || WoW.Rage >= 100))
                {
                    WoW.CastSpell("Rampage");
                    return;
                }
                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst") && !WoW.PlayerHasBuff("Enrage"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }
                if (WoW.CanCast("Odyns Fury") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Battle Cry"))
                {
                    WoW.CastSpell("Odyns Fury");
                    return;
                }
                if (WoW.CanCast("Execute") && WoW.IsSpellInRange("Execute") && WoW.PlayerHasBuff("Enrage") && WoW.TargetHealthPercent <= 20)
                {
                    WoW.CastSpell("Execute");
                    return;
                }
                if (WoW.CanCast("Bloodthirst") && WoW.IsSpellInRange("Bloodthirst"))
                {
                    WoW.CastSpell("Bloodthirst");
                    return;
                }
                if (WoW.CanCast("Raging Blow") && WoW.IsSpellInRange("Raging Blow"))
                {
                    WoW.CastSpell("Raging Blow");
                    return;
                }
                if (WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball"))
                {
                    WoW.CastSpell("Whirlwind");
                    return;
                }
                WoW.CastSpell("Furious Slash", WoW.CanCast("Furious Slash") && WoW.IsSpellInRange("Furious Slash"));
            }
        }
Ejemplo n.º 5
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;
            }
        }
        public override void Pulse()
        {
            if (WoW.HealthPercent == 0 || WoW.IsMounted)
            {
                return;
            }
            if (WoW.PlayerIsCasting)
            {
                return;
            }

            var TargetHp = WoW.PartyLowestHealthPercent;

            int TargetId = WoW.PartyMemberIdWithLowestHealthPercent;

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

            if (TargetId == 0)
            {
                return;
            }
            if (TargetHp == 100)
            {
                return;
            }

            var AverageHp = WoW.PartyAverageHealthPercent;

            //Damage when CleaveON toggle activated or when nothing to do (averageHp > 97)
            if (WoW.CleaveOn == true &&
                !WoW.IsMoving)
            {
                WoW.TargetNearestEnemy();
                if (WoW.CanCast("Holy Fire"))
                {
                    WoW.CastSpell("Holy Fire");
                }

                WoW.CastSpell("Smite");
                return;
            }

            //AoE Healing Cooldowns
            if (WoW.CanCast("Divine Hymn") &&
                AverageHp < 40)
            {
                WoW.CastSpell("Divine Hymn");
            }

            if (WoW.CanCast("Apotheosis") &&
                AverageHp < 60)
            {
                WoW.CastSpell("Apotheosis");
            }

            //Light of Tuure if not already on the target and target low
            if (!WoW.TargetHasBuff("Light of Tuure") &&
                WoW.CanCast("Light of Tuure") &&
                TargetHp <= 50)
            {
                WoW.CastSpell("Light of Tuure");
            }

            // Target the lowest health party member for all abilities below
            WoW.TargetMember(TargetId);

            if (WoW.CanCast("Prayer of Healing") &&
                AverageHp < 85 &&
                TargetHp > 70 &&
                !WoW.IsMoving)
            {
                WoW.CastSpell("Prayer of Healing");
                return;
            }

            // Guardian Spirit on Tank only!
            if (WoW.CanCast("Guardian Spirit") &&
                WoW.TankHealth <= 20)
            {
                WoW.TargetMember(WoW.TankId);
                WoW.CastSpell("Guardian Spirit");

                return;
            }

            //Serenity as a quick boost
            if (WoW.CanCast("Holy Word Serenity") &&
                TargetHp <= 50)
            {
                WoW.CastSpell("Holy Word Serenity");
                return;
            }

            // Flash Heal use on high damage or on Surge of Light proc
            if ((WoW.CanCast("Flash Heal") && TargetHp <= 51 && !WoW.IsMoving) ||
                (WoW.CanCast("Flash Heal") && TargetHp <= 81 && WoW.PlayerHasBuff("Surge of Light")))
            {
                WoW.CastSpell("Flash Heal");
                return;
            }

            // Heal use to heal moderate to high damage.
            if (WoW.CanCast("Heal") &&
                TargetHp <= 85 &&
                !WoW.IsMoving)
            {
                WoW.CastSpell("Heal");
                return;
            }

            //Renew if no one needs proper healing and we have the mana to spare
            if (WoW.CanCast("Renew") &&
                !WoW.TargetHasBuff("Renew") &&
                TargetHp <= 95 &&
                WoW.Mana >= 80 &&
                AverageHp >= 80)
            {
                WoW.CastSpell("Renew");
                return;
            }

            //Prayer of Medning (almost) on cooldown
            if (WoW.CanCast("Prayer of Mending") &&
                !WoW.IsSpellOnCooldown("Prayer of Mending") &&
                !WoW.TargetHasBuff("Prayer of Mending") &&
                TargetHp < 95)
            {
                WoW.CastSpell("Prayer of Mending");
                return;
            }
        }
Ejemplo n.º 7
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");
                }
            }
        }
Ejemplo n.º 8
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;
            }
        }
Ejemplo n.º 9
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.IsSpellInRange("Bloodthirst"))
            {
                WoW.CastSpell("BattleCry", !WoW.PlayerHasBuff("BattleCryBuff") && WoW.CooldownsOn == true);
                WoW.CastSpell("Avatar", WoW.Talent(3) == 3 && WoW.PlayerHasBuff("BattleCryBuff"));
                WoW.CastSpell("OdynsFury", WoW.PlayerHasBuff("BattleCryBuff") && WoW.PlayerHasBuff("Frothing"));
                WoW.CastSpell("Bloodthirst", WoW.PlayerHasBuff("Enraged Regeneration"));
                WoW.CastSpell("Furious Slash", WoW.IsSpellOnCooldown("Bloodthirst") && WoW.PlayerHasBuff("Enraged Regeneration"));
                WoW.CastSpell("Raging Blow", WoW.IsSpellOnCooldown("Bloodthirst") && WoW.IsSpellOnCooldown("Furious Slash") && WoW.PlayerHasBuff("Enraged Regeneration"));
            }

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

            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && !WoW.PlayerHasBuff("BattleCryBuff"))             // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst"))
                {
                    WoW.CastSpell("Rampage", WoW.Rage >= 100);
                    WoW.CastSpell("Bloodthirst", WoW.Rage < 100 && !WoW.PlayerHasBuff("Enrage") || WoW.IsSpellOnCooldown("Raging Blow") && WoW.Rage < 100);
                    WoW.CastSpell("Raging Blow", WoW.IsSpellOnCooldown("Bloodthirst") && WoW.Rage < 100);
                    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);
                }
            }

            if (combatRoutine.Type == RotationType.SingleTarget && WoW.TargetHealthPercent >= 21 && WoW.PlayerHasBuff("BattleCryBuff"))             // Do Single Target Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst"))
                {
                    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)             // Do Single Target Execute Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst"))
                {
                    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)             // Do Single Target Execute Stuff here
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst"))
                {
                    WoW.CastSpell("Execute", WoW.PlayerHasBuff("SenseDeath") || WoW.Rage >= 25);
                    WoW.CastSpell("Bloodthirst", WoW.Rage < 25);
                    WoW.CastSpell("Raging Blow", WoW.Rage < 25 && WoW.IsSpellOnCooldown("Bloodthirst"));
                }
            }

            if (combatRoutine.Type == RotationType.AOE)
            {
                if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst"))
                {
                    WoW.CastSpell("Whirlwind", !WoW.PlayerHasBuff("Meat-Cleaver") || WoW.CanCast("Whirlwind") && WoW.PlayerHasBuff("Wrecking Ball") && WoW.Talent(3) == 1);
                    WoW.CastSpell("Rampage", WoW.Rage >= 100 && WoW.PlayerHasBuff("Meat-Cleaver"));
                    WoW.CastSpell("Bloodthirst", WoW.Rage < 100 && WoW.CountEnemyNPCsInRange < 8 && WoW.PlayerHasBuff("Meat-Cleaver") && !WoW.PlayerHasBuff("Enrage"));
                    WoW.CastSpell("Raging Blow", WoW.PlayerHasBuff("Enrage") && WoW.CountEnemyNPCsInRange < 4);
                    //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
            }
        }