Useful Mage Marcos for WoW Vanilla (Client 1.12.1)
Here you can find very useful marcos for mages. All Marcos for the WoW Vanilla Client 1.12.1
Vanilla Macros for Arcane Explosion
Low rank Arcane Explosion, max rank if Clearcasting
/run SpellStopCasting() 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("Arcane Explosion")else CastSpellByName("Arcane Explosion(Rank 1)")end
Low rank arcane explosion, max rank if combat
/run if not UnitAffectingCombat("player") then CastSpellByName("Arcane Explosion(Rank 1)") else CastSpellByName("Arcane Explosion") end
Vanilla Macros for Arcane Intellect
Arcane Intellect on mouseover target
/run pt='mouseover' t='target' p='player' s='Arcane Intellect' if UnitExists(pt) and UnitIsFriend(p, pt) then TargetUnit(pt) CastSpellByName(s) TargetLastTarget() elseif UnitExists(t) then CastSpellByName(s) else CastSpellByName(s) end
Arcane Intellect on mouseover party frames
/run s='Arcane Intellect' f=GetMouseFocus():GetName() t="party"..string.gsub(f, "PartyMemberFrame", "") if UnitExists(t) then TargetUnit(t) CastSpellByName(s) TargetLastTarget() else CastSpellByName(s) end
Vanilla Macros for Arcane Missiles
Spammable Arcane Missiles
/script if not CastingBarFrame.channeling then CastSpellByName("Arcane Missiles") end
Spammable Arcane Missiles
/run if(CastingBarFrame.casting ~= 1 and CastingBarFrame.channeling ~= 1) then CastSpellByName("Arcane Missiles"); end;
Throw rank 1 unless clear casting is active then cast max rank
/run local i = 1 while UnitBuff("player", i) do if UnitBuff("player", i) == "Interface\\Icons\\Spell_Shadow_ManaBurn" then return CastSpellByName"Arcane Missiles" end i = i + 1 end CastSpellByName"Arcane Missiles(Rank 1)"
Vanilla Macros for Blink
Cancel Ice Block, then Blink
/run local z=0 for i=1,27 do t=UnitBuff("player",i) if (t and string.find(t,"Frost")) then z=1 break end end if z==1 then CastSpellByName("Ice Block")end
/cast Blink
Cancel Ice Block, then Blink
/script local i=0 g=GetPlayerBuff while not(g(i) == -1)do if(strfind(GetPlayerBuffTexture(g(i)), "Spell_Frost_Frost"))then CancelPlayerBuff(g(i))end i=i+1 end CastSpellByName("Blink")
Ice Block, else cancel Ice Block, then Blink
/cast Ice Block
/cast Blink
Vanilla Macros for Blizzard
Spammable Blizzard
/run if not SpellIsTargeting() and not CastingBarFrame.channeling then CastSpellByName("Blizzard")end
Blizzard
/run local s=SpellIsTargeting if not (s()) then CastSpellByName("Blizzard") end
Cast rank 1 if out of combat, else cast max rank
/run if not UnitAffectingCombat("player") then CastSpellByName("Blizzard(Rank 1)") else CastSpellByName("Blizzard") end
Vanilla Macros for 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
Vanilla Macros for cast on Level
Arcane Intellect:
/run a="Arcane Intellect" b={1,4,18,32,47} c="target" d="(Rank " e=CastSpellByName if (UnitLevel(c) ~= nil and UnitIsFriend("player",c)) then for i=5,1,-1 do if (UnitLevel(c) >= b) then e(a..d..i..")") return end end else e(a,1) end
/run local a,b,c,d,e,u="Arcane Intellect",{1,4,18,32,47},"target","(Rank ",CastSpellByName,UnitLevel if u(c)~=nil and UnitIsFriend("player",c)then for i=5,1,-1 do if(u(c)>=b)then e(a..d..i..")")return end end else e(a,1) end
/run UIErrorsFrame:Hide()
Conjure Water:
/run a="Conjure Water" b={1,5,15,25,35,45,55} c="target" d="(Rank " e=CastSpellByName if (UnitLevel(c) ~= nil and UnitIsFriend("player",c)) then for i=7,1,-1 do if (UnitLevel(c) >= b) then e(a..d..i..")") return end end else e(a,1) end
Conjure Food:
/run a="Conjure Food" b={1,5,15,25,35,45,55} c="target" d="(Rank " e=CastSpellByName if (UnitLevel(c) ~= nil and UnitIsFriend("player",c)) then for i=7,1,-1 do if (UnitLevel(c) >= b) then e(a..d..i..")") return end end else e(a,1) end
If you just have 45 water/food change it to
b={1,5,15,25,35,45}
i=6,1,-1
Castsequence macro for buffing
/run local _gspells = { "Ice Armor", "Dampen Magic", "Arcane Intellect"} if GetSpellCooldown(4,"BOOKTYPE_SPELL")==0 then _gi=_gi and _gi > 0 and _gi or 1 CastSpellByName(_gspells[_gi]) _gi = math.mod(1+_gi, 1+table.getn(_gspells))end
Vanilla Macros for Dismount
Dismount, Blink (put mount in action slot 60)
/script SpellStopCasting()
/script CastSpellByName("Blink")
/run i=1 while UnitBuff("player",i) do if string.find(UnitBuff("player",i),"Mount") then UseAction(60)end i=i+1 end
Dismount, Sheep
/run CastSpellByName("Polymorph")
/run local i=0 g=GetPlayerBuff while not(g(i) == -1)do if(strfind(GetPlayerBuffTexture(g(i)), "Mount"))then CancelPlayerBuff(g(i))end i=i+1 end
Vanilla Macros for Evocation Ice Barrier
Use evocation if mana is low, and keeping ice barrier up
/run if UnitMana("player")< 500 then CastSpellByName("Evocation")end local i,x=1,0 while UnitBuff("player",i) do if UnitBuff("player",i)=="Interface\\Icons\\Spell_Ice_Lament" then x=1 end i=i+1 end if x==0 then CastSpellByName("Ice Barrier")end
Ice Barrier, Mana Shield
/run local i,x=1,0 while UnitBuff("player",i) do if UnitBuff("player",i)=="Interface\\Icons\\Spell_Ice_Lament" then x=1 end i=i+1 end if x==0 then CastSpellByName("Ice Barrier")else CastSpellByName("Mana Shield")end
Spammable Evocation
/script if not CastingBarFrame.channeling then CastSpellByName("Evocation"); end ;
Vanilla Macros for Frostbolt
Cast Frostbolt rank 1 if shift key, else max rank
/script if IsShiftKeyDown() then CastSpellByName("Frostbolt (Rank 1)") else CastSpellByName("Frostbolt") end
Vanilla Macros for Ice Block
StopCasting, then Ice Block
/run SpellStopCasting() local i,x=1,0 while UnitBuff("player",i) do if UnitBuff("player",i)=="Interface\\Icons\\Spell_Frost_Frost" then x=1 end i=i+1 end if x==0 then CastSpellByName("Ice Block")end
Spammable Ice Block
/run local i,x=1,0 while UnitBuff("player",i) do if UnitBuff("player",i)=="Interface\\Icons\\Spell_Frost_Frost" then x=1 end i=i+1 end if x==0 then CastSpellByName("Ice Block")end
Ice Block, else cancel Ice Block
/run local i,a,sn sn="Ice Block" i=0 while a~=sn do i=i+1 a=GetSpellName(i,"spell")end if ({GetSpellCooldown(i,"spell")})[3]~=0 == not IsShiftKeyDown() then CastSpellByName(sn)end
Cold Snap if Ice Block on cooldown, else Ice Block (put Ice Block in action slot 40)
/run enable = GetActionCooldown(40) if enable==0 then CastSpellByName("Ice Block") else CastSpellByName("Cold Snap")end
Vanilla Macros for Polymorph
Mouseover Polymorph without changing target
/run c=CastSpellByName s="Polymorph(Rank 4)" if UnitExists("mouseover") then TargetUnit("mouseover") c(s) TargetLastTarget() else c(s) end
You can replace s=”mySpellName(Rank X)” with any other spell of you’re choice.
Polymorph turtle:
/run c=CastSpellByName s="Polymorph: Turtle" if UnitExists("mouseover") then TargetUnit("mouseover") c(s) TargetLastTarget() else c(s) end
Alternative less compact version if you want it to register cooldowns etc using Addons like Bongos.
/run if UnitExists("mouseover") then TargetUnit("mouseover") CastSpellByName("Polymorph(Rank 4)") TargetLastTarget() else CastSpellByName("Polymorph(Rank 4)") end
Sheep controlled teammates (BWL Nefarian, ZG Hakkar)
/run local n,p,i,t=4,"party";if UnitInRaid("player") then n=40;p="raid";end;for i=1,n do t=p..i ;if UnitCanAttack("player",t) then TargetUnit(t);CastSpellByName("Polymorph");SendChatMessage("%t is controlled, I changed him to sheep~",p);break;end;end
Polymorph rank 1 if target is player controlled, else max rank
/run if UnitPlayerControlled("target") then CastSpellByName("Polymorph(Rank 1)")else CastSpellByName("Polymorph")end
Casts polymorph, and searches through the party and raid for anyone who is targeting what you are going to polymorph, and whispering them to change targets.
/cast Polymorph
/run n,s=UnitName,UnitIsUnit;y,p,r,t="player","raid","party","target";for i=1,40 do a=((n(r..i)and r..i)or(n(p..i) and p..i)or nil);z=a and(not s(a,y)) and s(a..t,t) and SendChatMessage("Sheeping your: "..n(t),"WHISPER",nil,n(a))end
Vanilla Macros for Slow Fall
Buff Slow Fall, or cancel buff
/script CastSpellByName("Slow Fall")
/script local i=0 g=GetPlayerBuff while not(g(i) == -1)do if(strfind(GetPlayerBuffTexture(g(i)), "Spell_Magic_FeatherFall"))then CancelPlayerBuff(g(i))end i=i+1 end
Vanilla Macros for Wand
Shoot (wand)
/run if not CastingBarFrame.casting then CastSpellByName("Shoot")end UIErrorsFrame:Hide()
Prevent toggling of wand/autoattack
/run GGUseAction=GGUseAction or UseAction;UseAction=function(id,a,b)if not IsCurrentAction(id)and not IsAutoRepeatAction(id)then GGUseAction(id,a,b)end end
/cast Shoot
Vanilla Macros for trade Water
This macro will open trade, put in two stacks of water, and accept trade in 1 button(click it few times)
/run for b=0,4 do for s=1,GetContainerNumSlots(b,s) do local n=GetContainerItemLink(b,s) if n and string.find(n,"Conjured Crystal Water") then PickupContainerItem(b,s); DropItemOnUnit("target"); AcceptTrade(); break; end; end; end;