public override void Pulse()
        {
            if (WoW.PlayerHasBuff("Mount"))
            {
                return;
            }

            if (WoW.IsInCombat && WoW.HealthPercent < 35 && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand"))
            {
                WoW.CastSpell("Last Stand");
                return;
            }
            if (WoW.IsInCombat && WoW.HealthPercent < 20 && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall"))
            {
                WoW.CastSpell("Shield Wall");
                return;
            }

            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0)
            {
                if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("HeroicLeap"))
                {
                    WoW.CastSpell("HeroicLeap");
                    return;
                }
                return;
            }
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_1) < 0)
            {
                if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Thunder Clap"))
                {
                    WoW.CastSpell("Thunder Clap");
                    return;
                }
                return;
            }
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LMENU) < 0)
            {
                if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Shockwave"))
                {
                    WoW.CastSpell("Shockwave");
                    return;
                }
                return;
            }

            if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.AOE) // Do Single Target Stuff here
            {
                if (CombatWatch.IsRunning && !WoW.IsInCombat)
                {
                    CombatWatch.Reset();
                }
                if (!CombatWatch.IsRunning && WoW.IsInCombat)
                {
                    CombatWatch.Start();
                }

                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling)
                {
                    if (!WoW.TargetHasDebuff("ShockWavestun") && WoW.IsInCombat)
                    {
                        if (WoW.CanCast("Shield Block") && WoW.Rage >= 15 && !WoW.PlayerIsChanneling && WoW.HealthPercent < 100 &&
                            (WoW.PlayerSpellCharges("Shield Block") == 2 ||
                             (WoW.PlayerSpellCharges("Shield Block") >= 1 && WoW.HealthPercent <= 90 && WoW.PlayerBuffTimeRemaining("ShieldBlockAura") <= 2)))
                        {
                            WoW.CastSpell("Shield Block");
                            return;
                        }

                        if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap") && CombatWatch.ElapsedMilliseconds > 1000 &&
                            CombatWatch.ElapsedMilliseconds < 5000)
                        {
                            WoW.CastSpell("Thunder Clap");
                            return;
                        }

                        /* ------------------ IGNORE PAIN MANAGEMENT----------------------*/

                        if (WoW.CanCast("Ignore Pain") && WoW.PlayerHasBuff("Vengeance: Ignore Pain") && WoW.Rage >= 39)
                        {
                            WoW.CastSpell("Ignore Pain");
                            return;
                        }

                        if (WoW.CanCast("Ignore Pain") && WoW.Rage > 30 && WoW.HealthPercent < 100 && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) &&
                            !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.PlayerHasBuff("Vengeance: Focused Rage"))
                        {
                            WoW.CastSpell("Ignore Pain");
                            return;
                        }

                        /* ------------------ END IGNORE PAIN MANAGEMENT-------------------*/

                        if (WoW.TargetIsCasting && WoW.CanCast("SpellReflect") && !WoW.IsSpellOnCooldown("SpellReflect"))
                        {
                            WoW.CastSpell("SpellReflect");
                        }
                        if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry"))
                        {
                            WoW.CastSpell("Battle Cry");
                            return;
                        }
                        if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Shield Slam") && !WoW.IsSpellOnCooldown("Shield Slam") && WoW.PlayerHasBuff("Legendary"))
                        {
                            WoW.CastSpell("Shield Slam");
                            return;
                        }
                        if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap") && WoW.PlayerHasBuff("Legendary"))
                        {
                            WoW.CastSpell("Thunder Clap");
                            return;
                        }
                        if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && WoW.IsSpellOverlayed("Revenge") &&
                            !WoW.PlayerHasBuff("Vengeance: Ignore Pain"))
                        {
                            WoW.CastSpell("Revenge");
                            return;
                        }
                        if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && WoW.PlayerHasBuff("Vengeance: Focused Rage") && WoW.Rage > 59)
                        {
                            WoW.CastSpell("Revenge");
                            return;
                        }
                        if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && !WoW.PlayerHasBuff("Ignore Pain") && WoW.Rage > 35 &&
                            WoW.HealthPercent < 100)
                        {
                            WoW.CastSpell("Revenge");
                            return;
                        }
                        if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && WoW.PlayerHasBuff("Ignore Pain") &&
                            WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 3 && WoW.Rage > 40 && WoW.HealthPercent < 100)
                        {
                            WoW.CastSpell("Revenge");
                            return;
                        }
                        if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && !WoW.PlayerHasBuff("Vengeance: Focused Rage") &&
                            !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && WoW.Rage > 69)
                        {
                            WoW.CastSpell("Revenge");
                            return;
                        }
                        if (WoW.CanCast("Victory Rush") && !WoW.IsSpellOnCooldown("Victory Rush") && WoW.IsSpellInRange("Shield Slam") && WoW.HealthPercent < 90 &&
                            WoW.PlayerHasBuff("VictoryRush"))
                        {
                            WoW.CastSpell("Victory Rush");
                            return;
                        }
                        if (WoW.IsSpellInRange("Devastate") && WoW.CanCast("Devastate"))
                        {
                            WoW.CastSpell("Devastate");
                            return;
                        }
                    }
                    if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun"))
                    {
                        WoW.CastSpell("Neltharion's Fury");
                        return;
                    }

                    /* actions.prot=spell_reflection,if=incoming_damage_2500ms>health.max*0.20
                     * actions.prot+=/demoralizing_shout,if=incoming_damage_2500ms>health.max*0.20&!talent.booming_voice.enabled
                     * actions.prot+=/last_stand,if=incoming_damage_2500ms>health.max*0.40
                     * actions.prot+=/shield_wall,if=incoming_damage_2500ms>health.max*0.40&!cooldown.last_stand.remains=0
                     * actions.prot+=/potion,name=unbending_potion,if=(incoming_damage_2500ms>health.max*0.15&!buff.potion.up)|target.time_to_die<=25
                     * actions.prot+=/battle_cry,if=cooldown.shield_slam.remains=0
                     * actions.prot+=/demoralizing_shout,if=talent.booming_voice.enabled&buff.battle_cry.up
                     * actions.prot+=/ravager,if=talent.ravager.enabled&buff.battle_cry.up
                     * actions.prot+=/neltharions_fury,if=!buff.shield_block.up&cooldown.shield_block.remains>3&((cooldown.shield_slam.remains>3&talent.heavy_repercussions.enabled)|(!talent.heavy_repercussions.enabled))
                     * actions.prot+=/shield_block,if=!buff.neltharions_fury.up&((cooldown.shield_slam.remains=0&talent.heavy_repercussions.enabled)|action.shield_block.charges=2|!talent.heavy_repercussions.enabled)
                     * actions.prot+=/ignore_pain,if=(rage>=60&!talent.vengeance.enabled)|(buff.vengeance_ignore_pain.up&rage>=39)|(talent.vengeance.enabled&!buff.vengeance_ignore_pain.up&!buff.vengeance_revenge.up&rage<30&!buff.revenge.react)
                     * actions.prot+=/shield_slam,if=(!(cooldown.shield_block.remains<=gcd.max*2&!buff.shield_block.up)&talent.heavy_repercussions.enabled)|!talent.heavy_repercussions.enabled
                     * actions.prot+=/thunder_clap
                     * actions.prot+=/revenge,if=(talent.vengeance.enabled&buff.revenge.react&!buff.vengeance_ignore_pain.up)|(buff.vengeance_revenge.up&rage>=59)|(talent.vengeance.enabled&!buff.vengeance_ignore_pain.up&!buff.vengeance_revenge.up&rage>=69)|(!talent.vengeance.enabled&buff.revenge.react)
                     * actions.prot+=/devastate */
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                // Do AOE Stuff here
            }
        }
Ejemplo n.º 2
0
        public override void Pulse()
        {
            if (defcooldowns && WoW.IsInCombat)
            {
                if (WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "LS HP Percent") && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand"))
                {
                    WoW.CastSpell("Last Stand");
                    return;
                }
                if (WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "SW HP Percent") && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall"))
                {
                    WoW.CastSpell("Shield Wall");
                    return;
                }
            }

            if (Pots && WoW.IsInCombat && WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "HS HP Percent"))
            {
                if (WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.ItemCount("HealthPotion") == 0)
                {
                    WoW.CastSpell("Healthstone");
                    return;
                }

                if (WoW.ItemCount("HealthPotion") >= 1 && !WoW.ItemOnCooldown("HealthPotion"))
                {
                    WoW.CastSpell("HealthPotion");
                    return;
                }
            }


            if (!Indomitable && WoW.IsInCombat && WoW.IsSpellInRange("Shield Slam"))
            {
                swingwatch.Start();
            }

            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Shield Slam"))
                {
                    if (BattleC && !WoW.IsSpellOnCooldown("Battle Cry"))
                    {
                        WoW.CastSpell("Battle Cry");
                        return;
                    }
                    if (AngerM && !WoW.IsSpellOnCooldown("Demoralizing Shout") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0))
                    {
                        WoW.CastSpell("Demoralizing Shout");
                    }
                    if (generalInterrupts)
                    {
                        if (WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible)
                        {
                            if (!WoW.IsSpellOnCooldown("Pummel") && WoW.IsSpellInRange("Shield Slam") && WoW.TargetPercentCast >= 50)
                            {
                                WoW.CastSpell("Pummel");
                                return;
                            }
                            if (spellref && !WoW.IsSpellOnCooldown("SpellReflect") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 80)
                            {
                                WoW.CastSpell("SpellReflect");
                                return;
                            }
                        }
                    }

                    if (mythicplusinterrupts)
                    {
                        if (WoW.CanCast("Pummel") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible)
                        {
//int spell list for all important spells in M+
                            if (WoW.TargetCastingSpellID == 200248
//Court Of Stars Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 225573 || WoW.TargetCastingSpellID == 208165 || WoW.TargetCastingSpellID == 211401 || WoW.TargetCastingSpellID == 21147 ||
                                WoW.TargetCastingSpellID == 211299 || WoW.TargetCastingSpellID == 2251 || WoW.TargetCastingSpellID == 209413 || WoW.TargetCastingSpellID == 209404 ||
                                WoW.TargetCastingSpellID == 215204 || WoW.TargetCastingSpellID == 210261
//Darkheart Thicket Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 200658 || WoW.TargetCastingSpellID == 200631 || WoW.TargetCastingSpellID == 204246 || WoW.TargetCastingSpellID == 2014
//Eye of Azshara Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 19687 || WoW.TargetCastingSpellID == 218532 || WoW.TargetCastingSpellID == 195129 || WoW.TargetCastingSpellID == 195046 ||
                                WoW.TargetCastingSpellID == 197502 || WoW.TargetCastingSpellID == 196027 || WoW.TargetCastingSpellID == 196175 || WoW.TargetCastingSpellID == 192003 ||
                                WoW.TargetCastingSpellID == 191848
//Halls of Valor Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 198595 || WoW.TargetCastingSpellID == 198962 || WoW.TargetCastingSpellID == 198931 || WoW.TargetCastingSpellID == 192563 ||
                                WoW.TargetCastingSpellID == 192288 || WoW.TargetCastingSpellID == 199726
//Maw of Souls Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 198495 || WoW.TargetCastingSpellID == 195293 || WoW.TargetCastingSpellID == 199589 || WoW.TargetCastingSpellID == 194266 ||
                                WoW.TargetCastingSpellID == 198405 || WoW.TargetCastingSpellID == 199514 || WoW.TargetCastingSpellID == 194657
//Neltharions Lair Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 193585 || WoW.TargetCastingSpellID == 202181
//The Arcway Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 226269 || WoW.TargetCastingSpellID == 211007 || WoW.TargetCastingSpellID == 211757 || WoW.TargetCastingSpellID == 226285 ||
                                WoW.TargetCastingSpellID == 226206 || WoW.TargetCastingSpellID == 211115 || WoW.TargetCastingSpellID == 196392
// Advisor Vandros (Interrupt manually) Spell,203176,Accelerating Blast
                                || WoW.TargetCastingSpellID == 203957
//Vault of the Wardens Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 193069 || WoW.TargetCastingSpellID == 191823 || WoW.TargetCastingSpellID == 202661 || WoW.TargetCastingSpellID == 201488 ||
                                WoW.TargetCastingSpellID == 195332
//Raid Interrupts
                                || WoW.TargetCastingSpellID == 209485 || WoW.TargetCastingSpellID == 209410 || WoW.TargetCastingSpellID == 211470 || WoW.TargetCastingSpellID == 225100 ||
                                WoW.TargetCastingSpellID == 207980 || WoW.TargetCastingSpellID == 196870 || WoW.TargetCastingSpellID == 195284 || WoW.TargetCastingSpellID == 192005 ||
                                WoW.TargetCastingSpellID == 228255 || WoW.TargetCastingSpellID == 228239 || WoW.TargetCastingSpellID == 227917 || WoW.TargetCastingSpellID == 228625 ||
                                WoW.TargetCastingSpellID == 228606 || WoW.TargetCastingSpellID == 229714 || WoW.TargetCastingSpellID == 227592 || WoW.TargetCastingSpellID == 229083 ||
                                WoW.TargetCastingSpellID == 228025 || WoW.TargetCastingSpellID == 228019 || WoW.TargetCastingSpellID == 227987 || WoW.TargetCastingSpellID == 227420 ||
                                WoW.TargetCastingSpellID == 200905)

                            {
                                if (!WoW.IsSpellOnCooldown("Pummel") && WoW.TargetPercentCast >= 40)
                                {
                                    WoW.CastSpell("Pummel");
                                    return;
                                }
                                if (spellref && !WoW.IsSpellOnCooldown("SpellReflect") && WoW.TargetPercentCast >= 80)
                                {
                                    WoW.CastSpell("SpellReflect");
                                    return;
                                }
                            }
                        }
                    }

                    if (WoW.CanCast("Shield Block") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "SB HP Percent") && WoW.Rage >= 15 &&
                        !WoW.IsSpellOnCooldown("Shield Block") && !WoW.PlayerHasBuff("Shield Block"))
                    {
                        WoW.CastSpell("Shield Block");
                        return;
                    }

                    if (WoW.CanCast("Shield Block") && WoW.Rage >= 15 && WoW.PlayerBuffTimeRemaining("Shield Block") <= 2)
                    {
                        WoW.CastSpell("Shield Block");
                        return;
                    }


                    // IP Control
                    if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 60) && !WoW.PlayerHasBuff("Vengeance Ignore Pain"))
                    {
                        WoW.CastSpell("Ignore Pain");
                        return;
                    }
                    if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 39) && WoW.PlayerHasBuff("Vengeance Ignore Pain"))
                    {
                        WoW.CastSpell("Ignore Pain");
                    }
                    if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 13) && WoW.PlayerHasBuff("Vengeance Ignore Pain") && WoW.IsSpellOverlayed("Revenge"))
                    {
                        WoW.CastSpell("Ignore Pain");
                    }
                    // Revenge Control
                    if (Indomitable)
                    {
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                        }
                        if (AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30)
                        {
                            WoW.CastSpell("Revenge");
                        }
                        if (AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                        }
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                        }
                        if (WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap"))
                        {
                            WoW.CastSpell("Thunder Clap");
                            return;
                        }
                    }

                    if (!Indomitable && swingwatch.ElapsedMilliseconds > AttackspeedMS)
                    {
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30)
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 19 && !WoW.IsSpellOnCooldown("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge"))
                        {
                            WoW.CastSpell("Revenge");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                        if (WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap"))
                        {
                            WoW.CastSpell("Thunder Clap");
                            swingwatch.Reset();
                            swingwatch.Start();
                            return;
                        }
                    }

                    //Rotational shiz

                    if (!Indomitable && (!WoW.IsSpellOnCooldown("Shield Slam") || WoW.IsSpellOverlayed("Shield Slam")) && !AngerM && WoW.PlayerHasBuff("Shield Block") &&
                        WoW.SpellCooldownTimeRemaining("Shield Block") > 2)
                    {
                        WoW.CastSpell("Shield Slam");
                        return;
                    }


                    if ((AngerM || Indomitable) && (!WoW.IsSpellOnCooldown("Shield Slam") || WoW.IsSpellOverlayed("Shield Slam")))
                    {
                        WoW.CastSpell("Shield Slam");
                    }
                    //will cast SS when proc's
                    if (WoW.CanCast("Shield Slam") && WoW.IsSpellOverlayed("Shield Slam"))
                    {
                        WoW.CastSpell("Shield Slam");
                        return;
                    }


                    if (Indomitable && WoW.CanCast("Devastate") && WoW.IsSpellOnCooldown("Shield Slam") && WoW.IsSpellOnCooldown("Thunder Clap"))
                    {
                        WoW.CastSpell("Devastate");
                        return;
                    }


                    if (ImpendingVic && WoW.Rage >= 10 && !WoW.IsSpellOnCooldown("Impending Victory") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "IV HP Percent"))
                    {
                        WoW.CastSpell("Impending Victory");
                        return;
                    }
                    if (!ImpendingVic && WoW.IsSpellOverlayed("Victory Rush") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "IV HP Percent"))
                    {
                        WoW.CastSpell("Victory Rush");
                        return;
                    }
                }
                //Artifact / Shockwave Combo.
                if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun") && WoW.IsSpellOnCooldown("Neltharion's Fury"))
                {
                    WoW.CastSpell("Neltharion's Fury");
                    return;
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                // Do AOE Stuff here
            }
        }
Ejemplo n.º 3
0
        public override void Pulse()
        {
            //Talent Checker
            string currentTalents = WoW.Talent(1) + "" + WoW.Talent(2) + "" + WoW.Talent(3) + "" + WoW.Talent(4) + "" + WoW.Talent(5) + "" + WoW.Talent(6) + "" + WoW.Talent(7);

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


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

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

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

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

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

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


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

            if (combatRoutine.Type == RotationType.AOE)
            {
                // AOE stuff here
            }
            if (combatRoutine.Type == RotationType.Cleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
        public override void Pulse()
        {
            if (WoW.PlayerHasBuff("Mount"))
            {
                return;
            }

            if (WoW.IsInCombat && WoW.HealthPercent < 35 && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand"))
            {
                WoW.CastSpell("Last Stand");
                return;
            }
            if (WoW.IsInCombat && WoW.HealthPercent < 20 && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall"))
            {
                WoW.CastSpell("Shield Wall");
                return;
            }

            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0)
            {
                if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("HeroicLeap"))
                {
                    WoW.CastSpell("HeroicLeap");
                    return;
                }
                return;
            }
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_1) < 0)
            {
                if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Thunder Clap"))
                {
                    WoW.CastSpell("Thunder Clap");
                    return;
                }
                return;
            }
            if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LMENU) < 0)
            {
                if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Shockwave"))
                {
                    WoW.CastSpell("Shockwave");
                    return;
                }
                return;
            }

            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                if (CombatWatch.IsRunning && !WoW.IsInCombat)
                {
                    CombatWatch.Reset();
                }
                if (!CombatWatch.IsRunning && WoW.IsInCombat)
                {
                    CombatWatch.Start();
                }

                if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling)
                {
                    if (!WoW.TargetHasDebuff("ShockWavestun") && WoW.IsInCombat)

                    {
                        if (WoW.CanCast("Shield Block") && WoW.Rage >= 10 && !WoW.PlayerIsChanneling && WoW.HealthPercent < 100 &&
                            (WoW.PlayerSpellCharges("Shield Block") == 2 ||
                             (WoW.PlayerSpellCharges("Shield Block") >= 1 && WoW.HealthPercent <= 90 && WoW.PlayerBuffTimeRemaining("ShieldBlockAura") <= 2)))
                        {
                            WoW.CastSpell("Shield Block");
                            return;
                        }

                        if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap") && CombatWatch.ElapsedMilliseconds > 1000 &&
                            CombatWatch.ElapsedMilliseconds < 5000)
                        {
                            WoW.CastSpell("Thunder Clap");
                            return;
                        }

                        /* ------------------ IGNORE PAIN MANAGEMENT----------------------*/

                        if (WoW.CanCast("Ignore Pain") && WoW.PlayerHasBuff("Vengeance: Ignore Pain") && WoW.PlayerHasBuff("Ultimatum") && WoW.Rage >= 18)
                        {
                            WoW.CastSpell("Ignore Pain");
                            return;
                        }

                        if (WoW.CanCast("Ignore Pain") && WoW.Rage > 35 && WoW.PlayerHasBuff("Vengeance: Ignore Pain"))
                        {
                            WoW.CastSpell("Ignore Pain");
                            return;
                        }

                        if (WoW.CanCast("Ignore Pain") && WoW.Rage < 30 && WoW.Rage >= 20 && WoW.HealthPercent < 100 &&
                            (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) && !WoW.PlayerHasBuff("Ultimatum") &&
                            !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.PlayerHasBuff("Vengeance: Focused Rage"))
                        {
                            WoW.CastSpell("Ignore Pain");
                            return;
                        }

                        /* ------------------ END IGNORE PAIN MANAGEMENT-------------------*/


                        /* ------------------ FOCUSED RAGE MANAGEMENT----------------------*/

                        if (WoW.CanCast("Focused Rage") && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) &&
                            WoW.PlayerHasBuff("Vengeance: Focused Rage") && WoW.Rage >= 20)
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Focused Rage") && WoW.PlayerHasBuff("Ultimatum") && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) &&
                            WoW.PlayerHasBuff("Vengeance: Focused Rage"))
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Focused Rage") && WoW.PlayerHasBuff("Ultimatum") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.PlayerHasBuff("Vengeance: Focused Rage"))
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Focused Rage") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance: Focused Rage") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain"))
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Focused Rage") && WoW.Rage < 10 && WoW.PlayerHasBuff("Ultimatum") && WoW.PlayerHasBuff("Vengeance: Ignore Pain") &&
                            !WoW.IsSpellOnCooldown("Shield Slam"))
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Focused Rage") && WoW.Rage >= 120)
                        {
                            WoW.CastSpell("Focused Rage");
                        }

                        /* ------------------ END FOCUSED RAGE MANAGEMENT-------------------*/

                        if (WoW.TargetIsCasting && WoW.CanCast("SpellReflect") && !WoW.IsSpellOnCooldown("SpellReflect"))
                        {
                            WoW.CastSpell("SpellReflect");
                        }
                        if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Shield Slam") && !WoW.IsSpellOnCooldown("Shield Slam"))
                        {
                            WoW.CastSpell("Shield Slam");
                            return;
                        }
                        if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam"))
                        {
                            WoW.CastSpell("Revenge");
                            return;
                        }
                        if (WoW.CanCast("Victory Rush") && !WoW.IsSpellOnCooldown("Victory Rush") && WoW.IsSpellInRange("Shield Slam") && WoW.HealthPercent < 90 &&
                            WoW.PlayerHasBuff("VictoryRush"))
                        {
                            WoW.CastSpell("Victory Rush");
                            return;
                        }
                        if (WoW.IsSpellInRange("Devastate") && WoW.CanCast("Devastate"))
                        {
                            WoW.CastSpell("Devastate");
                            return;
                        }

                        /* if (WoW.IsSpellInRange("Shield Slam")&& WoW.CanCast("Thunder Clap")&& !WoW.IsSpellOnCooldown("Thunder Clap"))
                         *                              {
                         *                                      WoW.CastSpell("Thunder Clap");
                         *                                      return;
                         *                              }  */
                    }
                    if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun"))
                    {
                        WoW.CastSpell("Neltharion's Fury");
                        return;
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                // Do AOE Stuff here

                if (WoW.IsSpellOverlayed("Shield Slam"))
                {
                    Log.Write("Spell Overlayed: Shield Slam");
                }
            }
        }
Ejemplo n.º 5
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)  // Do Single Target Stuff here
            {
                /*
                 * Endless Rage / War Machine
                 * Double Time
                 * Avatar
                 * Warpaint
                 * Frothing Zerker/Massacre
                 * Inner Rage
                 * Reckless Abandon
                 */


                //AOE on Press



                //Normal ST rotation
                if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst"))
                {
                    if (WoW.TargetHealthPercent >= 20)
                    {
                        //When targets are above 20%. Not in Execute phase. (need to change this to TTExecute)
                        //Single target with Reckless Abandon -  Battle Cry  Avatar  Rampage -  Raging Blow -  Odyn's Fury -  Bloodthirst - Raging Blow -  Furious Slash -  Bloodthirst

                        if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Q) < 0)

                        {
                            if (WoW.CanCast("Whirlwind") &&
                                TFZFMint &&
                                !WoW.PlayerHasBuff("Meat Cleaver") &&
                                WoW.Rage <= 99)
                            {
                                WoW.CastSpell("Whirlwind"); return;
                            }

                            if (WoW.CanCast("Whirlwind") &&
                                !TFZFMint &&
                                !WoW.PlayerHasBuff("Meat Cleaver") &&
                                WoW.Rage <= 85)
                            {
                                WoW.CastSpell("Whirlwind"); return;
                            }

                            /*if (WoW.CanCast("Whirlwind")
                             *      && TFZFMint
                             *      && WoW.Rage <= 99
                             *      && !WoW.CanCast("Bloodthirst")
                             *      && !WoW.CanCast("Raging Blow")
                             *      && !WoW.CanCast("Rampage")
                             *      )
                             * {WoW.CastSpell("Whirlwind"); return;}
                             *
                             * if (WoW.CanCast("Whirlwind")
                             *      && !TFZFMint
                             *      && WoW.Rage <= 85
                             *      && !WoW.CanCast("Bloodthirst")
                             *      && !WoW.CanCast("Raging Blow")
                             *      && !WoW.CanCast("Rampage")
                             *      )
                             * {WoW.CastSpell("Whirlwind"); return;}
                             *
                             */
                        }



                        if (TFZFMint)
                        {
                            if (WoW.CanCast("Rampage") &&
                                WoW.Rage > 99)
                            {
                                WoW.CastSpell("Rampage"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                !WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Raging Blow") &&
                                WoW.Rage <= 85 &&
                                !WoW.CanCast("Bloodthirst"))
                            {
                                WoW.CastSpell("Raging Blow"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Furious Slash") &&
                                !WoW.CanCast("Bloodthirst") &&
                                !WoW.CanCast("Raging Blow"))
                            {
                                WoW.CastSpell("Furious Slash"); return;
                            }
                        }


                        if (!TFZFMint)
                        {
                            if (WoW.CanCast("Rampage") &&
                                WoW.Rage >= 85)
                            {
                                WoW.CastSpell("Rampage"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                !WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            //if (WoW.CanCast("Execute")
                            //	&& WoW.TargetHealthPercent <= 20
                            //    && WoW.IsSpellOverlayed("Execute") || WoW.Rage >= 25)
                            //{ WoW.CastSpell("Execute"); return; }

                            if (WoW.CanCast("Raging Blow") &&
                                WoW.Rage <= 85 &&
                                !WoW.CanCast("Bloodthirst"))
                            {
                                WoW.CastSpell("Raging Blow"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Furious Slash") &&
                                !WoW.CanCast("Bloodthirst") &&
                                !WoW.CanCast("Raging Blow"))
                            {
                                WoW.CastSpell("Furious Slash"); return;
                            }
                        }
                    }

                    if (WoW.TargetHealthPercent <= 20)

                    {
                        if (TFZFMint)
                        {
                            if (WoW.CanCast("Rampage") &&
                                WoW.Rage >= 100)
                            {
                                WoW.CastSpell("Rampage"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                !WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Execute") &&
                                WoW.IsSpellOverlayed("Execute") || WoW.Rage >= 25)
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (WoW.CanCast("Execute") &&
                                WoW.Rage > 25)
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (WoW.CanCast("Raging Blow") &&
                                !WoW.CanCast("Bloodthirst"))
                            {
                                WoW.CastSpell("Raging Blow"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Furious Slash") &&
                                !WoW.CanCast("Bloodthirst") &&
                                !WoW.CanCast("Raging Blow"))
                            {
                                WoW.CastSpell("Furious Slash"); return;
                            }
                        }

                        if (!TFZFMint)
                        {
                            if (WoW.CanCast("Execute") &&
                                !WoW.PlayerHasBuff("Enrage") &&
                                !WoW.PlayerHasBuff("Massacre"))
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (WoW.CanCast("Rampage") &&
                                WoW.PlayerHasBuff("Massacre"))
                            {
                                WoW.CastSpell("Rampage"); return;
                            }

                            if (WoW.CanCast("Execute") &&
                                WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                WoW.Rage < 25)
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Raging Blow") &&
                                WoW.Rage < 25)
                            {
                                WoW.CastSpell("Raging Blow"); return;
                            }
                        }
                    }

                    if (mythicplusinterrupts)
                    {
                        if (WoW.CanCast("Pummel") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible)
                        {
//int spell list for all important spells in M+
                            if (WoW.TargetCastingSpellID == 200248
//Court Of Stars Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 225573 || WoW.TargetCastingSpellID == 208165 || WoW.TargetCastingSpellID == 211401 || WoW.TargetCastingSpellID == 21147 ||
                                WoW.TargetCastingSpellID == 211299 || WoW.TargetCastingSpellID == 2251 || WoW.TargetCastingSpellID == 209413 || WoW.TargetCastingSpellID == 209404 ||
                                WoW.TargetCastingSpellID == 215204 || WoW.TargetCastingSpellID == 210261
//Darkheart Thicket Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 200658 || WoW.TargetCastingSpellID == 200631 || WoW.TargetCastingSpellID == 204246 || WoW.TargetCastingSpellID == 2014
//Eye of Azshara Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 19687 || WoW.TargetCastingSpellID == 218532 || WoW.TargetCastingSpellID == 195129 || WoW.TargetCastingSpellID == 195046 ||
                                WoW.TargetCastingSpellID == 197502 || WoW.TargetCastingSpellID == 196027 || WoW.TargetCastingSpellID == 196175 || WoW.TargetCastingSpellID == 192003 ||
                                WoW.TargetCastingSpellID == 191848
//Halls of Valor Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 198595 || WoW.TargetCastingSpellID == 198962 || WoW.TargetCastingSpellID == 198931 || WoW.TargetCastingSpellID == 192563 ||
                                WoW.TargetCastingSpellID == 192288 || WoW.TargetCastingSpellID == 199726
//Maw of Souls Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 198495 || WoW.TargetCastingSpellID == 195293 || WoW.TargetCastingSpellID == 199589 || WoW.TargetCastingSpellID == 194266 ||
                                WoW.TargetCastingSpellID == 198405 || WoW.TargetCastingSpellID == 199514 || WoW.TargetCastingSpellID == 194657
//Neltharions Lair Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 193585 || WoW.TargetCastingSpellID == 202181
//The Arcway Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 226269 || WoW.TargetCastingSpellID == 211007 || WoW.TargetCastingSpellID == 211757 || WoW.TargetCastingSpellID == 226285 ||
                                WoW.TargetCastingSpellID == 226206 || WoW.TargetCastingSpellID == 211115 || WoW.TargetCastingSpellID == 196392
// Advisor Vandros (Interrupt manually) Spell,203176,Accelerating Blast
                                || WoW.TargetCastingSpellID == 203957
//Vault of the Wardens Mythic+ Interrupt list
                                || WoW.TargetCastingSpellID == 193069 || WoW.TargetCastingSpellID == 191823 || WoW.TargetCastingSpellID == 202661 || WoW.TargetCastingSpellID == 201488 ||
                                WoW.TargetCastingSpellID == 195332
//Raid Interrupts
                                || WoW.TargetCastingSpellID == 209485 || WoW.TargetCastingSpellID == 209410 || WoW.TargetCastingSpellID == 211470 || WoW.TargetCastingSpellID == 225100 ||
                                WoW.TargetCastingSpellID == 207980 || WoW.TargetCastingSpellID == 196870 || WoW.TargetCastingSpellID == 195284 || WoW.TargetCastingSpellID == 192005 ||
                                WoW.TargetCastingSpellID == 228255 || WoW.TargetCastingSpellID == 228239 || WoW.TargetCastingSpellID == 227917 || WoW.TargetCastingSpellID == 228625 ||
                                WoW.TargetCastingSpellID == 228606 || WoW.TargetCastingSpellID == 229714 || WoW.TargetCastingSpellID == 227592 || WoW.TargetCastingSpellID == 229083 ||
                                WoW.TargetCastingSpellID == 228025 || WoW.TargetCastingSpellID == 228019 || WoW.TargetCastingSpellID == 227987 || WoW.TargetCastingSpellID == 227420 ||
                                WoW.TargetCastingSpellID == 200905)

                            {
                                if (!WoW.IsSpellOnCooldown("Pummel") && WoW.TargetPercentCast >= 40)
                                {
                                    WoW.CastSpell("Pummel");
                                    return;
                                }
                            }
                        }
                    }
                }
            }



            if (combatRoutine.Type == RotationType.AOE)
            {
                // AOE stuff here
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
Ejemplo n.º 6
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here
            {
                //if (WoW.IsSpellInRange("Mortal Strike") && WoW.IsInCombat && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry"))
                //{
                //    WoW.CastSpell("Battle Cry");
                //    return;
                // }

                //AOE on Press
                if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Q) < 0)
                {
                    if (WoW.HasTarget && WoW.IsInCombat)
                    {
                        if (WoW.CanCast("Bladestorm") && WoW.IsSpellOnCooldown("Warbreaker"))
                        {
                            WoW.CastSpell("Bladestorm");
                            return;
                        }
                        if (!WoW.WasLastCasted("Warbreaker") && !WoW.PlayerHasBuff("Bladestorm"))
                        {
                            if (WoW.CanCast("Cleave") && !WoW.PlayerHasBuff("Cleave") && !WoW.IsSpellOnCooldown("Cleave"))
                            {
                                WoW.CastSpell("Cleave");
                                return;
                            }
                            if (WoW.CanCast("Whirlwind") && WoW.Rage > 20 && WoW.IsSpellOnCooldown("Cleave"))
                            {
                                WoW.CastSpell("Whirlwind");
                                return;
                            }
                            if (WoW.CanCast("Colossus Smash") && WoW.Rage > 28 && !WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellOnCooldown("Cleave"))
                            {
                                WoW.CastSpell("Colossus Smash");
                                return;
                            }
                            if (WoW.CanCast("Mortal Strike") && WoW.Rage > 28 && WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellOnCooldown("Cleave"))
                            {
                                WoW.CastSpell("Mortal Strike");
                                return;
                            }
                        }
                    }
                }
                if (WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike") && DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_X) < 0)
                {
                    //Colossus smash control
                    if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash"))
                    {
                        WoW.CastSpell("Colossus Smash");
                    }
                    if (WoW.CanCast("Colossus Smash") &&
                        WoW.TargetHasDebuff("Colossus Smash") &&
                        !WoW.PlayerHasBuff("Shattered Defenses") &&
                        WoW.PlayerBuffStacks("Focused Rage") == 3)
                    {
                        WoW.CastSpell("Colossus Smash");
                    }
                    //Cooldowns
                    if (WoW.IsSpellInRange("Mortal Strike") &&
                        WoW.CanCast("Battle Cry") &&
                        !WoW.IsSpellOnCooldown("Battle Cry") &&
                        WoW.TargetHasDebuff("Colossus Smash"))
                    {
                        WoW.CastSpell("Battle Cry");
                        return;
                    }
                    if (WoW.IsSpellInRange("Mortal Strike") &&
                        WoW.CanCast("Avatar") &&
                        !WoW.IsSpellOnCooldown("Avatar") &&
                        WoW.TargetHasDebuff("Colossus Smash"))
                    {
                        WoW.CastSpell("Avatar");
                        return;
                    }
                    // Mortal Strike Control
                    if (WoW.IsSpellInRange("Mortal Strike") &&
                        WoW.CanCast("Mortal Strike") &&
                        WoW.TargetHasDebuff("Colossus Smash") &&
                        WoW.PlayerHasBuff("Battle Cry") &&
                        WoW.PlayerHasBuff("Avatar") &&
                        WoW.PlayerHasBuff("Shattered Defenses") &&
                        WoW.PlayerBuffStacks("Focused Rage") == 3)
                    {
                        WoW.CastSpell("Mortal Strike");
                        return;
                    }

                    //Slam control
                    if (WoW.IsSpellInRange("Mortal Strike") &&
                        WoW.CanCast("Slam") &&
                        !WoW.CanCast("Colossus Smash") &&
                        !WoW.CanCast("Mortal Strike") &&
                        WoW.PlayerHasBuff("Shattered Defenses"))
                    {
                        WoW.CastSpell("Slam");
                        return;
                    }

                    // Focused Rage whenever.
                    if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") < 3)
                    {
                        WoW.CastSpell("Focused Rage");
                    }
                }


                //Normal ST rotation
                if (!WoW.PlayerHasBuff("Battle Cry") && WoW.HasTarget && WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike"))
                {
                    if (WoW.TargetHealthPercent > 20)
                    //When targets are above 20%. Not in Execute phase.
                    {
                        //FR Control
                        if (WoW.CanCast("Focused Rage") && WoW.Rage > 50)
                        {
                            WoW.CastSpell("Focused Rage");
                        }

                        if (WoW.CanCast("Focused Rage") &&
                            WoW.IsSpellOnCooldown("Battle Cry") &&
                            WoW.SpellCooldownTimeRemaining("Battle Cry") < 6 &&
                            WoW.PlayerBuffStacks("Focused Rage") < 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }



                        //CS Control
                        if (WoW.CanCast("Colossus Smash") &&
                            !WoW.PlayerHasBuff("Shattered Defenses") &&
                            !WoW.IsSpellOnCooldown("Colossus Smash") || WoW.IsSpellOverlayed("Colossus Smash"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        if (WoW.CanCast("Colossus Smash") &&
                            WoW.SpellCooldownTimeRemaining("Battle Cry") < 1)
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        //MS
                        if (WoW.CanCast("Mortal Strike") &&
                            !WoW.IsSpellOnCooldown("Mortal Strike") || WoW.IsSpellOverlayed("Mortal Strike"))
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        //Slam
                        if (WoW.CanCast("Slam") && WoW.Rage >= 32 &&
                            !WoW.CanCast("Colossus Smash") &&
                            !WoW.CanCast("Mortal Strike"))
                        {
                            WoW.CastSpell("Slam");
                            return;
                        }
                    }
                    if (WoW.TargetHealthPercent < 20)

                    {
                        //Non BC ST
                        if (WoW.CanCast("Colossus Smash") &&
                            !WoW.IsSpellOnCooldown("Colossus Smash") &&
                            !WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }

                        if (WoW.CanCast("Focused Rage") &&
                            WoW.Rage >= 85 &&
                            !WoW.PlayerHasBuff("Focused Rage") ||
                            WoW.PlayerBuffStacks("Focused Rage") < 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }

                        if (WoW.CanCast("Execute") &&
                            WoW.Rage >= 18 &&
                            WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                        if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                    }
                }

                if (WoW.PlayerHasBuff("Battle Cry") && WoW.HasTarget && WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike"))


                {
                    if (WoW.CanCast("Avatar") && WoW.PlayerHasBuff("Battle Cry") && WoW.IsSpellOnCooldown("Battle Cry"))
                    {
                        WoW.CastSpell("Avatar");
                        return;
                    }
                    if (WoW.TargetHealthPercent > 20)
                    {
                        //Maintain FR Stacks
                        if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") <= 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }

                        //CS on cooldown but not overlapping SD
                        if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        //MS with SD
                        if (WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") == 3)
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        //MS on cooldown
                        if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.IsSpellOnCooldown("Colossus Smash"))
                        {
                            WoW.CastSpell("Mortal Strike");
                        }
                        //if all else fails, slam.
                        if (WoW.CanCast("Slam") && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") >= 3)
                        {
                            WoW.CastSpell("Slam");
                            return;
                        }
                    }
                    if (WoW.TargetHealthPercent <= 20)
                    {
                        if (WoW.CanCast("Focused Rage") && !WoW.PlayerHasBuff("Focused Rage") || WoW.PlayerBuffStacks("Focused Rage") < 3)
                        {
                            WoW.CastSpell("Focused Rage");
                        }
                        if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && (WoW.PlayerBuffStacks("Focused Rage") == 3))
                        {
                            WoW.CastSpell("Mortal Strike");
                            return;
                        }
                        if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash"))
                        {
                            WoW.CastSpell("Colossus Smash");
                            return;
                        }
                        if (WoW.CanCast("Execute") && !WoW.CanCast("Mortal Strike"))
                        {
                            WoW.CastSpell("Execute");
                            return;
                        }
                    }
                }
            }
            if (combatRoutine.Type == RotationType.AOE)
            {
                // AOE stuff here
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }
Ejemplo n.º 7
0
        public override void Pulse()
        {
            if (combatRoutine.Type == RotationType.SingleTarget)  // Do Single Target Stuff here
            {
                /*
                 * Endless Rage / War Machine
                 * Double Time
                 * Avatar
                 * Warpaint
                 * Frothing Zerker/Massacre
                 * Inner Rage
                 * Reckless Abandon
                 */


                //AOE on Press
                if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0)
                {
                    if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy)
                    {
                        if (TFZFMint)
                        {
                            if (WoW.CanCast("Whirlwind") &&
                                !WoW.PlayerHasBuff("Meat Cleaver"))
                            {
                                WoW.CastSpell("Whirlwind"); return;
                            }

                            if (WoW.CanCast("Rampage") &&
                                WoW.Rage >= 100 &&
                                WoW.PlayerHasBuff("Meat Cleaver"))
                            {
                                WoW.CastSpell("Rampage"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                !WoW.PlayerHasBuff("Enrage") &&
                                WoW.PlayerHasBuff("Meat Cleaver"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Execute") &&
                                WoW.IsSpellOverlayed("Execute"))
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (WoW.CanCast("Raging Blow") &&
                                !WoW.CanCast("Bloodthirst") &&
                                !WoW.CanCast("Rampage"))
                            {
                                WoW.CastSpell("Raging Blow"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                WoW.PlayerHasBuff("Enrage") &&
                                WoW.PlayerHasBuff("Meat Cleaver"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }
                        }

                        if (!TFZFMint)
                        {
                            if (WoW.CanCast("Whirlwind") &&
                                !WoW.PlayerHasBuff("Meat Cleaver"))
                            {
                                WoW.CastSpell("Whirlwind"); return;
                            }

                            if (WoW.CanCast("Rampage") &&
                                !WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Rampage"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                !WoW.PlayerHasBuff("Enrage") &&
                                WoW.PlayerHasBuff("Meat Cleaver"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Execute") &&
                                WoW.IsSpellOverlayed("Execute"))
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (WoW.CanCast("Raging Blow") &&
                                !WoW.CanCast("Bloodthirst") &&
                                !WoW.CanCast("Rampage"))
                            {
                                WoW.CastSpell("Raging Blow"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                WoW.PlayerHasBuff("Enrage") &&
                                WoW.PlayerHasBuff("Meat Cleaver"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }
                        }
                    }
                }

                //Normal ST rotation
                if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst"))
                {
                    if (WoW.TargetHealthPercent >= 20)
                    {
                        //When targets are above 20%. Not in Execute phase. (need to change this to TTExecute)
                        //Single target with Reckless Abandon -  Battle Cry  Avatar  Rampage -  Raging Blow -  Odyn's Fury -  Bloodthirst - Raging Blow -  Furious Slash -  Bloodthirst
                        if (MplusAoEint)
                        {
                            if (WoW.CanCast("Whirlwind") &&
                                !WoW.PlayerHasBuff("Meat Cleaver"))
                            {
                                WoW.CastSpell("Whirlwind"); return;
                            }


                            if (WoW.CanCast("Whirlwind") &&
                                !WoW.CanCast("Bloodthirst") &&
                                !WoW.CanCast("Raging Blow") &&
                                !WoW.CanCast("Rampage")
                                )
                            {
                                WoW.CastSpell("Whirlwind"); return;
                            }

                            if (WoW.CanCast("Raging Blow") &&
                                !WoW.CanCast("Bloodthirst"))
                            {
                                WoW.CastSpell("Raging Blow"); return;
                            }
                        }
                    }
                    if (TFZFMint)
                    {
                        if (WoW.CanCast("Rampage") &&
                            WoW.Rage >= 100)
                        {
                            WoW.CastSpell("Rampage"); return;
                        }

                        if (WoW.CanCast("Bloodthirst") &&
                            !WoW.PlayerHasBuff("Enrage"))
                        {
                            WoW.CastSpell("Bloodthirst"); return;
                        }

                        if (WoW.CanCast("Execute") &&
                            WoW.IsSpellOverlayed("Execute"))
                        {
                            WoW.CastSpell("Execute"); return;
                        }

                        if (!MplusAoEint && WoW.CanCast("Raging Blow") &&
                            !WoW.CanCast("Bloodthirst"))
                        {
                            WoW.CastSpell("Raging Blow"); return;
                        }

                        if (WoW.CanCast("Bloodthirst") &&
                            WoW.PlayerHasBuff("Enrage"))
                        {
                            WoW.CastSpell("Bloodthirst"); return;
                        }

                        if (WoW.CanCast("Furious Slash") &&
                            !WoW.CanCast("Bloodthirst") &&
                            !WoW.CanCast("Raging Blow"))
                        {
                            WoW.CastSpell("Furious Slash"); return;
                        }
                    }

                    if (!TFZFMint)
                    {
                        if (WoW.CanCast("Rampage") &&
                            !WoW.PlayerHasBuff("Enrage"))
                        {
                            WoW.CastSpell("Rampage"); return;
                        }

                        if (WoW.CanCast("Bloodthirst") &&
                            !WoW.PlayerHasBuff("Enrage"))
                        {
                            WoW.CastSpell("Bloodthirst"); return;
                        }

                        if (WoW.CanCast("Execute") &&
                            WoW.IsSpellOverlayed("Execute"))
                        {
                            WoW.CastSpell("Execute"); return;
                        }

                        if (!MplusAoEint && WoW.CanCast("Raging Blow") &&
                            !WoW.CanCast("Bloodthirst"))
                        {
                            WoW.CastSpell("Raging Blow"); return;
                        }

                        if (WoW.CanCast("Bloodthirst") &&
                            WoW.PlayerHasBuff("Enrage"))
                        {
                            WoW.CastSpell("Bloodthirst"); return;
                        }

                        if (WoW.CanCast("Furious Slash") &&
                            !WoW.CanCast("Bloodthirst") &&
                            !WoW.CanCast("Raging Blow"))
                        {
                            WoW.CastSpell("Furious Slash"); return;
                        }
                    }


                    if (WoW.TargetHealthPercent <= 20)

                    {
                        if (TFZFMint)
                        {
                            if (WoW.CanCast("Rampage") &&
                                WoW.Rage >= 100)
                            {
                                WoW.CastSpell("Rampage"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                !WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Execute") &&
                                WoW.IsSpellOverlayed("Execute") &&
                                WoW.Rage > 25)
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (WoW.CanCast("Execute") &&
                                WoW.Rage > 25)
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (!MplusAoEint && WoW.CanCast("Raging Blow") &&
                                !WoW.CanCast("Bloodthirst"))
                            {
                                WoW.CastSpell("Raging Blow"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (WoW.CanCast("Furious Slash") &&
                                !WoW.CanCast("Bloodthirst") &&
                                !WoW.CanCast("Raging Blow"))
                            {
                                WoW.CastSpell("Furious Slash"); return;
                            }
                        }

                        if (!TFZFMint)
                        {
                            if (WoW.CanCast("Execute") &&
                                !WoW.PlayerHasBuff("Enrage") &&
                                !WoW.PlayerHasBuff("Massacre"))
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (WoW.CanCast("Rampage") &&
                                WoW.PlayerHasBuff("Massacre"))
                            {
                                WoW.CastSpell("Rampage"); return;
                            }

                            if (WoW.CanCast("Execute") &&
                                WoW.PlayerHasBuff("Enrage"))
                            {
                                WoW.CastSpell("Execute"); return;
                            }

                            if (WoW.CanCast("Bloodthirst") &&
                                WoW.Rage < 25)
                            {
                                WoW.CastSpell("Bloodthirst"); return;
                            }

                            if (!MplusAoEint && WoW.CanCast("Raging Blow") &&
                                WoW.Rage < 25)
                            {
                                WoW.CastSpell("Raging Blow"); return;
                            }
                        }
                    }
                }
            }



            if (combatRoutine.Type == RotationType.AOE)
            {
                // AOE stuff here
            }
            if (combatRoutine.Type == RotationType.SingleTargetCleave)
            {
                // Do Single Target Cleave stuff here if applicable else ignore this one
            }
        }