Code:
/run if GetSpellCooldown("Kick")==0 and IsSpellInRange("Kick","target") and (UnitCastingInfo("target") or UnitChannelInfo("target")) then CastSpellByName("Kick") end
/run vSnD=0 b={UnitBuff("player", "Slice and Dice")}; if b[7]~=nil then vSnD=b[7]-GetTime() end;
/run if (UnitAffectingCombat("player") or IsStealthed()==1) and UnitExists("focus") and GetSpellCooldown("Tricks of the Trade")==0 and IsSpellInRange("Tricks of the Trade","focus") then RunMacroText("/cast [@focus] Tricks of the Trade") end
/run if IsStealthed()==1 and UnitPower("player")>= 55 then CastSpellByName("Mutilate") end
/run local c=CastSpellByName; local p=UnitPower("player"); if vSnD==0 then if GetComboPoints("player")>0 then if p>=25 then c("Slice and Dice") end else if p>=55 then c("Mutilate") end end end
/run local c=CastSpellByName; local p=UnitPower("player"); if vSnD<4 then if GetComboPoints("player")>0 then if p>=35 then c("Envenom") end else if p>=55 then c("Mutilate") end end end
/run if vSnD>=4 and not UnitBuff("player","Overkill") and GetSpellCooldown("Vanish")==0 and not UnitBuff("player", "Stealth") and UnitHealth("target")>1000000 then CastSpellByName("Vanish") end
/run if vSnD>=4 and GetComboPoints("player")<4 and UnitPower("player")>=55 and (UnitHealth("Target")/UnitHealthMax("Target")>0.35) then CastSpellByName("Mutilate") end
/run if vSnD>=4 and GetComboPoints("player")<4 and UnitPower("player")>=60 and (UnitHealth("Target")/UnitHealthMax("Target")<=0.35) then CastSpellByName("Backstab") end
/run local c=CastSpellByName; local p=UnitPower("player"); local cp=GetComboPoints("player"); if vSnD>=4 and cp>=4 and p>=35 then local dp=0; local i=1; while(i<=40)do local d={UnitDebuff("target",i)}; if d[1]=="Deadly Poison" and d[8]=="player" then dp=d[4] break end i=i+1 end; if dp>=4 then if cp==5 and dp==5 and GetSpellCooldown("Cold Blood")==0 then c("Cold Blood") end c("Envenom") elseif p>=85 then c("Mutilate") end end
/run StaticPopup_Hide("MACRO_ACTION_FORBIDDEN");
Logic:
1. If target is casting and kick is off CD, then kick.
2. If you are in combat or is stealthed, and TotT is off CD, then TotT your focus.
3. If you are stealthed, then mutilate (your opener, in other words).
4. If SnD is not active, and you have at least 1 CP, then SnD. If you have no CP, then Mutilate.
5. If there is only 4sec or less left on SnD, and you have at least 1 CP, then Envenom. If you have no CP, then Mutilate.
6. If SnD is safe, you are not in stealth, you dont have Overkill and your target has atleast one million HP, then Vanish.
7. If SnD is safe, you have less than 4 CP and your target is over 35% HP, then Mutilate.
8. If SnD is safe, you have less than 4 CP and your target is under 35% HP, then Backstab.
9. If SnD is safe, you have at least 4 CP and 4 DP stacks, then Envenom. If you have 5 CP and 5 DP stacks, and Cold Blood is off CD, then Cold Blood before Envenom. If you dont have enough DP stacks and have 85 energy, then Mutilate.
I am pulling about 6k dps on the lvl 85 dummies with this (my average ilvl is 335). I wanted it to check if I was behind the target before it did backstab aswell, but I have no idea how to do that. So you have to make sure you are behind it at 35%, otherwise it wont work (you should be there at all times anyway though). And I did not include Rupture since that was a dps-loss for me, might include it later if I find it more viable then. For poisons you should have Instant poison on your MH and Deadly Poison on your OH. And you have to handle Vendetta by yourself!
To be able to run this, you must have the ability to run protected lua (which you normally cant do). In other words, you must have a hack of some sorts to enable that.
This macro is too long for a normal macro in WoW, therefor you need to download the addon "SuperDuperMacro" (you can find that on wowinterface.com for example), or some other addon that lets you create macros without the character limit.
If you want to loop this (making it so that you dont have to spamclick this macro), make a normal macro in WoW (not with an addon) that says:
Code:
/click sdb_roguerota
/run if UnitAffectingCombat("player") then RunMacroText("/in 0.1 /run RunMacro(\"ROGUE\")") end
The first line makes SDM (superdupermacro) execute the rotation macro. In this case the SDM macro is called "roguerota". The second line makes the macro execute itself, looping it (this non-addon macro is called "ROGUE"). The macro will be looped until you exit combat. You can name both of the macros whatever you want, just make sure you type the names in the non-addon macro (non-addon macro = normal macro created in WoW) correct.