public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Subterfuge") || WoW.PlayerHasBuff("Shadow Dance")) { if (WoW.CanCast("Symbols of Death") && WoW.Energy >= 35 && (!WoW.PlayerHasBuff("Symbols of Death") || WoW.PlayerBuffTimeRemaining("Symbols of Death") <= 10)) { WoW.CastSpell("Symbols of Death"); return; } /* if (WoW.CanCast("Shadow Blades") && WoW.Cooldown && WoW.HasBuff("Symbols of Death")) * { * * WoW.CastSpellByName("Shadow Blades"); * return; * } */ /* if(WoW.CanCast("Goremaw's Bite") && WoW.CurrentComboPoints <= 3 && WoW.IsSpellInRange("Goremaw's Bite")) * { * * WoW.CastSpellByName("Goremaw's Bite"); * return; * } */ if (WoW.CanCast("Nightblade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("Nightblade") || WoW.TargetDebuffTimeRemaining("Nightblade") <= 4) && WoW.IsSpellInRange("Nightblade")) { WoW.CastSpell("Nightblade"); return; } if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("Nightblade") && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Eviscerate"); return; } if (WoW.CanCast("Shadowstrike") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 40 && WoW.IsSpellInRange("Shadowstrike")) { WoW.CastSpell("Shadowstrike"); return; } } if (WoW.CanCast("Shadow Blades") && WoW.HasTarget && WoW.PlayerHasBuff("Symbols of Death") && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Shadow Blades"); return; } if (WoW.CanCast("Shadow Dance") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("Shadow Dance") || !WoW.PlayerHasBuff("Subterfuge")) && WoW.Energy >= 55 && (WoW.PlayerSpellCharges("Shadow Dance") == 3 && WoW.CurrentComboPoints <= 3 || WoW.PlayerSpellCharges("Shadow Dance") == 2 && WoW.CurrentComboPoints <= 1) && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Shadow Dance"); return; } if (WoW.CanCast("Goremaw's Bite") && WoW.CurrentComboPoints <= 2 && WoW.Energy <= 50 && WoW.IsSpellInRange("Goremaw's Bite") && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Goremaw's Bite"); return; } if (WoW.CanCast("Nightblade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("Nightblade") || WoW.TargetDebuffTimeRemaining("Nightblade") <= 4) && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Nightblade"); return; } if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("Nightblade") && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Eviscerate"); return; } if (WoW.CanCast("Backstab") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 55 && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Backstab"); return; } } } if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.SingleTargetCleave) // Do AoE Target Stuff here { if ((WoW.HasTarget || UseCooldowns) && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.PlayerHasBuff("Stealth") || WoW.PlayerHasBuff("Subterfuge") || WoW.PlayerHasBuff("Shadow Dance")) { if (WoW.CanCast("Symbols of Death") && WoW.Energy >= 35 && (!WoW.PlayerHasBuff("Symbols of Death") || WoW.PlayerBuffTimeRemaining("Symbols of Death") <= 10)) { WoW.CastSpell("Symbols of Death"); return; } /* if (WoW.CanCast("Shadow Blades") && WoW.Cooldown && WoW.HasBuff("Symbols of Death")) * { * * WoW.CastSpellByName("Shadow Blades"); * return; * } */ /* if(WoW.CanCast("Goremaw's Bite") && WoW.CurrentComboPoints <= 3 && WoW.IsSpellInRange("Goremaw's Bite")) * { * * WoW.CastSpellByName("Goremaw's Bite"); * return; * } */ if (WoW.CanCast("Nightblade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("Nightblade") || WoW.TargetDebuffTimeRemaining("Nightblade") <= 4) && WoW.IsSpellInRange("Nightblade")) { WoW.CastSpell("Nightblade"); return; } if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("Nightblade") && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Eviscerate"); return; } if (WoW.CanCast("Shadowstrike") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 40 && WoW.IsSpellInRange("Shadowstrike")) { WoW.CastSpell("Shadowstrike"); return; } if (WoW.CanCast("Shuriken Storm") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 35 && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Shuriken Storm"); return; } } if (WoW.CanCast("Shadow Blades") && WoW.HasTarget && WoW.PlayerHasBuff("Symbols of Death") && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Shadow Blades"); return; } if (WoW.CanCast("Shadow Dance") && (!WoW.PlayerHasBuff("Stealth") || !WoW.PlayerHasBuff("Shadow Dance") || !WoW.PlayerHasBuff("Subterfuge")) && (WoW.PlayerSpellCharges("Shadow Dance") == 3 && WoW.CurrentComboPoints <= 3 || WoW.PlayerSpellCharges("Shadow Dance") == 2 && WoW.CurrentComboPoints <= 1) && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Shadow Dance"); return; } if (WoW.CanCast("Goremaw's Bite") && WoW.CurrentComboPoints <= 2 && WoW.Energy <= 50 && WoW.IsSpellInRange("Goremaw's Bite") && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Goremaw's Bite"); return; } if (WoW.CanCast("Nightblade") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 25 && (!WoW.TargetHasDebuff("Nightblade") || WoW.TargetDebuffTimeRemaining("Nightblade") <= 4) && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Nightblade"); return; } if (WoW.CanCast("Eviscerate") && WoW.CurrentComboPoints >= 5 && WoW.Energy >= 35 && WoW.TargetHasDebuff("Nightblade") && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Eviscerate"); return; } if (WoW.CanCast("Shuriken Storm") && WoW.CurrentComboPoints < 6 && WoW.Energy >= 35 && WoW.IsSpellInRange("Eviscerate")) { WoW.CastSpell("Shuriken Storm"); } } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) /* Singel Target Rotation*/ { if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.HasTarget && WoW.IsInCombat && WoW.PlayerHealthPercent <= 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 (DetectKeyPress.GetKeyState(cooldownKey) < 0 && (cooldownModifier == -1 || cooldownModifier != -1 && DetectKeyPress.GetKeyState(cooldownModifier) < 0)) { UseCooldowns = !UseCooldowns; Thread.Sleep(150); } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.TargetIsVisible && (!WoW.IsMounted || WoW.PlayerHasBuff("Divine Steed"))) { //Offensive Cooldowns if (WoW.CanCast("Avenging Wrath") && ischeckHotkeysProtAW && UseCooldowns && WoW.PlayerHasBuff("Seraphim") && WoW.Talent(7) == 2 && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Avenging Wrath"); return; } if (WoW.CanCast("Avenging Wrath") && ischeckHotkeysProtAW && UseCooldowns && WoW.Talent(7) != 2 && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Avenging Wrath"); return; } if (WoW.CanCast("Rebuke") && ischeckHotkeysProtKick && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= ProtKickPercent && !WoW.IsSpellOnCooldown("Rebuke") && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Rebuke"); return; } if (WoW.CanCast("Bastion of Light") && ischeckHotkeysProtBOL && UseCooldowns && WoW.Talent(2) == 2 && WoW.PlayerSpellCharges("Shield of the Righteous") == 0 && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Bastion of Light"); return; } // Defensive Cooldowns if (WoW.CanCast("Eye of Tyr") && ischeckHotkeysProtEoT && !WoW.IsSpellOnCooldown("Eye of Tyr") && WoW.HealthPercent <= ProtEoTPercent && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Eye of Tyr"); return; } if (WoW.CanCast("Ardent Defender") && ischeckHotkeysProtAD && !WoW.IsSpellOnCooldown("Ardent Defender") && WoW.HealthPercent <= ProtADPercent) { WoW.CastSpell("Ardent Defender"); return; } if (WoW.CanCast("Guardian of the Ancient Kings") && ischeckHotkeysProtGotAK && !WoW.IsSpellOnCooldown("Guardian of the Ancient Kings") && WoW.HealthPercent <= ProtGotAKPercent) { WoW.CastSpell("Guardian of the Ancient Kings"); return; } if (WoW.CanCast("Lay on Hands") && ischeckHotkeysProtLoH && !WoW.IsSpellOnCooldown("Lay on Hands") && WoW.HealthPercent <= ProtLoHPercent) { WoW.CastSpell("Lay on Hands"); return; } if (WoW.CanCast("Hand of the Protector") && ischeckHotkeysProtLotP && !WoW.IsSpellOnCooldown("Hand of the Protector") && WoW.HealthPercent <= ProtLotPPercent && WoW.Talent(5) == 1) { WoW.CastSpell("Hand of the Protector"); return; } if (WoW.CanCast("Light of the Protector") && ischeckHotkeysProtLotP && !WoW.IsSpellOnCooldown("Light of the Protector") && WoW.HealthPercent <= ProtLotPPercent && WoW.Talent(5) != 1) { WoW.CastSpell("Light of the Protector"); return; } //Rotation if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.SingleTargetCleave || combatRoutine.Type == RotationType.AOE) { if (!WoW.IsSpellOnCooldown("Seraphim") && WoW.PlayerSpellCharges("Shield of the Righteous") >= 2 && WoW.HealthPercent >= 80 && WoW.IsSpellInRange("Rebuke") && WoW.Talent(7) == 2) { WoW.CastSpell("Seraphim"); return; } if (WoW.PlayerSpellCharges("Shield of the Righteous") == 3 && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Shield of the Righteous"); return; } if (WoW.PlayerHasBuff("Shield of the Righteous") && WoW.PlayerBuffTimeRemaining("Shield of the Righteous") <= 1.5 && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Shield of the Righteous"); return; } if (WoW.PlayerSpellCharges("Shield of the Righteous") >= 1 && WoW.HealthPercent <= 80 && (!WoW.PlayerHasBuff("Shield of the Righteous") || WoW.PlayerBuffTimeRemaining("Shield of the Righteous") <= 1.5) && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Shield of the Righteous"); return; } if (WoW.Talent(1) == 2 && WoW.CanCast("Blessed Hammer") && WoW.PlayerSpellCharges("Blessed Hammer") >= 3 && !WoW.IsSpellOnGCD("Blessed Hammer") && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Blessed Hammer"); return; } if (WoW.Talent(1) != 2 && WoW.CanCast("Hammer of the Righteous") && WoW.PlayerSpellCharges("Hammer of the Righteous") >= 1 && !WoW.IsSpellOnGCD("Hammer of the Righteous") && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Hammer of the Righteous"); return; } if (WoW.CanCast("Judgement") && !WoW.IsSpellOnGCD("Judgement")) { WoW.CastSpell("Judgement"); return; } if (WoW.CanCast("Consecration") && !WoW.IsSpellOnGCD("Consecration") && !WoW.TargetHasDebuff("Consecration") && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Consecration"); return; } if (WoW.CanCast("Avenger's Shield") && !WoW.IsSpellOnGCD("Avenger's Shield")) { WoW.CastSpell("Avenger's Shield"); return; } if (WoW.Talent(1) == 2 && WoW.CanCast("Blessed Hammer") && WoW.PlayerSpellCharges("Blessed Hammer") >= 1 && !WoW.IsSpellOnGCD("Blessed Hammer") && !WoW.TargetHasDebuff("Blessed Hammer") && WoW.IsSpellInRange("Rebuke")) { WoW.CastSpell("Blessed Hammer"); return; } } } }
/// <summary> /// Do the rotation. /// </summary> private void doRotation(bool isSingleTarget = true) { bool ignoreMovement = WoW.PlayerHasBuff(SURRENDER_MADNESS); if (WoW.Insanity >= 70 || WoW.PlayerHasBuff(VOIDFORM_AURA)) { //Expend insanity in voidform. if (WoW.HasTarget && !WoW.PlayerHasBuff(VOIDFORM_AURA)) { castWithRangeCheck(VOID_ERUPTION); } else { //If we can, cast it. castWithRangeCheck(VOID_BOLT); //Cast it. if (calculateInsanityDrain() > (WoW.Insanity - 35)) { castWithRangeCheck(VOID_TORRENT, ignoreMovement); } //If the boss health is at or below our set threshold SW:D if (WoW.TargetHealthPercent <= HEALTH_PERCENT_FOR_SWD) { if (WoW.PlayerSpellCharges(SHADOW_DEATH) == 2 && WoW.Insanity <= 70) { //If we have 2 charges, always cast castWithRangeCheck(SHADOW_DEATH); } else if (WoW.PlayerSpellCharges(SHADOW_DEATH) == 1) { //If we have 1 charge, only cast if at high insanity and mindblast is off CD or extremely low insanity if ((WoW.Insanity > PANIC_INSANITY_VALUE && !(WoW.IsSpellOnCooldown(MIND_BLAST) || WoW.IsSpellOnCooldown(VOID_BOLT))) || WoW.Insanity <= calculateInsanityDrain()) { castWithRangeCheck(SHADOW_DEATH); } } } if (WoW.Insanity <= 40 && !WoW.PlayerHasBuff(POWER_INFUSION)) { castWithRangeCheck(POWER_INFUSION, false, false); } //Cast shadowfiend if we have more than 15 stacks of voidform aura. if (WoW.PlayerBuffStacks(VOIDFORM_AURA) >= 15) { castWithRangeCheck(SHADOW_FIEND); } //If we can, cast it. castWithRangeCheck(MIND_BLAST); if (!isPlayerBusy(ignoreChanneling: false)) { //Always fill with mind flay on single target. castWithRangeCheck(MIND_FLAY); } } } else { //Build up insanity if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.TargetIsVisible) { //If we can, cast mind blast. if (castWithRangeCheck(MIND_BLAST)) { return; } //If we don't have anything else to do, cast Mind flay. if (!isPlayerBusy(ignoreChanneling: false)) { castWithRangeCheck(MIND_FLAY); } } } }
public override void Pulse() { if (WoW.PlayerHealthPercent == 0 || WoW.IsMounted) { return; } if (!WoW.IsInCombat && WoW.CanCast("Mount") && WoW.IsOutdoors && !WoW.IsMoving && !WoW.PlayerIsChanneling && ConfigFile.ReadValue <bool>("Protection-Paladin-WiNiFiX", "AutoMount")) { WoW.CastSpell("Mount"); } if (WoW.TargetHealthPercent == 0) { return; } if (!WoW.TargetIsEnemy && WoW.PlayerHealthPercent < 100 && WoW.CanCast("FlashHeal") && WoW.Mana > 25 && !WoW.IsMoving && !WoW.PlayerIsChanneling) { WoW.CastSpell("FlashHeal"); return; } if (!WoW.TargetIsEnemy) { return; } if (WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > 60 && WoW.CanCast("Rebuke")) { WoW.CastSpell("Rebuke"); return; } if (WoW.CanCast("ArdentDefender") && WoW.PlayerHealthPercent < 15) { Log.Write("Health < 15% using CD: [Ardent Defender]", Color.Red); WoW.CastSpell("ArdentDefender"); return; } if (WoW.PlayerHealthPercent < 20 && !WoW.PlayerHasBuff("ArdentDefender")) { if (WoW.CanCast("LayOnHands") && !WoW.PlayerHasDebuff("Forbearance")) { Log.Write("Health < 20% using CD: [Lay On Hands]", Color.Red); WoW.CastSpell("LayOnHands"); return; } if (WoW.CanCast("DivineShield") && !WoW.PlayerHasDebuff("Forbearance") && WoW.CanCast("HandOfReckoning")) { Log.Write("Health < 20% using CD: [Taunt & Divine Shield]", Color.Red); WoW.CastSpell("HandOfReckoning"); WoW.CastSpell("DivineShield"); return; } } if (WoW.PlayerHealthPercent < 50) { if (WoW.CanCast("GuardianOfAncientKings") && !WoW.PlayerHasBuff("ArdentDefender")) { Log.Write("Health < 50% using CD: [Guardian Of Ancient Kings]", Color.Red); WoW.CastSpell("GuardianOfAncientKings"); return; } } if (!WoW.HasTarget) { return; } if (WoW.HasBossTarget && WoW.CanCast("AvengingWrath")) { WoW.CastSpell("AvengingWrath"); // Off the GCD no return needed. } if (WoW.CanCast("AvengersShield")) { WoW.CastSpell("AvengersShield"); return; } if (WoW.PlayerHealthPercent < 100) { if (WoW.CanCast("EyeOfTyr")) { WoW.CastSpell("EyeOfTyr"); return; } } if (WoW.CanCast("Judgment")) { WoW.CastSpell("Judgment"); return; } if (WoW.CanCast("Consecration")) { WoW.CastSpell("Consecration"); return; } if (WoW.CanCast("LightOfTheProtector") && WoW.PlayerHasBuff("Consecration") && WoW.PlayerHealthPercent < 70) { WoW.CastSpell("LightOfTheProtector"); return; } if (WoW.CanCast("BlessedHammer") && WoW.CountEnemyNPCsInRange > 1) { WoW.CastSpell("BlessedHammer"); return; } if (WoW.CanCast("BastionOfLight") && WoW.PlayerSpellCharges("ShieldOfTheRighteous") == 0 && !WoW.PlayerHasBuff("ShieldOfTheRighteous")) { WoW.CastSpell("BastionOfLight"); return; } if (WoW.CanCast("ShieldOfTheRighteous") && WoW.PlayerHasBuff("Consecration") && WoW.PlayerSpellCharges("ShieldOfTheRighteous") > 0 && !WoW.PlayerHasBuff("ShieldOfTheRighteous")) { WoW.CastSpell("ShieldOfTheRighteous"); return; } if (WoW.CanCast("BlessedHammer")) { WoW.CastSpell("BlessedHammer"); } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.PlayerHasBuff("Metamorphosis")) { if (WoW.CanCast("Chaos Blades") && !WoW.IsSpellOnCooldown("Chaos Blades") && UseCooldowns) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && !WoW.IsSpellOnCooldown("FOTI") && !WoW.IsMoving && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70)) { WoW.CastSpell("Annihilation"); return; } if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && (WoW.PlayerHasBuff("Momentum") || WoW.PlayerSpellCharges("Throw Glaive") == 2)) { WoW.CastSpell("Throw Glaive"); return; } if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator { WoW.CastSpell("Demons Bite"); return; } } if (WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike") && !WoW.IsSpellOnCooldown("Chaos Blades")) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && !WoW.IsSpellOnCooldown("FOTI") && !WoW.IsMoving && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70)) // Fury Spender { WoW.CastSpell("Chaos Strike"); return; } if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && (WoW.PlayerHasBuff("Momentum") || WoW.PlayerSpellCharges("Throw Glaive") == 2)) { WoW.CastSpell("Throw Glaive"); return; } if (WoW.CanCast("Blur") && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Blur") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Blur Usage Percent")) { WoW.CastSpell("Blur"); return; } if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator { WoW.CastSpell("Demons Bite"); return; } } } if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.SingleTargetCleave) { // Do AOE Stuff here if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.PlayerHasBuff("Metamorphosis")) { if (WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike") && !WoW.IsSpellOnCooldown("Chaos Blades")) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && !WoW.IsSpellOnCooldown("FOTI") && !WoW.IsMoving && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.CanCast("Death Sweep") && WoW.Fury >= 35 && WoW.IsSpellOnCooldown("Eye Beam") && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Death Sweep"); return; } if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && WoW.IsSpellOnCooldown("Eye Beam") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70)) { WoW.CastSpell("Annihilation"); return; } if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && (WoW.PlayerHasBuff("Momentum") || WoW.PlayerSpellCharges("Throw Glaive") == 2)) { WoW.CastSpell("Throw Glaive"); return; } if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator { WoW.CastSpell("Demons Bite"); return; } } if (WoW.CanCast("Chaos Blades") && !WoW.IsSpellOnCooldown("Chaos Blades") && UseCooldowns && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike") && !WoW.IsSpellOnCooldown("FOTI") && !WoW.IsMoving && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Eye Beam") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 50 && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 35 && WoW.IsSpellOnCooldown("Eye Beam") && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("Blade Dance"); return; } if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && WoW.IsSpellOnCooldown("Eye Beam") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70)) { WoW.CastSpell("Chaos Strike"); return; } if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && (WoW.PlayerHasBuff("Momentum") || WoW.PlayerSpellCharges("Throw Glaive") == 2)) { WoW.CastSpell("Throw Glaive"); return; } if (WoW.CanCast("Blur") && WoW.IsInCombat && !WoW.IsSpellOnCooldown("Blur") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Blur Usage Percent")) { WoW.CastSpell("Blur"); return; } if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator { WoW.CastSpell("Demons Bite"); } } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.IsMounted) { if (WoW.PlayerHasBuff("Metamorphosis")) { if (WoW.CanCast("Nemesis") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Nemesis"); return; } if (WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Death Sweep") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Death Sweep"); return; } if (WoW.CanCast("Felblade") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury < 100) { WoW.CastSpell("Felblade"); //Felblade only at melee range to not make worse (if you need to gtfo) return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && (DetectKeyPress.GetAsyncKeyState(0x5A) < 0)) { WoW.CastSpell("Eye Beam"); //Use Eyebeam by Z press return; } if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 55) { WoW.CastSpell("Annihilation"); return; } //if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator //{ // WoW.CastSpell("Demons Bite"); // return; //} if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } } if (combatRoutine.UseCooldowns) { if (WoW.CanCast("Nemesis") && WoW.IsSpellInRange("Chaos Strike") && UseCooldowns) { WoW.CastSpell("Nemesis"); return; } if (WoW.CanCast("Chaos Blades") && WoW.IsSpellInRange("Chaos Strike") && UseCooldowns) { WoW.CastSpell("Chaos Blades"); return; } if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } } if (WoW.CanCast("FOTI") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Blade Dance"); return; } if (WoW.CanCast("Felblade") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury < 100) { WoW.CastSpell("Felblade"); //Felblade only at melee range to not make worse (if you need to gtfo) return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.IsSpellInRange("Chaos Strike") && (DetectKeyPress.GetAsyncKeyState(0x5A) < 0)) { WoW.CastSpell("Eye Beam"); //Use Eyebeam by Z press return; } if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 70 || (WoW.Fury >= 55 && (WoW.PlayerHasBuff("Chaos Blades") || WoW.SpellCooldownTimeRemaining("Nemesis") >= 60)))) { WoW.CastSpell("Chaos Strike"); //If we got damage buffs - spent fury on CS instantly (15 save for Blade Dance) return; } if (WoW.CanCast("Blur") && WoW.IsInCombat && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Blur Usage Percent")) { WoW.CastSpell("Blur"); return; } //if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator //{ // WoW.CastSpell("Demons Bite"); // return; //} if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive")) { WoW.CastSpell("Throw Glaive"); return; } } } if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.SingleTargetCleave) { // Do AOE Stuff here if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.PlayerHasBuff("Metamorphosis")) { if (WoW.CanCast("FOTI") && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Fel Barrage") && WoW.PlayerSpellCharges("Fel Barrage") == 5 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Fel Barrage")) { WoW.CastSpell("Fel Barrage"); return; } if (WoW.CanCast("Death Sweep") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Death Sweep"); return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.CanCast("Annihilation") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70)) { WoW.CastSpell("Annihilation"); return; } if (WoW.CanCast("Fel Barrage") && WoW.PlayerSpellCharges("Fel Barrage") >= 4 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Fel Barrage")) { WoW.CastSpell("Fel Barrage"); return; } //if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator //{ // WoW.CastSpell("Demons Bite"); // return; //} if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("Throw Glaive"); return; } } if (WoW.CanCast("FOTI") && WoW.PlayerHasBuff("Momentum") && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("FOTI"); return; } if (WoW.CanCast("Fel Barrage") && WoW.PlayerSpellCharges("Fel Barrage") == 5 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Fel Barrage")) { WoW.CastSpell("Fel Barrage"); return; } if (WoW.CanCast("Blade Dance") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury >= 15) { WoW.CastSpell("Blade Dance"); return; } if (WoW.CanCast("Eye Beam") && WoW.Fury >= 50 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") > 1) && WoW.IsSpellInRange("Chaos Strike")) { WoW.CastSpell("Eye Beam"); return; } if (WoW.CanCast("Chaos Strike") && WoW.IsSpellInRange("Chaos Strike") && (WoW.Fury >= 40 && WoW.PlayerHasBuff("Momentum") || WoW.Fury >= 70)) // Fury Spender { WoW.CastSpell("Chaos Strike"); return; } if (WoW.CanCast("Fel Barrage") && WoW.PlayerSpellCharges("Fel Barrage") >= 4 && WoW.PlayerHasBuff("Momentum") && (WoW.PlayerBuffTimeRemaining("Momentum") >= 1) && WoW.IsSpellInRange("Fel Barrage")) { WoW.CastSpell("Fel Barrage"); return; } if (WoW.CanCast("Blur") && WoW.IsInCombat && WoW.HealthPercent <= ConfigFile.ReadValue <int>("Demonhunter", "Blur Usage Percent")) { WoW.CastSpell("Blur"); return; } //if (WoW.CanCast("Demons Bite") && WoW.IsSpellInRange("Chaos Strike") && WoW.Fury <= 70) // Fury Generator //{ // WoW.CastSpell("Demons Bite"); // return; //} if (WoW.CanCast("Throw Glaive") && WoW.IsSpellInRange("Throw Glaive") && WoW.PlayerHasBuff("Momentum")) { WoW.CastSpell("Throw Glaive"); } } } }
public override void Pulse() // Updated for Legion (tested and working for single target) { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if ((WoW.HasTarget || WoW.HasBossTarget) && WoW.TargetIsEnemy && WoW.IsInCombat) { if (WoW.CanCast("Fury of Eagle") && WoW.PlayerHasBuff("Mongoose Fury") && WoW.PlayerBuffStacks("Mongoose Fury") >= 5) { WoW.CastSpell("Fury of Eagle"); return; } if (WoW.CanCast("Explosive Trap") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Explosive Trap"); return; } if (WoW.CanCast("Dragonsfire Grenade") && WoW.IsSpellInRange("Raptor Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Dragonsfire Grenade"); return; } if (WoW.CanCast("Lacerate") && !WoW.TargetHasDebuff("Lacerate") && WoW.Focus >= 35 && WoW.IsSpellInRange("Lacerate") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Lacerate"); return; } if (WoW.CanCast("Snake Hunter") && WoW.PlayerSpellCharges("Mongoose Bite") <= 0 && WoW.PlayerBuffTimeRemaining("Mongoose Fury") >= 6 && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Snake Hunter"); return; } if (WoW.CanCast("Aspect of the Eagle") && WoW.PlayerSpellCharges("Mongoose Bite") >= 2 && WoW.PlayerBuffTimeRemaining("Mongoose Fury") >= 11 && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Aspect of the Eagle"); return; } if (WoW.CanCast("Mongoose Bite") && (!WoW.TargetHasDebuff("Mongoose Fury") || WoW.PlayerBuffTimeRemaining("Mongoose Fury") >= 3) && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Mongoose Bite"); return; } if (WoW.CanCast("Mongoose Bite") && WoW.PlayerHasBuff("Aspect of the Eagle") && WoW.IsSpellInRange("Mongoose Bite") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Mongoose Bite"); return; } if (WoW.CanCast("Throwing Axes") && WoW.IsSpellInRange("Throwing Axes") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Throwing Axes"); return; } if (WoW.CanCast("Flanking Strike") && WoW.Focus >= 50 && WoW.IsSpellInRange("Flanking Strike") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Flanking Strike"); return; } if (WoW.CanCast("Raptor Strike") && WoW.Focus >= 25 && WoW.IsSpellInRange("Raptor Strike") && WoW.IsSpellOnCooldown("Lacerate") && WoW.IsSpellOnCooldown("Flanking Strike") && WoW.IsSpellOnCooldown("Throwing Axes") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling) { WoW.CastSpell("Raptor Strike"); return; } } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE stuff here } if (combatRoutine.Type == RotationType.Cleave) { // 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 && !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() { //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(); } //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) / 1000f); var ImpsRemainingDuration = Convert.ToSingle((12000f - ImpTime.ElapsedMilliseconds) / 1000f + OneFiveCast); // Single Target Rotation if (combatRoutine.Type == RotationType.SingleTarget) { // Normal Rotation if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && !WoW.PlayerIsCasting) { Log.Write("Imp Time: " + ImpsRemainingDuration, Color.DarkViolet); Log.Write("Dread Time: " + DreadstalkersRemainingDuration, Color.DarkViolet); //Implosion (if talent) if (WoW.CanCast("Implosion") && Implosion && WoW.IsSpellInRange("Doom")) { if (ImpsRemainingDuration <= SBExecuteTime && WoW.PlayerHasBuff("DemonicSynergy")) { WoW.CastSpell("Implosion"); return; } if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1 && WoW.PlayerHasBuff("DemonicSynergy")) { WoW.CastSpell("Implosion"); return; } } //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && Shadowflame && WoW.IsSpellInRange("Doom") && WoW.TargetHasDebuff("Shadowflame") && WoW.TargetDebuffTimeRemaining("Shadowflame") < TwoSecondCast + 2) { WoW.CastSpell("Shadowflame"); return; } //Service Pet (if talent) if (WoW.CanCast("GrimoireFelguard") && GrimoireOfService && WoW.IsSpellInRange("Doom") && WoW.CurrentSoulShards >= 1 && boss) { WoW.CastSpell("GrimoireFelguard"); empowered = false; return; } // Doomguard if (WoW.CanCast("Doomguard") && WoW.CurrentSoulShards >= 1 && boss && 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") && !SummonDarkglare && (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") && !SummonDarkglare && 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") && SummonDarkglare && 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") && SummonDarkglare && (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") && SummonDarkglare && 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") && SummonDarkglare && 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") && Shadowflame && 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") && Demonbolt && WoW.IsSpellInRange("Doom") && (!WoW.IsMoving || WoW.PlayerHasBuff("Norgannon"))) { WoW.CastSpell("Demonbolt"); return; } //Shadowbolt (if NOT Demonbolt talent) if (WoW.CanCast("Shadowbolt") && !Demonbolt && 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") && Implosion && WoW.IsSpellInRange("Doom")) { if (ImpsRemainingDuration <= SBExecuteTime && 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 <= SBExecuteTime) { WoW.CastSpell("Implosion"); return; } if (WoW.LastSpell == "HandOfGuldan" && WoW.WildImpsCount == 1) { WoW.CastSpell("Implosion"); return; } } //Shadowflame (if talent) if (WoW.CanCast("Shadowflame") && Shadowflame && 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") && !SummonDarkglare && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && !Implosion && 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") && !SummonDarkglare && 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") && SummonDarkglare && 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 and not Implosion) if (WoW.CanCast("CallDreadstalkers") && SummonDarkglare && (WoW.CurrentSoulShards >= 2 || WoW.PlayerHasBuff("DemonicCalling")) && !Implosion && 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") && SummonDarkglare && 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") && SummonDarkglare && 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") && Shadowflame && WoW.IsSpellInRange("Doom") && WoW.PlayerSpellCharges("Shadowflame") == 2) { WoW.CastSpell("Shadowflame"); return; } //Thal'kiel's Consumption if (WoW.CanCast("TK") && ((WoW.DreadstalkersCount >= 1 && DreadstalkersRemainingDuration > TwoSecondCast) || Implosion) && ((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"); } } } }
// 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; } }