I ran into this mod because I was looking for something to play whack-a-mole with my balance druid because I never did anything more than quest and maybe go to LFR. It's been great for that. My main, however, is a blood dk tank (for normal/heroic raiding, m+15s, not mythic raiding), and while I've had the mod loaded, the default setup basically gets stuck on blood boil and never moves on from there, so effectively broken.
So, I normally score somewhere 90% percentile on world of logs for the content I know, and in a life long ago I used to be a programmer, and because I got really bored the other day, I decided to try and create a custom script. I stole some basic stuff from the existing lua for DKs and from Sorebrek's unholy post in this forum.
There are a few basic assumptions: You take blood drinker, rapid decomp, and ossuary, and that you're running shackles on your wrist. I'm also assuming that survival is not an issue and you can play things out for max dps. As such, this is *not* the specific rotation that either icy veins or discord recommend, as I am recklessly using runic power for death strikes when I should be pooling it for bigger hits. There is one section you can comment out, which I've noted in comments towards the end of the script, that will help pool runic power more, however it is by no means optimal for a survival setup, it's merely a tweak you can make if you need a bit more safety. If you don't run shackles, this will still work, however there may be brief moments in time without buttons to push.
In any event, I'm not really a forum contributor type as a general rule, I just thought I'd share what I put together as the existing setup was pretty broken. I may or may not come back to look at any followup posts, so use at your own risk.
Code: Select all
function(_, timeShift, currentSpell, gcd, talents) local _Marrowrend = 195182; local _BoneShield = 195181; local _BloodBoil = 50842; local _BloodPlague = 195740; local _DeathandDecay = 43265; local _CrimsonScourge = 81136; local _RapidDecomposition = 194662; local _DeathStrike = 49998; local _HeartStrike = 206930; local _Ossuary = 219786; local _Consumption = 205223; local _DarkCommand = 56222; local _DeathGrip = 49576; local _AntiMagicShell = 48707; local _DancingRuneWeapon = 49028; local _MouthofHell = 192570; local _VampiricBlood = 55233; local _IceboundFortitude = 48792; local _AntiMagicBarrier = 205727; local _RedThirst = 205723; local _WebofPain = 215288; local _MasteryBloodShield = 77513; local _BloodDrinker = 206931; --Get runic power and runes local runic = UnitPower('player', SPELL_POWER_RUNIC_POWER); local runicMax = UnitPowerMax('player',SPELL_POWER_RUNIC_POWER); local count = 0; local cd = 0; local time = GetTime(); for i = 1, 10 do local start, duration, runeReady = GetRuneCooldown(i); if start and start > 0 then local rcd = duration + start - time; if cd == 0 or cd > rcd then cd = rcd; end end if runeReady then count = count + 1; end end local runic = UnitPower('player', SPELL_POWER_RUNIC_POWER); local runicMax = UnitPowerMax('player', SPELL_POWER_RUNIC_POWER); local bb, bbCharges = MaxDps:SpellCharges(_BloodBoil, timeShift); local dad = MaxDps:SpellAvailable(_DeathandDecay, timeShift); local cons = MaxDps:SpellAvailable(_Consumption, timeShift); local bd = MaxDps:SpellAvailable(_BloodDrinker, timeShift); local bs, bsCharges = MaxDps:Aura(_BoneShield, timeShift + 6); local bp = MaxDps:TargetAura(_BloodPlague, timeShift); if bsCharges <= 6 and count >= 2 then return _Marrowrend; end if MaxDps:Aura(_CrimsonScourge, timeShift) then return _DeathandDecay; end if dad and count >= 2 then return _DeathandDecay; end if bd then return _BloodDrinker; end if runicMax - runic <= 20 then return _DeathStrike; end if not bp and bbCharges > 2 then return _BloodBoil; end if dad and count >= 2 then return _DeathandDecay; end if cons then return _Consumption; end if not bp and bbCharges > 1 then return _BloodBoil; end if count > 2 then return _HeartStrike; end -- comment this out if survival is a problem if runic >= 60 then return _DeathStrike; end -- comment out the above if survival is a problem return _BloodBoil; end