public override void Pulse() { if (WoW.TargetHealthPercent == 0) { return; } if (!WoW.TargetIsEnemy) { return; } WoW.CastSpell("Rebuke", WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > 60); WoW.CastSpell("ArdentDefender", WoW.PlayerHealthPercent < 15); WoW.CastSpell("LayOnHands", WoW.CanCast("LayOnHands") && !WoW.PlayerHasDebuff("Forbearance") && WoW.PlayerHealthPercent < 20 && !WoW.PlayerHasBuff("ArdentDefender")); WoW.CastSpell("GuardianOfAncientKings", WoW.PlayerHealthPercent < 50 && !WoW.PlayerHasBuff("ArdentDefender")); if (!WoW.HasTarget) { return; } WoW.CastSpell("AvengingWrath", UseCooldowns, false); // Off the GCD no return needed. WoW.CastSpell("AvengersShield", true); WoW.CastSpell("EyeOfTyr", WoW.PlayerHealthPercent < 100); WoW.CastSpell("Judgment", true); WoW.CastSpell("Consecration", true); WoW.CastSpell("LightOfTheProtector", WoW.PlayerHasBuff("Consecration") && WoW.PlayerHealthPercent < 70); WoW.CastSpell("BlessedHammer", WoW.Talent(1) == 2); WoW.CastSpell("BastionOfLight", WoW.PlayerSpellCharges("ShieldOfTheRighteous") == 0 && !WoW.PlayerHasBuff("ShieldOfTheRighteous")); WoW.CastSpell("ShieldOfTheRighteous", WoW.PlayerHasBuff("Consecration") && WoW.PlayerSpellCharges("ShieldOfTheRighteous") > 0 && !WoW.PlayerHasBuff("ShieldOfTheRighteous")); WoW.CastSpell("Seraphim", WoW.Talent(7) == 2); WoW.CastSpell("BlessedHammer", true); }
public override void Initialize() { Log.DrawHorizontalLine(); Log.WriteFrozen("Welcome to Frozen Protection", Color.Black); Log.Write("Supported Talents: 2212321"); Log.Write("Current Talents : " + WoW.Talent(1) + WoW.Talent(2) + WoW.Talent(3) + WoW.Talent(4) + WoW.Talent(5) + WoW.Talent(6) + WoW.Talent(7)); }
public override void Pulse() { if (!coolDownStopWatch.IsRunning || coolDownStopWatch.ElapsedMilliseconds > 60000) { coolDownStopWatch.Restart(); } if (DetectKeyPress.GetKeyState(cooldownKey) < 0 && (cooldownModifier == -1 || cooldownModifier != -1 && DetectKeyPress.GetKeyState(cooldownModifier) < 0)) { if (coolDownStopWatch.ElapsedMilliseconds > 1000) { combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns; coolDownStopWatch.Restart(); } } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.TargetIsVisible) { isMelee = WoW.CanCast("Obliterate", false, false, true, false, false); currentRunes = WoW.CurrentRunes; runicPower = WoW.RunicPower; if (WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 40 && WoW.CanCast("Mind Freeze", false, true, true, false, false) && isCastingListedSpell()) { WoW.CastSpell("Mind Freeze"); } if (WoW.CanCast("Sindragosa's Fury") && (DetectKeyPress.GetKeyState(0x5A) < 0)) { WoW.CastSpell("Sindragosa's Fury"); return; } if (CanCastNoRange("Anti-Magic Shell") && WoW.HealthPercent <= FrostAMSHPPercent && !WoW.IsSpellOnCooldown("Anti-Magic Shell") && isCheckHotkeysFrostIceboundFortitude) { WoW.CastSpell("Anti-Magic Shell"); } if (CanCastNoRange("Icebound Fortitude") && WoW.HealthPercent < FrostIceboundHPPercent && !WoW.IsSpellOnCooldown("Icebound Fortitude") && isCheckHotkeysFrostAntiMagicShield) { WoW.CastSpell("Icebound Fortitude"); } if (useChainofIce && CanCastInRange("ChainofIce") && !isMelee && !WoW.TargetHasDebuff("ChainofIce") && currentRunes >= 1) { WoW.CastSpell("ChainofIce"); return; } if (WoW.Talent(7) == 2) { BreathRotation(); } else { MGRotation(); } } }
private void EnhancementBuffs() { //actions +=/ windstrike,if= (variable.heartEquipped | set_bonus.tier19_2pc) & (!talent.earthen_spike.enabled | (cooldown.earthen_spike.remains > 1 & cooldown.doom_winds.remains > 1) | debuff.earthen_spike.up) if (WoW.CanCast("Windstrike", true, true, true) && WoW.PlayerHasBuff("Ascendance") && WoW.Maelstrom >= 8 && (/*heart equip place holder*/ WoW.SetBonus(19) >= 2) && (WoW.Talent(7) != 3 || (WoW.SpellCooldownTimeRemaining("Earthen spike") > 1 && WoW.SpellCooldownTimeRemaining("Doom winds") > 1 || WoW.TargetHasDebuff("Earthen spike")))) { WoW.CastSpell("Windstrike", "Top prioity spell"); return; } //actions.buffs = rockbiter,if= talent.landslide.enabled & !buff.landslide.up if (WoW.CanCast("Rockbiter", true, true, true) && WoW.Talent(1) == 3 && !WoW.PlayerHasBuff("Landslide")) { WoW.CastSpell("Rockbiter", "Buff spell"); return; } //actions.buffs +=/ fury_of_air,if= buff.ascendance.up | (feral_spirit.remains > 5) | level < 100 if (WoW.CanCast("FoA") && WoW.Maelstrom >= 5 && WoW.Talent(6) == 2 && !WoW.PlayerHasBuff("FoA") && (WoW.PlayerHasBuff("Ascendance") && Pets.IsRunning)) { WoW.CastSpell("FoA", "Buff spell"); return; } //actions.buffs +=/ crash_lightning,if= artifact.alpha_wolf.rank & prev_gcd.1.feral_spirit if (WoW.CanCast("Crash lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Rockbiter") && Pets.IsRunning && !Crash.IsRunning) { Crash.Restart(); WoW.CastSpell("Crash lightning", "Buff spell"); return; } //actions.buffs +=/ flametongue,if= !buff.flametongue.up if (!WoW.PlayerHasBuff("Flametongue") && WoW.CanCast("Flametongue", true, true, true)) { WoW.CastSpell("Flametongue", "Buff spell"); return; } //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & !buff.frostbrand.up & variable.furyCheck45 if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.Talent(4) == 3 && !WoW.PlayerHasBuff("Frostbrand") && furyCheck45) { WoW.CastSpell("Frostbrand", "Buff spell"); return; } //actions.buffs +=/ flametongue,if= buff.flametongue.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2 if (WoW.CanCast("Flametongue", true, true, true) && WoW.PlayerBuffTimeRemaining("Flametongue") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Flametongue", "Buff spell"); return; } //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & buff.frostbrand.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2 if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.PlayerBuffTimeRemaining("Frostbrand") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Frostbrand", "Buff spell"); return; } }
private void cmdRefresh_Click(object sender, EventArgs e) { WoW.KeyPressRelease(WoW.Keys.D0); Thread.Sleep(400); Log.Clear(); // Row 1 Pixel Testing Log.Write("Player Health: " + WoW.HealthPercent); Log.Write("Player Level: " + WoW.Level); Log.Write("Player Power: " + WoW.Power); Log.Write("Target Health: " + WoW.TargetHealthPercent); Log.Write("Unit In Combat: " + WoW.IsInCombat); Log.Write("Unit Power: " + WoW.UnitPower); Log.Write("Target Is Friend: " + WoW.TargetIsFriend); Log.Write("Has Target: " + WoW.HasTarget); Log.Write("Player Is Casting: " + WoW.PlayerIsCasting); Log.Write("Target Is Casting: " + WoW.TargetIsCasting); Log.Write("Player Haste Percent: " + WoW.HastePercent); Log.Write("Target Visible: " + WoW.TargetIsVisible); Log.Write("Pet Out: " + WoW.HasPet); Log.Write("Pet Health: " + WoW.PetHealthPercent); Log.Write("Wild Imps Count: " + WoW.WildImpsCount); Log.Write("Dreadstalkers Count: " + WoW.DreadstalkersCount); // Row 2 Pixel Testing Log.Write("Is Moving: " + WoW.IsMoving); Log.Write("Auto Attacking: " + WoW.AutoAtacking); Log.Write("Target Is Player: " + WoW.TargetIsPlayer); Log.Write("Flag: " + WoW.Flag); Log.Write("Last Casted Id: " + WoW.LastSpellCastedID); Log.Write("Target Casting Id: " + WoW.TargetCastingSpellID); for (int i = 1; i < 8; i++) { Log.Write($"Talent {i} : " + WoW.Talent(i)); } Log.Write($"Race : " + WoW.PlayerRace + " Spec : " + WoW.PlayerSpec); for (int i = 19; i < 21; i++) { Log.Write($"SetBonus T{i}: " + WoW.SetBonus(i)); } for (int i = 1; i < 3; i++) { Log.Write($"Legendary {i}: " + WoW.Legendary(i)); } while (WoW.TargetCastingSpellID != 0) { Log.Write("Target % Cast: " + WoW.TargetPercentCast); Thread.Sleep(100); } }
private void EnhancementBuffs() { if (WoW.CanCast("Windstrike", true, true, true) && WoW.PlayerHasBuff("Ascendance") && WoW.Maelstrom >= 8 && WoW.SetBonus(19) >= 2 && (WoW.Talent(7) != 3 || WoW.SpellCooldownTimeRemaining("Earthen spike") > 1 && WoW.SpellCooldownTimeRemaining("Doom winds") > 1 || WoW.TargetHasDebuff("Earthen spike"))) { WoW.CastSpell("Windstrike"); return; } if (WoW.CanCast("Rockbiter", true, true, true) && WoW.Talent(1) == 3 && !WoW.PlayerHasBuff("Landslide")) { WoW.CastSpell("Rockbiter"); return; } if (WoW.CanCast("FoA") && WoW.Maelstrom >= 5 && WoW.Talent(6) == 2 && !WoW.PlayerHasBuff("FoA") && WoW.PlayerHasBuff("Ascendance") && Pets.IsRunning) { WoW.CastSpell("FoA"); return; } if (WoW.CanCast("Crash lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Rockbiter") && Pets.IsRunning && !Crash.IsRunning) { Crash.Restart(); WoW.CastSpell("Crash lightning"); return; } if (!WoW.PlayerHasBuff("Flametongue") && WoW.CanCast("Flametongue", true, true, true)) { WoW.CastSpell("Flametongue"); return; } if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.Talent(4) == 3 && !WoW.PlayerHasBuff("Frostbrand") && FuryCheck45) { WoW.CastSpell("Frostbrand"); return; } if (WoW.CanCast("Flametongue", true, true, true) && WoW.PlayerBuffTimeRemaining("Flametongue") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Flametongue"); return; } if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.PlayerBuffTimeRemaining("Frostbrand") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Frostbrand"); } }
public override void Pulse() { var SavageRoarTime = WoW.PlayerBuffTimeRemaining("SavageRoar"); // 200 = 2 seconds var RakeTime = WoW.TargetDebuffTimeRemaining("Rake"); var RipTime = WoW.TargetDebuffTimeRemaining("Rip"); var MoonfireTime = WoW.TargetDebuffTimeRemaining("Moonfire"); WoW.CastSpell("Berserk", UseCooldowns && !WoW.PlayerHasBuff("Prowl")); WoW.CastSpell("Regrowth", WoW.PlayerHasBuff("PredatorySwiftness") && WoW.PlayerBuffStacks("Bloodtalons") != 2 && !WoW.PlayerHasBuff("Prowl")); // Cast Ferocious Bite if at 5 Combo Points and Rip / Savage Roar do not need refreshing within 10 sec. WoW.CastSpell("FerociousBite", WoW.CurrentComboPoints >= 5 && RipTime > 1000 && SavageRoarTime > 1000 && !WoW.PlayerHasBuff("Prowl")); // Maintain Savage Roar if taken. WoW.CastSpell("SavageRoar", WoW.Talent(6) == 3 && SavageRoarTime <= 200 && WoW.CurrentComboPoints >= 1 && WoW.Energy >= 40 && !WoW.PlayerHasBuff("Prowl")); // Maintain Rake. WoW.CastSpell("Rake", RakeTime <= 200 && WoW.Energy >= 35); // Maintain Rip (at below 25%, or with Sabertooth taken, replace with Ferocious Bite). WoW.CastSpell("Rip", RipTime <= 200 && WoW.Talent(6) != 1 && WoW.CurrentComboPoints >= 1 && WoW.Energy >= 30); WoW.CastSpell("FerociousBite", RipTime <= 200 && WoW.TargetHealthPercent <= 25 && WoW.Talent(6) == 1 && WoW.CurrentComboPoints >= 1); // Maintain Moonfire if Lunar Inspiration is taken. WoW.CastSpell("Moonfire", MoonfireTime <= 200 && WoW.Energy >= 30 && WoW.Talent(1) == 3); // Use any Omen of Clarity procs to maintain Thrash if using Luffa Wrappings. // Will code this when i get the item till then stuff it.... :) // Cast Tiger's Fury at 20 Energy or less. WoW.CastSpell("TigersFury", WoW.Energy <= 20, false); // Cast Ashamane's Frenzy, try to sync this with Tiger's Fury uses. WoW.CastSpell("Ashamane", true); // Cast Shred to build combo points. WoW.CastSpell("Shred", (WoW.Energy >= 40 || WoW.PlayerHasBuff("ClearCasting")) && WoW.CountEnemyNPCsInRange <= 1); WoW.CastSpell("Thrash", (WoW.Energy >= 40 || WoW.PlayerHasBuff("ClearCasting")) && WoW.CountEnemyNPCsInRange >= 2); // When using Brutal Slash, try to make sure that you always have at least one charge on cooldown, // but have as many charges as possible when a wave of enemies comes into range. // Try to have short duration buffs such as Tiger's Fury and Bloodtalons active // on as many high target casts of this as possible, as it deals massive AoE burst damage with each cast. WoW.CastSpell("BrutalSlash", WoW.Talent(6) == 2 && WoW.Energy >= 20 && WoW.PlayerSpellCharges("BrutalSlash") > 1); WoW.CastSpell("BrutalSlash", WoW.Talent(6) == 2 && WoW.Energy >= 20 && WoW.PlayerSpellCharges("BrutalSlash") == 1 && WoW.PlayerHasBuff("TigersFury")); }
private void EnhancementBuffs() { //actions.buffs = rockbiter,if= talent.landslide.enabled & !buff.landslide.up if (WoW.CanCast("Rockbiter", true, true, true) && WoW.Talent(1) == 3 && !WoW.PlayerHasBuff("Landslide")) { WoW.CastSpell("Rockbiter", "Buff spell"); return; } //actions.buffs +=/ fury_of_air,if= buff.ascendance.up | (feral_spirit.remains > 5) | level < 100 if (WoW.CanCast("FoA") && WoW.Talent(6) == 2 && !WoW.PlayerHasBuff("FoA") && (WoW.PlayerHasBuff("Ascendance") && Pets.IsRunning)) { WoW.CastSpell("FoA", "Buff spell"); return; } //actions.buffs +=/ crash_lightning,if= artifact.alpha_wolf.rank & prev_gcd.1.feral_spirit if (WoW.CanCast("Crash lightning") && WoW.IsSpellInRange("Rockbiter") && Pets.IsRunning && !Crash.IsRunning) { Crash.Restart(); WoW.CastSpell("Crash lightning", "Buff spell"); return; } //actions.buffs +=/ flametongue,if= !buff.flametongue.up if (!WoW.PlayerHasBuff("Flametongue") && WoW.CanCast("Flametongue", true, true, true)) { WoW.CastSpell("Flametongue", "Buff spell"); return; } //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & !buff.frostbrand.up & variable.furyCheck45 if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Talent(4) == 3 && !WoW.PlayerHasBuff("Frostbrand") && furyCheck45) { WoW.CastSpell("Frostbrand", "Buff spell"); return; } //actions.buffs +=/ flametongue,if= buff.flametongue.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2 if (WoW.CanCast("Flametongue", true, true, true) && WoW.PlayerBuffTimeRemaining("Flametongue") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Flametongue", "Buff spell"); return; } //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & buff.frostbrand.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2 if (WoW.CanCast("Frostbrand", true, true, true) && WoW.PlayerBuffTimeRemaining("Frostbrand") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Frostbrand", "Buff spell"); return; } }
private static void Defensive() { if (WoW.Talent(2) == 1 && WoW.CanCast("Rainfall") && !WoW.PlayerHasBuff("Rainfall") && !WoW.IsSpellOnCooldown("Rainfall")) { WoW.CastSpell("Rainfall"); return; } if (WoW.CanCast("Astral Shift") && WoW.PlayerHealthPercent < 60 && !WoW.IsSpellOnCooldown("Astral Shift")) { WoW.CastSpell("Astral Shift"); return; } if (WoW.PlayerRace == "Dreanei" && WoW.PlayerHealthPercent < 80 && !WoW.IsSpellOnCooldown("Gift Naaru")) { WoW.CastSpell("Gift Naaru"); } }
public void EnhancementCD() { if (UseCooldowns) { //actions.CDs = bloodlust,if= target.health.pct < 25 | time > 0.500 //actions.CDs +=/ berserking,if= buff.ascendance.up | (feral_spirit.remains > 5) if (WoW.PlayerRace == "Troll" && WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && ((WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance")) || Pets.ElapsedMilliseconds < 10000)) { WoW.CastSpell("Berserking"); return; } //actions.CDs +=/ blood_fury,if= buff.ascendance.up | (feral_spirit.remains > 5) | level < 100 if (WoW.PlayerRace == "Orc" && WoW.CanCast("Blood Fury") && ((WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance")) || Pets.ElapsedMilliseconds < 10000)) { WoW.CastSpell("Blood Fury"); return; } //actions.CDs +=/ feral_spirit if (WoW.CanCast("Feral Spirit", true, true, false, false, true) && WoW.IsSpellInRange("Rockbiter") && WoW.Maelstrom >= 20 && (WoW.CanCast("Crash lightning", true, true, false, false, true) || WoW.SpellCooldownTimeRemaining("Crash lightning") < GCD)) //feral spirit on boss - normally cast manually { Pets.Start(); WoW.CastSpell("Feral Spirit"); return; } //actions.CDs +=/ potion,if= buff.ascendance.up | !talent.ascendance.enabled & feral_spirit.remains > 5 | target.time_to_die <= 60 //actions.CDs +=/ doom_winds,if= debuff.earthen_spike.up & talent.earthen_spike.enabled | !talent.earthen_spike.enabled if (WoW.CanCast("Doom Winds") && WoW.IsSpellInRange("Rockbiter") && (WoW.Talent(7) == 3 && WoW.TargetHasDebuff("Earthen spike") || WoW.Talent(7) != 3)) { WoW.CastSpell("Doom Winds"); return; } //actions.CDs +=/ ascendance,if= buff.doom_winds.up if (WoW.CanCast("Ascendance") && WoW.PlayerHasBuff("Doom Winds")) { WoW.CastSpell("Ascendance"); return; } } }
private void Defensive() { if (WoW.Talent(2) == 1 && WoW.CanCast("Rainfall") && !WoW.PlayerHasBuff("Rainfall") && !WoW.IsSpellOnCooldown("Rainfall")) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Rainfall"); return; } /* if (CharInfo.Mana > 21 && WoW.Maelstrom > 20 && WoW.CanCast("Healing Surge") && WoW.HealthPercent < EnhLowHp && !WoW.IsSpellOnCooldown("Healing Surge")) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP * { * WoW.CastSpell("Healing Surge"); * return; * }*/ if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60 && !WoW.IsSpellOnCooldown("Astral Shift")) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Astral Shift"); return; } if (WoW.PlayerRace == "Dreanei" && WoW.HealthPercent < 80 && !WoW.IsSpellOnCooldown("Gift Naaru")) { WoW.CastSpell("Gift Naaru"); } }
public void EnhancementCD() { if (UseCooldowns) { if (WoW.PlayerRace == "Troll" && WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && (WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance") || Pets.ElapsedMilliseconds < 10000)) { WoW.CastSpell("Berserking"); return; } if (WoW.PlayerRace == "Orc" && WoW.CanCast("Blood Fury") && (WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance") || Pets.ElapsedMilliseconds < 10000)) { WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Rockbiter") && WoW.Maelstrom >= 20 && (WoW.CanCast("Crash lightning") || WoW.SpellCooldownTimeRemaining("Crash lightning") < GCD)) //feral spirit on boss - normally cast manually { Pets.Start(); WoW.CastSpell("Feral Spirit"); return; } if (WoW.CanCast("Doom Winds") && WoW.IsSpellInRange("Rockbiter") && (WoW.Talent(7) == 3 && WoW.TargetHasDebuff("Earthen spike") || WoW.Talent(7) != 3)) { WoW.CastSpell("Doom Winds"); return; } if (WoW.CanCast("Ascendance") && WoW.PlayerHasBuff("Doom Winds")) { WoW.CastSpell("Ascendance"); } } }
public void MGRotation() { if (isCheckHotkeysFrostOffensivePillarofFrost && isMelee && combatRoutine.UseCooldowns && !WoW.IsSpellOnCooldown("PillarofFrost")) { WoW.CastSpell("PillarofFrost"); } if (combatRoutine.UseCooldowns && isCheckHotkeysFrostOffensiveErW && isMelee && currentRunes == 0 && WoW.PlayerHasBuff("PillarofFrost") && !WoW.IsSpellOnCooldown("Empower Rune")) { WoW.CastSpell("Empower Rune"); } if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here { if (CanCastInRange("Frost Strike") && (!WoW.PlayerHasBuff("Icy Talons") || WoW.PlayerBuffTimeRemaining("Icy Talons") <= 200) && runicPower >= 25 && !(combatRoutine.UseCooldowns && CanCastNoRange("Obliteration") && WoW.Talent(7) == 1) && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration")))) { Log.Write("Hasbuff " + WoW.PlayerHasBuff("Icy Talons") + " Remaining " + WoW.PlayerBuffTimeRemaining("Icy Talons")); WoW.CastSpell("Frost Strike"); return; } if (isMelee && WoW.HealthPercent <= 40 && WoW.PlayerHasBuff("Free DeathStrike") && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration")))) { WoW.CastSpell("Death Strike"); return; } if (CanCastInRange("Howling Blast") && !WoW.IsSpellOnCooldown("Howling Blast") && !WoW.TargetHasDebuff("Frost Fever") && currentRunes >= 1 && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration")))) { WoW.CastSpell("Howling Blast"); return; } if (WoW.Talent(6) == 1 && runicPower >= 80 && CanCastInRange("Frost Strike")) { WoW.CastSpell("Frost Strike"); return; } if (CanCastInRange("Howling Blast") && WoW.PlayerHasBuff("Rime") && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration")))) { WoW.CastSpell("Howling Blast"); return; } if (combatRoutine.UseCooldowns && isMelee && currentRunes >= 2 && runicPower >= 25 && WoW.Talent(7) == 1 && CanCastNoRange("Obliteration")) { WoW.CastSpell("Obliteration"); return; } if (WoW.Talent(7) == 1 && runicPower >= 25 && CanCastInRange("Frost Strike") && WoW.PlayerHasBuff("Obliteration") && !WoW.PlayerHasBuff("Killing Machine")) { WoW.CastSpell("Frost Strike"); return; } if (WoW.Talent(7) == 1 && isMelee && currentRunes >= 1 && WoW.PlayerHasBuff("Killing Machine") && WoW.PlayerHasBuff("Obliteration")) { WoW.CastSpell("Obliterate"); return; } if (WoW.Talent(6) == 1 && isMelee && currentRunes >= 1 && WoW.PlayerHasBuff("Killing Machine")) { WoW.CastSpell("Frostscythe"); return; } if (isMelee && currentRunes >= 2) { WoW.CastSpell("Obliterate"); return; } if (WoW.Talent(7) == 3 && isMelee && currentRunes >= 1 && CanCastNoRange("Glacial Advance")) { WoW.CastSpell("Glacial Advance"); return; } if (WoW.Talent(7) == 1 && runicPower >= 40 && CanCastInRange("Frost Strike") && !(combatRoutine.UseCooldowns && CanCastNoRange("Obliteration")) && WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration")) { WoW.CastSpell("Frost Strike"); return; } if (isMelee && currentRunes >= 1 && CanCastNoRange("Remorseless Winter") && (WoW.Talent(7) != 1 || (WoW.Talent(7) == 1 && !WoW.PlayerHasBuff("Obliteration")))) { WoW.CastSpell("Remorseless Winter"); return; } } if (combatRoutine.Type == RotationType.AOE) { if (CanCastInRange("Frost Strike") && (!WoW.PlayerHasBuff("Icy Talons") || WoW.PlayerBuffTimeRemaining("Icy Talons") <= 200) && runicPower >= 25) { WoW.CastSpell("Frost Strike"); return; } if (isMelee && WoW.HealthPercent <= 40 && WoW.PlayerHasBuff("Free DeathStrike")) { WoW.CastSpell("Death Strike"); return; } if (CanCastInRange("Howling Blast") && !WoW.IsSpellOnCooldown("Howling Blast") && !WoW.TargetHasDebuff("Frost Fever") && currentRunes >= 1) { WoW.CastSpell("Howling Blast"); return; } if (CanCastInRange("Howling Blast") && WoW.PlayerHasBuff("Rime")) { WoW.CastSpell("Howling Blast"); return; } if (WoW.Talent(6) != 1 && isMelee && currentRunes >= 1 && CanCastNoRange("Remorseless Winter")) { WoW.CastSpell("Remorseless Winter"); return; } if (runicPower >= 80 && CanCastInRange("Frost Strike")) { WoW.CastSpell("Frost Strike"); return; } if (WoW.Talent(6) != 1 && isMelee && currentRunes >= 2) { WoW.CastSpell("Obliterate"); return; } if (WoW.Talent(6) == 1 && currentRunes >= 1 && isMelee && WoW.PlayerHasBuff("Killing Machine")) { WoW.CastSpell("Frostscythe"); return; } if (WoW.Talent(7) == 3 && isMelee && currentRunes >= 1 && CanCastNoRange("Glacial Advance")) { WoW.CastSpell("Glacial Advance"); return; } if (isMelee && currentRunes >= 1 && CanCastNoRange("Remorseless Winter")) { WoW.CastSpell("Remorseless Winter"); return; } if (WoW.Talent(6) == 1 && isMelee && currentRunes >= 1) { WoW.CastSpell("Frostscythe"); return; } if (runicPower >= 25 && CanCastInRange("Frost Strike") && WoW.PlayerBuffStacks("Icy Talons") < 3) { WoW.CastSpell("Frost Strike"); return; } if (WoW.CanCast("Sindragosa's Fury") && (DetectKeyPress.GetKeyState(0x5A) < 0)) { WoW.CastSpell("Sindragosa's Fury"); return; } } }
public void BreathRotation() { hasBreath = WoW.PlayerHasBuff("Breath"); if (combatRoutine.UseCooldowns && isCheckHotkeysFrostOffensivePillarofFrost && !WoW.IsSpellOnCooldown("PillarofFrost") && hasBreath) { WoW.CastSpell("PillarofFrost"); } if (combatRoutine.UseCooldowns && isCheckHotkeysFrostOffensivePillarofFrost && !WoW.IsSpellOnCooldown("PillarofFrost") && !hasBreath && WoW.SpellCooldownTimeRemaining("Breath") >= 5900) { WoW.CastSpell("PillarofFrost"); } if ((haveCoF || useNextHRWCharge) && isCheckHotkeyslegyring && haveHRW && runicPower <= 30 && isCheckHotkeysFrostOffensiveErW && combatRoutine.UseCooldowns && !WoW.PlayerHasBuff("HEmpower Rune") && !WoW.IsSpellOnCooldown("HEmpower Rune") && hasBreath && legyringtest == true) { useNextHRWCharge = false; WoW.CastSpell("HEmpower Rune"); legyringtest = false; } if ((haveCoF || useNextHRWCharge) && !isCheckHotkeyslegyring && haveHRW && runicPower <= 30 && isCheckHotkeysFrostOffensiveErW && combatRoutine.UseCooldowns && !WoW.PlayerHasBuff("HEmpower Rune") && !WoW.IsSpellOnCooldown("HEmpower Rune") && hasBreath) { useNextHRWCharge = false; WoW.CastSpell("HEmpower Rune"); } if (isCheckHotkeyslegyring && !WoW.PlayerHasBuff("Breath")) { legyringtest = true; } if ((haveCoF || useNextHRWCharge) && !haveHRW && runicPower <= 50 && currentRunes <= 1 && isCheckHotkeysFrostOffensiveErW && combatRoutine.UseCooldowns && !WoW.IsSpellOnCooldown("HEmpower Rune") && hasBreath) { WoW.CastSpell("Empower Rune"); } if (combatRoutine.UseCooldowns && isMelee && currentRunes >= 2 && runicPower >= 70 && CanCastNoRange("Breath")) { WoW.CastSpell("Breath"); useNextHRWCharge = true; return; } if (combatRoutine.UseCooldowns && isMelee && runicPower >= 70 && CanCastNoRange("Breath")) { return; } if (!WoW.TargetHasDebuff("Frost Fever") && currentRunes >= 1 && !hasBreath && CanCastInRange("Howling Blast") && !WoW.IsSpellOnCooldown("Howling Blast")) { WoW.CastSpell("Howling Blast"); return; } if (isMelee && currentRunes >= 1 && ((runicPower >= 48 && hasBreath) || !hasBreath) && (!combatRoutine.UseCooldowns || (combatRoutine.UseCooldowns && WoW.SpellCooldownTimeRemaining("Breath") >= 1500)) && CanCastNoRange("Remorseless Winter")) { WoW.CastSpell("Remorseless Winter"); return; } if (((runicPower >= 46 && hasBreath) || !hasBreath) && CanCastInRange("Howling Blast") && WoW.PlayerHasBuff("Rime")) { WoW.CastSpell("Howling Blast"); return; } if (WoW.Talent(6) != 1 && isMelee && currentRunes >= 2 && !hasBreath && WoW.PlayerHasBuff("Gathering Storm")) { WoW.CastSpell("Obliterate"); return; } if (runicPower >= 70 && !hasBreath && CanCastInRange("Frost Strike")) { WoW.CastSpell("Frost Strike"); return; } if (WoW.Talent(6) == 1 && CanCastInRange("Frost Strike") && currentRunes >= 1 && WoW.PlayerHasBuff("Killing Machine") && !hasBreath) { WoW.CastSpell("Frostscythe"); return; } if (isMelee && currentRunes >= 2 && (!hasBreath || (hasBreath && (runicPower <= 70 || hasBreath && currentRunes > 3)))) { WoW.CastSpell("Obliterate"); return; } if (runicPower >= 25 && CanCastInRange("Frost Strike") && !hasBreath && (!combatRoutine.UseCooldowns || (combatRoutine.UseCooldowns && WoW.SpellCooldownTimeRemaining("Breath") >= 1500))) { WoW.CastSpell("Frost Strike"); return; } if (WoW.Talent(2) == 3 && currentRunes <= 4 && runicPower <= 70 && CanCastNoRange("Horn") && !WoW.PlayerHasBuff("HEmpower Rune") && (hasBreath || (!hasBreath && WoW.SpellCooldownTimeRemaining("Breath") >= 1500))) { WoW.CastSpell("Horn"); } if (isMelee && WoW.HealthPercent <= 40 && WoW.PlayerHasBuff("Free DeathStrike") && !hasBreath) { WoW.CastSpell("Death Strike"); return; } }
public override void Pulse() { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsVisible && !WoW.IsMounted) { if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) { if (WoW.CanCast("UnendingResolve") && WoW.HealthPercent <= 20 && WoW.HealthPercent != 0) { WoW.CastSpell("UnendingResolve"); return; } if (WoW.CanCast("Healthstone") && WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.HealthPercent <= 30 && WoW.HealthPercent != 0) { WoW.CastSpell("Healthstone"); return; } if (WoW.CanCast("DoomGuard") && !WoW.IsSpellOnCooldown("DoomGuard") && (WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || WoW.Talent(4) != 3) && UseCooldowns) { WoW.CastSpell("DoomGuard"); return; } if (WoW.CanCast("Soul Harvest") && !WoW.IsMoving && UseCooldowns && !WoW.IsSpellOnCooldown("Soul Harvest") && WoW.CurrentSoulShards >= 4 && WoW.Talent(4) == 3) { WoW.CastSpell("Soul Harvest"); return; } if (WoW.CanCast("Berserk") && UseCooldowns && !WoW.IsSpellOnCooldown("Berserk") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserk"); return; } if (WoW.CanCast("Havoc") && !WoW.IsSpellOnCooldown("Havoc") && Control.ModifierKeys == Keys.Alt) // you will need a mouseover macro { WoW.CastSpell("Havoc"); return; } if (!WoW.IsMoving) { if (WoW.CanCast("Life Tap") && !WoW.PlayerHasBuff("Life Tap") && WoW.HealthPercent >= 40 && WoW.Talent(2) == 3) { WoW.CastSpell("Life Tap"); return; } if ((!WoW.TargetHasDebuff("Immolate") || WoW.TargetDebuffTimeRemaining("Immolate") <= 420) && !WoW.WasLastCasted("Immolate") && WoW.CanCast("Immolate")) { WoW.CastSpell("Immolate"); return; } if (WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") == 3) { WoW.CastSpell("DimRift"); return; } if (WoW.CanCast("Channel Demonfire") && !WoW.IsSpellOnCooldown("Channel Demonfire") && WoW.TargetHasDebuff("Immolate") && WoW.TargetDebuffTimeRemaining("Immolate") >= 500 && WoW.Talent(7) == 2) { WoW.CastSpell("Channel Demonfire"); return; } if (WoW.TargetDebuffTimeRemaining("Immolate") >= 1000 && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } if (WoW.TargetDebuffTimeRemaining("Immolate") >= 1000 && WoW.PlayerSpellCharges("Conflagrate") == 1 && WoW.WasLastCasted("Conflagrate") && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } if (WoW.PlayerHasBuff("Conflagrate") && WoW.TargetHasDebuff("ChaosBolt") && WoW.CanCast("Conflagrate") && WoW.CurrentSoulShards <= 4 && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } if (WoW.CanCast("Conflagrate") && WoW.PlayerSpellCharges("Conflagrate") == 2 && !WoW.WasLastCasted("Immolate") && WoW.CurrentSoulShards <= 4) { WoW.CastSpell("Conflagrate"); return; } if (WoW.CanCast("ServiceImp") && WoW.CurrentSoulShards >= 1 && (UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns)) { WoW.CastSpell("ServiceImp"); return; } if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards > 3 && (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") >= 500 && WoW.Talent(4) == 3 || UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns)) { WoW.CastSpell("ChaosBolt"); return; } if (WoW.CanCast("DimRift") && !WoW.IsSpellOnCooldown("DimRift") && WoW.PlayerSpellCharges("DimRift") <= 2) { WoW.CastSpell("DimRift"); return; } if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards >= 2 && (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") >= 500 && WoW.Talent(4) == 3 || UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns)) { WoW.CastSpell("ChaosBolt"); return; } if (WoW.CanCast("Incinerate") && WoW.CurrentSoulShards <= 1 || (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") <= 500 && WoW.CurrentSoulShards < 4 && WoW.Talent(4) == 3)) { WoW.CastSpell("Incinerate"); return; } if (WoW.CanCast("Incinerate") && WoW.TargetHasDebuff("ChaosBolt") && WoW.TargetDebuffTimeRemaining("ChaosBolt") >= 200 && WoW.CurrentSoulShards <= 3) { WoW.CastSpell("Incinerate"); return; } } if (WoW.IsMoving) { if (WoW.CanCast("DimRift")) { WoW.CastSpell("DimRift"); return; } if (WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } } } } }
public override void Pulse() // Updated for Legion (tested and working for single target) { if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted) { SelectRotation(4, 9999, 1); } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.IsMounted) { if ((!WoW.TargetHasDebuff("Agony") || WoW.TargetDebuffTimeRemaining("Agony") <= 540) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Agony") <= 150) && WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Agony"); return; } if ((WoW.CurrentSoulShards >= 3 || (WoW.CurrentSoulShards >= 2 && WoW.WasLastCasted("Unstable Affliction"))) && !WoW.IsMoving && WoW.CanCast("Unstable Affliction") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Unstable Affliction"); Thread.Sleep(200); return; } if ((WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction2") || WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction3") || WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction4") || WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction3") || WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction4") || WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction4") || WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.TargetHasDebuff("Unstable Affliction4") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.PlayerBuffStacks("Reap Souls") >= 12) && !WoW.PlayerIsCasting && WoW.CanCast("Reap Souls") && !WoW.PlayerHasBuff("Deadwind Harvester") && WoW.PlayerHasBuff("Tormented Souls")) { WoW.CastSpell("Reap Souls"); return; } if (WoW.CanCast("Life Tap") && !WoW.PlayerIsChanneling && WoW.Talent(2) == 3 && !WoW.PlayerHasBuff("Empowered Life Tap")) { WoW.CastSpell("Life Tap"); return; } if ((!WoW.TargetHasDebuff("Corruption") || WoW.TargetDebuffTimeRemaining("Corruption") <= 420) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Corruption") <= 150) && WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Corruption"); return; } if ((!WoW.TargetHasDebuff("Siphon Life") || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 420) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 150) && WoW.Talent(4) == 1 && WoW.CanCast("Siphon Life") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Siphon Life"); return; } if (WoW.CanCast("Felhunter") && WoW.Talent(6) == 2 && !WoW.IsSpellOnCooldown("Felhunter") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Felhunter"); return; } if (WoW.CanCast("Unstable Affliction") && !WoW.IsMoving && WoW.Talent(2) == 1 && !WoW.IsMoving && WoW.IsSpellInRange("Unstable Affliction") && !WoW.PlayerIsChanneling && WoW.CurrentSoulShards >= 1 && (!WoW.TargetHasDebuff("Unstable Affliction1") || !WoW.TargetHasDebuff("Unstable Affliction2") || !WoW.TargetHasDebuff("Unstable Affliction3") || !WoW.TargetHasDebuff("Unstable Affliction4") || !WoW.TargetHasDebuff("Unstable Affliction5") || (WoW.TargetDebuffTimeRemaining("Unstable Affliction1") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction2") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction3") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction4") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction5") <= 150))) { WoW.CastSpell("Unstable Affliction"); Thread.Sleep(200); return; } if (WoW.IsInCombat && WoW.Mana < 70 && WoW.HealthPercent > 70 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.CanCast("Haunt") && WoW.Talent(1) == 1 && !WoW.IsSpellOnCooldown("Haunt") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving) { WoW.CastSpell("Haunt"); return; } if (WoW.CanCast("Drain Soul") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving) { WoW.CastSpell("Drain Soul"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMounted) // Do AOE stuff here { if (WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Agony") || (WoW.TargetDebuffTimeRemaining("Agony") <= 540))) { WoW.CastSpell("Agony"); return; } if (WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Corruption") || (WoW.TargetDebuffTimeRemaining("Corruption") <= 420))) { WoW.CastSpell("Corruption"); return; } if (WoW.CanCast("Seed of Corruption") && WoW.IsSpellInRange("Agony") && !WoW.TargetHasDebuff("Seed of Corruption") && !WoW.IsMoving && WoW.CurrentSoulShards >= 1) { WoW.CastSpell("Seed of Corruption"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
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 } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) { if (WoW.HasTarget && WoW.TargetIsEnemy) { if (!doneOpener) { if (WoW.CanCast("Judgement") && WoW.Level >= 3) { WoW.CastSpell("Judgement"); doneOpener = true; } } if (WoW.CanCast("Judgement") && WoW.Level >= 3 && WoW.IsSpellInRange("Judgement")) { WoW.CastSpell("Judgement"); return; } if (WoW.CanCast("Rebuke") && WoW.Level >= 35 && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Rebuke") && WoW.TargetPercentCast > Random.Next(30, 85)) { WoW.CastSpell("Rebuke"); return; } if (WoW.CanCast("Lay on Hands") && WoW.PlayerHealthPercent < 25) { WoW.CastSpell("Lay on Hands"); return; } if (WoW.CanCast("Divine Shield") && WoW.PlayerHealthPercent < 15) { WoW.CastSpell("Divine Shield"); return; } if (WoW.CanCast("Flash of Light") && WoW.PlayerHealthPercent < 60 && WoW.Mana > 20) { WoW.CastSpell("Flash of Light"); return; } } if (WoW.CanCast("Judgement") && WoW.Level >= 3 && WoW.IsSpellInRange("Judgement")) { WoW.CastSpell("Judgement"); return; } if (WoW.CanCast("Wake of Ashes")) { WoW.CastSpell("Wake of Ashes"); return; } if (WoW.CanCast("Templar's Verdict") && WoW.Level >= 10 && WoW.TargetHasDebuff("Judgement") && WoW.UnitPower >= 3) { WoW.CastSpell("Templar's Verdict"); return; } if (WoW.CanCast("Blade of Justice") && WoW.Level >= 20) { WoW.CastSpell("Blade of Justice"); return; } if (WoW.CanCast("Crusader Strike") && WoW.Level <= 30) { WoW.CastSpell("Crusader Strike"); return; } if (WoW.CanCast("Zeal") && WoW.Level >= 30) { WoW.CastSpell("Zeal"); return; } if (WoW.Level >= 100 && WoW.Talent(7) == 2 && WoW.CanCast("Crusade") && UseCooldowns) { WoW.CastSpell("Crusade"); } if (WoW.Level >= 80 && WoW.Level < 100 && WoW.CanCast("Avenging Wrath") && UseCooldowns) { WoW.CastSpell("Avenging Wrath"); } return; if (WoW.CanCast("Crusade") && WoW.Level >= 100 && WoW.Talent(7) == 2) { WoW.CastSpell("Crusade"); return; } if (WoW.CanCast("Justicar's Vengeance") && WoW.Level >= 100 && WoW.CurrentHolyPower >= 5 && UseCooldowns) { WoW.CastSpell("Justicar's Vengeance"); return; } } if (combatRoutine.Type == RotationType.Cleave) { if (WoW.HasTarget && WoW.TargetIsEnemy) { if (!doneOpener) { if (WoW.CanCast("Judgement") && WoW.Level >= 3) { WoW.CastSpell("Judgement"); doneOpener = true; } } if (WoW.CanCast("Judgement") && WoW.Level >= 3 && WoW.IsSpellInRange("Judgement")) { WoW.CastSpell("Judgement"); return; } if (WoW.CanCast("Rebuke") && WoW.Level >= 35 && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Rebuke") && WoW.TargetPercentCast > Random.Next(30, 85)) { WoW.CastSpell("Rebuke"); return; } if (WoW.CanCast("Lay on Hands") && WoW.PlayerHealthPercent < 25) { WoW.CastSpell("Lay on Hands"); return; } if (WoW.CanCast("Divine Shield") && WoW.PlayerHealthPercent < 15) { WoW.CastSpell("Divine Shield"); return; } if (WoW.CanCast("Flash of Light") && WoW.PlayerHealthPercent < 60 && WoW.Mana > 20) { WoW.CastSpell("Flash of Light"); return; } } if (WoW.CanCast("Judgement") && WoW.Level >= 3 && WoW.IsSpellInRange("Judgement")) { WoW.CastSpell("Judgement"); return; } if (WoW.CanCast("Divine Storm") && WoW.Level >= 10 && WoW.TargetHasDebuff("Judgement") && WoW.UnitPower >= 3) { WoW.CastSpell("Divine Storm"); return; } if (WoW.CanCast("Blade of Justice") && WoW.Level >= 20) { WoW.CastSpell("Blade of Justice"); return; } if (WoW.CanCast("Crusader Strike") && WoW.Level <= 30) { WoW.CastSpell("Crusader Strike"); return; } if (WoW.CanCast("Zeal") && WoW.Level >= 30) { WoW.CastSpell("Zeal"); return; } if (WoW.CanCast("Wake of Ashes")) { WoW.CastSpell("Wake of Ashes"); return; } if (WoW.Level >= 100 && WoW.Talent(7) == 2 && WoW.CanCast("Crusade") && UseCooldowns) { WoW.CastSpell("Crusade"); } if (WoW.Level >= 80 && WoW.Level < 100 && WoW.CanCast("Avenging Wrath") && UseCooldowns) { WoW.CastSpell("Avenging Wrath"); } return; if (WoW.CanCast("Justicar's Vengeance") && WoW.Level >= 100 && WoW.CurrentHolyPower >= 5 && UseCooldowns) { WoW.CastSpell("Justicar's Vengeance"); return; } } }
public override void Pulse() { //Combat Time if (CombatTime.IsRunning && !WoW.IsInCombat) { CombatTime.Reset(); } if (!CombatTime.IsRunning && WoW.IsInCombat) { CombatTime.Start(); } //Dreadstalkers Time Remaining (12000 ms) (EXPERIMENTAL) if (DreadstalkersTime.IsRunning && WoW.DreadstalkersCount == 0) { DreadstalkersTime.Reset(); } if (!DreadstalkersTime.IsRunning && WoW.DreadstalkersCount >= 1) { DreadstalkersTime.Start(); } if (DreadstalkersTime.IsRunning && DreadstalkersTime.ElapsedMilliseconds > 12000) { DreadstalkersTime.Reset(); } //Imp Time Remaining (12000 ms) (EXPERIMENTAL) if (ImpTime.IsRunning && WoW.WildImpsCount == 0) { ImpTime.Reset(); } if (!ImpTime.IsRunning && WoW.WildImpsCount >= 1) { ImpTime.Start(); } var DreadstalkersRemainingDuration = Convert.ToSingle((12000f - DreadstalkersTime.ElapsedMilliseconds) / 10f); var ImpsRemainingDuration = Convert.ToSingle((12000f - ImpTime.ElapsedMilliseconds) / 10f); // Single Target Rotation if (combatRoutine.Type == RotationType.SingleTarget) { // Normal Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting) { Log.Write("Imp Timer running: " + ImpsRemainingDuration, Color.DarkViolet); Log.Write("Imp Time: " + ImpTime.ElapsedMilliseconds, Color.DarkViolet); Log.Write("Imp Count: " + WoW.WildImpsCount, Color.Green); Log.Write("Dread Timer running: " + DreadstalkersTime.ElapsedMilliseconds, Color.DarkViolet); Log.Write("Dread Time: " + DreadstalkersRemainingDuration, Color.DarkViolet); //Implosion (if talent) if (WoW.CanCast("Implosion") && WoW.Talent(2) == 3 && WoW.IsSpellInRange("Doom")) { // if (ImpsRemainingDuration <= GCD && WoW.PlayerHasBuff("DemonicSynergy")) if (WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy") && ImpsRemainingDuration >= GCD) { WoW.CastSpell("Implosion"); return; } } //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && WoW.Talent(1) == 2 && WoW.IsSpellInRange("Doom") && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < TwoSecondCast + 2) { WoW.CastSpell("Shadowflame"); return; } //Service Pet (if talent) if (WoW.CanCast("GrimoireFelguard") && UseCooldowns && WoW.Talent(6) == 2 && WoW.IsSpellInRange("Doom") && WoW.CurrentSoulShards >= 1 && UseCooldowns) { WoW.CastSpell("GrimoireFelguard"); empowered = false; return; } // Doomguard if (WoW.CanCast("Doomguard") && WoW.CurrentSoulShards >= 1 && UseCooldowns && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Doomguard"); empowered = false; return; } //Felstorm if (WoW.CanCast("Felstorm") && WoW.HasPet && WoW.PetHasBuff("DemonicEmpowerment")) { WoW.CastSpell("Felstorm"); return; } //Call Dreadstalkers (if NOT talent Summon Darkglare) if (WoW.CanCast("CallDreadstalkers") && WoW.Talent(7) != 1 && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } //Hand Of Guldan (if NOT talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) != 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); empowered = false; threeimps = false; ImpTime.Restart(); return; } //Summon Darkglare (if talent) if (WoW.CanCast("SummonDarkglare") && WoW.Talent(7) == 1 && WoW.CurrentSoulShards >= 1 && WoW.TargetHasDebuff("Doom") && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { if (WoW.LastSpell == "HandOfGuldan" || WoW.LastSpell == "CallDreadstalkers") { WoW.CastSpell("SummonDarkglare"); Log.Write("1", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") > 5 && WoW.CurrentSoulShards < 3) { WoW.CastSpell("SummonDarkglare"); Log.Write("2", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") >= GCD && WoW.CurrentSoulShards >= 3) { WoW.CastSpell("SummonDarkglare"); Log.Write("3", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") >= GCD && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling")) { WoW.CastSpell("SummonDarkglare"); Log.Write("4", Color.Red); empowered = false; return; } } //Call Dreadstalkers (if talent Summon Darkglare) if (WoW.CanCast("CallDreadstalkers") && WoW.Talent(7) == 1 && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 3) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling")) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } } //Hand Of Guldan if (WoW.CanCast("HandOfGuldan") && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 3 && WoW.LastSpell == "CallDreadstalkers" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); empowered = false; threeimps = true; ImpTime.Restart(); return; } //Hand Of Guldan (if talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) == 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 5 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= OneFiveCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); threeimps = false; empowered = false; ImpTime.Restart(); return; } //Hand Of Guldan (if talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) == 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") > 2 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); threeimps = false; empowered = false; ImpTime.Restart(); return; } //Demonic Empowerment (if last spell was Hand Of Guldan) if (WoW.CanCast("DemonicEmpowerment") && WoW.LastSpell == "HandOfGuldan" && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("DemonicEmpowerment"); empowered = true; return; } //Demonic Empowerment if (WoW.CanCast("DemonicEmpowerment") && (!empowered || !WoW.PetHasBuff("DemonicEmpowerment")) && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("DemonicEmpowerment"); empowered = true; return; } /* * //Doom (if NOT talent Hand of Doom) * if(WoW.CanCast("Doom") && (!WoW.TargetHasDebuff("Doom") || WoW.TargetDebuffTimeRemaining("Doom") < 5) && WoW.IsSpellInRange("Doom")) * { * WoW.CastSpell("Doom"); * return; * } * * //Soul Harvest * if(WoW.CanCast("SoulHarvest") && WoW.IsSpellInRange("Doom")) * { * WoW.CastSpell("SoulHarvest"); * return; * } */ //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && WoW.Talent(1) == 2 && WoW.IsSpellInRange("Doom") && WoW.PlayerSpellCharges("Shadowflame") == 2) { WoW.CastSpell("Shadowflame"); return; } //Thal'kiel's Consumption if (WoW.CanCast("TK") && WoW.DreadstalkersCount >= 1 && DreadstalkersRemainingDuration > TwoSecondCast && ((WoW.WildImpsCount >= 1 && !threeimps) || WoW.WildImpsCount >= 2) && ImpsRemainingDuration > TwoSecondCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("TK"); return; } //Life Tap if (WoW.CanCast("LifeTap") && WoW.Mana <= 30) { WoW.CastSpell("LifeTap"); return; } //Demonwrath (if moving) if (WoW.CanCast("Demonwrath") && WoW.IsMoving && !WoW.PlayerHasBuff("Norgannon")) { WoW.CastSpell("Demonwrath"); return; } //Demonbolt (if talent) if (WoW.CanCast("Demonbolt") && WoW.Talent(7) == 2 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("Demonbolt"); return; } //Shadowbolt (if NOT Demonbolt talent) if (WoW.CanCast("Shadowbolt") && WoW.Talent(7) != 2 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("Demonbolt"); return; } //Life Tap if (WoW.CanCast("LifeTap") && WoW.Mana < 100) { WoW.CastSpell("LifeTap"); return; } } } // AoE Rotation if (combatRoutine.Type == RotationType.AOE) { Log.Write("Imp Time: " + ImpsRemainingDuration, Color.DarkViolet); // AoE Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting) { //Implosion (if talent) if (WoW.CanCast("Implosion") && WoW.Talent(2) == 3 && WoW.IsSpellInRange("Doom")) { if (ImpsRemainingDuration <= GCD && WoW.PlayerHasBuff("DemonicSynergy")) { WoW.CastSpell("Implosion"); return; } if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy")) { WoW.CastSpell("Implosion"); return; } if (WoW.WildImpsCount == 1 && ImpsRemainingDuration <= GCD) { WoW.CastSpell("Implosion"); return; } // if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1) if (WoW.WasLastCasted("HandOfGuldan") && WoW.WildImpsCount == 1) { WoW.CastSpell("Implosion"); return; } } //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && WoW.Talent(1) == 2 && WoW.IsSpellInRange("Doom") && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < TwoSecondCast + 2) { WoW.CastSpell("Shadowflame"); return; } //Felstorm if (WoW.CanCast("Felstorm") && WoW.HasPet && WoW.PetHasBuff("DemonicEmpowerment")) { WoW.CastSpell("Felstorm"); return; } //Call Dreadstalkers (if NOT talent Summon Darkglare or Implosion) if (WoW.CanCast("CallDreadstalkers") && WoW.Talent(7) != 1 && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.Talent(2) != 3 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } //Hand Of Guldan (if NOT talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) != 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); empowered = false; threeimps = false; ImpTime.Restart(); return; } //Summon Darkglare (if talent) if (WoW.CanCast("SummonDarkglare") && WoW.Talent(7) == 1 && WoW.CurrentSoulShards >= 1 && WoW.TargetHasDebuff("Doom") && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { if (WoW.LastSpell == "HandOfGuldan" || WoW.LastSpell == "CallDreadstalkers") { WoW.CastSpell("SummonDarkglare"); Log.Write("1", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") > 500 && WoW.CurrentSoulShards < 3) { WoW.CastSpell("SummonDarkglare"); Log.Write("2", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") >= GCD && WoW.CurrentSoulShards >= 3) { WoW.CastSpell("SummonDarkglare"); Log.Write("3", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") >= GCD && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling")) { WoW.CastSpell("SummonDarkglare"); Log.Write("4", Color.Red); empowered = false; return; } } //Call Dreadstalkers (if talent Summon Darkglare and not Implosion) if (WoW.CanCast("CallDreadstalkers") && WoW.Talent(7) == 1 && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.Talent(2) != 3 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 3) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling")) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } } //Hand Of Guldan if (WoW.CanCast("HandOfGuldan") && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 3 && WoW.LastSpell == "CallDreadstalkers" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); empowered = false; threeimps = true; ImpTime.Restart(); return; } //Hand Of Guldan (if talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) == 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 5 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= OneFiveCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); threeimps = false; empowered = false; ImpTime.Restart(); return; } //Hand Of Guldan (if talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) == 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") > 2 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); threeimps = false; empowered = false; ImpTime.Restart(); return; } //Demonic Empowerment (if last spell was Hand Of Guldan) if (WoW.CanCast("DemonicEmpowerment") && WoW.LastSpell == "HandOfGuldan" && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("DemonicEmpowerment"); empowered = true; return; } //Demonic Empowerment if (WoW.CanCast("DemonicEmpowerment") && (!empowered || !WoW.PetHasBuff("DemonicEmpowerment")) && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("DemonicEmpowerment"); empowered = true; return; } /* * //Doom (if NOT talent Hand of Doom) * if(WoW.CanCast("Doom") && (!WoW.TargetHasDebuff("Doom") || WoW.TargetDebuffTimeRemaining("Doom") < 5) && WoW.IsSpellInRange("Doom")) * { * WoW.CastSpell("Doom"); * return; * } * * //Soul Harvest * if(WoW.CanCast("SoulHarvest") && WoW.IsSpellInRange("Doom")) * { * WoW.CastSpell("SoulHarvest"); * return; * } */ //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && WoW.Talent(1) == 2 && WoW.IsSpellInRange("Doom") && WoW.PlayerSpellCharges("Shadowflame") == 2) { WoW.CastSpell("Shadowflame"); return; } //Thal'kiel's Consumption if (WoW.CanCast("TK") && ((WoW.DreadstalkersCount >= 1 && DreadstalkersRemainingDuration > TwoSecondCast) || WoW.Talent(2) == 3) && ((WoW.WildImpsCount >= 1 && !threeimps) || WoW.WildImpsCount >= 2) && ImpsRemainingDuration > TwoSecondCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("TK"); return; } //Life Tap if (WoW.CanCast("LifeTap") && WoW.Mana <= 30) { WoW.CastSpell("LifeTap"); return; } //Demonwrath if (WoW.CanCast("Demonwrath") && !WoW.PlayerIsChanneling) { WoW.CastSpell("Demonwrath"); return; } //Life Tap if (WoW.CanCast("LifeTap") && WoW.Mana < 100 && !WoW.PlayerIsChanneling) { WoW.CastSpell("LifeTap"); } } } }
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 (UseCooldowns) { } if (combatRoutine.Type == RotationType.SingleTarget) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.TargetIsVisible && !WoW.IsMounted && !WoW.PlayerIsChanneling) { if (WoW.CanPreCast("Kick") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 60 && WoW.IsSpellInRange("Ghostly Strike") && !WoW.IsSpellOnCooldown("Kick")) { WoW.CastSpell("Kick"); return; } if (WoW.CanPreCast("Blade Flurry") && WoW.IsSpellInRange("Ghostly Strike") && WoW.CountEnemyNPCsInRange >= 2 && !WoW.PlayerHasBuff("Blade Flurry")) { WoW.CastSpell("Blade Flurry"); return; } if (WoW.CanPreCast("Cancel Blade Flurry") && WoW.IsSpellInRange("Ghostly Strike") && WoW.PlayerHasBuff("Blade Flurry") && WoW.CountEnemyNPCsInRange <= 1) { WoW.CastSpell("Cancel Blade Flurry"); return; } if (WoW.CanPreCast("Ambush") && WoW.Energy >= 60 && WoW.IsSpellInRange("Ghostly Strike") && WoW.CurrentComboPoints >= 4 && (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Vanish"))) { WoW.CastSpell("Ambush"); return; } if (WoW.CanCast("Slice and Dice") && WoW.Energy >= 21 && WoW.IsSpellInRange("Ghostly Strike") && WoW.Talent(7) == 1 && WoW.CurrentComboPoints >= 4 && WoW.PlayerHasBuff("Loaded Dice")) { WoW.CastSpell("Slice and Dice"); return; } if (WoW.CanCast("Slice and Dice") && WoW.Energy >= 21 && WoW.IsSpellInRange("Ghostly Strike") && !WoW.PlayerHasBuff("Slice and Dice") && WoW.PlayerBuffTimeRemaining("Slice and Dice") <= 500 && WoW.CurrentComboPoints >= 4 && WoW.Talent(7) == 1) { WoW.CastSpell("Slice and Dice"); return; } if (WoW.CanCast("Roll the Bones") && WoW.Energy >= 21 && WoW.IsSpellInRange("Ghostly Strike") && WoW.Talent(7) == 2 && WoW.PlayerHasBuff("Loaded Dice") && WoW.CurrentComboPoints >= 4) { WoW.CastSpell("Roll the Bones"); return; } if (WoW.CanCast("Roll the Bones") && WoW.Talent(7) == 2 && WoW.Energy >= 21 && WoW.IsSpellInRange("Ghostly Strike") && WoW.CurrentComboPoints >= 4 && !WoW.PlayerHasBuff("Buried Treasure") && !WoW.PlayerHasBuff("Shark Infested Waters") && !WoW.PlayerHasBuff("True Bearing") && !WoW.PlayerHasBuff("Jolly Roger") && !WoW.PlayerHasBuff("Broadsides")) { WoW.CastSpell("Roll the Bones"); return; } if (WoW.CanPreCast("Ghostly Strike") && WoW.IsSpellInRange("Ghostly Strike") && WoW.Energy >= 30 && WoW.CurrentComboPoints <= 5 && !WoW.TargetHasDebuff("Ghostly Strike") && WoW.TargetDebuffTimeRemaining("Ghostly Strike") <= 200 && WoW.Talent(1) == 1) { WoW.CastSpell("Ghostly Strike"); return; } if (WoW.CanPreCast("Adrenaline Rush") && UseCooldowns && WoW.IsSpellInRange("Ghostly Strike")) { WoW.CastSpell("Adrenaline Rush"); return; } if (WoW.CanPreCast("Vanish") && UseCooldowns && WoW.IsSpellInRange("Ghostly Strike") && WoW.Energy >= 60 && !WoW.PlayerHasBuff("Adrenaline Rush")) { WoW.CastSpell("Vanish"); return; } if (WoW.CanPreCast("Arcane Torrent") && UseCooldowns && WoW.IsSpellInRange("Ghostly Strike") && !WoW.PlayerHasBuff("Adrenaline Rush") && WoW.Energy <= 20 && WoW.PlayerRace == "BloodElf") { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.CanPreCast("Marked for Death") && WoW.IsSpellInRange("Ghostly Strike") && WoW.CurrentComboPoints <= 1 && WoW.Talent(7) == 2) { WoW.CastSpell("Marked for Death"); return; } if (WoW.CanPreCast("Curse of the Dreadblades") && UseCooldowns && WoW.IsSpellInRange("Ghostly Strike")) { WoW.CastSpell("Curse of the Dreadblades"); return; } if (WoW.CanCast("Between the Eyes") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 31 && WoW.IsSpellInRange("Ghostly Strike")) { WoW.CastSpell("Between the Eyes"); return; } if (WoW.CanCast("Run Through") && WoW.CurrentComboPoints == 6 && WoW.Energy >= 31 && WoW.IsSpellInRange("Ghostly Strike") || (WoW.PlayerHasBuff("Broadsides") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 31)) { WoW.CastSpell("Run Through"); return; } if (WoW.CanPreCast("Pistol Shot") && WoW.IsSpellInRange("Ghostly Strike") && WoW.PlayerHasBuff("Opportunity") && WoW.CurrentComboPoints <= 5) { WoW.CastSpell("Pistol Shot"); return; } if (WoW.CanPreCast("Saber Slash") && WoW.CurrentComboPoints <= 5 && WoW.Energy >= 50 && WoW.IsSpellInRange("Ghostly Strike")) { WoW.CastSpell("Saber Slash"); return; } } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy) //First things go first { if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) { WoW.CastSpell("Wind Shear"); return; } if (WoW.IsMoving) {//Stormkeeper if (WoW.CanCast("Flame Shock") && !WoW.TargetHasDebuff("Flame Shock")) { WoW.CastSpell("Flame Shock"); return; } if (WoW.PlayerHasBuff("Lava Surge") && WoW.CanCast("Lava Burst")) { WoW.CastSpell("Lava Burst"); return; } if (WoW.PlayerHasBuff("Stormkeeper") && WoW.CanCast("Lightning Bolt")) { WoW.CastSpell("Lightning Bolt"); return; } if (WoW.CanCast("Totem Mastery") && !WoW.PlayerHasBuff("Totem Mastery")) { WoW.CastSpell("Totem Mastery"); return; } return; } if (WoW.CanCast("Flame Shock") && (!WoW.TargetHasDebuff("Flame Shock") || (WoW.TargetDebuffTimeRemaining("Flame Shock") <= 9 && WoW.Maelstrom >= 20 && WoW.PlayerHasBuff("Elemental Focus")))) { WoW.CastSpell("Flame Shock"); return; } if (WoW.CanCast("Fire Elemental") && WoW.CooldownsOn) { WoW.CastSpell("Fire Elemental"); return; } if (WoW.Talent(7) == 1 && WoW.CanCast("Ascendance") && WoW.CooldownsOn) // && WoW.IsBoss) //use Ascendance { WoW.CastSpell("Ascendance"); return; } if (WoW.CanCast("Totem Mastery") && !WoW.PlayerHasBuff("Totem Mastery")) { WoW.CastSpell("Totem Mastery"); return; } if (WoW.CanCast("Elemental Blast")) { WoW.CastSpell("Elemental Blast"); return; } if (WoW.Talent(7) == 3 && WoW.CanCast("Icefury") && WoW.Maelstrom < 101) { WoW.CastSpell("Icefury"); } if (WoW.PlayerHasBuff("Icefury") && WoW.Maelstrom >= 20 && WoW.CanCast("Frost Shock")) { WoW.CastSpell("Frost Shock"); } if (WoW.CanCast("Earth Shock") && WoW.Maelstrom >= 117) { WoW.CastSpell("Earth Shock"); return; } if (WoW.CanCast("Lava Burst") && WoW.PlayerHasBuff("Lava Surge")) { WoW.CastSpell("Lava Burst"); return; } if (WoW.CanCast("Lightning Bolt") && WoW.PlayerHasBuff("Power of the Maelstrom")) { WoW.CastSpell("Lightning Bolt"); return; } if (WoW.CanCast("Earth Shock") && !WoW.PlayerHasBuff("Lava Surge") && WoW.Maelstrom >= 111) { WoW.CastSpell("Earth Shock"); return; } if (WoW.CanCast("Stormkeeper") && !WoW.PlayerHasBuff("Ascendance")) //use stormkeeper after ascendance { WoW.CastSpell("Stormkeeper"); return; } if (WoW.CanCast("Lava Burst")) { WoW.CastSpell("Lava Burst"); return; } if (WoW.CanCast("Lightning Bolt")) { WoW.CastSpell("Lightning Bolt"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy) //First things go first { if (WoW.CanCast("Elemental Blast")) { WoW.CastSpell("Elemental Blast"); return; } if (WoW.CanCast("Flame Shock") && !WoW.TargetHasDebuff("Flame Shock")) { WoW.CastSpell("Flame Shock"); return; } if (WoW.CanCast("Lava Burst") && WoW.PlayerHasBuff("Lava Surge")) { WoW.CastSpell("Lava Burst"); return; } if (WoW.PlayerHasBuff("Ascendance") && WoW.CanCast("Lava Beam")) { WoW.CastSpell("Lava Beam"); return; } if (WoW.CanCast("Chain Lightning")) { WoW.CastSpell("Chain Lightning"); return; } } } }
public override void Pulse() // Updated for Legion (tested and working for single target) { if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted) { SelectRotation(4, 9999, 1); } //Healthstone - Potion if ((WoW.CanCast("Healthstone") || WoW.CanCast("Potion")) && (WoW.ItemCount("Healthstone") >= 1 || WoW.ItemCount("Potion") >= 1) && (!WoW.ItemOnCooldown("Healthstone") || !WoW.ItemOnCooldown("Potion")) && WoW.HealthPercent <= 30 && !WoW.IsMounted) { WoW.CastSpell("Healthstone"); WoW.CastSpell("Potion"); return; } //Shield of Vengeance if (WoW.CanCast("Shield of Vengeance") && WoW.HealthPercent <= 40 && !WoW.IsMounted) { WoW.CastSpell("Shield of Vengeance"); return; } //Lay on Hands if (WoW.CanCast("Lay on Hands") && WoW.HealthPercent <= 20 && !WoW.IsMounted) { WoW.CastSpell("Lay on Hands"); return; } //Divine Steed if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_4) < 0 && WoW.CanCast("Divine Steed") && !WoW.PlayerHasBuff("Divine Steed")) { WoW.CastSpell("Divine Steed"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.HealthPercent != 0) { //Crusade if (WoW.CanCast("Crusade") && WoW.Talent(7) == 2 && WoW.CurrentHolyPower >= 3 && WoW.IsSpellInRange("Templar Verdict") && (WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Time Warp") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums of War"))) { WoW.CastSpell("Crusade"); return; } //Avenging Wrath if (WoW.CanCast("Avenging Wrath") && WoW.CurrentHolyPower >= 3 && WoW.IsSpellInRange("Templar Verdict") && (WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Time Warp") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums of War"))) { WoW.CastSpell("Avenging Wrath"); return; } //Hammer of Justice if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_ADD) < 0 && WoW.CanCast("Hammer of Justice") ) { WoW.CastSpell("Hammer of Justice"); return; } //Holy Wrath if (WoW.CanCast("Holy Wrath") && WoW.Talent(7) == 3 && WoW.HealthPercent <= 40 && WoW.IsSpellInRange("Templar Verdict")) { WoW.CastSpell("Holy Wrath"); return; } //Single Target Rotation //Execution Sentence if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Execution Sentence") && WoW.TargetHasDebuff("Judgement") && WoW.TargetDebuffTimeRemaining("Judgement") >= 650 && WoW.Talent(1) == 2) { WoW.CastSpell("Execution Sentence"); return; } //Justicar's Vengeance if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Justicars Vengeance") && WoW.PlayerHasBuff("Divine Purpose") && WoW.IsSpellInRange("Templar Verdict") && WoW.Talent(5) == 1) { WoW.CastSpell("Justicars Vengeance"); return; } //Templar's Verdict if (combatRoutine.Type == RotationType.SingleTarget && (WoW.CurrentHolyPower >= 3 || WoW.PlayerHasBuff("Divine Purpose") || (WoW.CurrentHolyPower >= 2 && WoW.PlayerHasBuff("The Fires of Justice"))) && WoW.CanCast("Templar Verdict") && WoW.IsSpellInRange("Templar Verdict") && WoW.TargetHasDebuff("Judgement") && WoW.TargetDebuffTimeRemaining("Judgement") >= 50) { WoW.CastSpell("Templar Verdict"); return; } //Judgement if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Judgement") && WoW.CurrentHolyPower >= 3) { WoW.CastSpell("Judgement"); return; } //Wake of Ashes if (combatRoutine.Type == RotationType.SingleTarget && WoW.CurrentHolyPower == 0 && WoW.CanCast("Wake of Ashes") && WoW.IsSpellInRange("Templar Verdict")) { WoW.CastSpell("Wake of Ashes"); return; } //Blade of Justice if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Blade of Justice") && WoW.IsSpellInRange("Blade of Justice") && WoW.CurrentHolyPower <= 3 && WoW.Talent(4) != 3) { WoW.CastSpell("Blade of Justice"); return; } //Divine Hammer if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Divine Hammer") && WoW.IsSpellInRange("Templar Verdict") && WoW.CurrentHolyPower <= 3 && WoW.Talent(4) == 3) { WoW.CastSpell("Divine Hammer"); return; } //Crusader Strike if (combatRoutine.Type == RotationType.SingleTarget && WoW.IsSpellInRange("Templar Verdict") && WoW.CurrentHolyPower < 5 && WoW.PlayerSpellCharges("Crusader Strike") >= 1 && WoW.CanCast("Crusader Strike") && WoW.Talent(2) != 2) { WoW.CastSpell("Crusader Strike"); return; } //Zeal if (combatRoutine.Type == RotationType.SingleTarget && WoW.IsSpellInRange("Templar Verdict") && WoW.CurrentHolyPower < 5 && WoW.PlayerSpellCharges("Zeal") >= 1 && WoW.CanCast("Zeal") && WoW.Talent(2) == 2) { WoW.CastSpell("Zeal"); return; } //Consecration if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Consecration") && WoW.IsSpellInRange("Templar Verdict") && WoW.Talent(1) == 3) { WoW.CastSpell("Consecration"); return; } //AoE Rotation = 3+ Targets //Divine Storm if (combatRoutine.Type == RotationType.AOE && (WoW.CurrentHolyPower >= 3 || WoW.PlayerHasBuff("Divine Purpose") || (WoW.CurrentHolyPower >= 2 && WoW.PlayerHasBuff("The Fires of Justice"))) && WoW.CanCast("Divine Storm") && WoW.IsSpellInRange("Templar Verdict")) { WoW.CastSpell("Divine Storm"); return; } //Judgement if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Judgement")) { WoW.CastSpell("Judgement"); return; } //Wake of Ashes if (combatRoutine.Type == RotationType.AOE && WoW.CurrentHolyPower == 0 && WoW.CanCast("Wake of Ashes") && WoW.IsSpellInRange("Templar Verdict")) { WoW.CastSpell("Wake of Ashes"); return; } //Consecration if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Consecration") && WoW.IsSpellInRange("Templar Verdict") && WoW.Talent(1) == 3) { WoW.CastSpell("Consecration"); return; } //Blade of Justice if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Blade of Justice") && WoW.IsSpellInRange("Blade of Justice") && WoW.CurrentHolyPower <= 3 && WoW.Talent(4) != 3) { WoW.CastSpell("Blade of Justice"); return; } //Divine Hammer if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Divine Hammer") && WoW.IsSpellInRange("Templar Verdict") && WoW.CurrentHolyPower <= 3 && WoW.Talent(4) == 3) { WoW.CastSpell("Divine Hammer"); return; } //Crusader Strike if (combatRoutine.Type == RotationType.AOE && WoW.IsSpellInRange("Templar Verdict") && WoW.CurrentHolyPower < 5 && WoW.PlayerSpellCharges("Crusader Strike") >= 1 && WoW.CanCast("Crusader Strike") && WoW.Talent(2) != 2) { WoW.CastSpell("Crusader Strike"); return; } //Zeal if (combatRoutine.Type == RotationType.AOE && WoW.IsSpellInRange("Templar Verdict") && WoW.CurrentHolyPower < 5 && WoW.PlayerSpellCharges("Zeal") >= 1 && WoW.CanCast("Zeal") && WoW.Talent(2) == 2) { WoW.CastSpell("Zeal"); return; } if (combatRoutine.Type == RotationType.SingleTargetCleave) //Cleave rotation = 2 targets { // Do Single Target Cleave stuff here if applicable else ignore this one } } }
public override void Pulse() { if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted) { SelectRotation(4, 100, 1); } if (DetectKeyPress.GetKeyState(0x6A) < 0) { UseCooldowns = !UseCooldowns; Thread.Sleep(150); } if (WoW.IsInCombat && !WoW.HasTarget) { WoW.KeyPressRelease(WoW.Keys.Tab); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { Log.Write("focus * cdremain KC >300 : " + ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300)); if (WoW.CanCast("FeignDeath") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "FeignDeath Percent") && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0) { WoW.CastSpell("FeignDeath"); return; } if (WoW.CanCast("Exhilaration") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "Exhilaration Percent") && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhilaration"); return; } if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "AspectoftheTurtle Percent") && AspectoftheTurtle && !WoW.IsSpellOnCooldown("AspectoftheTurtle") && WoW.HealthPercent != 0) { WoW.CastSpell("AspectoftheTurtle"); return; } if (WoW.CanCast("Ancient Healing Potion") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ancient Healing Potion") && WoW.HealthPercent != 0) { WoW.CastSpell("Ancient Healing Potion"); return; } if (WoW.CanCast("Silkweave Bandage") && WoW.HealthPercent < 40 && WoW.PlayerHasBuff("Turtle") && !WoW.IsMoving && !WoW.PlayerHasDebuff("Bandaged")) { WoW.CastSpell("Silkweave Bandage"); return; } if (!WoW.HasPet && WoW.CanCast("Wolf")) { WoW.CastSpell("Wolf"); return; } if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix")) { WoW.CastSpell("Phoenix"); return; } if (WoW.PetHealthPercent <= 90 && !WoW.PetHasBuff("Heal Pet") && HealPet && WoW.CanCast("Revive Pet") && !WoW.IsMoving) { WoW.CastSpell("Heal Pet"); return; } if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving) { WoW.CastSpell("Revive Pet"); return; } if (WoW.TargetIsCasting) { if (WoW.CanCast("Counter Shot") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 60 && !WoW.IsSpellOnCooldown("Counter Shot") && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Counter Shot")) { WoW.CastSpell("Counter Shot"); return; } } } if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("A Murder of Crows") && WoW.Talent(6) == 1 && WoW.Focus >= 25 && WoW.IsSpellInRange("Cobra Shot") && !WoW.IsSpellOnCooldown("A Murder of Crows")) { WoW.CastSpell("A Murder of Crows"); return; } if (WoW.CanCast("Volley") && !WoW.PlayerHasBuff("Volley") && WoW.Talent(6) == 3) { WoW.CastSpell("Volley"); return; } if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Focus <= 85) { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserking"); return; } if (WoW.CanCast("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Chimaera Shot") && WoW.Focus < 90 && WoW.IsSpellOnCooldown("Dire Frenzy") && WoW.IsSpellOnCooldown("Kill Command") && WoW.CanCast("Chimaera Shot") && WoW.Talent(2) == 3) { WoW.CastSpell("Chimaera Shot"); return; } if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish")) { WoW.CastSpell("Kil'jaeden's Burning Wish"); return; } // stampede,if=buff.bloodlust.up|buff.bestial_wrath.up|cooldown.bestial_wrath.remains<=2|target.time_to_die<=14 if (WoW.CanCast("Stampede") && WoW.Talent(7) == 1 && WoW.IsSpellInRange("Cobra Shot") && ((WoW.PlayerHasBuff("Bestial Wrath")) || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2)) && !WoW.PlayerHasBuff("AspectoftheTurtle") && !WoW.IsSpellOnCooldown("Stampede")) { WoW.CastSpell("Stampede"); return; } //dire_beast,if=cooldown.bestial_wrath.remains>3 if (WoW.CanCast("Dire Beast") && WoW.Talent(2) != 2 && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Beast"); return; } //dire_frenzy,if=(cooldown.bestial_wrath.remains>6&(!equipped.the_mantle_of_command|pet.cat.buff.dire_frenzy.remains<=gcd.max*1.2)) if (WoW.CanCast("Dire Frenzy") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && (WoW.Legendary(1) != 3 || WoW.PetBuffTimeRemaining("Dire Frenzy") <= 70)) && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } //|(charges>=2&focus.deficit>=25+talent.dire_stable.enabled*12)|target.time_to_die<9 if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 95 && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 83 && WoW.Talent(2) == 2 && WoW.Talent(1) == 3 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } //aspect_of_the_wild,if=buff.bestial_wrath.up|target.time_to_die<12 if (WoW.CanCast("Aspect of the Wild") && UseCooldowns && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Aspect of the Wild"); return; } //titans_thunder,if=talent.dire_frenzy.enabled|cooldown.dire_beast.remains>=3|(buff.bestial_wrath.up&pet.dire_beast.active) if (WoW.CanCast("Titan's Thunder") && (WoW.Talent(2) == 2 || (WoW.Talent(2) != 2 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 300) || (WoW.Talent(2) != 2 && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerHasBuff("Dire Beast"))) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Titan's Thunder"); return; } //bestial_wrath if (WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Bestial Wrath"); return; } //kill_command if (WoW.CanCast("Kill Command") && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Kill Command"); return; } //cobra_shot,if=(cooldown.kill_command.remains>focus.time_to_max&cooldown.bestial_wrath.remains>focus.time_to_max)|(buff.bestial_wrath.up&focus.regen*cooldown.kill_command.remains>30)|target.time_to_die<cooldown.kill_command.remains if (WoW.CanCast("Cobra Shot") && WoW.Focus > 32 && (WoW.SpellCooldownTimeRemaining("Kill Command") > FocusTimetoMax && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > FocusTimetoMax) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && WoW.Focus > 32 && WoW.PlayerHasBuff("Bestial Wrath") && ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Cobra Shot"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish")) { WoW.CastSpell("Kil'jaeden's Burning Wish"); return; } if (WoW.CanCast("Volley") && !WoW.PlayerHasBuff("Volley") && WoW.Talent(6) == 3) { WoW.CastSpell("Volley"); return; } if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserking"); return; } if (WoW.CanCast("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Focus <= 85) { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.CanCast("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Barrage") && WoW.Talent(6) == 2 && !WoW.IsSpellOnCooldown("Barrage") && WoW.IsSpellInRange("Cobra Shot") && WoW.Focus >= 60) { WoW.CastSpell("Barrage"); return; } if (WoW.CanCast("Chimaera Shot") && WoW.Focus < 90 && WoW.IsSpellOnCooldown("Dire Frenzy") && WoW.IsSpellOnCooldown("Kill Command") && WoW.CanCast("Chimaera Shot") && WoW.Talent(2) == 3) { WoW.CastSpell("Chimaera Shot"); return; } if (WoW.CanCast("A Murder of Crows") && WoW.Talent(6) == 1 && WoW.Focus >= 46 - FocusRegen && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot") && !WoW.IsSpellOnCooldown("A Murder of Crows")) { WoW.CastSpell("A Murder of Crows"); return; } if (WoW.CanCast("Multi-Shot") && WoW.Focus >= 40 && !WoW.PetHasBuff("Beast Cleave") && WoW.IsSpellInRange("Multi-Shot")) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Multi-Shot") && WoW.Focus >= 40 && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") <= 70 && WoW.IsSpellInRange("Multi-Shot")) { WoW.CastSpell("Multi-Shot"); return; } // stampede,if=buff.bloodlust.up|buff.bestial_wrath.up|cooldown.bestial_wrath.remains<=2|target.time_to_die<=14 if (WoW.CanCast("Stampede") && WoW.Talent(7) == 1 && WoW.IsSpellInRange("Cobra Shot") && ((WoW.PlayerHasBuff("Bestial Wrath")) || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2)) && !WoW.PlayerHasBuff("AspectoftheTurtle") && !WoW.IsSpellOnCooldown("Stampede")) { WoW.CastSpell("Stampede"); return; } //dire_beast,if=cooldown.bestial_wrath.remains>3 if (WoW.CanCast("Dire Beast") && WoW.Talent(2) != 2 && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Beast"); return; } //dire_frenzy,if=(cooldown.bestial_wrath.remains>6&(!equipped.the_mantle_of_command|pet.cat.buff.dire_frenzy.remains<=gcd.max*1.2)) if (WoW.CanCast("Dire Frenzy") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && (WoW.Legendary(1) != 3 || WoW.PetBuffTimeRemaining("Dire Frenzy") <= 70)) && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } //|(charges>=2&focus.deficit>=25+talent.dire_stable.enabled*12)|target.time_to_die<9 if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 95 && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 83 && WoW.Talent(2) == 2 && WoW.Talent(1) == 3 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } //aspect_of_the_wild,if=buff.bestial_wrath.up|target.time_to_die<12 if (WoW.CanCast("Aspect of the Wild") && UseCooldowns && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Aspect of the Wild"); return; } //titans_thunder,if=talent.dire_frenzy.enabled|cooldown.dire_beast.remains>=3|(buff.bestial_wrath.up&pet.dire_beast.active) if (WoW.CanCast("Titan's Thunder") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && (WoW.Talent(2) == 2 || (WoW.Talent(2) != 2 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 300) || (WoW.Talent(2) != 2 && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerHasBuff("Dire Beast"))) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Titan's Thunder"); return; } //bestial_wrath if (WoW.CanCast("Bestial Wrath") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Bestial Wrath"); return; } //kill_command if (WoW.CanCast("Kill Command") && WoW.Focus >= 70 - FocusRegen && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Kill Command"); return; } //cobra_shot,if=(cooldown.kill_command.remains>focus.time_to_max&cooldown.bestial_wrath.remains>focus.time_to_max)|(buff.bestial_wrath.up&focus.regen*cooldown.kill_command.remains>30)|target.time_to_die<cooldown.kill_command.remains if (WoW.CanCast("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.Focus > 72 - FocusRegen && (WoW.SpellCooldownTimeRemaining("Kill Command") > FocusTimetoMax && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > FocusTimetoMax) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.Focus > 72 - FocusRegen && WoW.PlayerHasBuff("Bestial Wrath") && ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Cobra Shot"); return; } } } }
public override void Initialize() { if (!RetToDef) { if (ConfigFile.ReadValue("ProtectionLesion", "SB HP Percent") == "") { ConfigFile.WriteValue("ProtectionLesion", "SB HP Percent", "90"); } if (ConfigFile.ReadValue("ProtectionLesion", "LS HP Percent") == "") { ConfigFile.WriteValue("ProtectionLesion", "LS HP Percent", "35"); } if (ConfigFile.ReadValue("ProtectionLesion", "SW HP Percent") == "") { ConfigFile.WriteValue("ProtectionLesion", "SW HP Percent", "20"); } if (ConfigFile.ReadValue("ProtectionLesion", "HS HP Percent") == "") { ConfigFile.WriteValue("ProtectionLesion", "HS HP Percent", "30"); } if (ConfigFile.ReadValue("ProtectionLesion", "IV HP Percent") == "") { ConfigFile.WriteValue("ProtectionLesion", "IV HP Percent", "80"); } } Log.Write("Welcome to Protection Warrior", Color.Red); Log.Write("Suggested build: 1213112", Color.Red); Log.Write("Version 4.1", Color.Red); Log.Write("Last Edited by Lesion 08/02 - Added more abilities to edit.", Color.Blue); SettingsForm = new Form { Text = "Settings", StartPosition = FormStartPosition.CenterScreen, Width = 350, Height = 250, ShowIcon = false }; //var picBox = new PictureBox {Left = 0, Top = 0, Width = 800, Height = 100, Image = TopLogo}; //SettingsForm.Controls.Add(picBox); var lblGeneralInterruptsText = new Label //12; 114 LEFT is first value, Top is second. { Text = "Interrupt all", Size = new Size(81, 13), //81; 13 Left = 12, Top = 14 }; SettingsForm.Controls.Add(lblGeneralInterruptsText); //113; 114 generalint = new CheckBox { Checked = generalInterrupts, TabIndex = 2, Size = new Size(15, 14), Left = 115, Top = 14 }; SettingsForm.Controls.Add(generalint); var lblMythicPlusText = new Label //12; 129 is first value, Top is second. { Text = "M+ Interrupts", Size = new Size(95, 13), //95; 13 Left = 12, Top = 29 }; SettingsForm.Controls.Add(lblMythicPlusText); //113; 114 mplusint = new CheckBox { Checked = mythicplusinterrupts, TabIndex = 4, Size = new Size(15, 14), Left = 115, Top = 29 }; SettingsForm.Controls.Add(mplusint); var lbldefcooldownsText = new Label //12; 129 is first value, Top is second. { Text = "Def Cooldowns used automatically SW/LS", Size = new Size(95, 13), //95; 13 Left = 12, Top = 44 }; SettingsForm.Controls.Add(lbldefcooldownsText); //113; 114 CDint = new CheckBox { Checked = defcooldowns, TabIndex = 5, Size = new Size(15, 14), Left = 115, Top = 44 }; SettingsForm.Controls.Add(CDint); var lblspellrefText = new Label //12; 129 is first value, Top is second. { Text = "Spell Reflect", Size = new Size(95, 13), //95; 13 Left = 12, Top = 59 }; SettingsForm.Controls.Add(lblspellrefText); //113; 114 SRint = new CheckBox { Checked = spellref, TabIndex = 6, Size = new Size(15, 14), Left = 115, Top = 59 }; SettingsForm.Controls.Add(SRint); var lblImpendingVicText = new Label //12; 129 is first value, Top is second. { Text = "Impending Victory", Size = new Size(95, 13), //95; 13 Left = 12, Top = 74 }; SettingsForm.Controls.Add(lblImpendingVicText); //113; 114 IVint = new CheckBox { Checked = ImpendingVic, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 74 }; SettingsForm.Controls.Add(IVint); var lblIndomitableText = new Label //12; 129 is first value, Top is second. { Text = "Indomitable", Size = new Size(95, 13), //95; 13 Left = 12, Top = 89 }; SettingsForm.Controls.Add(lblIndomitableText); //113; 114 IDint = new CheckBox { Checked = Indomitable, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 89 }; SettingsForm.Controls.Add(IDint); var lblBattleCText = new Label //12; 129 is first value, Top is second. { Text = "Battle Cry", Size = new Size(95, 13), //95; 13 Left = 12, Top = 104 }; SettingsForm.Controls.Add(lblBattleCText); //113; 114 BCint = new CheckBox { Checked = BattleC, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 104 }; SettingsForm.Controls.Add(BCint); // var lblHPText = new Label //12; 129 is first value, Top is second. { Text = "Use HP Pot", Size = new Size(95, 13), //95; 13 Left = 12, Top = 119 }; SettingsForm.Controls.Add(lblHPText); //113; 114 HPint = new CheckBox { Checked = Pots, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 119 }; SettingsForm.Controls.Add(HPint); // var lblAMText = new Label //12; 129 is first value, Top is second. { Text = "M+ AM/BV", Size = new Size(95, 13), //95; 13 Left = 12, Top = 134 }; SettingsForm.Controls.Add(lblAMText); //113; 114 AMint = new CheckBox { Checked = AngerM, TabIndex = 7, Size = new Size(15, 14), Left = 115, Top = 134 }; SettingsForm.Controls.Add(AMint); // var lblRTDText = new Label //12; 129 is first value, Top is second. { Text = "Custom %", Size = new Size(70, 13), //95; 13 Left = 160, Top = 120 }; SettingsForm.Controls.Add(lblRTDText); //113; 114 RTDint = new CheckBox { Checked = RetToDef, TabIndex = 7, Size = new Size(15, 14), Left = 240, Top = 120 }; SettingsForm.Controls.Add(RTDint); // var lblSBHPercent = new Label { Text = "SB HP %", Size = new Size(80, 13), Left = 130, Top = 14 }; SettingsForm.Controls.Add(lblSBHPercent); SBHPPercentValue = new NumericUpDown { Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "SB HP Percent"), Left = 210, Top = 12 }; SettingsForm.Controls.Add(SBHPPercentValue); // var lblLSHPercent = new Label { Text = "LS HP %", Size = new Size(80, 13), Left = 130, Top = 34 }; SettingsForm.Controls.Add(lblLSHPercent); LSHPPercentValue = new NumericUpDown { Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "LS HP Percent"), Left = 210, Top = 32 }; SettingsForm.Controls.Add(LSHPPercentValue); // var lblSWHPercent = new Label { Text = "SW HP %", Size = new Size(80, 13), Left = 130, Top = 54 }; SettingsForm.Controls.Add(lblSWHPercent); SWHPPercentValue = new NumericUpDown { Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "SW HP Percent"), Left = 210, Top = 52 }; SettingsForm.Controls.Add(SWHPPercentValue); // var lblHSHPercent = new Label { Text = "HP Stones or Pots HP %", Size = new Size(80, 13), Left = 130, Top = 74 }; SettingsForm.Controls.Add(lblHSHPercent); HSHPPercentValue = new NumericUpDown { Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "HS HP Percent"), Left = 210, Top = 72 }; SettingsForm.Controls.Add(HSHPPercentValue); // var lblIVHPercent = new Label { Text = "ImpV or VR %", Size = new Size(80, 13), Left = 130, Top = 94 }; SettingsForm.Controls.Add(lblIVHPercent); IVHPPercentValue = new NumericUpDown { Minimum = 0, Maximum = 100, Value = ConfigFile.ReadValue <decimal>("ProtectionLesion", "IV HP Percent"), Left = 210, Top = 92 }; SettingsForm.Controls.Add(IVHPPercentValue); var cmdSave = new Button { Text = "Save", Width = 65, Height = 25, Left = 15, Top = 150, Size = new Size(120, 48) }; generalint.Checked = generalInterrupts; mplusint.Checked = mythicplusinterrupts; CDint.Checked = defcooldowns; SRint.Checked = spellref; IVint.Checked = ImpendingVic; IDint.Checked = Indomitable; BCint.Checked = BattleC; HPint.Checked = Pots; AMint.Checked = AngerM; RTDint.Checked = RetToDef; cmdSave.Click += CmdSave_Click; generalint.CheckedChanged += GI_Click; mplusint.CheckedChanged += MP_Click; CDint.CheckedChanged += CD_Click; SRint.CheckedChanged += SR_Click; IVint.CheckedChanged += IV_Click; IDint.CheckedChanged += ID_Click; BCint.CheckedChanged += BC_Click; HPint.CheckedChanged += HP_Click; AMint.CheckedChanged += AM_Click; RTDint.CheckedChanged += RTD_Click; SettingsForm.Controls.Add(cmdSave); lblGeneralInterruptsText.BringToFront(); lblMythicPlusText.BringToFront(); lbldefcooldownsText.BringToFront(); lblspellrefText.BringToFront(); lblImpendingVicText.BringToFront(); lblIndomitableText.BringToFront(); lblBattleCText.BringToFront(); lblHPText.BringToFront(); lblAMText.BringToFront(); lblRTDText.BringToFront(); SBHPPercentValue.BringToFront(); LSHPPercentValue.BringToFront(); SWHPPercentValue.BringToFront(); HSHPPercentValue.BringToFront(); IVHPPercentValue.BringToFront(); Log.Write("Player Talents = " + WoW.Talent(1) + WoW.Talent(2) + WoW.Talent(3) + WoW.Talent(4) + WoW.Talent(5) + WoW.Talent(6) + WoW.Talent(7), Color.Green); Log.Write("---------------------------------------------------------", Color.Blue); Log.Write("Interupt all = "+ generalInterrupts, Color.Red); Log.Write("Mythic Plus = "+ mythicplusinterrupts, Color.Red); Log.Write("Def-cooldowns being used = "+ defcooldowns, Color.Red); Log.Write("Spell Reflect = "+ spellref, Color.Red); Log.Write("Using Impending Victory = "+ ImpendingVic, Color.Red); Log.Write("Using Indomitable Talent = "+ Indomitable, Color.Red); Log.Write("Auto using Battle Cry = "+ BattleC, Color.Red); Log.Write("Use HP Pots = "+ Pots, Color.Red); Log.Write("Use Bv & AM for M+&Magic = "+ AngerM, Color.Red); Log.Write("Shield Block being used @ "+ SBHPPercentValue.Value + "%", Color.Red); Log.Write("Last Stand being used @ "+ LSHPPercentValue.Value + "%", Color.Red); Log.Write("Shield Wall being used @ "+ SWHPPercentValue.Value + "%", Color.Red); Log.Write("Health Pots being used @ "+ HSHPPercentValue.Value + "%", Color.Red); Log.Write("ImpendingVic & Victory Rush used @ "+ IVHPPercentValue.Value + "%", Color.Red); Log.Write("---------------------------------------------------------", Color.Blue); }
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() // Updated for Legion (tested and working for single target) { if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted) { SelectRotation(4, 2, 1); SelectRotation(4, 3, 1); } //Healthstone - Potion if ((WoW.CanCast("Healthstone") || WoW.CanCast("Potion")) && (WoW.ItemCount("Healthstone") >= 1 || WoW.ItemCount("Potion") >= 1) && (!WoW.ItemOnCooldown("Healthstone") || !WoW.ItemOnCooldown("Potion")) && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent <= 30 && !WoW.IsMounted && WoW.HealthPercent != 0) { Thread.Sleep(500); WoW.CastSpell("Healthstone"); WoW.CastSpell("Potion"); return; } //Exhilaration if (WoW.CanCast("Exhilaration") && WoW.HealthPercent <= 20 && !WoW.IsMounted && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhilaration"); return; } //Counter Shot if (WoW.CanCast("Counter Shot") && WoW.TargetIsCastingAndSpellIsInterruptible && !WoW.IsSpellOnCooldown("Counter Shot") && WoW.TargetIsCasting && WoW.IsSpellInRange("Counter Shot") && WoW.TargetPercentCast > 75) { WoW.CastSpell("Counter Shot"); return; } ////Revive Pet Call pet if ((!WoW.HasPet || WoW.PetHealthPercent <= 0) && !WoW.IsMounted && WoW.HealthPercent != 0 && !WoW.PlayerHasBuff("Feign Death")) { WoW.CastSpell("Heart of the Phoenix"); WoW.CastSpell("Revive Pet"); Thread.Sleep(500); WoW.CastSpell("Call Pet"); return; } //Voley if (WoW.CanCast("Voley") && !WoW.PlayerHasBuff("Feign Death") && !WoW.PlayerHasBuff("Voley") && WoW.HealthPercent != 0 && WoW.Talent(6) == 3) { WoW.CastSpell("Voley"); return; } //Intimidation //Binding Shot if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0 && ((WoW.CanCast("Intimidation") && WoW.Talent(5) == 3) || (WoW.CanCast("Binding Shot") && WoW.Talent(5) == 1))) { WoW.CastSpell("Binding Shot"); WoW.CastSpell("Intimidation"); return; } //Freezing Trap if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_X) < 0 && WoW.CanCast("Freezing Trap") && !WoW.IsMounted) { WoW.CastSpell("Freezing Trap"); return; } //Tar Trap if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_C) < 0 && WoW.CanCast("Tar Trap") && !WoW.IsMounted) { WoW.CastSpell("Tar Trap"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent != 0) { //Cooldowns if (UseCooldowns) { } //Stampede if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0 && WoW.CanCast("Stampede") && WoW.Talent(7) == 1) { WoW.CastSpell("Stampede"); return; } /*/Aspect of the Wild * if (WoW.CanCast("Aspect of the Wild") * && !WoW.PlayerHasBuff("Aspect of the Turtle") * && WoW.PlayerHasBuff("Bestial Wrath") * && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 1300) * { * WoW.CastSpell("Aspect of the Wild"); * }*/ //SINGLE TARGET //Bestial Wrath if ((combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) && WoW.CanCast("Bestial Wrath") && !WoW.PlayerHasBuff("Aspect of the Turtle") && WoW.IsSpellInRange("Cobra Shot") && (WoW.Focus >= 97 || (WoW.Focus >= 90 && WoW.CanCast("Aspect of the Wild")))) { WoW.CastSpell("Bestial Wrath"); WoW.CastSpell("Aspect of the Wild"); //WoW.CastSpell("A Murder of Crows"); WoW.CastSpell("Kill Command"); } //Dire Frenzy if (combatRoutine.Type == RotationType.SingleTarget && (WoW.CanCast("Dire Frenzy") || WoW.SpellCooldownTimeRemaining("Dire Frenzy") <= 100) && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) == 2 && ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy") || WoW.PlayerSpellCharges("Dire Frenzy") >= 2)) { WoW.CastSpell("Titan's Thunder"); WoW.CastSpell("Dire Frenzy"); return; } //A Murder of Crows if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("A Murder of Crows") //&& WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(6) == 1 && WoW.Focus >= 30) { WoW.CastSpell("A Murder of Crows"); return; } // Dire beast if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) != 2) { WoW.CastSpell("Dire Beast"); WoW.CastSpell("Titan's Thunder"); return; } //Kill Command if (combatRoutine.Type == RotationType.SingleTarget && (WoW.SpellCooldownTimeRemaining("Kill Command") <= 100 || WoW.CanCast("Kill Command")) && WoW.Focus >= 30) { WoW.CastSpell("Kill Command"); return; } //Chimaera Shot if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Chimaera Shot") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) == 3 && WoW.Focus < 80) { WoW.CastSpell("Chimaera Shot"); return; } //Cobra Shot if (combatRoutine.Type == RotationType.SingleTarget && ((WoW.Focus >= 90) || (WoW.PlayerHasBuff("Bestial Wrath") && WoW.Focus >= 32)) && WoW.IsSpellInRange("Cobra Shot") && WoW.CanCast("Cobra Shot") && !WoW.CanCast("Bestial Wrath")) { WoW.CastSpell("Cobra Shot"); return; } //AOE //Bestial Wrath if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Aspect of the Turtle")) { WoW.CastSpell("Bestial Wrath"); return; } // Dire beast if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) != 2) { WoW.CastSpell("Dire Beast"); WoW.CastSpell("Titan's Thunder"); return; } //Dire Frenzy if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Dire Frenzy") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) == 2) { WoW.CastSpell("Titan's Thunder"); WoW.CastSpell("Dire Frenzy"); return; } //Barrage if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Barrage") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(6) == 2 && (WoW.Focus >= 60)) { WoW.CastSpell("Barrage"); return; } //Multishot if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Multi-Shot") && WoW.IsSpellInRange("Multi-Shot") && WoW.Focus >= 40) { WoW.CastSpell("Multi-Shot"); return; } //Chimaera Shot if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Chimaera Shot") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) == 3 && WoW.Focus < 80) { WoW.CastSpell("Chimaera Shot"); return; } //CLEAVE //Multishot - Beast Cleave uptime if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Multi-Shot") && (/*!WoW.PetHasBuff("BeastCleave") ||*/ WoW.PetBuffTimeRemaining("BeastCleave") < 0.5) && WoW.IsSpellInRange("Multi-Shot") && !WoW.CanCast("Bestial Wrath") && !WoW.PlayerHasBuff("Bestial Wrath") && WoW.Focus >= 40) { WoW.CastSpell("Multi-Shot"); return; } //Dire Frenzy if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) == 2 && ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy") || WoW.PlayerSpellCharges("Dire Frenzy") >= 2)) { WoW.CastSpell("Titan's Thunder"); WoW.CastSpell("Dire Frenzy"); return; } //A Murder of Crows if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("A Murder of Crows") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(6) == 1 && WoW.Focus >= 30) { WoW.CastSpell("A Murder of Crows"); return; } // Dire beast if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) != 2) { WoW.CastSpell("Dire Beast"); WoW.CastSpell("Titan's Thunder"); return; } //Barrage if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Barrage") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(6) == 2 && (WoW.Focus >= 60)) { WoW.CastSpell("Barrage"); return; } //Kill Command if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Kill Command") && WoW.Focus >= 30) { WoW.CastSpell("Kill Command"); return; } //Chimaera Shot if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Chimaera Shot") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) == 3 && WoW.Focus < 80) { WoW.CastSpell("Chimaera Shot"); return; } //Cobra Shot if (combatRoutine.Type == RotationType.SingleTargetCleave && ((WoW.Focus >= 85) || (WoW.PlayerHasBuff("Bestial Wrath") && (WoW.Focus >= 32))) && WoW.IsSpellInRange("Cobra Shot") && WoW.CanCast("Cobra Shot") && !WoW.CanCast("Bestial Wrath")) { WoW.CastSpell("Cobra Shot"); return; } //Mend Pet if (WoW.HasPet && WoW.CanCast("Mend Pet") && WoW.HealthPercent != 0 && WoW.PetHealthPercent <= 75 && !WoW.PlayerHasBuff("Feign Death")) { WoW.CastSpell("Mend Pet"); return; } } }
public override void Pulse() // Updated for Legion (tested and working for single target) { renewBones = !WoW.PlayerHasBuff("Bone Shield") || WoW.PlayerBuffTimeRemaining("Bone Shield") <= 500; isMelee = WoW.CanCast("Marrowrend", false, false, true, false, false); bonesStack = WoW.PlayerBuffStacks("Bone Shield"); currentRunes = WoW.CurrentRunes; runicPower = WoW.RunicPower; if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsVisible) { if (isCDDefEnable) { useCDDef(); } if ((renewBones || bonesStack < 3) && isMelee) { if (currentRunes >= 2) { WoW.CastSpell("Marrowrend"); return; } } if (WoW.CanCast("Mind Freeze") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 60 && !WoW.IsSpellOnCooldown("Mind Freeze") && !WoW.PlayerIsChanneling) { WoW.CastSpell("Mind Freeze"); return; } if (WoW.CanCast("Blood Boil", false, true, false, true, false) && isMelee && !WoW.TargetHasDebuff("Blood Plague")) { WoW.CastSpell("Blood Boil"); return; } if (CanCastNoRange("Consumption") && isMelee) { WoW.CastSpell("Consumption"); return; } if (WoW.Talent(1) == 3 && CanCastInRange("BD") && !renewBones && currentRunes >= 1) { WoW.CastSpell("BD"); return; } if (isMelee && WoW.PlayerHasBuff("Crimson Scourge") && WoW.TargetHealthPercent >= 10) { WoW.CastSpell("DnD"); return; } if (isMelee && runicPower >= 45 && ((WoW.PlayerHasBuff("Ossuary") && (runicPower >= 85 || WoW.HealthPercent < 80)) || WoW.HealthPercent < 50)) { WoW.CastSpell("Death Strike"); return; } if (isMelee && currentRunes >= 2 && bonesStack <= 6) { WoW.CastSpell("Marrowrend"); return; } if (WoW.SpellCooldownTimeRemaining("DnD") == 0 && isMelee && currentRunes >= 2 && WoW.TargetHealthPercent >= 10 && !renewBones && bonesStack > 6) { WoW.CastSpell("DnD"); return; } if (isMelee && currentRunes >= 2 && !renewBones && bonesStack > 6 && WoW.TargetHasDebuff("Blood Plague")) { WoW.CastSpell("Heart Strike"); return; } if (WoW.CanCast("Blood Boil", false, true, false, true, false) && isMelee) { WoW.CastSpell("Blood Boil"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsVisible) { if (isCDDefEnable) { useCDDef(); } if ((renewBones || bonesStack < 3) && isMelee) { if (currentRunes >= 2) { WoW.CastSpell("Marrowrend"); return; } } if (WoW.CanCast("Blood Boil", true, true, false, true, true) && isMelee && !WoW.TargetHasDebuff("Blood Plague")) { WoW.CastSpell("Blood Boil"); return; } if (WoW.Talent(1) == 3 && CanCastInRange("BD") && WoW.HealthPercent <= 60 && !renewBones && currentRunes >= 1) { WoW.CastSpell("BD"); return; } if (CanCastNoRange("Consumption") && isMelee) { WoW.CastSpell("Consumption"); return; } if (isMelee && WoW.PlayerHasBuff("Crimson Scourge") && WoW.TargetHealthPercent >= 10) { WoW.CastSpell("DnD"); return; } if (WoW.Talent(7) == 1 && WoW.SpellCooldownTimeRemaining("Bonestorm") == 0 && isMelee && runicPower >= 100) { WoW.CastSpell("Bonestorm"); return; } if (WoW.Talent(7) == 1 && isMelee && runicPower >= 45 && ((runicPower >= 85 && WoW.SpellCooldownTimeRemaining("Bonestorm") >= 300) || WoW.HealthPercent < 70 || WoW.HealthPercent < 50)) { WoW.CastSpell("Death Strike"); return; } if (WoW.Talent(7) != 1 && isMelee && runicPower >= 45 && (runicPower >= 85 || WoW.HealthPercent < 70)) { WoW.CastSpell("Death Strike"); return; } if (WoW.SpellCooldownTimeRemaining("DnD") == 0 && isMelee && currentRunes >= 1 && WoW.TargetHealthPercent >= 10 && !renewBones && bonesStack > 2) { WoW.CastSpell("DnD"); return; } if (isMelee && currentRunes >= 1 && !renewBones && bonesStack > 2) { WoW.CastSpell("Heart Strike"); return; } if (WoW.CanCast("Blood Boil", false, true, false, true, false) && isMelee) { WoW.CastSpell("Blood Boil"); return; } if (WoW.Talent(1) == 3 && CanCastInRange("BD") && !renewBones && currentRunes >= 1) { WoW.CastSpell("BD"); } } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { validtarget = WoW.HasTarget && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Greater Invisibility") && !WoW.TargetHasDebuff("Polymorph") && WoW.RangeToTarget < 41; // Prismatic Barrier if health < 80% WoW.CastSpell("Prismatic Barrier", WoW.PlayerHealthPercent <= 80 && !WoW.PlayerHasBuff("Prismatic Barrier")); // Arcane Familiar if not up WoW.CastSpell("Arcane Familiar", WoW.Talent(1) == 1 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Arcane Familiar")); // Single Target Combat Begins - No casting if Invisible or Target is Polymorphed if (validtarget) { // Arcane Barrage when moving without Ice Floes WoW.CastSpell("Arcane Barrage", WoW.CanCast("Arcane Barrage") && WoW.IsMoving && !WoW.PlayerHasBuff("Ice Floes") && WoW.PlayerBuffStacks("Arcane Missiles") == 0); //Burn Phase //---------------------------------------------------------- // BURN BEGIN - Only use Burn if Burn is selected and Arcane Power is available or active // Charged Up if zero arcane charges if (UseCooldowns) { // BURN - Arcane Missle if you can WoW.CastSpell("Arcane Missiles", WoW.PlayerHasBuff("Arcane Missiles!") && WoW.PlayerBuffStacks("Arcane Missiles!") == 3, true); WoW.CastSpell("Arcane Missiles", WoW.LastSpell == ("Arcane Missiles") && WoW.PlayerHasBuff("Arcane Missiles!") && WoW.PlayerBuffStacks("Arcane Missiles!") >= 1, true); // Mark Of Aluneth is up WoW.CastSpell("Mark Of Aluneth", WoW.CanCast("Mark Of Aluneth")); // Cast Arcane Blast if < 4 charges WoW.CastSpell("Arcane Blast", WoW.CurrentArcaneCharges < 4); // BURN - Rune of Power at 4 Arcane Blast Charges WoW.CastSpell("Rune of Power", !WoW.PlayerHasBuff("Rune of Power") && WoW.CurrentArcaneCharges == 4); // BURN - Rune of Power if >30% mana WoW.CastSpell("Rune of Power", WoW.PlayerHasBuff("Arcane Power") && !WoW.PlayerHasBuff("Rune of Power") && WoW.Mana >= 30); // BURN - Arcane Power if Rune of Power down and 4 Arcane Blast Charges WoW.CastSpell("Arcane Power", WoW.PlayerHasBuff("Rune of Power") && WoW.CurrentArcaneCharges == 4); // Evocate if low on mana WoW.CastSpell("Evocation", WoW.Mana <= 5); // Arcane Blast otherwise WoW.CastSpell("Arcane Blast", validtarget); } // BURN END // Conserve Begin if (!UseCooldowns) { WoW.CastSpell("Rune of Power", WoW.PlayerSpellCharges("Rune of Power") == 2); // Mark Of Aluneth is up - If no Rune of Power...cast Rune of Power - If Rune of Power...cast Mark Of Aluneth WoW.CastSpell("Rune of Power", WoW.CanCast("Mark Of Aluneth") && !WoW.PlayerHasBuff("Rune of Power")); WoW.CastSpell("Mark Of Aluneth", WoW.CanCast("Mark Of Aluneth") && WoW.PlayerHasBuff("Rune of Power")); // Arcane Missles with 4 Arcane Blast Charges WoW.CastSpell("Arcane Missiles", WoW.PlayerHasBuff("Arcane Missiles!") && WoW.CurrentArcaneCharges == 4); // Arcane Missles with 3 stacks of Arcane Missiles! Buff - Not sure how to check buff stacks *NEED FIXED* WoW.CastSpell("Arcane Missiles", WoW.PlayerHasBuff("Arcane Missiles!") && WoW.PlayerBuffStacks("Arcane Missiles!") == 3); WoW.CastSpell("Arcane Barrage", WoW.Mana < 55); // Arcane Blast otherwise WoW.CastSpell("Arcane Blast", validtarget); } // SingleTarget Combat Ends } } if (combatRoutine.Type == RotationType.AOE) { // Do Single Target Cleave stuff here if applicable else ignore this one } if (combatRoutine.Type == RotationType.Cleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
public override void Pulse() { if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted) { return; } if (!WoW.HasTarget || !WoW.TargetIsEnemy) { return; } if (WoW.PlayerIsChanneling) { return; } if (!WoW.IsSpellInRange("Felblade")) { if (WoW.CanCast("ThrowGlaives")) { WoW.CastSpell("ThrowGlaives"); } return; } // Cast Nemesis on your primary target, synchronise with Metamorphosis and Chaos Blades if possible. if (WoW.HasBossTarget || UseCooldowns) { if (WoW.CanCast("Nemesis")) { WoW.CastSpell("Nemesis"); // Off the GCD no return } if (WoW.CanCast("Metamorphosis")) // This requires macro to "/cast [@player] Metamorphosis" { WoW.CastSpell("Metamorphosis"); // Off the GCD no return } if (WoW.CanCast("ChaosBlades") && WoW.Talent(7) == 1) // If we have taken Chaos Blades Talent { WoW.CastSpell("ChaosBlades"); // Off the GCD no return } } // Cast Fel Rush if about to hit 2 charges. //if (WoW.CanCast("FelRush") && WoW.PlayerSpellCharges("FelRush") == 2) //{ // WoW.CastSpell("FelRush"); // return; //} // Cast Fel Barrage at 5 charges. if (WoW.CanCast("FelBarrage") && WoW.PlayerSpellCharges("FelBarrage") == 5 && WoW.Talent(7) == 2) // If we have taken Fel Barrage Talent { WoW.CastSpell("FelBarrage"); return; } // Cast Fury of the Illidari. if (WoW.CanCast("FOTI")) { WoW.CastSpell("FOTI"); return; } // Cast Eye Beam to trigger Demonic. if (WoW.CanCast("EyeBeam") && WoW.Talent(7) == 3 && // If we have taken Demonic Talent WoW.Fury > 50) { WoW.CastSpell("EyeBeam"); return; } // Cast Metamorphosis if available and not active. - this is done above to ensure its timed with other CD's // Cast Chaos Blades. - this is done above to ensure its timed with Meta and other CD's // Cast Felblade if available and more than 30 Fury from your cap. if (WoW.CanCast("Felblade") && WoW.Fury <= 100) // ToDo: Here we assume Fury Cap is 130, no clue if something changes that. { WoW.CastSpell("Felblade"); return; } // Cast Blade Dance / Death Sweep with First Blood. if (WoW.CanCast("BladeDance") && WoW.Fury >= 15 && WoW.Talent(3) == 2) // If we have taken First Blood Talent { WoW.CastSpell("BladeDance"); return; } // Cast Chaos Strike / Annihilation. if (!WoW.PlayerHasBuff("Metamorphosis")) { if (WoW.CanCast("ChaosStrike") && WoW.Fury >= 40) { WoW.CastSpell("ChaosStrike"); return; } } else { if (WoW.CanCast("Annihilation") && WoW.Fury >= 40) { WoW.CastSpell("Annihilation"); return; } } // Cast Demon's Bite if Demon Blades is not taken. if (WoW.CanCast("DemonsBite") && WoW.Talent(2) != 2) { WoW.CastSpell("DemonsBite"); return; } // Cast Throw Glaive if nothing else is available during empty Globals with Demon Blades. if (WoW.CanCast("ThrowGlaives") && WoW.Talent(2) == 2) { WoW.CastSpell("ThrowGlaives"); } }