DECIPHERING MACROS
Macros can be confusing at first glance to people who are unfamiliar with them, but just like anything in life, they are easy to master once you have enough practice with them!
Many newer and casuals who don't play very often get overwhelmed by them and just do not use them at all which is a shame because they can increase dps in fights, make you CC faster and more efficiently, and heal better too!
There are thousands of macros for WoW all over the internet, you've probably used some of them via copy+paste. This guide isn't going to show you "paste this macro and it works", but how to understand them so you no longer have to search for a macro when you need something, and can start writing your own. You will understand exactly what the macro is doing.
Mouseover Macros
Let's get down to it! There is no better way to learn something than to get hands on experience.
We will be gradually creating a mouseover macro in this example. We will be using a druid, but if you play another class then use a different ability. The reason the mouseover macro is the main focus is because this is the most common macro in WoW for anyone to use. Whether it's for healing, dpsing, tanking.
BUILDING THE MACRO FROM SCRATCH
In here we will be building the macro from nothing at all, this should be easy for even the newest of macro makers to create as no knowledge of macros is required to follow this guide.
- Type /macro in your chat box to open the macro creation box.
- Next hit "New" at the bottom right.
- It will open a window that allows you to enter a macro name. For this example we will use "Roots" as the name.
- For now, pick any icon you like. It doesn't have to match the tooltip's image.
- In the text box, type in the following and then drag the macro to your action bar
Code:
/cast Entangling Roots
Test the macro. Target a monster, and hit the macro. The monster will become rooted to the ground. Success!
Now let's make it into a mouseover macro so we don't actually have to select the monster as our target
- hit /macro to open up the window, and choose the macro we just made.
- now add the following in red to the macro in the same area. @mouseover to the game means "target=mouseover"
Code:
/cast [@mouseover] Entangling Roots
You do not have to drag the macro back to the action bar, it should update. Hit escape to stop the text cursor blinking and your macro will live update.
Test the macro again, this time put your mouse over a monster and hit the roots macro we made. Success! The monster we mouseovered just got rooted to the ground.
Congratulations, you've made your first mouseover macro!
....... Except now we have a problem. "What's the problem???" you might think, I'll show you. Target a monster (by selecting it) and move your mouse off the monster into a neutral area of the screen such as the floor. Hit the macro. Oh no! It tells us you must have a target. But we do have a target, right? Well our human brains know this, but currently the only thing WoW knows is "perform this action when this button is pressed" and we've told it "Only use entangling roots on a mouseovered target, nothing else".
Back to our macro! Open the screen, and let's start editing.
At the end of our macro, add a semicolon ; and then type Entangling Roots again. The macro should look like this :
Code:
/cast [@mouseover] Entangling Roots; Entangling Roots
When you add the semi colon, the game will go to the next statement in your macro after the first condition is met.
Let's test our macro now. Have a monster targeted but mouseover a separate monster. Hit your macro and you will see the macro will use roots on the monster we mouseovered despite having a target. Now let's do it again, but do not have a monster mouseovered. Have a monster targeted and hit the macro. Hmmm, it still doesn't work!
Oh I know why! Because the game is stuck thinking about the first condition. It is stuck on looking for a mouseover, we didn't tell it to check if there was a mouseover or not.
Code:
/cast [@mouseover,exists]Entangling Roots;Entangling Roots
Before, the game was thinking like this :
Waiting for mouseover, no mouseover so I can't use entangling Roots
Waiting for mouseover, no mouseover so I can't use entangling Roots
Waiting for mouseover, no mouseover so I can't use entangling Roots
Waiting for mouseover, no mouseover so I can't use entangling Roots
etc
Now the game is thinking like this.
Checking for mouseover, there is no mouseover, go to the next statement in the macro.
Try the macro again. Target a monster, have no mouseovered monster, and press the macro. It should finally work! Phew!
.... but it's not perfect yet, oh no! "But it's working fine" you might say. I beg to differ! Kill a monster. Target a second monster. Mouseover the first monster that is dead. Use the macro.
Oh no! Invalid target.
Back to the drawing board we go.
Code:
/cast [@mouseover,exists,nodead]Entangling Roots;Entangling Roots
having nodead there checks if the monster is dead or alive. If it's not dead it'll execute in this case.
Now the nodead in this example is kinda useless because you'll rarely ever be mousing over dead monsters frequently, however I left this example in here so you know why this happens when you get an invalid target error. The macro will now understand that the monster is dead, and to just continue to the next line.
We're not done yet! There is still one more important error to overcome.
Select a monster, have it in your target window. Now mouseover a friendly target and hit your macro. Invalid target. This is because we still haven't told the game to see if our target is friend or foe yet, so right now it's currently trying to use roots on a friendly target which is not possible.
Final check we will add for this macro
Code:
/cast [@mouseover,exists,nodead,harm]Entangling Roots;Entangling Roots
This will now see if your mouseover is friendly. If it is indeed friendly it will skip the mouseover and go to your selected target instead.
If any of these conditions are against the possibilities of making the first one happen, the macro will end the first segment and move to the second.
Phew! You do not have to add all those checks into the macro as I stated earlier, over time you will learn which ones are good for you to use and which ones aren't.
SHOWTOOLTIP
Now a final thing to add to this macro! Remember at the start how I told you to choose any icon you like? You dragged the macro to your actionbar, you mouseovered it and it just says "ROOTS" or whatever you decided to name it. If you like it this way, there is no need to change a thing. But if you want to see what's going on then let's do the following.
Change the icon of the image to the Question Mark. By default it's the first icon in the list.
add the first line on top of your macro
Code:
#showtooltip
/cast [@mouseover,exists,nodead,harm]Entangling Roots;Entangling Roots
what #showtooltip (with nothing after it) does is shows the tooltip of the current ability that's available to be used. If you add a name of the action after it, it will show the tooltip of the action/spell you want to use.
An example of when you want to use the name after it :
If you macro an item to a spell (for example engineering glove enchant) you will want to show the tooltip of your spell, as leaving it blank will show a glove icon and that can be confusing since I have those gloves macro'd to multiple abilities!
Here is my starfire macro with a static tooltip
If I left out "starfire" from "#showtooltip starfire" it'd show the gloves because "/use 10" comes before "/cast starfire" (/use 10 is because I have an engineering tinker btw).
Sometimes though it's good to show it dynamically changing.
A great example of this is the following macro
Code:
#showtooltip
/cast [swimming] Aquatic Form;Travel Form
What this macro says is if I'm swimming, change into my Aquatic form, and if I'm on land, change into travel form. It's the same single macro, and it's performing two different things depending on the condition, so the tooltip changes if I'm in water.
ALT, CTRL, SHIFT modifiers
You've probably heard people talking about modifiers. These will change the macro depending on the button you are pressing.
Let's say, you want to use entangling roots, but if you hold alt you want to use hibernate. How do we do that?
Code:
#showtooltip
/cast [mod:alt]Hibernate;Entangling Roots
That's it! Remember to keep #showtooltip clear so that your macro dynamically changes the icon. Test this macro out (remember non druids can use any two abilities they want for testing purposes).
What this macro is doing is saying "Is alt pressed? Hibernate, otherwise go to the next statement "
You can have multiple conditions in the same macro.
Code:
#showtooltip
/cast [mod:alt]Hibernate; [mod:shift]Entangling Roots;[mod:ctrl]Soothe;Wrath
All the modifiers are on the one line separated by semicolons (important!).
Make this macro (remember to leave the icon as the default question mark) and drag it on your bar. Even without a monster you can test to see if the macro is working. Press shift, alt, ctrl dynamically and watch your macro update the icon on the bar.
You can also combine mouseovers, with alt/shift/ctrl modifiers.
Here is an example
Code:
#showtooltip
/cast [mod:alt, @mouseover,harm,exists]Hibernate; [@mouseover,harm,exists]Entangling Roots;
This macro checks if alt is pressed > checks if my mouseover exists > is harmful > Hibernates. No alt? Does the alternative.
The problem with making these macros is you're left with a question mark icon on your action bar, these are unaesthetic to have. I like to give these macros "insurance" to work, so I want it to do something like "If I don't have any mouseovers, fall back on my selected target".
So my macro will end up looking like this :
Code:
#showtooltip
/cast [mod:alt, target=mouseover,harm,exists]Hibernate; [@mouseover,harm,exists]Entangling Roots;
/cast [mod:alt,harm,exists]Hibernate;Entangling Roots
First it checks alt+mouseovers, then mouseovers, then mod+alt and no mouseover but selected monster, then nothing but selected monster. This way you always have a tooltip and the correct mod press (alt in this case) will bring up the other.
Mouseover and mod:shift/alt/ctrl macros are the most commonly used ones. Hopefully this guide helped you learn to decipher the macros so you can use them yourself or edit them without worry. There are many websites that have complex macros (I use a few complex ones myself) but now you should have enough of an understanding to tailor them to your needs.
Now that you've read this, continue to research how other macros are made if being a macro master is what you're after. Feel free to help other people and guildies because macros CAN be the difference of a raid wipe or not (for example, is the healer clicking on a person first, pressing a button later, or are they using mouseover heals which means less time between their reaction and the heal going off?)
A few quick examples of other types of conditions to be met for a macro :
Combat
Code:
/cast [combat,dead,help]Rebirth;Revive
In combat it'll always try to rebirth. Otherwise it'll use revive. Great for druids
Stealth
Code:
#showtooltip
/cast [nostealth]Rip ;[stealth] Ravage
Note when using stealth macros, your action bar might change depending on your addon setup which makes this macro useless unless you use it on a nonshifting bar.
Help
Code:
#showtooltip
/cast [@mouseover,exists,help]Swiftmend;Swiftmend
Opposite of the harm check, it checks if the target is helpful for this, and will swiftmend them. Otherwise it'll just swiftmend whoever is your target.
Stances
Code:
#showtooltip
/cast [Stance:1]Flash Heal;Shadowform
This says "If I'm in stance1(Shadowform for priests), Flash heal. If I'm in no stance, use Shadowform. Basically an emergency self heal button for priests and then return to shadow form right after the single heal. Remember stances too can change the actionbar completely so only use these macros on non shifting bars.
Use this link to check your class's stance http://www.wowpedia.org/Stance.
Target's Target
This is now useful for healers since they have dps quirks to them. For this example I'll use a disc priest in smite spec.
Code:
#showtooltip
/cast [@targettarget,harm,exists]Smite;Smite
With a tank or DPS friendly target, the macro will check what their target is, and if it's a foe then it proceeds to smite. Just be careful when using this, last thing you want to do is smite a monster that someone is targetting to CC.
WARNING:
DO NOT USE THESE WITHOUT TESTING THEM FIRST! The worst thing you can do is be another dud that makes the heroic that much more painful.
RAZER NAGA MOUSE : It's not a bug with the mouse, it's a bug with windows. If you have a razer naga mouse and set it to numpad mode, you can not use shift key modifiers as windows counts shift+numpad as arrow+up arrow+down etc.
There you have it! These are the absolute basics to macroing. If you want to learn more, there is tonnes of information out there in google searches and on many class specific websites. Hopefully now you have more of an understanding. Happy gaming!
Addons for those curious : Health/Actionbars = Tukui, Nameplates = Tidyplates. Yes, I know my action bars are a mess.