Perfect Arcane Mage Rotations
ABx3, AM:
Code:
/dump loadstring("local _,_,_,c,_,_,_,_,_=UnitDebuff(\"player\",\"Arcane Blast\"); if (c=3) then CastSpellByName(\"Arcane Missiles\") else CastSpellByName(\"Arcane Blast\") end") ()
If Arcane Blast is at 3 stacks on yourself, cast Arcane Missiles,
Otherwise, cast Arcane Blast.
_________________________________________________________
ABx3, AB/AM(if Procced): (Two macros required - Spam Arc1)
Arc1:
Code:
/dump loadstring("local _,_,_,c,_,_,_,_,_=UnitDebuff(\"player\",\"Arcane Blast\"); if (c=3) then RunMacro(\"Arc2\") else CastSpellByName(\"Arcane Blast\") end") ()
Arc2:
Code:
/dump loadstring("if (UnitBuff(\"player\", \"Missile Barrage\")) then CastSpellByName(\"Arcane Missiles\" else CastSpellByName(\"Arcane Barrage\") end")()
If Arcane Blast is at 3 stacks on yourself, then,
--If Missile Barrage is procced, cast Arcane Missiles,
--Otherwise, cast Arcane Barrage
Otherwise, cast Arcane Blast.
_________________________________________________________
ABx4, AM:
Code:
/dump loadstring("local _,_,_,c,_,_,_,_,_=UnitDebuff(\"player\",\"Arcane Blast\"); if (c=4) then CastSpellByName(\"Arcane Missiles\") else CastSpellByName(\"Arcane Blast\") end") ()
If Arcane Blast is at 4 stacks on yourself, cast Arcane Missiles,
Otherwise, cast Arcane Blast.
_________________________________________________________
ABx4, AB/AM(if Procced): (Two macros required - Spam Arc3)
Arc3:
Code:
/dump loadstring("local _,_,_,c,_,_,_,_,_=UnitDebuff(\"player\",\"Arcane Blast\"); if (c=4) then RunMacro(\"Arc4\") else CastSpellByName(\"Arcane Blast\") end") ()
Arc4:
Code:
/dump loadstring("if (UnitBuff(\"player\", \"Missile Barrage\")) then CastSpellByName(\"Arcane Missiles\" else CastSpellByName(\"Arcane Barrage\") end")()
If Arcane Blast is at 4 stacks on yourself, then,
--If Missile Barrage is procced, cast Arcane Missiles,
--Otherwise, cast Arcane Barrage
Otherwise, cast Arcane Blast.
_______________________________________
Perfect 2H Unholy DK Rotation
1: (Spam this macro)
Code:
/dump loadstring("if (not UnitDebuff(\"target\", \"Frost Fever\")) then CastSpellByName(\"Icy Touch\") else RunMacro(\"2\") end")()
2:
Code:
/dump loadstring("if (not UnitDebuff(\"target\", \"Blood Plague\")) then CastSpellByName(\"Plague Strike\") else RunMacro(\"3\") end")()
3:
Code:
/dump loadstring("local _,_,c = GetRuneCooldown(\"1\") if (GetRuneType(\"1\") == 1) and (c == true) then CastSpellByName(\"Blood Strike\") else RunMacro(\"4\") end") ()
4:
Code:
/dump loadstring("local _,_,d = GetRuneCooldown(\"2\") if (GetRuneType(\"2\") == 1) and (d == true) then CastSpellByName(\"Blood Strike\") else RunMacro(\"5\") end") ()
5:
Code:
/dump loadstring("if (UnitPower(\"player\") > 60) then RunMacro(\"6\") else RunMacro(\"7\") end") ()
6:
Code:
/dump loadstring("local _,d,_ = GetSpellCooldown(\"Summon Gargoyle\") if (d == 0) then CastSpellByName(\"Summon Gargoyle\") else CastSpellByName(\"Death Coil\") end") ()
7:
Code:
/cast Scourge Strike (or Obliterate depending on spec)
If Frost Fever isn't on target, cast Icy Touch, else
If Blood Plague isn't on target, cast Plague Strike, else
If Rune 1 (first from left) is a Blood Rune, cast Blood Strike, else
If Rune 2 (second from left) is a Blood Rune, cast Blood Strike, else
If you have 60+ runic power, then
--If Gargoyle is off CD, cast Summon Gargoyle, else
--Cast Death Coil
Else, Cast Scourge Strike
_______________________________________
These will all pretty much work for optimal DPS with just spamming the one button, apart from a few longer cooldowns. For those long cooldowns like Icy Veins, etc, just request it and I'll make it for you :P
If there's any problems with the above macros, please post the debug message or the problem itself and I'll try to fix it.
-ronzaa