Brues 828acc0c4b Remove two silently-shadowed code paths
Both were invisible: no error, no warning, just logic that never ran.

Console.lua no longer defines the global RunMacro. Core.lua installs a hook of
the same name and loads first, so this file's name-only wrapper replaced it. What
that cost, whenever SuperMacro was absent: macro *index* arguments stopped
working (Blizzard's RunMacro accepts an index or a name, and ExecuteMacroByName
takes only a name), the delegation to SuperMacro went away, so did the fallback
to the saved Blizzard original when a macro would not resolve, and so did
clearing the stop/skip flags at the start of a top-level run -- which is what
lets /stopmacro, /skipmacro and /firstaction work across parent/child macro
boundaries. With SuperMacro loaded, Compatibility/SuperMacro.lua reassigns the
global afterwards anyway, so this definition only ever did harm.
SlashCmdList.RUNMACRO keeps using ExecuteMacroByName, which is correct there.

Utility.lua drops ClearReactiveProcOnCast and the wrappers it existed for, which
tried to clear a reactive proc when its spell was cast. Three independent bugs
meant it never worked: the wrappers guarded on CleveRoids.Frame, which Core.lua
creates after this file loads, so the guard was always false and neither wrapper
installed; the UNIT_CASTEVENT wrapper tested arg2 == "START" when that signature
is (caster, target, action, spell_id, cast_time), so it compared the target; and
both passed a spell ID to a lookup keyed by spell name. They also allocated an
arg table per call and unpack()'d it. Deleting is behaviour-preserving.

Swept for both patterns: no other duplicate global definitions, and no remaining
file-scope use of CleveRoids.Frame in a file that loads before Core.lua.
2026-09-10 14:40:16 -05:00
2026-06-21 03:38:50 -05:00
2026-09-09 12:46:48 -05:00
2026-09-09 12:46:48 -05:00
2025-08-18 16:15:25 -04:00

SuperCleveRoid Macros

Enhanced macro addon for World of Warcraft 1.12.1 (Vanilla/Turtle WoW) with dynamic tooltips, conditional execution, and extended syntax.

Full Documentation on the Wiki

Requirements

Mod Required Purpose
Nampower (v3.0.0+) ✅ Spell queueing, DBC data, auto-attack events
UnitXP_SP3 ✅ Distance checks, [multiscan] enemy scanning
ClassicAPI ✅ Modern C_* API: dispel-type conditionals ([magic], [curse], …), [moving] speed

Installation

  1. Download and extract to Interface/AddOns/SuperCleveRoidMacros
  2. Recommended pfUI: Use brues-code/pfUI for full compatibility with macro spell scanning and action bar features

Quick Start

#showtooltip
/cast [mod:alt] Frostbolt; [mod:ctrl] Fire Blast; Blink
  • Conditionals in [] brackets, space or comma separated
  • Arguments use colon: [mod:alt], [hp:>50]
  • Negation with no prefix: [nobuff], [nomod:alt]
  • Target with @: [@mouseover,help], [@party1,hp:<50]
  • Spell names with spaces: "Mark of the Wild" or Mark_of_the_Wild

Multi-value logic:

Syntax Logic Example
[buff:X/Y] OR Has X or Y
[buff:X&Y] AND Has X and Y
[nobuff:X/Y] NOR Missing both
[nobuff:X&Y] NAND Missing at least one

Comparisons: [hp:>50], [hp:>20&<50], [buff:"Name"<5] (time), [debuff:"Name">#3] (stacks)

Wiki

See the Wiki for complete documentation:

  • Quick Start — Syntax, multi-value logic, comparisons, special prefixes
  • Slash Commands — All 35+ commands, priority macros, UnitXP scanning
  • Conditionals — 150+ conditionals (player & target), short aliases, extended unit tokens, multiscan
  • Reference Tables — CC types, damage schools, stat types, swing types
  • Features — Debuff timers, combo tracking, talent modifiers, TWoW mechanics
  • Overflow Buff Frame — Hidden buff display for 32+ buffs
  • Immunity Tracking — Auto-learned NPC immunities
  • Settings — Configuration and console commands
  • Supported Addons — Compatible addons and integrations

Known Issues

  • Action-bar macros are identified by slot, so blank or duplicate macro names are fine. Only macros referenced by name ({MacroName} nesting, /runmacro "Name") still need a unique name to disambiguate.
  • Reactive abilities must be on action bars for detection
  • Debuff time-left conditionals only work on own debuffs unless pfUI libdebuff or Cursive has data
  • Macro line length: 261 characters max (MacroLengthWarn extension prevents crashes)

Supported Addons

Unit Frames: pfUI, LunaUnitFrames, XPerl, Grid, CT_UnitFrames, agUnitFrames, and more

Action Bars: Blizzard, pfUI, Bongos, Discord Action Bars

Integrations: SP_SwingTimer, TWThreat, TimeToKill, QuickHeal, Cursive, ClassicFocus, SuperMacro

Note: For pfUI users, the brues-code/pfUI fork includes native SuperCleveRoidMacros integration for proper cooldown, icon, and tooltip display on conditional macros.

Credits

Based on CleverMacro and Roid-Macros.

MIT License

S
Description
Requires ClassicAPI
Readme MIT
8.9 MiB
Languages
Lua 100%