wow.jim.wiki

Macros, ranks and auto-attack

The three things that actually catch people out on this client: what one key press is allowed to do, why your action bar keeps casting an old rank, and where the auto-attack goes.

Everything here is the client's own behaviour, transcribed from guides that read the client files, and tested against it where they say so. Where a claim is somebody else's check rather than ours, it says which.

01 — The rules

One press, one action on the global cooldown.

  • 255 characters per macro, 16 for its name. Line breaks count towards the limit.
  • One global cooldown per press. A macro can put things without a global cooldown in front of a spell — a trinket, /startattack, a pet command — but it will never cast two spells on the cooldown, never waits between lines, and never decides for you.
  • Make it with /macro: pick a tab (general macros are account-wide, the tab with your character's name is not), click New, paste, then drag the macro onto a bar. #showtooltip as the first line makes the button wear the spell's own icon.
  • A /run line runs like addon code, which means that in combat it can only see what an addon may see. This is the most common reason a clever macro from an older client silently does nothing here.
Spell names follow your client's language. These pages use the English names. On a German client /cast Arcane Shot is /cast Arkaner Schuss. Commands themselves work in both languages — the full list, with the German forms, is on the command page.

02 — Spell ranks

The bar keeps the old rank. A macro never does.

Forever keeps the spell ranks of the original game — Fireball has twelve, Healing Touch eleven — and that creates one trap that bites everybody after a trainer visit:

  • A spell sitting on your action bar keeps the rank you dragged there. Buy the new rank from your trainer and the button is still casting the old one until you go back into the spellbook and drag it out again. Nothing warns you.
  • A macro with no rank always casts your highest. /cast Fireball casts the best rank you know, today and after the next trainer visit. Make it once, never touch it again.

That is the whole argument for building a macro per ability instead of dragging spells onto bars, and it is what the class pages here are: one ready-made rank-less macro for every ability in the class.

rank-less — always your highest rank

Want a low rank on purpose? You can, and there are real reasons — a rank 1 Frostbolt still slows, a small heal is cheaper for topping up. Write it the way the client's macro help writes it, with no space before the bracket:

a specific rank, on purpose
Low ranks are not free. Blizzard's own notes say a spell cast at a rank far below your level gets less from your spell power, and since launch the low ranks trigger your talents at the same rate as your top rank again, with at least one exception on mages. If you are deliberately downranking, compare ranks of the same spell rather than trusting a rule of thumb.

03 — Auto-attack, the basic macro

If you build one macro, build this one.

Auto-attack is what your character does with the weapon while you are doing something else. On a melee class it keeps running while you cast, but it stops when your target dies or you switch target — and that is where the swing you never noticed losing goes. The fix is one line, in front of the ability:

the pattern: auto-attack first, then the ability

/startattack is off the global cooldown, so putting it in front of every melee ability you own costs nothing. It also fires even when the ability does not — no rage, no energy, on cooldown — so the swing starts anyway. Most of the class macros on this site already have it in front, because the source marks them that way.

On its own

a plain attack button

Auto-attack the next thing, when yours dies

If your target is dead the macro clears it, grabs the nearest enemy and starts swinging — one key for a whole pull instead of two.

dead target → nearest enemy → attack

Stop attacking, so you do not break your own crowd control

Your white swings hit whatever you are targeting, which is how a Polymorph or a Fear ends early. One button turns the swings off:

stop, then stop casting

One ranged button, whatever you are carrying

Warriors, rogues and hunters can shoot with a bow, a crossbow, a gun or a thrown weapon. Instead of four buttons, one macro checks what you are wearing. Note that the worn: types follow your client's language.

shoot with whatever is equipped
The pet goes on the opener, not on everything. If you are a hunter or a warlock, /petattack in front of one pull ability sends the pet at the same target you hit. Put it on every shot and your pet follows every target you touch, which is how a pet ends up tanking something you did not intend.

04 — Target markers

SetRaidTarget() is protected. Use /tm.

Since patch 12.0.0 the marker API is protected, so the old macro cannot call it. Running it gives you an error rather than a marker:

does not work any more

The error is “blocked from an action only available to the Blizzard UI” — not a typo in your macro, and not something a conditional will fix. The supported route is the slash command, which the game itself runs and which therefore is not blocked:

the marker macro

The indices

MarkIndexMarkIndex
Star1Moon5
Circle2Square6
Diamond3Cross7
Triangle4Skull8

Three forms, and the one that bites

  • /tm 2 — toggles. Press it twice and the mark is gone, which is exactly the bug people report as “the marker flickers off”. /tm with no index clears the mark.
  • /tm !2 — only ever adds the mark. Use this in a fight macro you press repeatedly.
  • /tm ~2 — marks only if the target is entirely unmarked, so it will not overwrite somebody else's skull.

Mind the space with a conditional. A 12.x-era parser wants /tm [@mouseover] 2 — with the space. The older squeezed-together form /tm [@mouseover]2 is not what you want here.

mouseover marker, never toggles off
Tested against the client, not against a forum post. The marker behaviour above — the protection change, the three forms, the index order and the space after a conditional — is documented at warcraft.wiki.gg/wiki/Target_marker for the 12.x era, and the client here is build 1.60.1. If Blizzard changes it again, that wiki page moves first.

05 — Taming

Tame Beast has conditions, and they fail quietly.

  • You need an empty Call Pet slot — no active pet. If your pet is out, the tame simply will not start.
  • You cannot tame a beast above your level.
  • The channel breaks if anything hits you, so a tame in a busy spot fails on damage rather than on skill.

None of those are macro problems, which is why the tame helper aura exists: it puts the cooldown and the target check on screen instead of leaving you to remember them mid-pull.

06 — Where to go next

The rest of the shelf.

CLASSES

A macro for every ability

All nine classes, each ability written as a rank-less macro you can copy straight into the game.

COMMANDS

Every command and condition

The fifty commands this client knows, with their German forms, and every condition you can put in square brackets.

AURAS

Import strings

The other half of a UI: auras generated by our own tooling, each with a copy button and a raw file.