public override void Pulse() { var lowest = WoW.PartyLowestHealthPercent; int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent; if (WoW.PartyMemberIsNeedingADispel != 0) { currentTargetId = WoW.PartyMemberIsNeedingADispel; } var test = WoW.TargetIsPlayer; var averageHp = WoW.PartyAverageHealthPercent; WoW.TargetMember(currentTargetId); /*-----------------------------Cooldowns-------------------------------------*/ WoW.CastSpell("HealingTideTotem", WoW.CountAlliesUnderHealthPercentage(40) >= 5 && !WoW.PlayerHasBuff("Ascendence")); WoW.CastSpell("Ascendence", WoW.CountAlliesUnderHealthPercentage(40) >= 5 && WoW.IsSpellOnCooldown("HealingTideTotem")); WoW.CastSpell("AncestrialGuidance", WoW.CountAlliesUnderHealthPercentage(75) >= 3 && WoW.IsSpellOnCooldown("HealingTideTotem") && !WoW.PlayerHasBuff("Ascendence")); /*-----------------------------Cooldowns-------------------------------------*/ if (WoW.PartyMemberIsNeedingADispel != 0 && WoW.CanCast("Purify Spirit")) { WoW.CastSpell("Purify Spirit"); return; } WoW.CastSpell("Riptide", lowest < 99 && !WoW.TargetHasBuff("Riptide")); WoW.CastSpell("HealingStreamTotem", lowest < 99); WoW.CastSpell("HealingSurge", lowest < 35); WoW.CastSpell("ChainHeal", WoW.CountAlliesUnderHealthPercentage(85) >= 3); WoW.CastSpell("HealingWave", lowest < 90); }
public override void OutOfCombatPulse() { var lowest = WoW.PartyLowestHealthPercent; int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent; var test = WoW.TargetIsPlayer; var averageHp = WoW.PartyAverageHealthPercent; WoW.TargetMember(currentTargetId); WoW.CastSpell("GhostWolf", WoW.IsMoving && !WoW.PlayerHasBuff("GhostWolf")); WoW.CastSpell("Riptide", lowest < 98 && !WoW.TargetHasBuff("Riptide")); }
public override void Pulse() { if (WoW.IsMounted || WoW.PlayerIsCasting || WoW.PlayerIsChanneling) { return; } //set variables var averageHp = WoW.PartyAverageHealthPercent; var target = WoW.HasTarget; var friend = WoW.TargetIsFriend; var hp = WoW.TargetHealthPercent; if (target && hp >= 100) { return; } // Divine Hymn Logic if (averageHp <= DivineHymn && WoW.CanCast("Divine Hymn") && !WoW.IsSpellOnCooldown("Divine Hymn")) { WoW.CastSpell("Divine Hymn"); return; } // Guardian Spirit Logic if (hp <= GuardianSpirit && target && friend && WoW.CanCast("Guardian Spirit") && !WoW.IsSpellOnCooldown("Guardian Spirit")) { WoW.CastSpell("Guardian Spirit"); return; } //Prayer of Healing Logic if (averageHp <= PrayerofHealing && WoW.CanCast("Prayer of Healing") && !WoW.IsSpellOnCooldown("Prayer of Healing")) { WoW.CastSpell("Prayer of Healing"); return; } //Purify Logic if (target && friend && WoW.PartyMemberIsNeedingADispel != 0 && WoW.CanCast("Purify")) { WoW.CastSpell("Purify"); return; } // Prayer of Mending Logic if (hp <= PrayerofMending && target && friend && WoW.CanCast("Prayer of Mending") && !WoW.IsSpellOnCooldown("Prayer of Mending") && !WoW.TargetHasBuff("Prayer of Mending")) { WoW.CastSpell("Prayer of Mending"); return; } // Renew Logic if (hp >= Renew && target && friend && WoW.CanCast("Renew") && !WoW.TargetHasBuff("Renew")) { WoW.CastSpell("Renew"); return; } // Holy Word: Serenity Logic if (hp <= HolyWordSerenity && WoW.CanCast("Holy Word Serenity") && !WoW.IsSpellOnCooldown("Holy Word Serenity")) { WoW.CastSpell("Holy Word Serenity"); return; } // Flash Heal Logic if (hp <= FlashHeal && target && friend && WoW.CanCast("Flash Heal") && !WoW.IsMoving) { WoW.CastSpell("Flash Heal"); return; } // Heal Logic if (hp <= Heal && target && friend && WoW.CanCast("Heal") && !WoW.IsMoving) { WoW.CastSpell("Heal"); return; } //Light of Tuure Logic if (hp <= LightofTuure && target && friend && WoW.CanCast("Light of Tuure") && WoW.Level == 110 && !WoW.IsSpellOnCooldown("Light of Tuure") && !WoW.TargetHasBuff("Light of Tuure")) { WoW.CastSpell("Light of Tuure"); return; } // Arcane Torrent Logic if (WoW.CanCast("Arcane Torrent") && ConfigFile.ReadValue <bool>("Priest-Holy-Sora", "ArcaneTorrent") && WoW.Mana <= 95 && !WoW.IsSpellOnCooldown("Arcane Torrent") && !WoW.TargetHasBuff("Arcane Torrent")) { WoW.CastSpell("Arcane Torrent"); return; } }
public override void Pulse() // Updated for Legion (tested and working for single target) { if (WoW.IsInCombat && Control.IsKeyLocked(Keys.Scroll) && !WoW.TargetIsPlayer && !WoW.IsMounted) { SelectRotation(4, 2, 1); SelectRotation(4, 3, 1); } //Healthstone - Potion if ((WoW.CanCast("Healthstone") || WoW.CanCast("Potion")) && (WoW.ItemCount("Healthstone") >= 1 || WoW.ItemCount("Potion") >= 1) && (!WoW.ItemOnCooldown("Healthstone") || !WoW.ItemOnCooldown("Potion")) && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent <= 15 && !WoW.IsMounted && WoW.IsInCombat && WoW.HealthPercent > 1) { Thread.Sleep(500); WoW.CastSpell("Healthstone"); WoW.CastSpell("Potion"); return; } //Exhilaration if (WoW.CanCast("Exhilaration") && WoW.HealthPercent <= 25 && !WoW.IsMounted && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent > 1) { WoW.CastSpell("Exhilaration"); return; } //Counter Shot if (WoW.CanCast("Counter Shot") && (WoW.TargetIsCastingAndSpellIsInterruptible) && !WoW.IsSpellOnCooldown("Counter Shot") && WoW.TargetIsCasting && WoW.IsSpellInRange("Counter Shot") && WoW.TargetPercentCast > 75) { WoW.CastSpell("Counter Shot"); return; } //Mend Pet if (WoW.HasPet && WoW.CanCast("Mend Pet") && WoW.HealthPercent > 1 && WoW.PetHealthPercent <= 40 && !WoW.PlayerHasBuff("Feign Death")) { WoW.CastSpell("Mend Pet"); return; } //Revive Pet Call pet if (!WoW.HasPet && !WoW.IsMounted && WoW.HealthPercent > 1 && !WoW.PlayerHasBuff("Feign Death")) { WoW.CastSpell("Call Pet"); Thread.Sleep(500); WoW.CastSpell("Heart of the Phoenix"); WoW.CastSpell("Revive Pet"); return; } //Voley if (WoW.CanCast("Voley") && !WoW.PlayerHasBuff("Feign Death") && !WoW.PlayerHasBuff("Voley") && WoW.HealthPercent != 0 && WoW.Talent(6) == 3) { WoW.CastSpell("Voley"); return; } //Intimidation //Binding Shot if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0 && ((WoW.CanCast("Intimidation") && WoW.Talent(5) == 3) || (WoW.CanCast("Binding Shot") && WoW.Talent(5) == 1))) { WoW.CastSpell("Binding Shot"); WoW.CastSpell("Intimidation"); return; } //Freezing Trap if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_X) < 0 && WoW.CanCast("Freezing Trap") && !WoW.IsMounted) { WoW.CastSpell("Freezing Trap"); return; } //Tar Trap if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_C) < 0 && WoW.CanCast("Tar Trap") && !WoW.IsMounted) { WoW.CastSpell("Tar Trap"); return; } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Feign Death") && WoW.HealthPercent > 1 && !WoW.TargetHasBuff("Nether Gale")) { //Cooldowns if (UseCooldowns) { } //Stampede if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0 && WoW.CanCast("Stampede") && WoW.Talent(7) == 1) { WoW.CastSpell("Stampede"); return; } //SINGLE TARGET //A Murder of Crows if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("A Murder of Crows") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") < 300 || WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 3000) //&& WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(6) == 1 && WoW.Focus >= 30) { WoW.CastSpell("A Murder of Crows"); return; } //Bestial Wrath if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Bestial Wrath") && !WoW.PlayerHasBuff("Aspect of the Turtle") && WoW.IsSpellInRange("Cobra Shot") && (WoW.Focus >= 110 || (WoW.Focus >= 90 && WoW.CanCast("Aspect of the Wild")))) { WoW.CastSpell("Bestial Wrath"); WoW.CastSpell("Aspect of the Wild"); WoW.CastSpell("Kill Command"); } //Aspect of the Wild if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Aspect of the Wild") && !WoW.PlayerHasBuff("Aspect of the Turtle") //&& WoW.PlayerHasBuff("Bestial Wrath") //&& WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 700 ) { WoW.CastSpell("Aspect of the Wild"); } //Dire Frenzy if (combatRoutine.Type == RotationType.SingleTarget && (WoW.CanCast("Dire Frenzy") || WoW.SpellCooldownTimeRemaining("Dire Frenzy") <= 100) && WoW.Talent(2) == 2 && ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy") || WoW.PlayerSpellCharges("Dire Frenzy") >= 2)) { WoW.CastSpell("Titan's Thunder"); WoW.CastSpell("Dire Frenzy"); return; } // Dire beast if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Dire Beast") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 || WoW.PlayerSpellCharges("Dire Beast") >= 2) && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) != 2) { WoW.CastSpell("Dire Beast"); WoW.CastSpell("Titan's Thunder"); return; } //Kill Command if (combatRoutine.Type == RotationType.SingleTarget && (WoW.SpellCooldownTimeRemaining("Kill Command") <= 100 || WoW.CanCast("Kill Command")) && WoW.Focus >= 30) { WoW.CastSpell("Kill Command"); return; } //Chimaera Shot if (combatRoutine.Type == RotationType.SingleTarget && WoW.CanCast("Chimaera Shot") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) == 3 && WoW.Focus < 80) { WoW.CastSpell("Chimaera Shot"); return; } //Cobra Shot if (combatRoutine.Type == RotationType.SingleTarget && ((WoW.Focus >= 90) || (WoW.PlayerHasBuff("Bestial Wrath") && WoW.Focus >= 32)) && WoW.IsSpellInRange("Cobra Shot") && WoW.CanCast("Cobra Shot") && !WoW.CanCast("Bestial Wrath")) { WoW.CastSpell("Cobra Shot"); return; } //AOE //Bestial Wrath if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && !WoW.PlayerHasBuff("Aspect of the Turtle")) { WoW.CastSpell("Bestial Wrath"); return; } // Dire beast if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Dire Beast") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) != 2) { WoW.CastSpell("Dire Beast"); WoW.CastSpell("Titan's Thunder"); return; } //Dire Frenzy if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Dire Frenzy") && WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 600 && WoW.Talent(2) == 2) { WoW.CastSpell("Titan's Thunder"); WoW.CastSpell("Dire Frenzy"); return; } //Barrage if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Barrage") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(6) == 2 && (WoW.Focus >= 60)) { WoW.CastSpell("Barrage"); return; } //Multishot if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Multi-Shot") && WoW.IsSpellInRange("Multi-Shot") && WoW.Focus >= 40) { WoW.CastSpell("Multi-Shot"); return; } //Chimaera Shot if (combatRoutine.Type == RotationType.AOE && WoW.CanCast("Chimaera Shot") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) == 3 && WoW.Focus < 80) { WoW.CastSpell("Chimaera Shot"); return; } //CLEAVE //A Murder of Crows if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("A Murder of Crows") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") < 300 || WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 3000) //&& WoW.PlayerHasBuff("Bestial Wrath") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(6) == 1 && WoW.Focus >= 30) { WoW.CastSpell("A Murder of Crows"); return; } //Bestial Wrath if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Bestial Wrath") && !WoW.PlayerHasBuff("Aspect of the Turtle") && WoW.IsSpellInRange("Cobra Shot") && (WoW.Focus >= 110 || (WoW.Focus >= 90 && WoW.CanCast("Aspect of the Wild")))) { WoW.CastSpell("Bestial Wrath"); WoW.CastSpell("Aspect of the Wild"); WoW.CastSpell("Kill Command"); } //Aspect of the Wild if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Aspect of the Wild") && !WoW.PlayerHasBuff("Aspect of the Turtle") //&& WoW.PlayerHasBuff("Bestial Wrath") //&& WoW.PlayerBuffTimeRemaining("Bestial Wrath") >= 700 ) { WoW.CastSpell("Aspect of the Wild"); } //Dire Frenzy if (combatRoutine.Type == RotationType.SingleTargetCleave && (WoW.CanCast("Dire Frenzy") || WoW.SpellCooldownTimeRemaining("Dire Frenzy") <= 100) && WoW.Talent(2) == 2 && ((WoW.PetHasBuff("Dire Frenzy") && WoW.PetBuffTimeRemaining("Dire Frenzy") <= 200) || !WoW.PetHasBuff("Dire Frenzy") || WoW.PlayerSpellCharges("Dire Frenzy") >= 2)) { WoW.CastSpell("Titan's Thunder"); WoW.CastSpell("Dire Frenzy"); return; } // Dire beast if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Dire Beast") && (WoW.SpellCooldownTimeRemaining("Bestial Wrath") > 300 || WoW.PlayerSpellCharges("Dire Beast") >= 2) && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) != 2) { WoW.CastSpell("Dire Beast"); WoW.CastSpell("Titan's Thunder"); return; } //Barrage if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Barrage") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(6) == 2 && (WoW.Focus >= 60)) { WoW.CastSpell("Barrage"); return; } //Kill Command if (combatRoutine.Type == RotationType.SingleTargetCleave && (WoW.SpellCooldownTimeRemaining("Kill Command") <= 100 || WoW.CanCast("Kill Command")) && WoW.Focus >= 30) { WoW.CastSpell("Kill Command"); return; } //Multishot - Beast Cleave uptime if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Multi-Shot") && (!WoW.PetHasBuff("BeastCleave") || WoW.PetBuffTimeRemaining("BeastCleave") < 0.5) && WoW.IsSpellInRange("Multi-Shot") && !WoW.CanCast("Bestial Wrath") && WoW.Focus >= 40) { WoW.CastSpell("Multi-Shot"); return; } //Chimaera Shot if (combatRoutine.Type == RotationType.SingleTargetCleave && WoW.CanCast("Chimaera Shot") && WoW.IsSpellInRange("Cobra Shot") && WoW.Talent(2) == 3 && WoW.Focus < 80) { WoW.CastSpell("Chimaera Shot"); return; } //Cobra Shot if (combatRoutine.Type == RotationType.SingleTargetCleave && ((WoW.Focus >= 90) || (WoW.PlayerHasBuff("Bestial Wrath") && (WoW.Focus >= 32))) && WoW.IsSpellInRange("Cobra Shot") && WoW.CanCast("Cobra Shot") && !WoW.CanCast("Bestial Wrath")) { WoW.CastSpell("Cobra Shot"); return; } //Mend Pet if (WoW.HasPet && WoW.CanCast("Mend Pet") && WoW.HealthPercent != 0 && WoW.PetHealthPercent <= 75 && !WoW.PlayerHasBuff("Feign Death")) { WoW.CastSpell("Mend Pet"); return; } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) { // Stopwatch START if (WoW.IsInCombat && !pullwatch.IsRunning) { pullwatch.Start(); Log.Write("Entering Combat, Starting opener timer.", Color.Red); } // Stopwatch stop if (!WoW.IsInCombat && pullwatch.ElapsedMilliseconds >= 1000) { pullwatch.Reset(); ripunbuffed.Reset(); ripbuffed.Reset(); superrip.Reset(); Log.Write("Leaving Combat, Resetting opener timer.", Color.Red); } //PVP, Basic PVP with Brutal Slash, Incarnation and Renewal (if enabled) if (WoW.TargetIsPlayer && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Regrowth") && WoW.PlayerHasBuff("Regrowth") && WoW.HealthPercent <= 80 && WoW.PlayerHasBuff("PredatorySwiftness")) { WoW.CastSpell("Regrowth"); return; } if (Renewal && WoW.CanCast("Renwal") && WoW.HealthPercent <= 70) { WoW.CastSpell("Renewal"); return; } if ((WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.CurrentComboPoints >= 5 && WoW.TargetHasDebuff("Rip")) && WoW.TargetDebuffTimeRemaining("Rip") >= 500 && (WoW.Energy >= 50 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk"))) { WoW.CastSpell("FerociousBite"); return; } if ((WoW.IsSpellInRange("Rake") && WoW.CanCast("Rake") && (!WoW.TargetHasDebuff("Rake") || WoW.TargetDebuffTimeRemaining("Rake") <= 300)) && (WoW.Energy >= 35 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk"))) { WoW.CastSpell("Rake"); return; } if (WoW.IsSpellInRange("Ashamane") && WoW.CanCast("Ashamane") && !WoW.IsSpellOnCooldown("Ashamane") && WoW.CurrentComboPoints <= 2) { WoW.CastSpell("Ashamane"); return; } if ((WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.CurrentComboPoints >= 5 && (!WoW.TargetHasDebuff("Rip") || WoW.TargetDebuffTimeRemaining("Rip") <= 500)) && (WoW.Energy >= 30 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk"))) { WoW.CastSpell("Rip"); return; } if ((WoW.IsSpellInRange("Shred") && WoW.CanCast("Shred") && WoW.CurrentComboPoints < 5 && WoW.TargetHasDebuff("Rake") && (WoW.IsSpellOnCooldown("BrutalSlash") || !BrutalSlash) && (WoW.Energy >= 40 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk")))) { WoW.CastSpell("Shred"); return; } if (WoW.CanCast("TigersFury") && WoW.Energy <= 20 && !WoW.IsSpellOnCooldown("TigersFury")) { WoW.CastSpell("TigersFury"); return; } if (BrutalSlash && WoW.IsSpellInRange("Shred") && WoW.CanCast("BrutalSlash") && !WoW.IsSpellOnCooldown("BrutalSlash") && (WoW.Energy >= 20 || WoW.PlayerHasBuff("Incarnation") || WoW.PlayerHasBuff("Berserk"))) { WoW.CastSpell("BrutalSlash"); return; } } // OPENER if (WoW.IsInCombat && WoW.TargetIsEnemy && WoW.IsBoss && pullwatch.ElapsedMilliseconds < 10000 && UseCooldowns) { if (Bloodtalons && WoW.CanCast("Regrowth")) { if (WoW.CurrentComboPoints >= 2 && !WoW.PlayerHasBuff("Savage Roar") && WoW.PlayerHasBuff("PredatorySwiftness")) { WoW.CastSpell("Regrowth"); return; } if (WoW.CurrentComboPoints >= 5 && WoW.PlayerHasBuff("PredatorySwiftness")) { WoW.CastSpell("Regrowth"); return; } if (WoW.PlayerBuffTimeRemaining("PredatorySwiftness") < 150 && WoW.PlayerHasBuff("PredatorySwiftness")) { WoW.CastSpell("Regrowth"); return; } if (WoW.CurrentComboPoints == 2 && !WoW.PlayerHasBuff("Bloodtalons") && WoW.SpellCooldownTimeRemaining("Ashamane") <= 100 && WoW.PlayerHasBuff("PredatorySwiftness")) { WoW.CastSpell("Regrowth"); return; } // If Elunes Guidance talent enabled if (ElunesGuidance) { if (WoW.SpellCooldownTimeRemaining("ElunesGuidance") <= 100 && WoW.CurrentComboPoints == 0) { WoW.CastSpell("Regrowth"); return; } if (WoW.PlayerHasBuff("ElunesGuidance") && WoW.CurrentComboPoints >= 4) { WoW.CastSpell("Regrowth"); return; } } } if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.CurrentComboPoints == 5 && !WoW.PlayerHasBuff("SavageRoar")) { WoW.CastSpell("SavageRoar"); return; } if (SavageRoar && WoW.CanCast("SavageRoar") && !WoW.PlayerHasBuff("SavageRoar") && WoW.CurrentComboPoints >= 2) { WoW.CastSpell("SavageRoar"); return; } if (WoW.CanCast("TigersFury") && WoW.Energy <= 30) { WoW.CastSpell("TigersFury"); return; } if (WoW.CanCast("TigersFury") && WoW.PlayerHasBuff("SavageRoar")) { WoW.CastSpell("TigersFury"); return; } if (!Incarnation && WoW.CanCast("Berserk") && WoW.PlayerHasBuff("SavageRoar")) { WoW.CastSpell("Berserk"); return; } if (Incarnation && WoW.CanCast("Incarnation") && WoW.PlayerHasBuff("SavageRoar")) { WoW.CastSpell("Incarnation"); return; } if (WoW.CanCast("Rake") && !WoW.TargetHasDebuff("Rake")) { WoW.CastSpell("Rake"); return; } if (LunarInspiration && !WoW.TargetHasDebuff("Moonfire") && WoW.IsSpellInRange("SkullBash") && WoW.Energy >= 30 && WoW.CurrentComboPoints < 5) { WoW.CastSpell("Moonfire"); return; } { WoW.CastSpell("Moonfire"); return; } if (WoW.CanCast("Ashamane") && WoW.TargetHasDebuff("Rip")) { WoW.CastSpell("Ashamane"); return; } if (WoW.CanCast("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.CurrentComboPoints == 5) { WoW.CastSpell("Rip"); return; } if (WoW.CanCast("Shred") && WoW.CurrentComboPoints < 5) { WoW.CastSpell("Shred"); return; } } // OPEN COMBAT WITH SHADOWMELD RAKE if (WoW.TargetIsEnemy && WoW.IsInCombat && (WoW.PlayerHasBuff("Prowl") || WoW.PlayerHasBuff("Shadowmeld"))) { if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Rake")) { WoW.CastSpell("Rake"); return; } } // COOLDOWN ROTATION if (WoW.IsInCombat && WoW.TargetIsEnemy && UseCooldowns) { if (!Incarnation && WoW.CanCast("Berserk") && WoW.PlayerHasBuff("TigersFury") || WoW.SpellCooldownTimeRemaining("TigersFury") < 200) { WoW.CastSpell("Berserk"); return; } if (Incarnation && WoW.CanCast("Incarnation") && WoW.PlayerHasBuff("TigersFury") || WoW.SpellCooldownTimeRemaining("TigersFury") < 200) { WoW.CastSpell("Incarnation"); return; } } // PRIMARY ROTATION if (WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.PlayerHasBuff("Prowl") && WoW.PlayerHasBuff("Cat Form")) { // Tigers Fury on cooldown if under 30 Energy if (WoW.CanCast("TigersFury") && WoW.Energy <= 30) { WoW.CastSpell("TigersFury"); return; } // Keep Rip from falling off during execute range if (WoW.IsSpellInRange("Rake") && WoW.CanCast("FerociousBite") && WoW.TargetHasDebuff("Rip") && WoW.TargetHasDebuff("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.TargetDebuffTimeRemaining("Rip") < 3 && WoW.TargetHealthPercent <= 25 && WoW.Energy >= 25) { WoW.CastSpell("FerociousBite"); return; } // Regrowth logic with Bloodtalons talent enabled if (Bloodtalons && WoW.CanCast("Regrowth")) { if (WoW.CurrentComboPoints >= 5 && WoW.PlayerHasBuff("PredatorySwiftness")) { WoW.CastSpell("Regrowth"); return; } if (WoW.PlayerBuffTimeRemaining("PredatorySwiftness") < 1500 && WoW.PlayerHasBuff("PredatorySwiftness")) { WoW.CastSpell("Regrowth"); return; } if (WoW.CurrentComboPoints == 2 && !WoW.PlayerHasBuff("Bloodtalons") && WoW.SpellCooldownTimeRemaining("Ashamane") <= 100 && WoW.PlayerHasBuff("PredatorySwiftness")) { WoW.CastSpell("Regrowth"); return; } // If Elunes Guidance talent enabled if (ElunesGuidance) { if (WoW.SpellCooldownTimeRemaining("ElunesGuidance") <= 100 && WoW.CurrentComboPoints == 0) { WoW.CastSpell("Regrowth"); return; } if (WoW.PlayerHasBuff("ElunesGuidance") && WoW.CurrentComboPoints >= 4) { WoW.CastSpell("Regrowth"); return; } } } // Sabertooth Opener //if (Sabertooth) //{ //} // LEGENDARY LOGIC if (AiluroPouncers) { if (Bloodtalons && WoW.CanCast("Regrowth") && WoW.PlayerBuffStacks("PredatorySwiftness") > 1 && !WoW.PlayerHasBuff("Bloodtalons") && WoW.PlayerHasBuff("PredatorySwiftness")) { WoW.CastSpell("Regrowth"); return; } } // FINISHER LOGIC // FINISHER LOGIC // If have Savage Roar and Rip under 3 seconds remaining and target above 25% hp, cast BUFFED rip. //if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && WoW.TargetHasDebuff("Rip") && WoW.TargetDebuffTimeRemaining("Rip") < 2 && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") < 8 && WoW.TargetHealthPercent > 25 && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("TigersFury")) //{ // WoW.CastSpell("Rip"); // ripbuffed.Reset(); // ripbuffed.Start(); // ripunbuffed.Reset(); // Log.Write("Override Savage Roar refresh when Rip under 3seconds remaining.", Color.Red); // return; //} //// //if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && WoW.TargetHasDebuff("Rip") && WoW.TargetDebuffTimeRemaining("Rip") < 2 && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") < 8 && WoW.TargetHealthPercent > 25 && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("TigersFury")) //{ // WoW.CastSpell("Rip"); // ripbuffed.Reset(); // ripbuffed.Start(); // ripunbuffed.Reset(); // Log.Write("Override Savage Roar refresh when Rip under 3seconds remaining.", Color.Red); // return; //} // Savage Roar if player dont have buff Savage Roar and is at 5 combo points. if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.Energy >= 40 && !WoW.PlayerHasBuff("SavageRoar") && WoW.CurrentComboPoints == 5) { WoW.CastSpell("SavageRoar"); return; } // Savage Roar if player have buff Savage Roar and is under 2 seconds remaining and is at 5 combo points. if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.Energy >= 40 && WoW.PlayerBuffTimeRemaining("SavageRoar") <= 200 && WoW.PlayerHasBuff("SavageRoar") && WoW.CurrentComboPoints == 5) { WoW.CastSpell("SavageRoar"); return; } // Ferocious Bite if HP under 25% and Rip Remaining under 3 seconds. (will extend Rip) if (WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.CurrentComboPoints > 1 && WoW.TargetDebuffTimeRemaining("Rip") < 300 && WoW.TargetHealthPercent < 25 && WoW.TargetHasDebuff("Rip")) { WoW.CastSpell("FerociousBite"); return; } // If TigersFury running. if (WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.CurrentComboPoints == 5 && ripbuffed.IsRunning && WoW.TargetHasBuff("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") <= 1000 && WoW.TargetDebuffTimeRemaining("Rip") > 7) { WoW.CastSpell("FerociousBite"); Log.Write("O mighty super bite."); } // Refresh Rip if not on target and tigersfury or berserk if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && !WoW.TargetHasDebuff("Rip") && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("TigersFury")) { WoW.CastSpell("Rip"); ripbuffed.Start(); ripunbuffed.Reset(); Log.Write("Buffed Rip. Berserk or Tigers Fury buff.", Color.Red); return; } // Refresh Rip for stronger Rip if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && ripunbuffed.IsRunning && WoW.PlayerHasBuff("TigersFury") && WoW.CurrentComboPoints == 5) { WoW.CastSpell("Rip"); ripbuffed.Start(); ripunbuffed.Reset(); Log.Write("Buffed Rip. Berserk or Tigers Fury buff.", Color.Red); return; } // Refresh Rip at 8 seconds if have Tigers fury or Berserk buff. if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && !Sabertooth && WoW.TargetDebuffTimeRemaining("Rip") < 800 && WoW.TargetHealthPercent > 25 && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("TigersFury")) { WoW.CastSpell("Rip"); ripbuffed.Start(); ripunbuffed.Reset(); Log.Write("Buffed Rip. Berserk or Tigers Fury buff.", Color.Red); return; } // Refresh Rip at 8 seconds if no buff and no sabertooth talent and non-buffed rip is running. if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && !Sabertooth && WoW.TargetDebuffTimeRemaining("Rip") < 800 && WoW.TargetHealthPercent > 25 && WoW.CurrentComboPoints == 5 && !ripbuffed.IsRunning) { WoW.CastSpell("Rip"); ripunbuffed.Start(); ripbuffed.Reset(); Log.Write("Unbuffed Rip. Under 8 secs remaining on Unbuffed Rip.", Color.Red); return; } // Refresh Rip if not on target. if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && !WoW.TargetHasDebuff("Rip") && WoW.CurrentComboPoints == 5) { WoW.CastSpell("Rip"); ripunbuffed.Start(); ripbuffed.Reset(); Log.Write("Unbuffed Rip. No Rip on target.", Color.Red); return; } // Refresh Rip if under 2 seconds remaining. if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.Energy >= 30 && WoW.TargetDebuffTimeRemaining("Rip") < 200 && WoW.CurrentComboPoints == 5) { WoW.CastSpell("Rip"); ripunbuffed.Start(); ripbuffed.Reset(); Log.Write("Unbuffed Rip. No Rip under 2secs remaining.", Color.Red); return; } // Refresh Savage roar at under 7.2 secons remaining if no JaggedWounds talent if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.Energy >= 40 && !JaggedWounds && WoW.PlayerBuffTimeRemaining("SavageRoar") < 720 && WoW.CurrentComboPoints == 5) { WoW.CastSpell("SavageRoar"); return; } // Refresh Savage Roar early with jagged wounds talent if (SavageRoar && WoW.CanCast("SavageRoar") && WoW.Energy >= 40 && JaggedWounds && WoW.PlayerBuffTimeRemaining("SavageRoar") < 1050 && WoW.CurrentComboPoints == 5) { WoW.CastSpell("SavageRoar"); return; } // FB cast without JaggedWounds talent if (WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.Energy >= 25 && WoW.CurrentComboPoints == 5 && !JaggedWounds && WoW.TargetHasDebuff("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") > 920 && WoW.TargetDebuffTimeRemaining("Rip") > 1000) { WoW.CastSpell("FerociousBite"); return; } // FB cast with JaggedWounds talent if (WoW.IsSpellInRange("FerociousBite") && WoW.CanCast("FerociousBite") && WoW.Energy >= 25 && WoW.CurrentComboPoints == 5 && JaggedWounds && WoW.TargetHasDebuff("Rip") && WoW.PlayerHasBuff("SavageRoar") && WoW.PlayerBuffTimeRemaining("SavageRoar") > 1250 && WoW.TargetDebuffTimeRemaining("Rip") > 1000) { WoW.CastSpell("FerociousBite"); return; } // GENERATOR LOGIC // GENERATOR LOGIC if (WoW.IsSpellInRange("Ashamane") && WoW.CanCast("Ashamane") && WoW.CurrentComboPoints <= 2 && !ElunesGuidance) { WoW.CastSpell("Ashamane"); return; } if (ElunesGuidance && WoW.CanCast("ElunesGuidance") && WoW.CurrentComboPoints == 0 && WoW.Energy >= 30) { WoW.CastSpell("ElunesGuidance"); return; } if (NightElf && WoW.CanCast("Shadowmeld") && WoW.CurrentComboPoints < 5 && WoW.Energy >= 35 && WoW.PlayerHasBuff("TigersFury")) { WoW.CastSpell("Shadowmeld"); return; } if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Rake") && WoW.Energy >= 35) { // TODO : Code in bleed multiplier if (WoW.CurrentComboPoints < 5 && Bloodtalons && WoW.PlayerHasBuff("Bloodtalons") && WoW.TargetDebuffTimeRemaining("Rake") <= 500) { WoW.CastSpell("Rake"); return; } if (WoW.CurrentComboPoints < 5 && !WoW.TargetHasDebuff("Rake")) { WoW.CastSpell("Rake"); return; } if (WoW.CurrentComboPoints < 5 && WoW.TargetDebuffTimeRemaining("Rake") <= 300) { WoW.CastSpell("Rake"); return; } } if (LunarInspiration && !WoW.TargetHasDebuff("Moonfire") && WoW.IsSpellInRange("SkullBash") && WoW.Energy >= 30 && WoW.CurrentComboPoints < 5) { WoW.CastSpell("Moonfire"); return; } //if (LunarInspiration && WoW.IsSpellInRange("Moonfire") && WoW.CanCast("Moonfire") && WoW.Energy >= 30) //{ // if (WoW.CurrentComboPoints < 5 && WoW.TargetDebuffTimeRemaining("Moonfire") <= 4.2) // { // WoW.CastSpell("Moonfire"); // return; // } // if (WoW.CurrentComboPoints < 5 && !WoW.TargetHasDebuff("Moonfire")) // { // WoW.CastSpell("Moonfire"); // return; // } //} if (BrutalSlash && WoW.IsSpellInRange("Rake") && WoW.CanCast("BrutalSlash") && WoW.PlayerSpellCharges("BrutalSlash") == 3 && WoW.Energy >= 20) { WoW.CastSpell("BrutalSlash"); return; } if (WoW.IsSpellInRange("Shred") && WoW.CanCast("Shred") && WoW.CurrentComboPoints < 5 && WoW.Energy >= 40) { WoW.CastSpell("Shred"); return; } } } // AOE ROTATION if (combatRoutine.Type == RotationType.AOE) { // In combat, target is enemy, target is not player, i dont have prowl and i have buff catform if (WoW.IsInCombat && WoW.TargetIsEnemy && !WoW.TargetIsPlayer && !WoW.PlayerHasBuff("Prowl") && WoW.PlayerHasBuff("Cat Form")) { if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Rake") && !WoW.TargetHasDebuff("Rake") && WoW.Energy >= 35) { WoW.CastSpell("Rake"); return; } if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Thrash") && !WoW.TargetHasDebuff("Thrash") && WoW.Energy >= 50) { WoW.CastSpell("Thrash"); return; } if (WoW.IsSpellInRange("Rake") && WoW.CanCast("Swipe") && WoW.TargetHasDebuff("Thrash") && WoW.CurrentComboPoints < 5 && WoW.Energy >= 45) { WoW.CastSpell("Swipe"); return; } if (SavageRoar && WoW.CanCast("Savage Roar") && WoW.CurrentComboPoints == 5 && !WoW.PlayerHasBuff("Savage Roar") && WoW.Energy >= 40) { WoW.CastSpell("SavageRoar"); return; } if (WoW.IsSpellInRange("Rip") && WoW.CanCast("Rip") && WoW.CurrentComboPoints == 5 && !WoW.TargetHasDebuff("Rip") && WoW.Energy >= 30) { WoW.CastSpell("Rip"); return; } } } }
public override void Pulse() { if (WoW.IsMounted) { return; } int OOCPlea = 1; while (WoW.PlayerBuffStacks("Sins of the Many") < WoW.GroupSize && !WoW.IsInCombat && OOCAtonement) { WoW.TargetMember(OOCPlea); if (WoW.TargetHasBuff("Atonement")) { OOCPlea++; continue; } if (!WoW.CanCast("Plea")) { continue; } if (OOCPlea > WoW.GroupSize) { OOCPlea = 1; } WoW.TargetMember(OOCPlea); WoW.CastSpell("Plea"); OOCPlea++; } // While rapture is active, spread Power Word: Shield to players int RaptureSpread = 1; while (WoW.PlayerHasBuff("Rapture") && WoW.PartyLowestHealthPercent > 60) { WoW.TargetMember(RaptureSpread); if (WoW.TargetHasBuff("Power Word: Shield")) { RaptureSpread++; continue; } if (!WoW.CanCast("Power Word: Shield")) { continue; } if (RaptureSpread > WoW.GroupSize) { RaptureSpread = 1; } WoW.TargetMember(RaptureSpread); WoW.CastSpell("Power Word: Shield"); RaptureSpread++; } // Ask player for TankId when first loading Rotation if (WoW.TankId == 0) { var f = new frmEnterTankId { TopMost = true }; f.ShowDialog(); } // Use Angelic Feather for speed if enabled in UI if (WoW.CanCast("Angelic Feather") && WoW.IsMoving && !WoW.PlayerHasBuff("Angelic Feather") && UseFeatherForSpeed) { WoW.CastSpell("Angelic Feather"); return; } // Use Arcane Torrent if selected in UI if (WoW.CanCast("Arcane Torrent") && WoW.Mana < 90 && ArcaneTorrentUI && WoW.IsInCombat && !WoW.PlayerIsChanneling) { WoW.CastSpell("Arcane Torrent"); return; } var lowest = WoW.PartyLowestHealthPercent; int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent; Log.Write("Party Lowest HP: " + lowest); if (lowest >= DPSWhenPartyAbove && WoW.PartyMemberIsNeedingADispel == 0 && WoW.IsInCombat) { // If active Atonements are below UI threshold then spread Atonement with Plea until threshold is met int PleaStack = 1; while (WoW.PlayerBuffStacks("Sins of the Many") < ActiveAtonements && ActiveAtonements != 0) { WoW.TargetMember(PleaStack); if (WoW.TargetHasBuff("Atonement")) { PleaStack++; continue; } if (!WoW.CanCast("Plea")) { continue; } if (PleaStack > WoW.GroupSize) { PleaStack = 1; } WoW.TargetMember(PleaStack); WoW.CastSpell("Plea"); PleaStack++; } // Mitigate damage with Power Word: Shield if (WoW.CanCast("Power Word: Shield") && lowest < 90) { WoW.CastSpell("Power Word: Shield"); return; } //DPS Rotation WoW.TargetNearestEnemy(); if (WoW.HasTarget && WoW.TargetIsEnemy) { if (lowest < 99 && lowest > 95 && WoW.PlayerBuffStacks("Sins of the Many") < ActiveAtonements && ActiveAtonements != 0) { WoW.CastSpell("Plea"); return; } //Maintain Shadow Word: Pain(or Purge the Wicked, if you have taken this talent) on the target. if (WoW.TargetDebuffTimeRemaining("Shadow Word: Pain") < 400 && WoW.CanCast("Shadow Word: Pain") && WoW.Talent(6) != 1) { WoW.CastSpell("Shadow Word: Pain"); return; } if (WoW.TargetDebuffTimeRemaining("Purge the Wicked") < 400 && WoW.CanCast("Purge the Wicked") && WoW.Talent(6) == 1) { WoW.CastSpell("Purge the Wicked"); return; } //Use Schism on cooldown(if you have taken this talent). if (WoW.CanCast("Schism") && WoW.Talent(1) == 3) { WoW.CastSpell("Schism"); return; } //Use Penance on cooldown. if (WoW.CanCast("Penance")) { WoW.CastSpell("Penance"); return; } //Use Power Word: Solace on cooldown(if you have taken this talent). if (WoW.CanCast("Power Word: Solace") && WoW.Talent(4) == 1) { WoW.CastSpell("Power Word: Solace"); return; } if (WoW.CanCast("Shadowfiend") && WoW.Talent(4) != 3) { WoW.CastSpell("Shadowfiend"); return; } if (WoW.CanCast("Mindbender") && WoW.Talent(4) == 3) { WoW.CastSpell("Mindbender"); return; } //Use Smite as a filler. if (WoW.CanCast("Smite")) { WoW.CastSpell("Smite"); return; } } return; } if (WoW.PartyMemberIsNeedingADispel != 0) { currentTargetId = WoW.PartyMemberIsNeedingADispel; } var averageHp = WoW.PartyAverageHealthPercent; if (averageHp < 60 && WoW.CanCast("Power Infusion") && WoW.Talent(7) == 1) { WoW.CastSpell("Power Infusion"); // Off GCD no return needed } // Use Shadowfiend to boost healing output via Atonement if (averageHp < 90 && WoW.CanCast("Shadowfiend") && WoW.Talent(4) != 3 && WoW.IsInCombat) { WoW.TargetNearestEnemy(); WoW.CastSpell("Shadowfiend"); return; } // Use Mindbender for mana regardless of Party HP if (WoW.CanCast("Mindbender") && WoW.Talent(4) == 3 && WoW.IsInCombat && WoW.Mana < 90) { WoW.TargetNearestEnemy(); WoW.CastSpell("Mindbender"); return; } WoW.TargetMember(currentTargetId); // Target the lowest health party member or the member needing a dispell if (WoW.PartyMemberIsNeedingADispel != 0 && WoW.CanCast("Purify")) { WoW.CastSpell("Purify"); return; } // If we are targeting the tank and his HP < 20% Pain Suppression him if (lowest <= PainSuppressionHealth && WoW.CanCast("Pain Suppression") && WoW.TankId == currentTargetId) { WoW.CastSpell("Pain Suppression"); return; } // Uses Power Word: Radiance when UI values are met if (WoW.PlayerSpellCharges("PWRadiance") == 2 && WoW.CountAlliesUnderHealthPercentage(PWRHealth) >= PWRAlliesUnderHP) { WoW.CastSpell("PWRadiance"); return; } // Use Shadow Mend when DPSWhenPartyAbove is less than UI value if (lowest <= DPSWhenPartyAbove && WoW.CanCast("Shadow Mend")) { WoW.CastSpell("Shadow Mend"); return; } // Auto Light's Wrath For Dungeons if (WoW.CountAlliesUnderHealthPercentage(60) <= 3 && WoW.GroupSize <= 5 && WoW.PlayerBuffStacks("Sins of the Many") >= 3 && WoW.CanCast("Light's Wrath")) { WoW.TargetNearestEnemy(); WoW.CastSpell("Light's Wrath"); return; } // Auto Light's Wrath For Raids if (WoW.CountAlliesUnderHealthPercentage(60) >= 8 && WoW.GroupSize >= 5 && WoW.PlayerBuffStacks("Sins of the Many") >= 8 && WoW.CanCast("Light's Wrath")) { WoW.TargetNearestEnemy(); WoW.CastSpell("Light's Wrath"); return; } // When player uses Fade, PWRx2+Evangelism to ramp up atonement if (WoW.PlayerHasBuff("Fade") && !WoW.IsSpellOnCooldown("Evangelism") && WoW.Talent(7) != 3 && WoW.PlayerSpellCharges("PWRadiance") >= 1) { WoW.TargetMember(lowest); WoW.CastSpell("PWRadiance"); WoW.TargetMember(2); WoW.CastSpell("PWRadiance"); WoW.CastSpell("Evangelism"); WoW.TargetNearestEnemy(); return; } // When player uses Fade, PWRx2+Evangelism to ramp up atonement if (WoW.PlayerHasBuff("Fade") && WoW.Talent(7) != 3 && WoW.PlayerSpellCharges("PWRadiance") >= 1) { WoW.TargetMember(lowest); WoW.CastSpell("PWRadiance"); WoW.TargetMember(2); WoW.CastSpell("PWRadiance"); WoW.CastSpell("Evangelism"); WoW.TargetNearestEnemy(); return; } // Refresh PW:S on self (For Questing, doesn't Work in Group) if (WoW.PlayerBuffTimeRemaining("Power Word: Shield") < 400 && WoW.CanCast("Power Word: Shield") && WoW.GroupSize == 1) { WoW.CastSpell("Power Word: Shield"); return; } }
public override void Pulse() { if (WoW.HealthPercent == 0 || WoW.IsMounted) { return; } if (WoW.PlayerIsCasting) { return; } var TargetHp = WoW.PartyLowestHealthPercent; int TargetId = WoW.PartyMemberIdWithLowestHealthPercent; /* * if (WoW.PartyMemberIsNeedingADispel != 0 && * WoW.CanCast("Purify")) * { * WoW.TargetMember(WoW.PartyMemberIsNeedingADispel); * WoW.CastSpell("Purify"); * return; * } */ if (TargetId == 0) { return; } if (TargetHp == 100) { return; } var AverageHp = WoW.PartyAverageHealthPercent; //Damage when CleaveON toggle activated or when nothing to do (averageHp > 97) if (WoW.CleaveOn == true && !WoW.IsMoving) { WoW.TargetNearestEnemy(); if (WoW.CanCast("Holy Fire")) { WoW.CastSpell("Holy Fire"); } WoW.CastSpell("Smite"); return; } //AoE Healing Cooldowns if (WoW.CanCast("Divine Hymn") && AverageHp < 40) { WoW.CastSpell("Divine Hymn"); } if (WoW.CanCast("Apotheosis") && AverageHp < 60) { WoW.CastSpell("Apotheosis"); } //Light of Tuure if not already on the target and target low if (!WoW.TargetHasBuff("Light of Tuure") && WoW.CanCast("Light of Tuure") && TargetHp <= 50) { WoW.CastSpell("Light of Tuure"); } // Target the lowest health party member for all abilities below WoW.TargetMember(TargetId); if (WoW.CanCast("Prayer of Healing") && AverageHp < 85 && TargetHp > 70 && !WoW.IsMoving) { WoW.CastSpell("Prayer of Healing"); return; } // Guardian Spirit on Tank only! if (WoW.CanCast("Guardian Spirit") && WoW.TankHealth <= 20) { WoW.TargetMember(WoW.TankId); WoW.CastSpell("Guardian Spirit"); return; } //Serenity as a quick boost if (WoW.CanCast("Holy Word Serenity") && TargetHp <= 50) { WoW.CastSpell("Holy Word Serenity"); return; } // Flash Heal use on high damage or on Surge of Light proc if ((WoW.CanCast("Flash Heal") && TargetHp <= 51 && !WoW.IsMoving) || (WoW.CanCast("Flash Heal") && TargetHp <= 81 && WoW.PlayerHasBuff("Surge of Light"))) { WoW.CastSpell("Flash Heal"); return; } // Heal use to heal moderate to high damage. if (WoW.CanCast("Heal") && TargetHp <= 85 && !WoW.IsMoving) { WoW.CastSpell("Heal"); return; } //Renew if no one needs proper healing and we have the mana to spare if (WoW.CanCast("Renew") && !WoW.TargetHasBuff("Renew") && TargetHp <= 95 && WoW.Mana >= 80 && AverageHp >= 80) { WoW.CastSpell("Renew"); return; } //Prayer of Medning (almost) on cooldown if (WoW.CanCast("Prayer of Mending") && !WoW.IsSpellOnCooldown("Prayer of Mending") && !WoW.TargetHasBuff("Prayer of Mending") && TargetHp < 95) { WoW.CastSpell("Prayer of Mending"); return; } }
public override void Pulse() { Log.Write("group size: " + GroupSize() + " is in raid: " + isInRaid); tankTankingID = -1; groupSize = GroupSize(); currentMana = WoW.Mana; if (isInRaid) { if (!WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { raidTargetSelector(); Log.Write("tankid: " + tankPartyID + " tankid2: " + tankPartyID2 + " tank tanking: " + tankTankingID); if (targetPartyID != -1 && !(tankTankingID != -1 && TankRaidCurrentBOL != tankTankingID && IsInHealRangeParty(tankTankingID))) { TargetOnRaid(targetPartyID); } else if (tankTankingID != -1 && IsInHealRangeParty(tankTankingID)) { TargetOnRaid(tankTankingID); if (TankRaidCurrentBOL != tankTankingID) { if (!WoW.TargetHasBuff("Beacon of Light") && WoW.CanCast("Beacon of Light", true, true, false, false, false)) { WoW.CastSpell("Beacon of Light"); TankRaidCurrentBOL = tankTankingID; return; } } if (WoW.CanCast("Holy Shock", true, true, false, false, false) && currentMana >= 40) { WoW.CastSpell("Holy Shock"); return; } if (WoW.PlayerHasBuff("Divine Shield") && WoW.CanCast("Light of the Martyr", true, true, false, false, false)) { WoW.CastSpell("Light of the Martyr"); return; } if (isTalentBestowFaith && WoW.CanCast("Bestow Faith", true, true, false, false, false) && currentMana >= 40) { WoW.CastSpell("Bestow Faith"); return; } if (isTalentJoL && isInJudgmentRange() && WoW.CanCast("Judgment", false, true, false, false, false)) { WoW.CastSpell("Judgment"); return; } if (WoW.CanCast("Holy Light", true, true, false, false, false) && currentMana >= 70) { WoW.CastSpell("Holy Light"); lastCastedID = tankTankingID; return; } } if (targetPartyID != -1 && WoW.HasTarget && !WoW.TargetIsEnemy) { lastCastedID = -1; if (targetPartyID == tankTankingID && !WoW.TargetHasBuff("Beacon of Light") && WoW.CanCast("Beacon of Light", true, true, false, false, false)) { WoW.CastSpell("Beacon of Light"); TankRaidCurrentBOL = tankTankingID; return; } if (targetHealth <= LayonHandsHp && !WoW.TargetHasDebuff("Forbearance") && WoW.CanCast("Lay on Hands", true, true, false, false, false)) { WoW.CastSpell("Lay on Hands"); return; } if ((targetPartyID == tankPartyID || targetPartyID == tankPartyID2) && targetHealth <= BlessingofSacrificeHp && targetPartyID != 0 && WoW.HealthPercent >= 90 && WoW.CanCast("Blessing of Sacrifice", true, true, false, false, false)) { WoW.CastSpell("Blessing of Sacrifice"); return; } if (targetHealth <= HolyShockHp && WoW.CanCast("Holy Shock", true, true, false, false, false)) { WoW.CastSpell("Holy Shock"); return; } if (((targetHealth <= LightoftheMartyrHp && currentMana >= 50 && WoW.HealthPercent >= 85) || WoW.PlayerHasBuff("Divine Shield")) && WoW.CanCast("Light of the Martyr", true, true, false, false, false)) { WoW.CastSpell("Light of the Martyr"); return; } if (isTalentBestowFaith && targetPartyID == tankTankingID && WoW.CanCast("Bestow Faith", true, true, false, false, false)) { WoW.CastSpell("Bestow Faith"); return; } if (isTalentJoL && isInJudgmentRange() && WoW.CanCast("Judgment", false, true, false, false, false)) { WoW.CastSpell("Judgment"); return; } if (targetHealth <= FlashofLightHp && (partyMemberLow >= 3 || targetHealth <= 50) && currentMana >= 30 && WoW.CanCast("Flash of Light", true, true, false, false, false)) { WoW.CastSpell("Flash of Light"); lastCastedID = targetPartyID; return; } if (targetHealth <= HolyLightHp && WoW.CanCast("Holy Light", true, true, false, false, false)) { WoW.CastSpell("Holy Light"); lastCastedID = targetPartyID; return; } } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Judgment", true, true, true, false, true)) { WoW.CastSpell("Judgment"); return; } if (WoW.CanCast("Holy Shock", true, true, true, false, true)) { WoW.CastSpell("Holy Shock"); return; } } } else { if (WoW.TargetHealthPercent >= 95 && lastCastedID != tankPartyID && lastCastedID != tankPartyID2) { WoW.CastSpell("stopcasting"); return; } } } else { if (combatRoutine.Type == RotationType.SingleTarget && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) // Do Single Target Stuff here { partyTargetSelector(); if (tankPartyID != -1) { if (!PartyHasBuff("Beacon of Light", tankPartyID) && IsInHealRangeParty(tankPartyID) && WoW.CanCast("Beacon of Light", true, true, false, false, false)) { castSpellOnGrp("Beacon of Light", tankPartyID); return; } } if (targetPartyID != -1) { if (targetHealth <= LayonHandsHp && !PartyHasDeBuff("Forbearance", targetPartyID) && WoW.CanCast("Lay on Hands", true, true, false, false, false)) { castSpellOnGrp("Lay on Hands", targetPartyID); return; } /*if (targetHealth <= BlessingofProtectionHp && targetPartyID != tankPartyID && !PartyHasDeBuff("Forbearance", targetPartyID) && WoW.CanCast("Blessing of Protection", true, true, false, false, false)) * { * castSpellOnGrp("Blessing of Protection", targetPartyID); * return; * }*/ if (targetPartyID == tankPartyID && targetHealth <= BlessingofSacrificeHp && targetPartyID != 0 && WoW.HealthPercent >= 90 && WoW.CanCast("Blessing of Sacrifice", true, true, false, false, false)) { castSpellOnGrp("Blessing of Sacrifice", targetPartyID); return; } /* if (partyMemberReallyLow >= 3 && WoW.CanCast("Tyrs Deliverance", true, true, false, false, false)) * { * WoW.CastSpell("Tyrs Deliverance"); * return; * }*/ /* if (partyMemberLow >= 3 && WoW.CanCast("Light of Dawn", true, true, false, false, false)) * { * WoW.CastSpell("Light of Dawn"); * return; * }*/ if (targetHealth <= HolyShockHp && WoW.CanCast("Holy Shock", true, true, false, false, false)) { castSpellOnGrp("Holy Shock", targetPartyID); return; } if (targetHealth <= LightoftheMartyrHp && WoW.HealthPercent >= 85 && targetPartyID != 0 && WoW.CanCast("Light of the Martyr", true, true, false, false, false)) { castSpellOnGrp("Light of the Martyr", targetPartyID); return; } if (isTalentBestowFaith && targetHealth <= BestowFaithHp && WoW.CanCast("Bestow Faith", true, true, false, false, false)) { castSpellOnGrp("Bestow Faith", targetPartyID); return; } if (targetHealth <= FlashofLightHp && WoW.CanCast("Flash of Light", true, true, false, false, false)) { castSpellOnGrp("Flash of Light", targetPartyID); return; } if (targetHealth <= HolyLightHp && WoW.CanCast("Holy Light", true, true, false, false, false) && WoW.IsInCombat) { castSpellOnGrp("Holy Light", targetPartyID); return; } } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Judgment", true, true, true, false, true)) { WoW.CastSpell("Judgment"); return; } if (WoW.CanCast("Holy Shock", true, true, true, false, true)) { WoW.CastSpell("Holy Shock"); return; } if (WoW.CanCast("Crusader Strike", true, true, true, true, true)) { WoW.CastSpell("Crusader Strike"); return; } if (WoW.CanCast("Consecration", false, true, false, false, false) && WoW.CanCast("Crusader Strike", true, false, true, false, true)) { WoW.CastSpell("Consecration"); return; } } if (WoW.HasTarget && !WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.TargetHealthPercent <= LayonHandsHp && !WoW.TargetHasDebuff("Forbearance") && WoW.CanCast("Lay on Hands", true, true, false, false, false)) { WoW.CastSpell("Lay on Hands"); return; } if (WoW.TargetHealthPercent <= HolyShockHp && WoW.CanCast("Holy Shock", true, true, false, false, false)) { WoW.CastSpell("Holy Shock"); return; } if (WoW.TargetHealthPercent <= LightoftheMartyrHp && WoW.HealthPercent >= 85 && WoW.CanCast("Light of the Martyr", true, true, false, false, false)) { WoW.CastSpell("Light of the Martyr"); return; } if (isTalentBestowFaith && WoW.TargetHealthPercent <= BestowFaithHp && WoW.CanCast("Bestow Faith", true, true, false, false, false)) { WoW.CastSpell("Bestow Faith"); return; } if (WoW.TargetHealthPercent <= FlashofLightHp && WoW.CanCast("Flash of Light", true, true, false, false, false)) { WoW.CastSpell("Flash of Light"); return; } if (WoW.TargetHealthPercent <= HolyLightHp && WoW.CanCast("Holy Light", true, true, false, false, false)) { WoW.CastSpell("Holy Light"); return; } } /*if (tankPartyID != -1 && WoW.IsInCombat && IsInHealRangeParty(tankPartyID) && WoW.CanCast("Holy Light", true, true, false, false, false)) * { * castSpellOnGrp("Holy Light", tankPartyID); * return; * }*/ } if (combatRoutine.Type == RotationType.SingleTargetCleave) // Do Single Target Stuff here { partyTargetSelector(); if (tankPartyID != -1) { if (!PartyHasBuff("Beacon of Light", tankPartyID) && IsInHealRangeParty(tankPartyID) && WoW.CanCast("Beacon of Light", true, true, false, false, false)) { castSpellOnGrp("Beacon of Light", tankPartyID); return; } } if (targetPartyID != -1) { if (targetHealth <= LayonHandsHp && !PartyHasDeBuff("Forbearance", targetPartyID) && WoW.CanCast("Lay on Hands", true, true, false, false, false)) { castSpellOnGrp("Lay on Hands", targetPartyID); return; } if (targetHealth <= BlessingofProtectionHp && !PartyHasDeBuff("Forbearance", targetPartyID) && targetPartyID != tankPartyID && WoW.CanCast("Blessing of Protection", true, true, false, false, false)) { castSpellOnGrp("Blessing of Protection", targetPartyID); return; } if (targetHealth <= BlessingofSacrificeHp && !PartyHasDeBuff("Forbearance", targetPartyID) && targetPartyID != 0 && WoW.HealthPercent >= 90 && WoW.CanCast("Blessing of Sacrifice", true, true, false, false, false)) { castSpellOnGrp("Blessing of Sacrifice", targetPartyID); return; } /*if (partyMemberReallyLow >= 3 && WoW.CanCast("Tyrs Deliverance", true, true, false, false, false)) * { * WoW.CastSpell("Tyrs Deliverance"); * return; * }*/ /*if (partyMemberLow >= 3 && WoW.CanCast("Light of Dawn", true, true, false, false, false)) * { * WoW.CastSpell("Light of Dawn"); * return; * }*/ if (targetHealth <= HolyShockHp && WoW.CanCast("Holy Shock", true, true, false, false, false)) { castSpellOnGrp("Holy Shock", targetPartyID); return; } if (targetHealth <= LightoftheMartyrHp && WoW.HealthPercent >= 85 && targetPartyID != 0 && WoW.CanCast("Light of the Martyr", true, true, false, false, false)) { castSpellOnGrp("Light of the Martyr", targetPartyID); return; } if (isTalentBestowFaith && targetHealth <= BestowFaithHp && WoW.CanCast("Bestow Faith", true, true, false, false, false)) { castSpellOnGrp("Bestow Faith", targetPartyID); return; } if (targetHealth <= HolyLightHp && WoW.CanCast("Flash of Light", true, true, false, false, false)) { castSpellOnGrp("Flash of Light", targetPartyID); return; } } if (tankPartyID != -1 && WoW.IsInCombat && IsInHealRangeParty(tankPartyID) && WoW.CanCast("Holy Light", true, true, false, false, false)) { castSpellOnGrp("Holy Light", tankPartyID); return; } } if (combatRoutine.Type == RotationType.AOE) { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Judgment", true, true, true, false, true)) { WoW.CastSpell("Judgment"); return; } if (WoW.CanCast("Holy Shock", true, true, true, false, true)) { WoW.CastSpell("Holy Shock"); return; } if (WoW.CanCast("Crusader Strike", true, true, true, true, true)) { WoW.CastSpell("Crusader Strike"); return; } if (WoW.CanCast("Consecration", false, true, false, false, false) && WoW.CanCast("Crusader Strike", true, false, true, false, true)) { WoW.CastSpell("Consecration"); return; } } partyTargetSelector(); if (targetPartyID != -1) { /*if (partyMemberLow >= 3 && WoW.CanCast("Light of Dawn", true, true, false, false, false)) * { * WoW.CastSpell("Light of Dawn"); * return; * }*/ if (targetHealth <= LightoftheMartyrHp && WoW.HealthPercent >= 85 && targetPartyID != 0 && WoW.CanCast("Light of the Martyr", true, true, false, false, false)) { castSpellOnGrp("Light of the Martyr", targetPartyID); return; } if (isTalentBestowFaith && targetPartyID != -1 && targetHealth <= BestowFaithHp && WoW.CanCast("Bestow Faith", true, true, false, false, false)) { castSpellOnGrp("Bestow Faith", targetPartyID); return; } } } } }
public override void Pulse() { if (!WoW.InGame) { return; } if (WoW.TankId == 0) { string currentTalents = WoW.Talent(1) + "" + WoW.Talent(2) + "" + WoW.Talent(3) + "" + WoW.Talent(4) + "" + WoW.Talent(5) + "" + WoW.Talent(6) + "" + WoW.Talent(7); if (supportedTalents != currentTalents) { MessageBox.Show("You are not using the supported talents " + supportedTalents + ", your currnet talents are " + currentTalents + ".", "Frozen", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { Log.Write("Talents are correct", Color.Green); } if (!WoW.PlayerHasBuff("Beacon of Faith") && !WoW.PlayerHasBuff("Beacon of Light") && WoW.CanCast("Beacon of Faith")) { WoW.CastSpellOnMe("Beacon of Faith"); } var f = new frmEnterTankId { TopMost = true }; f.ShowDialog(); } if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted) { return; } if (WoW.PlayerIsCasting) { return; } var lowest = WoW.PartyLowestHealthPercent; int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent; if (WoW.PartyMemberIsNeedingADispel != 0) { currentTargetId = WoW.PartyMemberIsNeedingADispel; } if (currentTargetId == 0) { return; } if (lowest == 100) { return; } var averageHp = WoW.PartyAverageHealthPercent; if (WoW.PlayerHealthPercent < 10 && WoW.IsInCombat && WoW.CanCast("Divine Shield") && !WoW.PlayerHasDebuff("Forbearance")) { WoW.CastSpell("Divine Shield"); } if (averageHp < 80 && WoW.CanCast("Aura Mastery")) { WoW.CastSpell("Aura Mastery"); } if (averageHp < 60 && WoW.CanCast("Avenging Wrath") && !WoW.PlayerHasBuff("Aura Mastery")) { WoW.CastSpell("Avenging Wrath"); } WoW.TargetMember(currentTargetId); // Target the lowest health party member if (WoW.PartyMemberIsNeedingADispel != 0 && WoW.CanCast("Cleanse")) { WoW.CastSpell("Cleanse"); return; } // Beacon of Light or Beacon of Virtue(if selected) maintain on your primary target at all times. if (WoW.Talent(7) == 3) { if (WoW.TankHealth > 50 && averageHp > 90 && WoW.CanCast("Beacon of Virtue") && WoW.TankId == currentTargetId && !WoW.TargetHasBuff("Beacon of Virtue")) { WoW.CastSpell("Beacon of Virtue"); } } if (WoW.Talent(7) == 1) { if (WoW.CanCast("Beacon of Light") && WoW.TankId == currentTargetId && !WoW.TargetHasBuff("Beacon of Light")) { WoW.CastSpell("Beacon of Light"); } } if (WoW.CanCast("Lay On Hands") && lowest <= 20 && // Use LOH if tanks health < 20 % !WoW.TargetHasDebuff("Forbearance") && // Make sure we dont LOH a tank with forbearance debuff WoW.TankId == currentTargetId) // Make sure we only use LOH on tank { WoW.CastSpell("Lay On Hands"); return; } if (WoW.CanCast("Blessing of Sacrifice") && lowest <= 30 && WoW.TankId == currentTargetId && !WoW.TargetHasBuff("Shield Wall Oto")) { WoW.CastSpell("Blessing of Sacrifice"); return; } // Holy Shock use on cooldown to generate Infusion of Light procs. // Consume Infusion of Light procs using the appropriate heal before your next Holy Shock. if (WoW.CanCast("Holy Shock") && !WoW.PlayerHasBuff("Infusion of Light")) { WoW.CastSpell("Holy Shock"); return; } if (WoW.Talent(5) == 3) { if (WoW.CanCast("Holy Prism") && WoW.TankId == currentTargetId && WoW.IsInCombat) { WoW.CastSpell("Holy Prism"); return; } } // Bestow Faith on cooldown (if selected). // Judgment to maintain the buff from Judgment of Light (if selected). // Light of the Martyr a potent emergency heal as long as you have health to spare. if (WoW.CanCast("Light of the Martyr") && lowest <= 40 && WoW.PlayerHealthPercent >= 70) { WoW.CastSpell("Light of the Martyr"); return; } // Flash of Light use as an emergency heal to save players facing death. if (WoW.CanCast("Flash of Light") && lowest <= 50 && !WoW.IsMoving) { WoW.CastSpell("Flash of Light"); return; } // Holy Light use to heal moderate to high damage. if (WoW.CanCast("Holy Light") && lowest <= 90 && !WoW.IsMoving) { WoW.CastSpell("Holy Light"); return; } if (WoW.CanCast("Tyr's Deliverance") && !WoW.IsMoving) { WoW.TargetNearestEnemy(); if (WoW.HasTarget && WoW.TargetIsEnemy) { WoW.CastSpell("Tyr's Deliverance"); } } }
public override void Pulse() { if (WoW.IsMounted) { return; } if (WoW.TankId == 0) { var f = new frmEnterTankId { TopMost = true }; f.ShowDialog(); } if (!WoW.IsInCombat && WoW.CanCast("Angelic Feather") && WoW.IsMoving && !WoW.PlayerHasBuff("Angelic Feather")) { WoW.CastSpell("Angelic Feather"); return; } var lowest = WoW.PartyLowestHealthPercent; int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent; Log.Write("Party Lowest HP: " + lowest); if (lowest >= 80 && WoW.PartyMemberIsNeedingADispel == 0 && WoW.IsInCombat) { WoW.TargetNearestEnemy(); //DPS Rotation if (WoW.HasTarget && WoW.TargetIsEnemy) { //Maintain Shadow Word: Pain(or Purge the Wicked, if you have taken this talent) on the target. if (WoW.TargetDebuffTimeRemaining("Shadow Word: Pain") < 400 && WoW.CanCast("Shadow Word: Pain") && WoW.Talent(6) != 1) { WoW.CastSpell("Shadow Word: Pain"); return; } if (WoW.TargetDebuffTimeRemaining("Purge the Wicked") < 400 && WoW.CanCast("Purge the Wicked") && WoW.Talent(6) == 1) { WoW.CastSpell("Purge the Wicked"); return; } //Use Schism on cooldown(if you have taken this talent). if (WoW.CanCast("Schism") && WoW.Talent(1) == 3) { WoW.CastSpell("Schism"); return; } if (WoW.PlayerHasBuff("Overloaded with Light") && WoW.CanCast("Light's Wrath")) { WoW.CastSpell("Light's Wrath"); return; } //Use Penance on cooldown. if (WoW.CanCast("Penance")) { WoW.CastSpell("Penance"); return; } //Use Power Word: Solace on cooldown(if you have taken this talent). if (WoW.CanCast("Power Word: Solace") && WoW.Talent(4) == 1) { WoW.CastSpell("Power Word: Solace"); return; } if (WoW.CanCast("Shadowfiend") && WoW.Talent(4) != 3) { WoW.CastSpell("Shadowfiend"); return; } if (WoW.CanCast("Mindbender") && WoW.Talent(4) == 3) { WoW.CastSpell("Mindbender"); return; } //Use Smite as a filler. if (WoW.CanCast("Smite")) { WoW.CastSpell("Smite"); return; } } return; } if (WoW.PartyMemberIsNeedingADispel != 0) { currentTargetId = WoW.PartyMemberIsNeedingADispel; } var averageHp = WoW.PartyAverageHealthPercent; if (averageHp < 60 && WoW.CanCast("Power Infusion")) { WoW.CastSpell("Power Infusion"); // Off GCD no return needed } if (WoW.CanCast("Shadowfiend") && WoW.Talent(4) != 3 && WoW.IsInCombat && WoW.Mana < 90) { WoW.TargetNearestEnemy(); WoW.CastSpell("Shadowfiend"); return; } if (WoW.CanCast("Mindbender") && WoW.Talent(4) == 3 && WoW.IsInCombat && WoW.Mana < 90) { WoW.TargetNearestEnemy(); WoW.CastSpell("Mindbender"); return; } WoW.TargetMember(currentTargetId); // Target the lowest health party member or the member needing a dispell if (WoW.PartyMemberIsNeedingADispel != 0 && WoW.CanCast("Purify")) { WoW.CastSpell("Purify"); return; } // If we are targeting the tank and his HP < 20% Pain Suppression him if (lowest <= 20 && WoW.CanCast("Pain Suppression") && WoW.TankId == currentTargetId) { WoW.CastSpell("Pain Suppression"); return; } // If we are targeting the tank and his HP < 20% Pain Suppression him if (lowest <= 95 && WoW.CanCast("Power Word: Shield") && WoW.TankId == currentTargetId) { WoW.CastSpell("Power Word: Shield"); return; } if (WoW.CanCast("Penance") && lowest <= 60 && WoW.TankId == currentTargetId) { WoW.CastSpell("Penance"); return; } if (WoW.CanCast("Shadow Mend") && (lowest < 80 || (WoW.TargetHasBuff("Attonement") && lowest < 99))) { WoW.CastSpell("Shadow Mend"); return; } if (WoW.CanCast("Plea") && lowest < 99 && lowest >= 80) { WoW.CastSpell("Plea"); return; } // Mitigate as much damage as possible and always keep PWS up on self if (WoW.PlayerBuffTimeRemaining("Power Word: Shield") < 400 && WoW.CanCast("Power Word: Shield")) { WoW.CastSpell("Power Word: Shield"); return; } }
public override void Pulse() { /*if (WoW.TankId == 0) * { * string currentTalents = WoW.Talent(1) + "" + WoW.Talent(2) + "" + WoW.Talent(3) + "" + WoW.Talent(4) + "" + WoW.Talent(5) + "" + WoW.Talent(6) + "" + WoW.Talent(7); * if (supportedTalents != currentTalents) * { * MessageBox.Show($"You are not using the supported talents {supportedTalents}, your currnet talents are {currentTalents}.", "Frozen", * MessageBoxButtons.OK, MessageBoxIcon.Error); * } * else * { * Log.Write("Talents are correct", Color.Green); * } * * * * var f = new frmEnterTankId {TopMost = true}; * f.ShowDialog(); * }*/ if (WoW.HealthPercent == 0 || WoW.IsMounted) { return; } if (WoW.PlayerIsCasting) { return; } var lowest = WoW.PartyLowestHealthPercent; int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent; if (WoW.PartyMemberIsNeedingADispel != 0) { currentTargetId = WoW.PartyMemberIsNeedingADispel; } if (currentTargetId == 0) { return; } if (lowest == 100) { return; } var averageHp = WoW.PartyAverageHealthPercent; //AoE Healing if (averageHp < 40 && WoW.CanCast("Divine Hymn")) { WoW.CastSpell("Divine Hymn"); } if (averageHp < 60 && WoW.CanCast("Apotheosis")) { WoW.CastSpell("Apotheosis"); } WoW.TargetMember(currentTargetId); // Target the lowest health party member for all abilities below if (averageHp < 80 && WoW.CanCast("Prayer of Healing") && lowest > 80) { WoW.CastSpell("Prayer of Healing"); return; } if (WoW.PartyMemberIsNeedingADispel != 0 && WoW.CanCast("Purify")) { WoW.CastSpell("Purify"); return; } if (WoW.CanCast("Guardian Spirit") && lowest <= 20 && // Use LOH if tanks health < 20 % !WoW.IsSpellOnCooldown("Guardian Spirit") && // Make sure we dont try and use it whilst on cooldown WoW.TankId == currentTargetId) // Make sure we only use LOH on tank { WoW.CastSpell("Guardian Spirit"); return; } if (WoW.CanCast("Holy Word Serenity") && lowest <= 50 && // Use LOH if tanks health < 20 % !WoW.IsSpellOnCooldown("Holy Word Serenity")) // Make sure we dont try and use it whilst on cooldown { WoW.CastSpell("Holy Word Serenity"); return; } // Flash of Light use as an emergency heal to save players facing death. if (WoW.CanCast("Flash Heal") && lowest <= 50 && !WoW.IsMoving) { WoW.CastSpell("Flash Heal"); return; } // Holy Light use to heal moderate to high damage. if (WoW.CanCast("Heal") && lowest <= 80 && !WoW.IsMoving) { WoW.CastSpell("Heal"); return; } if (WoW.CanCast("Light of Tuure") && lowest <= 85 && !WoW.IsSpellOnCooldown("Light of Tuure") && !WoW.TargetHasBuff("Light of Tuure")) // Make sure we dont try and use it whilst on cooldown { WoW.CastSpell("Light of Tuure"); return; } if (WoW.CanCast("Renew") && lowest <= 90 && // Make sure we dont try and use it whilst on cooldown WoW.IsMoving) { WoW.CastSpell("Renew"); return; } if (WoW.CanCast("Prayer of Mending") && lowest <= 95 && !WoW.IsSpellOnCooldown("Prayer of Mending") && // Make sure we dont try and use it whilst on cooldown !WoW.TargetHasBuff("Prayer of Mending")) // Make sure we only use PoM on tank { WoW.CastSpell("Prayer of Mending"); return; } }
public override void Pulse() { Log.Write("Mana: " + WoW.Mana, Color.Red); if (WoW.TankId == 0) { var f = new frmEnterTankId { TopMost = true }; f.ShowDialog(); } if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted) { return; } if (WoW.PlayerIsCasting) { return; } var lowest = WoW.PartyLowestHealthPercent; var currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent; var averageHp = WoW.PartyAverageHealthPercent; WoW.TargetMember(currentTargetId); if (currentTargetId == 0) { return; } if (lowest == 100) { return; } if (WoW.GroupSize == 5) { Log.Write($"Lowest Health Target = [/target party{currentTargetId}] health = {averageHp}"); } else { Log.Write($"Lowest Health Target = [/target raid{currentTargetId}] health = {averageHp}"); } if (lowest < 85 && !WoW.IsSpellOnCooldown("ThunderFocusTea")) { WoW.CastSpell("ThunderFocusTea"); } if (WoW.PlayerHasBuff("ThunderFocusTea")) { if (averageHp < 70 && WoW.CanCast("EssenceFont") && !WoW.IsSpellOnCooldown("EssenceFont") && !WoW.PlayerHasBuff("EssenceFont")) { WoW.CastSpell("EssenceFont"); } if (averageHp < 90 && WoW.CanCast("Vivify") && !WoW.IsSpellOnCooldown("Vivify")) { WoW.CastSpell("Vivify"); } } if (WoW.IsInCombat && WoW.Mana <= 70 && !WoW.IsSpellOnCooldown("Manatea")) { WoW.CastSpell("Manatea"); return; } if (WoW.CanCast("RenewingMist") && WoW.IsInCombat && !WoW.TargetHasBuff("RenewingMist") && !WoW.PlayerHasBuff("RenewingMist") && !WoW.IsSpellOnCooldown("RenewingMist")) { WoW.CastSpell("RenewingMist"); return; } if (UseCooldowns) { if (lowest > 90) { if (WoW.CanCast("RSK") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { WoW.CastSpell("RSK"); return; } if (WoW.CanCast("BlackoutKick") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.PlayerBuffStacks("BlackoutBuff") == 3) { WoW.CastSpell("BlackoutKick"); return; } if (WoW.CanCast("Tiger") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.PlayerBuffStacks("BlackoutBuff") < 3) { WoW.CastSpell("Tiger"); return; } } } if (WoW.CanCast("Revival") && averageHp < 65 && !WoW.IsSpellOnCooldown("Revival")) { WoW.CastSpell("Revival"); return; } if (WoW.CanCast("LifeCocoon") && lowest <= 25 && !WoW.IsSpellOnCooldown("LifeCocoon")) { WoW.CastSpell("LifeCocoon"); return; } if (averageHp < 75) { if (WoW.CanCast("InvokeChiJitheRedCrane") && !WoW.IsSpellOnCooldown("InvokeChiJitheRedCrane")) { WoW.CastSpell("InvokeChiJitheRedCrane"); return; } if (WoW.CanCast("EssenceFont") && !WoW.IsSpellOnCooldown("EssenceFont") && !WoW.PlayerHasBuff("EssenceFont")) { WoW.CastSpell("EssenceFont"); return; } if (WoW.CanCast("Vivify")) { WoW.CastSpell("Vivify"); return; } } if (WoW.Level > 100) { if (WoW.CanCast("SheilunsGift") && lowest <= 75 && !WoW.IsMoving && WoW.PlayerSpellCharges("SheilunsGift") >= 4) { WoW.CastSpell("SheilunsGift"); return; } } if (WoW.CanCast("EnvelopingMist") && lowest <= 70 && !WoW.IsMoving && !WoW.TargetHasBuff("EnvelopingMist") && WoW.LastSpell != ("EnvelopingMist")) { WoW.CastSpell("EnvelopingMist"); return; } if (WoW.CanCast("Vivify") && lowest <= 65) { WoW.CastSpell("Vivify"); return; } if (WoW.CanCast("Effuse") && lowest <= 90 && !WoW.PlayerIsChanneling) { WoW.CastSpell("Effuse"); return; } if (WoW.CanCast("ChiWave") && lowest <= 90 && WoW.IsInCombat) { WoW.CastSpell("ChiWave"); return; } if (WoW.IsInCombat && WoW.Mana <= 70 && !WoW.IsSpellOnCooldown("Manatea")) { WoW.CastSpell("Manatea"); } }
// Checks current Mana // Checks if currently in game // Allows Tank ID Selection public override void Pulse() { if (!WoW.InGame) { return; } if (WoW.TankId == 0) { var f = new frmEnterTankId { TopMost = true }; f.ShowDialog(); } // Checks if player is dead, mounted or casting and does nothing if true if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted) { return; } if (WoW.PlayerIsCasting) { return; } // Sets a variable for the player with the lowest HP var lowest = WoW.PartyLowestHealthPercent; // Sets a variable for our current target var currentTargetID = WoW.PartyMemberIdWithLowestHealthPercent; // Sets variable for the average party HP var averageHp = WoW.PartyAverageHealthPercent; // Sets our target to be the player with the lowest health percentage WoW.TargetMember(currentTargetID); // Checks if player has a target or if their target is at full health and if so it does nothing. if (currentTargetID == 0) { return; } if (lowest == 100) { return; } // DPS Rotation // Checks is cleave button is turned on. if (combatRoutine.Type == RotationType.Cleave) { // Cast Rising Sun Kick if (WoW.CanCast("RisingSunKick") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { WoW.CastSpell("RisingSunKick"); return; } // Cast Blackout kick if you have 3 buff stacks if (WoW.CanCast("Blackout Kick") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.PlayerBuffStacks("Blackout Buff") == 3) { WoW.CastSpell("Blackout Kick"); return; } // Cast Tiger palm if you dont have 3 buff stacks if (WoW.CanCast("Tiger Palm") && WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.PlayerBuffStacks("Blackout Buff") < 3) { WoW.CastSpell("Tiger Palm"); return; } } //CoolDowns // If lowest HP party member has less than 85% HP then cast Thunder Focus Tea if (lowest <= 85 && !WoW.IsSpellOnCooldown("Thunder Focus Tea")) { WoW.CastSpell("Thunder Focus Tea"); } // Checks if player has Thunder Focus Tea buff if (WoW.PlayerHasBuff("Thunder Focus Tea")) { // If Player has Thunder Focus tea Buff and Average party HP is 65% then cast Essence Font if (averageHp <= 65 && WoW.CanCast("Essence Font") && !WoW.IsSpellOnCooldown("Essence Font") && !WoW.PlayerHasBuff("Essence Font")) { WoW.CastSpell("Essence Font"); } // If Player has Thunder Focus tea Buff and Average party HP is 65% then cast Vivify if (averageHp <= 90 && WoW.CanCast("Vivify") && !WoW.IsSpellOnCooldown("Vivify")) { WoW.CastSpell("Vivify"); } } //Cast Mana Tea if mana is less than or equal to 70% if (WoW.IsInCombat && WoW.Mana <= 70 && !WoW.IsSpellOnCooldown("Mana Tea")) { WoW.CastSpell("Mana Tea"); return; } // If the average HP of party is below 65% cast Revival if (WoW.CanCast("Revival") && averageHp <= 65 && !WoW.IsSpellOnCooldown("Revival")) { WoW.CastSpell("Revival"); return; } // If Tank HP is below 15% cast Life Cocoon on Tank if (WoW.TankHealth <= 25 && WoW.TankId == currentTargetID && WoW.CanCast("Life Cocoon") && !WoW.IsSpellOnCooldown("Life Cocoon")) { WoW.CastSpell("Life Cocoon"); return; } // If party hits 15% HP Cast life Cocoon if (WoW.CanCast("Life Cocoon") && lowest <= 15 && !WoW.IsSpellOnCooldown("Life Cocoon")) { WoW.CastSpell("Life Cocoon"); return; } // Average Healing Priority // If the average Hp of the Party is 75% then cast Chi Ji if (averageHp < 80) { if (WoW.CanCast("InvokeChiJitheRedCrane") && !WoW.IsSpellOnCooldown("InvokeChiJitheRedCrane")) { WoW.CastSpell("InvokeChiJitheRedCrane"); return; } // If the average Hp of the Party is 75% then cast Essence Font if (WoW.CanCast("Essence Font") && !WoW.IsSpellOnCooldown("Essence Font") && !WoW.PlayerHasBuff("Essence Font")) { WoW.CastSpell("Essence Font"); return; } // If the average Hp of the Party is 75% then cast Vivify if (WoW.CanCast("Vivify")) { WoW.CastSpell("Vivify"); return; } } // If Renewing Mist can be cast on player without it it will be casted. if (WoW.CanCast("Renewing Mist") && WoW.IsInCombat && !WoW.TargetHasBuff("Renewing Mist") && !WoW.PlayerHasBuff("Renewing Mist") && !WoW.IsSpellOnCooldown("Renewing Mist")) { WoW.CastSpell("Renewing Mist"); return; } // If above level 100 then cast Sheilun's Gift when not moving if (WoW.Level > 100) { if (WoW.CanCast("Sheiluns Gift") && lowest <= 75 && !WoW.IsMoving && WoW.PlayerSpellCharges("Sheiluns Gift") >= 5) { WoW.CastSpell("Sheiluns Gift"); return; } } // Cast Enveloping Mist and does not cast it if it was the last spell cast. if (WoW.CanCast("Enveloping Mist") && lowest <= 70 && !WoW.IsMoving && !WoW.TargetHasBuff("Enveloping Mist") && WoW.LastSpell != ("Enveloping Mist")) { WoW.CastSpell("Enveloping Mist"); return; } // Casts Vivfy on target with less than or 65% HP if (WoW.CanCast("Vivify") && lowest <= 65) { WoW.CastSpell("Vivify"); return; } // Casts Effuse on target with less than or 90% HP if (WoW.CanCast("Effuse") && lowest <= 90 && !WoW.PlayerIsChanneling) { WoW.CastSpell("Effuse"); return; } // Casts Chi Wave on target with less than or 65% HP if (WoW.CanCast("Chi Wave") && lowest <= 95 && WoW.IsInCombat) { WoW.CastSpell("Chi Wave"); return; } }