Improved Frost DK (v7.3.5)

2 posts Page 1 of 1
Ahnforias
Posts: 1
Joined: 15 Mar 2018, 11:42


A rotation more up to date with 7.3.5 builds and rotation guides, since the other thread is a rewrite for the entire main.lua, and this is a properly written custom rotation. I may not be God's gift to DKs, but I have a couple gold parses and several orange parses in Antorus, so I'm at least fit enough to put something up other than the default.

Also, to the author, I recommend adding an _isIcyTalons check to the main.lua for this module and at least checking that before recommending Frost Strike due to a lack of IT stacks in the default rotation - it is heinously wrong due to this oversight.

This build is for the current raid meta, assuming T21 4pc and a 1210031 talent spread.
Code: Select all
function(_, timeShift, currentSpell, gcd, talents)
    local _Obliteration = 207256;
    local _FrostStrike = 49143;
    local _FrostFever = 55095;
    local _HowlingBlast = 49184;
    local _Rime = 59057;
    local _Obliterate = 49020;
    local _KillingMachine = 51128;
    local _RemorselessWinter = 196770;
    local _PillarofFrost = 51271;
    local _EmpowerRuneWeapon = 47568;
    local _SindragosasFury = 190778;
    local _BreathofSindragosa = 152279;
    
    local runic = UnitPower('player', SPELL_POWER_RUNIC_POWER);
    local runicMax = UnitPowerMax('player', SPELL_POWER_RUNIC_POWER);
    
    local runes = 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
            runes = runes + 1;
        end
    end
    
    local FSCost = 25;
    
    local oblit = MaxDps:Aura(_Obliteration, timeShift);
    local km = MaxDps:Aura(_KillingMachine, timeShift);
    
    MaxDps:GlowCooldown(_SindragosasFury, MaxDps:SpellAvailable(_SindragosasFury, timeShift));
    MaxDps:GlowCooldown(_PillarofFrost, MaxDps:SpellAvailable(_PillarofFrost, timeShift));
    
    --Rune recovery, only glow when necessary
    MaxDps:GlowCooldown(_Obliteration, MaxDps:HasTalent(_Obliteration) and MaxDps:SpellAvailable(_Obliteration, timeShift) and runes <= 1);
    MaxDps:GlowCooldown(_EmpowerRuneWeapon, MaxDps:SpellAvailable(_EmpowerRuneWeapon, timeShift) and runes <= 1 and runic <= (runicMax - FSCost));
    
    if not MaxDps:TargetAura(_FrostFever, timeShift + 2) and runes > 0 then
        return _HowlingBlast;
    end
    
    if runic > (runicMax - FSCost) then
        return _FrostStrike;
    end
    
    if oblit then
        if km and runes >= 1 then
            return _Obliterate;
        elseif runic >= FSCost then
            return _FrostStrike;
        end
    end
    
    --RW before Rime/Oblit casts for best use of Gathering Storm
    if MaxDps:SpellAvailable(_RemorselessWinter, timeShift) and runes >= 1 then
        return _RemorselessWinter;
    end
    
    if MaxDps:Aura(_Rime, timeShift) then
        return _HowlingBlast;
    end
    
    if km and runes >= 1 then
        return _Obliterate;
    end
    
    if runes >= 2 then
        return _Obliterate;
    end
    
    if runic >= FSCost then
        return _FrostStrike;
    else
        return nil;
    end
end
Kaminaris
Site Admin
Posts: 298
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