Mercurial > wow > wowdb-profiler
comparison Main.lua @ 151:e2331b00a1cf 1.0.15
Added some debugging prints (turned off). Removed defaulting to NPC if no target_type - simply ignore the loot. Removed setting target_type to NPC every time a target's location is updated. Ensure the unit name on the tooltip matches the spell's target name. Bumped DB version to 10.
| author | James D. Callahan III <jcallahan@curse.com> |
|---|---|
| date | Wed, 03 Oct 2012 17:27:10 -0500 |
| parents | 11f242b0b170 |
| children | d29109b5aaea |
comparison
equal
deleted
inserted
replaced
| 150:11f242b0b170 | 151:e2331b00a1cf |
|---|---|
| 30 | 30 |
| 31 | 31 |
| 32 ----------------------------------------------------------------------- | 32 ----------------------------------------------------------------------- |
| 33 -- Local constants. | 33 -- Local constants. |
| 34 ----------------------------------------------------------------------- | 34 ----------------------------------------------------------------------- |
| 35 local DB_VERSION = 9 | 35 local DB_VERSION = 10 |
| 36 | 36 local DEBUGGING = false |
| 37 | 37 |
| 38 local DATABASE_DEFAULTS = { | 38 local DATABASE_DEFAULTS = { |
| 39 char = {}, | 39 char = {}, |
| 40 global = { | 40 global = { |
| 41 items = {}, | 41 items = {}, |
| 152 } | 152 } |
| 153 | 153 |
| 154 ----------------------------------------------------------------------- | 154 ----------------------------------------------------------------------- |
| 155 -- Helper Functions. | 155 -- Helper Functions. |
| 156 ----------------------------------------------------------------------- | 156 ----------------------------------------------------------------------- |
| 157 local function Debug(...) | |
| 158 if not DEBUGGING then | |
| 159 return | |
| 160 end | |
| 161 _G.print(...) | |
| 162 end | |
| 163 | |
| 164 | |
| 157 local ActualCopperCost | 165 local ActualCopperCost |
| 158 do | 166 do |
| 159 local BARTERING_SPELL_ID = 83964 | 167 local BARTERING_SPELL_ID = 83964 |
| 160 | 168 |
| 161 local STANDING_DISCOUNTS = { | 169 local STANDING_DISCOUNTS = { |
| 772 local power_type = _G.UnitPowerType("target") | 780 local power_type = _G.UnitPowerType("target") |
| 773 encounter_data[npc_level].power = ("%s:%d"):format(POWER_TYPE_NAMES[_G.tostring(power_type)] or power_type, max_power) | 781 encounter_data[npc_level].power = ("%s:%d"):format(POWER_TYPE_NAMES[_G.tostring(power_type)] or power_type, max_power) |
| 774 end | 782 end |
| 775 end | 783 end |
| 776 name_to_id_map[_G.UnitName("target")] = unit_idnum | 784 name_to_id_map[_G.UnitName("target")] = unit_idnum |
| 777 | |
| 778 current_action.target_type = AF.NPC | |
| 779 current_action.identifier = unit_idnum | 785 current_action.identifier = unit_idnum |
| 780 return npc, unit_idnum | 786 return npc, unit_idnum |
| 781 end | 787 end |
| 782 end -- do-block | 788 end -- do-block |
| 783 | 789 |
| 1262 -- Prevent opening the same loot window multiple times from recording data multiple times. | 1268 -- Prevent opening the same loot window multiple times from recording data multiple times. |
| 1263 local loot_guid_registry = {} | 1269 local loot_guid_registry = {} |
| 1264 | 1270 |
| 1265 | 1271 |
| 1266 function WDP:LOOT_CLOSED(event_name) | 1272 function WDP:LOOT_CLOSED(event_name) |
| 1273 Debug(event_name) | |
| 1267 current_loot = nil | 1274 current_loot = nil |
| 1268 table.wipe(current_action) | 1275 table.wipe(current_action) |
| 1269 end | 1276 end |
| 1270 | 1277 |
| 1271 | 1278 |
| 1272 function WDP:LOOT_OPENED(event_name) | 1279 function WDP:LOOT_OPENED(event_name) |
| 1273 if current_loot then | 1280 if current_loot then |
| 1274 return | 1281 return |
| 1275 end | 1282 end |
| 1276 current_action.target_type = current_action.target_type or AF.NPC | 1283 |
| 1284 Debug(event_name) | |
| 1285 if not current_action.target_type then | |
| 1286 Debug("No target type.") | |
| 1287 return | |
| 1288 else | |
| 1289 Debug(("current_action.target_type: %s"):format(private.ACTION_TYPE_NAMES[current_action.target_type])) | |
| 1290 end | |
| 1277 | 1291 |
| 1278 local verify_func = LOOT_VERIFY_FUNCS[current_action.target_type] | 1292 local verify_func = LOOT_VERIFY_FUNCS[current_action.target_type] |
| 1279 local update_func = LOOT_UPDATE_FUNCS[current_action.target_type] | 1293 local update_func = LOOT_UPDATE_FUNCS[current_action.target_type] |
| 1280 | 1294 |
| 1281 if not verify_func or not update_func then | 1295 if not verify_func or not update_func then |
| 1318 | 1332 |
| 1319 if not loot_guid_registry[source_guid] then | 1333 if not loot_guid_registry[source_guid] then |
| 1320 local loot_quantity = loot_info[loot_index + 1] | 1334 local loot_quantity = loot_info[loot_index + 1] |
| 1321 local source_type, source_id = ParseGUID(source_guid) | 1335 local source_type, source_id = ParseGUID(source_guid) |
| 1322 -- TODO: Remove debugging | 1336 -- TODO: Remove debugging |
| 1323 -- local source_key = ("%s:%d"):format(private.UNIT_TYPE_NAMES[source_type + 1], source_id) | 1337 local source_key = ("%s:%d"):format(private.UNIT_TYPE_NAMES[source_type + 1], source_id) |
| 1324 -- print(("GUID: %s - Type:ID: %s - Amount: %d"):format(loot_info[loot_index], source_key, loot_quantity)) | 1338 Debug(("GUID: %s - Type:ID: %s - Amount: %d"):format(loot_info[loot_index], source_key, loot_quantity)) |
| 1325 | 1339 |
| 1326 local item_id = ItemLinkToID(_G.GetLootSlotLink(loot_slot)) | 1340 local item_id = ItemLinkToID(_G.GetLootSlotLink(loot_slot)) |
| 1327 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} | 1341 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} |
| 1328 current_loot.sources[source_guid][item_id] = current_loot.sources[source_guid][item_id] or 0 + loot_quantity | 1342 current_loot.sources[source_guid][item_id] = current_loot.sources[source_guid][item_id] or 0 + loot_quantity |
| 1329 guids_used[source_guid] = true | 1343 guids_used[source_guid] = true |
| 1537 | 1551 |
| 1538 function WDP:PLAYER_TARGET_CHANGED(event_name) | 1552 function WDP:PLAYER_TARGET_CHANGED(event_name) |
| 1539 if not PlayerTarget() then | 1553 if not PlayerTarget() then |
| 1540 return | 1554 return |
| 1541 end | 1555 end |
| 1556 Debug(event_name) | |
| 1557 current_action.target_type = AF.NPC | |
| 1542 self:UpdateTargetLocation() | 1558 self:UpdateTargetLocation() |
| 1543 end | 1559 end |
| 1544 | 1560 |
| 1545 | 1561 |
| 1546 do | 1562 do |
| 1771 if private.tracked_line or unit_id ~= "player" then | 1787 if private.tracked_line or unit_id ~= "player" then |
| 1772 return | 1788 return |
| 1773 end | 1789 end |
| 1774 local spell_label = private.SPELL_LABELS_BY_NAME[spell_name] | 1790 local spell_label = private.SPELL_LABELS_BY_NAME[spell_name] |
| 1775 | 1791 |
| 1792 Debug(event_name, unit_id, spell_name, spell_rank, target_name, spell_line) | |
| 1793 | |
| 1776 if not spell_label then | 1794 if not spell_label then |
| 1777 return | 1795 return |
| 1778 end | 1796 end |
| 1779 table.wipe(current_action) | 1797 table.wipe(current_action) |
| 1780 | 1798 |
| 1781 local item_name, item_link = _G.GameTooltip:GetItem() | 1799 local item_name, item_link = _G.GameTooltip:GetItem() |
| 1782 local unit_name, unit_id = _G.GameTooltip:GetUnit() | 1800 local unit_name, unit_id = _G.GameTooltip:GetUnit() |
| 1801 | |
| 1802 Debug(("Item name: '%s', Unit name: '%s'"):format(tostring(item_name), tostring(unit_name))) | |
| 1783 | 1803 |
| 1784 if not unit_name and _G.UnitName("target") == target_name then | 1804 if not unit_name and _G.UnitName("target") == target_name then |
| 1785 unit_name = target_name | 1805 unit_name = target_name |
| 1786 unit_id = "target" | 1806 unit_id = "target" |
| 1787 end | 1807 end |
| 1797 | 1817 |
| 1798 if not private.NON_LOOT_SPELL_LABELS[spell_label] then | 1818 if not private.NON_LOOT_SPELL_LABELS[spell_label] then |
| 1799 current_action.loot_label = spell_label:lower() | 1819 current_action.loot_label = spell_label:lower() |
| 1800 end | 1820 end |
| 1801 | 1821 |
| 1802 if unit_name and not item_name then | 1822 if unit_name and unit_name == target_name and not item_name then |
| 1823 Debug("Unit name is same as target_name") | |
| 1803 if bit.band(spell_flags, AF.NPC) == AF.NPC then | 1824 if bit.band(spell_flags, AF.NPC) == AF.NPC then |
| 1804 if not unit_id or unit_name ~= target_name then | 1825 if not unit_id or unit_name ~= target_name then |
| 1805 return | 1826 return |
| 1806 end | 1827 end |
| 1807 current_action.target_type = AF.NPC | 1828 current_action.target_type = AF.NPC |
| 1815 current_action.identifier = ItemLinkToID(select(2, _G.GetItemInfo(target_name))) | 1836 current_action.identifier = ItemLinkToID(select(2, _G.GetItemInfo(target_name))) |
| 1816 end | 1837 end |
| 1817 elseif not item_name and not unit_name then | 1838 elseif not item_name and not unit_name then |
| 1818 if bit.band(spell_flags, AF.OBJECT) == AF.OBJECT then | 1839 if bit.band(spell_flags, AF.OBJECT) == AF.OBJECT then |
| 1819 if target_name == "" then | 1840 if target_name == "" then |
| 1841 Debug("Didn't set current_action.target_type") | |
| 1820 return | 1842 return |
| 1821 end | 1843 end |
| 1822 current_action.object_name = target_name | 1844 current_action.object_name = target_name |
| 1823 current_action.target_type = AF.OBJECT | 1845 current_action.target_type = AF.OBJECT |
| 1846 | |
| 1847 Debug(("Set current_action.target_type to %s"):format(private.ACTION_TYPE_NAMES[current_action.target_type])) | |
| 1824 elseif bit.band(spell_flags, AF.ZONE) == AF.ZONE then | 1848 elseif bit.band(spell_flags, AF.ZONE) == AF.ZONE then |
| 1825 current_action.target_type = AF.ZONE | 1849 current_action.target_type = AF.ZONE |
| 1826 end | 1850 end |
| 1827 end | 1851 end |
| 1828 private.tracked_line = spell_line | 1852 private.tracked_line = spell_line |
| 1832 function WDP:UNIT_SPELLCAST_SUCCEEDED(event_name, unit_id, spell_name, spell_rank, spell_line, spell_id) | 1856 function WDP:UNIT_SPELLCAST_SUCCEEDED(event_name, unit_id, spell_name, spell_rank, spell_line, spell_id) |
| 1833 if unit_id ~= "player" then | 1857 if unit_id ~= "player" then |
| 1834 return | 1858 return |
| 1835 end | 1859 end |
| 1836 private.tracked_line = nil | 1860 private.tracked_line = nil |
| 1861 | |
| 1862 Debug(event_name) | |
| 1837 | 1863 |
| 1838 if spell_name:match("^Harvest.+") then | 1864 if spell_name:match("^Harvest.+") then |
| 1839 reputation_npc_id = current_target_id | 1865 reputation_npc_id = current_target_id |
| 1840 private.harvesting = true | 1866 private.harvesting = true |
| 1841 end | 1867 end |
| 1850 | 1876 |
| 1851 function WDP:HandleSpellFailure(event_name, unit_id, spell_name, spell_rank, spell_line, spell_id) | 1877 function WDP:HandleSpellFailure(event_name, unit_id, spell_name, spell_rank, spell_line, spell_id) |
| 1852 if unit_id ~= "player" then | 1878 if unit_id ~= "player" then |
| 1853 return | 1879 return |
| 1854 end | 1880 end |
| 1881 Debug(event_name) | |
| 1855 | 1882 |
| 1856 if private.tracked_line == spell_line then | 1883 if private.tracked_line == spell_line then |
| 1857 private.tracked_line = nil | 1884 private.tracked_line = nil |
| 1858 end | 1885 end |
| 1859 table.wipe(current_action) | 1886 table.wipe(current_action) |
