As of writing, I'm far away from my stash of screenshots for my WeakAuras, so I won't have a post full of example strings for you quite yet. But the discussion of macros for warlocks came up on Twitter, and I can write a while about those while away on a wintery vacation.
Macros can be powerful when written well. Once you get the hang of how macros work, it's easier to write them on the fly when you need one. Knowing how a macro works also helps you check if one is working correctly in case you snagged it from somewhere else.
Technically a macro command, putting #showtooltip first in a macro allows the icon of the ability to be shown, and it will give you its tooltip when you mouse over the icon on your action bar. #showtooltip accepts conditionals and icon names, but by itself it adapts dynamically well enough.
We're casters -- we cast spells -- so the ubiquitous command for warlock macros is /cast. A string of /cast lines can be found in macros that let you use the first ability not on cooldown; e.g., trinket macros will have a /use 13 or /use 14 line above a frequently used ability or cooldown so you can activate an on-use trinket. Typically you see /castsequence in opening rotation macros, which allows you to cast several spells in order using only a single repeated button press. Occasionally you'll see a /stopcast early in a macro, which interrupts whatever you were doing and immediately begins the spell in the macro.
Finally, you can add in plenty of conditionals -- these are the words in square brackets -- to your macros, so you can set up different abilities for different conditions in the same button press. Conditionals work like if/else statements, and each bracketed pair is one set of conditionals strung together with "and," while brackets next to each other are strung together like "or."
For example, if I want to cast Corruption on either my mouseover target OR my focus, then I would write:
If I wanted to cast Corruption on my mouseover target only if it was an enemy (mouseover AND harm), but otherwise cast it on my focus, then I would write:
/cast [@mouseover][@focus] Corruption
Here are a few common conditionals and what they mean:
/cast [@mouseover, harm][@focus] Corruption
- [mod:ctrl] [mod:shift] [mod:alt] -- If you're holding a modifier key down, cast this. Having simply [mod] will cast this if you hold down any of the three modifier keys.
- [spec:1] [spec:2] -- If you're in your first or second spec, cast this.
- [harm] [help] -- If your target is an enemy or if it is a friend, cast this.
- [@target] [@player] [@focus] [@mouseover] -- This sets your macro target to either your target, yourself, your focus, or your mouseover. Blank brackets --  -- are the same as default, which is your target.
- [exists] [nodead] -- This is often paired with an [@focus] conditional to see if your focus actually exists or isn't dead yet.
With Mists of Pandaria came the new talent selections, where you can choose one of three talents in a row. Some, like Soul Leech, are passive abilities, but there are other talented active abilities you can drag onto your bar. If you're no longer talented into an ability, it shows up as a ? icon on your bars and the button does nothing. Despite having great ability sets like Command Demon that switch the ability automatically based on what pet is out or sacrificed, Blizzard didn't extend this switching to talent trees. So we'll have to do it ourselves.
The general macro works for any set of talents on any class you wish to play; you just need to change the spell names. The icon remains a question mark or a greyed out version of the previous talent until you activate the ability for the first time since logging in or switching talents.
Warlocks can pass on using this macro for the level 15 or level 90 talents, as each tier has only one active ability in it. For levels 30, 45, 60, and 75, however, you can use these macros:
/cast Demonic Breath
/cast Mortal Coil
/run local G=GetSpellInfo SetMacroSpell("30T", G"Demonic Breath" or G"Mortal Coil" or G"Shadowfury")
/cast Sacrificial Pact
/cast Dark Bargain
/run local G=GetSpellInfo SetMacroSpell("45T", G"Sacrificial Pact" or G"Dark Bargain")
/cast Blood Horror
/cast Burning Rush
/cast Unbound Will
/run local G=GetSpellInfo SetMacroSpell("60T", G"Blood Horror" or G"Burning Rush" or G"Unbound Will")
#showtooltipFor the level 75 talents, just change "Grimoire: Felguard" to whichever Service pet you would prefer to use. I left Soul Link and Grimoire of Supremacy out of the macros as both abilities are passives.
/cast Grimoire of Sacrifice
/cast Grimoire: Felguard
/run local G=GetSpellInfo SetMacroSpell("75T", G"Grimoire of Sacrifice" or G"Grimoire: Felguard")
Warlocks don't need as many macros anymore since the specs have entirely different combat spells now, but you can use a macro to keep common toggled abilities around by modifier key or spec change.
Curses -- I combine the two common curses together. Since every tank has the equivalent of Curse of Enfeeblement baked into their basic abilities, I leave that one on modifier in the rare event I need it (e.g., when soloing). Otherwise I'll cast Curse of the Elements when there's no rogue around.
#showtooltipSince our slowing curse is limited to affliction only, I combined that as a modifier conditional on another affliction-only ability.
/cast [mod:ctrl] Curse of Enfeeblement; Curse of the Elements
#showtooltipSelf-mitigation cooldowns -- With all the shadow damage in this tier, we can actually use Twilight Ward effectively in raid, and it comes in handy sometimes when PvPing against another warlock.
/cast [mod:shift] Curse of Exhaustion; Agony
#showtooltipDoomguard / Infernal -- You can combine our two cooldown guardians into one button with a simple macro, and yes, it changes on the fly to the supreme versions with Grimoire of Supremacy.
/cast [mod:shift] Twilight Ward; Unending Resolve
#showtooltipStance-dancing -- With our tank-esque glyph, demonology warlocks can have two stances to flip between. Pressing a stance again just takes you out of it, so instead of using the stance bar, you can put this on your action bars:
/cast [mod:shift] Summon Infernal; Summon Doomguard
#showtooltipLet's get complicated
/cast [mod:shift] Dark Apotheosis; Metamorphosis
My '2' key does some heavy lifting when it comes to its macro. I have Fishing, Fel Flame, and my filler based on spec -- all on the same key. Let's look at it.
#showtooltipThe first line throws a bobber in the water if I have both my fishing pole on and I'm not in combat. The moment I aggro something, it flips to my filler key.
/cast [equipped:Fishing Poles, nocombat] Fishing;[mod:shift, @mouseover, harm][mod:shift] Fel Flame; [spec:1]Malefic Grasp; [spec:2] Shadow Bolt
Next, if I press shift, I'll cast Fel Flame either on an enemy mouseover target or the enemy I already have targeted.
If I'm not holding a modifier key and I don't have a fishing pole equipped, if I'm in my first spec (affliction) I'll cast Malefic Grasp on my target like usual, or if I'm in my second spec (demonology or destruction) I'll cast Shadow Bolt. Don't worry -- if my second spec is destruction, the macro still works! In destruction, Incinerate is Shadow Bolt.
@mouseover versus @focus
One of the tricks you can learn from a stint of PvPing is how to write efficient yet complex macros. A hallmark is the [@focus] macro, which lets you cast a spell on your focus without switching targets. Mouseover works in the same way, except it casts it on whatever is on your mouse.
Cynwise sparked this week's post by sharing a couple of his mouseover macros for Havoc/Soulstone, for Fel Flame/Symbiosis: Rejuvenation, and for a pet/Symbiosis combination. He points out to take advantage of how mouseover can apply to friendly and unfriendly targets alike.
Others may beg to differ, but I've come to love mouseover in PvE. While it requires some precise mouse handling sometimes in a thicket of mobs, @mouseover is more versatile in target choice than @focus. Mouseover can handle not only mobs in the field of vision but unit frames as well. This is why having a mouseover Soul Swap macro is powerful for affliction warlocks with populated boss frames.
While Havoc and Soul Swap tend to be prime candidates for mouseover macros, I have a mouseover macro specifically for short daily-quest tagging or those dino-batting scenarios that like to crop up once per raiding tier. This macro lets me put Corruption on my focus, my mouseover, or my target with the shift key down, else I'll use Fel Flame in nearly the same circumstances. (Why Corruption? It's the cheapest instant spell we have. Destruction is stuck with Fel Flame, however.)
#showtooltipMacros are about as endless as advice: feel free to share your own warlock macros in the comments!
/cast [@focus, exists][@mouseover,mod:shift,harm][mod:shift,@target] Corruption; [@mouseover,harm][@target] Fel Flame
Blood Pact is a weekly column detailing DOTs, demons and all the dastardly deeds done by warlocks. We'll coach you in the fine art of staying alive, help pick the best target for Dark Intent, and steer you through tier 13 set bonuses.