Mercurial > wow > wowdb-profiler
comparison Main.lua @ 465:efdbef365ec0
Replaced local hacky map code with HereBeDragons library.
| author | Caleb Atherton <catherton@curse.com> |
|---|---|
| date | Sat, 14 May 2016 23:38:15 -0400 |
| parents | 6e78d7849ea3 |
| children | eb87dbc295b3 |
comparison
equal
deleted
inserted
replaced
| 464:6e78d7849ea3 | 465:efdbef365ec0 |
|---|---|
| 23 | 23 |
| 24 local LibStub = _G.LibStub | 24 local LibStub = _G.LibStub |
| 25 local WDP = LibStub("AceAddon-3.0"):NewAddon(ADDON_NAME, "AceConsole-3.0", "AceEvent-3.0") | 25 local WDP = LibStub("AceAddon-3.0"):NewAddon(ADDON_NAME, "AceConsole-3.0", "AceEvent-3.0") |
| 26 | 26 |
| 27 local deformat = LibStub("LibDeformat-3.0") | 27 local deformat = LibStub("LibDeformat-3.0") |
| 28 local HereBeDragons = LibStub("HereBeDragons-1.0") | |
| 28 | 29 |
| 29 local DatamineTT = _G.CreateFrame("GameTooltip", "WDPDatamineTT", _G.UIParent, "GameTooltipTemplate") | 30 local DatamineTT = _G.CreateFrame("GameTooltip", "WDPDatamineTT", _G.UIParent, "GameTooltipTemplate") |
| 30 DatamineTT:SetOwner(_G.WorldFrame, "ANCHOR_NONE") | 31 DatamineTT:SetOwner(_G.WorldFrame, "ANCHOR_NONE") |
| 31 | 32 |
| 32 | 33 |
| 142 UNIT_SPELLCAST_FAILED_QUIET = "HandleSpellFailure", | 143 UNIT_SPELLCAST_FAILED_QUIET = "HandleSpellFailure", |
| 143 UNIT_SPELLCAST_INTERRUPTED = "HandleSpellFailure", | 144 UNIT_SPELLCAST_INTERRUPTED = "HandleSpellFailure", |
| 144 UNIT_SPELLCAST_SENT = true, | 145 UNIT_SPELLCAST_SENT = true, |
| 145 UNIT_SPELLCAST_SUCCEEDED = true, | 146 UNIT_SPELLCAST_SUCCEEDED = true, |
| 146 VOID_STORAGE_OPEN = true, | 147 VOID_STORAGE_OPEN = true, |
| 147 ZONE_CHANGED = "HandleZoneChange", | |
| 148 ZONE_CHANGED_INDOORS = "HandleZoneChange", | |
| 149 ZONE_CHANGED_NEW_AREA = "HandleZoneChange", | |
| 150 } | 148 } |
| 151 | 149 |
| 152 | 150 |
| 153 -- VARIABLES ---------------------------------------------------------- | 151 -- VARIABLES ---------------------------------------------------------- |
| 154 | 152 |
| 179 local last_garrison_cache_object_id | 177 local last_garrison_cache_object_id |
| 180 local block_chat_loot_data | 178 local block_chat_loot_data |
| 181 local chat_loot_data = {} | 179 local chat_loot_data = {} |
| 182 local chat_loot_timer_handle | 180 local chat_loot_timer_handle |
| 183 local current_target_id | 181 local current_target_id |
| 184 local current_area_id | |
| 185 local current_loot | 182 local current_loot |
| 186 | 183 |
| 187 | 184 |
| 188 -- Data for our current action. Including possible values as a reference. | 185 -- Data for our current action. Including possible values as a reference. |
| 189 local current_action = { | 186 local current_action = { |
| 208 | 205 |
| 209 local function Debug(message, ...) | 206 local function Debug(message, ...) |
| 210 if not DEBUGGING or not message then | 207 if not DEBUGGING or not message then |
| 211 return | 208 return |
| 212 end | 209 end |
| 213 | 210 |
| 214 if ... then | 211 if ... then |
| 215 local args = { ... } | 212 local args = { ... } |
| 216 | 213 |
| 217 for index = 1, #args do | 214 for index = 1, #args do |
| 218 args[index] = tostring(args[index]) | 215 args[index] = tostring(args[index]) |
| 249 | 246 |
| 250 function TradeSkillExecutePer(iter_func) | 247 function TradeSkillExecutePer(iter_func) |
| 251 if not _G.TradeSkillFrame or not _G.TradeSkillFrame:IsVisible() then | 248 if not _G.TradeSkillFrame or not _G.TradeSkillFrame:IsVisible() then |
| 252 return | 249 return |
| 253 end | 250 end |
| 254 | 251 |
| 255 if (private.isLegion) then | 252 if (private.isLegion) then |
| 256 local recipes = _G.C_TradeSkillUI.GetAllRecipeIDs() | 253 local recipes = _G.C_TradeSkillUI.GetAllRecipeIDs() |
| 257 | 254 |
| 258 if recipes and (#recipes > 0) then | 255 if recipes and (#recipes > 0) then |
| 259 for i = 1, #recipes do | 256 for i = 1, #recipes do |
| 260 if iter_func(_G.C_TradeSkillUI.GetRecipeInfo(recipes[i]).name, recipes[i]) then | 257 if iter_func(_G.C_TradeSkillUI.GetRecipeInfo(recipes[i]).name, recipes[i]) then |
| 261 break | 258 break |
| 262 end | 259 end |
| 263 end | 260 end |
| 264 end | 261 end |
| 265 else | 262 else |
| 266 -- Clear the search box focus so the scan will have correct results. | 263 -- Clear the search box focus so the scan will have correct results. |
| 267 local search_box = _G.TradeSkillFrameSearchBox | 264 local search_box = _G.TradeSkillFrameSearchBox |
| 268 search_box:SetText("") | 265 search_box:SetText("") |
| 269 | 266 |
| 270 _G.TradeSkillSearch_OnTextChanged(search_box) | 267 _G.TradeSkillSearch_OnTextChanged(search_box) |
| 271 search_box:ClearFocus() | 268 search_box:ClearFocus() |
| 272 search_box:GetScript("OnEditFocusLost")(search_box) | 269 search_box:GetScript("OnEditFocusLost")(search_box) |
| 273 | 270 |
| 274 table.wipe(header_list) | 271 table.wipe(header_list) |
| 275 | 272 |
| 276 -- Save the current state of the TradeSkillFrame so it can be restored after we muck with it. | 273 -- Save the current state of the TradeSkillFrame so it can be restored after we muck with it. |
| 277 local have_materials = _G.TradeSkillFrame.filterTbl.hasMaterials | 274 local have_materials = _G.TradeSkillFrame.filterTbl.hasMaterials |
| 278 local have_skillup = _G.TradeSkillFrame.filterTbl.hasSkillUp | 275 local have_skillup = _G.TradeSkillFrame.filterTbl.hasSkillUp |
| 279 | 276 |
| 280 if have_materials then | 277 if have_materials then |
| 281 _G.TradeSkillFrame.filterTbl.hasMaterials = false | 278 _G.TradeSkillFrame.filterTbl.hasMaterials = false |
| 282 _G.TradeSkillOnlyShowMakeable(false) | 279 _G.TradeSkillOnlyShowMakeable(false) |
| 283 end | 280 end |
| 284 | 281 |
| 285 if have_skillup then | 282 if have_skillup then |
| 286 _G.TradeSkillFrame.filterTbl.hasSkillUp = false | 283 _G.TradeSkillFrame.filterTbl.hasSkillUp = false |
| 287 _G.TradeSkillOnlyShowSkillUps(false) | 284 _G.TradeSkillOnlyShowSkillUps(false) |
| 288 end | 285 end |
| 289 _G.SetTradeSkillInvSlotFilter(0, true, true) | 286 _G.SetTradeSkillInvSlotFilter(0, true, true) |
| 290 _G.TradeSkillUpdateFilterBar() | 287 _G.TradeSkillUpdateFilterBar() |
| 291 _G.TradeSkillFrame_Update() | 288 _G.TradeSkillFrame_Update() |
| 292 | 289 |
| 293 -- Expand all headers so we can see all the recipes there are | 290 -- Expand all headers so we can see all the recipes there are |
| 294 for tradeskill_index = 1, _G.GetNumTradeSkills() do | 291 for tradeskill_index = 1, _G.GetNumTradeSkills() do |
| 295 local name, tradeskill_type, _, is_expanded = _G.GetTradeSkillInfo(tradeskill_index) | 292 local name, tradeskill_type, _, is_expanded = _G.GetTradeSkillInfo(tradeskill_index) |
| 296 | 293 |
| 297 if tradeskill_type == "header" or tradeskill_type == "subheader" then | 294 if tradeskill_type == "header" or tradeskill_type == "subheader" then |
| 298 if not is_expanded then | 295 if not is_expanded then |
| 299 header_list[name] = true | 296 header_list[name] = true |
| 300 _G.ExpandTradeSkillSubClass(tradeskill_index) | 297 _G.ExpandTradeSkillSubClass(tradeskill_index) |
| 301 end | 298 end |
| 302 elseif iter_func(name, tradeskill_index) then | 299 elseif iter_func(name, tradeskill_index) then |
| 303 break | 300 break |
| 304 end | 301 end |
| 305 end | 302 end |
| 306 | 303 |
| 307 -- Restore the state of the things we changed. | 304 -- Restore the state of the things we changed. |
| 308 for tradeskill_index = 1, _G.GetNumTradeSkills() do | 305 for tradeskill_index = 1, _G.GetNumTradeSkills() do |
| 309 local name, tradeskill_type, _, is_expanded = _G.GetTradeSkillInfo(tradeskill_index) | 306 local name, tradeskill_type, _, is_expanded = _G.GetTradeSkillInfo(tradeskill_index) |
| 310 | 307 |
| 311 if header_list[name] then | 308 if header_list[name] then |
| 312 _G.CollapseTradeSkillSubClass(tradeskill_index) | 309 _G.CollapseTradeSkillSubClass(tradeskill_index) |
| 313 end | 310 end |
| 314 end | 311 end |
| 315 _G.TradeSkillFrame.filterTbl.hasMaterials = have_materials | 312 _G.TradeSkillFrame.filterTbl.hasMaterials = have_materials |
| 316 _G.TradeSkillOnlyShowMakeable(have_materials) | 313 _G.TradeSkillOnlyShowMakeable(have_materials) |
| 317 _G.TradeSkillFrame.filterTbl.hasSkillUp = have_skillup | 314 _G.TradeSkillFrame.filterTbl.hasSkillUp = have_skillup |
| 318 _G.TradeSkillOnlyShowSkillUps(have_skillup) | 315 _G.TradeSkillOnlyShowSkillUps(have_skillup) |
| 319 | 316 |
| 320 _G.TradeSkillUpdateFilterBar() | 317 _G.TradeSkillUpdateFilterBar() |
| 321 _G.TradeSkillFrame_Update() | 318 _G.TradeSkillFrame_Update() |
| 322 end | 319 end |
| 323 end | 320 end |
| 324 end -- do-block | 321 end -- do-block |
| 325 | 322 |
| 326 | 323 |
| 327 local ActualCopperCost | 324 local ActualCopperCost |
| 375 return "NONE:0:false" | 372 return "NONE:0:false" |
| 376 end | 373 end |
| 377 | 374 |
| 378 | 375 |
| 379 local function CurrentLocationData() | 376 local function CurrentLocationData() |
| 380 if _G.GetCurrentMapAreaID() ~= current_area_id then | 377 local x, y, current_area_id, map_level = HereBeDragons:GetPlayerZonePosition(true) |
| 381 return _G.GetRealZoneText(), current_area_id, 0, 0, 0, InstanceDifficultyToken() | 378 |
| 382 end | 379 -- Put coordinates into expected format (as integers, they don't get a billion decimals output in the SavedVariables) |
| 383 local map_level = _G.GetCurrentMapDungeonLevel() or 0 | 380 local x_int = _G.floor(x * 1000) |
| 384 local x, y = _G.GetPlayerMapPosition("player") | 381 local y_int = _G.floor(y * 1000) |
| 385 | 382 if x_int % 2 ~= 0 then |
| 386 x = x or 0 | 383 x_int = x_int + 1 |
| 387 y = y or 0 | 384 end |
| 388 | 385 if y_int % 2 ~= 0 then |
| 389 if x == 0 and y == 0 then | 386 y_int = y_int + 1 |
| 390 for level_index = 1, _G.GetNumDungeonMapLevels() do | 387 end |
| 391 _G.SetDungeonMapLevel(level_index) | 388 |
| 392 x, y = _G.GetPlayerMapPosition("player") | 389 return _G.GetRealZoneText(), current_area_id, x_int, y_int, map_level, InstanceDifficultyToken() |
| 393 | |
| 394 if x and y and (x > 0 or y > 0) then | |
| 395 _G.SetDungeonMapLevel(map_level) | |
| 396 map_level = level_index | |
| 397 break | |
| 398 end | |
| 399 end | |
| 400 end | |
| 401 | |
| 402 if _G.DungeonUsesTerrainMap() then | |
| 403 map_level = map_level - 1 | |
| 404 end | |
| 405 local x = _G.floor(x * 1000) | |
| 406 local y = _G.floor(y * 1000) | |
| 407 | |
| 408 if x % 2 ~= 0 then | |
| 409 x = x + 1 | |
| 410 end | |
| 411 | |
| 412 if y % 2 ~= 0 then | |
| 413 y = y + 1 | |
| 414 end | |
| 415 return _G.GetRealZoneText(), current_area_id, x, y, map_level, InstanceDifficultyToken() | |
| 416 end | 390 end |
| 417 | 391 |
| 418 | 392 |
| 419 local function DBEntry(data_type, unit_id) | 393 local function DBEntry(data_type, unit_id) |
| 420 if not data_type or not unit_id then | 394 if not data_type or not unit_id then |
| 610 local _, _, _, _, _, is_lootable = _G.GetContainerItemInfo(bag_index, slot_index) | 584 local _, _, _, _, _, is_lootable = _G.GetContainerItemInfo(bag_index, slot_index) |
| 611 if is_lootable then | 585 if is_lootable then |
| 612 any_loot = true | 586 any_loot = true |
| 613 end | 587 end |
| 614 end | 588 end |
| 615 | 589 |
| 616 -- Check if we've marked this item as one Blizzard provides bad is_lootable data for | 590 -- Check if we've marked this item as one Blizzard provides bad is_lootable data for |
| 617 if private.CONTAINER_ITEM_ID_LIST[item_id] ~= nil then | 591 if private.CONTAINER_ITEM_ID_LIST[item_id] ~= nil then |
| 618 any_loot = true | 592 any_loot = true |
| 619 end | 593 end |
| 620 | 594 |
| 813 return text | 787 return text |
| 814 end | 788 end |
| 815 end -- do-block | 789 end -- do-block |
| 816 | 790 |
| 817 | 791 |
| 818 -- Contains a dirty hack due to Blizzard's strange handling of Micro Dungeons; GetMapInfo() will not return correct information | |
| 819 -- unless the WorldMapFrame is shown. | |
| 820 do | |
| 821 -- MapFileName = MapAreaID | |
| 822 local MICRO_DUNGEON_IDS = { | |
| 823 ShrineofTwoMoons = 903, | |
| 824 ShrineofSevenStars = 905, | |
| 825 } | |
| 826 | |
| 827 local function SetCurrentAreaID() | |
| 828 if private.in_combat then | |
| 829 private.set_area_id = true | |
| 830 return | |
| 831 end | |
| 832 local map_area_id = _G.GetCurrentMapAreaID() | |
| 833 | |
| 834 if map_area_id == current_area_id then | |
| 835 return | |
| 836 end | |
| 837 local world_map = _G.WorldMapFrame | |
| 838 local map_visible = world_map:IsVisible() | |
| 839 local sfx_value = tonumber(_G.GetCVar("Sound_EnableSFX")) | |
| 840 | |
| 841 if not map_visible then | |
| 842 _G.SetCVar("Sound_EnableSFX", 0) | |
| 843 world_map:Show() | |
| 844 end | |
| 845 local _, _, _, _, micro_dungeon_map_name = _G.GetMapInfo() | |
| 846 local micro_dungeon_id = MICRO_DUNGEON_IDS[micro_dungeon_map_name] | |
| 847 | |
| 848 _G.SetMapToCurrentZone() | |
| 849 | |
| 850 if micro_dungeon_id then | |
| 851 current_area_id = micro_dungeon_id | |
| 852 else | |
| 853 current_area_id = _G.GetCurrentMapAreaID() | |
| 854 end | |
| 855 | |
| 856 if map_visible then | |
| 857 _G.SetMapByID(map_area_id) | |
| 858 else | |
| 859 world_map:Hide() | |
| 860 _G.SetCVar("Sound_EnableSFX", sfx_value) | |
| 861 end | |
| 862 end | |
| 863 | |
| 864 function WDP:HandleZoneChange(event_name) | |
| 865 in_instance = _G.IsInInstance() | |
| 866 SetCurrentAreaID() | |
| 867 end | |
| 868 end | |
| 869 | |
| 870 | |
| 871 -- TIMERS ------------------------------------------------------------- | 792 -- TIMERS ------------------------------------------------------------- |
| 872 | 793 |
| 873 function ClearKilledNPC() | 794 function ClearKilledNPC() |
| 874 killed_npc_id = nil | 795 killed_npc_id = nil |
| 875 end | 796 end |
| 1041 --local unknown_upgrade_related_id = tonumber(item_results[12]) | 962 --local unknown_upgrade_related_id = tonumber(item_results[12]) |
| 1042 local instance_difficulty_id = tonumber(item_results[13]) or 0 | 963 local instance_difficulty_id = tonumber(item_results[13]) or 0 |
| 1043 local num_bonus_ids = tonumber(item_results[14]) or 0 | 964 local num_bonus_ids = tonumber(item_results[14]) or 0 |
| 1044 -- upgrade_id is optional since 6.2! can probably be detected using unknown_upgrade_related_id, but it's just as easy to check like this | 965 -- upgrade_id is optional since 6.2! can probably be detected using unknown_upgrade_related_id, but it's just as easy to check like this |
| 1045 local upgrade_id = tonumber(item_results[15 + num_bonus_ids]) or 0 | 966 local upgrade_id = tonumber(item_results[15 + num_bonus_ids]) or 0 |
| 1046 | 967 |
| 1047 -- LEGION | 968 -- LEGION |
| 1048 if private.isLegion then | 969 if private.isLegion then |
| 1049 local unkItemField1 = tonumber(item_results[16 + num_bonus_ids]) or 0 | 970 local unkItemField1 = tonumber(item_results[16 + num_bonus_ids]) or 0 |
| 1050 local unkItemField2 = tonumber(item_results[17 + num_bonus_ids]) or 0 | 971 local unkItemField2 = tonumber(item_results[17 + num_bonus_ids]) or 0 |
| 1051 if unkItemField1 > 0 then Debug("unkItemField1 is non-zero, specifically %d.", unkItemField1) end | 972 if unkItemField1 > 0 then Debug("unkItemField1 is non-zero, specifically %d.", unkItemField1) end |
| 1064 | 985 |
| 1065 -- Get ready for bonus IDs | 986 -- Get ready for bonus IDs |
| 1066 if not item.seen_bonuses then | 987 if not item.seen_bonuses then |
| 1067 item.seen_bonuses = {} | 988 item.seen_bonuses = {} |
| 1068 end | 989 end |
| 1069 | 990 |
| 1070 if num_bonus_ids > 0 then | 991 if num_bonus_ids > 0 then |
| 1071 -- We want the bonus ID combo output to be in the form ["bonusID1:bonusID2:bonusID3"] = true | 992 -- We want the bonus ID combo output to be in the form ["bonusID1:bonusID2:bonusID3"] = true |
| 1072 -- And sorted numerically with the smallest bonusID first | 993 -- And sorted numerically with the smallest bonusID first |
| 1073 local sorted_bonus_string = "" | 994 local sorted_bonus_string = "" |
| 1074 local min_bonus_id_array = {} | 995 local min_bonus_id_array = {} |
| 1374 Debug("%s: When handling the Garrison cache, the top level loot data was missing for objectID %d.", event_name, last_garrison_cache_object_id) | 1295 Debug("%s: When handling the Garrison cache, the top level loot data was missing for objectID %d.", event_name, last_garrison_cache_object_id) |
| 1375 end | 1296 end |
| 1376 else | 1297 else |
| 1377 Debug("%s: Currency texture is nil, from currency link %s", event_name, item_link) | 1298 Debug("%s: Currency texture is nil, from currency link %s", event_name, item_link) |
| 1378 end | 1299 end |
| 1379 | 1300 |
| 1380 -- Wipe object ID until future mouseover | 1301 -- Wipe object ID until future mouseover |
| 1381 last_garrison_cache_object_id = nil | 1302 last_garrison_cache_object_id = nil |
| 1382 elseif raid_boss_id then | 1303 elseif raid_boss_id then |
| 1383 local npc = NPCEntry(raid_boss_id) | 1304 local npc = NPCEntry(raid_boss_id) |
| 1384 if npc then | 1305 if npc then |
| 1665 local RECIPE_MATCH = _G.ERR_LEARN_RECIPE_S:gsub("%%s", "(.*)") | 1586 local RECIPE_MATCH = _G.ERR_LEARN_RECIPE_S:gsub("%%s", "(.*)") |
| 1666 | 1587 |
| 1667 | 1588 |
| 1668 local function RecordDiscovery(tradeskill_name, tradeskill_index) | 1589 local function RecordDiscovery(tradeskill_name, tradeskill_index) |
| 1669 if tradeskill_name == private.discovered_recipe_name then | 1590 if tradeskill_name == private.discovered_recipe_name then |
| 1670 if (private.isLegion) then | 1591 if (private.isLegion) then |
| 1671 DBEntry("spells", tonumber(_G.C_TradeSkillUI.GetRecipeLink(tradeskill_index):match("^|c%x%x%x%x%x%x%x%x|H%w+:(%d+)"))).discovery = ("%d:%d"):format(private.previous_spell_id, private.profession_level) | 1592 DBEntry("spells", tonumber(_G.C_TradeSkillUI.GetRecipeLink(tradeskill_index):match("^|c%x%x%x%x%x%x%x%x|H%w+:(%d+)"))).discovery = ("%d:%d"):format(private.previous_spell_id, private.profession_level) |
| 1672 else | 1593 else |
| 1673 DBEntry("spells", tonumber(_G.GetTradeSkillRecipeLink(tradeskill_index):match("^|c%x%x%x%x%x%x%x%x|H%w+:(%d+)"))).discovery = ("%d:%d"):format(private.previous_spell_id, private.profession_level) | 1594 DBEntry("spells", tonumber(_G.GetTradeSkillRecipeLink(tradeskill_index):match("^|c%x%x%x%x%x%x%x%x|H%w+:(%d+)"))).discovery = ("%d:%d"):format(private.previous_spell_id, private.profession_level) |
| 1674 end | 1595 end |
| 1675 | 1596 |
| 1676 private.discovered_recipe_name = nil | 1597 private.discovered_recipe_name = nil |
| 1677 private.profession_level = nil | 1598 private.profession_level = nil |
| 1678 private.previous_spell_id = nil | 1599 private.previous_spell_id = nil |
| 1679 | 1600 |
| 1856 if NON_DAMAGE_EVENTS[sub_event] then | 1777 if NON_DAMAGE_EVENTS[sub_event] then |
| 1857 table.wipe(previous_combat_event) | 1778 table.wipe(previous_combat_event) |
| 1858 end | 1779 end |
| 1859 end | 1780 end |
| 1860 | 1781 |
| 1861 | 1782 |
| 1862 local DIPLOMACY_SPELL_ID = 20599 | 1783 local DIPLOMACY_SPELL_ID = 20599 |
| 1863 local MR_POP_RANK1_SPELL_ID = 78634 | 1784 local MR_POP_RANK1_SPELL_ID = 78634 |
| 1864 local MR_POP_RANK2_SPELL_ID = 78635 | 1785 local MR_POP_RANK2_SPELL_ID = 78635 |
| 1865 local TRADING_PACT_SPELL_ID = 170200 | 1786 local TRADING_PACT_SPELL_ID = 170200 |
| 1866 | 1787 |
| 1933 modifier = modifier + buff_data_table.modifier | 1854 modifier = modifier + buff_data_table.modifier |
| 1934 end | 1855 end |
| 1935 end | 1856 end |
| 1936 end | 1857 end |
| 1937 end | 1858 end |
| 1938 | 1859 |
| 1939 npc.reputations = npc.reputations or {} | 1860 npc.reputations = npc.reputations or {} |
| 1940 npc.reputations[("%s:%s"):format(faction_name, faction_standings[faction_name])] = math.floor(amount / modifier) | 1861 npc.reputations[("%s:%s"):format(faction_name, faction_standings[faction_name])] = math.floor(amount / modifier) |
| 1941 end | 1862 end |
| 1942 end -- do-block | 1863 end -- do-block |
| 1943 | 1864 |
| 2574 end | 2495 end |
| 2575 | 2496 |
| 2576 | 2497 |
| 2577 function WDP:QUEST_COMPLETE(event_name) | 2498 function WDP:QUEST_COMPLETE(event_name) |
| 2578 local quest = UpdateQuestJuncture("end") | 2499 local quest = UpdateQuestJuncture("end") |
| 2579 | 2500 |
| 2580 if not quest then | 2501 if not quest then |
| 2581 return | 2502 return |
| 2582 end | 2503 end |
| 2583 | 2504 |
| 2584 if ALLOWED_LOCALES[CLIENT_LOCALE] then | 2505 if ALLOWED_LOCALES[CLIENT_LOCALE] then |
| 2657 if (private.isLegion) then | 2578 if (private.isLegion) then |
| 2658 link = _G.C_TradeSkillUI.GetRecipeLink(tradeskill_index) | 2579 link = _G.C_TradeSkillUI.GetRecipeLink(tradeskill_index) |
| 2659 else | 2580 else |
| 2660 link = _G.GetTradeSkillRecipeLink(tradeskill_index) | 2581 link = _G.GetTradeSkillRecipeLink(tradeskill_index) |
| 2661 end | 2582 end |
| 2662 | 2583 |
| 2663 if link then | 2584 if link then |
| 2664 local spell_id = tonumber(link:match("^|c%x%x%x%x%x%x%x%x|H%w+:(%d+)")) | 2585 local spell_id = tonumber(link:match("^|c%x%x%x%x%x%x%x%x|H%w+:(%d+)")) |
| 2665 local required_tool | 2586 local required_tool |
| 2666 if (private.isLegion) then | 2587 if (private.isLegion) then |
| 2667 required_tool = _G.C_TradeSkillUI.GetRecipeTools(tradeskill_index) | 2588 required_tool = _G.C_TradeSkillUI.GetRecipeTools(tradeskill_index) |
