public static bool PetBuffStatus() { if (!WoW.IsInCombat) { lastpetstatus = false; return(lastpetstatus); } if (WoW.WasLastCasted("DemonicEmpowerment") || WoW.WasLastCasted("Implosion")) { lastpetstatus = false; return(lastpetstatus); } if (lastpetstatus && (!WoW.WasLastCasted("DemonicEmpowerment") || !WoW.WasLastCasted("Implosion"))) { return(lastpetstatus); } if (WoW.WasLastCasted("Dreadstalkers") || WoW.WasLastCasted("HoG")) { lastpetstatus = true; return(lastpetstatus); } return(lastpetstatus); }
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() // Updated for Legion (tested and working for single target) { AddonCreationPulse(); PlayerStats(); AoEStuff(); if (WoW.IsInCombat && !WoW.PlayerHasBuff("Mount")) { SelectRotation(); } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount")) { if (WoW.CurrentSoulShards >= 1 && WoW.WasLastCasted("Unstable Affliction") && WoW.CanCast("Reap Souls") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Deadwind Harvester") && WoW.PlayerHasBuff("Tormented Souls")) { WoW.CastSpell("Reap Souls"); Thread.Sleep(200); return; } if ((!WoW.TargetHasDebuff("Agony") || WoW.TargetDebuffTimeRemaining("Agony") <= 5.4) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Agony") <= 1.5) && WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Agony"); return; } if ((WoW.CurrentSoulShards >= 3 || WoW.WasLastCasted("Unstable Affliction") && !WoW.IsMoving && WoW.CanCast("Unstable Affliction") && WoW.IsSpellInRange("Agony"))) { WoW.CastSpell("Unstable Affliction"); Thread.Sleep(200); return; } if (WoW.CanCast("Life Tap") && !WoW.PlayerIsChanneling && CharInfo.T2 == 3 && !WoW.PlayerHasBuff("Empowered Life Tap")) { WoW.CastSpell("Life Tap"); return; } if ((!WoW.TargetHasDebuff("Corruption") || WoW.TargetDebuffTimeRemaining("Corruption") <= 4.2) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Corruption") <= 1) && WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Corruption"); return; } if ((!WoW.TargetHasDebuff("Siphon Life") || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 4.2) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 1) && CharInfo.T4 == 1 && WoW.CanCast("Siphon Life") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Siphon Life"); return; } /*if (WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction2") || (WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction3")) || (WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction4")) || (WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction5")) || (WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction3")) || (WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction4")) || (WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction5")) || (WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction4")) || (WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction5")) || (WoW.TargetHasDebuff("Unstable Affliction4") && WoW.TargetHasDebuff("Unstable Affliction5")) || && !WoW.PlayerIsCasting || && WoW.CanCast("Reap Souls") || && !WoW.PlayerHasBuff("Deadwind Harvester") || && WoW.PlayerHasBuff("Tormented Souls")) || { || WoW.CastSpell("Reap Souls"); || return; || }*/ if (WoW.CanCast("Reap Souls") && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Deadwind Harvester") && WoW.PlayerHasBuff("Tormented Souls")) { WoW.CastSpell("Reap Souls"); return; } if (WoW.CanCast("Felhunter") && CharInfo.T6 == 2 && !WoW.IsSpellOnCooldown("Felhunter") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Felhunter"); return; } if (WoW.CanCast("Unstable Affliction") && !WoW.IsMoving && CharInfo.T2 == 1 && !WoW.IsMoving && WoW.IsSpellInRange("Unstable Affliction") && !WoW.PlayerIsChanneling && WoW.CurrentSoulShards >= 1 && (!WoW.TargetHasDebuff("Unstable Affliction1") || !WoW.TargetHasDebuff("Unstable Affliction2") || !WoW.TargetHasDebuff("Unstable Affliction3") || !WoW.TargetHasDebuff("Unstable Affliction4") || !WoW.TargetHasDebuff("Unstable Affliction5") || (WoW.TargetDebuffTimeRemaining("Unstable Affliction1") <= 1.5) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction2") <= 1.5) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction3") <= 1.5) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction4") <= 1.5) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction5") <= 1.5))) { WoW.CastSpell("Unstable Affliction"); Thread.Sleep(200); return; } if (WoW.IsInCombat && WoW.Mana < 70 && WoW.HealthPercent > 70 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.CanCast("Haunt") && CharInfo.T1 == 1 && !WoW.IsSpellOnCooldown("Haunt") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving) { WoW.CastSpell("Haunt"); return; } if (WoW.CanCast("Drain Soul") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving) { WoW.CastSpell("Drain Soul"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount")) // Do AOE stuff here { if (WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Agony") || (WoW.TargetDebuffTimeRemaining("Agony") <= 5.4))) { WoW.CastSpell("Agony"); return; } if (WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Corruption") || (WoW.TargetDebuffTimeRemaining("Corruption") <= 4.2))) { WoW.CastSpell("Corruption"); return; } if (WoW.CanCast("Seed of Corruption") && WoW.IsSpellInRange("Agony") && !WoW.TargetHasDebuff("Seed of Corruption") && !WoW.IsMoving && WoW.CurrentSoulShards >= 1) { WoW.CastSpell("Seed of Corruption"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
public override void Pulse() { //Combat Time if (CombatTime.IsRunning && !WoW.IsInCombat) { CombatTime.Reset(); } if (!CombatTime.IsRunning && WoW.IsInCombat) { CombatTime.Start(); } //Dreadstalkers Time Remaining (12000 ms) (EXPERIMENTAL) if (DreadstalkersTime.IsRunning && WoW.DreadstalkersCount == 0) { DreadstalkersTime.Reset(); } if (!DreadstalkersTime.IsRunning && WoW.DreadstalkersCount >= 1) { DreadstalkersTime.Start(); } if (DreadstalkersTime.IsRunning && DreadstalkersTime.ElapsedMilliseconds > 12000) { DreadstalkersTime.Reset(); } //Imp Time Remaining (12000 ms) (EXPERIMENTAL) if (ImpTime.IsRunning && WoW.WildImpsCount == 0) { ImpTime.Reset(); } if (!ImpTime.IsRunning && WoW.WildImpsCount >= 1) { ImpTime.Start(); } var DreadstalkersRemainingDuration = Convert.ToSingle((12000f - DreadstalkersTime.ElapsedMilliseconds) / 10f); var ImpsRemainingDuration = Convert.ToSingle((12000f - ImpTime.ElapsedMilliseconds) / 10f); // Single Target Rotation if (combatRoutine.Type == RotationType.SingleTarget) { // Normal Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting) { Log.Write("Imp Timer running: " + ImpsRemainingDuration, Color.DarkViolet); Log.Write("Imp Time: " + ImpTime.ElapsedMilliseconds, Color.DarkViolet); Log.Write("Imp Count: " + WoW.WildImpsCount, Color.Green); Log.Write("Dread Timer running: " + DreadstalkersTime.ElapsedMilliseconds, Color.DarkViolet); Log.Write("Dread Time: " + DreadstalkersRemainingDuration, Color.DarkViolet); //Implosion (if talent) if (WoW.CanCast("Implosion") && WoW.Talent(2) == 3 && WoW.IsSpellInRange("Doom")) { // if (ImpsRemainingDuration <= GCD && WoW.PlayerHasBuff("DemonicSynergy")) if (WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy") && ImpsRemainingDuration >= GCD) { WoW.CastSpell("Implosion"); return; } } //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && WoW.Talent(1) == 2 && WoW.IsSpellInRange("Doom") && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < TwoSecondCast + 2) { WoW.CastSpell("Shadowflame"); return; } //Service Pet (if talent) if (WoW.CanCast("GrimoireFelguard") && UseCooldowns && WoW.Talent(6) == 2 && WoW.IsSpellInRange("Doom") && WoW.CurrentSoulShards >= 1 && UseCooldowns) { WoW.CastSpell("GrimoireFelguard"); empowered = false; return; } // Doomguard if (WoW.CanCast("Doomguard") && WoW.CurrentSoulShards >= 1 && UseCooldowns && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Doomguard"); empowered = false; return; } //Felstorm if (WoW.CanCast("Felstorm") && WoW.HasPet && WoW.PetHasBuff("DemonicEmpowerment")) { WoW.CastSpell("Felstorm"); return; } //Call Dreadstalkers (if NOT talent Summon Darkglare) if (WoW.CanCast("CallDreadstalkers") && WoW.Talent(7) != 1 && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } //Hand Of Guldan (if NOT talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) != 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); empowered = false; threeimps = false; ImpTime.Restart(); return; } //Summon Darkglare (if talent) if (WoW.CanCast("SummonDarkglare") && WoW.Talent(7) == 1 && WoW.CurrentSoulShards >= 1 && WoW.TargetHasDebuff("Doom") && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { if (WoW.LastSpell == "HandOfGuldan" || WoW.LastSpell == "CallDreadstalkers") { WoW.CastSpell("SummonDarkglare"); Log.Write("1", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") > 5 && WoW.CurrentSoulShards < 3) { WoW.CastSpell("SummonDarkglare"); Log.Write("2", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") >= GCD && WoW.CurrentSoulShards >= 3) { WoW.CastSpell("SummonDarkglare"); Log.Write("3", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") >= GCD && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling")) { WoW.CastSpell("SummonDarkglare"); Log.Write("4", Color.Red); empowered = false; return; } } //Call Dreadstalkers (if talent Summon Darkglare) if (WoW.CanCast("CallDreadstalkers") && WoW.Talent(7) == 1 && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 3) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling")) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } } //Hand Of Guldan if (WoW.CanCast("HandOfGuldan") && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 3 && WoW.LastSpell == "CallDreadstalkers" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); empowered = false; threeimps = true; ImpTime.Restart(); return; } //Hand Of Guldan (if talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) == 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 5 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= OneFiveCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); threeimps = false; empowered = false; ImpTime.Restart(); return; } //Hand Of Guldan (if talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) == 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") > 2 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); threeimps = false; empowered = false; ImpTime.Restart(); return; } //Demonic Empowerment (if last spell was Hand Of Guldan) if (WoW.CanCast("DemonicEmpowerment") && WoW.LastSpell == "HandOfGuldan" && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("DemonicEmpowerment"); empowered = true; return; } //Demonic Empowerment if (WoW.CanCast("DemonicEmpowerment") && (!empowered || !WoW.PetHasBuff("DemonicEmpowerment")) && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("DemonicEmpowerment"); empowered = true; return; } /* * //Doom (if NOT talent Hand of Doom) * if(WoW.CanCast("Doom") && (!WoW.TargetHasDebuff("Doom") || WoW.TargetDebuffTimeRemaining("Doom") < 5) && WoW.IsSpellInRange("Doom")) * { * WoW.CastSpell("Doom"); * return; * } * * //Soul Harvest * if(WoW.CanCast("SoulHarvest") && WoW.IsSpellInRange("Doom")) * { * WoW.CastSpell("SoulHarvest"); * return; * } */ //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && WoW.Talent(1) == 2 && WoW.IsSpellInRange("Doom") && WoW.PlayerSpellCharges("Shadowflame") == 2) { WoW.CastSpell("Shadowflame"); return; } //Thal'kiel's Consumption if (WoW.CanCast("TK") && WoW.DreadstalkersCount >= 1 && DreadstalkersRemainingDuration > TwoSecondCast && ((WoW.WildImpsCount >= 1 && !threeimps) || WoW.WildImpsCount >= 2) && ImpsRemainingDuration > TwoSecondCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("TK"); return; } //Life Tap if (WoW.CanCast("LifeTap") && WoW.Mana <= 30) { WoW.CastSpell("LifeTap"); return; } //Demonwrath (if moving) if (WoW.CanCast("Demonwrath") && WoW.IsMoving && !WoW.PlayerHasBuff("Norgannon")) { WoW.CastSpell("Demonwrath"); return; } //Demonbolt (if talent) if (WoW.CanCast("Demonbolt") && WoW.Talent(7) == 2 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("Demonbolt"); return; } //Shadowbolt (if NOT Demonbolt talent) if (WoW.CanCast("Shadowbolt") && WoW.Talent(7) != 2 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("Demonbolt"); return; } //Life Tap if (WoW.CanCast("LifeTap") && WoW.Mana < 100) { WoW.CastSpell("LifeTap"); return; } } } // AoE Rotation if (combatRoutine.Type == RotationType.AOE) { Log.Write("Imp Time: " + ImpsRemainingDuration, Color.DarkViolet); // AoE Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting) { //Implosion (if talent) if (WoW.CanCast("Implosion") && WoW.Talent(2) == 3 && WoW.IsSpellInRange("Doom")) { if (ImpsRemainingDuration <= GCD && WoW.PlayerHasBuff("DemonicSynergy")) { WoW.CastSpell("Implosion"); return; } if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy")) { WoW.CastSpell("Implosion"); return; } if (WoW.WildImpsCount == 1 && ImpsRemainingDuration <= GCD) { WoW.CastSpell("Implosion"); return; } // if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1) if (WoW.WasLastCasted("HandOfGuldan") && WoW.WildImpsCount == 1) { WoW.CastSpell("Implosion"); return; } } //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && WoW.Talent(1) == 2 && WoW.IsSpellInRange("Doom") && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < TwoSecondCast + 2) { WoW.CastSpell("Shadowflame"); return; } //Felstorm if (WoW.CanCast("Felstorm") && WoW.HasPet && WoW.PetHasBuff("DemonicEmpowerment")) { WoW.CastSpell("Felstorm"); return; } //Call Dreadstalkers (if NOT talent Summon Darkglare or Implosion) if (WoW.CanCast("CallDreadstalkers") && WoW.Talent(7) != 1 && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.Talent(2) != 3 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } //Hand Of Guldan (if NOT talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) != 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); empowered = false; threeimps = false; ImpTime.Restart(); return; } //Summon Darkglare (if talent) if (WoW.CanCast("SummonDarkglare") && WoW.Talent(7) == 1 && WoW.CurrentSoulShards >= 1 && WoW.TargetHasDebuff("Doom") && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { if (WoW.LastSpell == "HandOfGuldan" || WoW.LastSpell == "CallDreadstalkers") { WoW.CastSpell("SummonDarkglare"); Log.Write("1", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") > 500 && WoW.CurrentSoulShards < 3) { WoW.CastSpell("SummonDarkglare"); Log.Write("2", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") >= GCD && WoW.CurrentSoulShards >= 3) { WoW.CastSpell("SummonDarkglare"); Log.Write("3", Color.Red); empowered = false; return; } if (WoW.SpellCooldownTimeRemaining("CallDreadstalkers") >= GCD && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling")) { WoW.CastSpell("SummonDarkglare"); Log.Write("4", Color.Red); empowered = false; return; } } //Call Dreadstalkers (if talent Summon Darkglare and not Implosion) if (WoW.CanCast("CallDreadstalkers") && WoW.Talent(7) == 1 && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && WoW.Talent(2) != 3 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 3) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } if (WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= TwoSecondCast && WoW.CurrentSoulShards >= 1 && WoW.PlayerHasBuff("DemonicCalling")) { WoW.CastSpell("CallDreadstalkers"); empowered = false; DreadstalkersTime.Restart(); return; } } //Hand Of Guldan if (WoW.CanCast("HandOfGuldan") && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 3 && WoW.LastSpell == "CallDreadstalkers" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); empowered = false; threeimps = true; ImpTime.Restart(); return; } //Hand Of Guldan (if talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) == 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 5 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") <= OneFiveCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); threeimps = false; empowered = false; ImpTime.Restart(); return; } //Hand Of Guldan (if talent Summon Darkglare) if (WoW.CanCast("HandOfGuldan") && WoW.Talent(7) == 1 && WoW.LastSpell != "HandOfGuldan" && WoW.CurrentSoulShards >= 4 && WoW.SpellCooldownTimeRemaining("SummonDarkglare") > 2 && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("HandOfGuldan"); threeimps = false; empowered = false; ImpTime.Restart(); return; } //Demonic Empowerment (if last spell was Hand Of Guldan) if (WoW.CanCast("DemonicEmpowerment") && WoW.LastSpell == "HandOfGuldan" && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("DemonicEmpowerment"); empowered = true; return; } //Demonic Empowerment if (WoW.CanCast("DemonicEmpowerment") && (!empowered || !WoW.PetHasBuff("DemonicEmpowerment")) && WoW.LastSpell != "DemonicEmpowerment" && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("DemonicEmpowerment"); empowered = true; return; } /* * //Doom (if NOT talent Hand of Doom) * if(WoW.CanCast("Doom") && (!WoW.TargetHasDebuff("Doom") || WoW.TargetDebuffTimeRemaining("Doom") < 5) && WoW.IsSpellInRange("Doom")) * { * WoW.CastSpell("Doom"); * return; * } * * //Soul Harvest * if(WoW.CanCast("SoulHarvest") && WoW.IsSpellInRange("Doom")) * { * WoW.CastSpell("SoulHarvest"); * return; * } */ //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && WoW.Talent(1) == 2 && WoW.IsSpellInRange("Doom") && WoW.PlayerSpellCharges("Shadowflame") == 2) { WoW.CastSpell("Shadowflame"); return; } //Thal'kiel's Consumption if (WoW.CanCast("TK") && ((WoW.DreadstalkersCount >= 1 && DreadstalkersRemainingDuration > TwoSecondCast) || WoW.Talent(2) == 3) && ((WoW.WildImpsCount >= 1 && !threeimps) || WoW.WildImpsCount >= 2) && ImpsRemainingDuration > TwoSecondCast && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("TK"); return; } //Life Tap if (WoW.CanCast("LifeTap") && WoW.Mana <= 30) { WoW.CastSpell("LifeTap"); return; } //Demonwrath if (WoW.CanCast("Demonwrath") && !WoW.PlayerIsChanneling) { WoW.CastSpell("Demonwrath"); return; } //Life Tap if (WoW.CanCast("LifeTap") && WoW.Mana < 100 && !WoW.PlayerIsChanneling) { WoW.CastSpell("LifeTap"); } } } }
public override void Pulse() { if (DetectKeyPress.GetKeyState(0x6A) < 0) { UseCooldowns = !UseCooldowns; Thread.Sleep(150); } if (!WoW.IsInCombat && !WoW.PlayerHasBuff("Stealth") && !WoW.IsMounted && WoW.CanCast("Stealth")) { WoW.CastSpell("Stealth"); return; } if (WoW.CanCast("Symbols of Death") && WoW.PlayerHasBuff("Stealth") && !WoW.IsInCombat && !WoW.IsMounted) { WoW.CastSpell("Symbols of Death"); return; } if (WoW.CanCast("CrimsonVial") && WoW.HealthPercent <= 40 && WoW.Energy >= 35) { WoW.CastSpell("CrimsonVial"); return; } if (WoW.TargetIsCasting) // Kick { if (WoW.CanCast("Kick") && WoW.IsSpellInRange("Kick") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 55 && !WoW.IsSpellOnCooldown("Kick") && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Kick")) { WoW.CastSpell("Kick"); return; } } if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted) { if (combatRoutine.UseCooldowns) { if (WoW.CanCast("ShadowBlades") && WoW.PlayerHasBuff("Symbols of Death") && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("ShadowBlades"); return; } if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserking"); return; } if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Energy <= 20) { 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("Vanish") && WoW.IsSpellInRange("NightBlade") && WoW.TargetHasDebuff("NightBlade") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance"))) { WoW.CastSpell("Vanish"); return; } } if (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Subterfuge") || WoW.PlayerHasBuff("ShadowDance")) { if (WoW.CanCast("Symbols of Death") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.PlayerBuffTimeRemaining("Symbols of Death") <= 500) { WoW.CastSpell("Symbols of Death"); return; } if (WoW.CanCast("ShadowStrike") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 40 && WoW.CurrentComboPoints <= 5) { WoW.CastSpell("ShadowStrike"); return; } if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("NightBlade"); return; } if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3) { WoW.CastSpell("GoremawsBite"); return; } if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade")) { WoW.CastSpell("Eviscerate"); return; } } if (WoW.CanCast("ShadowDance") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance") || !WoW.PlayerHasBuff("Vanish") || !WoW.PlayerHasBuff("Subterfuge")) && WoW.Energy >= 55 && (WoW.PlayerSpellCharges("ShadowDance") >= 2 && WoW.CurrentComboPoints <= 3 && WoW.IsSpellInRange("NightBlade"))) { WoW.CastSpell("ShadowDance"); return; } if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("NightBlade"); return; } if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3) { WoW.CastSpell("GoremawsBite"); return; } if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade") && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("Eviscerate"); return; } if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 45 && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("Backstab"); return; } } } if (combatRoutine.Type == RotationType.AOE) // Do AoE Stuff here { if (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Subterfuge") || WoW.PlayerHasBuff("ShadowDance")) { if (WoW.CanCast("Symbols of Death") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.PlayerBuffTimeRemaining("Symbols of Death") <= 500) { WoW.CastSpell("Symbols of Death"); return; } if (WoW.CanCast("ShurikenStorm") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 40 && WoW.CurrentComboPoints <= 5) { WoW.CastSpell("ShurikenStorm"); return; } if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("NightBlade"); return; } if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3) { WoW.CastSpell("GoremawsBite"); return; } if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade")) { WoW.CastSpell("Eviscerate"); return; } } if (WoW.CanCast("ShadowDance") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance") || !WoW.PlayerHasBuff("Vanish") || !WoW.PlayerHasBuff("Subterfuge")) && WoW.Energy >= 55 && (WoW.PlayerSpellCharges("ShadowDance") >= 2 && WoW.CurrentComboPoints <= 3 && WoW.IsSpellInRange("NightBlade"))) { WoW.CastSpell("ShadowDance"); return; } if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("NightBlade"); return; } if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("GoremawsBite"); return; } if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade") && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("Eviscerate"); return; } if (WoW.CanCast("ShurikenStorm") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 35 && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("ShurikenStorm"); return; } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) /* Singel Target Rotation*/ { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasTarget && WoW.IsInCombat && WoW.HealthPercent <= 20) /* Defensive Cooldowns */ { if (WoW.IsMoving && WoW.CanCast("UnendingResolve")) { WoW.CastSpell("UnendingResolve"); return; } if (!WoW.IsMoving && WoW.CanCast("UnendingResolve")) { WoW.CastSpell("UnendingResolve"); return; } if (!WoW.IsMoving && WoW.CanCast("DrainLife")) { WoW.CastSpell("DrainLife"); return; } } if (WoW.IsInCombat && Control.ModifierKeys == Keys.Shift && !WoW.PlayerIsCasting) /* Havoc on mouseover target, create macro to use: #showtooltip /cast [target=mouseover,harm,exists,nodead] Havoc; Havoc */ { WoW.CastSpell("Havoc"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.IsMoving && WoW.IsInCombat) /* What to do when we are NOT moving */ { if (!WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.TargetHasDebuff("AuraImmolate")) { if (WoW.HasTarget && WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") == 3) { WoW.CastSpell("DimRift"); return; } if (!WoW.WasLastCasted("Immolate") && WoW.CanCast("Immolate")) { WoW.CastSpell("Immolate"); return; } } if (!WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.TargetHasDebuff("AuraImmolate")) { if (WoW.HasTarget && WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") == 3) { WoW.CastSpell("DimRift"); return; } if (WoW.TargetDebuffTimeRemaining("AuraImmolate") >= 10 && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } if (WoW.TargetDebuffTimeRemaining("AuraImmolate") <= 4.2 && !WoW.WasLastCasted("Immolate") && WoW.CanCast("Immolate")) { WoW.CastSpell("Immolate"); return; } if (WoW.TargetDebuffTimeRemaining("AuraImmolate") >= 10 && WoW.PlayerSpellCharges("Conflagrate") == 1 && WoW.WasLastCasted("Conflagrate") && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } if (WoW.PlayerHasBuff("AuraConflagrateBuff") && WoW.TargetHasDebuff("AuraChaosBolt") && WoW.CanCast("Conflagrate") && WoW.CurrentSoulShards <= 4 && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } if (WoW.CanCast("Conflagrate") && WoW.PlayerSpellCharges("Conflagrate") == 2 && !WoW.WasLastCasted("Immolate") && WoW.CurrentSoulShards <= 4) { WoW.CastSpell("Conflagrate"); return; } if (WoW.HasTarget && WoW.CanCast("ServiceImp") && WoW.CurrentSoulShards >= 1) { WoW.CastSpell("ServiceImp"); return; } /* Summon Infernal on the target but its an AOE ground Spell. I'm not able to code that: */ /* Summon DoomGuard if LordOfFlames debuff is up*/ if (WoW.HasTarget && WoW.CanCast("DoomGuard")) /*Since I can't do the Infernal check, I just summon DoomGuard*/ { WoW.CastSpell("DoomGuard"); return; } if (WoW.CanCast("ChaosBolt") /* && !WoW.WasLastCasted("ChaosBolt") */ && WoW.CurrentSoulShards > 3) { WoW.CastSpell("ChaosBolt"); return; } if (WoW.HasTarget && WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") <= 2) { WoW.CastSpell("DimRift"); return; } if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards >= 2) { WoW.CastSpell("ChaosBolt"); return; } if (WoW.CanCast("Incinerate") && WoW.WasLastCasted("ChaosBolt") /*&& WoW.HasDebuff("AuraChaosBolt")*/) { WoW.CastSpell("Incinerate"); return; } if (WoW.CanCast("Incinerate") && WoW.CurrentSoulShards <= 1) { WoW.CastSpell("Incinerate"); return; } if (WoW.CanCast("Incinerate") && WoW.TargetHasDebuff("AuraChaosBolt") && WoW.TargetDebuffTimeRemaining("AuraChaosBolt") >= 2 && WoW.CurrentSoulShards <= 3) { WoW.CastSpell("Incinerate"); return; } } } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsMoving && WoW.IsInCombat) /* What to do when we are moving */ { if (!WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.HasTarget && WoW.CanCast("DimRift")) { WoW.CastSpell("DimRift"); return; } if (!WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); } } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (!WoW.PlayerHasBuff("Battle Cry")) { if (WoW.TargetHealthPercent > 20 && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { if (WoW.CanCast("Focused Rage") && WoW.WasLastCasted("Charge")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.WasLastCasted("Colossus Smash")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.Rage >= 105) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike")) { WoW.CastSpell("Mortal Strike"); return; } if (WoW.CanCast("Slam") && WoW.Rage >= 32 && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike")) { WoW.CastSpell("Slam"); return; } if (WoW.CanCast("Warbreaker") && !WoW.IsSpellOnCooldown("Battle Cry") && !WoW.TargetHasDebuff("Colossus Smash")) { WoW.CastSpell("Warbreaker"); return; } } if (WoW.TargetHealthPercent < 20 && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { if (WoW.CanCast("Focused Rage") && WoW.WasLastCasted("Charge")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.Rage > 105) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") == 3) { WoW.CastSpell("Mortal Strike"); return; } if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Execute") && WoW.Rage == 18 && WoW.PlayerHasBuff("Precise Strikes")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Execute") && WoW.Rage == 38 && !WoW.PlayerHasBuff("Precise Strikes")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Slam") && WoW.Rage > 32 && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike")) { WoW.CastSpell("Slam"); return; } if (WoW.CanCast("Warbreaker") && !WoW.IsSpellOnCooldown("Battle Cry") && !WoW.TargetHasDebuff("Colossus Smash")) { WoW.CastSpell("Warbreaker"); return; } } } if (WoW.PlayerHasBuff("Battle Cry")) { if (WoW.TargetHealthPercent > 20 && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") == 3) { WoW.CastSpell("Mortal Strike"); return; } if (WoW.CanCast("Slam") && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike")) { WoW.CastSpell("Slam"); return; } } if (WoW.TargetHealthPercent < 20 && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && (WoW.PlayerBuffStacks("Focused Rage") == 3)) { WoW.CastSpell("Mortal Strike"); return; } if (WoW.CanCast("Execute")) { WoW.CastSpell("Execute"); return; } } } } if (combatRoutine.Type == RotationType.AOE) { if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } } }
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) { 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 (combatRoutine.Type == RotationType.SingleTarget) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted) { if (UseCooldowns && RuneOfPower && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") >= 4000 && 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") > 110 && 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") > 110 && !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") > 110 && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 6000 && !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") > 500 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Cinderstorm"); return; } if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling || UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") >= 1 && 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") > 2000 && 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") > 110 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" || WoW.SpellCooldownTimeRemaining("Combustion") < 2000 && 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") > 50 && 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") > 400 && 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.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") < 2000) { WoW.CastSpell("Fireball"); return; } if (WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 130 && 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.SpellCooldownTimeRemaining("Combustion") > 2000) { WoW.CastSpell("Fire Blast"); return; } if (WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000) { 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") <= 2000 && 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") <= 2000 || 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") <= 2000 || 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") >= 2000 || 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") <= 2000) { WoW.CastSpell("Fireball"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted) { if (UseCooldowns && RuneOfPower && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") >= 4000 && 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") > 110 && 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") > 110 && !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") > 110 && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 6000 && !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") > 500 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Cinderstorm"); return; } if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling || UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") >= 1 && 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") > 2000 && 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") > 110 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" || WoW.SpellCooldownTimeRemaining("Combustion") < 2000 && 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") > 5000 && 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") > 400 && 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") > 200 && WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 130 && 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") > 200 && 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") <= 2000 && 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") <= 2000 || 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") <= 2000 || 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") >= 2000 || 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") <= 2000) { WoW.CastSpell("Fireball"); } } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // 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.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.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Counter Shot") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 24 && CounterShot) { WoW.CastSpell("Counter Shot"); return; } if (WoW.CanCast("Volley") && !WoW.PlayerHasBuff("Volley") && WoW.Talent(6) == 3) { WoW.CastSpell("Volley"); return; } if (KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish")) { WoW.CastSpell("Kil'jaeden's Burning Wish"); return; } if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerHasBuff("Trueshot") && WoW.PlayerRace == "BloodElf" && WoW.Focus <= 85) { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerHasBuff("Trueshot") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserking"); return; } if (WoW.CanCast("Blood Fury") && WoW.PlayerHasBuff("Trueshot") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Trueshot") && UseCooldowns && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Trueshot"); return; } if (WoW.CanCast("Murder of Crows") && // AMurderOfCrows if (not HasBuff(Vulnerable) WoW.Talent(6) == 1 && (WoW.Focus >= 30) && !WoW.TargetHasDebuff("Vulnerable") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst")) { WoW.CastSpell("Murder of Crows"); return; } if (WoW.CanCast("Murder of Crows") && // or (BuffRemainingSec(Vulnerable) < SpellCastTimeSec(AimedShot) and not HasBuff(LockAndLoad))) WoW.Talent(6) == 1 && (WoW.Focus >= 30) && WoW.TargetHasDebuff("Vulnerable") && WoW.TargetDebuffTimeRemaining("Vulnerable") < AimedShotCastTime && !WoW.PlayerHasBuff("Lock and Load") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst")) { WoW.CastSpell("Murder of Crows"); return; } if (WoW.CanCast("Piercing Shot") && // PiercingShot if HasBuff(Vulnerable) and PowerToMax < 20 WoW.IsSpellInRange("Windburst") && WoW.Talent(7) == 2 && WoW.TargetHasDebuff("Vulnerable") && WoW.Focus >= 100 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Piercing Shot"); return; } if (WoW.CanCast("Arcane Shot") && // ArcaneShot if WasLastCast(MarkedShot) and HasTalent(PatientSniper) WoW.IsSpellInRange("Windburst") && WoW.Talent(4) == 3 && WoW.WasLastCasted("Marked Shot") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Arcane Shot"); return; } if (WoW.TargetHasDebuff("Vulnerable") && // AimedShot if HasBuff(LockAndLoad) and HasBuff(Vulnerable) WoW.PlayerHasBuff("Lock and Load") && WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("AS"); return; } if (WoW.Focus >= 50 && // AimedShot if (WasLastCast(Windburst) WoW.WasLastCasted("Windburst") && WoW.CanCast("AS") && (!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && WoW.IsSpellInRange("Windburst") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("AS"); return; } if (WoW.Focus >= 50 && /* SpellCastTimeSec(AimedShot) < BuffRemainingSec(Vulnerable)) and (not HasTalent(PiercingShot)*/ WoW.CanCast("AS") && WoW.TargetHasDebuff("Vulnerable") && WoW.TargetDebuffTimeRemaining("Vulnerable") > 200 && WoW.Talent(7) == 3 && WoW.IsSpellInRange("Windburst") && (!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("AS"); return; } if (WoW.Focus >= 50 // CooldownSecRemaining(PiercingShot) > BuffRemainingSec(Vulnerable)) && WoW.CanCast("AS") && (!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && WoW.TargetHasDebuff("Vulnerable") && WoW.TargetDebuffTimeRemaining("Vulnerable") > 200 && WoW.Talent(7) == 2 && WoW.IsSpellOnCooldown("Piercing Shot") && WoW.SpellCooldownTimeRemaining("Piercing Shot") > 200 && WoW.IsSpellInRange("Windburst") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("AS"); return; } if (WoW.CanCast("Windburst") && // Windburst !WoW.IsMoving && WoW.Focus >= 20 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst")) { WoW.CastSpell("Windburst"); return; } if (WoW.CanCast("Arcane Shot") && // ArcaneShot if (HasBuff(MarkingTargets) WoW.IsSpellInRange("Windburst") && WoW.PlayerHasBuff("Marking Targets") && !WoW.PlayerHasBuff("Hunters Mark") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Arcane Shot"); return; } /* if (WoW.CanCast("Arcane Shot") //HasBuff(Trueshot)) and not HasBuff(HuntersMark) * && WoW.IsSpellInRange("Windburst") * && WoW.Focus <=94 * && WoW.PlayerHasBuff("Trueshot") * && !WoW.PlayerHasBuff("Hunters Mark") * && !WoW.PlayerIsChanneling * && !WoW.PlayerIsCasting) * { * WoW.CastSpell("Arcane Shot"); * return; * } */ if (WoW.CanCast("Marked Shot") && // MarkedShot if not HasTalent(PatientSniper) (WoW.Focus >= 25) && WoW.TargetHasDebuff("Hunters Mark") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst") && (WoW.Talent(4) == 1 || WoW.Talent(4) == 2)) { WoW.CastSpell("Marked Shot"); return; } if (WoW.CanCast("Marked Shot") && // (BuffRemainingSec(Vulnerable) < SpellCastTimeSec(AimedShot) and (Power > SpellPowerCost(MarkedShot) + SpellPowerCost(AimedShot) (WoW.Focus >= 75) && WoW.TargetHasDebuff("Hunters Mark") && WoW.TargetHasDebuff("Vulnerable") && WoW.TargetDebuffTimeRemaining("Vulnerable") < AimedShotCastTime && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst")) { WoW.CastSpell("Marked Shot"); return; } if (WoW.CanCast("Marked Shot") && // not HasTalent(TrueAim) (WoW.Focus >= 25) && WoW.TargetHasDebuff("Hunters Mark") && (WoW.Talent(1) == 2 || WoW.Talent(1) == 1) && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst")) { WoW.CastSpell("Marked Shot"); return; } if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // AimedShot if PowerToMax < 25 WoW.Focus >= 95 && WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") && (WoW.Talent(7) == 3 || WoW.Talent(7) == 1) && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("AS"); return; } if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // AimedShot if PowerToMax < 25 WoW.Focus >= 95 && WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") && WoW.Talent(7) == 2 && WoW.IsSpellOnCooldown("Piercing Shot") && WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("AS"); return; } if (WoW.CanCast("Arcane Shot") && // added: less than 50 focus WoW.IsSpellInRange("Windburst") && WoW.Focus <= 49 && WoW.Talent(1) == 1 && !WoW.PlayerHasBuff("Lock and Load") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Arcane Shot"); return; } if (WoW.CanCast("Arcane Shot") && // arcane shot WoW.IsSpellInRange("Windburst") && WoW.Focus <= 99 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.Talent(7) == 2) { WoW.CastSpell("Arcane Shot"); return; } if (WoW.CanCast("Arcane Shot") && // arcane shot WoW.IsSpellInRange("Windburst") && WoW.Focus <= 94 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.TargetHasDebuff("Vulnerable")) { WoW.CastSpell("Arcane Shot"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.PlayerHasBuff("Trueshot")) { if (WoW.CanCast("Multi-Shot") && WoW.Focus >= 40 && WoW.IsSpellInRange("Windburst") && !WoW.TargetHasDebuff("Hunters Mark") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Marked Shot") && (WoW.Focus >= 25) && WoW.TargetHasDebuff("Hunters Mark") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst") && (WoW.TargetHasDebuff("Vulnerable") || !WoW.TargetHasDebuff("Vulnerable"))) { WoW.CastSpell("Marked Shot"); return; } } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerHasBuff("Trueshot")) { if (WoW.CanCast("Counter Shot") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 24 && CounterShot) { WoW.CastSpell("Counter Shot"); return; } if (WoW.CanCast("Volley") && !WoW.PlayerHasBuff("Volley") && WoW.Talent(6) == 3) { WoW.CastSpell("Volley"); return; } if (KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish")) { WoW.CastSpell("Kil'jaeden's Burning Wish"); return; } if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerHasBuff("Trueshot") && WoW.PlayerRace == "BloodElf" && WoW.Focus <= 85) { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerHasBuff("Trueshot") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserking"); return; } if (WoW.CanCast("Blood Fury") && WoW.PlayerHasBuff("Trueshot") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Trueshot") && UseCooldowns && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Trueshot"); return; } if (WoW.CanCast("Piercing Shot") && WoW.TargetHasDebuff("Vulnerable") && WoW.Focus >= 100 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.Talent(7) == 2 && WoW.IsSpellInRange("Windburst")) { WoW.CastSpell("Piercing Shot"); return; } if (WoW.CanCast("Murder of Crows") && WoW.Talent(6) == 1 && (WoW.Focus >= 30) && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst")) { WoW.CastSpell("Murder of Crows"); return; } if (WoW.CanCast("Marked Shot") && (WoW.Focus >= 25) && WoW.TargetHasDebuff("Hunters Mark") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst") && WoW.TargetHasDebuff("Vulnerable") && (WoW.TargetDebuffTimeRemaining("Vulnerable") <= 100)) { WoW.CastSpell("Marked Shot"); return; } if (WoW.CanCast("Marked Shot") && (WoW.Focus >= 25) && WoW.TargetHasDebuff("Hunters Mark") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellInRange("Windburst") && !WoW.TargetHasDebuff("Vulnerable")) { WoW.CastSpell("Marked Shot"); return; } /* if (WoW.CanCast("Windburst") * && !WoW.IsMoving * && WoW.Focus >= 20 * && WoW.TargetHasDebuff("Vulnerable") * && !WoW.PlayerIsChanneling * && !WoW.PlayerIsCasting * && (WoW.TargetDebuffTimeRemaining("Vulnerable") <= 1) * && WoW.IsSpellInRange("Windburst")) * { * WoW.CastSpell("Windburst"); * return; * } * if (WoW.CanCast("Windburst") * && !WoW.IsMoving * && WoW.Focus >= 20 * && !WoW.PlayerIsChanneling * && !WoW.PlayerIsCasting * && !WoW.TargetHasDebuff("Vulnerable") * && WoW.IsSpellInRange("Windburst")) * { * WoW.CastSpell("Windburst"); * return; * } */ if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // with piercing shot WoW.Focus >= 50 && WoW.TargetHasDebuff("Vulnerable") && WoW.CanCast("AS") && (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) && WoW.IsSpellInRange("Windburst") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Piercing Shot") && WoW.Talent(7) == 2 && (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100)) { WoW.CastSpell("AS"); if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // with piercing shot WoW.Focus >= 50 && WoW.TargetHasDebuff("Vulnerable") && WoW.CanCast("AS") && (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) && WoW.IsSpellInRange("Windburst") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Piercing Shot") && WoW.Talent(7) == 2 && (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100)) { WoW.CastSpell("AS"); if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // with piercing shot WoW.Focus >= 50 && WoW.TargetHasDebuff("Vulnerable") && WoW.CanCast("AS") && (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) && WoW.IsSpellInRange("Windburst") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Piercing Shot") && WoW.Talent(7) == 2 && (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100)) { WoW.CastSpell("AS"); return; } } } if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && WoW.Focus >= 95 && !WoW.TargetHasDebuff("Vulnerable") && WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Piercing Shot") && WoW.Talent(7) == 2 && (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100)) { WoW.CastSpell("AS"); if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && WoW.Focus >= 95 && !WoW.TargetHasDebuff("Vulnerable") && WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Piercing Shot") && WoW.Talent(7) == 2 && (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100)) { WoW.CastSpell("AS"); if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && WoW.Focus >= 95 && !WoW.TargetHasDebuff("Vulnerable") && WoW.CanCast("AS") && WoW.IsSpellInRange("Windburst") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Piercing Shot") && WoW.Talent(7) == 2 && (WoW.SpellCooldownTimeRemaining("Piercing Shot") > 300 || WoW.Focus > 100)) { WoW.CastSpell("AS"); return; } } } if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // without piercing shot WoW.Focus >= 50 && WoW.TargetHasDebuff("Vulnerable") && WoW.CanCast("AS") && (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) && WoW.IsSpellInRange("Windburst") && WoW.Talent(7) == 3 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("AS"); if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // without piercing shot WoW.Focus >= 50 && WoW.TargetHasDebuff("Vulnerable") && WoW.CanCast("AS") && (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) && WoW.IsSpellInRange("Windburst") && WoW.Talent(7) == 3 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("AS"); if ((!WoW.IsMoving || WoW.PlayerHasBuff("Gyroscopic Stabilization")) && // without piercing shot WoW.Focus >= 50 && WoW.TargetHasDebuff("Vulnerable") && WoW.CanCast("AS") && (WoW.TargetDebuffTimeRemaining("Vulnerable") > AimedShotCastTime) && WoW.IsSpellInRange("Windburst") && WoW.Talent(7) == 3 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("AS"); return; } } } if (WoW.PlayerHasBuff("Lock and Load") && WoW.CanCast("AS") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetHasDebuff("Vulnerable") && WoW.IsSpellInRange("Windburst")) { WoW.CastSpell("AS"); return; } if (WoW.CanCast("Multi-Shot") && WoW.IsSpellInRange("Windburst") && WoW.Focus <= 94 && WoW.TargetHasDebuff("Vulnerable") && WoW.TargetDebuffTimeRemaining("Vulnerable") < AimedShotCastTime && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Multi-Shot") && WoW.IsSpellInRange("Windburst") && WoW.PlayerHasBuff("Marking Targets") && !WoW.TargetHasDebuff("Hunters Mark") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Multi-Shot") && WoW.IsSpellInRange("Windburst") && !WoW.PlayerHasBuff("Marking Targets") && !WoW.TargetHasDebuff("Vulnerable") && !WoW.TargetHasDebuff("Hunters Mark") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Multi-Shot") && WoW.IsSpellInRange("Windburst") && WoW.Focus <= 99 && WoW.Talent(7) == 2 && !WoW.IsSpellOnCooldown("Piercing Shot") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Multi-Shot") && WoW.IsSpellInRange("Windburst") && WoW.Focus <= 99 && WoW.Talent(7) == 2 && WoW.IsSpellOnCooldown("Piercing Shot") && WoW.SpellCooldownTimeRemaining("Piercing Shot") < 3 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Multi-Shot") && WoW.IsSpellInRange("Windburst") && WoW.TargetHasDebuff("Vulnerable") && WoW.Focus <= 49 && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Multi-Shot"); return; } /* if (WoW.CanCast("Arcane Shot") * && WoW.IsSpellInRange("Windburst") * && WoW.Focus <=94 * && !WoW.TargetHasDebuff("Vulnerable") * && !WoW.PlayerIsChanneling * && !WoW.PlayerIsCasting) * * { * WoW.CastSpell("Arcane Shot"); * return; * } * if (WoW.CanCast("Arcane Shot") * && WoW.IsSpellInRange("Windburst") * && WoW.Focus <=94 * && WoW.TargetHasDebuff("Vulnerable") * && (WoW.TargetDebuffTimeRemaining("Vulnerable") <= 1.9 || WoW.TargetDebuffTimeRemaining("Vulnerable") >= 5) * && WoW.IsSpellOnCooldown("Windburst") * && !WoW.PlayerIsChanneling * && !WoW.PlayerIsCasting) * * { * WoW.CastSpell("Arcane Shot"); * return; * } */ } } }
public override void Pulse() { if (WoW.IsInCombat) { interruptwatch.Start(); } if (UseCooldowns) { } //if (WoW.PlayerHasBuff("Mount")) return; if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat) //Pull need to do by yourself - to prevent a mess { if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis")) { WoW.Speak("Metamorphosis"); Log.Write("Health low < 30% using CDs...", Color.Red); WoW.CastSpell("Metamorphasis"); // Off the GCD no return needed } if (WoW.CanCast("Throw Glaive") && !WoW.IsSpellInRange("Soul Carver") && WoW.IsSpellInRange("Fel Eruption")) //Need to implement range 30y for Throw Glaive spell 204157 { WoW.CastSpell("Throw Glaive"); return; } if (!WoW.IsSpellInRange("Soul Carver")) // If we are out of melee range return { return; } if (WoW.TargetIsCasting && interruptwatch.ElapsedMilliseconds > 1200) { if (!WoW.IsSpellOnCooldown("Sigal of Silence") && WoW.WasLastCasted("Arcane Torrent")) { WoW.Speak("Interrupting spell"); WoW.CastSpell("Sigal of Silence"); interruptwatch.Reset(); interruptwatch.Start(); return; } if (!WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.WasLastCasted("Sigal of Silence")) { WoW.Speak("Interrupting spell"); WoW.CastSpell("Arcane Torrent"); interruptwatch.Reset(); interruptwatch.Start(); return; } } if (WoW.CanCast("Fiery Brand") && !WoW.TargetHasDebuff("Fiery Demise")) { WoW.CastSpell("Fiery Brand"); } if (WoW.CanCast("Soul Carver") && WoW.SpellCooldownTimeRemaining("Fiery Brand") >= 10) { WoW.CastSpell("Soul Carver"); return; } if (WoW.CanCast("Spirit Bomb") && WoW.PlayerHasBuff("Soul Fragments") && !WoW.TargetHasDebuff("Frailty")) { WoW.CastSpell("Spirit Bomb"); return; } if (WoW.CanCast("Sigil of Flame") && WoW.TargetHasDebuff("Fiery Demise") && WoW.TargetDebuffTimeRemaining("Fiery Demise") >= 7) { //WoW.CastSpellOnMe("Sigil of Flame"); // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!! WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent return; } if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10 && WoW.TargetHasDebuff("Fiery Demise")) { WoW.CastSpell("Fel Eruption"); return; } if (WoW.CanCast("Soul Barrier") && WoW.Pain >= 10 && WoW.PlayerHasBuff("Soul Fragments") && WoW.PlayerBuffStacks("Soul Fragments") >= 4) { WoW.CastSpell("Soul Barrier"); return; } if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && (WoW.Pain == 100 || WoW.HealthPercent < 80 && WoW.Pain >= 20)) // to not waste cd and pain { WoW.CastSpell("Demon Spikes"); } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 30 && WoW.HealthPercent < 25) // Extra save, when we are on too low hp { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 80 && WoW.HealthPercent < 50 && !WoW.CanCast("Demon Spikes")) { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 60 && WoW.HealthPercent < 50 && WoW.PlayerHasBuff("Demon Spikes")) { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Fracture") && WoW.Pain >= 20 && WoW.HealthPercent >= 50 && WoW.PlayerHasBuff("Demon Spikes")) { WoW.CastSpell("Fracture"); return; } if (WoW.CanCast("Fracture") && WoW.Pain >= 80 && WoW.HealthPercent >= 50 && !WoW.CanCast("Demon Spikes")) { WoW.CastSpell("Fracture"); return; } if (WoW.CanCast("Immolation Aura")) { WoW.CastSpell("Immolation Aura"); return; } if (WoW.CanCast("Sigil of Flame")) { //WoW.CastSpellOnMe("Sigil of Flame"); // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!! WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent return; } if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10) { WoW.CastSpell("Fel Eruption"); return; } if (WoW.CanCast("Sever") && WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator { WoW.CastSpell("Sever"); return; } if (WoW.CanCast("Shear") && !WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator { WoW.CastSpell("Shear"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat) //Pull need to do by yourself - to prevent a mess { if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis")) { WoW.Speak("Metamorphosis"); Log.Write("Health low < 30% using CDs...", Color.Red); WoW.CastSpell("Metamorphasis"); // Off the GCD no return needed } if (!WoW.IsSpellInRange("Soul Carver") && !WoW.IsSpellOnCooldown("Throw Glaive") && WoW.IsSpellInRange("Fel Eruption")) //Need to implement range 30y for Throw Glaive spell 204157 { WoW.CastSpell("Throw Glaive"); return; } if (!WoW.IsSpellInRange("Soul Carver")) // If we are out of melee range return { return; } if (WoW.TargetIsCasting && interruptwatch.ElapsedMilliseconds > 1200) { if (!WoW.IsSpellOnCooldown("Sigal of Silence") && WoW.WasLastCasted("Arcane Torrent")) { WoW.Speak("Interrupting spell"); WoW.CastSpell("Sigal of Silence"); interruptwatch.Reset(); interruptwatch.Start(); return; } if (!WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.WasLastCasted("Sigal of Silence")) { WoW.Speak("Interrupting spell"); WoW.CastSpell("Arcane Torrent"); interruptwatch.Reset(); interruptwatch.Start(); return; } } if (WoW.CanCast("Fiery Brand") && !WoW.TargetHasDebuff("Fiery Demise")) { WoW.CastSpell("Fiery Brand"); } if (WoW.CanCast("Soul Carver") && WoW.SpellCooldownTimeRemaining("Fiery Brand") >= 10) { WoW.CastSpell("Soul Carver"); return; } if (WoW.CanCast("Spirit Bomb") && WoW.PlayerHasBuff("Soul Fragments") && !WoW.TargetHasDebuff("Frailty")) { WoW.CastSpell("Spirit Bomb"); return; } if (WoW.CanCast("Sigil of Flame") && WoW.TargetHasDebuff("Fiery Demise") && WoW.TargetDebuffTimeRemaining("Fiery Demise") >= 7) { //WoW.CastSpellOnMe("Sigil of Flame"); // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!! WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent return; } if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10 && WoW.TargetHasDebuff("Fiery Demise")) { WoW.CastSpell("Fel Eruption"); return; } if (WoW.CanCast("Soul Barrier") && WoW.Pain >= 10 && WoW.PlayerHasBuff("Soul Fragments") && WoW.PlayerBuffStacks("Soul Fragments") >= 4) { WoW.CastSpell("Soul Barrier"); return; } if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && (WoW.Pain == 100 || WoW.HealthPercent < 90 && WoW.Pain >= 20)) // to not waste cd and pain { WoW.CastSpell("Demon Spikes"); } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 30 && WoW.HealthPercent < 25) // Extra save, when we are on too low hp { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 60 && WoW.PlayerHasBuff("Demon Spikes")) { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 80 && !WoW.CanCast("Demon Spikes")) { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Immolation Aura")) { WoW.CastSpell("Immolation Aura"); return; } if (WoW.CanCast("Sigil of Flame")) { //WoW.CastSpellOnMe("Sigil of Flame"); // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!! WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent return; } if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10) { WoW.CastSpell("Fel Eruption"); return; } if (WoW.CanCast("Sever") && WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator { WoW.CastSpell("Sever"); return; } if (WoW.CanCast("Shear") && !WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator { WoW.CastSpell("Shear"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat) //Pull need to do by yourself - to prevent a mess { if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis")) { WoW.Speak("Metamorphosis"); Log.Write("Health low < 30% using CDs...", Color.Red); WoW.CastSpell("Metamorphasis"); // Off the GCD no return needed } if (!WoW.IsSpellInRange("Soul Carver") && !WoW.IsSpellOnCooldown("Throw Glaive") && WoW.IsSpellInRange("Fel Eruption")) //Need to implement range 30y for Throw Glaive spell 204157 { WoW.CastSpell("Throw Glaive"); return; } if (!WoW.IsSpellInRange("Soul Carver")) // If we are out of melee range return { return; } if (WoW.TargetIsCasting && interruptwatch.ElapsedMilliseconds > 1200) { if (!WoW.IsSpellOnCooldown("Sigal of Silence") && WoW.WasLastCasted("Arcane Torrent")) { WoW.Speak("Interrupting spell"); WoW.CastSpell("Sigal of Silence"); interruptwatch.Reset(); interruptwatch.Start(); return; } if (!WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.WasLastCasted("Sigal of Silence")) { WoW.Speak("Interrupting spell"); WoW.CastSpell("Arcane Torrent"); interruptwatch.Reset(); interruptwatch.Start(); return; } } if (WoW.CanCast("Fiery Brand") && !WoW.TargetHasDebuff("Fiery Demise")) { WoW.CastSpell("Fiery Brand"); } if (WoW.CanCast("Soul Carver") && WoW.SpellCooldownTimeRemaining("Fiery Brand") >= 10) { WoW.CastSpell("Soul Carver"); return; } if (WoW.CanCast("Spirit Bomb") && WoW.PlayerHasBuff("Soul Fragments") && !WoW.TargetHasDebuff("Frailty")) { WoW.CastSpell("Spirit Bomb"); return; } if (WoW.CanCast("Sigil of Flame")) { //WoW.CastSpellOnMe("Sigil of Flame"); // Use this if you not using "Concentrated Sigal's" talent - this is a little buggy!!! WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigal's" talent return; } if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10 && WoW.TargetHasDebuff("Fiery Demise")) { WoW.CastSpell("Fel Eruption"); return; } if (WoW.CanCast("Soul Barrier") && WoW.Pain >= 10 && WoW.PlayerHasBuff("Soul Fragments") && WoW.PlayerBuffStacks("Soul Fragments") >= 4) { WoW.CastSpell("Soul Barrier"); return; } if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && (WoW.Pain == 100 || WoW.HealthPercent < 80 && WoW.Pain >= 20)) // to not waste cd and pain { WoW.CastSpell("Demon Spikes"); } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 30 && WoW.HealthPercent < 25) // Extra save, when we are on too low hp { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 60 && WoW.PlayerHasBuff("Demon Spikes")) { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 80 && !WoW.CanCast("Demon Spikes")) { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Immolation Aura")) { WoW.CastSpell("Immolation Aura"); return; } if (WoW.CanCast("Fel Eruption") && WoW.Pain >= 10) { WoW.CastSpell("Fel Eruption"); return; } if (WoW.CanCast("Sever") && WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator { WoW.CastSpell("Sever"); return; } if (WoW.CanCast("Shear") && !WoW.PlayerHasBuff("Metamorphasis")) // Pain Generator { WoW.CastSpell("Shear"); } } } }
public override void Pulse() { if (stopwatch.ElapsedMilliseconds == 0) { stopwatch.Start(); Log.WriteCloudMagic("The Cooldown toggle button is now Active (Numpad9). The delay is set to 1000ms ( 1 second )", Color.Black); return; } { if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_NUMPAD9) < 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") >= 4000 && 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") > 110 && 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") > 110 && !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") > 110 && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 6000 && !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") > 500 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Cinderstorm"); return; } if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling || UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") >= 1 && 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") > 2000 && 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") > 110 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" || WoW.SpellCooldownTimeRemaining("Combustion") < 2000 && 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") > 50 && 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") > 400 && 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.CanCast("Fireball") && WoW.IsSpellOnCooldown("Fire Blast") && !WoW.PlayerIsCasting && WoW.IsSpellOnCooldown("Phoenix's Flames") && WoW.PlayerHasBuff("Heating Up") && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") < 2000) { WoW.CastSpell("Fireball"); return; } if (WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 130 && 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.SpellCooldownTimeRemaining("Combustion") > 2000) { WoW.CastSpell("Fire Blast"); return; } if (WoW.LastSpell != "Phoenix's Flame" && WoW.LastSpell != "Fire Blast" && WoW.PlayerHasBuff("Heating Up") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && !WoW.PlayerHasBuff("Hot Streak!") && WoW.SpellCooldownTimeRemaining("Combustion") > 2000) { 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") <= 2000 && 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") <= 2000 || 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") <= 2000 || 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") >= 2000 || 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") <= 2000) { WoW.CastSpell("Fireball"); return; } } } } if (combatRoutine.Type == RotationType.AOE) { if (UseCooldowns && RuneOfPower && WoW.PlayerSpellCharges("Rune of Power") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") >= 4000 && 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") > 110 && 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") > 110 && !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") > 110 && WoW.PlayerHasBuff("Heating Up") && Combustion && WoW.PlayerSpellCharges("Phoenix's Flames") >= 1 && WoW.SpellCooldownTimeRemaining("Combustion") > 6000 && !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") > 500 && !WoW.PlayerHasBuff("Hot Streak!")) { WoW.CastSpell("Cinderstorm"); return; } if (UseCooldowns && Combustion && !WoW.IsSpellOnCooldown("Combustion") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Fire Blast") >= 1 && WoW.PlayerSpellCharges("Phoenix's Flames") >= 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling || UseCooldowns && Combustion && Mirrors && WoW.PlayerSpellCharges("Fire Blast") >= 1 && 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") > 2000 && 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") > 110 && WoW.LastSpell != "Phoenix's Flames" && WoW.LastSpell != "Fire Blast" || WoW.SpellCooldownTimeRemaining("Combustion") < 2000 && 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") > 5000 && 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") > 400 && 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") > 200 && WoW.SpellCooldownTimeRemaining("Phoenix's Flames") > 130 && 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") > 200 && 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") <= 2000 && 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") <= 2000 || 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") <= 2000 || 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") >= 2000 || 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") <= 2000) { WoW.CastSpell("Fireball"); } } }
public override void Pulse() { if (WoW.IsInCombat) { interruptwatch.Start(); } if (UseCooldowns) { } //if (WoW.PlayerHasBuff("Mount")) return; if (combatRoutine.Type != RotationType.SingleTarget && combatRoutine.Type != RotationType.AOE) { return; } if (!WoW.HasTarget || !WoW.TargetIsEnemy) { return; } if (WoW.HealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis")) { WoW.Speak("Metamorphasis"); Log.Write("Health low < 70% using CDs...", Color.Red); WoW.CastSpell("Metamorphasis"); // Off the GCD no return needed } if (WoW.PlayerHasBuff("Metamorphasis") && WoW.CanCast("Sever")) { WoW.CastSpell("Sever"); return; } if (WoW.PlayerHasBuff("Metamorphasis") && WoW.PlayerHasBuff("Soul Fragments") && (WoW.PlayerBuffStacks("Soul Fragments") >= 5) && WoW.Pain >= 50) { WoW.CastSpell("Soul Cleave"); return; } if (!WoW.IsSpellInRange("Soul Carver") && !WoW.IsSpellOnCooldown("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && WoW.CanCast("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } if (!WoW.IsSpellInRange("Soul Carver")) // If we are out of melee range return { return; } if (WoW.TargetIsCasting && interruptwatch.ElapsedMilliseconds > 1200) { if (!WoW.IsSpellOnCooldown("Sigil of Silence") && WoW.WasLastCasted("Arcane Torrent")) { WoW.Speak("Interrupting spell"); WoW.CastSpell("Sigil of Silence"); interruptwatch.Reset(); interruptwatch.Start(); return; } if (!WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.WasLastCasted("Sigil of Silence")) { WoW.Speak("Interrupting spell"); WoW.CastSpell("Arcane Torrent"); interruptwatch.Reset(); interruptwatch.Start(); return; } } if (!WoW.TargetHasDebuff("Fiery Demise") && !WoW.IsSpellOnCooldown("Fiery Brand")) { WoW.CastSpell("Fiery Brand"); } if (WoW.CanCast("Demon Spikes") && !WoW.PlayerHasBuff("Demon Spikes") && WoW.Pain > 20 && !WoW.PlayerHasBuff("Magnum Opus")) { WoW.CastSpell("Demon Spikes"); } if (WoW.CanCast("Soul Carver")) { WoW.CastSpell("Soul Carver"); } if (WoW.CanCast("Fel Devastation") && WoW.Pain >= 30) { WoW.CastSpell("Fel Devastation"); } if (WoW.CanCast("Soul Cleave") && WoW.Pain >= 50) { WoW.CastSpell("Soul Cleave"); return; } if (WoW.CanCast("Immolation Aura")) { WoW.CastSpell("Immolation Aura"); return; } if (WoW.CanCast("Sigil of Flame") && !WoW.TargetHasDebuff("Sigil of Flame")) { //WoW.CastSpellOnMe("Sigil of Flame"); // Use this if you not using "Concentrated Sigil's" talent - this is a little buggy!!! WoW.CastSpell("Sigil of Flame"); // NB must have "Concentrated Sigil's" talent return; } //if (WoW.CanCast("Felblade")) // Pain Generator //{ // WoW.CastSpell("Felblade"); // return; //} if (WoW.CanCast("Shear")) // Pain Generator { WoW.CastSpell("Shear"); } }
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; } } } }
} //please Set between 1-99 NpC in range for ST if not desired set to 99 public override void Pulse() { if (DetectKeyPress.GetKeyState(0x6A) < 0) { UseCooldowns = !UseCooldowns; Thread.Sleep(150); } if (WoW.TargetIsCasting) // Kick { if (WoW.CanCast("Kick") && WoW.IsSpellInRange("Kick") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 55 && !WoW.IsSpellOnCooldown("Kick") && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Kick")) { WoW.CastSpell("Kick"); return; } } if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted) { // Spell ShadowDance if TimerSecRemaining(DeathFromAbove) > 0 and HasTalent(DarkShadow) if (WoW.CanCast("ShadowDance") && WoW.Talent(6) == 1 && WoW.LastSpell == "DeathFromAbove") { WoW.CastSpell("ShadowDance"); return; } // Cooldowns Spell ShadowBlades if AlternatePowerToMax >= 2 if (combatRoutine.UseCooldowns) { if (!stealth) { //StealthCooldowns Spell ShadowDance if ChargesRemaining(ShadowDance) = SpellCharges(ShadowDance) if (WoW.CanCast("ShadowDance") && WoW.PlayerSpellCharges("ShadowDance") >= 2) { WoW.CastSpell("ShadowDance"); return; } //StealthCooldowns Spell Vanish if HasTalent(Subterfuge) and not HasBuff(MasterAssassinsInitiative) if (WoW.CanCast("Vanish") && WoW.IsSpellInRange("NightBlade") && WoW.Talent(2) == 2 && !WoW.PlayerHasBuff("MasterAssassinsInitiative") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance"))) { WoW.CastSpell("Vanish"); return; } } if (WoW.CanCast("ShadowBlades") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 4) { WoW.CastSpell("ShadowBlades"); return; } //Cooldowns Spell GoremawsBite if AlternatePowerToMax >= 3 and not HasBuff(Stealth) and not HasBuff(ShadowDance) and not HasBuff(Subterfuge) and ChargesRemaining(ShadowDance) < SpellCharges(ShadowDance) if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3 && !stealth && WoW.PlayerSpellCharges("ShadowDance") < 2) { WoW.CastSpell("GoremawsBite"); return; } } if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserking"); return; } if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Energy <= 20) { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.CanCast("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); return; } // Spell Backstab Once if AlternatePower < 5 and FightDurationSec - FightSecRemaining < 2 if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 45 && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("Backstab"); return; } //Spell Vanish if not HasTalent(Subterfuge) and not HasBuff(ShadowDance) and not HasBuff(MasterAssassinsInitiative) and Power >= 40 and ChargesRemaining(ShadowDance) < SpellCharges(ShadowDance) and not IsOnGcd and (AlternatePowerToMax >= 3 or (AlternatePowerToMax >= 2 and not HasBuff(ShadowBlades))) if (WoW.CanCast("Vanish") && !stealth && WoW.IsSpellInRange("NightBlade") && WoW.Talent(2) != 2 && !WoW.PlayerHasBuff("ShadowDance") && !WoW.PlayerHasBuff("MasterAssassinsInitiative") && WoW.Energy >= 40 && WoW.PlayerSpellCharges("ShadowDance") < 2 && (WoW.CurrentComboPoints >= 3 || (WoW.CurrentComboPoints >= 2 && !WoW.PlayerHasBuff("ShadowBlades")))) { WoW.CastSpell("Vanish"); return; } //AmrRogueSubtletyDefault2 Spell SymbolsOfDeath if ((PowerToMax >= 40 and (not HasBuff(ShadowDance) or BuffRemainingSec(ShadowDance) >= BuffDurationSec(ShadowDance) - 1)) or if (WoW.CanCast("Symbols of Death") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.Energy <= 60 && (WoW.PlayerHasBuff("ShadowDance") || WoW.PlayerBuffTimeRemaining("ShadowDance") >= 300)) { WoW.CastSpell("Symbols of Death"); return; } //(HasBuff(ShadowDance) and FightDurationSec - FightSecRemaining < 10) or //(HasItem(TheFirstOfTheDead) and AlternatePowerToMax >= 5 and Power >= 40)) and not IsOnGcd // Finisher Spell Nightblade if CanRefreshDot(Nightblade) and TargetSecRemaining > 6 and (not HasBuff(MasterAssassinsInitiative) or DotRemainingSec(Nightblade) < BuffRemainingSec(MasterAssassinsInitiative)) if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && ((!WoW.TargetHasDebuff("MasterAssassinsInitiative")) || (WoW.TargetDebuffTimeRemaining("Nightblade") < WoW.PlayerBuffTimeRemaining("MasterAssassinsInitiative"))) && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("NightBlade"); return; } //Finisher Spell DeathFromAbove if HasBuff(SymbolsOfDeath) or CooldownSecRemaining(SymbolsOfDeath) > 10 if (WoW.CanCast("DeathFromAbove") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (WoW.PlayerHasBuff("SymbolsOfDeath") || WoW.SpellCooldownTimeRemaining("SymbolsOfDeath") > 10000) && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("DeathFromAbove"); return; } //Finisher Spell Eviscerate if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade")) { WoW.CastSpell("Eviscerate"); return; } //InsideStealth Spell Shadowstrike if (WoW.CanCast("ShadowStrike") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 40 && WoW.CurrentComboPoints <= 5 && stealth) { WoW.CastSpell("ShadowStrike"); return; } // Spell ShadowDance if TimerSecRemaining(DeathFromAbove) > 0 and HasTalent(DarkShadow) if (WoW.CanCast("ShadowDance") && WoW.Talent(6) == 1 && WoW.LastSpell == "DeathFromAbove") { WoW.CastSpell("ShadowDance"); return; } //StealthCooldowns Spell ShadowDance if (WoW.CanCast("ShadowDance")) { WoW.CastSpell("ShadowDance"); return; } //Builder Spell Backstab if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 45 && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("Backstab"); return; } } } if (combatRoutine.Type == RotationType.AOE) // Do AoE Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted) { // Spell ShadowDance if TimerSecRemaining(DeathFromAbove) > 0 and HasTalent(DarkShadow) if (WoW.CanCast("ShadowDance") && WoW.Talent(6) == 1 && WoW.LastSpell == "DeathFromAbove") { WoW.CastSpell("ShadowDance"); return; } // Cooldowns Spell ShadowBlades if AlternatePowerToMax >= 2 if (combatRoutine.UseCooldowns) { if (!stealth) { //StealthCooldowns Spell ShadowDance if ChargesRemaining(ShadowDance) = SpellCharges(ShadowDance) if (WoW.CanCast("ShadowDance") && WoW.PlayerSpellCharges("ShadowDance") >= 2) { WoW.CastSpell("ShadowDance"); return; } //StealthCooldowns Spell Vanish if HasTalent(Subterfuge) and not HasBuff(MasterAssassinsInitiative) if (WoW.CanCast("Vanish") && WoW.IsSpellInRange("NightBlade") && WoW.Talent(2) == 2 && !WoW.PlayerHasBuff("MasterAssassinsInitiative") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("ShadowDance"))) { WoW.CastSpell("Vanish"); return; } } if (WoW.CanCast("ShadowBlades") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 4) { WoW.CastSpell("ShadowBlades"); return; } //Cooldowns Spell GoremawsBite if AlternatePowerToMax >= 3 and not HasBuff(Stealth) and not HasBuff(ShadowDance) and not HasBuff(Subterfuge) and ChargesRemaining(ShadowDance) < SpellCharges(ShadowDance) if (WoW.CanCast("GoremawsBite") && WoW.IsSpellInRange("NightBlade") && WoW.CurrentComboPoints <= 3 && !stealth && WoW.PlayerSpellCharges("ShadowDance") < 2) { WoW.CastSpell("GoremawsBite"); return; } } if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserking"); return; } if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Energy <= 20) { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.CanCast("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); return; } // Spell Backstab Once if AlternatePower < 5 and FightDurationSec - FightSecRemaining < 2 if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 45 && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("Backstab"); return; } //Spell Vanish if not HasTalent(Subterfuge) and not HasBuff(ShadowDance) and not HasBuff(MasterAssassinsInitiative) and Power >= 40 and ChargesRemaining(ShadowDance) < SpellCharges(ShadowDance) and not IsOnGcd and (AlternatePowerToMax >= 3 or (AlternatePowerToMax >= 2 and not HasBuff(ShadowBlades))) if (WoW.CanCast("Vanish") && !stealth && WoW.IsSpellInRange("NightBlade") && WoW.Talent(2) != 2 && !WoW.PlayerHasBuff("ShadowDance") && !WoW.PlayerHasBuff("MasterAssassinsInitiative") && WoW.Energy >= 40 && WoW.PlayerSpellCharges("ShadowDance") < 2 && (WoW.CurrentComboPoints >= 3 || (WoW.CurrentComboPoints >= 2 && !WoW.PlayerHasBuff("ShadowBlades")))) { WoW.CastSpell("Vanish"); return; } //AmrRogueSubtletyDefault2 Spell SymbolsOfDeath if ((PowerToMax >= 40 and (not HasBuff(ShadowDance) or BuffRemainingSec(ShadowDance) >= BuffDurationSec(ShadowDance) - 1)) or if (WoW.CanCast("Symbols of Death") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.Energy <= 60 && (WoW.PlayerHasBuff("ShadowDance") || WoW.PlayerBuffTimeRemaining("ShadowDance") >= 300)) { WoW.CastSpell("Symbols of Death"); return; } //(HasBuff(ShadowDance) and FightDurationSec - FightSecRemaining < 10) or //(HasItem(TheFirstOfTheDead) and AlternatePowerToMax >= 5 and Power >= 40)) and not IsOnGcd // Finisher Spell Nightblade if CanRefreshDot(Nightblade) and TargetSecRemaining > 6 and (not HasBuff(MasterAssassinsInitiative) or DotRemainingSec(Nightblade) < BuffRemainingSec(MasterAssassinsInitiative)) if (WoW.CanCast("NightBlade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("NightBlade") || WoW.TargetDebuffTimeRemaining("NightBlade") <= 600) && ((!WoW.TargetHasDebuff("MasterAssassinsInitiative")) || (WoW.TargetDebuffTimeRemaining("Nightblade") < WoW.PlayerBuffTimeRemaining("MasterAssassinsInitiative"))) && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("NightBlade"); return; } //Finisher Spell DeathFromAbove if HasBuff(SymbolsOfDeath) or CooldownSecRemaining(SymbolsOfDeath) > 10 if (WoW.CanCast("DeathFromAbove") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (WoW.PlayerHasBuff("SymbolsOfDeath") || WoW.SpellCooldownTimeRemaining("SymbolsOfDeath") > 10000) && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("DeathFromAbove"); return; } //Finisher Spell Eviscerate if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 35 && WoW.TargetHasDebuff("NightBlade")) { WoW.CastSpell("Eviscerate"); return; } //InsideStealth Spell Shadowstrike if (WoW.CanCast("ShurikenStorm") && WoW.IsSpellInRange("NightBlade") && WoW.Energy >= 40 && WoW.CurrentComboPoints <= 5 && stealth) { WoW.CastSpell("ShurikenStorm"); return; } // Spell ShadowDance if TimerSecRemaining(DeathFromAbove) > 0 and HasTalent(DarkShadow) if (WoW.CanCast("ShadowDance") && WoW.Talent(6) == 1 && WoW.LastSpell == "DeathFromAbove") { WoW.CastSpell("ShadowDance"); return; } //StealthCooldowns Spell ShadowDance if (WoW.CanCast("ShadowDance")) { WoW.CastSpell("ShadowDance"); return; } //Builder Spell Backstab if (WoW.CanCast("ShurikenStorm") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 35 && WoW.IsSpellInRange("NightBlade")) { WoW.CastSpell("ShurikenStorm"); return; } } } }
public override void Pulse() { if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted) { SelectRotation(4, 100, 1); } if (DetectKeyPress.GetKeyState(0x6A) < 0) { UseCooldowns = !UseCooldowns; Thread.Sleep(150); } if (WoW.IsInCombat && !WoW.HasTarget) { WoW.KeyPressRelease(WoW.Keys.Tab); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { Log.Write("focus * cdremain KC >300 : " + ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300)); if (WoW.CanCast("FeignDeath") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "FeignDeath Percent") && FeignDeath && !WoW.IsSpellOnCooldown("FeignDeath") && WoW.HealthPercent != 0) { WoW.CastSpell("FeignDeath"); return; } if (WoW.CanCast("Exhilaration") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "Exhilaration Percent") && Exhilaration && !WoW.IsSpellOnCooldown("Exhilaration") && WoW.HealthPercent != 0) { WoW.CastSpell("Exhilaration"); return; } if (WoW.CanCast("AspectoftheTurtle") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Hunter", "AspectoftheTurtle Percent") && AspectoftheTurtle && !WoW.IsSpellOnCooldown("AspectoftheTurtle") && WoW.HealthPercent != 0) { WoW.CastSpell("AspectoftheTurtle"); return; } if (WoW.CanCast("Ancient Healing Potion") && WoW.HealthPercent < 20 && !WoW.IsSpellOnCooldown("Ancient Healing Potion") && WoW.HealthPercent != 0) { WoW.CastSpell("Ancient Healing Potion"); return; } if (WoW.CanCast("Silkweave Bandage") && WoW.HealthPercent < 40 && WoW.PlayerHasBuff("Turtle") && !WoW.IsMoving && !WoW.PlayerHasDebuff("Bandaged")) { WoW.CastSpell("Silkweave Bandage"); return; } if (!WoW.HasPet && WoW.CanCast("Wolf")) { WoW.CastSpell("Wolf"); return; } if (WoW.PetHealthPercent <= 0 && WoW.CanCast("Phoenix")) { WoW.CastSpell("Phoenix"); return; } if (WoW.PetHealthPercent <= 90 && !WoW.PetHasBuff("Heal Pet") && HealPet && WoW.CanCast("Revive Pet") && !WoW.IsMoving) { WoW.CastSpell("Heal Pet"); return; } if (WoW.PetHealthPercent <= 0 && WoW.IsSpellOnCooldown("Phoenix") && WoW.CanCast("Revive Pet") && !WoW.IsMoving) { WoW.CastSpell("Revive Pet"); return; } if (WoW.TargetIsCasting) { if (WoW.CanCast("Counter Shot") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 60 && !WoW.IsSpellOnCooldown("Counter Shot") && !WoW.PlayerIsChanneling && !WoW.WasLastCasted("Counter Shot")) { WoW.CastSpell("Counter Shot"); return; } } } if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("A Murder of Crows") && WoW.Talent(6) == 1 && WoW.Focus >= 25 && WoW.IsSpellInRange("Cobra Shot") && !WoW.IsSpellOnCooldown("A Murder of Crows")) { WoW.CastSpell("A Murder of Crows"); return; } if (WoW.CanCast("Volley") && !WoW.PlayerHasBuff("Volley") && WoW.Talent(6) == 3) { WoW.CastSpell("Volley"); return; } if (WoW.CanCast("Arcane Torrent") && !WoW.IsSpellOnCooldown("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Focus <= 85) { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserking"); return; } if (WoW.CanCast("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Chimaera Shot") && WoW.Focus < 90 && WoW.IsSpellOnCooldown("Dire Frenzy") && WoW.IsSpellOnCooldown("Kill Command") && WoW.CanCast("Chimaera Shot") && WoW.Talent(2) == 3) { WoW.CastSpell("Chimaera Shot"); return; } if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish")) { WoW.CastSpell("Kil'jaeden's Burning Wish"); return; } // stampede,if=buff.bloodlust.up|buff.bestial_wrath.up|cooldown.bestial_wrath.remains<=2|target.time_to_die<=14 if (WoW.CanCast("Stampede") && WoW.Talent(7) == 1 && WoW.IsSpellInRange("Cobra Shot") && ((WoW.PlayerHasBuff("Bestial Wrath")) || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2)) && !WoW.PlayerHasBuff("AspectoftheTurtle") && !WoW.IsSpellOnCooldown("Stampede")) { WoW.CastSpell("Stampede"); return; } //dire_beast,if=cooldown.bestial_wrath.remains>3 if (WoW.CanCast("Dire Beast") && WoW.Talent(2) != 2 && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Beast"); return; } //dire_frenzy,if=(cooldown.bestial_wrath.remains>6&(!equipped.the_mantle_of_command|pet.cat.buff.dire_frenzy.remains<=gcd.max*1.2)) if (WoW.CanCast("Dire Frenzy") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && (WoW.Legendary(1) != 3 || WoW.PetBuffTimeRemaining("Dire Frenzy") <= 70)) && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } //|(charges>=2&focus.deficit>=25+talent.dire_stable.enabled*12)|target.time_to_die<9 if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 95 && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 83 && WoW.Talent(2) == 2 && WoW.Talent(1) == 3 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } //aspect_of_the_wild,if=buff.bestial_wrath.up|target.time_to_die<12 if (WoW.CanCast("Aspect of the Wild") && UseCooldowns && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Aspect of the Wild"); return; } //titans_thunder,if=talent.dire_frenzy.enabled|cooldown.dire_beast.remains>=3|(buff.bestial_wrath.up&pet.dire_beast.active) if (WoW.CanCast("Titan's Thunder") && (WoW.Talent(2) == 2 || (WoW.Talent(2) != 2 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 300) || (WoW.Talent(2) != 2 && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerHasBuff("Dire Beast"))) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Titan's Thunder"); return; } //bestial_wrath if (WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Bestial Wrath"); return; } //kill_command if (WoW.CanCast("Kill Command") && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Kill Command"); return; } //cobra_shot,if=(cooldown.kill_command.remains>focus.time_to_max&cooldown.bestial_wrath.remains>focus.time_to_max)|(buff.bestial_wrath.up&focus.regen*cooldown.kill_command.remains>30)|target.time_to_die<cooldown.kill_command.remains if (WoW.CanCast("Cobra Shot") && WoW.Focus > 32 && (WoW.SpellCooldownTimeRemaining("Kill Command") > FocusTimetoMax && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > FocusTimetoMax) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && WoW.Focus > 32 && WoW.PlayerHasBuff("Bestial Wrath") && ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Cobra Shot"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Kil'jaeden's Burning Wish") && KilJaeden && !WoW.ItemOnCooldown("Kil'jaeden's Burning Wish") && !WoW.IsSpellOnCooldown("Kil'jaeden's Burning Wish")) { WoW.CastSpell("Kil'jaeden's Burning Wish"); return; } if (WoW.CanCast("Volley") && !WoW.PlayerHasBuff("Volley") && WoW.Talent(6) == 3) { WoW.CastSpell("Volley"); return; } if (WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserking"); return; } if (WoW.CanCast("Arcane Torrent") && WoW.PlayerRace == "BloodElf" && WoW.Focus <= 85) { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.CanCast("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury") && WoW.PlayerRace == "Orc") { WoW.CastSpell("Blood Fury"); return; } if (WoW.CanCast("Barrage") && WoW.Talent(6) == 2 && !WoW.IsSpellOnCooldown("Barrage") && WoW.IsSpellInRange("Cobra Shot") && WoW.Focus >= 60) { WoW.CastSpell("Barrage"); return; } if (WoW.CanCast("Chimaera Shot") && WoW.Focus < 90 && WoW.IsSpellOnCooldown("Dire Frenzy") && WoW.IsSpellOnCooldown("Kill Command") && WoW.CanCast("Chimaera Shot") && WoW.Talent(2) == 3) { WoW.CastSpell("Chimaera Shot"); return; } if (WoW.CanCast("A Murder of Crows") && WoW.Talent(6) == 1 && WoW.Focus >= 46 - FocusRegen && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot") && !WoW.IsSpellOnCooldown("A Murder of Crows")) { WoW.CastSpell("A Murder of Crows"); return; } if (WoW.CanCast("Multi-Shot") && WoW.Focus >= 40 && !WoW.PetHasBuff("Beast Cleave") && WoW.IsSpellInRange("Multi-Shot")) { WoW.CastSpell("Multi-Shot"); return; } if (WoW.CanCast("Multi-Shot") && WoW.Focus >= 40 && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") <= 70 && WoW.IsSpellInRange("Multi-Shot")) { WoW.CastSpell("Multi-Shot"); return; } // stampede,if=buff.bloodlust.up|buff.bestial_wrath.up|cooldown.bestial_wrath.remains<=2|target.time_to_die<=14 if (WoW.CanCast("Stampede") && WoW.Talent(7) == 1 && WoW.IsSpellInRange("Cobra Shot") && ((WoW.PlayerHasBuff("Bestial Wrath")) || (WoW.SpellCooldownTimeRemaining("Bestial Wrath") <= 2)) && !WoW.PlayerHasBuff("AspectoftheTurtle") && !WoW.IsSpellOnCooldown("Stampede")) { WoW.CastSpell("Stampede"); return; } //dire_beast,if=cooldown.bestial_wrath.remains>3 if (WoW.CanCast("Dire Beast") && WoW.Talent(2) != 2 && !WoW.IsSpellOnCooldown("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Beast"); return; } //dire_frenzy,if=(cooldown.bestial_wrath.remains>6&(!equipped.the_mantle_of_command|pet.cat.buff.dire_frenzy.remains<=gcd.max*1.2)) if (WoW.CanCast("Dire Frenzy") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && (WoW.Legendary(1) != 3 || WoW.PetBuffTimeRemaining("Dire Frenzy") <= 70)) && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } //|(charges>=2&focus.deficit>=25+talent.dire_stable.enabled*12)|target.time_to_die<9 if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 95 && WoW.Talent(2) == 2 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } if (WoW.CanCast("Dire Frenzy") && WoW.PlayerSpellCharges("Dire Frenzy") >= 2 && WoW.Focus <= 83 && WoW.Talent(2) == 2 && WoW.Talent(1) == 3 && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Dire Frenzy"); return; } //aspect_of_the_wild,if=buff.bestial_wrath.up|target.time_to_die<12 if (WoW.CanCast("Aspect of the Wild") && UseCooldowns && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Aspect of the Wild"); return; } //titans_thunder,if=talent.dire_frenzy.enabled|cooldown.dire_beast.remains>=3|(buff.bestial_wrath.up&pet.dire_beast.active) if (WoW.CanCast("Titan's Thunder") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && (WoW.Talent(2) == 2 || (WoW.Talent(2) != 2 && WoW.SpellCooldownTimeRemaining("Dire Beast") > 300) || (WoW.Talent(2) != 2 && WoW.PlayerHasBuff("Bestial Wrath") && WoW.PlayerHasBuff("Dire Beast"))) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Titan's Thunder"); return; } //bestial_wrath if (WoW.CanCast("Bestial Wrath") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Bestial Wrath"); return; } //kill_command if (WoW.CanCast("Kill Command") && WoW.Focus >= 70 - FocusRegen && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Kill Command"); return; } //cobra_shot,if=(cooldown.kill_command.remains>focus.time_to_max&cooldown.bestial_wrath.remains>focus.time_to_max)|(buff.bestial_wrath.up&focus.regen*cooldown.kill_command.remains>30)|target.time_to_die<cooldown.kill_command.remains if (WoW.CanCast("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.Focus > 72 - FocusRegen && (WoW.SpellCooldownTimeRemaining("Kill Command") > FocusTimetoMax && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > FocusTimetoMax) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Cobra Shot"); return; } if (WoW.CanCast("Cobra Shot") && WoW.PetHasBuff("Beast Cleave") && WoW.PetBuffTimeRemaining("Beast Cleave") > GCD && WoW.Focus > 72 - FocusRegen && WoW.PlayerHasBuff("Bestial Wrath") && ((FocusRegen * WoW.SpellCooldownTimeRemaining("Kill Command")) > 300) && WoW.IsSpellInRange("Cobra Shot")) { WoW.CastSpell("Cobra Shot"); return; } } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.CanCast("Summon Water Elemental") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.HasPet) { WoW.CastSpell("Summon Water Elemental"); return; } if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Invisibility")) { //Movement Control if (WoW.CanCast("Ice Floes") && WoW.IsMoving && !WoW.PlayerHasBuff("Ice Floes")) { WoW.CastSpell("Ice Floes"); } //Insta-Cast Flurry on Proc and ice lance for shatter. if (WoW.CanCast("Flurry") && WoW.PlayerHasBuff("Brain Freeze")) { WoW.CastSpell("Flurry"); } if (WoW.CanCast("Ice Lance") && WoW.WasLastCasted("Flurry") && WoW.PlayerHasBuff("Icy Veins")) { WoW.CastSpell("Ice Lance"); } //RoP Control if (WoW.CanCast("Rune of Power") && !WoW.PlayerHasBuff("Rune of Power") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 120) { WoW.CastSpell("Rune of Power"); return; } //Ray of Frost control if (WoW.CanCast("Ray of Frost") && WoW.PlayerHasBuff("Rune of Power") && WoW.PlayerSpellCharges("Rune of Power") == 0 && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 60) { WoW.CastSpell("Ray of Frost"); } // FoF Creation if (WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 30 && !WoW.WasLastCasted("Flurry")) { if (WoW.CanCast("Frozen Orb") && !WoW.IsSpellOnCooldown("Frozen Orb") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 60) { WoW.CastSpell("Frozen Orb"); } if (WoW.CanCast("Frozen Touch") && WoW.PlayerBuffStacks("Fingers of Frost") <= 1 && WoW.IsSpellOnCooldown("Frozen Orb") && !WoW.WasLastCasted("Frozen Orb")) { WoW.CastSpell("Frozen Touch"); } if (WoW.CanCast("Ebonbolt") && !WoW.PlayerHasBuff("Fingers of Frost") && !WoW.PlayerHasBuff("Brain Freeze") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 45) { WoW.CastSpell("Ebonbolt"); return; } //Waterjet on cooldown within parameters if (WoW.CanCast("Water Jet") && WoW.PlayerBuffStacks("Fingers of Frost") <= 1 && !WoW.WasLastCasted("Frozen Touch") && !WoW.WasLastCasted("Frozen Orb") && WoW.IsSpellOnCooldown("Frozen Orb") && WoW.IsSpellOnCooldown("Frozen Touch")) { WoW.CastSpell("Water Jet"); } if (WoW.CanCast("Frostbolt") && WoW.TargetHasDebuff("Water Jet")) { WoW.CastSpell("Frostbolt"); return; } } //Ice Lance Control if (WoW.CanCast("Ice Lance") && WoW.WasLastCasted("Frostbolt") && WoW.PlayerHasBuff("Chain Reaction") && WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.PlayerHasBuff("Fingers of Frost") && WoW.PlayerBuffStacks("Fingers of Frost") >= 2) { WoW.CastSpell("Ice Lance"); } if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Fingers of Frost") == 3) { WoW.CastSpell("Ice Lance"); } if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Fingers of Frost") >= 1 && WoW.WasLastCasted("Ice Lance")) { WoW.CastSpell("Ice Lance"); } if (WoW.CanCast("Ice Lance") && !WoW.PlayerHasBuff("Brain Freeze") && WoW.WasLastCasted("Flurry")) { WoW.CastSpell("Ice Lance"); } if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.PlayerHasBuff("Fingers of Frost") && WoW.PlayerBuffStacks("Fingers of Frost") >= 1) { WoW.CastSpell("Ice Lance"); return; } //Frostbolt Control if (!WoW.PlayerHasBuff("Brain Freeze") && !WoW.WasLastCasted("Flurry")) { if (WoW.CanCast("Frostbolt") && !WoW.PlayerHasBuff("Fingers of Frost") && !WoW.WasLastCasted("Frostbolt")) { WoW.CastSpell("Frostbolt"); return; } if (WoW.CanCast("Frostbolt") && WoW.PlayerBuffStacks("Chain Reaction") <= 2 && !WoW.WasLastCasted("Frostbolt")) { WoW.CastSpell("Frostbolt"); return; } if (WoW.CanCast("Frostbolt") && WoW.PlayerHasBuff("Chain Reaction") && WoW.PlayerBuffStacks("Chain Reaction") == 3 && WoW.PlayerBuffTimeRemaining("Chain Reaction") <= 2) { WoW.CastSpell("Frostbolt"); return; } } //Frost Bomb - i dont use //if ((WoW.CanCast("Frost Bomb")&&WoW.PlayerHasBuff("Fingers of Frost")&&WoW.PlayerBuffStacks("Fingers of Frost") == 2)&&!WoW.TargetHasDebuff("Frost Bomb")&&!WoW.WasLastCasted("Ice Lance")&&!WoW.WasLastCasted("Rune of Power")) // { // WoW.CastSpell("Frost Bomb"); // return; // } } } if (combatRoutine.Type == RotationType.AOE) { if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } } }
public override void Pulse() { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && WoW.TargetIsVisible && !WoW.IsMounted) { if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave) { if (WoW.CanCast("UnendingResolve") && WoW.HealthPercent <= 20 && WoW.HealthPercent != 0) { WoW.CastSpell("UnendingResolve"); return; } if (WoW.CanCast("Healthstone") && WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.HealthPercent <= 30 && WoW.HealthPercent != 0) { WoW.CastSpell("Healthstone"); return; } if (WoW.CanCast("DoomGuard") && !WoW.IsSpellOnCooldown("DoomGuard") && (WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || WoW.Talent(4) != 3) && UseCooldowns) { WoW.CastSpell("DoomGuard"); return; } if (WoW.CanCast("Soul Harvest") && !WoW.IsMoving && UseCooldowns && !WoW.IsSpellOnCooldown("Soul Harvest") && WoW.CurrentSoulShards >= 4 && WoW.Talent(4) == 3) { WoW.CastSpell("Soul Harvest"); return; } if (WoW.CanCast("Berserk") && UseCooldowns && !WoW.IsSpellOnCooldown("Berserk") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserk"); return; } if (WoW.CanCast("Havoc") && !WoW.IsSpellOnCooldown("Havoc") && Control.ModifierKeys == Keys.Alt) // you will need a mouseover macro { WoW.CastSpell("Havoc"); return; } if (!WoW.IsMoving) { if (WoW.CanCast("Life Tap") && !WoW.PlayerHasBuff("Life Tap") && WoW.HealthPercent >= 40 && WoW.Talent(2) == 3) { WoW.CastSpell("Life Tap"); return; } if ((!WoW.TargetHasDebuff("Immolate") || WoW.TargetDebuffTimeRemaining("Immolate") <= 420) && !WoW.WasLastCasted("Immolate") && WoW.CanCast("Immolate")) { WoW.CastSpell("Immolate"); return; } if (WoW.CanCast("DimRift") && WoW.PlayerSpellCharges("DimRift") == 3) { WoW.CastSpell("DimRift"); return; } if (WoW.CanCast("Channel Demonfire") && !WoW.IsSpellOnCooldown("Channel Demonfire") && WoW.TargetHasDebuff("Immolate") && WoW.TargetDebuffTimeRemaining("Immolate") >= 500 && WoW.Talent(7) == 2) { WoW.CastSpell("Channel Demonfire"); return; } if (WoW.TargetDebuffTimeRemaining("Immolate") >= 1000 && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } if (WoW.TargetDebuffTimeRemaining("Immolate") >= 1000 && WoW.PlayerSpellCharges("Conflagrate") == 1 && WoW.WasLastCasted("Conflagrate") && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } if (WoW.PlayerHasBuff("Conflagrate") && WoW.TargetHasDebuff("ChaosBolt") && WoW.CanCast("Conflagrate") && WoW.CurrentSoulShards <= 4 && WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } if (WoW.CanCast("Conflagrate") && WoW.PlayerSpellCharges("Conflagrate") == 2 && !WoW.WasLastCasted("Immolate") && WoW.CurrentSoulShards <= 4) { WoW.CastSpell("Conflagrate"); return; } if (WoW.CanCast("ServiceImp") && WoW.CurrentSoulShards >= 1 && (UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns)) { WoW.CastSpell("ServiceImp"); return; } if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards > 3 && (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") >= 500 && WoW.Talent(4) == 3 || UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns)) { WoW.CastSpell("ChaosBolt"); return; } if (WoW.CanCast("DimRift") && !WoW.IsSpellOnCooldown("DimRift") && WoW.PlayerSpellCharges("DimRift") <= 2) { WoW.CastSpell("DimRift"); return; } if (WoW.CanCast("ChaosBolt") && WoW.CurrentSoulShards >= 2 && (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") >= 500 && WoW.Talent(4) == 3 || UseCooldowns && WoW.PlayerHasBuff("Soul Harvest") && WoW.Talent(4) == 3 || !UseCooldowns || WoW.Talent(4) != 3 && UseCooldowns)) { WoW.CastSpell("ChaosBolt"); return; } if (WoW.CanCast("Incinerate") && WoW.CurrentSoulShards <= 1 || (UseCooldowns && WoW.SpellCooldownTimeRemaining("Soul Harvest") <= 500 && WoW.CurrentSoulShards < 4 && WoW.Talent(4) == 3)) { WoW.CastSpell("Incinerate"); return; } if (WoW.CanCast("Incinerate") && WoW.TargetHasDebuff("ChaosBolt") && WoW.TargetDebuffTimeRemaining("ChaosBolt") >= 200 && WoW.CurrentSoulShards <= 3) { WoW.CastSpell("Incinerate"); return; } } if (WoW.IsMoving) { if (WoW.CanCast("DimRift")) { WoW.CastSpell("DimRift"); return; } if (WoW.CanCast("Conflagrate")) { WoW.CastSpell("Conflagrate"); return; } } } } }
/// <summary> /// Get whether we can cast spells based on what the player is currently doing. /// </summary> /// <param name="ignoreMovement">Can we ignore movement</param> /// <param name="ignoreChanneling"></param> /// <returns>True if we can not currently cast another spell.</returns> private bool isPlayerBusy(bool ignoreMovement = false, bool ignoreChanneling = true) { var canCast = WoW.PlayerIsCasting || (WoW.PlayerIsChanneling && !(ignoreChanneling && !WoW.WasLastCasted(VOID_TORRENT))) || (WoW.IsMoving && ignoreMovement); return(canCast); }
public override void Pulse() { //Combat Time if (CombatTime.IsRunning && !WoW.IsInCombat) { CombatTime.Reset(); } if (!CombatTime.IsRunning && WoW.IsInCombat) { CombatTime.Start(); } if (!WoW.PlayerHasBuff("HitCombo")) { HitCombo = ""; } if (!WoW.IsInCombat || (!WoW.TargetHasDebuff("TouchOfDeath") && !WoW.PlayerHasBuff("Serenity")) || (IsOpenerDone && !Serenity)) { OpenerOrder = 1; } var EnergyPct = WoW.Energy / EnergyMax * 100f; // Single Target Rotation if (combatRoutine.Type == RotationType.SingleTarget) { //Log.Write($"[HitCombo] '{HitCombo}'"); //Stop Casting CJL if (HitCombo == "CracklingJadeLightning" && WoW.PlayerIsChanneling) { WoW.CastSpell("StopCasting"); return; } //Cooldowns if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { //Touch Of Death if (WoW.CanCast("TouchOfDeath") && WoW.IsSpellInRange("TigerPalm") && !GaleBurst && UseCooldowns) { WoW.CastSpell("TouchOfDeath"); HitCombo = "TouchOfDeath"; return; } //Touch Of Death (Serenity talent) [Gale] if (WoW.CanCast("TouchOfDeath") && WoW.IsSpellInRange("TigerPalm") && WoW.SpellCooldownTimeRemaining("Serenity") < 2 && WoW.SpellCooldownTimeRemaining("RisingSunKick") < 2 && WoW.SpellCooldownTimeRemaining("FistsOfFury") < 8 && WoW.SpellCooldownTimeRemaining("StrikeOfTheWindlord") <= 4 && Serenity && GaleBurst && WoW.CurrentChi >= 2 && UseCooldowns) { WoW.CastSpell("TouchOfDeath"); HitCombo = "TouchOfDeath"; return; } //Touch Of Death (WDP talent) [Gale] if (WoW.CanCast("TouchOfDeath") && WoW.IsSpellInRange("TigerPalm") && WoW.SpellCooldownTimeRemaining("RisingSunKick") < 7 && WoW.SpellCooldownTimeRemaining("FistsOfFury") <= 4 && WoW.SpellCooldownTimeRemaining("StrikeOfTheWindlord") < 8 && !Serenity && GaleBurst && WoW.CurrentChi >= 2 && UseCooldowns) { WoW.CastSpell("TouchOfDeath"); HitCombo = "TouchOfDeath"; return; } //Serenity if (WoW.CanCast("Serenity") && WoW.IsSpellInRange("TigerPalm") && (WoW.IsSpellOnCooldown("TouchOfDeath") || WoW.TargetHasDebuff("TouchOfDeath")) && WoW.SpellCooldownTimeRemaining("FistsOfFury") < 15 && WoW.SpellCooldownTimeRemaining("StrikeOfTheWindlord") < 13 && !WoW.IsSpellOnCooldown("RisingSunKick") && Serenity && UseCooldowns) { WoW.CastSpell("Serenity"); return; } //SEF (Opener not done) if (WoW.CanCast("SEF") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2 && !IsOpenerDone && !WoW.PlayerHasBuff("SEF") && !Serenity && UseCooldowns) { WoW.CastSpell("SEF"); return; } //SEF if (WoW.CanCast("SEF") && WoW.IsSpellInRange("TigerPalm") && IsOpenerDone && (WoW.IsSpellOnCooldown("TouchOfDeath") || WoW.TargetHasDebuff("TouchOfDeath")) && WoW.SpellCooldownTimeRemaining("FistsOfFury") <= 6 && WoW.SpellCooldownTimeRemaining("StrikeOfTheWindlord") <= 14 && WoW.SpellCooldownTimeRemaining("RisingSunKick") <= 6 && !WoW.PlayerHasBuff("SEF") && !Serenity && (!WoW.IsSpellOnCooldown("EnergizingElixir") || WoW.PlayerSpellCharges("SEF") == 2 || WoW.TargetHasDebuff("TouchOfDeath")) && UseCooldowns) { WoW.CastSpell("SEF"); return; } //Energizing Elixir if (WoW.CanCast("EnergizingElixir") && WoW.IsSpellInRange("TigerPalm") && IsOpenerDone && WoW.PlayerHasBuff("SEF")) { WoW.CastSpell("EnergizingElixir"); return; } //Energizing Elixir if (WoW.CanCast("EnergizingElixir") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy < EnergyMax && (IsOpenerDone || !Serenity) && WoW.CurrentChi <= 1 && (!WoW.IsSpellOnCooldown("StrikeOfTheWindlord") || !WoW.IsSpellOnCooldown("RisingSunKick"))) { WoW.CastSpell("EnergizingElixir"); return; } } //Serenity Opener (With Touch of Death) if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Serenity") && WoW.TargetHasDebuff("TouchOfDeath")) { //Rising Sun Kick if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 1) { WoW.CastSpell("RisingSunKick"); HitCombo = "RisingSunKick"; OpenerOrder = 2; return; } //Strike Of The Windlord if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 2) { WoW.CastSpell("StrikeOfTheWindlord"); HitCombo = "StrikeOfTheWindlord"; OpenerOrder = 3; return; } //Fists of Fury if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 3) { WoW.CastSpell("FistsOfFury"); HitCombo = "FistsOfFury"; OpenerOrder = 4; return; } //Rising Sun Kick if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 4) { WoW.CastSpell("RisingSunKick"); HitCombo = "RisingSunKick"; OpenerOrder = 5; return; } //Spinning Crane Kick if (WoW.CanCast("SpinningCraneKick") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 5) { WoW.CastSpell("SpinningCraneKick"); HitCombo = "SpinningCraneKick"; OpenerOrder = 6; return; } //Blackout Kick if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "BlackoutKick" && OpenerOrder == 6) { WoW.CastSpell("BlackoutKick"); HitCombo = "BlackoutKick"; return; } } //WDP Opener if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("SEF") && WoW.TargetHasDebuff("TouchOfDeath") && !IsOpenerDone) { //Rising Sun Kick if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 1) { WoW.CastSpell("RisingSunKick"); HitCombo = "RisingSunKick"; OpenerOrder = 2; return; } //Energizing Elixir if (WoW.CanCast("EnergizingElixir") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 2) { WoW.CastSpell("EnergizingElixir"); OpenerOrder = 3; return; } //Fists of Fury if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 3) { WoW.CastSpell("FistsOfFury"); HitCombo = "FistsOfFury"; OpenerOrder = 4; return; } //Strike Of The Windlord if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm") && OpenerOrder == 4) { WoW.CastSpell("StrikeOfTheWindlord"); HitCombo = "StrikeOfTheWindlord"; OpenerOrder = 5; return; } //Tiger Palm if (WoW.CanCast("TigerPalm") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "TigerPalm" && OpenerOrder == 5) { WoW.CastSpell("TigerPalm"); HitCombo = "TigerPalm"; OpenerOrder = 6; return; } //Whirling Dragon Punch if (WoW.CanCast("WhirlingDragonPunch") && WoW.IsSpellInRange("TigerPalm") && WoW.IsSpellOnCooldown("FistsOfFury") && WoW.IsSpellOnCooldown("RisingSunKick") && OpenerOrder == 6) { WoW.CastSpell("WhirlingDragonPunch"); HitCombo = "WhirlingDragonPunch"; IsOpenerDone = true; return; } } //Serenity Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Serenity") && !WoW.TargetHasDebuff("TouchOfDeath")) { //Strike Of The Windlord if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm")) { WoW.CastSpell("StrikeOfTheWindlord"); HitCombo = "StrikeOfTheWindlord"; WasStrikeOfTheWindlordCasted = true; return; } //Rising Sun Kick if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm")) { WoW.CastSpell("RisingSunKick"); HitCombo = "RisingSunKick"; return; } //Fists of Fury if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && WasStrikeOfTheWindlordCasted && WoW.PlayerBuffTimeRemaining("Serenity") <= 2) { WoW.CastSpell("FistsOfFury"); HitCombo = "FistsOfFury"; WasStrikeOfTheWindlordCasted = false; return; } //Spinning Crane Kick if (WoW.CanCast("SpinningCraneKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "SpinningCraneKick" && (HitCombo == "BlackoutKick" || OpenerOrder == 5)) { WoW.CastSpell("SpinningCraneKick"); HitCombo = "SpinningCraneKick"; return; } //Blackout Kick if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "BlackoutKick") { WoW.CastSpell("BlackoutKick"); HitCombo = "BlackoutKick"; return; } } // Normal Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Serenity") && (!WoW.TargetHasDebuff("TouchOfDeath") || !Serenity)) { //Fists of Fury if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && (WoW.CurrentChi >= 3 || (Katsuo && WoW.CurrentChi >= 1)) && !WoW.WasLastCasted("EnergizingElixir")) { WoW.CastSpell("FistsOfFury"); HitCombo = "FistsOfFury"; return; } //Strike Of The Windlord if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2) { WoW.CastSpell("StrikeOfTheWindlord"); HitCombo = "StrikeOfTheWindlord"; return; } //Tiger Palm (if <4 Chi and about to cap energy) if (WoW.CanCast("TigerPalm") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 50 && EnergyPct > 90 && !WoW.WasLastCasted("EnergizingElixir") && WoW.CurrentChi < 4 && HitCombo != "TigerPalm") { WoW.CastSpell("TigerPalm"); HitCombo = "TigerPalm"; return; } //Rising Sun Kick if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2) { WoW.CastSpell("RisingSunKick"); HitCombo = "RisingSunKick"; return; } //Whirling Dragon Punch if (WoW.CanCast("WhirlingDragonPunch") && WoW.IsSpellInRange("TigerPalm") && WoW.IsSpellOnCooldown("FistsOfFury") && WoW.IsSpellOnCooldown("RisingSunKick") && !Serenity) { WoW.CastSpell("WhirlingDragonPunch"); HitCombo = "WhirlingDragonPunch"; return; } //Chi Wave if (WoW.CanCast("ChiWave") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy < 50 && WoW.CurrentChi < 5 && !WoW.PlayerHasBuff("SEF")) { WoW.CastSpell("ChiWave"); HitCombo = "ChiWave"; return; } //Blackout Kick if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && (WoW.CurrentChi > 1 || WoW.PlayerHasBuff("BlackoutKick!")) && HitCombo != "BlackoutKick") { WoW.CastSpell("BlackoutKick"); HitCombo = "BlackoutKick"; return; } //Tiger Palm if (WoW.CanCast("TigerPalm") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 50 && HitCombo != "TigerPalm") { WoW.CastSpell("TigerPalm"); HitCombo = "TigerPalm"; return; } //CracklingJadeLightning (only to counter the Tiger Palm issue) if (WoW.CanCast("CracklingJadeLightning") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 20 && HitCombo == "TigerPalm" && WoW.CurrentChi == 0) { WoW.CastSpell("CracklingJadeLightning"); HitCombo = "CracklingJadeLightning"; return; } } } // AoE Rotation if (combatRoutine.Type == RotationType.AOE) { if (HitCombo == "CracklingJadeLightning" && WoW.PlayerIsChanneling) { WoW.CastSpell("StopCasting"); return; } //Cooldowns if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { //Energizing Elixir if (WoW.CanCast("EnergizingElixir") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy < EnergyMax && WoW.CurrentChi <= 1 && (!WoW.IsSpellOnCooldown("StrikeOfTheWindlord") || !WoW.IsSpellOnCooldown("RisingSunKick"))) { WoW.CastSpell("EnergizingElixir"); return; } } //Serenity Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerHasBuff("Serenity")) { //Strike Of The Windlord if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm")) { WoW.CastSpell("StrikeOfTheWindlord"); HitCombo = "StrikeOfTheWindlord"; WasStrikeOfTheWindlordCasted = true; return; } //Rising Sun Kick if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm")) { WoW.CastSpell("RisingSunKick"); HitCombo = "RisingSunKick"; return; } //Fists of Fury if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && WasStrikeOfTheWindlordCasted && WoW.PlayerBuffTimeRemaining("Serenity") <= 2) { WoW.CastSpell("FistsOfFury"); HitCombo = "FistsOfFury"; WasStrikeOfTheWindlordCasted = false; return; } //Spinning Crane Kick if (WoW.CanCast("SpinningCraneKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "SpinningCraneKick" && (HitCombo == "BlackoutKick" || OpenerOrder == 5)) { WoW.CastSpell("SpinningCraneKick"); HitCombo = "SpinningCraneKick"; return; } //Blackout Kick if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "BlackoutKick") { WoW.CastSpell("BlackoutKick"); HitCombo = "BlackoutKick"; return; } } // Normal Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Serenity") && (!WoW.TargetHasDebuff("TouchOfDeath") || !Serenity)) { //Fists of Fury if (WoW.CanCast("FistsOfFury") && WoW.IsSpellInRange("TigerPalm") && (WoW.CurrentChi >= 3 || (Katsuo && WoW.CurrentChi >= 1)) && !WoW.WasLastCasted("EnergizingElixir")) { WoW.CastSpell("FistsOfFury"); HitCombo = "FistsOfFury"; return; } //Whirling Dragon Punch if (WoW.CanCast("WhirlingDragonPunch") && WoW.IsSpellInRange("TigerPalm") && WoW.IsSpellOnCooldown("FistsOfFury") && WoW.IsSpellOnCooldown("RisingSunKick") && !Serenity) { WoW.CastSpell("WhirlingDragonPunch"); HitCombo = "WhirlingDragonPunch"; return; } //Strike Of The Windlord if (WoW.CanCast("StrikeOfTheWindlord") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2) { WoW.CastSpell("StrikeOfTheWindlord"); HitCombo = "StrikeOfTheWindlord"; return; } //Rising Sun Kick if (WoW.CanCast("RisingSunKick") && WoW.IsSpellInRange("TigerPalm") && WoW.CurrentChi >= 2 && !Serenity && WoW.SpellCooldownTimeRemaining("WhirlingDragonPunch") < gcd * 2 && WoW.IsSpellOnCooldown("FistsOfFury")) { WoW.CastSpell("RisingSunKick"); HitCombo = "RisingSunKick"; return; } //Spinning Crane Kick if (WoW.CanCast("SpinningCraneKick") && WoW.IsSpellInRange("TigerPalm") && HitCombo != "SpinningCraneKick" && WoW.CurrentChi >= 3) { WoW.CastSpell("SpinningCraneKick"); HitCombo = "SpinningCraneKick"; return; } //Chi Wave if (WoW.CanCast("ChiWave") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy < 50 && WoW.CurrentChi < 5 && !WoW.PlayerHasBuff("SEF") && HitCombo == "TigerPalm") { WoW.CastSpell("ChiWave"); HitCombo = "ChiWave"; return; } //Blackout Kick if (WoW.CanCast("BlackoutKick") && WoW.IsSpellInRange("TigerPalm") && (WoW.CurrentChi > 1 || WoW.PlayerHasBuff("BlackoutKick!")) && HitCombo != "BlackoutKick" && (HitCombo == "TigerPalm" || !WoW.TargetHasDebuff("MotC"))) { WoW.CastSpell("BlackoutKick"); HitCombo = "BlackoutKick"; return; } //Tiger Palm if (WoW.CanCast("TigerPalm") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 50 && HitCombo != "TigerPalm") { WoW.CastSpell("TigerPalm"); HitCombo = "TigerPalm"; return; } //CracklingJadeLightning (only to counter the Tiger Palm issue) if (WoW.CanCast("CracklingJadeLightning") && WoW.IsSpellInRange("TigerPalm") && WoW.Energy >= 20 && HitCombo == "TigerPalm" && WoW.CurrentChi == 0) { WoW.CastSpell("CracklingJadeLightning"); HitCombo = "CracklingJadeLightning"; } } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.CanCast("Summon Water Elemental") && WoW.Talent(1) != 2 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.HasPet) { WoW.CastSpell("Summon Water Elemental"); return; } if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Invisibility")) { //Movement Control //Insta-Cast Flurry on Proc and ice lance for shatter. if (WoW.CanCast("Flurry") && WoW.PlayerHasBuff("Brain Freeze")) { WoW.CastSpell("Flurry"); } if (WoW.CanCast("Ice Lance") && WoW.WasLastCasted("Flurry") && WoW.PlayerHasBuff("Icy Veins")) { WoW.CastSpell("Ice Lance"); } // FoF Creation if (WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 30 && !WoW.WasLastCasted("Flurry")) { if (WoW.CanCast("Frozen Orb") && !WoW.IsSpellOnCooldown("Frozen Orb") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 60) { WoW.CastSpell("Frozen Orb"); } if (WoW.CanCast("Blizzard") && WoW.PlayerHasBuff("Free Blizzard")) { WoW.CastSpell("Blizzard"); return; } if (WoW.CanCast("Frozen Touch") && !WoW.IsMoving && WoW.PlayerBuffStacks("Fingers of Frost") <= 1 && WoW.IsSpellOnCooldown("Frozen Orb") && !WoW.WasLastCasted("Frozen Orb")) { WoW.CastSpell("Frozen Touch"); } if (WoW.CanCast("Ebonbolt") && !WoW.IsMoving && !WoW.PlayerHasBuff("Fingers of Frost") && !WoW.PlayerHasBuff("Brain Freeze") && WoW.SpellCooldownTimeRemaining("Icy Veins") >= 45) { WoW.CastSpell("Ebonbolt"); return; } } //Ice Lance Control if (WoW.CanCast("Ice Lance") && WoW.WasLastCasted("Frostbolt") && WoW.PlayerHasBuff("Chain Reaction") && WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.PlayerHasBuff("Fingers of Frost") && WoW.PlayerBuffStacks("Fingers of Frost") >= 2) { WoW.CastSpell("Ice Lance"); } if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Fingers of Frost") == 3) { WoW.CastSpell("Ice Lance"); } if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Fingers of Frost") >= 1 && WoW.WasLastCasted("Ice Lance")) { WoW.CastSpell("Ice Lance"); } if (WoW.CanCast("Ice Lance") && !WoW.PlayerHasBuff("Brain Freeze") && WoW.WasLastCasted("Flurry")) { WoW.CastSpell("Ice Lance"); } if (WoW.CanCast("Ice Lance") && WoW.PlayerBuffStacks("Chain Reaction") >= 1 && WoW.PlayerHasBuff("Fingers of Frost") && WoW.PlayerBuffStacks("Fingers of Frost") >= 1) { WoW.CastSpell("Ice Lance"); return; } //Frostbolt Control if (!WoW.PlayerHasBuff("Brain Freeze") && !WoW.WasLastCasted("Flurry") && !WoW.IsMoving) { if (WoW.CanCast("Frostbolt") && !WoW.PlayerHasBuff("Fingers of Frost") && !WoW.WasLastCasted("Frostbolt")) { WoW.CastSpell("Frostbolt"); return; } if (WoW.CanCast("Frostbolt") && WoW.PlayerBuffStacks("Chain Reaction") <= 2 && !WoW.WasLastCasted("Frostbolt")) { WoW.CastSpell("Frostbolt"); return; } if (WoW.CanCast("Frostbolt") && WoW.PlayerHasBuff("Chain Reaction") && WoW.PlayerBuffStacks("Chain Reaction") == 3 && WoW.PlayerBuffTimeRemaining("Chain Reaction") <= 2) { WoW.CastSpell("Frostbolt"); return; } } if (!WoW.PlayerHasBuff("Brain Freeze") && !WoW.WasLastCasted("Flurry") && WoW.IsMoving) { if (WoW.CanCast("Ice Lance")) { WoW.CastSpell("Ice Lance"); } } } } if (combatRoutine.Type == RotationType.AOE) { if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } } }
/* public static List<DateTime> imps = new List<DateTime>(); * * public static bool ImpCounting() * { * if (!WoW.IsInCombat && imps.Any()) * { * imps.Clear(); // to clear list when out of combat * return true; * } * * if (WoW.WasLastCasted("HoG")) * { * imps.Add(DateTime.UtcNow); // to add new entry * return true; * } * return true; * } * * public static int CountImpPacks * { * get * { * if (imps.Any()) * { * return imps.Count(i => i.AddSeconds(10) > DateTime.UtcNow); * } * return 0; * } * } */ /* imps.Count(i => i.AddSeconds(10) > DateTime.UtcNow); */ 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.TargetHasBuff("Focusing")) return; */ if (WoW.PlayerHasBuff("Mount")) { return; } if (combatRoutine.Type == RotationType.SingleTarget) { if (CombatWatch.IsRunning && !WoW.IsInCombat) { CombatWatch.Reset(); } if (!CombatWatch.IsRunning && WoW.IsInCombat) { CombatWatch.Start(); } /* if (CombatWatch.IsRunning && CombatWatch.ElapsedMilliseconds > 5000) * { * Log.Write ("CombatWatch > 5 seconds"); * } */ /* if (WoW.IsInCombat && WoW.HealthPercent<30 && WoW.CanCast("Healthstone") && WoW.PlayerSpellCharges("Healthstone") >= 1 && !WoW.IsSpellOnCooldown("Healthstone")) * { * WoW.CastSpellByName("Healthstone"); * return; * } */ PetBuffStatus(); /* Log.Write ("Pets need buff: " + lastpetstatus); */ /* impnumber = WoW.GetWildImpsCount(); * dreadnumber = WoW.GetDreadstalkersCount(); */ /* Log.Write ("Wild imps: " + WoW.GetWildImpsCount); * Log.Write ("Dreadretards: " + WoW.GetDreadstalkersCount); */ if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.CanCast("Doomguard") && WoW.IsSpellInRange("Doomguard") && (WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("TimeWarp")) && WoW.CurrentSoulShards >= 1 && !WoW.IsSpellOnCooldown("Doomguard")) { WoW.CastSpell("Doomguard"); return; } if (WoW.IsMoving) /* What to do if we are MOVING */ { if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Shadowflame") == 1 && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < 3 && WoW.CanCast("Shadowflame") && WoW.IsSpellInRange("Shadowflame")) { WoW.CastSpell("Shadowflame"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && WoW.CanCast("Wrathstorm") && CombatWatch.ElapsedMilliseconds > 2000) { WoW.CastSpell("Wrathstorm"); } if (!WoW.IsInCombat && WoW.Mana < 80 && WoW.HealthPercent > 75 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.IsInCombat && WoW.Mana < 30 && WoW.HealthPercent > 65 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.CanCast("Shadowflame") && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerSpellCharges("Shadowflame") == 2 && WoW.IsSpellInRange("Shadowflame")) { WoW.CastSpell("Shadowflame"); return; } if (WoW.IsInCombat && WoW.CanCast("Demonwrath") && WoW.HasPet && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Demonwrath"); return; } } if (!WoW.IsMoving) /* What to do if we are NOT MOVING */ { /* double dur = WoW.TargetDebuffTimeRemaining("Shadowflame"); * Log.Write(System.Convert.ToString(dur), Color.Red); */ if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Shadowflame") == 1 && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < 3 && WoW.IsSpellInRange("Shadowflame") && WoW.CanCast("Shadowflame")) { WoW.CastSpell("Shadowflame"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && WoW.CanCast("Wrathstorm") && CombatWatch.ElapsedMilliseconds > 2000) { WoW.CastSpell("Wrathstorm"); } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.IsSpellOnCooldown("Dreadstalkers") && WoW.CurrentSoulShards >= 2 && WoW.IsSpellInRange("Dreadstalkers") && WoW.CanCast("Dreadstalkers")) { WoW.CastSpell("Dreadstalkers"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("HoG") && WoW.CanCast("HoG")) { WoW.CastSpell("HoG"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && WoW.CurrentSoulShards >= 3 && WoW.IsSpellInRange("HoG") && WoW.WasLastCasted("Dreadstalkers") && WoW.CanCast("HoG")) { WoW.CastSpell("HoG"); return; } if (WoW.IsInCombat && !WoW.PlayerIsCasting && lastpetstatus && !WoW.WasLastCasted("DemonicEmpowerment") && WoW.CanCast("DemonicEmpowerment")) { WoW.CastSpell("DemonicEmpowerment"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !lastpetstatus && !WoW.IsSpellOnCooldown("TK") && WoW.CanCast("TK") && WoW.WildImpsCount >= 1 && WoW.DreadstalkersCount >= 1) { WoW.CastSpell("TK"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerSpellCharges("Shadowflame") == 2 && WoW.IsSpellInRange("Shadowflame") && WoW.CanCast("Shadowflame")) { WoW.CastSpell("Shadowflame"); return; } if (WoW.IsInCombat && WoW.Mana < 30 && WoW.HealthPercent > 50 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.CanCast("Demonbolt") && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && WoW.IsInCombat && WoW.IsSpellInRange("Shadowflame")) { WoW.CastSpell("Demonbolt"); return; } /* shadowflame,if=debuff.shadowflame.stack>0&remains<action.shadow_bolt.cast_time+travel_time - DONE * call_dreadstalkers,if=!talent.summon_darkglare.enabled&(spell_targets.implosion<3|!talent.implosion.enabled) - DONE * hand_of_guldan,if=soul_shard>=4&!talent.summon_darkglare.enabled - DONE * hand_of_guldan,if=soul_shard>=3&prev_gcd.call_dreadstalkers - DONE * demonic_empowerment,if=wild_imp_no_de>3|prev_gcd.hand_of_guldan - DONE * demonic_empowerment,if=dreadstalker_no_de>0|darkglare_no_de>0|doomguard_no_de>0|infernal_no_de>0|service_no_de>0 - DONE * felguard:felstorm - DONE * shadowflame,if=charges=2 - DONE * thalkiels_consumption,if=(dreadstalker_remaining_duration>execute_time|talent.implosion.enabled&spell_targets.implosion>=3)&wild_imp_count>3&wild_imp_remaining_duration>execute_time - DONE * life_tap,if=mana.pct<=30 - DONE * demonbolt - DONE * life_tap - NOT NEEDED CAN BE CAST OUT OF COMBAT MANUALLY + WE HAVE IT ON MOVING */ } } if ((combatRoutine.Type == RotationType.AOE) || (combatRoutine.Type == RotationType.SingleTargetCleave)) { if (WoW.IsMoving) /* AOE WHEN MOVING */ { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsInCombat && WoW.WasLastCasted("HoG") && WoW.CanCast("Implosion")) { WoW.CastSpell("Implosion"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Shadowflame") == 1 && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < 3 && WoW.CanCast("Shadowflame") && WoW.IsSpellInRange("Shadowflame")) { WoW.CastSpell("Shadowflame"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && WoW.CanCast("Wrathstorm") && CombatWatch.ElapsedMilliseconds > 2000) { WoW.CastSpell("Wrathstorm"); } if (WoW.IsInCombat && WoW.HasTarget && WoW.CanCast("Shadowflame") && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerSpellCharges("Shadowflame") == 2 && WoW.IsSpellInRange("Shadowflame")) { WoW.CastSpell("Shadowflame"); return; } if (!WoW.IsInCombat && WoW.Mana < 80 && WoW.HealthPercent > 75 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.IsInCombat && WoW.Mana < 30 && WoW.HealthPercent > 50 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.IsInCombat && WoW.CanCast("Demonwrath") && WoW.HasTarget && WoW.HasPet && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Demonwrath"); return; } } if (!WoW.IsMoving) /* AOE WHEN NOT MOVING */ { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.IsInCombat && WoW.WasLastCasted("HoG") && WoW.CanCast("Implosion")) { WoW.CastSpell("Implosion"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.PlayerSpellCharges("Shadowflame") == 1 && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < 3 && WoW.CanCast("Shadowflame") && WoW.IsSpellInRange("Shadowflame")) { WoW.CastSpell("Shadowflame"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && WoW.CanCast("Wrathstorm") && CombatWatch.ElapsedMilliseconds > 2000) { WoW.CastSpell("Wrathstorm"); } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.CurrentSoulShards >= 3 && WoW.IsSpellInRange("HoG") && WoW.CanCast("HoG")) { WoW.CastSpell("HoG"); return; } if (WoW.IsInCombat && WoW.HasTarget && WoW.CanCast("Shadowflame") && WoW.TargetIsEnemy && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && WoW.PlayerSpellCharges("Shadowflame") == 2 && WoW.IsSpellInRange("Shadowflame")) { WoW.CastSpell("Shadowflame"); return; } if (!WoW.IsInCombat && WoW.Mana < 80 && WoW.HealthPercent > 75 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.IsInCombat && WoW.Mana < 30 && WoW.HealthPercent > 65 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.IsInCombat && WoW.CanCast("Demonwrath") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasPet && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Demonwrath"); } } } }
public override void Pulse() // Updated for Legion (tested and working for single target) { AddonCreationPulse(); PlayerStats(); AoEStuff(); if (WoW.IsInCombat && !WoW.PlayerHasBuff("Mount")) { SelectRotation(); } //Dark Pact if (WoW.CanCast("Dark Pact") && CharInfo.T5 == 3 && WoW.HealthPercent <= 30 && !WoW.PlayerHasBuff("Mount")) { WoW.CastSpell("Dark Pact"); return; } //Shadowfury if (DetectKeyPress.GetKeyState(DetectKeyPress.Alt) < 0 && CharInfo.T3 == 3 && !WoW.IsMoving && WoW.CanCast("Shadowfury")) { WoW.CastSpell("Shadowfury"); return; } if (UseCooldowns) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount")) { //Doomguard if (WoW.CanCast("Doomguard") && (CharInfo.T6 == 0 || CharInfo.T6 == 2 || CharInfo.T6 == 3) && WoW.CurrentSoulShards >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Doomguard"); return; } //Grimoire of Service if (WoW.CanCast("Grimoire: Felguard") && CharInfo.T6 == 2 && WoW.CurrentSoulShards >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Grimoire: Felguard"); return; } //Soul Harvest if (WoW.CanCast("Soul Harvest") && CharInfo.T4 == 3 && !WoW.IsMoving && WoW.IsSpellInRange("Doom") && (WoW.PlayerHasBuff("Bloodlust") || WoW.PlayerHasBuff("Time Warp") || WoW.PlayerHasBuff("Netherwinds") || WoW.PlayerHasBuff("Drums of War") || WoW.PlayerHasBuff("Heroism"))) { WoW.CastSpell("Soul Harvest"); return; } } } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount")) { if ((!WoW.TargetHasDebuff("Doom") || WoW.TargetDebuffTimeRemaining("Doom") <= 1.5) && WoW.CanCast("Doom") && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Doom"); return; } if (WoW.CanCast("Darkglare") && CharInfo.T7 == 1 && WoW.CurrentSoulShards >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Darkglare"); return; } if (WoW.CanCast("Call Dreadstalkers") && (WoW.CurrentSoulShards >= 2 || WoW.TargetHasDebuff("Demonic Calling")) && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Call Dreadstalkers"); return; } if (WoW.CanCast("Hand of Guldan") && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Hand of Guldan"); return; } if (WoW.CanCast("Demonic Empowerment") && !WoW.IsMoving && !WoW.WasLastCasted("Demonic Empowerment") && (!WoW.PetHasBuff("Demonic Empowerment") || WoW.PetBuffTimeRemaining("Demonic Empowerment") <= 1.5 || WoW.WasLastCasted("Call Dreadstalkers") || WoW.WasLastCasted("Grimoire: Felguard") || WoW.WasLastCasted("Doomguard") || WoW.WasLastCasted("Hand of Guldan"))) { WoW.CastSpell("Demonic Empowerment"); Thread.Sleep(1000); return; } if (WoW.CanCast("Talkiels Consumption") && WoW.PetHasBuff("Demonic Empowerment") && WoW.PetBuffTimeRemaining("Demonic Empowerment") >= 2 && WoW.WildImpsCount >= 1 && WoW.DreadstalkersCount >= 1 && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Talkiels Consumption"); return; } if (WoW.CanCast("Felstorm") && WoW.PetHasBuff("Demonic Empowerment") && WoW.PetBuffTimeRemaining("Demonic Empowerment") >= 6 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Felstorm"); return; } if (WoW.CanCast("Shadowflame") && CharInfo.T1 == 2 && !WoW.TargetHasDebuff("Shadowflame") && WoW.CanCast("Shadowflame") && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Shadowflame"); return; } if (WoW.CanCast("Life Tap") && WoW.Mana < 60 && WoW.HealthPercent > 50) { WoW.CastSpell("Life Tap"); return; } if (WoW.CanCast("Demonwrath") && WoW.Mana > 60 && WoW.IsMoving) { WoW.CastSpell("Demonwrath"); return; } if ((WoW.CanCast("Shadow Bolt") || WoW.CanCast("Demonbolt")) && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Shadow Bolt"); WoW.CastSpell("Demonbolt"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.PlayerHasBuff("Mount")) { if (WoW.CanCast("Hand of Guldan") && WoW.CurrentSoulShards >= 4 && WoW.IsSpellInRange("Doom") && !WoW.IsMoving) { WoW.CastSpell("Hand of Guldan"); return; } if (WoW.CanCast("Implosion") && CharInfo.T2 == 3 && WoW.WildImpsCount >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Implosion"); return; } if (WoW.CanCast("Darkglare") && CharInfo.T7 == 1 && WoW.CurrentSoulShards >= 1 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Darkglare"); return; } if (WoW.CanCast("Demonic Empowerment") && WoW.CanCast("Felstorm") && !WoW.IsMoving && !WoW.WasLastCasted("Demonic Empowerment") && (!WoW.PetHasBuff("Demonic Empowerment") || WoW.PetBuffTimeRemaining("Demonic Empowerment") <= 6)) { WoW.CastSpell("Demonic Empowerment"); Thread.Sleep(2000); return; } if (WoW.CanCast("Felstorm") && WoW.PetHasBuff("Demonic Empowerment") && WoW.PetBuffTimeRemaining("Demonic Empowerment") >= 6 && WoW.IsSpellInRange("Doom")) { WoW.CastSpell("Felstorm"); return; } if (WoW.CanCast("Life Tap") && WoW.Mana < 60 && WoW.HealthPercent > 50) { WoW.CastSpell("Life Tap"); return; } if (WoW.CanCast("Demonwrath") && WoW.Mana > 60) { WoW.CastSpell("Demonwrath"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
public override void Pulse() // Updated for Legion (tested and working for single target) { if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted) { SelectRotation(4, 9999, 1); } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.IsMounted) { if ((!WoW.TargetHasDebuff("Agony") || WoW.TargetDebuffTimeRemaining("Agony") <= 540) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Agony") <= 150) && WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Agony"); return; } if ((WoW.CurrentSoulShards >= 3 || (WoW.CurrentSoulShards >= 2 && WoW.WasLastCasted("Unstable Affliction"))) && !WoW.IsMoving && WoW.CanCast("Unstable Affliction") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Unstable Affliction"); Thread.Sleep(200); return; } if ((WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction2") || WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction3") || WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction4") || WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction3") || WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction4") || WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction4") || WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.TargetHasDebuff("Unstable Affliction4") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.PlayerBuffStacks("Reap Souls") >= 12) && !WoW.PlayerIsCasting && WoW.CanCast("Reap Souls") && !WoW.PlayerHasBuff("Deadwind Harvester") && WoW.PlayerHasBuff("Tormented Souls")) { WoW.CastSpell("Reap Souls"); return; } if (WoW.CanCast("Life Tap") && !WoW.PlayerIsChanneling && WoW.Talent(2) == 3 && !WoW.PlayerHasBuff("Empowered Life Tap")) { WoW.CastSpell("Life Tap"); return; } if ((!WoW.TargetHasDebuff("Corruption") || WoW.TargetDebuffTimeRemaining("Corruption") <= 420) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Corruption") <= 150) && WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Corruption"); return; } if ((!WoW.TargetHasDebuff("Siphon Life") || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 420) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 150) && WoW.Talent(4) == 1 && WoW.CanCast("Siphon Life") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Siphon Life"); return; } if (WoW.CanCast("Felhunter") && WoW.Talent(6) == 2 && !WoW.IsSpellOnCooldown("Felhunter") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting) { WoW.CastSpell("Felhunter"); return; } if (WoW.CanCast("Unstable Affliction") && !WoW.IsMoving && WoW.Talent(2) == 1 && !WoW.IsMoving && WoW.IsSpellInRange("Unstable Affliction") && !WoW.PlayerIsChanneling && WoW.CurrentSoulShards >= 1 && (!WoW.TargetHasDebuff("Unstable Affliction1") || !WoW.TargetHasDebuff("Unstable Affliction2") || !WoW.TargetHasDebuff("Unstable Affliction3") || !WoW.TargetHasDebuff("Unstable Affliction4") || !WoW.TargetHasDebuff("Unstable Affliction5") || (WoW.TargetDebuffTimeRemaining("Unstable Affliction1") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction2") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction3") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction4") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction5") <= 150))) { WoW.CastSpell("Unstable Affliction"); Thread.Sleep(200); return; } if (WoW.IsInCombat && WoW.Mana < 70 && WoW.HealthPercent > 70 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.CanCast("Haunt") && WoW.Talent(1) == 1 && !WoW.IsSpellOnCooldown("Haunt") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving) { WoW.CastSpell("Haunt"); return; } if (WoW.CanCast("Drain Soul") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving) { WoW.CastSpell("Drain Soul"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMounted) // Do AOE stuff here { if (WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Agony") || (WoW.TargetDebuffTimeRemaining("Agony") <= 540))) { WoW.CastSpell("Agony"); return; } if (WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Corruption") || (WoW.TargetDebuffTimeRemaining("Corruption") <= 420))) { WoW.CastSpell("Corruption"); return; } if (WoW.CanCast("Seed of Corruption") && WoW.IsSpellInRange("Agony") && !WoW.TargetHasDebuff("Seed of Corruption") && !WoW.IsMoving && WoW.CurrentSoulShards >= 1) { WoW.CastSpell("Seed of Corruption"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
public override void Pulse() // Updated for Legion (tested and working for single target) { if (WoW.CanCast("Healthstone") && WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.HealthPercent <= 60 && WoW.HealthPercent != 0 && WoW.IsInCombat) { WoW.CastSpell("Healthstone"); return; } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting && !WoW.IsMounted) { if ((!WoW.TargetHasDebuff("Agony") || WoW.TargetDebuffTimeRemaining("Agony") <= 540) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Agony") <= 150) && WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Agony"); return; } if ((WoW.CurrentSoulShards >= 3 || (WoW.CurrentSoulShards >= 2 && WoW.WasLastCasted("Unstable Affliction"))) && !WoW.IsMoving && WoW.CanCast("Unstable Affliction") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption")) { WoW.CastSpell("Unstable Affliction"); Thread.Sleep(200); return; } if ((WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction2") || WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction3") || WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction4") || WoW.TargetHasDebuff("Unstable Affliction1") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction3") || WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction4") || WoW.TargetHasDebuff("Unstable Affliction2") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction4") || WoW.TargetHasDebuff("Unstable Affliction3") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.TargetHasDebuff("Unstable Affliction4") && WoW.TargetHasDebuff("Unstable Affliction5") || WoW.PlayerBuffStacks("Reap Souls") >= 12) && !WoW.PlayerIsCasting && WoW.CanCast("Reap Souls") && !WoW.PlayerHasBuff("Deadwind Harvester") && WoW.PlayerHasBuff("Tormented Souls") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption")) { WoW.CastSpell("Reap Souls"); return; } if (WoW.CanCast("Phantom") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption")) { WoW.CastSpell("Phantom"); return; } /*if (WoW.IsSpellInRange("Agony") && WoW.CanCast("Trinket") &&!WoW.ItemOnCooldown("Trinket") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption")) * { * WoW.CastSpell("Trinket"); * return; * }*/ if (WoW.CanCast("Berserk") && UseCooldowns && !WoW.IsSpellOnCooldown("Berserk") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserk"); return; } if (WoW.CanCast("Life Tap") && !WoW.PlayerIsChanneling && WoW.Talent(2) == 3 && !WoW.PlayerHasBuff("Empowered Life Tap")) { WoW.CastSpell("Life Tap"); return; } if ((!WoW.TargetHasDebuff("Corruption") || WoW.TargetDebuffTimeRemaining("Corruption") <= 420) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Corruption") <= 150) && WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony")) { WoW.CastSpell("Corruption"); return; } if ((!WoW.TargetHasDebuff("Siphon Life") || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 420) && (!WoW.PlayerIsChanneling || WoW.TargetDebuffTimeRemaining("Siphon Life") <= 150) && WoW.Talent(4) == 1 && WoW.CanCast("Siphon Life") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption")) { WoW.CastSpell("Siphon Life"); return; } if (WoW.CanCast("Unstable Affliction") && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption") && !WoW.IsMoving && WoW.Talent(2) == 1 && !WoW.IsMoving && WoW.IsSpellInRange("Unstable Affliction") && !WoW.PlayerIsChanneling && WoW.CurrentSoulShards >= 1 && (!WoW.TargetHasDebuff("Unstable Affliction1") || !WoW.TargetHasDebuff("Unstable Affliction2") || !WoW.TargetHasDebuff("Unstable Affliction3") || !WoW.TargetHasDebuff("Unstable Affliction4") || !WoW.TargetHasDebuff("Unstable Affliction5") || (WoW.TargetDebuffTimeRemaining("Unstable Affliction1") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction2") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction3") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction4") <= 150) || (WoW.TargetDebuffTimeRemaining("Unstable Affliction5") <= 150))) { WoW.CastSpell("Unstable Affliction"); Thread.Sleep(200); return; } if (WoW.IsInCombat && WoW.Mana < 70 && WoW.HealthPercent > 70 && WoW.CanCast("Life Tap")) { WoW.CastSpell("Life Tap"); return; } if (WoW.CanCast("Drain Soul") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption")) { WoW.CastSpell("Drain Soul"); return; } } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMounted) // Do AOE stuff here { if (WoW.CanCast("Agony") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Agony") || (WoW.TargetDebuffTimeRemaining("Agony") <= 540))) { WoW.CastSpell("Agony"); return; } if (WoW.CanCast("Corruption") && WoW.IsSpellInRange("Agony") && WoW.TargetHasDebuff("Seed of Corruption") && (!WoW.TargetHasDebuff("Corruption") || (WoW.TargetDebuffTimeRemaining("Corruption") <= 420))) { WoW.CastSpell("Corruption"); return; } if (WoW.CanCast("Seed of Corruption") && WoW.IsSpellInRange("Agony") && !WoW.TargetHasDebuff("Seed of Corruption") && !WoW.IsMoving && WoW.CurrentSoulShards >= 1 && !WoW.WasLastCasted("Seed of Corruption")) { WoW.CastSpell("Seed of Corruption"); return; } if (WoW.CanCast("Drain Soul") && WoW.IsSpellInRange("Agony") && !WoW.PlayerIsChanneling && !WoW.PlayerIsCasting && !WoW.IsMoving && WoW.TargetHasDebuff("Agony") && WoW.TargetHasDebuff("Corruption")) { WoW.CastSpell("Drain Soul"); return; } } } }