Startattack + Swipe
Makes the bear AoE key also ensure melee auto-attack is running.
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z);end;end;end;
/cast SwipeBrowse what already exists, or build exactly what you need.
Makes the bear AoE key also ensure melee auto-attack is running.
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z);end;end;end;
/cast SwipeTrue 1.12-style mouseover healing without permanently changing targets.
/run local c=CastSpellByName s="Healing Touch" if UnitExists("mouseover") and UnitReaction("mouseover","player")>4 then TargetUnit("mouseover") c(s) TargetLastTarget() else c(s) endCasts Healing Touch on yourself through the legacy target cursor.
/cast Healing Touch
/script if SpellIsTargeting() then SpellTargetUnit("player") endMarks your target and sends the pet. The useful pattern here is /script PetAttack(): you can pair that pet command with another opener instead of Hunter's Mark if you prefer.
/cast Hunter's Mark
/script PetAttack()One button starts melee when close or starts Auto Shot at range without toggling it off.
/script if GetUnitName("target")==nil then TargetNearestEnemy() end
/run if CheckInteractDistance("target",3) and (not PlayerFrame.inCombat) then AttackTarget() elseif not IsAutoRepeatAction(3) then CastSpellByName("Auto Shot") endUses the appropriate slow based on melee versus ranged distance.
/run if CheckInteractDistance("target",3) then CastSpellByName("Wing Clip") else CastSpellByName("Concussive Shot") endSends your active pet at your current target.
/script PetAttack()Pulls the pet back before Feign Death so the pet is less likely to keep the situation alive.
/script PetFollow()
/cast Feign DeathStops the pet from immediately breaking your Scatter Shot control.
/script PetFollow()
/cast Scatter ShotClassic-era emergency Counterspell.
/script SpellStopCasting()
/cast CounterspellPrevents repeated presses from accidentally turning Shoot off.
/run for i=1,120 do if IsAutoRepeatAction(i) then return end end CastSpellByName("Shoot")Crowd-controls a hovered unit without giving up the main target.
/run c=CastSpellByName s="Polymorph(Rank 4)" if UnitExists("mouseover") then TargetUnit("mouseover") c(s) TargetLastTarget() else c(s) endCasts Arcane Intellect and targets yourself if a target cursor appears.
/cast Arcane Intellect
/script if SpellIsTargeting() then SpellTargetUnit("player") endFast emergency self-save without changing targets.
/cast Lay on Hands
/script if SpellIsTargeting() then SpellTargetUnit("player") endCasts Divine Shield, then finds and uses your Hearthstone. Because Divine Shield triggers the global cooldown, press/spam the macro again to start the Hearthstone cast. A full 10-second Hearthstone requires the 12-second rank of Divine Shield.
/cast Divine Shield
/run for b=0,4 do for s=1,GetContainerNumSlots(b) do local l=GetContainerItemLink(b,s) if l and strfind(l,"Hearthstone") then UseContainerItem(b,s) end end endHeals the friendly unit under your mouse without permanently changing your target. If there is no valid friendly mouseover, it casts Holy Light normally.
/run local c=CastSpellByName s="Holy Light" if UnitExists("mouseover") and UnitReaction("mouseover","player")>4 then TargetUnit("mouseover") c(s) TargetLastTarget() else c(s) endCasts Blessing of Protection on yourself through the 1.12 targeting API.
/cast Blessing of Protection
/script if SpellIsTargeting() then SpellTargetUnit("player") endTargets the player if Power Word: Shield opens a spell target cursor.
/cast Power Word: Shield
/script if SpellIsTargeting() then SpellTargetUnit("player") endLets a healer dispel a friendly mouseover while keeping the enemy/tank targeted.
/run local c=CastSpellByName s="Dispel Magic" if UnitExists("mouseover") and UnitReaction("mouseover","player")>4 then TargetUnit("mouseover") c(s) TargetLastTarget() else c(s) endUseful 1.12 healing behavior that the current library does not provide cleanly.
/run local c=CastSpellByName s="Flash Heal" if UnitExists("mouseover") and UnitReaction("mouseover","player")>4 then TargetUnit("mouseover") c(s) TargetLastTarget() else c(s) endStops your current cast before using Silence.
/script SpellStopCasting()
/cast SilenceStops your current cast/channel and attempts Kick.
/script SpellStopCasting()
/cast KickUses Vanish when ready and an emergency potion when Vanish is unavailable.
/run local VANISH_ID=GetSpellId("Vanish") if GetSpellCooldown(VANISH_ID,BOOKTYPE_SPELL)==0 then CastSpellByName("Vanish") else UseItem("Limited Invulnerability Potion") endSuperMacro version under the normal 255-character limit. Replace Instant Poison VI with the poison you carry. First press coats main hand; second press coats off hand. Be idle and unmounted while applying poison. Requires SuperMacro for FindItem().
/run b,s=FindItem("Instant Poison VI")if s then UseContainerItem(b,s)PickupInventoryItem(tmpPoisonSide and 17 or 16)ReplaceEnchant()ClearCursor()tmpPoisonSide=not tmpPoisonSide endStarts melee auto-attack and then uses Sinister Strike. That matters when you are energy-starved or the ability cannot fire yet: your white swings still begin instead of the key doing nothing.
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z);end;end;end;
/cast Sinister StrikeStops a cast before Earth Shock, the old-school interrupt button.
/script SpellStopCasting()
/cast Earth ShockUses cheap Rank 1 for interrupt duty, but spends the clearcasting proc on max rank.
/run local i,x=1,0 while UnitBuff("player",i) do if UnitBuff("player",i)=="Interface\Icons\Spell_Shadow_ManaBurn" then x=1 end i=i+1 end if x==1 then CastSpellByName("Earth Shock")else CastSpellByName("Earth Shock(Rank 1)")endCycles common group totems through one button on successive presses.
/run s={"Windfury Totem","Strength of Earth Totem","Mana Spring Totem"} if q==nil then q=0 end q=q+1 if q>getn(s) then q=1 end CastSpellByName(s[q])A real emergency-heal button rather than a single-spell placeholder.
/run local c=CastSpellByName s="Healing Wave" SpellStopCasting() c("Nature's Swiftness") if UnitExists("mouseover") and UnitReaction("mouseover","player")>4 then TargetUnit("mouseover") c(s) TargetLastTarget() else c(s) endCasts Healing Wave on yourself using the legacy targeting API.
/cast Healing Wave
/script if SpellIsTargeting() then SpellTargetUnit("player") endSends your demon at the current target.
/script PetAttack()Pulls your demon back to you.
/script PetFollow()Sends your demon immediately, then casts Corruption. Corruption is just the example opener: replace it with the spell you normally use to start a pull.
/script PetAttack()
/cast CorruptionStarts your melee auto attack without relying on modern /startattack.
/script if not PlayerFrame.inCombat then AttackTarget() endBetter replacement for a plain Mortal Strike macro.
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z);end;end;end;
/cast Mortal StrikeAdds auto-attack and rage-aware HS queuing to a core Fury button.
/cast Bloodthirst
/run local autoattack_bar_id=36 if not IsCurrentAction(autoattack_bar_id) then UseAction(autoattack_bar_id) end
/run if UnitMana("player")>=47 then CastSpellByName("Heroic Strike") else CastSpellByName("Bloodthirst") endBetter replacement for a plain Shield Slam macro.
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z);end;end;end;
/cast Shield SlamVanilla 1.12 uses the older Craft API for Enchanting. Replace FULL ENCHANT NAME with the exact enchant name; this starts the enchant and puts it on your cursor so you can click the destination item.
/run local e="FULL ENCHANT NAME" for i=1,GetNumCrafts() do if GetCraftInfo(i)==e then DoCraft(i) return end endSets the camera distance factor. Client/server configuration can cap the result.
/console cameraDistanceMaxFactor 4Reloads the user interface.
/script ReloadUI()Any class can use this snippet. In Vanilla 1.12, slots 13 and 14 are your two equipped trinkets. Add these lines to a burst/cooldown macro to attempt both on-use trinkets without hard-coding item names.
/run UseInventoryItem(13)
/run UseInventoryItem(14)