diff --git a/FurCControlBridge.lua b/FurCControlBridge.lua index b4b9533..114a2b7 100644 --- a/FurCControlBridge.lua +++ b/FurCControlBridge.lua @@ -18,6 +18,7 @@ function FurC.LoadFrameInfo(calledFrom) FurCGui:SetWidth(settings.width) FurCGui:SetHeight(settings.height) + if calledFrom then return end zo_callLater(function() FurC.UpdateInventoryScroll() end, 100) end @@ -103,16 +104,11 @@ function FurC.GuiOnSearchBoxClick(control, mouseButton, doubleClick) control:SetText("") end end - -local FURC_S_FILTERDEFAULT = GetString(SI_FURC_TEXTBOX_FILTER_DEFAULT) - function FurC.GuiOnSearchBoxFocusOut(control) - if control:GetText() and control:GetText() ~= "" then - FurC.GuiOnSliderUpdate(FurCGui_ListHolder_Slider, 0) - FurC.UpdateGui() - end - local text = FurC_SearchBox:GetText() + control = control or FurC_SearchBox + local text = control:GetText() FurC_SearchBoxText:SetText((#text == 0 and FURC_S_FILTERDEFAULT) or "") + FurC.RefreshFilters() end function FurC.GuiOnScroll(control, delta) diff --git a/FurCData.lua b/FurCData.lua index c7d17d3..c7d4c41 100644 --- a/FurCData.lua +++ b/FurCData.lua @@ -57,6 +57,9 @@ FurC.PrintItemLink = printItemLink local function addDatabaseEntry(recipeKey, recipeArray) if recipeKey and recipeArray and {} ~= recipeArray then + if tonumber(recipeKey) == 10 or tonumber(recipeKey) == 125 or tonumber(recipeKey) == 500 then + error(debug.traceback()) + end FurC.settings.data[recipeKey] = recipeArray end end @@ -105,20 +108,17 @@ end local function parseFurnitureItem(itemLink, override) -- saves to DB, returns recipeArray if not ( - override or IsItemLinkPlaceableFurniture(itemLink) - or GetItemLinkItemType(itemLink) == ITEMTYPE_FURNITURE + override or IsItemLinkPlaceableFurniture(itemLink) + or GetItemLinkItemType(itemLink) == ITEMTYPE_FURNITURE ) then return end local recipeKey = getItemId(itemLink) local recipeArray = FurC.settings.data[recipeKey] if nil ~= recipeArray then return recipeArray end - recipeArray = {} - - addDatabaseEntry(recipeKey, recipeArray) - - return recipeArray + return {} end +FurC.ParseFurnitureItem = parseFurnitureItem local function parseBlueprint(blueprintLink) -- saves to DB, returns recipeArray @@ -151,7 +151,7 @@ function FurC.Find(itemOrBlueprintLink) -- sets recipeArray, returns it - c if tonumber(itemOrBlueprintLink) == itemOrBlueprintLink then itemOrBlueprintLink = FurC.GetItemLink(itemOrBlueprintLink) end if nil == itemOrBlueprintLink or #itemOrBlueprintLink == 0 then return end - p("scanItemLink(<<1>>)...", itemOrBlueprintLink) -- do not return empty arrays. If this returns nil, abort! + -- p("scanItemLink(<<1>>)...", itemOrBlueprintLink) -- do not return empty arrays. If this returns nil, abort! if itemOrBlueprintLink == lastLink and nil ~= recipeArray then return recipeArray @@ -204,6 +204,7 @@ function FurC.Fave(itemLink, recipeArray) FurC.UpdateGui() end +local isPts = "PTS" == GetWorldName() local function scanRecipeIndices(recipeListIndex, recipeIndex) -- returns recipeArray or nil, initialises local itemLink = GetRecipeResultItemLink(recipeListIndex, recipeIndex, LINK_STYLE_BRACKETS) @@ -212,6 +213,11 @@ local function scanRecipeIndices(recipeListIndex, recipeIndex) -- returns recip local recipeKey = getItemId(itemLink) local recipeArray = FurC.settings.data[recipeKey] or {} + + if not isPts and {} ~= recipeArray and recipeArray.origin == FURC_RUMOUR then + p("overwriting rumour recipe <<1>> (<<2>>)", recipeArray.blueprint, itemLink) + end + recipeArray.origin = FURC_CRAFTING recipeArray.version = recipeArray.version or 2 recipeArray.recipeListIndex = recipeArray.recipeListIndex or recipeListIndex @@ -304,8 +310,8 @@ local function scanFromFiles(shouldScanCharacter) for itemId, itemData in pairs(vendorData) do recipeArray = parseFurnitureItem(FurC.GetItemLink(itemId), true) - if not recipeArray then - p("Error when scanning <<1>>", itemId) + if not recipeArray or itemId < 10 then + p("parseZoneData: Error when scanning <<1>>", itemId) else recipeArray.origin = origin @@ -319,50 +325,53 @@ local function scanFromFiles(shouldScanCharacter) local function scanRecipeFile() local recipeKey, recipeArray - local function scanArray(ary, versionNumber, origin) + local function scanArray(ary, versionNumber, origin, itemIdIsKey) if nil == ary then return end - for key, recipeId in ipairs(ary) do + for key, recipeId in pairs(ary) do + if itemIdIsKey then recipeId = key end local recipeLink = FurC.GetItemLink(recipeId) local itemLink = GetItemLinkRecipeResultItemLink(recipeLink) or FurC.GetItemLink(recipeId) recipeArray = FurC.Find(itemLink) or parseBlueprint(recipeLink) or parseFurnitureItem(itemLink) - local recipeListIndex, recipeIndex = GetItemLinkGrantedRecipeIndices(recipeLink) if nil == recipeArray then - p("scanRecipeFile: error for <<1>> (ID was <<2>>)", recipeLink, recipeId) + p("scanRecipeFile: error for <<1>> (<<2>>)", recipeId, recipeLink) else + local recipeListIndex, recipeIndex = GetItemLinkGrantedRecipeIndices(recipeLink) recipeKey = getItemId(itemLink) recipeArray.version = versionNumber recipeArray.origin = origin recipeArray.blueprint = recipeId + recipeArray.recipeListIndex = recipeArray.recipeListIndex or recipeListIndex + recipeArray.recipeIndex = recipeArray.recipeIndex or recipeIndex addDatabaseEntry(recipeKey, recipeArray) end end - end + end for versionNumber, versionData in pairs(FurC.Recipes) do scanArray(versionData, versionNumber, FURC_CRAFTING) end for versionNumber, versionData in pairs(FurC.RolisRecipes) do - scanArray(versionData, versionNumber, FURC_CRAFTING) + scanArray(versionData, versionNumber, FURC_CRAFTING, true) end for versionNumber, versionData in pairs(FurC.FaustinaRecipes) do - scanArray(versionData, versionNumber, FURC_CRAFTING) + scanArray(versionData, versionNumber, FURC_CRAFTING, true) end end local function scanRolis() for versionNumber, versionData in pairs(FurC.Rolis) do - for itemId, itemSource in pairs(versionData) do + for itemId, itemPrice in pairs(versionData) do recipeArray = parseFurnitureItem(FurC.GetItemLink(itemId), true) if nil ~= recipeArray then - recipeArray.version = versionNumber + recipeArray.version = versionNumber recipeArray.origin = FURC_ROLIS addDatabaseEntry(itemId, recipeArray) end end end for versionNumber, versionData in pairs(FurC.Faustina) do - for itemId, itemSource in pairs(versionData) do + for itemId, itemPrice in pairs(versionData) do recipeArray = parseFurnitureItem(FurC.GetItemLink(itemId), true) if nil ~= recipeArray then recipeArray.version = versionNumber @@ -395,12 +404,12 @@ local function scanFromFiles(shouldScanCharacter) for itemId, itemSource in pairs(originData) do local itemLink = FurC.GetItemLink(itemId) recipeArray = parseFurnitureItem(FurC.GetItemLink(itemId)) - if nil ~= recipeArray then + if not recipeArray or itemId < 10 then + p("scanMiscItemFile: Error when scanning <<1>> (origin <<2>>) -> <<3>>", itemId, origin, itemLink) + else recipeArray.version = versionNumber recipeArray.origin = origin addDatabaseEntry(itemId, recipeArray) - else - p("scanMiscItemFile: Error when scanning <<1>> (<<2>>) -> <<3>>", itemLink, itemId, origin) end end end @@ -420,8 +429,7 @@ local function scanFromFiles(shouldScanCharacter) for versionNumber, vendorData in pairs(FurC.LuxuryFurnisher) do for itemId, itemData in pairs(vendorData) do - local recipeArray = {} - + local recipeArray = {} recipeArray.origin = FURC_LUXURY recipeArray.version = versionNumber addDatabaseEntry(itemId, recipeArray) diff --git a/FurCDatabaseQuery.lua b/FurCDatabaseQuery.lua index 52f9a31..2d52eb3 100644 --- a/FurCDatabaseQuery.lua +++ b/FurCDatabaseQuery.lua @@ -165,25 +165,26 @@ function FurC.GetMiscItemSource(recipeKey, recipeArray, attachItemLink) return (not attachItemLink and originData[recipeKey]) or string.format("%s: %s", FurC.GetItemLink(recipeKey), originData[recipeKey]) end + +function FurC.getRumourSource(recipeKey, recipeArray) + return (recipeArray.blueprint and GetString(SI_FURC_RUMOUR_SOURCE_RECIPE)) or GetString(SI_FURC_RUMOUR_SOURCE_ITEM) +end + + local function getRecipeSource(recipeKey, recipeArray) - if nil == recipeKey and nil == recipeArray then return end - if nil == FurC.RecipeSources then return end + if nil == recipeKey or nil == FurC.RecipeSources then return end + if nil ~= FurC.RecipeSources[recipeKey] then return FurC.RecipeSources[recipeKey] end - recipeArray = recipeArray or FurC.Find(recipeKey) + + if nil == recipeArray then return end - recipeKey = recipeArray.blueprint or recipeKey - - -- d(recipeKey) - return (recipeArray.origin == FURC_RUMOUR and FurC.getRumourSource(recipeKey, recipeArray)) - or FurC.RecipeSources[recipeKey] + if recipeArray.origin == FURC_RUMOUR then return FurC.getRumourSource(recipeKey, recipeArray) end + + return FurC.RecipeSources[recipeArray.blueprint or recipeKey] end FurC.getRecipeSource = getRecipeSource -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(itemLink, recipeArray) if nil == recipeArray and nil == itemLink then return end recipeArray = recipeArray or FurC.Find(itemLink) diff --git a/FurCEvents.lua b/FurCEvents.lua index 1d66965..f7b42fd 100644 --- a/FurCEvents.lua +++ b/FurCEvents.lua @@ -1,19 +1,21 @@ local em = EVENT_MANAGER local p = FurC.DebugOut -- debug function calling zo_strformat with up to 10 args -local function onRecipeLearned(eventCode, recipeListIndex, recipeIndex) - p(FURC_STRING_RECIPELEARNED, GetRecipeResultItemLink(recipeListIndex, recipeIndex, LINK_STYLE_BRACKETS), recipeListIndex, recipeIndex) - FurC.TryCreateRecipeEntry(recipeListIndex, recipeIndex) - FurC.UpdateGui() + +local function executeRecipeScan() + FurC.ScanCharacter() + em:RegisterForEvent("FurnitureCatalogue", EVENT_RECIPE_LEARNED, onRecipeLearned) +end +local function onRecipeLearned(eventCode, recipeListIndex, recipeIndex) + em:UnregisterForEvent("FurnitureCatalogue", EVENT_RECIPE_LEARNED) + zo_callLater(executeRecipeScan, 500) end local wm = WINDOW_MANAGER - local function createIcon(control) - local icon - icon = wm:CreateControlFromVirtual(control:GetName().."FurCIcon", control, "FurC_SlotIconKnownYes") - if FurC.settings["showIconOnLeft"] == nil or - FurC.settings["showIconOnLeft"] == true then + local icon = wm:CreateControlFromVirtual(control:GetName().."FurCIcon", control, "FurC_SlotIconKnownYes") + local showLeft = FurC.settings.showIconOnLeft + if showLeft or nil == showLeft then icon:SetAnchor(BOTTOMLEFT, control:GetNamedChild("Button"), BOTTOMLEFT, -15, -10) else icon:SetAnchor(TOPLEFT, control:GetNamedChild("TraitInfo"), TOPLEFT, 0, 0) diff --git a/FurCFilter.lua b/FurCFilter.lua index c4af6d1..45000af 100644 --- a/FurCFilter.lua +++ b/FurCFilter.lua @@ -3,7 +3,7 @@ local p = FurC.DebugOut -- debug function calling zo_strformat with up to local searchString = "" local dropdownChoiceVersion = 1 local dropdownTextVersion = "All" -local ddSource = 1 +local ddSource = 1 local dropdownTextSource = "All" local dropdownChoiceCharacter = 1 local ddTextCharacter = "Accountwide" @@ -20,7 +20,19 @@ local sourceIndices local recipeArray, itemId, itemLink, itemType, sItemType, itemName, recipeIndex, recipeListIndex -function FurC.SetFilter(useDefaults, skipRefresh) +local useDefaults +local filterTask = FurC.FilterTask +function FurC.RefreshFilters(filterUseDefaults, skipRefresh) + useDefaults = filterUseDefaults + filterTask:Cancel() + filterTask:Call(FurC.SetFilter) + if skipRefresh then return end + filterTask:Then(FurC.RefreshContainer) +end + +function FurC.SetFilter() + + p("FurC.SetFilter(<<1>>)", tostring(useDefaults)) ClearTooltip(InformationTooltip) sourceIndices = FurC.SourceIndices @@ -42,27 +54,24 @@ function FurC.SetFilter(useDefaults, skipRefresh) qualityFilter = FurC.GetFilterQuality() craftingTypeFilter = FurC.GetFilterCraftingType() hideBooks = FurC.GetHideBooks() - hideRumours = FurC.GetHideRumourRecipes() mergeLuxuryAndSales = FurC.GetMergeLuxuryAndSales() - hideCrownStore = FurC.GetHideCrownStoreItems() - - -- ignore filtered items when no dropdown filter is set and there's a text search? - filterAllOnTextSearch = FurC.GetFilterAllOnText() and #searchString > 0 and - FURC_NONE == ddSource and - FURC_NONE == dropdownChoiceVersion and - FURC_NONE == dropdownChoiceCharacter + + -- p("Version: <<1>>, Source: <<2>>, Character: <<3>>, qualityFilter: <<4>>, ", + -- dropdownChoiceVersion, ddSource, dropdownChoiceCharacter, qualityFilter) - if not skipRefresh then - zo_callLater(FurC.UpdateLineVisibility, 200) - end -end + + -- ignore filtered items when there's a text search? + -- TODO this is broken + showBooksOnTextSearch, showRumoursOnTextSearch, showCrownStoreOnTextSearch = false, false, false + + if #searchString > 0 and FurC.GetFilterAllOnText() then + showBooksOnTextSearch = not FurC.GetFilterAllOnTextNoBooks() + showRumoursOnTextSearch = not FurC.GetFilterAllOnTextNoRumour() and FurC.GetHideRumourRecipes() and ddSource ~= FURC_RUMOUR + showCrownStoreOnTextSearch = not FurC.GetFilterAllOnTextNoCrown() and FurC.GetHideCrownStoreItems() and ddSource ~= FURC_CROWN + end -function FurC.InitFilters() - FurC.SetFilterCraftingType(0) - FurC.SetFilterQuality(0) - FurC.SetDropdownChoice("Source", FurC.GetDefaultDropdownChoiceText("Source"), FurC.GetDefaultDropdownChoice("Source")) - FurC.SetDropdownChoice("Character", FurC.GetDefaultDropdownChoiceText("Character"), FurC.GetDefaultDropdownChoice("Character")) - FurC.SetDropdownChoice("Version", FurC.GetDefaultDropdownChoiceText("Version"), FurC.GetDefaultDropdownChoice("Version")) + p("showRumours: <<1>>, showCrownStore: <<2>>", tostring(showRumoursOnTextSearch), tostring(showCrownStoreOnTextSearch)) + end local function isRecipeArrayKnown() @@ -82,10 +91,6 @@ local function matchVersionDropdown() return dropdownChoiceVersion == 1 or recipeArray.version == dropdownChoiceVersion end -local function shouldBeHidden() - return (ddSource ~= FURC_RUMOUR and recipeArray.origin == FURC_RUMOUR and hideRumours) or - (ddSource ~= FURC_CROWN and recipeArray.origin == FURC_CROWN and hideCrownStore) -end local validSourcesForOther = { [FURC_FESTIVAL_DROP] = true, @@ -119,9 +124,9 @@ local function matchSourceDropdown() if FURC_OTHER == ddSource then return validSourcesForOther[recipeArray.origin] end - -- we're checking character knowledge - return recipeArray.origin == ddSource - + + -- we're checking character knowledge + return recipeArray.origin == ddSource end @@ -146,8 +151,14 @@ local function matchQualityFilter() return qualityFilter[GetItemLinkQuality(itemLink)] end -local function filterBooks(itemId, recipeArray) - if not (hideBooks or filterAllOnTextSearch and FurC.GetFilterAllOnTextNoBooks()) then return false end +local function shouldBeHidden() + if recipeArray.origin == FURC_RUMOUR then + return not (showRumours or ddSource == FURC_RUMOUR) + end + if recipeArray.origin == FURC_CROWN then + return not (showCrownStore or ddSource == FURC_CROWN) + end + if (not hideBooks) or showBooksOnTextSearch then return false end local versionData = FurC.Books[recipeArray.version] if nil == versionData then return end return nil ~= versionData[itemId] @@ -158,27 +169,19 @@ function FurC.MatchFilter(currentItemId, currentRecipeArray) itemId = currentItemId itemLink = FurC.GetItemLink(itemId) recipeArray = currentRecipeArray or FurC.Find(itemLink) + + -- hide rumour, crown store items and books? + if shouldBeHidden(itemId, recipeArray) then return false end + itemType, sItemType = GetItemLinkItemType(itemLink) if 0 == itemType and 0 == sItemType then - p("invalid item type for <<1>>", currentItemId) + p("invalid item type for <<1>> (<<2>>)", currentItemId, FurC.GetItemLink(currentItemId)) return false end - if filterBooks(itemId, recipeArray) then return false end - if recipeArray.origin == FURC_RUMOUR then - if filterAllOnTextSearch and not FurC.GetFilterAllOnTextNoRumour() then - return false - end - if hideRumours and ddSource ~= FURC_RUMOUR then return false end - end - - if recipeArray.origin == FURC_CROWN then - if filterAllOnTextSearch and FurC.GetFilterAllOnTextNoCrown() then return false end - if hideCrownStore and ddSource ~= FURC_CROWN then return false end - end - if not (filterAllOnTextSearch or matchDropdownFilter()) then return false end + if not matchDropdownFilter() then return false end if not matchSearchString() then return false end diff --git a/FurCGui.lua b/FurCGui.lua index 5cc45be..58890e3 100644 --- a/FurCGui.lua +++ b/FurCGui.lua @@ -1,12 +1,12 @@ -FurC.SlotTemplate = "FurC_SlotTemplate" -FurC.KnowledgeFilter = "All (Accountwide)" -FurC.SearchString = "" -FurC.ScrollSortUp = true -local checkWasUpdated = false -local task = LibStub("LibAsync"):Create("FurnitureCatalogue_updateLineVisibility") -local otherTask = LibStub("LibAsync"):Create("FurnitureCatalogue_ToggleGui") -local async = LibStub("LibAsync"):Create("FurnitureCatalogue_forLoop") - +FurC.SlotTemplate = "FurC_SlotTemplate" +FurC.KnowledgeFilter = "All (Accountwide)" +FurC.SearchString = "" +FurC.ScrollSortUp = true +local task = LibStub("LibAsync"):Create("FurnitureCatalogue_updateLineVisibility") +local otherTask = LibStub("LibAsync"):Create("FurnitureCatalogue_ToggleGui") +local async = LibStub("LibAsync"):Create("FurnitureCatalogue_forLoop") +local FURC_S_FILTERDEFAULT = GetString(SI_FURC_TEXTBOX_FILTER_DEFAULT) +local cachedDefaults local p = FurC.DebugOut -- debug function calling zo_strformat with up to 10 args local sortTable = FurC.SortTable @@ -26,65 +26,68 @@ function FurC.CalculateMaxLines() return FurCGui_ListHolder.maxLines end -local function updateLineVisibility() - - - local function fillLine(curLine, curData, lineIndex) - if nil == curLine then return end - - local dataLines = FurCGui_ListHolder.dataLines - local maxLines = FurCGui_ListHolder.maxLines - - local hidden = lineIndex > #dataLines or lineIndex > maxLines - curLine:SetHidden(hidden) - if nil == curData or curLine:IsHidden() then - curLine.itemLink = "" - curLine.itemId = 0 - curLine.icon:SetTexture(nil) - curLine.icon:SetAlpha(0) - curLine.text:SetText("") - curLine.mats:SetText("") - else - curLine.itemLink = curData.itemLink - curLine.itemId = curData.itemId - curLine.icon:SetTexture(GetItemLinkIcon(curData.itemLink)) - curLine.icon:SetAlpha(1) - local text = curData.itemLink:gsub("H1", "H0") - curLine.text:SetText(((curData.favorite and "* ") or "").. text) - local mats = FurC.GetItemDescription(curData.itemId, curData) - curLine.mats:SetText(mats) - end +local function fillLine(curLine, curData, lineIndex) + if nil == curLine or nil == curData then return end + + local dataLines = FurCGui_ListHolder.dataLines + local maxLines = FurCGui_ListHolder.maxLines + + local hidden = lineIndex > #dataLines or lineIndex > maxLines + curLine:SetHidden(hidden) + if nil == curData or curLine:IsHidden() then + curLine.itemLink = "" + curLine.itemId = 0 + curLine.icon:SetTexture(nil) + curLine.icon:SetAlpha(0) + curLine.text:SetText("") + curLine.mats:SetText("") + else + curLine.itemLink = curData.itemLink + curLine.itemId = curData.itemId + curLine.icon:SetTexture(GetItemLinkIcon(curData.itemLink)) + curLine.icon:SetAlpha(1) + local text = curData.itemLink:gsub("H1", "H0") + curLine.text:SetText(((curData.favorite and "* ") or "").. text) + local mats = FurC.GetItemDescription(curData.itemId, curData) + curLine.mats:SetText(mats) end +end - local isEmpty = #FurCGui_ListHolder.dataLines == 0 +local function refreshLineContainer() + p("refreshLineContainer") + local maxLines = FurC.CalculateMaxLines() + local dataLines = FurCGui_ListHolder.dataLines - FurCGui_ListHolder:SetHidden( isEmpty) - FurCGui_Empty:SetHidden( not isEmpty) + local offset = FurCGui_ListHolder_Slider:GetValue() + if offset > #dataLines then offset = 0 end + FurCGui_ListHolder_Slider:SetValue(offset) - if isEmpty then return end + local curLine, curData - FurC.CalculateMaxLines() - - task:Call(function() - local maxLines = FurCGui_ListHolder.maxLines - local dataLines = FurCGui_ListHolder.dataLines + for i=1, FurCGui_ListHolder:GetNumChildren() do + curLine = FurCGui_ListHolder.lines[i] + curData = FurCGui_ListHolder.dataLines[offset + i] + fillLine(curLine, curData, i) + end + FurCGui_ListHolder_Slider:SetMinMax(0, #dataLines) +end - local offset = FurCGui_ListHolder_Slider:GetValue() - if offset > #dataLines then offset = 0 end - FurCGui_ListHolder_Slider:SetValue(offset) +function FurC.UpdateLineVisibility() + if FurCGui:IsHidden() then return end + + p("FurC.UpdateLineVisibility()") + - local curLine, curData + local isEmpty = #FurCGui_ListHolder.dataLines == 0 - for i=1, FurCGui_ListHolder:GetNumChildren() do - curLine = FurCGui_ListHolder.lines[i] - curData = FurCGui_ListHolder.dataLines[offset + i] - fillLine(curLine, curData, i) - end - FurCGui_ListHolder_Slider:SetMinMax(0, #dataLines) + FurCGui_ListHolder:SetHidden( isEmpty) + FurCGui_Empty:SetHidden( not isEmpty) - end) + if isEmpty then return end + + refreshLineContainer() end -FurC.UpdateLineVisibility = updateLineVisibility +local updateLineVisibility = FurC.UpdateLineVisibility function FurC.IsLoading(isBuffering) @@ -129,32 +132,44 @@ local function updateScrollDataLinesData() end) end -local FURC_S_FILTERDEFAULT = GetString(SI_FURC_TEXTBOX_FILTER_DEFAULT) -local cachedDefaults + + + local function startLoading() FurC.IsLoading(true) - local text = FurC_SearchBox:GetText() - FurC_SearchBoxText:SetText((#text == 0 and FURC_S_FILTERDEFAULT) or "") - FurC.LastFilter = useDefaults - FurC.SetFilter(useDefaults, true) + FurC.RefreshFilters(cachedDefaults, true) end local function stopLoading() FurC.IsLoading(false) - updateLineVisibility() + FurC.UpdateLineVisibility() end local function stopLoadingWithDelay() zo_callLater(stopLoading, 500) end -function FurC.UpdateGui(useDefaults) + +function FurC.RefreshContainer() + cachedDefaults = false + otherTask:Cancel() + otherTask:Call(startLoading) + :Then(updateScrollDataLinesData) + :Then(stopLoadingWithDelay) +end + +-- will do a full UI refresh +function FurC.UpdateGui(useDefaults, skipRefresh) + if FurCGui:IsHidden() then return end + p("FurC.UpdateGui(<<1>>)", tostring(useDefaults)) cachedDefaults = useDefaults + otherTask:Cancel() otherTask:Call(startLoading) :Then(updateScrollDataLinesData) :Then(stopLoadingWithDelay) end function FurC.UpdateInventoryScroll() + p("FurC.UpdateInventoryScroll()") local index = 0 FurCGui_ListHolder.dataOffset = FurCGui_ListHolder.dataOffset or 0 FurCGui_ListHolder.dataOffset = math.max(FurCGui_ListHolder.dataOffset, 0) @@ -165,7 +180,6 @@ function FurC.UpdateInventoryScroll() if total > 0 then FurCGui_ListHolder_Slider:SetMinMax(0, total) end - updateLineVisibility() end @@ -449,21 +463,31 @@ local function createGui() createInventoryDropdown("Character") FurC.ChangeTemplateFromButton(FurC.GetTinyUi()) FurC.SetFontSize(FurC.GetFontSize()) - FurC.LoadFrameInfo() - FurC.InitFilters() + FurC.LoadFrameInfo(true) + -- FurC.InitFilters() +end +local function showGui() + FurC.UpdateGui(FurC.GetResetDropdownChoice()) end function FurnitureCatalogue_Toggle() + + p("\n") + p("\n") SCENE_MANAGER:ToggleTopLevel(FurCGui) - if FurCGui:IsHidden() then return end + if FurCGui:IsHidden() then + FurC.FilterTask:Cancel() + return + end FurCGui_Empty:SetHidden(true) - zo_callLater(function() FurC.UpdateGui(FurC.GetResetDropdownChoice()) end, 500) + zo_callLater(showGui, 500) end function FurC.InitGui() + p("FurC.InitGui()") local control = FurCGui local settings = FurC.settings["gui"] FurC.GuiElements = {} @@ -483,5 +507,7 @@ function FurC.InitGui() FurC_Label:GetNamedChild("_2"):SetText(GetString(SI_FURC_LABEL_ENTRIES)) SCENE_MANAGER:RegisterTopLevel(FurCGui, false) + + FurC.RefreshFilters(true, true) end diff --git a/FurCSettingsAdapter.lua b/FurCSettingsAdapter.lua index 60af629..fd19ac6 100644 --- a/FurCSettingsAdapter.lua +++ b/FurCSettingsAdapter.lua @@ -50,7 +50,7 @@ end function FurC.GetFilterAllOnTextNoBooks() return FurC.settings["filterAllOnTextNoBooks"] end -function FurC.GetFilterAllOnTextNoBooks(value) +function FurC.SetFilterAllOnTextNoBooks(value) FurC.settings["filterAllOnTextNoBooks"] = value FurC.UpdateGui() end @@ -58,7 +58,7 @@ end function FurC.GetFilterAllOnTextNoCrown() return FurC.settings["filterAllOnTextNoCrown"] end -function FurC.GetFilterAllOnTextNoCrown(value) +function FurC.SetFilterAllOnTextNoCrown(value) FurC.settings["filterAllOnTextNoCrown"] = value FurC.UpdateGui() end @@ -80,8 +80,6 @@ function FurC.SetFontSize(value) FurC.SetLineHeight() - - task:Call(function() FurC.UpdateGui() end) end @@ -199,8 +197,7 @@ function FurC.SetFilterQuality(quality) control:SetState((filterArray[key-1] and BSTATE_PRESSED) or BSTATE_NORMAL) end FurC.GuiOnScroll(nil, 0) - FurC.SetFilter() - FurC.UpdateGui() + FurC.RefreshFilters() end function FurC.GetFilterCraftingType() @@ -226,13 +223,11 @@ function FurC.SetFilterCraftingType(craftingType) end FurC.GuiOnScroll(FurCGui_ListHolder_Slider, 0) - FurC.SetFilter() - FurC.UpdateGui() + FurC.RefreshFilters() end local FURC_S_FILTERDEFAULT = GetString(SI_FURC_TEXTBOX_FILTER_DEFAULT) - function FurC.GetSearchFilter() if (not FurC.SearchFilter) or FurC.SearchFilter == FURC_S_FILTERDEFAULT then FurC.SearchFilter = FurC_SearchBox:GetText() or "" @@ -240,33 +235,11 @@ function FurC.GetSearchFilter() return FurC.SearchFilter or "" end -local alreadySearching = false -local alreadyReset = false -local function resetSearch() - alreadySearching = false - alreadyReset = false -end -local function doSearchOnUpdate() - - if alreadyReset then return end - if alreadySearching then - alreadyReset = true - zo_callLater(resetSearch, 200) - return - end - local text = FurC_SearchBox:GetText() - FurC_SearchBoxText:SetText((#text == 0 and FURC_S_FILTERDEFAULT) or "") - - FurC.SearchFilter = text - - FurC.GuiOnSliderUpdate(FurCGui_ListHolder_Slider, 0) - FurC.UpdateGui() -end function FurC.GuiSetSearchboxTextFrom(control) control = control or FurC_SearchBox - -- call asynchronely to prevent lagging. Praise votan. - task:Call(doSearchOnUpdate) + FurC.SearchFilter = control:GetText() + FurC.RefreshFilters() end function FurC.GetHideBooks() @@ -274,14 +247,14 @@ function FurC.GetHideBooks() end function FurC.SetHideBooks(value) FurC.settings["hideBooks"] = value - FurC.UpdateGui() + FurC.RefreshFilters() end function FurC.GetMergeLuxuryAndSales() return FurC.settings["mergeLuxuryAndSales"] end function FurC.SetMergeLuxuryAndSales(value) - FurC.settings["mergeLuxuryAndSales"] = value - FurC.UpdateGui() + FurC.settings["mergeLuxuryAndSales"] = value + FurC.RefreshFilters() end diff --git a/FurCTooltip.lua b/FurCTooltip.lua index c7acbb0..a270823 100644 --- a/FurCTooltip.lua +++ b/FurCTooltip.lua @@ -47,7 +47,7 @@ local function addTooltipData(control, itemLink) if not isRecipe and (not FurC.GetHideCraftingStation()) then stringTable = add(stringTable, FurC.PrintCraftingStation(itemId, recipeArray)) end - if isRecipe then + if isRecipe or recipeArray.origin == FURC_CRAFTING then stringTable = add(stringTable, FurC.getRecipeSource(itemId, recipeArray)) end -- check if we should show mats diff --git a/FurnitureCatalogue.txt b/FurnitureCatalogue.txt index 6e93364..9ef5a6b 100644 --- a/FurnitureCatalogue.txt +++ b/FurnitureCatalogue.txt @@ -1,7 +1,7 @@ - ## Title: FurnitureCatalogue +## Title: FurnitureCatalogue ## Author: manavortex -## Version: 2.65 -## APIVersion: 100024 +## Version: 2.66 +## APIVersion: 100024 100025 ## SavedVariables: FurnitureCatalogue_Settings ## OptionalDependsOn: pChat @@ -60,7 +60,6 @@ data\04_Clockwork\CC_LuxuryFurnisher.lua data\05_Dragonbones\DragonB_LuxuryFurnisher.lua data\01_Homestead\H_Rolis.lua -data\03_Reach\HotR_Rolis.lua data\Rolis.lua data\01_Homestead\H_EventItems.lua @@ -69,12 +68,13 @@ data\EventItems.lua data\MiscItemSources.lua data\Recipes.lua -data\RecipeSources.lua data\RumourRecipes.lua data\$(APIVersion).lua +data\RecipeSources.lua + FurCUtil.lua FurCDatabaseQuery.lua diff --git a/FurnitureCatalogue_DevUtility/ContextMenu.lua b/FurnitureCatalogue_DevUtility/ContextMenu.lua index 18514d3..e9a21ed 100644 --- a/FurnitureCatalogue_DevUtility/ContextMenu.lua +++ b/FurnitureCatalogue_DevUtility/ContextMenu.lua @@ -61,7 +61,7 @@ local function makeOutput() local isRecipe = IsItemLinkFurnitureRecipe(cachedItemLink) local debugString = (isRecipe and s_forRecipe) or s_default - cachedName = cachedName or GetItemLinkName(cachedItemLink) + cachedName = cachedName or GetItemLinkName(cachedItemLink) or "" if 0 < (cachedPrice or 0) then debugString = s_withPrice end if not (cachedCanBuy or isRecipe) then debugString = s_withAchievement end @@ -69,42 +69,39 @@ local function makeOutput() if #(textbox:GetText() or "") == 0 then debugString = debugString:sub(5, #debugString) end - - return string.format(debugString .. "\n", FurC.GetItemId(cachedItemLink), cachedName, cachedPrice) + local itemId = GetItemLinkItemId(cachedItemLink) or 0 + return string.format(debugString .. "\n", itemId, (cachedName or 0), (cachedPrice or 0)) end local function isItemIdCached() local itemId = FurC.GetItemId(cachedItemLink) + if not itemId then return false end if cachedItemIds[itemId] then return true end cachedItemIds[itemId] = true return false end local function concatToTextbox(itemId) - if (not isMana) or isItemIdCached() then return end local textSoFar = this.textbox:GetText() or "" this.textbox:SetText(textSoFar .. makeOutput()) showTextbox() end -function this.concatToTextbox (itemId) - if itemId then - cachedItemLink = FurC.GetItemLink(itemId) - cachedCanBuy = true - cachedName = GetItemLinkName(cachedItemLink) - cachedPrice = 0 - end - concatToTextbox() +local function idToChat(itemId) + d("idToChat " .. itemId) + d(itemId) + FurC.ToChat(itemId, true) end - local function doNothing() return end local S_ADD_TO_BOX = "Add data to textbox" +local S_ID_TO_CHAT = "ID to chat" local S_DIVIDER = "-" local function addMenuItems() - AddCustomMenuItem(S_DIVIDER, doNothing, MENU_ADD_OPTION_LABEL) - AddCustomMenuItem(S_ADD_TO_BOX, concatToTextbox, MENU_ADD_OPTION_LABEL) + AddCustomMenuItem(S_DIVIDER, doNothing, MENU_ADD_OPTION_LABEL) + AddCustomMenuItem(S_ADD_TO_BOX, concatToTextbox, MENU_ADD_OPTION_LABEL) + AddCustomMenuItem(S_ID_TO_CHAT, idToChat, MENU_ADD_OPTION_LABEL) end @@ -112,6 +109,8 @@ function FurCDevControl_HandleClickEvent(itemLink, button, control) -- button b if not isMana then return end if (type(itemLink) == 'string' and #itemLink > 0) then + cachedItemLink = itemLink + cachedName = GetItemLinkName(itemLink) local handled = LINK_HANDLER:FireCallbacks(LINK_HANDLER.LINK_MOUSE_UP_EVENT, itemLink, button, ZO_LinkHandler_ParseLink(itemLink)) if (not handled) then FurCDevControl_LinkHandlerBackup_OnLinkMouseUp(itemLink, button, control) @@ -170,7 +169,7 @@ function this.OnControlMouseUp(control, button) if not control.itemLink or #control.itemLink == 0 then return end cachedItemLink = control.itemLink - + d(cachedItemLink) zo_callLater(function() ItemTooltip:SetHidden(true) ClearMenu() diff --git a/data/01_Homestead/H_Rolis.lua b/data/01_Homestead/H_Rolis.lua deleted file mode 100644 index 131ec7c..0000000 --- a/data/01_Homestead/H_Rolis.lua +++ /dev/null @@ -1,34 +0,0 @@ -FurC.Rolis = FurC.Rolis or {} -FurC.Rolis_Recipes = FurC.Rolis_Recipes or {} - - -FurC.Rolis[FURC_HOMESTEAD] = { - -- Alchemy station - [118328] = 35, - -- Blacksmithing station - [119781] = 35, - -- Clothing station - [119707] = 35, - -- Dye Station - [118329] = 35, - -- Enchanting station - [118330] = 35, - -- Provisioning station - [118327] = 35, - -- Woodworking station - [119744] = 35, - - -- Attunable Blacksmithing station - [119594] = 250, - -- Attunable Clothing station - [119821] = 250, - -- Attunable Woodworking station - [119822] = 250, -} - -FurC.Rolis_Recipes[FURC_HOMESTEAD] = { - 121207, -- Target Skeleton - 121315, -- Robust Target Skeleton - 126582, -- Target Centurion - 126583, -- Robust Target Centurion -} diff --git a/data/02_Morrowind/M_Recipes.lua b/data/02_Morrowind/M_Recipes.lua index 8760ab1..3517d4a 100644 --- a/data/02_Morrowind/M_Recipes.lua +++ b/data/02_Morrowind/M_Recipes.lua @@ -274,7 +274,6 @@ FurC.Recipes[FURC_MORROWIND] = { 126583, -- Target Centurion, Robust Refabricated 126884, -- Dwarven Vessel, Sealed 121189, -- Haj Mota Head, Wall Mount - 121188, -- Echatere Horns, Wall Mount 121184, -- Antlers, Wall Mount 127091, -- Hlaalu Lantern, Oversized Vellum 121174, -- Sack of Grain diff --git a/data/03_Reach/HotR_LuxuryFurnisher.lua b/data/03_Reach/HotR_LuxuryFurnisher.lua index 372d040..46c2074 100644 --- a/data/03_Reach/HotR_LuxuryFurnisher.lua +++ b/data/03_Reach/HotR_LuxuryFurnisher.lua @@ -46,7 +46,7 @@ FurC.LuxuryFurnisher[FURC_REACH] = { itemPrice = 35000, itemDate = "2017-10-13", }, - + -- Oct. 7 [132145] = { -- Orsinium Tent, Chief’s itemPrice = 15000, diff --git a/data/03_Reach/HotR_Recipes.lua b/data/03_Reach/HotR_Recipes.lua index 5ea7019..7583080 100644 --- a/data/03_Reach/HotR_Recipes.lua +++ b/data/03_Reach/HotR_Recipes.lua @@ -1,48 +1,30 @@ FurC.Recipes = FurC.Recipes or {} FurC.Recipes[FURC_REACH] = { - 132179, - 132168, - 132178, - 132176, - 132177, - 132188, - 132180, - 132169, - 132195, - 132194, - 132186, - 132170, - 132192, - 132167, - 132193, - 132191, - 132182, - 132190, - 132183, - 132181, - 132189, - 132196, - 132187, - 132184, - 132175, - 132185, - 132173, - 132174, - 132172, - 132171, - - - -- witches festival ayleid stuff - 132342, -- Ayleid Table, Carved - 132343, -- Ayleid Bench, Carved - 132344, -- Ayleid Brazier, Welkynd Holder - 132187, -- Ayleid Bookcase, Cluttered - 132188, -- Ayleid Bookshelf, Cluttered - 132189, -- Ayleid Brazier, Fiery - - -- witches festival - 132167, -- Praxis, Hagraven Cauldron, Rough Stone - 132196, -- Pattern: Witches Corpse, Wrapped", - 132173, -- Blueprint: Witches Brazier, Primitive Log", - 132179, -- Blueprint: Witches Totem, Antler Charms", + 132179, -- Blueprint: Witches Totem, Antler Charms + 132188, -- Praxis: Ayleid Bookshelf, Cluttered + 132195, -- Blueprint: Telvanni Candelabra, Masterwork + 132194, -- Design: Mammoth Cheese, Mastercrafted + 132186, -- Diagram: Daedric Cage, Hanging + 132192, -- Pattern: Dres Sewing Kit, Master's + 132167, -- Praxis: Hagraven Cauldron, Rough Stone + 132193, -- Praxis: Hlaalu Bath Tub, Masterwork + 132191, -- Diagram: Dwarven Gyroscope, Masterwork + 132190, -- Formula: Mages Apparatus, Master + 132183, -- Diagram: Daedric Fence, Section + 132189, -- Diagram: Ayleid Brazier, Fiery + 132196, -- Pattern: Witches Corpse, Wrapped + 132187, -- Praxis: Ayleid Bookcase, Cluttered + 132184, -- Praxis: Daedric Doorway, Spiked + 132185, -- Diagram: Daedric Brazier, Coldharbour + 132173, -- Blueprint: Witches Brazier, Primitive Log + 132342, -- Praxis: Ayleid Table, Carved + 132343, -- Praxis: Ayleid Bench, Carved + 132344, -- Diagram: Ayleid Brazier, Welkynd Holder + 132187, -- Praxis: Ayleid Bookcase, Cluttered + 132188, -- Praxis: Ayleid Bookshelf, Cluttered + 132189, -- Diagram: Ayleid Brazier, Fiery + 132167, -- Praxis: Hagraven Cauldron, Rough Stone + 132196, -- Pattern: Witches Corpse, Wrapped + 132173, -- Blueprint: Witches Brazier, Primitive Log + 132179, -- Blueprint: Witches Totem, Antler Charms } diff --git a/data/03_Reach/HotR_Rollis.lua b/data/03_Reach/HotR_Rollis.lua deleted file mode 100644 index f421cad..0000000 --- a/data/03_Reach/HotR_Rollis.lua +++ /dev/null @@ -1,10 +0,0 @@ -FurC.Rolis_Recipes = FurC.Rolis_Recipes or {} - -FurC.Rolis_Recipes[FURC_REACH] = { - [132195] = true, -- Telvanni Candelabra, Masterwork - [132194] = true, -- Mammoth Cheese, Mastercrafted - [132191] = true, -- Dwarven Gyroscope - [132190] = true, -- Mages Apparatus, Master - [132192] = true, -- Dres Sewing Kit - [132193] = true, -- Hlaalu Bathtub, Masterwork -} diff --git a/data/100025.lua b/data/100025.lua new file mode 100644 index 0000000..df1778c --- /dev/null +++ b/data/100025.lua @@ -0,0 +1,351 @@ +local function getCrownPrice(price) + return string.format("%s (PTS, %u)", GetString(SI_FURC_CROWNSTORESOURCE), price) +end + +FurC.MiscItemSources[FURC_SLAVES] = { + [FURC_RUMOUR] = { + [146048] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Festive Fir + [146049] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Winter Festival Hearth + [146050] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Winter Festival Hearthfire + [145923] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Lies of the Dread-Father + [146052] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Vvardvark Ice Sculpture + [146053] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Guar Ice Sculpture + [145926] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- That of Void + [145927] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Acts of Honoring + [145928] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Speakers of Nothing + [146057] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Snowmortal, Human + [146058] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Snowmortal, Argonian + [146060] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Ladle + [146062] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Winter Ouroboros Wreath + [145553] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Small Glyphed + [145426] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Felucca, Canopied + [145427] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Serpent Skull, Colossal + [145428] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Lantern Post, Covered + [145429] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant Cluster, Cardinal Flower Large + [145430] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Star Blossom + [145431] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Marsh Nigella + [145432] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Canna Lily + [146061] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Triptych Banner + [145434] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Large Lantern Flower + [145435] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Marsh Mani Flower + [145436] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Canopied Felucca, Double Hulled + [145437] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Reed Felucca, Double Hulled + [145438] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Glyphed + [145439] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Fearsome + [145440] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Skull + [145441] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Serpent + [145442] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Twinned + [145443] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Shrine, Sithis Looming + [145444] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Totem, Hist Guardian + [145445] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- The Sharper Tongue: A Jel Primer + [145446] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Sithis, the Hungering Dark + [145447] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Dais, Engraved + [145448] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Throne, Engraved + [145449] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Stele, Hist Guardians + [145450] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Stele, Hist Cultivation + [145451] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Shrine, Sithis Figure Anointed + [145452] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Shrine, Sithis Looming Anointed + [145453] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Marsh Aloe + [145454] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Marsh Aloe Pod + [145455] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Dendritic Hist Bulb + [145456] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Hist Bulb + [145457] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Banyan + [145458] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Ancient Banyan + [141875] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Witches Festival Scarecrow + [145462] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Cardinal Flower + [146059] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Snowmortal, Khajiit + [146051] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Mudcrab Ice Sculpture + [146054] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Garland + [145467] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- The Way of Shadow + [145468] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Wedding Lantern, Hanging + [145469] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Redguard Gazebo, Palatial Domed + [145470] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Redguard Vase, Golden + [145471] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Redguard Raincatcher, Golden + [145472] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Antler Coral, Crimson + [145473] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Antler Coral, Stout Crimson + [145474] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Flytrap + [145475] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Soulsplinter Weed + [145476] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Alinor Shrine, Trinimac + [145477] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Alinor Pedestal, Shrine + [145478] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Alinor Shrine, Y'ffre + [145479] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Iron Maiden, Occupied + [145480] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Corpse, Burned Seated + [145481] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Corpse, Burned Sprawled + [145482] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Wheelbarrow, Bones + [145483] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Column, Ossuary + [145484] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Dark Elf Statue, Ordinator + [145485] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Dark Elf Statue, Knight + [145486] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Door, Sweet Mother + [145487] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Banner, Order of the Hour + [145488] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Banner, Jewelry Crafting + [146055] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Garland Wreath + [146056] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Cookies and Ale + [145491] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Static Pitcher + [145492] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Gas Blossom + [145493] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Lantern Mantis + [141854] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Decorative Hollowjack Flame-Skull + [145554] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Towering Snowy Fir + [145555] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Snowy Fir + [145597] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Scales of Shadow + [145595] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Scuttlebloom + [145322] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Music Box, Blood and Glory + [145576] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Timid Vine-Tongue + [145318] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Gravestone, Small Broken + [145317] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Gravestone, Broken + [141920] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Brazier, Ceremonial + [141921] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Bowl, Geometric Pattern + [141922] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Dish, Geometric Pattern + [141923] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Amphora, Seed Pattern + [141924] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Vase, Scale Pattern + [141925] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Hearth Shrine, Sithis Relief + [141926] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Hearth Shrine, Sithis Figure + [145550] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Hunting Lure, Grisly + [145549] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Totem, Stone Head + [141870] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Raven-Perch Cemetery Wreath + [142235] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Music Box, Flickering Shadows + [141856] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Decorative Hollowjack Daedra-Skull + [141855] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Decorative Hollowjack Wraith-Lantern + [145556] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Tall Snowy Fir + [145396] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Tapestry, Hist Gathering Worn + [145397] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Rug, Hist Gathering Worn + [145398] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Rug, Supine Turtle Worn + [145399] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Rug, Crawling Serpents Worn + [145400] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Rug, Lurking Lizard Worn + [145401] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Tapestry, Xanmeer Worn + [145402] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Fish, Black Marsh + [145403] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Jel Parchment + [146047] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- From Old Life To New + }, + + [FURC_CROWN] = { + [145433] = getCrownPrice(1), -- Plant, Rafflesia + [145459] = getCrownPrice(1), -- Murkmire Kiln, Ancient Stone + [145460] = getCrownPrice(1), -- Plant, Canna Leaves + [145461] = getCrownPrice(1), -- Plant Cluster, Cardinal Flower Small + [145463] = getCrownPrice(1), -- Plant Cluster, Red Sister Ti + [145464] = getCrownPrice(1), -- Plant, Red Sister Ti + [145465] = getCrownPrice(1), -- Plant Cluster, Wilted Hist Bulb + [145466] = getCrownPrice(1), -- Plant, Wilted Hist Bulb + [141939] = getCrownPrice(1), -- Grave, Grasping + [145411] = getCrownPrice(1), -- Plant, Lantern Flower + [141965] = getCrownPrice(1), -- Hollowjack Lantern, Soaring Dragon + [141966] = getCrownPrice(1), -- Hollowjack Lantern, Toothy Grin + [141967] = getCrownPrice(1), -- Hollowjack Lantern, Ouroboros + [142004] = getCrownPrice(1), -- Specimen Jar, Spare Brain + [142005] = getCrownPrice(1), -- Specimen Jar, Monstrous Remains + [142003] = getCrownPrice(1), -- Specimen Jar, Eyes + [141869] = getCrownPrice(1), -- Alinor Potted Plant, Cypress + [141976] = getCrownPrice(1), -- Pumpkin Patch, Display + [141853] = getCrownPrice(1), -- Statue of Hircine's Bitter Mercy + + }, + [FURC_FISHING] = { + -- fishing + -- [118902] = GetString(SI_FURC_CANBEFISHED), -- Coral, Sun + }, + [FURC_DROP] = { + -- [121058] = FURC_DB_SNEAKY, -- Candles of Silence + }, + +} + + +FurC.Recipes[FURC_SLAVES] = { + + 145944, -- Praxis: Murkmire Chair, Engraved + 145945, -- Praxis: Murkmire Bench, Wide + 145946, -- Praxis: Murkmire Bench, Armless + 145947, -- Praxis: Murkmire Bed, Enclosed + 145948, -- Praxis: Murkmire Pedestal, Low + 145949, -- Praxis: Murkmire Table, Engraved + 145950, -- Praxis: Murkmire Brazier, Engraved + 145951, -- Praxis: Murkmire Bookshelf, Grand + 145952, -- Praxis: Murkmire Bookshelf, Grand Full + 145953, -- Praxis: Murkmire Sarcophagus, Empty + 145954, -- Praxis: Murkmire Sarcophagus Lid + 145955, -- Praxis: Murkmire Bookshelf + 145956, -- Praxis: Murkmire Bookshelf, Full + 145957, -- Praxis: Murkmire Platform, Sectioned + 145958, -- Praxis: Murkmire Pedestal, Winged + 145959, -- Praxis: Murkmire Totem, Beacon + 145960, -- Diagram: Murkmire Brazier, Bowl + 145961, -- Praxis: Murkmire Hearth Shrine, Sithis Rearing + 145962, -- Praxis: Murkmire Hearth Shrine, Sithis Coiled + 145963, -- Praxis: Murkmire Hearth Shrine, Sithis Looming + 145964, -- Praxis: Murkmire Shrine, Sithis Relief + 145965, -- Praxis: Murkmire Shrine, Sithis Rearing + 145966, -- Praxis: Murkmire Shrine, Sithis Figure + 145967, -- Praxis: Murkmire Shrine, Sithis Coiled + 145968, -- Design: Murkmire Pot, Large Carved + 145969, -- Design: Bowl of Worms + 145970, -- Design: Bowl of Guts + 145971, -- Design: Bowl of Worms, Large + 145972, -- Design: Grub Kebabs + 145973, -- Design: Murkmire Berry Strand + 145974, -- Design: Murkmire Pot, Handmade + 145975, -- Design: Melon, Wax + 145976, -- Design: Dragonfruit, Wax + 145977, -- Blueprint: Murkmire Platter, Large + 145978, -- Blueprint: Murkmire Plate, Charger + 145979, -- Praxis: Murkmire Wall, Stone + 145980, -- Blueprint: Murkmire Bonding Chimes, Domed + 145981, -- Formula: Murkmire Lantern, Covered + 145982, -- Formula: Murkmire Lamp, Hanging Bottle + 145983, -- Formula: Murkmire Lamp, Hanging Conch + 145984, -- Formula: Murkmire Sconce, Shell + 145985, -- Formula: Murkmire Brazier, Shell + 145986, -- Formula: Murkmire Lamp, Shell + 145987, -- Design: Murkmire Candlepost, Timber + 145988, -- Design: Murkmire Candlepost, Driftwood + 145989, -- Design: Murkmire Candles, Bone Group + 145990, -- Design: Murkmire Candle, Bone Tall + 145991, -- Design: Murkmire Candle, Bone Squat + 145992, -- Blueprint: Murkmire Bed, Carved + 145993, -- Blueprint: Murkmire Wardrobe, Woven + 145994, -- Blueprint: Murkmire Chair, Woven + 141899, -- Praxis: Sacrificial Altar, Hircine + 141900, -- Blueprint: Ritual Fetish, Hircine + 146004, -- Blueprint: Murkmire Ramp, Reed + 146005, -- Blueprint: Murkmire Platform, Reed + 146006, -- Blueprint: Murkmire Gate, Arched + 146007, -- Blueprint: Murkmire Wall, Straight + 146008, -- Blueprint: Murkmire Totem Post, Carved + 146009, -- Blueprint: Murkmire Wall, Corner Curve + 146010, -- Pattern: Murkmire Tapestry, Hist Gathering + 146011, -- Pattern: Murkmire Rug, Hist Gathering + 146012, -- Pattern: Murkmire Rug, Supine Turtle + 146013, -- Pattern: Murkmire Rug, Crawling Serpents + 146014, -- Pattern: Murkmire Rug, Lurking Lizard + 146015, -- Pattern: Murkmire Tapestry, Xanmeer + 146016, -- Blueprint: Murkmire Bonding Chimes, Simple + 146017, -- Blueprint: Murkmire Totem, Wolf-Lizard + 141898, -- Praxis: Ritual Stone, Hircine + 141897, -- Praxis: Obelisk, Lord Hircine Ritual + 141896, -- Sketch: Figurine, The Dragon's Glare + 145995, -- Blueprint: Murkmire Trunk, Leatherbound + 145999, -- Blueprint: Murkmire Shelf, Reed + 145996, -- Blueprint: Murkmire Counter, Cabinet + 145997, -- Blueprint: Murkmire Counter, Low Cabinet + 145998, -- Blueprint: Murkmire Table, Woven + 145915, -- Praxis: Murkmire Desk, Engraved + 146000, -- Blueprint: Murkmire Shelves, Woven + 146001, -- Blueprint: Murkmire Shelf, Woven Hanging + 146002, -- Blueprint: Murkmire Ramp, Marshwood + 146003, -- Blueprint: Murkmire Walkway, Reed +} + + + +FurC.AchievementVendors[FURC_SLAVES] = { + -- ["the Undaunted Enclaves"] = { + -- ["Undaunted Quartermaster"] = { + -- [141858] = { --Banner of the Silver Dawn + -- itemPrice = 15000, + -- achievement = 2152, + -- }, + -- [141857] = { --Ritual Chalice, Hircine + -- itemPrice = 5000, + -- achievement = 2162, + -- }, + -- }, + -- }, + ["Murkmire"] = { + [GetString(FURC_AV_HAR)] = { + [145408] = { --Argon Pedestal, Replica + itemPrice = 15000, + achievement = 0, -- The river of rebirth + }, + [145406] = { --Banner, Bright-Throat + itemPrice = 10000, + achievement = 2353, -- murky marketeer + }, + [145404] = { --Banner, Dead-Water + itemPrice = 10000, + achievement = 2354, -- Cold Blood, Warm Heart + }, + [145405] = { --Banner, Rootwater + itemPrice = 10000, + achievement = 0, -- Resplendent Rootmender + }, + [145553] = { --Grave Stake, Small Glyphed + itemPrice = 5000, + achievement = 2330, -- Surreptiliously Shadowed + }, + [145549] = { --Murkmire Totem, Stone Head + itemPrice = 12000, + achievement = 0, -- Art of the Nisswo + }, + [145407] = { -- Remnant of Argon, Replica + itemPrice = 75000, + achievement = 2339, -- River of Rebirth + }, + [145412] = { --Seed Doll, Turtle + itemPrice = 20000, + achievement = 2336, -- Sap-Sleeper + }, + [145576] = { --Timid Vine-Tongue + itemPrice = 40000, + achievement = 2357, -- Vine-Tongue Traveler + }, + + }, + [GetString(FURC_AV_ADO)] = { + [145551] = { -- Murkmire Kiln, Derelict + itemPrice = 450, + }, + [145557] = { -- Plant Cluster, Spadeleaf + itemPrice = 350, + }, + [145414] = { -- Plant Cluster, Marsh Saplings + itemPrice = 250, + }, + [145417] = { -- Plant, Bramblebrush + itemPrice = 250, + }, + [145413] = { -- Plant, Marsh Palm + itemPrice = 350, + }, + [145419] = { -- Plant, Marshfrond + itemPrice = 400, + }, + [145547] = { -- Plant, Moorstalk Hive + itemPrice = 1250, + }, + [145416] = { -- Plant, Purple Spadeleaf + itemPrice = 300, + }, + [145420] = { -- Plant, Thorny Swamp Lily + itemPrice = 400, + }, + [145418] = { -- Plant, Young Marshfrond + itemPrice = 250, + }, + [145425] = { -- Rock, Mossy Marsh + itemPrice = 250, + }, + [145424] = { -- Rocks, Mossy Marsh Cluster + itemPrice = 750, + }, + [145422] = { -- Tree Cluster, Young Sycamore + itemPrice = 450, + }, + [145421] = { -- Tree, Marsh Cypress + itemPrice = 350, + }, + [145423] = { -- Tree, Mire Mangrove + itemPrice = 4000, + }, + [145415] = { -- Tree, Mossy Sycamore + itemPrice = 2000, + }, + + } + } +} + +-- local versionData = FurC.MiscItemSources[FURC_SLAVES] + +-- d(zo_strformat("num entries in FurC.MiscItemSources[FURC_SLAVES]: <<1>>", NonContiguousCount(versionData))) +-- for origin, originData in pairs(versionData) do + -- d(zo_strformat("origin <<1>>, <<2>> entries", origin, NonContiguousCount(originData))) +-- end \ No newline at end of file diff --git a/data/AchievementVendors.lua b/data/AchievementVendors.lua index 8b8936c..1622207 100644 --- a/data/AchievementVendors.lua +++ b/data/AchievementVendors.lua @@ -1,14 +1,14 @@ FurC.AchievementVendors[FURC_WEREWOLF] = { ["the Undaunted Enclaves"] = { ["Undaunted Quartermaster"] = { + [141857] = { --Ritual Chalice, Hircine + itemPrice = 5000, + achievement = 2162, + }, [141858] = { --Banner of the Silver Dawn itemPrice = 15000, achievement = 2152, }, - [141857] = { --Ritual Chalice, Hircine - itemPrice = 5000, - achievement = 2162, - }, }, }, @@ -20,8 +20,7 @@ FurC.AchievementVendors[FURC_WEREWOLF] = { }, [119971] = { -- Statue of Shadows itemPrice = 25000, - }, - + }, } }, diff --git a/data/MiscItemSources.lua b/data/MiscItemSources.lua index 08637db..db6e86b 100644 --- a/data/MiscItemSources.lua +++ b/data/MiscItemSources.lua @@ -51,13 +51,6 @@ FurC.MiscItemSources[FURC_WEREWOLF] = { }, [FURC_RUMOUR] = { - -- found on TTC [141825] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Relic Vault, Impenetrable - -- found on TTC [141826] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Alinor Bed, Levitating - -- found on TTC [141827] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Alinor Bookshelf, Grand Full - -- found on TTC [141828] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Alinor Gaming Table, Punctilious Conflict - -- found on TTC [141829] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Artist's Palette, Pigment - -- found on TTC [141830] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Alinor Grape Stomping Tub - -- found on TTC [141831] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Figurine, The Dragon's Glare [141832] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Tree, Robust Fig [141833] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Tree, Ancient Fig [141834] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Tree, Towering Fig @@ -74,7 +67,6 @@ FurC.MiscItemSources[FURC_WEREWOLF] = { [141854] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Decorative Hollowjack Flame-Skull [141855] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Decorative Hollowjack Wraith-Lantern [141856] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Decorative Hollowjack Daedra-Skull - [141857] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Ritual Chalice, Hircine [141869] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Alinor Potted Plant, Cypress [141870] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Raven-Perch Cemetery Wreath [141875] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Witches Festival Scarecrow diff --git a/data/RecipeSources.lua b/data/RecipeSources.lua index 0026c9e..9c76f89 100644 --- a/data/RecipeSources.lua +++ b/data/RecipeSources.lua @@ -42,60 +42,31 @@ FurC.RecipeSources = { [139494] = soldBy(nalirsewen, artaeum, 20000, rank(7)), -- Praxis: Psijic Table, Six-Fold Symmetry } -local rolisRecipes = { - [126582] = 275, -- Praxis: Target Centurion, Dwarf-Brass - [126583] = 450, -- Praxis: Target Centurion, Robust Refabricated - [119592] = 125, -- Praxis: Target Skeleton, Humanoid - [121315] = 200, -- Praxis: Target Skeleton, Robust Humanoid - [141904] = 125, -- Blueprint: Alinor Bookshelf, Grand Full, - [141905] = 125, -- Praxis: Alinor Gaming Table, Punctilious Conflict, - [141906] = 125, -- Formula: Artist's Palette, Pigment, - [141907] = 125, -- Design: Alinor Grape Stomping Tub, - [141901] = 125, -- Pattern: Psijic Banner, Long, - [141903] = 125, -- Pattern: Alinor Bed, Levitating, - [141902] = 125, -- Schematic: Relic Vault, Impenetrable, - -} -local faustinaRecipes = { - [121200] = 100, -- Blueprint: Cabinet, Poisonmaker's - [121166] = 100, -- Blueprint: Podium, Skinning - [132195] = 100, -- Blueprint: Telvanni Candelabra, Masterwork - [121168] = 100, -- Blueprint: Tools, Case - [132194] = 100, -- Design: Mammoth Cheese, Mastercrafted - [121199] = 100, -- Design: Mortar and Pestle - [121214] = 100, -- Design: Orcish Skull Goblet, Full - [121163] = 100, -- Diagram: Apparatus, Boiler - [121165] = 100, -- Diagram: Apparatus, Gem Calipers - [132191] = 100, -- Diagram: Dwarven Gyroscope, Masterwork - [121197] = 100, -- Formula: Bottle, Poison Elixir - [121164] = 100, -- Formula: Case of Vials - [132190] = 100, -- Formula: Mages Apparatus, Master - [132192] = 100, -- Pattern: Dres Sewing Kit, Master's - [121209] = 100, -- Pattern: Orcish Tapestry, Spear - [132193] = 100, -- Praxis: Hlaalu Bath Tub, Masterwork - [121207] = 100, -- Praxis: Orcish Table with Fur - [134986] = 100, -- Design: Miniature Garden, Bottled - [134982] = 100, -- Formula: Alchemical Apparatus, Master - [134984] = 100, -- Pattern: Clothier's Form, Brass - [134985] = 100, -- Praxis: Hlaalu Trinket Box, Curious Turtle - [134987] = 100, -- Blueprint: Hlaalu Gaming Table, "Foxes & Felines" - [134986] = 100, -- Design: Miniature Garden, Bottled - [134983] = 100, -- Diagram: Hlaalu Gong - [134984] = 100, -- Pattern: Clothier's Form, Brass - [139486] = 100, -- Sketch: High Elf Ancestor Clock, Celestial -} +local function getItemLink(itemId) + return zo_strformat("|H1:item:<<1>>:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0|h|h", itemId) +end + +local function getRecipeResultItemId(recipeId) + local recipeLink = getItemLink(recipeId) + local resultLink = GetItemLinkRecipeResultItemLink(recipeLink) + return GetItemLinkItemId(resultLink) +end -for itemId, itemPrice in pairs(rolisRecipes) do - local priceString = zo_strformat(GetString(SI_FURC_STRING_FOR_VOUCHERS), itemPrice, voucherColor) - FurC.RecipeSources[itemId] = zo_strformat(GetString(SI_FURC_STRING_Rolis), priceString) +for versionNo, rolisRecipes in pairs(FurC.RolisRecipes) do +for recipeId, itemPrice in pairs(rolisRecipes) do + local priceString = zo_strformat(GetString(SI_FURC_STRING_FOR_VOUCHERS), itemPrice, voucherColor) + FurC.RecipeSources[recipeId] = zo_strformat(GetString(SI_FURC_STRING_Rolis), priceString) + end end -for itemId, itemPrice in pairs(faustinaRecipes) do - local unsurpassedCrafter = GetAchievementLink(1801) - local priceString = zo_strformat(GetString(SI_FURC_STRING_FOR_VOUCHERS), itemPrice, voucherColor) - local soldByFaustinaFor = zo_strformat(GetString(SI_FURC_STRING_FAUSTINA), priceString) - FurC.RecipeSources[itemId] = soldByFaustinaFor .. requires .. unsurpassedCrafter +for versionNo, faustinaRecipes in pairs(FurC.FaustinaRecipes) do + for recipeId, itemPrice in pairs(faustinaRecipes) do + local unsurpassedCrafter = GetAchievementLink(1801) + local priceString = zo_strformat(GetString(SI_FURC_STRING_FOR_VOUCHERS), itemPrice, voucherColor) + local soldByFaustinaFor = zo_strformat(GetString(SI_FURC_STRING_FAUSTINA), priceString) + FurC.RecipeSources[recipeId] = soldByFaustinaFor .. requires .. unsurpassedCrafter + end end diff --git a/data/Recipes.lua b/data/Recipes.lua index 98246ab..e19065c 100644 --- a/data/Recipes.lua +++ b/data/Recipes.lua @@ -1,200 +1,189 @@ FurC.Recipes = FurC.Recipes or {} FurC.Recipes[FURC_WEREWOLF] = { - 141896, -- Sketch: Figurine, The Dragon's Glare, - 141897, -- Praxis: Obelisk, Lord Hircine Ritual, - 141898, -- Praxis: Ritual Stone, Hircine, - 141899, -- Praxis: Sacrificial Altar, Hircine, - 141900, -- Blueprint: Ritual Fetish, Hircine item drops, blueprint not? - 141904, -- Blueprint: Alinor Bookshelf, Grand Full, - 141905, -- Praxis: Alinor Gaming Table, Punctilious Conflict, - 141906, -- Formula: Artist's Palette, Pigment, - 141907, -- Design: Alinor Grape Stomping Tub, - 141901, -- Pattern: Psijic Banner, Long, - 141903, -- Pattern: Alinor Bed, Levitating, - 141902, -- Schematic: Relic Vault, Impenetrable, + 141896, -- Sketch: Figurine, The Dragon's Glare + 141897, -- Praxis: Obelisk, Lord Hircine Ritual + 141898, -- Praxis: Ritual Stone, Hircine + 141899, -- Praxis: Sacrificial Altar, Hircine + 141900, -- Blueprint: Ritual Fetish, Hircine } FurC.Recipes[FURC_ALTMER] = { - 139573, --Sketch: Figurine, the Fish and the Unicorn - 139571, --Sketch: Figurine, the Sea-Monster's Surprise - 139572, --Sketch: Figurine, the Taming of the Gryphon - 139486, --Sketch: Alinor Ancestor Clock, Celestial - 139613, --Sketch: Alinor Chalice, Delicate - 139615, --Sketch: Alinor Chalice, Ornate - 139616, --Sketch: Alinor Goblet, Silver Ornate - 139612, --Sketch: Alinor Goblet, Silver Plain - 139614, --Sketch: Alinor Goblet, Silver Stamped - 139611, --Sketch: Alinor Goblet, Simple - 139257, --Sketch: Scrimshaw Jewelery Box, Floral - 139252, --Sketch: Scrimshaw Jewelery Box, Verdant Oval - 139251, --Sketch: Scrimshaw Jewelery Box, Vineyard - 139256, --Sketch: Scrimshaw, Ancient Vessel - 139255, --Sketch: Scrimshaw, Octopus - 139253, --Sketch: Scrimshaw, Sea Monster - 139254, --Sketch: Scrimshaw, Ship - - 139514, -- Praxis: Alinor Wall, Stone Long, - 139546, -- Praxis: Alinor Bench, Marble, - 139556, -- Blueprint: Alinor Nightstand, Noble, - 139538, -- Blueprint: Alinor Bed, Overhang Full, - 139640, -- Pattern: Alinor Rug, Alinor Seal, - 139524, -- Diagram: Alinor Sconce, Arched Glass, - 139565, -- Blueprint: Alinor Trunk, Noble, - 139540, -- Blueprint: Alinor Bed, Polished Full, - 139550, -- Blueprint: Alinor Armchair, Polished, - 139631, -- Praxis: Alinor Potted Plant, Twin Saplings, - 139512, -- Praxis: Alinor Post, Stone Wall, - 139511, -- Praxis: Alinor Wall, Stone Corner, - 139609, -- Diagram: Alinor Table Setting, Complete, - 139536, -- Blueprint: Alinor Bed, Noble Full, - 139585, -- Diagram: Fireplace Grate, Wrought Iron, - 139604, -- Praxis: Alinor Shrine, Limestone Raised, - 139575, -- Sketch: Scrimshaw Jewelry Box, Verdant Oval, - 139588, -- Praxis: Alinor Fountain, Four-Way Timeworn, - 139608, -- Praxis: Alinor Wall Shrine, Marble, - 139569, -- Blueprint: Alinor Jewelry Box, Peaked, - 139541, -- Blueprint: Alinor Bed, Noble Single, - 139601, -- Praxis: Alinor Bowl, Stemmed Limestone, - 139574, -- Sketch: Scrimshaw Jewelry Box, Vineyard, - 139579, -- Sketch: Scrimshaw, Ancient Vessel, - 139548, -- Blueprint: Alinor Armchair, Overhang, - 139632, -- Praxis: Alinor Windowbox, Purple Wisteria, - 139587, -- Praxis: Alinor Fireplace, Ornate, - 139577, -- Sketch: Scrimshaw, Ship, - 139582, -- Diagram: Alinor Pot, Patterned, - 139486, -- Sketch: Alinor Ancestor Clock, Celestial, - 139581, -- Diagram: Alinor Pot, Hanging Stamped, - 139558, -- Blueprint: Alinor Counter, Polished Drawers, - 139622, -- Blueprint: Alinor Bowl, Carved Wood, - 139498, -- Praxis: Alinor Archway, Timeworn, - 139593, -- Blueprint: Alinor Table, Noble Intimate, - 139637, -- Pattern: Alinor Carpet, Alinor Crescent, - 139634, -- Pattern: Alinor Curtains, Tall Drawn, - 139534, -- Diagram: Alinor Streetlight, Paired Wrought Iron, - 139503, -- Praxis: Alinor Floor, Ballroom Timeworn, - 139544, -- Blueprint: Alinor Bench, Verdant, - 139649, -- Blueprint: Alinor Cabinet, Noble, - 139559, -- Blueprint: Alinor Counter, Polished Corner, - 139490, -- Blueprint: Psijic Table, Small, - 139520, -- Diagram: Alinor Sconce, Crenellated, - 139487, -- Praxis: Book Row, Levitating, - 139485, -- Blueprint: Alinor Pew, Polished, - 139647, -- Praxis: Alinor Statue, Orator, - 139603, -- Praxis: Alinor Shrine, Limestone, - 139529, -- Diagram: Alinor Sconce, Candles, - 139532, -- Blueprint: Alinor Candles, Stand, - 139494, -- Praxis: Psijic Table, Six-fold Symmetry, - 139525, -- Diagram: Alinor Sconce, Lantern, - 139627, -- Blueprint: Display Case, Large, - 139516, -- Praxis: Alinor Fence, Tall, - 139572, -- Sketch: Figurine, The Taming of the Gryphon, - 139557, -- Blueprint: Alinor Winerack, Polished, - 139617, -- Diagram: Alinor Plate, Embossed, - 139518, -- Praxis: Alinor Archway, Tall, - 139630, -- Praxis: Alinor Potted Plant, Double Tiered, - 139620, -- Diagram: Alinor Bread Basket, Wrought Iron, - 139613, -- Sketch: Alinor Chalice, Delicate, - 139519, -- Diagram: Alinor Sconce, Arched, - 139505, -- Praxis: Alinor Sarcophagus, Wedge, - 139545, -- Blueprint: Alinor Armchair, Backless Verdant, - 139586, -- Diagram: Fireplace Tools, Wrought Iron, - 139506, -- Praxis: Alinor Sarcophagus, Peaked, - 139497, -- Praxis: Psijic Table, Grand, - 139642, -- Pattern: Alinor Carpet, Intricate, - 139625, -- Blueprint: Display Case, Standing Arched, - 139612, -- Sketch: Alinor Goblet, Silver Plain, - 139598, -- Design: Alinor Amphora, Embossed, - 139599, -- Diagram: Alinor Urn, Bronze, - 139638, -- Pattern: Alinor Carpet, Verdant, - 139583, -- Blueprint: Alinor Divider, Noble, - 139639, -- Pattern: Alinor Carpet, Vibrant, - 139619, -- Design: Alinor Meal, Individual, - 139614, -- Sketch: Alinor Goblet, Silver Stamped, - 139495, -- Praxis: Psijic Lighting Globe, Large, - 139646, -- Praxis: Alinor Statue, Kinlord, - 139645, -- Pattern: Alinor Tapestry, Royal Gryphons, - 139595, -- Design: Alinor Amphora, Delicate, - 139542, -- Blueprint: Alinor Bookshelf, Polished, - 139644, -- Pattern: Alinor Tapestry, Alinor Dusk, - 139643, -- Pattern: Alinor Tapestry, Alinor Dawn, - 139571, -- Sketch: Figurine, The Sea-Monster's Surprise, - 139530, -- Diagram: Alinor Sconce, Candles Tall, - 139605, -- Praxis: Alinor Pot, Limestone, - 139566, -- Blueprint: Alinor Trunk, Spired, - 139624, -- Blueprint: Display Case, Standing, - 139513, -- Praxis: Alinor Wall, Stone, - 139635, -- Pattern: Alinor Curtains, Drawn, - 139539, -- Blueprint: Alinor Bed, Polished Single, - 139567, -- Blueprint: Alinor Jewelry Box, Noble, - 139629, -- Praxis: Alinor Potted Plant, Triple Tiered, - 139628, -- Praxis: Alinor Potted Plant, Perpetual Bloom, - 139626, -- Blueprint: Display Case, Specimen, - 139636, -- Pattern: Alinor Drapes, Noble, - 139543, -- Blueprint: Alinor Wardrobe, Polished, - 139493, -- Pattern: Psijic Banner, - 139623, -- Design: Alinor Bowl, Millet, - 139584, -- Blueprint: Alinor Divider, Polished, - 139510, -- Praxis: Alinor Stairway, Timeworn Wide, - 139488, -- Praxis: Book Stack, Levitating, - 139621, -- Design: Alinor Pie Dish, Cherry Pie, - 139618, -- Diagram: Alinor Platter, Scalloped, - 139564, -- Blueprint: Alinor Trunk, Engraved, - 139501, -- Praxis: Alinor Bookshelf Wall, Timeworn, - 139535, -- Diagram: Alinor Streetlight, Wrought Iron, - 139615, -- Sketch: Alinor Chalice, Ornate, - 139537, -- Blueprint: Alinor Bed, Canopy Full, - 139533, -- Diagram: Alinor Brazier, Hanging Coals, - 139492, -- Praxis: Psijic Table, Scalloped, - 139594, -- Design: Alinor Urn, Gilded, - 139528, -- Diagram: Alinor Candelabra, Wrought Iron, - 139633, -- Praxis: Alinor Windowbox, Blue Wisteria, - 139531, -- Blueprint: Alinor Candles, Tall Stand, - 139504, -- Praxis: Alinor Column, Timeworn, - 139641, -- Pattern: Alinor Runner, Royal, - 139611, -- Sketch: Alinor Goblet, Simple, - 139610, -- Design: Alinor Meal, Complete Setting, - 139554, -- Blueprint: Alinor Nightstand, Scalloped, - 139551, -- Blueprint: Alinor Armchair, Backless Polished, - 139521, -- Diagram: Alinor Lantern, Hanging, - 139499, -- Praxis: Alinor Column, Heavy Timeworn, - 139607, -- Praxis: Alinor Display Stand, Marble, - 139500, -- Praxis: Alinor Pedestal, Timeworn, - 139606, -- Praxis: Alinor Display Stand, Marble Wide, - 139527, -- Diagram: Alinor Brazier, Noble, - 139602, -- Praxis: Alinor Urn, Limestone Large, - 139547, -- Blueprint: Alinor Armchair, Noble, - 139508, -- Praxis: Alinor Sarcophagus, Open, - 139573, -- Sketch: Figurine, The Fish and the Unicorn, - 139553, -- Blueprint: Alinor Desk, Mirrored, - 139597, -- Design: Alinor Urn, Stemmed, - 139517, -- Praxis: Alinor Fence, Tall Long, - 139491, -- Praxis: Psijic Lighting Globe, Small, - 139489, -- Blueprint: Psijic Chair, Arched, - 139596, -- Design: Alinor Amphora, Slender, - 139600, -- Praxis: Alinor Bowl, Shallow Limestone, - 139509, -- Praxis: Alinor Stairway, Timeworn, - 139515, -- Praxis: Alinor Post, Tall Fence, - 139591, -- Praxis: Alinor Table, Decorative Marble, - 139590, -- Praxis: Alinor Table, Round Marble, - 139589, -- Praxis: Alinor Fountain, Timeworn, - 139592, -- Blueprint: Alinor Table, Noble Grand, - 139552, -- Blueprint: Alinor Desk, Polished, - 139578, -- Sketch: Scrimshaw, Octopus, - 139580, -- Sketch: Scrimshaw Jewelry Box, Floral, - 139549, -- Blueprint: Alinor Chair, Polished, - 139496, -- Pattern: Psijic Banner, Large, - 139576, -- Sketch: Scrimshaw, Sea Monster, - 139502, -- Praxis: Alinor Column, Slender Timeworn, - 139568, -- Blueprint: Alinor Jewelry Box, Polished, - 139523, -- Diagram: Alinor Sconce, Wrought Glass, - 139616, -- Sketch: Alinor Goblet, Silver Ornate, - 139563, -- Blueprint: Alinor Trunk, Peaked, - 139522, -- Diagram: Alinor Lantern, Stationary, - 139555, -- Blueprint: Alinor Nightstand, Octagonal, - 139570, -- Blueprint: Alinor Jewelry Box, Octagonal, - 139648, -- Design: Alinor Amphora, Portrait, - 139484, -- Blueprint: Alinor Writing Desk, Noble, + 139573, -- Sketch: Figurine, The Fish and the Unicorn + 139571, -- Sketch: Figurine, The Sea-Monster's Surprise + 139572, -- Sketch: Figurine, The Taming of the Gryphon + 139613, -- Sketch: Alinor Chalice, Delicate + 139615, -- Sketch: Alinor Chalice, Ornate + 139616, -- Sketch: Alinor Goblet, Silver Ornate + 139612, -- Sketch: Alinor Goblet, Silver Plain + 139614, -- Sketch: Alinor Goblet, Silver Stamped + 139611, -- Sketch: Alinor Goblet, Simple + 139575, -- Sketch: Scrimshaw Jewelry Box, Verdant Oval + 139574, -- Sketch: Scrimshaw Jewelry Box, Vineyard + 139579, -- Sketch: Scrimshaw, Ancient Vessel + 139578, -- Sketch: Scrimshaw, Octopus + 139576, -- Sketch: Scrimshaw, Sea Monster + 139577, -- Sketch: Scrimshaw, Ship + 139514, -- Praxis: Alinor Wall, Stone Long + 139546, -- Praxis: Alinor Bench, Marble + 139556, -- Blueprint: Alinor Nightstand, Noble + 139538, -- Blueprint: Alinor Bed, Overhang Full + 139640, -- Pattern: Alinor Rug, Alinor Seal + 139524, -- Diagram: Alinor Sconce, Arched Glass + 139565, -- Blueprint: Alinor Trunk, Noble + 139540, -- Blueprint: Alinor Bed, Polished Full + 139550, -- Blueprint: Alinor Armchair, Polished + 139631, -- Praxis: Alinor Potted Plant, Twin Saplings + 139512, -- Praxis: Alinor Post, Stone Wall + 139511, -- Praxis: Alinor Wall, Stone Corner + 139609, -- Diagram: Alinor Table Setting, Complete + 139536, -- Blueprint: Alinor Bed, Noble Full + 139585, -- Diagram: Fireplace Grate, Wrought Iron + 139604, -- Praxis: Alinor Shrine, Limestone Raised + 139575, -- Sketch: Scrimshaw Jewelry Box, Verdant Oval + 139588, -- Praxis: Alinor Fountain, Four-Way Timeworn + 139608, -- Praxis: Alinor Wall Shrine, Marble + 139569, -- Blueprint: Alinor Jewelry Box, Peaked + 139541, -- Blueprint: Alinor Bed, Noble Single + 139601, -- Praxis: Alinor Bowl, Stemmed Limestone + 139574, -- Sketch: Scrimshaw Jewelry Box, Vineyard + 139579, -- Sketch: Scrimshaw, Ancient Vessel + 139548, -- Blueprint: Alinor Armchair, Overhang + 139632, -- Praxis: Alinor Windowbox, Purple Wisteria + 139587, -- Praxis: Alinor Fireplace, Ornate + 139577, -- Sketch: Scrimshaw, Ship + 139582, -- Diagram: Alinor Pot, Patterned + 139581, -- Diagram: Alinor Pot, Hanging Stamped + 139558, -- Blueprint: Alinor Counter, Polished Drawers + 139622, -- Blueprint: Alinor Bowl, Carved Wood + 139498, -- Praxis: Alinor Archway, Timeworn + 139593, -- Blueprint: Alinor Table, Noble Intimate + 139637, -- Pattern: Alinor Carpet, Alinor Crescent + 139634, -- Pattern: Alinor Curtains, Tall Drawn + 139534, -- Diagram: Alinor Streetlight, Paired Wrought Iron + 139503, -- Praxis: Alinor Floor, Ballroom Timeworn + 139544, -- Blueprint: Alinor Bench, Verdant + 139649, -- Blueprint: Alinor Cabinet, Noble + 139559, -- Blueprint: Alinor Counter, Polished Corner + 139490, -- Blueprint: Psijic Table, Small + 139520, -- Diagram: Alinor Sconce, Crenellated + 139487, -- Praxis: Book Row, Levitating + 139485, -- Blueprint: Alinor Pew, Polished + 139647, -- Praxis: Alinor Statue, Orator + 139603, -- Praxis: Alinor Shrine, Limestone + 139529, -- Diagram: Alinor Sconce, Candles + 139532, -- Blueprint: Alinor Candles, Stand + 139494, -- Praxis: Psijic Table, Six-fold Symmetry + 139525, -- Diagram: Alinor Sconce, Lantern + 139627, -- Blueprint: Display Case, Large + 139516, -- Praxis: Alinor Fence, Tall + 139572, -- Sketch: Figurine, The Taming of the Gryphon + 139557, -- Blueprint: Alinor Winerack, Polished + 139617, -- Diagram: Alinor Plate, Embossed + 139518, -- Praxis: Alinor Archway, Tall + 139630, -- Praxis: Alinor Potted Plant, Double Tiered + 139620, -- Diagram: Alinor Bread Basket, Wrought Iron + 139613, -- Sketch: Alinor Chalice, Delicate + 139519, -- Diagram: Alinor Sconce, Arched + 139505, -- Praxis: Alinor Sarcophagus, Wedge + 139545, -- Blueprint: Alinor Armchair, Backless Verdant + 139586, -- Diagram: Fireplace Tools, Wrought Iron + 139506, -- Praxis: Alinor Sarcophagus, Peaked + 139497, -- Praxis: Psijic Table, Grand + 139642, -- Pattern: Alinor Carpet, Intricate + 139625, -- Blueprint: Display Case, Standing Arched + 139612, -- Sketch: Alinor Goblet, Silver Plain + 139598, -- Design: Alinor Amphora, Embossed + 139599, -- Diagram: Alinor Urn, Bronze + 139638, -- Pattern: Alinor Carpet, Verdant + 139583, -- Blueprint: Alinor Divider, Noble + 139639, -- Pattern: Alinor Carpet, Vibrant + 139619, -- Design: Alinor Meal, Individual + 139614, -- Sketch: Alinor Goblet, Silver Stamped + 139495, -- Praxis: Psijic Lighting Globe, Large + 139646, -- Praxis: Alinor Statue, Kinlord + 139645, -- Pattern: Alinor Tapestry, Royal Gryphons + 139595, -- Design: Alinor Amphora, Delicate + 139542, -- Blueprint: Alinor Bookshelf, Polished + 139644, -- Pattern: Alinor Tapestry, Alinor Dusk + 139643, -- Pattern: Alinor Tapestry, Alinor Dawn + 139571, -- Sketch: Figurine, The Sea-Monster's Surprise + 139530, -- Diagram: Alinor Sconce, Candles Tall + 139605, -- Praxis: Alinor Pot, Limestone + 139566, -- Blueprint: Alinor Trunk, Spired + 139624, -- Blueprint: Display Case, Standing + 139513, -- Praxis: Alinor Wall, Stone + 139635, -- Pattern: Alinor Curtains, Drawn + 139539, -- Blueprint: Alinor Bed, Polished Single + 139567, -- Blueprint: Alinor Jewelry Box, Noble + 139629, -- Praxis: Alinor Potted Plant, Triple Tiered + 139628, -- Praxis: Alinor Potted Plant, Perpetual Bloom + 139626, -- Blueprint: Display Case, Specimen + 139636, -- Pattern: Alinor Drapes, Noble + 139543, -- Blueprint: Alinor Wardrobe, Polished + 139493, -- Pattern: Psijic Banner + 139623, -- Design: Alinor Bowl, Millet + 139584, -- Blueprint: Alinor Divider, Polished + 139510, -- Praxis: Alinor Stairway, Timeworn Wide + 139488, -- Praxis: Book Stack, Levitating + 139621, -- Design: Alinor Pie Dish, Cherry Pie + 139618, -- Diagram: Alinor Platter, Scalloped + 139564, -- Blueprint: Alinor Trunk, Engraved + 139501, -- Praxis: Alinor Bookshelf Wall, Timeworn + 139535, -- Diagram: Alinor Streetlight, Wrought Iron + 139615, -- Sketch: Alinor Chalice, Ornate + 139537, -- Blueprint: Alinor Bed, Canopy Full + 139533, -- Diagram: Alinor Brazier, Hanging Coals + 139492, -- Praxis: Psijic Table, Scalloped + 139594, -- Design: Alinor Urn, Gilded + 139528, -- Diagram: Alinor Candelabra, Wrought Iron + 139633, -- Praxis: Alinor Windowbox, Blue Wisteria + 139531, -- Blueprint: Alinor Candles, Tall Stand + 139504, -- Praxis: Alinor Column, Timeworn + 139641, -- Pattern: Alinor Runner, Royal + 139611, -- Sketch: Alinor Goblet, Simple + 139610, -- Design: Alinor Meal, Complete Setting + 139554, -- Blueprint: Alinor Nightstand, Scalloped + 139551, -- Blueprint: Alinor Armchair, Backless Polished + 139521, -- Diagram: Alinor Lantern, Hanging + 139499, -- Praxis: Alinor Column, Heavy Timeworn + 139607, -- Praxis: Alinor Display Stand, Marble + 139500, -- Praxis: Alinor Pedestal, Timeworn + 139606, -- Praxis: Alinor Display Stand, Marble Wide + 139527, -- Diagram: Alinor Brazier, Noble + 139602, -- Praxis: Alinor Urn, Limestone Large + 139547, -- Blueprint: Alinor Armchair, Noble + 139508, -- Praxis: Alinor Sarcophagus, Open + 139573, -- Sketch: Figurine, The Fish and the Unicorn + 139553, -- Blueprint: Alinor Desk, Mirrored + 139597, -- Design: Alinor Urn, Stemmed + 139517, -- Praxis: Alinor Fence, Tall Long + 139491, -- Praxis: Psijic Lighting Globe, Small + 139489, -- Blueprint: Psijic Chair, Arched + 139596, -- Design: Alinor Amphora, Slender + 139600, -- Praxis: Alinor Bowl, Shallow Limestone + 139509, -- Praxis: Alinor Stairway, Timeworn + 139515, -- Praxis: Alinor Post, Tall Fence + 139591, -- Praxis: Alinor Table, Decorative Marble + 139590, -- Praxis: Alinor Table, Round Marble + 139589, -- Praxis: Alinor Fountain, Timeworn + 139592, -- Blueprint: Alinor Table, Noble Grand + 139552, -- Blueprint: Alinor Desk, Polished + 139578, -- Sketch: Scrimshaw, Octopus + 139580, -- Sketch: Scrimshaw Jewelry Box, Floral + 139549, -- Blueprint: Alinor Chair, Polished + 139496, -- Pattern: Psijic Banner, Large + 139576, -- Sketch: Scrimshaw, Sea Monster + 139502, -- Praxis: Alinor Column, Slender Timeworn + 139568, -- Blueprint: Alinor Jewelry Box, Polished + 139523, -- Diagram: Alinor Sconce, Wrought Glass + 139616, -- Sketch: Alinor Goblet, Silver Ornate + 139563, -- Blueprint: Alinor Trunk, Peaked + 139522, -- Diagram: Alinor Lantern, Stationary + 139555, -- Blueprint: Alinor Nightstand, Octagonal + 139570, -- Blueprint: Alinor Jewelry Box, Octagonal + 139648, -- Design: Alinor Amphora, Portrait + 139484, -- Blueprint: Alinor Writing Desk, Noble } diff --git a/data/Rolis.lua b/data/Rolis.lua index 8a491e5..1ead059 100644 --- a/data/Rolis.lua +++ b/data/Rolis.lua @@ -1,4 +1,4 @@ -FurC.Rolis_Recipes = FurC.Rolis_Recipes or {} +FurC.RolisRecipes = FurC.RolisRecipes or {} FurC.FaustinaRecipes = FurC.FaustinaRecipes or {} FurC.Faustina = FurC.Faustina or {} @@ -9,55 +9,83 @@ FurC.Faustina[FURC_ALTMER] = { } +FurC.RolisRecipes[FURC_DRAGONS] = { + [141904] = 125, -- Blueprint: Alinor Bookshelf, Grand Full, + [141905] = 125, -- Praxis: Alinor Gaming Table, Punctilious Conflict, + [141906] = 125, -- Formula: Artist's Palette, Pigment, + [141907] = 125, -- Design: Alinor Grape Stomping Tub, + [141901] = 125, -- Pattern: Psijic Banner, Long, + [141903] = 125, -- Pattern: Alinor Bed, Levitating, + [141902] = 125, -- Schematic: Relic Vault, Impenetrable, +} FurC.FaustinaRecipes[FURC_DRAGONS] = { - 121200, -- Cabinet, Poisonmaker's - 121166, -- Heirloom Podium, Skinning - 121168, -- Tools, Case - 121214, -- Mortar + Pestle - 121163, -- Orcish Skull Goblet, Full - 121163, -- Apparatus, Boiler - 121165, -- Apparatus, Gem Caliper - 121197, -- Bottle, Poison Elixir - 121164, -- Case of Vials - 121209, -- Orcish Tapestry, Spear - 132194, -- Mammoth Cheese - 132191, -- Dwarven Gyroscope, Masterwork - 132190, -- Mages' Apparatus, Master - 132192, -- Dres Sewing Kit - 132193, -- Hlaalu Bathtub - 132195, -- Telvanni Candelabra - 121166, -- Podium, Skinning - 134986, -- Podium, Skinning + + [121200] = 100, -- Blueprint: Cabinet, Poisonmaker's + [121166] = 100, -- Blueprint: Podium, Skinning + [132195] = 100, -- Blueprint: Telvanni Candelabra, Masterwork + [121168] = 100, -- Blueprint: Tools, Case + [132194] = 100, -- Design: Mammoth Cheese, Mastercrafted + [121199] = 100, -- Design: Mortar and Pestle + [121214] = 100, -- Design: Orcish Skull Goblet, Full + [121163] = 100, -- Diagram: Apparatus, Boiler + [121165] = 100, -- Diagram: Apparatus, Gem Calipers + [132191] = 100, -- Diagram: Dwarven Gyroscope, Masterwork + [121197] = 100, -- Formula: Bottle, Poison Elixir + [121164] = 100, -- Formula: Case of Vials + [132190] = 100, -- Formula: Mages Apparatus, Master + [132192] = 100, -- Pattern: Dres Sewing Kit, Master's + [121209] = 100, -- Pattern: Orcish Tapestry, Spear + [132193] = 100, -- Praxis: Hlaalu Bath Tub, Masterwork + [121207] = 100, -- Praxis: Orcish Table with Fur + [134986] = 100, -- Design: Miniature Garden, Bottled + [134982] = 100, -- Formula: Alchemical Apparatus, Master + [134984] = 100, -- Pattern: Clothier's Form, Brass + [134985] = 100, -- Praxis: Hlaalu Trinket Box, Curious Turtle + [134987] = 100, -- Blueprint: Hlaalu Gaming Table, "Foxes & Felines" + [134986] = 100, -- Design: Miniature Garden, Bottled + [134983] = 100, -- Diagram: Hlaalu Gong + [134984] = 100, -- Pattern: Clothier's Form, Brass + [139486] = 100, -- Sketch: High Elf Ancestor Clock, Celestial + } + FurC.Faustina[FURC_DRAGONS] = { [134675] = 500, } FurC.Rolis[FURC_DRAGONS] = { - 134983, - 134984, - 134985, - 134986, - 134987, [133576] = 1250, } +FurC.Rolis[FURC_HOMESTEAD] = { + -- Alchemy station + [118328] = 35, + -- Blacksmithing station + [119781] = 35, + -- Clothing station + [119707] = 35, + -- Dye Station + [118329] = 35, + -- Enchanting station + [118330] = 35, + -- Provisioning station + [118327] = 35, + -- Woodworking station + [119744] = 35, -FurC.Rolis_Recipes[FURC_HOMESTEAD] = { - -- Rolis's recipes - 121200, -- Cabinet, Poisonmaker's - 121166, -- Podium, Skinning - 121168, -- Tools, Case - 121199, -- Mortar and Pestle - 121214, -- Orcish Skull Goblet, Full - 121163, -- Apparatus, Boiler - 121197, -- Bottle, Poison Elixir - 121164, -- Case of Vials - 121209, -- Orcish Tapestry, Spear - 121207, -- Orcish Table with Fur - 121207, -- Orcish Table with Fur - 121315, -- Target Skeleton, Robust Humanoid - 119592, -- Target Skeleton, Humanoid -} \ No newline at end of file + -- Attunable Blacksmithing station + [119594] = 250, + -- Attunable Clothing station + [119821] = 250, + -- Attunable Woodworking station + [119822] = 250, +} + +FurC.RolisRecipes[FURC_HOMESTEAD] = { + [126582] = 275, -- Praxis: Target Centurion, Dwarf-Brass + [126583] = 450, -- Praxis: Target Centurion, Robust Refabricated + [119592] = 125, -- Praxis: Target Skeleton, Humanoid + [121315] = 200, -- Praxis: Target Skeleton, Robust Humanoid +} diff --git a/data/RumourRecipes.lua b/data/RumourRecipes.lua index 70930ea..0797c81 100644 --- a/data/RumourRecipes.lua +++ b/data/RumourRecipes.lua @@ -34,9 +34,7 @@ FurC.RumourRecipes = { 119355, -- Garlic String, Display 121203, -- Khajiit Brazier, Enchanted 121091, -- Stool, Carved - 119447, -- Candles, Lasting - - + 119447, -- Candles, Lasting } local function getCrownStorePriceString(price) return string.format("%s (%u)", GetString(SI_FURC_CROWNSTORESOURCE), price) @@ -46,18 +44,6 @@ end FurC.MiscItemSources[FURC_ALTMER] = FurC.MiscItemSources[FURC_ALTMER] or {} FurC.MiscItemSources[FURC_ALTMER][FURC_RUMOUR] = { - - [139099] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Dark Elf Brazier, Ancestral Tomb - [139100] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Dark Elf Ash Garden, Familial - - [139101] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Blue Crystal Cluster, Large - [139102] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Blue Crystal Spire, Large - - [139103] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Craglorn Display Case, Sealed - [139104] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Craglorn Relief, Serpent - - [139106] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Reach Briarheart, Corpse Blue - [139137] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Tapestry, Nocturnal [139138] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Banner, Nocturnal [139139] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Nocturnal, Mistress of Shadows diff --git a/locale/en.lua b/locale/en.lua index e50d8a6..8e6fd32 100644 --- a/locale/en.lua +++ b/locale/en.lua @@ -18,6 +18,8 @@ local strings = { FURC_AV_ATH = "Athragor", FURC_AV_MAL = "Maladdiq", FURC_AV_KRR = "Krrztrrb", + FURC_AV_HAR = "Harnwulf", + FURC_AV_ADO = "Adosa Veralor", FURC_AV_ENC = "enchanters", FURC_AV_ALC = "alchemists", FURC_AV_OUT = "Outlaw Refuge, Merchant", @@ -195,6 +197,7 @@ local strings = { SI_FURC_FILTER_VERSION_DRAGON = "Dragon Bones", SI_FURC_FILTER_VERSION_ALTMER = "Summerset", SI_FURC_FILTER_VERSION_WEREWOLF = "Wolfhunter", + SI_FURC_FILTER_VERSION_SLAVES = "Murkmire", -- =============================== -- @@ -221,6 +224,7 @@ local strings = { SI_FURC_FILTER_VERSION_DRAGON_TT = "If you got this from Narsis Dren, well...", SI_FURC_FILTER_VERSION_ALTMER_TT = "Still think the Dunmer are bad?", SI_FURC_FILTER_VERSION_WEREWOLF_TT = "In Soviet Hunting Ground, werewolf hunt you", + SI_FURC_FILTER_VERSION_SLAVES_TT = "ToDo: Think of horrible pun about Argonians", SI_FURC_FILTER_CHAR_OFF = "Character filter: off", SI_FURC_FILTER_CHAR_OFF_TT = filterDisabled, diff --git a/startup.lua b/startup.lua index 4f47c22..77dc2e1 100644 --- a/startup.lua +++ b/startup.lua @@ -1,7 +1,7 @@ FurnitureCatalogue = {} FurnitureCatalogue.name = "FurnitureCatalogue" FurnitureCatalogue.author = "manavortex" -FurnitureCatalogue.version = 2.65 +FurnitureCatalogue.version = 2.66 FurnitureCatalogue.CharacterName = nil FurnitureCatalogue.settings = {} @@ -19,6 +19,9 @@ FurC.EventItems = {} FurC.PVP = {} FurC.MiscItemSources = {} +-- for search so it doesn't lag +FurC.FilterTask = LibStub("LibAsync"):Create("FurnitureCatalogue_FilterOnTextSearch") + -- versioning FURC_HOMESTEAD = 2 FURC_MORROWIND = 3 @@ -27,6 +30,7 @@ FURC_CLOCKWORK = 5 FURC_DRAGONS = 6 FURC_ALTMER = 7 FURC_WEREWOLF = 8 +FURC_SLAVES = 9 FurC.Const = { vendorColor = "d68957", @@ -155,27 +159,32 @@ local function getTooltipsSource() tooltipsSource[FURC_LUXURY] = GetString(SI_FURC_LUXURY_TT) tooltipsSource[FURC_OTHER] = GetString(SI_FURC_OTHER_TT) - return tooltipsSource +return tooltipsSource end FurnitureCatalogue.DropdownData = { + ChoicesVersion = { - [1] = GetString(SI_FURC_FILTER_VERSION_OFF), - [2] = GetString(SI_FURC_FILTER_VERSION_HS ), - [3] = GetString(SI_FURC_FILTER_VERSION_M ), - [4] = GetString(SI_FURC_FILTER_VERSION_R ), - [5] = GetString(SI_FURC_FILTER_VERSION_CC ), - [6] = GetString(SI_FURC_FILTER_VERSION_DRAGON), - [7] = GetString(SI_FURC_FILTER_VERSION_ALTMER), + [1] = GetString(SI_FURC_FILTER_VERSION_OFF), + [FURC_HOMESTEAD] = GetString(SI_FURC_FILTER_VERSION_HS ), + [FURC_MORROWIND] = GetString(SI_FURC_FILTER_VERSION_M ), + [FURC_REACH] = GetString(SI_FURC_FILTER_VERSION_R ), + [FURC_CLOCKWORK] = GetString(SI_FURC_FILTER_VERSION_CC ), + [FURC_DRAGONS] = GetString(SI_FURC_FILTER_VERSION_DRAGON), + [FURC_ALTMER] = GetString(SI_FURC_FILTER_VERSION_ALTMER), + [FURC_WEREWOLF] = GetString(SI_FURC_FILTER_VERSION_WEREWOLF), + [FURC_SLAVES] = GetString(SI_FURC_FILTER_VERSION_SLAVES), }, TooltipsVersion = { - [1] = GetString(SI_FURC_FILTER_VERSION_OFF_TT), - [2] = GetString(SI_FURC_FILTER_VERSION_HS_TT), - [3] = GetString(SI_FURC_FILTER_VERSION_M_TT), - [4] = GetString(SI_FURC_FILTER_VERSION_R_TT), - [5] = GetString(SI_FURC_FILTER_VERSION_CC_TT), - [6] = GetString(SI_FURC_FILTER_VERSION_DRAGON_TT), - [7] = GetString(SI_FURC_FILTER_VERSION_ALTMER_TT), + [1] = GetString(SI_FURC_FILTER_VERSION_OFF_TT), + [FURC_HOMESTEAD] = GetString(SI_FURC_FILTER_VERSION_HS_TT), + [FURC_MORROWIND] = GetString(SI_FURC_FILTER_VERSION_M_TT), + [FURC_REACH] = GetString(SI_FURC_FILTER_VERSION_R_TT), + [FURC_CLOCKWORK] = GetString(SI_FURC_FILTER_VERSION_CC_TT), + [FURC_DRAGONS] = GetString(SI_FURC_FILTER_VERSION_DRAGON_TT), + [FURC_ALTMER] = GetString(SI_FURC_FILTER_VERSION_ALTMER_TT), + [FURC_WEREWOLF] = GetString(SI_FURC_FILTER_VERSION_WEREWOLF_TT), + [FURC_SLAVES] = GetString(SI_FURC_FILTER_VERSION_SLAVES_TT), }, ChoicesCharacter = { [1] = GetString(SI_FURC_FILTER_CHAR_OFF), @@ -270,7 +279,7 @@ function FurnitureCatalogue_Initialize(eventCode, addOnName) local scanFiles = false if FurC.settings.version < FurC.version then - FurC.settings.version = FurC.version + FurC.settings.version = FurC.version scanFiles = true end @@ -278,8 +287,6 @@ function FurnitureCatalogue_Initialize(eventCode, addOnName) FurC.settings.databaseVersion = FurC.version SLASH_COMMANDS["/fur"] = FurnitureCatalogue_Toggle - FurC.SetFilter(true) - EVENT_MANAGER:UnregisterForEvent("FurnitureCatalogue", EVENT_ADD_ON_LOADED) end diff --git a/xml/FurnitureCatalogue.xml b/xml/FurnitureCatalogue.xml index 79f723c..de384c3 100644 --- a/xml/FurnitureCatalogue.xml +++ b/xml/FurnitureCatalogue.xml @@ -168,16 +168,16 @@ <Anchor point="BOTTOMLEFT" relativeTo="FurC_TypeFilter" relativePoint="BOTTOMRIGHT" offsetX="9" /> <Dimensions x="215" /> <Controls> - + <EditBox name="$(parent)Box" inherits="ZO_InventorySearchBox" > <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="-40" offsetY="-10"/> <Anchor point="TOPRIGHT" relativeTo="$(parent)" relativePoint="TOPRIGHT" offsetX="-20" offsetY="0"/> - <OnTextChanged>FurC.GuiSetSearchboxTextFrom(self)</OnTextChanged> - <OnMouseUp>FurC.GuiOnSearchBoxClick(self, button)</OnMouseUp> - <OnMouseDoubleClick>FurC.GuiOnSearchBoxClick(self, nil, true)</OnMouseDoubleClick> - <OnFocusLost>FurC.GuiOnSearchBoxFocusOut(self)</OnFocusLost> + <OnTextChanged> FurC.GuiSetSearchboxTextFrom(self) </OnTextChanged> + <OnMouseUp> FurC.GuiOnSearchBoxClick(self, button) </OnMouseUp> + <OnMouseDoubleClick> FurC.GuiOnSearchBoxClick(self, nil, true) </OnMouseDoubleClick> + <OnFocusLost> FurC.GuiOnSearchBoxFocusOut(self) </OnFocusLost> </EditBox> </Controls>