Mercurial > wow > wowdb-profiler
comparison Main.lua @ 309:3b9c6d588e62 5.3.0-2
Looting fixes.
author | James D. Callahan III <jcallahan@curse.com> |
---|---|
date | Wed, 14 Aug 2013 14:35:45 -0500 |
parents | 22e2e16318e5 |
children | de9d571df07f |
comparison
equal
deleted
inserted
replaced
308:22e2e16318e5 | 309:3b9c6d588e62 |
---|---|
654 end | 654 end |
655 source_list[source_id] = true | 655 source_list[source_id] = true |
656 end | 656 end |
657 UpdateDBEntryLocation(data_type, source_id) | 657 UpdateDBEntryLocation(data_type, source_id) |
658 | 658 |
659 if current_loot.target_type == AF.OBJECT then | 659 if current_loot.target_type == AF.ZONE then |
660 for item_id, quantity in pairs(loot_data) do | |
661 table.insert(loot_table, ("%d:%d"):format(item_id, quantity)) | |
662 end | |
663 else | |
660 for loot_token, quantity in pairs(loot_data) do | 664 for loot_token, quantity in pairs(loot_data) do |
661 local label, currency_texture = (":"):split(loot_token) | 665 local label, currency_texture = (":"):split(loot_token) |
662 | 666 |
663 if label == "currency" and currency_texture then | 667 if label == "currency" and currency_texture then |
664 table.insert(loot_table, ("currency:%d:%s"):format(quantity, currency_texture)) | 668 table.insert(loot_table, ("currency:%d:%s"):format(quantity, currency_texture)) |
665 elseif loot_token == "money" then | 669 elseif loot_token == "money" then |
666 table.insert(loot_table, ("money:%d"):format(quantity)) | 670 table.insert(loot_table, ("money:%d"):format(quantity)) |
667 else | 671 else |
668 table.insert(loot_table, ("%d:%d"):format(loot_token, quantity)) | 672 table.insert(loot_table, ("%d:%d"):format(loot_token, quantity)) |
669 end | 673 end |
670 end | |
671 else | |
672 for item_id, quantity in pairs(loot_data) do | |
673 table.insert(loot_table, ("%d:%d"):format(item_id, quantity)) | |
674 end | 674 end |
675 end | 675 end |
676 end | 676 end |
677 end | 677 end |
678 end | 678 end |
1694 encounter_data.loot_counts = encounter_data.loot_counts or {} | 1694 encounter_data.loot_counts = encounter_data.loot_counts or {} |
1695 encounter_data.loot_counts[loot_type] = (encounter_data.loot_counts[loot_type] or 0) + 1 | 1695 encounter_data.loot_counts[loot_type] = (encounter_data.loot_counts[loot_type] or 0) + 1 |
1696 source_list[source_id] = true | 1696 source_list[source_id] = true |
1697 end | 1697 end |
1698 | 1698 |
1699 for item_id, quantity in pairs(loot_data) do | 1699 for loot_token, quantity in pairs(loot_data) do |
1700 table.insert(encounter_data[loot_type], ("%d:%d"):format(item_id, quantity)) | 1700 local label, currency_texture = (":"):split(loot_token) |
1701 | |
1702 if label == "currency" and currency_texture then | |
1703 table.insert(encounter_data[loot_type], ("currency:%d:%s"):format(quantity, currency_texture)) | |
1704 elseif loot_token == "money" then | |
1705 table.insert(encounter_data[loot_type], ("money:%d"):format(quantity)) | |
1706 else | |
1707 table.insert(encounter_data[loot_type], ("%d:%d"):format(loot_token, quantity)) | |
1708 end | |
1701 end | 1709 end |
1702 end | 1710 end |
1703 end | |
1704 | |
1705 -- TODO: Remove this when GetLootSourceInfo() has values for money | |
1706 if #current_loot.list <= 0 then | |
1707 return | |
1708 end | |
1709 local npc = NPCEntry(current_loot.identifier) | |
1710 | |
1711 if not npc then | |
1712 return | |
1713 end | |
1714 local encounter_data = npc:EncounterData(difficulty_token) | |
1715 encounter_data[loot_type] = encounter_data[loot_type] or {} | |
1716 | |
1717 if not source_list[current_loot.identifier] then | |
1718 encounter_data.loot_counts = encounter_data.loot_counts or {} | |
1719 encounter_data.loot_counts[loot_type] = (encounter_data.loot_counts[loot_type] or 0) + 1 | |
1720 end | |
1721 | |
1722 for index = 1, #current_loot.list do | |
1723 table.insert(encounter_data[loot_type], current_loot.list[index]) | |
1724 end | 1711 end |
1725 end, | 1712 end, |
1726 [AF.OBJECT] = function() | 1713 [AF.OBJECT] = function() |
1727 GenericLootUpdate("objects", InstanceDifficultyToken()) | 1714 GenericLootUpdate("objects", InstanceDifficultyToken()) |
1728 end, | 1715 end, |
1800 for loot_index = 1, #loot_info, 2 do | 1787 for loot_index = 1, #loot_info, 2 do |
1801 local source_guid = loot_info[loot_index] | 1788 local source_guid = loot_info[loot_index] |
1802 | 1789 |
1803 if not loot_guid_registry[current_loot.label][source_guid] then | 1790 if not loot_guid_registry[current_loot.label][source_guid] then |
1804 local loot_quantity = loot_info[loot_index + 1] | 1791 local loot_quantity = loot_info[loot_index + 1] |
1792 if #loot_info == 2 and slot_quantity > loot_quantity then | |
1793 loot_quantity = slot_quantity | |
1794 end | |
1805 local source_type, source_id = ParseGUID(source_guid) | 1795 local source_type, source_id = ParseGUID(source_guid) |
1806 local source_key = ("%s:%d"):format(private.UNIT_TYPE_NAMES[source_type + 1], source_id) | 1796 local source_key = ("%s:%d"):format(private.UNIT_TYPE_NAMES[source_type + 1], source_id) |
1807 Debug("GUID: %s - Type:ID: %s - Amount: %d (%d)", loot_info[loot_index], source_key, loot_quantity, slot_quantity) | 1797 Debug("GUID: %s - Type:ID: %s - Amount: %d (%d)", loot_info[loot_index], source_key, loot_info[loot_index + 1], slot_quantity) |
1808 | 1798 |
1809 if slot_type == _G.LOOT_SLOT_ITEM then | 1799 if slot_type == _G.LOOT_SLOT_ITEM then |
1810 local item_id = ItemLinkToID(_G.GetLootSlotLink(loot_slot)) | 1800 local item_id = ItemLinkToID(_G.GetLootSlotLink(loot_slot)) |
1811 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} | 1801 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} |
1812 current_loot.sources[source_guid][item_id] = current_loot.sources[source_guid][item_id] or 0 + slot_quantity | 1802 current_loot.sources[source_guid][item_id] = current_loot.sources[source_guid][item_id] or 0 + loot_quantity |
1813 guids_used[source_guid] = true | 1803 guids_used[source_guid] = true |
1814 elseif slot_type == _G.LOOT_SLOT_MONEY then | 1804 elseif slot_type == _G.LOOT_SLOT_MONEY then |
1815 if current_loot.target_type == AF.OBJECT then | 1805 Debug("money:%d", loot_quantity) |
1816 Debug("money:%d", _toCopper(item_text)) | 1806 if current_loot.target_type == AF.ZONE then |
1807 table.insert(current_loot.list, ("money:%d"):format(_toCopper(item_text))) | |
1808 else | |
1817 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} | 1809 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} |
1818 current_loot.sources[source_guid]["money"] = current_loot.sources[source_guid]["money"] or 0 + _toCopper(item_text) | 1810 current_loot.sources[source_guid]["money"] = current_loot.sources[source_guid]["money"] or 0 + loot_quantity |
1819 else | 1811 guids_used[source_guid] = true |
1820 Debug("money:%d", _toCopper(item_text)) | |
1821 table.insert(current_loot.list, ("money:%d"):format(_toCopper(item_text))) | |
1822 end | 1812 end |
1823 elseif slot_type == _G.LOOT_SLOT_CURRENCY then | 1813 elseif slot_type == _G.LOOT_SLOT_CURRENCY then |
1824 if current_loot.target_type == AF.OBJECT then | 1814 Debug("Found currency - %s:%d", icon_texture, loot_quantity) |
1815 if current_loot.target_type == AF.ZONE then | |
1816 table.insert(current_loot.list, ("currency:%d:%s"):format(slot_quantity, icon_texture:match("[^\\]+$"):lower())) | |
1817 else | |
1825 local currency_token = ("currency:%s"):format(icon_texture:match("[^\\]+$"):lower()) | 1818 local currency_token = ("currency:%s"):format(icon_texture:match("[^\\]+$"):lower()) |
1826 Debug("Found currency: %s", icon_texture) | |
1827 | 1819 |
1828 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} | 1820 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} |
1829 current_loot.sources[source_guid][currency_token] = current_loot.sources[source_guid][currency_token] or 0 + slot_quantity | 1821 current_loot.sources[source_guid][currency_token] = current_loot.sources[source_guid][currency_token] or 0 + loot_quantity |
1830 else | 1822 guids_used[source_guid] = true |
1831 Debug("Found currency: %s", icon_texture) | |
1832 table.insert(current_loot.list, ("currency:%d:%s"):format(slot_quantity, icon_texture:match("[^\\]+$"):lower())) | |
1833 end | 1823 end |
1834 end | 1824 end |
1835 end | 1825 end |
1836 end | 1826 end |
1837 end | 1827 end |
2007 table.wipe(current_action) | 1997 table.wipe(current_action) |
2008 end | 1998 end |
2009 | 1999 |
2010 | 2000 |
2011 function WDP:PET_JOURNAL_LIST_UPDATE(event_name) | 2001 function WDP:PET_JOURNAL_LIST_UPDATE(event_name) |
2002 -- this function produces data currently unused by wowdb.com and it makes debugging errors in the .lua output nearly impossible due to the massive bloat | |
2003 if DEBUGGING then | |
2004 return | |
2005 end | |
2006 | |
2012 local num_pets = LPJ:NumPets() | 2007 local num_pets = LPJ:NumPets() |
2013 | 2008 |
2014 for index, pet_id in LPJ:IteratePetIDs() do | 2009 for index, pet_id in LPJ:IteratePetIDs() do |
2015 local _, _, is_owned, _, level, _, _, name, icon, pet_type, npc_id, _, _, is_wild = _G.C_PetJournal.GetPetInfoByIndex(index) | 2010 local _, _, is_owned, _, level, _, _, name, icon, pet_type, npc_id, _, _, is_wild = _G.C_PetJournal.GetPetInfoByIndex(index) |
2016 | 2011 |