Thursday, February 01, 2007

Macros in World of Warcraft

First: the AddOn SuperMacro has two features that makes it indispensable: any macro that selectively casts spells or uses items based on what keys you're holding down (e.g., shift, control; or other conditions) will display the icon corresponding to the actual spell that will fire, updated in realtime as keys and conditions change; and it can display the tooltip for that spell, instead of (as WoW would do without SuperMacro) just the name of your macro. Those two features alone make macros much more rewarding.

Example: Clicking the Druid's kitty button fails if you're already in some other stance or mounted. And if you're already the cat, it pops you out, so don't click it too many times. Additionally, key kitty actions like Prowl and Dash require their own buttons. So to become the stealthed kitty and dash, you might have to click a lot of buttons (e.g., my Kodo button to dismount, then the kitty button, then back across the screen to the stealth button, and finally the Dash button---and I have to start with a different button depending on my initial state).

WoW macros have limitations: they can really only perform one significant action per physical click, so starting from mounted, I'd need just as many clicks as I would without the macro, but they could all be on the same button:

# warning: you can't really format a macro like this, see below
/cast # cast the first thing with matching conditions
    # first, gotta be the cat...
    # if I'm mounted, cast Gray Kodo to dismount
  [mounted] Gray Kodo;
    # bear form?  cast it again to revert to caster form
  [stance:1] Dire Bear Form;
    # likewise if I'm the swimming thing or the cheetah
  [stance:2] Aquatic Form;
  [stance:4] Travel Form;
    # if I'm not in _any_ form, become the cat
  [nostance] Cat Form;
# all other stances are covered now,
# from this point on, I must already be the cat
    # I use ctrl to mean `do something special', here Dash
  [modifier:ctrl] Dash;
    # I use shift to mean `back out'
    # ...so if I'm stealthed, back out by un-stealthing
  [stealth,modifier:shift] Prowl;
    # else back out by reverting out of cat form
  [modifier:shift] Cat Form;
    # finally, I'm the cat, and we're not backing out
    # so if I'm not already stealthed, do so
  [nostealth] Prowl

With this setup, I can just mash on a single button and I'll become the stealthed kitty. If I hit the button too many times, no big deal. Once I'm stealthed, as long as I'm not holding down the shift key, extra clicks won't do anything. Shift backs me out of stealth, or else reverts me to caster form. And once I'm the cat, stealthed or not, a control-click will make me Dash.

I'm pretty sure you can't actually format the macro like that. And with those comments, it excedes the length limit. Here's how it really looks (the following contains no line breaks):

/cast [mounted]Gray Kodo;[stance:1]Dire Bear Form;[stance:2]Aquatic Form;[stance:4]Travel Form;[nostance]Cat Form;[modifier:ctrl]Dash;[stealth,modifier:shift]Prowl;[modifier:shift]Cat Form;[nostealth]Prowl

...and because of SuperMacro, at each step, the macro button shows you what your next click will cast.

1 Comments:

At 2:07 PM, Scott Collins said...

I'm starting to feel like SuperMacro's update code takes too long and makes me unable to switch bars during shapeshifts in combat. I think I need to write my bigger macros as a SecureStateHeader derived AddOn.

 

Post a Comment

<< Home