From d880f80a128cfaf2a4801e9ff59160981023e2a3 Mon Sep 17 00:00:00 2001 From: "James D. Callahan III" Date: Fri, 11 Mar 2011 00:31:54 -0600 Subject: [PATCH] Preliminary changes working toward getting rid of private.spell_to_recipe_map and allowing trainers to work on spell_ids rather than item name, since Blizzard has two Glyph of Death Coil and may do something similar in the future. --- Recipe.lua | 7 +++++++ Scanner.lua | 32 +++++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/Recipe.lua b/Recipe.lua index 71ba043..1f936bf 100644 --- a/Recipe.lua +++ b/Recipe.lua @@ -87,6 +87,13 @@ function addon:AddRecipe(spell_id, skill_level, item_id, quality, profession, sp self:Print(L["SpellIDCache"]:format(spell_id)) end recipe_list[spell_id] = recipe + + local created_item = private.spell_to_recipe_map[spell_id] + + if created_item then + recipe.creates_item_id = created_item + end + recipe.required_faction = required_faction if required_faction and private.Player.faction ~= BFAC[required_faction] then diff --git a/Scanner.lua b/Scanner.lua index e6d3fa2..840aced 100644 --- a/Scanner.lua +++ b/Scanner.lua @@ -520,6 +520,10 @@ local NO_ROLE_FLAG = { } local function ItemLinkToID(item_link) + if not item_link then + return + end + local id = item_link:match("item:(%d+)") if not id then @@ -695,9 +699,16 @@ do table.wipe(scanned_recipes) -- Get all the names of recipes from the trainer - for i = 1, _G.GetNumTrainerServices(), 1 do - local name = _G.GetTrainerServiceInfo(i) - scanned_recipes[name] = true + for index = 1, _G.GetNumTrainerServices(), 1 do + local item_name = _G.GetTrainerServiceInfo(index) + local item_id = ItemLinkToID(_G.GetTrainerServiceItemLink(index)) + local spell_id = RECIPE_TO_SPELL_MAP[item_id] + + if spell_id then + scanned_recipes[spell_id] = item_id + elseif item_id then + self:Debug("No spell_id found for item_id %d (%s)", item_id, item_name) + end end table.wipe(teach) table.wipe(noteach) @@ -726,7 +737,7 @@ do end end - if scanned_recipes[recipe.name] then + if scanned_recipes[spell_id] then if not found then recipe:AddTrainer(trainer_id) table.insert(teach, spell_id) @@ -758,8 +769,9 @@ do table.insert(output, "Trainer does not teach the following entries (should be removed):") table.sort(noteach) - for i in ipairs(noteach) do - table.insert(output, L["DATAMINER_TRAINER_NOTTEACH"]:format(noteach[i], recipe_list[noteach[i]].name)) + for index in ipairs(noteach) do + local spell_id = noteach[index] + table.insert(output, L["DATAMINER_TRAINER_NOTTEACH"]:format(spell_id, recipe_list[spell_id].name)) end end table.insert(output, "Trainer Acquire Scan Complete.") @@ -1108,6 +1120,10 @@ do if flag_string then table.insert(output, ("recipe:AddAcquireData(%s)"):format(flag_string)) end + + if recipe.creates_item_id then + table.insert(output, ("recipe:SetCreatedItem(%d)"):format(recipe.creates_item_id)) + end table.insert(output, "") end @@ -1238,9 +1254,7 @@ do local match_text = string.match(item_name, "%a+: ") if match_text and RECIPE_TYPES[match_text:lower()] then - local item_link = _G.GetMerchantItemLink(index) - local item_id = ItemLinkToID(item_link) - local spell_id = RECIPE_TO_SPELL_MAP[item_id] + local spell_id = RECIPE_TO_SPELL_MAP[ItemLinkToID(_G.GetMerchantItemLink(index))] if spell_id then local scanned_text = addon:TooltipScanRecipe(spell_id, true, true) -- 1.7.9.5