Beginner's Guide to Understanding (Bad) Macros
- See also: Macro and Macro Guides
On occasion I run across discussion about macros, often it's someone asking for help on how to create a macro, and then someone else chiding them about using macros because it's bad for their DPS. While it's true that improperly used macros can lead to sub-optimal play at high levels, I think it's important to understand how macros work because a properly used macro can be a great boon to how you play the game.
At its most fundamental, a macro is just some lines of text that are being fed into the game's chat box. You can do a lot of things with this, but the most basic is probably a simple chat macro, like this:
- /p Nice to meet you!
- /p This is my first time here, please let me know if there are mechanics that I should know about!
Properly and respectfully used, chat macros can be a handy and fun tool, allowing you to tell people about mechanics, automate greetings, or send cute pictures of moogles saying "Good job, kupo!" But what about macros that do stuff? Well the chat box also accepts a variety of commands that will do things. For example, you've probably used emotes, such as /dance or /sit. Anything that starts with a forward slash "/" will issue a command to the game As an example, let's take a look at this simple macro:
- /macroicon "Benediction"
- /ac "Benediction"
- /wait 300
- /echo Benediction available for use again! <se.10>
This macro consists of four separate commands:
- /macroicon: This sets the macro icon to the indicated ability. You can use this to set any available icon to your macro, even ones for abilities you don't know or things that you can't normally use, like mount abilities. Generally it's best to stick with an icon for the ability you're actually using, though.
- /ac: This is the generic macro command to perform an action. In this case, the action being performed is Benediction, the full-heal from White Mage.
- /wait: Wait is a handy too. It does exactly what it says - it waits before performing the next command. In this case, it adds a 300 second (5 minute) delay. Note that you can only have one macro running at a time, though, so if you run another macro during this time period, it will cancel the wait command and you won't get the notification.
- /echo: This one is a chat command, it sends a chat message. Echo is a private chat channel; only you can see it. The <se.10> is a notification sound.
So in summary, what this macro does is use Benediction, wait 5 minutes, and then tell you that benediction is available again.
Simple enough, but what if you want to do something more complicated? Well, here's the part where it becomes important to understand the details of how macros actually process.
Unless you are using wait commands in your macros, macro lines are sent to the text box one after another, in rapid succession. Just imagine you're mashing the enter key as fast as you can and it's sending one line each time to get a rough idea of what's happening. This means that it can sometimes take a moment to complete the full macro. Let me show you an example macro that I've used for a long time that helps to illustrate the details of how macros work:
- /macroicon "Fight or Flight"
- /ac "Fast Blade"
- /ac "Shield Lob"
- /ac "Mercy Stroke"
- /ac "Fight or Flight"
- /ac "Bloodbath"
Experienced players are probably looking at this and have warning sirens going off in their head, and they're right to do so. This is a bad macro, and I feel bad for using it, but it is very helpful in understanding how priority works in macros. Let's walk through it, shall we?
The purpose of this macro is to combine a bunch of commonly used skills into a single button, thus easing the load of buttons I need to push when tanking. It gives me an "all-in-one" combo starter button, essentially a "I want to build hate" button to do my tanky thing. It combines several buffs with a ranged attack, an execute, and a combo starter, and it works. Usually. Sometimes.
Remember how I mentioned that macros are sent to the text box one line at a time in rapid succession? This means that you can have multiple skills going out in a quick blast, and the and it will use the first available one. Here's the blow-by-blow of what happens:
- First, the macro tries to use Fast Blade, the combo starter for all of the paladin's combos. If the enemy is in range, and the Global Cooldown isn't rolling, this is what's used.
- Second, the macro tries to use Shield Lob. If you're out of range for Fast Blade, but within Shield Lob range, and the Global Cooldown isn't rolling, this is what will be used
- Third, it tries to use Mercy Stroke. This is an off-global cooldown ability, but it requires that an enemy's health be below 20% in order for it to activate. If the Global Cooldown is rolling, you're in melee range, AND the enemy is under the HP threshold, this will activate.
- Fourth, if none of the above conditions for the above abilities have been met (that is, the Global cooldown is rolling so that Fast Blade and Shield Lob don't activate, AND the enemy is not under 20% HP OR there is some other reason the above skills can't activate, such as having no target selected) Fight or Flight will activate.
- Finally, if the criteria for Fight or Flight has been met, AND Fight or Flight is on cooldown, Bloodbath will activate.
Complicated? Sure sounds like it. In practice it's far simpler. Let's run through how I use it on a typical pull.
I haven't pulled yet, and am running toward a pack of enemies. I target one of the pack, and am in range of Shield Lob, but not Fast Blade. I press my macro. What happens? Shield lob.
I immediately press the macro again, before the Global Cooldown finishes cycling. What happens? Fight or Flight.
The global cooldown has finished rolling, and the mob is now in melee range. I press the macro again. What happens? Fast Blade.
I immediately press the macro again, before the Global Cooldown finishes rolling. What happens? Bloodbath.
I forgot to flash, so one of the mobs decides to go run over and eat the healer. I quickly target that mob and press the macro. What happens? Shield Lob.
"Well this just seems super convenient, why did you say this is a bad macro?" you might be saying to yourself. And you'd be right! It is super convenient! However, there are some major drawbacks to doing this, and you have to understand how the macro system works in order to understand why.
First off, let me explain skill queuing.
Skill queuing is a function of the global cooldown system that allows you to use one skill right after another without any real delay. The way it works is that you press the next skill button in your rotation partway through the global cooldown for the previous one. For example, a paladin's basic aggro combo is Fast Blade > Savage Blade > Rage of Halone. When queuing up the attacks, you would first hit Fast Blade, then about a little over halfway through the global cooldown for Fast Blade you can hit Savage Blade, and it will execute that skill as soon as the cooldown period finishes. This is crucial for DPS classes to maximize the damage they're doing, as it allows a very smooth flow from one skill to the next. Why is this important?
Macros are incompatible with skill queuing.
When you press the button for a skill normally on your hotbar, it hands that to the game's system to execute right after the current skill completes. With a macro, however, it just dumps those text commands into your chat box right when you press the button. This means that even if you're 100% efficient about pressing the buttons at the right time to have it execute the skill with minimal delay, there will still be more delay than if you had queued up the skill. In practice, it's usually a lot more than just a little tiny delay, and over a long fight this downtime where you're doing nothing can really add up.
The other reason is lag. When you execute a macro, it sends all those text commands in rapid succession to the game. Sometimes, though, one of them won't be able to execute, which can cause problems. A common issue that I run into with the macro I've listed above is that I execute it too soon before the GCD has rolled, and instead of getting Fast Blade, I Shield Lob at melee range. This screws up my combo, and eats a ton of TP. This is a possible situation you can run into with any macro, so it's best to be prepared for it.
So what macros are good to use?
If you understand the limitations of the macro system, it's time to put together some useful ones. What makes a good macro? Macros are good for things where you won't be trying to compete with a global cooldown, and situations where you're ok with the outcome of the macro being not set in stone. For example, here's my absolute favorite macro, one that I use all the time:
- /macroicon "Raise"
- /ac "Raise" <t>
- /ac "Raise" <2>
- /ac "Raise" <3>
- /ac "Raise" <4>
- /ac "Raise" <5>
- /ac "Raise" <6>
- /ac "Raise" <7>
- /ac "Raise" <8>
This macro will raise my target, or if they're not dead or I have an invalid target selected, it goes down the party list and raises the first available KO'd party member. It's great for when I want to raise someone, but there's only one dead person, or it's not important which party member gets raised. 24-man raids love it! Since it's not something I'll be fighting with the GCD on (you pretty much never Raise multiple people in rapid succession in a heated fight... hopefully) and it's not crucial that it target a specific person, it works out just fine.
As a note, you can use a similar one with Aetherial Manipulation. It will let you zip over to your target, or if you don't have anyone selected, it'll just take you to the next available party member (reorder your party list to set the order that you'd like to have it go in).
Here's another one that I use regularly:
- /ac "Hook"
- /ac "Mooch"
- /ac "Cast"
This one's a little less obvious, but if you read through the lines it's pretty simple. First, it tries to hook the fish. If it can't, because I'm not fishing, it tries to mooch. If it can't mooch, because I don't have a moochable fish caught, it casts the line with my current bait. It's a one-button lazy fishing solution.
If you do beast tribe quests regularly, you'll probably really appreciate this one, it's a real time saver:
- /sundropdance motion
- /s Uhm Ala has sent me with a message: There are free kupo nuts Amid the Flowers
That macro will meet the objectives for quests for four separate beast tribes, making it a one-button solution to dealing with birds/bugs/moogles. It contains the text strings for completion of three separate quests, and has the Sundrop Dance for all those Vanu Vanu quests.
There are plenty more ways to make good macros out of your existing actions, and many more ways to make bad ones. The important part is understanding the limitations of the macro system and how they apply to the macros you create.