Shaman Macros
Auto attack
uses a loop to check if attack is set to auto-repeat.
/run for i=1,120 do if IsCurrentAction(i) then return end end CastSpellByName("Attack")
This one is decent enough but it is known to be unreliable if spammed.
/run if (not PlayerFrame.inCombat) then AttackTarget() end
This one is more reliable. but it requires auto attack to be found on the action bar.
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z);end;end;end
Earth Shock
Earth Shock rank 1, max rank if clearcasting
/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)")end
Far Sight
Spammable Far Sight
/run if CastingBarFrame.channeling then if n~=1 then CancelPlayerBuff(GetPlayerBuff(0,"HELPFUL")) CancelPlayerBuff(GetPlayerBuff(1,"HELPFUL")) n=1 else CastSpellByName("Far Sight") n=0 ;end; else CastSpellByName("Far Sight") end
Flame Shock
Flame Shock / Auto Attack
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z)end;end;end; CastSpellByName("Flame Shock") UIErrorsFrame:Hide()
Flametongue Weapon
Flametongue Weapon / Auto Attack
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z)end;end;end;hasMainHandEnchant =GetWeaponEnchantInfo()if not hasMainHandEnchant then CastSpellByName("Flametongue Weapon")end UIErrorsFrame:Hide()
Frost Shock
This does Frost Shock if not on cooldown else it does Purge
/run local s="Frost Shock";local i=nil;for j=1,180 do local n=GetSpellName(j,BOOKTYPE_SPELL);if n and strfind(n,s) then i=j;break;end end if i then if GetSpellCooldown(i,BOOKTYPE_SPELL)<1 then CastSpellByName(s)else CastSpellByName("Purge")end end
Frost Shock rank 1, max rank if clearcasting
/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("Frost Shock")else CastSpellByName("Frost Shock(Rank 1)")end
Frostbrand Weapon
Frostbrand Weapon / Auto Attack
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z)end;end;end;hasMainHandEnchant =GetWeaponEnchantInfo()if not hasMainHandEnchant then CastSpellByName("Frostbrand Weapon")end UIErrorsFrame:Hide()
Ghost Wolf
Cancel Ghost Wolf
/run local i=0 g=GetPlayerBuff while not(g(i) == -1)do if(strfind(GetPlayerBuffTexture(g(i)), "SpiritWolf"))then CancelPlayerBuff(g(i))end i=i+1 end
Cancel Ghost Wolf, cast Healing Wave on self
/run local i=0 g=GetPlayerBuff while not(g(i) == -1)do if(strfind(GetPlayerBuffTexture(g(i)), "SpiritWolf"))then CancelPlayerBuff(g(i))end i=i+1 end CastSpellByName("Healing Wave",1)
Healing Wave
Healing Wave on friendly target, else cast Healing Wave on you
/run if UnitIsFriend("player", "target") then CastSpellByName("Healing Wave"); else CastSpellByName("Healing Wave", 1); end
Healing Wave on mouse focused target
/run i=(GetMouseFocus().unit) if i then CastSpellByName("Healing Wave") SpellTargetUnit(i) else CastSpellByName("Healing Wave") end
Lightning Shield
Does Lightning Shield if the buff is missing
/run local i,x=1,0 while UnitBuff("player",i) do if UnitBuff("player",i)=="Interface\\Icons\\Spell_Nature_LightningShield" then x=1 end i=i+1 end if x==0 then CastSpellByName("Lightning Shield")end
Nature's Swiftness
Nature's Swiftness/Healing wave
/run local x=0;for i=1,90 do if IsCurrentAction(i) then x=1 end end if x==0 then CastSpellByName("Nature's Swiftness");SpellStopCasting();CastSpellByName("Healing wave") end
Rockbiter Weapon
Rockbiter Weapon / Auto Attack
/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z)end;end;end;hasMainHandEnchant =GetWeaponEnchantInfo()if not hasMainHandEnchant then CastSpellByName("Rockbiter Weapon")end UIErrorsFrame:Hide()
Water Shield
Buff Water Shield if missing<syntaxhighlight lang="lua"> /run local i,x=1,0 while UnitBuff("player",i) do if UnitBuff("player",i)=="Interface\\Icons\\Ability_Shaman_WaterShield" then x=1 end i=i+1 end if x==0 then CastSpellByName("Water Shield")end </syntaxhighlight>
Weapon Oil
Enchant Brilliant Mana Oil on weapon
/run for b=0,4 do for s=1,18 do local i=GetContainerItemLink if not(i(b,s)==nil)then if strfind(i(b,s), "Brilliant Mana Oil")then UseContainerItem(b,s)PickupInventoryItem(16)ReplaceEnchant()ClearCursor()end end end end
Enchant Brilliant Wizard Oil on weapon
/run for b=0,4 do for s=1,18 do local i=GetContainerItemLink if not(i(b,s)==nil)then if strfind(i(b,s), "Brilliant Wizard Oil")then UseContainerItem(b,s)PickupInventoryItem(16)ReplaceEnchant()end end end end