diff --git a/Better.toc b/Better.toc index d5df9fb..8855ad7 100644 --- a/Better.toc +++ b/Better.toc @@ -2,7 +2,7 @@ ## Title: Better ## Notes: Shows better item for given slot ## Author: L -## Version: 0.0.1 +## Version: 0.0.5 Items.lua diff --git a/main.fnl b/main.fnl index fd9b86a..3beff21 100644 --- a/main.fnl +++ b/main.fnl @@ -77,18 +77,16 @@ (find-item {8 name})) (fn find-next-better-item [class subclass invtype lv ilv stat-position item-stat ?sort] - (find-items {4 class - 6 subclass - 10 invtype - 14 (string.format "gte:%d" (- lv 4)) - 14 (string.format "lte:%d" lv) - ;; 12 (string.format "gte:%d" ilv) - stat-position (string.format "gt>:%d" item-stat)} - ?sort)) + (let [stat-comparison "gt>:%d"] + (find-items {4 class + 6 subclass + 10 invtype + 14 (string.format "lte:%d" lv) + stat-position (string.format stat-comparison item-stat)} + ?sort))) (lambda find-good-item [invtype lv stat-position stat-baseline ?sort] (find-items {10 invtype - 14 (string.format "gte:%d" (- lv 6)) 14 (string.format "lte:%d" lv) stat-position (string.format "gte:%d" stat-baseline)} ?sort)) @@ -169,9 +167,10 @@ inv-slot (UnitLevel "player") stat - 1 - (fn [a b] (and (< (. a stat) (. b stat)) - (< (. a 12) (. b 12))))) + 0 + (fn [a b] + (< (+ (. a 12) (. a stat)) + (+ (. b 12) (. b stat))) )) gear-index)] (if best (do @@ -193,7 +192,9 @@ i-invtype (. stats 10) i-level (. stats 12) i-stat (. stats stat) - best (. (find-next-better-item i-class i-subclass i-invtype p-level i-level stat (max i-stat 1) (fn [a b] (< (. a stat) (. b stat)))) gear-index)] + best (. (find-next-better-item i-class i-subclass i-invtype p-level i-level stat (max i-stat 0) (fn [a b] + (< (+ (. a 12) (. a stat)) + (+ (. b 12) (. b stat)) ))) gear-index)] (if best (do (DEFAULT_CHAT_FRAME:AddMessage (string.format "\124Hitem:%d:0:0:0:0:0:0:0:0\124h[%s]\124h\124r" (. best 2) (. best 8))) diff --git a/main.lua b/main.lua index 32394c4..a8030b7 100644 --- a/main.lua +++ b/main.lua @@ -91,13 +91,14 @@ local function find_item_by_name(name) return find_item({[8] = name}) end local function find_next_better_item(class, subclass, invtype, lv, ilv, stat_position, item_stat, _3fsort) - return find_items({[4] = class, [6] = subclass, [10] = invtype, [14] = string.format("lte:%d", lv), [stat_position] = string.format("gt>:%d", item_stat)}, _3fsort) + local stat_comparison = "gt>:%d" + return find_items({[4] = class, [6] = subclass, [10] = invtype, [14] = string.format("lte:%d", lv), [stat_position] = string.format(stat_comparison, item_stat)}, _3fsort) end local function find_good_item(invtype, lv, stat_position, stat_baseline, _3fsort) - _G.assert((nil ~= stat_baseline), "Missing argument stat-baseline on main.fnl:89") - _G.assert((nil ~= stat_position), "Missing argument stat-position on main.fnl:89") - _G.assert((nil ~= lv), "Missing argument lv on main.fnl:89") - _G.assert((nil ~= invtype), "Missing argument invtype on main.fnl:89") + _G.assert((nil ~= stat_baseline), "Missing argument stat-baseline on main.fnl:88") + _G.assert((nil ~= stat_position), "Missing argument stat-position on main.fnl:88") + _G.assert((nil ~= lv), "Missing argument lv on main.fnl:88") + _G.assert((nil ~= invtype), "Missing argument invtype on main.fnl:88") return find_items({[10] = invtype, [14] = string.format("lte:%d", lv), [stat_position] = string.format("gte:%d", stat_baseline)}, _3fsort) end local function parse_item_id(link) @@ -167,9 +168,9 @@ local function main0(msg) if not i_link then local best local function _14_(a, b) - return ((a[stat0] < b[stat0]) and (a[12] < b[12])) + return ((a[12] + a[stat0]) < (b[12] + b[stat0])) end - best = (find_good_item(inv_slot, UnitLevel("player"), stat0, 1, _14_))[gear_index0] + best = (find_good_item(inv_slot, UnitLevel("player"), stat0, 0, _14_))[gear_index0] if best then DEFAULT_CHAT_FRAME:AddMessage(string.format("|Hitem:%d:0:0:0:0:0:0:0:0|h[%s]|h|r", best[2], best[8])) return ui_print(("next best available: " .. best[8] .. " " .. stat_print(best) .. " at " .. best[20] .. "N/A")) @@ -187,9 +188,9 @@ local function main0(msg) local i_stat = stats[stat0] local best local function _16_(a, b) - return (a[stat0] < b[stat0]) + return ((a[12] + a[stat0]) < (b[12] + b[stat0])) end - best = (find_next_better_item(i_class, i_subclass, i_invtype, p_level, i_level, stat0, max(i_stat, 1), _16_))[gear_index0] + best = (find_next_better_item(i_class, i_subclass, i_invtype, p_level, i_level, stat0, max(i_stat, 0), _16_))[gear_index0] if best then DEFAULT_CHAT_FRAME:AddMessage(string.format("|Hitem:%d:0:0:0:0:0:0:0:0|h[%s]|h|r", best[2], best[8])) ui_print(("next best available: " .. best[8] .. " " .. stat_print(best) .. " at " .. best[20] .. "N/A"))