Mercurial > wow > wowdb-profiler
diff Main.lua @ 384:ae63dafab1e6
Replaced individual bonusID system with one that stores and tracks combinations.
author | MMOSimca <MMOSimca@gmail.com> |
---|---|
date | Fri, 12 Dec 2014 12:42:02 -0500 |
parents | d3e8a11a21ea |
children | f49252dc3de0 |
line wrap: on
line diff
--- a/Main.lua Thu Dec 11 02:42:07 2014 -0500 +++ b/Main.lua Fri Dec 12 12:42:02 2014 -0500 @@ -1054,11 +1054,10 @@ item.instance_difficulty_id = instance_difficulty_id end - -- Future code: waiting for dev time to implement server-side parsing - --[[if not item.bonus_ids then - item.bonus_ids = {} + if not item.seen_bonuses then + item.seen_bonuses = {} end - item.bonus_ids[0] = true]]-- + item.seen_bonuses[0] = true end elseif num_bonus_ids > 0 then item = DBEntry("items", item_id) @@ -1066,15 +1065,36 @@ item.unique_id = bit.band(unique_id, 0xFFFF) item.instance_difficulty_id = instance_difficulty_id - if not item.bonus_ids then - item.bonus_ids = {} + if not item.seen_bonuses then + item.seen_bonuses = {} end - - for bonus_index = 1, num_bonus_ids do - item.bonus_ids[tonumber(item_results[13 + bonus_index])] = true + + -- We want the bonus ID combo output to be in the form ["bonusID1:bonusID2:bonusID3"] = true + -- And sorted numerically with the smallest bonusID first + local sorted_bonus_string = "" + local min_bonus_id_array = {} + for iterations = 1, num_bonus_ids do + -- Find minimum of this iteration + local min_bonus_id = 100000 + for bonus_index = 1, num_bonus_ids do + local temp_bonus_id = tonumber(item_results[13 + bonus_index]) + if (not min_bonus_id_array[temp_bonus_id]) and (min_bonus_id < temp_bonus_id) then + min_bonus_id = temp_bonus_id + end + end + + -- Keep track of already processed IDs + min_bonus_id_array[min_bonus_id] = true + + -- Build string + if iterations == 1 then + sorted_bonus_string = sorted_bonus_string .. tostring(min_bonus_id) + else + sorted_bonus_string = sorted_bonus_string .. ":" .. tostring(min_bonus_id) + end end - - Debug("RecordItemData: Recorded bonusIDs for %d.", item_id) + + Debug("RecordItemData: Recorded bonus IDs %s for item %d.", sorted_bonus_string, item_id) else Debug("RecordItemData: num_bonus_ids is supposed to be 0 or positive, instead it was %d.", num_bonus_ids) end