Tumble files around a bit

This commit is contained in:
2025-05-16 10:20:19 +02:00
parent 0e3166a410
commit 003f90126d
1595 changed files with 75381 additions and 70006 deletions

View File

@@ -0,0 +1,92 @@
---@diagnostic disable: undefined-field
-- CHAT_MSG_CHANNEL TICKER_1000
---@param allstates allstates
function(allstates, e, ...)
if e == "CHAT_MSG_CHANNEL" then
local message, author, _, channel = ...
if message == nil or author == nil then return end
if string.find(message, "Hkeystone") then
local keyid, level = string.match(message, "Hkeystone:(%d+):(%d+)")
if keyid == nil or level == nil then return end
keyid = tonumber(keyid)
level = tonumber(level)
---@cast keyid number
---@cast level number
author = string.gsub(author, "%-.+$", "")
local keyname = aura_env.KeystoneIdMap[keyid]
if keyname == nil then
DevTools_Dump({ "Failed getting key name from", keyid, level, message })
return
end
---@cast keyname string
local keykeyname = string.gsub(keyname, " ", "_")
keykeyname = string.gsub(keykeyname, "'", "")
keykeyname = string.gsub(keykeyname, ":", "")
local targetLevel = aura_env.config[keykeyname] or 15
local leveldelta = level - targetLevel
local color, _ = aura_env.Colorer.Interpolate(leveldelta)
local r = math.floor(color.r * 255)
local g = math.floor(color.g * 255)
local b = math.floor(color.b * 255)
local hexColor = string.format("%02x%02x%02x", r, g, b)
-- For some reason Colorer.RGBToHex does not work with some strange lua error
-- It works when ran standalone with lua54 but not in a weakaura
-- Whatever...
local formattedName = string.format("|cFF%s%s|r", hexColor, keyname)
allstates[author .. keyid .. level] = {
show = true,
changed = true,
keyid = keyid,
level = level,
targetLevel = targetLevel,
leveldelta = leveldelta,
name = formattedName,
keyname = keyname,
color = color,
-- tooltip = message, -- Tooltip doesn't work for some reason...
author = author,
channel = channel,
progressType = "timed",
duration = 60,
expirationTime = GetTime() + 60,
autohide = true,
index = GetTime(),
progress = "0s",
}
return true
end
else
if e == "TICKER_1000" then
local ttl = aura_env.config.expirationtime
for _, state in pairs(allstates) do
if state.progress then
local elapsedTime = GetTime() - state.index
if elapsedTime > ttl then
state.show = false
state.changed = true
else
local prettyTime = ""
local minutes = 0
while elapsedTime > 60 do
elapsedTime = elapsedTime - 60
minutes = minutes + 1
end
if minutes > 0 then
prettyTime = string.format("%s%dm", prettyTime, minutes)
end
if elapsedTime > 0 then
prettyTime = string.format("%s %ds", prettyTime, elapsedTime)
end
state.progress = prettyTime
state.changed = true
end
end
end
end
return true
end
end

View File

@@ -0,0 +1 @@
!nVXIYjUrYVLJ7CT4SgcGFNkzR4h41ExBSll246kxwOb0aOZcnCJKm27MW3(1DpA0lec8gNuxHFinQN(D3t3JgmBA210W30Ov9M7vFBtJjMg24pWOJKIzMgNE9DDmn6lK2C5XSbpAlftnno215RFLjTNB1viCdCGHE(6Hd95bMNv7GT3DVwhCW2nBT9(7V9o7yoS2oaQFjcGo7SBdtdM3GXc5nchVatJtA3PB7B1K5eHRqcCqNMMDAy2Pf93TP)UdoimHqF(rkeWLFXZjWSpGXbbocpFsGcyYa4caYHoEo(Jvx7GqIxbxhiDgnIl9v0PB8a4L28(Hdh29LPCtJZBF5nN9LlHNt3YcLSwabMYDDVW2xHx)W(8N4EbgWSCE20O3jhz0TNr3JUfqwisuJPUSxaKhd6nsobQXnTVeqongqmoZnySPHhBc3xZPHEjSwGAObc3WjEgtzd4i3Biz2oH(GQQrds3CPZKiDIRZiptJlBFgWjsradvrOMezKB5JIuyakDfmYQdZU3axMVpoDqmhGdojeSXA(r908J678vE(bHH7h5YK2M2KSPnjBAtYM2O(UiWmpNjSaU5Xa6gWCvYMYNa5g1vTThb2bJ)BitYNBDwOR7CR7g7atZqscKYUz)cOeDgaoXHt1t1a5rG2gUK(PZUaD4UdJCc7E9nk9eChx6XC)nW9GuxT2JCPiBaQ7yHbGR31tdsuFdGRcyEbNbEHGGAC7rNEXxmWGih77CSbJksnfBehhaABhiA7ONNbWmCSX(OFPyWtA6UFJTrdkcZjJzbFM)IXaMNhx(rLuXKdUK7ncr(27baouc(nGJmlGrQovm2z4OkLIXj32UDC48fEeB0K4(HoJuscYXkOV9uqSfqGeeq4pG7z74nc9jiVUw0SSDsPduMpKZtfcAydrm4G9ubq(CCA(64jpHhhN7eMJ36dDCq96bFa67ploCbnxXH9IWaxhakJR)s3lVOtBa5cisw5P0ijTgA3TD8X44U8NbuSHYlyUvT5wB4n369B4crXU)4gGGpIhCjEd8KPsXij33FUfBKivsWgzDxdiCwGXhYsW1Equ4DENVOSxk5nCsFmldeeFkyYWaPjSNn7SxdCM(b8PK5Ewe6GNcADCemHJPr7NN6OuNqEDhCKh5VajNIhoGg0MpKbr5Werfe6ByACbmfTYpar9s5P(r80UfWrnxGJEbIXfdNBD0x9hZKSueVve3bG0tmSNgGamTYBdXpLjFCmhCJbTXyNbpcMnfjJFqV4XtXwuK9BdhCSlK(CU1Tcb83ZfU2fi)em9qq6rqq51EBi)5mxxFL()3yy(BffPHrDE0GzL99EJiEhoSuitcEDVd4HlzoYce(eG87rGapB)3ig43qsPK(GXGB4Dq9oCiKtrz6POsaEwV4hLvvCWBeNCfBMIpGSvU(fOgaaqwr9yy8dFJiCxuUpsoyg7LikbJ0tpqwHTzJ3iIEIiugP3nGCPfjVeiKetaGuV5Be1VLhekHKzbI5wFgsO81XmVFc8)eZ4A)Ffi9ce90a0l6X50iVvzbpHboz2sMRsR0wvEYCRooJghuK6rdpQIIGUNcyKT2(Vwv1xMoTmvv0JZPQERYyAWzPJz7kDcN8eU6fVa9ecSoeonKQYCd9detW16)YuBA(rfPdlalW6CgOwv24i4(xr3hg2IEkCJlphDLrTA1(vQW65wuPYC58pHJn0H7cDznahdEwaRVl)NvAOTIa9dzGSVKZECkwrBoWbWWMx6X9EQUMew)YCRVn)tZTuFa0m36k2JGIZpeRUwtwMxEmZCHuaW)hZEIhPR9bdWClfXuMao25c3)FalF0(2)9CRlU6MRVT7rD6(pYqZFfT7lv20aQ5LSSS(Z3MBPeNg13Rfm7rPVPF8nZT(JTqAo36Js(lLGMMBPhAuU7viRzcMOMpkLJAMWr5XtJmCe3Rm8KJLAuFNDsjChSFcQo2nSCoAVDsPJA1mfAoC7e0CtOCQl)vOLG(42Qqz7AjZB0RdtTsJP6TuS1Rr7Cqke0SEJ0Ah9MxKvpLg)zC2jxoRAhE4HigAIKQgkO1qEe)fVHggajcpzCWNcj)Mm36jgspDisgiKr5sjVEarEoU)Upe94nkbUlW(sNkCHKrepnm0Js6uLW7MlQCCfdWLjOihTuKOTgfFvI5knJVYi0C3gLM5dlLp6lzyXYAo5BkIhzy(MYhaJRu8roCmefbNyFL)z(Cz1ZyXSflIb9hNHXwIFgsKvcEU35bk3M3YrwI)cjB336bT45S1AG8)yDWmmLLdg0w(YFOMRA(NMRuKPeFdcxl10tljEsSF4cCGk5(9j8l8ZdF)Kd421NyT0eBzyBOuT4oHTQrUo1sRDbCS5CRFeEAkKIUclc1NwIR9JGH5jW(auzk0iJF1ev2ML7ptIZ9p(qXcRlKYO6tBLOtai3krM2CTn16mudsYqLaemNLL0JvCcVON2V0NguEYY8pdL1Szgzy2nmv1MlxGag8halxtYAbaA9EIT(bK8FkJsbIl85bt4bmk1x18kBvASE9C8S5pxO5aITixG4X)m)fOaqp(f2xXMMV4M7BU3UkZAfJXmBXSjc0l84qPd6xI7cONTFLTYmJ9IMXhLotKmWizDkFQiiluhUFeu53GLCGDqeylUvi5a8WiaxyhlYaxRgnIGl)wlKdmTqS4MaKdqTCSKM1ZbTwCY2qDoG0IsQMFZcrtTqKVt1SG1sZBL1sz2PS92AmxwhF5MZoLtgQFRCtrlIlVBPkK3(QFvjQw20DXO(VEVyHWeEyuVtf(kvY9wpwY7gj7lqj5vJ8AEjmdgZh8ymbt30LTdBKNWhANdYY64JX1GsdIRaEWJBxt1w1NW6gp58J627kJp2dUOtN2xckSlo5ZTVTxZgnAOActNZdCUrP3p9LFkjRKEmmTm8B961tLFcRpblWJ8dYrYklREKOLQaDJpBeNwKh3My4IEWVdgJV2axYOdeBXPJ0mAUkkJz3TW1L07YD8Ge9JtEwy5hi2ufVwhuI2vt4QkN)yucVkBUQsRIejycoWIlwUQnu)xIrn0d(GXfI7FQ6g2VFt1FRSz5vcsOpNmRj1RqK1F0OdddvlpvLgQeUirWINcnujtH2TaMFqm9YVs4YNqe1w1eIn7XQ7rqaw1yVQkBuR(7)xvWRQuyrnlAf9O9hi9IIzw87EsuEyLwRi0KX2SYIOpL)e(IQ97DA4KPvHfPRCgS0ih0CJ4bbyxwiQbusiFOumbfTmUEBLkc5p2C1KmYD57RW9mgyftf3n4AOQtRTtB(IghTAWp4)6vw8r5ykfYExIJWFwu9tRevrIzMxZwAVk1lZ8(e0(GkQU5UReNKH2gQ5GrOmkwPwwITAlGUe5EfxsEQ(4RMqXvlXQWriT346dDfczvIo1LuTQT2D3vJHrfJHrRpg6xmg6V(yym)5KEZ0RsiKakRwzJgTEw)l6hGkXryj8LMlCU1zi68fOZf0kRVWlExuRF7hpUR4CSCCBbUESNacQMjKq5PZCcgRNgWi0ouz5gc2EUukKLtYlIqdGYzQLhyEuFUE2q9SECn6b8T7oGeegerBhvlhZGwUrpJYPYDJbNKNaXOOfTZ3MkPed42DYfLP1U)(GZoBd)n8)DSCWy7WwX5ykrjhxXY96fgagsV4dEj5h)WY2D28F8hlMPwXtgY3A1WJ1VmIB)AMsYcXrzXx5mswhokF)kNr(uqPUFDPxUKn0TRXCJtKMXOVEQL45gN1D16)4a2OuBRCgOZBG6OHPYyexMg(KU6NGXKEVloICy(44s97lOwfD9jRLhLUI4ORxJzPpmhDP9Gclqhprez6XDzF0hufAA71ynMrYXUaplg08(ipaVUQAtkwlSGVTQXo28xtStY(xetWxHYrPyA4xMwPK99uxMnYRlBZP0346ZlU7dD)tPAqRYA2VrqqH1tup7PGz5OH8HXMUOeMP3rV4KORyd9Y2gfmH6jQ21RC38BhQlBQp3Ui3OAAsOS5RnMjLCA0(Hin3RJbJxqG4H4LfgYk0YUEyj)IfRpE4FxunsjpfCCdEjwhxPszfkUcCnXXlK29a61Y8QXYSXqVnlAF2RX653TC1tw3Om3xJW)3nUtlXXx)E89b9QrzPnwvM)CmD)a9wP((8KtYgMXDiFHU(BytTyMa2wXmWM)nkZ59r(lxUNBTbTL1zL8uSXFxsF(mR)sgE)V)CpRJmukqf(WchS4LyjqP)eTrP(MgLULNX73lwFHPbvkurhyD6SX8eVRAWReaWDQ1SH6idxW3cGcp)1)hGuodFrFw2H6fTVtYMAACx8vlEoPPtkFjN7C6SaV2NA6uNv8JVUB3RVk1bNE5N0PoT2EHJqR6KZw4riStZdYDE(60A3coOJeAZD2x70ANfppO0Gl7Koryj355StRMLCg3OzuYbmJMDUZNhnwQtoiHJfpeTiN()5hJ88FRjOZV)5vVPR30QpAFXMlEO41FVkk8Rsb9LTqmPpJ(YA8Q(IvGNsD6eBJzVqLkn6t4rPRf6wB()(

View File

@@ -0,0 +1,72 @@
---@class Colorer
---@field colors table<number, Color>
---@field breakpoints table<number>
aura_env.Colorer = {
--- Make sure colors and breakpoints always have the same number of entries! VERY IMPORTANT!
---@type table<number, Color>
colors = {
{ r = 0.62, g = 0.62, b = 0.62 }, -- Grey
{ r = 1, g = 1, b = 1 }, -- White
{ r = 0.12, g = 1, b = 0 }, -- Green
{ r = 0, g = 0.44, b = 0.87 }, -- Blue
{ r = 0.64, g = 0.21, b = 0.93 }, -- Purple
{ r = 1, g = 0.5, b = 0 }, -- Orange
{ r = 1, g = 0.2, b = 0.23 },
{ r = 0, g = 0.8, b = 1.0 }, -- Blizzard Blue
},
breakpoints = { -999, -10, -5, -2, 2, 5, 10, 999 },
---@param value number
---@return Color, nil|string
Interpolate = function(value)
local color = { r = 0, g = 0, b = 0 }
---@type table<number, table<number, number>>
local bracket = { { 0, 0 }, { 1, 1 } }
for i = 1, #aura_env.Colorer.breakpoints do
if value < aura_env.Colorer.breakpoints[i] then
bracket[2] = { i, aura_env.Colorer.breakpoints[i] }
break
end
bracket[1] = { i, aura_env.Colorer.breakpoints[i] }
end
---@type Color
local startColor = aura_env.Colorer.colors[bracket[1][1]]
---@type Color
local endColor = aura_env.Colorer.colors[bracket[2][1]]
local fraction = (value - bracket[1][2]) / (bracket[2][2] - bracket[1][2])
for k, v in pairs(startColor) do
color[k] = aura_env.Colorer.lerp(v, endColor[k], fraction)
end
return color, nil
end,
---@param a number
---@param b number
---@param t number
---@return number
lerp = function(a, b, t) return a * (1 - t) + b * t end,
}
setmetatable(aura_env.Colorer, { __index = aura_env.Colorer })
aura_env.KeystoneIdMap = {
[165] = "Shadowmoon Burial Grounds",
[166] = "Grimrail Depot",
[197] = "Eye of Azshara",
[198] = "Darkheart Thicket",
[199] = "Black Rook Hold",
[200] = "Halls of Valor",
[206] = "Neltharion's Lair",
[207] = "Vault of the Wardens",
[208] = "Maw of Souls",
[209] = "The Arcway",
[210] = "Court of Stars",
[227] = "Return to Karazhan: Lower",
[233] = "Cathedral of Eternal Night",
[234] = "Return to Karazhan: Upper",
[239] = "Seat of the Triumvirate",
}