Traditionally, when healing in World of Warcraft I’ve used Healbot. I’m trying to switch over to using Grid with mouseover macros.
One of the things I’ve run into is that it doesn’t make much sense to make a mouseover macro for an ability which can be on only one person, e.g. the Shaman’s Earth Shield. Instead, that seems like an excellent opportunity for a focus macro, which is another thing I’ve never had much use for before.
I did a bit of research and couldn’t find anything I liked, so I whipped this up…
#showtooltip Earth Shield
/cast [target=focus,exists,noharm] Earth Shield
This has the following functions.
If I don’t currently have a focus target, it focuses on my current target and then casts Earth Shield on it.
If I do have a focus target, it casts Earth Shield on my focus target.
If I hold alt while not targeting anything it clears my focus target.
If I hold alt while targeting something, it switches focus to that target and then casts Earth Shield on them.
The macro isn’t perfect. Because of the weird conditionals I need to check for each line, I haven’t been able to find a way to prevent it from focusing on hostiles, for example. Specifically, I need a way to stop the macro if my focus target doesn’t exist and my current target isn’t friendly. Unfortunately, as far as I can tell the WoW macro system doesn’t allow you to do a conditional like that. I considered
/stopmacro [target=focus,noexists][nofriendly], but that would stop the macro if either were true. I don’t think you can have multiple target directives in one condition and
/stopmacro [nofriendly,target=focus,noexists] doesn’t work.
It’s a small hiccup. It’s simple to fix if you mess it up (just select tank and alt+click), and even easier to avoid (ensure you have tank selected the first time you cast it). But still… it’s inelegant. Any ideas how to fix it?