public override void Pulse() { var FreeBeers = WoW.PlayerSpellCharges("Ironskin Brew"); //Don't Interrupt. if (WoW.PlayerIsCasting || WoW.PlayerIsChanneling) { return; } //Don't continue out of combat if (!WoW.IsInCombat) { return; } if (FreeBeers == 3) { //Light Stagger (But still might kill us. Throw ISB if ((Stagger == StaggerLevel.Light || Stagger == StaggerLevel.None) && NoIsbOrIsbExpiresSoon()) { Log.Write("FreeBeers == 3 and Stagger is Light or less, and (NoISB or ISB Expiring)", Color.SlateBlue); if (WoW.CanCast("Ironskin Brew")) { WoW.CastSpell("Ironskin Brew"); } return; } //If we have ISB on and > 3 seconds left throw Purifying if (WoW.PlayerHasBuff("Ironskin Brew") && WoW.PlayerBuffTimeRemaining("Ironskin Brew") > 3 && (Stagger == StaggerLevel.Medium || Stagger == StaggerLevel.Heavy)) { Log.Write("FreeBeers == 3 and ISB uptime > 3 and our stagger > light ", Color.SlateBlue); if (WoW.CanCast("Purifying Brew")) { WoW.CastSpell("Purifying Brew"); } return; } } if (FreeBeers == 2) { //If ISB has slipped or less than 3 seconds left then cast if (!WoW.PlayerHasBuff("Ironskin Brew")) { Log.Write("FreeBeers == 2 but Player doesn't have Ironskin Brew Buff"); if (WoW.CanCast("Ironskin Brew")) { WoW.CastSpell("Ironskin Brew"); } return; } if (WoW.PlayerHasBuff("Ironskin Brew") && WoW.PlayerBuffTimeRemaining("Ironskin Brew") <= 3) { Log.Write("FreeBeers == 2 but player's ISB buff has less than 3 secos"); if (WoW.CanCast("Ironskin Brew")) { WoW.CastSpell("Ironskin Brew"); } return; } if (Stagger != StaggerLevel.None && WoW.PlayerHealthPercent <= 70) { Log.Write("FreeBeers == 2, Stagger > None, and Health less than 70%"); if (WoW.CanCast("Purifying Brew")) { WoW.CastSpell("Purifying Brew"); } return; } } if (FreeBeers == 1) { if (Stagger != StaggerLevel.None && WoW.PlayerHealthPercent <= 60 && WoW.PlayerBuffTimeRemaining("Ironskin Brew") <= 3 && WoW.CanCast("Black Ox Brew")) { Log.Write("FreeBeers == 1, Stagger > None, and Health less than 60% an CanCast Black Ox Brew"); DrinkBlackOxBrew(); return; } if (Stagger != StaggerLevel.None && WoW.PlayerBuffTimeRemaining("Ironskin Brew") >= 3) { Log.Write("FreeBeers == 1, Stagger > None, and Uptime on ISB >= 3 seconds"); DrinkPurifyingBrew(); return; } if (WoW.CanCast("Black Ox Brew")) { DrinkBlackOxBrew(); return; } } if (WoW.PlayerHealthPercent <= 85 && WoW.PlayerSpellCharges("Healing Elixir") > 1 && !WoW.IsSpellOnCooldown("Healing Elixir")) { WoW.CastSpell("Healing Elixir"); return; } if (WoW.TargetIsCasting && WoW.CanCast("Spear Hand Strike") && !WoW.IsSpellOnCooldown("Spear Hand Strike") && WoW.IsSpellInRange("Spear Hand Strike")) { WoW.CastSpell("Spear Hand Strike"); return; } if (!WoW.HasTarget || WoW.HasTarget && WoW.TargetIsFriend) { Log.WriteFrozen("No Target", Color.Red); return; } //Always have Eye of the tiger up, it saves this profile //Maintain Eye of the Tiger if ( !WoW.PlayerHasBuff("Eye of the Tiger") && !WoW.IsSpellOnCooldown("Tiger Palm") && WoW.IsSpellInRange("Tiger Palm") || WoW.Energy >= 75 ) { WoW.CastSpell("Tiger Palm"); return; } if (WoW.TargetHasDebuff("Keg Smash") && WoW.CanCast("Breath of Fire")) { Log.WriteFrozen("Casting Breath of Fire", Color.CadetBlue); WoW.CastSpell("Breath of Fire"); return; } if (WoW.CanCast("Blackout Strike")) { Log.WriteFrozen("Casting Blackout Strike", Color.CadetBlue); WoW.CastSpell("Blackout Strike"); return; } if (!WoW.TargetHasDebuff("Keg Smash") && WoW.CanCast("Keg Smash") && WoW.Energy >= 40) { Log.WriteFrozen("Casting Keg Smash", Color.CadetBlue); WoW.CastSpell("Keg Smash"); return; } //if We Can Cast Exploding Keg and in Melee range then do so if (WoW.CanCast("Exploding Keg") && !WoW.IsSpellOnCooldown("Exploding Keg") && WoW.IsSpellInRange("Tiger Palm")) { WoW.CastSpellOnMe("Exploding Keg"); return; } if (WoW.CanCast("Tiger Palm") && WoW.Energy >= 40) { Log.WriteFrozen("Casting Tiger Palm Filler", Color.CadetBlue); WoW.CastSpell("Tiger Palm"); return; } Log.WriteFrozen("Nothing!", Color.Chocolate); }
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"); } } }
// Pulse Rotation public override void Pulse() { if (WoW.CanCast("Moonkin Form") && !WoW.PlayerHasBuff("Moonkin Form") && WoW.HasTarget && WoW.TargetIsEnemy && !WoW.IsMounted && !WoW.PlayerHasBuff("Travel Form") && !WoW.PlayerHasBuff("Bear Form") && !WoW.PlayerHasBuff("Cat Form")) { WoW.CastSpell("Moonkin Form"); return; } if (WoW.CanCast("Celestial Alignment") && WoW.HasBossTarget && WoW.IsInCombat || WoW.CanCast("Celestial Alignment") && WoW.IsInCombat && UseCooldowns) { WoW.CastSpell("Celestial Alignment"); return; } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { Log.Write("Doing Singletarget", Color.Red); if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Solar Beam") && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > 35) { WoW.CastSpell("Solar Beam"); return; } if (WoW.CanCast("Starsurge") && WoW.CurrentAstralPower > 70) { WoW.CastSpell("Starsurge"); return; } if (WoW.CanCast("Moonfire") && !WoW.TargetHasDebuff("Moonfire") || WoW.TargetDebuffTimeRemaining("Moonfire") < 300) { WoW.CastSpell("Moonfire"); return; } if (WoW.CanCast("Sunfire") && !WoW.TargetHasDebuff("Sunfire") && WoW.LastSpell != "Sunfire" || WoW.TargetDebuffTimeRemaining("Sunfire") < 300) { WoW.CastSpell("Sunfire"); return; } if (WoW.CanCast("Lunar Strike") && WoW.LastSpell != "Lunar Strike" && WoW.PlayerBuffTimeRemaining("Lunar Empowerment") > GCD && !WoW.IsMoving || WoW.CanCast("Lunar Strike") && WoW.PlayerBuffTimeRemaining("Lunar Empowerment") > GCD && !WoW.IsMoving && WoW.PlayerBuffStacks("Lunar Empowerment") >= 2) { WoW.CastSpell("Lunar Strike"); return; } if (WoW.CanCast("Solar Wrath") && WoW.PlayerBuffTimeRemaining("Solar Empowerment") > GCD && !WoW.IsMoving || WoW.CanCast("Solar Wrath") && WoW.CurrentAstralPower < 85 && !WoW.IsMoving || WoW.CanCast("Solar Wrath") && WoW.PlayerBuffTimeRemaining("Solar Empowerment") > GCD && !WoW.IsMoving && WoW.PlayerBuffStacks("Solar Empowerment") >= 2) { WoW.CastSpell("Solar Wrath"); return; } if (WoW.CanCast("Rejuv") && WoW.HealthPercent < 85 && !WoW.PlayerHasBuff("Rejuv") && !WoW.IsMounted && !WoW.PlayerHasBuff("Travel Form")) { WoW.CastSpell("Rejuv"); return; } if (WoW.CanCast("Regrowth") && WoW.HealthPercent < 50 && !WoW.IsMoving) { WoW.CastSpell("Regrowth"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { } if (combatRoutine.Type == RotationType.AOE) { Log.Write("Doing AOE", Color.Red); if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Starfall") && !WoW.PlayerHasBuff("Starfall") && WoW.CurrentAstralPower > 85) { //WoW.CastSpell("Starfall"); WoW.CastSpellOnMe("Starfall"); return; } if (WoW.CanCast("Starsurge") && WoW.CurrentAstralPower > 40) { WoW.CastSpell("Starsurge"); return; } if (WoW.CanCast("Moonfire") && !WoW.TargetHasDebuff("Moonfire") || WoW.TargetDebuffTimeRemaining("Moonfire") < 300) { WoW.CastSpell("Moonfire"); return; } if (WoW.CanCast("Sunfire") && !WoW.TargetHasDebuff("Sunfire") || WoW.TargetDebuffTimeRemaining("Sunfire") < 300) { WoW.CastSpell("Sunfire"); return; } if (WoW.CanCast("Lunar Strike") && WoW.LastSpell != "Lunar Strike" && WoW.PlayerBuffTimeRemaining("Lunar Empowerment") > GCD && !WoW.IsMoving) { WoW.CastSpell("Lunar Strike"); return; } if (WoW.CanCast("Solar Wrath") && WoW.PlayerBuffTimeRemaining("Solar Empowerment") > GCD && !WoW.IsMoving || WoW.CanCast("Solar Wrath") && WoW.CurrentAstralPower < 85 && !WoW.IsMoving) { WoW.CastSpell("Solar Wrath"); return; } if (WoW.CanCast("Rejuv") && WoW.HealthPercent < 85 && !WoW.PlayerHasBuff("Rejuv") && WoW.IsInCombat) { WoW.CastSpell("Rejuv"); return; } if (WoW.CanCast("Regrowth") && WoW.HealthPercent < 50 && !WoW.IsMoving && WoW.IsInCombat) { WoW.CastSpell("Regrowth"); return; } } } }