Mercurial > wow > wowdb-profiler
comparison Main.lua @ 331:998f3264b482 WoD
Cleanups, and eradicate usage of select() where it isn't a one-time thing (such as in the main chunk).
| author | James D. Callahan III <jcallahan@curse.com> |
|---|---|
| date | Tue, 26 Aug 2014 10:41:52 -0500 |
| parents | 84817627cb22 |
| children | 5ef583564381 |
comparison
equal
deleted
inserted
replaced
| 329:84817627cb22 | 331:998f3264b482 |
|---|---|
| 378 __index = npc_prototype | 378 __index = npc_prototype |
| 379 } | 379 } |
| 380 | 380 |
| 381 function NPCEntry(identifier) | 381 function NPCEntry(identifier) |
| 382 local npc = DBEntry("npcs", identifier) | 382 local npc = DBEntry("npcs", identifier) |
| 383 | 383 return npc and _G.setmetatable(npc, npc_meta) or nil |
| 384 if not npc then | |
| 385 return | |
| 386 end | |
| 387 return _G.setmetatable(npc, npc_meta) | |
| 388 end | 384 end |
| 389 | 385 |
| 390 function npc_prototype:EncounterData(difficulty_token) | 386 function npc_prototype:EncounterData(difficulty_token) |
| 391 self.encounter_data = self.encounter_data or {} | 387 self.encounter_data = self.encounter_data or {} |
| 392 self.encounter_data[difficulty_token] = self.encounter_data[difficulty_token] or {} | 388 self.encounter_data[difficulty_token] = self.encounter_data[difficulty_token] or {} |
| 682 | 678 |
| 683 if current_loot.target_type == AF.ITEM then | 679 if current_loot.target_type == AF.ITEM then |
| 684 -- Items return the player as the source, so we need to use the item's ID (disenchant, milling, etc) | 680 -- Items return the player as the source, so we need to use the item's ID (disenchant, milling, etc) |
| 685 source_id = current_loot.identifier | 681 source_id = current_loot.identifier |
| 686 else | 682 else |
| 687 local unit_ID = select(2, ParseGUID(source_guid)) | 683 local _, unit_ID = ParseGUID(source_guid) |
| 688 if unit_ID then | 684 if unit_ID then |
| 689 if current_loot.target_type == AF.OBJECT then | 685 if current_loot.target_type == AF.OBJECT then |
| 690 source_id = ("%s:%s"):format(current_loot.spell_label, unit_ID) | 686 source_id = ("%s:%s"):format(current_loot.spell_label, unit_ID) |
| 691 else | 687 else |
| 692 source_id = unit_ID | 688 source_id = unit_ID |
| 813 | 809 |
| 814 if not map_visible then | 810 if not map_visible then |
| 815 _G.SetCVar("Sound_EnableSFX", 0) | 811 _G.SetCVar("Sound_EnableSFX", 0) |
| 816 world_map:Show() | 812 world_map:Show() |
| 817 end | 813 end |
| 818 local micro_dungeon_id = MICRO_DUNGEON_IDS[select(5, _G.GetMapInfo())] | 814 local _, _, _, _, micro_dungeon_map_name = _G.GetMapInfo() |
| 815 local micro_dungeon_id = MICRO_DUNGEON_IDS[micro_dungeon_map_name] | |
| 819 | 816 |
| 820 _G.SetMapToCurrentZone() | 817 _G.SetMapToCurrentZone() |
| 821 | 818 |
| 822 if micro_dungeon_id then | 819 if micro_dungeon_id then |
| 823 current_area_id = micro_dungeon_id | 820 current_area_id = micro_dungeon_id |
| 980 | 977 |
| 981 -- do-block | 978 -- do-block |
| 982 | 979 |
| 983 | 980 |
| 984 local function RecordItemData(item_id, item_link, durability) | 981 local function RecordItemData(item_id, item_link, durability) |
| 985 local item_string = select(3, item_link:find("^|%x+|H(.+)|h%[.+%]")) | 982 local _, _, item_string = item_link:find("^|%x+|H(.+)|h%[.+%]") |
| 986 local item | 983 local item |
| 987 | 984 |
| 988 if item_string then | 985 if item_string then |
| 989 local _, _, _, _, _, _, _, suffix_id, unique_id, _, upgrade_id, instance_difficulty_id, num_bonus_ids = (":"):split(item_string) | 986 local _, _, _, _, _, _, _, suffix_id, unique_id, _, upgrade_id, instance_difficulty_id, num_bonus_ids = (":"):split(item_string) |
| 990 local bonus_ids = {select(14, (":"):split(item_string))} | 987 local _, _, _, _, _, _, _, _, _, _, _, _, _, bonus_ids = (":"):split(item_string) |
| 988 | |
| 991 upgrade_id = tonumber(upgrade_id) | 989 upgrade_id = tonumber(upgrade_id) |
| 992 instance_difficulty_id = tonumber(instance_difficulty_id) | 990 instance_difficulty_id = tonumber(instance_difficulty_id) |
| 993 num_bonus_ids = tonumber(num_bonus_ids) | 991 num_bonus_ids = tonumber(num_bonus_ids) |
| 994 if (not num_bonus_ids) or (num_bonus_ids == 0) then | 992 |
| 993 if not num_bonus_ids or num_bonus_ids == 0 then | |
| 995 if (suffix_id and suffix_id ~= 0) or (instance_difficulty_id and instance_difficulty_id ~= 0) then | 994 if (suffix_id and suffix_id ~= 0) or (instance_difficulty_id and instance_difficulty_id ~= 0) then |
| 996 item = DBEntry("items", item_id) | 995 item = DBEntry("items", item_id) |
| 997 item.unique_id = bit.band(unique_id, 0xFFFF) | 996 item.unique_id = bit.band(unique_id, 0xFFFF) |
| 998 if (suffix_id and suffix_id ~= 0) then | 997 |
| 998 if suffix_id and suffix_id ~= 0 then | |
| 999 item.suffix_id = suffix_id | 999 item.suffix_id = suffix_id |
| 1000 end | 1000 end |
| 1001 if (instance_difficulty_id and instance_difficulty_id ~= 0) then | 1001 |
| 1002 if instance_difficulty_id and instance_difficulty_id ~= 0 then | |
| 1002 item.instance_difficulty_id = instance_difficulty_id | 1003 item.instance_difficulty_id = instance_difficulty_id |
| 1003 end | 1004 end |
| 1004 end | 1005 end |
| 1005 elseif num_bonus_ids > 0 then | 1006 elseif num_bonus_ids > 0 then |
| 1006 item = DBEntry("items", item_id) | 1007 item = DBEntry("items", item_id) |
| 1007 | 1008 |
| 1008 item.unique_id = bit.band(unique_id, 0xFFFF) | 1009 item.unique_id = bit.band(unique_id, 0xFFFF) |
| 1009 item.instance_difficulty_id = instance_difficulty_id | 1010 item.instance_difficulty_id = instance_difficulty_id |
| 1010 | 1011 |
| 1011 if not item.bonus_ids then | 1012 if not item.bonus_ids then |
| 1012 item.bonus_ids = {} | 1013 item.bonus_ids = {} |
| 1013 end | 1014 end |
| 1014 | 1015 |
| 1015 for bonus_index = 1, num_bonus_ids do | 1016 for bonus_index = 1, num_bonus_ids do |
| 1016 item.bonus_ids[bonus_ids[bonus_index]] = true | 1017 item.bonus_ids[bonus_ids[bonus_index]] = true |
| 1017 end | 1018 end |
| 1018 else | 1019 else |
| 1019 Debug("RecordItemData: Item_system is supposed to be 0 or positive, instead it was %s.", item_system) | 1020 Debug("RecordItemData: Item_system is supposed to be 0 or positive, instead it was %s.", item_system) |
| 1465 end | 1466 end |
| 1466 end | 1467 end |
| 1467 end | 1468 end |
| 1468 | 1469 |
| 1469 | 1470 |
| 1470 do -- do-block | 1471 do |
| 1471 local FLAGS_NPC = bit.bor(_G.COMBATLOG_OBJECT_TYPE_GUARDIAN, _G.COMBATLOG_OBJECT_CONTROL_NPC) | 1472 local FLAGS_NPC = bit.bor(_G.COMBATLOG_OBJECT_TYPE_GUARDIAN, _G.COMBATLOG_OBJECT_CONTROL_NPC) |
| 1472 local FLAGS_NPC_CONTROL = bit.bor(_G.COMBATLOG_OBJECT_AFFILIATION_OUTSIDER, _G.COMBATLOG_OBJECT_CONTROL_NPC) | 1473 local FLAGS_NPC_CONTROL = bit.bor(_G.COMBATLOG_OBJECT_AFFILIATION_OUTSIDER, _G.COMBATLOG_OBJECT_CONTROL_NPC) |
| 1473 | 1474 |
| 1474 local function RecordNPCSpell(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name) | 1475 local function RecordNPCSpell(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name) |
| 1475 if not spell_id or spell_id == SPELL_ID_CHI_WAVE or spell_id == SPELL_ID_DISGUISE then | 1476 if not spell_id or spell_id == SPELL_ID_CHI_WAVE or spell_id == SPELL_ID_DISGUISE then |
| 1753 local difficulty_token = InstanceDifficultyToken() | 1754 local difficulty_token = InstanceDifficultyToken() |
| 1754 local loot_label = current_loot.label | 1755 local loot_label = current_loot.label |
| 1755 local source_list = {} | 1756 local source_list = {} |
| 1756 | 1757 |
| 1757 for source_guid, loot_data in pairs(current_loot.sources) do | 1758 for source_guid, loot_data in pairs(current_loot.sources) do |
| 1758 local source_id = select(2, ParseGUID(source_guid)) | 1759 local _, source_id = ParseGUID(source_guid) |
| 1759 local npc = NPCEntry(source_id) | 1760 local npc = NPCEntry(source_id) |
| 1760 | 1761 |
| 1761 if npc then | 1762 if npc then |
| 1762 local encounter_data = npc:EncounterData(difficulty_token) | 1763 local encounter_data = npc:EncounterData(difficulty_token) |
| 1763 encounter_data[loot_label] = encounter_data[loot_label] or {} | 1764 encounter_data[loot_label] = encounter_data[loot_label] or {} |
| 1889 elseif UnitTypeIsNPC(unit_type) then | 1890 elseif UnitTypeIsNPC(unit_type) then |
| 1890 current_action.loot_label = loot_label | 1891 current_action.loot_label = loot_label |
| 1891 current_action.target_type = AF.NPC | 1892 current_action.target_type = AF.NPC |
| 1892 current_action.identifier = unit_idnum | 1893 current_action.identifier = unit_idnum |
| 1893 num_npcs = num_npcs + 1 | 1894 num_npcs = num_npcs + 1 |
| 1894 -- Item container GUIDs are currently of the 'PLAYER' type; this may be unintended and could change in the future. | |
| 1895 elseif unit_type == private.UNIT_TYPES.PLAYER then | 1895 elseif unit_type == private.UNIT_TYPES.PLAYER then |
| 1896 -- Item container GUIDs are currently of the 'PLAYER' type; this may be unintended and could change in the future. | |
| 1896 current_action.loot_label = loot_label | 1897 current_action.loot_label = loot_label |
| 1897 current_action.target_type = AF.ITEM | 1898 current_action.target_type = AF.ITEM |
| 1898 -- current_action.identifier assigned during loot verification. | 1899 -- current_action.identifier assigned during loot verification. |
| 1899 num_itemcontainers = num_itemcontainers + 1 | 1900 num_itemcontainers = num_itemcontainers + 1 |
| 1900 end | 1901 end |
| 2064 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("npc")) | 2065 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("npc")) |
| 2065 | 2066 |
| 2066 if not unit_idnum or not UnitTypeIsNPC(unit_type) then | 2067 if not unit_idnum or not UnitTypeIsNPC(unit_type) then |
| 2067 return | 2068 return |
| 2068 end | 2069 end |
| 2069 merchant_standing = select(2, UnitFactionStanding("npc")) | 2070 local _, faction_standing = UnitFactionStanding("npc") |
| 2071 merchant_standing = faction_standing | |
| 2070 current_merchant = NPCEntry(unit_idnum) | 2072 current_merchant = NPCEntry(unit_idnum) |
| 2071 current_merchant.sells = current_merchant.sells or {} | 2073 current_merchant.sells = current_merchant.sells or {} |
| 2072 end | 2074 end |
| 2073 local current_filters = _G.GetMerchantFilter() | 2075 local current_filters = _G.GetMerchantFilter() |
| 2074 _G.SetMerchantFilter(_G.LE_LOOT_FILTER_ALL) | 2076 _G.SetMerchantFilter(_G.LE_LOOT_FILTER_ALL) |
| 2387 local trainer = NPCEntry(unit_idnum) | 2389 local trainer = NPCEntry(unit_idnum) |
| 2388 | 2390 |
| 2389 if not trainer then | 2391 if not trainer then |
| 2390 return | 2392 return |
| 2391 end | 2393 end |
| 2392 local trainer_standing = select(2, UnitFactionStanding("npc")) | 2394 local _, trainer_standing = UnitFactionStanding("npc") |
| 2393 trainer.teaches = trainer.teaches or {} | 2395 trainer.teaches = trainer.teaches or {} |
| 2394 | 2396 |
| 2395 private.trainer_shown = true | 2397 private.trainer_shown = true |
| 2396 | 2398 |
| 2397 -- Get the initial trainer filters | 2399 -- Get the initial trainer filters |
| 2487 current_action.target_type = AF.ITEM | 2489 current_action.target_type = AF.ITEM |
| 2488 | 2490 |
| 2489 if item_name and item_name == target_name then | 2491 if item_name and item_name == target_name then |
| 2490 current_action.identifier = ItemLinkToID(item_link) | 2492 current_action.identifier = ItemLinkToID(item_link) |
| 2491 elseif target_name and target_name ~= "" then | 2493 elseif target_name and target_name ~= "" then |
| 2492 current_action.identifier = ItemLinkToID(select(2, _G.GetItemInfo(target_name))) | 2494 local _, item_link = _G.GetItemInfo(target_name) |
| 2495 current_action.identifier = ItemLinkToID(item_link) | |
| 2493 end | 2496 end |
| 2494 elseif not item_name and not unit_name then | 2497 elseif not item_name and not unit_name then |
| 2495 if bit.band(spell_flags, AF.OBJECT) == AF.OBJECT then | 2498 if bit.band(spell_flags, AF.OBJECT) == AF.OBJECT then |
| 2496 if target_name == "" then | 2499 if target_name == "" then |
| 2497 return | 2500 return |
