Druid Caster Macros

From Turtle WoW Wiki

Aquatic / Travel Form

/run UIErrorsFrame:UnregisterEvent"UI_ERROR_MESSAGE" for i = 2, GetNumShapeshiftForms(), 2 do local _, _, active = GetShapeshiftFormInfo(i) if not active then CastShapeshiftForm(i) end if i == 2 then UIErrorsFrame:RegisterEvent"UI_ERROR_MESSAGE" end end

Spammable Druid forms

/run for i=1,5 do if not ({GetShapeshiftFormInfo(2)})[3] then if ({GetShapeshiftFormInfo(i)})[3] then CastShapeshiftForm(i) end CastShapeshiftForm(2) end end

Shapeshift Forms go from left to right: 1 is Bear, 2 is Cat, etc

Barkskin + cancel buff

/run local i=0 g=GetPlayerBuff while not (g(i) == -1) do if(strfind(GetPlayerBuffTexture(g(i)),"Spell_Nature_StoneClawTotem"))then CancelPlayerBuff(g(i)) end i = i + 1; end; CastSpellByName("Barkskin")

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

Unshift

Shift out of any Druid form

/run for i=1, GetNumShapeshiftForms() do if ({GetShapeshiftFormInfo(i)})[3] then CastShapeshiftForm(i) end end

Cure Poison

Cure Poison from target if target is a player, else Cure Poison from oneself

/run if UnitIsFriend ("player", "target") then CastSpellByName("Cure Poison") else CastSpellByName("Cure Poison",1)  end

Faerie Fire

Feral Faerie Fire when shapeshifted, Faerie Fire if not

/script i=1;m=0;while(UnitBuff("player",i)~=nil) do if(strfind(UnitBuff("player",i),"Form")~=nil) then m=1; end;i=i+1;end; c=CastSpellByName; if(m==1) then c("Faerie Fire (Feral)()");else c("Faerie Fire");end;


Faerie Fire on targettarget if friendly target, else Faerie Fire

/run if UnitCanAttack("player","target") == 1 then CastSpellByName("Faerie Fire")else TargetUnit("targettarget") CastSpellByName("Faerie Fire") TargetLastTarget() end


Spammable Faerie Fire

/run m=0 for i=1,40 do if(strfind(tostring(UnitDebuff("target",i)),"Spell_Nature_FaerieFire"))then m=1 end end if m==0 then CastSpellByName("Faerie Fire(Rank 4)") end


Spammable Faerie Fire/Insect Swarm

/run c=CastSpellByName function b(k)for i=1,16 do if strfind(tostring(UnitDebuff("target",i)),k)then return 1 end end end if not b("e_FaerieF")then c("Faerie Fire(Rank 4)")elseif not b("e_InsectSw")then c("Insect Swarm(Rank 1)")end

Healing Touch

this uses the trinket in inventory slot 13 if you're in combat when it's ready and heals you or a friendly player you target.

/run if UnitAffectingCombat("player") and  GetInventoryItemCooldown("player", 13)==0 then UseInventoryItem(13)elseif UnitIsPlayer("target") then CastSpellByName("Healing Touch") else CastSpellByName("Healing Touch",1)  end


this uses GetMouseFocus cast Healing Touch on your target.

/run i=(GetMouseFocus().unit) if i then CastSpellByName("Healing Touch") SpellTargetUnit(i) else CastSpellByName("Healing Touch") end

Hurricane

Spammable Hurricane

/run if not SpellIsTargeting() and not CastingBarFrame.channeling then CastSpellByName("Hurricane")end


Hurrican + Barkskin

/run if not focusTime then focusTime = 0 end if (GetTime() - focusTime > 60) then CastSpellByName("Barkskin") focusTime = GetTime() end if not SpellIsTargeting() then CastSpellByName("Hurricane")end

Innervate

Innervate and whisper to target

/cast Innervate
/run if UnitExists"target"then SendChatMessage("flavor text","WHISPER",nil,UnitName"target")end


Innervate overwrite prevention

/run n=0 for i=1,40 do if(strfind(tostring(UnitBuff("target",i)),"Spell_Nature_Lightning"))then n=1 end end if n==0 then CastSpellByName("Innervate")end

Insect Swarm

If missing cast Insect Swarm, else cast Moonfire

/run local i,x=1,0 while UnitDebuff("target",i) do if UnitDebuff("target",i)=="Interface\\Icons\\Spell_Nature_InsectSwarm" then x=1 end i=i+1 end if x==0 then CastSpellByName("Insect Swarm") else CastSpellByName("Moonfire")end

Buffing

Buff target with Gift of the Wild if Gift of the Wild is missing, then Thorns if Thorns is missing, else Rejuvenation.

/run c=CastSpellByName function b(k)for i=1,16 do if strfind(tostring(UnitBuff("target",i)),k)then return 1 end end end if not b("Nature_Regeneration")then c("Gift of the Wild")elseif not b("Nature_Thorns")then c("Thorns")else c("Rejuvenation")end


Buff oneself with Mark of the Wild if Mark of the Wild is missing, then Thorns if Thorns is missing. else Omen of Clarity.

/run c=CastSpellByName function b(k)for i=1,16 do if strfind(tostring(UnitBuff("player",i)),k)then return 1 end end end if not b("Nature_Regeneration")then c("Mark of the Wild",1)elseif not b("Nature_Thorns")then c("Thorns",1)else c("Omen of Clarity")end

Moonfire

Moonfire and attack. useful for starting zone.

/run for z=1,172 do if IsAttackAction(z)then if not IsCurrentAction(z)then UseAction(z);end;end;end;
/cast Moonfire


Max rank Moonfire, or rank 9 Moonfire if Moonfire debuff on target.

/run c=CastSpellByName function b(k)for i=1,16 do if strfind(tostring(UnitDebuff("target",i)),k)then return 1 end end end if not b("Nature_StarFall")then c("Moonfire")else c("Moonfire(Rank 9)")end

Nature's Grace

If buffed Nature's Grace cast HT4, else cast HT3

/run local i,x=1,0 while UnitBuff("player",i) do if UnitBuff("player",i)=="Interface\\Icons\\Spell_Nature_NaturesBlessing" then x=1 end i=i+1 end if x==0 then CastSpellByName("Healing Touch(Rank 3)") else CastSpellByName("Healing Touch(Rank 4)")end

If buffed Nature's Grace cast HT3, else cast Regrowth 4

/run local i,x=1,0 while UnitBuff("player",i) do if UnitBuff("player",i)=="Interface\Icons\Spell_Nature_NaturesBlessing" then x=1 end i=i+1 end if x==0 then CastSpellByName("Regrowth(Rank 4)") else CastSpellByName("Healing Touch(Rank 3)")end

Rebirth

Cast Rebirth and yell two random messages

/cast Rebirth
/run if not lr or GetTime()-lr>5 then lr=GetTime() if UnitIsDead("target") then i=math.random(1,2) c=i>1 and "Combat-res on %T" or "Ressing %T go get your revenge!" SendChatMessage(c,"YELL") end end

Regrowth

Unshift combined with Regrowth on self/target

/run local c,r,a,_=CastSpellByName,"Regrowth";for i=1,GetNumShapeshiftForms()do _,_,a=GetShapeshiftFormInfo(i)if(a)then CastShapeshiftForm(i)break end end if UnitIsFriend("player","target")then c(r)else c(r,1)end

Rejuvenation

Rejuvenation overwrite prevention

/run m=0 for i=1,40 do if(strfind(tostring(UnitBuff("target",i)),"Spell_Nature_Rejuvenation"))then m=1 end end if m==0 then CastSpellByName("Rejuvenation")end


Rejuvenation / Swiftmend Combo

/run c=CastSpellByName m=0 for i=1,40 do if(strfind(tostring(UnitBuff("target",i)),"Spell_Nature_Rejuvenation"))then m=1 end end if m==0 then c("Rejuvenation") else c("Swiftmend")end

Remove Curse

Remove Curse from target if target is a player, else Remove Curse from oneself

/run if UnitIsFriend ("player", "target") then CastSpellByName("Remove Curse") else CastSpellByName("Remove Curse",1)  end

Starfire

cast moonfire until nature's grace trigger then cast starfire

/run c=CastSpellByName function b(k)for i=1,32 do if strfind(tostring(UnitBuff("player",i)),k)then return 1 end end end if not b("NaturesBlessing")then c("Moonfire(Rank 4)")else c("Starfire")end


cast wrath until nature's grace trigger then cast starfire

/run i=1;m=0;c=CastSpellByName;while(UnitBuff("player",i)~=nil) do if(strfind(UnitBuff("player",i),"Spell_Nature_NaturesBlessing")~=nil) then m=1;end;i=i+1;end;if (m==1) then c"Starfire";else c"Wrath";end

Tranquility

Spammable Tranquility

/script if not CastingBarFrame.channeling then CastSpellByName("Tranquility") end