comparison Main.lua @ 304:1e55a8ebedbd

Fixed double-counting for loot in items.
author James D. Callahan III <jcallahan@curse.com>
date Mon, 08 Jul 2013 13:26:23 -0500
parents e54e370e3a01
children 4986ef8a338a
comparison
equal deleted inserted replaced
303:e54e370e3a01 304:1e55a8ebedbd
592 local loot_count = ("%s_count"):format(loot_type) 592 local loot_count = ("%s_count"):format(loot_type)
593 local source_list = {} 593 local source_list = {}
594 594
595 if current_loot.sources then 595 if current_loot.sources then
596 for source_guid, loot_data in pairs(current_loot.sources) do 596 for source_guid, loot_data in pairs(current_loot.sources) do
597 local entry, source_id 597 local source_id
598 598
599 if current_loot.target_type == AF.ITEM then 599 if current_loot.target_type == AF.ITEM then
600 -- Items return the player as the source, so we need to use the item's ID (disenchant, milling, etc) 600 -- Items return the player as the source, so we need to use the item's ID (disenchant, milling, etc)
601 source_id = current_loot.identifier 601 source_id = current_loot.identifier
602 entry = DBEntry(data_type, source_id)
603 elseif current_loot.target_type == AF.OBJECT then 602 elseif current_loot.target_type == AF.OBJECT then
604 source_id = ("%s:%s"):format(current_loot.spell_label, select(2, ParseGUID(source_guid))) 603 source_id = ("%s:%s"):format(current_loot.spell_label, select(2, ParseGUID(source_guid)))
605 entry = DBEntry(data_type, source_id)
606 else 604 else
607 source_id = select(2, ParseGUID(source_guid)) 605 source_id = select(2, ParseGUID(source_guid))
608 entry = DBEntry(data_type, source_id)
609 end 606 end
607 local entry = DBEntry(data_type, source_id)
610 608
611 if entry then 609 if entry then
612 local loot_table = LootTable(entry, loot_type, top_field) 610 local loot_table = LootTable(entry, loot_type, top_field)
613 611
614 if not source_list[source_guid] then 612 if not source_list[source_id] then
615 if top_field then 613 if top_field then
616 entry[top_field][loot_count] = (entry[top_field][loot_count] or 0) + 1 614 entry[top_field][loot_count] = (entry[top_field][loot_count] or 0) + 1
617 else 615 else
618 entry[loot_count] = (entry[loot_count] or 0) + 1 616 entry[loot_count] = (entry[loot_count] or 0) + 1
619 end 617 end
620 source_list[source_guid] = true 618 source_list[source_id] = true
621 end 619 end
622 UpdateDBEntryLocation(data_type, source_id) 620 UpdateDBEntryLocation(data_type, source_id)
623 621
624 for item_id, quantity in pairs(loot_data) do 622 for item_id, quantity in pairs(loot_data) do
625 table.insert(loot_table, ("%d:%d"):format(item_id, quantity)) 623 table.insert(loot_table, ("%d:%d"):format(item_id, quantity))
650 if top_field then 648 if top_field then
651 entry[top_field][loot_count] = (entry[top_field][loot_count] or 0) + 1 649 entry[top_field][loot_count] = (entry[top_field][loot_count] or 0) + 1
652 else 650 else
653 entry[loot_count] = (entry[loot_count] or 0) + 1 651 entry[loot_count] = (entry[loot_count] or 0) + 1
654 end 652 end
653 source_list[current_loot.identifier] = true
655 end 654 end
656 655
657 for index = 1, #current_loot.list do 656 for index = 1, #current_loot.list do
658 table.insert(loot_table, current_loot.list[index]) 657 table.insert(loot_table, current_loot.list[index])
659 end 658 end