Mercurial > wow > wowdb-profiler
comparison Main.lua @ 540:b7f2e3b03853 7.3.0-1
Update for Patch 7.3.0, including a currency fix, constants update, and TOC bump.
| author | MMOSimca |
|---|---|
| date | Wed, 30 Aug 2017 18:22:40 -0400 |
| parents | 1bcaf08ae424 |
| children | c6fafd40a7b7 |
comparison
equal
deleted
inserted
replaced
| 539:1bcaf08ae424 | 540:b7f2e3b03853 |
|---|---|
| 311 return math.floor(copper_cost / modifier) | 311 return math.floor(copper_cost / modifier) |
| 312 end | 312 end |
| 313 end -- do-block | 313 end -- do-block |
| 314 | 314 |
| 315 | 315 |
| 316 local CurrencyInfoToID | |
| 317 local PopulateCurrencyInfoLookup | |
| 318 do | |
| 319 local MAX_CURRENCY_ID_GAP = 800 | |
| 320 | |
| 321 local currency_info_lookup = {} | |
| 322 | |
| 323 | |
| 324 -- Going to have to support paths until Patch 7.2.5 comes out (after that, the 'tostring' use can go away) | |
| 325 function CurrencyInfoToID(name, texture_id) | |
| 326 if not name or not texture_id then return nil end | |
| 327 return currency_info_lookup[("%s:%s"):format(name, tostring(texture_id))] | |
| 328 end | |
| 329 | |
| 330 | |
| 331 -- Going to have to support paths until Patch 7.2.5 comes out (after that, the 'tostring' use can go away) | |
| 332 function PopulateCurrencyInfoLookup() | |
| 333 local currency_index = 1 | |
| 334 local gap_since_last_currency = 0 | |
| 335 repeat | |
| 336 -- Store ID by info (name and texture_id combined) | |
| 337 local name, _, texture_id = GetCurrencyInfo(currency_index) | |
| 338 | |
| 339 -- If we found nothing, increment gap | |
| 340 if name and texture_id and name ~= "" and tostring(texture_id) ~= "0" and tostring(texture_id) ~= "" then | |
| 341 currency_info_lookup[("%s:%s"):format(name, tostring(texture_id))] = currency_index | |
| 342 gap_since_last_currency = 0 | |
| 343 else | |
| 344 gap_since_last_currency = gap_since_last_currency + 1 | |
| 345 end | |
| 346 | |
| 347 -- Increment loop counter | |
| 348 currency_index = currency_index + 1 | |
| 349 | |
| 350 until (gap_since_last_currency > MAX_CURRENCY_ID_GAP) | |
| 351 end | |
| 352 end | |
| 353 | |
| 354 | |
| 355 local function InstanceDifficultyToken() | 316 local function InstanceDifficultyToken() |
| 356 -- Sometimes, instance information is returned when not in an instance. This check protects against that. | 317 -- Sometimes, instance information is returned when not in an instance. This check protects against that. |
| 357 if _G.IsInInstance() then | 318 if _G.IsInInstance() then |
| 358 local _, instance_type, instance_difficulty, _, _, _, is_dynamic = _G.GetInstanceInfo() | 319 local _, instance_type, instance_difficulty, _, _, _, is_dynamic = _G.GetInstanceInfo() |
| 359 | 320 |
| 512 | 473 |
| 513 local function CurrencyLinkToID(currency_link) | 474 local function CurrencyLinkToID(currency_link) |
| 514 if not currency_link then | 475 if not currency_link then |
| 515 return nil | 476 return nil |
| 516 end | 477 end |
| 517 return tonumber(currency_link:match("currency:(%d+)")) or 0 | 478 return tonumber(tostring(currency_link):match("currency:(%d+)")) |
| 518 --texture_path:match("[^\\]+$"):lower() | |
| 519 end | 479 end |
| 520 | 480 |
| 521 | 481 |
| 522 local function ItemLinkToID(item_link) | 482 local function ItemLinkToID(item_link) |
| 523 if not item_link then | 483 if not item_link then |
| 975 -- Gather known languages | 935 -- Gather known languages |
| 976 for index = 1, _G.GetNumLanguages() do | 936 for index = 1, _G.GetNumLanguages() do |
| 977 languages_known[_G.GetLanguageByIndex(index)] = true | 937 languages_known[_G.GetLanguageByIndex(index)] = true |
| 978 end | 938 end |
| 979 | 939 |
| 980 -- Populate currency data from known currency information | |
| 981 PopulateCurrencyInfoLookup() | |
| 982 | |
| 983 -- These timers loop indefinitely using Lua's infinity constant | 940 -- These timers loop indefinitely using Lua's infinity constant |
| 984 item_process_timer_handle = C_Timer.NewTicker(DELAY_PROCESS_ITEMS, WDP.ProcessItems, math.huge) | 941 item_process_timer_handle = C_Timer.NewTicker(DELAY_PROCESS_ITEMS, WDP.ProcessItems, math.huge) |
| 985 target_location_timer_handle = C_Timer.NewTicker(DELAY_UPDATE_TARGET_LOCATION, WDP.UpdateTargetLocation, math.huge) | 942 target_location_timer_handle = C_Timer.NewTicker(DELAY_UPDATE_TARGET_LOCATION, WDP.UpdateTargetLocation, math.huge) |
| 986 world_quest_timer_handle = C_Timer.NewTicker(DELAY_PROCESS_WORLD_QUESTS, WDP.ProcessWorldQuests, math.huge) | 943 world_quest_timer_handle = C_Timer.NewTicker(DELAY_PROCESS_WORLD_QUESTS, WDP.ProcessWorldQuests, math.huge) |
| 987 | 944 |
| 1076 -- Ignore if player is low level (there are some world quests before max level now, but we can collect enough data from 110s alone still) | 1033 -- Ignore if player is low level (there are some world quests before max level now, but we can collect enough data from 110s alone still) |
| 1077 if _G.UnitLevel("player") ~= 110 then return end | 1034 if _G.UnitLevel("player") ~= 110 then return end |
| 1078 | 1035 |
| 1079 -- Get current continent and zones in current continent | 1036 -- Get current continent and zones in current continent |
| 1080 local continentIndex, continentID = GetCurrentMapContinent() | 1037 local continentIndex, continentID = GetCurrentMapContinent() |
| 1081 local continentMaps = { GetMapZones(continentIndex) } | 1038 local continentMaps = { GetMapZones(continentIndex) } |
| 1082 | 1039 |
| 1083 -- Iterate over zones in continent | 1040 -- Iterate over zones in continent |
| 1084 for i = 1, #continentMaps, 2 do | 1041 for i = 1, #continentMaps, 2 do |
| 1085 | 1042 |
| 1086 -- Get data for World Quests | 1043 -- Get data for World Quests |
| 1087 local api_data = C_TaskQuest.GetQuestsForPlayerByMapID(continentMaps[i], continentID); | 1044 local api_data = C_TaskQuest.GetQuestsForPlayerByMapID(continentMaps[i], continentID); |
| 1088 | 1045 |
| 1089 -- Iterate over the questIDs for each map, doing preload reward requests and creating SavedVariables entries | 1046 -- Iterate over the questIDs for each map, doing preload reward requests and creating SavedVariables entries |
| 1090 if api_data and type(api_data) == "table" and #api_data > 0 then | 1047 if api_data and type(api_data) == "table" and #api_data > 0 then |
| 1091 for _, current_data in ipairs(api_data) do | 1048 for _, current_data in ipairs(api_data) do |
| 1092 | 1049 |
| 2551 --price_string = ("%s:%s:%s:%s"):format(price_string, battleground_rating, personal_rating, required_season_amount or 0) | 2508 --price_string = ("%s:%s:%s:%s"):format(price_string, battleground_rating, personal_rating, required_season_amount or 0) |
| 2552 price_string = ("%s:%s:%s"):format(price_string, personal_rating, required_season_amount or 0) | 2509 price_string = ("%s:%s:%s"):format(price_string, personal_rating, required_season_amount or 0) |
| 2553 | 2510 |
| 2554 for cost_index = 1, item_count do | 2511 for cost_index = 1, item_count do |
| 2555 -- The third return (Blizz calls "currency_link") of GetMerchantItemCostItem only returns item links as of Patch 5.3.0. | 2512 -- The third return (Blizz calls "currency_link") of GetMerchantItemCostItem only returns item links as of Patch 5.3.0. |
| 2556 local texture_id, amount_required, item_link, name = _G.GetMerchantItemCostItem(item_index, cost_index) | 2513 local texture_id, amount_required, hyperlink, name = _G.GetMerchantItemCostItem(item_index, cost_index) |
| 2557 | 2514 |
| 2558 -- Try to get item ID | 2515 -- Try to get item ID |
| 2559 local item_id = ItemLinkToID(item_link) | 2516 local item_id = ItemLinkToID(hyperlink) |
| 2560 | 2517 |
| 2561 -- FUTURE: At some point, we should make the output from these two cases (item_id vs currency_id) slightly different, so that WoWDB doesn't have to guess if it is a currency or item | 2518 -- FUTURE: At some point, we should make the output from these two cases (item_id vs currency_id) slightly different, so that WoWDB doesn't have to guess if it is a currency or item |
| 2562 -- Handle cases when the additional cost is another item | 2519 -- Handle cases when the additional cost is another item |
| 2563 if item_id and item_id > 0 then | 2520 if item_id and item_id > 0 then |
| 2564 currency_list[#currency_list + 1] = ("(%s:%d)"):format(amount_required, item_id) | 2521 currency_list[#currency_list + 1] = ("(%s:%d)"):format(amount_required, item_id) |
| 2565 -- Handle cases when the additional cost is another currency | |
| 2566 else | 2522 else |
| 2567 local currency_id = CurrencyInfoToID(name, texture_id) | 2523 -- Try to get currency ID |
| 2524 local currency_id = CurrencyLinkToID(hyperlink) | |
| 2568 if currency_id and currency_id > 0 then | 2525 if currency_id and currency_id > 0 then |
| 2569 currency_list[#currency_list + 1] = ("(%s:%d)"):format(amount_required, currency_id) | 2526 currency_list[#currency_list + 1] = ("(%s:%d)"):format(amount_required, currency_id) |
| 2527 else | |
| 2528 Debug("UpdateMerchantItems: Failed to get item ID and failed to get currency ID for item index %d and cost index %d", item_index, cost_index) | |
| 2570 end | 2529 end |
| 2571 end | 2530 end |
| 2572 end | 2531 end |
| 2573 | 2532 |
| 2574 for currency_index = 1, #currency_list do | 2533 for currency_index = 1, #currency_list do |
