private void interruptcast() { Random random = new Random(); int randomNumber = random.Next(interMin, interMax); if (WoW.TargetPercentCast > randomNumber && WoW.TargetIsCastingAndSpellIsInterruptible) { if (WoW.CanCast("Wind Shear") && !WoW.IsSpellOnCooldown("Wind Shear") && WoW.TargetIsCasting && WoW.IsSpellInRange("Wind Shear")) //interupt every spell, not a boss. { WoW.CastSpell("Wind Shear"); return; } if (WoW.PlayerRace == "BloodElf" && WoW.CanCast("Arcane Torrent", true, true, false, false, true) && !WoW.IsSpellOnCooldown("Wind Shear") && WoW.IsSpellInRange("Stormstrike")) //interupt every spell, not a boss. { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.PlayerRace == "Pandaren" && WoW.CanCast("Quaking palm", true, true, true, false, true)) //interupt every spell, not a boss. { WoW.CastSpell("Quaking palm"); return; } } /* for (int i = 1; i < 5; i++) * if (WoW.BossPercentCast(i) > randomNumber && WoW.BossIsCastingAndSpellIsInterruptible(i)) * { * * if (WoW.CanCast("Wind Shear")) //interupt every spell, not a boss. * { * WoW.CastSpell("Wind Shear"); * return; * } * }*/ }
public override void OutOfCombatPulse() { if (doneOpener) { doneOpener = false; } if (WoW.CanCast("Greater Blessing of Kings") && WoW.Level >= 58 && (!WoW.HasTarget || WoW.TargetIsFriend) && !WoW.PlayerHasBuff("Greater Blessing of Kings")) { WoW.CastSpell("Greater Blessing of Kings"); return; } if (WoW.CanCast("Greater Blessing of Wisdom") && WoW.Level >= 65 && (!WoW.HasTarget || WoW.TargetIsFriend) && !WoW.PlayerHasBuff("Greater Blessing of Wisdom")) { WoW.CastSpell("Greater Blessing of Wisdom"); return; } if (WoW.CanCast("Flash of Light") && WoW.PlayerHealthPercent < 80) { WoW.CastSpell("Flash of Light"); return; } }
public override void Pulse() { if (WoW.TargetHealthPercent == 0) { return; } if (!WoW.TargetIsEnemy) { return; } WoW.CastSpell("Rebuke", WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > 60); WoW.CastSpell("ArdentDefender", WoW.PlayerHealthPercent < 15); WoW.CastSpell("LayOnHands", WoW.CanCast("LayOnHands") && !WoW.PlayerHasDebuff("Forbearance") && WoW.PlayerHealthPercent < 20 && !WoW.PlayerHasBuff("ArdentDefender")); WoW.CastSpell("GuardianOfAncientKings", WoW.PlayerHealthPercent < 50 && !WoW.PlayerHasBuff("ArdentDefender")); if (!WoW.HasTarget) { return; } WoW.CastSpell("AvengingWrath", UseCooldowns, false); // Off the GCD no return needed. WoW.CastSpell("AvengersShield", true); WoW.CastSpell("EyeOfTyr", WoW.PlayerHealthPercent < 100); WoW.CastSpell("Judgment", true); WoW.CastSpell("Consecration", true); WoW.CastSpell("LightOfTheProtector", WoW.PlayerHasBuff("Consecration") && WoW.PlayerHealthPercent < 70); WoW.CastSpell("BlessedHammer", WoW.Talent(1) == 2); WoW.CastSpell("BastionOfLight", WoW.PlayerSpellCharges("ShieldOfTheRighteous") == 0 && !WoW.PlayerHasBuff("ShieldOfTheRighteous")); WoW.CastSpell("ShieldOfTheRighteous", WoW.PlayerHasBuff("Consecration") && WoW.PlayerSpellCharges("ShieldOfTheRighteous") > 0 && !WoW.PlayerHasBuff("ShieldOfTheRighteous")); WoW.CastSpell("Seraphim", WoW.Talent(7) == 2); WoW.CastSpell("BlessedHammer", true); }
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); }
private void Defensive() { if (WoW.PlayerRace == "Dreanei" && WoW.HealthPercent < 80 && !WoW.IsSpellOnCooldown("Gift Naaru")) { WoW.CastSpell("Gift Naaru"); } }
private void UsePotion() { if (!WoW.ItemOnCooldown("Prolonged Power")) { WoW.CastSpell("Prolonged Power"); return; } }
public override void OutOfCombatPulse() { if (!WoW.PlayerHasBuff("Prowl") && WoW.CanCast("Prowl")) { WoW.CastSpell("Prowl"); return; } }
private void DBMPrePull() { if (dbmOn && dbmTimer <= 18 && dbmTimer > 0 && WoW.HasTarget) { if (!WoW.ItemOnCooldown("Prolonged Power")) { WoW.CastSpell("Prolonged Power"); return; } } }
private void Stuns() { if (!WoW.PlayerIsCasting) { if (WoW.PlayerRace == "Tauren" && !WoW.IsMoving && WoW.CanCast("War Stomp") && !WoW.IsSpellOnCooldown("War Stomp")) { WoW.CastSpell("War Stomp"); return; } } }
public override void Pulse() // Updated for Legion (tested and working for single target) { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { Log.Write(WoW.PlayerBuffTimeRemaining("PWS").ToString()); if ((!WoW.PlayerHasBuff("PWS") || WoW.PlayerBuffTimeRemaining("PWS") < 4) && WoW.CanCast("PWS")) { WoW.CastSpell("PWS"); } } }
private static void Generic() { if (WoW.CanCast("SoulReaper") && WoW.CanCast("Apocalipse") && WoW.CurrentRunes >= 1 && WoW.TargetDebuffStacks("Festering Wound") >= 7) { WoW.CastSpell("SoulReaper"); Thread.Sleep(800); WoW.CastSpell("Apocalipse"); Thread.Sleep(200); WoW.CastSpell("Apocalipse"); Thread.Sleep(200); WoW.CastSpell("Apocalipse"); Thread.Sleep(100); WoW.CastSpell("Apocalipse"); stopwatch.Reset(); stopwatch.Start(); return; } if (WoW.CanCast("SoulReaper") && !WoW.CanCast("Apocalipse") && WoW.CurrentRunes >= 1 && WoW.TargetDebuffStacks("Festering Wound") >= 3 && stopwatch.ElapsedMilliseconds < 50000) { WoW.CastSpell("SoulReaper"); return; } if ((WoW.CanCast("SoulReaper") && WoW.CanCast("Apocalipse") || WoW.CanCast("SoulReaper")) && WoW.CurrentRunes >= 1 && WoW.TargetDebuffStacks("Festering Wound") <= 7) { WoW.CastSpell("Festering Strike"); return; } if (WoW.CanCast("Death Coil") && (WoW.RunicPower > 85 || WoW.PlayerHasBuff("Sudden Doom"))) { WoW.CastSpell("Death Coil"); return; } if (WoW.CanCast("Festering Strike") && WoW.CurrentRunes >= 2 && (!WoW.TargetHasDebuff("Festering Wound") || WoW.TargetDebuffStacks("Festering Wound") <= 4)) { WoW.CastSpell("Festering Strike"); return; } if (WoW.CanCast("Scourge Strike") && WoW.CurrentRunes >= 1 && WoW.TargetHasDebuff("Festering Wound")) { WoW.CastSpell("Scourge Strike"); return; } if (WoW.CanCast("Death Coil") && WoW.RunicPower > 35) { WoW.CastSpell("Death Coil"); } }
public override void Pulse() { if (!coolDownStopWatch.IsRunning || coolDownStopWatch.ElapsedMilliseconds > 60000) { coolDownStopWatch.Restart(); } if (DetectKeyPress.GetKeyState(cooldownKey) < 0 && (cooldownModifier == -1 || cooldownModifier != -1 && DetectKeyPress.GetKeyState(cooldownModifier) < 0)) { if (coolDownStopWatch.ElapsedMilliseconds > 1000) { combatRoutine.UseCooldowns = !combatRoutine.UseCooldowns; coolDownStopWatch.Restart(); } } if (WoW.HasTarget && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.TargetIsVisible) { isMelee = WoW.CanCast("Obliterate", false, false, true, false, false); currentRunes = WoW.CurrentRunes; runicPower = WoW.RunicPower; if (WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 40 && WoW.Level >= 62 && WoW.CanCast("Mind Freeze", false, true, true, false, false) && isCastingListedSpell()) { WoW.CastSpell("Mind Freeze"); } if (WoW.CanCast("Sindragosa's Fury") && (DetectKeyPress.GetKeyState(0x5A) < 0) && WoW.Level >= 110) { WoW.CastSpell("Sindragosa's Fury"); return; } if (CanCastNoRange("Anti-Magic Shell") && WoW.HealthPercent <= FrostAMSHPPercent && !WoW.IsSpellOnCooldown("Anti-Magic Shell") && isCheckHotkeysFrostIceboundFortitude && WoW.Level >= 57) { WoW.CastSpell("Anti-Magic Shell"); } if (CanCastNoRange("Icebound Fortitude") && WoW.HealthPercent < FrostIceboundHPPercent && !WoW.IsSpellOnCooldown("Icebound Fortitude") && isCheckHotkeysFrostAntiMagicShield && WoW.Level >= 65) { WoW.CastSpell("Icebound Fortitude"); } if (useChainofIce && CanCastInRange("ChainofIce") && !isMelee && !WoW.TargetHasDebuff("ChainofIce") && currentRunes >= 1 && WoW.Level >= 63) { WoW.CastSpell("ChainofIce"); return; } if (WoW.Talent(7) == 2) { BreathRotation(); } else { MGRotation(); } } }
private void EnhancementBuffs() { //actions +=/ windstrike,if= (variable.heartEquipped | set_bonus.tier19_2pc) & (!talent.earthen_spike.enabled | (cooldown.earthen_spike.remains > 1 & cooldown.doom_winds.remains > 1) | debuff.earthen_spike.up) if (WoW.CanCast("Windstrike", true, true, true) && WoW.PlayerHasBuff("Ascendance") && WoW.Maelstrom >= 8 && (/*heart equip place holder*/ WoW.SetBonus(19) >= 2) && (WoW.Talent(7) != 3 || (WoW.SpellCooldownTimeRemaining("Earthen spike") > 1 && WoW.SpellCooldownTimeRemaining("Doom winds") > 1 || WoW.TargetHasDebuff("Earthen spike")))) { WoW.CastSpell("Windstrike", "Top prioity spell"); return; } //actions.buffs = rockbiter,if= talent.landslide.enabled & !buff.landslide.up if (WoW.CanCast("Rockbiter", true, true, true) && WoW.Talent(1) == 3 && !WoW.PlayerHasBuff("Landslide")) { WoW.CastSpell("Rockbiter", "Buff spell"); return; } //actions.buffs +=/ fury_of_air,if= buff.ascendance.up | (feral_spirit.remains > 5) | level < 100 if (WoW.CanCast("FoA") && WoW.Maelstrom >= 5 && WoW.Talent(6) == 2 && !WoW.PlayerHasBuff("FoA") && (WoW.PlayerHasBuff("Ascendance") && Pets.IsRunning)) { WoW.CastSpell("FoA", "Buff spell"); return; } //actions.buffs +=/ crash_lightning,if= artifact.alpha_wolf.rank & prev_gcd.1.feral_spirit if (WoW.CanCast("Crash lightning") && WoW.Maelstrom >= 20 && WoW.IsSpellInRange("Rockbiter") && Pets.IsRunning && !Crash.IsRunning) { Crash.Restart(); WoW.CastSpell("Crash lightning", "Buff spell"); return; } //actions.buffs +=/ flametongue,if= !buff.flametongue.up if (!WoW.PlayerHasBuff("Flametongue") && WoW.CanCast("Flametongue", true, true, true)) { WoW.CastSpell("Flametongue", "Buff spell"); return; } //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & !buff.frostbrand.up & variable.furyCheck45 if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.Talent(4) == 3 && !WoW.PlayerHasBuff("Frostbrand") && furyCheck45) { WoW.CastSpell("Frostbrand", "Buff spell"); return; } //actions.buffs +=/ flametongue,if= buff.flametongue.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2 if (WoW.CanCast("Flametongue", true, true, true) && WoW.PlayerBuffTimeRemaining("Flametongue") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Flametongue", "Buff spell"); return; } //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & buff.frostbrand.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2 if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Maelstrom >= 20 && WoW.PlayerBuffTimeRemaining("Frostbrand") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Frostbrand", "Buff spell"); return; } }
public override void OutOfCombatPulse() { var lowest = WoW.PartyLowestHealthPercent; int currentTargetId = WoW.PartyMemberIdWithLowestHealthPercent; var test = WoW.TargetIsPlayer; var averageHp = WoW.PartyAverageHealthPercent; WoW.TargetMember(currentTargetId); WoW.CastSpell("GhostWolf", WoW.IsMoving && !WoW.PlayerHasBuff("GhostWolf")); WoW.CastSpell("Riptide", lowest < 98 && !WoW.TargetHasBuff("Riptide")); }
/// <summary> /// Cast a spell by name. Will check range, cooldown, and visibility. After the spell is cast, the thread will sleep /// for GCD. /// </summary> /// <param name="spellName">The name of the spell in the spell databse.</param> /// <param name="ignoreMovement">Can we cast while moving.</param> /// <param name="ignoreChanneling"></param> /// <returns>True if the spell was cast, false if it was not.</returns> private bool castWithRangeCheck(string spellName, bool ignoreMovement = false, bool ignoreChanneling = true) { //Can't do range check. if (!isPlayerBusy(ignoreMovement, ignoreChanneling) && WoW.CanCast(spellName)) { WoW.CastSpell(spellName); if (WoW.IsSpellOnGCD(spellName)) { Thread.Sleep(WoW.SpellCooldownTimeRemaining(spellName)); } return(true); } return(false); }
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.PlayerIsChanneling && WoW.TargetIsEnemy && WoW.IsInCombat) { if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_XBUTTON1) < 0) { if (!WoW.CanCast("DnD")) { return; } WoW.CastSpell("DnD"); Mouse.RightRelease(); Thread.Sleep(50); Mouse.LeftClick(Cursor.Position.X, Cursor.Position.Y); Thread.Sleep(50); Mouse.RightDown(); Thread.Sleep(50); Mouse.RightRelease(); return; } if (WoW.CanCast("Outbreak") && WoW.CurrentRunes >= 1 && !WoW.TargetHasDebuff("Virulent Plague")) { WoW.CastSpell("Outbreak"); return; } if (WoW.CanCast("Dark Transformation") && WoW.TargetHasDebuff("Virulent Plague")) { WoW.CastSpell("Dark Transformation"); return; } Generic(); } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE stuff here } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
private void EnhancementBuffs() { //actions.buffs = rockbiter,if= talent.landslide.enabled & !buff.landslide.up if (WoW.CanCast("Rockbiter", true, true, true) && WoW.Talent(1) == 3 && !WoW.PlayerHasBuff("Landslide")) { WoW.CastSpell("Rockbiter", "Buff spell"); return; } //actions.buffs +=/ fury_of_air,if= buff.ascendance.up | (feral_spirit.remains > 5) | level < 100 if (WoW.CanCast("FoA") && WoW.Talent(6) == 2 && !WoW.PlayerHasBuff("FoA") && (WoW.PlayerHasBuff("Ascendance") && Pets.IsRunning)) { WoW.CastSpell("FoA", "Buff spell"); return; } //actions.buffs +=/ crash_lightning,if= artifact.alpha_wolf.rank & prev_gcd.1.feral_spirit if (WoW.CanCast("Crash lightning") && WoW.IsSpellInRange("Rockbiter") && Pets.IsRunning && !Crash.IsRunning) { Crash.Restart(); WoW.CastSpell("Crash lightning", "Buff spell"); return; } //actions.buffs +=/ flametongue,if= !buff.flametongue.up if (!WoW.PlayerHasBuff("Flametongue") && WoW.CanCast("Flametongue", true, true, true)) { WoW.CastSpell("Flametongue", "Buff spell"); return; } //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & !buff.frostbrand.up & variable.furyCheck45 if (WoW.CanCast("Frostbrand", true, true, true) && WoW.Talent(4) == 3 && !WoW.PlayerHasBuff("Frostbrand") && furyCheck45) { WoW.CastSpell("Frostbrand", "Buff spell"); return; } //actions.buffs +=/ flametongue,if= buff.flametongue.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2 if (WoW.CanCast("Flametongue", true, true, true) && WoW.PlayerBuffTimeRemaining("Flametongue") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Flametongue", "Buff spell"); return; } //actions.buffs +=/ frostbrand,if= talent.hailstorm.enabled & buff.frostbrand.remains < 6 + gcd & cooldown.doom_winds.remains < gcd * 2 if (WoW.CanCast("Frostbrand", true, true, true) && WoW.PlayerBuffTimeRemaining("Frostbrand") < 600 + GCD && WoW.SpellCooldownTimeRemaining("Doom Winds") < GCD * 2) { WoW.CastSpell("Frostbrand", "Buff spell"); return; } }
public void useCDDef() { if (CanCastNoRange("Anti-Magic Shell") && WoW.HealthPercent < 70 && !WoW.IsSpellOnCooldown("Anti-Magic Shell")) { WoW.CastSpell("Anti-Magic Shell"); return; } if (CanCastNoRange("Icebound Fortitude") && WoW.HealthPercent < 40 && !WoW.IsSpellOnCooldown("Icebound Fortitude")) { WoW.CastSpell("Icebound Fortitude"); return; } if (CanCastNoRange("Vampiric Blood") && WoW.HealthPercent < 50 && !WoW.IsSpellOnCooldown("Vampiric Blood")) { WoW.CastSpell("Vampiric Blood"); } }
private void DPSRacial() { if (!WoW.PlayerIsCasting) { if (WoW.PlayerRace == "Troll" && WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking")) { WoW.CastSpell("Berserking"); return; } if (WoW.PlayerRace == "Orc" && WoW.CanCast("Blood Fury") && !WoW.IsSpellOnCooldown("Blood Fury")) { WoW.CastSpell("Blood Fury"); return; } } }
public override void Pulse() { if (!WoW.HasTarget || !WoW.TargetIsEnemy || !WoW.IsSpellInRange("Throw Glaive")) { return; } WoW.CastSpell("Metamorphasis", WoW.PlayerHealthPercent < 30 && !WoW.IsSpellOnCooldown("Metamorphasis") && UseCooldowns, false); WoW.CastSpell("Sever", WoW.PlayerHasBuff("Metamorphasis")); WoW.CastSpell("Soul Cleave", WoW.PlayerHasBuff("Metamorphasis") && WoW.PlayerHasBuff("Soul Fragments") && WoW.PlayerBuffStacks("Soul Fragments") >= 5 && WoW.Pain >= 50); WoW.CastSpell("Throw Glaive", !WoW.IsSpellInRange("Soul Carver") && !WoW.IsSpellOnCooldown("Throw Glaive")); if (!WoW.IsSpellInRange("Soul Carver")) { return; // If we are out of melee range return } if (WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast > Random.Next(50, 70)) { if (!WoW.IsSpellOnCooldown("Sigil of Silence")) { Log.Write("Interrupting spell"); WoW.CastSpell("Sigil of Silence", true); } if (!WoW.IsSpellOnCooldown("Arcane Torrent")) { Log.Write("Interrupting spell"); WoW.CastSpell("Arcane Torrent", true); } if (!WoW.IsSpellOnCooldown("Consume Magic")) { Log.Write("Interrupting spell"); WoW.CastSpell("Consume Magic", true); } } WoW.CastSpell("Fiery Brand", !WoW.TargetHasDebuff("Fiery Demise") && !WoW.IsSpellOnCooldown("Fiery Brand")); WoW.CastSpell("Demon Spikes", !WoW.PlayerHasBuff("Demon Spikes") && WoW.Pain > 20 && !WoW.PlayerHasBuff("Magnum Opus")); WoW.CastSpell("Soul Carver", true); WoW.CastSpell("Fel Devastation", WoW.Pain >= 30); WoW.CastSpell("Soul Cleave", WoW.Pain >= 50); WoW.CastSpell("Immolation Aura", true); WoW.CastSpell("Sigil of Flame", !WoW.TargetHasDebuff("Sigil of Flame")); WoW.CastSpell("Shear", true); // Pain Generator }
private void interruptcast() { Random random = new Random(); int randomNumber = random.Next(60, 80); if (WoW.TargetPercentCast > randomNumber && WoW.TargetIsCastingAndSpellIsInterruptible) { if (WoW.PlayerRace == "BloodElf" && WoW.CanCast("Arcane Torrent", true, true, false, false, true) && !WoW.IsSpellOnCooldown("Wind Shear") && WoW.TargetIsCastingAndSpellIsInterruptible) //interupt every spell, not a boss. { WoW.CastSpell("Arcane Torrent"); return; } if (WoW.PlayerRace == "Pandaren" && WoW.CanCast("Quaking palm", true, true, true, false, true)) //interupt every spell, not a boss. { WoW.CastSpell("Quaking palm"); return; } } }
private void SpellCast(string spellName) { if (WoW.PlayerIsCasting || (WoW.LastSpell == VOID_TORRENT && WoW.PlayerIsChanneling)) { return; } if (spellName == MIND_FLAY && WoW.LastSpell == MIND_FLAY && WoW.PlayerIsChanneling) { return; } if (WoW.CanCast(spellName) && WoW.IsSpellInRange(SHADOW_WORD_PAIN)) { WoW.CastSpell(spellName); if (WoW.IsSpellOnGCD(spellName)) { Thread.Sleep(WoW.SpellCooldownTimeRemaining(spellName)); } } }
public override void Pulse() { resetStopwatch(); if (!WoW.CooldownsOn) { if (shouldUseTrinketOneAlways || shouldUseTrinketOneCd) { if (!trinketOne.IsRunning) { WoW.CastSpell("TrinketOne"); trinketOne.Start(); } } if (shouldUseTrinketTwoAlways || shouldUseTrinketTwoCd) { if (!trinketTwo.IsRunning) { WoW.CastSpell("TrinketTwo"); trinketTwo.Start(); } } } else { if (shouldUseTrinketOneAlways) { if (!trinketOne.IsRunning) { WoW.CastSpell("TrinketOne"); trinketOne.Start(); } } if (shouldUseTrinketTwoAlways) { if (!trinketTwo.IsRunning) { WoW.CastSpell("TrinketTwo"); trinketTwo.Start(); } } } }
public void EnhancementCD() { if (UseCooldowns) { //actions.CDs = bloodlust,if= target.health.pct < 25 | time > 0.500 //actions.CDs +=/ berserking,if= buff.ascendance.up | (feral_spirit.remains > 5) if (WoW.PlayerRace == "Troll" && WoW.CanCast("Berserking") && !WoW.IsSpellOnCooldown("Berserking") && ((WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance")) || Pets.ElapsedMilliseconds < 10000)) { WoW.CastSpell("Berserking"); return; } //actions.CDs +=/ blood_fury,if= buff.ascendance.up | (feral_spirit.remains > 5) | level < 100 if (WoW.PlayerRace == "Orc" && WoW.CanCast("Blood Fury") && ((WoW.Talent(7) != 1 || WoW.PlayerHasBuff("Ascendance")) || Pets.ElapsedMilliseconds < 10000)) { WoW.CastSpell("Blood Fury"); return; } //actions.CDs +=/ feral_spirit if (WoW.CanCast("Feral Spirit", true, true, false, false, true) && WoW.IsSpellInRange("Rockbiter") && WoW.Maelstrom >= 20 && (WoW.CanCast("Crash lightning", true, true, false, false, true) || WoW.SpellCooldownTimeRemaining("Crash lightning") < GCD)) //feral spirit on boss - normally cast manually { Pets.Start(); WoW.CastSpell("Feral Spirit"); return; } //actions.CDs +=/ potion,if= buff.ascendance.up | !talent.ascendance.enabled & feral_spirit.remains > 5 | target.time_to_die <= 60 //actions.CDs +=/ doom_winds,if= debuff.earthen_spike.up & talent.earthen_spike.enabled | !talent.earthen_spike.enabled if (WoW.CanCast("Doom Winds") && WoW.IsSpellInRange("Rockbiter") && (WoW.Talent(7) == 3 && WoW.TargetHasDebuff("Earthen spike") || WoW.Talent(7) != 3)) { WoW.CastSpell("Doom Winds"); return; } //actions.CDs +=/ ascendance,if= buff.doom_winds.up if (WoW.CanCast("Ascendance") && WoW.PlayerHasBuff("Doom Winds")) { WoW.CastSpell("Ascendance"); return; } } }
public override void Pulse() // Updated for Legion (tested and working for single target) { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { Log.Write("Runes: " + WoW.CurrentRunes); Log.Write("Health: " + WoW.HealthPercent); if (WoW.HasTarget && WoW.TargetIsEnemy) { if (!WoW.TargetHasDebuff("Virulent Plague") && WoW.CurrentRunes >= 1 && WoW.CanCast("Outbreak", true, false, true)) { WoW.CastSpell("Outbreak"); } if (WoW.CanCast("Dark Transformation", true, true, true)) { WoW.CastSpell("Dark Transformation"); } if ((WoW.CanCast("Death Coil") && (WoW.RunicPower >= 80)) || (WoW.PlayerHasBuff("Sudden Doom") && WoW.IsSpellOnCooldown("Dark Arbiter"))) { WoW.CastSpell("Death Coil"); } if (WoW.CanCast("Festering Strike", true, true, true) && WoW.TargetDebuffStacks("Festering Wound") <= 4) { WoW.CastSpell("Festering Strike"); } if (WoW.CanCast("Clawing Shadows") && WoW.CurrentRunes >= 3) { WoW.CastSpell("Clawing Shadows"); } } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE stuff here } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
private void Defensive() { if (WoW.Talent(2) == 1 && WoW.CanCast("Rainfall") && !WoW.PlayerHasBuff("Rainfall") && !WoW.IsSpellOnCooldown("Rainfall")) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Rainfall"); return; } /* if (CharInfo.Mana > 21 && WoW.Maelstrom > 20 && WoW.CanCast("Healing Surge") && WoW.HealthPercent < EnhLowHp && !WoW.IsSpellOnCooldown("Healing Surge")) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP * { * WoW.CastSpell("Healing Surge"); * return; * }*/ if (WoW.CanCast("Astral Shift") && WoW.HealthPercent < 60 && !WoW.IsSpellOnCooldown("Astral Shift")) //ASTRAL SHIFT - DMG REDUCTION if we are below 60% of HP { WoW.CastSpell("Astral Shift"); return; } if (WoW.PlayerRace == "Dreanei" && WoW.HealthPercent < 80 && !WoW.IsSpellOnCooldown("Gift Naaru")) { WoW.CastSpell("Gift Naaru"); } }
public override void Pulse() { if (WoW.IsMacroPressed("Anti Afk start") && !Jumpwatch.IsRunning) { Jumpwatch.Start(); Log.Write(".......................", Color.Green); Log.Write("Anti Afk script started", Color.Green); Log.Write(".......................", Color.Green); } if (WoW.IsMacroPressed("Anti Afk stop") && Jumpwatch.IsRunning) { Jumpwatch.Reset(); Log.Write(".......................", Color.Red); Log.Write("Anti Afk script stoped", Color.Red); Log.Write(".......................", Color.Red); } if (Jumpwatch.ElapsedMilliseconds >= 120000 && Jumpwatch.IsRunning) { WoW.CastSpell("MakeMeJump"); Jumpwatch.Restart(); return; } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.CanCast("Arcane Familiar") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Arcane Familiar")) { WoW.CastSpell("Arcane Familiar"); return; } if (WoW.HasTarget && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Greater Invisibility")) { if (WoW.CanCast("Ice Floes") && WoW.IsMoving && !WoW.PlayerHasBuff("Ice Floes")) { WoW.CastSpell("Ice Floes"); return; } if (WoW.CanCast("Evocation") && WoW.Mana <= 5) { WoW.CastSpell("Evocation"); return; } if (WoW.CanCast("Nether Tempest") && WoW.CurrentArcaneCharges == 4 && !WoW.TargetHasDebuff("Nether Tempest")) { WoW.CastSpell("Nether Tempest"); return; } if (WoW.CanCast("Arcane Blast") && WoW.CurrentArcaneCharges < 4) { WoW.CastSpell("Arcane Blast"); return; } if (WoW.CanCast("Supernova")) { WoW.CastSpell("Supernova"); return; } if (WoW.CanCast("Arcane Missiles") && WoW.PlayerHasBuff("Arcane Missiles") && WoW.CurrentArcaneCharges == 4) { WoW.CastSpell("Arcane Missiles"); return; } if (WoW.CanCast("Arcane Barrage") && !WoW.PlayerHasBuff("Arcane Missiles") && WoW.CurrentArcaneCharges == 4) { WoW.CastSpell("Arcane Barrage"); return; } } } if (combatRoutine.Type == RotationType.AOE) { //Easiest and most DPS increasing way to dps as Arcane is to have a burn phase and a conserv phase. //To Simplify things, i turned AOE rotation into Burn. if (WoW.CanCast("Arcane Familiar") && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Arcane Familiar")) { WoW.CastSpell("Arcane Familiar"); return; } if (WoW.HasTarget && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Greater Invisibility")) { if (WoW.CanCast("Ice Floes") && WoW.IsMoving && !WoW.PlayerHasBuff("Ice Floes")) { WoW.CastSpell("Ice Floes"); return; } if (WoW.CanCast("Nether Tempest") && WoW.CurrentArcaneCharges == 4 && !WoW.TargetHasDebuff("Nether Tempest")) { WoW.CastSpell("Nether Tempest"); return; } if (WoW.CanCast("Rune of Power") && !WoW.PlayerHasBuff("Rune Of Power") && WoW.CurrentArcaneCharges == 4) { WoW.CastSpell("Rune of Power"); return; } if (WoW.CanCast("Arcane Power") && WoW.PlayerHasBuff("Rune Of Power")) { WoW.CastSpell("Arcane Power"); return; } if (WoW.CanCast("Mark Of Aluneth") && WoW.PlayerHasBuff("Rune of Power")) { WoW.CastSpell("Mark Of Aluneth"); return; } if (WoW.CanCast("Supernova")) { WoW.CastSpell("Supernova"); return; } if (WoW.CanCast("Arcane Blast") && !WoW.PlayerHasBuff("Arcane Missiles")) { WoW.CastSpell("Arcane Blast"); return; } if (WoW.CanCast("Arcane Missiles") && WoW.PlayerHasBuff("Arcane Missiles")) { WoW.CastSpell("Arcane Missiles"); return; } } } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { validtarget = WoW.HasTarget && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Greater Invisibility") && !WoW.TargetHasDebuff("Polymorph") && WoW.RangeToTarget < 41; // Prismatic Barrier if health < 80% WoW.CastSpell("Prismatic Barrier", WoW.PlayerHealthPercent <= 80 && !WoW.PlayerHasBuff("Prismatic Barrier")); // Arcane Familiar if not up WoW.CastSpell("Arcane Familiar", WoW.Talent(1) == 1 && !WoW.PlayerIsCasting && !WoW.PlayerIsChanneling && !WoW.PlayerHasBuff("Arcane Familiar")); // Single Target Combat Begins - No casting if Invisible or Target is Polymorphed if (validtarget) { // Arcane Barrage when moving without Ice Floes WoW.CastSpell("Arcane Barrage", WoW.CanCast("Arcane Barrage") && WoW.IsMoving && !WoW.PlayerHasBuff("Ice Floes") && WoW.PlayerBuffStacks("Arcane Missiles") == 0); //Burn Phase //---------------------------------------------------------- // BURN BEGIN - Only use Burn if Burn is selected and Arcane Power is available or active // Charged Up if zero arcane charges if (UseCooldowns) { // BURN - Arcane Missle if you can WoW.CastSpell("Arcane Missiles", WoW.PlayerHasBuff("Arcane Missiles!") && WoW.PlayerBuffStacks("Arcane Missiles!") == 3, true); WoW.CastSpell("Arcane Missiles", WoW.LastSpell == ("Arcane Missiles") && WoW.PlayerHasBuff("Arcane Missiles!") && WoW.PlayerBuffStacks("Arcane Missiles!") >= 1, true); // Mark Of Aluneth is up WoW.CastSpell("Mark Of Aluneth", WoW.CanCast("Mark Of Aluneth")); // Cast Arcane Blast if < 4 charges WoW.CastSpell("Arcane Blast", WoW.CurrentArcaneCharges < 4); // BURN - Rune of Power at 4 Arcane Blast Charges WoW.CastSpell("Rune of Power", !WoW.PlayerHasBuff("Rune of Power") && WoW.CurrentArcaneCharges == 4); // BURN - Rune of Power if >30% mana WoW.CastSpell("Rune of Power", WoW.PlayerHasBuff("Arcane Power") && !WoW.PlayerHasBuff("Rune of Power") && WoW.Mana >= 30); // BURN - Arcane Power if Rune of Power down and 4 Arcane Blast Charges WoW.CastSpell("Arcane Power", WoW.PlayerHasBuff("Rune of Power") && WoW.CurrentArcaneCharges == 4); // Evocate if low on mana WoW.CastSpell("Evocation", WoW.Mana <= 5); // Arcane Blast otherwise WoW.CastSpell("Arcane Blast", validtarget); } // BURN END // Conserve Begin if (!UseCooldowns) { WoW.CastSpell("Rune of Power", WoW.PlayerSpellCharges("Rune of Power") == 2); // Mark Of Aluneth is up - If no Rune of Power...cast Rune of Power - If Rune of Power...cast Mark Of Aluneth WoW.CastSpell("Rune of Power", WoW.CanCast("Mark Of Aluneth") && !WoW.PlayerHasBuff("Rune of Power")); WoW.CastSpell("Mark Of Aluneth", WoW.CanCast("Mark Of Aluneth") && WoW.PlayerHasBuff("Rune of Power")); // Arcane Missles with 4 Arcane Blast Charges WoW.CastSpell("Arcane Missiles", WoW.PlayerHasBuff("Arcane Missiles!") && WoW.CurrentArcaneCharges == 4); // Arcane Missles with 3 stacks of Arcane Missiles! Buff - Not sure how to check buff stacks *NEED FIXED* WoW.CastSpell("Arcane Missiles", WoW.PlayerHasBuff("Arcane Missiles!") && WoW.PlayerBuffStacks("Arcane Missiles!") == 3); WoW.CastSpell("Arcane Barrage", WoW.Mana < 55); // Arcane Blast otherwise WoW.CastSpell("Arcane Blast", validtarget); } // SingleTarget Combat Ends } } if (combatRoutine.Type == RotationType.AOE) { // Do Single Target Cleave stuff here if applicable else ignore this one } 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.IsSpellInRange("Rupture") && WoW.IsInCombat && !WoW.IsMounted) { if (UseCooldowns && WoW.CanCast("Kingsbane") && WoW.CurrentComboPoints <= 4 && WoW.Energy >= 35 && WoW.PlayerHasBuff("Envenom") && WoW.PlayerBuffTimeRemaining("Envenom") >= 150 && !WoW.IsSpellOnCooldown("Kingsbane") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") >= 1400 && ( WoW.SpellCooldownTimeRemaining("Vendetta") >= 1000 || WoW.TargetHasDebuff("Vendetta") )) { WoW.CastSpell("Kingsbane"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.CanCast("Garrote") && WoW.Energy >= 45 && !WoW.TargetHasDebuff("Garrote") && !WoW.IsSpellOnCooldown("Garrote") && WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Garrote"); return; } if (WoW.TargetHasDebuff("Vendetta") && WoW.CanCast("Fan Of Knives") && WoW.Energy >= 35 && WoW.PlayerHasBuff("FoK") && WoW.PlayerBuffStacks("FoK") == 30 && WoW.CurrentComboPoints <= 4) { WoW.CastSpell("Fan Of Knives"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.CanCast("Garrote") && WoW.Energy >= 45 && WoW.TargetHasDebuff("Garrote") && WoW.TargetDebuffTimeRemaining("Garrote") <= 300 && WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Garrote"); return; } if (WoW.CurrentComboPoints == 4 && WoW.Energy >= 25 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture") && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Rupture"); return; } if (WoW.CurrentComboPoints == 4 && WoW.Energy >= 25 && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") <= 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Rupture"); return; } if (WoW.CurrentComboPoints == 5 && WoW.Energy >= 25 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture") && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Rupture"); return; } if (WoW.CurrentComboPoints == 5 && WoW.Energy >= 25 && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") <= 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Rupture"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetDebuffTimeRemaining("Toxins") <= 150 && WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetDebuffTimeRemaining("Toxins") <= 150 && WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (WoW.TargetHasDebuff("Kingsbane") && WoW.TargetDebuffTimeRemaining("Rupture") >= 400 && WoW.Energy >= 35 && WoW.CurrentComboPoints >= 2 && WoW.PlayerHasBuff("Envenom") && WoW.PlayerBuffTimeRemaining("Envenom") <= 150) { WoW.CastSpell("Envenom"); Log.Write("Extend Envenom remaining"); return; } if (WoW.TargetHasDebuff("Kingsbane") && WoW.TargetDebuffTimeRemaining("Rupture") >= 400 && WoW.Energy >= 35 && WoW.CurrentComboPoints >= 2 && !WoW.PlayerHasBuff("Envenom")) { WoW.CastSpell("Envenom"); Log.Write("Getting Envenom up for kingsbane"); return; } if (!WoW.PlayerHasBuff("Vanish") && !WoW.TargetHasDebuff("Toxins") && WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (!WoW.PlayerHasBuff("Vanish") && !WoW.TargetHasDebuff("Toxins") && WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (!WoW.PlayerHasBuff("Vanish") && WoW.TargetHasDebuff("Toxins") && WoW.TargetHasDebuff("Vendetta") && WoW.Energy >= 140 && WoW.CurrentComboPoints >= 4 && WoW.CanCast("Envenom") && WoW.TargetHasDebuff("Rupture") && WoW.TargetDebuffTimeRemaining("Rupture") > 600 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Envenom"); return; } if (WoW.CanCast("Mutilate") && WoW.Energy >= 55 && WoW.CurrentComboPoints <= 3) { WoW.CastSpell("Mutilate"); return; } if (UseCooldowns && WoW.CanCast("Vendetta") && !WoW.IsSpellOnCooldown("Vendetta") && WoW.Energy <= 50 ) { WoW.CastSpell("Vendetta"); return; } /*if (UseCooldowns && * WoW.CanCast("Vanish") && * WoW.CurrentComboPoints >= 5 && * WoW.Energy >= 25 && WoW.TargetHasDebuff("Vendetta") && * ( * WoW.TargetHasDebuff("Rupture") && * WoW.TargetDebuffTimeRemaining("Rupture") < 10 * ) * ) { * WoW.CastSpell("Vanish"); * return; * }*/ if (!WoW.PlayerHasBuff("Critbuff") && UseCooldowns && WoW.CurrentComboPoints == 5 && !WoW.IsSpellOnCooldown("Vanish") && WoW.Energy >= 35 && WoW.TargetHasDebuff("Vendetta")) { WoW.CastSpell("Vanish"); return; } if (UseCooldowns && WoW.CurrentComboPoints == 5 && WoW.PlayerHasBuff("Vanish") && WoW.Energy >= 35 && WoW.TargetHasDebuff("Vendetta")) { WoW.CastSpell("Rupture"); return; } if (UseCooldowns && WoW.CanCast("Berserk") && !WoW.IsSpellOnCooldown("Berserk") && WoW.TargetHasDebuff("Vendetta") && WoW.PlayerRace == "Troll") { WoW.CastSpell("Berserk"); return; } } } if (combatRoutine.Type == RotationType.AOE || combatRoutine.Type == RotationType.SingleTargetCleave) // Do AoE Target Stuff here { if (WoW.HasTarget && WoW.IsSpellInRange("Rupture") && WoW.IsInCombat && !WoW.IsMounted) { if (WoW.Energy >= 35 && WoW.CurrentComboPoints <= 4 && WoW.CanCast("Fan Of Knives")) { WoW.CastSpell("Fan Of Knives"); return; } if (WoW.Energy >= 35 && WoW.CurrentComboPoints == 4 && WoW.TargetHealthPercent <= 35 && WoW.CanCast("Envenom")) { WoW.CastSpell("Envenom"); return; } if (WoW.Energy >= 35 && WoW.CurrentComboPoints == 5 && WoW.TargetHealthPercent <= 35 && WoW.CanCast("Envenom")) { WoW.CastSpell("Envenom"); return; } if (WoW.Energy >= 25 && WoW.CurrentComboPoints == 4 && WoW.TargetHealthPercent >= 36 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture")) { WoW.CastSpell("Rupture"); return; } if (WoW.Energy >= 25 && WoW.CurrentComboPoints == 5 && WoW.TargetHealthPercent >= 36 && WoW.CanCast("Rupture") && !WoW.TargetHasDebuff("Rupture")) { WoW.CastSpell("Rupture"); return; } if (WoW.Energy >= 35 && WoW.CurrentComboPoints >= 4 && WoW.TargetHealthPercent >= 36 && WoW.TargetHasDebuff("Rupture") && WoW.CanCast("Envenom")) { WoW.CastSpell("Envenom"); return; } if (WoW.CanCast("Garrote") && WoW.Energy >= 45 && !WoW.TargetHasDebuff("Garrote") && !WoW.IsSpellOnCooldown("Garrote") && WoW.CurrentComboPoints <= 4 && WoW.IsSpellInRange("Garrote")) { WoW.CastSpell("Garrote"); return; } if (UseCooldowns && WoW.CanCast("Berserk") && !WoW.IsSpellOnCooldown("Berserk")) { WoW.CastSpell("Berserk"); return; } } } } }