What lazy macros are
A lazy macro is a bind that decides for itself. You press it, the conditionals pick a path, and the spell that fits the moment goes out. No targeting, no bar-page flipping, no thinking. The "lazy" is the point: the macro holds the decision so you do not have to.
The engine is the fallback chain from theconditionals page: sections separated by semicolons, first match wins. A lazy macro is just a chain where the conditions cover real situations. A good one reads like a sentence.
The trinity of lazy binds
Three binds do most of the work on a lazy bar. The heal bind first:
#showtooltip/cast [mod:shift] Power Word: Shield; [@mouseover,help,nodead] Flash Heal; Flash Heal
Shift shields you. Hover heals the hovered ally. Plain press self-heals. Three decisions, zero inputs beyond the key.
#showtooltip/stopcasting/cast [mod:shift,@focus,harm,nodead] Counterspell; [@mouseover,harm,nodead] Counterspell; [harm] Counterspell
Shift kicks the focus target, otherwise whoever your cursor is on, otherwise your current target. The /stopcasting first line is what makes interrupts land mid-cast at all.
#showtooltip/cast [button:2] Dismount; [swimming] <water mount>; <flying mount>; <ground mount>
Replace the angle-bracket mounts with your own and the bind is done forever. Right click drops the mount, swimming picks the water one, flying picks the sky one.
The three habits that keep lazy macros honest
- One decision per macro. A heal bind decides who, notwhat else. The moment a second, unrelated action sneaks in, the macro becomes a trap for future you.
- The fallback is mandatory. A chain without a final unconditional section silently does nothing in the case you did not think of. Every lazy macro on this page ends with one.
- Name it after the intent, not the spell. Name the bind "interrupt", not "counterspell", and it survives every expansion that renames the ability.
Lazy versus castsequence
Players new to macros often conflate the two, and the difference is worth owning: a castsequence is a fixed script that steps on every press. A lazy macro re-decides on every press. Fixed order, use a sequence. Context matters, use lazy. Many bars want both: a lazy interrupt and a castsequence opener on the same page.
If a bind keeps getting pressed in situations where its spell is wrong, that is not a macro problem, that is a bar layout problem. Lazy macros carry their weight best when the bind is always wanted, only the target changes. Put those buttons together and the bar stops lying to you. The classic pages (start withwarrior) are dense with era-correct examples of the style.