public override void Pulse() { if (WoW.PlayerHasBuff("Mount")) { return; } if (WoW.IsInCombat && WoW.HealthPercent < 35 && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand")) { WoW.CastSpell("Last Stand"); return; } if (WoW.IsInCombat && WoW.HealthPercent < 20 && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall")) { WoW.CastSpell("Shield Wall"); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("HeroicLeap")) { WoW.CastSpell("HeroicLeap"); return; } return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_1) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Thunder Clap"); return; } return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LMENU) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Shockwave")) { WoW.CastSpell("Shockwave"); return; } return; } if (combatRoutine.Type == RotationType.SingleTarget || combatRoutine.Type == RotationType.AOE) // Do Single Target Stuff here { if (CombatWatch.IsRunning && !WoW.IsInCombat) { CombatWatch.Reset(); } if (!CombatWatch.IsRunning && WoW.IsInCombat) { CombatWatch.Start(); } if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling) { if (!WoW.TargetHasDebuff("ShockWavestun") && WoW.IsInCombat) { if (WoW.CanCast("Shield Block") && WoW.Rage >= 15 && !WoW.PlayerIsChanneling && WoW.HealthPercent < 100 && (WoW.PlayerSpellCharges("Shield Block") == 2 || (WoW.PlayerSpellCharges("Shield Block") >= 1 && WoW.HealthPercent <= 90 && WoW.PlayerBuffTimeRemaining("ShieldBlockAura") <= 2))) { WoW.CastSpell("Shield Block"); return; } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap") && CombatWatch.ElapsedMilliseconds > 1000 && CombatWatch.ElapsedMilliseconds < 5000) { WoW.CastSpell("Thunder Clap"); return; } /* ------------------ IGNORE PAIN MANAGEMENT----------------------*/ if (WoW.CanCast("Ignore Pain") && WoW.PlayerHasBuff("Vengeance: Ignore Pain") && WoW.Rage >= 39) { WoW.CastSpell("Ignore Pain"); return; } if (WoW.CanCast("Ignore Pain") && WoW.Rage > 30 && WoW.HealthPercent < 100 && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) && !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.PlayerHasBuff("Vengeance: Focused Rage")) { WoW.CastSpell("Ignore Pain"); return; } /* ------------------ END IGNORE PAIN MANAGEMENT-------------------*/ if (WoW.TargetIsCasting && WoW.CanCast("SpellReflect") && !WoW.IsSpellOnCooldown("SpellReflect")) { WoW.CastSpell("SpellReflect"); } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry")) { WoW.CastSpell("Battle Cry"); return; } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Shield Slam") && !WoW.IsSpellOnCooldown("Shield Slam") && WoW.PlayerHasBuff("Legendary")) { WoW.CastSpell("Shield Slam"); return; } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap") && WoW.PlayerHasBuff("Legendary")) { WoW.CastSpell("Thunder Clap"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && WoW.IsSpellOverlayed("Revenge") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain")) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && WoW.PlayerHasBuff("Vengeance: Focused Rage") && WoW.Rage > 59) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && !WoW.PlayerHasBuff("Ignore Pain") && WoW.Rage > 35 && WoW.HealthPercent < 100) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && WoW.PlayerHasBuff("Ignore Pain") && WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 3 && WoW.Rage > 40 && WoW.HealthPercent < 100) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam") && !WoW.PlayerHasBuff("Vengeance: Focused Rage") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && WoW.Rage > 69) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Victory Rush") && !WoW.IsSpellOnCooldown("Victory Rush") && WoW.IsSpellInRange("Shield Slam") && WoW.HealthPercent < 90 && WoW.PlayerHasBuff("VictoryRush")) { WoW.CastSpell("Victory Rush"); return; } if (WoW.IsSpellInRange("Devastate") && WoW.CanCast("Devastate")) { WoW.CastSpell("Devastate"); return; } } if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun")) { WoW.CastSpell("Neltharion's Fury"); return; } /* actions.prot=spell_reflection,if=incoming_damage_2500ms>health.max*0.20 * actions.prot+=/demoralizing_shout,if=incoming_damage_2500ms>health.max*0.20&!talent.booming_voice.enabled * actions.prot+=/last_stand,if=incoming_damage_2500ms>health.max*0.40 * actions.prot+=/shield_wall,if=incoming_damage_2500ms>health.max*0.40&!cooldown.last_stand.remains=0 * actions.prot+=/potion,name=unbending_potion,if=(incoming_damage_2500ms>health.max*0.15&!buff.potion.up)|target.time_to_die<=25 * actions.prot+=/battle_cry,if=cooldown.shield_slam.remains=0 * actions.prot+=/demoralizing_shout,if=talent.booming_voice.enabled&buff.battle_cry.up * actions.prot+=/ravager,if=talent.ravager.enabled&buff.battle_cry.up * actions.prot+=/neltharions_fury,if=!buff.shield_block.up&cooldown.shield_block.remains>3&((cooldown.shield_slam.remains>3&talent.heavy_repercussions.enabled)|(!talent.heavy_repercussions.enabled)) * actions.prot+=/shield_block,if=!buff.neltharions_fury.up&((cooldown.shield_slam.remains=0&talent.heavy_repercussions.enabled)|action.shield_block.charges=2|!talent.heavy_repercussions.enabled) * actions.prot+=/ignore_pain,if=(rage>=60&!talent.vengeance.enabled)|(buff.vengeance_ignore_pain.up&rage>=39)|(talent.vengeance.enabled&!buff.vengeance_ignore_pain.up&!buff.vengeance_revenge.up&rage<30&!buff.revenge.react) * actions.prot+=/shield_slam,if=(!(cooldown.shield_block.remains<=gcd.max*2&!buff.shield_block.up)&talent.heavy_repercussions.enabled)|!talent.heavy_repercussions.enabled * actions.prot+=/thunder_clap * actions.prot+=/revenge,if=(talent.vengeance.enabled&buff.revenge.react&!buff.vengeance_ignore_pain.up)|(buff.vengeance_revenge.up&rage>=59)|(talent.vengeance.enabled&!buff.vengeance_ignore_pain.up&!buff.vengeance_revenge.up&rage>=69)|(!talent.vengeance.enabled&buff.revenge.react) * actions.prot+=/devastate */ } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE Stuff here } }
public override void Pulse() { if (defcooldowns && WoW.IsInCombat) { if (WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "LS HP Percent") && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand")) { WoW.CastSpell("Last Stand"); return; } if (WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "SW HP Percent") && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall")) { WoW.CastSpell("Shield Wall"); return; } } if (Pots && WoW.IsInCombat && WoW.HealthPercent < ConfigFile.ReadValue <int>("ProtectionLesion", "HS HP Percent")) { if (WoW.ItemCount("Healthstone") >= 1 && !WoW.ItemOnCooldown("Healthstone") && WoW.ItemCount("HealthPotion") == 0) { WoW.CastSpell("Healthstone"); return; } if (WoW.ItemCount("HealthPotion") >= 1 && !WoW.ItemOnCooldown("HealthPotion")) { WoW.CastSpell("HealthPotion"); return; } } if (!Indomitable && WoW.IsInCombat && WoW.IsSpellInRange("Shield Slam")) { swingwatch.Start(); } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (WoW.HasTarget && !WoW.PlayerIsChanneling && WoW.IsSpellInRange("Shield Slam")) { if (BattleC && !WoW.IsSpellOnCooldown("Battle Cry")) { WoW.CastSpell("Battle Cry"); return; } if (AngerM && !WoW.IsSpellOnCooldown("Demoralizing Shout") && (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0)) { WoW.CastSpell("Demoralizing Shout"); } if (generalInterrupts) { if (WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible) { if (!WoW.IsSpellOnCooldown("Pummel") && WoW.IsSpellInRange("Shield Slam") && WoW.TargetPercentCast >= 50) { WoW.CastSpell("Pummel"); return; } if (spellref && !WoW.IsSpellOnCooldown("SpellReflect") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible && WoW.TargetPercentCast >= 80) { WoW.CastSpell("SpellReflect"); return; } } } if (mythicplusinterrupts) { if (WoW.CanCast("Pummel") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible) { //int spell list for all important spells in M+ if (WoW.TargetCastingSpellID == 200248 //Court Of Stars Mythic+ Interrupt list || WoW.TargetCastingSpellID == 225573 || WoW.TargetCastingSpellID == 208165 || WoW.TargetCastingSpellID == 211401 || WoW.TargetCastingSpellID == 21147 || WoW.TargetCastingSpellID == 211299 || WoW.TargetCastingSpellID == 2251 || WoW.TargetCastingSpellID == 209413 || WoW.TargetCastingSpellID == 209404 || WoW.TargetCastingSpellID == 215204 || WoW.TargetCastingSpellID == 210261 //Darkheart Thicket Mythic+ Interrupt list || WoW.TargetCastingSpellID == 200658 || WoW.TargetCastingSpellID == 200631 || WoW.TargetCastingSpellID == 204246 || WoW.TargetCastingSpellID == 2014 //Eye of Azshara Mythic+ Interrupt list || WoW.TargetCastingSpellID == 19687 || WoW.TargetCastingSpellID == 218532 || WoW.TargetCastingSpellID == 195129 || WoW.TargetCastingSpellID == 195046 || WoW.TargetCastingSpellID == 197502 || WoW.TargetCastingSpellID == 196027 || WoW.TargetCastingSpellID == 196175 || WoW.TargetCastingSpellID == 192003 || WoW.TargetCastingSpellID == 191848 //Halls of Valor Mythic+ Interrupt list || WoW.TargetCastingSpellID == 198595 || WoW.TargetCastingSpellID == 198962 || WoW.TargetCastingSpellID == 198931 || WoW.TargetCastingSpellID == 192563 || WoW.TargetCastingSpellID == 192288 || WoW.TargetCastingSpellID == 199726 //Maw of Souls Mythic+ Interrupt list || WoW.TargetCastingSpellID == 198495 || WoW.TargetCastingSpellID == 195293 || WoW.TargetCastingSpellID == 199589 || WoW.TargetCastingSpellID == 194266 || WoW.TargetCastingSpellID == 198405 || WoW.TargetCastingSpellID == 199514 || WoW.TargetCastingSpellID == 194657 //Neltharions Lair Mythic+ Interrupt list || WoW.TargetCastingSpellID == 193585 || WoW.TargetCastingSpellID == 202181 //The Arcway Mythic+ Interrupt list || WoW.TargetCastingSpellID == 226269 || WoW.TargetCastingSpellID == 211007 || WoW.TargetCastingSpellID == 211757 || WoW.TargetCastingSpellID == 226285 || WoW.TargetCastingSpellID == 226206 || WoW.TargetCastingSpellID == 211115 || WoW.TargetCastingSpellID == 196392 // Advisor Vandros (Interrupt manually) Spell,203176,Accelerating Blast || WoW.TargetCastingSpellID == 203957 //Vault of the Wardens Mythic+ Interrupt list || WoW.TargetCastingSpellID == 193069 || WoW.TargetCastingSpellID == 191823 || WoW.TargetCastingSpellID == 202661 || WoW.TargetCastingSpellID == 201488 || WoW.TargetCastingSpellID == 195332 //Raid Interrupts || WoW.TargetCastingSpellID == 209485 || WoW.TargetCastingSpellID == 209410 || WoW.TargetCastingSpellID == 211470 || WoW.TargetCastingSpellID == 225100 || WoW.TargetCastingSpellID == 207980 || WoW.TargetCastingSpellID == 196870 || WoW.TargetCastingSpellID == 195284 || WoW.TargetCastingSpellID == 192005 || WoW.TargetCastingSpellID == 228255 || WoW.TargetCastingSpellID == 228239 || WoW.TargetCastingSpellID == 227917 || WoW.TargetCastingSpellID == 228625 || WoW.TargetCastingSpellID == 228606 || WoW.TargetCastingSpellID == 229714 || WoW.TargetCastingSpellID == 227592 || WoW.TargetCastingSpellID == 229083 || WoW.TargetCastingSpellID == 228025 || WoW.TargetCastingSpellID == 228019 || WoW.TargetCastingSpellID == 227987 || WoW.TargetCastingSpellID == 227420 || WoW.TargetCastingSpellID == 200905) { if (!WoW.IsSpellOnCooldown("Pummel") && WoW.TargetPercentCast >= 40) { WoW.CastSpell("Pummel"); return; } if (spellref && !WoW.IsSpellOnCooldown("SpellReflect") && WoW.TargetPercentCast >= 80) { WoW.CastSpell("SpellReflect"); return; } } } } if (WoW.CanCast("Shield Block") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "SB HP Percent") && WoW.Rage >= 15 && !WoW.IsSpellOnCooldown("Shield Block") && !WoW.PlayerHasBuff("Shield Block")) { WoW.CastSpell("Shield Block"); return; } if (WoW.CanCast("Shield Block") && WoW.Rage >= 15 && WoW.PlayerBuffTimeRemaining("Shield Block") <= 2) { WoW.CastSpell("Shield Block"); return; } // IP Control if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 60) && !WoW.PlayerHasBuff("Vengeance Ignore Pain")) { WoW.CastSpell("Ignore Pain"); return; } if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 39) && WoW.PlayerHasBuff("Vengeance Ignore Pain")) { WoW.CastSpell("Ignore Pain"); } if (WoW.CanCast("Ignore Pain") && (WoW.Rage >= 13) && WoW.PlayerHasBuff("Vengeance Ignore Pain") && WoW.IsSpellOverlayed("Revenge")) { WoW.CastSpell("Ignore Pain"); } // Revenge Control if (Indomitable) { if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); } if (AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30) { WoW.CastSpell("Revenge"); } if (AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge")) { WoW.CastSpell("Revenge"); } if (!AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); } if (WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Thunder Clap"); return; } } if (!Indomitable && swingwatch.ElapsedMilliseconds > AttackspeedMS) { if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 30) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge")) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (!AngerM && WoW.CanCast("Revenge") && WoW.IsSpellOverlayed("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (!AngerM && WoW.CanCast("Revenge") && WoW.Rage >= 19 && !WoW.IsSpellOnCooldown("Revenge") && WoW.PlayerHasBuff("Vengeance Revenge")) { WoW.CastSpell("Revenge"); swingwatch.Reset(); swingwatch.Start(); return; } if (WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Thunder Clap"); swingwatch.Reset(); swingwatch.Start(); return; } } //Rotational shiz if (!Indomitable && (!WoW.IsSpellOnCooldown("Shield Slam") || WoW.IsSpellOverlayed("Shield Slam")) && !AngerM && WoW.PlayerHasBuff("Shield Block") && WoW.SpellCooldownTimeRemaining("Shield Block") > 2) { WoW.CastSpell("Shield Slam"); return; } if ((AngerM || Indomitable) && (!WoW.IsSpellOnCooldown("Shield Slam") || WoW.IsSpellOverlayed("Shield Slam"))) { WoW.CastSpell("Shield Slam"); } //will cast SS when proc's if (WoW.CanCast("Shield Slam") && WoW.IsSpellOverlayed("Shield Slam")) { WoW.CastSpell("Shield Slam"); return; } if (Indomitable && WoW.CanCast("Devastate") && WoW.IsSpellOnCooldown("Shield Slam") && WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Devastate"); return; } if (ImpendingVic && WoW.Rage >= 10 && !WoW.IsSpellOnCooldown("Impending Victory") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "IV HP Percent")) { WoW.CastSpell("Impending Victory"); return; } if (!ImpendingVic && WoW.IsSpellOverlayed("Victory Rush") && WoW.HealthPercent <= ConfigFile.ReadValue <int>("ProtectionLesion", "IV HP Percent")) { WoW.CastSpell("Victory Rush"); return; } } //Artifact / Shockwave Combo. if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun") && WoW.IsSpellOnCooldown("Neltharion's Fury")) { WoW.CastSpell("Neltharion's Fury"); return; } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE Stuff here } }
public override void Pulse() { //Talent Checker string currentTalents = WoW.Talent(1) + "" + WoW.Talent(2) + "" + WoW.Talent(3) + "" + WoW.Talent(4) + "" + WoW.Talent(5) + "" + WoW.Talent(6) + "" + WoW.Talent(7); if (WoW.Talent(3) != 2 && WoW.Talent(3) != 1) { Log.Write("Talents are not 1322322", Color.Green); return; } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { //Build one: Rend if (WoW.Talent(3) == 2 && WoW.IsSpellInRange("Slam") && WoW.TargetIsEnemy && WoW.IsInCombat && WoW.CountEnemyNPCsInRange < 8) { if (WoW.TargetHealthPercent > 20) { if (WoW.CanCast("Rend") && !WoW.TargetHasDebuff("Rend") || WoW.TargetDebuffTimeRemaining("Rend") <= 30) { WoW.CastSpell("Rend"); } if (WoW.CanCast("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Colossus Smash")) { WoW.CastSpell("Colossus Smash"); } //MS if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Mortal Strike"); } //Slam if (WoW.CanCast("Slam") && WoW.Rage >= 18 && WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && WoW.CountEnemyNPCsInRange == 1) { WoW.CastSpell("Slam"); return; } if (WoW.Rage >= 36 && WoW.CountEnemyNPCsInRange >= 2) { if (WoW.CanCast("Cleave") && !WoW.PlayerHasBuff("Cleave") && !WoW.IsSpellOnCooldown("Cleave") && WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Cleave"); return; } if (WoW.CanCast("Whirlwind") && WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Whirlwind"); return; } } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute")) { WoW.CastSpell("Execute"); return; } } if (WoW.TargetHealthPercent <= 20) { //MS if you have EP x2 and SD if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses") && WoW.TargetHasDebuff("Executioner’s Precision") && WoW.TargetDebuffStacks("Executioner’s Precision") == 2) { WoW.CastSpell("Mortal Strike"); return; } //CS if no SD if (WoW.CanCast("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Colossus Smash")) { WoW.CastSpell("Colossus Smash"); return; } // Execute if (WoW.CanCast("Execute")) { WoW.CastSpell("Execute"); return; } //OP if talented } } //end of rend if (WoW.Talent(5) == 1) { } //Build two: Trauma/FoB if (WoW.CountEnemyNPCsInRange >= 8) { if (WoW.CanCast("Cleave") && !WoW.PlayerHasBuff("Cleave") && !WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Cleave"); return; } if (WoW.CanCast("Whirlwind") && WoW.Rage > 27 && WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Whirlwind"); return; } } } if (combatRoutine.Type == RotationType.AOE) { // 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 (WoW.PlayerHasBuff("Mount")) { return; } if (WoW.IsInCombat && WoW.HealthPercent < 35 && WoW.CanCast("Last Stand") && !WoW.IsSpellOnCooldown("Last Stand")) { WoW.CastSpell("Last Stand"); return; } if (WoW.IsInCombat && WoW.HealthPercent < 20 && WoW.CanCast("Shield Wall") && !WoW.IsSpellOnCooldown("Shield Wall")) { WoW.CastSpell("Shield Wall"); return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LCONTROL) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("HeroicLeap")) { WoW.CastSpell("HeroicLeap"); return; } return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_1) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Thunder Clap")) { WoW.CastSpell("Thunder Clap"); return; } return; } if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_LMENU) < 0) { if (WoW.IsInCombat && !WoW.IsSpellOnCooldown("Shockwave")) { WoW.CastSpell("Shockwave"); return; } return; } if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { if (CombatWatch.IsRunning && !WoW.IsInCombat) { CombatWatch.Reset(); } if (!CombatWatch.IsRunning && WoW.IsInCombat) { CombatWatch.Start(); } if (WoW.HasTarget && WoW.TargetIsEnemy && !WoW.PlayerIsChanneling) { if (!WoW.TargetHasDebuff("ShockWavestun") && WoW.IsInCombat) { if (WoW.CanCast("Shield Block") && WoW.Rage >= 10 && !WoW.PlayerIsChanneling && WoW.HealthPercent < 100 && (WoW.PlayerSpellCharges("Shield Block") == 2 || (WoW.PlayerSpellCharges("Shield Block") >= 1 && WoW.HealthPercent <= 90 && WoW.PlayerBuffTimeRemaining("ShieldBlockAura") <= 2))) { WoW.CastSpell("Shield Block"); return; } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Thunder Clap") && !WoW.IsSpellOnCooldown("Thunder Clap") && CombatWatch.ElapsedMilliseconds > 1000 && CombatWatch.ElapsedMilliseconds < 5000) { WoW.CastSpell("Thunder Clap"); return; } /* ------------------ IGNORE PAIN MANAGEMENT----------------------*/ if (WoW.CanCast("Ignore Pain") && WoW.PlayerHasBuff("Vengeance: Ignore Pain") && WoW.PlayerHasBuff("Ultimatum") && WoW.Rage >= 18) { WoW.CastSpell("Ignore Pain"); return; } if (WoW.CanCast("Ignore Pain") && WoW.Rage > 35 && WoW.PlayerHasBuff("Vengeance: Ignore Pain")) { WoW.CastSpell("Ignore Pain"); return; } if (WoW.CanCast("Ignore Pain") && WoW.Rage < 30 && WoW.Rage >= 20 && WoW.HealthPercent < 100 && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) && !WoW.PlayerHasBuff("Ultimatum") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.PlayerHasBuff("Vengeance: Focused Rage")) { WoW.CastSpell("Ignore Pain"); return; } /* ------------------ END IGNORE PAIN MANAGEMENT-------------------*/ /* ------------------ FOCUSED RAGE MANAGEMENT----------------------*/ if (WoW.CanCast("Focused Rage") && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) && WoW.PlayerHasBuff("Vengeance: Focused Rage") && WoW.Rage >= 20) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.PlayerHasBuff("Ultimatum") && (!WoW.PlayerHasBuff("Ignore Pain") || WoW.PlayerBuffTimeRemaining("Ignore Pain") <= 2) && WoW.PlayerHasBuff("Vengeance: Focused Rage")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.PlayerHasBuff("Ultimatum") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.PlayerHasBuff("Vengeance: Focused Rage")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.Rage >= 30 && !WoW.PlayerHasBuff("Vengeance: Focused Rage") && !WoW.PlayerHasBuff("Vengeance: Ignore Pain")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.Rage < 10 && WoW.PlayerHasBuff("Ultimatum") && WoW.PlayerHasBuff("Vengeance: Ignore Pain") && !WoW.IsSpellOnCooldown("Shield Slam")) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.Rage >= 120) { WoW.CastSpell("Focused Rage"); } /* ------------------ END FOCUSED RAGE MANAGEMENT-------------------*/ if (WoW.TargetIsCasting && WoW.CanCast("SpellReflect") && !WoW.IsSpellOnCooldown("SpellReflect")) { WoW.CastSpell("SpellReflect"); } if (WoW.IsSpellInRange("Shield Slam") && WoW.CanCast("Shield Slam") && !WoW.IsSpellOnCooldown("Shield Slam")) { WoW.CastSpell("Shield Slam"); return; } if (WoW.CanCast("Revenge") && !WoW.IsSpellOnCooldown("Revenge") && WoW.IsSpellInRange("Shield Slam")) { WoW.CastSpell("Revenge"); return; } if (WoW.CanCast("Victory Rush") && !WoW.IsSpellOnCooldown("Victory Rush") && WoW.IsSpellInRange("Shield Slam") && WoW.HealthPercent < 90 && WoW.PlayerHasBuff("VictoryRush")) { WoW.CastSpell("Victory Rush"); return; } if (WoW.IsSpellInRange("Devastate") && WoW.CanCast("Devastate")) { WoW.CastSpell("Devastate"); return; } /* if (WoW.IsSpellInRange("Shield Slam")&& WoW.CanCast("Thunder Clap")&& !WoW.IsSpellOnCooldown("Thunder Clap")) * { * WoW.CastSpell("Thunder Clap"); * return; * } */ } if (WoW.CanCast("Neltharion's Fury") && WoW.TargetHasDebuff("ShockWavestun")) { WoW.CastSpell("Neltharion's Fury"); return; } } } if (combatRoutine.Type == RotationType.AOE) { // Do AOE Stuff here if (WoW.IsSpellOverlayed("Shield Slam")) { Log.Write("Spell Overlayed: Shield Slam"); } } }
public override void Pulse() { if (combatRoutine.Type == RotationType.SingleTarget) // Do Single Target Stuff here { /* * Endless Rage / War Machine * Double Time * Avatar * Warpaint * Frothing Zerker/Massacre * Inner Rage * Reckless Abandon */ //AOE on Press //Normal ST rotation if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst")) { if (WoW.TargetHealthPercent >= 20) { //When targets are above 20%. Not in Execute phase. (need to change this to TTExecute) //Single target with Reckless Abandon - Battle Cry Avatar Rampage - Raging Blow - Odyn's Fury - Bloodthirst - Raging Blow - Furious Slash - Bloodthirst if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Q) < 0) { if (WoW.CanCast("Whirlwind") && TFZFMint && !WoW.PlayerHasBuff("Meat Cleaver") && WoW.Rage <= 99) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Whirlwind") && !TFZFMint && !WoW.PlayerHasBuff("Meat Cleaver") && WoW.Rage <= 85) { WoW.CastSpell("Whirlwind"); return; } /*if (WoW.CanCast("Whirlwind") * && TFZFMint * && WoW.Rage <= 99 * && !WoW.CanCast("Bloodthirst") * && !WoW.CanCast("Raging Blow") * && !WoW.CanCast("Rampage") * ) * {WoW.CastSpell("Whirlwind"); return;} * * if (WoW.CanCast("Whirlwind") * && !TFZFMint * && WoW.Rage <= 85 * && !WoW.CanCast("Bloodthirst") * && !WoW.CanCast("Raging Blow") * && !WoW.CanCast("Rampage") * ) * {WoW.CastSpell("Whirlwind"); return;} * */ } if (TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage > 99) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Raging Blow") && WoW.Rage <= 85 && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (!TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage >= 85) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } //if (WoW.CanCast("Execute") // && WoW.TargetHealthPercent <= 20 // && WoW.IsSpellOverlayed("Execute") || WoW.Rage >= 25) //{ WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Raging Blow") && WoW.Rage <= 85 && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } } if (WoW.TargetHealthPercent <= 20) { if (TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage >= 100) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute") || WoW.Rage >= 25) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Execute") && WoW.Rage > 25) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (!TFZFMint) { if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Enrage") && !WoW.PlayerHasBuff("Massacre")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Massacre")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Execute") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Bloodthirst") && WoW.Rage < 25) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Raging Blow") && WoW.Rage < 25) { WoW.CastSpell("Raging Blow"); return; } } } if (mythicplusinterrupts) { if (WoW.CanCast("Pummel") && WoW.TargetIsCasting && WoW.TargetIsCastingAndSpellIsInterruptible) { //int spell list for all important spells in M+ if (WoW.TargetCastingSpellID == 200248 //Court Of Stars Mythic+ Interrupt list || WoW.TargetCastingSpellID == 225573 || WoW.TargetCastingSpellID == 208165 || WoW.TargetCastingSpellID == 211401 || WoW.TargetCastingSpellID == 21147 || WoW.TargetCastingSpellID == 211299 || WoW.TargetCastingSpellID == 2251 || WoW.TargetCastingSpellID == 209413 || WoW.TargetCastingSpellID == 209404 || WoW.TargetCastingSpellID == 215204 || WoW.TargetCastingSpellID == 210261 //Darkheart Thicket Mythic+ Interrupt list || WoW.TargetCastingSpellID == 200658 || WoW.TargetCastingSpellID == 200631 || WoW.TargetCastingSpellID == 204246 || WoW.TargetCastingSpellID == 2014 //Eye of Azshara Mythic+ Interrupt list || WoW.TargetCastingSpellID == 19687 || WoW.TargetCastingSpellID == 218532 || WoW.TargetCastingSpellID == 195129 || WoW.TargetCastingSpellID == 195046 || WoW.TargetCastingSpellID == 197502 || WoW.TargetCastingSpellID == 196027 || WoW.TargetCastingSpellID == 196175 || WoW.TargetCastingSpellID == 192003 || WoW.TargetCastingSpellID == 191848 //Halls of Valor Mythic+ Interrupt list || WoW.TargetCastingSpellID == 198595 || WoW.TargetCastingSpellID == 198962 || WoW.TargetCastingSpellID == 198931 || WoW.TargetCastingSpellID == 192563 || WoW.TargetCastingSpellID == 192288 || WoW.TargetCastingSpellID == 199726 //Maw of Souls Mythic+ Interrupt list || WoW.TargetCastingSpellID == 198495 || WoW.TargetCastingSpellID == 195293 || WoW.TargetCastingSpellID == 199589 || WoW.TargetCastingSpellID == 194266 || WoW.TargetCastingSpellID == 198405 || WoW.TargetCastingSpellID == 199514 || WoW.TargetCastingSpellID == 194657 //Neltharions Lair Mythic+ Interrupt list || WoW.TargetCastingSpellID == 193585 || WoW.TargetCastingSpellID == 202181 //The Arcway Mythic+ Interrupt list || WoW.TargetCastingSpellID == 226269 || WoW.TargetCastingSpellID == 211007 || WoW.TargetCastingSpellID == 211757 || WoW.TargetCastingSpellID == 226285 || WoW.TargetCastingSpellID == 226206 || WoW.TargetCastingSpellID == 211115 || WoW.TargetCastingSpellID == 196392 // Advisor Vandros (Interrupt manually) Spell,203176,Accelerating Blast || WoW.TargetCastingSpellID == 203957 //Vault of the Wardens Mythic+ Interrupt list || WoW.TargetCastingSpellID == 193069 || WoW.TargetCastingSpellID == 191823 || WoW.TargetCastingSpellID == 202661 || WoW.TargetCastingSpellID == 201488 || WoW.TargetCastingSpellID == 195332 //Raid Interrupts || WoW.TargetCastingSpellID == 209485 || WoW.TargetCastingSpellID == 209410 || WoW.TargetCastingSpellID == 211470 || WoW.TargetCastingSpellID == 225100 || WoW.TargetCastingSpellID == 207980 || WoW.TargetCastingSpellID == 196870 || WoW.TargetCastingSpellID == 195284 || WoW.TargetCastingSpellID == 192005 || WoW.TargetCastingSpellID == 228255 || WoW.TargetCastingSpellID == 228239 || WoW.TargetCastingSpellID == 227917 || WoW.TargetCastingSpellID == 228625 || WoW.TargetCastingSpellID == 228606 || WoW.TargetCastingSpellID == 229714 || WoW.TargetCastingSpellID == 227592 || WoW.TargetCastingSpellID == 229083 || WoW.TargetCastingSpellID == 228025 || WoW.TargetCastingSpellID == 228019 || WoW.TargetCastingSpellID == 227987 || WoW.TargetCastingSpellID == 227420 || WoW.TargetCastingSpellID == 200905) { if (!WoW.IsSpellOnCooldown("Pummel") && WoW.TargetPercentCast >= 40) { WoW.CastSpell("Pummel"); return; } } } } } } if (combatRoutine.Type == RotationType.AOE) { // AOE stuff here } 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 { //if (WoW.IsSpellInRange("Mortal Strike") && WoW.IsInCombat && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry")) //{ // WoW.CastSpell("Battle Cry"); // return; // } //AOE on Press if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Q) < 0) { if (WoW.HasTarget && WoW.IsInCombat) { if (WoW.CanCast("Bladestorm") && WoW.IsSpellOnCooldown("Warbreaker")) { WoW.CastSpell("Bladestorm"); return; } if (!WoW.WasLastCasted("Warbreaker") && !WoW.PlayerHasBuff("Bladestorm")) { if (WoW.CanCast("Cleave") && !WoW.PlayerHasBuff("Cleave") && !WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Cleave"); return; } if (WoW.CanCast("Whirlwind") && WoW.Rage > 20 && WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Colossus Smash") && WoW.Rage > 28 && !WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Mortal Strike") && WoW.Rage > 28 && WoW.TargetHasDebuff("Colossus Smash") && WoW.IsSpellOnCooldown("Cleave")) { WoW.CastSpell("Mortal Strike"); return; } } } } if (WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike") && DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_X) < 0) { //Colossus smash control if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash")) { WoW.CastSpell("Colossus Smash"); } if (WoW.CanCast("Colossus Smash") && WoW.TargetHasDebuff("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && WoW.PlayerBuffStacks("Focused Rage") == 3) { WoW.CastSpell("Colossus Smash"); } //Cooldowns if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Battle Cry") && !WoW.IsSpellOnCooldown("Battle Cry") && WoW.TargetHasDebuff("Colossus Smash")) { WoW.CastSpell("Battle Cry"); return; } if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Avatar") && !WoW.IsSpellOnCooldown("Avatar") && WoW.TargetHasDebuff("Colossus Smash")) { WoW.CastSpell("Avatar"); return; } // Mortal Strike Control if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Mortal Strike") && WoW.TargetHasDebuff("Colossus Smash") && WoW.PlayerHasBuff("Battle Cry") && WoW.PlayerHasBuff("Avatar") && WoW.PlayerHasBuff("Shattered Defenses") && WoW.PlayerBuffStacks("Focused Rage") == 3) { WoW.CastSpell("Mortal Strike"); return; } //Slam control if (WoW.IsSpellInRange("Mortal Strike") && WoW.CanCast("Slam") && !WoW.CanCast("Colossus Smash") && !WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Slam"); return; } // Focused Rage whenever. if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } } //Normal ST rotation if (!WoW.PlayerHasBuff("Battle Cry") && WoW.HasTarget && WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike")) { if (WoW.TargetHealthPercent > 20) //When targets are above 20%. Not in Execute phase. { //FR Control if (WoW.CanCast("Focused Rage") && WoW.Rage > 50) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Focused Rage") && WoW.IsSpellOnCooldown("Battle Cry") && WoW.SpellCooldownTimeRemaining("Battle Cry") < 6 && WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } //CS Control if (WoW.CanCast("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Colossus Smash") || WoW.IsSpellOverlayed("Colossus Smash")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Colossus Smash") && WoW.SpellCooldownTimeRemaining("Battle Cry") < 1) { WoW.CastSpell("Colossus Smash"); return; } //MS if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") || WoW.IsSpellOverlayed("Mortal Strike")) { WoW.CastSpell("Mortal Strike"); return; } //Slam if (WoW.CanCast("Slam") && WoW.Rage >= 32 && !WoW.CanCast("Colossus Smash") && !WoW.CanCast("Mortal Strike")) { WoW.CastSpell("Slam"); return; } } if (WoW.TargetHealthPercent < 20) { //Non BC ST if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Focused Rage") && WoW.Rage >= 85 && !WoW.PlayerHasBuff("Focused Rage") || WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Execute") && WoW.Rage >= 18 && WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Execute"); return; } } } if (WoW.PlayerHasBuff("Battle Cry") && WoW.HasTarget && WoW.IsInCombat && WoW.IsSpellInRange("Mortal Strike")) { if (WoW.CanCast("Avatar") && WoW.PlayerHasBuff("Battle Cry") && WoW.IsSpellOnCooldown("Battle Cry")) { WoW.CastSpell("Avatar"); return; } if (WoW.TargetHealthPercent > 20) { //Maintain FR Stacks if (WoW.CanCast("Focused Rage") && WoW.PlayerBuffStacks("Focused Rage") <= 3) { WoW.CastSpell("Focused Rage"); } //CS on cooldown but not overlapping SD if (WoW.CanCast("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash") && !WoW.PlayerHasBuff("Shattered Defenses")) { WoW.CastSpell("Colossus Smash"); return; } //MS with SD if (WoW.CanCast("Mortal Strike") && WoW.PlayerHasBuff("Shattered Defenses") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") == 3) { WoW.CastSpell("Mortal Strike"); return; } //MS on cooldown if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && WoW.IsSpellOnCooldown("Colossus Smash")) { WoW.CastSpell("Mortal Strike"); } //if all else fails, slam. if (WoW.CanCast("Slam") && WoW.IsSpellOnCooldown("Colossus Smash") && WoW.IsSpellOnCooldown("Mortal Strike") && WoW.PlayerBuffStacks("Focused Rage") >= 3) { WoW.CastSpell("Slam"); return; } } if (WoW.TargetHealthPercent <= 20) { if (WoW.CanCast("Focused Rage") && !WoW.PlayerHasBuff("Focused Rage") || WoW.PlayerBuffStacks("Focused Rage") < 3) { WoW.CastSpell("Focused Rage"); } if (WoW.CanCast("Mortal Strike") && !WoW.IsSpellOnCooldown("Mortal Strike") && (WoW.PlayerBuffStacks("Focused Rage") == 3)) { WoW.CastSpell("Mortal Strike"); return; } if (WoW.CanCast("Colossus Smash") && !WoW.TargetHasDebuff("Colossus Smash") && !WoW.IsSpellOnCooldown("Colossus Smash")) { WoW.CastSpell("Colossus Smash"); return; } if (WoW.CanCast("Execute") && !WoW.CanCast("Mortal Strike")) { WoW.CastSpell("Execute"); return; } } } } if (combatRoutine.Type == RotationType.AOE) { // AOE stuff here } 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 { /* * Endless Rage / War Machine * Double Time * Avatar * Warpaint * Frothing Zerker/Massacre * Inner Rage * Reckless Abandon */ //AOE on Press if (DetectKeyPress.GetKeyState(DetectKeyPress.VK_KEY_Z) < 0) { if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy) { if (TFZFMint) { if (WoW.CanCast("Whirlwind") && !WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Rampage") && WoW.Rage >= 100 && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Rampage")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Bloodthirst"); return; } } if (!TFZFMint) { if (WoW.CanCast("Whirlwind") && !WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Rampage") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Rampage")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage") && WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Bloodthirst"); return; } } } } //Normal ST rotation if (WoW.HasTarget && WoW.IsInCombat && WoW.TargetIsEnemy && WoW.IsSpellInRange("Bloodthirst")) { if (WoW.TargetHealthPercent >= 20) { //When targets are above 20%. Not in Execute phase. (need to change this to TTExecute) //Single target with Reckless Abandon - Battle Cry Avatar Rampage - Raging Blow - Odyn's Fury - Bloodthirst - Raging Blow - Furious Slash - Bloodthirst if (MplusAoEint) { if (WoW.CanCast("Whirlwind") && !WoW.PlayerHasBuff("Meat Cleaver")) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Whirlwind") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow") && !WoW.CanCast("Rampage") ) { WoW.CastSpell("Whirlwind"); return; } if (WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } } } if (TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage >= 100) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute")) { WoW.CastSpell("Execute"); return; } if (!MplusAoEint && WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (!TFZFMint) { if (WoW.CanCast("Rampage") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute")) { WoW.CastSpell("Execute"); return; } if (!MplusAoEint && WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (WoW.TargetHealthPercent <= 20) { if (TFZFMint) { if (WoW.CanCast("Rampage") && WoW.Rage >= 100) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Bloodthirst") && !WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Execute") && WoW.IsSpellOverlayed("Execute") && WoW.Rage > 25) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Execute") && WoW.Rage > 25) { WoW.CastSpell("Execute"); return; } if (!MplusAoEint && WoW.CanCast("Raging Blow") && !WoW.CanCast("Bloodthirst")) { WoW.CastSpell("Raging Blow"); return; } if (WoW.CanCast("Bloodthirst") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Bloodthirst"); return; } if (WoW.CanCast("Furious Slash") && !WoW.CanCast("Bloodthirst") && !WoW.CanCast("Raging Blow")) { WoW.CastSpell("Furious Slash"); return; } } if (!TFZFMint) { if (WoW.CanCast("Execute") && !WoW.PlayerHasBuff("Enrage") && !WoW.PlayerHasBuff("Massacre")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Rampage") && WoW.PlayerHasBuff("Massacre")) { WoW.CastSpell("Rampage"); return; } if (WoW.CanCast("Execute") && WoW.PlayerHasBuff("Enrage")) { WoW.CastSpell("Execute"); return; } if (WoW.CanCast("Bloodthirst") && WoW.Rage < 25) { WoW.CastSpell("Bloodthirst"); return; } if (!MplusAoEint && WoW.CanCast("Raging Blow") && WoW.Rage < 25) { WoW.CastSpell("Raging Blow"); return; } } } } } if (combatRoutine.Type == RotationType.AOE) { // AOE stuff here } if (combatRoutine.Type == RotationType.SingleTargetCleave) { // Do Single Target Cleave stuff here if applicable else ignore this one } }