Mercurial > wow > wowdb-profiler
comparison Main.lua @ 41:7db268f39c50
Record fishing drops and drop count on a per-coordinate-pair basis. Record disenchanting/milling/prospecting/etc counts.
author | James D. Callahan III <jcallahan@curse.com> |
---|---|
date | Wed, 13 Jun 2012 12:29:43 -0500 |
parents | 4ae5cde37458 |
children | a2f1fcc1a813 |
comparison
equal
deleted
inserted
replaced
40:4ae5cde37458 | 41:7db268f39c50 |
---|---|
253 local function UpdateDBEntryLocation(entry_type, identifier) | 253 local function UpdateDBEntryLocation(entry_type, identifier) |
254 if not identifier then | 254 if not identifier then |
255 return | 255 return |
256 end | 256 end |
257 local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData() | 257 local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData() |
258 local object = DBEntry(entry_type, identifier) | 258 local entry = DBEntry(entry_type, identifier) |
259 object[difficulty_token] = object[difficulty_token] or {} | 259 entry[difficulty_token] = entry[difficulty_token] or {} |
260 object[difficulty_token].locations = object[difficulty_token].locations or {} | 260 entry[difficulty_token].locations = entry[difficulty_token].locations or {} |
261 | 261 |
262 local zone_token = ("%s:%d"):format(zone_name, area_id) | 262 local zone_token = ("%s:%d"):format(zone_name, area_id) |
263 local zone_data = object[difficulty_token].locations[zone_token] | 263 local zone_data = entry[difficulty_token].locations[zone_token] |
264 | 264 |
265 if not zone_data then | 265 if not zone_data then |
266 zone_data = {} | 266 zone_data = {} |
267 object[difficulty_token].locations[zone_token] = zone_data | 267 entry[difficulty_token].locations[zone_token] = zone_data |
268 end | 268 end |
269 zone_data[("%s:%s:%s"):format(map_level, x, y)] = true | 269 local location_token = ("%s:%s:%s"):format(map_level, x, y) |
270 zone_data[location_token] = zone_data[location_token] or true | |
271 return zone_data | |
270 end | 272 end |
271 | 273 |
272 | 274 |
273 local function HandleItemUse(item_link, bag_index, slot_index) | 275 local function HandleItemUse(item_link, bag_index, slot_index) |
274 if not item_link then | 276 if not item_link then |
625 return _G.IsFishingLoot() | 627 return _G.IsFishingLoot() |
626 end, | 628 end, |
627 } | 629 } |
628 | 630 |
629 | 631 |
630 local function GenericLootUpdate(data_type, top_field) | 632 local function GenericLootUpdate(data_type, top_field, inline_drops) |
631 local entry = DBEntry(data_type, action_data.identifier) | 633 local entry = DBEntry(data_type, action_data.identifier) |
632 | 634 |
633 if not entry then | 635 if not entry then |
634 return | 636 return |
635 end | 637 end |
651 end | 653 end |
652 | 654 |
653 | 655 |
654 local LOOT_UPDATE_FUNCS = { | 656 local LOOT_UPDATE_FUNCS = { |
655 [AF.ITEM] = function() | 657 [AF.ITEM] = function() |
658 local item = DBEntry("items", action_data.identifier) | |
659 local loot_count = ("%s_count"):format(action_data.label or "drops") | |
660 item[loot_count] = (item[loot_count] or 0) + 1 | |
656 GenericLootUpdate("items") | 661 GenericLootUpdate("items") |
657 end, | 662 end, |
658 [AF.NPC] = function() | 663 [AF.NPC] = function() |
659 local npc = NPCEntry(action_data.identifier) | 664 local npc = NPCEntry(action_data.identifier) |
660 | 665 |
673 end, | 678 end, |
674 [AF.OBJECT] = function() | 679 [AF.OBJECT] = function() |
675 GenericLootUpdate("objects", InstanceDifficultyToken()) | 680 GenericLootUpdate("objects", InstanceDifficultyToken()) |
676 end, | 681 end, |
677 [AF.ZONE] = function() | 682 [AF.ZONE] = function() |
678 GenericLootUpdate("zones", InstanceDifficultyToken()) | 683 local location_token = ("%s:%s:%s"):format(action_data.map_level, action_data.x, action_data.y) |
684 | |
685 -- This will start life as a boolean true. | |
686 if _G.type(action_data.zone_data[location_token]) ~= "table" then | |
687 action_data.zone_data[location_token] = { | |
688 drops = {} | |
689 } | |
690 end | |
691 local loot_count = ("%s_count"):format(action_data.label or "drops") | |
692 action_data.zone_data[location_token][loot_count] = (action_data.zone_data[location_token][loot_count] or 0) + 1 | |
693 | |
694 for index = 1, #action_data.loot_list do | |
695 table.insert(action_data.zone_data[location_token].drops, action_data.loot_list[index]) | |
696 end | |
679 end, | 697 end, |
680 } | 698 } |
681 | 699 |
682 | 700 |
683 function WDP:LOOT_OPENED() | 701 function WDP:LOOT_OPENED() |
1092 | 1110 |
1093 action_data.type = AF.OBJECT | 1111 action_data.type = AF.OBJECT |
1094 action_data.identifier = identifier | 1112 action_data.identifier = identifier |
1095 elseif bit.band(spell_flags, AF.ZONE) == AF.ZONE then | 1113 elseif bit.band(spell_flags, AF.ZONE) == AF.ZONE then |
1096 local identifier = ("%s:%s"):format(spell_label, _G["GameTooltipTextLeft1"]:GetText() or "NONE") -- Possible fishing pool name. | 1114 local identifier = ("%s:%s"):format(spell_label, _G["GameTooltipTextLeft1"]:GetText() or "NONE") -- Possible fishing pool name. |
1097 UpdateDBEntryLocation("zones", identifier) | 1115 action_data.zone_data = UpdateDBEntryLocation("zones", identifier) |
1098 | |
1099 action_data.type = AF.ZONE | 1116 action_data.type = AF.ZONE |
1100 action_data.identifier = identifier | 1117 action_data.identifier = identifier |
1101 end | 1118 end |
1102 end | 1119 end |
1103 private.tracked_line = spell_line | 1120 private.tracked_line = spell_line |