First off, you can remove the "if not InCombatLockdown() then...end" part of the macro. That gets you a ton of extra characters, which allows you to do something like this instead:
/run local i=GetMacroIndexByName ("Ma") local mt=GetMacroBody(i) local a=strlen(mt) local v="/cast Mangle" if a < 15 then mt=v.."\n/cast [nomodifier]!Maul" else mt=v end local n,t,_,l=GetMacroInfo(i) EditMacro(i,n,t,mt,l,1)
This will change the mangle to do a mangle in one case, or do a mangle/maul in the other case as long as you don't hold down a modifier key (alt, shift, ctrl). Which might be nice for finer grained control.
Next, thanks to reader Pockie I figured out how to make this a one-button toggle. Though it's a bit involved. Here are the steps (and this should answer your question, secretagentcat)
First, make three macros for your basic attacks: Mangle (Ma), Lacerate (La) and swipe (Sw).
Next, make modifier toggle macros for those three attacks like the ones above. Put them on a bar that is hidden normally.
Next, use another macro to determine what the name of that button is in the WoW UI world. The macro for this is:
/run local f = GetMouseFocus(); if f then DEFAULT_CHAT_FRAME:AddMessage(f:GetName()) endBind this to a button with a keypress for now.
Then, hover over one of the three toggle macros and use the macro above. You should see something like "BTBar4Button28" in your chat window. Do that for all three toggle macros.
Finally, write a macro called 'toggle' that looks like this:
Where the BTBar4Button28-30 are the text strings that appeared in your chat window. And bind that to a key. Now you can hide the bar with the three separate toggles and toggle everything with one key while having only 4 visible buttons. Of course, this doesn't work all that well if you have a shortage of bars or don't have hideable bars.
An alternative (as Pockie suggests) is to do something like this:
An alternative would be to have your 3 ability macros have a line "/click MaulButton" instead of "/cast !Maul". MaulButton will be a macro that simply consists of "/cast !Maul", and it's hidden somewhere on your bars. You then have a toggle macro on your main bars that will modify the MaulButton macro to "//cast !Maul". The end result is that you only use up 2 buttons (1 visible 1 hidden).I like that idea too, though it's not for me personally; I like being able to do it for each type of attack potentially. The big advantage of this is that it allows for a lot of text in that /cast !maul macro, at least in theory. You could easily toggle between it doing /cast [modifier:shift] !maul and /cast [nomodifier] !maul, which might be nice.
If this is daunting to you, don't worry about it too much. There should be an addon soon that fixes this a bit and allows for a lot more complex and maintainable using of this type of feature, and it'll come out soon. At least hopefully.
Nav does what a lot of people out there - he has a castsequence macro and spams it and his maul button. Astrylian (of Rawr fame) had a one-button tanking macro that was good for 95% of all encounters. It was basically mangle, lacerate, swipe with the ability to override in certain circumstances (like on berserk) and did auto-mauling except on overrides. I tried that for a while, but it felt really uncontrolled and awkward. But it was at least one button. I would strongly recommend macroing maul into the basic attacks if you can, though; the difference between spamming one and two buttons is night and day, especially when doing things like moving while doing so.
Felkan asked about the ! in front of maul. I think that they've actually turned off the ability to 'toggle' maul, but it was put in there as a precaution. I've honestly not tested it much to see whether or not the toggle works. My experience is that it doesn't matter, but only actual testing would know for certain. I do know that pressing maul multiple times will turn off the highlighting on the button - but that doesn't seem to affect the actual next cast of maul.
Saroosh asked about extra macro slots in 3.1. And sadly the answer is no - you have only the normal set of macros. Ugh. Again, an addon would help this tremendously.
SecretAgentCat also asked about if you could modify a macro so that it would target different things at various parts of the fight and allow you to spam it. And the answer is no - at least not like this does. You can't modify the text of a macro during combat. Additionally, you can't do a castsequence either for targets; only actual casts works for this. Still, you probably can get away with doing something like this for your specific needs:
If Tenebron and Shadron are up, it will first target Shad, then fail to target Vesperon (since he's not around), then growl, faerie fire, target Shadron again, then target Tenebron, ending up on Tenebron. If Shadron and Vesperon are up, it'll target Shadron, then target Vesperon, growl and faerie fire Vesperon, target Shadron again and then fail to target Tenebron (since he's not around), ending up on Shadron. I think that's what you want it to do. Alternately, you can do tricky things with setting your focus and then reseting it, but I don't think it's really necessary for something specific like this.
/cast Faerie Fire (feral)