Mutt Macro Patcher
Mutt (Macro Update Target Tool) is a World of Warcraft add-on that provides a slash command that can patch (silently edit) a chosen macro, replacing the something in one or more predefined instances of @something in the macro with the party or raid position of a targeted group member.
Assuming you have a macro named "hlight" that looks like:
/cast [@raid4] Holy Light
...and that you're targeting the player in position raid23, then
...would patch the hlight macro to look like:
/cast [@raid23] Holy Light
Mutt observes macro options, so you can even do:
/mutt [button:3] hlight /cast [nobutton:3,@raid2] Holy Light
...to have a macro patch itself(!)
Be advised! If you try this macro-patching-itself trick, make absolutely certain that the Mutt slash-command is the first line of the macro, and that you use macro options to make it mutually-exclusive from the rest of your macro or else your results will be unpredictable.
Mutt modifiers can be added after the name of the macro. If no modifiers are provided, Mutt will patch the first @ target that it finds (unless it's part of a /mutt command, see below) and set it to the group position of the currently targeted group member.
Adding numbers after the name of the macro tells Mutt to change those instances of @ target in the macro, so:
/mutt hlight 2
...would change the second @ target in your macro. In case you want to change the last @ target and don't want to count how many come before it, Mutt understands negative numbers to mean that you want to count backward from the end, so:
/mutt hlight -2
...would change the next-to-last @ target in your macro.
Placing all as an modifier in your Mutt command tells Mutt to change all instances of @ target in your macro to what Mutt received as the current target (more on targeting below).
By default Mutt will replace everything after the selected @ target but there are cases, like macros where you want the target's target, where you wouldn't want that. Mutt provides the keepsomething modifier to let you preserve a target chain after your initial target (I say preserve here, but Mutt will add the provided chain if it's not already present). Since having to specify a modifier like keeptargetpettarget would eat valuable macro space, Mutt understands k plus combinations of p and t to be a short version of this modifier, so ktpt could be used in place of the modifier above.
By default Mutt won't count or change any @ target that is part of a Mutt command in a macro. You can change this behavior if you wish by including the mutt modifier, and the @ target in your Mutt commands will be treated like those in the rest of your macro. Please note the warning above that unpredictable/undesired behavior may result from this.
The group position that Mutt writes in your updated macro is determined by your current target or by macro options in your Mutt command if you provide them, so if you used:
/mutt [@focus] hlight
...and your focus target was the player in raid position 14, then raid14 would be the new target written in your macro.
/mutt off-tank all mutt
Updates all @ targets (including those in Mutt slash commands) in macro off-tank to the group position of my current target.
/mutt [nomodifier] off-tank 2; [@focus] main-tank all
Updates second @ target in macro off-tank to current target's group position on a regular click, on a shift/ctrl/alt click changes all @ targets (except those in Mutt slash commands) in macro main-tank to the group position of my current focus.
/mutt [button:3] shield-mutt 2 /stopmacro [button:3] /cast [nogroup:raid/party, @player] [@raid1] Sacred Shield
Macro shield-mutt: Casts Sacred Shield on player if not in group, on group member if in a group, update macro target on middle mouse button click.
/mutt [button:3] weaken-mutt keeptarget /stopmacro [button:3] /cast [@raid1target] Curse of Weakness
Macro weaken-mutt: Casts Curse of Weakness on group member's target, update macro target on middle mouse button click, preserving the "target" suffixed to the updated macro target.
- Mutt has been updated to use @ rather than target= in macro options, if your existing macro has instances of target= in it you'll see an alert at patch time that they are being replaced to use @ targeting instead.
- Mutt works by editing macros, and macros can't be edited in combat.
- The default WoW macro editing window doesn't understand anything about Mutt, so if you run Mutt commands with the WoW macro window open you won't see any changes to your macro and WoW will overwrite any of Mutt's changes when the window closes.
- If your macro has spaces in the name then you must enclose the name in double-quotes, a-la:
/mutt [button:3] "mutt macro" 2
What would I use this for?
Mutt is intended to make up for some of the deficiency of only having one way in WoW macros (focus) to have an unchanging but reset-able target in a macro. Mutt permits you to have macros for spells that you know you'll be casting repeatedly on the same target (Remove Curse, Beacon of Light) and a way of adjusting the targets at the start of the raid or between combats.