Monday, February 22, 2010

Anatomy of an Affliction UI - Part II: Macros and Deathbringer Saurfang

In Part I, I gave an overview of my UI, with the most obvious add-ons labeled. There are a few invisible ones (TipTac, DST, ArkInventory, FreeRefills, XLoot and my own HazFish and HazNuke), which I'll get to eventually, but before I start on the first add-on — which will be Bartenders — I'm going to look at something to put on my bars: macros.

For the completely uninitiated, go read the Macro HOWTO on WoWWiki. It's not half bad. I'm going to assume you've either read that article, or are at least comfortable making simple target and assist macros from here on. One quick refresher: stuff in [square brackets] is a conditional clause, an if this… then… that must be true for the macro engine to run the command it's modifying.

Also, I'm assuming you know what your focus target is: If you're currently raiding and you don't know what your focus target is, you are doing it wrong. Go away and find out.

Two nice macro features introduced in patch 3.whatever made the macro language more terse. If you're using old macros that you copied and pasted at the dawn of time, you should replace every instance of modifier with mod, and replace every instance of target= with @.

Focus


One of the skills every warlock should acquire is that of chain banish, chain fear and chain enslave: keeping a mob locked out of combat until your raid is good and ready to lay the smack down upon it, classroom style. The process is identical for fear and banish, I'll use banish. In plain terms you need to:

  1. Banish something, say, a Hardened Iron Golem in the Antechamber of Ulduar.

  2. Keep it banished indefinitely.

  3. Still nuke the (un)living fuck out of your primary kill target.

  4. Cast Banish prematurely to release the mob and kerb-stomp it.


To do this without wasting GCDs, because you're a warlock and every GCD is damage done — if only to yourself for mana — I use a focus macro, bound to my "B" (for Banish!) key:

#showtooltip Banish
/focus [@focus, noexists][@focus, dead] target
/cast [nomod, @focus] Banish
/stopmacro [nomod]
/clearfocus [mod:ctrl]


Line-by-line, what's going on:

  • #showtooltip Banish — show the icon for Banish. The first slash command isn't /cast Banish, or a variation thereon, so if I want it to look right, I have to be specific.

  • /focus [@focus, noexists][@focus, dead] target — Sets my focus to my current target if I don't have a focus target set, or if my current focus is already dead. Since I use this macro to set focus all the time on tanks, unbanishable targets, Draenei with particularly hot tentacles, I don't care whether the target is [harm] or [help].

  • /cast [nomod, @focus] Banish — cast Banish on my focus target if I don't have any modifier key (shift, ctrl, alt) pressed.

  • /stopmacro [nomod] — If I'm not holding a modifier key, the macro ends here.

  • /clearfocus [mod:ctrl] — If I'm holding down <ctrl>, clear my focus.



Spell Ranks: Life Tap


It's still worth having the Glyph of Life Tap, but there are some fights you won't want to do a full-health Life Tap every time, because you'll die. For the record until Dark Pact's range is increased from 30 yards, it's often useless. But not completely. Especially given the amount of dead wood in the affliction tree. I vacillate between Dark Pact and 1/2 Fel Synergy. Anyway, this little macro casts max rank Life Tap, unless you're holding down <ctrl>, when it casts Rank 1 Life Tap, which costs negligible health, but refreshes the buff:

#showtooltip
/cast [mod:ctrl]Life Tap(Rank 1);[]Life Tap


A syntax note: the semicolon separates alternative commands for a single cast. When you run the macro (by pressing the button or bind) they're assessed from left to right until one works. So, here, I've said if I'm holding <ctrl> then use Rank 1 Life Tap; otherwise just Life Tap. Spells without a rank are cast at max rank. The empty modifier [] is a fail-safe: it says if… fuck, no ifs about it, just cast.

To check that your conditionals work, drag your macro to a button bar and hover over it. The tooltip (and icon) will change according to your modifiers. If it doesn't, you have a typo. Or you should get someone else to write macros for you. That's what the unmodified #showtooltip is doing for you.

Targeting


Since we're using focus, and we have a target selected, we can nuke two things at once with a simple macro: /cast [mod:shift,@focus] Shadow Bolt; [] Shadow Bolt, but that's of limited use in a fight when multiple adds spawn and they must be focus-fired down — like the Deathbringer Saurfang fight.

Fortunately, the @ syntax extends to target-of-target: @target is your target, @targettarget is your target's target (so you could target the MT and blast his target), @focus you know, but surprise, surprise, @focustarget works, too. So you can set your focus to whoever you're supposed to be assisting, keep Saurfang as your target, and use a macro like this to nuke the correct add:

/cast [mod:shift,@focustarget]Shadow Bolt;[]Shadow Bolt

In practice, if your raid DPS is high enough, or your tanks butch enough, as an affliction warlock you shouldn't be doing too much add-nuking on Saurfang, but this macro allows you to help out without breaking your primary rotation on Saurfang. Just hold <shift> down every time you're casting a filler shadow bolt, and you're contributing to the cause.

But that's not all. The general syntax of the @ operator is @<UnitId>[[-]target]*, which for those who don't speak the geek means "@ followed by any valid <UnitId>, followed by an zero or more instances of 'target' (maybe with a '-' in front). e.g.: @target, @pet-target, @pettarget, @focustarget-target-target, @ralimenua-target. Note that in the last example, where I'm using a player name, the player must be in your raid or party, and you have to prefix the first target with a hyphen.

Did you see what I snuck into the examples there? @pettarget. Hmmm. I wonder if we can use that? Of course we fucking can. In fact it's the simplest way to have three active targets at once.

Pet Target and Control


Your pet should be on static. Srsly. There are a limited number of fights when you want a pet on aggressive or passive, but as a grown-up raiding affliction warlock, your pet is part of your arsenal, and you want to be in control of your arsenal, not apologizing for friendly fire. You are not a hunter. Put your pet on static.

Now that your pet is by your side, doing sweet FA without orders, you want that cute little demon dog from the arse end of the twisting nether to be gleefully nomming something. Enter /petattack, /petfollow and /petstay. Guess what they do.

I typically have my felpuppy behave in one of two ways: set and forget or kill what I'm killing, by modifying the first cast in my rotation. Since commands to your pet are not on your GCD, you can execute a pet instruction and a cast simultaneously in a macro like so:

/petattack
/cast Shadow Bolt


That's pretty simple. Every time you shadow bolt something, your pet will switch target. It gets a bit more fancy for set-and-forget:

#showtooltip
/petattack [mod:shift,mod:ctrl]
/cast [mod:shift,mod:ctrl]Shadow Bolt;[mod:shift,@pettarget]Shadow Bolt;[mod:ctrl,@focustarget]Shadow Bolt;[]Shadow Bolt


That's a lot of Shadow Bolts. Remember that the macro is executed from left to right, so when you've got a string of conditionals, you want to go from most specific to least. In this case, if I'm pressing <shift+ctrl>, I'm just casting Shadow Bolt, and sending my pet after my target. He's on static, so he's going to stay on that target. If I'm just pressing <shift>, my Shadow Bolt will go for my pet's target. With <ctrl>, I'll be nuking my focus target. With no modifiers, I'm just nuking my current target.

Setting my pet on something (like a boss), and having him stay there lets me use focus for assisting, cast on the boss at will (with @pettarget), and switch my target at will to adapt to a burn. Very useful for ripping soul shards from mind-controlled fellow raid-members, for example. Affliction's ramp-up time means you need to be adaptable, and the more freedom you have manipulating targets, the better.

A nice side-effect of the UI is that, if your current target is dead, casting something with @ will switch your target when it lands. Very useful for re-acquiring your pet's target without clicking a thing.

Note that these macros are easy to test (and get used to) with the test dummies. Focus one, put your pet on a second and target a third. Now practise keeping a full rotation up on your pet's target, while keeping corruption up on your current and focus target and refreshing both with Shadow Bolt.

You also need a way to say "go hit that" and "come back, now" without actually casting. I have this macro keybound for easy access:

/petattack [@target,exists,harm]
/petfollow [@pettarget,exists]


Your puppy's not just for nomming on bosses, though. He's also got a couple of useful spells: Spell Lock and Devour Magic. I confess, I'm a little lazy about both: I leave them active on his bar, and let him use them at will. He seems to have got a bit smarter about using both, and that's good enough for me. On a fight with a spell-stealable buff, I'll usually turn Devour Magic off until the mages have their buffs, but there's nothing wrong with a pet auto-interrupt. It's useful, however, to help out your magic dispellers when you can with clearing your own magic debuffs, though. So have this macro keybound to spam when you need it:

#showtooltip Devour Magic
/cast [pet:felhunter,@player] Devour Magic;


I'll leave devouring your focus' magic debuff or your pet's target's target (likely the tank) as an exercise for the reader. I've specified the tooltip to use in this macro because if you don't, the icon won't show up when your puppy's not summoned. Which I find irritating.


Adding Trinkets



Being a pro, you've collected your NMIC (or have better), and you know when to use it. Now you want to trigger it without an extra click, right? There's two ways to trigger a trinket: by name and by slot, so either /use Nevermelting Ice Crystal or /use 13 (for the top trinket slot) will do the trick. /use 14 for the bottom trinket slot. Put the /use immediately before the first spell you're going to cast with the buff; most likely Corruption, arguably UA.

An Aside About @mouseover



I haven't made mention of @mouseover, which I could just as easily use for target casting. It does what it sounds like... casts at the unit (or unit frame) that your mouse is hovering over. I find the performance of the WoW client so variable that there are times, particularly in fights with a lot of adds or AoE, or retards running GearScore and other verbose shit in a raid setting, when my UI is getting slow and I can't find my mouse cursor in the visual spam, or the cursor just lags. So I tend to avoid using @mouseover macros for the most part. YMMV.

Putting It All Together



For more than 2 targets (i.e. trash), I like to put up Haunt and spam Seed of Corruption, refreshing Haunt and using a Life Tap to keep mana up. I might throw up some UAs if it's heavy trash to proc the tier 10 4pc, too. For two big targets, like the two aboms guarding the entrance to Icecrown Citadel's Plagueworks, you should be able to keep most of your dots up on both targets and get some filler in on the primary target, too. I have all my rotation spells bound to extra buttons on my (sadly now discontinued) mouse, and use <shift> and <ctrl> to mess with the target. In fact, I have every spell in my rotation in a macro so I can set my pet on the burn target, dot it up, keep it dotted, and dot a second target and nuke a focus. Here's the whole set:

#showtooltip
/cast [mod:shift,mod:ctrl]Shadow Bolt;[mod:shift,@pettarget]Shadow Bolt;[mod:ctrl,@focus]Shadow Bolt;[]Shadow Bolt
/petattack [mod:shift,mod:ctrl]


#showtooltip
/cast [mod:shift,@pettarget] Haunt; [mod:ctrl,@focustarget] Haunt; [] Haunt


#showtooltip
/cast [mod:shift,@pettarget] Curse of Agony;[mod:ctrl,@focus] Curse of Agony;[]Curse of Agony


#showtooltip
/use [mod:shift,mod:ctrl] Nevermelting Ice Crystal
/cast [mod:shift,@pettarget] Corruption;[mod:ctrl,@focus] Corruption;[]Corruption


#showtooltip
/cast [mod:shift,@pettarget] Curse of Agony;[mod:ctrl,@focus] Curse of Agony;[]Curse of Agony


#showtooltip
/cast [mod:shift,@pettarget,combat] Drain Soul; [mod:ctrl,@focus,combat] Drain Soul; [combat]Drain Soul;[mod:ctrl,nocombat]Disenchant; []Drain Soul


The keen of eye will notice something new in that last one. I have the last macro bound to the 'E' key; in combat, <ctrl-E> casts Drain Soul on my focus, out of combat it starts a Disenchant. Go figure.

Go crazy, Lollidan!


I moonlight as Demonology when we don't have an Elemental shaman handy. Last night, I clocked 6302 spellpower at maximum... that's 630 spellpower to every other fucker in the raid, bitches; but personal DPS is still not up to my affliction best <sadface>. This is my nuke macro for Lolllidan spec:

/petattack [mod:shift,mod:ctrl]
/use [mod:ctrl]13
/use [mod:ctrl]14
/cast [mod:ctrl,mod:shift] Demonic Empowerment
/cast [mod:ctrl,nomod:shift] Metamorphosis
/script UIErrorsFrame:Clear()
/cast [mod:shift,nomod:ctrl] Incinerate; []Shadow Bolt


Fuck Me, That's Enough


Yeah. I'm done. I'll answer questions, though.

No comments:

Post a Comment