--COMBAT_LOG_EVENT_UNFILTERED PLAYER_REGEN_DISABLED
function(...)
    local event = select(1, ...)
    if event == "COMBAT_LOG_EVENT_UNFILTERED" then
        local e = select(3, ...)
        if e == "SWING_DAMAGE" then
            local target = select(10, ...)
            if target == UnitName("player") then
                local bloq = select(17, ...)
                if bloq ~= nil then
                    local dmg = select(13, ...)
                    local totaldmg = dmg + bloq
                    local perbloq = aura_env.round((bloq / totaldmg) * 100, 2)
                    --print(dmg, totaldmg, perbloq, bloq)
                    aura_env.pbloq = (aura_env.pbloq + perbloq) / 2
                    aura_env.totalbloq = aura_env.totalbloq + bloq
                end
            end
        end
        if e == "SPELL_DAMAGE" or e == "SPELL_PERIODIC_DAMAGE" then
            local target = select(10, ...)
            if target == UnitName("player") then
                local bloq = select(21, ...)
                if bloq ~= nil then
                    local dmg = select(16, ...)
                    local totaldmg = dmg + bloq
                    local perbloq = aura_env.round((bloq / totaldmg) * 100, 2)
                    --print(dmg, totaldmg, perbloq, bloq)
                    aura_env.pbloq = (aura_env.pbloq + perbloq) / 2
                    aura_env.totalbloq = aura_env.totalbloq + bloq
                end
            end
        end
    end
    if event == "PLAYER_REGEN_DISABLED" then
        aura_env.totalbloq = 0
    end
end

--DISPLAY
function()
    return aura_env.shorten(aura_env.totalbloq) .. "\n" .. aura_env.round(aura_env.pbloq, 2) .. "%\n" .. aura_env.round(aura_env.sbloq, 2) .. "%"
end

--INIT
aura_env.totalbloq = 0
aura_env.pbloq = 40
aura_env.sbloq = 40
aura_env.shorten = function(val)
    local function round(var, n)
        if (n) then
            var = math.floor((var * 10 ^ n) + 0.5) / (10 ^ n)
        else
            var = math.floor(var + 0.5)
        end
        return var
    end
    local n = 2
    if val < 1e3 then
        return round(val, n)
    elseif val > 1e3 and val < 1e6 then
        return round(val / 1e3, n) .. "k"
    elseif val > 1e6 and val < 1e9 then
        return round(val / 1e6, n) .. "M"
    elseif val > 1e9 then
        return round(val / 1e9, n) .. "G"
    end
end
aura_env.round = function(var, n)
    if (n) then
        var = math.floor((var * 10 ^ n) + 0.5) / (10 ^ n)
    else
        var = math.floor(var + 0.5)
    end
    return var
end
