I use FPSware's CC for grinding and it is amazing. I happily donated to his hard work and hope he continues. But at this point I need something better for raiding. I use CLU currently but am not 100% satisfied. My 10m has an average ilvl of 482 and I'm usually bottom DPS with a 485 on boss fights. I've seen on the forums about how PureRotation is going to fix all that but I am not a patient person. And I find it very hard to believe that noone out there has a raiding CC for affliction warlocks...
wait for PureRotation. It will be a ) free b ) the best c ) released soon ~the aim was around christmas, may get delayed till next year though, BUT its coming, and d d ) it will KickAzz ;]
Uhhhhm if you can give me a very detailed rotation for affliction locks, I'll do up another quick routine (such as Armed and Guarded). I don't play a lock in any serious raiding environment, so I'm not sure of the rotation. However, I can toss together a decently working one, and do some tweaks later if need be.
Well theres more things that come into play in end-game raiding that just rotation. - Gear (actually reforging well by having checked websites aka elitist jerks/top players) - Class (Your class might just plain suck for a certain fight) - Boss (The boss itself may have something gimicky that you aren't doing correct compared to other players) - Movement (Most of the time i see players "over moving", such wasted damage when you could simply side step something but they do it so wastefully) Lastly and this isn't meant to offend but most players are just... well... bad for some reason. I've usually been an underdog in terms of gear by a fair amount and manage to keep up with geared players unless their skilled.
All of what you said is very true. Our guild is far from hardcore, we only raid 2 nights a week and that is how we like it. But I think a 485 ilvl with only raiding 2 nights a week is pretty good. And I reforge the same as the aff locks that are topping fights on worldoflogs.com. And the last thing I do personally is over move on any fight. In CATA my guild was server 5th on HM Spine and DW (not a very busy server but in the very middle as of population) and I was main bear tank who always put out sick dps numbers and never missed one global cooldown. I'd like to think of myself as a top 1%er when it comes to raid awareness...not one of our fights in over 2 years has ever been my fault. But who knows...maybe locks aren't supposed to be top dps until they get better gear. I just hate seeing a lower ilvl DK and warrior finish our fights at 90+ dps for the whole fight and there's me at 75k. Maybe I should go back to Destro...I can play that spec myself with no bot but I wanted to maximize my class.
well, noxxic seems to be a good start on that Affliction Warlock PvE DPS Rotation and Cooldowns (MoP 5.1) Demonology Warlock PvE DPS Rotation and Cooldowns (MoP 5.1) Destruction Warlock PvE DPS Rotation and Cooldowns (MoP 5.1)
Affliction Warlock DPS Rotation, Cooldowns, and Abilities (WoW MoP 5.1) - Icy Veins This page says it all and it is quite detailed.
Well, keep in mind that hit for aff locks isn't really that good. (Should be getting *some* hit, but not capping, its not nearly as important as mastery, since dot ticks can't miss)
That is very true. I've checked out all of the top aff locks across alot of servers and for the most part the only ones that are making the hit cap are the ones who have heroic gear. I was going by Mr Robot and was only at around 10% hit with everything into mastery.
Well, to put it up for you: You use your CC with your toon - Your toon has stats, so he just gave a tip on how to make the CC perform even better by altering your stats. Get it now?
but this thread is about the request of a CC, not? what should matter (stats) in the cc is given by the links to noxxic/icy veins, if youd like to sacrifice some hit for mastery thats purely up to you, and should not affect the cc in any way, eh? I got what u said, i just think its misplaced.
Can we skip the drama please, I'd really like to see another CC by Apoc. Btw simulationcraft analysis gives this rotation for single target; Boss HP > 20% //raidwide debuff 0- Curse of Elements if not present //DoTs 1- Agony - if not present 2- Corruption - if not present 3- Unstable Affliction - if Aura Unstable Affliction.timeleft < 1500ms 4- Unstable Affliction - if not present // 5- Haunt if All above dots' remaining time > 8 secs && have a soul shard 6- Life Tap if Mana < 35% 7- Malefic Grasp (channeling) Boss HP < 20% 1- Soulburn + Soul Swap to apply all three DoTs at once 2- Haunt if All above dots' remaining time > 8 secs && have a soul shard 3- Drain Soul (channeling) 4- Life Tap if Mana < 35%
Seems simple enough. What abilities when moving? Pet? Etc. I'll be needing those to keep high DPS uptime when people are interrupting MG
You could add support for the Kil'jaeden's Cunning-talent that allows you to cast while on the move, other than that I know before 5.1 people used to use fel flame while on the move. Actually I think you should ask Nilrem2004 in pm about it, because he has the best available PQR-profile for Affliction-warlocks, and he is very knowledgable and I think he could provide you the information needed to make a great HB Affli-CR.
Well, here's what I tossed together with what I could find off Noxxic. (No infernal/demo summons, and no "great" opener with Soulburn+Soul Swap) Very basic, let me know how (and if) it works. Code: using System;using System.Collections.Generic; using System.Linq; using Styx; using Styx.CommonBot; using Styx.CommonBot.Routines; using Styx.TreeSharp; using Styx.WoWInternals; using Styx.WoWInternals.WoWObjects; using Action = Styx.TreeSharp.Action; namespace Armed { internal class Afflicted : CombatRoutine { #region Generic Wrapper Stuff private Composite _buffs; private Composite _combat; public override string Name { get { return "Afflicted"; } } public override WoWClass Class { get { return WoWClass.Warlock; } } public override Composite CombatBehavior { get { return _combat ?? (_combat = CreateCombat()); } } private WoWUnit GetTargetMissingDebuff(WoWUnit near, string debuff, float distance = -1f) { return UnfriendlyUnits.FirstOrDefault(u => u.Location.Distance(near.Location) <= distance && !u.HasAura(debuff, 1, true)); } private int EnemiesNearTarget(float range) { var target = StyxWoW.Me.CurrentTarget; if (target == null) return 0; var tarLoc = target.Location; return UnfriendlyUnits.Count(u => u.Guid != target.Guid && u.Location.Distance(tarLoc) <= range); } private IEnumerable<WoWUnit> UnfriendlyUnits { get { return ObjectManager.GetObjectsOfType<WoWUnit>(true, false).Where(u => !u.IsDead && u.CanSelect && u.Attackable && !u.IsFriendly); } } private void UseTrinkets() { WoWItem firstTrinket = StyxWoW.Me.Inventory.Equipped.Trinket1; WoWItem secondTrinket = StyxWoW.Me.Inventory.Equipped.Trinket2; if (firstTrinket != null && CanUseEquippedItem(firstTrinket)) firstTrinket.Use(); if (secondTrinket != null && CanUseEquippedItem(secondTrinket)) secondTrinket.Use(); } private static bool CanUseEquippedItem(WoWItem item) { // Check for engineering tinkers! var itemSpell = Lua.GetReturnVal<string>("return GetItemSpell(" + item.Entry + ")", 0); if (string.IsNullOrEmpty(itemSpell)) return false; return item.Usable && item.Cooldown <= 0; } private Composite Cast(string spell, Selection<bool> reqs = null, Selection<WoWUnit> onTarget = null) { return new Decorator( ret => ((reqs != null && reqs(ret)) || (reqs == null)) && SpellManager.CanCast(spell), new Action(ret => SpellManager.Cast(spell, (onTarget != null ? onTarget(ret) : null)))); } private Composite Debuff(string spell, Selection<bool> reqs = null, Selection<WoWUnit> onTarget = null, int msLeft = 0) { return new Decorator( ret => ((reqs != null && reqs(ret)) || (reqs == null)) && SpellManager.CanCast(spell) && !(onTarget != null ? onTarget(ret) : StyxWoW.Me.CurrentTarget).HasAura(spell, 0, true, msLeft), new Action(ret => SpellManager.Cast(spell, (onTarget != null ? onTarget(ret) : null)))); } public static TimeSpan GetSpellCooldown(string spell) { SpellFindResults results; if (SpellManager.FindSpell(spell, out results)) { if (results.Override != null) return results.Override.CooldownTimeLeft; return results.Original.CooldownTimeLeft; } return TimeSpan.MaxValue; } private delegate T Selection<out T>(object context); #endregion #region Actual Logic public Composite CreateCombat() { return new PrioritySelector( // Free haste. Use it on CD. Cast("Dark Soul: Misery"), CreateAoeCombat(), // Debuff CoE, refresh when <= 1500ms left on the debuff. Debuff("Curse of the Elements", msLeft:1500), Debuff("Haunt", msLeft:2000), Debuff("Agony", msLeft:1500), Debuff("Corruption", msLeft:1500), Debuff("Unstable Affliction", msLeft:1500), new Decorator(ret=>!StyxWoW.Me.IsMoving, new PrioritySelector( Cast("Drain Soul", ret=>StyxWoW.Me.CurrentTarget.HealthPercent < 20), Cast("Malefic Grasp") )), Cast("Fel Flame", ret=>!StyxWoW.Me.IsChanneling) ); } public Composite CreateAoeCombat() { // More than 4 mobs near our current target, start the AOE rotation. return new Decorator(ret => EnemiesNearTarget(15) >= 4, new PrioritySelector( Cast("Soulburn", ret=>!StyxWoW.Me.HasAura("Soulburn")), Cast("Curse of the Elements", null, ret => GetTargetMissingDebuff(StyxWoW.Me.CurrentTarget, "Curse of the Elements", 15f)), Cast("Seed of Corruption") )); } #endregion } public static class Extensions { public static bool HasAura(this WoWUnit unit, string aura, int stacks, bool isMyAura = false, int msLeft = 0) { var result = unit.GetAuraByName(aura); if (result == null) return false; if (isMyAura && result.CreatorGuid != StyxWoW.Me.Guid) return false; if (result.TimeLeft.TotalMilliseconds > msLeft) return result.StackCount >= stacks; return false; } } } Keep in mind; I didn't test any of this, so yeah.
First off...it does work. Off the bat I noticed 2 things that need adding. Life Tap if mana gets under, oh I don't know, 40% (while health being above 60%). And I notice that some dots are dropping off...with Pandemic these can be reapplied far before that happens.
I changed the time for Agony/Corruption/UA to 6000ms and I still see UA fall off sometimes. (I thought it was my hit because you can miss casting the dot...just the dots never miss) So I reforged to 15.10% hit and UA still drops off. I also see Haunt get cast twice in a row and that shouldn't happen. And when target swapping, which happens in quite a few fights, it opens with Haunt...it should check for Agony/Corr/UA before hitting Haunt. haha I'll learn to code yet...all I did was move Haunt to below UA and that took care of it...much dps improvement just from that move.
if we are currently channeling a filler, but our debuffs run "low" on duration, we need to cast the debuffs over the channeling