-- TICKER_500 ---@type allstates allstates function(allstates) local now = GetTime() for k, state in pairs(allstates) do local player = HeimdallStinkies[k] if not player then allstates[k] = { show = false, changed = true, } end end ---@type table local sortedStinkies = {} for k, v in pairs(HeimdallStinkies) do sortedStinkies[#sortedStinkies + 1] = v end table.sort(sortedStinkies, function(a, b) ---@cast a Player ---@cast b Player if not a then return false end if not b then return true end if a.guild:lower() ~= b.guild:lower() then return a.guild:lower() < b.guild:lower() end if a.zone:lower() ~= b.zone:lower() then return a.zone:lower() < b.zone:lower() end return a.name:lower() < b.name:lower() end) for _, v in pairs(sortedStinkies) do local ago = now - v.lastSeenInternal if allstates[v.name] then allstates[v.name].ago = string.format("%6.1fs", ago) allstates[v.name].name = v:ToString() allstates[v.name].changed = true else allstates[v.name] = { show = true, changed = true, name = v:ToString(), progressType = "timed", duration = 60, expirationTime = GetTime() + 60, autohide = true, index = ago, ago = string.format("%6.1fs", ago), } end end return true end