diff --git a/core/cache.lua b/core/cache.lua index 596b26d..c4e0b76 100644 --- a/core/cache.lua +++ b/core/cache.lua @@ -46,7 +46,7 @@ do end function LOAD2() characters = realm_data'characters' - for k, v in characters do + for k, v in pairs(characters) do if GetTime() > v + 60 * 60 * 24 * 30 then characters[k] = nil end diff --git a/core/disenchant.lua b/core/disenchant.lua index 7536512..466cd12 100644 --- a/core/disenchant.lua +++ b/core/disenchant.lua @@ -37,7 +37,7 @@ local WEAPON = S( function M.value(slot, quality, level) local expectation - for _, event in distribution(slot, quality, level) do + for _, event in pairs(distribution(slot, quality, level)) do local value = history.value(event.item_id .. ':' .. 0) if not value then return diff --git a/core/history.lua b/core/history.lua index c7ed1d6..c130838 100644 --- a/core/history.lua +++ b/core/history.lua @@ -65,12 +65,12 @@ function M.value(item_key) item_record = read_record(item_key) if getn(item_record.data_points) > 0 then local total_weight, weighted_values = 0, temp-T - for _, data_point in item_record.data_points do + for _, data_point in pairs(item_record.data_points) do local weight = .99 ^ round((item_record.data_points[1].time - data_point.time) / (60 * 60 * 24)) total_weight = total_weight + weight tinsert(weighted_values, O('value', data_point.value, 'weight', weight)) end - for _, weighted_value in weighted_values do + for _, weighted_value in pairs(weighted_values) do weighted_value.weight = weighted_value.weight / total_weight end value = weighted_median(weighted_values) @@ -89,10 +89,10 @@ end function weighted_median(list) sort(list, function(a,b) return a.value < b.value end) local weight = 0 - for i = 1, getn(list) do - weight = weight + list[i].weight + for _, v in ipairs(list) do + weight = weight + v.weight if weight >= .5 then - return list[i].value + return v.value end end end diff --git a/core/scan.lua b/core/scan.lua index 68d265f..41d85cc 100644 --- a/core/scan.lua +++ b/core/scan.lua @@ -27,14 +27,14 @@ do function M.abort(scan_id) local aborted = T - for type, state in scan_states do + for type, state in pairs(scan_states) do if not scan_id or state.id == scan_id then kill_thread(state.id) scan_states[type] = nil tinsert(aborted, state) end end - for _, state in aborted do + for _, state in pairs(aborted) do do (state.params.on_abort or nop)() end end end @@ -50,7 +50,7 @@ do end function get_state() - for _, state in scan_states do + for _, state in pairs(scan_states) do if state.id == thread_id then return state end diff --git a/core/tooltip.lua b/core/tooltip.lua index 6534757..fcbd6f9 100644 --- a/core/tooltip.lua +++ b/core/tooltip.lua @@ -18,7 +18,7 @@ function LOAD() settings = character_data('tooltip', {value=true}) do local inside_hook = false - for name, f in game_tooltip_hooks do + for name, f in pairs(game_tooltip_hooks) do local name, f = name, f hook(name, GameTooltip, vararg-function(arg) inside_hook = true @@ -61,8 +61,7 @@ function M.extend_tooltip(tooltip, link, quantity) if settings.disenchant_distribution then tooltip:AddLine('Disenchants into:', color.tooltip.disenchant.distribution()) sort(distribution, function(a,b) return a.probability > b.probability end) - for i = 1, getn(distribution) do - local event = distribution[i] + for _, event in ipairs(distribution) do tooltip:AddLine(format(' %s%% %s (%s-%s)', event.probability * 100, info.display_name(event.item_id, true) or 'item:' .. event.item_id, event.min_quantity, event.max_quantity), color.tooltip.disenchant.distribution()) end end diff --git a/util.lua b/util.lua index 31ae73b..c30d9ea 100644 --- a/util.lua +++ b/util.lua @@ -32,7 +32,10 @@ end M.index = vararg-function(arg) local t = tremove(arg, 1) - for i = 1, getn(arg) do t = t and t[arg[i]] end return t + for _, v in ipairs(arg) do + t = t and t[v] + end + return t end M.huge = 1.8 * 10 ^ 308 @@ -43,46 +46,58 @@ end function M.copy(t) local copy = T - for k, v in t do copy[k] = v end + for k, v in pairs(t) do + copy[k] = v + end table.setn(copy, getn(t)) return setmetatable(copy, getmetatable(t)) end function M.size(t) local size = 0 - for _ in t do size = size + 1 end + for _ in pairs(t) do + size = size + 1 + end return size end function M.key(t, value) - for k, v in t do if v == value then return k end end + for k, v in pairs(t) do + if v == value then + return k + end + end end function M.keys(t) local keys = T - for k in t do tinsert(keys, k) end + for k in pairs(t) do + tinsert(keys, k) + end return keys end function M.values(t) local values = T - for _, v in t do tinsert(values, v) end + for _, v in pairs(t) do + tinsert(values, v) + end return values end function M.eq(t1, t2) if not t1 or not t2 then return false end - for key, value in t1 do + for key, value in pairs(t1) do if t2[key] ~= value then return false end end - for key, value in t2 do + for key, value in pairs(t2) do if t1[key] ~= value then return false end end return true end function M.any(t, predicate) - for _, v in t do + for _, v in pairs(t) do if predicate then if predicate(v) then return true end elseif v then @@ -93,7 +108,7 @@ function M.any(t, predicate) end function M.all(t, predicate) - for _, v in t do + for _, v in pairs(t) do if predicate then if not predicate(v) then return false end elseif not v then @@ -104,14 +119,16 @@ function M.all(t, predicate) end function M.filter(t, predicate) - for k, v in t do + for k, v in pairs(t) do if not predicate(v, k) then t[k] = nil end end return t end function M.map(t, f) - for k, v in t do t[k] = f(v, k) end + for k, v in pairs(t) do + t[k] = f(v, k) + end return t end