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() { //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(); } //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) / 1000f); var ImpsRemainingDuration = Convert.ToSingle((12000f - ImpTime.ElapsedMilliseconds) / 1000f + OneFiveCast); // Single Target Rotation if (combatRoutine.Type == RotationType.SingleTarget) { // Normal Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting) { Log.Write("Imp Time: " + ImpsRemainingDuration, Color.DarkViolet); Log.Write("Dread Time: " + DreadstalkersRemainingDuration, Color.DarkViolet); //Implosion (if talent) if (WoW.CanCast("Implosion") && Implosion && WoW.IsSpellInRange("Doom")) { if (ImpsRemainingDuration <= SBExecuteTime && WoW.PlayerHasBuff("DemonicSynergy")) { WoW.CastSpell("Implosion"); return; } if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy")) { WoW.CastSpell("Implosion"); return; } } //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && Shadowflame && WoW.IsSpellInRange("Doom") && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < TwoSecondCast + 2) { WoW.CastSpell("Shadowflame"); return; } //Service Pet (if talent) if (WoW.CanCast("GrimoireFelguard") && GrimoireOfService && WoW.IsSpellInRange("Doom") && WoW.CurrentSoulShards >= 1 && boss) { WoW.CastSpell("GrimoireFelguard"); empowered = false; return; } // Doomguard if (WoW.CanCast("Doomguard") && WoW.CurrentSoulShards >= 1 && boss && 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") && !SummonDarkglare && (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") && !SummonDarkglare && 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") && SummonDarkglare && 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") && SummonDarkglare && (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") && SummonDarkglare && 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") && SummonDarkglare && 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") && Shadowflame && 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") && Demonbolt && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("Demonbolt"); return; } //Shadowbolt (if NOT Demonbolt talent) if (WoW.CanCast("Shadowbolt") && !Demonbolt && 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") && Implosion && WoW.IsSpellInRange("Doom")) { if (ImpsRemainingDuration <= SBExecuteTime && 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 <= SBExecuteTime) { WoW.CastSpell("Implosion"); return; } if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1) { WoW.CastSpell("Implosion"); return; } } //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && Shadowflame && 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") && !SummonDarkglare && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && !Implosion && 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") && !SummonDarkglare && 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") && SummonDarkglare && 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 and not Implosion) if (WoW.CanCast("CallDreadstalkers") && SummonDarkglare && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && !Implosion && 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") && SummonDarkglare && 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") && SummonDarkglare && 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") && Shadowflame && WoW.IsSpellInRange("Doom") && WoW.PlayerSpellCharges("Shadowflame") == 2) { WoW.CastSpell("Shadowflame"); return; } //Thal'kiel's Consumption if (WoW.CanCast("TK") && ((WoW.DreadstalkersCount >= 1 && DreadstalkersRemainingDuration > TwoSecondCast) || Implosion) && ((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.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 Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.CanCast("Death") && WoW.HealthPercent < 40 && Death && !WoW.IsSpellOnCooldown("Death") && WoW.HealthPercent != 0) { WoW.CastSpell("Death"); return; } if (WoW.CanCast("Exhil") && WoW.HealthPercent < 30 && Exhil && !WoW.IsSpellOnCooldown("Exhil") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhil"); return; } if (WoW.CanCast("Turtle") && WoW.HealthPercent < 20 && Turtle && !WoW.IsSpellOnCooldown("Turtle") && WoW.HealthPercent != 0) { WoW.CastSpell("Turtle"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (!WoW.HasPet && WoW.CanCast("Wolf")) { WoW.CastSpell("Wolf"); return; } if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix")) { WoW.CastSpell("Phoenix"); return; } if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving) { WoW.CastSpell("Revive Pet"); return; } if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds == 0) { interruptwatch.Start(); Log.WritePixelMagic("interruptwatch started..", Color.Black); return; } if (WoW.CanCast("A Murder of Crows") && !WoW.IsSpellOnCooldown("A Murder of Crows") && Crow && WoW.IsSpellInRange("A Murder of Crows") && WoW.Focus >= 30 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 2300) { WoW.CastSpell("A Murder of Crows"); return; } if (WoW.CanCast("A Murder of Crows") && WoW.Focus >= 25 && WoW.IsSpellInRange("A Murder of Crows") && WoW.PlayerHasBuff("Bestial Wrath")) { WoW.CastSpell("A Murder of Crows"); return; } if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds > 800) { if (WoW.CanCast("Counter Shot") && !WoW.IsSpellOnCooldown("Counter Shot") && CounterShot && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Counter Shot")) { WoW.CastSpell("Counter Shot"); interruptwatch.Reset(); Log.WritePixelMagic("interruptwatch reset!", Color.Black); interruptwatch.Start(); Log.WritePixelMagic("interruptwatch started...", Color.Black); return; } } if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 119 && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Turtle") && !WoW.IsSpellOnCooldown("Bestial Wrath")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 107 && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Turtle") && !WoW.IsSpellOnCooldown("Bestial Wrath") && WoW.SpellCooldownTimeRemaining("Kill Command") <= 290) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Aspect of the Wild") && !WoW.IsSpellOnCooldown("Aspect of the Wild") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 1000 && (dpscooldowns || WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Ancient Hysteria") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums") || WoW.PlayerHasBuff("Heroism") || WoW.PlayerHasBuff("Time Warp"))) { WoW.CastSpell("Aspect of the Wild"); WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Kill Command") && WoW.Focus >= 100 && WoW.IsSpellInRange("Kill Command")) { WoW.CastSpell("Kill Command"); return; } if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast") && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 390) { WoW.CastSpell("Dire Beast"); if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder")) { WoW.CastSpell("Titan's Thunder"); return; } } if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && WoW.IsSpellInRange("Kill Command")) { WoW.CastSpell("Kill Command"); return; } if (WoW.CanCast("Kill Command") && WoW.Focus >= 26 && WoW.IsSpellInRange("Kill Command") && WoW.PlayerHasBuff("Bestial Wrath")) { WoW.CastSpell("Kill Command"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 28) && WoW.IsSpellInRange("Cobra Shot") && WoW.PlayerHasBuff("Bestial Wrath") && (WoW.SpellCooldownTimeRemaining("Kill Command") >= 300)) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 91) && WoW.IsSpellInRange("Cobra Shot") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 100) && (WoW.SpellCooldownTimeRemaining("Kill Command") >= 150) && (WoW.SpellCooldownTimeRemaining("A Murder of Crows") >= 150)) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 105) && WoW.IsSpellInRange("Cobra Shot") && WoW.SpellCooldownTimeRemaining("Kill Command") >= 140) { WoW.CastSpell("Cobra Shot"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.CanCast("Death") && WoW.HealthPercent < 40 && Death && !WoW.IsSpellOnCooldown("Death") && WoW.HealthPercent != 0) { WoW.CastSpell("Death"); return; } if (WoW.CanCast("Exhil") && WoW.HealthPercent < 30 && Exhil && !WoW.IsSpellOnCooldown("Exhil") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhil"); return; } if (WoW.CanCast("Turtle") && WoW.HealthPercent < 20 && Turtle && !WoW.IsSpellOnCooldown("Turtle") && WoW.HealthPercent != 0) { WoW.CastSpell("Turtle"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (!WoW.HasPet && WoW.CanCast("Wolf")) { WoW.CastSpell("Wolf"); return; } if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix")) { WoW.CastSpell("Phoenix"); return; } if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving) { WoW.CastSpell("Revive Pet"); return; } if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds == 0) { interruptwatch.Start(); Log.WritePixelMagic("interruptwatch started..", Color.Black); return; } if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds > 800) { if (WoW.CanCast("Counter Shot") && !WoW.IsSpellOnCooldown("Counter Shot") && CounterShot && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Counter Shot")) { WoW.CastSpell("Counter Shot"); interruptwatch.Reset(); Log.WritePixelMagic("interruptwatch reset!", Color.Black); interruptwatch.Start(); Log.WritePixelMagic("interruptwatch started...", Color.Black); 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 >= 34) && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PetBuffTimeRemaining("Beast Cleave") <= 70 && WoW.IsSpellInRange("Multi-Shot")) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && WoW.PetBuffTimeRemaining("Beast Cleave") <= 70 && WoW.IsSpellInRange("Multi-Shot") && !WoW.CanCast("Bestial Wrath")) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("A Murder of Crows") && !WoW.IsSpellOnCooldown("A Murder of Crows") && Crow && WoW.IsSpellInRange("A Murder of Crows") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 1 && WoW.Focus >= 50 && !(DetectKeyPress.GetKeyState(0x5A) < 0) && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2300)) { WoW.CastSpell("A Murder of Crows"); return; } if (WoW.CanCast("Barrage") && Barrage && WoW.IsSpellInRange("Barrage") && WoW.Focus >= 60) { WoW.CastSpell("Barrage"); return; } if (WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Turtle") && !WoW.IsSpellOnCooldown("Bestial Wrath")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Aspect of the Wild") && !WoW.IsSpellOnCooldown("Aspect of the Wild") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 1000 && (dpscooldowns || WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Ancient Hysteria") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums") || WoW.PlayerHasBuff("Heroism") || WoW.PlayerHasBuff("Time Warp"))) { WoW.CastSpell("Aspect of the Wild"); WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast") && !WoW.IsSpellOnCooldown("Dire Beast") && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 390)) { WoW.CastSpell("Dire Beast"); if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder")) { WoW.CastSpell("Titan's Thunder"); return; } } //Z Key Multi Shot Spam if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && WoW.IsSpellInRange("Multi-Shot") && (DetectKeyPress.GetKeyState(0x5A) < 0)) //Z key press { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Kill Command") && WoW.Focus >= 55 && WoW.IsSpellInRange("Kill Command") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 130 && !(DetectKeyPress.GetKeyState(0x5A) < 0) && !FourTarget && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 200)) { WoW.CastSpell("Kill Command"); return; } if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && !FourTarget && WoW.IsSpellInRange("Kill Command") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 130 && (WoW.PlayerHasBuff("Aspect of the Wild") || WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Ancient Hysteria") || WoW.PlayerHasBuff("Drums") || WoW.PlayerHasBuff("Netherwinds"))) { WoW.CastSpell("Kill Command"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 40) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 130 && WoW.PlayerHasBuff("Bestial Wrath") && (WoW.SpellCooldownTimeRemaining("Kill Command") >= 300)) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 110) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 130 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 100) { WoW.CastSpell("Cobra Shot"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { if (WoW.CanCast("Death") && WoW.HealthPercent < 40 && Death && !WoW.IsSpellOnCooldown("Death") && WoW.HealthPercent != 0) { WoW.CastSpell("Death"); return; } if (WoW.CanCast("Exhil") && WoW.HealthPercent < 30 && Exhil && !WoW.IsSpellOnCooldown("Exhil") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhil"); return; } if (WoW.CanCast("Turtle") && WoW.HealthPercent < 20 && Turtle && !WoW.IsSpellOnCooldown("Turtle") && WoW.HealthPercent != 0) { WoW.CastSpell("Turtle"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (!WoW.HasPet && WoW.CanCast("Wolf")) { WoW.CastSpell("Wolf"); return; } if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix")) { WoW.CastSpell("Phoenix"); return; } if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving) { WoW.CastSpell("Revive Pet"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && multishotwatch.ElapsedMilliseconds == 0) { multishotwatch.Start(); Log.WritePixelMagic("multishotwatch started..", Color.Black); return; } if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds == 0) { interruptwatch.Start(); Log.WritePixelMagic("interruptwatch started..", Color.Black); return; } if ((multishotwatch.ElapsedMilliseconds > 3000) && !WoW.IsSpellOnCooldown("Multi-Shot") && !WoW.WasLastCasted("Multi-Shot") && WoW.Focus >= 40) { WoW.CastSpell("Multi-Shot"); multishotwatch.Reset(); multishotwatch.Start(); return; } if (WoW.TargetIsCasting && CounterShot && interruptwatch.ElapsedMilliseconds > 800) { if (WoW.CanCast("Counter Shot") && !WoW.IsSpellOnCooldown("Counter Shot") && CounterShot && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Counter Shot")) { WoW.CastSpell("Counter Shot"); interruptwatch.Reset(); Log.WritePixelMagic("interruptwatch reset!", Color.Black); interruptwatch.Start(); Log.WritePixelMagic("interruptwatch started...", Color.Black); return; } } if (WoW.CanCast("A Murder of Crows") && !WoW.IsSpellOnCooldown("A Murder of Crows") && Crow && WoW.IsSpellInRange("A Murder of Crows") && WoW.Focus >= 30 && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 10)) { WoW.CastSpell("A Murder of Crows"); return; } if (WoW.CanCast("Barrage") && Barrage && WoW.IsSpellInRange("Barrage") && WoW.Focus >= 60) { WoW.CastSpell("Barrage"); return; } if (WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Turtle") && !WoW.IsSpellOnCooldown("Bestial Wrath")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Aspect of the Wild") && !WoW.IsSpellOnCooldown("Aspect of the Wild") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 10 && (dpscooldowns || WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Ancient Hysteria") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums") || WoW.PlayerHasBuff("Heroism") || WoW.PlayerHasBuff("Time Warp"))) { WoW.CastSpell("Aspect of the Wild"); WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast") && !WoW.IsSpellOnCooldown("Dire Beast") && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 3)) { WoW.CastSpell("Dire Beast"); if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder")) { WoW.CastSpell("Titan's Thunder"); return; } } if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && WoW.IsSpellInRange("Kill Command") && !(WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 1)) { WoW.CastSpell("Kill Command"); 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 >= 34) && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PetBuffTimeRemaining("Beast Cleave") <= 1 && WoW.IsSpellInRange("Multi-Shot")) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && WoW.PetBuffTimeRemaining("Beast Cleave") <= 1 && WoW.IsSpellInRange("Multi-Shot") && !WoW.CanCast("Bestial Wrath")) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 34) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 1 && WoW.PlayerHasBuff("Bestial Wrath") && (WoW.SpellCooldownTimeRemaining("Kill Command") >= 3)) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 110) && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 1 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 1) { WoW.CastSpell("Cobra Shot"); return; } } } }
public override void Pulse() // Updated for Legion (tested and working for single target) { AddonCreationPulse(); PlayerStats(); AoEStuff(); if (WoW.IsInCombat && !WoW.PlayerHasBuff("Mount")) { SelectRotation(); } //Dark Pact if (WoW.CanCast("Dark Pact") && CharInfo.T5 == 3 && WoW.HealthPercent <= 30 && !WoW.PlayerHasBuff("Mount")) { WoW.CastSpell("Dark Pact"); return; } //Shadowfury if (DetectKeyPress.GetKeyState(DetectKeyPress.Alt) < 0 && CharInfo.T3 == 3 && !WoW.IsMoving && WoW.CanCast("Shadowfury")) { WoW.CastSpell("Shadowfury"); return; } if (UseCooldowns) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount")) { //Doomguard if (WoW.CanCast("Doomguard") && (CharInfo.T6 == 0 || CharInfo.T6 == 2 || CharInfo.T6 == 3) && WoW.CurrentSoulShards >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Doomguard"); return; } //Grimoire of Service if (WoW.CanCast("Grimoire: Felguard") && CharInfo.T6 == 2 && WoW.CurrentSoulShards >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Grimoire: Felguard"); return; } //Soul Harvest if (WoW.CanCast("Soul Harvest") && CharInfo.T4 == 3 && !WoW.IsMoving && WoW.IsSpellInRange("Doom") && (WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Time Warp") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums of War") || WoW.PlayerHasBuff("Heroism"))) { WoW.CastSpell("Soul Harvest"); return; } } } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount")) { if ((!WoW.TargetHasDebuff("Doom") || WoW.TargetDebuffTimeRemaining("Doom") <= 1.5) && WoW.CanCast("Doom") && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Doom"); return; } if (WoW.CanCast("Darkglare") && CharInfo.T7 == 1 && WoW.CurrentSoulShards >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Darkglare"); return; } if (WoW.CanCast("Call Dreadstalkers") && (WoW.CurrentSoulShards >= 2 || WoW.TargetHasDebuff("Demonic Calling")) && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Call Dreadstalkers"); return; } if (WoW.CanCast("Hand of Guldan") && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Hand of Guldan"); return; } if (WoW.CanCast("Demonic Empowerment") && !WoW.IsMoving && !WoW.WasLastCasted("Demonic Empowerment") && (!WoW.PetHasBuff("Demonic Empowerment") || WoW.PetBuffTimeRemaining("Demonic Empowerment") <= 1.5 || WoW.WasLastCasted("Call Dreadstalkers") || WoW.WasLastCasted("Grimoire: Felguard") || WoW.WasLastCasted("Doomguard") || WoW.WasLastCasted("Hand of Guldan"))) { WoW.CastSpell("Demonic Empowerment"); Thread.Sleep(1000); return; } if (WoW.CanCast("Talkiels Consumption") && WoW.PetHasBuff("Demonic Empowerment") && WoW.PetBuffTimeRemaining("Demonic Empowerment") >= 2 && WoW.WildImpsCount >= 1 && WoW.DreadstalkersCount >= 1 && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Talkiels Consumption"); return; } if (WoW.CanCast("Felstorm") && WoW.PetHasBuff("Demonic Empowerment") && WoW.PetBuffTimeRemaining("Demonic Empowerment") >= 6 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Felstorm"); return; } if (WoW.CanCast("Shadowflame") && CharInfo.T1 == 2 && !WoW.TargetHasDebuff("Shadowflame") && WoW.CanCast("Shadowflame") && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Shadowflame"); return; } if (WoW.CanCast("Life Tap") && WoW.Mana < 60 && WoW.HealthPercent > 50) { WoW.CastSpell("Life Tap"); return; } if (WoW.CanCast("Demonwrath") && WoW.Mana > 60 && WoW.IsMoving) { WoW.CastSpell("Demonwrath"); return; } if ((WoW.CanCast("Shadow Bolt") || WoW.CanCast("Demonbolt")) && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Shadow Bolt"); WoW.CastSpell("Demonbolt"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount")) { if (WoW.CanCast("Hand of Guldan") && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Hand of Guldan"); return; } if (WoW.CanCast("Implosion") && CharInfo.T2 == 3 && WoW.WildImpsCount >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Implosion"); return; } if (WoW.CanCast("Darkglare") && CharInfo.T7 == 1 && WoW.CurrentSoulShards >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Darkglare"); return; } if (WoW.CanCast("Demonic Empowerment") && WoW.CanCast("Felstorm") && !WoW.IsMoving && !WoW.WasLastCasted("Demonic Empowerment") && (!WoW.PetHasBuff("Demonic Empowerment") || WoW.PetBuffTimeRemaining("Demonic Empowerment") <= 6)) { WoW.CastSpell("Demonic Empowerment"); Thread.Sleep(2000); return; } if (WoW.CanCast("Felstorm") && WoW.PetHasBuff("Demonic Empowerment") && WoW.PetBuffTimeRemaining("Demonic Empowerment") >= 6 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Felstorm"); return; } if (WoW.CanCast("Life Tap") && WoW.Mana < 60 && WoW.HealthPercent > 50) { WoW.CastSpell("Life Tap"); return; } if (WoW.CanCast("Demonwrath") && WoW.Mana > 60) { WoW.CastSpell("Demonwrath"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // 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 && WoW.IsInCombat) { if (WoW.CanCast("FeignDeath") && WoW.HealthPercent < 30 && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0) { WoW.CastSpell("FeignDeath"); return; } if (WoW.CanCast("Exhilaration") && WoW.HealthPercent < 40 && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhilaration"); return; } if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent < 20 && 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.HealthPercent != 0) { 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 && HealPet && !WoW.PetHasBuff("Heal Pet") && 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.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.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 (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("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); 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; } if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 80 && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("AspectoftheTurtle") && WoW.Talent(2) == 2 && !WoW.IsSpellOnCooldown("Dire Frenzy")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 115 && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Kill Command") && !WoW.PlayerHasBuff("AspectoftheTurtle")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 90 && WoW.IsSpellInRange("Cobra Shot") && !WoW.IsSpellOnCooldown("Kill Command") && !WoW.PlayerHasBuff("AspectoftheTurtle")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Aspect of the Wild") && !WoW.IsSpellOnCooldown("Aspect of the Wild") && UseCooldowns && WoW.PlayerHasBuff("Bestial Wrath")) { WoW.CastSpell("Aspect of the Wild"); return; } if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Cobra Shot") && (WoW.Talent(2) == 1 || WoW.Talent(2) == 3) && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300) { WoW.CastSpell("Dire Beast"); if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder")) { WoW.CastSpell("Titan's Thunder"); 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("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder") && !WoW.IsSpellOnCooldown("Dire Frenzy") && WoW.CanCast("Dire Frenzy") && WoW.Talent(2) == 2) { WoW.CastSpell("Titan's Thunder"); WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Bestial Wrath") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 && WoW.Talent(2) == 2) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Bestial Wrath") && ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 2) || !WoW.PetHasBuff("Dire Frenzy")) && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 && WoW.Talent(2) == 2) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Kill Command"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 50) && WoW.IsSpellInRange("Cobra Shot") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellOnCooldown("Kill Command") && WoW.SpellCooldownTimeRemaining("Kill Command") > 140) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 32) && WoW.IsSpellInRange("Cobra Shot") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerBuffTimeRemaining("Bestial Wrath") <= 200 && WoW.IsSpellOnCooldown("Kill Command") && WoW.SpellCooldownTimeRemaining("Kill Command") > 140) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 90) && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Bestial Wrath") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 140) { WoW.CastSpell("Cobra Shot"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("FeignDeath") && WoW.HealthPercent < 30 && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0) { WoW.CastSpell("FeignDeath"); return; } if (WoW.CanCast("Exhilaration") && WoW.HealthPercent < 40 && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhilaration"); return; } if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent < 20 && 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 (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("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 >= 25 && WoW.IsSpellInRange("Cobra Shot") && !WoW.IsSpellOnCooldown("A Murder of Crows")) { WoW.CastSpell("A Murder of Crows"); return; } if (WoW.CanCast("Bestial Wrath") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("AspectoftheTurtle") && !WoW.IsSpellOnCooldown("Bestial Wrath")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Aspect of the Wild") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 && !WoW.IsSpellOnCooldown("Aspect of the Wild") && UseCooldowns && WoW.PlayerHasBuff("Bestial Wrath")) { WoW.CastSpell("Aspect of the Wild"); return; } if (WoW.CanCast("Multi-Shot") && (WoW.Focus >= 40) && WoW.IsSpellInRange("Cobra Shot") && (DetectKeyPress.GetKeyState(0x5A) < 0)) { WoW.CastSpell("Multi-Shot"); 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") <= 80 && WoW.IsSpellInRange("Multi-Shot")) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Dire Beast") && WoW.IsSpellInRange("Dire Beast") && WoW.PetHasBuff("Beast Cleave") && (WoW.Talent(2) == 1 || WoW.Talent(2) == 3) && WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300) { WoW.CastSpell("Dire Beast"); if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder")) { WoW.CastSpell("Titan's Thunder"); return; } } if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder") && WoW.IsSpellOnCooldown("Dire Frenzy") && WoW.SpellCooldownTimeRemaining("Dire Frenzy") <= 140 && WoW.Talent(2) == 2) { WoW.CastSpell("Titan's Thunder"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Bestial Wrath") && WoW.PlayerSpellCharges("Dire Frenzy") >= 200 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 && WoW.Talent(2) == 2) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 300 && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 && WoW.Talent(2) == 2) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Bestial Wrath") && ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy")) && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 && WoW.Talent(2) == 2) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Bestial Wrath") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 6 && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 && WoW.Talent(2) == 2 && WoW.IsSpellOnCooldown("Titan's Thunder") && WoW.SpellCooldownTimeRemaining("Titan's Thunder") >= 140) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Kill Command") && WoW.Focus >= 55 && WoW.IsSpellInRange("Cobra Shot") && !WoW.IsSpellOnCooldown("Kill Command") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 140) { WoW.CastSpell("Kill Command"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 65) && WoW.Talent(7) == 2 && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 && WoW.PlayerHasBuff("Bestial Wrath") && WoW.SpellCooldownTimeRemaining("Kill Command") >= 300) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && WoW.Focus >= 110 && WoW.IsSpellInRange("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") >= 140 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 140) { WoW.CastSpell("Cobra Shot"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("FeignDeath") && WoW.HealthPercent < 30 && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0) { WoW.CastSpell("FeignDeath"); return; } if (WoW.CanCast("Exhilaration") && WoW.HealthPercent < 40 && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhilaration"); return; } if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent < 20 && 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.HealthPercent != 0) { 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 && HealPet && !WoW.PetHasBuff("Heal Pet") && 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.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.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 (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("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); 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; } if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 80 && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("AspectoftheTurtle") && WoW.Talent(2) == 2 && !WoW.IsSpellOnCooldown("Dire Frenzy")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 115 && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Kill Command") && !WoW.PlayerHasBuff("AspectoftheTurtle")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Bestial Wrath") && WoW.Focus >= 90 && WoW.IsSpellInRange("Cobra Shot") && !WoW.IsSpellOnCooldown("Kill Command") && !WoW.PlayerHasBuff("AspectoftheTurtle")) { WoW.CastSpell("Bestial Wrath"); return; } if (WoW.CanCast("Aspect of the Wild") && !WoW.IsSpellOnCooldown("Aspect of the Wild") && UseCooldowns && WoW.PlayerHasBuff("Bestial Wrath")) { WoW.CastSpell("Aspect of the Wild"); 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("Dire Beast") && WoW.IsSpellInRange("Cobra Shot") && (WoW.Talent(2) == 1 || WoW.Talent(2) == 3) && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300) { WoW.CastSpell("Dire Beast"); if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder")) { WoW.CastSpell("Titan's Thunder"); return; } } if (WoW.CanCast("Titan's Thunder") && !WoW.IsSpellOnCooldown("Titan's Thunder") && !WoW.IsSpellOnCooldown("Dire Frenzy") && WoW.CanCast("Dire Frenzy") && WoW.Talent(2) == 2) { WoW.CastSpell("Titan's Thunder"); WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Bestial Wrath") && WoW.PlayerSpellCharges("Dire Frenzy") >= 200 && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 && WoW.Talent(2) == 2) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Bestial Wrath") && ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy")) && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 300 && WoW.Talent(2) == 2) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Kill Command") && WoW.Focus >= 30 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Kill Command"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 50) && WoW.IsSpellInRange("Cobra Shot") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellOnCooldown("Kill Command") && WoW.SpellCooldownTimeRemaining("Kill Command") > 140) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 32) && WoW.IsSpellInRange("Cobra Shot") && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerBuffTimeRemaining("Bestial Wrath") <= 200 && WoW.IsSpellOnCooldown("Kill Command") && WoW.SpellCooldownTimeRemaining("Kill Command") > 140) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && (WoW.Focus >= 90) && WoW.IsSpellInRange("Cobra Shot") && WoW.IsSpellOnCooldown("Bestial Wrath") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 140) { WoW.CastSpell("Cobra Shot"); return; } } } }
public override void Pulse() // Updated for Legion (tested and working for single target) { AddonCreationPulse(); PlayerStats(); AoEStuff(); if (WoW.IsInCombat && !WoW.PlayerHasBuff("Mount")) { SelectRotation(); } //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.PlayerHasBuff("Mount") && WoW.HealthPercent != 0) { WoW.CastSpell("Healthstone"); WoW.CastSpell("Potion"); return; } //Exhilaration if (WoW.CanCast("Exhilaration") && WoW.HealthPercent <= 20 && !WoW.PlayerHasBuff("Mount") && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhilaration"); return; } //Call pet if (!WoW.HasPet && !WoW.PlayerHasBuff("Mount") && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent != 0) { WoW.CastSpell("Call Pet"); return; } //Revive Pet if ((!WoW.HasPet || WoW.PetHealthPercent < 1) && !WoW.PlayerHasBuff("Mount") && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent != 0) { WoW.CastSpell("Heart of the Phoenix"); WoW.CastSpell("Revive Pet"); return; } //Voley if (WoW.CanCast("Voley") && !WoW.PlayerHasBuff("Feign Death") && !WoW.PlayerHasBuff("Voley") && WoW.HealthPercent != 0 && CharInfo.T6 == 3) { WoW.CastSpell("Voley"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerHasBuff("Mount") && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent != 0) { //Stampede if (DetectKeyPress.GetKeyState(DetectKeyPress.Shift) < 0 && WoW.CanCast("Stampede") && CharInfo.T7 == 1) { WoW.CastSpell("Stampede"); return; } //Intimidation //Binding Shot if (DetectKeyPress.GetKeyState(DetectKeyPress.Ctrl) < 0 && ((WoW.CanCast("Intimidation") && CharInfo.T5 == 3) || (WoW.CanCast("Binding Shot") && CharInfo.T5 == 1))) { WoW.CastSpell("Binding Shot"); WoW.CastSpell("Intimidation"); return; } //Cooldowns if (UseCooldowns) { //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") >= 12) { WoW.CastSpell("Aspect of the Wild"); return; } } //Legendary Trinket if (WoW.CanCast("Kil'jaeden's Burning Wish") && (((WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 15 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 5)) || WoW.PlayerHasBuff("Bestial Wrath")) && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Kil'jaeden's Burning Wish"); } //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 >= 110)) { WoW.CastSpell("Bestial Wrath"); WoW.CastSpell("Kill Command"); if (WoW.CanCast("A Murder of Crows") && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T6 == 1 && WoW.Focus >= 30) { WoW.CastSpell("A Murder of Crows"); } return; } //A Murder of Crows if (combatRoutine.Type == RotationType.SingleTarget && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 23 && WoW.CanCast("A Murder of Crows") && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T6 == 1 && WoW.Focus >= 25) { WoW.CastSpell("A Murder of Crows"); return; } //Kill Command if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Kill Command") && WoW.Focus >= 100) { WoW.CastSpell("Kill Command"); return; } // Dire beast if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 3 && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T2 != 2) { WoW.CastSpell("Dire Beast"); WoW.CastSpell("Titan's Thunder"); return; } //Dire Frenzy if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Dire Frenzy") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 6 && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T2 == 2) { WoW.CastSpell("Titan's Thunder"); WoW.CastSpell("Dire Frenzy"); return; } //Kill Command if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Kill Command") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") - WoW.SpellCooldownTimeRemaining("Kill Command") > 2 || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 23 && WoW.SpellCooldownTimeRemaining("Dire Beast") - WoW.SpellCooldownTimeRemaining("Kill Command") > 2)) && WoW.Focus >= 25) { WoW.CastSpell("Kill Command"); return; } //Chimaera Shot if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Chimaera Shot") && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T2 == 3 && WoW.Focus < 90) { WoW.CastSpell("Chimaera Shot"); return; } //Cobra Shot if (combatRoutine.Type == RotationType.SingleTarget && ((WoW.Focus >= 110) || (WoW.PlayerHasBuff("Bestial Wrath") && (WoW.Focus >= 40))) && 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") > 3 && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T2 != 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") > 6 && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T2 == 2) { WoW.CastSpell("Dire Frenzy"); WoW.CastSpell("Titan's Thunder"); return; } //Barrage if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Barrage") && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T6 == 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") && CharInfo.T2 == 3 && WoW.Focus < 80) { WoW.CastSpell("Chimaera Shot"); return; } //CLEAVE //A Murder of Crows if (combatRoutine.Type == RotationType.SingleTarget && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 23 && WoW.CanCast("A Murder of Crows") && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T6 == 1 && WoW.Focus >= 25) { WoW.CastSpell("A Murder of Crows"); return; } //Multishot - Beast Cleave uptime if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Multi-Shot") && (!WoW.PetHasBuff("BeastCleave") || WoW.PetBuffTimeRemaining("BeastCleave") <= 1) && WoW.IsSpellInRange("Multi-Shot") && !WoW.CanCast("Bestial Wrath") && WoW.Focus >= 40) { WoW.CastSpell("Multi-Shot"); return; } // Dire beast if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 3 && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T2 != 2) { WoW.CastSpell("Dire Beast"); WoW.CastSpell("Titan's Thunder"); return; } //Dire Frenzy if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Dire Frenzy") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 6 && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T2 == 2) { WoW.CastSpell("Dire Frenzy"); WoW.CastSpell("Titan's Thunder"); return; } //Barrage if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Barrage") && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T6 == 2 && (WoW.Focus >= 60)) { WoW.CastSpell("Barrage"); return; } //Kill Command if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Kill Command") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") - WoW.SpellCooldownTimeRemaining("Kill Command") > 2 || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") >= 23 && WoW.SpellCooldownTimeRemaining("Dire Beast") - WoW.SpellCooldownTimeRemaining("Kill Command") > 2)) && WoW.Focus >= 25) { WoW.CastSpell("Kill Command"); return; } //Chimaera Shot if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Chimaera Shot") && WoW.IsSpellInRange("Cobra Shot") && CharInfo.T2 == 3 && WoW.Focus < 80) { WoW.CastSpell("Chimaera Shot"); return; } //Cobra Shot if (combatRoutine.Type == RotationType.SingleTargetCleave && ((WoW.Focus >= 110) || (WoW.PlayerHasBuff("Bestial Wrath") && (WoW.Focus >= 40))) && 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.PetHealthPercent <= 70 && !WoW.PlayerHasBuff("Feign Death")) { WoW.CastSpell("Mend Pet"); return; } } }