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 Pulse() { TimerReset(); if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here //if (WoW.HasTarget && WoW.TargetIsEnemy) //First things go first //{ /* if (WoW.TargetIsCasting && WoW.IsSpellInRange("Wind Shear")) //interupt every spell - need to add kickable spells * { * WoW.CastSpell("Wind Shear"); * return; * }*/ { if (WoW.IsMoving && WoW.PartyLowestHealthPercent <= 70 && WoW.CanCast("Spiritwalker's Grace") && !WoW.PlayerHasBuff("Spiritwalker's Grace")) { WoW.CastSpell("Spiritwalker's Grace"); return; } } if (WoW.CanCast("Riptide")) { WoW.CastSpell("Riptide"); return; } if (WoW.CanCast("Cloudburst Totem")) { WoW.CastSpell("Cloudburst Totem"); return; } if (WoW.CanCast("Healing Stream Totem")) { WoW.CastSpell("Healing Stream Totem"); return; } if (WoW.CanCast("Healing Tide Totem") && WoW.CountAlliesUnderHealthPercentage(60) >= 6) { WoW.CastSpell("Healing Tide Totem"); return; } if (WoW.CountAlliesUnderHealthPercentage(80) >= 3 && WoW.CanCast("Chain Heal")) { WoW.TargetMember(WoW.PartyMemberIdWithLowestHealthPercent); WoW.CastSpell("Chain Heal"); return; } if (WoW.CanCast("Healing Surge") && WoW.PlayerHasBuff("Tidal Waves") && WoW.PartyLowestHealthPercent <= 60) { WoW.TargetMember(WoW.PartyMemberIdWithLowestHealthPercent); WoW.CastSpell("Healing Surge"); return; } if (WoW.CanCast("Healing Wave") && WoW.PartyLowestHealthPercent <= 80) { WoW.TargetMember(WoW.PartyMemberIdWithLowestHealthPercent); WoW.CastSpell("Healing Wave"); 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; } }