Table of Contents
Conditionals Reference
All conditionals support negation with no prefix unless noted. Some have semantic opposites: help/harm, alive/dead, isplayer/isnpc, inrange/outrange.
Table columns:
- Description — what the conditional checks
- No — supports
noprefix negation - Multi — supports multi-value OR (
/), AND (&), or comparison operators (>,<,>=,<=,=,~=) - Addon — addon required or recommended
Player Conditionals (@player)
These always evaluate against the player. Cannot be redirected with @unit.
| Conditional | Description | No | Multi | Example | Addon |
|---|---|---|---|---|---|
bg |
Player is in an active battleground | ✅ | — | [bg] [nobg] |
|
button |
Button that invoked the action (1=Left, 2=Right, 3=Middle, 4/5=extra; bare = invoked by a click) | ✅ | ✅ | [button:2] [button:1/2] [nobutton] |
|
cdgcd |
Spell/item CD remaining (includes GCD) | ✅ | ✅ | [cdgcd:Sprint>0] |
|
channeled |
Player is channeling | ✅ | ✅ | [channeled] [channeled:Arcane_Missiles] |
|
checkcasting |
True if NOT casting (specific spell) | — | ✅ | [checkcasting] [checkcasting:Frostbolt] |
|
checkchanneled |
True if NOT channeling (specific spell) | — | ✅ | [checkchanneled] [checkchanneled:Evocation] |
|
combat |
In combat (player default, or unit) | ✅ | ✅ | [combat] [combat:target] |
|
combo |
Combo points | ✅ | ✅ | [combo:>=4] |
|
cooldown |
Spell/item CD remaining (ignores GCD) | ✅ | ✅ | [cooldown:Sprint<5] |
|
druidmana |
Druid mana while shapeshifted | — | ✅ | [druidmana:>=500] |
|
equipped |
Item or weapon type equipped | ✅ | ✅ | [equipped:Daggers/Swords] |
|
equipset |
Saved equipment set is equipped | ✅ | ✅ | [equipset:Raid] [noequipset:PvP] [equipset:Raid/Farm] |
|
focus |
A focus is set (/focus, FOCUSTARGET keybind, or pfUI) |
✅ | — | [focus] [nofocus] |
|
form / stance |
Shapeshift form or stance index | ✅ | ✅ | [form:1/3] [stance:2] |
|
gcd |
GCD is active / time remaining | ✅ | ✅ | [gcd] [gcd:<1] |
|
group |
Player is in group type | ✅ | ✅ | [group:party/raid] |
|
hastarget |
Player has a target | — | — | [hastarget] |
|
inbag |
Item exists in bags (with optional count) | ✅ | ✅ | [inbag:Hearthstone] [noinbag:Soul_Shard] [inbag:Soul_Shard<12] |
|
incominghit |
Incoming attack type/timing | ✅ | ✅ | [incominghit:crushing] [noincominghit:crit] |
|
indoors |
Player is under a WMO roof (building, cave, instance interior) | ✅ | — | [indoors] [noindoors] |
|
keydown |
Key is currently held down | ✅ | ✅ | [keydown:f] [keydown:space/enter] |
|
known |
Spell/talent known (with rank) | ✅ | ✅ | [known:Berserk] [known:Frostbolt>#2] |
|
lastswing |
Player melee swing type/timing | ✅ | ✅ | [lastswing:dodge] [lastswing:<2] |
|
locked |
Spell-school interrupt lockout (Counterspell/Kick) | ✅ | ✅ | [locked] [locked:frost] [nolocked:fire/frost] |
|
mhenchant |
Main hand temp enchant by ID/name | ✅ | — | [mhenchant:Deadly_Poison] [mhenchant:2823/2824] [nomhenchant] |
|
mhimbue |
Main hand has temporary imbue | ✅ | ✅ | [mhimbue:Instant_Poison<300] [mhimbue:>#5] |
|
mod |
Modifier key held (ctrl/alt/shift, side-specific lctrl/rctrl/lalt/ralt/lshift/rshift; bare = any) |
✅ | ✅ | [mod:alt/ctrl] [mod:lshift] [nomod:ralt] |
|
mounted |
Player is mounted | ✅ | — | [mounted] [nomounted] |
|
moving |
Moving / speed % | ✅ | ✅ | [moving] [moving:>100&<200] |
|
mybuff |
Player has buff (with time/stacks) | ✅ | ✅ | [mybuff:Thorns<5] [nomybuff:MotW/GotW] |
|
mybuffcapped |
Player buff bar full (32) | ✅ | — | [nomybuffcapped] |
|
mybuffcount |
Player buff slot count (32 max) | ✅ | ✅ | [mybuffcount:>15] [nomybuffcount:>28] |
|
mycc |
Player has CC effect | ✅ | ✅ | [mycc:stun/silence] [nomycc] |
|
mydebuff |
Player has debuff (with time/stacks) | ✅ | ✅ | [mydebuff:Curse_of_Agony] |
|
mydebuffcapped |
Player debuff bar full (16) | ✅ | — | [nomydebuffcapped] |
|
myenergy |
Player energy % (specific slot) | — | ✅ | [myenergy:>50] |
|
myhp |
Player HP % | — | ✅ | [myhp:<30] [myhp:>20&<50] |
|
myhplost |
Player HP deficit (max - current) | — | ✅ | [myhplost:>500] |
|
mylevel |
Player level | — | ✅ | [mylevel:=60] |
|
mymana |
Player mana % (specific slot, cross-form) | — | ✅ | [mymana:>30] |
|
mypower |
Player mana/rage/energy % | — | ✅ | [mypower:>50] |
|
mypowerlost |
Player power deficit | — | ✅ | [mypowerlost:>200] |
|
myrage |
Player rage % (specific slot, cross-form) | — | ✅ | [myrage:>=50] |
|
myrawhp |
Player raw HP value | — | ✅ | [myrawhp:>1000] |
|
myrawpower |
Player raw power value | — | ✅ | [myrawpower:>=40] |
|
myspellhaste |
Player spell haste % (0 = unhasted, negative = slowed) | — | ✅ | [myspellhaste:>10] [myspellhaste:<0] |
|
nextslamclip / nonextslamclip |
Instant now will/won't cause next Slam to clip | ✅ | — | [nonextslamclip] |
SP_SwingTimer |
rangedclip / norangedclip |
Action cast will/won't clip ranged auto-shot | ✅ | — | [norangedclip] |
SP_SwingTimer |
rangedtimer |
Ranged swing timer % elapsed | ✅ | ✅ | [rangedtimer:>80] |
SP_SwingTimer |
notarget |
Player has no target | — | — | [notarget] |
|
ohenchant |
Off hand temp enchant by ID/name | ✅ | — | [ohenchant:Crippling_Poison] [noohenchant] |
|
ohimbue |
Off hand has temporary imbue | ✅ | ✅ | [noohimbue] [ohimbue:Crippling_Poison] |
|
onswingpending |
On-swing spell pending | ✅ | — | [onswingpending] |
|
outdoors |
Player is outdoors (open sky / not inside a WMO interior) | ✅ | — | [outdoors] [nooutdoors] |
|
pet |
Has active pet (with family) | ✅ | ✅ | [pet] [pet:Cat/Wolf] |
|
pethappiness |
Hunter pet happiness (unhappy/content/happy, or 1-3) |
✅ | ✅ | [pethappiness:happy] [pethappiness:content/happy] |
|
queuedspell |
Spell is queued | ✅ | ✅ | [queuedspell] [queuedspell:Fireball] |
|
reactive |
Reactive ability available (on bar) | ✅ | ✅ | [reactive:Overpower] |
|
resting |
In rest area | ✅ | — | [resting] |
|
rooted |
Player is rooted | ✅ | — | [rooted] [norooted] |
|
rtimer |
Alias for rangedtimer | ✅ | ✅ | [rtimer:<15] |
SP_SwingTimer |
selfcasting |
Player is casting or channeling | ✅ | ✅ | [selfcasting] [noselfcasting:Hearthstone] |
|
set |
Equipped piece count of a named item set (name or ItemSet ID) | ✅ | ✅ | [set:Judgement_Battlegear>=3] [set:Nightslayer] |
|
slamclip / noslamclip |
Slam now will/won't clip auto-attack | ✅ | — | [noslamclip] |
SP_SwingTimer |
spellcasttime |
Spell cast time from tooltip (real-time) | ✅ | ✅ | [spellcasttime:>1.5] [spellcasttime:Frostbolt<2] |
|
standing / sitting |
Player is standing / seated (sit, chair, sleep, kneel) | — | — | [standing] [sitting] |
|
stat |
Player stat value | ✅ | ✅ | [stat:agi>100] [stat:ap>1000] |
|
stealth |
In stealth (Rogue/Druid) | ✅ | — | [stealth] |
|
stimer |
Alias for swingtimer | ✅ | ✅ | [stimer:<15] |
SP_SwingTimer |
swimming |
Swimming (Druid only) | ✅ | — | [swimming] |
|
swingtimer |
Swing timer % elapsed | ✅ | ✅ | [swingtimer:>80] |
SP_SwingTimer |
totem |
Player's own totem is out, by element or name (with time left) | ✅ | ✅ | [totem:fire] [totem:Searing_Totem<5] [nototem:water] |
|
usable |
Spell/item is usable now | ✅ | ✅ | [usable:Overpower] |
|
zone |
Current zone name | ✅ | ✅ | [zone:Ironforge/Stormwind] |
Note on
myspellhaste: the value is a percentage of cast-speed change, not a multiplier —0unhasted, positive when casts are sped up (Berserking, Mind Quickening Gem), negative while slowed (Curse of Tongues). A signed amount can't be written, so test for being slowed at all with[myspellhaste:<0]rather than a specific negative threshold.
Note on
button: this is the button that invoked the action, not one held down as a modifier — the same meaning it has on retail. A keybind press activates through the left-click path and so counts as button 1:[button:1]passes for a keybind and a left-click alike, while[button:2] Rejuvenation; Regrowthcasts Regrowth from a keybind and Rejuvenation only from an actual right-click. Because the answer is a property of the activation rather than a live state, the icon does not change as you hold a mouse button — it shows whatever button 1 resolves to. For "hold something to change the spell", use[mod:]. Bare[button]/[nobutton]are an extension retail has no equivalent for: they ask whether a click drove the action at all, making[nobutton]the "activated by a keybind" test.
Note on
totem: an empty slot counts as having no time left, the same way a missing buff does for[mybuff:X<5]. So[totem:Searing_Totem<5]is true both while the totem is expiring and while it is absent, which makes/cast [totem:Searing_Totem<5] Searing Totema complete recast macro on its own — no[nototem]needed. Bare[totem]takes the action as its argument (again like[mybuff]), so/cast [nototem] Searing Totemis the drop-if-missing form. A totem is either up or it isn't, so stack comparisons read1when out:[totem:fire#1]. Only your own totems are tracked — another shaman's are invisible — and a totem that is killed can read as still up for up to a quarter second, where one that expires on its timer is exact. See Reference Tables for the slots.
Target Conditionals (default @target)
These default to checking the current target. Most can be redirected with @unit (e.g., [@focus,hp:<30], [@mouseover,exists]).
Note on
mana/rage/energyfor other units: these read a specific power slot rather than the unit's primary power, so they work regardless of form (a druid's mana in Cat Form, etc.). For units other than the player, vanilla only broadcasts the unit's active power, so a non-primary slot may read stale/empty — a unit with no such pool fails the check. The reliable case is reading the slot that is that unit's primary power (e.g.[@target,mana:<15]on a caster to catch it near OOM).
Note on
cc(andmycc): each CC type is one exact 1.12 DBC mechanic, so[cc:stun]is Stun alone — Gouge isknockoutand Sap issap, both their own types.stunused to cover all three; write[cc:stun/knockout/sap]for that, or use bare[cc], which matches any loss-of-control mechanic and so covers all three already. Naming a mechanic that isn't crowd control at all (bleed,disarm,interrupt) still works as a plain "does this effect exist on the unit" test, it just isn't part of what bare[cc]looks at. See Reference Tables for every type and which ones[immune]accepts.
| Conditional | Description | No | Multi | Example | Addon |
|---|---|---|---|---|---|
alive |
Unit is alive | ✅ | — | [alive] |
|
behind |
Behind target / count behind | ✅ | ✅ | [behind] [behind:>=2] [behind:meleerange>1] |
UnitXP_SP3 |
buff |
Target has buff (with time/stacks/rank) | ✅ | ✅ | [buff:Shield>#3] [nobuff:Renew/Rejuv] [buff:Regrowth(Rank_9)] |
|
buffcapped |
Target buff bar full (32) | ✅ | — | [nobuffcapped] |
|
casting |
Target is casting (specific spell) | ✅ | ✅ | [casting] [casting:Heal] |
|
casttime |
Target cast time remaining (seconds) | ✅ | ✅ | [casttime:<0.5] |
|
cc |
Target has CC effect | ✅ | ✅ | [cc:stun/fear] [nocc:polymorph] |
|
channeltime |
Target channel time remaining (seconds) | ✅ | ✅ | [channeltime:<0.5] |
|
class |
Target class (players only) | ✅ | ✅ | [class:Warrior/Priest] |
|
curse |
Target has a Curse debuff | ✅ | — | [curse] [@focus,curse] |
|
cursive |
GUID-based debuff tracking (time remaining) | ✅ | ✅ | [cursive:Rake<3] [nocursive:Rip] |
Cursive |
dead |
Unit is dead | ✅ | — | [dead] |
|
debuff |
Target has debuff (with time/stacks/rank) | ✅ | ✅ | [debuff:Moonfire<4] [nodebuff:Rake] [debuff:Moonfire(Rank_10)] |
|
debuffcapped |
Target debuff bar full | ✅ | — | [nodebuffcapped] |
|
disease |
Target has a Disease debuff | ✅ | — | [disease] [@party1,disease] |
|
dispellable |
Target has any dispellable debuff | ✅ | — | [dispellable] |
|
dispellablebuff |
Target has any dispellable buff (offensive) | ✅ | — | [harm,dispellablebuff] |
|
distance |
Distance in yards / count within range | ✅ | ✅ | [distance:<40] [distance:30>1] [distance:30:facing>1] |
UnitXP_SP3 |
energy |
Target energy % (specific slot) | — | ✅ | [@target,energy:<30] |
|
exists |
Unit exists | ✅ | — | [@mouseover,exists] |
|
facing |
Facing target / count facing | ✅ | ✅ | [facing] [facing:>2] [facing:meleerange>1] |
UnitXP_SP3 |
harm |
Unit is hostile | ✅ | — | [harm] |
|
help |
Unit is friendly | ✅ | — | [help] |
|
hp |
Target HP % | — | ✅ | [hp:<20] [hp:>30&<70] |
|
hplost |
Target HP deficit (max - current) | — | ✅ | [hplost:>1000] |
|
immune |
Target is immune (school or CC type) | ✅ | ✅ | [noimmune:fire] [noimmune:stun] |
|
inrange |
In spell range / count in range | ✅ | ✅ | [inrange:Charge] [inrange:Multi-Shot>1] |
UnitXP_SP3 (count) |
insight |
In line of sight / count in LoS | ✅ | ✅ | [insight] [insight:>0] |
UnitXP_SP3 |
isnpc |
Unit is an NPC | ✅ | — | [isnpc] |
|
isplayer |
Unit is a player | ✅ | — | [isplayer] |
|
istank |
Unit is marked as tank | ✅ | — | [istank] [@focus,istank] |
pfUI |
level |
Target level (skull = 63) | — | ✅ | [level:>60] |
|
magic |
Target has a Magic debuff | ✅ | — | [magic] [@focus,magic] |
|
magicbuff |
Target has a dispellable Magic buff (offensive) | ✅ | — | [harm,magicbuff] |
|
mana |
Target mana % (specific slot) | — | ✅ | [@target,mana:<15] |
|
meleerange |
In melee range / count in melee | ✅ | ✅ | [meleerange] [meleerange:>1] [meleerange:facing>1] |
UnitXP_SP3 |
member |
Target is in party or raid | ✅ | — | [member] |
|
multiscan |
Scan enemies by priority, soft-cast | — | ✅ | [multiscan:nearest] [multiscan:skull] |
UnitXP_SP3 |
mytag |
Target is tapped by you | ✅ | — | [mytag] [nomytag] |
|
name |
Exact name match (case-insensitive) | ✅ | ✅ | [name:Onyxia] [noname:Critter/Dummy] |
|
othertag |
Target is tapped by someone else | ✅ | — | [othertag] [noothertag] |
|
outrange |
Out of spell range / count out | ✅ | ✅ | [outrange:Charge] [outrange:Charge>0] |
UnitXP_SP3 (count) |
party |
Unit is in your party | ✅ | ✅ | [party] [party:focus] |
|
playercontrolled |
Unit is player-controlled (player, pet, mind-controlled) | ✅ | — | [playercontrolled] [noplayercontrolled] |
|
poison |
Target has a Poison debuff | ✅ | — | [poison] [@party1,poison] |
|
power |
Target mana/rage/energy % | — | ✅ | [power:<30] |
|
powerlost |
Target power deficit | — | ✅ | [powerlost:>100] |
|
powertype |
Target power type | ✅ | ✅ | [powertype:mana/rage] |
|
rage |
Target rage % (specific slot) | — | ✅ | [@target,rage:<10] |
|
raid |
Unit is in your raid | ✅ | ✅ | [raid] [raid:mouseover] |
|
rawhp |
Target raw HP value | — | ✅ | [rawhp:>5000] |
|
rawpower |
Target raw power value | — | ✅ | [rawpower:>500] |
|
resisted |
Last spell was resisted | ✅ | ✅ | [resisted] [resisted:full/partial] |
|
tag |
Target is tapped by anyone | ✅ | — | [tag] [notag] |
|
targeting |
Unit is targeting you or a tank | ✅ | ✅ | [targeting:player] [notargeting:tank] |
pfUI (for tank) |
threat |
Threat % on target (100 = pull) | ✅ | ✅ | [threat:>80] |
TWThreat |
tte |
Time to execute threshold (seconds) | ✅ | ✅ | [tte:<5] |
TimeToKill |
ttk |
Time to kill target (seconds) | ✅ | ✅ | [ttk:<10] |
TimeToKill |
type |
Creature type | ✅ | ✅ | [type:Undead/Beast] |
Short Aliases
Shorter spellings for the most-used conditionals, to fit more into the 261-character macro limit. An alias behaves exactly like its full form — same arguments, same multi-value logic — and negates the same way ([nocd:Sprint] is [nocooldown:Sprint]).
| Alias | Full form | Alias | Full form |
|---|---|---|---|
cd |
cooldown |
osp |
onswingpending |
chan |
channeled |
queued |
queuedspell |
chtime |
channeltime |
react |
reactive |
ct |
casttime |
scast |
selfcasting |
dist |
distance |
sct |
spellcasttime |
eq |
equipped |
stl |
stealth |
ihit |
incominghit |
swim |
swimming |
los |
insight |
tgt |
targeting |
melee |
meleerange |
ic |
combat |
mv |
moving |
ooc |
nocombat |
ic / ooc are the one pair that isn't a no prefix: [ic] is [combat] and [ooc] is [nocombat], so there is no noic or noooc. stimer and rtimer are the same idea for swingtimer / rangedtimer (listed in the tables above with their addon requirement).
Extended Unit Tokens (Nampower v2.41+)
With Nampower v2.41+, all [@unit] redirects support additional token formats beyond standard tokens:
| Token format | Resolves to | Example |
|---|---|---|
mark1–mark8 |
Unit bearing that raid marker | [@mark1,harm] |
<base>owner |
Owner/summoner of <base> |
[@targetowner,help] — cast on target's owner |
<base>target |
Target of <base> |
[@mouseovertarget,hp:<30] |
<base>pet |
Pet of <base> |
[@party1pet,exists] |
<base> can be any standard token (target, mouseover, party1–party4, raid1–raid40…), a GUID string, or a mark token (mark1–mark8). Suffix matching is case-insensitive.
/cast [@targetowner,help] Rejuvenation -- Heal the owner of your target (e.g. a pet)
/cast [@mark1target,harm] Polymorph -- Cast on whatever the skull-marked unit is targeting
/cast [@party1pet,exists] Mend Pet -- Heal party1's pet if it exists
Multi-Unit Count Mode
Range and position conditionals (meleerange, behind, facing, insight, inrange, outrange, distance) support counting enemies when given an operator + number. Requires UnitXP_SP3. Operators: >, <, >=, <=, =, ~=
/cast [meleerange:>1] Whirlwind -- AoE if 2+ enemies in melee
/cast [behind:>=2] Blade Flurry -- Cleave if behind 2+ enemies
/cast [facing:>2] Cone of Cold -- Frontal AoE if facing 3+ enemies
/cast [inrange:Multi-Shot>1] Multi-Shot -- AoE if 2+ in spell range
/cast [insight:>0] Arcane Explosion -- AoE if any enemy in LoS
/cast [distance:30>2] Volley -- AoE if 3+ enemies within 30 yards
Compound Count Mode (Filters)
Count mode conditionals can combine checks using a filter qualifier so that each enemy is tested against multiple conditions simultaneously. Without filters, separate conditionals like [facing:>1 meleerange:>1] count independently — an enemy could satisfy one check but not the other, giving false positives.
Syntax: [conditional:filter>N] or [conditional:distance:filter>N]
Available Filters
| Filter | Effect |
|---|---|
facing |
Enemy is in front of the player |
behind |
Player is behind the enemy |
meleerange |
Enemy is in melee range |
Conditionals Supporting Filters
| Conditional | Filter syntax | Meaning |
|---|---|---|
meleerange |
[meleerange:facing>N] |
In melee range AND facing |
meleerange |
[meleerange:behind>N] |
In melee range AND behind |
nomeleerange |
[nomeleerange:facing>N] |
NOT in melee range AND facing |
facing |
[facing:meleerange>N] |
Facing AND in melee range |
facing |
[facing:10>N] |
Facing AND within 10 yards |
nofacing |
[nofacing:meleerange>N] |
NOT facing AND in melee range |
behind |
[behind:meleerange>N] |
Behind AND in melee range |
behind |
[behind:10>N] |
Behind AND within 10 yards |
nobehind |
[nobehind:meleerange>N] |
NOT behind AND in melee range |
distance |
[distance:30>N] |
Within 30 yards (count mode, no filter) |
distance |
[distance:30:facing>N] |
Within 30 yards AND facing |
distance |
[distance:30:behind>N] |
Within 30 yards AND behind |
nodistance |
[nodistance:30:facing>N] |
NOT within 30 yards AND facing |
For facing, nofacing, behind, and nobehind, a number as the filter name sets a distance threshold (in yards) instead of a named filter.
For distance and nodistance, the distance threshold and filter are separated by a colon: distance:YARDS:FILTER>COUNT.
Examples
-- Cleave only if 2+ enemies in melee range AND in front of you
/cast [meleerange:facing>1] Cleave
-- Cancel Blade Flurry if fewer than 2 enemies within 10 yards
/cancelaura [distance:10<2] Blade Flurry
-- AoE if 3+ enemies within 30 yards and facing
/cast [distance:30:facing>2] Cone of Cold
-- Whirlwind if 2+ enemies in melee, even those behind you
/cast [meleerange:>1] Whirlwind
-- Only Backstab if behind 1+ enemy in melee range
/cast [behind:meleerange>0] Backstab
Multiscan (Target Scanning)
Scans enemies and soft-casts without changing your target. Requires UnitXP_SP3. Scanned targets must be in combat with player (exceptions: current target and @unit specified in macro).
| Priority | Description |
|---|---|
nearest |
Closest enemy |
farthest |
Farthest enemy |
highesthp / lowesthp |
Highest/lowest HP % |
highestrawhp / lowestrawhp |
Highest/lowest raw HP |
markorder |
First mark in kill order (skull→cross→square→moon→triangle→diamond→circle→star) |
skull cross square moon triangle diamond circle star |
Specific raid mark |
/cast [multiscan:nearest,nodebuff:Rake] Rake
/cast [multiscan:skull,harm] Eviscerate
/cast [multiscan:nearest,notargeting:tank,harm] Taunt
Modifiers
Modifiers are special keywords used inside [...] that change how the action is performed rather than gating execution. They are evaluated after the spell is cast or item is used.
| Modifier | Description | Example |
|---|---|---|
mouseuse |
Auto-clicks the AOE targeting circle at the current cursor position | /cast [mouseuse] Flamestrike |
cursor |
Places a ground-target spell/item at the cursor (no reticle click) | /cast [cursor] Blizzard |
mouseuse
When a spell or item brings up the ground-targeting circle (e.g., Flamestrike, Blizzard, Stratholme Holy Water), [mouseuse] automatically places it at the mouse cursor position. If the spell fails to cast (cooldown, missing item, etc.), no click occurs.
/cast [mouseuse] Flamestrike -- Cast Flamestrike at cursor
/use [mouseuse] Stratholme Holy Water -- Use Holy Water at cursor
/cast [mouseuse,mod:shift] Blizzard; Frostbolt -- Shift: Blizzard at cursor, otherwise Frostbolt
cursor
[cursor] places a ground-target spell or on-use item at the cursor via ClassicAPI's engine-level placement (C_Spell.CastAtCursor / C_Item.UseAtCursor) — no reticle click is simulated, so there's no auto-attack side effect like [mouseuse] can have. For non-ground actions it falls back to a normal cast/use. Requires ClassicAPI.
/cast [cursor] Blizzard -- Cast Blizzard at cursor
/use [cursor] Iron Grenade -- Throw Iron Grenade at cursor
/cast [cursor,mod:shift] Flamestrike; Fireball -- Shift: Flamestrike at cursor, otherwise Fireball