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(); } } }
//-Pulse--------------------// public override void Pulse() { if (DetectKeyPress.GetKeyState(0x76) < 0) { UseCooldowns = !UseCooldowns; Thread.Sleep(150); } if (WoW.IsInCombat) { interruptwatch.Start(); } else { return; } if (combatRoutine.Type != RotationType.SingleTarget && combatRoutine.Type != RotationType.AOE) { return; } if (!WoW.HasTarget || !WoW.TargetIsEnemy) { return; } if (WoW.HealthPercent < txtPWS && !WoW.PlayerHasBuff(POWER_WORD_SHIELD) && !WoW.IsSpellOnCooldown(POWER_WORD_SHIELD)) { Log.Write("Health below " + txtPWS + "% - Using PWS now", Color.Red); SpellCast(POWER_WORD_SHIELD); return; } if (SilenceBox.Checked && WoW.TargetIsCastingAndSpellIsInterruptible && interruptwatch.ElapsedMilliseconds > 900) { if (!WoW.IsSpellOnCooldown(SILENCE)) { SpellCast(SILENCE); interruptwatch.Reset(); interruptwatch.Start(); return; } } if (!(WoW.PlayerHasBuff(SHADOWFORM_AURA) || WoW.PlayerHasBuff(VOIDFORM_AURA))) { SpellCast(SHADOWFORM); } CooldownUsage(); SingleTargetRotation(); }
public override void Pulse() // Updated for Legion (tested and working for single target) { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat) { if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_XBUTTON1) < 0) { if (!WoW.CanCast("DnD")) { return; } WoW.CastSpell("DnD"); Mouse.RightRelease(); Thread.Sleep(50); Mouse.LeftClick(Cursor.Position.X, Cursor.Position.Y); Thread.Sleep(50); Mouse.RightDown(); Thread.Sleep(50); Mouse.RightRelease(); return; } if (WoW.CanCast("Outbreak") && WoW.CurrentRunes >= 1 && !WoW.TargetHasDebuff("Virulent Plague")) { WoW.CastSpell("Outbreak"); return; } if (WoW.CanCast("Dark Transformation") && WoW.TargetHasDebuff("Virulent Plague")) { WoW.CastSpell("Dark Transformation"); return; } Generic(); } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE stuff here } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // 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 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.HealthPercent <= 30 && !WoW.PlayerHasBuff("Mount")) { WoW.CastSpell("Healthstone"); WoW.CastSpell("Potion"); return; } //Shield of Vengeance if (WoW.CanCast("Shield of Vengeance") && WoW.HealthPercent <= 40 && !WoW.PlayerHasBuff("Mount")) { WoW.CastSpell("Shield of Vengeance"); return; } //Lay on Hands if (WoW.CanCast("Lay on Hands") && WoW.HealthPercent <= 20 && !WoW.PlayerHasBuff("Mount")) { WoW.CastSpell("Lay on Hands"); return; } //Divine Steed if (DetectKeyPress.GetKeyState(DetectKeyPress.Num4) < 0 && WoW.CanCast("Divine Steed") && !WoW.PlayerHasBuff("Divine Steed")) { WoW.CastSpell("Divine Steed"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerHasBuff("Mount") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.HealthPercent != 0) { //Crusade if (WoW.CanCast("Crusade") && CharInfo.T7 == 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.NumpadADD) < 0 && WoW.CanCast("Hammer of Justice") ) { WoW.CastSpell("Hammer of Justice"); return; } //Holy Wrath if (WoW.CanCast("Holy Wrath") && CharInfo.T7 == 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") >= 6.5 && CharInfo.T1 == 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") && CharInfo.T5 == 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") >= 0.5) { 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.CurrentHolyPower <= 3 && CharInfo.T4 != 3) { WoW.CastSpell("Blade of Justice"); return; } //Divine Hammer if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Divine Hammer") && WoW.CurrentHolyPower <= 3 && CharInfo.T4 == 3) { WoW.CastSpell("Divine Hammer"); return; } //Crusader Strike if (combatRoutine.Type == RotationType.SingleTarget && WoW.CurrentHolyPower < 5 && WoW.PlayerSpellCharges("Crusader Strike") >= 1 && WoW.CanCast("Crusader Strike") && CharInfo.T2 != 2) { WoW.CastSpell("Crusader Strike"); return; } //Zeal if (combatRoutine.Type == RotationType.SingleTarget && WoW.CurrentHolyPower < 5 && WoW.PlayerSpellCharges("Zeal") >= 1 && WoW.CanCast("Zeal") && CharInfo.T2 == 2) { WoW.CastSpell("Zeal"); return; } //Consecration if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Consecration") && WoW.IsSpellInRange("Templar Verdict") && CharInfo.T1 == 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") && CharInfo.T1 == 3) { WoW.CastSpell("Consecration"); return; } //Blade of Justice if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Blade of Justice") && WoW.CurrentHolyPower <= 3 && CharInfo.T4 != 3) { WoW.CastSpell("Blade of Justice"); return; } //Divine Hammer if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Divine Hammer") && WoW.CurrentHolyPower <= 3 && CharInfo.T4 == 3) { WoW.CastSpell("Divine Hammer"); return; } //Crusader Strike if (combatRoutine.Type == RotationType.AOE && WoW.CurrentHolyPower < 5 && WoW.PlayerSpellCharges("Crusader Strike") >= 1 && WoW.CanCast("Crusader Strike") && CharInfo.T2 != 2) { WoW.CastSpell("Crusader Strike"); return; } //Zeal if (combatRoutine.Type == RotationType.AOE && WoW.CurrentHolyPower < 5 && WoW.PlayerSpellCharges("Zeal") >= 1 && WoW.CanCast("Zeal") && CharInfo.T2 == 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 (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() { /* Log.Write("Starting.....", Color.Red); */ /* Place to check target's (boss) buffs/debuffs in order to stop casting */ /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.TargetPlayerHasBuff("Focusing")) return; */ if (togglewatch.ElapsedMilliseconds == 0) { togglewatch.Start(); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_RCONTROL) < 0) { if (togglewatch.ElapsedMilliseconds > 1000) { combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns; WoW.Speak("Cooldowns " + (combatRoutine.UseCooldowns ? "On" : "Off")); togglewatch.Restart(); if (!UseCooldowns && Opener) { Opener = !Opener; WoW.Speak("Opener " + (Opener ? "Enabled" : "Disabled")); Log.WritePixelMagic("Disabling Opener because you disabled Cooldowns.", Color.Red); } if (!UseCooldowns && autoCD) { autoCD = !autoCD; WoW.Speak("Auto Burst " + (Opener ? "Enabled" : "Disabled")); Log.WritePixelMagic("Disabling Automatic burst because you disabled Cooldowns.", Color.Red); } } } if (openerwatch.ElapsedMilliseconds == 0) { openerwatch.Start(); Log.Write("To activate/deactivate cooldowns press RIGHT CONTROL button", Color.Black); Log.Write("To activate/deactivate auto Combustion/Mirror Image press LEFT ALT button (cooldowns must be ENABLED)", Color.Black); Log.Write("it will use it when conditions are met and disable after that so you have to enable manually again", Color.Black); Log.Write("To activate/deactivate Opener press F1 (make sure it's not binded in WoW keybinds first!)", Color.Black); Log.Write("To activate/deactivate using of Living Bomb press F2 (make sure it's not binded in WoW keybinds first!)", Color.Black); Log.Write("To activate/deactivate automatic interrupting F3 (it will interrupt above 80 percent of cast,)", Color.Black); Log.Write("To switch between PYROBLAST and FLAMESTRIKE on HotStreak press F4, default is always PYROBLAST)", Color.Black); Log.Write("To cast Meteor use MOUSE button 3, keep it pressed and cursor where you want to cast Meteor untill it's done.", Color.Black); Log.Write("To cast instant Flamestrike use Tilde button (left from number 1), keep mouse cursor where you want to cast Flamestrike.", Color.Black); Log.Write("OPENER is used on bosses, it requires Fire Blast(3 charges),Phoenix(3 charges),Mirror Image & Combustion off CD", Color.Black); Log.Write("When you enable OPENER, your task is to prepot and precast first spell, routine will do the rest including Mi/Combustion", Color.Black); Log.Write("You must first ENABLE COOLDOWNS to be able to use OPENER. When OPENER finishes it's work it will automatically DISABLE", Color.Black); Log.Write("itself so you must enable OPENER on next pull. This is to prevent nabness and unwanted routine behaviour.", Color.Black); Log.Write("For Flamestrike and Meteor you have to create macros /cast [@cursor] spell_name (Flamestrike or Meteor).", Color.Black); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_F1) < 0) { if (openerwatch.ElapsedMilliseconds > 1000) { if (!Opener) { if (UseCooldowns && WoW.PlayerSpellCharges("Phoenix") == 3 && WoW.PlayerSpellCharges("Fire Blast") == 3 && !WoW.IsSpellOnCooldown("Combustion") && !WoW.IsSpellOnCooldown("Mirror Image")) { Opener = !Opener; WoW.Speak("Opener " + (Opener ? "Enabled" : "Disabled")); Log.Write("Opener " + (Opener ? "Enabled" : "Disabled"), Color.Red); openerwatch.Restart(); } else { WoW.Speak("Error"); Log.Write("ERROR: You don't have all necessary CD's/CHARGES to enable OPENER or you didn't ENABLE COOLDOWNS first!", Color.Red); openerwatch.Restart(); } } else { Opener = !Opener; WoW.Speak("Opener " + (Opener ? "Enabled" : "Disabled")); Log.Write("Opener " + (Opener ? "Enabled" : "Disabled"), Color.Red); openerwatch.Restart(); } } } if (LBwatch.ElapsedMilliseconds == 0) { LBwatch.Start(); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_F2) < 0) { if (LBwatch.ElapsedMilliseconds > 1000) { UseLB = !UseLB; WoW.Speak("Bomb " + (UseLB ? "On" : "Off")); Log.Write("Living Bomb " + (UseLB ? "ON" : "OFF"), Color.Red); LBwatch.Restart(); } } if (interruptwatch.ElapsedMilliseconds == 0) { interruptwatch.Start(); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_F3) < 0) { if (interruptwatch.ElapsedMilliseconds > 1000) { autointerrupt = !autointerrupt; WoW.Speak("Interrupt " + (autointerrupt ? "On" : "Off")); Log.Write("Auto interrupt " + (autointerrupt ? "ON" : "OFF"), Color.Red); interruptwatch.Restart(); } } if (pyrowatch.ElapsedMilliseconds == 0) { pyrowatch.Start(); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_F4) < 0) { if (pyrowatch.ElapsedMilliseconds > 1000) { pyrocast = !pyrocast; WoW.Speak("Using " + (pyrocast ? "Pyro" : "Flamestrike")); Log.Write("Using " + (pyrocast ? "PYROBLAST" : "FLAMESTRIKE"), Color.Red); pyrowatch.Restart(); } } if (autoCDwatch.ElapsedMilliseconds == 0) { autoCDwatch.Start(); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.Alt) < 0 && UseCooldowns) { if (autoCDwatch.ElapsedMilliseconds > 1000) { autoCD = !autoCD; WoW.Speak("Auto Burst " + (autoCD ? "On" : "Off")); Log.Write("Automatic burst " + (autoCD ? "ON" : "OFF"), Color.Red); autoCDwatch.Restart(); } } if (WoW.PlayerHasBuff("Mount") || WoW.PlayerHasBuff("Invisibility") || WoW.PlayerHasBuff("InvisiStart")) { return; } /* Log.Write ("Combustion: " + WoW.SpellCooldownTimeRemaining("Combustion")); */ if (flamewatch.ElapsedMilliseconds == 0) { flamewatch.Start(); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_OEM_3) < 0 && WoW.PlayerHasBuff("HotStreak") && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Flamestrike") && flamewatch.ElapsedMilliseconds > 1200) { WoW.CastSpell("Flamestrike"); ForcePyro = false; flamewatch.Reset(); Log.Write("Flamestrike CASTED", Color.Black); return; } if (meteorwatch.ElapsedMilliseconds == 0) { meteorwatch.Start(); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_XBUTTON1) < 0 && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Meteor") && WoW.CanCast("Meteor") && meteorwatch.ElapsedMilliseconds > 1000) { WoW.CastSpell("Meteor"); meteorwatch.Reset(); Log.Write("Meteor CASTED", Color.Black); return; } if (combatRoutine.Type == RotationType.SingleTarget) { if (CombatWatch.IsRunning && !WoW.IsInCombat) { CombatWatch.Reset(); } if (!CombatWatch.IsRunning && WoW.IsInCombat && UseCooldowns && Opener && WoW.HasTarget && WoW.TargetIsEnemy) { CombatWatch.Start(); Log.Write("Entering Combat, Starting Opener.", Color.Red); Log.Write("Aaalllriiiight! Who ordered up an extra large can of whoop-ass?", Color.Red); } if (CombatWatch.IsRunning && CombatWatch.ElapsedMilliseconds < 4500) { if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Phoenix") == 3 && WoW.CanCast("Phoenix") && !WoW.IsSpellOnCooldown("Phoenix") && !WoW.LastSpell.Equals("Phoenix") && !WoW.LastSpell.Equals("Fire Blast") && WoW.IsSpellInRange("Fireball")) { WoW.CastSpell("Phoenix"); return; } if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Combustion") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Phoenix") == 2 && WoW.CanCast("Combustion") && WoW.CanCast("Mirror Image")) { Thread.Sleep(100); WoW.CastSpell("Mirror Image"); Thread.Sleep(700); WoW.CastSpell("Combustion"); Opener = !Opener; WoW.Speak("Opener Finished" + (Opener ? "Enabled" : "Disabled")); Log.Write("Opener Finished and disabled", Color.Red); CombatWatch.Reset(); return; } Log.Write("Executing opener sequence"); } if (CombatWatch.IsRunning && CombatWatch.ElapsedMilliseconds > 6500 && Opener) { Opener = !Opener; WoW.Speak("Opener Finished" + (Opener ? "Enabled" : "Disabled")); Log.Write("Opener Finished and disabled", Color.Red); CombatWatch.Reset(); } if (CombatWatch.IsRunning && CombatWatch.ElapsedMilliseconds < 4300 && Opener) { return; } if (autointerrupt && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Counterspell") && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Combustion Aura") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 80) { WoW.CastSpell("Counterspell"); return; } if (WoW.IsInCombat && WoW.CanCast("Blazing Barrier") && !WoW.PlayerHasBuff("Blazing Barrier Aura") && !WoW.LastSpell.Equals("Blazing Barrier") && WoW.HealthPercent < 70 && !WoW.PlayerHasBuff("Combustion Aura")) { WoW.CastSpell("Blazing Barrier"); return; } if (WoW.IsInCombat && WoW.CanCast("Ice Block") && !WoW.PlayerHasBuff("Ice Block") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ice Block")) { WoW.CastSpell("Ice Block"); return; } if (autoCD && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Combustion") && !WoW.IsSpellOnCooldown("Mirror Image") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.CanCast("Combustion") && WoW.CanCast("Mirror Image") && (WoW.PlayerHasBuff("HotStreak") || WoW.PlayerHasBuff("HeatingUp"))) { Thread.Sleep(100); WoW.CastSpell("Mirror Image"); Thread.Sleep(700); WoW.CastSpell("Combustion"); autoCD = !autoCD; WoW.Speak("Burst Finished"); Log.Write("Burst done, disabling burst", Color.Red); return; } // Log.WritePixelMagic("Force Pyro "+ (ForcePyro ? "TRUE" : "FALSE"), Color.Red); // COMBUSTION PHASE // if (WoW.PlayerHasBuff("Combustion Aura")) /* What to do if we are in COMBUSTION BURST PHASE */ { if (ForcePyro) { ForcePyro = !ForcePyro; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerHasBuff("HotStreak") && WoW.CanCast("Pyroblast")) { WoW.CastSpell("Pyroblast"); /* Thread.Sleep(100); * if (WoW.PlayerSpellCharges("Fire Blast") >= 1) WoW.CastSpell("Fire Blast"); */ return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerHasBuff("HeatingUp") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak")) { WoW.CastSpell("Fire Blast"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") && WoW.PlayerSpellCharges("Phoenix") >= 1 && !WoW.IsSpellOnCooldown("Phoenix") && !WoW.PlayerHasBuff("HotStreak") && !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball")) { WoW.CastSpell("Phoenix"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Phoenix") >= 1 && !WoW.IsSpellOnCooldown("Phoenix") && !WoW.PlayerHasBuff("HotStreak") && !WoW.PlayerHasBuff("HeatingUp") && WoW.CanCast("Phoenix") && !WoW.LastSpell.Equals("Phoenix") && !WoW.LastSpell.Equals("Fire Blast") && WoW.LastSpell.Equals("Combustion") && WoW.IsSpellInRange("Fireball")) { WoW.CastSpell("Phoenix"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Scorch") && !WoW.PlayerHasBuff("HotStreak") && WoW.PlayerSpellCharges("Phoenix") == 0 && !WoW.LastSpell.Equals("Phoenix") && WoW.PlayerSpellCharges("Fire Blast") == 0) { WoW.CastSpell("Scorch"); return; } return; } // END COMBUSTION PHASE // // SUB 30% for BELT ROTATION // if (!WoW.PlayerHasBuff("Combustion Aura") && !WoW.LastSpell.Equals("Combustion") && !Opener && WoW.TargetHealthPercent <= 30 && !WoW.WasLastCasted("Combustion")) /* What to do if we are NOT MOVING - NON BURST PHASE */ { if (WoW.WasLastCasted("Pyroblast") && ForcePyro) { ForcePyro = !ForcePyro; } if (WoW.PlayerHasBuff("HeatingUp") && WoW.PlayerIsCasting && WoW.LastSpell.Equals("Scorch") && !ForcePyro) { ForcePyro = !ForcePyro; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Pyroblast") && ForcePyro) { if (pyrocast) { WoW.CastSpell("Pyroblast"); } else { WoW.CastSpell("Flamestrike"); } //WoW.CastSpell("Pyroblast"); Log.WritePixelMagic("FORCING PYRO/FLAMESTRIKE....", Color.Red); ForcePyro = !ForcePyro; if (WoW.PlayerSpellCharges("Fire Blast") >= 1 && UseCooldowns && ((WoW.SpellCooldownTimeRemaining("Combustion") > 22 && WoW.PlayerSpellCharges("Fire Blast") >= 1) || (WoW.SpellCooldownTimeRemaining("Combustion") > 13 && WoW.PlayerSpellCharges("Fire Blast") >= 2) || (WoW.SpellCooldownTimeRemaining("Combustion") > 7 && WoW.PlayerSpellCharges("Fire Blast") > 2))) { Thread.Sleep(500); WoW.CastSpell("Fire Blast"); return; } else if (WoW.PlayerSpellCharges("Fire Blast") >= 1 && !UseCooldowns) { Thread.Sleep(500); WoW.CastSpell("Fire Blast"); return; } return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerHasBuff("HotStreak") && WoW.CanCast("Pyroblast") && !ForcePyro) { if (pyrocast) { WoW.CastSpell("Pyroblast"); } else { WoW.CastSpell("Flamestrike"); } //WoW.CastSpell("Pyroblast"); return; } /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Mirror Image") * && !WoW.IsSpellOnCooldown("Mirror Image")) * { * WoW.CastSpell("Mirror Image"); * return; * } */ /* if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 * && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak") && !WoW.PlayerHasBuff("HeatingUp")) * { * Thread.Sleep(350); * WoW.CastSpell("Fire Blast"); * return; * } */ if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("HeatingUp") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Combustion") && ((WoW.SpellCooldownTimeRemaining("Combustion") > 22 && WoW.PlayerSpellCharges("Fire Blast") >= 1) || (WoW.SpellCooldownTimeRemaining("Combustion") > 13 && WoW.PlayerSpellCharges("Fire Blast") >= 2) || (WoW.SpellCooldownTimeRemaining("Combustion") > 7 && WoW.PlayerSpellCharges("Fire Blast") > 2))) { Thread.Sleep(500); WoW.CastSpell("Fire Blast"); return; } if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") && !WoW.PlayerHasBuff("HotStreak") && !WoW.PlayerHasBuff("HeatingUp") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellInRange("Fireball") && !WoW.LastSpell.Equals("Fire Blast") && (WoW.PlayerSpellCharges("Phoenix") > 1)) { WoW.CastSpell("Phoenix"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") && !WoW.PlayerHasBuff("HotStreak") && !WoW.PlayerHasBuff("HeatingUp") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellInRange("Fireball") && !WoW.LastSpell.Equals("Fire Blast") && ((WoW.PlayerSpellCharges("Phoenix") > 2) || (WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.PlayerSpellCharges("Phoenix") > 1) || (WoW.SpellCooldownTimeRemaining("Combustion") > 45 && WoW.PlayerSpellCharges("Phoenix") == 1))) { WoW.CastSpell("Phoenix"); return; } if (UseLB && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.CanCast("Living Bomb") && !WoW.IsSpellOnCooldown("Living Bomb") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellInRange("Fireball")) { WoW.CastSpell("Living Bomb"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Scorch") && WoW.CanCast("Scorch") && WoW.TargetHealthPercent <= 30 && !WoW.PlayerHasBuff("HotStreak") && !WoW.IsSpellOnGCD("Scorch") && !WoW.PlayerIsCasting && !ForcePyro) { WoW.CastSpell("Scorch"); return; } return; } // END SUB 30% for BELT ROTATION // // MOVING PHASE // if (WoW.IsMoving && !WoW.PlayerHasBuff("Combustion Aura") && !WoW.LastSpell.Equals("Combustion") && !WoW.WasLastCasted("Combustion") && !Opener && WoW.TargetHealthPercent > 30) /* What to do if we are MOVING */ { if (ForcePyro) { ForcePyro = !ForcePyro; } // Legendary Bracers support if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion Aura") && WoW.PlayerHasBuff("Legendary Bracers") && WoW.PlayerBuffTimeRemaining("Legendary Bracers") > 4 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Pyroblast"); return; } // END Legendary Bracers support if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerHasBuff("HotStreak") && WoW.CanCast("Pyroblast")) { WoW.CastSpell("Pyroblast"); return; } /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Mirror Image") * && !WoW.IsSpellOnCooldown("Mirror Image")) * { * WoW.CastSpell("Mirror Image"); * return; * } */ if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerHasBuff("HeatingUp") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Combustion") && ((WoW.SpellCooldownTimeRemaining("Combustion") > 24 && WoW.PlayerSpellCharges("Fire Blast") >= 1) || (WoW.SpellCooldownTimeRemaining("Combustion") > 15 && WoW.PlayerSpellCharges("Fire Blast") >= 2) || (WoW.SpellCooldownTimeRemaining("Combustion") > 8 && WoW.PlayerSpellCharges("Fire Blast") > 2))) { WoW.CastSpell("Fire Blast"); return; } if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerHasBuff("HeatingUp") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak")) { WoW.CastSpell("Fire Blast"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball") && !WoW.LastSpell.Equals("Fire Blast") && ((WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.PlayerSpellCharges("Phoenix") > 2) || (WoW.SpellCooldownTimeRemaining("Combustion") > 30 && WoW.PlayerSpellCharges("Phoenix") > 1) || (WoW.SpellCooldownTimeRemaining("Combustion") > 65 && WoW.PlayerSpellCharges("Phoenix") == 1))) { WoW.CastSpell("Phoenix"); return; } if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Phoenix") > 1) { WoW.CastSpell("Phoenix"); return; } if (UseLB && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.CanCast("Living Bomb") && !WoW.IsSpellOnCooldown("Living Bomb") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellInRange("Fireball")) { WoW.CastSpell("Living Bomb"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Scorch") && WoW.CanCast("Scorch") && !WoW.PlayerHasBuff("HotStreak")) { WoW.CastSpell("Scorch"); return; } return; } // END MOVING PHASE // // SINGLE TARGET STAND STILL PHASE // if (!WoW.IsMoving && !WoW.PlayerHasBuff("Combustion Aura") && !WoW.LastSpell.Equals("Combustion") && !WoW.WasLastCasted("Combustion") && !Opener && WoW.TargetHealthPercent > 30) /* What to do if we are NOT MOVING - NON BURST PHASE */ { /* double dur = WoW.GetDebuffTimeRemaining("Shadowflame"); * Log.Write(System.Convert.ToString(dur), Color.Red); */ if (ForcePyro) { ForcePyro = !ForcePyro; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerHasBuff("HotStreak") && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast")) { if (pyrocast) { WoW.CastSpell("Pyroblast"); } else { WoW.CastSpell("Flamestrike"); } //WoW.CastSpell("Pyroblast"); return; } // Legendary Bracers support if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion Aura") && WoW.PlayerHasBuff("Legendary Bracers") && WoW.PlayerBuffTimeRemaining("Legendary Bracers") > 4 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Pyroblast"); return; } // END Legendary Bracers support /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Mirror Image") * && !WoW.IsSpellOnCooldown("Mirror Image")) * { * WoW.CastSpell("Mirror Image"); * return; * } */ /* if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Cinderstorm") * && WoW.TargetHasDebuff("Ignite") && !WoW.IsSpellOnCooldown("Cinderstorm")) * { * WoW.CastSpell("Cinderstorm"); * return; * } */ if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerHasBuff("HeatingUp") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Combustion") && ((WoW.SpellCooldownTimeRemaining("Combustion") > 24 && WoW.PlayerSpellCharges("Fire Blast") >= 1) || (WoW.SpellCooldownTimeRemaining("Combustion") > 15 && WoW.PlayerSpellCharges("Fire Blast") >= 2) || (WoW.SpellCooldownTimeRemaining("Combustion") > 8 && WoW.PlayerSpellCharges("Fire Blast") > 2))) { WoW.CastSpell("Fire Blast"); return; } if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerHasBuff("HeatingUp") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.PlayerHasBuff("HotStreak")) { WoW.CastSpell("Fire Blast"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball") && !WoW.LastSpell.Equals("Fire Blast") && ((WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.PlayerSpellCharges("Phoenix") > 2) || (WoW.SpellCooldownTimeRemaining("Combustion") > 30 && WoW.PlayerSpellCharges("Phoenix") > 1) || (WoW.SpellCooldownTimeRemaining("Combustion") > 65 && WoW.PlayerSpellCharges("Phoenix") == 1))) { WoW.CastSpell("Phoenix"); return; } if (!UseCooldowns && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Fire Blast") == 0 && WoW.CanCast("Phoenix") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.LastSpell.Equals("Fire Blast") && !WoW.LastSpell.Equals("Phoenix") && WoW.IsSpellInRange("Fireball") && WoW.PlayerSpellCharges("Phoenix") > 1) { WoW.CastSpell("Phoenix"); return; } if (UseLB && WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.CanCast("Living Bomb") && !WoW.IsSpellOnCooldown("Living Bomb") && !WoW.PlayerHasBuff("HotStreak") && WoW.IsSpellInRange("Fireball")) { WoW.CastSpell("Living Bomb"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsSpellInRange("Fireball") && WoW.CanCast("Fireball") && WoW.TargetHealthPercent > 30) { WoW.CastSpell("Fireball"); return; } } return; } if ((combatRoutine.Type == RotationType.AOE) || (combatRoutine.Type == RotationType.SingleTargetCleave)) { if (WoW.IsMoving) /* AOE WHEN MOVING */ { } if (!WoW.IsMoving) /* AOE WHEN NOT MOVING */ { } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { //if (WoW.IsSpellInRange("Mortal Strike") && WoW.IsInCombat && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry")) //{ // WoW.CastSpell("Battle Cry"); // return; // } //AOE on Press if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Q) < 0) { if (WoW.HasTarget && WoW.IsInCombat) { if (WoW.CanCast("Bladestorm") && WoW.IsSpellOnCooldown("Warbreaker")) { WoW.CastSpell("Bladestorm"); return; } if (!WoW.WasLastCasted("Warbreaker") && !WoW.PlayerHasBuff("Bladestorm")) { if (WoW.CanCast("Cleave") && !WoW.PlayerHasBuff("Cleave") && !WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Cleave"); return; } if (WoW.CanCast("Whirlwind") && WoW.Rage > 20 && WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Colossus Smash") && WoW.Rage > 28 && !WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Mortal Strike") && WoW.Rage > 28 && WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Mortal Strike"); return; } } } } if (WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike") && DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_X) < 0) { //Colossus smash control if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash")) { WoW.CastSpell("Colossus Smash"); } if (WoW.CanCast("Colossus Smash") && WoW.TargetHasDebuff("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && WoW.PlayerBuffStacks("Focused Rage") == 3) { WoW.CastSpell("Colossus Smash"); } //Cooldowns if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry") && WoW.TargetHasDebuff("Colossus Smash")) { WoW.CastSpell("Battle Cry"); return; } if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Avatar") && !WoW.IsSpellOnCooldown("Avatar") && WoW.TargetHasDebuff("Colossus Smash")) { WoW.CastSpell("Avatar"); return; } // Mortal Strike Control if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Mortal Strike") && WoW.TargetHasDebuff("Colossus Smash") && WoW.PlayerHasBuff("Battle Cry") && WoW.PlayerHasBuff("Avatar") && WoW.PlayerHasBuff("Shattered Defenses") && WoW.PlayerBuffStacks("Focused Rage") == 3) { WoW.CastSpell("Mortal Strike"); return; } //Slam control if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Slam") && !WoW.CanCast("Colossus Smash") && !WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Slam"); return; } // Focused Rage whenever. if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } } //Normal ST rotation if (!WoW.PlayerHasBuff("Battle Cry") && WoW.HasTarget && WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike")) { if (WoW.TargetHealthPercent > 20) //When targets are above 20%. Not in Execute phase. { //FR Control if (WoW.CanCast("Focused Rage") && WoW.Rage > 50) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.IsSpellOnCooldown("Battle Cry") && WoW.SpellCooldownTimeRemaining("Battle Cry") < 6 && WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } //CS Control if (WoW.CanCast("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Colossus Smash") || WoW.IsSpellOverlayed("Colossus Smash")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Colossus Smash") && WoW.SpellCooldownTimeRemaining("Battle Cry") < 1) { WoW.CastSpell("Colossus Smash"); return; } //MS if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") || WoW.IsSpellOverlayed("Mortal Strike")) { WoW.CastSpell("Mortal Strike"); return; } //Slam if (WoW.CanCast("Slam") && WoW.Rage >= 32 && !WoW.CanCast("Colossus Smash") && !WoW.CanCast("Mortal Strike")) { WoW.CastSpell("Slam"); return; } } if (WoW.TargetHealthPercent < 20) { //Non BC ST if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Focused Rage") && WoW.Rage >= 85 && !WoW.PlayerHasBuff("Focused Rage") || WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Execute") && WoW.Rage >= 18 && WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Execute"); return; } } } if (WoW.PlayerHasBuff("Battle Cry") && WoW.HasTarget && WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike")) { if (WoW.CanCast("Avatar") && WoW.PlayerHasBuff("Battle Cry") && WoW.IsSpellOnCooldown("Battle Cry")) { WoW.CastSpell("Avatar"); return; } if (WoW.TargetHealthPercent > 20) { //Maintain FR Stacks if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") <= 3) { WoW.CastSpell("Focused Rage"); } //CS on cooldown but not overlapping SD if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Colossus Smash"); return; } //MS with SD if (WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") == 3) { WoW.CastSpell("Mortal Strike"); return; } //MS on cooldown if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.IsSpellOnCooldown("Colossus Smash")) { WoW.CastSpell("Mortal Strike"); } //if all else fails, slam. if (WoW.CanCast("Slam") && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") >= 3) { WoW.CastSpell("Slam"); return; } } if (WoW.TargetHealthPercent <= 20) { if (WoW.CanCast("Focused Rage") && !WoW.PlayerHasBuff("Focused Rage") || WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && (WoW.PlayerBuffStacks("Focused Rage") == 3)) { WoW.CastSpell("Mortal Strike"); return; } if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Execute") && !WoW.CanCast("Mortal Strike")) { WoW.CastSpell("Execute"); return; } } } } if (combatRoutine.Type == RotationType.AOE) { // AOE stuff here } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) //Single Target { if (WoW.TargetIsCasting) //Kick { if (WoW.CanCast("Consume Magic") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 55 && !WoW.IsSpellOnCooldown("Consume Magic") && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Consume Magic")) { WoW.CastSpell("Consume Magic"); return; } } if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.PlayerHasBuff("Metamorphosis")) { if (combatRoutine.UseCooldowns) { if (WoW.Talent(5) == 3 && WoW.CanCast("Nemesis") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Nemesis"); return; } if (WoW.Talent(7) == 1 && WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } } /*if (WoW.CanCast("Fel Rush") && WoW.PlayerSpellCharges("Fel Rush")>=1 && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <=100) * { * WoW.CastSpell("Fel Rush"); * return; * } */// Use at own Risk may end up dead if (WoW.Talent(7) == 2 && WoW.CanCast("FelBarrage") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerSpellCharges("FelBarrage") >= 5) { WoW.CastSpell("FelBarrage"); return; } if (WoW.Talent(7) == 3 && WoW.Talent(1) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.Talent(1) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.Talent(7) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.Talent(5) == 2 && WoW.CanCast("FelEruption") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 10) { WoW.CastSpell("FelEruption"); return; } if (WoW.Talent(3) == 3 && WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } if (WoW.Talent(1) == 2 && WoW.CanCast("Felblade") && WoW.Fury < 100 && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Felblade"); return; } if (WoW.Talent(3) == 2 && WoW.CanCast("Death Sweep") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Death Sweep"); return; } if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerHasBuff("Chaos Blades") && (WoW.Fury >= 40)) { WoW.CastSpell("Annihilation"); return; } if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 55)) { WoW.CastSpell("Annihilation"); return; } if (WoW.Talent(2) == 3 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) { WoW.CastSpell("Demons Bite"); return; } if (WoW.Talent(2) == 1 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) { WoW.CastSpell("Demons Bite"); return; } if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Y) < 0)) { WoW.CastSpell("Eye Beam"); return; } } if (combatRoutine.UseCooldowns) { if (WoW.Talent(5) == 3 && WoW.CanCast("Nemesis") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Nemesis"); return; } if (WoW.CanCast("Metamorphosis") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Metamorphosis"); return; } if (WoW.Talent(7) == 1 && WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Fury <= 50) { WoW.CastSpell("Arcane Torrent"); return; } } /*if (WoW.CanCast("Fel Rush") && WoW.PlayerSpellCharges("Fel Rush")>=1 && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <=100) * { * WoW.CastSpell("Fel Rush"); * return; * } *///Use at own Risk may end up dead if (WoW.Talent(7) == 2 && WoW.CanCast("FelBarrage") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerSpellCharges("FelBarrage") >= 5) { WoW.CastSpell("FelBarrage"); return; } if (WoW.Talent(7) == 3 && WoW.Talent(1) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.Talent(1) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.Talent(7) == 3 && WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.Talent(5) == 2 && WoW.CanCast("FelEruption") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 10) { WoW.CastSpell("FelEruption"); return; } if (WoW.Talent(3) == 3 && WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } if (WoW.Talent(1) == 2 && WoW.CanCast("Felblade") && WoW.Fury < 100 && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Felblade"); return; } if (WoW.Talent(3) == 2 && WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Blade Dance"); return; } if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerHasBuff("Chaos Blades") && (WoW.Fury >= 40)) { WoW.CastSpell("Chaos Strike"); return; } if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 55)) { WoW.CastSpell("Chaos Strike"); return; } if (WoW.Talent(2) == 3 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) { WoW.CastSpell("Demons Bite"); return; } if (WoW.Talent(2) == 1 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) { WoW.CastSpell("Demons Bite"); return; } if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Y) < 0)) { WoW.CastSpell("Eye Beam"); return; } } } if (combatRoutine.Type == RotationType.AOE) // AOE { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Vengeful Retreat") && WoW.Talent(5) == 1 && WoW.Talent(2) == 1 && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 55) { WoW.CastSpell("Vengeful Retreat"); return; } if (WoW.CanCast("Vengeful Retreat") && WoW.Talent(5) == 1 && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 85) { WoW.CastSpell("Vengeful Retreat"); return; } if (WoW.CanCast("Fel Rush") && WoW.IsSpellInRange("Fel Blade") && WoW.Fury <= 100) { WoW.CastSpell("Fel Rush"); return; } if (WoW.Talent(7) == 2 && WoW.CanCast("FelBarrage") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerSpellCharges("FelBarrage") >= 5 && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("FelBarrage"); return; } if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.Talent(3) == 2 && WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Blade Dance"); return; } if (WoW.Talent(3) == 2 && WoW.CanCast("Death Sweep") && WoW.PlayerHasBuff("Metamorphosis") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Death Sweep"); return; } if (WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 35) { WoW.CastSpell("Blade Dance"); return; } if (WoW.CanCast("Death Sweep") && WoW.PlayerHasBuff("Metamorphosis") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 35) { WoW.CastSpell("Death Sweep"); return; } if (WoW.Talent(3) == 3 && WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } if ((WoW.Talent(3) == 1 && WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 65 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.TargetHasDebuff("Nemesis")))))) { WoW.CastSpell("Chaos Strike"); return; } if ((WoW.Talent(3) == 1 && WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 65 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.TargetHasDebuff("Nemesis")))))) { WoW.CastSpell("Annihilation"); return; } if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } if ((WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 65 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.TargetHasDebuff("Nemesis")))))) { WoW.CastSpell("Chaos Strike"); return; } if ((WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 65 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.TargetHasDebuff("Nemesis")))))) { WoW.CastSpell("Annihilation"); return; } if (WoW.Talent(2) == 1 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) { WoW.CastSpell("Demons Bite"); return; } if (WoW.Talent(2) == 3 && WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) { WoW.CastSpell("Demons Bite"); return; } if (WoW.Talent(6) == 2 && WoW.CanCast("Chaos Nova") && WoW.IsSpellInRange("Chaos Blade")) { WoW.CastSpell("Chaos Nova"); return; } } } }
public override void Pulse() { if (stopwatch.ElapsedMilliseconds == 0) { stopwatch.Start(); Log.WritePixelMagic("The Cooldown toggle button is now Active (Numpad0). The delay is set to 1000ms ( 1 second )", Color.Black); return; } { if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_NUMPAD0) < 0) { if (stopwatch.ElapsedMilliseconds > 1000) { combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns; stopwatch.Restart(); } } if (combatRoutine.Type == RotationType.SingleTarget) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (UseCooldowns && RuneOfPower && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") >= 40 && WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerIsCasting && !WoW.IsMoving && !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power") || (UseCooldowns && RuneOfPower && !WoW.PlayerIsCasting && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsMoving && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power"))) { WoW.CastSpell("Rune of Power"); return; } if (UseCooldowns && Mirrors && WoW.CanCast("Mirror Image") && !WoW.IsSpellOnCooldown("Mirror Image") && WoW.PlayerHasBuff("Combustion")) { WoW.CastSpell("Mirror Image"); return; } if (WoW.CanCast("Scorch") && WoW.IsMoving && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Scorch"); return; } if (WoW.IsInCombat && Meteor && Control.ModifierKeys == Keys.Alt && !WoW.PlayerIsCasting) { WoW.CastSpell("Meteor"); return; } if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 1.1 && WoW.PlayerHasBuff("Heating Up") && UseCooldowns && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && !WoW.IsSpellOnCooldown("Combustion")) { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.PlayerIsCasting && UseCooldowns && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && !WoW.IsSpellOnCooldown("Combustion")) { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerHasBuff("Heating Up") && WoW.LastSpell != "Fire Blast" && WoW.LastSpell != "Phoenix's Flames" && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 1.1 && !UseCooldowns && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsSpellOnCooldown("Combustion")) { WoW.CastSpell("Phoenix's Flames"); return; } if (!UseCooldowns && Combustion && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fire Blast"); return; } if (WoW.CanCast("Phoenix's Flames") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 1.1 && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 60 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.IsInCombat && Control.ModifierKeys == Keys.Alt && ROF && !WoW.PlayerIsCasting) { WoW.CastSpell("Ring of Frost"); return; } if (Barrier && WoW.CanCast("Blazing Barrier") && WoW.HealthPercent <= 80 && !WoW.IsSpellOnCooldown("Blazing Barrier") && !WoW.PlayerHasBuff("Blazing Barrier")) { WoW.CastSpell("Blazing Barrier"); return; } if (!UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Cinderstorm"); return; } if (UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && WoW.IsSpellOnCooldown("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 5 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Cinderstorm"); return; } if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling || UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") && !WoW.IsSpellOnCooldown("Mirror Image") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Combustion"); return; } if (DragBr && WoW.CanCast("Dragon's Breath") && WoW.IsSpellInRange("Scorch") && !WoW.PlayerHasBuff("Combustion")) { WoW.CastSpell("Dragon's Breath"); return; } if (WoW.PlayerSpellCharges("Phoenix's Flames") > 2 && !WoW.PlayerHasBuff("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 1.1 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" || WoW.SpellCooldownTimeRemaining("Combustion") < 20 && WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast") { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Fire Blast") > 0.5 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast") { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.CanCast("Living Bomb") && LivingBomb && !WoW.IsSpellOnCooldown("Living Bomb") && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Living Bomb"); return; } if (WoW.CanCast("Ice Block") && !WoW.PlayerHasBuff("Ice Block") && IceBlock && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ice Block")) { WoW.CastSpell("Ice Block"); Log.Write("--------Activating Ice Block, you were below 20%HealthPoints.--------"); return; } // Legendary Bracers Support. if (Legendary && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerBuffTimeRemaining("Marquee Bindings of the Sun King") > 4 && WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!") || (!WoW.PlayerHasBuff("Combustion") && !WoW.WasLastCasted("Pyroblast") && WoW.PlayerHasBuff("Ice Floes") && !WoW.PlayerIsCasting && WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!"))) { WoW.CastSpell("Pyroblast"); return; } if (WoW.CanCast("Pyroblast") && WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Combustion")) { WoW.CastSpell("Pyroblast"); return; } if (WoW.CanCast("Pyroblast") && WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Phoenix's Flames") < 2) { WoW.CastSpell("Pyroblast"); return; } if (WoW.CanCast("Pyroblast") && WoW.PlayerHasBuff("Hot Streak!") && WoW.LastSpell == "Combustion") { WoW.CastSpell("Pyroblast"); return; } if (WoW.CanCast("Pyroblast") && !UseCooldowns && Combustion && WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Pyroblast"); return; } if (WoW.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fireball"); return; } if (WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 1.3 && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fire Blast"); return; } if (WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fire Blast"); return; } if (!WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Heating Up") && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fireball"); return; } if (!WoW.PlayerIsCasting && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Heating Up") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fireball"); return; } if (WoW.IsMoving && WoW.PlayerHasBuff("Ice Floes") && WoW.IsSpellInRange("Fireball") && !WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Heating Up")) { WoW.CastSpell("Fireball"); return; } if (!WoW.PlayerHasBuff("Combustion") && !WoW.IsMoving && WoW.CanCast("Fireball") && !WoW.PlayerIsCasting && WoW.PlayerHasBuff("Heating Up") && WoW.SpellCooldownTimeRemaining("Combustion") <= 20 && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 || WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 20 || WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") && !WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 20 || WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") >= 20 || WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 20) { WoW.CastSpell("Fireball"); return; } } } } if (combatRoutine.Type == RotationType.AOE) { if (UseCooldowns && RuneOfPower && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") >= 40 && WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerIsCasting && !WoW.IsMoving && !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power") || (UseCooldowns && RuneOfPower && !WoW.PlayerIsCasting && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsMoving && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Rune of Power") && !WoW.IsSpellOnCooldown("Rune of Power"))) { WoW.CastSpell("Rune of Power"); return; } if (UseCooldowns && Mirrors && WoW.CanCast("Mirror Image") && !WoW.IsSpellOnCooldown("Mirror Image") && WoW.PlayerHasBuff("Combustion")) { WoW.CastSpell("Mirror Image"); return; } if (WoW.CanCast("Scorch") && WoW.IsMoving && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Scorch"); return; } if (WoW.IsInCombat && Meteor && Control.ModifierKeys == Keys.Alt && !WoW.PlayerIsCasting) { WoW.CastSpell("Meteor"); return; } if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 1.1 && WoW.PlayerHasBuff("Heating Up") && UseCooldowns && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && !WoW.IsSpellOnCooldown("Combustion")) { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.PlayerIsCasting && UseCooldowns && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && !WoW.IsSpellOnCooldown("Combustion")) { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.CanCast("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerHasBuff("Heating Up") && WoW.LastSpell != "Fire Blast" && WoW.LastSpell != "Phoenix's Flames" && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 1.1 && !UseCooldowns && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.IsSpellOnCooldown("Combustion")) { WoW.CastSpell("Phoenix's Flames"); return; } if (!UseCooldowns && Combustion && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fire Blast"); return; } if (WoW.CanCast("Phoenix's Flames") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 1.1 && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 60 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.IsInCombat && Control.ModifierKeys == Keys.Alt && ROF && !WoW.PlayerIsCasting) { WoW.CastSpell("Ring of Frost"); return; } if (Barrier && WoW.CanCast("Blazing Barrier") && WoW.HealthPercent <= 80 && !WoW.IsSpellOnCooldown("Blazing Barrier") && !WoW.PlayerHasBuff("Blazing Barrier")) { WoW.CastSpell("Blazing Barrier"); return; } if (!UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Cinderstorm"); return; } if (UseCooldowns && WoW.CanCast("Cinderstorm") && Cinderstorm && WoW.TargetHasDebuff("Ignite") && !WoW.PlayerHasBuff("Combustion") && WoW.IsSpellOnCooldown("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 5 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Cinderstorm"); return; } if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling || UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") == 3 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") && !WoW.IsSpellOnCooldown("Mirror Image") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Combustion"); return; } if (DragBr && WoW.CanCast("Dragon's Breath") && WoW.IsSpellInRange("Scorch") && !WoW.PlayerHasBuff("Combustion")) { WoW.CastSpell("Dragon's Breath"); return; } if (WoW.PlayerSpellCharges("Phoenix's Flames") > 2 && !WoW.PlayerHasBuff("Combustion") && WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.IsSpellOnCooldown("Fire Blast") && WoW.SpellCooldownTimeRemaining("Fire Blast") > 1.1 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" || WoW.SpellCooldownTimeRemaining("Combustion") < 20 && WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") == 3 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast") { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.CanCast("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerHasBuff("Combustion") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Fire Blast") > 0.5 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast") { WoW.CastSpell("Phoenix's Flames"); return; } if (WoW.CanCast("Living Bomb") && LivingBomb && !WoW.IsSpellOnCooldown("Living Bomb") && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Living Bomb"); return; } if (WoW.CanCast("Ice Block") && !WoW.PlayerHasBuff("Ice Block") && IceBlock && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ice Block")) { WoW.CastSpell("Ice Block"); Log.Write("--------Activating Ice Block, you were below 20%HealthPoints.--------"); return; } // Legendary Bracers Support. if (Legendary && WoW.CanCast("Pyroblast") && !WoW.WasLastCasted("Pyroblast") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerBuffTimeRemaining("Marquee Bindings of the Sun King") > 4 && WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!") || (!WoW.PlayerHasBuff("Combustion") && !WoW.WasLastCasted("Pyroblast") && WoW.PlayerHasBuff("Ice Floes") && !WoW.PlayerIsCasting && WoW.PlayerHasBuff("Marquee Bindings of the Sun King") && !WoW.PlayerHasBuff("Hot Streak!"))) { WoW.CastSpell("Pyroblast"); return; } if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && WoW.PlayerHasBuff("Hot Streak!") && WoW.IsSpellOnCooldown("Combustion")) { WoW.CastSpell("Flamestrike"); return; } if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && WoW.PlayerHasBuff("Hot Streak!") && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerSpellCharges("Phoenix's Flames") < 2) { WoW.CastSpell("Flamestrike"); return; } if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && WoW.PlayerHasBuff("Hot Streak!") && WoW.LastSpell == "Combustion") { WoW.CastSpell("Flamestrike"); return; } if (!WoW.PlayerIsCasting && WoW.CanCast("Flamestrike") && !UseCooldowns && Combustion && WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Flamestrike"); return; } if (WoW.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fireball"); return; } if (WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 1.3 && WoW.PlayerIsCasting && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fire Blast"); return; } if (WoW.SpellCooldownTimeRemaining("Combustion") > 20 && WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fire Blast"); return; } if (!WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Heating Up") && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fireball"); return; } if (!WoW.PlayerIsCasting && WoW.CanCast("Fireball") && WoW.IsSpellInRange("Fireball") && !WoW.IsMoving && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Heating Up") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Fireball"); return; } if (WoW.IsMoving && WoW.PlayerHasBuff("Ice Floes") && WoW.IsSpellInRange("Fireball") && !WoW.PlayerHasBuff("Hot Streak!") && !WoW.PlayerHasBuff("Heating Up")) { WoW.CastSpell("Fireball"); return; } if (!WoW.PlayerHasBuff("Combustion") && !WoW.IsMoving && WoW.CanCast("Fireball") && !WoW.PlayerIsCasting && WoW.PlayerHasBuff("Heating Up") && WoW.SpellCooldownTimeRemaining("Combustion") <= 20 && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 || WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") && WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 20 || WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") && !WoW.IsSpellOnCooldown("Fire Blast") && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 20 || WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") >= 20 || WoW.CanCast("Fireball") && !WoW.IsMoving && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Combustion") && WoW.PlayerHasBuff("Heating Up") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.SpellCooldownTimeRemaining("Combustion") <= 20) { WoW.CastSpell("Fireball"); } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (!coolDownStopWatch.IsRunning || coolDownStopWatch.ElapsedMilliseconds > 60000) { coolDownStopWatch.Restart(); } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_MULTIPLY) < 0) //Use cooldowns manage by *numButton { if (coolDownStopWatch.ElapsedMilliseconds > 1000) { combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns; //Log.Write("Cooldowns " + (combatRoutine.UseCooldowns ? "On" : "Off")); coolDownStopWatch.Restart(); } } if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.PlayerHasBuff("Metamorphosis")) { if (combatRoutine.UseCooldowns) { if (WoW.CanCast("Nemesis") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Nemesis"); return; } if (WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } } if (WoW.CanCast("Death Sweep") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Death Sweep"); return; } if (WoW.CanCast("Felblade") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury < 100) { WoW.CastSpell("Felblade"); //Felblade only at melee range to not make worse (if you need to gtfo) return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0)) { WoW.CastSpell("Eye Beam"); //Use Eyebeam by Z press return; } if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 55) { WoW.CastSpell("Annihilation"); return; } //if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator //{ // WoW.CastSpell("Demons Bite"); // return; //} if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } } if (combatRoutine.UseCooldowns) { if (WoW.CanCast("Nemesis") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Nemesis"); return; } if (WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } } if (WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Blade Dance"); return; } if (WoW.CanCast("Felblade") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury < 100) { WoW.CastSpell("Felblade"); //Felblade only at melee range to not make worse (if you need to gtfo) return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0)) { WoW.CastSpell("Eye Beam"); //Use Eyebeam by Z press return; } if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 70 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.SpellCooldownTimeRemaining("Nemesis") >= 60)))) { WoW.CastSpell("Chaos Strike"); //If we got damage buffs - spent fury on CS instantly (15 save for Blade Dance) return; } if (WoW.CanCast("Blur") && WoW.IsInCombat && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Blur Usage Percent")) { WoW.CastSpell("Blur"); return; } //if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator //{ // WoW.CastSpell("Demons Bite"); // return; //} if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } } } if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.SingleTargetCleave) { // Do AOE Stuff here if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.PlayerHasBuff("Metamorphosis")) { if (WoW.CanCast("FOTI") && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Fel Barrage") && WoW.PlayerSpellCharges("Fel Barrage") == 5 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Fel Barrage")) { WoW.CastSpell("Fel Barrage"); return; } if (WoW.CanCast("Death Sweep") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Death Sweep"); return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70)) { WoW.CastSpell("Annihilation"); return; } if (WoW.CanCast("Fel Barrage") && WoW.PlayerSpellCharges("Fel Barrage") >= 4 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Fel Barrage")) { WoW.CastSpell("Fel Barrage"); return; } //if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator //{ // WoW.CastSpell("Demons Bite"); // return; //} if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("Throw Glaive"); return; } } if (WoW.CanCast("FOTI") && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Fel Barrage") && WoW.PlayerSpellCharges("Fel Barrage") == 5 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Fel Barrage")) { WoW.CastSpell("Fel Barrage"); return; } if (WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Blade Dance"); return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") > 1) && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70)) // Fury Spender { WoW.CastSpell("Chaos Strike"); return; } if (WoW.CanCast("Fel Barrage") && WoW.PlayerSpellCharges("Fel Barrage") >= 4 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Fel Barrage")) { WoW.CastSpell("Fel Barrage"); return; } if (WoW.CanCast("Blur") && WoW.IsInCombat && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Blur Usage Percent")) { WoW.CastSpell("Blur"); return; } //if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator //{ // WoW.CastSpell("Demons Bite"); // return; //} if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("Throw Glaive"); } } } }
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 <= 20 && !WoW.IsMounted && WoW.HealthPercent != 0) { Thread.Sleep(500); WoW.CastSpell("Healthstone"); WoW.CastSpell("Potion"); return; } //Exhilaration if (WoW.CanCast("Exhilaration") && WoW.HealthPercent <= 30 && !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() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { /* * Endless Rage / War Machine * Double Time * Avatar * Warpaint * Frothing Zerker/Massacre * Inner Rage * Reckless Abandon */ //AOE on Press //Normal ST rotation if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst")) { if (WoW.TargetHealthPercent >= 20) { //When targets are above 20%. Not in Execute phase. (need to change this to TTExecute) //Single target with Reckless Abandon - Battle Cry Avatar Rampage - Raging Blow - Odyn's Fury - Bloodthirst - Raging Blow - Furious Slash - Bloodthirst if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Q) < 0) { if (WoW.CanCast("Whirlwind") && TFZFMint && !WoW.PlayerHasBuff("Meat Cleaver") && WoW.Rage <= 99) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Whirlwind") && !TFZFMint && !WoW.PlayerHasBuff("Meat Cleaver") && WoW.Rage <= 85) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Whirlwind") && TFZFMint && WoW.Rage <= 99 && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow") && !WoW.CanCast("Rampage") ) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Whirlwind") && !TFZFMint && WoW.Rage <= 85 && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow") && !WoW.CanCast("Rampage") ) { WoW.CastSpell("Whirlwind"); return; } } if (TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage >= 100) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.TargetHealthPercent <= 20 && WoW.IsSpellOverlayed("Execute") || WoW.Rage >= 25) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Raging Blow") && WoW.Rage <= 85 && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (!TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage >= 85) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } //if (WoW.CanCast("Execute") // && WoW.TargetHealthPercent <= 20 // && WoW.IsSpellOverlayed("Execute") || WoW.Rage >= 25) //{ WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Raging Blow") && WoW.Rage <= 85 && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } } if (WoW.TargetHealthPercent <= 20) { if (TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage >= 100) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute") || WoW.Rage >= 25) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Execute") && WoW.Rage > 25) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (!TFZFMint) { if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Enrage") && !WoW.PlayerHasBuff("Massacre")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Massacre")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Execute") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Bloodthirst") && WoW.Rage < 25) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Raging Blow") && WoW.Rage < 25) { WoW.CastSpell("Raging Blow"); return; } } } if (mythicplusinterrupts) { if (WoW.CanCast("Pummel") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible) { //int spell list for all important spells in M+ if (WoW.TargetCastingSpellID == 200248 //Court Of Stars Mythic+ Interrupt list || WoW.TargetCastingSpellID == 225573 || WoW.TargetCastingSpellID == 208165 || WoW.TargetCastingSpellID == 211401 || WoW.TargetCastingSpellID == 21147 || WoW.TargetCastingSpellID == 211299 || WoW.TargetCastingSpellID == 2251 || WoW.TargetCastingSpellID == 209413 || WoW.TargetCastingSpellID == 209404 || WoW.TargetCastingSpellID == 215204 || WoW.TargetCastingSpellID == 210261 //Darkheart Thicket Mythic+ Interrupt list || WoW.TargetCastingSpellID == 200658 || WoW.TargetCastingSpellID == 200631 || WoW.TargetCastingSpellID == 204246 || WoW.TargetCastingSpellID == 2014 //Eye of Azshara Mythic+ Interrupt list || WoW.TargetCastingSpellID == 19687 || WoW.TargetCastingSpellID == 218532 || WoW.TargetCastingSpellID == 195129 || WoW.TargetCastingSpellID == 195046 || WoW.TargetCastingSpellID == 197502 || WoW.TargetCastingSpellID == 196027 || WoW.TargetCastingSpellID == 196175 || WoW.TargetCastingSpellID == 192003 || WoW.TargetCastingSpellID == 191848 //Halls of Valor Mythic+ Interrupt list || WoW.TargetCastingSpellID == 198595 || WoW.TargetCastingSpellID == 198962 || WoW.TargetCastingSpellID == 198931 || WoW.TargetCastingSpellID == 192563 || WoW.TargetCastingSpellID == 192288 || WoW.TargetCastingSpellID == 199726 //Maw of Souls Mythic+ Interrupt list || WoW.TargetCastingSpellID == 198495 || WoW.TargetCastingSpellID == 195293 || WoW.TargetCastingSpellID == 199589 || WoW.TargetCastingSpellID == 194266 || WoW.TargetCastingSpellID == 198405 || WoW.TargetCastingSpellID == 199514 || WoW.TargetCastingSpellID == 194657 //Neltharions Lair Mythic+ Interrupt list || WoW.TargetCastingSpellID == 193585 || WoW.TargetCastingSpellID == 202181 //The Arcway Mythic+ Interrupt list || WoW.TargetCastingSpellID == 226269 || WoW.TargetCastingSpellID == 211007 || WoW.TargetCastingSpellID == 211757 || WoW.TargetCastingSpellID == 226285 || WoW.TargetCastingSpellID == 226206 || WoW.TargetCastingSpellID == 211115 || WoW.TargetCastingSpellID == 196392 // Advisor Vandros (Interrupt manually) Spell,203176,Accelerating Blast || WoW.TargetCastingSpellID == 203957 //Vault of the Wardens Mythic+ Interrupt list || WoW.TargetCastingSpellID == 193069 || WoW.TargetCastingSpellID == 191823 || WoW.TargetCastingSpellID == 202661 || WoW.TargetCastingSpellID == 201488 || WoW.TargetCastingSpellID == 195332 //Raid Interrupts || WoW.TargetCastingSpellID == 209485 || WoW.TargetCastingSpellID == 209410 || WoW.TargetCastingSpellID == 211470 || WoW.TargetCastingSpellID == 225100 || WoW.TargetCastingSpellID == 207980 || WoW.TargetCastingSpellID == 196870 || WoW.TargetCastingSpellID == 195284 || WoW.TargetCastingSpellID == 192005 || WoW.TargetCastingSpellID == 228255 || WoW.TargetCastingSpellID == 228239 || WoW.TargetCastingSpellID == 227917 || WoW.TargetCastingSpellID == 228625 || WoW.TargetCastingSpellID == 228606 || WoW.TargetCastingSpellID == 229714 || WoW.TargetCastingSpellID == 227592 || WoW.TargetCastingSpellID == 229083 || WoW.TargetCastingSpellID == 228025 || WoW.TargetCastingSpellID == 228019 || WoW.TargetCastingSpellID == 227987 || WoW.TargetCastingSpellID == 227420 || WoW.TargetCastingSpellID == 200905) { if (!WoW.IsSpellOnCooldown("Pummel") && WoW.TargetPercentCast >= 40) { WoW.CastSpell("Pummel"); return; } } } } } } if (combatRoutine.Type == RotationType.AOE) { // AOE stuff here } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
public override void Pulse() { if (WoW.PlayerHasBuff("Mount")) { return; } if (WoW.IsInCombat && WoW.HealthPercent < 35 && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand")) { WoW.CastSpell("Last Stand"); return; } if (WoW.IsInCombat && WoW.HealthPercent < 20 && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall")) { WoW.CastSpell("Shield Wall"); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("HeroicLeap")) { WoW.CastSpell("HeroicLeap"); return; } return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_1) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Thunder Clap"); return; } return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LMENU) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Shockwave")) { WoW.CastSpell("Shockwave"); return; } return; } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (CombatWatch.IsRunning && !WoW.IsInCombat) { CombatWatch.Reset(); } if (!CombatWatch.IsRunning && WoW.IsInCombat) { CombatWatch.Start(); } if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling) { if (!WoW.TargetHasDebuff("ShockWavestun") && WoW.IsInCombat) { if (WoW.CanCast("Shield Block") && WoW.Rage >= 10 && !WoW.PlayerIsChanneling && WoW.HealthPercent < 100 && (WoW.PlayerSpellCharges("Shield Block") == 2 || (WoW.PlayerSpellCharges("Shield Block") >= 1 && WoW.HealthPercent <= 90 && WoW.PlayerBuffTimeRemaining("ShieldBlockAura") <= 2))) { WoW.CastSpell("Shield Block"); return; } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap") && CombatWatch.ElapsedMilliseconds > 1000 && CombatWatch.ElapsedMilliseconds < 5000) { WoW.CastSpell("Thunder Clap"); return; } /* ------------------ IGNORE PAIN MANAGEMENT----------------------*/ if (WoW.CanCast("Ignore Pain") && WoW.PlayerHasBuff("Vengeance: Ignore Pain") && WoW.PlayerHasBuff("Ultimatum") && WoW.Rage >= 18) { WoW.CastSpell("Ignore Pain"); return; } if (WoW.CanCast("Ignore Pain") && WoW.Rage > 35 && WoW.PlayerHasBuff("Vengeance: Ignore Pain")) { WoW.CastSpell("Ignore Pain"); return; } if (WoW.CanCast("Ignore Pain") && WoW.Rage < 30 && WoW.Rage >= 20 && WoW.HealthPercent < 100 && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) && !WoW.PlayerHasBuff("Ultimatum") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.PlayerHasBuff("Vengeance: Focused Rage")) { WoW.CastSpell("Ignore Pain"); return; } /* ------------------ END IGNORE PAIN MANAGEMENT-------------------*/ /* ------------------ FOCUSED RAGE MANAGEMENT----------------------*/ if (WoW.CanCast("Focused Rage") && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) && WoW.PlayerHasBuff("Vengeance: Focused Rage") && WoW.Rage >= 20) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.PlayerHasBuff("Ultimatum") && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) && WoW.PlayerHasBuff("Vengeance: Focused Rage")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.PlayerHasBuff("Ultimatum") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.PlayerHasBuff("Vengeance: Focused Rage")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance: Focused Rage") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.Rage < 10 && WoW.PlayerHasBuff("Ultimatum") && WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.IsSpellOnCooldown("Shield Slam")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.Rage >= 120) { WoW.CastSpell("Focused Rage"); } /* ------------------ END FOCUSED RAGE MANAGEMENT-------------------*/ if (WoW.TargetIsCasting && WoW.CanCast("SpellReflect") && !WoW.IsSpellOnCooldown("SpellReflect")) { WoW.CastSpell("SpellReflect"); } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Shield Slam") && !WoW.IsSpellOnCooldown("Shield Slam")) { WoW.CastSpell("Shield Slam"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam")) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Victory Rush") && !WoW.IsSpellOnCooldown("Victory Rush") && WoW.IsSpellInRange("Shield Slam") && WoW.HealthPercent < 90 && WoW.PlayerHasBuff("VictoryRush")) { WoW.CastSpell("Victory Rush"); return; } if (WoW.IsSpellInRange("Devastate") && WoW.CanCast("Devastate")) { WoW.CastSpell("Devastate"); return; } /* if (WoW.IsSpellInRange("Shield Slam")&& WoW.CanCast("Thunder Clap")&& !WoW.IsSpellOnCooldown("Thunder Clap")) * { * WoW.CastSpell("Thunder Clap"); * return; * } */ } if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun")) { WoW.CastSpell("Neltharion's Fury"); return; } } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE Stuff here if (WoW.IsSpellOverlayed("Shield Slam")) { Log.Write("Spell Overlayed: Shield Slam"); } } }
public override void Pulse() { if (stopwatch.ElapsedMilliseconds == 0) { stopwatch.Start(); Log.WritePixelMagic("The Cooldown toggle button is now Active (Numpad0). The delay is set to 500ms ( 0.5 second )", Color.Black); return; } { if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_NUMPAD0) < 0) { if (stopwatch.ElapsedMilliseconds > 500) { combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns; stopwatch.Restart(); } } if (combatRoutine.Type == RotationType.SingleTarget) { if (WoW.IsSpellInRange("Rupture") && WoW.IsInCombat) { if (UseCooldowns && WoW.CanCast("Kingsbane") && WoW.CurrentComboPoints <= 4 && WoW.Energy >= 35 && WoW.PlayerHasBuff("Envenom") && WoW.PlayerBuffTimeRemaining("Envenom") >= 150 && !WoW.IsSpellOnCooldown("Kingsbane") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") >= 1400 && ( WoW.SpellCooldownTimeRemaining("Vendetta") >= 1000 || WoW.TargetHasDebuff("Vendetta") )) { WoW.CastSpell("Kingsbane"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.CanCast("Garrote") && WoW.Energy >= 45 && !WoW.TargetHasDebuff("Garrote") && !WoW.IsSpellOnCooldown("Garrote") && WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Garrote"); return; } if (WoW.TargetHasDebuff("Vendetta") && WoW.CanCast("Fan Of Knives") && WoW.Energy >= 35 && WoW.PlayerHasBuff("FoK") && WoW.PlayerBuffStacks("FoK") == 30 && WoW.CurrentComboPoints <= 4) { WoW.CastSpell("Fan Of Knives"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.CanCast("Garrote") && WoW.Energy >= 45 && WoW.TargetHasDebuff("Garrote") && WoW.TargetDebuffTimeRemaining("Garrote") <= 300 && WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Garrote"); return; } if (WoW.CurrentComboPoints == 4 && WoW.Energy >= 25 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture") && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Rupture"); return; } if (WoW.CurrentComboPoints == 4 && WoW.Energy >= 25 && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") <= 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Rupture"); return; } if (WoW.CurrentComboPoints == 5 && WoW.Energy >= 25 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture") && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Rupture"); return; } if (WoW.CurrentComboPoints == 5 && WoW.Energy >= 25 && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") <= 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Rupture"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetDebuffTimeRemaining("Toxins") <= 150 && WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetDebuffTimeRemaining("Toxins") <= 150 && WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (WoW.TargetHasDebuff("Kingsbane") && WoW.TargetDebuffTimeRemaining("Rupture") >= 400 && WoW.Energy >= 35 && WoW.CurrentComboPoints >= 2 && WoW.PlayerHasBuff("Envenom") && WoW.PlayerBuffTimeRemaining("Envenom") <= 150) { WoW.CastSpell("Envenom"); Log.Write("Extend Envenom remaining"); return; } if (WoW.TargetHasDebuff("Kingsbane") && WoW.TargetDebuffTimeRemaining("Rupture") >= 400 && WoW.Energy >= 35 && WoW.CurrentComboPoints >= 2 && !WoW.PlayerHasBuff("Envenom")) { WoW.CastSpell("Envenom"); Log.Write("Getting Envenom up for kingsbane"); return; } if (!WoW.PlayerHasBuff("Vanish") && !WoW.TargetHasDebuff("Toxins") && WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (!WoW.PlayerHasBuff("Vanish") && !WoW.TargetHasDebuff("Toxins") && WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetHasDebuff("Vendetta") && WoW.Energy >= 140 && WoW.CurrentComboPoints >= 4 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (WoW.CanCast("Mutilate") && WoW.Energy >= 55 && WoW.CurrentComboPoints <= 3) { WoW.CastSpell("Mutilate"); return; } if (UseCooldowns && WoW.CanCast("Vendetta") && !WoW.IsSpellOnCooldown("Vendetta") && WoW.Energy <= 50 ) { WoW.CastSpell("Vendetta"); return; } /*if (UseCooldowns && * WoW.CanCast("Vanish") && * WoW.CurrentComboPoints >= 5 && * WoW.Energy >= 25 && WoW.TargetHasDebuff("Vendetta") && * ( * WoW.TargetHasDebuff("Rupture") && * WoW.TargetDebuffTimeRemaining("Rupture") < 10 * ) * ) { * WoW.CastSpell("Vanish"); * return; * }*/ if (!WoW.PlayerHasBuff("Critbuff") && UseCooldowns && WoW.CurrentComboPoints == 5 && !WoW.IsSpellOnCooldown("Vanish") && WoW.Energy >= 35 && WoW.TargetHasDebuff("Vendetta")) { WoW.CastSpell("Vanish"); return; } if (UseCooldowns && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("Vanish") && WoW.Energy >= 35 && WoW.TargetHasDebuff("Vendetta")) { WoW.CastSpell("Rupture"); return; } } } if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.SingleTargetCleave) // Do AoE Target Stuff here { if (WoW.HasTarget && WoW.IsSpellInRange("Rupture") && WoW.IsInCombat) { if (WoW.Energy >= 35 && WoW.CurrentComboPoints <= 4 && WoW.CanCast("Fan Of Knives")) { WoW.CastSpell("Fan Of Knives"); return; } if (WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.TargetHealthPercent <= 35 && WoW.CanCast("Envenom")) { WoW.CastSpell("Envenom"); return; } if (WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.TargetHealthPercent <= 35 && WoW.CanCast("Envenom")) { WoW.CastSpell("Envenom"); return; } if (WoW.Energy >= 25 && WoW.CurrentComboPoints == 4 && WoW.TargetHealthPercent >= 36 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture")) { WoW.CastSpell("Rupture"); return; } if (WoW.Energy >= 25 && WoW.CurrentComboPoints == 5 && WoW.TargetHealthPercent >= 36 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture")) { WoW.CastSpell("Rupture"); return; } if (WoW.Energy >= 35 && WoW.CurrentComboPoints >= 4 && WoW.TargetHealthPercent >= 36 && WoW.TargetHasDebuff("Rupture") && WoW.CanCast("Envenom")) { WoW.CastSpell("Envenom"); return; } if (WoW.CanCast("Garrote") && WoW.Energy >= 45 && !WoW.TargetHasDebuff("Garrote") && !WoW.IsSpellOnCooldown("Garrote") && WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Garrote"); return; } } } } }
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() { if (!coolDownStopWatch.IsRunning || coolDownStopWatch.ElapsedMilliseconds > 60000) { coolDownStopWatch.Restart(); } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_MULTIPLY) < 0) //Use cooldowns manage by *numButton { if (coolDownStopWatch.ElapsedMilliseconds > 1000) { combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns; coolDownStopWatch.Restart(); } } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Ghost Wolf") && WoW.IsInCombat) //First things go first but break if we wanna run in Wolf { if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) //interupt every spell { WoW.CastSpell("Wind Shear"); return; } if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Stormstrike") && combatRoutine.UseCooldowns && WoW.Maelstrom >= 20) //Wolves in melee range { Log.Write("Using Feral Spirit", Color.Red); WoW.CastSpell("Feral Spirit"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 115) //Crash lightning for alpha wolf { WoW.CastSpell("Crash Lightning"); return; } if (WoW.CanCast("Boulderfist") && (!WoW.PlayerHasBuff("Landslide") || WoW.PlayerBuffTimeRemaining("Landslide") <= 1) && WoW.IsSpellInRange("Flametongue")) //REFRESH LANDSLIDE { Log.Write("Reseting Landslide", Color.Red); WoW.CastSpell("Boulderfist"); return; } if (WoW.CanCast("Boulderfist") && WoW.IsSpellInRange("Flametongue") && WoW.PlayerSpellCharges("Boulderfist") == 2 && WoW.Maelstrom <= 100) { WoW.CastSpell("Boulderfist"); //boulderfist it to not waste a charge return; } if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue") && ((!WoW.PlayerHasBuff("Flametongue") || WoW.PlayerBuffTimeRemaining("Flametongue") <= 1)) || (WoW.SpellCooldownTimeRemaining("Doom Winds") <= 6 && WoW.PlayerBuffTimeRemaining("Flametongue") <= 4)) //REFRESH FLAMETONGUE { Log.Write("Reseting Flametongue buff", Color.Red); WoW.CastSpell("Flametongue"); return; } if (WoW.CanCast("Doom Winds") && combatRoutine.UseCooldowns && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Flametongue")) { WoW.CastSpell("Doom Winds"); return; } if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Stormbringer") && WoW.Maelstrom >= 20) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 40) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && (WoW.Maelstrom >= 80 || (fourt19 && WoW.Maelstrom >= 40))) { WoW.CastSpell("Lava Lash"); //Buffer Lava return; } if (WoW.CanCast("Flametongue") && WoW.PlayerBuffTimeRemaining("Flametongue") <= 5 && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Flametongue"); //REFRESH FLAMETONGUE PANDEMIC return; } if (WoW.CanCast("Boulderfist") && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Boulderfist"); //Nothing to do return; } if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Flametongue"); //Nothing to do return; } if (WoW.CanCast("Feral Lunge") && !WoW.IsSpellInRange("Flametongue") && WoW.IsSpellInRange("Feral Lunge")) //out of range of flametongue 10y and in range of feral lunge 8-25y { WoW.CastSpell("Feral Lunge"); return; } if (WoW.CanCast("Lightning Bolt") && !WoW.IsSpellInRange("Flametongue")) //out of range cast LB if we are 10y away and cannot jump by Feral Lunge { WoW.CastSpell("Lightning Bolt"); return; } if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Astral Shift"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Ghost Wolf") && WoW.IsInCombat) //First things go first { if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) //interupt every spell { WoW.CastSpell("Wind Shear"); return; } if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Stormstrike") && combatRoutine.UseCooldowns && WoW.Maelstrom >= 20) //Wolves in melee range { Log.Write("Using Feral Spirit", Color.Red); WoW.CastSpell("Feral Spirit"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 115) //Crash lightning for alpha wolf { WoW.CastSpell("Crash Lightning"); return; } if (WoW.CanCast("Boulderfist") && (!WoW.PlayerHasBuff("Landslide") || WoW.PlayerBuffTimeRemaining("Landslide") <= 1) && WoW.IsSpellInRange("Flametongue")) //REFRESH LANDSLIDE { Log.Write("Reseting Landslide", Color.Red); WoW.CastSpell("Boulderfist"); return; } if (WoW.CanCast("Boulderfist") && WoW.IsSpellInRange("Flametongue") && WoW.PlayerSpellCharges("Boulderfist") == 2 && WoW.Maelstrom <= 100) { WoW.CastSpell("Boulderfist"); //boulderfist it to not waste a charge return; } if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue") && ((!WoW.PlayerHasBuff("Flametongue") || WoW.PlayerBuffTimeRemaining("Flametongue") <= 1)) || (WoW.SpellCooldownTimeRemaining("Doom Winds") <= 6 && WoW.PlayerBuffTimeRemaining("Flametongue") <= 4)) //REFRESH FLAMETONGUE { Log.Write("Reseting Flametongue buff", Color.Red); WoW.CastSpell("Flametongue"); return; } if (WoW.CanCast("Doom Winds") && combatRoutine.UseCooldowns && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Flametongue")) { WoW.CastSpell("Doom Winds"); return; } if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Stormbringer") && WoW.Maelstrom >= 20) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Stormstrike") && !WoW.PlayerHasBuff("Crash Lightning")) //Crash lightning for cleave to enable storm { Log.Write("Reseting Crashing buff", Color.Blue); WoW.CastSpell("Crash Lightning"); return; } if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 40) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Crash Lightning") && !WoW.PlayerHasBuff("Stormbringer") && !fourt19 && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 6) //Crash lightning for cleave proc stormbringer without 4t19 { WoW.CastSpell("Crash Lightning"); return; } if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && (WoW.Maelstrom >= 80 || (fourt19 && WoW.Maelstrom >= 40))) { WoW.CastSpell("Lava Lash"); //Buffer Lava return; } if (WoW.CanCast("Flametongue") && WoW.PlayerBuffTimeRemaining("Flametongue") <= 5 && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Flametongue"); //REFRESH FLAMETONGUE PANDEMIC return; } if (WoW.CanCast("Boulderfist") && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Boulderfist"); //Nothing to do return; } if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Flametongue"); //Nothing to do return; } if (WoW.CanCast("Feral Lunge") && !WoW.IsSpellInRange("Flametongue") && WoW.IsSpellInRange("Feral Lunge")) //out of range of flametongue 10y and in range of feral lunge 8-25y { WoW.CastSpell("Feral Lunge"); return; } if (WoW.CanCast("Lightning Bolt") && !WoW.IsSpellInRange("Flametongue")) //out of range cast LB if we are 10y away and cannot jump by Feral Lunge { WoW.CastSpell("Lightning Bolt"); return; } if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Astral Shift"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Ghost Wolf") && WoW.IsInCombat) //First things go first { if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) //interupt every spell { WoW.CastSpell("Wind Shear"); return; } if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Stormstrike") && combatRoutine.UseCooldowns && WoW.Maelstrom >= 20) //Wolves in melee range { Log.Write("Using Feral Spirit", Color.Red); WoW.CastSpell("Feral Spirit"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 115) //Crash lightning for alpha wolf { WoW.CastSpell("Crash Lightning"); return; } if (WoW.CanCast("Boulderfist") && (!WoW.PlayerHasBuff("Landslide") || WoW.PlayerBuffTimeRemaining("Landslide") <= 1) && WoW.IsSpellInRange("Flametongue")) //REFRESH LANDSLIDE { Log.Write("Reseting Landslide", Color.Red); WoW.CastSpell("Boulderfist"); return; } if (WoW.CanCast("Boulderfist") && WoW.IsSpellInRange("Flametongue") && WoW.PlayerSpellCharges("Boulderfist") == 2 && WoW.Maelstrom <= 100) { WoW.CastSpell("Boulderfist"); //boulderfist it to not waste a charge return; } if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue") && ((!WoW.PlayerHasBuff("Flametongue") || WoW.PlayerBuffTimeRemaining("Flametongue") <= 1)) || (WoW.SpellCooldownTimeRemaining("Doom Winds") <= 6 && WoW.PlayerBuffTimeRemaining("Flametongue") <= 4)) //REFRESH FLAMETONGUE { Log.Write("Reseting Flametongue buff", Color.Red); WoW.CastSpell("Flametongue"); return; } if (WoW.CanCast("Doom Winds") && combatRoutine.UseCooldowns && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Flametongue")) { WoW.CastSpell("Doom Winds"); return; } if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Stormbringer") && WoW.Maelstrom >= 20) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Stormstrike")) //Crash lightning priority on aoe { WoW.CastSpell("Crash Lightning"); return; } if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 40) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && (WoW.Maelstrom >= 80 || (fourt19 && WoW.Maelstrom >= 40))) { WoW.CastSpell("Lava Lash"); //Buffer Lava return; } if (WoW.CanCast("Flametongue") && WoW.PlayerBuffTimeRemaining("Flametongue") <= 5 && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Flametongue"); //REFRESH FLAMETONGUE PANDEMIC return; } if (WoW.CanCast("Boulderfist") && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Boulderfist"); //Nothing to do return; } if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Flametongue"); //Nothing to do return; } if (WoW.CanCast("Feral Lunge") && !WoW.IsSpellInRange("Flametongue") && WoW.IsSpellInRange("Feral Lunge")) //out of range of flametongue 10y and in range of feral lunge 8-25y { WoW.CastSpell("Feral Lunge"); return; } if (WoW.CanCast("Lightning Bolt") && !WoW.IsSpellInRange("Flametongue")) //out of range cast LB if we are 10y away and cannot jump by Feral Lunge { WoW.CastSpell("Lightning Bolt"); return; } if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Astral Shift"); return; } } } }
public override void Pulse() { if (defcooldowns && WoW.IsInCombat) { if (WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "LS HP Percent") && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand")) { WoW.CastSpell("Last Stand"); return; } if (WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "SW HP Percent") && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall")) { WoW.CastSpell("Shield Wall"); return; } } if (Pots && WoW.IsInCombat && WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "HS HP Percent")) { if (WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.ItemCount("HealthPotion") == 0) { WoW.CastSpell("Healthstone"); return; } if (WoW.ItemCount("HealthPotion") >= 1 && !WoW.ItemOnCooldown("HealthPotion")) { WoW.CastSpell("HealthPotion"); return; } } if (!Indomitable && WoW.IsInCombat && WoW.IsSpellInRange("Shield Slam")) { swingwatch.Start(); } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Shield Slam")) { if (BattleC && !WoW.IsSpellOnCooldown("Battle Cry")) { WoW.CastSpell("Battle Cry"); return; } if (AngerM && !WoW.IsSpellOnCooldown("Demoralizing Shout") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0)) { WoW.CastSpell("Demoralizing Shout"); } if (generalInterrupts) { if (WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible) { if (!WoW.IsSpellOnCooldown("Pummel") && WoW.IsSpellInRange("Shield Slam") && WoW.TargetPercentCast >= 50) { WoW.CastSpell("Pummel"); return; } if (spellref && !WoW.IsSpellOnCooldown("SpellReflect") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 80) { WoW.CastSpell("SpellReflect"); return; } } } if (mythicplusinterrupts) { if (WoW.CanCast("Pummel") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible) { //int spell list for all important spells in M+ if (WoW.TargetCastingSpellID == 200248 //Court Of Stars Mythic+ Interrupt list || WoW.TargetCastingSpellID == 225573 || WoW.TargetCastingSpellID == 208165 || WoW.TargetCastingSpellID == 211401 || WoW.TargetCastingSpellID == 21147 || WoW.TargetCastingSpellID == 211299 || WoW.TargetCastingSpellID == 2251 || WoW.TargetCastingSpellID == 209413 || WoW.TargetCastingSpellID == 209404 || WoW.TargetCastingSpellID == 215204 || WoW.TargetCastingSpellID == 210261 //Darkheart Thicket Mythic+ Interrupt list || WoW.TargetCastingSpellID == 200658 || WoW.TargetCastingSpellID == 200631 || WoW.TargetCastingSpellID == 204246 || WoW.TargetCastingSpellID == 2014 //Eye of Azshara Mythic+ Interrupt list || WoW.TargetCastingSpellID == 19687 || WoW.TargetCastingSpellID == 218532 || WoW.TargetCastingSpellID == 195129 || WoW.TargetCastingSpellID == 195046 || WoW.TargetCastingSpellID == 197502 || WoW.TargetCastingSpellID == 196027 || WoW.TargetCastingSpellID == 196175 || WoW.TargetCastingSpellID == 192003 || WoW.TargetCastingSpellID == 191848 //Halls of Valor Mythic+ Interrupt list || WoW.TargetCastingSpellID == 198595 || WoW.TargetCastingSpellID == 198962 || WoW.TargetCastingSpellID == 198931 || WoW.TargetCastingSpellID == 192563 || WoW.TargetCastingSpellID == 192288 || WoW.TargetCastingSpellID == 199726 //Maw of Souls Mythic+ Interrupt list || WoW.TargetCastingSpellID == 198495 || WoW.TargetCastingSpellID == 195293 || WoW.TargetCastingSpellID == 199589 || WoW.TargetCastingSpellID == 194266 || WoW.TargetCastingSpellID == 198405 || WoW.TargetCastingSpellID == 199514 || WoW.TargetCastingSpellID == 194657 //Neltharions Lair Mythic+ Interrupt list || WoW.TargetCastingSpellID == 193585 || WoW.TargetCastingSpellID == 202181 //The Arcway Mythic+ Interrupt list || WoW.TargetCastingSpellID == 226269 || WoW.TargetCastingSpellID == 211007 || WoW.TargetCastingSpellID == 211757 || WoW.TargetCastingSpellID == 226285 || WoW.TargetCastingSpellID == 226206 || WoW.TargetCastingSpellID == 211115 || WoW.TargetCastingSpellID == 196392 // Advisor Vandros (Interrupt manually) Spell,203176,Accelerating Blast || WoW.TargetCastingSpellID == 203957 //Vault of the Wardens Mythic+ Interrupt list || WoW.TargetCastingSpellID == 193069 || WoW.TargetCastingSpellID == 191823 || WoW.TargetCastingSpellID == 202661 || WoW.TargetCastingSpellID == 201488 || WoW.TargetCastingSpellID == 195332 //Raid Interrupts || WoW.TargetCastingSpellID == 209485 || WoW.TargetCastingSpellID == 209410 || WoW.TargetCastingSpellID == 211470 || WoW.TargetCastingSpellID == 225100 || WoW.TargetCastingSpellID == 207980 || WoW.TargetCastingSpellID == 196870 || WoW.TargetCastingSpellID == 195284 || WoW.TargetCastingSpellID == 192005 || WoW.TargetCastingSpellID == 228255 || WoW.TargetCastingSpellID == 228239 || WoW.TargetCastingSpellID == 227917 || WoW.TargetCastingSpellID == 228625 || WoW.TargetCastingSpellID == 228606 || WoW.TargetCastingSpellID == 229714 || WoW.TargetCastingSpellID == 227592 || WoW.TargetCastingSpellID == 229083 || WoW.TargetCastingSpellID == 228025 || WoW.TargetCastingSpellID == 228019 || WoW.TargetCastingSpellID == 227987 || WoW.TargetCastingSpellID == 227420 || WoW.TargetCastingSpellID == 200905) { if (!WoW.IsSpellOnCooldown("Pummel") && WoW.TargetPercentCast >= 40) { WoW.CastSpell("Pummel"); return; } if (spellref && !WoW.IsSpellOnCooldown("SpellReflect") && WoW.TargetPercentCast >= 80) { WoW.CastSpell("SpellReflect"); return; } } } } if (WoW.CanCast("Shield Block") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "SB HP Percent") && WoW.Rage >= 15 && !WoW.IsSpellOnCooldown("Shield Block") && !WoW.PlayerHasBuff("Shield Block")) { WoW.CastSpell("Shield Block"); return; } if (WoW.CanCast("Shield Block") && WoW.Rage >= 15 && WoW.PlayerBuffTimeRemaining("Shield Block") <= 2) { WoW.CastSpell("Shield Block"); return; } // IP Control if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 60) && !WoW.PlayerHasBuff("Vengeance Ignore Pain")) { WoW.CastSpell("Ignore Pain"); return; } if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 39) && WoW.PlayerHasBuff("Vengeance Ignore Pain")) { WoW.CastSpell("Ignore Pain"); } if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 13) && WoW.PlayerHasBuff("Vengeance Ignore Pain") && WoW.IsSpellOverlayed("Revenge")) { WoW.CastSpell("Ignore Pain"); } // Revenge Control if (Indomitable) { if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); } if (AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30) { WoW.CastSpell("Revenge"); } if (AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge")) { WoW.CastSpell("Revenge"); } if (!AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); } if (WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Thunder Clap"); return; } } if (!Indomitable && swingwatch.ElapsedMilliseconds > AttackspeedMS) { if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge")) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (!AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 19 && !WoW.IsSpellOnCooldown("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Thunder Clap"); swingwatch.Reset(); swingwatch.Start(); return; } } //Rotational shiz if (!Indomitable && (!WoW.IsSpellOnCooldown("Shield Slam") || WoW.IsSpellOverlayed("Shield Slam")) && !AngerM && WoW.PlayerHasBuff("Shield Block") && WoW.SpellCooldownTimeRemaining("Shield Block") > 2) { WoW.CastSpell("Shield Slam"); return; } if ((AngerM || Indomitable) && (!WoW.IsSpellOnCooldown("Shield Slam") || WoW.IsSpellOverlayed("Shield Slam"))) { WoW.CastSpell("Shield Slam"); } //will cast SS when proc's if (WoW.CanCast("Shield Slam") && WoW.IsSpellOverlayed("Shield Slam")) { WoW.CastSpell("Shield Slam"); return; } if (Indomitable && WoW.CanCast("Devastate") && WoW.IsSpellOnCooldown("Shield Slam") && WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Devastate"); return; } if (ImpendingVic && WoW.Rage >= 10 && !WoW.IsSpellOnCooldown("Impending Victory") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "IV HP Percent")) { WoW.CastSpell("Impending Victory"); return; } if (!ImpendingVic && WoW.IsSpellOverlayed("Victory Rush") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "IV HP Percent")) { WoW.CastSpell("Victory Rush"); return; } } //Artifact / Shockwave Combo. if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun") && WoW.IsSpellOnCooldown("Neltharion's Fury")) { WoW.CastSpell("Neltharion's Fury"); return; } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE Stuff here } }
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 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; } } }
public override void Pulse() { if (WoW.PlayerHasBuff("Mount")) { return; } if (WoW.IsInCombat && WoW.HealthPercent < 35 && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand")) { WoW.CastSpell("Last Stand"); return; } if (WoW.IsInCombat && WoW.HealthPercent < 20 && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall")) { WoW.CastSpell("Shield Wall"); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("HeroicLeap")) { WoW.CastSpell("HeroicLeap"); return; } return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_1) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Thunder Clap"); return; } return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LMENU) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Shockwave")) { WoW.CastSpell("Shockwave"); return; } return; } if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.AOE) // Do Single Target Stuff here { if (CombatWatch.IsRunning && !WoW.IsInCombat) { CombatWatch.Reset(); } if (!CombatWatch.IsRunning && WoW.IsInCombat) { CombatWatch.Start(); } if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling) { if (!WoW.TargetHasDebuff("ShockWavestun") && WoW.IsInCombat) { if (WoW.CanCast("Shield Block") && WoW.Rage >= 15 && !WoW.PlayerIsChanneling && WoW.HealthPercent < 100 && (WoW.PlayerSpellCharges("Shield Block") == 2 || (WoW.PlayerSpellCharges("Shield Block") >= 1 && WoW.HealthPercent <= 90 && WoW.PlayerBuffTimeRemaining("ShieldBlockAura") <= 2))) { WoW.CastSpell("Shield Block"); return; } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap") && CombatWatch.ElapsedMilliseconds > 1000 && CombatWatch.ElapsedMilliseconds < 5000) { WoW.CastSpell("Thunder Clap"); return; } /* ------------------ IGNORE PAIN MANAGEMENT----------------------*/ if (WoW.CanCast("Ignore Pain") && WoW.PlayerHasBuff("Vengeance: Ignore Pain") && WoW.Rage >= 39) { WoW.CastSpell("Ignore Pain"); return; } if (WoW.CanCast("Ignore Pain") && WoW.Rage > 30 && WoW.HealthPercent < 100 && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) && !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.PlayerHasBuff("Vengeance: Focused Rage")) { WoW.CastSpell("Ignore Pain"); return; } /* ------------------ END IGNORE PAIN MANAGEMENT-------------------*/ if (WoW.TargetIsCasting && WoW.CanCast("SpellReflect") && !WoW.IsSpellOnCooldown("SpellReflect")) { WoW.CastSpell("SpellReflect"); } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry")) { WoW.CastSpell("Battle Cry"); return; } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Shield Slam") && !WoW.IsSpellOnCooldown("Shield Slam") && WoW.PlayerHasBuff("Legendary")) { WoW.CastSpell("Shield Slam"); return; } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap") && WoW.PlayerHasBuff("Legendary")) { WoW.CastSpell("Thunder Clap"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && WoW.IsSpellOverlayed("Revenge") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain")) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && WoW.PlayerHasBuff("Vengeance: Focused Rage") && WoW.Rage > 59) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && !WoW.PlayerHasBuff("Ignore Pain") && WoW.Rage > 35 && WoW.HealthPercent < 100) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && WoW.PlayerHasBuff("Ignore Pain") && WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 3 && WoW.Rage > 40 && WoW.HealthPercent < 100) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && !WoW.PlayerHasBuff("Vengeance: Focused Rage") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && WoW.Rage > 69) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Victory Rush") && !WoW.IsSpellOnCooldown("Victory Rush") && WoW.IsSpellInRange("Shield Slam") && WoW.HealthPercent < 90 && WoW.PlayerHasBuff("VictoryRush")) { WoW.CastSpell("Victory Rush"); return; } if (WoW.IsSpellInRange("Devastate") && WoW.CanCast("Devastate")) { WoW.CastSpell("Devastate"); return; } } if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun")) { WoW.CastSpell("Neltharion's Fury"); return; } /* actions.prot=spell_reflection,if=incoming_damage_2500ms>health.max*0.20 * actions.prot+=/demoralizing_shout,if=incoming_damage_2500ms>health.max*0.20&!talent.booming_voice.enabled * actions.prot+=/last_stand,if=incoming_damage_2500ms>health.max*0.40 * actions.prot+=/shield_wall,if=incoming_damage_2500ms>health.max*0.40&!cooldown.last_stand.remains=0 * actions.prot+=/potion,name=unbending_potion,if=(incoming_damage_2500ms>health.max*0.15&!buff.potion.up)|target.time_to_die<=25 * actions.prot+=/battle_cry,if=cooldown.shield_slam.remains=0 * actions.prot+=/demoralizing_shout,if=talent.booming_voice.enabled&buff.battle_cry.up * actions.prot+=/ravager,if=talent.ravager.enabled&buff.battle_cry.up * actions.prot+=/neltharions_fury,if=!buff.shield_block.up&cooldown.shield_block.remains>3&((cooldown.shield_slam.remains>3&talent.heavy_repercussions.enabled)|(!talent.heavy_repercussions.enabled)) * actions.prot+=/shield_block,if=!buff.neltharions_fury.up&((cooldown.shield_slam.remains=0&talent.heavy_repercussions.enabled)|action.shield_block.charges=2|!talent.heavy_repercussions.enabled) * actions.prot+=/ignore_pain,if=(rage>=60&!talent.vengeance.enabled)|(buff.vengeance_ignore_pain.up&rage>=39)|(talent.vengeance.enabled&!buff.vengeance_ignore_pain.up&!buff.vengeance_revenge.up&rage<30&!buff.revenge.react) * actions.prot+=/shield_slam,if=(!(cooldown.shield_block.remains<=gcd.max*2&!buff.shield_block.up)&talent.heavy_repercussions.enabled)|!talent.heavy_repercussions.enabled * actions.prot+=/thunder_clap * actions.prot+=/revenge,if=(talent.vengeance.enabled&buff.revenge.react&!buff.vengeance_ignore_pain.up)|(buff.vengeance_revenge.up&rage>=59)|(talent.vengeance.enabled&!buff.vengeance_ignore_pain.up&!buff.vengeance_revenge.up&rage>=69)|(!talent.vengeance.enabled&buff.revenge.react) * actions.prot+=/devastate */ } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE Stuff here } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { /* * Endless Rage / War Machine * Double Time * Avatar * Warpaint * Frothing Zerker/Massacre * Inner Rage * Reckless Abandon */ //AOE on Press if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0) { if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy) { if (TFZFMint) { if (WoW.CanCast("Whirlwind") && !WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Rampage") && WoW.Rage >= 100 && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Rampage")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Bloodthirst"); return; } } if (!TFZFMint) { if (WoW.CanCast("Whirlwind") && !WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Rampage") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Rampage")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Bloodthirst"); return; } } } } //Normal ST rotation if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst")) { if (WoW.TargetHealthPercent >= 20) { //When targets are above 20%. Not in Execute phase. (need to change this to TTExecute) //Single target with Reckless Abandon - Battle Cry Avatar Rampage - Raging Blow - Odyn's Fury - Bloodthirst - Raging Blow - Furious Slash - Bloodthirst if (MplusAoEint) { if (WoW.CanCast("Whirlwind") && !WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Whirlwind") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow") && !WoW.CanCast("Rampage") ) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } } } if (TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage >= 100) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute")) { WoW.CastSpell("Execute"); return; } if (!MplusAoEint && WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (!TFZFMint) { if (WoW.CanCast("Rampage") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute")) { WoW.CastSpell("Execute"); return; } if (!MplusAoEint && WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (WoW.TargetHealthPercent <= 20) { if (TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage >= 100) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute") && WoW.Rage > 25) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Execute") && WoW.Rage > 25) { WoW.CastSpell("Execute"); return; } if (!MplusAoEint && WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (!TFZFMint) { if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Enrage") && !WoW.PlayerHasBuff("Massacre")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Massacre")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Execute") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Bloodthirst") && WoW.Rage < 25) { WoW.CastSpell("Bloodthirst"); return; } if (!MplusAoEint && WoW.CanCast("Raging Blow") && WoW.Rage < 25) { WoW.CastSpell("Raging Blow"); return; } } } } } if (combatRoutine.Type == RotationType.AOE) { // AOE stuff here } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
public override void Pulse() { if (!coolDownStopWatch.IsRunning || coolDownStopWatch.ElapsedMilliseconds > 60000) { coolDownStopWatch.Restart(); } if (DetectKeyPress.GetKeyState(0x6A) < 0) //Use cooldowns manage by *numButton { if (coolDownStopWatch.ElapsedMilliseconds > 1000) { combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns; WoW.Speak("Cooldowns " + (combatRoutine.UseCooldowns ? "On" : "Off")); coolDownStopWatch.Restart(); } } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Ghost Wolf") && WoW.IsInCombat) //First things go first but break if we wanna run in Wolf { if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) //interupt every spell { WoW.CastSpell("Wind Shear"); return; } if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Stormstrike") && combatRoutine.UseCooldowns && WoW.Maelstrom >= 20) //Wolves in melee range { Log.Write("Using Feral Spirit", Color.Red); WoW.CastSpell("Feral Spirit"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 115) //Crash lightning for alpha wolf { WoW.CastSpell("Crash Lightning"); return; } if (WoW.CanCast("Rockbiter") && (!WoW.PlayerHasBuff("Landslide") || WoW.PlayerBuffTimeRemaining("Landslide") <= 1) && WoW.IsSpellInRange("Flametongue")) //REFRESH LANDSLIDE { Log.Write("Reseting Landslide", Color.Red); WoW.CastSpell("Rockbiter"); return; } if (WoW.CanCast("Fury of Air") && !WoW.PlayerHasBuff("Fury of Air") && WoW.IsSpellInRange("Flametongue") && WoW.Maelstrom >= 22) //REFRESH Fury of Air { Log.Write("Reseting Fury of Air", Color.Red); WoW.CastSpell("Fury of Air"); return; } if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue") && ((!WoW.PlayerHasBuff("Flametongue") || WoW.PlayerBuffTimeRemaining("Flametongue") <= 1)) || (WoW.SpellCooldownTimeRemaining("Doom Winds") <= 6 && WoW.PlayerBuffTimeRemaining("Flametongue") <= 4)) //REFRESH FLAMETONGUE { Log.Write("Reseting Flametongue buff", Color.Red); WoW.CastSpell("Flametongue"); return; } if (WoW.CanCast("Doom Winds") && combatRoutine.UseCooldowns && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Flametongue")) { WoW.CastSpell("Doom Winds"); return; } if (WoW.CanCast("Lightning Bolt") && WoW.IsSpellInRange("Lightning Bolt") && WoW.Maelstrom >= 46) //Overcharge { WoW.CastSpell("Lightning Bolt"); return; } if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Stormbringer") && WoW.Maelstrom >= 26) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Hot Hand")) //Hot Hand { WoW.CastSpell("Lava Lash"); return; } if (WoW.SpellCooldownTimeRemaining("Lightning Bolt") >= 1) // to get not GCD locked on Bolt { if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 80) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 120) { WoW.CastSpell("Lava Lash"); //Buffer Lava return; } if (WoW.CanCast("Flametongue") && WoW.PlayerBuffTimeRemaining("Flametongue") <= 5 && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Flametongue"); //REFRESH FLAMETONGUE PANDEMIC return; } if (WoW.CanCast("Rockbiter") && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Rockbiter"); //Nothing to do return; } if (WoW.CanCast("Feral Lunge") && !WoW.IsSpellInRange("Flametongue") && WoW.IsSpellInRange("Feral Lunge")) //out of range of flametongue 10y and in range of feral lunge 8-25y { WoW.CastSpell("Feral Lunge"); return; } } if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Astral Shift"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Ghost Wolf") && WoW.IsInCombat) //First things go first { if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) //interupt every spell { WoW.CastSpell("Wind Shear"); return; } if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Stormstrike") && combatRoutine.UseCooldowns && WoW.Maelstrom >= 20) //Wolves in melee range { Log.Write("Using Feral Spirit", Color.Red); WoW.CastSpell("Feral Spirit"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 115) //Crash lightning for alpha wolf { WoW.CastSpell("Crash Lightning"); return; } if (WoW.CanCast("Rockbiter") && (!WoW.PlayerHasBuff("Landslide") || WoW.PlayerBuffTimeRemaining("Landslide") <= 1) && WoW.IsSpellInRange("Flametongue")) //REFRESH LANDSLIDE { Log.Write("Reseting Landslide", Color.Red); WoW.CastSpell("Rockbiter"); return; } if (WoW.CanCast("Fury of Air") && !WoW.PlayerHasBuff("Fury of Air") && WoW.IsSpellInRange("Flametongue") && WoW.Maelstrom >= 22) //REFRESH Fury of Air { Log.Write("Reseting Fury of Air", Color.Red); WoW.CastSpell("Fury of Air"); return; } if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue") && ((!WoW.PlayerHasBuff("Flametongue") || WoW.PlayerBuffTimeRemaining("Flametongue") <= 1)) || (WoW.SpellCooldownTimeRemaining("Doom Winds") <= 6 && WoW.PlayerBuffTimeRemaining("Flametongue") <= 4)) //REFRESH FLAMETONGUE { Log.Write("Reseting Flametongue buff", Color.Red); WoW.CastSpell("Flametongue"); return; } if (WoW.CanCast("Doom Winds") && combatRoutine.UseCooldowns && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Flametongue")) { WoW.CastSpell("Doom Winds"); return; } if (WoW.CanCast("Lightning Bolt") && WoW.IsSpellInRange("Lightning Bolt") && WoW.Maelstrom >= 46) //Overcharge { WoW.CastSpell("Lightning Bolt"); return; } if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Stormbringer") && WoW.Maelstrom >= 26) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Hot Hand")) //Hot Hand { WoW.CastSpell("Lava Lash"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 22 && WoW.IsSpellInRange("Stormstrike") && !WoW.PlayerHasBuff("Crash Lightning")) //Crash lightning for cleave to enable storm { Log.Write("Reseting Crashing buff", Color.Blue); WoW.CastSpell("Crash Lightning"); return; } if (WoW.SpellCooldownTimeRemaining("Lightning Bolt") >= 1) // to get not GCD locked on Bolt { if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 80) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 120) { WoW.CastSpell("Lava Lash"); //Buffer Lava return; } if (WoW.CanCast("Flametongue") && WoW.PlayerBuffTimeRemaining("Flametongue") <= 5 && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Flametongue"); //REFRESH FLAMETONGUE PANDEMIC return; } if (WoW.CanCast("Rockbiter") && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Rockbiter"); //Nothing to do return; } if (WoW.CanCast("Feral Lunge") && !WoW.IsSpellInRange("Flametongue") && WoW.IsSpellInRange("Feral Lunge")) //out of range of flametongue 10y and in range of feral lunge 8-25y { WoW.CastSpell("Feral Lunge"); return; } } if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Astral Shift"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Ghost Wolf") && WoW.IsInCombat) //First things go first { if (WoW.CanCast("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.IsSpellInRange("Wind Shear")) //interupt every spell { WoW.CastSpell("Wind Shear"); return; } if (WoW.CanCast("Feral Spirit") && WoW.IsSpellInRange("Stormstrike") && combatRoutine.UseCooldowns && WoW.Maelstrom >= 20) //Wolves in melee range { Log.Write("Using Feral Spirit", Color.Red); WoW.CastSpell("Feral Spirit"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 20 && WoW.SpellCooldownTimeRemaining("Feral Spirit") >= 115) //Crash lightning for alpha wolf { WoW.CastSpell("Crash Lightning"); return; } if (WoW.CanCast("Rockbiter") && (!WoW.PlayerHasBuff("Landslide") || WoW.PlayerBuffTimeRemaining("Landslide") <= 1) && WoW.IsSpellInRange("Flametongue")) //REFRESH LANDSLIDE { Log.Write("Reseting Landslide", Color.Red); WoW.CastSpell("Rockbiter"); return; } if (WoW.CanCast("Fury of Air") && !WoW.PlayerHasBuff("Fury of Air") && WoW.IsSpellInRange("Flametongue") && WoW.Maelstrom >= 22) //REFRESH Fury of Air { Log.Write("Reseting Fury of Air", Color.Red); WoW.CastSpell("Fury of Air"); return; } if (WoW.CanCast("Flametongue") && WoW.IsSpellInRange("Flametongue") && ((!WoW.PlayerHasBuff("Flametongue") || WoW.PlayerBuffTimeRemaining("Flametongue") <= 1)) || (WoW.SpellCooldownTimeRemaining("Doom Winds") <= 6 && WoW.PlayerBuffTimeRemaining("Flametongue") <= 4)) //REFRESH FLAMETONGUE { Log.Write("Reseting Flametongue buff", Color.Red); WoW.CastSpell("Flametongue"); return; } if (WoW.CanCast("Doom Winds") && combatRoutine.UseCooldowns && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Flametongue")) { WoW.CastSpell("Doom Winds"); return; } if (WoW.CanCast("Lightning Bolt") && WoW.IsSpellInRange("Lightning Bolt") && WoW.Maelstrom >= 46) //Overcharge { WoW.CastSpell("Lightning Bolt"); return; } if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Stormbringer") && WoW.Maelstrom >= 26) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.PlayerHasBuff("Hot Hand")) //Hot Hand { WoW.CastSpell("Lava Lash"); return; } if (WoW.CanCast("Crash Lightning") && WoW.Maelstrom >= 22 && WoW.IsSpellInRange("Stormstrike")) //Crash lightning priority for aoe { WoW.CastSpell("Crash Lightning"); return; } if (WoW.SpellCooldownTimeRemaining("Lightning Bolt") >= 1) // to get not GCD locked on Bolt { if (WoW.CanCast("Stormstrike") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 80) { WoW.CastSpell("Stormstrike"); return; } if (WoW.CanCast("Lava Lash") && WoW.IsSpellInRange("Stormstrike") && WoW.Maelstrom >= 120) { WoW.CastSpell("Lava Lash"); //Buffer Lava return; } if (WoW.CanCast("Flametongue") && WoW.PlayerBuffTimeRemaining("Flametongue") <= 5 && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Flametongue"); //REFRESH FLAMETONGUE PANDEMIC return; } if (WoW.CanCast("Rockbiter") && WoW.IsSpellInRange("Flametongue")) { WoW.CastSpell("Rockbiter"); //Nothing to do return; } if (WoW.CanCast("Feral Lunge") && !WoW.IsSpellInRange("Flametongue") && WoW.IsSpellInRange("Feral Lunge")) //out of range of flametongue 10y and in range of feral lunge 8-25y { WoW.CastSpell("Feral Lunge"); return; } } if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Astral Shift"); 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 } }