diff --git a/FurnitureCatalogue/FurCData.lua b/FurnitureCatalogue/FurCData.lua index acd6969..70fdf28 100644 --- a/FurnitureCatalogue/FurCData.lua +++ b/FurnitureCatalogue/FurCData.lua @@ -140,9 +140,10 @@ end function FurC.Find(itemOrBlueprintLink) -- sets recipeArray, returns it - calls scanItemLink - -- p("scanItemLink(<<1>>)...", itemOrBlueprintLink) -- do not return empty arrays. If this returns nil, abort! - if nil == itemOrBlueprintLink then return end + if nil == itemOrBlueprintLink or #itemOrBlueprintLink == 0 then return end + if tonumber(itemOrBlueprintLink) == itemOrBlueprintLink then itemOrBlueprintLink = FurC.GetItemLink(itemOrBlueprintLink) end + p("scanItemLink(<<1>>)...", itemOrBlueprintLink) -- do not return empty arrays. If this returns nil, abort! if itemOrBlueprintLink == lastLink and nil ~= recipeArray then return recipeArray @@ -150,12 +151,13 @@ function FurC.Find(itemOrBlueprintLink) -- sets recipeArray, returns it - c recipeArray = nil lastLink = itemOrBlueprintLink end - + if IsItemLinkFurnitureRecipe(itemOrBlueprintLink) then recipeArray = parseBlueprint(itemOrBlueprintLink) elseif IsItemLinkPlaceableFurniture(itemOrBlueprintLink) then recipeArray = parseFurnitureItem(itemOrBlueprintLink) end + return recipeArray end @@ -325,7 +327,7 @@ local function scanFromFiles(shouldScanCharacter) recipeArray.origin = origin recipeArray.blueprint = recipeId addDatabaseEntry(recipeKey, recipeArray) - end + end end end @@ -333,10 +335,10 @@ local function scanFromFiles(shouldScanCharacter) scanArray(versionData, versionNumber, FURC_CRAFTING) end for versionNumber, versionData in pairs(FurC.RollisRecipes) do - scanArray(versionData, versionNumber, FURC_ROLLIS) + scanArray(versionData, versionNumber, FURC_CRAFTING) end for versionNumber, versionData in pairs(FurC.FaustinaRecipes) do - scanArray(versionData, versionNumber, FURC_ROLLIS) + scanArray(versionData, versionNumber, FURC_CRAFTING) end end @@ -501,7 +503,7 @@ function FurC.GetItemDescription(recipeKey, recipeArray, stripColor) recipeArray = recipeArray or FurC.Find(recipeKey, recipeArray) if not recipeArray then return "" end local origin = recipeArray.origin - if origin == FURC_CRAFTING then + if origin == FURC_CRAFTING or origin == FURC_WRIT_VENDOR then return FurC.GetMats(recipeKey, recipeArray, stripColor) elseif origin == FURC_ROLLIS then return FurC.getRollisSource(recipeKey, recipeArray, stripColor) @@ -516,7 +518,7 @@ function FurC.GetItemDescription(recipeKey, recipeArray, stripColor) elseif origin == FURC_PVP then return FurC.getPvpSource(recipeKey, recipeArray, stripColor) elseif origin == FURC_RUMOUR then - return FurC.getRumourSource(recipeKey, recipeArray), stripColor + return FurC.getRumourSource(recipeKey, recipeArray, stripColor) else itemSource = FurC.GetMiscItemSource(recipeKey, recipeArray, stripColor) end diff --git a/FurnitureCatalogue/FurCDatabaseQuery.lua b/FurnitureCatalogue/FurCDatabaseQuery.lua index 04e7e7c..7a5c1e3 100644 --- a/FurnitureCatalogue/FurCDatabaseQuery.lua +++ b/FurnitureCatalogue/FurCDatabaseQuery.lua @@ -174,13 +174,15 @@ function FurC.getRumourSource(recipeKey, recipeArray) return (recipeArray.blueprint and GetString(SI_FURC_RUMOUR_SOURCE_RECIPE)) or GetString(SI_FURC_RUMOUR_SOURCE_ITEM) end -function FurC.GetCrafterList(recipeArray) - if nil == recipeArray or recipeArray.origin ~= FURC_CRAFTING then - if recipeArray.origin == FURC_RUMOUR then - return FurC.getRumourSource(recipeKey, recipeArray) - end - return "FurC.GetCrafterList called for a non-craftable" +function FurC.GetCrafterList(itemLink, recipeArray) + if nil == recipeArray and nil == itemLink then return end + recipeArray = recipeArray or FurC.Find(itemLink) + if nil == recipeArray then + d("") + d(recipeArray) + zo_strformat("FurC.GetCrafterList called for a non-craftable") end + if nil == recipeArray.characters or NonContiguousCount(recipeArray.characters) == 0 then return GetString(SI_FURC_STRING_CANNOT_CRAFT) end diff --git a/FurnitureCatalogue/FurCTooltip.lua b/FurnitureCatalogue/FurCTooltip.lua index 3e94594..ccba0c8 100644 --- a/FurnitureCatalogue/FurCTooltip.lua +++ b/FurnitureCatalogue/FurCTooltip.lua @@ -37,7 +37,10 @@ local function addTooltipData(control, itemLink) -- if craftable: if isRecipe or recipeArray.origin == FURC_CRAFTING then if unknown and not FurC.GetHideUnknown() or not FurC.GetHideKnowledge() then - stringTable = add(stringTable, tryColorize(FurC.GetCrafterList(recipeArray))) + local crafterList = FurC.GetCrafterList(itemLink, recipeArray) + if crafterList then + stringTable = add(stringTable, tryColorize(crafterList)) + end end if not isRecipe and (not FurC.GetHideCraftingStation()) then stringTable = add(stringTable, FurC.PrintCraftingStation(itemId, recipeArray)) diff --git a/FurnitureCatalogue/FurnitureCatalogue_Export/FurCDataExport.lua b/FurnitureCatalogue/FurnitureCatalogue_Export/FurCDataExport.lua index 973c79d..77d218f 100644 --- a/FurnitureCatalogue/FurnitureCatalogue_Export/FurCDataExport.lua +++ b/FurnitureCatalogue/FurnitureCatalogue_Export/FurCDataExport.lua @@ -35,7 +35,7 @@ function FurCExport.Export() local exportArray = (known and exportKnown) or exportUnknown local mats = FurC.GetMats(itemLink, recipeArray, false, true) - local knowledge = (known and (FurC.GetCrafterList(recipeArray) .. ": "):gsub("Can be crafted by ", "")) or "" + local knowledge = (known and (FurC.GetCrafterList(itemLink, recipeArray) .. ": "):gsub("Can be crafted by ", "")) or "" local exportString = zo_strformat("<<1>><<2>>", knowledge, mats) exportArray[itemName] = exportString end diff --git a/FurnitureCatalogue/data/RumourRecipes.lua b/FurnitureCatalogue/data/RumourRecipes.lua index a7d1910..0029475 100644 --- a/FurnitureCatalogue/data/RumourRecipes.lua +++ b/FurnitureCatalogue/data/RumourRecipes.lua @@ -36,7 +36,7 @@ FurC.RumourRecipes = { 117991, -- Stool, Carved 118278, -- Plaque, Bordered Deer Antlers 132199, -- Telvanni Tower, Miniature - 132197, -- Death Skeleton, Shrouded + -- 132197, -- Death Skeleton, Shrouded 121198, -- Shelf, Poison 118304, -- Shelf, Poison