Blood DK custom

2 posts Page 1 of 1
infy
Posts: 3
Joined: 10 Feb 2018, 17:26


Howdy,

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
Kaminaris
Site Admin
Posts: 352
Joined: 25 Jun 2017, 03:45


Incorporated your rotation in class module. It is in v7.3.5
2 posts Page 1 of 1
drogie łóżka stolik kawowy stół dębowy rozkładany