Ok here's my version of a Mutilate Rogue macro... It automatically kicks the target if casting and it automatically does ToT on your focus. It will only ToT if you are in combat or stealthed...it does it stealthed so that you can ToT right before you open which is desired. Beyond that, it keeps up Hunger for Blood and Slice and Dice using Envenom to refresh. It checks all bleeds for Hunger for Blood (but does not check Mangle or Trauma since those are NOT bleeds and will NOT allow HfB). It will put up a Rupture if needed for HfB. If the target has more than 500K HP remaining, it will use Vanish to get Overkill (HP limit to prevent wasting vanish cooldown). If you have a full 5 combo points and a full 5 stacks of deadly poision, it will use Cold Blood for that Envenom. It will sometimes do nothing while waiting for energy for critical abilities. It will just Mutilate for combo points until at least 4 before doing an Envenom. If you have 4 combo points but not at least 4 stack so Deadly Poison, it will wait on the poison before using Envenom (it will Mutilate with extra energy while waiting for deadly poison stacks). (Note: It will not wait on the poison stacks if Envenom is needed to refresh SnD.)
I'd love for someone to try it out and report problems. I've proofread it a few times but not tested it.
Code:
/run if GetSpellCooldown("Kick")==0 and IsSpellInRange("Kick","target") and (UnitCastingInfo("target") or UnitChannelInfo("target")) then CastSpellByName("Kick") end
/run if (UnitAffectingCombat("player") or UnitBuff("player", "Stealth")) 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 UnitBuff("player", "Stealth") and UnitPower("player")>= 50 then CastSpellByName("Garrote") end
/run vHfB=0 b={UnitBuff("player", "Hunger for Blood")}; if b[7]~=nil then vHfB=b[7]-GetTime() end;
/run vSnD=0 b={UnitBuff("player", "Slice and Dice")}; if b[7]~=nil then vSnD=b[7]-GetTime() end;
/run local ud=UnitDebuff; local c=CastSpellByName; local p=UnitPower("player"); if vHfB<4 then if ud("target","Rupture") or ud("target","Garrote") or ud("target","Deep Wounds") or ud("target","Rend") or ud("target","Savage Rend") or ud("target","Pounce Bleed") or ud("target","Rake") or ud("target","Rip") or ud("target","Piercing Shots") then if p>=15 then c("Hunger for Blood") end else if GetComboPoints("player")>0 then if p>=25 then c("Rupture") end else if p>=55 then c("Mutilate") end end end end
/run local c=CastSpellByName; local p=UnitPower("player"); if vHfB>=4 and 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 vHfB>=4 and 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 vHfB>=4 and vSnD>=4 and not UnitBuff("player","Overkill") and GetSpellCooldown("Vanish")==0 and not UnitBuff("player", "Stealth") and UnitHealth("target")>500000 then CastSpellByName("Vanish") end
/run if vHfB>=4 and vSnD>=4 and GetComboPoints("player")<4 and UnitPower("player")>=55 then CastSpellByName("Mutilate") end
/run local c=CastSpellByName; local p=UnitPower("player"); local cp=GetComboPoints("player"); if vHfB>=4 and 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 IX" 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");
The Logic:
- If Kick is ready and the target is casting, then Kick
- If ToT is ready, you have a focus, and you are either in combat or stealthed, then ToT your focus
- If you are stealthed and have at least 50 energy, then Garrote
- If HfB is down or has less than 4 seconds remaining...
- If the target has a bleed...
- If you have 15 energy, then (re)activate HfB
- Else...
- If you have at least 1 CP and 25 energy, then put up a Rupture
- Else if you have at least 55 energy, Mutilate to get CP
- IF HfB is good but SnD is down...
- If you have at least 1 CP...
- If you have 25 energy, activate Slice and Dice
- Else (0 CP) if you have 55 energy, Mutilate to get CP
- If HfB is good but SnD has less than 4 seconds remaining...
- If you have at least 1 CP...
- If you have 35 energy, activate Envenom
- Else (0 CP) if you have 55 energy, Mutilate to get CP
- If HfB is good, SnD is good, you don't have Overkill, you're not Stealthed, Vanish is ready, and the target has more than 500K hp, then Vanish
- If HfB is good, SnD is good, you have less than 4 CP, and you have at 55 energy, then Mutilate to get CP
- If HfB is good, SnD is good, and you have at least 4 CP...
- If you have at least 4 stacks of Deadly Poison and 35 energy...
- If you have 5 CP and 5 stacks of DP and Cold Blood is ready, then Cold Blood
- Envenom
- Else (not enough Deadly Poison) if you have 85 energy, Mutilate