Files
SuperCleveRoidMacros/README.md
T

21 KiB
Raw Blame History

SuperCleveRoid Macros

An enhanced macro addon for World of Warcraft 1.12.1 (Vanilla) that provides dynamic tooltips, conditional execution, and extended syntax. Originally based on CleverMacro and Roid-Macros with significant expansions.

Required DLL Mods

ALL THREE ARE MANDATORY:

The addon will not function without all three DLL mods installed.


Installation

  1. Download from the green Code button or click here
  2. Unzip and place folder into Interface/Addons
  3. Rename SuperCleveRoidMacros-main to SuperCleveRoidMacros
  4. Verify it's enabled in your addon list in-game
  5. Disable conflicts:
    • Disable MacroTweak module in pfUI
    • Disable MacroTweak in ShaguTweaks
    • Disable "Scan Macros for spells" in pfUI actionbar settings

Settings & Commands

Basic Settings

/cleveroid                    -- View current settings
/cleveroid realtime 0|1       -- Toggle realtime updates (Default: 0, increases CPU load)
/cleveroid refresh 1-10       -- Set refresh rate in Hz (Default: 5)

Debuff Duration Learning

/cleveroid learn <spellID> <duration>  -- Manually set spell duration
/cleveroid forget <spellID|all>        -- Forget learned duration(s)
/cleveroid debug 0|1                   -- Toggle learning debug messages

Immunity Tracking

/cleveroid listimmune [school]              -- List immunities
/cleveroid addimmune "<NPC>" <school> [buff] -- Add immunity
/cleveroid removeimmune "<NPC>" <school>    -- Remove immunity
/cleveroid clearimmune [school]             -- Clear immunity data

Talent & Equipment Testing

/cleveroid talenttabs                  -- Show talent tab IDs
/cleveroid listtab <tab>               -- List talents in a tab
/cleveroid talents                     -- Show current talent ranks
/cleveroid testtalent <spellID>        -- Test talent modifier
/cleveroid diagnosetalent <spellID>    -- Diagnose talent issues
/cleveroid testequip <spellID>         -- Test equipment modifier

Combo Point Tracking

/combotrack show    -- Display tracking data
/combotrack clear   -- Clear all tracking data
/combotrack debug   -- Toggle debug output

Known Issues

  • Event-based updates: By default (realtime=0), conditionals like @unitid and mod update on events. Enable realtime for instant updates (increases CPU usage).
  • Unique macro names: All macros must have unique names - no blanks, duplicates, or spell names or special characters.
  • Parenthesis in spell names: Must include rank - Faerie Fire (Feral)(Rank 4) NOT Faerie Fire (Feral).
  • Reactive abilities: Revenge, Overpower, etc. must be on action bars for detection.
  • HealComm support: See HealComm Support section.

Macro Syntax Guide

Basic Rules

Spells/items are case sensitive!

Spell and Item Names

  • Spaces: Use underscores OR quotes
    • Mark_of_the_Wild OR "Mark of the Wild"
  • Ranks: Must include full rank syntax
    • ✅ Faerie Fire (Feral)(Rank 4)
    • ❌ Faerie Fire (Feral)

Conditional Structure

  • Format: [conditional1 conditional2] Action
  • Evaluation: Left to right, top to bottom
  • First match wins: First action where ALL conditionals pass
  • Separators: Space or comma
    • [mod:alt harm alive] = [mod:alt,harm,alive]

Conditional Arguments

  • Colon required: Use : to pass arguments to conditionals
    • ✅ [mod:alt] - Correct (argument provided)
    • ✅ [hp:>50] - Correct (argument provided)
    • ✅ [harm] - Correct (no argument needed)
    • ❌ [mod alt] - Wrong (missing colon)
    • ❌ [hp>50] - Wrong (missing colon)

Line Formats

Both formats work identically:

Multi-line:

#showtooltip
/cast [mod:alt] Frostbolt
/cast [mod:ctrl] Fire Blast
/cast Blink

Single-line:

#showtooltip
/cast [mod:alt] Frostbolt; [mod:ctrl] Fire Blast; Blink

Target Specification

/cast [@party1 combat] Intervene  -- Targets party1, checks if player in combat
  • Syntax: [@unitid] at start of conditionals
  • Default: Most conditionals default to @target

Multi-Value Conditionals

OR Operator (/)

[zone:Stormwind_City/Ironforge]              -- In Stormwind OR Ironforge
[nozone:Stormwind_City/Ironforge]            -- NOT in Stormwind OR NOT in Ironforge
[nomypower:>10/<20]                          -- Power NOT >10 OR NOT <20

AND Operator (&)

[zone:Stormwind_City&Elwynn_Forest]          -- In both zones (subzone & zone)
[nozone:Stormwind_City&Ironforge]            -- NOT in Stormwind AND NOT in Ironforge
[nomybuff:Mark_of_the_Wild&Thorns]           -- Missing both buffs

Important: / always means OR, even for negated conditionals. Use & for AND logic.

Negation

Prefix with no to negate (marked as "Noable" in tables):

[nobuff]           -- Does NOT have buff
[nomod:alt]        -- Alt is NOT pressed

Numerical Comparisons

[hp:>50]                                -- HP above 50%
[cooldown:"Spell Name"<5]               -- Less than 5 seconds remaining
[buff:"Mark of the Wild">#5]            -- 5+ stacks (use ># for stacks)
[mybuff:"Renew"<4]                      -- Less than 4 seconds remaining
  • Operators: <, >, =, <=, >=, ~=

Omitting Values

If conditional value matches the action:

[debuff:<#5] Sunder Armor               -- Same as [debuff:"Sunder Armor"<#5]
[nobuff] Mark of the Wild               -- Same as [nobuff:"Mark of the Wild"]

Item IDs

Use IDs to avoid cache issues:

#showtooltip
/use [nomod] 5350              -- Conjured Water
/cast [mod] Conjure Water

Equipment Slots

Use slot numbers (1-19):

#showtooltip
/use [combat hp:<=20] 13       -- Use trinket in slot 13
/use 16                        -- Use main hand weapon

Special Prefixes

Prefix Example Description
! !Attack
!Cat Form
Only use if not active
Shorthand for [nomybuff]
? ?[equipped:Swords] Ability Hides icon/tooltip
Must be first character
~ ~Slow Fall Toggle buff on/off

Common Pitfalls

❌ Cascading conditionals (NOT SUPPORTED):

/use [@mouseover alive help hp:<70][@target alive help hp:<70][@player] Bandage

✅ Correct format:

/use [@mouseover alive help hp:<70] Bandage
/use [@target alive help hp:<70] Bandage
/use [@player] Bandage

Features

Dynamic Icons and Tooltips

Icons and tooltips automatically update to the first action with passing conditionals.

#showtooltip Support

#showtooltip
/cast [mod:alt] Frostbolt
/cast [mod:ctrl] Fire Blast
/cast Blink

With Explicit Icon

#showtooltip Fireball
/cast [mod] Conjure Food
/use 2288

Channel Time Conditional

Recast channeled spells when time remaining is below threshold:

#showtooltip Arcane Missiles
/cast [channeltime:<0.5] Arcane Missiles

This will recast Arcane Missiles only when less than 0.5 seconds remain on the current channel, preventing early cancellation and maximizing damage.

Macro References

Macro 1 shows Macro 2's icon when out of combat:

-- Macro 1
#showtooltip
/cast [nocombat] {Macro2}
/cast Fireball

-- Macro 2
#showtooltip Arcane Missiles
/cast [mod] Conjure Food
/use 2288

Item Counts

  • Consumables show stack count
  • Spells with reagents show use count
  • Item IDs work even when uncached (no ? icons)

Debuff Timer System

Built-in debuff tracking using SuperWoW's advanced features.

Features

  • ✅ Auto-learning from successful casts
  • ✅ 335+ debuffs pre-configured
  • ✅ Per-caster storage (handles talent variations)
  • ✅ GUID-based tracking
  • ✅ Works independently of pfUI

How It Works

  1. Cast debuff → timestamp recorded
  2. Debuff fades → duration calculated
  3. Duration saved for future casts
  4. Use in conditionals: [debuff:Sunder_Armor>25]

Examples

-- Maintain Sunder with 25s buffer
/cast [debuff:Sunder_Armor>25] Heroic Strike; Sunder Armor

-- Refresh Corruption when <4s
/cast [debuff:Corruption<4] Corruption; Shadow Bolt

-- Multi-DoT priority
/cast [nodebuff:Moonfire] Moonfire
/cast [debuff:Moonfire<4] Moonfire
/cast [nodebuff:Insect_Swarm] Insect Swarm
/cast Wrath

Supported Classes

  • Warrior: Sunder, Rend, Hamstring, Thunder Clap, Demo Shout
  • Rogue: Rupture, Garrote, Expose Armor, Poisons
  • Hunter: Serpent Sting, Hunter's Mark, Wing Clip, Wyvern Sting
  • Druid: Rip, Rake, Moonfire, Insect Swarm, Faerie Fire, Roots
  • Warlock: Corruption, Curses, Immolate, Siphon Life
  • Mage: Polymorph (all variants), Slow effects
  • Priest: Shadow Word: Pain, Devouring Plague, Mind Flay
  • Paladin: Judgement of the Crusader (all ranks), Hammer of Justice
  • Shaman: Flame Shock, Frost Shock

Combo Point Tracking

Automatically tracks combo finisher durations regardless of casting method.

Supported Spells

  • Rogue Rupture: 8s + 2s per CP (8-16s)
  • Rogue Kidney Shot: Rank 1: 1s + 1s per CP, Rank 2: 2s + 1s per CP
  • Druid Rip: 10s + 2s per CP (10-18s)

Universal Tracking

Works with ALL casting methods:

  • ✅ Spellbook clicks
  • ✅ Action bar clicks
  • ✅ Macros (/cast Rip)
  • ✅ Direct Lua calls

Examples

-- Refresh Rip when low
/cast [nodebuff:Rip] Rip
/cast [debuff:Rip<4] Rip

-- Rupture tracking
/cast [nodebuff:Rupture] Rupture
/cast [debuff:Rupture<2] Rupture

Talent Modifiers

Automatically applies talent-based duration modifications.

Calculation: final = (base + combo_points) + talent_modifier

Supported Talents

  • Warrior:
    • Booming Voice (5 ranks): +12% per rank to Demo Shout
  • Rogue:
    • Taste for Blood (3 ranks): +2s per rank to Rupture
    • Improved Gouge (3 ranks): +0.5s per rank to Gouge
  • Priest:
    • Improved Shadow Word: Pain (2 ranks): +3s per rank
  • Druid:
    • Brutal Impact (2 ranks): +0.5s per rank to Bash/Pounce stun

Example

Rupture with 5 CP and Taste for Blood 3/3:

  1. Base: 8s
  2. Combo points: 8s + (5-1)×2 = 16s
  3. Talent: 16s + (3×2) = 22s final

Carnage (Druid - TWoW Custom)

Ferocious Bite at 5 CP refreshes Rip/Rake to original duration.

Requirements:

  • Carnage talent rank 2+
  • Ferocious Bite with exactly 5 CP
  • Rip/Rake active on target

Equipment Modifiers

Item-based duration modifications.

Calculation: final = (base + combo + talent) × equipment

Supported Items

  • Idol of Savagery (61699): -10% to Rip/Rake duration (×0.9)

Example

Rip with 5 CP and Idol of Savagery:

  1. Base: 10s
  2. Combo: 10s + (5-1)×2 = 18s
  3. Talent: 18s + 0 = 18s
  4. Equipment: 18s × 0.9 = 16.2s final

Set Bonus Modifiers

Set piece bonuses affect durations.

Supported Sets

  • Dreamwalker Regalia (4/9): +3s Moonfire, +2s Insect Swarm
  • Haruspex's Garb (3/5): +5s Faerie Fire (non-feral)

Immunity Tracking

Auto-learns NPC immunities from combat log.

Features

  • ✅ Auto-learning: "X's Spell fails. Y is immune."
  • ✅ Damage schools: fire, frost, nature, shadow, arcane, holy, physical, bleed
  • ✅ Buff-based immunities (temporary)
  • ✅ Split damage spell support (Rake, Pounce, Garrote)

Examples

-- Check by damage school
/cast [noimmune:fire] Fireball; Frostbolt
/cast [noimmune:bleed] Rip; Shred

-- Check by spell name
/cast [noimmune:"Flame Shock"] Flame Shock; Lightning Bolt

-- Split damage spells
/cast [noimmune] Rake                        -- Checks bleed (DoT)
/cast [noimmune:physical] Rake               -- Checks physical (initial)
/cast [noimmune noimmune:physical] Rake      -- Checks BOTH

Split Damage Spells

  • Rake: Physical initial + Bleed DoT
  • Pounce: Physical initial + Bleed DoT
  • Garrote: Physical initial + Bleed DoT

Default [noimmune] checks the debuff school (bleed).


Slash Commands

Command Conditionals Purpose
/target * Target unit matching conditionals
/retarget Clear invalid target, target nearest enemy
/startattack * Start auto-attacking
/stopattack * Stop auto-attacking
/stopcasting * Stop casting
/unqueue * Clear spell queue
/petattack * Pet attack
/petfollow * Pet follow
/petwait * Pet stay
/petaggressive * Set pet aggressive
/petdefensive * Set pet defensive
/petpassive * Set pet passive
/castpet Cast pet ability by name
/castsequence * Cast sequence (see below)
/equip * Equip item by name/ID
/equipmh * Equip main hand
/equipoh * Equip off-hand
/unshift * Cancel shapeshift form
/cancelaura Cancel buff/aura
/unbuff Alias for cancelaura
/runmacro Run macro by name
/use * Use item by name/ID
/cast * Cast spell by name
/stopmacro * Stop macro execution

Cast Sequence

#showtooltip
/castsequence reset=3 Fireball, Frostbolt, Arcane Explosion, Fire Blast
  • Dynamic icons/tooltips with range/mana/usable checks
  • Reset options: reset=#/mod/target/combat
  • Conditionals apply to entire sequence
#showtooltip
/castsequence [group:party/raid] reset=3/target Spell1, Spell2, Spell3
/castsequence reset=target/combat CasualSpell1, CasualSpell2

Conditionals Reference

Key Modifiers

Conditional Syntax Multi Noable Tests For
mod [mod]
[mod:ctrl/alt/shift]
* * Any mod key pressed
Specific mod key(s) pressed

Player Only

Conditional Syntax Multi Noable Tests For
cdgcd [cdgcd:"Name">X] * * Cooldown INCLUDING GCD
channeled [channeled] * Player channeling
channeltime [channeltime:<0.5] * Remaining channel time
checkchanneled [checkchanneled] Prevent recasting channel
combo [combo:>#3] * * Combo points
cooldown [cooldown:"Name"<X] * * Cooldown IGNORING GCD
druidmana [druidmana:>=X] * Druid mana in form
equipped [equipped:Daggers2] * * Item/type equipped
form [form:0/1/2] * * Shapeshift form
group [group:party/raid] * In group type
known [known:"Name">#2] * * Spell/talent known
mybuff [mybuff:"Name"<X] * * Player buff
mybuffcount [mybuffcount:>=X] * Total buff count
mydebuff [mydebuff:"Name"<X] * * Player debuff
myhp [myhp:<=50] * Player HP %
myhplost [myhplost:>=X] * Player HP lost
mylevel [mylevel:>=60] * Player level
mypower [mypower:>=50] * Player power %
mypowerlost [mypowerlost:>=X] * Player power lost
myrawhp [myrawhp:>=1000] * Player HP raw
myrawpower [myrawpower:>=500] * Player power raw
mhimbue [mhimbue:Flametongue] * Main hand imbue
ohimbue [ohimbue] * Off-hand imbue
onswingpending [onswingpending] * On-swing spell queued
pet [pet:Voidwalker] * * Pet summoned
queuedspell [queuedspell:X] * * Spell queued
reactive [reactive:Overpower] * * Reactive ability available
resting [resting] * In rest area
selfcasting [selfcasting] * Player casting/channeling
stance [stance:1/2/3] * * In stance #
stat [stat:str>=100] * Player stat check
stealth [stealth] * Stealth/Prowl
swingtimer [swingtimer:<15] * * Swing % elapsed
stimer [stimer:>80] * * Alias for swingtimer
swimming [swimming] * Aquatic form available
usable [usable:"Name"] * * Spell/item usable
zone [zone:"Ironforge"] * * In zone

Unit Based

Default @unitid is usually @target if not specified.

Conditional Syntax Multi Noable Tests For
alive [alive] * NOT dead/ghost
behind [behind] * Player behind target
buff [buff:"Name"<X] * * Unit buff
casting [casting:"Spell"] * * Unit casting spell
class [class:Warrior/Priest] * * Player class
combat [combat:target] * * Unit in combat
dead [dead] * Dead or ghost
debuff [debuff:"Name"<X] * * Unit debuff
distance [distance:<40] * * Distance in yards
exists [exists] * Unit exists
harm [harm] * Unit is enemy
help [help] * Unit is friendly
hp [hp:>=50] * Unit HP %
hplost [hplost:>=X] * Unit HP lost
immune [immune:fire] * * Immune to school/spell
inrange [inrange:"Name"] * * In spell range
insight [insight] * In line of sight
isnpc [isnpc] Is NPC
isplayer [isplayer] Is player
level [level:>=60] * Unit level
meleerange [meleerange] * In melee range
member [member] * In party OR raid
outrange [outrange:"Name"] Out of spell range
party [party] * In party
power [power:>=50] * Unit power %
powerlost [powerlost:>=X] * Unit power lost
powertype [powertype:mana/rage] * * Power type
raid [raid] * In raid
rawhp [rawhp:>=1000] * Unit HP raw
rawpower [rawpower:>=500] * Unit power raw
targeting [targeting:player] * * Unit targeting X
type [type:Undead] * * Creature type
@unitid [@mouseover] Valid unitid

UnitIDs

UnitID
player
target
pet
mouseover
partyN (N=1-4)
partypetN
raidN (N=1-40)
raidpetN
targettarget
playertarget
pettarget
partyNtarget
raidNtarget
targettargettarget
focus (requires pfUI)

Classes

Warrior, Paladin, Hunter, Shaman, Druid, Rogue, Mage, Warlock, Priest

Weapon Types

Type Slot
Axes, Axes2 Main/Off Hand
Bows Ranged
Crossbows Ranged
Daggers, Daggers2 Main/Off Hand
Fists, Fists2 Main/Off Hand
Guns Ranged
Maces, Maces2 Main/Off Hand
Polearms Main Hand
Shields Off Hand
Staves Main Hand
Swords, Swords2 Main/Off Hand
Thrown Ranged
Wands Ranged

Creature Types

Boss, Worldboss, Beast, Dragonkin, Demon, Elemental, Giant, Undead, Humanoid, Critter, Mechanical, Not specified, Totem, Non-combat Pet, Gas Cloud

Reactive Spells (TWoW)

Revenge, Overpower, Riposte, Lacerate, Baited Shot, Counterattack, Arcane Surge

Available Stats (stat conditional)

str/strength, agi/agility, stam/stamina, int/intellect, spi/spirit, ap/attackpower, rap/rangedattackpower, healing/healingpower, arcane_power, fire_power, frost_power, nature_power, shadow_power, armor, defense, arcane_res, fire_res, frost_res, nature_res, shadow_res


Supported Addons

Unit Frames

agUnitFrames, Blizzard, CT_RaidAssist, CT_UnitFrames, DiscordUnitFrames, FocusFrame, Grid, LunaUnitFrames, NotGrid, PerfectRaid, pfUI, sRaidFrames, UnitFramesImproved_Vanilla, XPerl

Action Bars

Blizzard, Bongos, Discord Action Bars, pfUI

Other

ClassicFocus/FocusFrame, SuperMacro, ShaguTweaks, SP_SwingTimer


Swing Timer Integration

Requires SP_SwingTimer.

How It Works: Checks what percentage of swing time has elapsed (not remaining).

Syntax:

[swingtimer:<15]   -- Less than 15% elapsed (early)
[swingtimer:>80]   -- More than 80% elapsed (late)
[stimer:<X]        -- Alias

Examples:

-- Cast Slam early in swing
#showtooltip Slam
/cast [swingtimer:<15] Slam

-- Heroic Strike late in swing
#showtooltip Heroic Strike
/cast [stimer:>70] Heroic Strike

-- Complex rotation
#showtooltip
/cast [swingtimer:<15] Slam
/cast [swingtimer:>80] Heroic Strike
/cast Bloodthirst

Understanding Percentage:

  • 0% = Swing just started
  • 15% = Early (optimal for Slam)
  • 50% = Half elapsed
  • 80% = Late (close to next swing)
  • 100% = About to swing

For 3.5s weapon:

  • <15 = less than 0.525s elapsed
  • >80 = more than 2.8s elapsed

HealComm Support

This addon uses SuperWoW's CastSpellByName which is incompatible with standard HealComm-1.0.

Solution: Use MarcelineVQ's updated LunaUnitFrames which includes SuperWoW support in HealComm-1.0.

Manual Update:

  1. Exit WoW
  2. Download MarcelineVQ's LunaUnitFrames
  3. Delete /Interface/AddOns/HealComm/libs/HealComm-1.0
  4. Copy /libs/HealComm-1.0 from LunaUnitFrames into /Interface/AddOns/HealComm/libs/

Original Addons & Authors

License

MIT