From d9ee1060226477449132b7ee1045f4a6d2722ff2 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Tue, 23 Jul 2024 16:16:51 +0200 Subject: [PATCH 001/138] added acc-wide currencies to warband column, needs fix for crests --- PermoksAccountManager.lua | 2 ++ db/db.lua | 35 ++++++++++++++++++++++++++++++-- modules/currencies.lua | 42 ++++++++++++++++++++++++++++++++++++++- modules/factions.lua | 12 +++++++++++ modules/quests.lua | 36 ++++++++++++++++++++++++++++++--- 5 files changed, 121 insertions(+), 6 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 248f454..fb36753 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -920,6 +920,8 @@ function PermoksAccountManager:OnLogin() local level = UnitLevel('player') local min_level = db.options.characters.minLevel + C_CurrencyInfo.RequestCurrencyDataForAccountCharacters() + self.elvui = C_AddOns.IsAddOnLoaded('ElvUI') self.ElvUI_Skins = self.elvui and ElvUI[1]:GetModule('Skins') self:SaveBattleTag(db) diff --git a/db/db.lua b/db/db.lua index a7e4bf5..434f1d1 100644 --- a/db/db.lua +++ b/db/db.lua @@ -21,6 +21,9 @@ local default_categories = { 'spark_awakening', 'residual_memories', 'radiant_echoes_prepatch_weeklies', + 'spreading_the_light', + 'lesser_keyflame_weeklies', + 'council_of_dornogal' }, @@ -40,6 +43,9 @@ local default_categories = { spark_awakening = 13, residual_memories = 14, radiant_echoes_prepatch_weeklies = 15, + spreading_the_light = 16, + lesser_keyflame_weeklies = 17, + council_of_dornogal = 18, }, @@ -534,7 +540,8 @@ PermoksAccountManager.factions = { [2564] = {name = 'Loamm Niffen', paragon = true, type = 'renown'}, [2568] = {name = 'Glimmerogg Racer'}, [2574] = {name = 'Dream Wardens', paragonn = true, type = 'renown'}, - [2593] = {name = 'Keg Leg\'s Crew', type = 'renown'} + [2593] = {name = 'Keg Leg\'s Crew', type = 'renown'}, + [2590] = {name = 'Council of Dornogal', paragonn = true, type = 'renown', accWide = true}, } PermoksAccountManager.currency = { @@ -1489,7 +1496,31 @@ PermoksAccountManager.quests = { [82689] = {questType = 'weekly', log = true}, --name = 'Only Darkness'}, [82676] = {questType = 'weekly', log = true}, --name = 'Broken Masquerade'}, [78938] = {questType = 'weekly', log = true}, --name = 'Champion of the Waterlords'}, - } + }, + + -- 11.0 + spreading_the_light = { + [76586] = {questType = 'weekly', log = true}, + }, + lesser_keyflame_weeklies = { + [76169] = {questType = 'weekly', log = true}, + [76394] = {questType = 'weekly', log = true}, + [76600] = {questType = 'weekly', log = true}, + [76733] = {questType = 'weekly', log = true}, + [76997] = {questType = 'weekly', log = true}, + [78656] = {questType = 'weekly', log = true}, + [78915] = {questType = 'weekly', log = true}, + [78933] = {questType = 'weekly', log = true}, + [78972] = {questType = 'weekly', log = true}, + [79158] = {questType = 'weekly', log = true}, + [79173] = {questType = 'weekly', log = true}, + [79216] = {questType = 'weekly', log = true}, + [79346] = {questType = 'weekly', log = true}, + [80004] = {questType = 'weekly', log = true}, + [80562] = {questType = 'weekly', log = true}, + [81574] = {questType = 'weekly', log = true}, + [81632] = {questType = 'weekly', log = true}, + }, } PermoksAccountManager.locale = { diff --git a/modules/currencies.lua b/modules/currencies.lua index 1e163ee..aaafc9b 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -485,6 +485,45 @@ local function UpdateAllCurrencies(charInfo) self.db.global.currencyInfo[currencyType] = self.db.global.currencyInfo[currencyType] or {icon = info.iconFileID, name = info.name} self.db.global.currencyInfo[currencyType].maxQuantity = info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity or self.db.global.currencyInfo[currencyType].maxQuantity end + + end +end + +local function getWarbandCurrencyInfo(warbandData) + warbandData = warbandData or self.db.global.accounts.main.warbandData + warbandData.currencyInfo = warbandData.currencyInfo or {} + + return warbandData.currencyInfo +end + +local function SumWarbandCurrencies(warbandCurrency) + local currencySum = 0 + for _, alt in pairs(warbandCurrency) do + currencySum = currencySum + alt.quantity + end + return currencySum +end + +local function UpdateWarbandCurrency(warbandCurrencyInfo, currencyType, charCurrencyInfo) + warbandCurrencyInfo[currencyType] = warbandCurrencyInfo[currencyType] or {name = C_CurrencyInfo.GetCurrencyInfo(currencyType).name} + + warbandCurrencyInfo[currencyType].currencyType = currencyType + warbandCurrencyInfo[currencyType].altQuantity = SumWarbandCurrencies(warbandInfo) + warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + charCurrencyInfo[currencyType].quantity +end + +local function UpdateAllWarbandCurrencies(charInfo, warbandData) + local self = PermoksAccountManager + + local charCurrencyInfo = charInfo.currencyInfo + local warbandCurrencyInfo = getWarbandCurrencyInfo(warbandData) + for currencyType, _ in pairs(self.currency) do + -- only fetches data from non-active characters + local warbandInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(currencyType) + if warbandInfo then + UpdateWarbandCurrency(warbandCurrencyInfo, currencyType, charCurrencyInfo) + end + end end @@ -492,7 +531,7 @@ local function Update(charInfo) UpdateAllCurrencies(charInfo) end -local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged) +local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged, warbandData) local self = PermoksAccountManager if not currencyType or not self.currency[currencyType] then return @@ -566,6 +605,7 @@ local payload = { events = { ['CURRENCY_DISPLAY_UPDATE'] = UpdateCurrency, ['PERKS_ACTIVITIES_UDPATED'] = UpdateCatalystCharges, + ['ACCOUNT_CHARACTER_CURRENCY_DATA_RECEIVED'] = UpdateAllWarbandCurrencies, }, share = { [UpdateCurrency] = 'currencyInfo' diff --git a/modules/factions.lua b/modules/factions.lua index 509516d..fe9e7c7 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -212,6 +212,18 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, + -- 11.0 + council_of_dornogal = { + label = function() + return PermoksAccountManager.factions[2590].localName or 'Council of Dornogal' + end, + type = 'faction', + key = 2590, + group = 'reputation', + accWide = true, + version = WOW_PROJECT_MAINLINE + }, + -- wotlk alliance_vanguard = { diff --git a/modules/quests.lua b/modules/quests.lua index 19d6411..2e317be 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -928,6 +928,32 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, + -- 11.0 + spreading_the_light = { + label = 'Spreading the Light', + type = 'quest', + questType = 'weekly', + accWide = true, + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + + lesser_keyflame_weeklies = { + label = 'Lesser Keyflame Weeklies', + type = 'quest', + questType = 'weekly', + accWide = true, + visibility = 'visible', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 8, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + --wotlk general_dailies = { label = 'General', @@ -1243,10 +1269,10 @@ local function Update(charInfo) UpdateCataDailies(charInfo) end -do +local function AddQuestModule(moduleName, labelRowsData) local payload = { update = Update, - labels = labelRows, + labels = labelRowsData, events = { ['QUEST_ACCEPTED'] = AddQuest, ['QUEST_TURNED_IN'] = UpdateQuest, @@ -1263,7 +1289,11 @@ do tinsert(payload.events.QUEST_LOG_UPDATE, UpdateCataDailies) end - PermoksAccountManager:AddModule(module, payload) + PermoksAccountManager:AddModule(moduleName, payload) +end + +do + AddQuestModule(module, labelRows) end function PermoksAccountManager:FindQuestKeyByQuestID(questID) From 12f2dc30e2c44125d44753837a73dc72e37e98ed Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Thu, 25 Jul 2024 23:05:38 +0200 Subject: [PATCH 002/138] added functions to update warband currencies on looting/spending and functions to update all characters after a currency transfer. added new event calls to currencies --- PermoksAccountManager.lua | 8 ++++-- modules/currencies.lua | 58 ++++++++++++++++++++++++++++----------- 2 files changed, 48 insertions(+), 18 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index b1198a2..d687dcb 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -921,8 +921,6 @@ function PermoksAccountManager:OnLogin() local level = UnitLevel('player') local min_level = db.options.characters.minLevel - C_CurrencyInfo.RequestCurrencyDataForAccountCharacters() - self.elvui = C_AddOns.IsAddOnLoaded('ElvUI') self.ElvUI_Skins = self.elvui and ElvUI[1]:GetModule('Skins') self:SaveBattleTag(db) @@ -937,6 +935,12 @@ function PermoksAccountManager:OnLogin() self:AddNewCharacter(self.account, guid) end + -- Request required to access warband data + if self.isRetail then + C_CurrencyInfo.RequestCurrencyDataForAccountCharacters() + self.warbandData = db.accounts.main.warbandData + end + self.charInfo = data[guid] self:LoadAllModules(self.charInfo) if self.charInfo then diff --git a/modules/currencies.lua b/modules/currencies.lua index aaafc9b..06cbed6 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -489,13 +489,6 @@ local function UpdateAllCurrencies(charInfo) end end -local function getWarbandCurrencyInfo(warbandData) - warbandData = warbandData or self.db.global.accounts.main.warbandData - warbandData.currencyInfo = warbandData.currencyInfo or {} - - return warbandData.currencyInfo -end - local function SumWarbandCurrencies(warbandCurrency) local currencySum = 0 for _, alt in pairs(warbandCurrency) do @@ -504,24 +497,26 @@ local function SumWarbandCurrencies(warbandCurrency) return currencySum end -local function UpdateWarbandCurrency(warbandCurrencyInfo, currencyType, charCurrencyInfo) +-- this is only for the Warband column, not for the Warband characters +local function UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, currencyType) warbandCurrencyInfo[currencyType] = warbandCurrencyInfo[currencyType] or {name = C_CurrencyInfo.GetCurrencyInfo(currencyType).name} warbandCurrencyInfo[currencyType].currencyType = currencyType - warbandCurrencyInfo[currencyType].altQuantity = SumWarbandCurrencies(warbandInfo) - warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + charCurrencyInfo[currencyType].quantity + warbandCurrencyInfo[currencyType].altQuantity = SumWarbandCurrencies(newWarbandCurrencyInfo) end -local function UpdateAllWarbandCurrencies(charInfo, warbandData) +local function UpdateAllWarbandCurrencies(charInfo) local self = PermoksAccountManager + -- reference to the currency tables for character and Warband local charCurrencyInfo = charInfo.currencyInfo - local warbandCurrencyInfo = getWarbandCurrencyInfo(warbandData) + local warbandCurrencyInfo = self.warbandData.currencyInfo for currencyType, _ in pairs(self.currency) do -- only fetches data from non-active characters - local warbandInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(currencyType) - if warbandInfo then - UpdateWarbandCurrency(warbandCurrencyInfo, currencyType, charCurrencyInfo) + local newWarbandCurrencyInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(currencyType) + if newWarbandCurrencyInfo then + UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, currencyType) + warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + charCurrencyInfo[currencyType].quantity end end @@ -531,7 +526,7 @@ local function Update(charInfo) UpdateAllCurrencies(charInfo) end -local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged, warbandData) +local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged) local self = PermoksAccountManager if not currencyType or not self.currency[currencyType] then return @@ -557,8 +552,38 @@ local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged, else charInfo.currencyInfo[currencyType].quantity = quantity + self.currency[currencyType] end + + -- Update Warband amount + if self.isRetail and C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) then + local warbandCurrencyInfo = self.warbandData.currencyInfo + warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + quantity + end end +local function CurrencyTransferUpdate() + local self = PermoksAccountManager + local data = self.account.data + + local warbandCurrencyInfo = self.warbandData.currencyInfo + local transferLog = C_CurrencyInfo.FetchCurrencyTransferTransactions() + local lastTransferCurrencyType = transferLog[#transferLog].currencyType + print('updating for ' ..lastTransferCurrencyType.. '.') + + -- reference to the currency tables for character and Warband + local newCharCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo(lastTransferCurrencyType) + local newWarbandCurrencyInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(lastTransferCurrencyType) + + -- this is necessary because a transfer can be taxed by with different penalties + UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, lastTransferCurrencyType) + warbandCurrencyInfo[lastTransferCurrencyType].quantity = warbandCurrencyInfo[lastTransferCurrencyType].altQuantity + newCharCurrencyInfo.quantity + + -- update all alts for this currency because the transferlog has no GUID unless you relog (cringe) + for _, alt in pairs(newWarbandCurrencyInfo) do + data[alt.characterGUID].currencyInfo[lastTransferCurrencyType].quantity = alt.quantity + end +end + + local function UpdateCatalystCharges(charInfo) if not charInfo.currencyInfo or not charInfo.currencyInfo[2912] then UpdateAllCurrencies(charInfo) @@ -606,6 +631,7 @@ local payload = { ['CURRENCY_DISPLAY_UPDATE'] = UpdateCurrency, ['PERKS_ACTIVITIES_UDPATED'] = UpdateCatalystCharges, ['ACCOUNT_CHARACTER_CURRENCY_DATA_RECEIVED'] = UpdateAllWarbandCurrencies, + ['CURRENCY_TRANSFER_LOG_UPDATE'] = CurrencyTransferUpdate, }, share = { [UpdateCurrency] = 'currencyInfo' From a81780b7642e5e496a18c32ca2e1ceb3acba96b5 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Thu, 25 Jul 2024 23:11:45 +0200 Subject: [PATCH 003/138] removed debugging prints --- modules/currencies.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index 06cbed6..4005ea8 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -562,15 +562,16 @@ end local function CurrencyTransferUpdate() local self = PermoksAccountManager - local data = self.account.data - + local accountData = self.account.data local warbandCurrencyInfo = self.warbandData.currencyInfo + + -- Fetch the latest currency transfer transactions local transferLog = C_CurrencyInfo.FetchCurrencyTransferTransactions() - local lastTransferCurrencyType = transferLog[#transferLog].currencyType - print('updating for ' ..lastTransferCurrencyType.. '.') + local lastTransfer = transferLog[#transferLog] + local lastTransferCurrencyType = lastTransfer.currencyType - -- reference to the currency tables for character and Warband - local newCharCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo(lastTransferCurrencyType) + -- Get new currency information for character and warband + local newCharacterCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo(lastTransferCurrencyType) local newWarbandCurrencyInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(lastTransferCurrencyType) -- this is necessary because a transfer can be taxed by with different penalties @@ -583,7 +584,6 @@ local function CurrencyTransferUpdate() end end - local function UpdateCatalystCharges(charInfo) if not charInfo.currencyInfo or not charInfo.currencyInfo[2912] then UpdateAllCurrencies(charInfo) From c5e013b32bae0da5d8b45e3f3fba1350b507839b Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Thu, 25 Jul 2024 23:13:38 +0200 Subject: [PATCH 004/138] reverted some variable renaming --- modules/quests.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/quests.lua b/modules/quests.lua index 2e317be..db5a6a6 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1269,10 +1269,10 @@ local function Update(charInfo) UpdateCataDailies(charInfo) end -local function AddQuestModule(moduleName, labelRowsData) +local function AddQuestModule(moduleName, labelRows) local payload = { update = Update, - labels = labelRowsData, + labels = labelRows, events = { ['QUEST_ACCEPTED'] = AddQuest, ['QUEST_TURNED_IN'] = UpdateQuest, From 52645b37c16e8106b55087d3bedb6e3ca2ee88df Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Fri, 26 Jul 2024 18:36:15 +0200 Subject: [PATCH 005/138] minor bugfix, added some fallbacks where tables were potentially nil and added versionchecks for retail. excluded warbandData from crests --- PermoksAccountManager.lua | 2 +- db/db.lua | 4 ++-- modules/currencies.lua | 23 ++++++++++++++++------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index d687dcb..10d7529 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -57,7 +57,7 @@ local defaultDB = { }, warbandData = { - name = 'Warband (NYI)' + name = 'Warband' }, pages = {} } diff --git a/db/db.lua b/db/db.lua index 434f1d1..a5fb3e6 100644 --- a/db/db.lua +++ b/db/db.lua @@ -556,10 +556,10 @@ PermoksAccountManager.currency = { [1904] = 0, [1906] = 0, [1977] = 0, - [1822] = 1, + [1822] = 1, -- Renown [1979] = 0, [2000] = 0, - [2003] = 0, + [2003] = 0, -- Dragon Isles Supplies [2009] = 0, [2118] = 0, -- Elemental Overflow [2122] = 0, -- Storm Sigil diff --git a/modules/currencies.lua b/modules/currencies.lua index 4005ea8..8b8d619 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -490,6 +490,7 @@ local function UpdateAllCurrencies(charInfo) end local function SumWarbandCurrencies(warbandCurrency) + local currencySum = 0 for _, alt in pairs(warbandCurrency) do currencySum = currencySum + alt.quantity @@ -502,21 +503,23 @@ local function UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyI warbandCurrencyInfo[currencyType] = warbandCurrencyInfo[currencyType] or {name = C_CurrencyInfo.GetCurrencyInfo(currencyType).name} warbandCurrencyInfo[currencyType].currencyType = currencyType - warbandCurrencyInfo[currencyType].altQuantity = SumWarbandCurrencies(newWarbandCurrencyInfo) + warbandCurrencyInfo[currencyType].altQuantity = newWarbandCurrencyInfo and SumWarbandCurrencies(newWarbandCurrencyInfo) or 0 end local function UpdateAllWarbandCurrencies(charInfo) local self = PermoksAccountManager + self.warbandData.currencyInfo = self.warbandData.currencyInfo or {} -- reference to the currency tables for character and Warband local charCurrencyInfo = charInfo.currencyInfo local warbandCurrencyInfo = self.warbandData.currencyInfo - for currencyType, _ in pairs(self.currency) do + for currencyType, offset in pairs(self.currency) do -- only fetches data from non-active characters local newWarbandCurrencyInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(currencyType) - if newWarbandCurrencyInfo then + local transferableCurrency = C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) + if newWarbandCurrencyInfo or transferableCurrency then UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, currencyType) - warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + charCurrencyInfo[currencyType].quantity + warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + charCurrencyInfo[currencyType].quantity + offset end end @@ -576,11 +579,14 @@ local function CurrencyTransferUpdate() -- this is necessary because a transfer can be taxed by with different penalties UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, lastTransferCurrencyType) - warbandCurrencyInfo[lastTransferCurrencyType].quantity = warbandCurrencyInfo[lastTransferCurrencyType].altQuantity + newCharCurrencyInfo.quantity + warbandCurrencyInfo[lastTransferCurrencyType].quantity = warbandCurrencyInfo[lastTransferCurrencyType].altQuantity + newCharacterCurrencyInfo.quantity -- update all alts for this currency because the transferlog has no GUID unless you relog (cringe) for _, alt in pairs(newWarbandCurrencyInfo) do - data[alt.characterGUID].currencyInfo[lastTransferCurrencyType].quantity = alt.quantity + local character = accountData[alt.characterGUID] + if character then + character.currencyInfo[lastTransferCurrencyType].quantity = alt.quantity + end end end @@ -601,6 +607,8 @@ end local function CreateCrestString(labelRow, currencyInfo) local crestInfo = currencyInfo and currencyInfo[labelRow.key] + local self = PermoksAccountManager + if crestInfo then if crestInfo.maxQuantity and crestInfo.maxQuantity > 0 then local currencyString = PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, crestInfo.totalEarned) @@ -608,7 +616,8 @@ local function CreateCrestString(labelRow, currencyInfo) elseif currencyInfo then return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) end - elseif currencyInfo then + -- making a global reference here, maybe theres a better solution? + elseif currencyInfo and not currencyInfo ~= self.warbandData.currencyInfo then return PermoksAccountManager:CreateCurrencyString({currencyType = labelRow.key}, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, 0) else return '-' From 7f68ce8b2c4b7ffa7aabbec9ae52216b62bbe19f Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Tue, 30 Jul 2024 01:22:05 +0200 Subject: [PATCH 006/138] reverted some minor change --- modules/currencies.lua | 2 +- modules/quests.lua | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index 8b8d619..74619d8 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -617,7 +617,7 @@ local function CreateCrestString(labelRow, currencyInfo) return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) end -- making a global reference here, maybe theres a better solution? - elseif currencyInfo and not currencyInfo ~= self.warbandData.currencyInfo then + elseif currencyInfo and not currencyInfo == self.warbandData.currencyInfo then return PermoksAccountManager:CreateCurrencyString({currencyType = labelRow.key}, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, 0) else return '-' diff --git a/modules/quests.lua b/modules/quests.lua index db5a6a6..cffef22 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -933,7 +933,6 @@ local labelRows = { label = 'Spreading the Light', type = 'quest', questType = 'weekly', - accWide = true, visibility = 'visible', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE @@ -943,7 +942,6 @@ local labelRows = { label = 'Lesser Keyflame Weeklies', type = 'quest', questType = 'weekly', - accWide = true, visibility = 'visible', tooltip = true, customTooltip = function(...) @@ -1269,7 +1267,7 @@ local function Update(charInfo) UpdateCataDailies(charInfo) end -local function AddQuestModule(moduleName, labelRows) +local function AddQuestModule(module, labelRows) local payload = { update = Update, labels = labelRows, @@ -1289,7 +1287,7 @@ local function AddQuestModule(moduleName, labelRows) tinsert(payload.events.QUEST_LOG_UPDATE, UpdateCataDailies) end - PermoksAccountManager:AddModule(moduleName, payload) + PermoksAccountManager:AddModule(module, payload) end do From 917c0b473af8c414b7fbd2fece3ddc6f025a96f9 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Wed, 31 Jul 2024 19:31:19 +0200 Subject: [PATCH 007/138] moved AccountDataRequest to currency module and removed function wrapper in quest.lua. added custom names for Radiant Echoes event quest --- PermoksAccountManager.lua | 8 ++------ db/db.lua | 11 ++++++++--- modules/currencies.lua | 7 ++++++- modules/quests.lua | 26 +++++++++++++++++++++++--- 4 files changed, 39 insertions(+), 13 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 10d7529..1cf07db 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -778,6 +778,7 @@ function PermoksAccountManager:Modernize(oldInternalVersion) if oldInternalVersion < 34 then self:AddLabelToDefaultCategory('general', 'residual_memories') self:AddLabelToDefaultCategory('general', 'radiant_echoes_prepatch_weeklies') + self:AddLabelToDefaultCategory('currentweekly', 'big_dig', 16) end end @@ -929,18 +930,13 @@ function PermoksAccountManager:OnLogin() LoadFonts() self.account = db.accounts.main + self.warbandData = db.accounts.main.warbandData local data = self.account.data if guid and not data[guid] and not self:isBlacklisted(guid) and not (level < min_level) then db.alts = db.alts + 1 self:AddNewCharacter(self.account, guid) end - -- Request required to access warband data - if self.isRetail then - C_CurrencyInfo.RequestCurrencyDataForAccountCharacters() - self.warbandData = db.accounts.main.warbandData - end - self.charInfo = data[guid] self:LoadAllModules(self.charInfo) if self.charInfo then diff --git a/db/db.lua b/db/db.lua index a5fb3e6..2957f70 100644 --- a/db/db.lua +++ b/db/db.lua @@ -75,6 +75,7 @@ local default_categories = { 'time_rift', 'dreamsurge_weekly', 'sparks_of_life', + 'big_dig', 'separator3', 'knowledge_mobs', 'knowledge_scout_packs', @@ -95,6 +96,7 @@ local default_categories = { time_rift = 13, dreamsurge_weekly = 14, sparks_of_life = 15, + big_dig = 16, separator3 = 30, knowledge_mobs = 31, knowledge_scout_packs = 32, @@ -1490,12 +1492,15 @@ PermoksAccountManager.quests = { [47463] = {questType = 'daily', name = "Dragons of Nightmare"}, -- Dragons of Nightmare [60214] = {questType = 'daily', name = "Doomwalker"}, -- Doomwalker }, + big_dig = { + [79226] = {questType = 'weekly', warbandReward = true, log = true}, + }, -- 11.0 PREPATCH radiant_echoes_prepatch_weeklies = { - [82689] = {questType = 'weekly', log = true}, --name = 'Only Darkness'}, - [82676] = {questType = 'weekly', log = true}, --name = 'Broken Masquerade'}, - [78938] = {questType = 'weekly', log = true}, --name = 'Champion of the Waterlords'}, + [82689] = {questType = 'weekly', log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, + [82676] = {questType = 'weekly', log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, + [78938] = {questType = 'weekly', log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, }, -- 11.0 diff --git a/modules/currencies.lua b/modules/currencies.lua index 74619d8..a592dff 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -527,6 +527,11 @@ end local function Update(charInfo) UpdateAllCurrencies(charInfo) + + -- requesting the warband data has a slight server-delay + if PermoksAccountManager.isRetail then + C_CurrencyInfo.RequestCurrencyDataForAccountCharacters() + end end local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged) @@ -614,7 +619,7 @@ local function CreateCrestString(labelRow, currencyInfo) local currencyString = PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, crestInfo.totalEarned) return string.format("%d - %s", crestInfo.quantity, currencyString) elseif currencyInfo then - return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) + return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.tabbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) end -- making a global reference here, maybe theres a better solution? elseif currencyInfo and not currencyInfo == self.warbandData.currencyInfo then diff --git a/modules/quests.lua b/modules/quests.lua index cffef22..f646610 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -913,6 +913,15 @@ local labelRows = { group = 'resetDaily', version = WOW_PROJECT_MAINLINE }, + big_dig = { + label = 'The Big Dig', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + -- 11.0 PREPATCH radiant_echoes_prepatch_weeklies = { label = 'Radiant Echoes Weeklies', @@ -1131,6 +1140,8 @@ local function UpdateAllQuests(charInfo) charInfo.questInfo = charInfo.questInfo or default local covenant = self.isRetail and (charInfo.covenant or C_Covenants.GetActiveCovenantID()) + local warbandQuestInfo = self.isRetail and (self.warbandData.questInfo or default) + local questInfo = charInfo.questInfo for key, quests in pairs(self.quests) do for questID, info in pairs(quests) do @@ -1143,6 +1154,14 @@ local function UpdateAllQuests(charInfo) local isComplete = C_QuestLog.IsQuestFlaggedCompleted(questID) if not self.isBC then + + -- check for weekly Warband Rewards + if info.warbandReward then + local gotWarbandReward = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) + print('Big Dig completed: ' .. tostring(gotWarbandReward)) + end + + -- covenant stuff if info.covenant and covenant == info.covenant then local sanctumTier if info.sanctum and charInfo.sanctumInfo then @@ -1261,13 +1280,14 @@ local function UpdateQuest(charInfo, questID) end end +-- module init local function Update(charInfo) UpdateAllQuests(charInfo) UpdateCurrentlyActiveQuests(charInfo) UpdateCataDailies(charInfo) end -local function AddQuestModule(module, labelRows) +do local payload = { update = Update, labels = labelRows, @@ -1290,8 +1310,8 @@ local function AddQuestModule(module, labelRows) PermoksAccountManager:AddModule(module, payload) end -do - AddQuestModule(module, labelRows) +if PermoksAccountManager.isCata then + tinsert(payload.events.QUEST_LOG_UPDATE, UpdateCataDailies) end function PermoksAccountManager:FindQuestKeyByQuestID(questID) From 45d02fb17ddbb2a2ff0a39a08781bcccbabae7bf Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 31 Jul 2024 23:06:35 +0200 Subject: [PATCH 008/138] Add custom names for echoes weeklies --- db/db.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/db/db.lua b/db/db.lua index a7e4bf5..b5240bf 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1486,10 +1486,10 @@ PermoksAccountManager.quests = { -- 11.0 PREPATCH radiant_echoes_prepatch_weeklies = { - [82689] = {questType = 'weekly', log = true}, --name = 'Only Darkness'}, - [82676] = {questType = 'weekly', log = true}, --name = 'Broken Masquerade'}, - [78938] = {questType = 'weekly', log = true}, --name = 'Champion of the Waterlords'}, - } + [82689] = {questType = 'weekly', log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, + [82676] = {questType = 'weekly', log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, + [78938] = {questType = 'weekly', log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, + }, } PermoksAccountManager.locale = { From 26964382b207fc5ed0efb31fbf6273d7f35d35dd Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Thu, 1 Aug 2024 13:20:42 +0200 Subject: [PATCH 009/138] learned that characters vanish from api data if their currency is set to 0 and had to find a workaround to update their currency to 0 manually --- modules/currencies.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index a592dff..6c50724 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -568,15 +568,15 @@ local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged) end end -local function CurrencyTransferUpdate() +local function CurrencyTransferUpdate(charInfo) local self = PermoksAccountManager local accountData = self.account.data local warbandCurrencyInfo = self.warbandData.currencyInfo -- Fetch the latest currency transfer transactions local transferLog = C_CurrencyInfo.FetchCurrencyTransferTransactions() - local lastTransfer = transferLog[#transferLog] - local lastTransferCurrencyType = lastTransfer.currencyType + local lastTransferCurrencyType = transferLog[#transferLog].currencyType + -- Get new currency information for character and warband local newCharacterCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo(lastTransferCurrencyType) @@ -587,9 +587,17 @@ local function CurrencyTransferUpdate() warbandCurrencyInfo[lastTransferCurrencyType].quantity = warbandCurrencyInfo[lastTransferCurrencyType].altQuantity + newCharacterCurrencyInfo.quantity -- update all alts for this currency because the transferlog has no GUID unless you relog (cringe) + -- even more cringe is that reducing a currency to 0 makes the character disappear from data. + -- comparing tables to find the nils is too complex so we just reset the db and fill it again. + for guID, alt in pairs(accountData) do + if guID ~= charInfo.guid and alt.currencyInfo[lastTransferCurrencyType] then + alt.currencyInfo[lastTransferCurrencyType].quantity = 0 + end + end + for _, alt in pairs(newWarbandCurrencyInfo) do local character = accountData[alt.characterGUID] - if character then + if character and character.currencyInfo[lastTransferCurrencyType] then character.currencyInfo[lastTransferCurrencyType].quantity = alt.quantity end end @@ -622,7 +630,7 @@ local function CreateCrestString(labelRow, currencyInfo) return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.tabbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) end -- making a global reference here, maybe theres a better solution? - elseif currencyInfo and not currencyInfo == self.warbandData.currencyInfo then + elseif currencyInfo and currencyInfo ~= self.warbandData.currencyInfo then return PermoksAccountManager:CreateCurrencyString({currencyType = labelRow.key}, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, 0) else return '-' From 03053cdd425d1721d675c95a10ab269dd4ac4975 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Sat, 3 Aug 2024 01:48:06 +0200 Subject: [PATCH 010/138] removed some labels from the general tab and adjusted the new prepatch quest cycle. added a feature to show warband wide progress of quests with a warband reward. BUG: ACTIVATING THE WARBAND AFTER A PURGE BLEEDS DATA ACROSS TABLES --- PermoksAccountManager.lua | 5 +++-- db/db.lua | 27 ++++++++++------------- modules/quests.lua | 45 +++++++++++++++++++++++++++------------ 3 files changed, 45 insertions(+), 32 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 1cf07db..bd25bf2 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -38,7 +38,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALVERSION = 34 +local INTERNALVERSION = 33 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -777,7 +777,8 @@ function PermoksAccountManager:Modernize(oldInternalVersion) if oldInternalVersion < 34 then self:AddLabelToDefaultCategory('general', 'residual_memories') - self:AddLabelToDefaultCategory('general', 'radiant_echoes_prepatch_weeklies') + self:AddLabelToDefaultCategory('general', 'radiant_echoes_prepatch_daylies') + self:AddLabelToDefaultCategory('general', 'radiant_echoes_cache') self:AddLabelToDefaultCategory('currentweekly', 'big_dig', 16) end end diff --git a/db/db.lua b/db/db.lua index 2957f70..5c98df0 100644 --- a/db/db.lua +++ b/db/db.lua @@ -20,12 +20,8 @@ local default_categories = { 'aspect_crest_s4', 'spark_awakening', 'residual_memories', - 'radiant_echoes_prepatch_weeklies', - 'spreading_the_light', - 'lesser_keyflame_weeklies', - 'council_of_dornogal' - - + 'radiant_echoes_prepatch_daylies', + 'radiant_echoes_cache', }, childOrder = { characterName = 1, @@ -42,12 +38,8 @@ local default_categories = { aspect_crest_s4 = 12, spark_awakening = 13, residual_memories = 14, - radiant_echoes_prepatch_weeklies = 15, - spreading_the_light = 16, - lesser_keyflame_weeklies = 17, - council_of_dornogal = 18, - - + radiant_echoes_prepatch_daylies = 15, + radiant_echoes_cache = 16, }, hideToggle = true, enabled = true @@ -1497,10 +1489,13 @@ PermoksAccountManager.quests = { }, -- 11.0 PREPATCH - radiant_echoes_prepatch_weeklies = { - [82689] = {questType = 'weekly', log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, - [82676] = {questType = 'weekly', log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, - [78938] = {questType = 'weekly', log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, + radiant_echoes_prepatch_daylies = { + [82689] = {questType = 'daily', warbandReward = 'unique', log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, + [82676] = {questType = 'daily', warbandReward = 'unique', log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, + [78938] = {questType = 'daily', warbandReward = 'unique', log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, + }, + radiant_echoes_cache = { + [84083] = {questType = 'weekly'} }, -- 11.0 diff --git a/modules/quests.lua b/modules/quests.lua index f646610..9dd9a48 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -923,16 +923,24 @@ local labelRows = { }, -- 11.0 PREPATCH - radiant_echoes_prepatch_weeklies = { - label = 'Radiant Echoes Weeklies', + radiant_echoes_prepatch_daylies = { + label = 'Prepatch Daylies', type = 'quest', - questType = 'weekly', + questType = 'daily', visibility = 'visible', tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 3, + group = 'resetDaily', + version = WOW_PROJECT_MAINLINE + }, + radiant_echoes_cache = { + label = 'Prepatch Weekly Cache', + type = 'quest', + questType = 'weekly', + visibility = 'hidden', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, @@ -1135,30 +1143,38 @@ local function GetQuestInfo(questLogIndex) end end +local function setQuestInfo(questInfo, info, key) + local visibleType = info.log and 'visible' or 'hidden' + + questInfo[info.questType] = questInfo[info.questType] or {} + questInfo[info.questType][visibleType] = questInfo[info.questType][visibleType] or {} + questInfo[info.questType][visibleType][key] = questInfo[info.questType][visibleType][key] or {} + return questInfo[info.questType][visibleType][key] +end + local function UpdateAllQuests(charInfo) local self = PermoksAccountManager charInfo.questInfo = charInfo.questInfo or default + self.warbandData.questInfo = self.warbandData.questInfo or default local covenant = self.isRetail and (charInfo.covenant or C_Covenants.GetActiveCovenantID()) - local warbandQuestInfo = self.isRetail and (self.warbandData.questInfo or default) local questInfo = charInfo.questInfo + local warbandQuestInfo = self.warbandData.questInfo for key, quests in pairs(self.quests) do - for questID, info in pairs(quests) do - local visibleType = info.log and 'visible' or 'hidden' - - questInfo[info.questType] = questInfo[info.questType] or {} - questInfo[info.questType][visibleType] = questInfo[info.questType][visibleType] or {} - questInfo[info.questType][visibleType][key] = questInfo[info.questType][visibleType][key] or {} - local currentQuestInfo = questInfo[info.questType][visibleType][key] - local isComplete = C_QuestLog.IsQuestFlaggedCompleted(questID) + for questID, info in pairs(quests) do + local currentQuestInfo = setQuestInfo(questInfo, info, key) + local isComplete = C_QuestLog.IsQuestFlaggedCompleted(questID) if not self.isBC then -- check for weekly Warband Rewards if info.warbandReward then - local gotWarbandReward = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) - print('Big Dig completed: ' .. tostring(gotWarbandReward)) + local currentWarbandQuestInfo = setQuestInfo(warbandQuestInfo, info, key) + local isWarbandComplete --= C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) + currentWarbandQuestInfo[questID] = currentWarbandQuestInfo[questID] or isWarbandComplete or nil + --debug line delete latet + print(C_QuestLog.GetTitleForQuestID(questID) .. ' completed: ' .. tostring(isWarbandComplete)) end -- covenant stuff @@ -1172,6 +1188,7 @@ local function UpdateAllQuests(charInfo) if not info.sanctum or (sanctumTier and sanctumTier >= info.minSanctumTier) then currentQuestInfo[questID] = currentQuestInfo[questID] or isComplete or nil end + elseif not info.covenant then currentQuestInfo[questID] = currentQuestInfo[questID] or isComplete or nil end From 11ee6e7ad6fa6cc671e8216ba346be4d0665858f Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Sat, 3 Aug 2024 01:50:41 +0200 Subject: [PATCH 011/138] uncommented a function whoopsie --- modules/quests.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/quests.lua b/modules/quests.lua index 9dd9a48..d64b13b 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1171,7 +1171,7 @@ local function UpdateAllQuests(charInfo) -- check for weekly Warband Rewards if info.warbandReward then local currentWarbandQuestInfo = setQuestInfo(warbandQuestInfo, info, key) - local isWarbandComplete --= C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) + local isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) currentWarbandQuestInfo[questID] = currentWarbandQuestInfo[questID] or isWarbandComplete or nil --debug line delete latet print(C_QuestLog.GetTitleForQuestID(questID) .. ' completed: ' .. tostring(isWarbandComplete)) From 45cd6c185491feeb775c4b5f503295dd55126385 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Sat, 3 Aug 2024 01:53:06 +0200 Subject: [PATCH 012/138] added another retail check --- modules/quests.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/quests.lua b/modules/quests.lua index d64b13b..589ebf9 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1155,7 +1155,7 @@ end local function UpdateAllQuests(charInfo) local self = PermoksAccountManager charInfo.questInfo = charInfo.questInfo or default - self.warbandData.questInfo = self.warbandData.questInfo or default + self.warbandData.questInfo = self.isRetail and (self.warbandData.questInfo or default) local covenant = self.isRetail and (charInfo.covenant or C_Covenants.GetActiveCovenantID()) From 3a6f07a5c31b2d52e502f6d33063c3fd8d574dc2 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Sat, 3 Aug 2024 11:42:02 +0200 Subject: [PATCH 013/138] added lockout reset for warband data --- PermoksAccountManager.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index bd25bf2..31a20eb 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -983,6 +983,7 @@ function PermoksAccountManager:CheckForReset() for account, accountData in pairs(db.accounts) do self:ResetAccount(db, accountData, resetDaily, resetWeekly, resetBiweekly, resetThreeDayRaids) + self:ResetWarband(db, accountData, resetDaily, resetWeekly, resetBiweekly) end db.weeklyReset = resetWeekly and currentTime + self:GetNextWeeklyResetTime() or db.weeklyReset @@ -1013,6 +1014,21 @@ function PermoksAccountManager:ResetAccount(db, accountData, daily, weekly, biwe end end +function PermoksAccountManager:ResetWarband(db, accountData, daily, weekly, biweekly) + local warbandData = accountData.warbandData + if weekly then + self:ResetWeeklyActivities(warbandData) + end + + if daily then + self:ResetDailyActivities(db, warbandData) + end + + if biweekly then + self:ResetBiweeklyActivities(warbandData) + end +end + function PermoksAccountManager:ResetWeeklyActivities(altData) -- M0/Raids if altData.instanceInfo then From 877665c2ea25b7fb4bda944d5cb659cfa231c0ca Mon Sep 17 00:00:00 2001 From: Permok Date: Sun, 4 Aug 2024 00:52:27 +0200 Subject: [PATCH 014/138] Add done world quests --- PermoksAccountManager.lua | 4 +++ modules/quests.lua | 53 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index c22e3c7..5f05503 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -1087,6 +1087,10 @@ function PermoksAccountManager:ResetDailyActivities(db, altData) end end + if altData.completedWorldQuests then + altData.completedWorldQuests = {} + end + if self.isCata and altData.instanceInfo then altData.instanceInfo.dungeons = {} end diff --git a/modules/quests.lua b/modules/quests.lua index 19d6411..841c705 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -38,6 +38,16 @@ local default = { local module = 'quests' local labelRows = { + completed_world_quests = { + label = 'Done WQs', + type = 'worldquest', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedWorldQuestsTooltip_OnEnter(...) + end, + group = 'resetDaily', + version = WOW_PROJECT_MAINLINE + }, korthia_dailies = { label = L['Korthia Dailies'], type = 'quest', @@ -1093,6 +1103,11 @@ local function UpdateCataDailies(charInfo) charInfo.completedDailies.num = GetDailyQuestsCompleted() end +local function UpdateWorldQuests(charInfo, questID) + charInfo.completedWorldQuests = charInfo.completedWorldQuests or {} + charInfo.completedWorldQuests[questID] = true +end + local function GetQuestInfo(questLogIndex) if not PermoksAccountManager.isRetail then local title, _, _, isHeader, _, _, frequency, questID, _, _, _, _, _, _, _, isHidden = GetQuestLogTitle(questLogIndex) @@ -1219,6 +1234,10 @@ local function UpdateQuest(charInfo, questID) UpdateCataDailies(charInfo) end + if C_QuestLog.IsWorldQuest(questID) then + UpdateWorldQuests(charInfo, questID) + end + local key = self:FindQuestKeyByQuestID(questID) if not key then return @@ -1237,6 +1256,10 @@ local function UpdateQuest(charInfo, questID) end end +local function CreateWorldQuestString(completedWorldQuests) + return PermoksAccountManager:GetNumCompletedQuests(completedWorldQuests) +end + local function Update(charInfo) UpdateAllQuests(charInfo) UpdateCurrentlyActiveQuests(charInfo) @@ -1263,7 +1286,8 @@ do tinsert(payload.events.QUEST_LOG_UPDATE, UpdateCataDailies) end - PermoksAccountManager:AddModule(module, payload) + local module = PermoksAccountManager:AddModule(module, payload) + module:AddCustomLabelType('worldquest', CreateWorldQuestString, true, 'completedWorldQuests') end function PermoksAccountManager:FindQuestKeyByQuestID(questID) @@ -1407,6 +1431,33 @@ function PermoksAccountManager:CompletedQuestsTooltip_OnEnter(button, altData, c end end +function PermoksAccountManager:CompletedWorldQuestsTooltip_OnEnter(button, altData, column, key) + if not altData or not altData.completedWorldQuests then + return + end + + local info = altData.completedWorldQuests + + local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 1, 'LEFT') + button.tooltip = tooltip + + for questID, isComplete in pairs(info) do + local name = QuestUtils_GetQuestName(questID) + local color = "FF0000" + + if isComplete then + color = "00FF00" + end + + if name then + tooltip:AddLine(string.format("|cFF%s%s|r", color, name)) + end + end + + tooltip:SmartAnchorTo(button) + tooltip:Show() +end + function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, key) if not altData or not altData.questInfo or not altData.questInfo[column.questType] or not altData.questInfo[column.questType][column.visibility] then From 1bcfcea6fe13f8306a23317551c28781fd837eee Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 5 Aug 2024 10:48:27 +0200 Subject: [PATCH 015/138] fixed same-table reference in quests and started concentration tracker --- PermoksAccountManager.lua | 2 +- db/db.lua | 40 +++++++++++- modules/quests.lua | 12 ++-- modules/retail_professions.lua | 112 ++++++++++++++++++++++++++++++++- 4 files changed, 154 insertions(+), 12 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 31a20eb..9e8953a 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -98,7 +98,7 @@ local defaultDB = { }, font = 'Expressway', fontSize = 11, - hideWarband = true, + hideWarband = false, savePosition = false, showOptionsButton = false, showGuildAttunementButton = false, diff --git a/db/db.lua b/db/db.lua index 5c98df0..a89ec63 100644 --- a/db/db.lua +++ b/db/db.lua @@ -623,6 +623,40 @@ PermoksAccountManager.professionCDs = { } } +-- key is the SkillLineID of the parentProfession +PermoksAccountManager.childProfessions = { + df_professions = { + [164] = {spellID = 365677, SkillLineID = 2822}, -- Blacksmithing + [165] = {spellID = 366249, SkillLineID = 2830}, -- Leatherworking + [171] = {spellID = 366261, SkillLineID = 2823}, -- Alchemy + [182] = {spellID = 366252, SkillLineID = 2832}, -- Herbalism + [185] = {spellID = 366256, SkillLineID = 2824}, -- Cooking + [186] = {spellID = 366260, SkillLineID = 2833}, -- Mining + [197] = {spellID = 366258, SkillLineID = 2831}, -- Tailoring + [202] = {spellID = 366254, SkillLineID = 2827}, -- Engineering + [333] = {spellID = 366255, SkillLineID = 2825}, -- Enchanting + [356] = {spellID = 366253, SkillLineID = 2826}, -- Fishing + [393] = {spellID = 366259, SkillLineID = 2834}, -- Skinning + [755] = {spellID = 366250, SkillLineID = 2829}, -- Jewelcrafting + [773] = {spellID = 366251, SkillLineID = 2828}, -- Inscription + }, + tww_professions = { + [164] = {spellID = 423332, SkillLineID = 2872}, -- Blacksmithing + [165] = {spellID = 423340, SkillLineID = 2880}, -- Leatherworking + [171] = {spellID = 423321, SkillLineID = 2871}, -- Alchemy + [182] = {spellID = 441327, SkillLineID = 2877}, -- Herbalism + [185] = {spellID = 423333, SkillLineID = 2873}, -- Cooking + [186] = {spellID = 423341, SkillLineID = 2881}, -- Mining + [197] = {spellID = 423343, SkillLineID = 2883}, -- Tailoring + [202] = {spellID = 423335, SkillLineID = 2875}, -- Engineering + [333] = {spellID = 423334, SkillLineID = 2874}, -- Enchanting + [356] = {spellID = 423336, SkillLineID = 2876}, -- Fishing + [393] = {spellID = 423342, SkillLineID = 2882}, -- Skinning + [755] = {spellID = 423339, SkillLineID = 2879}, -- Jewelcrafting + [773] = {spellID = 423338, SkillLineID = 2878}, -- Inscription + }, +} + PermoksAccountManager.quests = { maw_dailies = { [60732] = {questType = 'daily', log = true}, @@ -1490,9 +1524,9 @@ PermoksAccountManager.quests = { -- 11.0 PREPATCH radiant_echoes_prepatch_daylies = { - [82689] = {questType = 'daily', warbandReward = 'unique', log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, - [82676] = {questType = 'daily', warbandReward = 'unique', log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, - [78938] = {questType = 'daily', warbandReward = 'unique', log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, + [82689] = {questType = 'daily', warbandReward = true, log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, + [82676] = {questType = 'daily', warbandReward = true, log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, + [78938] = {questType = 'daily', warbandReward = true, log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, }, radiant_echoes_cache = { [84083] = {questType = 'weekly'} diff --git a/modules/quests.lua b/modules/quests.lua index 589ebf9..cd9e4cc 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -917,6 +917,7 @@ local labelRows = { label = 'The Big Dig', type = 'quest', questType = 'weekly', + warband = true, visibility = 'visible', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE @@ -927,6 +928,7 @@ local labelRows = { label = 'Prepatch Daylies', type = 'quest', questType = 'daily', + warband = 'unique', visibility = 'visible', tooltip = true, customTooltip = function(...) @@ -1154,17 +1156,17 @@ end local function UpdateAllQuests(charInfo) local self = PermoksAccountManager - charInfo.questInfo = charInfo.questInfo or default - self.warbandData.questInfo = self.isRetail and (self.warbandData.questInfo or default) + charInfo.questInfo = charInfo.questInfo or CopyTable(default) + self.warbandData.questInfo = self.isRetail and (self.warbandData.questInfo or CopyTable(default)) local covenant = self.isRetail and (charInfo.covenant or C_Covenants.GetActiveCovenantID()) local questInfo = charInfo.questInfo local warbandQuestInfo = self.warbandData.questInfo for key, quests in pairs(self.quests) do - for questID, info in pairs(quests) do + for questID, info in pairs(quests) do local currentQuestInfo = setQuestInfo(questInfo, info, key) - local isComplete = C_QuestLog.IsQuestFlaggedCompleted(questID) + local isComplete = C_QuestLog.IsQuestFlaggedCompleted(questID) if not self.isBC then @@ -1173,7 +1175,7 @@ local function UpdateAllQuests(charInfo) local currentWarbandQuestInfo = setQuestInfo(warbandQuestInfo, info, key) local isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) currentWarbandQuestInfo[questID] = currentWarbandQuestInfo[questID] or isWarbandComplete or nil - --debug line delete latet + --debug line delete later print(C_QuestLog.GetTitleForQuestID(questID) .. ' completed: ' .. tostring(isWarbandComplete)) end diff --git a/modules/retail_professions.lua b/modules/retail_professions.lua index 634b7a8..a179838 100644 --- a/modules/retail_professions.lua +++ b/modules/retail_professions.lua @@ -26,7 +26,29 @@ local labelRows = { end, group = 'profession', version = WOW_PROJECT_MAINLINE - } + }, + profession1_concentration = { + label = 'Concentration P1 (NYI)', + tooltip = function(button, alt_data) + PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, alt_data.professions[1]) + end, + data = function(alt_data) + return alt_data.professions and alt_data.professionCDs and PermoksAccountManager:CreateProfessionString(alt_data.professions[2], alt_data.professionCDs) or '-' + end, + group = 'profession', + version = WOW_PROJECT_MAINLINE + }, + profession2_concentration = { + label = 'Concentration P2 (NYI)', + tooltip = function(button, alt_data) + PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, alt_data.professions[2]) + end, + data = function(alt_data) + return alt_data.professions and alt_data.professionCDs and PermoksAccountManager:CreateProfessionString(alt_data.professions[2], alt_data.professionCDs) or '-' + end, + group = 'profession', + version = WOW_PROJECT_MAINLINE + }, } -- https://github.com/Stanzilla/WoWUIBugs/issues/47 @@ -51,12 +73,95 @@ local function GetCooldownLeft(start, duration) return cdLeftDuration end +local function UpdateChildConcentration(professionChild) + +end + +local function CalculateConcentration(lastUpdated,professionChild) + +end + +local function UpdateCharConcentration(charInfo) + + for _, profession in pairs(charInfo.professions) do + + if charInfo.guid == UnitGUID('Player') then + profession.lastUpdated = time() + print('yep this is you') + --SEPARATE FOR INDIVIDUAL UPDATE OF CHILDS + for _, child in pairs(profession.childProfessions) do + local currencyInfo = C_CurrencyInfo.GetCurrencyInfo(child.concentrationCurrency) + + child.concentrationMax = currencyInfo.maxQuantity + child.concentrationQuantity = currencyInfo.quantity + child.concentrationRechargeTime = 0 + end + + else + for _, child in pairs(profession.childProfessions) do + child = CalculateConcentration(profession.lastUpdated, child) + end + + end + end +end + +function PermoksAccountManager:UpdateConcentration(charInfo) + local professions = charInfo.professions + --do something to update professions[profession].childprofessions[child].concentrationQuantity +end + +local function UpdateChildProfessionInfo(profession) + local info = C_TradeSkillUI.GetProfessionInfoBySkillLineID(profession.SkillLineID) + local concentration = C_TradeSkillUI.GetConcentrationCurrencyID(profession.SkillLineID) + + print('updating child: ' .. info.professionName) + + return { + SkillLineID = profession.skillLineID, + name = info.professionName, + concentrationCurrency = concentration, + concentrationMax = 0, + concentrationQuantity = 0, + concentrationRechargeTime = 0, + } +end + +local function UpdateProfessionInfo(professionID) + if not professionID then + return + end + + local self = PermoksAccountManager + local info = C_TradeSkillUI.GetProfessionInfoBySkillLineID(professionID) + + local childProfessions = {} + for _, expansion in pairs(self.childProfessions) do + local child = expansion[professionID] + if IsPlayerSpell(child.spellID) then + childProfessions[child['SkillLineID']] = UpdateChildProfessionInfo(child) + end + end + + return { + SkillLineID = professionID, + name = info.professionName, + childProfessions = childProfessions, + lastUpdated = 0, + } +end + -- Need to rewrite most of this stuff. I hate the classic API local function UpdateProfessions(charInfo) + local self = PermoksAccountManager + --replacing profession-table ID with SkillLineID local profession1, profession2 = GetProfessions() + profession1 = profession1 and select(7, GetProfessionInfo(profession1)) + profession2 = profession2 and select(7, GetProfessionInfo(profession2)) + charInfo.professions = { - profession1 and select(7, GetProfessionInfo(profession1)), - profession2 and select(7, GetProfessionInfo(profession2)), + profession1 = UpdateProfessionInfo(profession1), + profession2 = UpdateProfessionInfo(profession2), } end @@ -75,6 +180,7 @@ end local function Update(charInfo) UpdateProfessions(charInfo) UpdateProfessionCDs(charInfo) + UpdateCharConcentration(charInfo) end local payload = { From d893b7615e698f394c8c766f02a6fcb0705041b1 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 7 Aug 2024 14:50:19 +0200 Subject: [PATCH 016/138] Reset world quest weekly not daily --- PermoksAccountManager.lua | 11 ++++------- modules/quests.lua | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 5f05503..f40624b 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -1049,6 +1049,10 @@ function PermoksAccountManager:ResetWeeklyActivities(altData) end end + if altData.completedWorldQuests then + altData.completedWorldQuests = {} + end + -- Crests Earned if altData.currencyInfo then for _, crestID in ipairs({2409, 2410, 2411, 2412}) do @@ -1087,10 +1091,6 @@ function PermoksAccountManager:ResetDailyActivities(db, altData) end end - if altData.completedWorldQuests then - altData.completedWorldQuests = {} - end - if self.isCata and altData.instanceInfo then altData.instanceInfo.dungeons = {} end @@ -2067,9 +2067,6 @@ function PermoksAccountManager:GetNextThreeDayLockoutResetTime() return nextReset end -local function GetAllkeysArguments() -end - local function GetComparisonOperator(startLevel, endLevel, operator) startLevel = tonumber(startLevel) endLevel = tonumber(endLevel) diff --git a/modules/quests.lua b/modules/quests.lua index 841c705..cd953ae 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -45,7 +45,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedWorldQuestsTooltip_OnEnter(...) end, - group = 'resetDaily', + group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, korthia_dailies = { From b50c4efc41b79f25fe6b4fbedfaa298a3b56f062 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Tue, 13 Aug 2024 23:22:17 +0200 Subject: [PATCH 017/138] changed current and removed old crest definition. did some more concentration stuff. broke something with the crest string --- PermoksAccountManager.lua | 8 +- commands.lua | 4 + db/db.lua | 179 ++++++++++++++------------------- modules.lua | 1 + modules/currencies.lua | 72 ++----------- modules/quests.lua | 25 +++-- modules/retail_professions.lua | 153 ++++++++++++++++++---------- 7 files changed, 210 insertions(+), 232 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 9e8953a..0d758dd 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -766,10 +766,10 @@ function PermoksAccountManager:Modernize(oldInternalVersion) end if oldInternalVersion < 33 then - self:AddLabelToDefaultCategory('general', 'whelpling_crest_s4') - self:AddLabelToDefaultCategory('general', 'drake_crest_s4') - self:AddLabelToDefaultCategory('general', 'wyrm_crest_s4') - self:AddLabelToDefaultCategory('general', 'aspect_crest_s4') + self:AddLabelToDefaultCategory('general', 'champion_crest') + self:AddLabelToDefaultCategory('general', 'veteran_crest') + self:AddLabelToDefaultCategory('general', 'hero_crest') + self:AddLabelToDefaultCategory('general', 'myth_crest') self:AddLabelToDefaultCategory('general', 'spark_awakening', 15) self:AddLabelToDefaultCategory('renown', 'keg_legs_crew', 7) self:AddLabelToDefaultCategory('renown', 'soridormi', 16) diff --git a/commands.lua b/commands.lua index 2ae68f0..287827e 100644 --- a/commands.lua +++ b/commands.lua @@ -224,6 +224,10 @@ function PermoksAccountManager:Purge() self:OnLogin() self:Print("Please reload your interface to update the displayed info.") + + if self.isRetail then + self:Print("To update Warband currency info a relog is required.") + end end function PermoksAccountManager:ResetCategories() diff --git a/db/db.lua b/db/db.lua index a89ec63..3bb0b6e 100644 --- a/db/db.lua +++ b/db/db.lua @@ -14,13 +14,13 @@ local default_categories = { 'mplus_score', 'catalyst_charges', 'flightstones', - 'whelpling_crest_s4', - 'drake_crest_s4', - 'wyrm_crest_s4', - 'aspect_crest_s4', + 'champion_crest', + 'veteran_crest', + 'hero_crest', + 'myth_crest', 'spark_awakening', 'residual_memories', - 'radiant_echoes_prepatch_daylies', + 'radiant_echoes_prepatch_dailies', 'radiant_echoes_cache', }, childOrder = { @@ -32,13 +32,13 @@ local default_categories = { mplus_score = 6, catalyst_charges = 7, flightstones = 8, - whelpling_crest_s4 = 9, - drake_crest_s4 = 10, - wyrm_crest_s4 = 11, - aspect_crest_s4 = 12, + champion_crest = 9, + veteran_crest = 10, + hero_crest = 11, + myth_crest = 12, spark_awakening = 13, residual_memories = 14, - radiant_echoes_prepatch_daylies = 15, + radiant_echoes_prepatch_dailies = 15, radiant_echoes_cache = 16, }, hideToggle = true, @@ -68,14 +68,6 @@ local default_categories = { 'dreamsurge_weekly', 'sparks_of_life', 'big_dig', - 'separator3', - 'knowledge_mobs', - 'knowledge_scout_packs', - 'knowledge_treatise', - 'knowledge_weeklies_loot', - 'knowledge_weeklies_craft', - 'knowledge_weeklies_order', - 'show_your_mettle', }, childOrder = { superbloom = 1, @@ -89,14 +81,6 @@ local default_categories = { dreamsurge_weekly = 14, sparks_of_life = 15, big_dig = 16, - separator3 = 30, - knowledge_mobs = 31, - knowledge_scout_packs = 32, - knowledge_treatise = 33, - knowledge_weeklies_loot = 34, - knowledge_weeklies_craft = 35, - knowledge_weeklies_order = 36, - show_your_mettle = 37, }, enabled = true }, @@ -115,45 +99,48 @@ local default_categories = { }, enabled = true }, - renown = { + professions = { order = 4, + name = L['Professions'], + childs = { + 'profession1_concentration_df', + 'profession2_concentration_df', + 'separator3', + 'knowledge_mobs', + 'knowledge_scout_packs', + 'knowledge_treatise', + 'knowledge_weeklies_loot', + 'knowledge_weeklies_craft', + 'knowledge_weeklies_order', + 'show_your_mettle', + }, + childOrder = { + profession1_concentration_df = 1, + profession2_concentration_df = 2, + separator3 = 30, + knowledge_mobs = 31, + knowledge_scout_packs = 32, + knowledge_treatise = 33, + knowledge_weeklies_loot = 34, + knowledge_weeklies_craft = 35, + knowledge_weeklies_order = 36, + show_your_mettle = 37, + }, + enabled = true + }, + renown = { + order = 5, name = L['Reputation'], childs = { - 'dragonscale_expedition', - 'iskaara_tuskar', - 'maruuk_centaur', - 'valdrakken_akkord', - 'loam_niffen', - 'dream_wardens', - 'keg_legs_crew', - 'separator1', 'winterpelt_furbolg', - 'artisan_consortium', - 'cobalt_assembly', - 'sabellian', - 'wrathion', - 'soridormi' }, childOrder = { - dragonscale_expedition = 1, - iskaara_tuskar = 2, - maruuk_centaur = 3, - valdrakken_akkord = 4, - loam_niffen = 5, - dream_wardens = 6, - keg_legs_crew = 7, - separator1 = 10, winterpelt_furbolg = 11, - artisan_consortium = 12, - cobalt_assembly = 13, - sabellian = 14, - wrathion = 15, - soridormi = 16, }, enabled = true }, raid = { - order = 5, + order = 6, name = L['Raid'], childs = { 'vault_of_the_incarnates', @@ -168,7 +155,7 @@ local default_categories = { enabled = true }, pvp = { - order = 6, + order = 7, name = L['PVP'], childs = { 'conquest', @@ -187,7 +174,7 @@ local default_categories = { enabled = true }, old_weekly = { - order = 7, + order = 8, name = "Old Weekly", childs = { 'forbidden_reach_weeklies', @@ -234,7 +221,7 @@ local default_categories = { enabled = true, }, old_daily = { - order = 8, + order = 9, name = "Old Daily", childs = { 'community_feast', @@ -247,7 +234,7 @@ local default_categories = { enabled = true, }, unlocks = { - order = 9, + order = 10, name = 'Unlocks', childs = {}, childOrder = {}, @@ -482,14 +469,6 @@ PermoksAccountManager.item = { [187802] = {key = 'potCosmicHP'}, -- Cosmic HP Pot [199211] = {key = 'primevalEssence'}, --Primeval Essence [202196] = {key = 'vaultKey'}, -- Zskera Vault Key - [204193] = {key = 'whelpling_crest'}, -- Whelpling Crest - [204194] = {key = 'aspect_crest'}, -- Aspect Crest - [204195] = {key = 'drake_crest'}, -- Drake Crest - [204196] = {key = 'wyrm_crest'}, -- Wyrm Crest - [204075] = {key = 'whelpling_crest'}, -- Whelpling Fragments - [204076] = {key = 'drake_crest'}, -- Drake Fragments - [204077] = {key = 'wyrm_crest'}, -- Wyrm Fragments - [204078] = {key = 'aspect_crest'}, -- Aspect Fragments [190453] = {key = 'spark_ingenuity'}, -- Spark of Ingenuity [199197] = {key = 'spark_ingenuity'}, -- Bottled Essence [204440] = {key = 'spark_shadowflame'}, -- Spark of Shadowflame @@ -560,18 +539,10 @@ PermoksAccountManager.currency = { [2123] = 0, -- Bloody Tokens [2166] = 0, -- Renascent Lifeblood (Crucible Charges DF Season 1) [2245] = 0, -- Flightstones - [2409] = 0, -- Whelpling Crest Fragment Tracker - [2410] = 0, -- Drake Crest Fragment Tracker - [2411] = 0, -- Wyrm Crest Fragment Tracker - [2412] = 0, -- Aspect Crest Fragment Tracker [2533] = 0, -- Renascent Shadowflame (Crucible Charges DF Season 2) [2594] = 0, -- Paracausal Flakes [2650] = 0, -- Emerald Dewdrop [2651] = 0, -- Seedbloom - [2706] = 0, -- Whelpling's Dreaming Crest - [2707] = 0, -- Drake's Dreaming Crest - [2708] = 0, -- Wyrm's Dreaming Crest - [2709] = 0, -- Aspect's Dreaming Crest [2777] = 0, -- Dream Infusion [2796] = 0, -- Renascent Dream (Crucible Charges DF Season 3) [2806] = 0, -- Whelpling Awakened Crest @@ -625,35 +596,35 @@ PermoksAccountManager.professionCDs = { -- key is the SkillLineID of the parentProfession PermoksAccountManager.childProfessions = { - df_professions = { - [164] = {spellID = 365677, SkillLineID = 2822}, -- Blacksmithing - [165] = {spellID = 366249, SkillLineID = 2830}, -- Leatherworking - [171] = {spellID = 366261, SkillLineID = 2823}, -- Alchemy - [182] = {spellID = 366252, SkillLineID = 2832}, -- Herbalism - [185] = {spellID = 366256, SkillLineID = 2824}, -- Cooking - [186] = {spellID = 366260, SkillLineID = 2833}, -- Mining - [197] = {spellID = 366258, SkillLineID = 2831}, -- Tailoring - [202] = {spellID = 366254, SkillLineID = 2827}, -- Engineering - [333] = {spellID = 366255, SkillLineID = 2825}, -- Enchanting - [356] = {spellID = 366253, SkillLineID = 2826}, -- Fishing - [393] = {spellID = 366259, SkillLineID = 2834}, -- Skinning - [755] = {spellID = 366250, SkillLineID = 2829}, -- Jewelcrafting - [773] = {spellID = 366251, SkillLineID = 2828}, -- Inscription - }, - tww_professions = { - [164] = {spellID = 423332, SkillLineID = 2872}, -- Blacksmithing - [165] = {spellID = 423340, SkillLineID = 2880}, -- Leatherworking - [171] = {spellID = 423321, SkillLineID = 2871}, -- Alchemy - [182] = {spellID = 441327, SkillLineID = 2877}, -- Herbalism - [185] = {spellID = 423333, SkillLineID = 2873}, -- Cooking - [186] = {spellID = 423341, SkillLineID = 2881}, -- Mining - [197] = {spellID = 423343, SkillLineID = 2883}, -- Tailoring - [202] = {spellID = 423335, SkillLineID = 2875}, -- Engineering - [333] = {spellID = 423334, SkillLineID = 2874}, -- Enchanting - [356] = {spellID = 423336, SkillLineID = 2876}, -- Fishing - [393] = {spellID = 423342, SkillLineID = 2882}, -- Skinning - [755] = {spellID = 423339, SkillLineID = 2879}, -- Jewelcrafting - [773] = {spellID = 423338, SkillLineID = 2878}, -- Inscription + df_profession = { + [164] = {spellID = 365677, skillLineID = 2822}, -- Blacksmithing + [165] = {spellID = 366249, skillLineID = 2830}, -- Leatherworking + [171] = {spellID = 366261, skillLineID = 2823}, -- Alchemy + [182] = {spellID = 366252, skillLineID = 2832}, -- Herbalism + [185] = {spellID = 366256, skillLineID = 2824}, -- Cooking + [186] = {spellID = 366260, skillLineID = 2833}, -- Mining + [197] = {spellID = 366258, skillLineID = 2831}, -- Tailoring + [202] = {spellID = 366254, skillLineID = 2827}, -- Engineering + [333] = {spellID = 366255, skillLineID = 2825}, -- Enchanting + [356] = {spellID = 366253, skillLineID = 2826}, -- Fishing + [393] = {spellID = 366259, skillLineID = 2834}, -- Skinning + [755] = {spellID = 366250, skillLineID = 2829}, -- Jewelcrafting + [773] = {spellID = 366251, skillLineID = 2828}, -- Inscription + }, + tww_profession = { + [164] = {spellID = 423332, skillLineID = 2872}, -- Blacksmithing + [165] = {spellID = 423340, skillLineID = 2880}, -- Leatherworking + [171] = {spellID = 423321, skillLineID = 2871}, -- Alchemy + [182] = {spellID = 441327, skillLineID = 2877}, -- Herbalism + [185] = {spellID = 423333, skillLineID = 2873}, -- Cooking + [186] = {spellID = 423341, skillLineID = 2881}, -- Mining + [197] = {spellID = 423343, skillLineID = 2883}, -- Tailoring + [202] = {spellID = 423335, skillLineID = 2875}, -- Engineering + [333] = {spellID = 423334, skillLineID = 2874}, -- Enchanting + [356] = {spellID = 423336, skillLineID = 2876}, -- Fishing + [393] = {spellID = 423342, skillLineID = 2882}, -- Skinning + [755] = {spellID = 423339, skillLineID = 2879}, -- Jewelcrafting + [773] = {spellID = 423338, skillLineID = 2878}, -- Inscription }, } @@ -1523,7 +1494,7 @@ PermoksAccountManager.quests = { }, -- 11.0 PREPATCH - radiant_echoes_prepatch_daylies = { + radiant_echoes_prepatch_dailies = { [82689] = {questType = 'daily', warbandReward = true, log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, [82676] = {questType = 'daily', warbandReward = true, log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, [78938] = {questType = 'daily', warbandReward = true, log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, diff --git a/modules.lua b/modules.lua index 1e3e5d0..597e0e6 100644 --- a/modules.lua +++ b/modules.lua @@ -19,6 +19,7 @@ end ---@param alwaysForceUpdate boolean ---@param ... string function ModuleMixin:AddCustomLabelType(customType, callback, alwaysForceUpdate, ...) + -- additional varargs can be any table present in altData if self.labelFunctions[customType] then PermoksAccountManager:Print(string.format('[%s] - Custom Type [%s] already exists.', self.name, customType)) return diff --git a/modules/currencies.lua b/modules/currencies.lua index 6c50724..68c4134 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -211,34 +211,6 @@ local labelRows = { }, --10.1 - whelpling_crest_earned = { - label = 'Whelpling earned', - type = 'currency', - key = 2409, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - drake_crest_earned = { - label = 'Drake earned', - type = 'currency', - key = 2410, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - wyrm_crest_earned = { - label = 'Wyrm earned', - type = 'currency', - key = 2411, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - aspect_crest_earned = { - label = 'Aspect earned', - type = 'currency', - key = 2412, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, flightstones = { label = 'Flightstones', type = 'currency', @@ -259,38 +231,6 @@ local labelRows = { }, -- 10.2 - whelpling_crest_s3 = { - label = 'Whelpling Crests', - type = 'crestcurrency', - key = 2706, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - drake_crest_s3 = { - label = 'Drake Crests', - type = 'crestcurrency', - key = 2707, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - wyrm_crest_s3 = { - label = 'Wyrm Crests', - type = 'crestcurrency', - key = 2708, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - aspect_crest_s3 = { - label = 'Aspect Crests', - type = 'crestcurrency', - key = 2709, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, emerald_dewdrop = { label = 'Emerald Dewdrop', type = 'currency', @@ -317,7 +257,7 @@ local labelRows = { }, -- 10.2.7 - whelpling_crest_s4 = { + champion_crest = { label = 'Whelpling Crests', type = 'crestcurrency', key = 2806, @@ -325,7 +265,7 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, - drake_crest_s4 = { + veteran_crest = { label = 'Drake Crests', type = 'crestcurrency', key = 2807, @@ -333,7 +273,7 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, - wyrm_crest_s4 = { + hero_crest = { label = 'Wyrm Crests', type = 'crestcurrency', key = 2809, @@ -341,7 +281,7 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, - aspect_crest_s4 = { + myth_crest = { label = 'Aspect Crests', type = 'crestcurrency', key = 2812, @@ -562,7 +502,7 @@ local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged) end -- Update Warband amount - if self.isRetail and C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) then + if self.warbandData.currencyInfo and C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) then local warbandCurrencyInfo = self.warbandData.currencyInfo warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + quantity end @@ -629,7 +569,7 @@ local function CreateCrestString(labelRow, currencyInfo) elseif currencyInfo then return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.tabbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) end - -- making a global reference here, maybe theres a better solution? + -- manually exclcluding crests for the warband column. need a better solution what labelRows the Warband column shows elseif currencyInfo and currencyInfo ~= self.warbandData.currencyInfo then return PermoksAccountManager:CreateCurrencyString({currencyType = labelRow.key}, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, 0) else diff --git a/modules/quests.lua b/modules/quests.lua index cd9e4cc..1fc5003 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -917,18 +917,18 @@ local labelRows = { label = 'The Big Dig', type = 'quest', questType = 'weekly', - warband = true, + warbandReward = true, visibility = 'visible', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, -- 11.0 PREPATCH - radiant_echoes_prepatch_daylies = { - label = 'Prepatch Daylies', + radiant_echoes_prepatch_dailies = { + label = 'Prepatch Dailies', type = 'quest', questType = 'daily', - warband = 'unique', + warbandReward = 'unique', visibility = 'visible', tooltip = true, customTooltip = function(...) @@ -1165,18 +1165,29 @@ local function UpdateAllQuests(charInfo) local warbandQuestInfo = self.warbandData.questInfo for key, quests in pairs(self.quests) do for questID, info in pairs(quests) do - local currentQuestInfo = setQuestInfo(questInfo, info, key) local isComplete = C_QuestLog.IsQuestFlaggedCompleted(questID) + local currentQuestInfo = setQuestInfo(questInfo, info, key) + + --debug line delete later + if isComplete then + print(questID .. ' completed: ' .. tostring(isComplete)) + end + if not self.isBC then -- check for weekly Warband Rewards if info.warbandReward then local currentWarbandQuestInfo = setQuestInfo(warbandQuestInfo, info, key) - local isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) + + -- API CURRENTLY NOT FUNCTIONING AS INTENDED + -- local isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) + -- Workaround, but requires login on character that completed the quest: + local isWarbandComplete = isComplete currentWarbandQuestInfo[questID] = currentWarbandQuestInfo[questID] or isWarbandComplete or nil + --debug line delete later - print(C_QuestLog.GetTitleForQuestID(questID) .. ' completed: ' .. tostring(isWarbandComplete)) + print(questID .. ' Warband completed: ' .. tostring(isWarbandComplete)) end -- covenant stuff diff --git a/modules/retail_professions.lua b/modules/retail_professions.lua index a179838..edb0a45 100644 --- a/modules/retail_professions.lua +++ b/modules/retail_professions.lua @@ -8,10 +8,10 @@ local labelRows = { profession1CDs = { label = 'Profession 1 (NYI)', tooltip = function(button, alt_data) - PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, alt_data.professions[1]) + PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, alt_data.professions.profession1) end, data = function(alt_data) - return alt_data.professions and alt_data.professionCDs and PermoksAccountManager:CreateProfessionString(alt_data.professions[1], alt_data.professionCDs) or '-' + return alt_data.professions and alt_data.professionCDs and PermoksAccountManager:CreateProfessionString(alt_data.professions.profession1, alt_data.professionCDs) or '-' end, group = 'profession', version = WOW_PROJECT_MAINLINE @@ -19,32 +19,38 @@ local labelRows = { profession2CDs = { label = 'Profession 2 (NYI)', tooltip = function(button, alt_data) - PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, alt_data.professions[2]) + PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, alt_data.professions.profession2) end, data = function(alt_data) - return alt_data.professions and alt_data.professionCDs and PermoksAccountManager:CreateProfessionString(alt_data.professions[2], alt_data.professionCDs) or '-' + return alt_data.professions and alt_data.professionCDs and PermoksAccountManager:CreateProfessionString(alt_data.professions.profession2, alt_data.professionCDs) or '-' end, group = 'profession', version = WOW_PROJECT_MAINLINE }, - profession1_concentration = { - label = 'Concentration P1 (NYI)', - tooltip = function(button, alt_data) - PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, alt_data.professions[1]) - end, - data = function(alt_data) - return alt_data.professions and alt_data.professionCDs and PermoksAccountManager:CreateProfessionString(alt_data.professions[2], alt_data.professionCDs) or '-' + profession1_concentration_df = { + label = 'DF Concentration P1 (NYI)', + type = 'concentration', + key = 'df_profession', + passRow = true, + tooltip = true, + customTooltip = function(button, alt_data) + if alt_data.professions and alt_data.professions.profession1 then + PermoksAccountManager:ConcentrationTooltip_OnEnter(button, alt_data, alt_data.professions.profession1) + end end, group = 'profession', version = WOW_PROJECT_MAINLINE }, - profession2_concentration = { - label = 'Concentration P2 (NYI)', - tooltip = function(button, alt_data) - PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, alt_data.professions[2]) - end, - data = function(alt_data) - return alt_data.professions and alt_data.professionCDs and PermoksAccountManager:CreateProfessionString(alt_data.professions[2], alt_data.professionCDs) or '-' + profession2_concentration_df = { + label = 'DF Concentration P2 (NYI)', + type = 'concentration', + key = 'df_profession', + passRow = true, + tooltip = true, + customTooltip = function(button, alt_data) + if alt_data.professions and alt_data.professions.profession2 then + PermoksAccountManager:ConcentrationTooltip_OnEnter(button, alt_data, alt_data.professions.profession2) + end end, group = 'profession', version = WOW_PROJECT_MAINLINE @@ -73,57 +79,88 @@ local function GetCooldownLeft(start, duration) return cdLeftDuration end -local function UpdateChildConcentration(professionChild) +local function UpdateChildConcentration(child) + local concentrationInfo = C_CurrencyInfo.GetCurrencyInfo(child.concentrationCurrency) + + child.lastUpdated = GetServerTime() + child.concentrationQuantity = concentrationInfo.quantity + + local concentrationDelta = child.concentrationMax - concentrationInfo.quantity + if concentrationDelta == 0 then + child.concentrationCapTime = 0 + elseif concentrationDelta > 0 then + local timeTilMax = math.ceil(concentrationDelta * child.concentrationSecondsPerRecharge) + child.concentrationCapTime = child.lastUpdated + timeTilMax + end + local formattedDate = date("%Y-%m-%d %H:%M:%S", child.concentrationCapTime) + print(child.name .. ' concentration capped at ' .. formattedDate) end -local function CalculateConcentration(lastUpdated,professionChild) +local function CalculateChildConcentration(child) + if child.concentrationCapTime and child.concentrationCapTime > 0 then + child.lastUpdated = GetServerTime() + + local timeUntilMax = math.max(child.concentrationCapTime - child.lastUpdated, 0) + if timeUntilMax > 0 then + local concentrationDelta = timeUntilMax / child.concentrationSecondsPerRecharge + child.concentrationQuantity = math.floor(child.concentrationMax - concentrationDelta) + else + child.concentrationQuantity = child.concentrationMax + child.concentrationCapTime = 0 + end + end end local function UpdateCharConcentration(charInfo) + local isPlayer = charInfo.guid == UnitGUID('Player') for _, profession in pairs(charInfo.professions) do - - if charInfo.guid == UnitGUID('Player') then - profession.lastUpdated = time() - print('yep this is you') - --SEPARATE FOR INDIVIDUAL UPDATE OF CHILDS + if profession.childProfessions then for _, child in pairs(profession.childProfessions) do - local currencyInfo = C_CurrencyInfo.GetCurrencyInfo(child.concentrationCurrency) - child.concentrationMax = currencyInfo.maxQuantity - child.concentrationQuantity = currencyInfo.quantity - child.concentrationRechargeTime = 0 - end + if isPlayer and child.concentrationCurrency then + UpdateChildConcentration(child) + elseif child.concentrationCurrency then + CalculateChildConcentration(child) + end - else - for _, child in pairs(profession.childProfessions) do - child = CalculateConcentration(profession.lastUpdated, child) end - end end end -function PermoksAccountManager:UpdateConcentration(charInfo) - local professions = charInfo.professions - --do something to update professions[profession].childprofessions[child].concentrationQuantity +function PermoksAccountManager:UpdateConcentration() + for _, char in pairs(self.account.data) do + UpdateCharConcentration(char) + end end local function UpdateChildProfessionInfo(profession) - local info = C_TradeSkillUI.GetProfessionInfoBySkillLineID(profession.SkillLineID) - local concentration = C_TradeSkillUI.GetConcentrationCurrencyID(profession.SkillLineID) + local info = C_TradeSkillUI.GetProfessionInfoBySkillLineID(profession.skillLineID) + local concentration = C_TradeSkillUI.GetConcentrationCurrencyID(profession.skillLineID) - print('updating child: ' .. info.professionName) + if concentration == 0 then + return { + skillLineID = profession.skillLineID, + name = info.professionName, + } + end + + local concentrationInfo = C_CurrencyInfo.GetCurrencyInfo(concentration) + + print('updating child: ' .. info.professionName .. 'skillLineID ' .. profession.skillLineID) return { - SkillLineID = profession.skillLineID, + skillLineID = profession.skillLineID, name = info.professionName, concentrationCurrency = concentration, - concentrationMax = 0, + concentrationMax = concentrationInfo.maxQuantity, + concentrationSecondsPerRecharge = concentrationInfo.rechargingCycleDurationMS / (concentrationInfo.rechargingAmountPerCycle * 1000), concentrationQuantity = 0, - concentrationRechargeTime = 0, + concentrationCapTime = 0, + lastUpdated = 0, } end @@ -136,25 +173,24 @@ local function UpdateProfessionInfo(professionID) local info = C_TradeSkillUI.GetProfessionInfoBySkillLineID(professionID) local childProfessions = {} - for _, expansion in pairs(self.childProfessions) do - local child = expansion[professionID] + for expansion, profession in pairs(self.childProfessions) do + local child = profession[professionID] if IsPlayerSpell(child.spellID) then - childProfessions[child['SkillLineID']] = UpdateChildProfessionInfo(child) + childProfessions[expansion] = UpdateChildProfessionInfo(child) end end return { - SkillLineID = professionID, + skillLineID = professionID, name = info.professionName, childProfessions = childProfessions, - lastUpdated = 0, } end -- Need to rewrite most of this stuff. I hate the classic API local function UpdateProfessions(charInfo) local self = PermoksAccountManager - --replacing profession-table ID with SkillLineID + --replacing profession-table ID with skillLineID local profession1, profession2 = GetProfessions() profession1 = profession1 and select(7, GetProfessionInfo(profession1)) profession2 = profession2 and select(7, GetProfessionInfo(profession2)) @@ -169,14 +205,28 @@ local function UpdateProfessionCDs(charInfo) end -function PermoksAccountManager:CreateProfessionString(professionInfo, professionCDs) +function PermoksAccountManager:CreateProfessionString(professions, professionCDs) end -function PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, professionInfo) +local function CreateConcentrationString(labelRow, professions) + if not professions then return '-' end + return labelRow.key +end + +function PermoksAccountManager:ConcentrationTooltip_OnEnter(button, altData, labelRow) + if not altData.professions and altData.professions then + return + end end +function PermoksAccountManager:ProfessionTooltip_OnEnter(button, alt_data, professions) + +end + + + local function Update(charInfo) UpdateProfessions(charInfo) UpdateProfessionCDs(charInfo) @@ -192,3 +242,4 @@ local payload = { labels = labelRows } local module = PermoksAccountManager:AddModule(module, payload) +module:AddCustomLabelType('concentration', CreateConcentrationString, nil, 'professions') From 29677d2c6d937c73e2df58571f834b0f487851de Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Tue, 13 Aug 2024 23:53:46 +0200 Subject: [PATCH 018/138] removed typo in the crest string --- modules/currencies.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index 68c4134..027f35e 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -567,7 +567,7 @@ local function CreateCrestString(labelRow, currencyInfo) local currencyString = PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, crestInfo.totalEarned) return string.format("%d - %s", crestInfo.quantity, currencyString) elseif currencyInfo then - return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.tabbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) + return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) end -- manually exclcluding crests for the warband column. need a better solution what labelRows the Warband column shows elseif currencyInfo and currencyInfo ~= self.warbandData.currencyInfo then From 6169125de3b7edfe18fc85cf77df854c468999a9 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 14 Aug 2024 02:20:52 +0200 Subject: [PATCH 019/138] Add warband=true and warband='unique' handling --- PermoksAccountManager.lua | 215 ++++++++++++-------------------------- modules/character.lua | 1 + modules/currencies.lua | 2 +- 3 files changed, 69 insertions(+), 149 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index c22e3c7..e953870 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -1556,83 +1556,89 @@ function PermoksAccountManager:DeleteUnusedLabels(labelIdentifier) end end -function PermoksAccountManager:UpdateRows(childs, rows, anchorFrame, enabledChilds, data, options) +function PermoksAccountManager:UpdateRows(childs, rows, anchorFrame, enabledChilds, data, options, isWarband) local enabledRows, yOffset = 0, 0 for _, row_identifier in pairs(childs) do local labelRow = self.labelRows[row_identifier] if labelRow and enabledChilds[row_identifier] then + local row = (not self.isLayoutDirty and rows[row_identifier]) or CreateLabelButton('row', anchorFrame, labelRow, enabledRows) - if self.isLayoutDirty or not rows[row_identifier] then - if rows[row_identifier] then - rows[row_identifier]:Hide() + if (not isWarband and labelRow.warband ~= 'unique') or (isWarband and labelRow.warband) then + if self.isLayoutDirty or not rows[row_identifier] then + if rows[row_identifier] then + rows[row_identifier]:Hide() + end + rows[row_identifier] = row + + local module = self:GetModuleForRow(row_identifier) + local moduleLabelFunction = module and module.labelFunctions[labelRow.type] + if moduleLabelFunction then + row.module = module + row.labelFunction = moduleLabelFunction.callback + else + row.labelFunction = self:GetInternalLabelFunction(labelRow) + end + + if labelRow.tooltip then + local tooltipFunction + if labelRow.customTooltip then + tooltipFunction = labelRow.customTooltip + elseif InternalTooltipFunctions[labelRow.type] then + tooltipFunction = InternalTooltipFunctions[labelRow.type] + elseif type(labelRow.tooltip) == 'function' then + tooltipFunction = labelRow.tooltip + end + row:SetScript('OnLeave', Tooltip_OnLeave) + row.tooltipFunction = tooltipFunction + end end - rows[row_identifier] = row - local module = self:GetModuleForRow(row_identifier) - local moduleLabelFunction = module and module.labelFunctions[labelRow.type] - if moduleLabelFunction then - row.module = module - row.labelFunction = moduleLabelFunction.callback - else - row.labelFunction = self:GetInternalLabelFunction(labelRow) + if row.tooltipFunction then + row:SetScript( + 'OnEnter', + function(self) + self.tooltipFunction(self, data, labelRow, row_identifier) + end + ) end - if labelRow.tooltip then - local tooltipFunction - if labelRow.customTooltip then - tooltipFunction = labelRow.customTooltip - elseif InternalTooltipFunctions[labelRow.type] then - tooltipFunction = InternalTooltipFunctions[labelRow.type] - elseif type(labelRow.tooltip) == 'function' then - tooltipFunction = labelRow.tooltip - end - row:SetScript('OnLeave', Tooltip_OnLeave) - row.tooltipFunction = tooltipFunction + if labelRow.OnClick then + row:SetScript("OnClick", function(self, button) + labelRow.OnClick(button, data) + end) end - end - if row.tooltipFunction then - row:SetScript( - 'OnEnter', - function(self) - self.tooltipFunction(self, data, labelRow, row_identifier) + UpdateRowButton(row, options, row_identifier) + + if row.module then + local args = row.module:GenerateLabelArgs(data, labelRow.type, labelRow.update) + local text + if labelRow.passKey then + text = row.labelFunction(labelRow.key or row_identifier, unpack(args)) + elseif labelRow.passRow then + text = row.labelFunction(labelRow, unpack(args)) + else + text = row.labelFunction(unpack(args)) end - ) - end - - if labelRow.OnClick then - row:SetScript("OnClick", function(self, button) - labelRow.OnClick(button, data) - end) - end - - UpdateButtonTexture(row, enabledRows, row_identifier, data.guid) - UpdateRowButton(row, options, row_identifier) - - if row.module then - local args = row.module:GenerateLabelArgs(data, labelRow.type, labelRow.update) - local text - if labelRow.passKey then - text = row.labelFunction(labelRow.key or row_identifier, unpack(args)) - elseif labelRow.passRow then - text = row.labelFunction(labelRow, unpack(args)) + row:SetText(text) else - text = row.labelFunction(unpack(args)) + row:SetText(row.labelFunction(data, labelRow, row_identifier)) + end + + if labelRow.color and row.fontString then + local color = labelRow.color(data) + if color then + row.fontString:SetTextColor(color:GetRGBA()) + end end - row:SetText(text) - else - row:SetText(row.labelFunction(data, labelRow, row_identifier)) end + + UpdateButtonTexture(row, enabledRows, row_identifier, data.guid) + + row:SetPoint('TOPLEFT', anchorFrame, 'TOPLEFT', 0, -yOffset * 20) row:Show() - if labelRow.color and row.fontString then - local color = labelRow.color(data) - if color then - row.fontString:SetTextColor(color:GetRGBA()) - end - end - enabledRows = enabledRows + 1 yOffset = yOffset + (labelRow.offset or 1) end @@ -1655,7 +1661,7 @@ function PermoksAccountManager:UpdateColumnForWarband(category) local account = self.account local db = self.db.global local anchorFrame = self.managerFrame.warbandColumns[category] - self:UpdateRows(db.currentCategories[category].childs, anchorFrame.rows, anchorFrame, db.currentCategories[category].childOrder, account.warbandData, db.options.buttons) + self:UpdateRows(db.currentCategories[category].childs, anchorFrame.rows, anchorFrame, db.currentCategories[category].childOrder, account.warbandData, db.options.buttons, true) end function PermoksAccountManager:UpdateColumnForAlt(altData, anchorFrame, category) @@ -1669,94 +1675,7 @@ function PermoksAccountManager:UpdateColumnForAlt(altData, anchorFrame, category end local db = self.db.global - local buttonOptions = db.options.buttons - local childs = db.currentCategories[category].childs - local enabledChilds = db.currentCategories[category].childOrder - - local rows = anchorFrame.rows - local enabledRows, yOffset = 0, 0 - for _, row_identifier in pairs(childs) do - local labelRow = self.labelRows[row_identifier] - if labelRow and enabledChilds[row_identifier] then - local row = (not self.isLayoutDirty and rows[row_identifier]) or CreateLabelButton('row', anchorFrame, labelRow, enabledRows) - if self.isLayoutDirty or not rows[row_identifier] then - if rows[row_identifier] then - rows[row_identifier]:Hide() - end - rows[row_identifier] = row - - local module = self:GetModuleForRow(row_identifier) - local moduleLabelFunction = module and module.labelFunctions[labelRow.type] - if moduleLabelFunction then - row.module = module - row.labelFunction = moduleLabelFunction.callback - else - row.labelFunction = self:GetInternalLabelFunction(labelRow) - end - - if labelRow.tooltip then - local tooltipFunction - if labelRow.customTooltip then - tooltipFunction = labelRow.customTooltip - elseif InternalTooltipFunctions[labelRow.type] then - tooltipFunction = InternalTooltipFunctions[labelRow.type] - elseif type(labelRow.tooltip) == 'function' then - tooltipFunction = labelRow.tooltip - end - row:SetScript('OnLeave', Tooltip_OnLeave) - row.tooltipFunction = tooltipFunction - end - end - - if row.tooltipFunction then - row:SetScript( - 'OnEnter', - function(self) - self.tooltipFunction(self, altData, labelRow, row_identifier) - end - ) - end - - if labelRow.OnClick then - row:SetScript("OnClick", function(self, button) - labelRow.OnClick(button, altData) - end) - end - - UpdateButtonTexture(row, enabledRows, row_identifier, altData.guid) - UpdateRowButton(row, buttonOptions, row_identifier) - - if row.module then - local args = row.module:GenerateLabelArgs(altData, labelRow.type, labelRow.update) - local text - if labelRow.passKey then - text = row.labelFunction(labelRow.key or row_identifier, unpack(args)) - elseif labelRow.passRow then - text = row.labelFunction(labelRow, unpack(args)) - else - text = row.labelFunction(unpack(args)) - end - row:SetText(text) - else - row:SetText(row.labelFunction(altData, labelRow, row_identifier)) - end - row:SetPoint('TOPLEFT', anchorFrame, 'TOPLEFT', 0, -yOffset * 20) - row:Show() - - if labelRow.color and row.fontString then - row.fontString:SetTextColor(labelRow.color(altData):GetRGBA()) - end - - enabledRows = enabledRows + 1 - yOffset = yOffset + (labelRow.offset or 1) - end - end - - for row_identifier, row in pairs(rows) do - if not enabledChilds[row_identifier] then - row:Hide() - end - end + self:UpdateRows(db.currentCategories[category].childs, anchorFrame.rows, anchorFrame, db.currentCategories[category].childOrder, altData, db.options.buttons) end function PermoksAccountManager:UpdateStrings(page, category, columnFrame) diff --git a/modules/character.lua b/modules/character.lua index 05ded7d..304626a 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -9,6 +9,7 @@ local labelRows = { hideLabel = true, label = L['Name'], hideOption = true, + warband = true, big = true, offset = 1.5, type = 'characterName', diff --git a/modules/currencies.lua b/modules/currencies.lua index 1e163ee..646bf84 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -357,7 +357,7 @@ local labelRows = { key = 3089, passRow = true, group = 'currency', - warband = true, + warband = 'unique', version = WOW_PROJECT_MAINLINE }, From 5b063b0f87847f50c49665effe10dc319a5b5188 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Tue, 20 Aug 2024 02:37:20 +0200 Subject: [PATCH 020/138] added all new quests, currencies, instance maps, items of interest, rares to the db. removed old stuff from default categories already. --- db/db.lua | 452 ++++++++++++++++++++++++++++++++--------- modules/currencies.lua | 2 +- modules/quests.lua | 18 +- 3 files changed, 366 insertions(+), 106 deletions(-) diff --git a/db/db.lua b/db/db.lua index 3bb0b6e..3d7df3f 100644 --- a/db/db.lua +++ b/db/db.lua @@ -19,6 +19,9 @@ local default_categories = { 'hero_crest', 'myth_crest', 'spark_awakening', + + -- DF Stuff -> Remove from Default Categories + 'separator3', 'residual_memories', 'radiant_echoes_prepatch_dailies', 'radiant_echoes_cache', @@ -37,9 +40,12 @@ local default_categories = { hero_crest = 11, myth_crest = 12, spark_awakening = 13, - residual_memories = 14, - radiant_echoes_prepatch_dailies = 15, - radiant_echoes_cache = 16, + + -- DF Stuff -> Remove from Default Categories + separator3 = 30, + residual_memories = 31, + radiant_echoes_prepatch_dailies = 32, + radiant_echoes_cache = 33, }, hideToggle = true, enabled = true @@ -103,27 +109,33 @@ local default_categories = { order = 4, name = L['Professions'], childs = { + + -- DF Stuff -> Remove from Default Categories + 'separator2', 'profession1_concentration_df', 'profession2_concentration_df', 'separator3', - 'knowledge_mobs', - 'knowledge_scout_packs', - 'knowledge_treatise', - 'knowledge_weeklies_loot', - 'knowledge_weeklies_craft', - 'knowledge_weeklies_order', + 'knowledge_df_mobs', + 'knowledge_df_treasures', + 'knowledge_df_treatise', + 'knowledge_df_weeklies_loot', + 'knowledge_df_weeklies_craft', + 'knowledge_df_weeklies_order', 'show_your_mettle', }, childOrder = { - profession1_concentration_df = 1, - profession2_concentration_df = 2, + + -- DF Stuff -> Remove from Default Categories + separator2 = 20, + profession1_concentration_df = 21, + profession2_concentration_df = 22, separator3 = 30, - knowledge_mobs = 31, - knowledge_scout_packs = 32, - knowledge_treatise = 33, - knowledge_weeklies_loot = 34, - knowledge_weeklies_craft = 35, - knowledge_weeklies_order = 36, + knowledge_df_mobs = 31, + knowledge_df_treasures = 32, + knowledge_df_treatise = 33, + knowledge_df_weeklies_loot = 34, + knowledge_df_weeklies_craft = 35, + knowledge_df_weeklies_order = 36, show_your_mettle = 37, }, enabled = true @@ -143,14 +155,8 @@ local default_categories = { order = 6, name = L['Raid'], childs = { - 'vault_of_the_incarnates', - 'aberrus_the_shadowed_crucible', - 'amirdrassil_the_dreams_hope', }, childOrder = { - vault_of_the_incarnates = 1, - aberrus_the_shadowed_crucible = 2, - amirdrassil_the_dreams_hope = 3 }, enabled = true }, @@ -177,46 +183,10 @@ local default_categories = { order = 8, name = "Old Weekly", childs = { - 'forbidden_reach_weeklies', - 'forbidden_reach_elite_wqs', - 'separator1', - 'mythics_done', - 'dragonflight_world_boss', - 'zc_wb_wq', - 'grand_hunts', - 'marrukai_camp', - 'sparks_of_life', - 'community_feast_weekly', - 'fish_turnins_df', - 'separator2', - 'trial_of_flood', - 'trial_of_elements', - 'trial_of_storms', - 'separator3', - 'dragonbane_keep_siege', - 'dragonbane_keep_key', - 'dragonbane_keep_weeklies', + 'big_dig' }, childOrder = { - forbidden_reach_weeklies = 1, - forbidden_reach_elite_wqs = 2, - separator1 = 10, - mythics_done = 11, - dragonflight_world_boss = 12, - zc_wb_wq = 13, - grand_hunts = 14, - marrukai_camp = 15, - sparks_of_life = 16, - community_feast_weekly = 17, - fish_turnins_df = 18, - separator2 = 20, - trial_of_flood = 21, - trial_of_elements = 22, - trial_of_storms = 23, - separator3 = 30, - dragonbane_keep_siege = 31, - dragonbane_keep_key = 32, - dragonbane_keep_weeklies = 33, + big_dig = 51, }, enabled = true, }, @@ -224,12 +194,8 @@ local default_categories = { order = 9, name = "Old Daily", childs = { - 'community_feast', - 'iskaara_fishing_dailies', }, childOrder = { - community_feast = 1, - iskaara_fishing_dailies = 2, }, enabled = true, }, @@ -416,6 +382,17 @@ PermoksAccountManager.keys = { [456] = 'TOTT', -- Throne of the Tides [463] = 'FALL', -- Dawn of the Infinite: Galakrond's Fall [464] = 'RISE', -- Dawn of the Infinite: Murozond's Rise + + -- PLACEHOLDER ABBREVIATIONS + [499] = 'PSF', -- Priory of the Sacred Flame + [500] = 'TR', -- The Rookery + [501] = 'TSV', -- The Stonevault + [502] = 'COT', -- City of Threads + [503] = 'AK', -- Ara-Kara, City of Echoes + [504] = 'DFC', -- Darkflame Cleft + [505] = 'DAWN', -- The Dawnbreaker + [506] = 'CIN', -- Cinderbrew Meadery + [507] = 'GB', -- Grim Batol } PermoksAccountManager.activityIDToKeys = { @@ -435,9 +412,10 @@ PermoksAccountManager.activityIDToKeys = { } PermoksAccountManager.raids = { - [2522] = {name = GetRealZoneText(2522), englishID = 'vault_of_the_incarnates', instanceID = 1200, startIndex = 1, endIndex = 8}, - [2569] = {name = GetRealZoneText(2569), englishID = 'aberrus_the_shadowed_crucible', instanceID = 1208, startIndex = 9, endIndex = 17}, - [2549] = {name = GetRealZoneText(2549), englishID = 'amirdrassil_the_dreams_hope', instanceID = 1207, startIndex = 18, endIndex = 26}, + [2657] = {name = GetRealZoneText(2657), englishID = 'nerub_ar_palace', instanceID = 1273, startIndex = 1, endIndex = 8}, + --[2522] = {name = GetRealZoneText(2522), englishID = 'vault_of_the_incarnates', instanceID = 1200, startIndex = 1, endIndex = 8}, + --[2569] = {name = GetRealZoneText(2569), englishID = 'aberrus_the_shadowed_crucible', instanceID = 1208, startIndex = 9, endIndex = 17}, + --[2549] = {name = GetRealZoneText(2549), englishID = 'amirdrassil_the_dreams_hope', instanceID = 1207, startIndex = 18, endIndex = 26}, } PermoksAccountManager.dungeons = { @@ -488,6 +466,18 @@ PermoksAccountManager.item = { [208047] = {key = 'dreamseeds'}, -- Gigantic Dreamseed [211515] = {key = 'spark_awakening'}, -- Splintered Spark of Awakening [211516] = {key = 'spark_awakening'}, -- Spark of Awakening + + --- TWW items + [211297] = {key = 'spark_omens'}, -- Fractured Spark of Omens + [211296] = {key = 'spark_omens'}, -- Spark of Omens + [190456] = {key = 'artisans_mettle'}, -- Artisan's Mettle + [210814] = {key = 'artisans_acuity'}, -- Artisan's Acuity + [206350] = {key = 'radiant_remnant'}, -- Radiant Remnant + [212493] = {key = 'odd_glob_wax'}, -- Odd Glob of Wax + [224642] = {key = 'firelight_ruby'}, -- Firelight Ruby + [220693] = {key = 'coffer_key_shard'}, -- Coffer Key Shard + + } PermoksAccountManager.factions = { @@ -551,6 +541,16 @@ PermoksAccountManager.currency = { [2812] = 0, -- Aspect's Awakened Crest [2912] = 0, -- Renascent Awakening (Crucible Charges DF Season 4) [3089] = 0, -- Residual Memories (11.0 prepatch currency) + + -- TWW Currencies + [2914] = 0, -- Weathered Harbinger Crest + [2915] = 0, -- Carved Harbinger Crest + [2916] = 0, -- Runed Harbinger Crest + [2917] = 0, -- Gilded Harbinger Crest + [3008] = 0, -- Valorstones + [2815] = 0, -- Resonance Crystals + [3056] = 0, -- Kej + [3028] = 0, -- Restored Coffer Key } PermoksAccountManager.currencyCustomOptions = { @@ -1089,7 +1089,7 @@ PermoksAccountManager.quests = { [73996] = {questType = 'daily', name = 'Gnarls'}, [74004] = {questType = 'daily', name = 'High Shaman Rotknuckle'}, }, - knowledge_mobs = { + knowledge_df_mobs = { [70522] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198975}, --Leatherworking 1 [70523] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198976}, --Leatherworking 2 [73138] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 204232}, --Leatherworking 3 @@ -1133,7 +1133,7 @@ PermoksAccountManager.quests = { [72164] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, --Mining 5 [72165] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, --Mining 6 }, - knowledge_scout_packs = { + knowledge_df_treasures = { [66375] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193904}, --Inscription 1 [66376] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193905}, --Inscription 2 [66384] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 193910}, --Leatherworking 1 @@ -1151,7 +1151,7 @@ PermoksAccountManager.quests = { [66373] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193891}, --Alchemy 1 [66374] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193897}, --Alchemy 2 }, - knowledge_treatise = { + knowledge_df_treatise = { [74105] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription'}, -- Inscription [74106] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Mining [74107] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Herbalism @@ -1164,7 +1164,7 @@ PermoksAccountManager.quests = { [74114] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Skinning [74115] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring'}, -- Tailoring }, - knowledge_weeklies_craft = { + knowledge_df_weeklies_craft = { [70558] = {questType = 'weekly', log = true}, -- Inscription 1 [70559] = {questType = 'weekly', log = true}, -- Inscription 2 [70560] = {questType = 'weekly', log = true}, -- Inscription 3 @@ -1198,7 +1198,7 @@ PermoksAccountManager.quests = { [70533] = {questType = 'weekly', log = true}, -- Alchemy 3 [70530] = {questType = 'weekly', log = true}, -- Alchemy 4 }, - knowledge_weeklies_loot = { + knowledge_df_weeklies_loot = { [66943] = {questType = 'weekly', log = true}, -- Inscription 5 [66944] = {questType = 'weekly', log = true}, -- Inscription 6 [66945] = {questType = 'weekly', log = true}, -- Inscription 7 @@ -1280,7 +1280,7 @@ PermoksAccountManager.quests = { [77932] = {questType = 'weekly', log = true}, -- Alchemy [77933] = {questType = 'weekly', log = true}, -- Alchemy }, - knowledge_weeklies_order = { + knowledge_df_weeklies_order = { [70589] = {questType = 'weekly', log = true}, -- Blacksmithing 0 [70591] = {questType = 'weekly', log = true}, -- Engineering 0 [70592] = {questType = 'weekly', log = true}, -- Inscription 0 @@ -1490,41 +1490,301 @@ PermoksAccountManager.quests = { [60214] = {questType = 'daily', name = "Doomwalker"}, -- Doomwalker }, big_dig = { - [79226] = {questType = 'weekly', warbandReward = true, log = true}, + [79226] = {questType = 'weekly', warband = true, log = true}, }, -- 11.0 PREPATCH radiant_echoes_prepatch_dailies = { - [82689] = {questType = 'daily', warbandReward = true, log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, - [82676] = {questType = 'daily', warbandReward = true, log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, - [78938] = {questType = 'daily', warbandReward = true, log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, + [82689] = {questType = 'daily', warband = 'unique', log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, + [82676] = {questType = 'daily', warband = 'unique', log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, + [78938] = {questType = 'daily', warband = 'unique', log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, }, radiant_echoes_cache = { [84083] = {questType = 'weekly'} }, -- 11.0 + -- Dornogal Weeklies + weekly_dungeon_tww = { + [83432] = {questType = 'weekly', log = true}, -- The Rookery + [83436] = {questType = 'weekly', log = true}, -- Cinderbrew Meadery + [83443] = {questType = 'weekly', log = true}, -- Darkflame Cleft + [83457] = {questType = 'weekly', log = true}, -- The Stonevault + [83458] = {questType = 'weekly', log = true}, -- Priory of the Sacred Flame + [83459] = {questType = 'weekly', log = true}, -- The Dawnbreaker + [83465] = {questType = 'weekly', log = true}, -- Ara-Kara, City of Echoes + [83469] = {questType = 'weekly', log = true}, -- City of Threads + }, + weekend_event_tww = { + [83345] = {questType = 'weekly', log = true}, -- A Call to Battle + [83347] = {questType = 'weekly', log = true}, -- Emissary of War + [83357] = {questType = 'weekly', log = true}, -- The Very Best + [83358] = {questType = 'weekly', log = true}, -- The Arena Calls + [83359] = {questType = 'weekly', log = true}, -- A Shattered Path Through Time + [83362] = {questType = 'weekly', log = true}, -- A Shrouded Path Through Time + [83365] = {questType = 'weekly', log = true}, -- A Frozen Path Through Time + [83366] = {questType = 'weekly', log = true}, -- The World Awaits + }, + delve_weekly_tww = { --UNCLEAR HOW THIS WORKS NEED MORE INFO + [82746] = {questType = 'weekly', log = true}, -- Delves: Breaking Tough to Loot Stuff + [82712] = {questType = 'weekly', log = true}, -- Delves: Trouble Up and Down Khaz Algar + [82711] = {questType = 'weekly', log = true}, -- Delves: Lost and Found + [82709] = {questType = 'weekly', log = true}, -- Delves: Percussive Archaeology + [82706] = {questType = 'weekly', log = true}, -- Delves: Khaz Algar Research + [82707] = {questType = 'weekly', log = true}, -- Delves: Earthen Defense + }, + sparks_of_war_tww = { + [81793] = {questType = 'weekly', log = true}, -- Sparks of War: Isle of Dorn + [81794] = {questType = 'weekly', log = true}, -- Sparks of War: The Ringing Deeps + [81795] = {questType = 'weekly', log = true}, -- Sparks of War: Hallowfall + [81796] = {questType = 'weekly', log = true}, -- Sparks of War: Azj-Kahet + }, + pvp_weekly_tww = { + [80184] = {questType = 'weekly', log = true}, -- Preserving in Battle + [80185] = {questType = 'weekly', log = true}, -- Preserving Solo + [80186] = {questType = 'weekly', log = true}, -- Preserving in War + [80187] = {questType = 'weekly', log = true}, -- Preserving in Skirmishes + [80188] = {questType = 'weekly', log = true}, -- Preserving in Arenas + [80189] = {questType = 'weekly', log = true}, -- Preserving Teamwork + }, + + -- Weekly World Activities + the_theater_troupe = { + [83240] = {questType = 'weekly', log = true}, -- The Theater Troupe + }, + rollin_down_in_the_deeps = { + [82946] = {questType = 'weekly', log = true}, -- Rollin' Down in the Deeps (Digging) + }, + gearing_up_for_trouble = { + [83333] = {questType = 'weekly', log = true}, -- Gearing Up for Trouble (Awakening the Machine Weekly) + }, + awakening_the_machine = { + [84642] = {questType = 'weekly', log = true}, -- cache 1 + [84644] = {questType = 'weekly', log = true}, -- cache 2 + [84646] = {questType = 'weekly', log = true}, -- cache 3 + [84647] = {questType = 'weekly', log = true}, -- cache 4 + }, spreading_the_light = { - [76586] = {questType = 'weekly', log = true}, + [76586] = {questType = 'weekly', log = true}, -- Hallowfall Event in Dunelle's Kindness }, lesser_keyflame_weeklies = { - [76169] = {questType = 'weekly', log = true}, - [76394] = {questType = 'weekly', log = true}, - [76600] = {questType = 'weekly', log = true}, - [76733] = {questType = 'weekly', log = true}, - [76997] = {questType = 'weekly', log = true}, - [78656] = {questType = 'weekly', log = true}, - [78915] = {questType = 'weekly', log = true}, - [78933] = {questType = 'weekly', log = true}, - [78972] = {questType = 'weekly', log = true}, - [79158] = {questType = 'weekly', log = true}, - [79173] = {questType = 'weekly', log = true}, - [79216] = {questType = 'weekly', log = true}, - [79346] = {questType = 'weekly', log = true}, - [80004] = {questType = 'weekly', log = true}, - [80562] = {questType = 'weekly', log = true}, - [81574] = {questType = 'weekly', log = true}, - [81632] = {questType = 'weekly', log = true}, + [76169] = {questType = 'weekly', log = true}, -- Glow in the Dark + [76394] = {questType = 'weekly', log = true}, -- Shadows of Flavor + [76600] = {questType = 'weekly', log = true}, -- Right Between the Gyro-Optics + [76733] = {questType = 'weekly', log = true}, -- Tater Trawl + [76997] = {questType = 'weekly', log = true}, -- Lost in Shadows + [78656] = {questType = 'weekly', log = true}, -- Hose It Down + [78915] = {questType = 'weekly', log = true}, -- Squashing the Threat + [78933] = {questType = 'weekly', log = true}, -- The Sweet Eclipse + [78972] = {questType = 'weekly', log = true}, -- Harvest Havoc + [79158] = {questType = 'weekly', log = true}, -- Seeds of Salvation + [79173] = {questType = 'weekly', log = true}, -- Supply the Effort + [79216] = {questType = 'weekly', log = true}, -- Web of Manipulation + [79346] = {questType = 'weekly', log = true}, -- Chew On That + [80004] = {questType = 'weekly', log = true}, -- Crab Grab + [80562] = {questType = 'weekly', log = true}, -- Blossoming Delight + [81574] = {questType = 'weekly', log = true}, -- Sporadic Growth + [81632] = {questType = 'weekly', log = true}, -- Lizard Looters + }, + greater_keyflame_weeklies = { -- not added to default categories because shit rewards + [78590] = {questType = 'weekly', log = true}, -- Cutting Edge + [78657] = {questType = 'weekly', log = true}, -- The Midnight Sentry + [79329] = {questType = 'weekly', log = true}, -- Glowing Harvest + [79380] = {questType = 'weekly', log = true}, -- Bog Beast Banishment + [79469] = {questType = 'weekly', log = true}, -- Lurking Below + [79470] = {questType = 'weekly', log = true}, -- Waters of War + [79471] = {questType = 'weekly', log = true}, -- Bleak Sand + }, + severed_threads_pact_chosen = { + [80544] = {questType = 'weekly', log = true}, -- Eyes of the Weaver + }, + severed_threads_pact_weekly = { + [80670] = {questType = 'weekly', log = true}, -- Eyes of the Weaver + [80671] = {questType = 'weekly', log = true}, -- Blade of the General + [80672] = {questType = 'weekly', log = true}, -- Hand of the Vizier + }, + + -- Weekly Rares - NEED TO CONFIRM THEY GIVE REPUTATION + isle_of_dorne_rares = { + [82196] = {questType = 'weekly', name = 'Alunira'}, + [81923] = {questType = 'weekly', name = 'Tephratennae'}, + [81894] = {questType = 'weekly', name = 'Warphorn'}, + [81902] = {questType = 'weekly', name = 'Kronolith, Might of the Mountain'}, + [81903] = {questType = 'weekly', name = 'Shallowshell the Clacker'}, + [81893] = {questType = 'weekly', name = 'Bloodmaw'}, + [81892] = {questType = 'weekly', name = 'Springbubble'}, + [79685] = {questType = 'weekly', name = 'Sandres the Relicbearer'}, + [81920] = {questType = 'weekly', name = 'Clawbreaker K\'zithix'}, + [81895] = {questType = 'weekly', name = 'Emperor Pitfang'}, + [81907] = {questType = 'weekly', name = 'Escaped Cutthroat'}, + [81921] = {questType = 'weekly', name = 'Matriarch Charfuria'}, + [81901] = {questType = 'weekly', name = 'Tempest Lord Incarnus'}, + [81899] = {questType = 'weekly', name = 'Gar\'loc'}, + [81904] = {questType = 'weekly', name = 'Twice-Stinger the Wretched'}, + [78619] = {questType = 'weekly', name = 'Rustul Titancap'}, + [81905] = {questType = 'weekly', name = 'Flamekeeper Graz'}, + [81897] = {questType = 'weekly', name = 'Plaguehart'}, + [81922] = {questType = 'weekly', name = 'Sweetspark the Oozeful'}, + [82204] = {questType = 'weekly', name = 'Kereke'}, + [82203] = {questType = 'weekly', name = 'Zovex'}, + [82205] = {questType = 'weekly', name = 'Rotfist'}, + }, + ringing_deeps_rares = { + [81674] = {questType = 'weekly', name = 'Automaxor'}, + [81562] = {questType = 'weekly', name = 'Charmonger'}, + [80547] = {questType = 'weekly', name = 'King Splash'}, + [80505] = {questType = 'weekly', name = 'Candleflyer Captain'}, + [80560] = {questType = 'weekly', name = 'Cragmund'}, + [80536] = {questType = 'weekly', name = 'Deepflayer Broodmother'}, + [80557] = {questType = 'weekly', name = 'Aquellion'}, + [80506] = {questType = 'weekly', name = 'Zilthara'}, + [81511] = {questType = 'weekly', name = 'Coalesced Monstrosity'}, + [80507] = {questType = 'weekly', name = 'Terror of the Forge'}, + [81485] = {questType = 'weekly', name = 'Kelpmire'}, + [81563] = {questType = 'weekly', name = 'Rampaging Blight'}, + [80574] = {questType = 'weekly', name = 'Trungal'}, + [81652] = {questType = 'weekly', name = 'Spore-infused Shalewing'}, + [81648] = {questType = 'weekly', name = 'Hungerer of the Deeps'}, + [80003] = {questType = 'weekly', name = 'Disturbed Earthgorger'}, + [81566] = {questType = 'weekly', name = 'Deathbound Husk'}, + [81633] = {questType = 'weekly', name = 'Lurker of the Deeps'}, + }, + hallowfall_rares = { + [81756] = {questType = 'weekly', name = 'Lytfang the Lost'}, + [82557] = {questType = 'weekly', name = 'Moth\'ethk'}, + [81791] = {questType = 'weekly', name = 'The Perchfather'}, + [80009] = {questType = 'weekly', name = 'The Taskmaker'}, + [81761] = {questType = 'weekly', name = 'Grimslice'}, + [81849] = {questType = 'weekly', name = 'Strength of Beledar'}, + [80006] = {questType = 'weekly', name = 'Ixlorb the Spinner'}, + [82565] = {questType = 'weekly', name = 'Murkspike'}, + [82559] = {questType = 'weekly', name = 'Deathpetal'}, + [80011] = {questType = 'weekly', name = 'Deepfiend Azellix'}, + [82562] = {questType = 'weekly', name = 'Duskshadow'}, + [81881] = {questType = 'weekly', name = 'Funglour'}, + [81853] = {questType = 'weekly', name = 'Sir Alastair Purefire'}, + [81836] = {questType = 'weekly', name = 'Horror of the Shallows'}, + [79271] = {questType = 'weekly', name = 'Sloshmuck'}, + [80010] = {questType = 'weekly', name = 'Murkshade'}, + [82560] = {questType = 'weekly', name = 'Croakit'}, + [81882] = {questType = 'weekly', name = 'Pride of Beledar'}, + [82558] = {questType = 'weekly', name = 'Crazed Cabbage Smacker'}, + [82561] = {questType = 'weekly', name = 'Toadstomper'}, + [82564] = {questType = 'weekly', name = 'Finclaw Bloodtide'}, + [82566] = {questType = 'weekly', name = 'Ravageant'}, + }, + azj_kahet_rares = { + [81702] = {questType = 'weekly', name = 'Kaheti Silk Hauler'}, + [81703] = {questType = 'weekly', name = 'XT-Minecrusher 8700'}, + [81695] = {questType = 'weekly', name = 'Abyssal Devourer'}, + [81706] = {questType = 'weekly', name = 'Maddened Siegebomber'}, + [81700] = {questType = 'weekly', name = 'Vilewing'}, + [81699] = {questType = 'weekly', name = 'Webspeaker Grik\'ik'}, + [81704] = {questType = 'weekly', name = 'Cha\'tak'}, + [81707] = {questType = 'weekly', name = 'Enduring Gutterface'}, + [81705] = {questType = 'weekly', name = 'Monstrous Lasharoth'}, + [81694] = {questType = 'weekly', name = 'Rhak\'ik'}, + [78905] = {questType = 'weekly', name = 'Ahg\'zagall'}, + [82037] = {questType = 'weekly', name = 'Umbraclaw Matra'}, + [82078] = {questType = 'weekly', name = 'Kaheti Bladeguard'}, + [82077] = {questType = 'weekly', name = 'Deepcrawler Tx\'kesh'}, + [82036] = {questType = 'weekly', name = 'Harvester Qixt'}, + [82035] = {questType = 'weekly', name = 'The Oozekhan'}, + [82034] = {questType = 'weekly', name = 'Jix\'ak the Crazed'}, + [81634] = {questType = 'weekly', name = 'The Groundskeeper'}, + [81701] = {questType = 'weekly', name = 'Xishorr'}, + }, + + -- Professions + knowledge_tww_treasures = { + [83253] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225234}, -- Alchemical Sediment + [83255] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225235}, -- Deepstone Crucible + [83256] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225233}, -- Dense Bladestone + [83257] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225232}, -- Coreway Billet + [83258] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225231}, -- Powdered Fulgurance + [83259] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225230}, -- Crystalline Repository + [83260] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225228}, -- Rust-Locked Mechanism + [83261] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225229}, -- Earthen Induction Coil + [83264] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225226}, -- Striated Inkstone + [83262] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225227}, -- Wax-sealed Records + [83265] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225224}, -- Diaphanous Gem Shards + [83266] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225225}, -- Deepstone Fragment + [83268] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225222}, -- Stone-Leather Swatch + [83267] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225223}, -- Sturdy Nerubian Carapace + [83270] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225220}, -- Chitin Needle + [83269] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225221}, -- Spool of Webweave + }, + knowledge_tww_treatise = { + [83725] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy'}, + [83726] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing'}, + [83727] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, + [83728] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering'}, + [83730] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription'}, + [83731] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting'}, + [83732] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking'}, + [83735] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring'}, + [83729] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, + [83733] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, + [83734] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, + }, + knowledge_tww_gather = { + [81416] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 1 + [81417] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 2 + [81418] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 3 + [81419] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 4 + [81420] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 5 + [81421] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Rose + + [83054] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 1 + [83055] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 2 + [83056] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 3 + [83057] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 4 + [83058] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 5 + [83059] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Erosion Polished Slate + + [81459] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 1 + [81460] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 2 + [81461] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 3 + [81462] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 4 + [81463] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 5 + [81464] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Abyssal Fur + + [84290] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 1 + [84291] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 2 + [84292] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 3 + [84293] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 4 + [84294] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 5 + [84295] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Gleaming Telluric Crystal + }, + knowledge_tww_weeklies_quest = { + [84133] = {questType = 'weekly', profession = 'Alchemy', description = 'Alchemy Services Requested'}, + [84127] = {questType = 'weekly', profession = 'Blacksmithing', description = 'Blacksmithing Services Requested'}, + + [84085] = {questType = 'weekly', profession = 'Enchanting', description = 'The Power of Potential'}, + [84086] = {questType = 'weekly', profession = 'Enchanting', description = 'A Rare Necessity'}, + [84134] = {questType = 'weekly', profession = 'Enchanting', description = 'Enchanting Services Requested'}, + + [84128] = {questType = 'weekly', profession = 'Engineering', description = 'Engineering Services Requested'}, + [84129] = {questType = 'weekly', profession = 'Inscription', description = 'Inscription Services Requested'}, + [84130] = {questType = 'weekly', profession = 'Jewelcrafting', description = 'Jewelcrafting Services Requested'}, + [84131] = {questType = 'weekly', profession = 'Leatherworking', description = 'Leatherworking Services Requested'}, + [84132] = {questType = 'weekly', profession = 'Tailoring', description = 'Tailoring Services Requested'}, + + [82916] = {questType = 'weekly', profession = 'Herbalism', description = 'When Fungi Bloom'}, + [82958] = {questType = 'weekly', profession = 'Herbalism', description = 'Little Blessings'}, + [82962] = {questType = 'weekly', profession = 'Herbalism', description = 'A handful of Luredrops'}, + [82965] = {questType = 'weekly', profession = 'Herbalism', description = 'Light and Shadow'}, + [82970] = {questType = 'weekly', profession = 'Herbalism', description = 'A Bloom and A Blossom'}, + + [83102] = {questType = 'weekly', profession = 'Mining', description = 'Bismuth is Business'}, + [83103] = {questType = 'weekly', profession = 'Mining', description = 'Acquiring Aqirite'}, + [83104] = {questType = 'weekly', profession = 'Mining', description = 'Identifying Ironclaw'}, + [83106] = {questType = 'weekly', profession = 'Mining', description = 'Null Pebble Excavation'}, + + [82992] = {questType = 'weekly', profession = 'Skinning', description = 'Stormcharged Goods'}, + [82993] = {questType = 'weekly', profession = 'Skinning', description = 'From Shadows'}, + [83097] = {questType = 'weekly', profession = 'Skinning', description = 'Cinder and Storm'}, + [83098] = {questType = 'weekly', profession = 'Skinning', description = 'Snap and Crackle'}, }, } diff --git a/modules/currencies.lua b/modules/currencies.lua index fe8e951..027f35e 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -297,7 +297,7 @@ local labelRows = { key = 3089, passRow = true, group = 'currency', - warband = 'unique', + warband = true, version = WOW_PROJECT_MAINLINE }, diff --git a/modules/quests.lua b/modules/quests.lua index 1fc5003..a99d58c 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -514,7 +514,7 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - knowledge_mobs = { + knowledge_df_mobs = { label = 'Gather Knowledge', type = 'quest', questType = 'weekly', @@ -538,7 +538,7 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - knowledge_scout_packs = { + knowledge_df_scout_packs = { label = 'Treasure Knowledge', type = 'quest', questType = 'weekly', @@ -556,7 +556,7 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - knowledge_treatise = { + knowledge_df_treatise = { label = 'Treatise Knowledge', type = 'quest', questType = 'weekly', @@ -570,7 +570,7 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - knowledge_weeklies_craft = { + knowledge_df_weeklies_craft = { label = 'Crafting Quests', type = 'quest', questType = 'weekly', @@ -588,7 +588,7 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - knowledge_weeklies_loot = { + knowledge_df_weeklies_loot = { label = 'Loot Quests', type = 'quest', questType = 'weekly', @@ -601,7 +601,7 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - knowledge_weeklies_order ={ + knowledge_df_weeklies_order ={ label = 'Crafting Order Quests', type = 'quest', questType = 'weekly', @@ -917,7 +917,7 @@ local labelRows = { label = 'The Big Dig', type = 'quest', questType = 'weekly', - warbandReward = true, + warband = true, visibility = 'visible', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE @@ -928,7 +928,7 @@ local labelRows = { label = 'Prepatch Dailies', type = 'quest', questType = 'daily', - warbandReward = 'unique', + warband = 'unique', visibility = 'visible', tooltip = true, customTooltip = function(...) @@ -1177,7 +1177,7 @@ local function UpdateAllQuests(charInfo) if not self.isBC then -- check for weekly Warband Rewards - if info.warbandReward then + if info.warband then local currentWarbandQuestInfo = setQuestInfo(warbandQuestInfo, info, key) -- API CURRENTLY NOT FUNCTIONING AS INTENDED From 1c8fba7cb73728d8706cd8cc619d17ffdc5e739c Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Tue, 20 Aug 2024 17:50:32 +0200 Subject: [PATCH 021/138] added all new db items to their respective module and updated categories --- PermoksAccountManager.lua | 43 +++-- db/db.lua | 327 ++++++++++++++++++---------------- modules/currencies.lua | 192 +++++++++++++------- modules/factions.lua | 85 ++++++++- modules/instances.lua | 32 +--- modules/items.lua | 91 ++++++---- modules/quests.lua | 364 ++++++++++++++++++++++++++++++++------ 7 files changed, 775 insertions(+), 359 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 72b61f0..0df9936 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -983,7 +983,6 @@ function PermoksAccountManager:CheckForReset() for account, accountData in pairs(db.accounts) do self:ResetAccount(db, accountData, resetDaily, resetWeekly, resetBiweekly, resetThreeDayRaids) - self:ResetWarband(db, accountData, resetDaily, resetWeekly, resetBiweekly) end db.weeklyReset = resetWeekly and currentTime + self:GetNextWeeklyResetTime() or db.weeklyReset @@ -995,37 +994,36 @@ function PermoksAccountManager:CheckForReset() end function PermoksAccountManager:ResetAccount(db, accountData, daily, weekly, biweekly, resetThreeDayRaids) + -- Loop through account data and reset each altData for _, altData in pairs(accountData.data) do - if weekly then - self:ResetWeeklyActivities(altData) - end - - if daily then - self:ResetDailyActivities(db, altData) - end - - if biweekly then - self:ResetBiweeklyActivities(altData) - end - - if resetThreeDayRaids then - self:ResetThreeDayRaids(altData) - end + self:ResetActivities(db, altData, daily, weekly, biweekly, resetThreeDayRaids) end + + -- Reset warband data + self:ResetActivities(db, accountData.warbandData, daily, weekly, biweekly, false) end -function PermoksAccountManager:ResetWarband(db, accountData, daily, weekly, biweekly) - local warbandData = accountData.warbandData +function PermoksAccountManager:ResetActivities(db, data, daily, weekly, biweekly, resetThreeDayRaids) if weekly then - self:ResetWeeklyActivities(warbandData) + self:ResetWeeklyActivities(data) + + -- DEBUG LINE DELETE LATER + print('PAM: Weekly activities gracefully reset.') end if daily then - self:ResetDailyActivities(db, warbandData) + self:ResetDailyActivities(db, data) + + -- DEBUG LINE DELETE LATER + print('PAM: Daily activities gracefully reset.') end if biweekly then - self:ResetBiweeklyActivities(warbandData) + self:ResetBiweeklyActivities(data) + end + + if resetThreeDayRaids then + self:ResetThreeDayRaids(data) end end @@ -1070,7 +1068,8 @@ function PermoksAccountManager:ResetWeeklyActivities(altData) -- Crests Earned if altData.currencyInfo then - for _, crestID in ipairs({2409, 2410, 2411, 2412}) do + -- REFACTOR: move this to the currency module and reduce redundancy + for _, crestID in ipairs({2914, 2915, 2916, 2917}) do if altData.currencyInfo[crestID] then altData.currencyInfo[crestID].quantity = 0 end diff --git a/db/db.lua b/db/db.lua index 3d7df3f..8f71e9e 100644 --- a/db/db.lua +++ b/db/db.lua @@ -13,14 +13,22 @@ local default_categories = { 'keystone', 'mplus_score', 'catalyst_charges', - 'flightstones', + 'valorstones', 'champion_crest', 'veteran_crest', 'hero_crest', 'myth_crest', - 'spark_awakening', + 'spark_omens', - -- DF Stuff -> Remove from Default Categories + -- Probably interesting during the first weeks, might wanna (re-)move later + 'separator2', + 'restored_coffer_key', + 'resonance_crystals', + 'kej', + 'radiant_remnant', + 'radiant_echo', + + -- DF Stuff -> Remove from Default Categories after global Launch 'separator3', 'residual_memories', 'radiant_echoes_prepatch_dailies', @@ -34,14 +42,22 @@ local default_categories = { keystone = 5, mplus_score = 6, catalyst_charges = 7, - flightstones = 8, + valorstones = 8, champion_crest = 9, veteran_crest = 10, hero_crest = 11, myth_crest = 12, - spark_awakening = 13, + spark_omens = 13, + + -- Probably interesting during the first weeks, might wanna (re-)move later + separator2 = 20, + restored_coffer_key = 21, + resonance_crystals = 22, + kej = 23, + radiant_remnant = 24, + radiant_echo = 25, - -- DF Stuff -> Remove from Default Categories + -- DF Stuff -> Remove from Default Categories after global Launch separator3 = 30, residual_memories = 31, radiant_echoes_prepatch_dailies = 32, @@ -57,36 +73,55 @@ local default_categories = { }, childOrder = { }, - enabled = true + enabled = false }, currentweekly = { order = 2, name = '(Bi)Weekly', childs = { - 'superbloom', - 'dream_wardens_weekly', - 'ed_wb_wq', - 'dream_shipments', + 'dungeon_weekly', + 'weekend_event', + 'delve_weekly', + 'archaic_cypher_key', + 'separator1', - 'aiding_the_accord', - 'fyrak_assault', - 'time_rift', - 'dreamsurge_weekly', - 'sparks_of_life', - 'big_dig', + 'the_theater_troupe', + 'rollin_down_in_the_deeps', + 'gearing_up_for_trouble', + 'awakening_the_machine', + 'spreading_the_light', + 'lesser_keyflame_weeklies', + 'greater_keyflame_weeklies', + 'severed_threads_pact_weekly', + + 'separator2', + 'isle_of_dorne_rares', + 'ringing_deeps_rares', + 'hallowfall_rares', + 'azj_kahet_rares', }, childOrder = { - superbloom = 1, - dream_wardens_weekly = 2, - ed_wb_wq = 3, - dream_shipments = 4, + dungeon_weekly = 1, + weekend_event = 2, + delve_weekly = 3, + archaic_cypher_key = 4, + separator1 = 10, - aiding_the_accord = 11, - fyrak_assault = 12, - time_rift = 13, - dreamsurge_weekly = 14, - sparks_of_life = 15, - big_dig = 16, + the_theater_troupe = 11, + rollin_down_in_the_deeps = 12, + gearing_up_for_trouble = 13, + awakening_the_machine = 14, + spreading_the_light = 15, + lesser_keyflame_weeklies = 16, + greater_keyflame_weeklies = 17, + severed_threads_pact_weekly = 18, + + + separator2 = 20, + isle_of_dorne_rares = 21, + ringing_deeps_rares = 22, + hallowfall_rares = 23, + azj_kahet_rares = 24, }, enabled = true }, @@ -109,34 +144,21 @@ local default_categories = { order = 4, name = L['Professions'], childs = { - - -- DF Stuff -> Remove from Default Categories - 'separator2', - 'profession1_concentration_df', - 'profession2_concentration_df', - 'separator3', - 'knowledge_df_mobs', - 'knowledge_df_treasures', - 'knowledge_df_treatise', - 'knowledge_df_weeklies_loot', - 'knowledge_df_weeklies_craft', - 'knowledge_df_weeklies_order', - 'show_your_mettle', + 'knowledge_tww_treasures', + 'knowledge_tww_treatise', + 'knowledge_tww_gather', + 'knowledge_tww_weeklies_quest', + 'separator1', + 'artisans_acuity', }, childOrder = { + knowledge_tww_treasures = 1, + knowledge_tww_treatise = 2, + knowledge_tww_gather = 3, + knowledge_tww_weeklies_quest = 4, - -- DF Stuff -> Remove from Default Categories - separator2 = 20, - profession1_concentration_df = 21, - profession2_concentration_df = 22, - separator3 = 30, - knowledge_df_mobs = 31, - knowledge_df_treasures = 32, - knowledge_df_treatise = 33, - knowledge_df_weeklies_loot = 34, - knowledge_df_weeklies_craft = 35, - knowledge_df_weeklies_order = 36, - show_your_mettle = 37, + separator1 = 10, + artisans_acuity = 11, }, enabled = true }, @@ -144,10 +166,24 @@ local default_categories = { order = 5, name = L['Reputation'], childs = { - 'winterpelt_furbolg', + 'council_of_dornogal', + 'hallowfall_arathi', + 'the_assembly_of_the_deeps', + 'the_severed_threads', + 'the_general', + 'the_vizier', + 'the_weaver', + 'brann_bronzebeard', }, childOrder = { - winterpelt_furbolg = 11, + council_of_dornogal = 1, + hallowfall_arathi = 2, + the_assembly_of_the_deeps= 2, + the_severed_threads = 4, + the_general = 5, + the_vizier = 6, + the_weaver = 7, + brann_bronzebeard = 8, }, enabled = true }, @@ -155,8 +191,10 @@ local default_categories = { order = 6, name = L['Raid'], childs = { + 'nerub_ar_palace', }, childOrder = { + nerub_ar_palace = 1, }, enabled = true }, @@ -168,14 +206,22 @@ local default_categories = { 'honor', 'arenaRating2v2', 'arenaRating3v3', - 'rbgRating' + 'rbgRating', + + 'separator3', + 'pvp_sparks', + 'pvp_weekly', }, childOrder = { conquest = 1, honor = 2, arenaRating2v2 = 3, arenaRating3v3 = 4, - rbgRating = 5 + rbgRating = 5, + + separator3 = 30, + pvp_sparks = 31, + pvp_weekly = 32, }, enabled = true }, @@ -183,10 +229,12 @@ local default_categories = { order = 8, name = "Old Weekly", childs = { - 'big_dig' + 'big_dig', + 'show_your_mettle', }, childOrder = { big_dig = 51, + show_your_mettle = 52, }, enabled = true, }, @@ -197,7 +245,7 @@ local default_categories = { }, childOrder = { }, - enabled = true, + enabled = false, }, unlocks = { order = 10, @@ -383,7 +431,7 @@ PermoksAccountManager.keys = { [463] = 'FALL', -- Dawn of the Infinite: Galakrond's Fall [464] = 'RISE', -- Dawn of the Infinite: Murozond's Rise - -- PLACEHOLDER ABBREVIATIONS + -- PLACEHOLDER: abbreviations [499] = 'PSF', -- Priory of the Sacred Flame [500] = 'TR', -- The Rookery [501] = 'TSV', -- The Stonevault @@ -413,9 +461,6 @@ PermoksAccountManager.activityIDToKeys = { PermoksAccountManager.raids = { [2657] = {name = GetRealZoneText(2657), englishID = 'nerub_ar_palace', instanceID = 1273, startIndex = 1, endIndex = 8}, - --[2522] = {name = GetRealZoneText(2522), englishID = 'vault_of_the_incarnates', instanceID = 1200, startIndex = 1, endIndex = 8}, - --[2569] = {name = GetRealZoneText(2569), englishID = 'aberrus_the_shadowed_crucible', instanceID = 1208, startIndex = 9, endIndex = 17}, - --[2549] = {name = GetRealZoneText(2549), englishID = 'amirdrassil_the_dreams_hope', instanceID = 1207, startIndex = 18, endIndex = 26}, } PermoksAccountManager.dungeons = { @@ -466,18 +511,17 @@ PermoksAccountManager.item = { [208047] = {key = 'dreamseeds'}, -- Gigantic Dreamseed [211515] = {key = 'spark_awakening'}, -- Splintered Spark of Awakening [211516] = {key = 'spark_awakening'}, -- Spark of Awakening + [190456] = {key = 'artisans_mettle'}, -- Artisan's Mettle --- TWW items [211297] = {key = 'spark_omens'}, -- Fractured Spark of Omens [211296] = {key = 'spark_omens'}, -- Spark of Omens - [190456] = {key = 'artisans_mettle'}, -- Artisan's Mettle [210814] = {key = 'artisans_acuity'}, -- Artisan's Acuity [206350] = {key = 'radiant_remnant'}, -- Radiant Remnant - [212493] = {key = 'odd_glob_wax'}, -- Odd Glob of Wax + [220520] = {key = 'radiant_echo'}, -- Radiant Echo + [212493] = {key = 'firelight_ruby'}, -- Odd Glob of Wax [224642] = {key = 'firelight_ruby'}, -- Firelight Ruby - [220693] = {key = 'coffer_key_shard'}, -- Coffer Key Shard - - + [220693] = {key = 'coffer_key_shard'}, -- Coffer Key Shard } PermoksAccountManager.factions = { @@ -502,9 +546,16 @@ PermoksAccountManager.factions = { [2553] = {name = 'Soridormi', paragon = true, type = 'friend'}, [2564] = {name = 'Loamm Niffen', paragon = true, type = 'renown'}, [2568] = {name = 'Glimmerogg Racer'}, - [2574] = {name = 'Dream Wardens', paragonn = true, type = 'renown'}, + [2574] = {name = 'Dream Wardens', paragon = true, type = 'renown'}, [2593] = {name = 'Keg Leg\'s Crew', type = 'renown'}, - [2590] = {name = 'Council of Dornogal', paragonn = true, type = 'renown', accWide = true}, + [2590] = {name = 'Council of Dornogal', paragon = true, type = 'renown',}, + [2570] = {name = 'Hallowfall Arathi', paragon = true, type = 'renown'}, + [2594] = {name = 'The Assembly of the Deeps', paragon = true, type = 'renown'}, + [2600] = {name = 'The Severed Threads', paragon = true, type = 'renown'}, + [2605] = {name = 'The General', type = 'friend'}, + [2607] = {name = 'The Vizier', type = 'friend'}, + [2601] = {name = 'The Weaver', type = 'friend'}, + [2640] = {name = 'Brann Bronzebeard', type = 'friend'}, } PermoksAccountManager.currency = { @@ -551,6 +602,7 @@ PermoksAccountManager.currency = { [2815] = 0, -- Resonance Crystals [3056] = 0, -- Kej [3028] = 0, -- Restored Coffer Key + [2803] = 0, -- Undercoin } PermoksAccountManager.currencyCustomOptions = { @@ -629,6 +681,46 @@ PermoksAccountManager.childProfessions = { } PermoksAccountManager.quests = { + + -- General Weeklies (previous expansion quests get deprecated so we replace these IDs instead of adding new ones) + weekend_event = { + [83345] = {questType = 'weekly', log = true}, -- Battleground Event: A Call to Battle + [83347] = {questType = 'weekly', log = true}, -- Mythic Dungeon Event: Emissary of War + [83357] = {questType = 'weekly', log = true}, -- Pet Battle Event: The Very Best + [83358] = {questType = 'weekly', log = true}, -- Arena Event: The Arena Calls + [83366] = {questType = 'weekly', log = true}, -- World Quests: The World Awaits + [83359] = {questType = 'weekly', log = true}, -- A Shattered Path Through Time + [83362] = {questType = 'weekly', log = true}, -- A Shrouded Path Through Time + [83365] = {questType = 'weekly', log = true}, -- A Frozen Path Through Time + [83364] = {questType = 'weekly', log = true}, -- A Savage Path Through Time + + }, + pvp_weekly = { + [80184] = {questType = 'weekly', log = true}, -- Preserving in Battle + [80185] = {questType = 'weekly', log = true}, -- Preserving Solo + [80186] = {questType = 'weekly', log = true}, -- Preserving in War + [80187] = {questType = 'weekly', log = true}, -- Preserving in Skirmishes + [80188] = {questType = 'weekly', log = true}, -- Preserving in Arenas + [80189] = {questType = 'weekly', log = true}, -- Preserving Teamwork + }, + pvp_sparks = { + [81793] = {questType = 'weekly', log = true}, -- Sparks of War: Isle of Dorn + [81794] = {questType = 'weekly', log = true}, -- Sparks of War: The Ringing Deeps + [81795] = {questType = 'weekly', log = true}, -- Sparks of War: Hallowfall + [81796] = {questType = 'weekly', log = true}, -- Sparks of War: Azj-Kahet + }, + dungeon_weekly = { + [83432] = {questType = 'weekly', log = true}, -- The Rookery + [83436] = {questType = 'weekly', log = true}, -- Cinderbrew Meadery + [83443] = {questType = 'weekly', log = true}, -- Darkflame Cleft + [83457] = {questType = 'weekly', log = true}, -- The Stonevault + [83458] = {questType = 'weekly', log = true}, -- Priory of the Sacred Flame + [83459] = {questType = 'weekly', log = true}, -- The Dawnbreaker + [83465] = {questType = 'weekly', log = true}, -- Ara-Kara, City of Echoes + [83469] = {questType = 'weekly', log = true}, -- City of Threads + }, + + -- 9.0 Shadowlands maw_dailies = { [60732] = {questType = 'daily', log = true}, [61334] = {questType = 'daily', log = true}, @@ -864,53 +956,12 @@ PermoksAccountManager.quests = { [61984] = {covenant = 3, questType = 'weekly', log = true}, -- night fae 1k anima [61983] = {covenant = 4, questType = 'weekly', log = true} -- necro 1k anima }, - dungeon_quests = { - [60242] = {questType = 'weekly', log = true}, -- Trading Favors: Necrotic Wake - [60243] = {questType = 'weekly', log = true}, -- Trading Favors: Sanguine Depths - [60244] = {questType = 'weekly', log = true}, -- Trading Favors: Halls of Atonement - [60245] = {questType = 'weekly', log = true}, -- Trading Favors: The Other Side - [60246] = {questType = 'weekly', log = true}, -- Trading Favors: Tirna Scithe - [60247] = {questType = 'weekly', log = true}, -- Trading Favors: Theater of Pain - [60248] = {questType = 'weekly', log = true}, -- Trading Favors: Plaguefall - [60249] = {questType = 'weekly', log = true}, -- Trading Favors: Spires of Ascension - [60250] = {questType = 'weekly', log = true}, -- A Valuable Find: Theater of Pain - [60251] = {questType = 'weekly', log = true}, -- A Valuable Find: Plaguefall - [60252] = {questType = 'weekly', log = true}, -- A Valuable Find: Spires of Ascension - [60253] = {questType = 'weekly', log = true}, -- A Valuable Find: Necrotic Wake - [60254] = {questType = 'weekly', log = true}, -- A Valuable Find: Tirna Scithe - [60255] = {questType = 'weekly', log = true}, -- A Valuable Find: The Other Side - [60256] = {questType = 'weekly', log = true}, -- A Valuable Find: Halls of Atonement - [60257] = {questType = 'weekly', log = true} -- A Valuable Find: Sanguine Depths - }, battle_plans = { [64521] = {questType = 'weekly', log = true} -- Helsworn Battle Plans }, korthia_supplies = { [64522] = {questType = 'weekly', log = true} -- Stolen Korthia Supplies }, - pvp_quests = { - -- PVP Weekly - [62284] = {questType = 'weekly', log = true}, -- Random BGs - [62285] = {questType = 'weekly', log = true}, -- Epic BGs - [62286] = {questType = 'weekly', log = true}, - [62287] = {questType = 'weekly', log = true}, - [62288] = {questType = 'weekly', log = true}, - [62289] = {questType = 'weekly', log = true} - }, - -- Weekend Event - weekend_event = { - [72728] = {questType = 'weekly', log = true}, -- World Quests - [72727] = {questType = 'weekly', log = true}, -- BC Timewalking - [72726] = {questType = 'weekly', log = true}, -- WotLK Timewalking - [72810] = {questType = 'weekly', log = true}, -- Cata Timewalking - [72725] = {questType = 'weekly', log = true}, -- MOP Timewalking - [72724] = {questType = 'weekly', log = true}, -- Draenor Timewalking - [72719] = {questType = 'weekly', log = true}, -- Legion Timewalking - [72723] = {questType = 'weekly', log = true}, -- Battleground Event - [72722] = {questType = 'weekly', log = true}, -- Mythuc Dungeon Event - [72721] = {questType = 'weekly', log = true}, -- Pet Battle Event - [72720] = {questType = 'weekly', log = true} -- Arena Event - }, korthia_weekly = { [63949] = {questType = 'weekly', log = true} -- Shaping Fate }, @@ -1355,15 +1406,6 @@ PermoksAccountManager.quests = { [72825] = {questType = 'weekly', name = '|T4539687:0|t[Cerulean Spinefish]'}, [72824] = {questType = 'weekly', name = '|T4554371:0|t[Temporal Dragonhead]'}, }, - sparks_of_life = { - [72646] = {questType = 'weekly', log = true}, - [72647] = {questType = 'weekly', log = true}, - [72648] = {questType = 'weekly', log = true}, - [72649] = {questType = 'weekly', log = true}, - [74871] = {questType = 'weekly', log = true}, - [75305] = {questType = 'weekly', log = true}, - [78097] = {questType = 'weekly', log = true}, - }, forbidden_reach_weeklies = { [72952] = {questType = 'weekly', log = true}, [73140] = {questType = 'weekly', log = true}, @@ -1503,29 +1545,15 @@ PermoksAccountManager.quests = { [84083] = {questType = 'weekly'} }, - -- 11.0 - -- Dornogal Weeklies - weekly_dungeon_tww = { - [83432] = {questType = 'weekly', log = true}, -- The Rookery - [83436] = {questType = 'weekly', log = true}, -- Cinderbrew Meadery - [83443] = {questType = 'weekly', log = true}, -- Darkflame Cleft - [83457] = {questType = 'weekly', log = true}, -- The Stonevault - [83458] = {questType = 'weekly', log = true}, -- Priory of the Sacred Flame - [83459] = {questType = 'weekly', log = true}, -- The Dawnbreaker - [83465] = {questType = 'weekly', log = true}, -- Ara-Kara, City of Echoes - [83469] = {questType = 'weekly', log = true}, -- City of Threads - }, - weekend_event_tww = { - [83345] = {questType = 'weekly', log = true}, -- A Call to Battle - [83347] = {questType = 'weekly', log = true}, -- Emissary of War - [83357] = {questType = 'weekly', log = true}, -- The Very Best - [83358] = {questType = 'weekly', log = true}, -- The Arena Calls - [83359] = {questType = 'weekly', log = true}, -- A Shattered Path Through Time - [83362] = {questType = 'weekly', log = true}, -- A Shrouded Path Through Time - [83365] = {questType = 'weekly', log = true}, -- A Frozen Path Through Time - [83366] = {questType = 'weekly', log = true}, -- The World Awaits + -- 11.0 The War Within + -- Weekly World Activities + tww_world_boss = {-- PLACEHOLDER: wrong quest IDs + [999990] = {questType = 'weekly'}, -- Kordac, the Dormant Protector + [999991] = {questType = 'weekly'}, -- Aggregation of Horrors + [999992] = {questType = 'weekly'}, -- Shurrai, Atrocity of the Undersea + [999993] = {questType = 'weekly'}, -- Orta, the Broken Mountain }, - delve_weekly_tww = { --UNCLEAR HOW THIS WORKS NEED MORE INFO + delve_weekly = { -- PLACEHOLDER: Meta Quest, need more info how this timegate works [82746] = {questType = 'weekly', log = true}, -- Delves: Breaking Tough to Loot Stuff [82712] = {questType = 'weekly', log = true}, -- Delves: Trouble Up and Down Khaz Algar [82711] = {questType = 'weekly', log = true}, -- Delves: Lost and Found @@ -1533,22 +1561,9 @@ PermoksAccountManager.quests = { [82706] = {questType = 'weekly', log = true}, -- Delves: Khaz Algar Research [82707] = {questType = 'weekly', log = true}, -- Delves: Earthen Defense }, - sparks_of_war_tww = { - [81793] = {questType = 'weekly', log = true}, -- Sparks of War: Isle of Dorn - [81794] = {questType = 'weekly', log = true}, -- Sparks of War: The Ringing Deeps - [81795] = {questType = 'weekly', log = true}, -- Sparks of War: Hallowfall - [81796] = {questType = 'weekly', log = true}, -- Sparks of War: Azj-Kahet - }, - pvp_weekly_tww = { - [80184] = {questType = 'weekly', log = true}, -- Preserving in Battle - [80185] = {questType = 'weekly', log = true}, -- Preserving Solo - [80186] = {questType = 'weekly', log = true}, -- Preserving in War - [80187] = {questType = 'weekly', log = true}, -- Preserving in Skirmishes - [80188] = {questType = 'weekly', log = true}, -- Preserving in Arenas - [80189] = {questType = 'weekly', log = true}, -- Preserving Teamwork + archaic_cypher_key = { + [84370] = {questType = 'weekly', log = true}, -- The Key to Success }, - - -- Weekly World Activities the_theater_troupe = { [83240] = {questType = 'weekly', log = true}, -- The Theater Troupe }, diff --git a/modules/currencies.lua b/modules/currencies.lua index 027f35e..171a8c0 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -4,30 +4,29 @@ local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local module = 'currencies' local labelRows = { - soul_cinders = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1906].name or 'Soul Cinders' - end, - type = 'currency', - key = 1906, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - soul_ash = { + + -- general currencies + honor = { label = function() - return PermoksAccountManager.db.global.currencyInfo[1828].name or 'Soul Ash' + return PermoksAccountManager.db.global.currencyInfo[1792].name or 'Honor' end, type = 'currency', - key = 1828, + warband = true, + key = 1792, + abbCurrent = true, + abbMax = true, + tooltip = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, - stygia = { + valor = { label = function() - return PermoksAccountManager.db.global.currencyInfo[1767].name or 'Stygia' + return PermoksAccountManager.db.global.currencyInfo[1191].name or 'Valor' end, type = 'currency', - key = 1767, + key = 1191, + hideMax = true, + tooltip = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, @@ -42,51 +41,50 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, - honor = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1792].name or 'Honor' - end, + timewarped_badge = { + label = 'Timewarped Badge', type = 'currency', - key = 1792, - abbCurrent = true, - abbMax = true, - tooltip = true, + warband = true, + key = 1166, group = 'currency', version = WOW_PROJECT_MAINLINE }, - honorBCC = { + dmf_prize_ticket = { + label = 'Darkmoon Prize Ticket', + type = 'currency', + warband = true, + key = 515, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, + + -- Shadowlands + soul_cinders = { label = function() - return PermoksAccountManager.db.global.currencyInfo[1901] and PermoksAccountManager.db.global.currencyInfo[1901].name or 'Honor' + return PermoksAccountManager.db.global.currencyInfo[1906].name or 'Soul Cinders' end, type = 'currency', - key = 1901, - abbMax = true, - customIcon = { - height = 32, - width = 32, - xOffset = -5, - yOffset = -5 - }, + warband = true, + key = 1906, group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + version = WOW_PROJECT_MAINLINE }, - arenaPoints = { + soul_ash = { label = function() - return PermoksAccountManager.db.global.currencyInfo[1900] and PermoksAccountManager.db.global.currencyInfo[1900].name or 'Arena Points' + return PermoksAccountManager.db.global.currencyInfo[1828].name or 'Soul Ash' end, type = 'currency', - key = 1900, + warband = true, + key = 1828, group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + version = WOW_PROJECT_MAINLINE }, - valor = { + stygia = { label = function() - return PermoksAccountManager.db.global.currencyInfo[1191].name or 'Valor' + return PermoksAccountManager.db.global.currencyInfo[1767].name or 'Stygia' end, type = 'currency', - key = 1191, - hideMax = true, - tooltip = true, + key = 1767, group = 'currency', version = WOW_PROJECT_MAINLINE }, @@ -119,6 +117,7 @@ local labelRows = { return PermoksAccountManager.db.global.currencyInfo[1931].name or 'Cataloged Research' end, type = 'currency', + warband = true, key = 1931, abbMax = true, group = 'currency', @@ -160,6 +159,7 @@ local labelRows = { return PermoksAccountManager.db.global.currencyInfo[2009] and PermoksAccountManager.db.global.currencyInfo[2009].name or 'Cosmic Flux' end, type = 'currency', + warband = true, key = 2009, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -167,6 +167,7 @@ local labelRows = { cyphers = { label = L['Cyphers'], type = 'currency', + warband = true, key = 1979, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -180,10 +181,11 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, - --10.0 + -- 10.0 dragon_isles_supplies = { label = 'Dragon Isles Supplies', type = 'currency', + warband = true, key = 2003, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -191,6 +193,7 @@ local labelRows = { elemental_overflow = { label = 'Elemental Overflow', type = 'currency', + warband = true, key = 2118, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -210,7 +213,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, - --10.1 + -- 10.1 flightstones = { label = 'Flightstones', type = 'currency', @@ -224,6 +227,7 @@ local labelRows = { paracausal_flakes = { label = 'Paracausal Flakes', type = 'currency', + warband = true, key = 2594, abbMax = true, group = 'currency', @@ -256,56 +260,116 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, - -- 10.2.7 + -- 11.0 Prepatch + residual_memories = { + label = 'Residual Memories', + type = 'currency', + key = 3089, + passRow = true, + group = 'currency', + warband = true, + version = WOW_PROJECT_MAINLINE + }, + + -- 11.0 champion_crest = { - label = 'Whelpling Crests', + label = 'Weathered Harbinger Crest', type = 'crestcurrency', - key = 2806, + key = 2914, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, veteran_crest = { - label = 'Drake Crests', + label = 'Carved Harbinger Crest', type = 'crestcurrency', - key = 2807, + key = 2915, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, hero_crest = { - label = 'Wyrm Crests', + label = 'Runed Harbinger Crest', type = 'crestcurrency', - key = 2809, + key = 2916, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, myth_crest = { - label = 'Aspect Crests', + label = 'Gilded Harbinger Crest', type = 'crestcurrency', - key = 2812, + key = 2917, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, - - -- 11.0 Prepatch - residual_memories = { - label = 'Residual Memories', + valorstones = { + label = 'Valorstones', + type = 'currency', + key = 3008, + abbMax = true, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, + resonance_crystals = { + label = 'Resonance Crystals', type = 'currency', - key = 3089, - passRow = true, + warband = true, + key = 2815, group = 'currency', + version = WOW_PROJECT_MAINLINE + }, + kej = { + label = 'Kej', + type = 'currency', warband = true, + key = 3056, + group = 'currency', version = WOW_PROJECT_MAINLINE }, - - -- 11.0 - - + restored_coffer_key = { + label = 'Restored Coffer Key', + type = 'currency', + key = 3028, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, + undercoin = { + label = 'Undercoin', + type = 'currency', + warband = true, + key = 2803, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, -- wotlk-classic + honorBCC = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[1901] and PermoksAccountManager.db.global.currencyInfo[1901].name or 'Honor' + end, + type = 'currency', + key = 1901, + abbMax = true, + customIcon = { + height = 32, + width = 32, + xOffset = -5, + yOffset = -5 + }, + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC + }, + arenaPoints = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[1900] and PermoksAccountManager.db.global.currencyInfo[1900].name or 'Arena Points' + end, + type = 'currency', + key = 1900, + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC + }, emblem_of_heroism = { label = 'Heroism Emblems', type = 'currency', diff --git a/modules/factions.lua b/modules/factions.lua index fe9e7c7..e88b1fc 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -99,6 +99,7 @@ local labelRows = { return PermoksAccountManager.factions[2507].localName or 'Expedition' end, type = 'faction', + warband = 'unique', key = 2507, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -108,6 +109,7 @@ local labelRows = { return PermoksAccountManager.factions[2511].localName or 'Iskaara Tuskar' end, type = 'faction', + warband = 'unique', key = 2511, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -117,6 +119,7 @@ local labelRows = { return PermoksAccountManager.factions[2503].localName or 'Maruuk Centaur' end, type = 'faction', + warband = 'unique', key = 2503, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -126,6 +129,7 @@ local labelRows = { return PermoksAccountManager.factions[2510].localName or 'Valdrakken Akkord' end, type = 'faction', + warband = 'unique', key = 2510, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -144,6 +148,7 @@ local labelRows = { return PermoksAccountManager.factions[2544].localName or "Artisan's Consortium" end, type = 'faction', + warband = 'unique', key = 2544, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -153,6 +158,7 @@ local labelRows = { return PermoksAccountManager.factions[2550].localName or "Cobalt Assembly" end, type = 'faction', + warband = 'unique', key = 2550, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -162,6 +168,7 @@ local labelRows = { return PermoksAccountManager.factions[2518].localName or 'Sabellian' end, type = 'faction', + warband = 'unique', key = 2518, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -171,6 +178,7 @@ local labelRows = { return PermoksAccountManager.factions[2517].localName or 'Wrathion' end, type = 'faction', + warband = 'unique', key = 2517, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -180,6 +188,7 @@ local labelRows = { return PermoksAccountManager.factions[2564].localName or 'Loam Niffen' end, type = 'faction', + warband = 'unique', key = 2564, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -189,6 +198,7 @@ local labelRows = { return PermoksAccountManager.factions[2574].localName or 'Dream Wardens' end, type = 'faction', + warband = 'unique', key = 2574, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -198,6 +208,7 @@ local labelRows = { return PermoksAccountManager.factions[2553].localName or 'Soridormi' end, type = 'faction', + warband = 'unique', key = 2553, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -207,6 +218,7 @@ local labelRows = { return PermoksAccountManager.factions[2593].localName or 'Keg Leg\'s Crew' end, type = 'faction', + warband = 'unique', key = 2593, group = 'reputation', version = WOW_PROJECT_MAINLINE @@ -218,13 +230,82 @@ local labelRows = { return PermoksAccountManager.factions[2590].localName or 'Council of Dornogal' end, type = 'faction', + warband = 'unique', key = 2590, group = 'reputation', - accWide = true, + version = WOW_PROJECT_MAINLINE + }, + hallowfall_arathi = { + label = function() + return PermoksAccountManager.factions[2570].localName or 'Hallowfall Arathi' + end, + type = 'faction', + warband = 'unique', + key = 2570, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + the_assembly_of_the_deeps = { + label = function() + return PermoksAccountManager.factions[2594].localName or 'The Assembly of the Deeps' + end, + type = 'faction', + warband = 'unique', + key = 2594, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + the_severed_threads = { + label = function() + return PermoksAccountManager.factions[2600].localName or 'The Severed Threads' + end, + type = 'faction', + warband = 'unique', + key = 2600, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + the_general = { + label = function() + return PermoksAccountManager.factions[2605].localName or 'The General' + end, + type = 'faction', + warband = 'unique', + key = 2605, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + the_vizier = { + label = function() + return PermoksAccountManager.factions[2607].localName or 'The Vizier' + end, + type = 'faction', + warband = 'unique', + key = 2607, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + the_weaver = { + label = function() + return PermoksAccountManager.factions[2601].localName or 'The Weaver' + end, + type = 'faction', + warband = 'unique', + key = 2601, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + brann_bronzebeard = { + label = function() + return PermoksAccountManager.factions[2640].localName or 'Brann Bronzebeard' + end, + type = 'faction', + warband = 'unique', + key = 2640, + group = 'reputation', version = WOW_PROJECT_MAINLINE }, - -- wotlk alliance_vanguard = { label = function() diff --git a/modules/instances.lua b/modules/instances.lua index 271e8e4..ba5ed2a 100644 --- a/modules/instances.lua +++ b/modules/instances.lua @@ -16,28 +16,6 @@ local labelRows = { group = 'dungeons', version = WOW_PROJECT_MAINLINE }, - vault_of_the_incarnates = { - label = function() - return PermoksAccountManager.raids[2522].name or 'VotI' - end, - id = 2522, - type = 'raid', - key = 'vault_of_the_incarnates', - tooltip = true, - group = 'raids', - version = WOW_PROJECT_MAINLINE - }, - aberrus_the_shadowed_crucible = { - label = function() - return PermoksAccountManager.raids[2569].name or 'Aberrus' - end, - id = 2569, - type = 'raid', - key = 'aberrus_the_shadowed_crucible', - tooltip = true, - group = 'raids', - version = WOW_PROJECT_MAINLINE - }, dawn_of_the_infinite = { label = GetRealZoneText(2579), id = 2579, @@ -53,13 +31,15 @@ local labelRows = { group = 'dungeons', version = WOW_PROJECT_MAINLINE }, - amirdrassil_the_dreams_hope = { + + -- TWW Raids + nerub_ar_palace = { label = function() - return PermoksAccountManager.raids[2549].name or 'Amirdrassil' + return PermoksAccountManager.raids[2657].name or 'Palace' end, - id = 2549, + id = 2657, type = 'raid', - key = 'amirdrassil_the_dreams_hope', + key = 'nerub_ar_palace', tooltip = true, group = 'raids', version = WOW_PROJECT_MAINLINE diff --git a/modules/items.lua b/modules/items.lua index bbf64dc..19914c1 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -123,6 +123,8 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, + + -- 10.0 Dragonflight vaultKey = { label = 'Zskera Vault Key', type = 'item', @@ -130,39 +132,10 @@ local labelRows = { group = 'item', version = WOW_PROJECT_MAINLINE }, - whelpling_crest = { - label = 'Whelpling Crest (S2)', - type = 'crest', - fragment = 204075, - crest = 204193, - passRow = true, - group = 'item', - version = WOW_PROJECT_MAINLINE - }, - drake_crest = { - label = 'Drake Crest (S2)', - type = 'crest', - fragment = 204076, - crest = 204195, - passRow = true, - group = 'item', - version = WOW_PROJECT_MAINLINE - }, - wyrm_crest = { - label = 'Wyrm Crest (S2)', - type = 'crest', - fragment = 204077, - crest = 204196, - passRow = true, - group = 'item', - version = WOW_PROJECT_MAINLINE - }, - aspect_crest = { - label = 'Aspect Crest (S2)', - type = 'crest', - fragment = 204078, - crest = 204194, - passRow = true, + artisans_mettle = { + label = "Artisan's Mettle", + type = 'item', + key = 190456, group = 'item', version = WOW_PROJECT_MAINLINE }, @@ -279,6 +252,58 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, + -- 11.0 The War Within + spark_omens = { + label = 'Spark - Omens', + type = 'spark', + passRow = true, + key = 211296, + reagent = 211297, + reagentRequired = 2, + group = 'item', + version = WOW_PROJECT_MAINLINE + }, + artisans_acuity = { + label = "Artisan's Acuity", + type = 'item', + key = 210814, + group = 'item', + version = WOW_PROJECT_MAINLINE + }, + radiant_remnant = { + label = 'Radiant Remnant', + type = 'item', + key = 206350, + group = 'item', + version = WOW_PROJECT_MAINLINE + }, + radiant_echo = { + label = 'Radiant Echo', + type = 'item', + key = 220520, + group = 'item', + version = WOW_PROJECT_MAINLINE + }, + + -- REFACTOR: technically 50Glob of Wax = 1x Firelight Ruby so this could be merged. Using spark function for this, could generalize the concept + firelight_ruby = { + label = 'Firelight Ruby', + type = 'spark', + passRow = true, + key = 224642, + reagent = 212493, + reagentRequired = 50, + group = 'item', + version = WOW_PROJECT_MAINLINE + }, + coffer_key_shard = { + label = 'Coffer Key Shard', + type = 'item', + key = 220693, + group = 'item', + version = WOW_PROJECT_MAINLINE + }, + -- tbc elixirDemonslaying = { label = 'Elixir of Demonslaying', diff --git a/modules/quests.lua b/modules/quests.lua index a99d58c..a661eaf 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -38,6 +38,60 @@ local default = { local module = 'quests' local labelRows = { + + -- General Weeklies + dungeon_weekly = { + IDs = {80184, 80185, 80186, 80187, 80188, 80189}, + label = L['Dungeon Quests'], + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'visible', + isComplete = function(alt_data) + return alt_data.questInfo and alt_data.questInfo.weekly and + PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.dungeon_quests) == 1 + end, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + pvp_weekly = { + IDs = {80184, 80185, 80186, 80187, 80188, 80189}, + label = L['PVP Quests'], + type = 'quest', + questType = 'weekly', + visibility = 'visible', + required = 2, + isComplete = function(alt_data) + return alt_data.questInfo and alt_data.questInfo.weekly and + PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.pvp_quests) == 2 + end, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + pvp_sparks = { + IDs = {81793, 81794, 81795, 81796}, + label = 'Sparks of War', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + weekend_event = { + IDs = {83345, 83347, 83357, 83358, 83366, 83359, 83362, 83365, 83364}, + label = L['Weekend Event'], + type = 'quest', + questType = 'weekly', + visibility = 'visible', + isComplete = function(alt_data) + return alt_data.questInfo and alt_data.questInfo.weekly and + PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.weekend_event) == 1 + end, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + + -- 9.0 Shadowlands korthia_dailies = { label = L['Korthia Dailies'], type = 'quest', @@ -175,44 +229,6 @@ local labelRows = { group = 'resetDaily', version = WOW_PROJECT_MAINLINE }, - dungeon_quests = { - label = L['Dungeon Quests'], - type = 'quest', - questType = 'weekly', - visibility = 'visible', - required = 2, - isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekl and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.dungeon_quests) == 2 - end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE - }, - pvp_quests = { - label = L['PVP Quests'], - type = 'quest', - questType = 'weekly', - visibility = 'visible', - required = 2, - isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.pvp_quests) == 2 - end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE - }, - weekend_event = { - label = L['Weekend Event'], - type = 'quest', - questType = 'weekly', - visibility = 'visible', - isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.weekend_event) == 1 - end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE - }, world_boss = { label = L['World Boss'], type = 'quest', @@ -435,6 +451,8 @@ local labelRows = { group = 'resetDaily', version = WOW_PROJECT_MAINLINE }, + + -- 10.0 Dragonflight dragonflight_world_boss = { label = L['World Boss'], type = 'quest', @@ -469,14 +487,6 @@ local labelRows = { required = 4, version = WOW_PROJECT_MAINLINE }, - sparks_of_life = { - label = 'Sparks of Life', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE - }, brackenhide_hollow_rares = { label = 'Brackenhide Rares', type = 'quest', @@ -515,7 +525,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, knowledge_df_mobs = { - label = 'Gather Knowledge', + label = '(DF) Gather Knowledge', type = 'quest', questType = 'weekly', visibility = 'hidden', @@ -538,8 +548,8 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - knowledge_df_scout_packs = { - label = 'Treasure Knowledge', + knowledge_df_treasures = { + label = '(DF) Treasure Knowledge', type = 'quest', questType = 'weekly', visibility = 'hidden', @@ -557,7 +567,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, knowledge_df_treatise = { - label = 'Treatise Knowledge', + label = '(DF) Treatise Knowledge', type = 'quest', questType = 'weekly', visibility = 'hidden', @@ -571,7 +581,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, knowledge_df_weeklies_craft = { - label = 'Crafting Quests', + label = '(DF) Crafting Quests', type = 'quest', questType = 'weekly', visibility = 'visible', @@ -589,7 +599,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, knowledge_df_weeklies_loot = { - label = 'Loot Quests', + label = '(DF) Loot Quests', type = 'quest', questType = 'weekly', visibility = 'visible', @@ -602,7 +612,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, knowledge_df_weeklies_order ={ - label = 'Crafting Order Quests', + label = '(DF) Crafting Order Quests', type = 'quest', questType = 'weekly', visibility = 'visible', @@ -947,30 +957,272 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, - -- 11.0 + -- 11.0 The War Within + -- world activities + tww_world_boss = { + label = L['World Boss'], + type = 'quest', + questType = 'weekly', + visibility = 'hidden', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + delve_weekly = { -- PLACEHOLDER: Meta Quest, need more info how this timegate works + IDs = {82746, 82712, 82711, 82709, 82706, 82707}, + label = 'Delve Meta', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + isComplete = function(alt_data) + return alt_data.questInfo and alt_data.questInfo.weekly and + PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.dungeon_quests) == 1 + end, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + archaic_cypher_key = { + IDs = {84370}, + label = 'Archaic Cypher Key', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + the_theater_troupe = { + IDs = {83240}, + label = 'The Theater Troupe', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + rollin_down_in_the_deeps = { + IDs = {82946}, + label = "Rollin' Down in the Deeps", + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + gearing_up_for_trouble = { + IDs = {83333}, + label = "Gearing Up for Trouble", + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + awakening_the_machine = { + IDs = {84642, 84644, 84646, 84647}, + label = 'Awakening the Machine', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'hidden', + group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 4, + version = WOW_PROJECT_MAINLINE + }, spreading_the_light = { + IDs = {76586}, label = 'Spreading the Light', type = 'quest', questType = 'weekly', + warband = true, visibility = 'visible', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - lesser_keyflame_weeklies = { + IDs = {76169, 76394, 76600, 76733, 76997, 78656, 78915, 78933, 78972, 79158, 79173, 79216, 79346, 80004, 80562, 81574, 81632}, label = 'Lesser Keyflame Weeklies', type = 'quest', questType = 'weekly', + warband = true, visibility = 'visible', + group = 'resetWeekly', tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 8, + version = WOW_PROJECT_MAINLINE + }, + greater_keyflame_weeklies = { + IDs = {78590, 78657, 79329, 79380, 79469, 79470, 79471}, + label = 'Greater Keyflame Weeklies', + type = 'quest', + questType = 'weekly', + warband = false, + visibility = 'visible', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - + severed_threads_pact_chosen = { + IDs = {80544}, + label = 'Severed Threads Pact Chosen', + type = 'quest', + questType = 'weekly', + warband = 'unique', + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + severed_threads_pact_weekly = { + IDs = {80670, 80671, 80672}, + label = 'Severed Threads Pact Weekly', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + -- rares + isle_of_dorne_rares = { + IDs = {82196, 81923, 81894, 81902, 81903, 81893, 81892, 79685, 81920, 81895, 81907, 81921, 81901, 81899, 81904, 78619, 81905, 81897, 81922, 82204, 82203, 82205}, + label = 'Isle of Dorne Rares', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'hidden', + group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 4, + version = WOW_PROJECT_MAINLINE + }, + ringing_deeps_rares = { + IDs = {81674, 81562, 80547, 80505, 80560, 80536, 80557, 80506, 81511, 80507, 81485, 81563, 80574, 81652, 81648, 80003, 81566, 81633}, + label = 'Ringing Deeps Rares', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'hidden', + group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 4, + version = WOW_PROJECT_MAINLINE + }, + hallowfall_rares = { + IDs = {81756, 82557, 81791, 80009, 81761, 81849, 80006, 82565, 82559, 80011, 82562, 81881, 81853, 81836, 79271, 80010, 82560, 81882, 82558, 82561, 82564, 82566}, + label = 'Hallowfall Rares', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'hidden', + group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 22, + version = WOW_PROJECT_MAINLINE + }, + azj_kahet_rares = { + IDs = {81702, 81703, 81695, 81706, 81700, 81699, 81704, 81707, 81705, 81694, 78905, 82037, 82078, 82077, 82036, 82035, 82034, 81634, 81701}, + label = 'Azj-Kahet Rares', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'hidden', + group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 19, + version = WOW_PROJECT_MAINLINE + }, + -- professions + knowledge_tww_treasures = { + label = 'Treasure Knowledge', + type = 'quest', + questType = 'weekly', + visibility = 'hidden', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:KnowledgeTooltip_OnEnter(...) + end, + required = 4, + professionOffset = { + [182] = -2, + [186] = -2, + [393] = -2, + }, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + knowledge_tww_treatise = { + label = 'Treatise Knowledge', + type = 'quest', + questType = 'weekly', + visibility = 'hidden', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:KnowledgeTooltip_OnEnter(...) + end, + tooltipRequired = 1, + required = 2, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + knowledge_tww_gather = { + label = 'Gather Knowledge', + type = 'quest', + questType = 'weekly', + visibility = 'hidden', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:KnowledgeTooltip_OnEnter(...) + end, + required = 6, + tooltipRequired = 3, + professionOffset = { + [182] = 4, + [186] = 4, + [393] = 4, + [333] = 4, + }, + professionRequired = { + [182] = 6, + [186] = 6, + [393] = 6, + [333] = 6, + }, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + knowledge_tww__weeklies_quest = { + label = 'Profession Quests', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 2, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + --wotlk general_dailies = { label = 'General', From 2158bb3937f41506363ed7dab84e4418dd49dff5 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Tue, 20 Aug 2024 18:00:18 +0200 Subject: [PATCH 022/138] removed debug lines for release --- modules/quests.lua | 9 --------- modules/retail_professions.lua | 3 --- 2 files changed, 12 deletions(-) diff --git a/modules/quests.lua b/modules/quests.lua index a661eaf..e4827ab 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1420,12 +1420,6 @@ local function UpdateAllQuests(charInfo) local isComplete = C_QuestLog.IsQuestFlaggedCompleted(questID) local currentQuestInfo = setQuestInfo(questInfo, info, key) - --debug line delete later - if isComplete then - print(questID .. ' completed: ' .. tostring(isComplete)) - end - - if not self.isBC then -- check for weekly Warband Rewards @@ -1437,9 +1431,6 @@ local function UpdateAllQuests(charInfo) -- Workaround, but requires login on character that completed the quest: local isWarbandComplete = isComplete currentWarbandQuestInfo[questID] = currentWarbandQuestInfo[questID] or isWarbandComplete or nil - - --debug line delete later - print(questID .. ' Warband completed: ' .. tostring(isWarbandComplete)) end -- covenant stuff diff --git a/modules/retail_professions.lua b/modules/retail_professions.lua index edb0a45..c470823 100644 --- a/modules/retail_professions.lua +++ b/modules/retail_professions.lua @@ -94,7 +94,6 @@ local function UpdateChildConcentration(child) end local formattedDate = date("%Y-%m-%d %H:%M:%S", child.concentrationCapTime) - print(child.name .. ' concentration capped at ' .. formattedDate) end local function CalculateChildConcentration(child) @@ -150,8 +149,6 @@ local function UpdateChildProfessionInfo(profession) local concentrationInfo = C_CurrencyInfo.GetCurrencyInfo(concentration) - print('updating child: ' .. info.professionName .. 'skillLineID ' .. profession.skillLineID) - return { skillLineID = profession.skillLineID, name = info.professionName, From c8588807495922db7f07929007f8206b272cd872 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Tue, 20 Aug 2024 18:09:55 +0200 Subject: [PATCH 023/138] changed some labelrow names for readability --- modules/currencies.lua | 8 ++++---- modules/quests.lua | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index 171a8c0..fe0030a 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -273,7 +273,7 @@ local labelRows = { -- 11.0 champion_crest = { - label = 'Weathered Harbinger Crest', + label = 'Champion Crests', type = 'crestcurrency', key = 2914, passRow = true, @@ -281,7 +281,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, veteran_crest = { - label = 'Carved Harbinger Crest', + label = 'Veteran Crests', type = 'crestcurrency', key = 2915, passRow = true, @@ -289,7 +289,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, hero_crest = { - label = 'Runed Harbinger Crest', + label = 'Hero Crests', type = 'crestcurrency', key = 2916, passRow = true, @@ -297,7 +297,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, myth_crest = { - label = 'Gilded Harbinger Crest', + label = 'Myth Crests', type = 'crestcurrency', key = 2917, passRow = true, diff --git a/modules/quests.lua b/modules/quests.lua index e4827ab..84a7688 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1002,7 +1002,7 @@ local labelRows = { }, rollin_down_in_the_deeps = { IDs = {82946}, - label = "Rollin' Down in the Deeps", + label = "Wax Weekly", -- Rollin' Down in the Deeps type = 'quest', questType = 'weekly', warband = true, @@ -1012,7 +1012,7 @@ local labelRows = { }, gearing_up_for_trouble = { IDs = {83333}, - label = "Gearing Up for Trouble", + label = "Machine Weekly", -- Gearing Up for Trouble type = 'quest', questType = 'weekly', visibility = 'visible', @@ -1046,7 +1046,7 @@ local labelRows = { }, lesser_keyflame_weeklies = { IDs = {76169, 76394, 76600, 76733, 76997, 78656, 78915, 78933, 78972, 79158, 79173, 79216, 79346, 80004, 80562, 81574, 81632}, - label = 'Lesser Keyflame Weeklies', + label = 'Lesser Keyflames', type = 'quest', questType = 'weekly', warband = true, @@ -1061,7 +1061,7 @@ local labelRows = { }, greater_keyflame_weeklies = { IDs = {78590, 78657, 79329, 79380, 79469, 79470, 79471}, - label = 'Greater Keyflame Weeklies', + label = 'Greater Keyflames', type = 'quest', questType = 'weekly', warband = false, @@ -1081,7 +1081,7 @@ local labelRows = { }, severed_threads_pact_weekly = { IDs = {80670, 80671, 80672}, - label = 'Severed Threads Pact Weekly', + label = 'Severed Threads', type = 'quest', questType = 'weekly', warband = true, From 354e6c7a73f3d790778ba7c824bea53387296902 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Wed, 21 Aug 2024 00:18:30 +0200 Subject: [PATCH 024/138] added another weekly and the catalyst currency --- db/db.lua | 50 +++++++++++++++++++++++++++++++++++---- modules/currencies.lua | 8 +++---- modules/quests.lua | 53 +++++++++++++++++++++++++++++++----------- 3 files changed, 90 insertions(+), 21 deletions(-) diff --git a/db/db.lua b/db/db.lua index 8f71e9e..0353361 100644 --- a/db/db.lua +++ b/db/db.lua @@ -81,7 +81,8 @@ local default_categories = { childs = { 'dungeon_weekly', 'weekend_event', - 'delve_weekly', + 'worldsoul_weekly', + 'weekly_meta', 'archaic_cypher_key', 'separator1', @@ -103,8 +104,9 @@ local default_categories = { childOrder = { dungeon_weekly = 1, weekend_event = 2, - delve_weekly = 3, - archaic_cypher_key = 4, + worldsoul_weekly = 3, + weekly_meta = 4, + archaic_cypher_key = 5, separator1 = 10, the_theater_troupe = 11, @@ -598,6 +600,7 @@ PermoksAccountManager.currency = { [2915] = 0, -- Carved Harbinger Crest [2916] = 0, -- Runed Harbinger Crest [2917] = 0, -- Gilded Harbinger Crest + [2813] = 0, -- Harmonized Silk (Crucible Charges TWW Season 1) [3008] = 0, -- Valorstones [2815] = 0, -- Resonance Crystals [3056] = 0, -- Kej @@ -1553,13 +1556,52 @@ PermoksAccountManager.quests = { [999992] = {questType = 'weekly'}, -- Shurrai, Atrocity of the Undersea [999993] = {questType = 'weekly'}, -- Orta, the Broken Mountain }, - delve_weekly = { -- PLACEHOLDER: Meta Quest, need more info how this timegate works + worldsoul_weekly = { + [82452] = {questType = 'weekly', log = true}, -- Worldsoul: World Quests + [82453] = {questType = 'weekly', log = true}, -- Worldsoul: Encore! + [82458] = {questType = 'weekly', log = true}, -- Worldsoul: Renown + [82482] = {questType = 'weekly', log = true}, -- Worldsoul: Snuffling + [82483] = {questType = 'weekly', log = true}, -- Worldsoul: Spreading the Light + [82485] = {questType = 'weekly', log = true}, -- Worldsoul: Cinderbrew Meadery + [82486] = {questType = 'weekly', log = true}, -- Worldsoul: The Rookery + [82487] = {questType = 'weekly', log = true}, -- Worldsoul: The Stonevault + [82488] = {questType = 'weekly', log = true}, -- Worldsoul: Darkflame Cleft + [82489] = {questType = 'weekly', log = true}, -- Worldsoul: The Dawnbreaker + [82490] = {questType = 'weekly', log = true}, -- Worldsoul: Priory of the Sacred Flame + [82491] = {questType = 'weekly', log = true}, -- Worldsoul: Ara-Kara, City of Echoes + [82492] = {questType = 'weekly', log = true}, -- Worldsoul: City of Threads + [82493] = {questType = 'weekly', log = true}, -- Worldsoul: The Dawnbreaker + [82494] = {questType = 'weekly', log = true}, -- Worldsoul: Ara-Kara, City of Echoes + [82495] = {questType = 'weekly', log = true}, -- Worldsoul: Cinderbrew Meadery + [82496] = {questType = 'weekly', log = true}, -- Worldsoul: City of Threads + [82497] = {questType = 'weekly', log = true}, -- Worldsoul: The Stonevault + [82498] = {questType = 'weekly', log = true}, -- Worldsoul: Darkflame Cleft + [82499] = {questType = 'weekly', log = true}, -- Worldsoul: Priory of the Sacred Flame + [82500] = {questType = 'weekly', log = true}, -- Worldsoul: The Rookery + [82501] = {questType = 'weekly', log = true}, -- Worldsoul: The Dawnbreaker + [82502] = {questType = 'weekly', log = true}, -- Worldsoul: Ara-Kara, City of Echoes + [82503] = {questType = 'weekly', log = true}, -- Worldsoul: Cinderbrew Meadery + [82504] = {questType = 'weekly', log = true}, -- Worldsoul: City of Threads + [82505] = {questType = 'weekly', log = true}, -- Worldsoul: The Stonevault + [82506] = {questType = 'weekly', log = true}, -- Worldsoul: Darkflame Cleft + [82507] = {questType = 'weekly', log = true}, -- Worldsoul: Priory of the Sacred Flame + [82508] = {questType = 'weekly', log = true}, -- Worldsoul: The Rookery + [82509] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace + [82510] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace + [82511] = {questType = 'weekly', log = true}, -- Worldsoul: Awakening Machine + [82512] = {questType = 'weekly', log = true}, -- Worldsoul: World Boss + [82516] = {questType = 'weekly', log = true}, -- Worldsoul: Forging a Pact + [82659] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace + }, + weekly_meta = { -- PLACEHOLDER: Meta Quest, need more info how this timegate works [82746] = {questType = 'weekly', log = true}, -- Delves: Breaking Tough to Loot Stuff [82712] = {questType = 'weekly', log = true}, -- Delves: Trouble Up and Down Khaz Algar [82711] = {questType = 'weekly', log = true}, -- Delves: Lost and Found [82709] = {questType = 'weekly', log = true}, -- Delves: Percussive Archaeology [82706] = {questType = 'weekly', log = true}, -- Delves: Khaz Algar Research [82707] = {questType = 'weekly', log = true}, -- Delves: Earthen Defense + [82678] = {questType = 'weekly', log = true}, -- Archives: The First Disc + [82679] = {questType = 'weekly', log = true}, -- Archives: Seeking History }, archaic_cypher_key = { [84370] = {questType = 'weekly', log = true}, -- The Key to Success diff --git a/modules/currencies.lua b/modules/currencies.lua index fe0030a..2b175bc 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -175,7 +175,7 @@ local labelRows = { catalyst_charges = { label = L['Catalyst Charges'], type = 'catalystcharges', - key = 2912, + key = 2813, hideIcon = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -608,15 +608,15 @@ local function CurrencyTransferUpdate(charInfo) end local function UpdateCatalystCharges(charInfo) - if not charInfo.currencyInfo or not charInfo.currencyInfo[2912] then + if not charInfo.currencyInfo or not charInfo.currencyInfo[2813] then UpdateAllCurrencies(charInfo) end - charInfo.currencyInfo[2912].quantity = C_CurrencyInfo.GetCurrencyInfo(2912).quantity + charInfo.currencyInfo[2813].quantity = C_CurrencyInfo.GetCurrencyInfo(2813).quantity end local function CreateCatalystChargeString(currencyInfo) - local catalystCharges = currencyInfo and currencyInfo[2912] + local catalystCharges = currencyInfo and currencyInfo[2813] if not catalystCharges then return '-' end return PermoksAccountManager:CreateFractionString(catalystCharges.quantity, catalystCharges.maxQuantity) diff --git a/modules/quests.lua b/modules/quests.lua index 84a7688..d9149c6 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -938,7 +938,7 @@ local labelRows = { label = 'Prepatch Dailies', type = 'quest', questType = 'daily', - warband = 'unique', + warband = true, visibility = 'visible', tooltip = true, customTooltip = function(...) @@ -967,16 +967,26 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - delve_weekly = { -- PLACEHOLDER: Meta Quest, need more info how this timegate works - IDs = {82746, 82712, 82711, 82709, 82706, 82707}, - label = 'Delve Meta', + worldsoul_weekly = { + IDs = { + 82483, 82489, 82452, 82516, 82458, 82482, 82511, 82486, 82492, 82503, + 82453, 82488, 82485, 82659, 82494, 82498, 82490, 82510, 82491, 82504, + 82495, 82506, 82496, 82507, 82497, 82508, 82509, 82499, 82500, 82501, + 82512, 82505, 82502, 82487, 82493 + }, + label = 'Worldsoul Weekly', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + weekly_meta = { -- PLACEHOLDER: Meta Quest, need more info how this timegate works + IDs = {82746, 82712, 82711, 82709, 82706, 82707, 82678, 82679}, + label = 'Weekly Meta', type = 'quest', questType = 'weekly', visibility = 'visible', - isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.dungeon_quests) == 1 - end, group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, @@ -1045,7 +1055,10 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, lesser_keyflame_weeklies = { - IDs = {76169, 76394, 76600, 76733, 76997, 78656, 78915, 78933, 78972, 79158, 79173, 79216, 79346, 80004, 80562, 81574, 81632}, + IDs = { + 76169, 76394, 76600, 76733, 76997, 78656, 78915, 78933, 78972, 79158, + 79173, 79216, 79346, 80004, 80562, 81574, 81632 + }, label = 'Lesser Keyflames', type = 'quest', questType = 'weekly', @@ -1091,7 +1104,11 @@ local labelRows = { }, -- rares isle_of_dorne_rares = { - IDs = {82196, 81923, 81894, 81902, 81903, 81893, 81892, 79685, 81920, 81895, 81907, 81921, 81901, 81899, 81904, 78619, 81905, 81897, 81922, 82204, 82203, 82205}, + IDs = { + 82196, 81923, 81894, 81902, 81903, 81893, 81892, 79685, 81920, 81895, + 81907, 81921, 81901, 81899, 81904, 78619, 81905, 81897, 81922, 82204, + 82203, 82205 + }, label = 'Isle of Dorne Rares', type = 'quest', questType = 'weekly', @@ -1106,7 +1123,10 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, ringing_deeps_rares = { - IDs = {81674, 81562, 80547, 80505, 80560, 80536, 80557, 80506, 81511, 80507, 81485, 81563, 80574, 81652, 81648, 80003, 81566, 81633}, + IDs = { + 81674, 81562, 80547, 80505, 80560, 80536, 80557, 80506, 81511, 80507, + 81485, 81563, 80574, 81652, 81648, 80003, 81566, 81633 + }, label = 'Ringing Deeps Rares', type = 'quest', questType = 'weekly', @@ -1121,7 +1141,11 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, hallowfall_rares = { - IDs = {81756, 82557, 81791, 80009, 81761, 81849, 80006, 82565, 82559, 80011, 82562, 81881, 81853, 81836, 79271, 80010, 82560, 81882, 82558, 82561, 82564, 82566}, + IDs = { + 81756, 82557, 81791, 80009, 81761, 81849, 80006, 82565, 82559, 80011, + 82562, 81881, 81853, 81836, 79271, 80010, 82560, 81882, 82558, 82561, + 82564, 82566 + }, label = 'Hallowfall Rares', type = 'quest', questType = 'weekly', @@ -1136,7 +1160,10 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, azj_kahet_rares = { - IDs = {81702, 81703, 81695, 81706, 81700, 81699, 81704, 81707, 81705, 81694, 78905, 82037, 82078, 82077, 82036, 82035, 82034, 81634, 81701}, + IDs = { + 81702, 81703, 81695, 81706, 81700, 81699, 81704, 81707, 81705, 81694, + 78905, 82037, 82078, 82077, 82036, 82035, 82034, 81634, 81701 + }, label = 'Azj-Kahet Rares', type = 'quest', questType = 'weekly', From 6d23807fb873c8d4bae766265a216fd78b0d14b5 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Wed, 21 Aug 2024 09:52:02 +0200 Subject: [PATCH 025/138] added missing quest event handler for warbands --- db/db.lua | 236 ++++++++++++++++++++++----------------------- modules/quests.lua | 21 +++- 2 files changed, 136 insertions(+), 121 deletions(-) diff --git a/db/db.lua b/db/db.lua index 0353361..ae45483 100644 --- a/db/db.lua +++ b/db/db.lua @@ -713,14 +713,14 @@ PermoksAccountManager.quests = { [81796] = {questType = 'weekly', log = true}, -- Sparks of War: Azj-Kahet }, dungeon_weekly = { - [83432] = {questType = 'weekly', log = true}, -- The Rookery - [83436] = {questType = 'weekly', log = true}, -- Cinderbrew Meadery - [83443] = {questType = 'weekly', log = true}, -- Darkflame Cleft - [83457] = {questType = 'weekly', log = true}, -- The Stonevault - [83458] = {questType = 'weekly', log = true}, -- Priory of the Sacred Flame - [83459] = {questType = 'weekly', log = true}, -- The Dawnbreaker - [83465] = {questType = 'weekly', log = true}, -- Ara-Kara, City of Echoes - [83469] = {questType = 'weekly', log = true}, -- City of Threads + [83432] = {questType = 'weekly', warband = true, log = true}, -- The Rookery + [83436] = {questType = 'weekly', warband = true, log = true}, -- Cinderbrew Meadery + [83443] = {questType = 'weekly', warband = true, log = true}, -- Darkflame Cleft + [83457] = {questType = 'weekly', warband = true, log = true}, -- The Stonevault + [83458] = {questType = 'weekly', warband = true, log = true}, -- Priory of the Sacred Flame + [83459] = {questType = 'weekly', warband = true, log = true}, -- The Dawnbreaker + [83465] = {questType = 'weekly', warband = true, log = true}, -- Ara-Kara, City of Echoes + [83469] = {questType = 'weekly', warband = true, log = true}, -- City of Threads }, -- 9.0 Shadowlands @@ -1604,44 +1604,44 @@ PermoksAccountManager.quests = { [82679] = {questType = 'weekly', log = true}, -- Archives: Seeking History }, archaic_cypher_key = { - [84370] = {questType = 'weekly', log = true}, -- The Key to Success + [84370] = {questType = 'weekly', warband = true, log = true}, -- The Key to Success }, the_theater_troupe = { - [83240] = {questType = 'weekly', log = true}, -- The Theater Troupe + [83240] = {questType = 'weekly', warband = true, log = true}, -- The Theater Troupe }, rollin_down_in_the_deeps = { - [82946] = {questType = 'weekly', log = true}, -- Rollin' Down in the Deeps (Digging) + [82946] = {questType = 'weekly', warband = true, log = true}, -- Rollin' Down in the Deeps (Digging) }, gearing_up_for_trouble = { [83333] = {questType = 'weekly', log = true}, -- Gearing Up for Trouble (Awakening the Machine Weekly) }, awakening_the_machine = { - [84642] = {questType = 'weekly', log = true}, -- cache 1 - [84644] = {questType = 'weekly', log = true}, -- cache 2 - [84646] = {questType = 'weekly', log = true}, -- cache 3 - [84647] = {questType = 'weekly', log = true}, -- cache 4 + [84642] = {questType = 'weekly', warband = true, log = true}, -- cache 1 + [84644] = {questType = 'weekly', warband = true, log = true}, -- cache 2 + [84646] = {questType = 'weekly', warband = true, log = true}, -- cache 3 + [84647] = {questType = 'weekly', warband = true, log = true}, -- cache 4 }, spreading_the_light = { - [76586] = {questType = 'weekly', log = true}, -- Hallowfall Event in Dunelle's Kindness + [76586] = {questType = 'weekly', warband = true, log = true}, -- Hallowfall Event in Dunelle's Kindness }, lesser_keyflame_weeklies = { - [76169] = {questType = 'weekly', log = true}, -- Glow in the Dark - [76394] = {questType = 'weekly', log = true}, -- Shadows of Flavor - [76600] = {questType = 'weekly', log = true}, -- Right Between the Gyro-Optics - [76733] = {questType = 'weekly', log = true}, -- Tater Trawl - [76997] = {questType = 'weekly', log = true}, -- Lost in Shadows - [78656] = {questType = 'weekly', log = true}, -- Hose It Down - [78915] = {questType = 'weekly', log = true}, -- Squashing the Threat - [78933] = {questType = 'weekly', log = true}, -- The Sweet Eclipse - [78972] = {questType = 'weekly', log = true}, -- Harvest Havoc - [79158] = {questType = 'weekly', log = true}, -- Seeds of Salvation - [79173] = {questType = 'weekly', log = true}, -- Supply the Effort - [79216] = {questType = 'weekly', log = true}, -- Web of Manipulation - [79346] = {questType = 'weekly', log = true}, -- Chew On That - [80004] = {questType = 'weekly', log = true}, -- Crab Grab - [80562] = {questType = 'weekly', log = true}, -- Blossoming Delight - [81574] = {questType = 'weekly', log = true}, -- Sporadic Growth - [81632] = {questType = 'weekly', log = true}, -- Lizard Looters + [76169] = {questType = 'weekly', warband = true, log = true}, -- Glow in the Dark + [76394] = {questType = 'weekly', warband = true, log = true}, -- Shadows of Flavor + [76600] = {questType = 'weekly', warband = true, log = true}, -- Right Between the Gyro-Optics + [76733] = {questType = 'weekly', warband = true, log = true}, -- Tater Trawl + [76997] = {questType = 'weekly', warband = true, log = true}, -- Lost in Shadows + [78656] = {questType = 'weekly', warband = true, log = true}, -- Hose It Down + [78915] = {questType = 'weekly', warband = true, log = true}, -- Squashing the Threat + [78933] = {questType = 'weekly', warband = true, log = true}, -- The Sweet Eclipse + [78972] = {questType = 'weekly', warband = true, log = true}, -- Harvest Havoc + [79158] = {questType = 'weekly', warband = true, log = true}, -- Seeds of Salvation + [79173] = {questType = 'weekly', warband = true, log = true}, -- Supply the Effort + [79216] = {questType = 'weekly', warband = true, log = true}, -- Web of Manipulation + [79346] = {questType = 'weekly', warband = true, log = true}, -- Chew On That + [80004] = {questType = 'weekly', warband = true, log = true}, -- Crab Grab + [80562] = {questType = 'weekly', warband = true, log = true}, -- Blossoming Delight + [81574] = {questType = 'weekly', warband = true, log = true}, -- Sporadic Growth + [81632] = {questType = 'weekly', warband = true, log = true}, -- Lizard Looters }, greater_keyflame_weeklies = { -- not added to default categories because shit rewards [78590] = {questType = 'weekly', log = true}, -- Cutting Edge @@ -1653,103 +1653,103 @@ PermoksAccountManager.quests = { [79471] = {questType = 'weekly', log = true}, -- Bleak Sand }, severed_threads_pact_chosen = { - [80544] = {questType = 'weekly', log = true}, -- Eyes of the Weaver + [80544] = {questType = 'weekly', warband = true, log = true}, -- Eyes of the Weaver }, severed_threads_pact_weekly = { - [80670] = {questType = 'weekly', log = true}, -- Eyes of the Weaver - [80671] = {questType = 'weekly', log = true}, -- Blade of the General - [80672] = {questType = 'weekly', log = true}, -- Hand of the Vizier + [80670] = {questType = 'weekly', warband = true, log = true}, -- Eyes of the Weaver + [80671] = {questType = 'weekly', warband = true, log = true}, -- Blade of the General + [80672] = {questType = 'weekly', warband = true, log = true}, -- Hand of the Vizier }, -- Weekly Rares - NEED TO CONFIRM THEY GIVE REPUTATION isle_of_dorne_rares = { - [82196] = {questType = 'weekly', name = 'Alunira'}, - [81923] = {questType = 'weekly', name = 'Tephratennae'}, - [81894] = {questType = 'weekly', name = 'Warphorn'}, - [81902] = {questType = 'weekly', name = 'Kronolith, Might of the Mountain'}, - [81903] = {questType = 'weekly', name = 'Shallowshell the Clacker'}, - [81893] = {questType = 'weekly', name = 'Bloodmaw'}, - [81892] = {questType = 'weekly', name = 'Springbubble'}, - [79685] = {questType = 'weekly', name = 'Sandres the Relicbearer'}, - [81920] = {questType = 'weekly', name = 'Clawbreaker K\'zithix'}, - [81895] = {questType = 'weekly', name = 'Emperor Pitfang'}, - [81907] = {questType = 'weekly', name = 'Escaped Cutthroat'}, - [81921] = {questType = 'weekly', name = 'Matriarch Charfuria'}, - [81901] = {questType = 'weekly', name = 'Tempest Lord Incarnus'}, - [81899] = {questType = 'weekly', name = 'Gar\'loc'}, - [81904] = {questType = 'weekly', name = 'Twice-Stinger the Wretched'}, - [78619] = {questType = 'weekly', name = 'Rustul Titancap'}, - [81905] = {questType = 'weekly', name = 'Flamekeeper Graz'}, - [81897] = {questType = 'weekly', name = 'Plaguehart'}, - [81922] = {questType = 'weekly', name = 'Sweetspark the Oozeful'}, - [82204] = {questType = 'weekly', name = 'Kereke'}, - [82203] = {questType = 'weekly', name = 'Zovex'}, - [82205] = {questType = 'weekly', name = 'Rotfist'}, + [82196] = {questType = 'weekly', warband = true, name = 'Alunira'}, + [81923] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, + [81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, + [81902] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, + [81903] = {questType = 'weekly', warband = true, name = 'Shallowshell the Clacker'}, + [81893] = {questType = 'weekly', warband = true, name = 'Bloodmaw'}, + [81892] = {questType = 'weekly', warband = true, name = 'Springbubble'}, + [79685] = {questType = 'weekly', warband = true, name = 'Sandres the Relicbearer'}, + [81920] = {questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix'}, + [81895] = {questType = 'weekly', warband = true, name = 'Emperor Pitfang'}, + [81907] = {questType = 'weekly', warband = true, name = 'Escaped Cutthroat'}, + [81921] = {questType = 'weekly', warband = true, name = 'Matriarch Charfuria'}, + [81901] = {questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus'}, + [81899] = {questType = 'weekly', warband = true, name = 'Gar\'loc'}, + [81904] = {questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched'}, + [78619] = {questType = 'weekly', warband = true, name = 'Rustul Titancap'}, + [81905] = {questType = 'weekly', warband = true, name = 'Flamekeeper Graz'}, + [81897] = {questType = 'weekly', warband = true, name = 'Plaguehart'}, + [81922] = {questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful'}, + [82204] = {questType = 'weekly', warband = true, name = 'Kereke'}, + [82203] = {questType = 'weekly', warband = true, name = 'Zovex'}, + [82205] = {questType = 'weekly', warband = true, name = 'Rotfist'}, }, ringing_deeps_rares = { - [81674] = {questType = 'weekly', name = 'Automaxor'}, - [81562] = {questType = 'weekly', name = 'Charmonger'}, - [80547] = {questType = 'weekly', name = 'King Splash'}, - [80505] = {questType = 'weekly', name = 'Candleflyer Captain'}, - [80560] = {questType = 'weekly', name = 'Cragmund'}, - [80536] = {questType = 'weekly', name = 'Deepflayer Broodmother'}, - [80557] = {questType = 'weekly', name = 'Aquellion'}, - [80506] = {questType = 'weekly', name = 'Zilthara'}, - [81511] = {questType = 'weekly', name = 'Coalesced Monstrosity'}, - [80507] = {questType = 'weekly', name = 'Terror of the Forge'}, - [81485] = {questType = 'weekly', name = 'Kelpmire'}, - [81563] = {questType = 'weekly', name = 'Rampaging Blight'}, - [80574] = {questType = 'weekly', name = 'Trungal'}, - [81652] = {questType = 'weekly', name = 'Spore-infused Shalewing'}, - [81648] = {questType = 'weekly', name = 'Hungerer of the Deeps'}, - [80003] = {questType = 'weekly', name = 'Disturbed Earthgorger'}, - [81566] = {questType = 'weekly', name = 'Deathbound Husk'}, - [81633] = {questType = 'weekly', name = 'Lurker of the Deeps'}, + [81674] = {questType = 'weekly', warband = true, name = 'Automaxor'}, + [81562] = {questType = 'weekly', warband = true, name = 'Charmonger'}, + [80547] = {questType = 'weekly', warband = true, name = 'King Splash'}, + [80505] = {questType = 'weekly', warband = true, name = 'Candleflyer Captain'}, + [80560] = {questType = 'weekly', warband = true, name = 'Cragmund'}, + [80536] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, + [80557] = {questType = 'weekly', warband = true, name = 'Aquellion'}, + [80506] = {questType = 'weekly', warband = true, name = 'Zilthara'}, + [81511] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, + [80507] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, + [81485] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, + [81563] = {questType = 'weekly', warband = true, name = 'Rampaging Blight'}, + [80574] = {questType = 'weekly', warband = true, name = 'Trungal'}, + [81652] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, + [81648] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, + [80003] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, + [81566] = {questType = 'weekly', warband = true, name = 'Deathbound Husk'}, + [81633] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, }, hallowfall_rares = { - [81756] = {questType = 'weekly', name = 'Lytfang the Lost'}, - [82557] = {questType = 'weekly', name = 'Moth\'ethk'}, - [81791] = {questType = 'weekly', name = 'The Perchfather'}, - [80009] = {questType = 'weekly', name = 'The Taskmaker'}, - [81761] = {questType = 'weekly', name = 'Grimslice'}, - [81849] = {questType = 'weekly', name = 'Strength of Beledar'}, - [80006] = {questType = 'weekly', name = 'Ixlorb the Spinner'}, - [82565] = {questType = 'weekly', name = 'Murkspike'}, - [82559] = {questType = 'weekly', name = 'Deathpetal'}, - [80011] = {questType = 'weekly', name = 'Deepfiend Azellix'}, - [82562] = {questType = 'weekly', name = 'Duskshadow'}, - [81881] = {questType = 'weekly', name = 'Funglour'}, - [81853] = {questType = 'weekly', name = 'Sir Alastair Purefire'}, - [81836] = {questType = 'weekly', name = 'Horror of the Shallows'}, - [79271] = {questType = 'weekly', name = 'Sloshmuck'}, - [80010] = {questType = 'weekly', name = 'Murkshade'}, - [82560] = {questType = 'weekly', name = 'Croakit'}, - [81882] = {questType = 'weekly', name = 'Pride of Beledar'}, - [82558] = {questType = 'weekly', name = 'Crazed Cabbage Smacker'}, - [82561] = {questType = 'weekly', name = 'Toadstomper'}, - [82564] = {questType = 'weekly', name = 'Finclaw Bloodtide'}, - [82566] = {questType = 'weekly', name = 'Ravageant'}, + [81756] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, + [82557] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, + [81791] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, + [80009] = {questType = 'weekly', warband = true, name = 'The Taskmaker'}, + [81761] = {questType = 'weekly', warband = true, name = 'Grimslice'}, + [81849] = {questType = 'weekly', warband = true, name = 'Strength of Beledar'}, + [80006] = {questType = 'weekly', warband = true, name = 'Ixlorb the Spinner'}, + [82565] = {questType = 'weekly', warband = true, name = 'Murkspike'}, + [82559] = {questType = 'weekly', warband = true, name = 'Deathpetal'}, + [80011] = {questType = 'weekly', warband = true, name = 'Deepfiend Azellix'}, + [82562] = {questType = 'weekly', warband = true, name = 'Duskshadow'}, + [81881] = {questType = 'weekly', warband = true, name = 'Funglour'}, + [81853] = {questType = 'weekly', warband = true, name = 'Sir Alastair Purefire'}, + [81836] = {questType = 'weekly', warband = true, name = 'Horror of the Shallows'}, + [79271] = {questType = 'weekly', warband = true, name = 'Sloshmuck'}, + [80010] = {questType = 'weekly', warband = true, name = 'Murkshade'}, + [82560] = {questType = 'weekly', warband = true, name = 'Croakit'}, + [81882] = {questType = 'weekly', warband = true, name = 'Pride of Beledar'}, + [82558] = {questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker'}, + [82561] = {questType = 'weekly', warband = true, name = 'Toadstomper'}, + [82564] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, + [82566] = {questType = 'weekly', warband = true, name = 'Ravageant'}, }, azj_kahet_rares = { - [81702] = {questType = 'weekly', name = 'Kaheti Silk Hauler'}, - [81703] = {questType = 'weekly', name = 'XT-Minecrusher 8700'}, - [81695] = {questType = 'weekly', name = 'Abyssal Devourer'}, - [81706] = {questType = 'weekly', name = 'Maddened Siegebomber'}, - [81700] = {questType = 'weekly', name = 'Vilewing'}, - [81699] = {questType = 'weekly', name = 'Webspeaker Grik\'ik'}, - [81704] = {questType = 'weekly', name = 'Cha\'tak'}, - [81707] = {questType = 'weekly', name = 'Enduring Gutterface'}, - [81705] = {questType = 'weekly', name = 'Monstrous Lasharoth'}, - [81694] = {questType = 'weekly', name = 'Rhak\'ik'}, - [78905] = {questType = 'weekly', name = 'Ahg\'zagall'}, - [82037] = {questType = 'weekly', name = 'Umbraclaw Matra'}, - [82078] = {questType = 'weekly', name = 'Kaheti Bladeguard'}, - [82077] = {questType = 'weekly', name = 'Deepcrawler Tx\'kesh'}, - [82036] = {questType = 'weekly', name = 'Harvester Qixt'}, - [82035] = {questType = 'weekly', name = 'The Oozekhan'}, - [82034] = {questType = 'weekly', name = 'Jix\'ak the Crazed'}, - [81634] = {questType = 'weekly', name = 'The Groundskeeper'}, - [81701] = {questType = 'weekly', name = 'Xishorr'}, + [81702] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, + [81703] = {questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700'}, + [81695] = {questType = 'weekly', warband = true, name = 'Abyssal Devourer'}, + [81706] = {questType = 'weekly', warband = true, name = 'Maddened Siegebomber'}, + [81700] = {questType = 'weekly', warband = true, name = 'Vilewing'}, + [81699] = {questType = 'weekly', warband = true, name = 'Webspeaker Grik\'ik'}, + [81704] = {questType = 'weekly', warband = true, name = 'Cha\'tak'}, + [81707] = {questType = 'weekly', warband = true, name = 'Enduring Gutterface'}, + [81705] = {questType = 'weekly', warband = true, name = 'Monstrous Lasharoth'}, + [81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik'}, + [78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, + [82037] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, + [82078] = {questType = 'weekly', warband = true, name = 'Kaheti Bladeguard'}, + [82077] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, + [82036] = {questType = 'weekly', warband = true, name = 'Harvester Qixt'}, + [82035] = {questType = 'weekly', warband = true, name = 'The Oozekhan'}, + [82034] = {questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed'}, + [81634] = {questType = 'weekly', warband = true, name = 'The Groundskeeper'}, + [81701] = {questType = 'weekly', warband = true, name = 'Xishorr'}, }, -- Professions diff --git a/modules/quests.lua b/modules/quests.lua index d9149c6..284f174 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1119,7 +1119,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 4, + required = 22, version = WOW_PROJECT_MAINLINE }, ringing_deeps_rares = { @@ -1137,7 +1137,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 4, + required = 18, version = WOW_PROJECT_MAINLINE }, hallowfall_rares = { @@ -1489,6 +1489,8 @@ local function UpdateAllHiddenQuests(charInfo) end self:Debug('Update Hidden Quests') + local warbandInfo = self.isRetail and self.warbandData or nil + for questType, keys in pairs(charInfo.questInfo) do if type(keys) == 'table' and keys.hidden then for key, _ in pairs(keys.hidden) do @@ -1499,6 +1501,10 @@ local function UpdateAllHiddenQuests(charInfo) isComplete = C_QuestLog.IsQuestFlaggedCompleted(questID) end charInfo.questInfo[questType].hidden[key][questID] = isComplete or nil + + if warbandInfo and questData.warband then + warbandInfo.questInfo[questType].hidden[key][questID] = isComplete or nil + end end end end @@ -1521,6 +1527,7 @@ do end end +-- classic function local function AddQuest(_, questID, questLogIndex, questInfo) local self = PermoksAccountManager local questLogIndex = questLogIndex or @@ -1531,12 +1538,14 @@ local function AddQuest(_, questID, questLogIndex, questInfo) end end +-- classic function local function RemoveQuest(_, questID) if questID then PermoksAccountManager.db.global.quests[questID] = nil end end +-- classic function local function UpdateCurrentlyActiveQuests(charInfo) local numQuests = C_QuestLog and C_QuestLog.GetNumQuestLogEntries and C_QuestLog.GetNumQuestLogEntries() or GetNumQuestLogEntries() local info @@ -1567,6 +1576,8 @@ local function UpdateQuest(charInfo, questID) return end + local warbandInfo = self.isRetail and self.warbandData or nil + local questInfo = self.quests[key][questID] local questType, visibility = questInfo.questType, questInfo.log and 'visible' or 'hidden' self:Debug('Update', questType, visibility, key, questID) @@ -1576,6 +1587,10 @@ local function UpdateQuest(charInfo, questID) end charInfo.questInfo[questType][visibility][key][questID] = true + if warbandInfo and warbandInfo.questInfo[questType][visibility][key] then + warbandInfo.questInfo[questType][visibility][key][questID] = true + end + RemoveQuest(charInfo, questID) end end @@ -1595,7 +1610,7 @@ do ['QUEST_ACCEPTED'] = AddQuest, ['QUEST_TURNED_IN'] = UpdateQuest, ['QUEST_REMOVED'] = RemoveQuest, - ['QUEST_LOG_UPDATE'] = {HiddenQuestTimer}, + ['QUEST_LOG_UPDATE'] = {HiddenQuestTimer}, }, share = { [HiddenQuestTimer] = 'questInfo', From 46a0cc6546fa78984a1c45dc9436cdb2d1972bbd Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Wed, 21 Aug 2024 11:05:21 +0200 Subject: [PATCH 026/138] fixed bug that reset hidden warband quests on relog --- db/db.lua | 6 ++---- modules/quests.lua | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/db/db.lua b/db/db.lua index ae45483..fa5159c 100644 --- a/db/db.lua +++ b/db/db.lua @@ -82,7 +82,6 @@ local default_categories = { 'dungeon_weekly', 'weekend_event', 'worldsoul_weekly', - 'weekly_meta', 'archaic_cypher_key', 'separator1', @@ -105,7 +104,6 @@ local default_categories = { dungeon_weekly = 1, weekend_event = 2, worldsoul_weekly = 3, - weekly_meta = 4, archaic_cypher_key = 5, separator1 = 10, @@ -1593,7 +1591,7 @@ PermoksAccountManager.quests = { [82516] = {questType = 'weekly', log = true}, -- Worldsoul: Forging a Pact [82659] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace }, - weekly_meta = { -- PLACEHOLDER: Meta Quest, need more info how this timegate works + weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later [82746] = {questType = 'weekly', log = true}, -- Delves: Breaking Tough to Loot Stuff [82712] = {questType = 'weekly', log = true}, -- Delves: Trouble Up and Down Khaz Algar [82711] = {questType = 'weekly', log = true}, -- Delves: Lost and Found @@ -1602,7 +1600,7 @@ PermoksAccountManager.quests = { [82707] = {questType = 'weekly', log = true}, -- Delves: Earthen Defense [82678] = {questType = 'weekly', log = true}, -- Archives: The First Disc [82679] = {questType = 'weekly', log = true}, -- Archives: Seeking History - }, + }, archaic_cypher_key = { [84370] = {questType = 'weekly', warband = true, log = true}, -- The Key to Success }, diff --git a/modules/quests.lua b/modules/quests.lua index 284f174..e9e1002 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -981,15 +981,15 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - weekly_meta = { -- PLACEHOLDER: Meta Quest, need more info how this timegate works - IDs = {82746, 82712, 82711, 82709, 82706, 82707, 82678, 82679}, - label = 'Weekly Meta', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE - }, + -- weekly_meta = { -- -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later + -- IDs = {82746, 82712, 82711, 82709, 82706, 82707, 82678, 82679}, + -- label = 'Weekly Meta', + -- type = 'quest', + -- questType = 'weekly', + -- visibility = 'visible', + -- group = 'resetWeekly', + -- version = WOW_PROJECT_MAINLINE + -- }, archaic_cypher_key = { IDs = {84370}, label = 'Archaic Cypher Key', @@ -1502,7 +1502,7 @@ local function UpdateAllHiddenQuests(charInfo) end charInfo.questInfo[questType].hidden[key][questID] = isComplete or nil - if warbandInfo and questData.warband then + if warbandInfo and questData.warband and not warbandInfo.questInfo[questType].hidden[key][questID] then warbandInfo.questInfo[questType].hidden[key][questID] = isComplete or nil end end From 6adf3e35b8aee752e471f57747d345a2fcc21843 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Wed, 21 Aug 2024 16:26:46 +0200 Subject: [PATCH 027/138] added warband reputation functionality and added a mapping table for 'friend' to convert the string to something a bit more useful --- db/db.lua | 44 ++++++++++++++++++++++---------------------- modules/factions.lua | 43 ++++++++++++++++++++++++++++++++++++++++++- modules/quests.lua | 23 ++++++++++++++--------- 3 files changed, 78 insertions(+), 32 deletions(-) diff --git a/db/db.lua b/db/db.lua index fa5159c..58c8392 100644 --- a/db/db.lua +++ b/db/db.lua @@ -173,7 +173,7 @@ local default_categories = { 'the_general', 'the_vizier', 'the_weaver', - 'brann_bronzebeard', + -- 'brann_bronzebeard', Makes no sense without a custom string for the level }, childOrder = { council_of_dornogal = 1, @@ -183,7 +183,7 @@ local default_categories = { the_general = 5, the_vizier = 6, the_weaver = 7, - brann_bronzebeard = 8, + -- brann_bronzebeard = 8, }, enabled = true }, @@ -534,28 +534,28 @@ PermoksAccountManager.factions = { [2470] = {name = "Death's Advance", paragon = true}, [2478] = {name = 'The Enlightened', paragon = true}, [2480] = {name = 'Automa', paragon = true}, - [2503] = {name = 'Maruuk Centaur', paragon = true, type = 'renown'}, - [2507] = {name = 'Dragonscale Expedition', paragon = true, type = 'renown'}, - [2510] = {name = 'Valdrakken Akkord', paragon = true, type = 'renown'}, - [2511] = {name = 'Iskaara Tuskar', paragon = true, type = 'renown'}, - [2517] = {name = 'Wrathion', paragon = true, type = 'friend'}, - [2518] = {name = 'Sabellian', paragon = true, type = 'friend'}, + [2503] = {name = 'Maruuk Centaur', paragon = true, type = 'renown', warband = 'unique'}, + [2507] = {name = 'Dragonscale Expedition', paragon = true, type = 'renown', warband = 'unique'}, + [2510] = {name = 'Valdrakken Akkord', paragon = true, type = 'renown', warband = 'unique'}, + [2511] = {name = 'Iskaara Tuskar', paragon = true, type = 'renown', warband = 'unique'}, + [2517] = {name = 'Wrathion', paragon = true, type = 'friend', warband = 'unique'}, + [2518] = {name = 'Sabellian', paragon = true, type = 'friend', warband = 'unique'}, [2526] = {name = 'Winterpelt Furbolg', paragon = true}, - [2544] = {name = 'Artisan\'s Consortium', paragon = true, type = 'friend'}, - [2550] = {name = 'Cobalt Assembly', paragon = true, type = 'friend'}, - [2553] = {name = 'Soridormi', paragon = true, type = 'friend'}, - [2564] = {name = 'Loamm Niffen', paragon = true, type = 'renown'}, + [2544] = {name = 'Artisan\'s Consortium', paragon = true, type = 'friend', warband = 'unique'}, + [2550] = {name = 'Cobalt Assembly', paragon = true, type = 'friend', warband = 'unique'}, + [2553] = {name = 'Soridormi', paragon = true, type = 'friend', warband = 'unique'}, + [2564] = {name = 'Loamm Niffen', paragon = true, type = 'renown', warband = 'unique'}, [2568] = {name = 'Glimmerogg Racer'}, - [2574] = {name = 'Dream Wardens', paragon = true, type = 'renown'}, - [2593] = {name = 'Keg Leg\'s Crew', type = 'renown'}, - [2590] = {name = 'Council of Dornogal', paragon = true, type = 'renown',}, - [2570] = {name = 'Hallowfall Arathi', paragon = true, type = 'renown'}, - [2594] = {name = 'The Assembly of the Deeps', paragon = true, type = 'renown'}, - [2600] = {name = 'The Severed Threads', paragon = true, type = 'renown'}, - [2605] = {name = 'The General', type = 'friend'}, - [2607] = {name = 'The Vizier', type = 'friend'}, - [2601] = {name = 'The Weaver', type = 'friend'}, - [2640] = {name = 'Brann Bronzebeard', type = 'friend'}, + [2574] = {name = 'Dream Wardens', paragon = true, type = 'renown', warband = 'unique'}, + [2593] = {name = 'Keg Leg\'s Crew', type = 'renown', warband = 'unique'}, + [2590] = {name = 'Council of Dornogal', paragon = true, type = 'renown', warband = 'unique'}, + [2570] = {name = 'Hallowfall Arathi', paragon = true, type = 'renown', warband = 'unique'}, + [2594] = {name = 'The Assembly of the Deeps', paragon = true, type = 'renown', warband = 'unique'}, + [2600] = {name = 'The Severed Threads', paragon = true, type = 'renown', warband = 'unique'}, + [2605] = {name = 'The General',paragon = true, type = 'friend', warband = 'unique'}, + [2607] = {name = 'The Vizier',paragon = true, type = 'friend', warband = 'unique'}, + [2601] = {name = 'The Weaver',paragon = true, type = 'friend', warband = 'unique'}, + [2640] = {name = 'Brann Bronzebeard', type = 'friend', warband = 'unique'}, } PermoksAccountManager.currency = { diff --git a/modules/factions.lua b/modules/factions.lua index e88b1fc..5923bc5 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -580,6 +580,18 @@ local labelRows = { }, } +local friendshipStandings = { + Stranger = "1/9", + Acquaintance = "2/9", + Crony = "3/9", + Accomplice = "4/9", + Collaborator = "5/9", + Accessory = "6/9", + Abettor = "7/9", + Conspirator = "8/9", + Mastermind = "9/9" +} + local GetFriendshipReputation = C_GossipInfo and C_GossipInfo.GetFriendshipReputation or GetFriendshipReputation --TODO: Rework after DF launch local function GetFactionOrFriendshipInfo(factionId, factionType) @@ -625,11 +637,24 @@ local function GetFactionOrFriendshipInfo(factionId, factionType) return barValue - barMin, (barMax - barMin), standing, name, hasReward, renown end +local function convertStanding(standing) + if friendshipStandings[standing] then + return friendshipStandings[standing] + else + return standing:sub(1,1) + end +end + local function UpdateFactions(charInfo) local self = PermoksAccountManager charInfo.factions = charInfo.factions or {} + if self.isRetail then + self.warbandData.factions = self.warbandData.factions or {} + end + local factions = charInfo.factions + local warbandFactions = self.warbandData.factions for factionId, info in pairs(self.factions) do local current, maximum, standing, name, hasReward, renown = GetFactionOrFriendshipInfo(factionId, info.type) @@ -644,12 +669,28 @@ local function UpdateFactions(charInfo) factions[factionId].exalted = not info.paragon and standing == 8 factions[factionId].maximum = info.type == "friend" and current >= maximum + if warbandFactions then + warbandFactions[factionId] = warbandFactions[factionId] or {} + warbandFactions[factionId].standing = standing + warbandFactions[factionId].current = current + warbandFactions[factionId].max = maximum + warbandFactions[factionId].type = info.type + warbandFactions[factionId].hasReward = hasReward + warbandFactions[factionId].renown = renown + warbandFactions[factionId].exalted = not info.paragon and standing == 8 + warbandFactions[factionId].maximum = info.type == "friend" and current >= maximum + end + if not info.localName then info.localName = name end end end +local function UpdateFaction(factionInfo) + +end + local function Update(charInfo) UpdateFactions(charInfo) end @@ -691,6 +732,6 @@ function PermoksAccountManager:CreateFactionString(factionInfo) if factionInfo.renown then return string.format('%s - %s /%s', BLUE_FONT_COLOR:WrapTextInColorCode(factionInfo.renown), AbbreviateNumbers(factionInfo.current or 0), AbbreviateNumbers(factionInfo.max or 0)) elseif factionInfo.max then - return string.format('|c%s%s|r/%s |cff%02X%02X%02X%s|r', color, AbbreviateLargeNumbers(factionInfo.current or 0), AbbreviateNumbers(factionInfo.max or 0), standingColor.r, standingColor.g, standingColor.b, standing:sub(1,1)) + return string.format('|c%s%s|r/%s |cff%02X%02X%02X%s|r', color, AbbreviateLargeNumbers(factionInfo.current or 0), AbbreviateNumbers(factionInfo.max or 0), standingColor.r, standingColor.g, standingColor.b, convertStanding(standing)) end end diff --git a/modules/quests.lua b/modules/quests.lua index e9e1002..b1e37c5 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -981,15 +981,20 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - -- weekly_meta = { -- -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later - -- IDs = {82746, 82712, 82711, 82709, 82706, 82707, 82678, 82679}, - -- label = 'Weekly Meta', - -- type = 'quest', - -- questType = 'weekly', - -- visibility = 'visible', - -- group = 'resetWeekly', - -- version = WOW_PROJECT_MAINLINE - -- }, + weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Need better solution + IDs = {82746, 82712, 82711, 82709, 82706, 82707, 82678, 82679}, + label = '(WIP) Weekly Meta', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 8, + version = WOW_PROJECT_MAINLINE + }, archaic_cypher_key = { IDs = {84370}, label = 'Archaic Cypher Key', From 1dd993d19aa31aab053342f747c954ea2933ae21 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Wed, 21 Aug 2024 16:28:21 +0200 Subject: [PATCH 028/138] moved the standing cuntion a somewhere else --- modules/factions.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/factions.lua b/modules/factions.lua index 5923bc5..f268d17 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -637,14 +637,6 @@ local function GetFactionOrFriendshipInfo(factionId, factionType) return barValue - barMin, (barMax - barMin), standing, name, hasReward, renown end -local function convertStanding(standing) - if friendshipStandings[standing] then - return friendshipStandings[standing] - else - return standing:sub(1,1) - end -end - local function UpdateFactions(charInfo) local self = PermoksAccountManager @@ -708,6 +700,14 @@ local payload = { } PermoksAccountManager:AddModule(module, payload) +local function convertStanding(standing) + if friendshipStandings[standing] then + return friendshipStandings[standing] + else + return standing:sub(1,1) + end +end + function PermoksAccountManager:CreateFactionString(factionInfo) if not factionInfo then return From 189e7124f5d9150ea95189c265f8cdfab247b3e7 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Wed, 21 Aug 2024 16:40:00 +0200 Subject: [PATCH 029/138] added mapping for old friends standings, too --- modules/factions.lua | 56 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/modules/factions.lua b/modules/factions.lua index f268d17..51774c8 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -581,15 +581,53 @@ local labelRows = { } local friendshipStandings = { - Stranger = "1/9", - Acquaintance = "2/9", - Crony = "3/9", - Accomplice = "4/9", - Collaborator = "5/9", - Accessory = "6/9", - Abettor = "7/9", - Conspirator = "8/9", - Mastermind = "9/9" + -- Ve'nari + ["Dubious"] = "1/6", + ["Apprehensive"] = "2/6", + ["Tentative"] = "3/6", + ["Ambivalent"] = "4/6", + ["Cordial"] = "5/6", + ["Appreciative"] = "6/6", + + -- Black Dragons / Severed Threads Leaders + ["Stranger"] = "1/9", + ["Acquaintance"] = "2/9", + ["Crony"] = "3/9", + ["Accomplice"] = "4/9", + ["Collaborator"] = "5/9", + ["Accessory"] = "6/9", + ["Abettor"] = "7/9", + ["Conspirator"] = "8/9", + ["Mastermind"] = "9/9", + + -- Archivists + ["Tier 1"] = "1/6", + ["Tier 2"] = "2/6", + ["Tier 3"] = "3/6", + ["Tier 4"] = "4/6", + ["Tier 5"] = "5/6", + ["Tier 6"] = "6/6", + + -- Consortium + ["Neutral"] = "1/5", + ["Preferred"] = "2/5", + ["Respected"] = "3/5", + ["Valued"] = "4/5", + ["Esteemed"] = "5/5", + + -- Soridormi + ["Anomaly"] = "1/5", + ["Future Friend"] = "2/5", + ["Rift-Mender"] = "3/5", + ["Timewalker"] = "4/5", + ["Legend"] = "5/5", + + -- Cobalt Assembly + ["Empty"] = "1/5", + ["Low"] = "2/5", + ["Medium"] = "3/5", + ["High"] = "4/5", + ["Maximum"] = "5/5", } local GetFriendshipReputation = C_GossipInfo and C_GossipInfo.GetFriendshipReputation or GetFriendshipReputation From 36c880b01970b56ffd611d8fd18b81496864ac7b Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Wed, 21 Aug 2024 17:09:08 +0200 Subject: [PATCH 030/138] some cleanup --- PermoksAccountManager.lua | 3 --- modules/factions.lua | 38 ++++++++++++++++---------------------- 2 files changed, 16 insertions(+), 25 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 0df9936..a5c5e26 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -1013,9 +1013,6 @@ function PermoksAccountManager:ResetActivities(db, data, daily, weekly, biweekly if daily then self:ResetDailyActivities(db, data) - - -- DEBUG LINE DELETE LATER - print('PAM: Daily activities gracefully reset.') end if biweekly then diff --git a/modules/factions.lua b/modules/factions.lua index 51774c8..bf8066c 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -675,6 +675,20 @@ local function GetFactionOrFriendshipInfo(factionId, factionType) return barValue - barMin, (barMax - barMin), standing, name, hasReward, renown end +local function UpdateFaction(factionTable, factionId, standing, current, maximum, info, hasReward, renown) + + factionTable[factionId] = factionTable[factionId] or {} + local faction = factionTable[factionId] + faction.standing = standing + faction.current = current + faction.max = maximum + faction.type = info.type + faction.hasReward = hasReward + faction.renown = renown + faction.exalted = not info.paragon and standing == 8 + faction.maximum = info.type == "friend" and current >= maximum +end + local function UpdateFactions(charInfo) local self = PermoksAccountManager @@ -689,26 +703,10 @@ local function UpdateFactions(charInfo) for factionId, info in pairs(self.factions) do local current, maximum, standing, name, hasReward, renown = GetFactionOrFriendshipInfo(factionId, info.type) - factions[factionId] = factions[factionId] or {} - factions[factionId].standing = standing - factions[factionId].current = current - factions[factionId].max = maximum - factions[factionId].type = info.type - factions[factionId].hasReward = hasReward - factions[factionId].renown = renown - factions[factionId].exalted = not info.paragon and standing == 8 - factions[factionId].maximum = info.type == "friend" and current >= maximum + UpdateFaction(factions, factionId, standing, current, maximum, info, hasReward, renown) if warbandFactions then - warbandFactions[factionId] = warbandFactions[factionId] or {} - warbandFactions[factionId].standing = standing - warbandFactions[factionId].current = current - warbandFactions[factionId].max = maximum - warbandFactions[factionId].type = info.type - warbandFactions[factionId].hasReward = hasReward - warbandFactions[factionId].renown = renown - warbandFactions[factionId].exalted = not info.paragon and standing == 8 - warbandFactions[factionId].maximum = info.type == "friend" and current >= maximum + UpdateFaction(warbandFactions, factionId, standing, current, maximum, info, hasReward, renown) end if not info.localName then @@ -717,10 +715,6 @@ local function UpdateFactions(charInfo) end end -local function UpdateFaction(factionInfo) - -end - local function Update(charInfo) UpdateFactions(charInfo) end From 0d87674279a6a48be77acd14516d29098aba7d0a Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 22 Aug 2024 18:05:44 +0200 Subject: [PATCH 031/138] Fix creating multiple buttons when adding/removing labels --- PermoksAccountManager.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index a5c5e26..4a11b09 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -1580,10 +1580,6 @@ function PermoksAccountManager:UpdateRows(childs, rows, anchorFrame, enabledChil local row = (not self.isLayoutDirty and rows[row_identifier]) or CreateLabelButton('row', anchorFrame, labelRow, enabledRows) if (not isWarband and labelRow.warband ~= 'unique') or (isWarband and labelRow.warband) then if self.isLayoutDirty or not rows[row_identifier] then - if rows[row_identifier] then - rows[row_identifier]:Hide() - end - rows[row_identifier] = row local module = self:GetModuleForRow(row_identifier) local moduleLabelFunction = module and module.labelFunctions[labelRow.type] @@ -1648,6 +1644,11 @@ function PermoksAccountManager:UpdateRows(childs, rows, anchorFrame, enabledChil end end + if rows[row_identifier] then + rows[row_identifier]:Hide() + end + rows[row_identifier] = row + UpdateButtonTexture(row, enabledRows, row_identifier, data.guid) From e6409ba5bcdb189ac79ec36ca8ce0c7428eaf1b8 Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 22 Aug 2024 18:14:13 +0200 Subject: [PATCH 032/138] Add 10 seconds delay to the quest update --- modules/quests.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/quests.lua b/modules/quests.lua index b1e37c5..f3add4a 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1602,9 +1602,11 @@ end -- module init local function Update(charInfo) - UpdateAllQuests(charInfo) - UpdateCurrentlyActiveQuests(charInfo) - UpdateCataDailies(charInfo) + C_Timer.After(10, function() + UpdateAllQuests(charInfo) + UpdateCurrentlyActiveQuests(charInfo) + UpdateCataDailies(charInfo) + end) end do From ca72b79c237bf4a9cac8392eba10d13d6773c9e4 Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 22 Aug 2024 18:27:51 +0200 Subject: [PATCH 033/138] Reset Categories once when logging in with the new version --- PermoksAccountManager.lua | 118 +++----------------------------------- 1 file changed, 7 insertions(+), 111 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 4a11b09..d630b45 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -38,7 +38,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALVERSION = 33 +local INTERNALTWWVERSION = 1 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -612,11 +612,11 @@ function PermoksAccountManager:CheckForModernize() end self.db.global.internalCataVersion = INTERNALCATAVERSION else - local internalVersion = self.db.global.internalVersion or INTERNALVERSION - if internalVersion < INTERNALVERSION then + local internalVersion = self.db.global.internalTWWVersion + if (internalVersion or 0) < INTERNALTWWVERSION then self:Modernize(internalVersion) end - self.db.global.internalVersion = INTERNALVERSION + self.db.global.internalTWWVersion = INTERNALTWWVERSION end end @@ -674,112 +674,8 @@ end function PermoksAccountManager:Modernize(oldInternalVersion) local db = self.db - if (oldInternalVersion or 0) < 2 then - self:UpdateDefaultCategories('currentdaily') - oldInternalVersion = 2 - end - - if oldInternalVersion < 3 then - for _, accountInfo in pairs(db.global.accounts) do - for _, altData in pairs(accountInfo.data) do - altData.sanctumInfo = nil - end - end - oldInternalVersion = 3 - end - - if oldInternalVersion < 4 then - db.global.options.buttons.widthPerAlt = db.global.options.other.widthPerAlt or 120 - oldInternalVersion = 4 - end - - if oldInternalVersion < 5 then - self:AddLabelToDefaultCategory('general', 'tw_keystone', 5.1) - - local sortKey = self.isBC and 'charLevel' or 'ilevel' - if true then - return - end - for _, accountInfo in pairs(db.global.accounts) do - local order = 1 - for _, altData in self.spairs( - accountInfo.data, - function(t, a, b) - if t[a] and t[b] then - if t[a].order and t[b].order then - return t[a].order < t[b].order - end - return t[a][sortKey] > t[b][sortKey] - end - end - ) do - altData.order = order - order = order + 1 - end - end - oldInternalVersion = 5 - end - - if oldInternalVersion < 7 then - for _, accountInfo in pairs(db.global.accounts) do - for _, altData in pairs(accountInfo.data) do - altData.instanceInfo = nil - end - end - self:Print("Reset instance info for every character.") - oldInternalVersion = 7 - end - - if oldInternalVersion < 26 then - self:UpdateDefaultCategories('currentweekly') - self:UpdateDefaultCategories('currentdaily') - self:UpdateDefaultCategories('general') - self:UpdateDefaultCategories('renown') - self:AddLabelToDefaultCategory('raid', 'aberrus_the_shadowed_crucible') - self:AddLabelToDefaultCategory('raid', 'amirdrassil_the_dreams_hope') - end - - if oldInternalVersion < 27 then - self:AddLabelToDefaultCategory('currentweekly', 'dream_shipments', 4) - end - - if oldInternalVersion < 28 then - self:AddLabelToDefaultCategory('currentweekly', 'dream_shipments', 4) - end - - if oldInternalVersion < 29 then - self:AddLabelToDefaultCategory('general', 'dream_infusion') - self:AddLabelToDefaultCategory('currentweekly', 'sparks_of_life', 5) - end - - if oldInternalVersion < 30 then - self:AddLabelToDefaultCategory('currentweekly', 'dreamsurge_weekly', 13) - self:AddLabelToDefaultCategory('currentweekly', 'time_rift', 14) - end - - if oldInternalVersion < 31 then - self:AddLabelToDefaultCategory('currentweekly', 'time_rift_pod', 15) - end - - if oldInternalVersion < 32 then - self:AddLabelToDefaultCategory('vault', 'great_vault_reward_available') - end - - if oldInternalVersion < 33 then - self:AddLabelToDefaultCategory('general', 'champion_crest') - self:AddLabelToDefaultCategory('general', 'veteran_crest') - self:AddLabelToDefaultCategory('general', 'hero_crest') - self:AddLabelToDefaultCategory('general', 'myth_crest') - self:AddLabelToDefaultCategory('general', 'spark_awakening', 15) - self:AddLabelToDefaultCategory('renown', 'keg_legs_crew', 7) - self:AddLabelToDefaultCategory('renown', 'soridormi', 16) - end - - if oldInternalVersion < 34 then - self:AddLabelToDefaultCategory('general', 'residual_memories') - self:AddLabelToDefaultCategory('general', 'radiant_echoes_prepatch_daylies') - self:AddLabelToDefaultCategory('general', 'radiant_echoes_cache') - self:AddLabelToDefaultCategory('currentweekly', 'big_dig', 16) + if not oldInternalVersion then + PermoksAccountManager:ResetCategories() end end @@ -1648,7 +1544,7 @@ function PermoksAccountManager:UpdateRows(childs, rows, anchorFrame, enabledChil rows[row_identifier]:Hide() end rows[row_identifier] = row - + UpdateButtonTexture(row, enabledRows, row_identifier, data.guid) From 5b34475cc92119e873823f80e4bf998614b50c6c Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 26 Aug 2024 08:29:21 +0200 Subject: [PATCH 034/138] added missing db entries that somehow got lost in the merge --- db/db.lua | 297 +++++++++++++++++++++++++++++++++++++++++++++ modules/quests.lua | 2 +- 2 files changed, 298 insertions(+), 1 deletion(-) diff --git a/db/db.lua b/db/db.lua index 74fb0de..b2ae0cc 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1542,6 +1542,303 @@ PermoksAccountManager.quests = { [82676] = {questType = 'weekly', log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, [78938] = {questType = 'weekly', log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, }, + + -- 11.0 The War Within + -- Weekly World Activities + tww_world_boss = {-- PLACEHOLDER: wrong quest IDs + [999990] = {questType = 'weekly'}, -- Kordac, the Dormant Protector + [999991] = {questType = 'weekly'}, -- Aggregation of Horrors + [999992] = {questType = 'weekly'}, -- Shurrai, Atrocity of the Undersea + [999993] = {questType = 'weekly'}, -- Orta, the Broken Mountain + }, + worldsoul_weekly = { + [82452] = {questType = 'weekly', log = true}, -- Worldsoul: World Quests + [82453] = {questType = 'weekly', log = true}, -- Worldsoul: Encore! + [82458] = {questType = 'weekly', log = true}, -- Worldsoul: Renown + [82482] = {questType = 'weekly', log = true}, -- Worldsoul: Snuffling + [82483] = {questType = 'weekly', log = true}, -- Worldsoul: Spreading the Light + [82485] = {questType = 'weekly', log = true}, -- Worldsoul: Cinderbrew Meadery + [82486] = {questType = 'weekly', log = true}, -- Worldsoul: The Rookery + [82487] = {questType = 'weekly', log = true}, -- Worldsoul: The Stonevault + [82488] = {questType = 'weekly', log = true}, -- Worldsoul: Darkflame Cleft + [82489] = {questType = 'weekly', log = true}, -- Worldsoul: The Dawnbreaker + [82490] = {questType = 'weekly', log = true}, -- Worldsoul: Priory of the Sacred Flame + [82491] = {questType = 'weekly', log = true}, -- Worldsoul: Ara-Kara, City of Echoes + [82492] = {questType = 'weekly', log = true}, -- Worldsoul: City of Threads + [82493] = {questType = 'weekly', log = true}, -- Worldsoul: The Dawnbreaker + [82494] = {questType = 'weekly', log = true}, -- Worldsoul: Ara-Kara, City of Echoes + [82495] = {questType = 'weekly', log = true}, -- Worldsoul: Cinderbrew Meadery + [82496] = {questType = 'weekly', log = true}, -- Worldsoul: City of Threads + [82497] = {questType = 'weekly', log = true}, -- Worldsoul: The Stonevault + [82498] = {questType = 'weekly', log = true}, -- Worldsoul: Darkflame Cleft + [82499] = {questType = 'weekly', log = true}, -- Worldsoul: Priory of the Sacred Flame + [82500] = {questType = 'weekly', log = true}, -- Worldsoul: The Rookery + [82501] = {questType = 'weekly', log = true}, -- Worldsoul: The Dawnbreaker + [82502] = {questType = 'weekly', log = true}, -- Worldsoul: Ara-Kara, City of Echoes + [82503] = {questType = 'weekly', log = true}, -- Worldsoul: Cinderbrew Meadery + [82504] = {questType = 'weekly', log = true}, -- Worldsoul: City of Threads + [82505] = {questType = 'weekly', log = true}, -- Worldsoul: The Stonevault + [82506] = {questType = 'weekly', log = true}, -- Worldsoul: Darkflame Cleft + [82507] = {questType = 'weekly', log = true}, -- Worldsoul: Priory of the Sacred Flame + [82508] = {questType = 'weekly', log = true}, -- Worldsoul: The Rookery + [82509] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace + [82510] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace + [82511] = {questType = 'weekly', log = true}, -- Worldsoul: Awakening Machine + [82512] = {questType = 'weekly', log = true}, -- Worldsoul: World Boss + [82516] = {questType = 'weekly', log = true}, -- Worldsoul: Forging a Pact + [82659] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace + }, + weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later + [82746] = {questType = 'weekly', log = true}, -- Delves: Breaking Tough to Loot Stuff + [82712] = {questType = 'weekly', log = true}, -- Delves: Trouble Up and Down Khaz Algar + [82711] = {questType = 'weekly', log = true}, -- Delves: Lost and Found + [82709] = {questType = 'weekly', log = true}, -- Delves: Percussive Archaeology + [82706] = {questType = 'weekly', log = true}, -- Delves: Khaz Algar Research + [82707] = {questType = 'weekly', log = true}, -- Delves: Earthen Defense + [82678] = {questType = 'weekly', log = true}, -- Archives: The First Disc + [82679] = {questType = 'weekly', log = true}, -- Archives: Seeking History + }, + archaic_cypher_key = { + [84370] = {questType = 'weekly', warband = true, log = true}, -- The Key to Success + }, + the_theater_troupe = { + [83240] = {questType = 'weekly', warband = true, log = true}, -- The Theater Troupe + }, + rollin_down_in_the_deeps = { + [82946] = {questType = 'weekly', warband = true, log = true}, -- Rollin' Down in the Deeps (Digging) + }, + gearing_up_for_trouble = { + [83333] = {questType = 'weekly', log = true}, -- Gearing Up for Trouble (Awakening the Machine Weekly) + }, + awakening_the_machine = { + [84642] = {questType = 'weekly', warband = true, log = true}, -- cache 1 + [84644] = {questType = 'weekly', warband = true, log = true}, -- cache 2 + [84646] = {questType = 'weekly', warband = true, log = true}, -- cache 3 + [84647] = {questType = 'weekly', warband = true, log = true}, -- cache 4 + }, + spreading_the_light = { + [76586] = {questType = 'weekly', warband = true, log = true}, -- Hallowfall Event in Dunelle's Kindness + }, + lesser_keyflame_weeklies = { + [76169] = {questType = 'weekly', warband = true, log = true}, -- Glow in the Dark + [76394] = {questType = 'weekly', warband = true, log = true}, -- Shadows of Flavor + [76600] = {questType = 'weekly', warband = true, log = true}, -- Right Between the Gyro-Optics + [76733] = {questType = 'weekly', warband = true, log = true}, -- Tater Trawl + [76997] = {questType = 'weekly', warband = true, log = true}, -- Lost in Shadows + [78656] = {questType = 'weekly', warband = true, log = true}, -- Hose It Down + [78915] = {questType = 'weekly', warband = true, log = true}, -- Squashing the Threat + [78933] = {questType = 'weekly', warband = true, log = true}, -- The Sweet Eclipse + [78972] = {questType = 'weekly', warband = true, log = true}, -- Harvest Havoc + [79158] = {questType = 'weekly', warband = true, log = true}, -- Seeds of Salvation + [79173] = {questType = 'weekly', warband = true, log = true}, -- Supply the Effort + [79216] = {questType = 'weekly', warband = true, log = true}, -- Web of Manipulation + [79346] = {questType = 'weekly', warband = true, log = true}, -- Chew On That + [80004] = {questType = 'weekly', warband = true, log = true}, -- Crab Grab + [80562] = {questType = 'weekly', warband = true, log = true}, -- Blossoming Delight + [81574] = {questType = 'weekly', warband = true, log = true}, -- Sporadic Growth + [81632] = {questType = 'weekly', warband = true, log = true}, -- Lizard Looters + }, + greater_keyflame_weeklies = { -- not added to default categories because shit rewards + [78590] = {questType = 'weekly', log = true}, -- Cutting Edge + [78657] = {questType = 'weekly', log = true}, -- The Midnight Sentry + [79329] = {questType = 'weekly', log = true}, -- Glowing Harvest + [79380] = {questType = 'weekly', log = true}, -- Bog Beast Banishment + [79469] = {questType = 'weekly', log = true}, -- Lurking Below + [79470] = {questType = 'weekly', log = true}, -- Waters of War + [79471] = {questType = 'weekly', log = true}, -- Bleak Sand + }, + severed_threads_pact_chosen = { + [80544] = {questType = 'weekly', warband = true, log = true}, -- Eyes of the Weaver + }, + severed_threads_pact_weekly = { + [80670] = {questType = 'weekly', warband = true, log = true}, -- Eyes of the Weaver + [80671] = {questType = 'weekly', warband = true, log = true}, -- Blade of the General + [80672] = {questType = 'weekly', warband = true, log = true}, -- Hand of the Vizier + }, + + -- Weekly Rares - NEED TO CONFIRM THEY GIVE REPUTATION + isle_of_dorne_rares = { + [82196] = {questType = 'weekly', warband = true, name = 'Alunira'}, + [81923] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, + [81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, + [81902] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, + [81903] = {questType = 'weekly', warband = true, name = 'Shallowshell the Clacker'}, + [81893] = {questType = 'weekly', warband = true, name = 'Bloodmaw'}, + [81892] = {questType = 'weekly', warband = true, name = 'Springbubble'}, + [79685] = {questType = 'weekly', warband = true, name = 'Sandres the Relicbearer'}, + [81920] = {questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix'}, + [81895] = {questType = 'weekly', warband = true, name = 'Emperor Pitfang'}, + [81907] = {questType = 'weekly', warband = true, name = 'Escaped Cutthroat'}, + [81921] = {questType = 'weekly', warband = true, name = 'Matriarch Charfuria'}, + [81901] = {questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus'}, + [81899] = {questType = 'weekly', warband = true, name = 'Gar\'loc'}, + [81904] = {questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched'}, + [78619] = {questType = 'weekly', warband = true, name = 'Rustul Titancap'}, + [81905] = {questType = 'weekly', warband = true, name = 'Flamekeeper Graz'}, + [81897] = {questType = 'weekly', warband = true, name = 'Plaguehart'}, + [81922] = {questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful'}, + [82204] = {questType = 'weekly', warband = true, name = 'Kereke'}, + [82203] = {questType = 'weekly', warband = true, name = 'Zovex'}, + [82205] = {questType = 'weekly', warband = true, name = 'Rotfist'}, + }, + ringing_deeps_rares = { + [81674] = {questType = 'weekly', warband = true, name = 'Automaxor'}, + [81562] = {questType = 'weekly', warband = true, name = 'Charmonger'}, + [80547] = {questType = 'weekly', warband = true, name = 'King Splash'}, + [80505] = {questType = 'weekly', warband = true, name = 'Candleflyer Captain'}, + [80560] = {questType = 'weekly', warband = true, name = 'Cragmund'}, + [80536] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, + [80557] = {questType = 'weekly', warband = true, name = 'Aquellion'}, + [80506] = {questType = 'weekly', warband = true, name = 'Zilthara'}, + [81511] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, + [80507] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, + [81485] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, + [81563] = {questType = 'weekly', warband = true, name = 'Rampaging Blight'}, + [80574] = {questType = 'weekly', warband = true, name = 'Trungal'}, + [81652] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, + [81648] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, + [80003] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, + [81566] = {questType = 'weekly', warband = true, name = 'Deathbound Husk'}, + [81633] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, + }, + hallowfall_rares = { + [81756] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, + [82557] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, + [81791] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, + [80009] = {questType = 'weekly', warband = true, name = 'The Taskmaker'}, + [81761] = {questType = 'weekly', warband = true, name = 'Grimslice'}, + [81849] = {questType = 'weekly', warband = true, name = 'Strength of Beledar'}, + [80006] = {questType = 'weekly', warband = true, name = 'Ixlorb the Spinner'}, + [82565] = {questType = 'weekly', warband = true, name = 'Murkspike'}, + [82559] = {questType = 'weekly', warband = true, name = 'Deathpetal'}, + [80011] = {questType = 'weekly', warband = true, name = 'Deepfiend Azellix'}, + [82562] = {questType = 'weekly', warband = true, name = 'Duskshadow'}, + [81881] = {questType = 'weekly', warband = true, name = 'Funglour'}, + [81853] = {questType = 'weekly', warband = true, name = 'Sir Alastair Purefire'}, + [81836] = {questType = 'weekly', warband = true, name = 'Horror of the Shallows'}, + [79271] = {questType = 'weekly', warband = true, name = 'Sloshmuck'}, + [80010] = {questType = 'weekly', warband = true, name = 'Murkshade'}, + [82560] = {questType = 'weekly', warband = true, name = 'Croakit'}, + [81882] = {questType = 'weekly', warband = true, name = 'Pride of Beledar'}, + [82558] = {questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker'}, + [82561] = {questType = 'weekly', warband = true, name = 'Toadstomper'}, + [82564] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, + [82566] = {questType = 'weekly', warband = true, name = 'Ravageant'}, + }, + azj_kahet_rares = { + [81702] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, + [81703] = {questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700'}, + [81695] = {questType = 'weekly', warband = true, name = 'Abyssal Devourer'}, + [81706] = {questType = 'weekly', warband = true, name = 'Maddened Siegebomber'}, + [81700] = {questType = 'weekly', warband = true, name = 'Vilewing'}, + [81699] = {questType = 'weekly', warband = true, name = 'Webspeaker Grik\'ik'}, + [81704] = {questType = 'weekly', warband = true, name = 'Cha\'tak'}, + [81707] = {questType = 'weekly', warband = true, name = 'Enduring Gutterface'}, + [81705] = {questType = 'weekly', warband = true, name = 'Monstrous Lasharoth'}, + [81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik'}, + [78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, + [82037] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, + [82078] = {questType = 'weekly', warband = true, name = 'Kaheti Bladeguard'}, + [82077] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, + [82036] = {questType = 'weekly', warband = true, name = 'Harvester Qixt'}, + [82035] = {questType = 'weekly', warband = true, name = 'The Oozekhan'}, + [82034] = {questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed'}, + [81634] = {questType = 'weekly', warband = true, name = 'The Groundskeeper'}, + [81701] = {questType = 'weekly', warband = true, name = 'Xishorr'}, + }, + + -- Professions + knowledge_tww_treasures = { + [83253] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225234}, -- Alchemical Sediment + [83255] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225235}, -- Deepstone Crucible + [83256] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225233}, -- Dense Bladestone + [83257] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225232}, -- Coreway Billet + [83258] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225231}, -- Powdered Fulgurance + [83259] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225230}, -- Crystalline Repository + [83260] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225228}, -- Rust-Locked Mechanism + [83261] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225229}, -- Earthen Induction Coil + [83264] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225226}, -- Striated Inkstone + [83262] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225227}, -- Wax-sealed Records + [83265] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225224}, -- Diaphanous Gem Shards + [83266] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225225}, -- Deepstone Fragment + [83268] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225222}, -- Stone-Leather Swatch + [83267] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225223}, -- Sturdy Nerubian Carapace + [83270] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225220}, -- Chitin Needle + [83269] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225221}, -- Spool of Webweave + }, + knowledge_tww_treatise = { + [83725] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy'}, + [83726] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing'}, + [83727] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, + [83728] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering'}, + [83730] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription'}, + [83731] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting'}, + [83732] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking'}, + [83735] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring'}, + [83729] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, + [83733] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, + [83734] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, + }, + knowledge_tww_gather = { + [81416] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 1 + [81417] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 2 + [81418] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 3 + [81419] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 4 + [81420] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 5 + [81421] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Rose + + [83054] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 1 + [83055] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 2 + [83056] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 3 + [83057] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 4 + [83058] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 5 + [83059] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Erosion Polished Slate + + [81459] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 1 + [81460] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 2 + [81461] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 3 + [81462] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 4 + [81463] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 5 + [81464] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Abyssal Fur + + [84290] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 1 + [84291] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 2 + [84292] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 3 + [84293] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 4 + [84294] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 5 + [84295] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Gleaming Telluric Crystal + }, + knowledge_tww_weeklies_quest = { + [84133] = {questType = 'weekly', profession = 'Alchemy', description = 'Alchemy Services Requested'}, + [84127] = {questType = 'weekly', profession = 'Blacksmithing', description = 'Blacksmithing Services Requested'}, + + [84085] = {questType = 'weekly', profession = 'Enchanting', description = 'The Power of Potential'}, + [84086] = {questType = 'weekly', profession = 'Enchanting', description = 'A Rare Necessity'}, + [84134] = {questType = 'weekly', profession = 'Enchanting', description = 'Enchanting Services Requested'}, + [84084] = {questType = 'weekly', profession = 'Enchanting', description = 'Just a Pinch'}, + + [84128] = {questType = 'weekly', profession = 'Engineering', description = 'Engineering Services Requested'}, + [84129] = {questType = 'weekly', profession = 'Inscription', description = 'Inscription Services Requested'}, + [84130] = {questType = 'weekly', profession = 'Jewelcrafting', description = 'Jewelcrafting Services Requested'}, + [84131] = {questType = 'weekly', profession = 'Leatherworking', description = 'Leatherworking Services Requested'}, + [84132] = {questType = 'weekly', profession = 'Tailoring', description = 'Tailoring Services Requested'}, + + [82916] = {questType = 'weekly', profession = 'Herbalism', description = 'When Fungi Bloom'}, + [82958] = {questType = 'weekly', profession = 'Herbalism', description = 'Little Blessings'}, + [82962] = {questType = 'weekly', profession = 'Herbalism', description = 'A handful of Luredrops'}, + [82965] = {questType = 'weekly', profession = 'Herbalism', description = 'Light and Shadow'}, + [82970] = {questType = 'weekly', profession = 'Herbalism', description = 'A Bloom and A Blossom'}, + + [83102] = {questType = 'weekly', profession = 'Mining', description = 'Bismuth is Business'}, + [83103] = {questType = 'weekly', profession = 'Mining', description = 'Acquiring Aqirite'}, + [83104] = {questType = 'weekly', profession = 'Mining', description = 'Identifying Ironclaw'}, + [83106] = {questType = 'weekly', profession = 'Mining', description = 'Null Pebble Excavation'}, + + [82992] = {questType = 'weekly', profession = 'Skinning', description = 'Stormcharged Goods'}, + [82993] = {questType = 'weekly', profession = 'Skinning', description = 'From Shadows'}, + [83097] = {questType = 'weekly', profession = 'Skinning', description = 'Cinder and Storm'}, + [83098] = {questType = 'weekly', profession = 'Skinning', description = 'Snap and Crackle'}, + }, } PermoksAccountManager.locale = { diff --git a/modules/quests.lua b/modules/quests.lua index 4f0c0c3..d3da7bd 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1250,7 +1250,7 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - knowledge_tww__weeklies_quest = { + knowledge_tww_weeklies_quest = { label = 'Profession Quests', type = 'quest', questType = 'weekly', From 29b7b5ea248d09be0caeb7d96b9bd5ffa381b411 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 26 Aug 2024 11:02:42 +0200 Subject: [PATCH 035/138] replaced all rare mob questIDs with the corresponding questID responsible for reputation. commented also if it's a (suspected) one-time-kill or weekly reset in the db.lua to cross-check after the weekly reset --- db/db.lua | 166 +++++++++++++++++++++++---------------------- modules/quests.lua | 4 +- 2 files changed, 87 insertions(+), 83 deletions(-) diff --git a/db/db.lua b/db/db.lua index b2ae0cc..0a43f37 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1658,93 +1658,97 @@ PermoksAccountManager.quests = { -- Weekly Rares - NEED TO CONFIRM THEY GIVE REPUTATION isle_of_dorne_rares = { - [82196] = {questType = 'weekly', warband = true, name = 'Alunira'}, - [81923] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, - [81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, - [81902] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, - [81903] = {questType = 'weekly', warband = true, name = 'Shallowshell the Clacker'}, - [81893] = {questType = 'weekly', warband = true, name = 'Bloodmaw'}, - [81892] = {questType = 'weekly', warband = true, name = 'Springbubble'}, - [79685] = {questType = 'weekly', warband = true, name = 'Sandres the Relicbearer'}, - [81920] = {questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix'}, - [81895] = {questType = 'weekly', warband = true, name = 'Emperor Pitfang'}, - [81907] = {questType = 'weekly', warband = true, name = 'Escaped Cutthroat'}, - [81921] = {questType = 'weekly', warband = true, name = 'Matriarch Charfuria'}, - [81901] = {questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus'}, - [81899] = {questType = 'weekly', warband = true, name = 'Gar\'loc'}, - [81904] = {questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched'}, - [78619] = {questType = 'weekly', warband = true, name = 'Rustul Titancap'}, - [81905] = {questType = 'weekly', warband = true, name = 'Flamekeeper Graz'}, - [81897] = {questType = 'weekly', warband = true, name = 'Plaguehart'}, - [81922] = {questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful'}, - [82204] = {questType = 'weekly', warband = true, name = 'Kereke'}, - [82203] = {questType = 'weekly', warband = true, name = 'Zovex'}, - [82205] = {questType = 'weekly', warband = true, name = 'Rotfist'}, + [82196] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- suspect One Time Kill + [84037] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, -- (daily: 81923) + [81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, -- One Time Kill + [84031] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) + [84032] = {questType = 'weekly', warband = true, name = 'Shallowshell the Clacker'}, -- (daily: 81903) + [81893] = {questType = 'weekly', warband = true, name = 'Bloodmaw'}, -- One Time Kill + [81892] = {questType = 'weekly', warband = true, name = 'Springbubble'}, -- One Time Kill + [79685] = {questType = 'weekly', warband = true, name = 'Sandres the Relicbearer'}, -- One Time Kill + [84036] = {questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix'}, -- (daily: 81920) + [81895] = {questType = 'weekly', warband = true, name = 'Emperor Pitfang'},-- One Time Kill + [84029] = {questType = 'weekly', warband = true, name = 'Escaped Cutthroat'}, -- (daily: 81907) + [84039] = {questType = 'weekly', warband = true, name = 'Matriarch Charfuria'}, -- (daily: 81921) + [84030] = {questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus'}, -- (daily: 81901) + [84028] = {questType = 'weekly', warband = true, name = 'Gar\'loc'}, -- (daily: 81899) + [84033] = {questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched'}, -- (daily: 81904) + [78619] = {questType = 'weekly', warband = true, name = 'Rustul Titancap'}, -- One Time Kill + [84034] = {questType = 'weekly', warband = true, name = 'Flamekeeper Graz'}, -- (daily: 81905) + [84026] = {questType = 'weekly', warband = true, name = 'Plaguehart'}, -- (daily: 81897) + [84038] = {questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful'}, -- (daily: 81922) + [85160] = {questType = 'weekly', warband = true, name = 'Kereke'}, -- (daily: 82204) + [85161] = {questType = 'weekly', warband = true, name = 'Zovex'}, -- (daily: 82203) + [85159] = {questType = 'weekly', warband = true, name = 'Rotfist'}, -- (daily: 82205) }, ringing_deeps_rares = { - [81674] = {questType = 'weekly', warband = true, name = 'Automaxor'}, - [81562] = {questType = 'weekly', warband = true, name = 'Charmonger'}, - [80547] = {questType = 'weekly', warband = true, name = 'King Splash'}, - [80505] = {questType = 'weekly', warband = true, name = 'Candleflyer Captain'}, - [80560] = {questType = 'weekly', warband = true, name = 'Cragmund'}, - [80536] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, - [80557] = {questType = 'weekly', warband = true, name = 'Aquellion'}, - [80506] = {questType = 'weekly', warband = true, name = 'Zilthara'}, - [81511] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, - [80507] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, - [81485] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, - [81563] = {questType = 'weekly', warband = true, name = 'Rampaging Blight'}, - [80574] = {questType = 'weekly', warband = true, name = 'Trungal'}, - [81652] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, - [81648] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, - [80003] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, - [81566] = {questType = 'weekly', warband = true, name = 'Deathbound Husk'}, - [81633] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, + [84046] = {questType = 'weekly', warband = true, name = 'Automaxor'}, -- (daily: 81674) + [84044] = {questType = 'weekly', warband = true, name = 'Charmonger'}, -- (daily: 81562) + [80547] = {questType = 'weekly', warband = true, name = 'King Splash'}, -- One Time Kill + [80505] = {questType = 'weekly', warband = true, name = 'Candleflyer Captain'}, -- One time kill + [84042] = {questType = 'weekly', warband = true, name = 'Cragmund'}, -- (daily: 80560) + [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, -- (daily: 80536) + [80557] = {questType = 'weekly', warband = true, name = 'Aquellion'}, -- One time kill + [84041] = {questType = 'weekly', warband = true, name = 'Zilthara'}, -- (daily: 80506) + [84045] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, -- (daily: 81511) + [84040] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, -- (daily: 80507) + [84047] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, -- (daily: 81485) + [81563] = {questType = 'weekly', warband = true, name = 'Rampaging Blight'}, -- One time kill + [84043] = {questType = 'weekly', warband = true, name = 'Trungal'}, -- (daily: 80574) + [84049] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, -- (daily: 81652) + [84048] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, -- (daily: 81648) + [84050] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) + [81566] = {questType = 'weekly', warband = true, name = 'Deathbound Husk'}, -- One time kill + [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, -- (daily: 81633) }, hallowfall_rares = { - [81756] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, - [82557] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, - [81791] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, - [80009] = {questType = 'weekly', warband = true, name = 'The Taskmaker'}, - [81761] = {questType = 'weekly', warband = true, name = 'Grimslice'}, - [81849] = {questType = 'weekly', warband = true, name = 'Strength of Beledar'}, - [80006] = {questType = 'weekly', warband = true, name = 'Ixlorb the Spinner'}, - [82565] = {questType = 'weekly', warband = true, name = 'Murkspike'}, - [82559] = {questType = 'weekly', warband = true, name = 'Deathpetal'}, - [80011] = {questType = 'weekly', warband = true, name = 'Deepfiend Azellix'}, - [82562] = {questType = 'weekly', warband = true, name = 'Duskshadow'}, - [81881] = {questType = 'weekly', warband = true, name = 'Funglour'}, - [81853] = {questType = 'weekly', warband = true, name = 'Sir Alastair Purefire'}, - [81836] = {questType = 'weekly', warband = true, name = 'Horror of the Shallows'}, - [79271] = {questType = 'weekly', warband = true, name = 'Sloshmuck'}, - [80010] = {questType = 'weekly', warband = true, name = 'Murkshade'}, - [82560] = {questType = 'weekly', warband = true, name = 'Croakit'}, - [81882] = {questType = 'weekly', warband = true, name = 'Pride of Beledar'}, - [82558] = {questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker'}, - [82561] = {questType = 'weekly', warband = true, name = 'Toadstomper'}, - [82564] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, - [82566] = {questType = 'weekly', warband = true, name = 'Ravageant'}, + [85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn'}, -- (daily: 81763) + [85165] = {questType = 'weekly', warband = true, name = 'Deathtide'}, -- (daily: 81880) + [84063] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, -- (daily: 81756) + [84051] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, -- (daily: 82557) + [84064] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, -- (daily: 81791) + [84061] = {questType = 'weekly', warband = true, name = 'The Taskmaker'}, -- (daily: 80009) + [81761] = {questType = 'weekly', warband = true, name = 'Grimslice'}, -- One Time Kill + [84066] = {questType = 'weekly', warband = true, name = 'Strength of Beledar'}, -- (daily: 81849) + [80006] = {questType = 'weekly', warband = true, name = 'Ixlorb the Spinner'}, -- One Time Kill + [84060] = {questType = 'weekly', warband = true, name = 'Murkspike'}, -- (daily: 82565) + [84053] = {questType = 'weekly', warband = true, name = 'Deathpetal'}, -- (daily: 82559) + [80011] = {questType = 'weekly', warband = true, name = 'Deepfiend Azellix'}, -- One Time Kill + [84056] = {questType = 'weekly', warband = true, name = 'Duskshadow'}, -- (daily: 82562) + [81881] = {questType = 'weekly', warband = true, name = 'Funglour'}, -- One Time Kill + [84067] = {questType = 'weekly', warband = true, name = 'Sir Alastair Purefire'}, -- (daily: 81853) + [84065] = {questType = 'weekly', warband = true, name = 'Horror of the Shallows'}, -- (daily: 81836) + [84062] = {questType = 'weekly', warband = true, name = 'Sloshmuck'}, -- (daily: 79271) + [80010] = {questType = 'weekly', warband = true, name = 'Murkshade'}, -- One Time Kill + [84054] = {questType = 'weekly', warband = true, name = 'Croakit'}, -- (daily: 82560) + [84068] = {questType = 'weekly', warband = true, name = 'Pride of Beledar'}, -- (daily: 81882) + [84052] = {questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker'}, -- (daily: 82558) + [84055] = {questType = 'weekly', warband = true, name = 'Toadstomper'}, -- (daily: 82561) + [84059] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) + [84058] = {questType = 'weekly', warband = true, name = 'Ravageant'}, -- (daily: 82566) }, azj_kahet_rares = { - [81702] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, - [81703] = {questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700'}, - [81695] = {questType = 'weekly', warband = true, name = 'Abyssal Devourer'}, - [81706] = {questType = 'weekly', warband = true, name = 'Maddened Siegebomber'}, - [81700] = {questType = 'weekly', warband = true, name = 'Vilewing'}, - [81699] = {questType = 'weekly', warband = true, name = 'Webspeaker Grik\'ik'}, - [81704] = {questType = 'weekly', warband = true, name = 'Cha\'tak'}, - [81707] = {questType = 'weekly', warband = true, name = 'Enduring Gutterface'}, - [81705] = {questType = 'weekly', warband = true, name = 'Monstrous Lasharoth'}, - [81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik'}, - [78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, - [82037] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, - [82078] = {questType = 'weekly', warband = true, name = 'Kaheti Bladeguard'}, - [82077] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, - [82036] = {questType = 'weekly', warband = true, name = 'Harvester Qixt'}, - [82035] = {questType = 'weekly', warband = true, name = 'The Oozekhan'}, - [82034] = {questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed'}, - [81634] = {questType = 'weekly', warband = true, name = 'The Groundskeeper'}, - [81701] = {questType = 'weekly', warband = true, name = 'Xishorr'}, + [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) + [84072] = {questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700'}, -- (daily: 81703) + [81695] = {questType = 'weekly', warband = true, name = 'Abyssal Devourer'}, -- One Time Kill + [84075] = {questType = 'weekly', warband = true, name = 'Maddened Siegebomber'}, -- (daily: 81706) + [81700] = {questType = 'weekly', warband = true, name = 'Vilewing'}, -- One Time Kill + [81699] = {questType = 'weekly', warband = true, name = 'Webspeaker Grik\'ik'}, -- One Time Kill + [84073] = {questType = 'weekly', warband = true, name = 'Cha\'tak'}, -- (daily: 81704) + [84076] = {questType = 'weekly', warband = true, name = 'Enduring Gutterface'}, -- (daily: 81707) + [84074] = {questType = 'weekly', warband = true, name = 'Monstrous Lasharoth'}, -- (daily: 81705) + [81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik & Khak\'ik'}, -- One Time Kill + [78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, -- One Time Kill + [84080] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, -- (daily: 82037) + [84082] = {questType = 'weekly', warband = true, name = 'Kaheti Bladeguard'}, -- (daily: 82078) + [84081] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, -- (daily: 82077) + [84079] = {questType = 'weekly', warband = true, name = 'Harvester Qixt'}, -- (daily: 82036) + [84078] = {questType = 'weekly', warband = true, name = 'The Oozekhan'}, -- (daily: 82035) + [84077] = {questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed'}, -- (daily: 82034) + [84069] = {questType = 'weekly', warband = true, name = 'The Groundskeeper'}, -- (daily: 81634) + [84070] = {questType = 'weekly', warband = true, name = 'Xishorr'}, -- (daily: 81701) + [85167] = {questType = 'weekly', warband = true, name = ' The One Left'}, -- (daily: 82290) + [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- (daily: 82289) }, -- Professions diff --git a/modules/quests.lua b/modules/quests.lua index d3da7bd..b2fb48f 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1170,7 +1170,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 22, + required = 24, version = WOW_PROJECT_MAINLINE }, azj_kahet_rares = { @@ -1188,7 +1188,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 19, + required = 21, version = WOW_PROJECT_MAINLINE }, -- professions From 61e12e2fe49572b1a9f230bf73bb48004d793efa Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 26 Aug 2024 12:40:45 +0200 Subject: [PATCH 036/138] fixed labelRow for greater keyflames. adjustred rare tracker to ShowAll for better overview --- db/db.lua | 4 +++- modules/quests.lua | 11 ++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/db/db.lua b/db/db.lua index 0a43f37..f50be2a 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1656,7 +1656,7 @@ PermoksAccountManager.quests = { [80672] = {questType = 'weekly', warband = true, log = true}, -- Hand of the Vizier }, - -- Weekly Rares - NEED TO CONFIRM THEY GIVE REPUTATION + -- Weekly Rares - NEED TO CONFIRM THE REPUTATION QUEST RESETS WEEKLY isle_of_dorne_rares = { [82196] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- suspect One Time Kill [84037] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, -- (daily: 81923) @@ -1726,6 +1726,8 @@ PermoksAccountManager.quests = { [84055] = {questType = 'weekly', warband = true, name = 'Toadstomper'}, -- (daily: 82561) [84059] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) [84058] = {questType = 'weekly', warband = true, name = 'Ravageant'}, -- (daily: 82566) + [84057] = {questType = 'weekly', warband = true, name = 'Parasidious'}, -- (daily: 82563) + [80486] = {questType = 'weekly', warband = true, name = 'Brineslash'}, -- can't find it }, azj_kahet_rares = { [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) diff --git a/modules/quests.lua b/modules/quests.lua index b2fb48f..9301502 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1094,6 +1094,11 @@ local labelRows = { warband = false, visibility = 'visible', group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 7, version = WOW_PROJECT_MAINLINE }, severed_threads_pact_chosen = { @@ -1134,6 +1139,7 @@ local labelRows = { PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 22, + showAll = true, version = WOW_PROJECT_MAINLINE }, ringing_deeps_rares = { @@ -1152,6 +1158,7 @@ local labelRows = { PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 18, + showAll = true, version = WOW_PROJECT_MAINLINE }, hallowfall_rares = { @@ -1170,7 +1177,8 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 24, + required = 26, + showAll = true, version = WOW_PROJECT_MAINLINE }, azj_kahet_rares = { @@ -1189,6 +1197,7 @@ local labelRows = { PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 21, + showAll = true, version = WOW_PROJECT_MAINLINE }, -- professions From c8ea5ed3626de7f33642e29582eb91d5d0cf7a31 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 26 Aug 2024 14:02:39 +0200 Subject: [PATCH 037/138] fixed profession weekly knowledge display. --- PermoksAccountManager.lua | 4 +++- db/db.lua | 50 +++++++++++++++++++-------------------- modules/quests.lua | 22 ++++++++++------- 3 files changed, 41 insertions(+), 35 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 318b500..3dfb395 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -1330,13 +1330,15 @@ local InternalLabelFunctions = { required = unlockInfo.required end elseif column.professionOffset and alt_data.professions then - local skillLine1, skillLine2 = unpack(alt_data.professions) + local skillLine1, skillLine2 = alt_data.professions.profession1, alt_data.professions.profession2 if skillLine1 then + skillLine1 = skillLine1.skillLineID offset = offset + (column.professionOffset[skillLine1] or 0) end if skillLine2 then + skillLine2 = skillLine2.skillLineID offset = offset + (column.professionOffset[skillLine2] or 0) end end diff --git a/db/db.lua b/db/db.lua index f50be2a..0fe703c 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1727,7 +1727,7 @@ PermoksAccountManager.quests = { [84059] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) [84058] = {questType = 'weekly', warband = true, name = 'Ravageant'}, -- (daily: 82566) [84057] = {questType = 'weekly', warband = true, name = 'Parasidious'}, -- (daily: 82563) - [80486] = {questType = 'weekly', warband = true, name = 'Brineslash'}, -- can't find it + [80486] = {questType = 'weekly', warband = true, name = 'Brineslash'}, -- BUGGED }, azj_kahet_rares = { [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) @@ -1815,35 +1815,35 @@ PermoksAccountManager.quests = { [84295] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Gleaming Telluric Crystal }, knowledge_tww_weeklies_quest = { - [84133] = {questType = 'weekly', profession = 'Alchemy', description = 'Alchemy Services Requested'}, - [84127] = {questType = 'weekly', profession = 'Blacksmithing', description = 'Blacksmithing Services Requested'}, + [84133] = {questType = 'weekly', log = true}, -- Alchemy + [84127] = {questType = 'weekly', log = true}, -- Blacksmithing - [84085] = {questType = 'weekly', profession = 'Enchanting', description = 'The Power of Potential'}, - [84086] = {questType = 'weekly', profession = 'Enchanting', description = 'A Rare Necessity'}, - [84134] = {questType = 'weekly', profession = 'Enchanting', description = 'Enchanting Services Requested'}, - [84084] = {questType = 'weekly', profession = 'Enchanting', description = 'Just a Pinch'}, + [84085] = {questType = 'weekly', log = true}, --Enchanting + [84086] = {questType = 'weekly', log = true}, --Enchanting + [84134] = {questType = 'weekly', log = true}, --Enchanting + [84084] = {questType = 'weekly', log = true}, --Enchanting - [84128] = {questType = 'weekly', profession = 'Engineering', description = 'Engineering Services Requested'}, - [84129] = {questType = 'weekly', profession = 'Inscription', description = 'Inscription Services Requested'}, - [84130] = {questType = 'weekly', profession = 'Jewelcrafting', description = 'Jewelcrafting Services Requested'}, - [84131] = {questType = 'weekly', profession = 'Leatherworking', description = 'Leatherworking Services Requested'}, - [84132] = {questType = 'weekly', profession = 'Tailoring', description = 'Tailoring Services Requested'}, + [84128] = {questType = 'weekly', log = true}, -- Engineering + [84129] = {questType = 'weekly', log = true}, -- Inscription + [84130] = {questType = 'weekly', log = true}, -- Jewelcrafting + [84131] = {questType = 'weekly', log = true}, -- Leatherworking + [84132] = {questType = 'weekly', log = true}, -- Tailoring - [82916] = {questType = 'weekly', profession = 'Herbalism', description = 'When Fungi Bloom'}, - [82958] = {questType = 'weekly', profession = 'Herbalism', description = 'Little Blessings'}, - [82962] = {questType = 'weekly', profession = 'Herbalism', description = 'A handful of Luredrops'}, - [82965] = {questType = 'weekly', profession = 'Herbalism', description = 'Light and Shadow'}, - [82970] = {questType = 'weekly', profession = 'Herbalism', description = 'A Bloom and A Blossom'}, + [82916] = {questType = 'weekly', log = true}, -- Herbalism + [82958] = {questType = 'weekly', log = true}, -- Herbalism + [82962] = {questType = 'weekly', log = true}, -- Herbalism + [82965] = {questType = 'weekly', log = true}, -- Herbalism + [82970] = {questType = 'weekly', log = true}, -- Herbalism - [83102] = {questType = 'weekly', profession = 'Mining', description = 'Bismuth is Business'}, - [83103] = {questType = 'weekly', profession = 'Mining', description = 'Acquiring Aqirite'}, - [83104] = {questType = 'weekly', profession = 'Mining', description = 'Identifying Ironclaw'}, - [83106] = {questType = 'weekly', profession = 'Mining', description = 'Null Pebble Excavation'}, + [83102] = {questType = 'weekly', log = true}, -- Mining + [83103] = {questType = 'weekly', log = true}, -- Mining + [83104] = {questType = 'weekly', log = true}, -- Mining + [83106] = {questType = 'weekly', log = true}, -- Mining - [82992] = {questType = 'weekly', profession = 'Skinning', description = 'Stormcharged Goods'}, - [82993] = {questType = 'weekly', profession = 'Skinning', description = 'From Shadows'}, - [83097] = {questType = 'weekly', profession = 'Skinning', description = 'Cinder and Storm'}, - [83098] = {questType = 'weekly', profession = 'Skinning', description = 'Snap and Crackle'}, + [82992] = {questType = 'weekly', log = true}, -- Skinning + [82993] = {questType = 'weekly', log = true}, -- Skinning + [83097] = {questType = 'weekly', log = true}, -- Skinning + [83098] = {questType = 'weekly', log = true}, -- Skinning }, } diff --git a/modules/quests.lua b/modules/quests.lua index 9301502..9821366 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1242,13 +1242,16 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:KnowledgeTooltip_OnEnter(...) end, - required = 6, - tooltipRequired = 3, + required = 12, + tooltipRequired = 6, professionOffset = { - [182] = 4, - [186] = 4, - [393] = 4, - [333] = 4, + [171] = -6, + [164] = -6, + [202] = -6, + [773] = -6, + [755] = -6, + [165] = -6, + [197] = -6, }, professionRequired = { [182] = 6, @@ -1259,17 +1262,18 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, + knowledge_tww_weeklies_quest = { label = 'Profession Quests', type = 'quest', questType = 'weekly', visibility = 'visible', + group = 'resetWeekly', tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 2, - group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, @@ -1852,7 +1856,7 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, local questInfo = self.quests[key] local professionCounter = {} local professionItems = {} - local prof1, prof2 = unpack(altData.professions or {}) + local prof1, prof2 = altData.professions.profession1, altData.professions.profession2 if prof1 or prof2 then for questID, questInfoTbl in pairs(questInfo) do @@ -1862,7 +1866,7 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, professionCounter[skillLineID] = (professionCounter[skillLineID] or 0) + 1 end - if (skillLineID == prof1 or skillLineID == prof2) then + if (skillLineID == prof1.skillLineID or skillLineID == prof2.skillLineID) then professionItems[questInfoTbl.skillLineID] = professionItems[questInfoTbl.skillLineID] or {} if questInfoTbl.item then From 718e1163ef5b1a7b5c521416a267face7f731ab9 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 26 Aug 2024 14:15:09 +0200 Subject: [PATCH 038/138] YEETED prepatch event off the addon, it was truly awful. (Needs a modernization to remove the seperator in the bottom of the general categories) --- db/db.lua | 19 ------------------- modules/currencies.lua | 13 +------------ modules/quests.lua | 24 ------------------------ 3 files changed, 1 insertion(+), 55 deletions(-) diff --git a/db/db.lua b/db/db.lua index 0fe703c..44c02fe 100644 --- a/db/db.lua +++ b/db/db.lua @@ -27,12 +27,6 @@ local default_categories = { 'kej', 'radiant_remnant', 'radiant_echo', - - -- DF Stuff -> Remove from Default Categories after global Launch - 'separator3', - 'residual_memories', - 'radiant_echoes_prepatch_dailies', - 'radiant_echoes_cache', }, childOrder = { characterName = 1, @@ -56,12 +50,6 @@ local default_categories = { kej = 23, radiant_remnant = 24, radiant_echo = 25, - - -- DF Stuff -> Remove from Default Categories after global Launch - separator3 = 30, - residual_memories = 31, - radiant_echoes_prepatch_dailies = 32, - radiant_echoes_cache = 33, }, hideToggle = true, enabled = true @@ -1536,13 +1524,6 @@ PermoksAccountManager.quests = { [79226] = {questType = 'weekly', warband = true, log = true}, }, - -- 11.0 PREPATCH - radiant_echoes_prepatch_weeklies = { - [82689] = {questType = 'weekly', log = true, name = "Dragonblight (Lich King)"}, --name = 'Only Darkness'}, - [82676] = {questType = 'weekly', log = true, name = "Dustwallow Marsh (Onyxia)"}, --name = 'Broken Masquerade'}, - [78938] = {questType = 'weekly', log = true, name = "Searing Gorge (Ragnaros)"}, --name = 'Champion of the Waterlords'}, - }, - -- 11.0 The War Within -- Weekly World Activities tww_world_boss = {-- PLACEHOLDER: wrong quest IDs diff --git a/modules/currencies.lua b/modules/currencies.lua index 2b175bc..da860f0 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -259,18 +259,7 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, - - -- 11.0 Prepatch - residual_memories = { - label = 'Residual Memories', - type = 'currency', - key = 3089, - passRow = true, - group = 'currency', - warband = true, - version = WOW_PROJECT_MAINLINE - }, - + -- 11.0 champion_crest = { label = 'Champion Crests', diff --git a/modules/quests.lua b/modules/quests.lua index 9821366..f8c5eee 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -942,30 +942,6 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, - -- 11.0 PREPATCH - radiant_echoes_prepatch_dailies = { - label = 'Prepatch Dailies', - type = 'quest', - questType = 'daily', - warband = true, - visibility = 'visible', - tooltip = true, - customTooltip = function(...) - PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) - end, - required = 3, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE - }, - radiant_echoes_cache = { - label = 'Prepatch Weekly Cache', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE - }, - -- 11.0 The War Within -- world activities tww_world_boss = { From ccd07fe15ab91cd84f6cc399e06f77bffd8e5436 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 26 Aug 2024 15:35:42 +0200 Subject: [PATCH 039/138] fixed some rare names to actual npc names --- db/db.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/db.lua b/db/db.lua index 44c02fe..3d05535 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1723,14 +1723,14 @@ PermoksAccountManager.quests = { [81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik & Khak\'ik'}, -- One Time Kill [78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, -- One Time Kill [84080] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, -- (daily: 82037) - [84082] = {questType = 'weekly', warband = true, name = 'Kaheti Bladeguard'}, -- (daily: 82078) + [84082] = {questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk'}, -- (daily: 82078) [84081] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, -- (daily: 82077) [84079] = {questType = 'weekly', warband = true, name = 'Harvester Qixt'}, -- (daily: 82036) [84078] = {questType = 'weekly', warband = true, name = 'The Oozekhan'}, -- (daily: 82035) [84077] = {questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed'}, -- (daily: 82034) [84069] = {questType = 'weekly', warband = true, name = 'The Groundskeeper'}, -- (daily: 81634) [84070] = {questType = 'weekly', warband = true, name = 'Xishorr'}, -- (daily: 81701) - [85167] = {questType = 'weekly', warband = true, name = ' The One Left'}, -- (daily: 82290) + [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- (daily: 82290) [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- (daily: 82289) }, From 3ad756c7848edcc0c08d352b884c6c58c3257fa0 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 26 Aug 2024 16:39:07 +0200 Subject: [PATCH 040/138] found new questID for Alunira --- db/db.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/db.lua b/db/db.lua index 3d05535..ffa0e0d 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1639,7 +1639,7 @@ PermoksAccountManager.quests = { -- Weekly Rares - NEED TO CONFIRM THE REPUTATION QUEST RESETS WEEKLY isle_of_dorne_rares = { - [82196] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- suspect One Time Kill + [85158] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- (daily?!: 82196) [84037] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, -- (daily: 81923) [81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, -- One Time Kill [84031] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) From 49d16a90b5788ae8614761b3c71b59c2d6e9ab6d Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 26 Aug 2024 20:08:14 +0200 Subject: [PATCH 041/138] fixed an error that divided some crest quantity by 100 --- modules/currencies.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index da860f0..d18ffc5 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -676,7 +676,11 @@ function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurr end if currencyInfo.maxQuantity and currencyInfo.maxQuantity > 0 and (currencyInfo.quantity or 0) > currencyInfo.maxQuantity then - currencyInfo.quantity = currencyInfo.quantity / 100 + -- REFACTOR: move this logic to the crest labelRows to remove redundancy + local id = currencyInfo.currencyType + if id ~= 2914 and id ~= 2915 and id ~= 2916 and id ~= 2917 then + currencyInfo.quantity = currencyInfo.quantity / 100 + end end local currencyString From d7a06150cbb0fde3d53758f63a4157f2f59b723c Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 27 Aug 2024 21:26:41 +0200 Subject: [PATCH 042/138] Fix lua error if the altData is not available somehow --- PermoksAccountManager.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 3dfb395..1694310 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -921,6 +921,8 @@ function PermoksAccountManager:ResetActivities(db, data, daily, weekly, biweekly end function PermoksAccountManager:ResetWeeklyActivities(altData) + if not altData then return end + -- M0/Raids if altData.instanceInfo then -- Store three day raids so they won't get reset here (currently only ZG for WOTLK) @@ -976,6 +978,7 @@ end function PermoksAccountManager:ResetDailyActivities(db, altData) local currentTime = time() + if not altData then return end if altData.completedDailies then altData.completedDailies = {} @@ -1008,6 +1011,8 @@ function PermoksAccountManager:ResetDailyActivities(db, altData) end function PermoksAccountManager:ResetBiweeklyActivities(altData) + if not altData then return end + if altData.questInfo and altData.questInfo.biweekly then for visibility, quests in pairs(altData.questInfo.biweekly) do altData.questInfo.biweekly[visibility] = {} @@ -1016,6 +1021,8 @@ function PermoksAccountManager:ResetBiweeklyActivities(altData) end function PermoksAccountManager:ResetThreeDayRaids(altData) + if not altData then return end + if altData.instanceInfo and altData.instanceInfo.raids and altData.instanceInfo.raids['zul_gurub'] then altData.instanceInfo.raids['zul_gurub'] = nil end From a0b5a50f37bc074a1d7326582ab292267d42d047 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Thu, 29 Aug 2024 07:37:48 +0200 Subject: [PATCH 043/138] added the 2nd KP Inscription can get. --- db/db.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/db/db.lua b/db/db.lua index ffa0e0d..766f215 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1193,6 +1193,7 @@ PermoksAccountManager.quests = { }, knowledge_df_treatise = { [74105] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription'}, -- Inscription + [83730] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription'}, -- Inscription 2 [74106] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Mining [74107] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Herbalism [74108] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy'}, -- Alchemy From 5462701cc45847031ec39adf576b8644eb367287 Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 29 Aug 2024 16:17:44 +0200 Subject: [PATCH 044/138] Add Coffer Key Shards to the calculation of the Coffer Keys --- db/db.lua | 2 +- modules/currencies.lua | 29 ++++++++++++++++++++++++++--- modules/items.lua | 2 +- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/db/db.lua b/db/db.lua index ffa0e0d..2f2858b 100644 --- a/db/db.lua +++ b/db/db.lua @@ -509,7 +509,7 @@ PermoksAccountManager.item = { [220520] = {key = 'radiant_echo'}, -- Radiant Echo [212493] = {key = 'firelight_ruby'}, -- Odd Glob of Wax [224642] = {key = 'firelight_ruby'}, -- Firelight Ruby - [220693] = {key = 'coffer_key_shard'}, -- Coffer Key Shard + [229899] = {key = 'coffer_key_shard'}, -- Coffer Key Shard } PermoksAccountManager.factions = { diff --git a/modules/currencies.lua b/modules/currencies.lua index d18ffc5..ceebd03 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -319,8 +319,11 @@ local labelRows = { }, restored_coffer_key = { label = 'Restored Coffer Key', - type = 'currency', + type = 'cofferkey', + passRow = true, key = 3028, + reagent = 229899, + reagentRequired = 100, group = 'currency', version = WOW_PROJECT_MAINLINE }, @@ -639,6 +642,25 @@ local function CreateValorString(labelRow, currencyInfo) end end +local function CreateCofferKeyString(labelRow, currencyInfo, itemCounts) + if not currencyInfo then return '-' end + + local keyInfo = currencyInfo[labelRow.key] + local reagentInfo = itemCounts[labelRow.reagent] + + local total = 0 + if keyInfo then + total = total + keyInfo.quantity + end + + ViragDevTool:AddData(itemCounts) + if reagentInfo then + total = total + (reagentInfo.total / labelRow.reagentRequired) + end + + return PermoksAccountManager:CreateCurrencyString(keyInfo, nil, nil, nil, nil, nil, total) +end + local payload = { update = Update, labels = labelRows, @@ -656,6 +678,7 @@ local module = PermoksAccountManager:AddModule(module, payload) module:AddCustomLabelType('catalystcharges', CreateCatalystChargeString, nil, 'currencyInfo') module:AddCustomLabelType('crestcurrency', CreateCrestString, nil, 'currencyInfo') module:AddCustomLabelType('valor', CreateValorString, nil, 'currencyInfo') +module:AddCustomLabelType('cofferkey', CreateCofferKeyString, nil, 'currencyInfo', 'itemCounts') -- TODO Create a CreateIconString function instead of two functions for items and currencies function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurrent, abbreviateMaximum, hideMaximum, customIcon, hideIcon, customQuantitiy) @@ -683,11 +706,11 @@ function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurr end end - local currencyString local quantity = customQuantitiy or currencyInfo.quantity + local currencyString = quantity if not hideMaximum and ((currencyInfo.maxQuantity and currencyInfo.maxQuantity > 0) or (currencyInfo.maxWeeklyQuantity and currencyInfo.maxWeeklyQuantity > 0)) then currencyString = self:CreateFractionString(quantity, globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity or currencyInfo.maxWeeklyQuantity, abbreviateCurrent, abbreviateMaximum) - else + elseif quantity >= 1000 then currencyString = abbreviateCurrent and AbbreviateNumbers(quantity) or AbbreviateLargeNumbers(quantity) end diff --git a/modules/items.lua b/modules/items.lua index 19914c1..2a1eb0d 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -299,7 +299,7 @@ local labelRows = { coffer_key_shard = { label = 'Coffer Key Shard', type = 'item', - key = 220693, + key = 229899, group = 'item', version = WOW_PROJECT_MAINLINE }, From 8b9ae0a8726515c871f6864675485271f70e0f30 Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 29 Aug 2024 17:04:20 +0200 Subject: [PATCH 045/138] Fix lua error --- modules/currencies.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index ceebd03..23b06da 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -653,7 +653,6 @@ local function CreateCofferKeyString(labelRow, currencyInfo, itemCounts) total = total + keyInfo.quantity end - ViragDevTool:AddData(itemCounts) if reagentInfo then total = total + (reagentInfo.total / labelRow.reagentRequired) end From 867a8ba0bc1add637179e766aa877e01ac1ae3f3 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Fri, 30 Aug 2024 11:38:51 +0200 Subject: [PATCH 046/138] fixed Awakening the Machine not displaying --- db/db.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/db/db.lua b/db/db.lua index 766f215..9a028f3 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1593,10 +1593,10 @@ PermoksAccountManager.quests = { [83333] = {questType = 'weekly', log = true}, -- Gearing Up for Trouble (Awakening the Machine Weekly) }, awakening_the_machine = { - [84642] = {questType = 'weekly', warband = true, log = true}, -- cache 1 - [84644] = {questType = 'weekly', warband = true, log = true}, -- cache 2 - [84646] = {questType = 'weekly', warband = true, log = true}, -- cache 3 - [84647] = {questType = 'weekly', warband = true, log = true}, -- cache 4 + [84642] = {questType = 'weekly', warband = true, name = "1st Cache"}, -- cache 1 + [84644] = {questType = 'weekly', warband = true, name = "2nd Cache"}, -- cache 2 + [84646] = {questType = 'weekly', warband = true, name = "3rd Cache"}, -- cache 3 + [84647] = {questType = 'weekly', warband = true, name = "4th Cache"}, -- cache 4 }, spreading_the_light = { [76586] = {questType = 'weekly', warband = true, log = true}, -- Hallowfall Event in Dunelle's Kindness From 031c3ef32d4a7c00623028e74ac47529c57d6b8d Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Fri, 30 Aug 2024 12:57:07 +0200 Subject: [PATCH 047/138] removed rares wihout weekly reset from the tracker --- PermoksAccountManager.lua | 28 +++++++++++++++++++++++++- db/db.lua | 42 +++++++++++++++++++-------------------- modules/quests.lua | 8 ++++---- 3 files changed, 52 insertions(+), 26 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 3dfb395..2b1a492 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -38,7 +38,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 1 +local INTERNALTWWVERSION = 2 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -603,6 +603,25 @@ function PermoksAccountManager:CreateResetTimers() end end +function PermoksAccountManager:ResetQuestCompletion(labelRow) + local db = self.db.global + local accountData = db.accounts.main + local warbandData = db.accounts.main.warbandData + + local questType = self.labelRows[labelRow].questType + local visibility = self.labelRows[labelRow].visibility + + for _, alt_data in pairs(accountData.data) do + if alt_data.questInfo and alt_data.questInfo[questType] and alt_data.questInfo[questType][visibility] then + alt_data.questInfo[questType][visibility][labelRow] = {} + end + end + + if warbandData.questInfo and warbandData.questInfo[questType] and warbandData.questInfo[questType][visibility] then + warbandData.questInfo[questType][visibility][labelRow] = {} + end +end + function PermoksAccountManager:CheckForModernize() if self.isCata then local internalVersion = self.db.global.internalCataVersion @@ -677,6 +696,13 @@ function PermoksAccountManager:Modernize(oldInternalVersion) if not oldInternalVersion then PermoksAccountManager:ResetCategories() end + + if oldInternalVersion < 2 then + PermoksAccountManager:ResetQuestCompletion('isle_of_dorne_rares') + PermoksAccountManager:ResetQuestCompletion('ringing_deeps_rares') + PermoksAccountManager:ResetQuestCompletion('hallowfall_rares') + PermoksAccountManager:ResetQuestCompletion('azj_kahet_rares') + end end function PermoksAccountManager:GetGUID() diff --git a/db/db.lua b/db/db.lua index 9a028f3..2500cc6 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1642,20 +1642,20 @@ PermoksAccountManager.quests = { isle_of_dorne_rares = { [85158] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- (daily?!: 82196) [84037] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, -- (daily: 81923) - [81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, -- One Time Kill + --[81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, -- One Time Kill [84031] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) [84032] = {questType = 'weekly', warband = true, name = 'Shallowshell the Clacker'}, -- (daily: 81903) - [81893] = {questType = 'weekly', warband = true, name = 'Bloodmaw'}, -- One Time Kill - [81892] = {questType = 'weekly', warband = true, name = 'Springbubble'}, -- One Time Kill - [79685] = {questType = 'weekly', warband = true, name = 'Sandres the Relicbearer'}, -- One Time Kill + --[81893] = {questType = 'weekly', warband = true, name = 'Bloodmaw'}, -- One Time Kill + --[81892] = {questType = 'weekly', warband = true, name = 'Springbubble'}, -- One Time Kill + --[79685] = {questType = 'weekly', warband = true, name = 'Sandres the Relicbearer'}, -- One Time Kill [84036] = {questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix'}, -- (daily: 81920) - [81895] = {questType = 'weekly', warband = true, name = 'Emperor Pitfang'},-- One Time Kill + --[81895] = {questType = 'weekly', warband = true, name = 'Emperor Pitfang'},-- One Time Kill [84029] = {questType = 'weekly', warband = true, name = 'Escaped Cutthroat'}, -- (daily: 81907) [84039] = {questType = 'weekly', warband = true, name = 'Matriarch Charfuria'}, -- (daily: 81921) [84030] = {questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus'}, -- (daily: 81901) [84028] = {questType = 'weekly', warband = true, name = 'Gar\'loc'}, -- (daily: 81899) [84033] = {questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched'}, -- (daily: 81904) - [78619] = {questType = 'weekly', warband = true, name = 'Rustul Titancap'}, -- One Time Kill + --[78619] = {questType = 'weekly', warband = true, name = 'Rustul Titancap'}, -- One Time Kill [84034] = {questType = 'weekly', warband = true, name = 'Flamekeeper Graz'}, -- (daily: 81905) [84026] = {questType = 'weekly', warband = true, name = 'Plaguehart'}, -- (daily: 81897) [84038] = {questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful'}, -- (daily: 81922) @@ -1666,21 +1666,21 @@ PermoksAccountManager.quests = { ringing_deeps_rares = { [84046] = {questType = 'weekly', warband = true, name = 'Automaxor'}, -- (daily: 81674) [84044] = {questType = 'weekly', warband = true, name = 'Charmonger'}, -- (daily: 81562) - [80547] = {questType = 'weekly', warband = true, name = 'King Splash'}, -- One Time Kill - [80505] = {questType = 'weekly', warband = true, name = 'Candleflyer Captain'}, -- One time kill + --[80547] = {questType = 'weekly', warband = true, name = 'King Splash'}, -- One Time Kill + --[80505] = {questType = 'weekly', warband = true, name = 'Candleflyer Captain'}, -- One time kill [84042] = {questType = 'weekly', warband = true, name = 'Cragmund'}, -- (daily: 80560) [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, -- (daily: 80536) - [80557] = {questType = 'weekly', warband = true, name = 'Aquellion'}, -- One time kill + --[80557] = {questType = 'weekly', warband = true, name = 'Aquellion'}, -- One time kill [84041] = {questType = 'weekly', warband = true, name = 'Zilthara'}, -- (daily: 80506) [84045] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, -- (daily: 81511) [84040] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, -- (daily: 80507) [84047] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, -- (daily: 81485) - [81563] = {questType = 'weekly', warband = true, name = 'Rampaging Blight'}, -- One time kill + --[81563] = {questType = 'weekly', warband = true, name = 'Rampaging Blight'}, -- One time kill [84043] = {questType = 'weekly', warband = true, name = 'Trungal'}, -- (daily: 80574) [84049] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, -- (daily: 81652) [84048] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, -- (daily: 81648) [84050] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) - [81566] = {questType = 'weekly', warband = true, name = 'Deathbound Husk'}, -- One time kill + --[81566] = {questType = 'weekly', warband = true, name = 'Deathbound Husk'}, -- One time kill [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, -- (daily: 81633) }, hallowfall_rares = { @@ -1690,18 +1690,18 @@ PermoksAccountManager.quests = { [84051] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, -- (daily: 82557) [84064] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, -- (daily: 81791) [84061] = {questType = 'weekly', warband = true, name = 'The Taskmaker'}, -- (daily: 80009) - [81761] = {questType = 'weekly', warband = true, name = 'Grimslice'}, -- One Time Kill + --[81761] = {questType = 'weekly', warband = true, name = 'Grimslice'}, -- One Time Kill [84066] = {questType = 'weekly', warband = true, name = 'Strength of Beledar'}, -- (daily: 81849) - [80006] = {questType = 'weekly', warband = true, name = 'Ixlorb the Spinner'}, -- One Time Kill + --[80006] = {questType = 'weekly', warband = true, name = 'Ixlorb the Spinner'}, -- One Time Kill [84060] = {questType = 'weekly', warband = true, name = 'Murkspike'}, -- (daily: 82565) [84053] = {questType = 'weekly', warband = true, name = 'Deathpetal'}, -- (daily: 82559) - [80011] = {questType = 'weekly', warband = true, name = 'Deepfiend Azellix'}, -- One Time Kill + --[80011] = {questType = 'weekly', warband = true, name = 'Deepfiend Azellix'}, -- One Time Kill [84056] = {questType = 'weekly', warband = true, name = 'Duskshadow'}, -- (daily: 82562) - [81881] = {questType = 'weekly', warband = true, name = 'Funglour'}, -- One Time Kill + --[81881] = {questType = 'weekly', warband = true, name = 'Funglour'}, -- One Time Kill [84067] = {questType = 'weekly', warband = true, name = 'Sir Alastair Purefire'}, -- (daily: 81853) [84065] = {questType = 'weekly', warband = true, name = 'Horror of the Shallows'}, -- (daily: 81836) [84062] = {questType = 'weekly', warband = true, name = 'Sloshmuck'}, -- (daily: 79271) - [80010] = {questType = 'weekly', warband = true, name = 'Murkshade'}, -- One Time Kill + --[80010] = {questType = 'weekly', warband = true, name = 'Murkshade'}, -- One Time Kill [84054] = {questType = 'weekly', warband = true, name = 'Croakit'}, -- (daily: 82560) [84068] = {questType = 'weekly', warband = true, name = 'Pride of Beledar'}, -- (daily: 81882) [84052] = {questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker'}, -- (daily: 82558) @@ -1714,15 +1714,15 @@ PermoksAccountManager.quests = { azj_kahet_rares = { [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) [84072] = {questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700'}, -- (daily: 81703) - [81695] = {questType = 'weekly', warband = true, name = 'Abyssal Devourer'}, -- One Time Kill + --[81695] = {questType = 'weekly', warband = true, name = 'Abyssal Devourer'}, -- One Time Kill [84075] = {questType = 'weekly', warband = true, name = 'Maddened Siegebomber'}, -- (daily: 81706) - [81700] = {questType = 'weekly', warband = true, name = 'Vilewing'}, -- One Time Kill - [81699] = {questType = 'weekly', warband = true, name = 'Webspeaker Grik\'ik'}, -- One Time Kill + --[81700] = {questType = 'weekly', warband = true, name = 'Vilewing'}, -- One Time Kill + --[81699] = {questType = 'weekly', warband = true, name = 'Webspeaker Grik\'ik'}, -- One Time Kill [84073] = {questType = 'weekly', warband = true, name = 'Cha\'tak'}, -- (daily: 81704) [84076] = {questType = 'weekly', warband = true, name = 'Enduring Gutterface'}, -- (daily: 81707) [84074] = {questType = 'weekly', warband = true, name = 'Monstrous Lasharoth'}, -- (daily: 81705) - [81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik & Khak\'ik'}, -- One Time Kill - [78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, -- One Time Kill + --[81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik & Khak\'ik'}, -- One Time Kill + --[78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, -- One Time Kill [84080] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, -- (daily: 82037) [84082] = {questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk'}, -- (daily: 82078) [84081] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, -- (daily: 82077) diff --git a/modules/quests.lua b/modules/quests.lua index f8c5eee..a6432f9 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1114,7 +1114,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 22, + required = 16, showAll = true, version = WOW_PROJECT_MAINLINE }, @@ -1133,7 +1133,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 18, + required = 13, showAll = true, version = WOW_PROJECT_MAINLINE }, @@ -1153,7 +1153,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 26, + required = 21, showAll = true, version = WOW_PROJECT_MAINLINE }, @@ -1172,7 +1172,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 21, + required = 16, showAll = true, version = WOW_PROJECT_MAINLINE }, From 3de09b006cd6cc121dad041b7f5973e9af580e6a Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Fri, 30 Aug 2024 13:08:21 +0200 Subject: [PATCH 048/138] changed knowledge label name to be less confusing as it can also drop from mobs --- modules/quests.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/quests.lua b/modules/quests.lua index a6432f9..d2ca4dd 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1178,7 +1178,7 @@ local labelRows = { }, -- professions knowledge_tww_treasures = { - label = 'Treasure Knowledge', + label = 'Loot Knowledge', type = 'quest', questType = 'weekly', visibility = 'hidden', From 24160eb8583ddffe0397a04d69a5f85019390412 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Fri, 30 Aug 2024 13:16:01 +0200 Subject: [PATCH 049/138] flagged PVP weekly quests for Warbands since they reward renown now --- modules/quests.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/quests.lua b/modules/quests.lua index d2ca4dd..37bbb7c 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -68,11 +68,12 @@ local labelRows = { label = L['PVP Quests'], type = 'quest', questType = 'weekly', + warband = true, visibility = 'visible', - required = 2, + required = 1, isComplete = function(alt_data) return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.pvp_quests) == 2 + PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.pvp_quests) == 1 end, group = 'resetWeekly', version = WOW_PROJECT_MAINLINE @@ -82,6 +83,7 @@ local labelRows = { label = 'Sparks of War', type = 'quest', questType = 'weekly', + warband = true, visibility = 'visible', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE From ba5413ad2c5a164b3603a32b88e9bc28b19466a8 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Fri, 30 Aug 2024 14:45:07 +0200 Subject: [PATCH 050/138] removed currency tooltip for warband column as it makes no sense --- modules/currencies.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index d18ffc5..7f8d5fd 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -706,7 +706,8 @@ function PermoksAccountManager.CurrencyTooltip_OnEnter(button, altData, labelRow local self = PermoksAccountManager local currencyInfo = altData.currencyInfo[labelRow.key] local globalCurrencyInfo = self.db.global.currencyInfo[labelRow.key] - if not currencyInfo or not currencyInfo.name then + if not currencyInfo or not currencyInfo.name or currencyInfo.altQuantity then + -- don't create currency tooltips for the warband column return end From 72133a9d5694458cabd3d9df14fd99994856d041 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Fri, 30 Aug 2024 15:04:40 +0200 Subject: [PATCH 051/138] fixed quest IDs for mining knowledge --- db/db.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/db/db.lua b/db/db.lua index 2500cc6..49414b3 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1775,12 +1775,12 @@ PermoksAccountManager.quests = { [81420] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 5 [81421] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Rose - [83054] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 1 - [83055] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 2 - [83056] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 3 - [83057] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 4 - [83058] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 5 - [83059] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Erosion Polished Slate + [83050] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 1 + [83051] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 2 + [83052] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 3 + [83053] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 4 + [83054] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 5 + [83049] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Erosion Polished Slate [81459] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 1 [81460] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 2 From d59b46df711f250408af5916ee0aeb002f018aaf Mon Sep 17 00:00:00 2001 From: Permok Date: Sat, 31 Aug 2024 18:53:03 +0200 Subject: [PATCH 052/138] Update vault --- db/db.lua | 48 +++++++++++++++++++++-------------------------- modules/vault.lua | 22 +++++++++++----------- 2 files changed, 32 insertions(+), 38 deletions(-) diff --git a/db/db.lua b/db/db.lua index a7bbb75..ad2058e 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1891,36 +1891,30 @@ end PermoksAccountManager.vault_rewards = { -- MythicPlus [Enum.WeeklyRewardChestThresholdType.Activities] = { - [-1] = 489, - [0] = 506, - [2] = 509, - [3] = 509, - [4] = 512, - [5] = 512, - [6] = 515, - [7] = 515, - [8] = 519, - [9] = 519, - [10] = 522, - }, - -- RankedPvP - [Enum.WeeklyRewardChestThresholdType.RankedPvP] = { - [0] = 445, - [1] = 455, - [2] = 460, - [3] = 465, - [4] = 470, - [5] = 475, - [6] = 458, - [7] = 464, - [8] = 471 + [-1] = 593, + [0] = 603, + [2] = 606, + [3] = 610, + [4] = 610, + [5] = 613, + [6] = 613, + [7] = 616, + [8] = 619, + [9] = 619, + [10] = 623, + }, + -- World + [Enum.WeeklyRewardChestThresholdType.World] = { + [0] = 603, + [1] = 610, + [2] = 616, }, -- Raid [Enum.WeeklyRewardChestThresholdType.Raid] = { - [17] = 480, - [14] = 493, - [15] = 506, - [16] = 519, + [17] = 584, + [14] = 597, + [15] = 610, + [16] = 623, } } diff --git a/modules/vault.lua b/modules/vault.lua index dd3d820..2d93828 100644 --- a/modules/vault.lua +++ b/modules/vault.lua @@ -22,9 +22,9 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, great_vault_pvp = { - label = L['Vault PVP'], + label = 'Vault World', type = 'vault', - key = 'RankedPvP', + key = 'World', tooltip = true, group = 'vault', version = WOW_PROJECT_MAINLINE @@ -122,13 +122,13 @@ local function UpdateVaultInfo(charInfo, force) if not vaultInfo.MythicPlus[activityInfo.index] or progressChanged or levelChanged or force then vaultInfo.MythicPlus[activityInfo.index] = activityInfo end - elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.RankedPvP then - vaultInfo.RankedPvP = vaultInfo.RankedPvP or {} - local progressChanged = valueChanged(vaultInfo.RankedPvP[activityInfo.index], activityInfo, 'progress') - local levelChanged = valueChanged(vaultInfo.RankedPvP[activityInfo.index], activityInfo, 'level', true) + elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.World then + vaultInfo.World = vaultInfo.World or {} + local progressChanged = valueChanged(vaultInfo.World[activityInfo.index], activityInfo, 'progress') + local levelChanged = valueChanged(vaultInfo.World[activityInfo.index], activityInfo, 'level', true) - if not vaultInfo.RankedPvP[activityInfo.index] or progressChanged or levelChanged then - vaultInfo.RankedPvP[activityInfo.index] = activityInfo + if not vaultInfo.World[activityInfo.index] or progressChanged or levelChanged then + vaultInfo.World[activityInfo.index] = activityInfo end end end @@ -164,8 +164,8 @@ local function GetDifficultyString(type, level) return DifficultyUtil.GetDifficultyName(level):sub(1, 1) elseif type == Enum.WeeklyRewardChestThresholdType.Activities then return level - elseif type == Enum.WeeklyRewardChestThresholdType.RankedPvP then - return PVPUtil.GetTierName(level):sub(1, 2) + elseif type == Enum.WeeklyRewardChestThresholdType.World then + return level end end @@ -224,7 +224,7 @@ function PermoksAccountManager.VaultTooltip_OnEnter(button, altData, labelRow) local difficultyName = activityInfo.level and activityInfo.progress >= activityInfo.threshold and DifficultyUtil.GetDifficultyName(activityInfo.level) tooltip:AddLine(i .. '. Reward:', difficultyName or '-', '|', rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold)) - elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.RankedPvP then + elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.World then local difficultyName = activityInfo.level and activityInfo.progress >= activityInfo.threshold and PVPUtil.GetTierName(activityInfo.level) tooltip:AddLine(i .. '. Reward:', difficultyName or '-', '|', rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold)) From f2c238f4806c0d196b10376bd0f20dfabaf21b60 Mon Sep 17 00:00:00 2001 From: Permok Date: Sat, 31 Aug 2024 18:53:10 +0200 Subject: [PATCH 053/138] Fix lua error --- PermoksAccountManager.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 40e06a8..7b471be 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -695,6 +695,7 @@ function PermoksAccountManager:Modernize(oldInternalVersion) if not oldInternalVersion then PermoksAccountManager:ResetCategories() + oldInternalVersion = 1 end if oldInternalVersion < 2 then From 19b301db94a36b55f64735c99e1416889dff9c57 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Sun, 1 Sep 2024 23:43:08 +0200 Subject: [PATCH 054/138] changed rares to track via C_QuestLog.IsQuestFlaggedCompletedOnAccount for the warband as this seems to be more reliable to track reputation gains --- db/db.lua | 174 ++++++++++++++++++++++----------------------- modules/quests.lua | 12 ++-- 2 files changed, 94 insertions(+), 92 deletions(-) diff --git a/db/db.lua b/db/db.lua index ad2058e..252ab1c 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1640,99 +1640,99 @@ PermoksAccountManager.quests = { -- Weekly Rares - NEED TO CONFIRM THE REPUTATION QUEST RESETS WEEKLY isle_of_dorne_rares = { - [85158] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- (daily?!: 82196) - [84037] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, -- (daily: 81923) - --[81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, -- One Time Kill - [84031] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) - [84032] = {questType = 'weekly', warband = true, name = 'Shallowshell the Clacker'}, -- (daily: 81903) - --[81893] = {questType = 'weekly', warband = true, name = 'Bloodmaw'}, -- One Time Kill - --[81892] = {questType = 'weekly', warband = true, name = 'Springbubble'}, -- One Time Kill - --[79685] = {questType = 'weekly', warband = true, name = 'Sandres the Relicbearer'}, -- One Time Kill - [84036] = {questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix'}, -- (daily: 81920) - --[81895] = {questType = 'weekly', warband = true, name = 'Emperor Pitfang'},-- One Time Kill - [84029] = {questType = 'weekly', warband = true, name = 'Escaped Cutthroat'}, -- (daily: 81907) - [84039] = {questType = 'weekly', warband = true, name = 'Matriarch Charfuria'}, -- (daily: 81921) - [84030] = {questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus'}, -- (daily: 81901) - [84028] = {questType = 'weekly', warband = true, name = 'Gar\'loc'}, -- (daily: 81899) - [84033] = {questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched'}, -- (daily: 81904) - --[78619] = {questType = 'weekly', warband = true, name = 'Rustul Titancap'}, -- One Time Kill - [84034] = {questType = 'weekly', warband = true, name = 'Flamekeeper Graz'}, -- (daily: 81905) - [84026] = {questType = 'weekly', warband = true, name = 'Plaguehart'}, -- (daily: 81897) - [84038] = {questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful'}, -- (daily: 81922) - [85160] = {questType = 'weekly', warband = true, name = 'Kereke'}, -- (daily: 82204) - [85161] = {questType = 'weekly', warband = true, name = 'Zovex'}, -- (daily: 82203) - [85159] = {questType = 'weekly', warband = true, name = 'Rotfist'}, -- (daily: 82205) + [85158] = {questType = 'weekly', warband = true, rare = true, name = 'Alunira'}, -- (daily?!: 82196) + [84037] = {questType = 'weekly', warband = true, rare = true, name = 'Tephratennae'}, -- (daily: 81923) + --[81894] = {questType = 'weekly', warband = true, rare = true, name = 'Warphorn'}, -- One Time Kill + [84031] = {questType = 'weekly', warband = true, rare = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) + [84032] = {questType = 'weekly', warband = true, rare = true, name = 'Shallowshell the Clacker'}, -- (daily: 81903) + --[81893] = {questType = 'weekly', warband = true, rare = true, name = 'Bloodmaw'}, -- One Time Kill + --[81892] = {questType = 'weekly', warband = true, rare = true, name = 'Springbubble'}, -- One Time Kill + --[79685] = {questType = 'weekly', warband = true, rare = true, name = 'Sandres the Relicbearer'}, -- One Time Kill + [84036] = {questType = 'weekly', warband = true, rare = true, name = 'Clawbreaker K\'zithix'}, -- (daily: 81920) + --[81895] = {questType = 'weekly', warband = true, rare = true, name = 'Emperor Pitfang'},-- One Time Kill + [84029] = {questType = 'weekly', warband = true, rare = true, name = 'Escaped Cutthroat'}, -- (daily: 81907) + [84039] = {questType = 'weekly', warband = true, rare = true, name = 'Matriarch Charfuria'}, -- (daily: 81921) + [84030] = {questType = 'weekly', warband = true, rare = true, name = 'Tempest Lord Incarnus'}, -- (daily: 81901) + [84028] = {questType = 'weekly', warband = true, rare = true, name = 'Gar\'loc'}, -- (daily: 81899) + [84033] = {questType = 'weekly', warband = true, rare = true, name = 'Twice-Stinger the Wretched'}, -- (daily: 81904) + --[78619] = {questType = 'weekly', warband = true, rare = true, name = 'Rustul Titancap'}, -- One Time Kill + [84034] = {questType = 'weekly', warband = true, rare = true, name = 'Flamekeeper Graz'}, -- (daily: 81905) + [84026] = {questType = 'weekly', warband = true, rare = true, name = 'Plaguehart'}, -- (daily: 81897) + [84038] = {questType = 'weekly', warband = true, rare = true, name = 'Sweetspark the Oozeful'}, -- (daily: 81922) + [85160] = {questType = 'weekly', warband = true, rare = true, name = 'Kereke'}, -- (daily: 82204) + [85161] = {questType = 'weekly', warband = true, rare = true, name = 'Zovex'}, -- (daily: 82203) + [85159] = {questType = 'weekly', warband = true, rare = true, name = 'Rotfist'}, -- (daily: 82205) }, ringing_deeps_rares = { - [84046] = {questType = 'weekly', warband = true, name = 'Automaxor'}, -- (daily: 81674) - [84044] = {questType = 'weekly', warband = true, name = 'Charmonger'}, -- (daily: 81562) - --[80547] = {questType = 'weekly', warband = true, name = 'King Splash'}, -- One Time Kill - --[80505] = {questType = 'weekly', warband = true, name = 'Candleflyer Captain'}, -- One time kill - [84042] = {questType = 'weekly', warband = true, name = 'Cragmund'}, -- (daily: 80560) - [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, -- (daily: 80536) - --[80557] = {questType = 'weekly', warband = true, name = 'Aquellion'}, -- One time kill - [84041] = {questType = 'weekly', warband = true, name = 'Zilthara'}, -- (daily: 80506) - [84045] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, -- (daily: 81511) - [84040] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, -- (daily: 80507) - [84047] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, -- (daily: 81485) - --[81563] = {questType = 'weekly', warband = true, name = 'Rampaging Blight'}, -- One time kill - [84043] = {questType = 'weekly', warband = true, name = 'Trungal'}, -- (daily: 80574) - [84049] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, -- (daily: 81652) - [84048] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, -- (daily: 81648) - [84050] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) - --[81566] = {questType = 'weekly', warband = true, name = 'Deathbound Husk'}, -- One time kill - [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, -- (daily: 81633) + [84046] = {questType = 'weekly', warband = true, rare = true, name = 'Automaxor'}, -- (daily: 81674) + [84044] = {questType = 'weekly', warband = true, rare = true, name = 'Charmonger'}, -- (daily: 81562) + --[80547] = {questType = 'weekly', warband = true, rare = true, name = 'King Splash'}, -- One Time Kill + --[80505] = {questType = 'weekly', warband = true, rare = true, name = 'Candleflyer Captain'}, -- One time kill + [84042] = {questType = 'weekly', warband = true, rare = true, name = 'Cragmund'}, -- (daily: 80560) + [85162] = {questType = 'weekly', warband = true, rare = true, name = 'Deepflayer Broodmother'}, -- (daily: 80536) + --[80557] = {questType = 'weekly', warband = true, rare = true, name = 'Aquellion'}, -- One time kill + [84041] = {questType = 'weekly', warband = true, rare = true, name = 'Zilthara'}, -- (daily: 80506) + [84045] = {questType = 'weekly', warband = true, rare = true, name = 'Coalesced Monstrosity'}, -- (daily: 81511) + [84040] = {questType = 'weekly', warband = true, rare = true, name = 'Terror of the Forge'}, -- (daily: 80507) + [84047] = {questType = 'weekly', warband = true, rare = true, name = 'Kelpmire'}, -- (daily: 81485) + --[81563] = {questType = 'weekly', warband = true, rare = true, name = 'Rampaging Blight'}, -- One time kill + [84043] = {questType = 'weekly', warband = true, rare = true, name = 'Trungal'}, -- (daily: 80574) + [84049] = {questType = 'weekly', warband = true, rare = true, name = 'Spore-infused Shalewing'}, -- (daily: 81652) + [84048] = {questType = 'weekly', warband = true, rare = true, name = 'Hungerer of the Deeps'}, -- (daily: 81648) + [84050] = {questType = 'weekly', warband = true, rare = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) + --[81566] = {questType = 'weekly', warband = true, rare = true, name = 'Deathbound Husk'}, -- One time kill + [85163] = {questType = 'weekly', warband = true, rare = true, name = 'Lurker of the Deeps'}, -- (daily: 81633) }, hallowfall_rares = { - [85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn'}, -- (daily: 81763) - [85165] = {questType = 'weekly', warband = true, name = 'Deathtide'}, -- (daily: 81880) - [84063] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, -- (daily: 81756) - [84051] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, -- (daily: 82557) - [84064] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, -- (daily: 81791) - [84061] = {questType = 'weekly', warband = true, name = 'The Taskmaker'}, -- (daily: 80009) - --[81761] = {questType = 'weekly', warband = true, name = 'Grimslice'}, -- One Time Kill - [84066] = {questType = 'weekly', warband = true, name = 'Strength of Beledar'}, -- (daily: 81849) - --[80006] = {questType = 'weekly', warband = true, name = 'Ixlorb the Spinner'}, -- One Time Kill - [84060] = {questType = 'weekly', warband = true, name = 'Murkspike'}, -- (daily: 82565) - [84053] = {questType = 'weekly', warband = true, name = 'Deathpetal'}, -- (daily: 82559) - --[80011] = {questType = 'weekly', warband = true, name = 'Deepfiend Azellix'}, -- One Time Kill - [84056] = {questType = 'weekly', warband = true, name = 'Duskshadow'}, -- (daily: 82562) - --[81881] = {questType = 'weekly', warband = true, name = 'Funglour'}, -- One Time Kill - [84067] = {questType = 'weekly', warband = true, name = 'Sir Alastair Purefire'}, -- (daily: 81853) - [84065] = {questType = 'weekly', warband = true, name = 'Horror of the Shallows'}, -- (daily: 81836) - [84062] = {questType = 'weekly', warband = true, name = 'Sloshmuck'}, -- (daily: 79271) - --[80010] = {questType = 'weekly', warband = true, name = 'Murkshade'}, -- One Time Kill - [84054] = {questType = 'weekly', warband = true, name = 'Croakit'}, -- (daily: 82560) - [84068] = {questType = 'weekly', warband = true, name = 'Pride of Beledar'}, -- (daily: 81882) - [84052] = {questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker'}, -- (daily: 82558) - [84055] = {questType = 'weekly', warband = true, name = 'Toadstomper'}, -- (daily: 82561) - [84059] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) - [84058] = {questType = 'weekly', warband = true, name = 'Ravageant'}, -- (daily: 82566) - [84057] = {questType = 'weekly', warband = true, name = 'Parasidious'}, -- (daily: 82563) - [80486] = {questType = 'weekly', warband = true, name = 'Brineslash'}, -- BUGGED + [85164] = {questType = 'weekly', warband = true, rare = true, name = 'Beledar\'s Spawn'}, -- (daily: 81763) + [85165] = {questType = 'weekly', warband = true, rare = true, name = 'Deathtide'}, -- (daily: 81880) + [84063] = {questType = 'weekly', warband = true, rare = true, name = 'Lytfang the Lost'}, -- (daily: 81756) + [84051] = {questType = 'weekly', warband = true, rare = true, name = 'Moth\'ethk'}, -- (daily: 82557) + [84064] = {questType = 'weekly', warband = true, rare = true, name = 'The Perchfather'}, -- (daily: 81791) + [84061] = {questType = 'weekly', warband = true, rare = true, name = 'The Taskmaker'}, -- (daily: 80009) + --[81761] = {questType = 'weekly', warband = true, rare = true, name = 'Grimslice'}, -- One Time Kill + [84066] = {questType = 'weekly', warband = true, rare = true, name = 'Strength of Beledar'}, -- (daily: 81849) + --[80006] = {questType = 'weekly', warband = true, rare = true, name = 'Ixlorb the Spinner'}, -- One Time Kill + [84060] = {questType = 'weekly', warband = true, rare = true, name = 'Murkspike'}, -- (daily: 82565) + [84053] = {questType = 'weekly', warband = true, rare = true, name = 'Deathpetal'}, -- (daily: 82559) + --[80011] = {questType = 'weekly', warband = true, rare = true, name = 'Deepfiend Azellix'}, -- One Time Kill + [84056] = {questType = 'weekly', warband = true, rare = true, name = 'Duskshadow'}, -- (daily: 82562) + --[81881] = {questType = 'weekly', warband = true, rare = true, name = 'Funglour'}, -- One Time Kill + [84067] = {questType = 'weekly', warband = true, rare = true, name = 'Sir Alastair Purefire'}, -- (daily: 81853) + [84065] = {questType = 'weekly', warband = true, rare = true, name = 'Horror of the Shallows'}, -- (daily: 81836) + [84062] = {questType = 'weekly', warband = true, rare = true, name = 'Sloshmuck'}, -- (daily: 79271) + --[80010] = {questType = 'weekly', warband = true, rare = true, name = 'Murkshade'}, -- One Time Kill + [84054] = {questType = 'weekly', warband = true, rare = true, name = 'Croakit'}, -- (daily: 82560) + [84068] = {questType = 'weekly', warband = true, rare = true, name = 'Pride of Beledar'}, -- (daily: 81882) + [84052] = {questType = 'weekly', warband = true, rare = true, name = 'Crazed Cabbage Smacker'}, -- (daily: 82558) + [84055] = {questType = 'weekly', warband = true, rare = true, name = 'Toadstomper'}, -- (daily: 82561) + [84059] = {questType = 'weekly', warband = true, rare = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) + [84058] = {questType = 'weekly', warband = true, rare = true, name = 'Ravageant'}, -- (daily: 82566) + [84057] = {questType = 'weekly', warband = true, rare = true, name = 'Parasidious'}, -- (daily: 82563) + [80486] = {questType = 'weekly', warband = true, rare = true, name = 'Brineslash'}, -- BUGGED }, azj_kahet_rares = { - [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) - [84072] = {questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700'}, -- (daily: 81703) - --[81695] = {questType = 'weekly', warband = true, name = 'Abyssal Devourer'}, -- One Time Kill - [84075] = {questType = 'weekly', warband = true, name = 'Maddened Siegebomber'}, -- (daily: 81706) - --[81700] = {questType = 'weekly', warband = true, name = 'Vilewing'}, -- One Time Kill - --[81699] = {questType = 'weekly', warband = true, name = 'Webspeaker Grik\'ik'}, -- One Time Kill - [84073] = {questType = 'weekly', warband = true, name = 'Cha\'tak'}, -- (daily: 81704) - [84076] = {questType = 'weekly', warband = true, name = 'Enduring Gutterface'}, -- (daily: 81707) - [84074] = {questType = 'weekly', warband = true, name = 'Monstrous Lasharoth'}, -- (daily: 81705) - --[81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik & Khak\'ik'}, -- One Time Kill - --[78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, -- One Time Kill - [84080] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, -- (daily: 82037) - [84082] = {questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk'}, -- (daily: 82078) - [84081] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, -- (daily: 82077) - [84079] = {questType = 'weekly', warband = true, name = 'Harvester Qixt'}, -- (daily: 82036) - [84078] = {questType = 'weekly', warband = true, name = 'The Oozekhan'}, -- (daily: 82035) - [84077] = {questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed'}, -- (daily: 82034) - [84069] = {questType = 'weekly', warband = true, name = 'The Groundskeeper'}, -- (daily: 81634) - [84070] = {questType = 'weekly', warband = true, name = 'Xishorr'}, -- (daily: 81701) - [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- (daily: 82290) - [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- (daily: 82289) + [84071] = {questType = 'weekly', warband = true, rare = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) + [84072] = {questType = 'weekly', warband = true, rare = true, name = 'XT-Minecrusher 8700'}, -- (daily: 81703) + --[81695] = {questType = 'weekly', warband = true, rare = true, name = 'Abyssal Devourer'}, -- One Time Kill + [84075] = {questType = 'weekly', warband = true, rare = true, name = 'Maddened Siegebomber'}, -- (daily: 81706) + --[81700] = {questType = 'weekly', warband = true, rare = true, name = 'Vilewing'}, -- One Time Kill + --[81699] = {questType = 'weekly', warband = true, rare = true, name = 'Webspeaker Grik\'ik'}, -- One Time Kill + [84073] = {questType = 'weekly', warband = true, rare = true, name = 'Cha\'tak'}, -- (daily: 81704) + [84076] = {questType = 'weekly', warband = true, rare = true, name = 'Enduring Gutterface'}, -- (daily: 81707) + [84074] = {questType = 'weekly', warband = true, rare = true, name = 'Monstrous Lasharoth'}, -- (daily: 81705) + --[81694] = {questType = 'weekly', warband = true, rare = true, name = 'Rhak\'ik & Khak\'ik'}, -- One Time Kill + --[78905] = {questType = 'weekly', warband = true, rare = true, name = 'Ahg\'zagall'}, -- One Time Kill + [84080] = {questType = 'weekly', warband = true, rare = true, name = 'Umbraclaw Matra'}, -- (daily: 82037) + [84082] = {questType = 'weekly', warband = true, rare = true, name = 'Skirmisher Sa\'zryk'}, -- (daily: 82078) + [84081] = {questType = 'weekly', warband = true, rare = true, name = 'Deepcrawler Tx\'kesh'}, -- (daily: 82077) + [84079] = {questType = 'weekly', warband = true, rare = true, name = 'Harvester Qixt'}, -- (daily: 82036) + [84078] = {questType = 'weekly', warband = true, rare = true, name = 'The Oozekhan'}, -- (daily: 82035) + [84077] = {questType = 'weekly', warband = true, rare = true, name = 'Jix\'ak the Crazed'}, -- (daily: 82034) + [84069] = {questType = 'weekly', warband = true, rare = true, name = 'The Groundskeeper'}, -- (daily: 81634) + [84070] = {questType = 'weekly', warband = true, rare = true, name = 'Xishorr'}, -- (daily: 81701) + [85167] = {questType = 'weekly', warband = true, rare = true, name = 'The One Left'}, -- (daily: 82290) + [85166] = {questType = 'weekly', warband = true, rare = true, name = 'Tka\'ktath'}, -- (daily: 82289) }, -- Professions diff --git a/modules/quests.lua b/modules/quests.lua index 37bbb7c..2084219 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1462,11 +1462,13 @@ local function UpdateAllQuests(charInfo) -- check for weekly Warband Rewards if info.warband then local currentWarbandQuestInfo = setQuestInfo(warbandQuestInfo, info, key) - - -- API CURRENTLY NOT FUNCTIONING AS INTENDED - -- local isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) - -- Workaround, but requires login on character that completed the quest: - local isWarbandComplete = isComplete + local isWarbandComplete = false + -- API CURRENTLY NOT FUNCTIONING AS INTENDED?. COUPLE OF WORKAROUNDS HERE + if info.rare then + isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) + else + isWarbandComplete = isComplete + end currentWarbandQuestInfo[questID] = currentWarbandQuestInfo[questID] or isWarbandComplete or nil end From 0e3821ab42605ffabd04c3b0fe392bcd1e1f4940 Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Sun, 1 Sep 2024 23:50:21 +0200 Subject: [PATCH 055/138] reverted change as api still doesnt work as intended --- db/db.lua | 174 ++++++++++++++++++++++----------------------- modules/quests.lua | 12 ++-- 2 files changed, 92 insertions(+), 94 deletions(-) diff --git a/db/db.lua b/db/db.lua index 252ab1c..ad2058e 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1640,99 +1640,99 @@ PermoksAccountManager.quests = { -- Weekly Rares - NEED TO CONFIRM THE REPUTATION QUEST RESETS WEEKLY isle_of_dorne_rares = { - [85158] = {questType = 'weekly', warband = true, rare = true, name = 'Alunira'}, -- (daily?!: 82196) - [84037] = {questType = 'weekly', warband = true, rare = true, name = 'Tephratennae'}, -- (daily: 81923) - --[81894] = {questType = 'weekly', warband = true, rare = true, name = 'Warphorn'}, -- One Time Kill - [84031] = {questType = 'weekly', warband = true, rare = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) - [84032] = {questType = 'weekly', warband = true, rare = true, name = 'Shallowshell the Clacker'}, -- (daily: 81903) - --[81893] = {questType = 'weekly', warband = true, rare = true, name = 'Bloodmaw'}, -- One Time Kill - --[81892] = {questType = 'weekly', warband = true, rare = true, name = 'Springbubble'}, -- One Time Kill - --[79685] = {questType = 'weekly', warband = true, rare = true, name = 'Sandres the Relicbearer'}, -- One Time Kill - [84036] = {questType = 'weekly', warband = true, rare = true, name = 'Clawbreaker K\'zithix'}, -- (daily: 81920) - --[81895] = {questType = 'weekly', warband = true, rare = true, name = 'Emperor Pitfang'},-- One Time Kill - [84029] = {questType = 'weekly', warband = true, rare = true, name = 'Escaped Cutthroat'}, -- (daily: 81907) - [84039] = {questType = 'weekly', warband = true, rare = true, name = 'Matriarch Charfuria'}, -- (daily: 81921) - [84030] = {questType = 'weekly', warband = true, rare = true, name = 'Tempest Lord Incarnus'}, -- (daily: 81901) - [84028] = {questType = 'weekly', warband = true, rare = true, name = 'Gar\'loc'}, -- (daily: 81899) - [84033] = {questType = 'weekly', warband = true, rare = true, name = 'Twice-Stinger the Wretched'}, -- (daily: 81904) - --[78619] = {questType = 'weekly', warband = true, rare = true, name = 'Rustul Titancap'}, -- One Time Kill - [84034] = {questType = 'weekly', warband = true, rare = true, name = 'Flamekeeper Graz'}, -- (daily: 81905) - [84026] = {questType = 'weekly', warband = true, rare = true, name = 'Plaguehart'}, -- (daily: 81897) - [84038] = {questType = 'weekly', warband = true, rare = true, name = 'Sweetspark the Oozeful'}, -- (daily: 81922) - [85160] = {questType = 'weekly', warband = true, rare = true, name = 'Kereke'}, -- (daily: 82204) - [85161] = {questType = 'weekly', warband = true, rare = true, name = 'Zovex'}, -- (daily: 82203) - [85159] = {questType = 'weekly', warband = true, rare = true, name = 'Rotfist'}, -- (daily: 82205) + [85158] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- (daily?!: 82196) + [84037] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, -- (daily: 81923) + --[81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, -- One Time Kill + [84031] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) + [84032] = {questType = 'weekly', warband = true, name = 'Shallowshell the Clacker'}, -- (daily: 81903) + --[81893] = {questType = 'weekly', warband = true, name = 'Bloodmaw'}, -- One Time Kill + --[81892] = {questType = 'weekly', warband = true, name = 'Springbubble'}, -- One Time Kill + --[79685] = {questType = 'weekly', warband = true, name = 'Sandres the Relicbearer'}, -- One Time Kill + [84036] = {questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix'}, -- (daily: 81920) + --[81895] = {questType = 'weekly', warband = true, name = 'Emperor Pitfang'},-- One Time Kill + [84029] = {questType = 'weekly', warband = true, name = 'Escaped Cutthroat'}, -- (daily: 81907) + [84039] = {questType = 'weekly', warband = true, name = 'Matriarch Charfuria'}, -- (daily: 81921) + [84030] = {questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus'}, -- (daily: 81901) + [84028] = {questType = 'weekly', warband = true, name = 'Gar\'loc'}, -- (daily: 81899) + [84033] = {questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched'}, -- (daily: 81904) + --[78619] = {questType = 'weekly', warband = true, name = 'Rustul Titancap'}, -- One Time Kill + [84034] = {questType = 'weekly', warband = true, name = 'Flamekeeper Graz'}, -- (daily: 81905) + [84026] = {questType = 'weekly', warband = true, name = 'Plaguehart'}, -- (daily: 81897) + [84038] = {questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful'}, -- (daily: 81922) + [85160] = {questType = 'weekly', warband = true, name = 'Kereke'}, -- (daily: 82204) + [85161] = {questType = 'weekly', warband = true, name = 'Zovex'}, -- (daily: 82203) + [85159] = {questType = 'weekly', warband = true, name = 'Rotfist'}, -- (daily: 82205) }, ringing_deeps_rares = { - [84046] = {questType = 'weekly', warband = true, rare = true, name = 'Automaxor'}, -- (daily: 81674) - [84044] = {questType = 'weekly', warband = true, rare = true, name = 'Charmonger'}, -- (daily: 81562) - --[80547] = {questType = 'weekly', warband = true, rare = true, name = 'King Splash'}, -- One Time Kill - --[80505] = {questType = 'weekly', warband = true, rare = true, name = 'Candleflyer Captain'}, -- One time kill - [84042] = {questType = 'weekly', warband = true, rare = true, name = 'Cragmund'}, -- (daily: 80560) - [85162] = {questType = 'weekly', warband = true, rare = true, name = 'Deepflayer Broodmother'}, -- (daily: 80536) - --[80557] = {questType = 'weekly', warband = true, rare = true, name = 'Aquellion'}, -- One time kill - [84041] = {questType = 'weekly', warband = true, rare = true, name = 'Zilthara'}, -- (daily: 80506) - [84045] = {questType = 'weekly', warband = true, rare = true, name = 'Coalesced Monstrosity'}, -- (daily: 81511) - [84040] = {questType = 'weekly', warband = true, rare = true, name = 'Terror of the Forge'}, -- (daily: 80507) - [84047] = {questType = 'weekly', warband = true, rare = true, name = 'Kelpmire'}, -- (daily: 81485) - --[81563] = {questType = 'weekly', warband = true, rare = true, name = 'Rampaging Blight'}, -- One time kill - [84043] = {questType = 'weekly', warband = true, rare = true, name = 'Trungal'}, -- (daily: 80574) - [84049] = {questType = 'weekly', warband = true, rare = true, name = 'Spore-infused Shalewing'}, -- (daily: 81652) - [84048] = {questType = 'weekly', warband = true, rare = true, name = 'Hungerer of the Deeps'}, -- (daily: 81648) - [84050] = {questType = 'weekly', warband = true, rare = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) - --[81566] = {questType = 'weekly', warband = true, rare = true, name = 'Deathbound Husk'}, -- One time kill - [85163] = {questType = 'weekly', warband = true, rare = true, name = 'Lurker of the Deeps'}, -- (daily: 81633) + [84046] = {questType = 'weekly', warband = true, name = 'Automaxor'}, -- (daily: 81674) + [84044] = {questType = 'weekly', warband = true, name = 'Charmonger'}, -- (daily: 81562) + --[80547] = {questType = 'weekly', warband = true, name = 'King Splash'}, -- One Time Kill + --[80505] = {questType = 'weekly', warband = true, name = 'Candleflyer Captain'}, -- One time kill + [84042] = {questType = 'weekly', warband = true, name = 'Cragmund'}, -- (daily: 80560) + [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, -- (daily: 80536) + --[80557] = {questType = 'weekly', warband = true, name = 'Aquellion'}, -- One time kill + [84041] = {questType = 'weekly', warband = true, name = 'Zilthara'}, -- (daily: 80506) + [84045] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, -- (daily: 81511) + [84040] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, -- (daily: 80507) + [84047] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, -- (daily: 81485) + --[81563] = {questType = 'weekly', warband = true, name = 'Rampaging Blight'}, -- One time kill + [84043] = {questType = 'weekly', warband = true, name = 'Trungal'}, -- (daily: 80574) + [84049] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, -- (daily: 81652) + [84048] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, -- (daily: 81648) + [84050] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) + --[81566] = {questType = 'weekly', warband = true, name = 'Deathbound Husk'}, -- One time kill + [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, -- (daily: 81633) }, hallowfall_rares = { - [85164] = {questType = 'weekly', warband = true, rare = true, name = 'Beledar\'s Spawn'}, -- (daily: 81763) - [85165] = {questType = 'weekly', warband = true, rare = true, name = 'Deathtide'}, -- (daily: 81880) - [84063] = {questType = 'weekly', warband = true, rare = true, name = 'Lytfang the Lost'}, -- (daily: 81756) - [84051] = {questType = 'weekly', warband = true, rare = true, name = 'Moth\'ethk'}, -- (daily: 82557) - [84064] = {questType = 'weekly', warband = true, rare = true, name = 'The Perchfather'}, -- (daily: 81791) - [84061] = {questType = 'weekly', warband = true, rare = true, name = 'The Taskmaker'}, -- (daily: 80009) - --[81761] = {questType = 'weekly', warband = true, rare = true, name = 'Grimslice'}, -- One Time Kill - [84066] = {questType = 'weekly', warband = true, rare = true, name = 'Strength of Beledar'}, -- (daily: 81849) - --[80006] = {questType = 'weekly', warband = true, rare = true, name = 'Ixlorb the Spinner'}, -- One Time Kill - [84060] = {questType = 'weekly', warband = true, rare = true, name = 'Murkspike'}, -- (daily: 82565) - [84053] = {questType = 'weekly', warband = true, rare = true, name = 'Deathpetal'}, -- (daily: 82559) - --[80011] = {questType = 'weekly', warband = true, rare = true, name = 'Deepfiend Azellix'}, -- One Time Kill - [84056] = {questType = 'weekly', warband = true, rare = true, name = 'Duskshadow'}, -- (daily: 82562) - --[81881] = {questType = 'weekly', warband = true, rare = true, name = 'Funglour'}, -- One Time Kill - [84067] = {questType = 'weekly', warband = true, rare = true, name = 'Sir Alastair Purefire'}, -- (daily: 81853) - [84065] = {questType = 'weekly', warband = true, rare = true, name = 'Horror of the Shallows'}, -- (daily: 81836) - [84062] = {questType = 'weekly', warband = true, rare = true, name = 'Sloshmuck'}, -- (daily: 79271) - --[80010] = {questType = 'weekly', warband = true, rare = true, name = 'Murkshade'}, -- One Time Kill - [84054] = {questType = 'weekly', warband = true, rare = true, name = 'Croakit'}, -- (daily: 82560) - [84068] = {questType = 'weekly', warband = true, rare = true, name = 'Pride of Beledar'}, -- (daily: 81882) - [84052] = {questType = 'weekly', warband = true, rare = true, name = 'Crazed Cabbage Smacker'}, -- (daily: 82558) - [84055] = {questType = 'weekly', warband = true, rare = true, name = 'Toadstomper'}, -- (daily: 82561) - [84059] = {questType = 'weekly', warband = true, rare = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) - [84058] = {questType = 'weekly', warband = true, rare = true, name = 'Ravageant'}, -- (daily: 82566) - [84057] = {questType = 'weekly', warband = true, rare = true, name = 'Parasidious'}, -- (daily: 82563) - [80486] = {questType = 'weekly', warband = true, rare = true, name = 'Brineslash'}, -- BUGGED + [85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn'}, -- (daily: 81763) + [85165] = {questType = 'weekly', warband = true, name = 'Deathtide'}, -- (daily: 81880) + [84063] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, -- (daily: 81756) + [84051] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, -- (daily: 82557) + [84064] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, -- (daily: 81791) + [84061] = {questType = 'weekly', warband = true, name = 'The Taskmaker'}, -- (daily: 80009) + --[81761] = {questType = 'weekly', warband = true, name = 'Grimslice'}, -- One Time Kill + [84066] = {questType = 'weekly', warband = true, name = 'Strength of Beledar'}, -- (daily: 81849) + --[80006] = {questType = 'weekly', warband = true, name = 'Ixlorb the Spinner'}, -- One Time Kill + [84060] = {questType = 'weekly', warband = true, name = 'Murkspike'}, -- (daily: 82565) + [84053] = {questType = 'weekly', warband = true, name = 'Deathpetal'}, -- (daily: 82559) + --[80011] = {questType = 'weekly', warband = true, name = 'Deepfiend Azellix'}, -- One Time Kill + [84056] = {questType = 'weekly', warband = true, name = 'Duskshadow'}, -- (daily: 82562) + --[81881] = {questType = 'weekly', warband = true, name = 'Funglour'}, -- One Time Kill + [84067] = {questType = 'weekly', warband = true, name = 'Sir Alastair Purefire'}, -- (daily: 81853) + [84065] = {questType = 'weekly', warband = true, name = 'Horror of the Shallows'}, -- (daily: 81836) + [84062] = {questType = 'weekly', warband = true, name = 'Sloshmuck'}, -- (daily: 79271) + --[80010] = {questType = 'weekly', warband = true, name = 'Murkshade'}, -- One Time Kill + [84054] = {questType = 'weekly', warband = true, name = 'Croakit'}, -- (daily: 82560) + [84068] = {questType = 'weekly', warband = true, name = 'Pride of Beledar'}, -- (daily: 81882) + [84052] = {questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker'}, -- (daily: 82558) + [84055] = {questType = 'weekly', warband = true, name = 'Toadstomper'}, -- (daily: 82561) + [84059] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) + [84058] = {questType = 'weekly', warband = true, name = 'Ravageant'}, -- (daily: 82566) + [84057] = {questType = 'weekly', warband = true, name = 'Parasidious'}, -- (daily: 82563) + [80486] = {questType = 'weekly', warband = true, name = 'Brineslash'}, -- BUGGED }, azj_kahet_rares = { - [84071] = {questType = 'weekly', warband = true, rare = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) - [84072] = {questType = 'weekly', warband = true, rare = true, name = 'XT-Minecrusher 8700'}, -- (daily: 81703) - --[81695] = {questType = 'weekly', warband = true, rare = true, name = 'Abyssal Devourer'}, -- One Time Kill - [84075] = {questType = 'weekly', warband = true, rare = true, name = 'Maddened Siegebomber'}, -- (daily: 81706) - --[81700] = {questType = 'weekly', warband = true, rare = true, name = 'Vilewing'}, -- One Time Kill - --[81699] = {questType = 'weekly', warband = true, rare = true, name = 'Webspeaker Grik\'ik'}, -- One Time Kill - [84073] = {questType = 'weekly', warband = true, rare = true, name = 'Cha\'tak'}, -- (daily: 81704) - [84076] = {questType = 'weekly', warband = true, rare = true, name = 'Enduring Gutterface'}, -- (daily: 81707) - [84074] = {questType = 'weekly', warband = true, rare = true, name = 'Monstrous Lasharoth'}, -- (daily: 81705) - --[81694] = {questType = 'weekly', warband = true, rare = true, name = 'Rhak\'ik & Khak\'ik'}, -- One Time Kill - --[78905] = {questType = 'weekly', warband = true, rare = true, name = 'Ahg\'zagall'}, -- One Time Kill - [84080] = {questType = 'weekly', warband = true, rare = true, name = 'Umbraclaw Matra'}, -- (daily: 82037) - [84082] = {questType = 'weekly', warband = true, rare = true, name = 'Skirmisher Sa\'zryk'}, -- (daily: 82078) - [84081] = {questType = 'weekly', warband = true, rare = true, name = 'Deepcrawler Tx\'kesh'}, -- (daily: 82077) - [84079] = {questType = 'weekly', warband = true, rare = true, name = 'Harvester Qixt'}, -- (daily: 82036) - [84078] = {questType = 'weekly', warband = true, rare = true, name = 'The Oozekhan'}, -- (daily: 82035) - [84077] = {questType = 'weekly', warband = true, rare = true, name = 'Jix\'ak the Crazed'}, -- (daily: 82034) - [84069] = {questType = 'weekly', warband = true, rare = true, name = 'The Groundskeeper'}, -- (daily: 81634) - [84070] = {questType = 'weekly', warband = true, rare = true, name = 'Xishorr'}, -- (daily: 81701) - [85167] = {questType = 'weekly', warband = true, rare = true, name = 'The One Left'}, -- (daily: 82290) - [85166] = {questType = 'weekly', warband = true, rare = true, name = 'Tka\'ktath'}, -- (daily: 82289) + [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) + [84072] = {questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700'}, -- (daily: 81703) + --[81695] = {questType = 'weekly', warband = true, name = 'Abyssal Devourer'}, -- One Time Kill + [84075] = {questType = 'weekly', warband = true, name = 'Maddened Siegebomber'}, -- (daily: 81706) + --[81700] = {questType = 'weekly', warband = true, name = 'Vilewing'}, -- One Time Kill + --[81699] = {questType = 'weekly', warband = true, name = 'Webspeaker Grik\'ik'}, -- One Time Kill + [84073] = {questType = 'weekly', warband = true, name = 'Cha\'tak'}, -- (daily: 81704) + [84076] = {questType = 'weekly', warband = true, name = 'Enduring Gutterface'}, -- (daily: 81707) + [84074] = {questType = 'weekly', warband = true, name = 'Monstrous Lasharoth'}, -- (daily: 81705) + --[81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik & Khak\'ik'}, -- One Time Kill + --[78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, -- One Time Kill + [84080] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, -- (daily: 82037) + [84082] = {questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk'}, -- (daily: 82078) + [84081] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, -- (daily: 82077) + [84079] = {questType = 'weekly', warband = true, name = 'Harvester Qixt'}, -- (daily: 82036) + [84078] = {questType = 'weekly', warband = true, name = 'The Oozekhan'}, -- (daily: 82035) + [84077] = {questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed'}, -- (daily: 82034) + [84069] = {questType = 'weekly', warband = true, name = 'The Groundskeeper'}, -- (daily: 81634) + [84070] = {questType = 'weekly', warband = true, name = 'Xishorr'}, -- (daily: 81701) + [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- (daily: 82290) + [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- (daily: 82289) }, -- Professions diff --git a/modules/quests.lua b/modules/quests.lua index 2084219..37bbb7c 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1462,13 +1462,11 @@ local function UpdateAllQuests(charInfo) -- check for weekly Warband Rewards if info.warband then local currentWarbandQuestInfo = setQuestInfo(warbandQuestInfo, info, key) - local isWarbandComplete = false - -- API CURRENTLY NOT FUNCTIONING AS INTENDED?. COUPLE OF WORKAROUNDS HERE - if info.rare then - isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) - else - isWarbandComplete = isComplete - end + + -- API CURRENTLY NOT FUNCTIONING AS INTENDED + -- local isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) + -- Workaround, but requires login on character that completed the quest: + local isWarbandComplete = isComplete currentWarbandQuestInfo[questID] = currentWarbandQuestInfo[questID] or isWarbandComplete or nil end From edb6823a5ebc0920aa78750792ad2fc1162897da Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 2 Sep 2024 02:44:59 +0200 Subject: [PATCH 056/138] added a new category for rares with 1-time rep reward and expanded function to clear old quests on modernization --- PermoksAccountManager.lua | 51 ++++++++++++++++++++++++++++++--------- db/db.lua | 45 ++++++++++++---------------------- modules/quests.lua | 46 ++++++++++++++++++----------------- 3 files changed, 78 insertions(+), 64 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 7b471be..bc45f1c 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -38,7 +38,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 2 +local INTERNALTWWVERSION = 3 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -603,23 +603,42 @@ function PermoksAccountManager:CreateResetTimers() end end -function PermoksAccountManager:ResetQuestCompletion(labelRow) +function PermoksAccountManager:ResetQuestCompletion(labelRow, ...) local db = self.db.global local accountData = db.accounts.main local warbandData = db.accounts.main.warbandData - + + local questIDs = false local questType = self.labelRows[labelRow].questType local visibility = self.labelRows[labelRow].visibility + + -- optional arguments in form of quest IDs can be passed if only specific quests are to be removed + if select("#", ...) > 0 then questIDs = {...} end - for _, alt_data in pairs(accountData.data) do - if alt_data.questInfo and alt_data.questInfo[questType] and alt_data.questInfo[questType][visibility] then - alt_data.questInfo[questType][visibility][labelRow] = {} + -- Helper function to process questInfo tables + local function processQuestInfo(questInfo) + if questInfo and questInfo[questType] and questInfo[questType][visibility] then + if not questInfo[questType][visibility][labelRow] then + questInfo[questType][visibility][labelRow] = {} + end + + if questIDs then + for _, quest in ipairs(questIDs) do + questInfo[questType][visibility][labelRow][quest] = nil + end + else + questInfo[questType][visibility][labelRow] = {} + end end end - if warbandData.questInfo and warbandData.questInfo[questType] and warbandData.questInfo[questType][visibility] then - warbandData.questInfo[questType][visibility][labelRow] = {} + -- Process account data + for _, alt_data in pairs(accountData.data) do + processQuestInfo(alt_data.questInfo) end + + -- Process warband data + processQuestInfo(warbandData.questInfo) end function PermoksAccountManager:CheckForModernize() @@ -699,10 +718,18 @@ function PermoksAccountManager:Modernize(oldInternalVersion) end if oldInternalVersion < 2 then - PermoksAccountManager:ResetQuestCompletion('isle_of_dorne_rares') - PermoksAccountManager:ResetQuestCompletion('ringing_deeps_rares') - PermoksAccountManager:ResetQuestCompletion('hallowfall_rares') - PermoksAccountManager:ResetQuestCompletion('azj_kahet_rares') + self:ResetQuestCompletion('isle_of_dorne_rares') + self:ResetQuestCompletion('ringing_deeps_rares') + self:ResetQuestCompletion('hallowfall_rares') + self:ResetQuestCompletion('azj_kahet_rares') + end + + if oldInternalVersion < 3 then + self:UpdateDefaultCategories('currentweekly') + self:ResetQuestCompletion('isle_of_dorne_rares', 85158, 85160, 85161, 85159) + self:ResetQuestCompletion('ringing_deeps_rares', 85163, 85162) + self:ResetQuestCompletion('hallowfall_rares', 85164) + self:ResetQuestCompletion('azj_kahet_rares', 85167, 85166) end end diff --git a/db/db.lua b/db/db.lua index ad2058e..5fcc5ac 100644 --- a/db/db.lua +++ b/db/db.lua @@ -87,6 +87,7 @@ local default_categories = { 'ringing_deeps_rares', 'hallowfall_rares', 'azj_kahet_rares', + 'one_time_reputation_rares', }, childOrder = { dungeon_weekly = 1, @@ -110,6 +111,7 @@ local default_categories = { ringing_deeps_rares = 22, hallowfall_rares = 23, azj_kahet_rares = 24, + one_time_reputation_rares = 25, }, enabled = true }, @@ -1640,68 +1642,47 @@ PermoksAccountManager.quests = { -- Weekly Rares - NEED TO CONFIRM THE REPUTATION QUEST RESETS WEEKLY isle_of_dorne_rares = { - [85158] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- (daily?!: 82196) [84037] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, -- (daily: 81923) - --[81894] = {questType = 'weekly', warband = true, name = 'Warphorn'}, -- One Time Kill [84031] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) [84032] = {questType = 'weekly', warband = true, name = 'Shallowshell the Clacker'}, -- (daily: 81903) - --[81893] = {questType = 'weekly', warband = true, name = 'Bloodmaw'}, -- One Time Kill - --[81892] = {questType = 'weekly', warband = true, name = 'Springbubble'}, -- One Time Kill - --[79685] = {questType = 'weekly', warband = true, name = 'Sandres the Relicbearer'}, -- One Time Kill [84036] = {questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix'}, -- (daily: 81920) - --[81895] = {questType = 'weekly', warband = true, name = 'Emperor Pitfang'},-- One Time Kill [84029] = {questType = 'weekly', warband = true, name = 'Escaped Cutthroat'}, -- (daily: 81907) [84039] = {questType = 'weekly', warband = true, name = 'Matriarch Charfuria'}, -- (daily: 81921) [84030] = {questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus'}, -- (daily: 81901) [84028] = {questType = 'weekly', warband = true, name = 'Gar\'loc'}, -- (daily: 81899) [84033] = {questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched'}, -- (daily: 81904) - --[78619] = {questType = 'weekly', warband = true, name = 'Rustul Titancap'}, -- One Time Kill [84034] = {questType = 'weekly', warband = true, name = 'Flamekeeper Graz'}, -- (daily: 81905) [84026] = {questType = 'weekly', warband = true, name = 'Plaguehart'}, -- (daily: 81897) [84038] = {questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful'}, -- (daily: 81922) - [85160] = {questType = 'weekly', warband = true, name = 'Kereke'}, -- (daily: 82204) - [85161] = {questType = 'weekly', warband = true, name = 'Zovex'}, -- (daily: 82203) - [85159] = {questType = 'weekly', warband = true, name = 'Rotfist'}, -- (daily: 82205) }, ringing_deeps_rares = { [84046] = {questType = 'weekly', warband = true, name = 'Automaxor'}, -- (daily: 81674) [84044] = {questType = 'weekly', warband = true, name = 'Charmonger'}, -- (daily: 81562) - --[80547] = {questType = 'weekly', warband = true, name = 'King Splash'}, -- One Time Kill - --[80505] = {questType = 'weekly', warband = true, name = 'Candleflyer Captain'}, -- One time kill [84042] = {questType = 'weekly', warband = true, name = 'Cragmund'}, -- (daily: 80560) - [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, -- (daily: 80536) - --[80557] = {questType = 'weekly', warband = true, name = 'Aquellion'}, -- One time kill [84041] = {questType = 'weekly', warband = true, name = 'Zilthara'}, -- (daily: 80506) [84045] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, -- (daily: 81511) [84040] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, -- (daily: 80507) [84047] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, -- (daily: 81485) - --[81563] = {questType = 'weekly', warband = true, name = 'Rampaging Blight'}, -- One time kill + [84043] = {questType = 'weekly', warband = true, name = 'Trungal'}, -- (daily: 80574) [84049] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, -- (daily: 81652) [84048] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, -- (daily: 81648) [84050] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) - --[81566] = {questType = 'weekly', warband = true, name = 'Deathbound Husk'}, -- One time kill - [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, -- (daily: 81633) }, hallowfall_rares = { - [85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn'}, -- (daily: 81763) + --[85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn'}, -- (daily: 81763) [85165] = {questType = 'weekly', warband = true, name = 'Deathtide'}, -- (daily: 81880) [84063] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, -- (daily: 81756) [84051] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, -- (daily: 82557) [84064] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, -- (daily: 81791) [84061] = {questType = 'weekly', warband = true, name = 'The Taskmaker'}, -- (daily: 80009) - --[81761] = {questType = 'weekly', warband = true, name = 'Grimslice'}, -- One Time Kill [84066] = {questType = 'weekly', warband = true, name = 'Strength of Beledar'}, -- (daily: 81849) - --[80006] = {questType = 'weekly', warband = true, name = 'Ixlorb the Spinner'}, -- One Time Kill [84060] = {questType = 'weekly', warband = true, name = 'Murkspike'}, -- (daily: 82565) [84053] = {questType = 'weekly', warband = true, name = 'Deathpetal'}, -- (daily: 82559) - --[80011] = {questType = 'weekly', warband = true, name = 'Deepfiend Azellix'}, -- One Time Kill [84056] = {questType = 'weekly', warband = true, name = 'Duskshadow'}, -- (daily: 82562) - --[81881] = {questType = 'weekly', warband = true, name = 'Funglour'}, -- One Time Kill [84067] = {questType = 'weekly', warband = true, name = 'Sir Alastair Purefire'}, -- (daily: 81853) [84065] = {questType = 'weekly', warband = true, name = 'Horror of the Shallows'}, -- (daily: 81836) [84062] = {questType = 'weekly', warband = true, name = 'Sloshmuck'}, -- (daily: 79271) - --[80010] = {questType = 'weekly', warband = true, name = 'Murkshade'}, -- One Time Kill [84054] = {questType = 'weekly', warband = true, name = 'Croakit'}, -- (daily: 82560) [84068] = {questType = 'weekly', warband = true, name = 'Pride of Beledar'}, -- (daily: 81882) [84052] = {questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker'}, -- (daily: 82558) @@ -1714,15 +1695,10 @@ PermoksAccountManager.quests = { azj_kahet_rares = { [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) [84072] = {questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700'}, -- (daily: 81703) - --[81695] = {questType = 'weekly', warband = true, name = 'Abyssal Devourer'}, -- One Time Kill [84075] = {questType = 'weekly', warband = true, name = 'Maddened Siegebomber'}, -- (daily: 81706) - --[81700] = {questType = 'weekly', warband = true, name = 'Vilewing'}, -- One Time Kill - --[81699] = {questType = 'weekly', warband = true, name = 'Webspeaker Grik\'ik'}, -- One Time Kill [84073] = {questType = 'weekly', warband = true, name = 'Cha\'tak'}, -- (daily: 81704) [84076] = {questType = 'weekly', warband = true, name = 'Enduring Gutterface'}, -- (daily: 81707) [84074] = {questType = 'weekly', warband = true, name = 'Monstrous Lasharoth'}, -- (daily: 81705) - --[81694] = {questType = 'weekly', warband = true, name = 'Rhak\'ik & Khak\'ik'}, -- One Time Kill - --[78905] = {questType = 'weekly', warband = true, name = 'Ahg\'zagall'}, -- One Time Kill [84080] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, -- (daily: 82037) [84082] = {questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk'}, -- (daily: 82078) [84081] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, -- (daily: 82077) @@ -1731,8 +1707,17 @@ PermoksAccountManager.quests = { [84077] = {questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed'}, -- (daily: 82034) [84069] = {questType = 'weekly', warband = true, name = 'The Groundskeeper'}, -- (daily: 81634) [84070] = {questType = 'weekly', warband = true, name = 'Xishorr'}, -- (daily: 81701) - [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- (daily: 82290) - [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- (daily: 82289) + }, + one_time_reputation_rares = { + [85158] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- Isle of Dorne (daily: 82196) + [85160] = {questType = 'weekly', warband = true, name = 'Kereke'}, -- Isle of Dorne (daily: 82204) + [85161] = {questType = 'weekly', warband = true, name = 'Zovex'}, -- Isle of Dorne (daily: 82203) + [85159] = {questType = 'weekly', warband = true, name = 'Rotfist'}, -- Isle of Dorne (daily: 82205) + [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, -- Ringing Deeps (daily: 80536) + [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, -- Ringing Deeps (daily: 81633) + [85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn'}, -- Hallowfall (daily: 81763) + [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- Hallowfall (daily: 82290) + [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- Hallowfall (daily: 82289) }, -- Professions diff --git a/modules/quests.lua b/modules/quests.lua index 37bbb7c..825a66e 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1101,11 +1101,7 @@ local labelRows = { }, -- rares isle_of_dorne_rares = { - IDs = { - 82196, 81923, 81894, 81902, 81903, 81893, 81892, 79685, 81920, 81895, - 81907, 81921, 81901, 81899, 81904, 78619, 81905, 81897, 81922, 82204, - 82203, 82205 - }, + IDs = {84037, 84031, 84032, 84036, 84029, 84039, 84030, 84028, 84033, 84034, 84026, 84038}, label = 'Isle of Dorne Rares', type = 'quest', questType = 'weekly', @@ -1116,15 +1112,12 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 16, + required = 12, showAll = true, version = WOW_PROJECT_MAINLINE }, ringing_deeps_rares = { - IDs = { - 81674, 81562, 80547, 80505, 80560, 80536, 80557, 80506, 81511, 80507, - 81485, 81563, 80574, 81652, 81648, 80003, 81566, 81633 - }, + IDs = {84046, 84044, 84042, 84041, 84045, 84040, 84047, 84043, 84049, 84048, 84050}, label = 'Ringing Deeps Rares', type = 'quest', questType = 'weekly', @@ -1135,16 +1128,12 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 13, + required = 11, showAll = true, version = WOW_PROJECT_MAINLINE }, hallowfall_rares = { - IDs = { - 81756, 82557, 81791, 80009, 81761, 81849, 80006, 82565, 82559, 80011, - 82562, 81881, 81853, 81836, 79271, 80010, 82560, 81882, 82558, 82561, - 82564, 82566 - }, + IDs = {85165, 84063, 84051, 84064, 84061, 84066, 84060, 84053, 84056, 84067, 84065, 84062, 84054, 84068, 84052, 84055, 84059, 84058, 84057, 80486}, label = 'Hallowfall Rares', type = 'quest', questType = 'weekly', @@ -1155,15 +1144,12 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 21, + required = 20, showAll = true, version = WOW_PROJECT_MAINLINE }, azj_kahet_rares = { - IDs = { - 81702, 81703, 81695, 81706, 81700, 81699, 81704, 81707, 81705, 81694, - 78905, 82037, 82078, 82077, 82036, 82035, 82034, 81634, 81701 - }, + IDs = {84071, 84072, 84075, 84073, 84076, 84074, 84080, 84082, 84081, 84079, 84078, 84077, 84069, 84070}, label = 'Azj-Kahet Rares', type = 'quest', questType = 'weekly', @@ -1174,7 +1160,23 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 16, + required = 14, + showAll = true, + version = WOW_PROJECT_MAINLINE + }, + one_time_reputation_rares = { + IDs = {85158, 85160, 85161, 85159, 85163, 85164, 85167, 85166, 85162}, + label = 'One-Time Reputation Rares', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'hidden', + group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 9, showAll = true, version = WOW_PROJECT_MAINLINE }, From 551cbc0b3d503f3e05432f94ad31004cc588a81e Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Mon, 2 Sep 2024 14:17:26 +0200 Subject: [PATCH 057/138] removed Brinelash from the rares list as blizzard has also officially removed it from the achievment --- db/db.lua | 2 -- modules/quests.lua | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/db/db.lua b/db/db.lua index 5fcc5ac..825e904 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1670,7 +1670,6 @@ PermoksAccountManager.quests = { [84050] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) }, hallowfall_rares = { - --[85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn'}, -- (daily: 81763) [85165] = {questType = 'weekly', warband = true, name = 'Deathtide'}, -- (daily: 81880) [84063] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, -- (daily: 81756) [84051] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, -- (daily: 82557) @@ -1690,7 +1689,6 @@ PermoksAccountManager.quests = { [84059] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) [84058] = {questType = 'weekly', warband = true, name = 'Ravageant'}, -- (daily: 82566) [84057] = {questType = 'weekly', warband = true, name = 'Parasidious'}, -- (daily: 82563) - [80486] = {questType = 'weekly', warband = true, name = 'Brineslash'}, -- BUGGED }, azj_kahet_rares = { [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) diff --git a/modules/quests.lua b/modules/quests.lua index 825a66e..8b86cfb 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1144,7 +1144,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 20, + required = 19, showAll = true, version = WOW_PROJECT_MAINLINE }, From 4c2e74e73579274bfd6571e8855a0b156bc68593 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 2 Sep 2024 23:23:40 +0200 Subject: [PATCH 058/138] Remove Brineslash --- db/db.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/db.lua b/db/db.lua index 5fcc5ac..433d450 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1690,7 +1690,7 @@ PermoksAccountManager.quests = { [84059] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) [84058] = {questType = 'weekly', warband = true, name = 'Ravageant'}, -- (daily: 82566) [84057] = {questType = 'weekly', warband = true, name = 'Parasidious'}, -- (daily: 82563) - [80486] = {questType = 'weekly', warband = true, name = 'Brineslash'}, -- BUGGED + -- [80486] = {questType = 'weekly', warband = true, name = 'Brineslash'}, -- BUGGED }, azj_kahet_rares = { [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) From d4af6762302ab5e69ec08a9e1135741e893aba18 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 2 Sep 2024 23:34:13 +0200 Subject: [PATCH 059/138] Update required Hallowfall Rares --- modules/quests.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/quests.lua b/modules/quests.lua index 825a66e..8b86cfb 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1144,7 +1144,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 20, + required = 19, showAll = true, version = WOW_PROJECT_MAINLINE }, From 7b49ed0eb7c7335f0f568b270872730f65ed011c Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Thu, 5 Sep 2024 11:04:41 +0200 Subject: [PATCH 060/138] one more rare adjustment, this was the last, I promise --- PermoksAccountManager.lua | 6 +++++- db/db.lua | 19 +++++++++++++------ modules/quests.lua | 26 +++++++++++++++++++++----- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index bc45f1c..0336cc1 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -38,7 +38,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 3 +local INTERNALTWWVERSION = 4 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -731,6 +731,10 @@ function PermoksAccountManager:Modernize(oldInternalVersion) self:ResetQuestCompletion('hallowfall_rares', 85164) self:ResetQuestCompletion('azj_kahet_rares', 85167, 85166) end + + if oldInternalVersion < 4 then + self:ResetQuestCompletion('hallowfall_rares', 85165) + end end function PermoksAccountManager:GetGUID() diff --git a/db/db.lua b/db/db.lua index 825e904..5b9512b 100644 --- a/db/db.lua +++ b/db/db.lua @@ -70,6 +70,7 @@ local default_categories = { 'dungeon_weekly', 'weekend_event', 'worldsoul_weekly', + 'weekly_delve_reputation', 'archaic_cypher_key', 'separator1', @@ -93,6 +94,7 @@ local default_categories = { dungeon_weekly = 1, weekend_event = 2, worldsoul_weekly = 3, + weekly_delve_reputation = 4, archaic_cypher_key = 5, separator1 = 10, @@ -1639,8 +1641,14 @@ PermoksAccountManager.quests = { [80671] = {questType = 'weekly', warband = true, log = true}, -- Blade of the General [80672] = {questType = 'weekly', warband = true, log = true}, -- Hand of the Vizier }, + weekly_delve_reputation = { + [83317] = {questType = 'weekly', warband = 'unique', name = 'Council of Dornogal'}, + [83318] = {questType = 'weekly', warband = 'unique', name = 'Assembly of the Deeps'}, + [83320] = {questType = 'weekly', warband = 'unique', name = 'Hallowfall Arathi'}, + [83319] = {questType = 'weekly', warband = 'unique', name = 'Severed Threads'}, + }, - -- Weekly Rares - NEED TO CONFIRM THE REPUTATION QUEST RESETS WEEKLY + -- Weekly Rares isle_of_dorne_rares = { [84037] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, -- (daily: 81923) [84031] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) @@ -1663,14 +1671,12 @@ PermoksAccountManager.quests = { [84045] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, -- (daily: 81511) [84040] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, -- (daily: 80507) [84047] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, -- (daily: 81485) - [84043] = {questType = 'weekly', warband = true, name = 'Trungal'}, -- (daily: 80574) [84049] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, -- (daily: 81652) [84048] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, -- (daily: 81648) [84050] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) }, - hallowfall_rares = { - [85165] = {questType = 'weekly', warband = true, name = 'Deathtide'}, -- (daily: 81880) + hallowfall_rares = { [84063] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, -- (daily: 81756) [84051] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, -- (daily: 82557) [84064] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, -- (daily: 81791) @@ -1714,8 +1720,9 @@ PermoksAccountManager.quests = { [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, -- Ringing Deeps (daily: 80536) [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, -- Ringing Deeps (daily: 81633) [85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn'}, -- Hallowfall (daily: 81763) - [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- Hallowfall (daily: 82290) - [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- Hallowfall (daily: 82289) + [85165] = {questType = 'weekly', warband = true, name = 'Deathtide'}, -- (daily: 81880) + [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- Azj-Kahet (daily: 82290) + [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- Azj-Kahet (daily: 82289) }, -- Professions diff --git a/modules/quests.lua b/modules/quests.lua index 8b86cfb..271a17b 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1098,7 +1098,23 @@ local labelRows = { visibility = 'visible', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE - }, + }, + weekly_delve_reputation = { + IDs = {83317, 83319, 83318, 83320}, + label = 'Weekly Delve Reputation', + type = 'quest', + questType = 'weekly', + warband = 'unique', + visibility = 'hidden', + group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 4, + showAll = true, + version = WOW_PROJECT_MAINLINE + }, -- rares isle_of_dorne_rares = { IDs = {84037, 84031, 84032, 84036, 84029, 84039, 84030, 84028, 84033, 84034, 84026, 84038}, @@ -1133,7 +1149,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, hallowfall_rares = { - IDs = {85165, 84063, 84051, 84064, 84061, 84066, 84060, 84053, 84056, 84067, 84065, 84062, 84054, 84068, 84052, 84055, 84059, 84058, 84057, 80486}, + IDs = {84063, 84051, 84064, 84061, 84066, 84060, 84053, 84056, 84067, 84065, 84062, 84054, 84068, 84052, 84055, 84059, 84058, 84057}, label = 'Hallowfall Rares', type = 'quest', questType = 'weekly', @@ -1144,7 +1160,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 19, + required = 18, showAll = true, version = WOW_PROJECT_MAINLINE }, @@ -1165,7 +1181,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, one_time_reputation_rares = { - IDs = {85158, 85160, 85161, 85159, 85163, 85164, 85167, 85166, 85162}, + IDs = {85158, 85160, 85161, 85159, 85163, 85164, 85165, 85167, 85166, 85162}, label = 'One-Time Reputation Rares', type = 'quest', questType = 'weekly', @@ -1176,7 +1192,7 @@ local labelRows = { customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - required = 9, + required = 10, showAll = true, version = WOW_PROJECT_MAINLINE }, From 8b85356323c440fddef9094e5801d2d8a9c8a1be Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 5 Sep 2024 19:42:38 +0200 Subject: [PATCH 061/138] Add Daily and Weekly Reset button --- options.lua | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/options.lua b/options.lua index ddcdc81..caee1ec 100644 --- a/options.lua +++ b/options.lua @@ -827,9 +827,31 @@ function PermoksAccountManager:LoadOptionsTemplate() confirm = true, confirmText = 'Are you sure?' }, - purge = { + weeklyReset = { order = 3, type = 'execute', + name = 'Trigger Weekly Reset', + func = function() + PermoksAccountManager:ResetAccount(PermoksAccountManager.db.global, PermoksAccountManager.account, nil, true) + C_UI.Reload() + end, + confirm = true, + confirmText = 'Are you sure?' + }, + dailyReset = { + order = 4, + type = 'execute', + name = 'Trigger Daily Reset', + func = function() + PermoksAccountManager:ResetAccount(PermoksAccountManager.db.global, PermoksAccountManager.account, true) + C_UI.Reload() + end, + confirm = true, + confirmText = 'Are you sure?' + }, + purge = { + order = 5, + type = 'execute', name = L['Purge'], func = function() PermoksAccountManager:Purge() From 5f3eb582848697efb836d8c8395c0e661d99a8dc Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 5 Sep 2024 19:43:17 +0200 Subject: [PATCH 062/138] Add ability to track achievements in the quest tooltip --- modules/quests.lua | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/modules/quests.lua b/modules/quests.lua index 271a17b..13d6588 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1763,17 +1763,17 @@ function PermoksAccountManager:CompletedQuestsTooltip_OnEnter(button, altData, c end if next(info) then - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 1, 'LEFT') + local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') button.tooltip = tooltip - local questInfo = self.quests[key] + local quests = self.quests[key] if column.showAll then - for questID in pairs(questInfo) do + for questID, questInfo in pairs(quests) do local name local color = "FF0000" - if questInfo and questInfo[questID].name then - name = questInfo[questID].name + if questInfo and questInfo.name then + name = questInfo.name else name = QuestUtils_GetQuestName(questID) end @@ -1782,7 +1782,13 @@ function PermoksAccountManager:CompletedQuestsTooltip_OnEnter(button, altData, c end if name then - tooltip:AddLine(string.format("|cFF%s%s|r", color, name)) + if questInfo.achievementID and questInfo.criteriaID then + local completed = select(3, GetAchievementCriteriaInfoByID(questInfo.achievementID, questInfo.criteriaID)) + local achievementString = completed and string.format("|cFF%s%s|r", COLOR_COMPLETED, column.achievementString) or string.format("|cFF%s%s|r", COLOR_NOT_COMPLETED, column.achievementString) + tooltip:AddLine(string.format("|cFF%s%s|r", color, name), achievementString) + else + tooltip:AddLine(string.format("|cFF%s%s|r", color, name)) + end end end else From 5bc52927c7f4b7f2368a52c20d085e5757e53e93 Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 5 Sep 2024 19:43:29 +0200 Subject: [PATCH 063/138] Delay quest update further --- modules/quests.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/quests.lua b/modules/quests.lua index 13d6588..885d2d6 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1633,7 +1633,7 @@ end -- module init local function Update(charInfo) - C_Timer.After(10, function() + C_Timer.After(15, function() UpdateAllQuests(charInfo) UpdateCurrentlyActiveQuests(charInfo) UpdateCataDailies(charInfo) From 8226c5478dc0ae73ab12d12b221b0795aff81e4c Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 5 Sep 2024 19:43:53 +0200 Subject: [PATCH 064/138] Add color constants --- modules/quests.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/quests.lua b/modules/quests.lua index 885d2d6..e828f4b 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -2,6 +2,9 @@ local addonName, PermoksAccountManager = ... local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) +local COLOR_COMPLETED = "00FF00" +local COLOR_NOT_COMPLETED = "FF0000" + local frequencyNames = { [0] = 'default', [1] = 'daily', From a78dfd94da8fd1c635eaab2f13a3d7e66fa48f7b Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 5 Sep 2024 19:44:21 +0200 Subject: [PATCH 065/138] Add string to one time rares that indicates if you've already gained rep --- modules/quests.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/quests.lua b/modules/quests.lua index e828f4b..a6173ef 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1191,6 +1191,7 @@ local labelRows = { warband = true, visibility = 'hidden', group = 'resetWeekly', + achievementString = "(REP)", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) From df7a522db5e9f9f4ab0c046ede53d13c427027ab Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 5 Sep 2024 19:44:58 +0200 Subject: [PATCH 066/138] Add achievement info to the quest db --- db/db.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/db/db.lua b/db/db.lua index 5b9512b..29e6e2d 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1713,16 +1713,16 @@ PermoksAccountManager.quests = { [84070] = {questType = 'weekly', warband = true, name = 'Xishorr'}, -- (daily: 81701) }, one_time_reputation_rares = { - [85158] = {questType = 'weekly', warband = true, name = 'Alunira'}, -- Isle of Dorne (daily: 82196) - [85160] = {questType = 'weekly', warband = true, name = 'Kereke'}, -- Isle of Dorne (daily: 82204) - [85161] = {questType = 'weekly', warband = true, name = 'Zovex'}, -- Isle of Dorne (daily: 82203) - [85159] = {questType = 'weekly', warband = true, name = 'Rotfist'}, -- Isle of Dorne (daily: 82205) - [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother'}, -- Ringing Deeps (daily: 80536) - [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps'}, -- Ringing Deeps (daily: 81633) - [85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn'}, -- Hallowfall (daily: 81763) - [85165] = {questType = 'weekly', warband = true, name = 'Deathtide'}, -- (daily: 81880) - [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- Azj-Kahet (daily: 82290) - [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- Azj-Kahet (daily: 82289) + [85158] = {questType = 'weekly', warband = true, name = 'Alunira', achievementID = 40435, criteriaID = 68225}, -- Isle of Dorne (daily: 82196) + [85160] = {questType = 'weekly', warband = true, name = 'Kereke', achievementID = 40435, criteriaID = 68227}, -- Isle of Dorne (daily: 82204) + [85161] = {questType = 'weekly', warband = true, name = 'Zovex', achievementID = 40435, criteriaID = 68226}, -- Isle of Dorne (daily: 82203) + [85159] = {questType = 'weekly', warband = true, name = 'Rotfist', achievementID = 40435, criteriaID = 68228}, -- Isle of Dorne (daily: 82205) + [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother', achievementID = 40837, criteriaID = 69636}, -- Ringing Deeps (daily: 80536) + [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps', achievementID = 40837, criteriaID = 69637}, -- Ringing Deeps (daily: 81633) + [85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn', achievementID = 40851, criteriaID = 69716}, -- Hallowfall (daily: 81763) + [85165] = {questType = 'weekly', warband = true, name = 'Deathtide', achievementID = 40851, criteriaID = 69717}, -- Hallowfall (daily: 81880) + [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- Azj-kahet (daily: 82290) + [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- Azj-kahet (daily: 82289) }, -- Professions From f492f348c0bb1b175a10cebabeef1830bfc60825 Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 6 Sep 2024 00:51:27 +0200 Subject: [PATCH 067/138] Add weekly delve rep --- PermoksAccountManager.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 0336cc1..54b45bf 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -733,6 +733,7 @@ function PermoksAccountManager:Modernize(oldInternalVersion) end if oldInternalVersion < 4 then + self:AddLabelToDefaultCategory('currentweekly', 'weekly_delve_reputation', 4) self:ResetQuestCompletion('hallowfall_rares', 85165) end end From ed523d07765f67d814e811cb9c713b47b3a30d81 Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 6 Sep 2024 00:51:42 +0200 Subject: [PATCH 068/138] Remove the tooltip from awakening the machine --- modules/quests.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/quests.lua b/modules/quests.lua index a6173ef..579daaf 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1032,10 +1032,6 @@ local labelRows = { warband = true, visibility = 'hidden', group = 'resetWeekly', - tooltip = true, - customTooltip = function(...) - PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) - end, required = 4, version = WOW_PROJECT_MAINLINE }, From a9ce5ae75a936727e17eaa00d6a3621775778cfa Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 6 Sep 2024 00:52:02 +0200 Subject: [PATCH 069/138] Only show a tooltip for the gather knowledge after collecting one --- modules/quests.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/quests.lua b/modules/quests.lua index 579daaf..58ceb65 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1852,8 +1852,7 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, return end - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 3, 'LEFT', 'RIGHT', 'RIGHT') - button.tooltip = tooltip + local questInfo = self.quests[key] local professionCounter = {} @@ -1879,6 +1878,11 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, end end + if not next(professionItems) then return end + + local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 3, 'LEFT', 'RIGHT', 'RIGHT') + button.tooltip = tooltip + local professioIndex = 1 for skillLineID, info in pairs(professionItems) do if #info > 0 and professioIndex == 2 then From 40472202a515837d8f43907850e74a19b4cc43ce Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 6 Sep 2024 00:55:41 +0200 Subject: [PATCH 070/138] Add the weekly coffer keys --- PermoksAccountManager.lua | 1 + db/db.lua | 11 ++++++++++- modules/quests.lua | 12 +++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 54b45bf..75b78f6 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -734,6 +734,7 @@ function PermoksAccountManager:Modernize(oldInternalVersion) if oldInternalVersion < 4 then self:AddLabelToDefaultCategory('currentweekly', 'weekly_delve_reputation', 4) + self:AddLabelToDefaultCategory('currentweekly', 'weekly_coffer_keys', 5) self:ResetQuestCompletion('hallowfall_rares', 85165) end end diff --git a/db/db.lua b/db/db.lua index 29e6e2d..034d11f 100644 --- a/db/db.lua +++ b/db/db.lua @@ -71,6 +71,7 @@ local default_categories = { 'weekend_event', 'worldsoul_weekly', 'weekly_delve_reputation', + 'weekly_coffer_keys', 'archaic_cypher_key', 'separator1', @@ -95,7 +96,8 @@ local default_categories = { weekend_event = 2, worldsoul_weekly = 3, weekly_delve_reputation = 4, - archaic_cypher_key = 5, + weekly_coffer_keys = 5, + archaic_cypher_key = 6, separator1 = 10, the_theater_troupe = 11, @@ -1647,6 +1649,13 @@ PermoksAccountManager.quests = { [83320] = {questType = 'weekly', warband = 'unique', name = 'Hallowfall Arathi'}, [83319] = {questType = 'weekly', warband = 'unique', name = 'Severed Threads'}, }, + weekly_coffer_keys = { + [84736] = {questType = 'weekly'}, + [84737] = {questType = 'weekly'}, + [84738] = {questType = 'weekly'}, + [84739] = {questType = 'weekly'}, + + }, -- Weekly Rares isle_of_dorne_rares = { diff --git a/modules/quests.lua b/modules/quests.lua index 58ceb65..0d9cc92 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1114,6 +1114,16 @@ local labelRows = { showAll = true, version = WOW_PROJECT_MAINLINE }, + weekly_coffer_keys = { + IDs = {84736, 84737, 84738, 84739}, + label = 'Weekly Coffer Keys', + type = 'quest', + questType = 'weekly', + visibility = 'hidden', + group = 'resetWeekly', + required = 4, + version = WOW_PROJECT_MAINLINE + }, -- rares isle_of_dorne_rares = { IDs = {84037, 84031, 84032, 84036, 84029, 84039, 84030, 84028, 84033, 84034, 84026, 84038}, @@ -1879,7 +1889,7 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, end if not next(professionItems) then return end - + local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 3, 'LEFT', 'RIGHT', 'RIGHT') button.tooltip = tooltip From 9df4f183dae11b9c4430d7f7eb771404926d5246 Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 6 Sep 2024 02:46:10 +0200 Subject: [PATCH 071/138] Add Coffer Keys to the weekly category --- PermoksAccountManager.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 75b78f6..3fcaa1f 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -734,7 +734,7 @@ function PermoksAccountManager:Modernize(oldInternalVersion) if oldInternalVersion < 4 then self:AddLabelToDefaultCategory('currentweekly', 'weekly_delve_reputation', 4) - self:AddLabelToDefaultCategory('currentweekly', 'weekly_coffer_keys', 5) + self:AddLabelToDefaultCategory('currentweekly', 'weekly_coffer_keys', 4) self:ResetQuestCompletion('hallowfall_rares', 85165) end end From 0972d456018b6c5a014918aaad8e090ad1c9717f Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 9 Sep 2024 19:36:36 +0200 Subject: [PATCH 072/138] Fix Delve vault --- db/db.lua | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/db/db.lua b/db/db.lua index 034d11f..e8571eb 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1904,9 +1904,17 @@ PermoksAccountManager.vault_rewards = { }, -- World [Enum.WeeklyRewardChestThresholdType.World] = { - [0] = 603, - [1] = 610, - [2] = 616, + [1] = 584, + [2] = 584, + [3] = 587, + [4] = 597, + [5] = 603, + [6] = 606, + [7] = 610, + [8] = 616, + [9] = 616, + [10] = 616, + [11] = 616, }, -- Raid [Enum.WeeklyRewardChestThresholdType.Raid] = { From 62dbb11116990b784385c284890e6e0ba27d7a70 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 11 Sep 2024 12:50:56 +0200 Subject: [PATCH 073/138] Fix Mythic Dungeons --- db/db.lua | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/db/db.lua b/db/db.lua index e8571eb..c7be3d4 100644 --- a/db/db.lua +++ b/db/db.lua @@ -376,7 +376,7 @@ PermoksAccountManager.labelRows = { } } -PermoksAccountManager.numDungeons = 9 +PermoksAccountManager.numDungeons = 8 PermoksAccountManager.keys = { [2] = "TJS", -- Temple of the Jade Serpent [165] = "SBG", -- Shadowmoon Burial Grounds @@ -458,15 +458,14 @@ PermoksAccountManager.raids = { } PermoksAccountManager.dungeons = { - [2451] = GetRealZoneText(2451), - [2515] = GetRealZoneText(2515), - [2516] = GetRealZoneText(2516), - [2519] = GetRealZoneText(2519), - [2520] = GetRealZoneText(2520), - [2521] = GetRealZoneText(2521), - [2526] = GetRealZoneText(2526), - [2527] = GetRealZoneText(2527), - [2579] = GetRealZoneText(2579), + [1822] = GetRealZoneText(1822), -- Siege of Boralus + [670] = GetRealZoneText(670), -- Grim Batol + [2286] = GetRealZoneText(2286), -- The Necrotic Wake + [2290] = GetRealZoneText(2290), -- Mists of Tiran Scithe + [2652] = GetRealZoneText(2652), -- The Stonevault + [2660] = GetRealZoneText(2660), -- Ara-Kara, City of Echoes + [2662] = GetRealZoneText(2662), -- The Dawnbreaker + [2669] = GetRealZoneText(2669), -- City of Threads } PermoksAccountManager.item = { From 20d3d4a20c3da837b859c5e3b2183f745d0afd9c Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 11 Sep 2024 12:57:24 +0200 Subject: [PATCH 074/138] Add current world boss --- db/db.lua | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/db/db.lua b/db/db.lua index c7be3d4..6d3e2e3 100644 --- a/db/db.lua +++ b/db/db.lua @@ -975,11 +975,7 @@ PermoksAccountManager.quests = { }, -- World Boss world_boss = { - [61813] = {questType = 'weekly'}, -- Valinor - Bastion - [61814] = {questType = 'weekly'}, -- Nurghash - Revendreth - [61815] = {questType = 'weekly'}, -- Oranomonos - Ardenweald - [61816] = {questType = 'weekly'}, -- Mortanis - Maldraxxus - [64531] = {questType = 'weekly'} -- Mor'geth, Tormentor of the Damned + [82653] = {questType = 'weekly'}, -- Aggregation of Horrors }, korthia_world_boss = { [64531] = {questType = 'weekly'} -- Mor'geth, Tormentor of the Damned From a4b62939aaf2a64e9b27a0c2e7f05a94d7bee20f Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Thu, 12 Sep 2024 10:09:45 +0200 Subject: [PATCH 075/138] fixed weekly meta quest and archaic cypher key --- db/db.lua | 8 +++++--- modules/quests.lua | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/db/db.lua b/db/db.lua index 034d11f..1a48b6f 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1575,17 +1575,19 @@ PermoksAccountManager.quests = { [82512] = {questType = 'weekly', log = true}, -- Worldsoul: World Boss [82516] = {questType = 'weekly', log = true}, -- Worldsoul: Forging a Pact [82659] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace - }, - weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later + [82746] = {questType = 'weekly', log = true}, -- Delves: Breaking Tough to Loot Stuff [82712] = {questType = 'weekly', log = true}, -- Delves: Trouble Up and Down Khaz Algar [82711] = {questType = 'weekly', log = true}, -- Delves: Lost and Found [82709] = {questType = 'weekly', log = true}, -- Delves: Percussive Archaeology [82706] = {questType = 'weekly', log = true}, -- Delves: Khaz Algar Research [82707] = {questType = 'weekly', log = true}, -- Delves: Earthen Defense + [82708] = {questType = 'weekly', log = true}, -- Delves: Nerubian Menace [82678] = {questType = 'weekly', log = true}, -- Archives: The First Disc [82679] = {questType = 'weekly', log = true}, -- Archives: Seeking History - }, + }, + weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later + }, archaic_cypher_key = { [84370] = {questType = 'weekly', warband = true, log = true}, -- The Key to Success }, diff --git a/modules/quests.lua b/modules/quests.lua index 0d9cc92..46e5dd9 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -964,7 +964,7 @@ local labelRows = { 82495, 82506, 82496, 82507, 82497, 82508, 82509, 82499, 82500, 82501, 82512, 82505, 82502, 82487, 82493 }, - label = 'Worldsoul Weekly', + label = 'Weekly Meta', type = 'quest', questType = 'weekly', visibility = 'visible', @@ -990,7 +990,7 @@ local labelRows = { label = 'Archaic Cypher Key', type = 'quest', questType = 'weekly', - warband = true, + warband = 'unique', visibility = 'visible', group = 'resetWeekly', version = WOW_PROJECT_MAINLINE From 48ca773b71f944c30caab3d3bc99b103c5d6f4e4 Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 12 Sep 2024 17:00:16 +0200 Subject: [PATCH 076/138] Fix world boss --- db/db.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/db.lua b/db/db.lua index 80b7bf2..17d57ec 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1530,7 +1530,7 @@ PermoksAccountManager.quests = { -- Weekly World Activities tww_world_boss = {-- PLACEHOLDER: wrong quest IDs [999990] = {questType = 'weekly'}, -- Kordac, the Dormant Protector - [999991] = {questType = 'weekly'}, -- Aggregation of Horrors + [83466] = {questType = 'weekly'}, -- Aggregation of Horrors [999992] = {questType = 'weekly'}, -- Shurrai, Atrocity of the Undersea [999993] = {questType = 'weekly'}, -- Orta, the Broken Mountain }, From 3685db7cd23b48ef909e945edf2ff93981f4e9ab Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 12 Sep 2024 17:00:30 +0200 Subject: [PATCH 077/138] Fix vault world tooltip --- modules/vault.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/vault.lua b/modules/vault.lua index 2d93828..348ab09 100644 --- a/modules/vault.lua +++ b/modules/vault.lua @@ -225,7 +225,7 @@ function PermoksAccountManager.VaultTooltip_OnEnter(button, altData, labelRow) tooltip:AddLine(i .. '. Reward:', difficultyName or '-', '|', rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold)) elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.World then - local difficultyName = activityInfo.level and activityInfo.progress >= activityInfo.threshold and PVPUtil.GetTierName(activityInfo.level) + local difficultyName = activityInfo.level and activityInfo.progress >= activityInfo.threshold and 'Tier ' .. activityInfo.level tooltip:AddLine(i .. '. Reward:', difficultyName or '-', '|', rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold)) end From b0f19bab07039ecd4ae01b5b5d73c56a2bbc690d Mon Sep 17 00:00:00 2001 From: Joshua Beilenhoff Date: Tue, 17 Sep 2024 20:48:37 +0200 Subject: [PATCH 078/138] fixed dungeon short-names --- db/db.lua | 5 +++-- modules/currencies.lua | 4 ++-- modules/quests.lua | 28 ++++++++++++++-------------- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/db/db.lua b/db/db.lua index 17d57ec..ee38c95 100644 --- a/db/db.lua +++ b/db/db.lua @@ -412,6 +412,7 @@ PermoksAccountManager.keys = { [245] = 'FH', -- Freehold [248] = 'WM', -- Waycrest Manor [251] = 'UNDR', -- The Underrot + [353] = 'SIEGE', -- Siege of Boralus [399] = 'RLP', -- Ruby Life Pools [400] = 'NO', -- The Nokhud Offensive [401] = 'AV', -- The Azure Vault @@ -428,9 +429,9 @@ PermoksAccountManager.keys = { -- PLACEHOLDER: abbreviations [499] = 'PSF', -- Priory of the Sacred Flame [500] = 'TR', -- The Rookery - [501] = 'TSV', -- The Stonevault + [501] = 'SV', -- The Stonevault [502] = 'COT', -- City of Threads - [503] = 'AK', -- Ara-Kara, City of Echoes + [503] = 'ARAK', -- Ara-Kara, City of Echoes [504] = 'DFC', -- Darkflame Cleft [505] = 'DAWN', -- The Dawnbreaker [506] = 'CIN', -- Cinderbrew Meadery diff --git a/modules/currencies.lua b/modules/currencies.lua index f313dbf..9aff399 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -262,7 +262,7 @@ local labelRows = { -- 11.0 champion_crest = { - label = 'Champion Crests', + label = 'Veteran Crests', type = 'crestcurrency', key = 2914, passRow = true, @@ -270,7 +270,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, veteran_crest = { - label = 'Veteran Crests', + label = 'Normal Crests', type = 'crestcurrency', key = 2915, passRow = true, diff --git a/modules/quests.lua b/modules/quests.lua index 46e5dd9..8b274b9 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -971,20 +971,20 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, - weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Need better solution - IDs = {82746, 82712, 82711, 82709, 82706, 82707, 82678, 82679}, - label = '(WIP) Weekly Meta', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - tooltip = true, - customTooltip = function(...) - PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) - end, - required = 8, - version = WOW_PROJECT_MAINLINE - }, + --weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Need better solution + -- IDs = {82746, 82712, 82711, 82709, 82706, 82707, 82678, 82679}, + -- label = '(WIP) Weekly Meta', + -- type = 'quest', + -- questType = 'weekly', + -- visibility = 'visible', + -- group = 'resetWeekly', + -- tooltip = true, + -- customTooltip = function(...) + -- PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + -- end, + -- required = 8, + -- version = WOW_PROJECT_MAINLINE + -- }, archaic_cypher_key = { IDs = {84370}, label = 'Archaic Cypher Key', From cfc062ae685d4548d9f79e1176bdff8bb0b28830 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 18 Sep 2024 06:39:45 +0200 Subject: [PATCH 079/138] Add current world boss --- PermoksAccountManager.lua | 6 +++++- db/db.lua | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 3fcaa1f..9e95f88 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -38,7 +38,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 4 +local INTERNALTWWVERSION = 5 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -737,6 +737,10 @@ function PermoksAccountManager:Modernize(oldInternalVersion) self:AddLabelToDefaultCategory('currentweekly', 'weekly_coffer_keys', 4) self:ResetQuestCompletion('hallowfall_rares', 85165) end + + if oldInternalVersion < 5 then + self:AddLabelToDefaultCategory('currentweekly', 'tww_world_boss', 7) + end end function PermoksAccountManager:GetGUID() diff --git a/db/db.lua b/db/db.lua index ee38c95..5254431 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1532,7 +1532,7 @@ PermoksAccountManager.quests = { tww_world_boss = {-- PLACEHOLDER: wrong quest IDs [999990] = {questType = 'weekly'}, -- Kordac, the Dormant Protector [83466] = {questType = 'weekly'}, -- Aggregation of Horrors - [999992] = {questType = 'weekly'}, -- Shurrai, Atrocity of the Undersea + [83467] = {questType = 'weekly'}, -- Shurrai, Atrocity of the Undersea [999993] = {questType = 'weekly'}, -- Orta, the Broken Mountain }, worldsoul_weekly = { From 99e0c89398e0185f01b3bd5d2dfdabd85f83dbeb Mon Sep 17 00:00:00 2001 From: Lexxy Date: Sat, 28 Sep 2024 08:31:42 +0200 Subject: [PATCH 080/138] Update PermoksAccountManager.toc chore: update TOC number to latest retail --- PermoksAccountManager.toc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PermoksAccountManager.toc b/PermoksAccountManager.toc index eeeffa4..aa21108 100644 --- a/PermoksAccountManager.toc +++ b/PermoksAccountManager.toc @@ -1,4 +1,4 @@ -## Interface: 110000 +## Interface: 110002 ## Title: Permoks Account Manager ## Version: @project-version@ ## SavedVariables: PermoksAccountManagerDB From 6d3246ea2572af1c5b15ce3318b799a7babefccd Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 22 Oct 2024 23:39:22 +0200 Subject: [PATCH 081/138] Bump version --- PermoksAccountManager.lua | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 9e95f88..22cc7b5 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -38,7 +38,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 5 +local INTERNALTWWVERSION = 6 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -674,6 +674,7 @@ function PermoksAccountManager:ModernizeCata(oldInternalVersion) self:UpdateDefaultCategories('items') self:UpdateDefaultCategories('dailies') end + end function PermoksAccountManager:ModernizeWOTLK(oldInternalVersion) @@ -741,6 +742,12 @@ function PermoksAccountManager:Modernize(oldInternalVersion) if oldInternalVersion < 5 then self:AddLabelToDefaultCategory('currentweekly', 'tww_world_boss', 7) end + + if oldInternalVersion < 6 then + self:AddLabelToDefaultCategory('general', 'bronze_celebration_token', 26) + self:AddLabelToDefaultCategory('general', 'timewarped_relic_coffer_key', 27) + self:AddLabelToDefaultCategory('raid', 'blackrock_depths_raid', 2) + end end function PermoksAccountManager:GetGUID() From 7ce713740e3c2ae929bfa74de28e2454686f77ba Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 22 Oct 2024 23:40:14 +0200 Subject: [PATCH 082/138] Add some Timewarped Relic Coffer Keys, Bronze Celebration Token and BRD --- db/db.lua | 11 ++ modules/currencies.lua | 370 ++++++++++++++++++++++------------------- modules/instances.lua | 11 ++ modules/items.lua | 7 + modules/vault.lua | 2 +- 5 files changed, 233 insertions(+), 168 deletions(-) diff --git a/db/db.lua b/db/db.lua index 5254431..9b56f54 100644 --- a/db/db.lua +++ b/db/db.lua @@ -27,6 +27,8 @@ local default_categories = { 'kej', 'radiant_remnant', 'radiant_echo', + 'bronze_celebration_token', + 'timewarped_relic_coffer_key' }, childOrder = { characterName = 1, @@ -50,6 +52,8 @@ local default_categories = { kej = 23, radiant_remnant = 24, radiant_echo = 25, + bronze_celebration_token = 26, + timewarped_relic_coffer_key = 27, }, hideToggle = true, enabled = true @@ -186,9 +190,11 @@ local default_categories = { name = L['Raid'], childs = { 'nerub_ar_palace', + 'blackrock_depths_raid' }, childOrder = { nerub_ar_palace = 1, + blackrock_depths_raid = 2, }, enabled = true }, @@ -456,6 +462,7 @@ PermoksAccountManager.activityIDToKeys = { PermoksAccountManager.raids = { [2657] = {name = GetRealZoneText(2657), englishID = 'nerub_ar_palace', instanceID = 1273, startIndex = 1, endIndex = 8}, + [2792] = {name = GetRealZoneText(2792), englishID = 'blackrock_depths_raid', instanceID = 1301, startIndex = 1, endIndex = 8}, } PermoksAccountManager.dungeons = { @@ -516,6 +523,7 @@ PermoksAccountManager.item = { [212493] = {key = 'firelight_ruby'}, -- Odd Glob of Wax [224642] = {key = 'firelight_ruby'}, -- Firelight Ruby [229899] = {key = 'coffer_key_shard'}, -- Coffer Key Shard + [231510] = {key = 'timewarped_relic_coffer_key'}, -- Timewarped Relic Coffer Key } PermoksAccountManager.factions = { @@ -598,6 +606,9 @@ PermoksAccountManager.currency = { [3056] = 0, -- Kej [3028] = 0, -- Restored Coffer Key [2803] = 0, -- Undercoin + + [3100] = 0, -- Bronze Celebration Token + [1166] = 0, -- Timewarped Badge } PermoksAccountManager.currencyCustomOptions = { diff --git a/modules/currencies.lua b/modules/currencies.lua index 9aff399..5135b1e 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -123,16 +123,16 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, - redeemed_soul = { + redeemed_soul = { label = function() return PermoksAccountManager.db.global.currencyInfo[1810].name or 'Redeemed Soul' end, type = 'currency', - customTooltip = function(button, altData, labelRow) - PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) - end, - tooltip = true, - tooltipKeyPath = {'covenantInfo', 'souls'}, + customTooltip = function(button, altData, labelRow) + PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) + end, + tooltip = true, + tooltipKeyPath = { 'covenantInfo', 'souls' }, key = 1810, group = 'sanctum', version = WOW_PROJECT_MAINLINE @@ -141,97 +141,98 @@ local labelRows = { label = function() return PermoksAccountManager.db.global.currencyInfo[1813].name or 'Reservoir Anima' end, - type = 'currency', - customTooltip = function(button, altData, labelRow) - PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) - end, - tooltip = true, - tooltipKeyPath = {'covenantInfo', 'anima'}, + type = 'currency', + customTooltip = function(button, altData, labelRow) + PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) + end, + tooltip = true, + tooltipKeyPath = { 'covenantInfo', 'anima' }, key = 1813, hideMax = true, group = 'sanctum', version = WOW_PROJECT_MAINLINE }, - -- 9.2 - cosmic_flux = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[2009] and PermoksAccountManager.db.global.currencyInfo[2009].name or 'Cosmic Flux' + -- 9.2 + cosmic_flux = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[2009] and + PermoksAccountManager.db.global.currencyInfo[2009].name or 'Cosmic Flux' end, - type = 'currency', + type = 'currency', warband = true, - key = 2009, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - cyphers = { - label = L['Cyphers'], - type = 'currency', + key = 2009, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, + cyphers = { + label = L['Cyphers'], + type = 'currency', warband = true, - key = 1979, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - catalyst_charges = { - label = L['Catalyst Charges'], - type = 'catalystcharges', - key = 2813, - hideIcon = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, + key = 1979, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, + catalyst_charges = { + label = L['Catalyst Charges'], + type = 'catalystcharges', + key = 2813, + hideIcon = true, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, -- 10.0 dragon_isles_supplies = { - label = 'Dragon Isles Supplies', - type = 'currency', + label = 'Dragon Isles Supplies', + type = 'currency', warband = true, - key = 2003, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, + key = 2003, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, elemental_overflow = { - label = 'Elemental Overflow', - type = 'currency', + label = 'Elemental Overflow', + type = 'currency', warband = true, - key = 2118, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, + key = 2118, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, bloody_tokens = { - label = 'Bloody Tokens', - type = 'currency', - key = 2123, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, + label = 'Bloody Tokens', + type = 'currency', + key = 2123, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, storm_sigil = { - label = 'Storm Sigil', - type = 'currency', - key = 2122, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, + label = 'Storm Sigil', + type = 'currency', + key = 2122, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, -- 10.1 flightstones = { label = 'Flightstones', - type = 'currency', - key = 2245, + type = 'currency', + key = 2245, abbMax = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE + group = 'currency', + version = WOW_PROJECT_MAINLINE }, -- 10.1.5 paracausal_flakes = { label = 'Paracausal Flakes', - type = 'currency', + type = 'currency', warband = true, - key = 2594, + key = 2594, abbMax = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE + group = 'currency', + version = WOW_PROJECT_MAINLINE }, -- 10.2 @@ -259,7 +260,7 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, - + -- 11.0 champion_crest = { label = 'Veteran Crests', @@ -295,11 +296,11 @@ local labelRows = { }, valorstones = { label = 'Valorstones', - type = 'currency', - key = 3008, + type = 'currency', + key = 3008, abbMax = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE + group = 'currency', + version = WOW_PROJECT_MAINLINE }, resonance_crystals = { label = 'Resonance Crystals', @@ -308,7 +309,7 @@ local labelRows = { key = 2815, group = 'currency', version = WOW_PROJECT_MAINLINE - }, + }, kej = { label = 'Kej', type = 'currency', @@ -333,17 +334,27 @@ local labelRows = { warband = true, key = 2803, group = 'currency', - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE + }, + + -- 10.0.5 + bronze_celebration_token = { + label = 'Celebartion Token', + type = 'currency', + key = 3100, + group = 'currency', + version = WOW_PROJECT_MAINLINE }, -- wotlk-classic honorBCC = { label = function() - return PermoksAccountManager.db.global.currencyInfo[1901] and PermoksAccountManager.db.global.currencyInfo[1901].name or 'Honor' + return PermoksAccountManager.db.global.currencyInfo[1901] and + PermoksAccountManager.db.global.currencyInfo[1901].name or 'Honor' end, type = 'currency', key = 1901, - abbMax = true, + abbMax = true, customIcon = { height = 32, width = 32, @@ -355,7 +366,8 @@ local labelRows = { }, arenaPoints = { label = function() - return PermoksAccountManager.db.global.currencyInfo[1900] and PermoksAccountManager.db.global.currencyInfo[1900].name or 'Arena Points' + return PermoksAccountManager.db.global.currencyInfo[1900] and + PermoksAccountManager.db.global.currencyInfo[1900].name or 'Arena Points' end, type = 'currency', key = 1900, @@ -364,100 +376,100 @@ local labelRows = { }, emblem_of_heroism = { label = 'Heroism Emblems', - type = 'currency', - key = 101, + type = 'currency', + key = 101, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, emblem_of_valor = { label = 'Valor Emblems', - type = 'currency', - key = 102, + type = 'currency', + key = 102, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, emblem_of_conquest = { label = 'Conq. Emblems', - type = 'currency', - key = 221, + type = 'currency', + key = 221, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, emblem_of_triumph = { label = 'Triumph Emblems', - type = 'currency', - key = 301, + type = 'currency', + key = 301, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, emblem_of_frost = { label = 'Frost Emblems', - type = 'currency', - key = 341, + type = 'currency', + key = 341, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, sidereal_essence = { label = 'Sidereal Essence', - type = 'currency', - key = 2589, + type = 'currency', + key = 2589, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, defilers_scourgestone = { label = 'Scourgestones', - type = 'currency', - key = 2711, + type = 'currency', + key = 2711, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, stone_keepers_shard = { label = 'Stone Keeper\'s Shard', - type = 'currency', - key = 161, + type = 'currency', + key = 161, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, justice_points = { label = 'Justice Points', - type = 'currency', - key = 395, + type = 'currency', + key = 395, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, valor_points = { label = 'Valor Points', - type = 'valor', - key = 396, + type = 'valor', + key = 396, abbMax = true, passRow = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, conquest_points = { label = 'Conquest', - type = 'currency', - key = 390, + type = 'currency', + key = 390, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, tol_barad_commendations = { label = 'Commendations', - type = 'currency', - key = 391, + type = 'currency', + key = 391, abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = 'currency', + version = WOW_PROJECT_CATACLYSM_CLASSIC }, } @@ -469,24 +481,25 @@ local function UpdateAllCurrencies(charInfo) for currencyType, offset in pairs(self.currency) do local info = C_CurrencyInfo.GetCurrencyInfo(currencyType) if info then - currencyInfo[currencyType] = charInfo.currencyInfo[currencyType] or {name = info.name} + currencyInfo[currencyType] = charInfo.currencyInfo[currencyType] or { name = info.name } currencyInfo[currencyType].currencyType = currencyType currencyInfo[currencyType].quantity = info.quantity + offset - currencyInfo[currencyType].maxQuantity = info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity or nil + currencyInfo[currencyType].maxQuantity = info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity or + nil currencyInfo[currencyType].totalEarned = info.totalEarned currencyInfo[currencyType].maxWeeklyQuantity = info.maxWeeklyQuantity currencyInfo[currencyType].quantityEarnedThisWeek = info.quantityEarnedThisWeek - self.db.global.currencyInfo[currencyType] = self.db.global.currencyInfo[currencyType] or {icon = info.iconFileID, name = info.name} - self.db.global.currencyInfo[currencyType].maxQuantity = info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity or self.db.global.currencyInfo[currencyType].maxQuantity + self.db.global.currencyInfo[currencyType] = self.db.global.currencyInfo[currencyType] or + { icon = info.iconFileID, name = info.name } + self.db.global.currencyInfo[currencyType].maxQuantity = info.maxQuantity and info.maxQuantity > 0 and + info.maxQuantity or self.db.global.currencyInfo[currencyType].maxQuantity end - end end local function SumWarbandCurrencies(warbandCurrency) - local currencySum = 0 for _, alt in pairs(warbandCurrency) do currencySum = currencySum + alt.quantity @@ -496,10 +509,12 @@ end -- this is only for the Warband column, not for the Warband characters local function UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, currencyType) - warbandCurrencyInfo[currencyType] = warbandCurrencyInfo[currencyType] or {name = C_CurrencyInfo.GetCurrencyInfo(currencyType).name} + warbandCurrencyInfo[currencyType] = warbandCurrencyInfo[currencyType] or + { name = C_CurrencyInfo.GetCurrencyInfo(currencyType).name } warbandCurrencyInfo[currencyType].currencyType = currencyType - warbandCurrencyInfo[currencyType].altQuantity = newWarbandCurrencyInfo and SumWarbandCurrencies(newWarbandCurrencyInfo) or 0 + warbandCurrencyInfo[currencyType].altQuantity = newWarbandCurrencyInfo and + SumWarbandCurrencies(newWarbandCurrencyInfo) or 0 end local function UpdateAllWarbandCurrencies(charInfo) @@ -515,9 +530,9 @@ local function UpdateAllWarbandCurrencies(charInfo) local transferableCurrency = C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) if newWarbandCurrencyInfo or transferableCurrency then UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, currencyType) - warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + charCurrencyInfo[currencyType].quantity + offset + warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + + charCurrencyInfo[currencyType].quantity + offset end - end end @@ -537,9 +552,9 @@ local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged) end local currencyInfo = charInfo.currencyInfo[currencyType] - if self.isRetail then - currencyInfo.totalEarned = quantityChanged + (currencyInfo.totalEarned or 0) - end + if self.isRetail then + currencyInfo.totalEarned = quantityChanged + (currencyInfo.totalEarned or 0) + end local customOptions = self.currencyCustomOptions and self.currencyCustomOptions[currencyType] if customOptions then @@ -549,14 +564,16 @@ local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged) currencyInfo.totalEarned = newCurrencyInfo.totalEarned currencyInfo.quantityEarnedThisWeek = newCurrencyInfo.quantityEarnedThisWeek currencyInfo.maxWeeklyQuantity = newCurrencyInfo.maxWeeklyQuantity - currencyInfo.maxQuantity = newCurrencyInfo.maxQuantity and newCurrencyInfo.maxQuantity > 0 and newCurrencyInfo.maxQuantity or nil + currencyInfo.maxQuantity = newCurrencyInfo.maxQuantity and newCurrencyInfo.maxQuantity > 0 and + newCurrencyInfo.maxQuantity or nil elseif customOptions.currencyUpdate and charInfo.currencyInfo[customOptions.currencyUpdate] then - charInfo.currencyInfo[customOptions.currencyUpdate].quantity = C_CurrencyInfo.GetCurrencyInfo(customOptions.currencyUpdate).quantity + charInfo.currencyInfo[customOptions.currencyUpdate].quantity = C_CurrencyInfo.GetCurrencyInfo(customOptions + .currencyUpdate).quantity end else charInfo.currencyInfo[currencyType].quantity = quantity + self.currency[currencyType] end - + -- Update Warband amount if self.warbandData.currencyInfo and C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) then local warbandCurrencyInfo = self.warbandData.currencyInfo @@ -572,7 +589,7 @@ local function CurrencyTransferUpdate(charInfo) -- Fetch the latest currency transfer transactions local transferLog = C_CurrencyInfo.FetchCurrencyTransferTransactions() local lastTransferCurrencyType = transferLog[#transferLog].currencyType - + -- Get new currency information for character and warband local newCharacterCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo(lastTransferCurrencyType) @@ -580,7 +597,8 @@ local function CurrencyTransferUpdate(charInfo) -- this is necessary because a transfer can be taxed by with different penalties UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, lastTransferCurrencyType) - warbandCurrencyInfo[lastTransferCurrencyType].quantity = warbandCurrencyInfo[lastTransferCurrencyType].altQuantity + newCharacterCurrencyInfo.quantity + warbandCurrencyInfo[lastTransferCurrencyType].quantity = warbandCurrencyInfo[lastTransferCurrencyType].altQuantity + + newCharacterCurrencyInfo.quantity -- update all alts for this currency because the transferlog has no GUID unless you relog (cringe) -- even more cringe is that reducing a currency to 0 makes the character disappear from data. @@ -590,7 +608,7 @@ local function CurrencyTransferUpdate(charInfo) alt.currencyInfo[lastTransferCurrencyType].quantity = 0 end end - + for _, alt in pairs(newWarbandCurrencyInfo) do local character = accountData[alt.characterGUID] if character and character.currencyInfo[lastTransferCurrencyType] then @@ -608,26 +626,29 @@ local function UpdateCatalystCharges(charInfo) end local function CreateCatalystChargeString(currencyInfo) - local catalystCharges = currencyInfo and currencyInfo[2813] - if not catalystCharges then return '-' end + local catalystCharges = currencyInfo and currencyInfo[2813] + if not catalystCharges then return '-' end - return PermoksAccountManager:CreateFractionString(catalystCharges.quantity, catalystCharges.maxQuantity) + return PermoksAccountManager:CreateFractionString(catalystCharges.quantity, catalystCharges.maxQuantity) end local function CreateCrestString(labelRow, currencyInfo) - local crestInfo = currencyInfo and currencyInfo[labelRow.key] + local crestInfo = currencyInfo and currencyInfo[labelRow.key] local self = PermoksAccountManager if crestInfo then if crestInfo.maxQuantity and crestInfo.maxQuantity > 0 then - local currencyString = PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, crestInfo.totalEarned) + local currencyString = PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, + labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, crestInfo.totalEarned) return string.format("%d - %s", crestInfo.quantity, currencyString) elseif currencyInfo then - return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) + return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, + labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) end - -- manually exclcluding crests for the warband column. need a better solution what labelRows the Warband column shows + -- manually exclcluding crests for the warband column. need a better solution what labelRows the Warband column shows elseif currencyInfo and currencyInfo ~= self.warbandData.currencyInfo then - return PermoksAccountManager:CreateCurrencyString({currencyType = labelRow.key}, labelRow.abbCurrent, labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, 0) + return PermoksAccountManager:CreateCurrencyString({ currencyType = labelRow.key }, labelRow.abbCurrent, + labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, 0) else return '-' end @@ -637,8 +658,10 @@ local function CreateValorString(labelRow, currencyInfo) local info = currencyInfo and currencyInfo[labelRow.key] if info then local globalCurrencyInfo = PermoksAccountManager.db.global.currencyInfo[labelRow.key] - local maxQuantity = (info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity) or (globalCurrencyInfo and globalCurrencyInfo.maxQuantity or 0) - return string.format("%s - %s", AbbreviateNumbers(info.quantity), PermoksAccountManager:CreateFractionString(info.totalEarned or 0, maxQuantity or 0)) + local maxQuantity = (info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity) or + (globalCurrencyInfo and globalCurrencyInfo.maxQuantity or 0) + return string.format("%s - %s", AbbreviateNumbers(info.quantity), + PermoksAccountManager:CreateFractionString(info.totalEarned or 0, maxQuantity or 0)) end end @@ -680,7 +703,8 @@ module:AddCustomLabelType('valor', CreateValorString, nil, 'currencyInfo') module:AddCustomLabelType('cofferkey', CreateCofferKeyString, nil, 'currencyInfo', 'itemCounts') -- TODO Create a CreateIconString function instead of two functions for items and currencies -function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurrent, abbreviateMaximum, hideMaximum, customIcon, hideIcon, customQuantitiy) +function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurrent, abbreviateMaximum, hideMaximum, + customIcon, hideIcon, customQuantitiy) if not currencyInfo then return end @@ -691,7 +715,8 @@ function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurr local currencyIcon = globalCurrencyInfo.icon if not hideIcon and currencyIcon and options.currencyIcons then if customIcon then - iconString = string.format('\124T%s:%d:%d:%d:%d\124t', customIcon.path or currencyIcon, customIcon.height or 18, customIcon.width or 18, customIcon.xOffset or 0, customIcon.yOffset or 0) + iconString = string.format('\124T%s:%d:%d:%d:%d\124t', customIcon.path or currencyIcon, + customIcon.height or 18, customIcon.width or 18, customIcon.xOffset or 0, customIcon.yOffset or 0) else iconString = string.format('\124T%d:18:18\124t', currencyIcon) end @@ -708,7 +733,9 @@ function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurr local quantity = customQuantitiy or currencyInfo.quantity local currencyString = quantity if not hideMaximum and ((currencyInfo.maxQuantity and currencyInfo.maxQuantity > 0) or (currencyInfo.maxWeeklyQuantity and currencyInfo.maxWeeklyQuantity > 0)) then - currencyString = self:CreateFractionString(quantity, globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity or currencyInfo.maxWeeklyQuantity, abbreviateCurrent, abbreviateMaximum) + currencyString = self:CreateFractionString(quantity, + globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity or currencyInfo.maxWeeklyQuantity, + abbreviateCurrent, abbreviateMaximum) elseif quantity >= 1000 then currencyString = abbreviateCurrent and AbbreviateNumbers(quantity) or AbbreviateLargeNumbers(quantity) end @@ -739,7 +766,8 @@ function PermoksAccountManager.CurrencyTooltip_OnEnter(button, altData, labelRow tooltip:AddHeader(currencyInfo.name) tooltip:AddLine('') - tooltip:AddLine('Total Earned:', self:CreateFractionString(currencyInfo.totalEarned, globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity)) + tooltip:AddLine('Total Earned:', + self:CreateFractionString(currencyInfo.totalEarned, globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity)) if ((globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity) or 0) > currencyInfo.totalEarned then tooltip:AddLine('Left:', (globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity) - currencyInfo.totalEarned) @@ -783,7 +811,8 @@ do tooltip:AddLine('Tormentors:', PermoksAccountManager:CreateFractionString(tormentors, 50)) tooltip:AddLine('Torghast:', PermoksAccountManager:CreateFractionString(torghast, 360)) tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine('|cff00f7ffTotal:|r', PermoksAccountManager:CreateFractionString(assaults + tormentors + torghast, 510)) + tooltip:AddLine('|cff00f7ffTotal:|r', + PermoksAccountManager:CreateFractionString(assaults + tormentors + torghast, 510)) tooltip:SmartAnchorTo(button) tooltip:Show() end @@ -827,24 +856,31 @@ do local embersFromRaidBosses = {} for i, encounter in ipairs(raidActivityInfo) do if raidBossEmbers[encounter.bestDifficulty] then - embersFromRaidBosses[encounter.uiOrder] = (embersFromRaidBosses[encounter.uiOrder] or 0) + raidBossEmbers[encounter.bestDifficulty] + embersFromRaidBosses[encounter.uiOrder] = (embersFromRaidBosses[encounter.uiOrder] or 0) + + raidBossEmbers[encounter.bestDifficulty] end end - local embersFromShapingFate = questInfo.visible.korthia_weekly and next(questInfo.visible.korthia_weekly) and 10 or 0 + local embersFromShapingFate = questInfo.visible.korthia_weekly and next(questInfo.visible.korthia_weekly) and 10 or + 0 local embersFromWB = questInfo.hidden.world_boss and questInfo.hidden.world_boss[64531] and 1 or 0 local embersFromNormalRaidTrash = self:GetNumCompletedQuests(questInfo.hidden.sanctum_normal_embers_trash) local embersFromHeroicRaidTrash = self:GetNumCompletedQuests(questInfo.hidden.sanctum_heroic_embers_trash) - local total = GetTotalNumRaidEmbers(embersFromRaidBosses) + embersFromShapingFate + embersFromWB + embersFromNormalRaidTrash + embersFromHeroicRaidTrash + local total = GetTotalNumRaidEmbers(embersFromRaidBosses) + embersFromShapingFate + embersFromWB + + embersFromNormalRaidTrash + embersFromHeroicRaidTrash local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') button.tooltip = tooltip tooltip:AddHeader(alt_data.currencyInfo[1977].name) tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine('LFR Raid:', PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 17), 10)) - tooltip:AddLine('Normal Raid:', PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 14), 10)) - tooltip:AddLine('Heroic Raid:', PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 15), 10)) - tooltip:AddLine('Mythic Raid:', PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 16), 10)) + tooltip:AddLine('LFR Raid:', + PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 17), 10)) + tooltip:AddLine('Normal Raid:', + PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 14), 10)) + tooltip:AddLine('Heroic Raid:', + PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 15), 10)) + tooltip:AddLine('Mythic Raid:', + PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 16), 10)) tooltip:AddSeparator(2, 1, 1, 1) tooltip:AddLine('Normal Trash:', PermoksAccountManager:CreateFractionString(embersFromNormalRaidTrash, 5)) tooltip:AddLine('Heroic Trash:', PermoksAccountManager:CreateFractionString(embersFromHeroicRaidTrash, 5)) diff --git a/modules/instances.lua b/modules/instances.lua index ba5ed2a..68e4937 100644 --- a/modules/instances.lua +++ b/modules/instances.lua @@ -44,6 +44,17 @@ local labelRows = { group = 'raids', version = WOW_PROJECT_MAINLINE }, + blackrock_depths_raid = { + label = function() + return PermoksAccountManager.raids[2792].name or 'BRD' + end, + id = 2792, + type = 'raid', + key = 'blackrock_depths_raid', + tooltip = true, + group = 'raids', + version = WOW_PROJECT_MAINLINE + }, -- wotlk -- TOOD: Change db structure so you can get the locale name without calling the function again diff --git a/modules/items.lua b/modules/items.lua index 2a1eb0d..142dc56 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -303,6 +303,13 @@ local labelRows = { group = 'item', version = WOW_PROJECT_MAINLINE }, + timewarped_relic_coffer_key = { + label = 'Timewarped Key', + type = 'item', + key = 231510, + group = 'item', + version = WOW_PROJECT_MAINLINE, + }, -- tbc elixirDemonslaying = { diff --git a/modules/vault.lua b/modules/vault.lua index 348ab09..90a8b05 100644 --- a/modules/vault.lua +++ b/modules/vault.lua @@ -39,7 +39,7 @@ local labelRows = { local function CreateVaultRewardString(vaultRewardInfo) if vaultRewardInfo then - return string.format("|cff00ff00Availbale|r") + return string.format("|cff00ff00Available|r") else return "-" end From 40dffd48e5eaefa5a98ecbbf8007aa4d98d63588 Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 22 Oct 2024 23:40:55 +0200 Subject: [PATCH 083/138] Bump toc --- PermoksAccountManager.toc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PermoksAccountManager.toc b/PermoksAccountManager.toc index eeeffa4..eb88e26 100644 --- a/PermoksAccountManager.toc +++ b/PermoksAccountManager.toc @@ -1,4 +1,4 @@ -## Interface: 110000 +## Interface: 110005 ## Title: Permoks Account Manager ## Version: @project-version@ ## SavedVariables: PermoksAccountManagerDB From 1689bc100e00aef685149193c4a5de6f4f46404d Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 23 Oct 2024 16:08:36 +0200 Subject: [PATCH 084/138] Fix typo --- modules/currencies.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index 5135b1e..5467065 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -339,7 +339,7 @@ local labelRows = { -- 10.0.5 bronze_celebration_token = { - label = 'Celebartion Token', + label = 'Celebration Token', type = 'currency', key = 3100, group = 'currency', From d391af0b7c88f844be4ff0009f181b23d1639a73 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 28 Oct 2024 11:42:40 +0100 Subject: [PATCH 085/138] Count celebration tokens warband wide --- modules/currencies.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/currencies.lua b/modules/currencies.lua index 5467065..badc961 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -341,6 +341,7 @@ local labelRows = { bronze_celebration_token = { label = 'Celebration Token', type = 'currency', + warband = true, key = 3100, group = 'currency', version = WOW_PROJECT_MAINLINE From ee324e6b81c6b4c8507712f2f2d531242adc7ef3 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 28 Oct 2024 11:43:12 +0100 Subject: [PATCH 086/138] Add normal and heroic coffer keys --- db/db.lua | 4 +++- modules/items.lua | 22 ++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/db/db.lua b/db/db.lua index 9b56f54..c7f3975 100644 --- a/db/db.lua +++ b/db/db.lua @@ -523,7 +523,9 @@ PermoksAccountManager.item = { [212493] = {key = 'firelight_ruby'}, -- Odd Glob of Wax [224642] = {key = 'firelight_ruby'}, -- Firelight Ruby [229899] = {key = 'coffer_key_shard'}, -- Coffer Key Shard - [231510] = {key = 'timewarped_relic_coffer_key'}, -- Timewarped Relic Coffer Key + [231510] = {key = 'timewarped_relic_coffer_key'}, -- Timewarped Relic Coffer Key LFR + [232365] = {key = 'timewarped_relic_coffer_key'}, -- Timewarped Relic Coffer Key Normal + [232366] = {key = 'timewarped_relic_coffer_key'}, -- Timewarped Relic Coffer Key Heroic } PermoksAccountManager.factions = { diff --git a/modules/items.lua b/modules/items.lua index 142dc56..1778499 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -305,8 +305,9 @@ local labelRows = { }, timewarped_relic_coffer_key = { label = 'Timewarped Key', - type = 'item', - key = 231510, + type = 'reliccofferkey', + passRow = true, + keys = { 231510, 232365, 232366 }, group = 'item', version = WOW_PROJECT_MAINLINE, }, @@ -808,6 +809,22 @@ local function CreateDreamSeedString(labelRow, itemCounts) return " " end +local function CreateCofferKeyString(labelRow, itemCounts) + if itemCounts then + local strings = {} + for i, itemID in ipairs(labelRow.keys) do + local itemInfo = itemCounts[itemID] + if i == #labelRow.keys then + tinsert(strings, PermoksAccountManager:CreateItemString(nil, itemInfo and itemInfo.total or 0, (itemInfo and itemInfo.icon or C_Item.GetItemIconByID(itemID)))) + else + tinsert(strings, itemInfo and itemInfo.total or 0) + end + end + + return table.concat(strings, "| ") + end +end + local payload = { update = Update, labels = labelRows, @@ -822,6 +839,7 @@ local module = PermoksAccountManager:AddModule(module, payload) module:AddCustomLabelType('crest', CreateCrestString, nil, 'itemCounts') module:AddCustomLabelType('spark', CreateSparkString, nil, 'itemCounts') module:AddCustomLabelType('dreamseeds', CreateDreamSeedString, nil, 'itemCounts') +module:AddCustomLabelType('reliccofferkey', CreateCofferKeyString, nil, 'itemCounts') function PermoksAccountManager:CreateItemString(itemInfo, total, icon) From 86d921b9fcf6f46982d3b1ead82a29ab08aa3b55 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 30 Oct 2024 18:45:58 +0100 Subject: [PATCH 087/138] Fix classic lua error --- modules/factions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/factions.lua b/modules/factions.lua index bf8066c..fb13b90 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -645,7 +645,7 @@ local function GetFactionOrFriendshipInfo(factionId, factionType) else name, _, standing, barMin, barMax, barValue = GetFactionInfoByID(factionId) end - local isParagon = C_Reputation.IsFactionParagon(factionId) + local isParagon = C_Reputation.IsFactionParagon and C_Reputation.IsFactionParagon(factionId) if isParagon then barValue, barMax, _, hasReward = C_Reputation.GetFactionParagonInfo(factionId) From de77478bb216f5946022c3033cff4c94faf8cdb6 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 30 Oct 2024 18:46:23 +0100 Subject: [PATCH 088/138] Update formatting of the coffer keys --- modules/items.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/items.lua b/modules/items.lua index 1778499..c811773 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -821,7 +821,7 @@ local function CreateCofferKeyString(labelRow, itemCounts) end end - return table.concat(strings, "| ") + return table.concat(strings, " | ") end end From 09b223ba1b67a0e724490103bcf30a7e647e7946 Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 12 Nov 2024 20:33:30 +0100 Subject: [PATCH 089/138] Add option to show window while hovering over the minimap button --- PermoksAccountManager.lua | 17 ++++++++++++++++- options.lua | 6 ++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 22cc7b5..1ff6bfd 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -12,7 +12,10 @@ local PermoksAccountManagerLDB = icon = 'Interface/Icons/achievement_guildperk_everybodysfriend.blp', OnClick = function(self, button) if button == 'LeftButton' then - if PermoksAccountManagerFrame:IsShown() then + if PermoksAccountManager.db.global.options.showOnEnter then + PermoksAccountManager:ShowInterface() + PermoksAccountManager.openedByClick = true + elseif PermoksAccountManagerFrame:IsShown() then PermoksAccountManager:HideInterface() else PermoksAccountManager:ShowInterface() @@ -22,10 +25,21 @@ local PermoksAccountManagerLDB = end end, OnTooltipShow = function(tt) + if PermoksAccountManager.db.global.options.showOnEnter then + PermoksAccountManager:ShowInterface() + PermoksAccountManager.openedByClick = nil + end + tt:AddLine('|cfff49b42Permoks Account Manager|r') tt:AddLine('|cffffffffLeft-click|r to open the Manager') tt:AddLine('|cffffffffRight-click|r to open options') tt:AddLine("Type '/pam minimap' to hide the Minimap Button!") + end, + OnLeave = function() + if PermoksAccountManager.db.global.options.showOnEnter and not PermoksAccountManager.openedByClick then + PermoksAccountManager:HideInterface() + PermoksAccountManager.openedByClick = nil + end end } ) @@ -111,6 +125,7 @@ local defaultDB = { useOutline = true, itemIconPosition = 'right', currencyIconPosition = 'right', + showOnEnter = false, customCategories = { general = { childOrder = {characterName = 1, ilevel = 2}, diff --git a/options.lua b/options.lua index caee1ec..580c884 100644 --- a/options.lua +++ b/options.lua @@ -1823,6 +1823,12 @@ function PermoksAccountManager:LoadOptionsTemplate() changeAccountName('main', value) end }, + showOnEnter = { + order = 13, + type = 'toggle', + name = 'Show On Enter', + desc = 'Show the window while hovering over the minimap button' + } } } } From 8263a2e1dd04660ae0500adf25ebe997e671b502 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 13 Jan 2025 18:51:14 +0100 Subject: [PATCH 090/138] Rename hover option --- options.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/options.lua b/options.lua index 580c884..a2a0a89 100644 --- a/options.lua +++ b/options.lua @@ -1826,7 +1826,7 @@ function PermoksAccountManager:LoadOptionsTemplate() showOnEnter = { order = 13, type = 'toggle', - name = 'Show On Enter', + name = 'Show On Mouseover', desc = 'Show the window while hovering over the minimap button' } } From baafa27df02680d44c1628a42a500fbea64bdb62 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 13 Jan 2025 18:51:30 +0100 Subject: [PATCH 091/138] Add equipped items --- modules/character.lua | 118 +++++++++++++++++++++++++++++++++--------- 1 file changed, 93 insertions(+), 25 deletions(-) diff --git a/modules/character.lua b/modules/character.lua index 304626a..beb7e8b 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -13,6 +13,10 @@ local labelRows = { big = true, offset = 1.5, type = 'characterName', + tooltip = true, + customTooltip = function(button, altData, labelRow) + PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altData, labelRow) + end, data = function(alt_data) return PermoksAccountManager:CreateCharacterString(alt_data.name, alt_data.specInfo) end, @@ -214,7 +218,7 @@ local function GearScoreGetEnchantInfo(ItemLink, ItemEquipLoc) for v in string.gmatch(ItemSubString, "[^:]+") do tinsert(ItemSubStringTable, v) end - + ItemSubString = ItemSubStringTable[2] .. ":" .. ItemSubStringTable[3], ItemSubStringTable[2] local StringStart, _ = string.find(ItemSubString, ":") ItemSubString = string.sub(ItemSubString, StringStart + 1) @@ -228,24 +232,27 @@ end local function GearScoreGetQuality(ItemScore) ItemScore = tonumber(ItemScore) - if (not ItemScore) then - return 0, 0, 0, "Trash" - end + if (not ItemScore) then + return 0, 0, 0, "Trash" + end if (ItemScore > 5999) then - ItemScore = 5999 - end - - for i = 0,6 do - if ((ItemScore > i * 1000) and (ItemScore <= ((i + 1) * 1000))) then - local Red = gsQuality[( i + 1 ) * 1000].Red["A"] + (((ItemScore - gsQuality[( i + 1 ) * 1000].Red["B"])*gsQuality[( i + 1 ) * 1000].Red["C"])*gsQuality[( i + 1 ) * 1000].Red["D"]) - local Blue = gsQuality[( i + 1 ) * 1000].Green["A"] + (((ItemScore - gsQuality[( i + 1 ) * 1000].Green["B"])*gsQuality[( i + 1 ) * 1000].Green["C"])*gsQuality[( i + 1 ) * 1000].Green["D"]) - local Green = gsQuality[( i + 1 ) * 1000].Blue["A"] + (((ItemScore - gsQuality[( i + 1 ) * 1000].Blue["B"])*gsQuality[( i + 1 ) * 1000].Blue["C"])*gsQuality[( i + 1 ) * 1000].Blue["D"]) + ItemScore = 5999 + end + + for i = 0, 6 do + if ((ItemScore > i * 1000) and (ItemScore <= ((i + 1) * 1000))) then + local Red = gsQuality[(i + 1) * 1000].Red["A"] + + (((ItemScore - gsQuality[(i + 1) * 1000].Red["B"]) * gsQuality[(i + 1) * 1000].Red["C"]) * gsQuality[(i + 1) * 1000].Red["D"]) + local Blue = gsQuality[(i + 1) * 1000].Green["A"] + + (((ItemScore - gsQuality[(i + 1) * 1000].Green["B"]) * gsQuality[(i + 1) * 1000].Green["C"]) * gsQuality[(i + 1) * 1000].Green["D"]) + local Green = gsQuality[(i + 1) * 1000].Blue["A"] + + (((ItemScore - gsQuality[(i + 1) * 1000].Blue["B"]) * gsQuality[(i + 1) * 1000].Blue["C"]) * gsQuality[(i + 1) * 1000].Blue["D"]) -- we swap up blue and green because for some reason the coloring of level power works like that - return Red, Blue, Green, gsQuality[( i + 1 ) * 1000].Description - end - end - return 0.1, 0.1, 0.1, "Trash" + return Red, Blue, Green, gsQuality[(i + 1) * 1000].Description + end + end + return 0.1, 0.1, 0.1, "Trash" end local function GearScoreGetItemScore(ItemLink) @@ -254,7 +261,7 @@ local function GearScoreGetItemScore(ItemLink) local PVPScore = 0 local GearScore = 0 - if not (ItemLink) then + if not (ItemLink) then return 0, 0 end @@ -281,11 +288,12 @@ local function GearScoreGetItemScore(ItemLink) if (gsItemTypes[ItemEquipLoc]) then if (ItemLevel > 120) then Table = gsFormula["A"] - else + else Table = gsFormula["B"] end if (ItemRarity >= 2) and (ItemRarity <= 4) then - GearScore = floor(((ItemLevel - Table[ItemRarity].A) / Table[ItemRarity].B) * gsItemTypes[ItemEquipLoc].SlotMOD * Scale * QualityScale) + GearScore = floor(((ItemLevel - Table[ItemRarity].A) / Table[ItemRarity].B) * + gsItemTypes[ItemEquipLoc].SlotMOD * Scale * QualityScale) if (ItemLevel == 187.05) then ItemLevel = 0 @@ -426,7 +434,7 @@ local function UpdateGeneralData(charInfo) -- Gear Score and Item Level local gearScore, ilvl = GearScoreGetScore(UnitName('player'), 'player') local red, green, blue = GearScoreGetQuality(gearScore) - + charInfo.gearScore = gearScore charInfo.gearScoreRed = red charInfo.gearScoreGreen = green @@ -463,12 +471,45 @@ local function UpdateILevel(charInfo) end end +local function UpdateEquip(charInfo, ...) + local equipmentSlot, isEmpty = ... + + charInfo.equippedItems = charInfo.equippedItems or {} + + if isEmpty then + charInfo.equippedItems[equipmentSlot] = nil + else + local itemLink = GetInventoryItemLink("player", equipmentSlot) + if itemLink then + local itemID = GetInventoryItemID("player", equipmentSlot) + local itemName, _, itemQuality, _, _, _, _, _, itemEquipLoc = C_Item.GetItemInfo(itemLink) + + charInfo.equippedItems[equipmentSlot] = { + itemTexture = GetInventoryItemTexture("player", equipmentSlot), + itemLevel = C_Item.GetDetailedItemLevelInfo(itemLink), + itemName = itemName, + itemQuality = itemQuality, + itemID = itemID, + itemLink = itemLink, + itemSlot = _G[itemEquipLoc], + } + else + charInfo.equippedItems[equipmentSlot] = nil + end + end +end + +local function UpdateCharacterEquip(charInfo) + for equipmentSlot = 1, 18 do + UpdateEquip(charInfo, equipmentSlot) + end +end + local function UpdateMythicScore(charInfo) if not PermoksAccountManager.isRetail then return end C_MythicPlus.RequestMapInfo() charInfo.mythicScore = C_ChallengeMode.GetOverallDungeonScore() - end local function UpdateMythicPlusHistory(charInfo) @@ -481,7 +522,7 @@ local function UpdatePlayerSpecialization(charInfo) elseif GetTalentTabInfo then local primaryTalentTree = GetPrimaryTalentTree() if primaryTalentTree then - charInfo.specInfo = {GetTalentTabInfo(primaryTalentTree)} + charInfo.specInfo = { GetTalentTabInfo(primaryTalentTree) } end end end @@ -503,6 +544,7 @@ local function Update(charInfo) UpdateLocation(charInfo) else UpdateILevel(charInfo) + UpdateCharacterEquip(charInfo) UpdatePlayerSpecialization(charInfo) UpdateMythicScore(charInfo) UpdateMythicPlusHistory(charInfo) @@ -593,6 +635,7 @@ local payload = { events = { ['PLAYER_MONEY'] = UpdateGold, ['PLAYER_AVG_ITEM_LEVEL_UPDATE'] = UpdateILevel, + ['PLAYER_EQUIPMENT_CHANGED'] = { UpdateILevel, UpdateEquip }, ['PLAYER_SPECIALIZATION_CHANGED'] = UpdatePlayerSpecialization, ['CHALLENGE_MODE_MAPS_UPDATE'] = { UpdateMythicScore, UpdateMythicPlusHistory }, ['BAG_UPDATE_DELAYED'] = { UpdateGeneralData, UpdateKeystones }, @@ -643,7 +686,8 @@ function PermoksAccountManager:HighestKeyTooltip_OnEnter(button, alt_data) local runPerDungeon = {} for _, info in ipairs(alt_data.mythicPlusHistory) do runPerDungeon[info.mapChallengeModeID] = runPerDungeon[info.mapChallengeModeID] or {} - runPerDungeon[info.mapChallengeModeID][info.level] = (runPerDungeon[info.mapChallengeModeID][info.level] or 0) + 1 + runPerDungeon[info.mapChallengeModeID][info.level] = (runPerDungeon[info.mapChallengeModeID][info.level] or 0) + + 1 tinsert(runs, info.level) end @@ -654,14 +698,14 @@ function PermoksAccountManager:HighestKeyTooltip_OnEnter(button, alt_data) if i == 1 or i == 4 or i == 8 then runs[i] = string.format('|cff00f7ff+%d|r', runs[i]) else - runs[i] = "+"..runs[i] + runs[i] = "+" .. runs[i] end end local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'LEFT') button.tooltip = tooltip tooltip:SetBackdropColor(0, 0, 0, 1) - tooltip:AddLine('Vault Keys:',table.concat(runs, ', ', 1, (min(#runs, 8)))) + tooltip:AddLine('Vault Keys:', table.concat(runs, ', ', 1, (min(#runs, 8)))) tooltip:AddLine('') tooltip:AddSeparator(2, 1, 1, 1) @@ -681,3 +725,27 @@ function PermoksAccountManager:HighestKeyTooltip_OnEnter(button, alt_data) tooltip:SmartAnchorTo(button) tooltip:Show() end + +local equipmentSlotOrdered = {1, 2, 3, 15, 5, 4, 19, 9, 10, 6, 7, 8, 11, 12, 13, 14, 16, 17, 18} + +function PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altData, labelRow) + if not altData or not altData.equippedItems then + return + end + + local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'LEFT') + button.tooltip = tooltip + tooltip:SetBackdropColor(0, 0, 0, 1) + tooltip:AddHeader('Equipment:') + tooltip:AddSeparator(2, 1, 1, 1) + + for _, equipmentSlot in ipairs(equipmentSlotOrdered) do + local item = altData.equippedItems[equipmentSlot] + if item then + tooltip:AddLine(string.format("%s:", item.itemSlot), string.format("|T%d:0|t|c%s[%s]|r [%d]", item.itemTexture, ITEM_QUALITY_COLORS[item.itemQuality].color:GenerateHexColor(), item.itemName, item.itemLevel)) + end + end + + tooltip:SmartAnchorTo(button) + tooltip:Show() +end From eb10865a1ae3fa98345233d2e7b6e5fe1c97380a Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 16 Jan 2025 20:53:10 +0100 Subject: [PATCH 092/138] Fix tracking of equipped items --- modules/character.lua | 75 +++++++++++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/modules/character.lua b/modules/character.lua index beb7e8b..559e1b0 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -243,11 +243,11 @@ local function GearScoreGetQuality(ItemScore) for i = 0, 6 do if ((ItemScore > i * 1000) and (ItemScore <= ((i + 1) * 1000))) then local Red = gsQuality[(i + 1) * 1000].Red["A"] + - (((ItemScore - gsQuality[(i + 1) * 1000].Red["B"]) * gsQuality[(i + 1) * 1000].Red["C"]) * gsQuality[(i + 1) * 1000].Red["D"]) + (((ItemScore - gsQuality[(i + 1) * 1000].Red["B"]) * gsQuality[(i + 1) * 1000].Red["C"]) * gsQuality[(i + 1) * 1000].Red["D"]) local Blue = gsQuality[(i + 1) * 1000].Green["A"] + - (((ItemScore - gsQuality[(i + 1) * 1000].Green["B"]) * gsQuality[(i + 1) * 1000].Green["C"]) * gsQuality[(i + 1) * 1000].Green["D"]) + (((ItemScore - gsQuality[(i + 1) * 1000].Green["B"]) * gsQuality[(i + 1) * 1000].Green["C"]) * gsQuality[(i + 1) * 1000].Green["D"]) local Green = gsQuality[(i + 1) * 1000].Blue["A"] + - (((ItemScore - gsQuality[(i + 1) * 1000].Blue["B"]) * gsQuality[(i + 1) * 1000].Blue["C"]) * gsQuality[(i + 1) * 1000].Blue["D"]) + (((ItemScore - gsQuality[(i + 1) * 1000].Blue["B"]) * gsQuality[(i + 1) * 1000].Blue["C"]) * gsQuality[(i + 1) * 1000].Blue["D"]) -- we swap up blue and green because for some reason the coloring of level power works like that return Red, Blue, Green, gsQuality[(i + 1) * 1000].Description end @@ -293,7 +293,7 @@ local function GearScoreGetItemScore(ItemLink) end if (ItemRarity >= 2) and (ItemRarity <= 4) then GearScore = floor(((ItemLevel - Table[ItemRarity].A) / Table[ItemRarity].B) * - gsItemTypes[ItemEquipLoc].SlotMOD * Scale * QualityScale) + gsItemTypes[ItemEquipLoc].SlotMOD * Scale * QualityScale) if (ItemLevel == 187.05) then ItemLevel = 0 @@ -479,20 +479,26 @@ local function UpdateEquip(charInfo, ...) if isEmpty then charInfo.equippedItems[equipmentSlot] = nil else - local itemLink = GetInventoryItemLink("player", equipmentSlot) - if itemLink then - local itemID = GetInventoryItemID("player", equipmentSlot) - local itemName, _, itemQuality, _, _, _, _, _, itemEquipLoc = C_Item.GetItemInfo(itemLink) - - charInfo.equippedItems[equipmentSlot] = { - itemTexture = GetInventoryItemTexture("player", equipmentSlot), - itemLevel = C_Item.GetDetailedItemLevelInfo(itemLink), - itemName = itemName, - itemQuality = itemQuality, - itemID = itemID, - itemLink = itemLink, - itemSlot = _G[itemEquipLoc], - } + local itemID = GetInventoryItemID("player", equipmentSlot) + if itemID then + local itemObject = Item:CreateFromItemID(itemID) + itemObject:ContinueOnItemLoad(function() + local itemLink = GetInventoryItemLink("player", equipmentSlot) + local itemName = itemObject:GetItemName() + local itemQuality = itemObject:GetItemQuality() + local itemEquipLoc = itemObject:GetInventoryTypeName() + + charInfo.equippedItems[equipmentSlot] = { + equipmentSlot = equipmentSlot, + itemTexture = GetInventoryItemTexture("player", equipmentSlot), + itemLevel = C_Item.GetDetailedItemLevelInfo(itemLink), + itemName = itemName, + itemQuality = itemQuality, + itemID = itemID, + itemLink = itemLink, + itemSlot = _G[itemEquipLoc], + } + end) else charInfo.equippedItems[equipmentSlot] = nil end @@ -687,7 +693,7 @@ function PermoksAccountManager:HighestKeyTooltip_OnEnter(button, alt_data) for _, info in ipairs(alt_data.mythicPlusHistory) do runPerDungeon[info.mapChallengeModeID] = runPerDungeon[info.mapChallengeModeID] or {} runPerDungeon[info.mapChallengeModeID][info.level] = (runPerDungeon[info.mapChallengeModeID][info.level] or 0) + - 1 + 1 tinsert(runs, info.level) end @@ -726,7 +732,7 @@ function PermoksAccountManager:HighestKeyTooltip_OnEnter(button, alt_data) tooltip:Show() end -local equipmentSlotOrdered = {1, 2, 3, 15, 5, 4, 19, 9, 10, 6, 7, 8, 11, 12, 13, 14, 16, 17, 18} +local equipmentSlotOrdered = { 1, 2, 3, 15, 5, 4, 19, 9, 10, 6, 7, 8, 11, 12, 13, 14, 16, 17, 18 } function PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altData, labelRow) if not altData or not altData.equippedItems then @@ -742,7 +748,34 @@ function PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altDat for _, equipmentSlot in ipairs(equipmentSlotOrdered) do local item = altData.equippedItems[equipmentSlot] if item then - tooltip:AddLine(string.format("%s:", item.itemSlot), string.format("|T%d:0|t|c%s[%s]|r [%d]", item.itemTexture, ITEM_QUALITY_COLORS[item.itemQuality].color:GenerateHexColor(), item.itemName, item.itemLevel)) + if (not item.itemName or not item.itemTexture or not item.itemQuality or not item.itemLink or not item.itemSlot) and item.itemID then + local itemObject = Item:CreateFromItemID(item.itemID) + local y, x = tooltip:AddLine() + itemObject:ContinueOnItemLoad(function() + item.itemLink = itemObject:GetItemLink() + item.itemQuality = itemObject:GetItemQuality() + item.itemName = itemObject:GetItemName() + item.itemSlot = _G[itemObject:GetInventoryTypeName()] + item.itemTexture = itemObject:GetItemIcon() + + if tooltip:IsAcquiredBy(addonName .. 'Tooltip') then + tooltip:SetCell(y, 1, string.format("%s:", item.itemSlot)) + tooltip:SetCell(y, 2, + string.format("|T%d:0|t|c%s[%s]|r [%s]", item.itemTexture, + ITEM_QUALITY_COLORS[item.itemQuality].color:GenerateHexColor(), item.itemName, + item.itemLevel or "N/A")) + end + end) + else + if not item.itemLevel and altData.GUID == UnitGUID("player") then + + end + + tooltip:AddLine(string.format("%s:", item.itemSlot), + string.format("|T%d:0|t|c%s[%s]|r [%s]", item.itemTexture, + ITEM_QUALITY_COLORS[item.itemQuality].color:GenerateHexColor(), item.itemName, + item.itemLevel or "N/A")) + end end end From 5dc8d9a0d56935a34a0ab929317fe514e268aa62 Mon Sep 17 00:00:00 2001 From: Permok Date: Sat, 22 Feb 2025 19:30:33 +0100 Subject: [PATCH 093/138] 11.1 Update 1 --- PermoksAccountManager.lua | 20 +- db/db.lua | 2410 +++++++++++++++++++------------------ modules.lua | 1 - modules/character.lua | 2 +- modules/currencies.lua | 450 +++---- modules/factions.lua | 72 ++ modules/instances.lua | 29 +- modules/items.lua | 22 +- modules/quests.lua | 17 + options.lua | 52 + 10 files changed, 1688 insertions(+), 1387 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 1ff6bfd..ff759bd 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -52,7 +52,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 6 +local INTERNALTWWVERSION = 7 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -108,7 +108,7 @@ local defaultDB = { border = { edgeSize = 5, color = {0.39, 0.39, 0.39, 1}, - bgColor = {0.1, 0.1, 0.1, 0.9} + bgColor = {0, 0, 0, 0.9} }, font = 'Expressway', fontSize = 11, @@ -763,6 +763,22 @@ function PermoksAccountManager:Modernize(oldInternalVersion) self:AddLabelToDefaultCategory('general', 'timewarped_relic_coffer_key', 27) self:AddLabelToDefaultCategory('raid', 'blackrock_depths_raid', 2) end + + if oldInternalVersion < 7 then + self:AddLabelToDefaultCategory('general', 'spark_drops') + + self:AddLabelToDefaultCategory('currentweekly', 'undermine_rares') + + self:AddLabelToDefaultCategory('raid', 'liberation_of_undermine') + + self:UpdateDefaultCategories('renown') + + self:ReplaceLabelOfDefaultCategory('general', 'spark_omens', 'spark_current') + self:RemoveLabelFromDefaultCategory('general', 'timewarped_relic_coffer_key') + self:RemoveLabelFromDefaultCategory('general', 'bronze_celebration_token') + self:FixOrderOfDefaultCategories() + + end end function PermoksAccountManager:GetGUID() diff --git a/db/db.lua b/db/db.lua index c7f3975..c17770c 100644 --- a/db/db.lua +++ b/db/db.lua @@ -18,7 +18,8 @@ local default_categories = { 'veteran_crest', 'hero_crest', 'myth_crest', - 'spark_omens', + 'spark_current', + 'spark_drops', -- Probably interesting during the first weeks, might wanna (re-)move later 'separator2', @@ -27,8 +28,8 @@ local default_categories = { 'kej', 'radiant_remnant', 'radiant_echo', - 'bronze_celebration_token', - 'timewarped_relic_coffer_key' + 'empty_kajacola_can', + 'vintage_kajacola_can' }, childOrder = { characterName = 1, @@ -43,17 +44,18 @@ local default_categories = { veteran_crest = 10, hero_crest = 11, myth_crest = 12, - spark_omens = 13, + spark_current = 13, + spark_drops = 14, -- Probably interesting during the first weeks, might wanna (re-)move later separator2 = 20, restored_coffer_key = 21, resonance_crystals = 22, - kej = 23, + kej = 23, radiant_remnant = 24, radiant_echo = 25, - bronze_celebration_token = 26, - timewarped_relic_coffer_key = 27, + empty_kajacola_can = 26, + vintage_kajacola_can = 27, }, hideToggle = true, enabled = true @@ -94,6 +96,7 @@ local default_categories = { 'hallowfall_rares', 'azj_kahet_rares', 'one_time_reputation_rares', + 'undermine_rares', }, childOrder = { dungeon_weekly = 1, @@ -113,13 +116,13 @@ local default_categories = { greater_keyflame_weeklies = 17, severed_threads_pact_weekly = 18, - separator2 = 20, isle_of_dorne_rares = 21, ringing_deeps_rares = 22, hallowfall_rares = 23, azj_kahet_rares = 24, one_time_reputation_rares = 25, + undermine_rares = 26, }, enabled = true }, @@ -172,16 +175,37 @@ local default_categories = { 'the_vizier', 'the_weaver', -- 'brann_bronzebeard', Makes no sense without a custom string for the level + + 'separator1', + 'the_cartels_of_undermine', + 'bilgewater_cartel', + 'blackwater_cartel', + 'steamwheedle_cartel', + 'venture_company', + 'separator2', + 'gallagio_loyalty_rewards_club', + 'darkfuse_solutions', }, childOrder = { council_of_dornogal = 1, hallowfall_arathi = 2, - the_assembly_of_the_deeps= 2, + the_assembly_of_the_deeps = 2, the_severed_threads = 4, the_general = 5, the_vizier = 6, the_weaver = 7, -- brann_bronzebeard = 8, + + separator1 = 10, + the_cartels_of_undermine = 11, + bilgewater_cartel = 12, + blackwater_cartel = 13, + steamwheedle_cartel = 14, + venture_company = 15, + + separator2 = 20, + gallagio_loyalty_rewards_club = 21, + darkfuse_solutions = 22, }, enabled = true }, @@ -190,11 +214,11 @@ local default_categories = { name = L['Raid'], childs = { 'nerub_ar_palace', - 'blackrock_depths_raid' + 'liberation_of_undermine' }, childOrder = { nerub_ar_palace = 1, - blackrock_depths_raid = 2, + liberation_of_undermine = 2, }, enabled = true }, @@ -384,90 +408,92 @@ PermoksAccountManager.labelRows = { PermoksAccountManager.numDungeons = 8 PermoksAccountManager.keys = { - [2] = "TJS", -- Temple of the Jade Serpent - [165] = "SBG", -- Shadowmoon Burial Grounds - [369] = 'YARD', -- Operation: Mechagon - Junkyard - [370] = 'WORK', -- Operation: Mechagon - Workshop - [375] = 'MISTS', -- Mists of Tirna Scithe - [376] = 'NW', -- The Necrotic Wage - [377] = 'DOS', -- De Other Side - [378] = 'HOA', -- Halls of Atonement - [379] = 'PF', -- Plaguefall - [380] = 'SD', -- Sanguine Depths - [381] = 'SOA', -- Spires of Ascension - [382] = 'TOP', -- Theater of Pain - [391] = 'STRT', -- Tazavesh: Streets of Wonder - [392] = 'GMBT', -- Tazavesh: So'lesh Gambit - [166] = 'GD', -- Grimrail Depot - [168] = 'EB', -- Everbloom - [169] = 'ID', -- Iron Docks - [197] = 'EOA', -- Eye of Azshara - [198] = 'DHT', -- Darkheart Thicket - [199] = 'BRH', -- Blackrook Hold - [200] = 'HOV', -- Halls of Valor - [206] = 'NL', -- Neltharion's Lair - [207] = 'VOTW', -- Vault of the Wardens - [208] = 'MOS', -- Maw of Souls - [209] = 'ARC', -- The Arcway - [210] = 'COS', -- Court of Stars - [227] = 'LOWR', -- Return to Karazhan: Lower - [233] = 'COEN', -- Cathedral of Eternal Night - [234] = 'UPPR', -- Return to Karathan: Upper - [239] = 'SEAT', -- Seat of the Triumvirate - [244] = 'AD', -- Atal'Dazar - [245] = 'FH', -- Freehold - [248] = 'WM', -- Waycrest Manor - [251] = 'UNDR', -- The Underrot + [2] = "TJS", -- Temple of the Jade Serpent + [165] = "SBG", -- Shadowmoon Burial Grounds + [369] = 'YARD', -- Operation: Mechagon - Junkyard + [370] = 'WORK', -- Operation: Mechagon - Workshop + [375] = 'MISTS', -- Mists of Tirna Scithe + [376] = 'NW', -- The Necrotic Wage + [377] = 'DOS', -- De Other Side + [378] = 'HOA', -- Halls of Atonement + [379] = 'PF', -- Plaguefall + [380] = 'SD', -- Sanguine Depths + [381] = 'SOA', -- Spires of Ascension + [382] = 'TOP', -- Theater of Pain + [391] = 'STRT', -- Tazavesh: Streets of Wonder + [392] = 'GMBT', -- Tazavesh: So'lesh Gambit + [166] = 'GD', -- Grimrail Depot + [168] = 'EB', -- Everbloom + [169] = 'ID', -- Iron Docks + [197] = 'EOA', -- Eye of Azshara + [198] = 'DHT', -- Darkheart Thicket + [199] = 'BRH', -- Blackrook Hold + [200] = 'HOV', -- Halls of Valor + [206] = 'NL', -- Neltharion's Lair + [207] = 'VOTW', -- Vault of the Wardens + [208] = 'MOS', -- Maw of Souls + [209] = 'ARC', -- The Arcway + [210] = 'COS', -- Court of Stars + [227] = 'LOWR', -- Return to Karazhan: Lower + [233] = 'COEN', -- Cathedral of Eternal Night + [234] = 'UPPR', -- Return to Karathan: Upper + [239] = 'SEAT', -- Seat of the Triumvirate + [244] = 'AD', -- Atal'Dazar + [245] = 'FH', -- Freehold + [248] = 'WM', -- Waycrest Manor + [251] = 'UNDR', -- The Underrot [353] = 'SIEGE', -- Siege of Boralus - [399] = 'RLP', -- Ruby Life Pools - [400] = 'NO', -- The Nokhud Offensive - [401] = 'AV', -- The Azure Vault - [402] = 'AA', -- Algeth'ar Academy - [403] = 'ULD', -- Uldaman: Legacy of Tyr - [404] = 'NELT', -- Neltharus - [405] = 'BH', -- Brackenhide Hollow - [406] = 'HOI', -- Halls of Infusion - [438] = 'VP', -- The Vortex Pinnacle - [456] = 'TOTT', -- Throne of the Tides - [463] = 'FALL', -- Dawn of the Infinite: Galakrond's Fall - [464] = 'RISE', -- Dawn of the Infinite: Murozond's Rise + [399] = 'RLP', -- Ruby Life Pools + [400] = 'NO', -- The Nokhud Offensive + [401] = 'AV', -- The Azure Vault + [402] = 'AA', -- Algeth'ar Academy + [403] = 'ULD', -- Uldaman: Legacy of Tyr + [404] = 'NELT', -- Neltharus + [405] = 'BH', -- Brackenhide Hollow + [406] = 'HOI', -- Halls of Infusion + [438] = 'VP', -- The Vortex Pinnacle + [456] = 'TOTT', -- Throne of the Tides + [463] = 'FALL', -- Dawn of the Infinite: Galakrond's Fall + [464] = 'RISE', -- Dawn of the Infinite: Murozond's Rise -- PLACEHOLDER: abbreviations - [499] = 'PSF', -- Priory of the Sacred Flame - [500] = 'TR', -- The Rookery - [501] = 'SV', -- The Stonevault - [502] = 'COT', -- City of Threads + [499] = 'PSF', -- Priory of the Sacred Flame + [500] = 'TR', -- The Rookery + [501] = 'SV', -- The Stonevault + [502] = 'COT', -- City of Threads [503] = 'ARAK', -- Ara-Kara, City of Echoes - [504] = 'DFC', -- Darkflame Cleft + [504] = 'DFC', -- Darkflame Cleft [505] = 'DAWN', -- The Dawnbreaker - [506] = 'CIN', -- Cinderbrew Meadery - [507] = 'GB', -- Grim Batol + [506] = 'CIN', -- Cinderbrew Meadery + [507] = 'GB', -- Grim Batol } +-- Timewalking Keystones PermoksAccountManager.activityIDToKeys = { - [459] = 197, -- EOA - [460] = 198, -- DHT - [461] = 200, -- HOV - [462] = 206, -- NL - [463] = 199, -- BRH - [464] = 207, -- VOTW - [465] = 208, -- MOS - [466] = 210, -- COS - [467] = 209, -- ARC - [471] = 227, -- LOWR - [473] = 234, -- UPPR - [476] = 233, -- COEN - [486] = 239, -- SEAT + [459] = 197, -- EOA + [460] = 198, -- DHT + [461] = 200, -- HOV + [462] = 206, -- NL + [463] = 199, -- BRH + [464] = 207, -- VOTW + [465] = 208, -- MOS + [466] = 210, -- COS + [467] = 209, -- ARC + [471] = 227, -- LOWR + [473] = 234, -- UPPR + [476] = 233, -- COEN + [486] = 239, -- SEAT } PermoksAccountManager.raids = { - [2657] = {name = GetRealZoneText(2657), englishID = 'nerub_ar_palace', instanceID = 1273, startIndex = 1, endIndex = 8}, - [2792] = {name = GetRealZoneText(2792), englishID = 'blackrock_depths_raid', instanceID = 1301, startIndex = 1, endIndex = 8}, + [2657] = { name = GetRealZoneText(2657), englishID = 'nerub_ar_palace', instanceID = 1273, startIndex = 1, endIndex = 8 }, + [2792] = { name = GetRealZoneText(2792), englishID = 'blackrock_depths_raid', instanceID = 1301, startIndex = 1, endIndex = 8 }, + [2769] = { name = GetRealZoneText(2769), englishID = 'liberation_of_undermine', instanceID = 1296, startIndex = 1, endIndex = 8 }, } PermoksAccountManager.dungeons = { [1822] = GetRealZoneText(1822), -- Siege of Boralus - [670] = GetRealZoneText(670), -- Grim Batol + [670] = GetRealZoneText(670), -- Grim Batol [2286] = GetRealZoneText(2286), -- The Necrotic Wake [2290] = GetRealZoneText(2290), -- Mists of Tiran Scithe [2652] = GetRealZoneText(2652), -- The Stonevault @@ -477,89 +503,102 @@ PermoksAccountManager.dungeons = { } PermoksAccountManager.item = { - [171276] = {key = 'flask'}, -- Flask - [172045] = {key = 'foodHaste'}, -- Haste Food - [181468] = {key = 'augmentRune'}, -- Rune - [172347] = {key = 'armorKit'}, -- Armor Kit - [171286] = {key = 'oilHeal'}, -- Heal Oil - [171285] = {key = 'oilDPS'}, -- DPS Oil - [171267] = {key = 'potHP'}, -- HP Pot - [172233] = {key = 'drum'}, -- Drum - [171272] = {key = 'potManaInstant'}, -- Mana Pot Instant - [171268] = {key = 'potManaChannel'}, -- Mana Pot Channel - [173049] = {key = 'tome'}, -- Tome - [186017] = {key = 'korthiteCrystal'}, -- Korthite Crystal - [187707] = {key = 'progenitorEssentia'}, -- Progenitor Essentia - [187802] = {key = 'potCosmicHP'}, -- Cosmic HP Pot - [199211] = {key = 'primevalEssence'}, --Primeval Essence - [202196] = {key = 'vaultKey'}, -- Zskera Vault Key - [190453] = {key = 'spark_ingenuity'}, -- Spark of Ingenuity - [199197] = {key = 'spark_ingenuity'}, -- Bottled Essence - [204440] = {key = 'spark_shadowflame'}, -- Spark of Shadowflame - [204717] = {key = 'spark_shadowflame'}, -- Splintered Spark of Shadowflame - [204715] = {key = 'unearthed_fragrant_coin'}, -- Unearthed Fragrant Coin - [204985] = {key = 'barter_brick'}, -- Barter Brick - [206959] = {key = 'spark_dreams'}, -- Spark of Dreams - [208396] = {key = 'spark_dreams'}, -- Splintered Spark of Dreams - [202171] = {key = 'obsidian_flightstone'}, -- Obsidian Flightstone - [207030] = {key = 'dilated_time_capsule'}, -- Dilated Time Capsule - [209856] = {key = 'dilated_time_pod'}, -- Dilated Time Pod - [207026] = {key = 'dreamsurge_coalescence'}, -- Dreamsurge Coalescence - [208153] = {key = 'dreamsurge_chrysalis'}, -- Dreamsurge Chrysalis - [210254] = {key = 'dreamsurge_cocoon'}, -- Dreamsurge Cocoon - [208066] = {key = 'dreamseeds'}, -- Small Dreamseed - [208067] = {key = 'dreamseeds'}, -- Plump Dreamseed - [208047] = {key = 'dreamseeds'}, -- Gigantic Dreamseed - [211515] = {key = 'spark_awakening'}, -- Splintered Spark of Awakening - [211516] = {key = 'spark_awakening'}, -- Spark of Awakening - [190456] = {key = 'artisans_mettle'}, -- Artisan's Mettle + [171276] = { key = 'flask' }, -- Flask + [172045] = { key = 'foodHaste' }, -- Haste Food + [181468] = { key = 'augmentRune' }, -- Rune + [172347] = { key = 'armorKit' }, -- Armor Kit + [171286] = { key = 'oilHeal' }, -- Heal Oil + [171285] = { key = 'oilDPS' }, -- DPS Oil + [171267] = { key = 'potHP' }, -- HP Pot + [172233] = { key = 'drum' }, -- Drum + [171272] = { key = 'potManaInstant' }, -- Mana Pot Instant + [171268] = { key = 'potManaChannel' }, -- Mana Pot Channel + [173049] = { key = 'tome' }, -- Tome + [186017] = { key = 'korthiteCrystal' }, -- Korthite Crystal + [187707] = { key = 'progenitorEssentia' }, -- Progenitor Essentia + [187802] = { key = 'potCosmicHP' }, -- Cosmic HP Pot + [199211] = { key = 'primevalEssence' }, --Primeval Essence + [202196] = { key = 'vaultKey' }, -- Zskera Vault Key + [190453] = { key = 'spark_ingenuity' }, -- Spark of Ingenuity + [199197] = { key = 'spark_ingenuity' }, -- Bottled Essence + [204440] = { key = 'spark_shadowflame' }, -- Spark of Shadowflame + [204717] = { key = 'spark_shadowflame' }, -- Splintered Spark of Shadowflame + [204715] = { key = 'unearthed_fragrant_coin' }, -- Unearthed Fragrant Coin + [204985] = { key = 'barter_brick' }, -- Barter Brick + [206959] = { key = 'spark_dreams' }, -- Spark of Dreams + [208396] = { key = 'spark_dreams' }, -- Splintered Spark of Dreams + [202171] = { key = 'obsidian_flightstone' }, -- Obsidian Flightstone + [207030] = { key = 'dilated_time_capsule' }, -- Dilated Time Capsule + [209856] = { key = 'dilated_time_pod' }, -- Dilated Time Pod + [207026] = { key = 'dreamsurge_coalescence' }, -- Dreamsurge Coalescence + [208153] = { key = 'dreamsurge_chrysalis' }, -- Dreamsurge Chrysalis + [210254] = { key = 'dreamsurge_cocoon' }, -- Dreamsurge Cocoon + [208066] = { key = 'dreamseeds' }, -- Small Dreamseed + [208067] = { key = 'dreamseeds' }, -- Plump Dreamseed + [208047] = { key = 'dreamseeds' }, -- Gigantic Dreamseed + [211515] = { key = 'spark_awakening' }, -- Splintered Spark of Awakening + [211516] = { key = 'spark_awakening' }, -- Spark of Awakening + [190456] = { key = 'artisans_mettle' }, -- Artisan's Mettle --- TWW items - [211297] = {key = 'spark_omens'}, -- Fractured Spark of Omens - [211296] = {key = 'spark_omens'}, -- Spark of Omens - [210814] = {key = 'artisans_acuity'}, -- Artisan's Acuity - [206350] = {key = 'radiant_remnant'}, -- Radiant Remnant - [220520] = {key = 'radiant_echo'}, -- Radiant Echo - [212493] = {key = 'firelight_ruby'}, -- Odd Glob of Wax - [224642] = {key = 'firelight_ruby'}, -- Firelight Ruby - [229899] = {key = 'coffer_key_shard'}, -- Coffer Key Shard - [231510] = {key = 'timewarped_relic_coffer_key'}, -- Timewarped Relic Coffer Key LFR - [232365] = {key = 'timewarped_relic_coffer_key'}, -- Timewarped Relic Coffer Key Normal - [232366] = {key = 'timewarped_relic_coffer_key'}, -- Timewarped Relic Coffer Key Heroic + [211297] = { key = 'spark_omens' }, -- Fractured Spark of Omens + [211296] = { key = 'spark_omens' }, -- Spark of Omens + [210814] = { key = 'artisans_acuity' }, -- Artisan's Acuity + [206350] = { key = 'radiant_remnant' }, -- Radiant Remnant + [220520] = { key = 'radiant_echo' }, -- Radiant Echo + [212493] = { key = 'firelight_ruby' }, -- Odd Glob of Wax + [224642] = { key = 'firelight_ruby' }, -- Firelight Ruby + [229899] = { key = 'coffer_key_shard' }, -- Coffer Key Shard + [231510] = { key = 'timewarped_relic_coffer_key' }, -- Timewarped Relic Coffer Key LFR + [232365] = { key = 'timewarped_relic_coffer_key' }, -- Timewarped Relic Coffer Key Normal + [232366] = { key = 'timewarped_relic_coffer_key' }, -- Timewarped Relic Coffer Key Heroic + + -- 11.1 + [230905] = { key = 'spark_current' }, -- Fractured Spark of Fortunes + [230906] = { key = 'spark_current' }, -- Spark of Fortunes } PermoksAccountManager.factions = { - [2432] = {name = "Ve'nari", paragon = true, type = 'friend'}, - [2472] = {name = "The Archivists' Codex", paragon = true, type = 'friend'}, - [2407] = {name = 'The Ascended', paragon = true}, - [2465] = {name = 'The Wild Hunt', paragon = true}, - [2410] = {name = 'The Undying Army', paragon = true}, - [2413] = {name = 'Court of Harvesters', paragon = true}, - [2470] = {name = "Death's Advance", paragon = true}, - [2478] = {name = 'The Enlightened', paragon = true}, - [2480] = {name = 'Automa', paragon = true}, - [2503] = {name = 'Maruuk Centaur', paragon = true, type = 'renown', warband = 'unique'}, - [2507] = {name = 'Dragonscale Expedition', paragon = true, type = 'renown', warband = 'unique'}, - [2510] = {name = 'Valdrakken Akkord', paragon = true, type = 'renown', warband = 'unique'}, - [2511] = {name = 'Iskaara Tuskar', paragon = true, type = 'renown', warband = 'unique'}, - [2517] = {name = 'Wrathion', paragon = true, type = 'friend', warband = 'unique'}, - [2518] = {name = 'Sabellian', paragon = true, type = 'friend', warband = 'unique'}, - [2526] = {name = 'Winterpelt Furbolg', paragon = true}, - [2544] = {name = 'Artisan\'s Consortium', paragon = true, type = 'friend', warband = 'unique'}, - [2550] = {name = 'Cobalt Assembly', paragon = true, type = 'friend', warband = 'unique'}, - [2553] = {name = 'Soridormi', paragon = true, type = 'friend', warband = 'unique'}, - [2564] = {name = 'Loamm Niffen', paragon = true, type = 'renown', warband = 'unique'}, - [2568] = {name = 'Glimmerogg Racer'}, - [2574] = {name = 'Dream Wardens', paragon = true, type = 'renown', warband = 'unique'}, - [2593] = {name = 'Keg Leg\'s Crew', type = 'renown', warband = 'unique'}, - [2590] = {name = 'Council of Dornogal', paragon = true, type = 'renown', warband = 'unique'}, - [2570] = {name = 'Hallowfall Arathi', paragon = true, type = 'renown', warband = 'unique'}, - [2594] = {name = 'The Assembly of the Deeps', paragon = true, type = 'renown', warband = 'unique'}, - [2600] = {name = 'The Severed Threads', paragon = true, type = 'renown', warband = 'unique'}, - [2605] = {name = 'The General',paragon = true, type = 'friend', warband = 'unique'}, - [2607] = {name = 'The Vizier',paragon = true, type = 'friend', warband = 'unique'}, - [2601] = {name = 'The Weaver',paragon = true, type = 'friend', warband = 'unique'}, - [2640] = {name = 'Brann Bronzebeard', type = 'friend', warband = 'unique'}, + [2432] = { name = "Ve'nari", paragon = true, type = 'friend' }, + [2472] = { name = "The Archivists' Codex", paragon = true, type = 'friend' }, + [2407] = { name = 'The Ascended', paragon = true }, + [2465] = { name = 'The Wild Hunt', paragon = true }, + [2410] = { name = 'The Undying Army', paragon = true }, + [2413] = { name = 'Court of Harvesters', paragon = true }, + [2470] = { name = "Death's Advance", paragon = true }, + [2478] = { name = 'The Enlightened', paragon = true }, + [2480] = { name = 'Automa', paragon = true }, + [2503] = { name = 'Maruuk Centaur', paragon = true, type = 'renown', warband = 'unique' }, + [2507] = { name = 'Dragonscale Expedition', paragon = true, type = 'renown', warband = 'unique' }, + [2510] = { name = 'Valdrakken Akkord', paragon = true, type = 'renown', warband = 'unique' }, + [2511] = { name = 'Iskaara Tuskar', paragon = true, type = 'renown', warband = 'unique' }, + [2517] = { name = 'Wrathion', paragon = true, type = 'friend', warband = 'unique' }, + [2518] = { name = 'Sabellian', paragon = true, type = 'friend', warband = 'unique' }, + [2526] = { name = 'Winterpelt Furbolg', paragon = true }, + [2544] = { name = 'Artisan\'s Consortium', paragon = true, type = 'friend', warband = 'unique' }, + [2550] = { name = 'Cobalt Assembly', paragon = true, type = 'friend', warband = 'unique' }, + [2553] = { name = 'Soridormi', paragon = true, type = 'friend', warband = 'unique' }, + [2564] = { name = 'Loamm Niffen', paragon = true, type = 'renown', warband = 'unique' }, + [2568] = { name = 'Glimmerogg Racer' }, + [2574] = { name = 'Dream Wardens', paragon = true, type = 'renown', warband = 'unique' }, + [2593] = { name = 'Keg Leg\'s Crew', type = 'renown', warband = 'unique' }, + [2590] = { name = 'Council of Dornogal', paragon = true, type = 'renown', warband = 'unique' }, + [2570] = { name = 'Hallowfall Arathi', paragon = true, type = 'renown', warband = 'unique' }, + [2594] = { name = 'The Assembly of the Deeps', paragon = true, type = 'renown', warband = 'unique' }, + [2600] = { name = 'The Severed Threads', paragon = true, type = 'renown', warband = 'unique' }, + [2605] = { name = 'The General', paragon = true, type = 'friend', warband = 'unique' }, + [2607] = { name = 'The Vizier', paragon = true, type = 'friend', warband = 'unique' }, + [2601] = { name = 'The Weaver', paragon = true, type = 'friend', warband = 'unique' }, + [2640] = { name = 'Brann Bronzebeard', type = 'friend', warband = 'unique' }, + + -- 11.1 + [2653] = { name = 'The Cartels of Undermine', paragon = true, type = 'renown', warband = 'unique' }, + [2669] = { name = 'Darkfuse Solutions', paragon = true, type = 'renown', warband = 'unique' }, + [2671] = { name = 'Venture Company', paragon = true, warband = 'unique' }, + [2673] = { name = 'Bilgewater Cartel', paragon = true, warband = 'unique' }, + [2675] = { name = 'Blackwater Cartel', paragon = true, warband = 'unique' }, + [2677] = { name = 'Steamwheedle Cartel', paragon = true, warband = 'unique' }, + [2685] = { name = 'Gallagio Loyalty Rewards Club', paragon = true, type = 'renown', warband = 'unique' }, } PermoksAccountManager.currency = { @@ -609,17 +648,27 @@ PermoksAccountManager.currency = { [3028] = 0, -- Restored Coffer Key [2803] = 0, -- Undercoin + [3107] = 0, -- Weathered Undermine Crest + [3108] = 0, -- Carved Undermine Crest + [3109] = 0, -- Runed Undermine Crest + [3110] = 0, -- Gilded Undermine Crest + [3116] = 0, -- Essence of Kaja'mite (Catalyst Charges TWW Season 2) + + [3132] = 0, -- Spark Drops + [3218] = 0, -- Empty Kaja'Cola Can + [3220] = 0, -- Vintage Kaja'Cola Can + [3100] = 0, -- Bronze Celebration Token [1166] = 0, -- Timewarped Badge } PermoksAccountManager.currencyCustomOptions = { - [2166] = {currencyUpdate = 2167}, - [2533] = {forceUpdate = true}, - [2709] = {forceUpdate = true}, - [2707] = {forceUpdate = true}, - [2706] = {forceUpdate = true}, - [2708] = {forceUpdate = true}, + [2166] = { currencyUpdate = 2167 }, + [2533] = { forceUpdate = true }, + [2709] = { forceUpdate = true }, + [2707] = { forceUpdate = true }, + [2706] = { forceUpdate = true }, + [2708] = { forceUpdate = true }, } PermoksAccountManager.research = { @@ -628,63 +677,63 @@ PermoksAccountManager.research = { } PermoksAccountManager.professionCDs = { - [L['Tailoring']] = { - cds = { + [L['Tailoring']] = { + cds = { [376556] = true, -- Azureweave Bolt - [376557] = true, -- Chronocloth Bolt - }, - }, - [L['Alchemy']] = { - }, - [L['Leatherworking']] = { - }, - [L['Enchanting']] = { - }, - [L['Engineering']] = { - }, - [L['Blacksmithing']] = { - }, - [L['Herbalism']] = { - }, - [L['Mining']] = { - }, - [L['Skinning']] = { - }, - [L['Jewelcrafting']] = { - } + [376557] = true, -- Chronocloth Bolt + }, + }, + [L['Alchemy']] = { + }, + [L['Leatherworking']] = { + }, + [L['Enchanting']] = { + }, + [L['Engineering']] = { + }, + [L['Blacksmithing']] = { + }, + [L['Herbalism']] = { + }, + [L['Mining']] = { + }, + [L['Skinning']] = { + }, + [L['Jewelcrafting']] = { + } } -- key is the SkillLineID of the parentProfession PermoksAccountManager.childProfessions = { df_profession = { - [164] = {spellID = 365677, skillLineID = 2822}, -- Blacksmithing - [165] = {spellID = 366249, skillLineID = 2830}, -- Leatherworking - [171] = {spellID = 366261, skillLineID = 2823}, -- Alchemy - [182] = {spellID = 366252, skillLineID = 2832}, -- Herbalism - [185] = {spellID = 366256, skillLineID = 2824}, -- Cooking - [186] = {spellID = 366260, skillLineID = 2833}, -- Mining - [197] = {spellID = 366258, skillLineID = 2831}, -- Tailoring - [202] = {spellID = 366254, skillLineID = 2827}, -- Engineering - [333] = {spellID = 366255, skillLineID = 2825}, -- Enchanting - [356] = {spellID = 366253, skillLineID = 2826}, -- Fishing - [393] = {spellID = 366259, skillLineID = 2834}, -- Skinning - [755] = {spellID = 366250, skillLineID = 2829}, -- Jewelcrafting - [773] = {spellID = 366251, skillLineID = 2828}, -- Inscription + [164] = { spellID = 365677, skillLineID = 2822 }, -- Blacksmithing + [165] = { spellID = 366249, skillLineID = 2830 }, -- Leatherworking + [171] = { spellID = 366261, skillLineID = 2823 }, -- Alchemy + [182] = { spellID = 366252, skillLineID = 2832 }, -- Herbalism + [185] = { spellID = 366256, skillLineID = 2824 }, -- Cooking + [186] = { spellID = 366260, skillLineID = 2833 }, -- Mining + [197] = { spellID = 366258, skillLineID = 2831 }, -- Tailoring + [202] = { spellID = 366254, skillLineID = 2827 }, -- Engineering + [333] = { spellID = 366255, skillLineID = 2825 }, -- Enchanting + [356] = { spellID = 366253, skillLineID = 2826 }, -- Fishing + [393] = { spellID = 366259, skillLineID = 2834 }, -- Skinning + [755] = { spellID = 366250, skillLineID = 2829 }, -- Jewelcrafting + [773] = { spellID = 366251, skillLineID = 2828 }, -- Inscription }, tww_profession = { - [164] = {spellID = 423332, skillLineID = 2872}, -- Blacksmithing - [165] = {spellID = 423340, skillLineID = 2880}, -- Leatherworking - [171] = {spellID = 423321, skillLineID = 2871}, -- Alchemy - [182] = {spellID = 441327, skillLineID = 2877}, -- Herbalism - [185] = {spellID = 423333, skillLineID = 2873}, -- Cooking - [186] = {spellID = 423341, skillLineID = 2881}, -- Mining - [197] = {spellID = 423343, skillLineID = 2883}, -- Tailoring - [202] = {spellID = 423335, skillLineID = 2875}, -- Engineering - [333] = {spellID = 423334, skillLineID = 2874}, -- Enchanting - [356] = {spellID = 423336, skillLineID = 2876}, -- Fishing - [393] = {spellID = 423342, skillLineID = 2882}, -- Skinning - [755] = {spellID = 423339, skillLineID = 2879}, -- Jewelcrafting - [773] = {spellID = 423338, skillLineID = 2878}, -- Inscription + [164] = { spellID = 423332, skillLineID = 2872 }, -- Blacksmithing + [165] = { spellID = 423340, skillLineID = 2880 }, -- Leatherworking + [171] = { spellID = 423321, skillLineID = 2871 }, -- Alchemy + [182] = { spellID = 441327, skillLineID = 2877 }, -- Herbalism + [185] = { spellID = 423333, skillLineID = 2873 }, -- Cooking + [186] = { spellID = 423341, skillLineID = 2881 }, -- Mining + [197] = { spellID = 423343, skillLineID = 2883 }, -- Tailoring + [202] = { spellID = 423335, skillLineID = 2875 }, -- Engineering + [333] = { spellID = 423334, skillLineID = 2874 }, -- Enchanting + [356] = { spellID = 423336, skillLineID = 2876 }, -- Fishing + [393] = { spellID = 423342, skillLineID = 2882 }, -- Skinning + [755] = { spellID = 423339, skillLineID = 2879 }, -- Jewelcrafting + [773] = { spellID = 423338, skillLineID = 2878 }, -- Inscription }, } @@ -692,1150 +741,1171 @@ PermoksAccountManager.quests = { -- General Weeklies (previous expansion quests get deprecated so we replace these IDs instead of adding new ones) weekend_event = { - [83345] = {questType = 'weekly', log = true}, -- Battleground Event: A Call to Battle - [83347] = {questType = 'weekly', log = true}, -- Mythic Dungeon Event: Emissary of War - [83357] = {questType = 'weekly', log = true}, -- Pet Battle Event: The Very Best - [83358] = {questType = 'weekly', log = true}, -- Arena Event: The Arena Calls - [83366] = {questType = 'weekly', log = true}, -- World Quests: The World Awaits - [83359] = {questType = 'weekly', log = true}, -- A Shattered Path Through Time - [83362] = {questType = 'weekly', log = true}, -- A Shrouded Path Through Time - [83365] = {questType = 'weekly', log = true}, -- A Frozen Path Through Time - [83364] = {questType = 'weekly', log = true}, -- A Savage Path Through Time + [83345] = { questType = 'weekly', log = true }, -- Battleground Event: A Call to Battle + [83347] = { questType = 'weekly', log = true }, -- Mythic Dungeon Event: Emissary of War + [83357] = { questType = 'weekly', log = true }, -- Pet Battle Event: The Very Best + [83358] = { questType = 'weekly', log = true }, -- Arena Event: The Arena Calls + [83366] = { questType = 'weekly', log = true }, -- World Quests: The World Awaits + [83359] = { questType = 'weekly', log = true }, -- A Shattered Path Through Time + [83362] = { questType = 'weekly', log = true }, -- A Shrouded Path Through Time + [83365] = { questType = 'weekly', log = true }, -- A Frozen Path Through Time + [83364] = { questType = 'weekly', log = true }, -- A Savage Path Through Time }, pvp_weekly = { - [80184] = {questType = 'weekly', log = true}, -- Preserving in Battle - [80185] = {questType = 'weekly', log = true}, -- Preserving Solo - [80186] = {questType = 'weekly', log = true}, -- Preserving in War - [80187] = {questType = 'weekly', log = true}, -- Preserving in Skirmishes - [80188] = {questType = 'weekly', log = true}, -- Preserving in Arenas - [80189] = {questType = 'weekly', log = true}, -- Preserving Teamwork + [80184] = { questType = 'weekly', log = true }, -- Preserving in Battle + [80185] = { questType = 'weekly', log = true }, -- Preserving Solo + [80186] = { questType = 'weekly', log = true }, -- Preserving in War + [80187] = { questType = 'weekly', log = true }, -- Preserving in Skirmishes + [80188] = { questType = 'weekly', log = true }, -- Preserving in Arenas + [80189] = { questType = 'weekly', log = true }, -- Preserving Teamwork }, pvp_sparks = { - [81793] = {questType = 'weekly', log = true}, -- Sparks of War: Isle of Dorn - [81794] = {questType = 'weekly', log = true}, -- Sparks of War: The Ringing Deeps - [81795] = {questType = 'weekly', log = true}, -- Sparks of War: Hallowfall - [81796] = {questType = 'weekly', log = true}, -- Sparks of War: Azj-Kahet + [81793] = { questType = 'weekly', log = true }, -- Sparks of War: Isle of Dorn + [81794] = { questType = 'weekly', log = true }, -- Sparks of War: The Ringing Deeps + [81795] = { questType = 'weekly', log = true }, -- Sparks of War: Hallowfall + [81796] = { questType = 'weekly', log = true }, -- Sparks of War: Azj-Kahet }, dungeon_weekly = { - [83432] = {questType = 'weekly', warband = true, log = true}, -- The Rookery - [83436] = {questType = 'weekly', warband = true, log = true}, -- Cinderbrew Meadery - [83443] = {questType = 'weekly', warband = true, log = true}, -- Darkflame Cleft - [83457] = {questType = 'weekly', warband = true, log = true}, -- The Stonevault - [83458] = {questType = 'weekly', warband = true, log = true}, -- Priory of the Sacred Flame - [83459] = {questType = 'weekly', warband = true, log = true}, -- The Dawnbreaker - [83465] = {questType = 'weekly', warband = true, log = true}, -- Ara-Kara, City of Echoes - [83469] = {questType = 'weekly', warband = true, log = true}, -- City of Threads + [83432] = { questType = 'weekly', warband = true, log = true }, -- The Rookery + [83436] = { questType = 'weekly', warband = true, log = true }, -- Cinderbrew Meadery + [83443] = { questType = 'weekly', warband = true, log = true }, -- Darkflame Cleft + [83457] = { questType = 'weekly', warband = true, log = true }, -- The Stonevault + [83458] = { questType = 'weekly', warband = true, log = true }, -- Priory of the Sacred Flame + [83459] = { questType = 'weekly', warband = true, log = true }, -- The Dawnbreaker + [83465] = { questType = 'weekly', warband = true, log = true }, -- Ara-Kara, City of Echoes + [83469] = { questType = 'weekly', warband = true, log = true }, -- City of Threads }, -- 9.0 Shadowlands maw_dailies = { - [60732] = {questType = 'daily', log = true}, - [61334] = {questType = 'daily', log = true}, - [62239] = {questType = 'daily', log = true}, - [63031] = {questType = 'daily', log = true}, - [63038] = {questType = 'daily', log = true}, - [63039] = {questType = 'daily', log = true}, - [63040] = {questType = 'daily', log = true}, - [63043] = {questType = 'daily', log = true}, - [63045] = {questType = 'daily', log = true}, - [63047] = {questType = 'daily', log = true}, - [63050] = {questType = 'daily', log = true}, - [63062] = {questType = 'daily', log = true}, - [63069] = {questType = 'daily', log = true}, - [63072] = {questType = 'daily', log = true}, - [63100] = {questType = 'daily', log = true}, - [63179] = {questType = 'daily', log = true}, - [60622] = {questType = 'weekly', log = true}, - [60646] = {questType = 'weekly', log = true}, - [60762] = {questType = 'weekly', log = true}, - [60775] = {questType = 'weekly', log = true}, - [60902] = {questType = 'weekly', log = true}, - [61075] = {questType = 'weekly', log = true}, - [61079] = {questType = 'weekly', log = true}, - [61088] = {questType = 'weekly', log = true}, - [61103] = {questType = 'weekly', log = true}, - [61104] = {questType = 'weekly', log = true}, - [61765] = {questType = 'weekly', log = true}, - [62214] = {questType = 'weekly', log = true}, - [62234] = {questType = 'weekly', log = true}, - [63206] = {questType = 'weekly', log = true} + [60732] = { questType = 'daily', log = true }, + [61334] = { questType = 'daily', log = true }, + [62239] = { questType = 'daily', log = true }, + [63031] = { questType = 'daily', log = true }, + [63038] = { questType = 'daily', log = true }, + [63039] = { questType = 'daily', log = true }, + [63040] = { questType = 'daily', log = true }, + [63043] = { questType = 'daily', log = true }, + [63045] = { questType = 'daily', log = true }, + [63047] = { questType = 'daily', log = true }, + [63050] = { questType = 'daily', log = true }, + [63062] = { questType = 'daily', log = true }, + [63069] = { questType = 'daily', log = true }, + [63072] = { questType = 'daily', log = true }, + [63100] = { questType = 'daily', log = true }, + [63179] = { questType = 'daily', log = true }, + [60622] = { questType = 'weekly', log = true }, + [60646] = { questType = 'weekly', log = true }, + [60762] = { questType = 'weekly', log = true }, + [60775] = { questType = 'weekly', log = true }, + [60902] = { questType = 'weekly', log = true }, + [61075] = { questType = 'weekly', log = true }, + [61079] = { questType = 'weekly', log = true }, + [61088] = { questType = 'weekly', log = true }, + [61103] = { questType = 'weekly', log = true }, + [61104] = { questType = 'weekly', log = true }, + [61765] = { questType = 'weekly', log = true }, + [62214] = { questType = 'weekly', log = true }, + [62234] = { questType = 'weekly', log = true }, + [63206] = { questType = 'weekly', log = true } }, transport_network = { -- Kyrian -- Venthyr -- Night Fae - [62614] = {covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true}, - [62615] = {covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true}, - [62611] = {covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true}, - [62610] = {covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true}, - [62606] = {covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true}, - [62608] = {covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true}, - [60175] = {covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true}, - [62607] = {covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true}, - [62453] = {covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true}, - [62296] = {covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true}, - [60153] = {covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true}, - [62382] = {covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true}, - [62263] = {covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true}, - [62459] = {covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true}, - [62466] = {covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true}, - [60188] = {covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true}, - [62465] = {covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true} + [62614] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, + [62615] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, + [62611] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, + [62610] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, + [62606] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, + [62608] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, + [60175] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, + [62607] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, + [62453] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true }, + [62296] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true }, + [60153] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true }, + [62382] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true }, + [62263] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true }, + [62459] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true }, + [62466] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true }, + [60188] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true }, + [62465] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true } }, korthia_dailies = { - [63775] = {questType = 'daily', log = true}, - [63776] = {questType = 'daily', log = true}, - [63777] = {questType = 'daily', log = true}, - [63778] = {questType = 'daily', log = true}, - [63779] = {questType = 'daily', log = true}, - [63780] = {questType = 'daily', log = true}, - [63781] = {questType = 'daily', log = true}, - [63782] = {questType = 'daily', log = true}, - [63783] = {questType = 'daily', log = true}, - [63784] = {questType = 'daily', log = true}, - [63785] = {questType = 'daily', log = true}, - [63786] = {questType = 'daily', log = true}, - [63787] = {questType = 'daily', log = true}, - [63788] = {questType = 'daily', log = true}, - [63789] = {questType = 'daily', log = true}, - [63790] = {questType = 'daily', log = true}, - [63791] = {questType = 'daily', log = true}, - [63792] = {questType = 'daily', log = true}, - [63793] = {questType = 'daily', log = true}, - [63794] = {questType = 'daily', log = true}, - [63934] = {questType = 'daily', log = true}, - [63935] = {questType = 'daily', log = true}, - [63936] = {questType = 'daily', log = true}, - [63937] = {questType = 'daily', log = true}, - [63950] = {questType = 'daily', log = true}, - [63954] = {questType = 'daily', log = true}, - [63955] = {questType = 'daily', log = true}, - [63956] = {questType = 'daily', log = true}, - [63957] = {questType = 'daily', log = true}, - [63958] = {questType = 'daily', log = true}, - [63959] = {questType = 'daily', log = true}, - [63960] = {questType = 'daily', log = true}, - [63961] = {questType = 'daily', log = true}, - [63962] = {questType = 'daily', log = true}, - [63963] = {questType = 'daily', log = true}, - [63964] = {questType = 'daily', log = true}, - [63965] = {questType = 'daily', log = true}, - [63989] = {questType = 'daily', log = true}, - [64015] = {questType = 'daily', log = true}, - [64016] = {questType = 'daily', log = true}, - [64017] = {questType = 'daily', log = true}, - [64043] = {questType = 'daily', log = true}, - [64065] = {questType = 'daily', log = true}, - [64070] = {questType = 'daily', log = true}, - [64080] = {questType = 'daily', log = true}, - [64089] = {questType = 'daily', log = true}, - [64101] = {questType = 'daily', log = true}, - [64103] = {questType = 'daily', log = true}, - [64104] = {questType = 'daily', log = true}, - [64129] = {questType = 'daily', log = true}, - [64166] = {questType = 'daily', log = true}, - [64194] = {questType = 'daily', log = true}, - [64432] = {questType = 'daily', log = true} + [63775] = { questType = 'daily', log = true }, + [63776] = { questType = 'daily', log = true }, + [63777] = { questType = 'daily', log = true }, + [63778] = { questType = 'daily', log = true }, + [63779] = { questType = 'daily', log = true }, + [63780] = { questType = 'daily', log = true }, + [63781] = { questType = 'daily', log = true }, + [63782] = { questType = 'daily', log = true }, + [63783] = { questType = 'daily', log = true }, + [63784] = { questType = 'daily', log = true }, + [63785] = { questType = 'daily', log = true }, + [63786] = { questType = 'daily', log = true }, + [63787] = { questType = 'daily', log = true }, + [63788] = { questType = 'daily', log = true }, + [63789] = { questType = 'daily', log = true }, + [63790] = { questType = 'daily', log = true }, + [63791] = { questType = 'daily', log = true }, + [63792] = { questType = 'daily', log = true }, + [63793] = { questType = 'daily', log = true }, + [63794] = { questType = 'daily', log = true }, + [63934] = { questType = 'daily', log = true }, + [63935] = { questType = 'daily', log = true }, + [63936] = { questType = 'daily', log = true }, + [63937] = { questType = 'daily', log = true }, + [63950] = { questType = 'daily', log = true }, + [63954] = { questType = 'daily', log = true }, + [63955] = { questType = 'daily', log = true }, + [63956] = { questType = 'daily', log = true }, + [63957] = { questType = 'daily', log = true }, + [63958] = { questType = 'daily', log = true }, + [63959] = { questType = 'daily', log = true }, + [63960] = { questType = 'daily', log = true }, + [63961] = { questType = 'daily', log = true }, + [63962] = { questType = 'daily', log = true }, + [63963] = { questType = 'daily', log = true }, + [63964] = { questType = 'daily', log = true }, + [63965] = { questType = 'daily', log = true }, + [63989] = { questType = 'daily', log = true }, + [64015] = { questType = 'daily', log = true }, + [64016] = { questType = 'daily', log = true }, + [64017] = { questType = 'daily', log = true }, + [64043] = { questType = 'daily', log = true }, + [64065] = { questType = 'daily', log = true }, + [64070] = { questType = 'daily', log = true }, + [64080] = { questType = 'daily', log = true }, + [64089] = { questType = 'daily', log = true }, + [64101] = { questType = 'daily', log = true }, + [64103] = { questType = 'daily', log = true }, + [64104] = { questType = 'daily', log = true }, + [64129] = { questType = 'daily', log = true }, + [64166] = { questType = 'daily', log = true }, + [64194] = { questType = 'daily', log = true }, + [64432] = { questType = 'daily', log = true } }, zereth_mortis_dailies = { - [64579] = {questType = 'daily', log = true}, - [64592] = {questType = 'daily', log = true}, - [64717] = {questType = 'daily', log = true}, - [64785] = {questType = 'daily', log = true}, - [64854] = {questType = 'daily', log = true}, - [64964] = {questType = 'daily', log = true}, - [64977] = {questType = 'daily', log = true}, - [65033] = {questType = 'daily', log = true}, - [65072] = {questType = 'daily', log = true}, - [65096] = {questType = 'daily', log = true}, - [65142] = {questType = 'daily', log = true}, - [65177] = {questType = 'daily', log = true}, - [65226] = {questType = 'daily', log = true}, - [65255] = {questType = 'daily', log = true}, - [65256] = {questType = 'daily', log = true}, - [65264] = {questType = 'daily', log = true}, - [65265] = {questType = 'daily', log = true}, - [65268] = {questType = 'daily', log = true}, - [65269] = {questType = 'daily', log = true}, - [65325] = {questType = 'daily', log = true}, - [65326] = {questType = 'daily', log = true}, - [65362] = {questType = 'daily', log = true}, - [65363] = {questType = 'daily', log = true}, - [65364] = {questType = 'daily', log = true}, - [65445] = {questType = 'daily', log = true} + [64579] = { questType = 'daily', log = true }, + [64592] = { questType = 'daily', log = true }, + [64717] = { questType = 'daily', log = true }, + [64785] = { questType = 'daily', log = true }, + [64854] = { questType = 'daily', log = true }, + [64964] = { questType = 'daily', log = true }, + [64977] = { questType = 'daily', log = true }, + [65033] = { questType = 'daily', log = true }, + [65072] = { questType = 'daily', log = true }, + [65096] = { questType = 'daily', log = true }, + [65142] = { questType = 'daily', log = true }, + [65177] = { questType = 'daily', log = true }, + [65226] = { questType = 'daily', log = true }, + [65255] = { questType = 'daily', log = true }, + [65256] = { questType = 'daily', log = true }, + [65264] = { questType = 'daily', log = true }, + [65265] = { questType = 'daily', log = true }, + [65268] = { questType = 'daily', log = true }, + [65269] = { questType = 'daily', log = true }, + [65325] = { questType = 'daily', log = true }, + [65326] = { questType = 'daily', log = true }, + [65362] = { questType = 'daily', log = true }, + [65363] = { questType = 'daily', log = true }, + [65364] = { questType = 'daily', log = true }, + [65445] = { questType = 'daily', log = true } }, zereth_mortis_wqs = { - [64960] = {questType = 'daily'}, - [64974] = {questType = 'daily'}, - [65081] = {questType = 'daily'}, - [65089] = {questType = 'daily'}, - [65102] = {questType = 'daily'}, - [65115] = {questType = 'daily'}, - [65117] = {questType = 'daily'}, - [65119] = {questType = 'daily'}, - [65232] = {questType = 'daily'}, - [65234] = {questType = 'daily'}, - [65230] = {questType = 'daily'}, - [65244] = {questType = 'daily'}, - [65252] = {questType = 'daily'}, - [65262] = {questType = 'daily'}, - [65402] = {questType = 'daily'}, - [65403] = {questType = 'daily'}, - [65405] = {questType = 'daily'}, - [65406] = {questType = 'daily'}, - [65407] = {questType = 'daily'}, - [65408] = {questType = 'daily'}, - [65409] = {questType = 'daily'}, - [65410] = {questType = 'daily'}, - [65411] = {questType = 'daily'}, - [65412] = {questType = 'daily'}, - [65413] = {questType = 'daily'}, - [65414] = {questType = 'daily'}, - [65415] = {questType = 'daily'}, - [65416] = {questType = 'daily'}, - [65417] = {questType = 'daily'} + [64960] = { questType = 'daily' }, + [64974] = { questType = 'daily' }, + [65081] = { questType = 'daily' }, + [65089] = { questType = 'daily' }, + [65102] = { questType = 'daily' }, + [65115] = { questType = 'daily' }, + [65117] = { questType = 'daily' }, + [65119] = { questType = 'daily' }, + [65232] = { questType = 'daily' }, + [65234] = { questType = 'daily' }, + [65230] = { questType = 'daily' }, + [65244] = { questType = 'daily' }, + [65252] = { questType = 'daily' }, + [65262] = { questType = 'daily' }, + [65402] = { questType = 'daily' }, + [65403] = { questType = 'daily' }, + [65405] = { questType = 'daily' }, + [65406] = { questType = 'daily' }, + [65407] = { questType = 'daily' }, + [65408] = { questType = 'daily' }, + [65409] = { questType = 'daily' }, + [65410] = { questType = 'daily' }, + [65411] = { questType = 'daily' }, + [65412] = { questType = 'daily' }, + [65413] = { questType = 'daily' }, + [65414] = { questType = 'daily' }, + [65415] = { questType = 'daily' }, + [65416] = { questType = 'daily' }, + [65417] = { questType = 'daily' } }, conductor = { - [61691] = {covenant = 3, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily'}, -- Large Lunarlight Pod - [61633] = {covenant = 3, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily'}, -- Dreamsong Fenn + [61691] = { covenant = 3, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' }, -- Large Lunarlight Pod + [61633] = { covenant = 3, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' }, -- Dreamsong Fenn -- Necrolords - [58872] = {covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily'}, -- Gieger - [61647] = {covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily'} -- Chosen Runecoffer + [58872] = { covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' }, -- Gieger + [61647] = { covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' } -- Chosen Runecoffer }, riftbound_cache = { - [64456] = {questType = 'daily'}, - [64470] = {questType = 'daily'}, - [64471] = {questType = 'daily'}, - [64472] = {questType = 'daily'} + [64456] = { questType = 'daily' }, + [64470] = { questType = 'daily' }, + [64471] = { questType = 'daily' }, + [64472] = { questType = 'daily' } }, relic_creatures = { - [64341] = {questType = 'daily'}, - [64342] = {questType = 'daily'}, - [64343] = {questType = 'daily'}, - [64344] = {questType = 'daily'}, - [64747] = {questType = 'daily'}, - [64748] = {questType = 'daily'}, - [64749] = {questType = 'daily'}, - [64750] = {questType = 'daily'}, - [64751] = {questType = 'daily'}, - [64752] = {questType = 'daily'}, - [64753] = {questType = 'daily'}, - [64754] = {questType = 'daily'}, - [64755] = {questType = 'daily'}, - [64756] = {questType = 'daily'}, - [64757] = {questType = 'daily'} + [64341] = { questType = 'daily' }, + [64342] = { questType = 'daily' }, + [64343] = { questType = 'daily' }, + [64344] = { questType = 'daily' }, + [64747] = { questType = 'daily' }, + [64748] = { questType = 'daily' }, + [64749] = { questType = 'daily' }, + [64750] = { questType = 'daily' }, + [64751] = { questType = 'daily' }, + [64752] = { questType = 'daily' }, + [64753] = { questType = 'daily' }, + [64754] = { questType = 'daily' }, + [64755] = { questType = 'daily' }, + [64756] = { questType = 'daily' }, + [64757] = { questType = 'daily' } }, helsworn_chest = { - [64256] = {questType = 'daily'} + [64256] = { questType = 'daily' } }, relic_gorger = { - [64433] = {questType = 'daily'}, - [64434] = {questType = 'daily'}, - [64435] = {questType = 'daily'}, - [64436] = {questType = 'daily'} + [64433] = { questType = 'daily' }, + [64434] = { questType = 'daily' }, + [64435] = { questType = 'daily' }, + [64436] = { questType = 'daily' } }, jiro_cyphers = { - [65144] = {questType = 'daily'}, -- Creatii - [65166] = {questType = 'daily'}, -- Genesii - [65167] = {questType = 'daily'} -- Nascii + [65144] = { questType = 'daily' }, -- Creatii + [65166] = { questType = 'daily' }, -- Genesii + [65167] = { questType = 'daily' } -- Nascii }, maw_souls = { - [61332] = {covenant = 1, questType = 'weekly', log = true}, -- kyrian 5 souls - [62861] = {covenant = 1, questType = 'weekly', log = true}, -- kyrian 10 souls - [62862] = {covenant = 1, questType = 'weekly', log = true}, -- kyrian 15 souls - [62863] = {covenant = 1, questType = 'weekly', log = true}, -- kyrian 20 souls - [61334] = {covenant = 2, questType = 'weekly', log = true}, -- venthyr 5 souls - [62867] = {covenant = 2, questType = 'weekly', log = true}, -- venthyr 10 souls - [62868] = {covenant = 2, questType = 'weekly', log = true}, -- venthyr 15 souls - [62869] = {covenant = 2, questType = 'weekly', log = true}, -- venthyr 20 souls - [61331] = {covenant = 3, questType = 'weekly', log = true}, -- night fae 5 souls - [62858] = {covenant = 3, questType = 'weekly', log = true}, -- night fae 10 souls - [62859] = {covenant = 3, questType = 'weekly', log = true}, -- night fae 15 souls - [62860] = {covenant = 3, questType = 'weekly', log = true}, -- night fae 20 souls - [61333] = {covenant = 4, questType = 'weekly', log = true}, -- necro 5 souls - [62864] = {covenant = 4, questType = 'weekly', log = true}, -- necro 10 souls - [62865] = {covenant = 4, questType = 'weekly', log = true}, -- necro 15 souls - [62866] = {covenant = 4, questType = 'weekly', log = true} -- necro 20 souls + [61332] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 5 souls + [62861] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 10 souls + [62862] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 15 souls + [62863] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 20 souls + [61334] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 5 souls + [62867] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 10 souls + [62868] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 15 souls + [62869] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 20 souls + [61331] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 5 souls + [62858] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 10 souls + [62859] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 15 souls + [62860] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 20 souls + [61333] = { covenant = 4, questType = 'weekly', log = true }, -- necro 5 souls + [62864] = { covenant = 4, questType = 'weekly', log = true }, -- necro 10 souls + [62865] = { covenant = 4, questType = 'weekly', log = true }, -- necro 15 souls + [62866] = { covenant = 4, questType = 'weekly', log = true } -- necro 20 souls }, anima_weekly = { - [61982] = {covenant = 1, questType = 'weekly', log = true}, -- kyrian 1k anima - [61981] = {covenant = 2, questType = 'weekly', log = true}, -- venthyr 1k anima - [61984] = {covenant = 3, questType = 'weekly', log = true}, -- night fae 1k anima - [61983] = {covenant = 4, questType = 'weekly', log = true} -- necro 1k anima + [61982] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 1k anima + [61981] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 1k anima + [61984] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 1k anima + [61983] = { covenant = 4, questType = 'weekly', log = true } -- necro 1k anima }, battle_plans = { - [64521] = {questType = 'weekly', log = true} -- Helsworn Battle Plans + [64521] = { questType = 'weekly', log = true } -- Helsworn Battle Plans }, korthia_supplies = { - [64522] = {questType = 'weekly', log = true} -- Stolen Korthia Supplies + [64522] = { questType = 'weekly', log = true } -- Stolen Korthia Supplies }, korthia_weekly = { - [63949] = {questType = 'weekly', log = true} -- Shaping Fate + [63949] = { questType = 'weekly', log = true } -- Shaping Fate }, zereth_mortis_weekly = { - [65324] = {questType = 'weekly', log = true} + [65324] = { questType = 'weekly', log = true } }, -- Maw Warth of the Jailer wrath = { - [63414] = {questType = 'weekly'} -- Wrath of the Jailer + [63414] = { questType = 'weekly' } -- Wrath of the Jailer }, -- Maw Hunt hunt = { - [63195] = {questType = 'weekly'}, - [63198] = {questType = 'weekly'}, - [63199] = {questType = 'weekly'}, - [63433] = {questType = 'weekly'} + [63195] = { questType = 'weekly' }, + [63198] = { questType = 'weekly' }, + [63199] = { questType = 'weekly' }, + [63433] = { questType = 'weekly' } }, -- World Boss world_boss = { - [82653] = {questType = 'weekly'}, -- Aggregation of Horrors + [82653] = { questType = 'weekly' }, -- Aggregation of Horrors }, korthia_world_boss = { - [64531] = {questType = 'weekly'} -- Mor'geth, Tormentor of the Damned + [64531] = { questType = 'weekly' } -- Mor'geth, Tormentor of the Damned }, zereth_mortis_world_boss = { - [65143] = {questType = 'weekly'} -- Antros + [65143] = { questType = 'weekly' } -- Antros }, tormentors_weekly = { - [63854] = {questType = 'weekly'}, -- Tormentors of Torghast - [64122] = {questType = 'weekly'} -- Tormentors of Torghast + [63854] = { questType = 'weekly' }, -- Tormentors of Torghast + [64122] = { questType = 'weekly' } -- Tormentors of Torghast }, tormentors_locations = { - [64692] = {questType = 'weekly'}, - [64693] = {questType = 'weekly'}, - [64694] = {questType = 'weekly'}, - [64695] = {questType = 'weekly'}, - [64696] = {questType = 'weekly'}, - [64697] = {questType = 'weekly'}, - [64698] = {questType = 'weekly'} + [64692] = { questType = 'weekly' }, + [64693] = { questType = 'weekly' }, + [64694] = { questType = 'weekly' }, + [64695] = { questType = 'weekly' }, + [64696] = { questType = 'weekly' }, + [64697] = { questType = 'weekly' }, + [64698] = { questType = 'weekly' } }, containing_the_helsworn = { - [64273] = {questType = 'weekly'} -- Containing the Helsworn World Quest + [64273] = { questType = 'weekly' } -- Containing the Helsworn World Quest }, rift_vessels = { - [64265] = {questType = 'weekly'}, - [64269] = {questType = 'weekly'}, - [64270] = {questType = 'weekly'} + [64265] = { questType = 'weekly' }, + [64269] = { questType = 'weekly' }, + [64270] = { questType = 'weekly' } }, maw_assault = { - [63824] = {questType = 'weekly'}, -- Kyrian - [63543] = {questType = 'weekly'}, -- Necrolord - [63822] = {questType = 'weekly'}, -- Venthyr - [63823] = {questType = 'weekly'} -- Nightfae + [63824] = { questType = 'weekly' }, -- Kyrian + [63543] = { questType = 'weekly' }, -- Necrolord + [63822] = { questType = 'weekly' }, -- Venthyr + [63823] = { questType = 'weekly' } -- Nightfae }, assault_vessels = { - [64056] = {name = 'Venthyr', total = 2, questType = 'weekly'}, - [64055] = {name = 'Venthyr', total = 2, questType = 'weekly'}, - [64058] = {name = 'Kyrian', total = 2, questType = 'weekly'}, - [64057] = {name = 'Kyrian', total = 2, questType = 'weekly'}, - [64059] = {name = 'Night Fae', total = 2, questType = 'weekly'}, - [64060] = {name = 'Night Fae', total = 2, questType = 'weekly'}, - [64044] = {name = 'Necrolord', total = 2, questType = 'weekly'}, - [64045] = {name = 'Necrolord', total = 2, questType = 'weekly'} + [64056] = { name = 'Venthyr', total = 2, questType = 'weekly' }, + [64055] = { name = 'Venthyr', total = 2, questType = 'weekly' }, + [64058] = { name = 'Kyrian', total = 2, questType = 'weekly' }, + [64057] = { name = 'Kyrian', total = 2, questType = 'weekly' }, + [64059] = { name = 'Night Fae', total = 2, questType = 'weekly' }, + [64060] = { name = 'Night Fae', total = 2, questType = 'weekly' }, + [64044] = { name = 'Necrolord', total = 2, questType = 'weekly' }, + [64045] = { name = 'Necrolord', total = 2, questType = 'weekly' } }, adamant_vault_conduit = { - [64347] = {questType = 'weekly'} + [64347] = { questType = 'weekly' } }, sanctum_normal_embers_trash = { - [64610] = {questType = 'weekly'}, - [64613] = {questType = 'weekly'}, - [64616] = {questType = 'weekly'}, - [64619] = {questType = 'weekly'}, - [64622] = {questType = 'weekly'} + [64610] = { questType = 'weekly' }, + [64613] = { questType = 'weekly' }, + [64616] = { questType = 'weekly' }, + [64619] = { questType = 'weekly' }, + [64622] = { questType = 'weekly' } }, sanctum_heroic_embers_trash = { - [64611] = {questType = 'weekly'}, - [64614] = {questType = 'weekly'}, - [64617] = {questType = 'weekly'}, - [64620] = {questType = 'weekly'}, - [64623] = {questType = 'weekly'} + [64611] = { questType = 'weekly' }, + [64614] = { questType = 'weekly' }, + [64617] = { questType = 'weekly' }, + [64620] = { questType = 'weekly' }, + [64623] = { questType = 'weekly' } }, sandworn_chest = { - [65611] = {questType = 'daily'} + [65611] = { questType = 'daily' } }, puzzle_caches = { - [64972] = {questType = 'daily'}, -- Toccatian Cache - [65314] = {questType = 'daily'}, - [65319] = {questType = 'daily'}, - [65323] = {questType = 'daily'}, -- Cantaric Cache - [65094] = {questType = 'daily'}, - [65318] = {questType = 'daily'}, - [65091] = {questType = 'daily'}, -- Mezzonic Cache - [65315] = {questType = 'daily'}, - [65320] = {questType = 'daily'}, - [65316] = {questType = 'daily'}, -- Glissandian Cache - [65321] = {questType = 'daily'}, - [65092] = {questType = 'daily'}, - [65317] = {questType = 'daily'}, -- Fuguel Cache - [65322] = {questType = 'daily'}, - [65093] = {questType = 'daily'} + [64972] = { questType = 'daily' }, -- Toccatian Cache + [65314] = { questType = 'daily' }, + [65319] = { questType = 'daily' }, + [65323] = { questType = 'daily' }, -- Cantaric Cache + [65094] = { questType = 'daily' }, + [65318] = { questType = 'daily' }, + [65091] = { questType = 'daily' }, -- Mezzonic Cache + [65315] = { questType = 'daily' }, + [65320] = { questType = 'daily' }, + [65316] = { questType = 'daily' }, -- Glissandian Cache + [65321] = { questType = 'daily' }, + [65092] = { questType = 'daily' }, + [65317] = { questType = 'daily' }, -- Fuguel Cache + [65322] = { questType = 'daily' }, + [65093] = { questType = 'daily' } }, korthia_five_dailies = { - [63727] = {questType = 'unlocks', log = true} + [63727] = { questType = 'unlocks', log = true } }, zereth_mortis_three_dailies = { - [65219] = {questType = 'unlocks', log = true} + [65219] = { questType = 'unlocks', log = true } }, dragonflight_world_boss = { - [69927] = {questType = 'weekly'}, - [69928] = {questType = 'weekly'}, - [69929] = {questType = 'weekly'}, - [69930] = {questType = 'weekly'}, + [69927] = { questType = 'weekly' }, + [69928] = { questType = 'weekly' }, + [69929] = { questType = 'weekly' }, + [69930] = { questType = 'weekly' }, }, aiding_the_accord = { - [70750] = {questType = 'weekly', log = true}, - [72068] = {questType = 'weekly', log = true}, - [72373] = {questType = 'weekly', log = true}, - [72374] = {questType = 'weekly', log = true}, - [72375] = {questType = 'weekly', log = true}, - [75259] = {questType = 'weekly', log = true}, - [75859] = {questType = 'weekly', log = true}, - [75860] = {questType = 'weekly', log = true}, - [75861] = {questType = 'weekly', log = true}, - [77254] = {questType = 'weekly', log = true}, - [77976] = {questType = 'weekly', log = true}, - [78446] = {questType = 'weekly', log = true}, - [78447] = {questType = 'weekly', log = true}, - [78861] = {questType = 'weekly', log = true}, - [80385] = {questType = 'weekly', log = true}, - [80386] = {questType = 'weekly', log = true}, - [80388] = {questType = 'weekly', log = true}, - [80389] = {questType = 'weekly', log = true}, + [70750] = { questType = 'weekly', log = true }, + [72068] = { questType = 'weekly', log = true }, + [72373] = { questType = 'weekly', log = true }, + [72374] = { questType = 'weekly', log = true }, + [72375] = { questType = 'weekly', log = true }, + [75259] = { questType = 'weekly', log = true }, + [75859] = { questType = 'weekly', log = true }, + [75860] = { questType = 'weekly', log = true }, + [75861] = { questType = 'weekly', log = true }, + [77254] = { questType = 'weekly', log = true }, + [77976] = { questType = 'weekly', log = true }, + [78446] = { questType = 'weekly', log = true }, + [78447] = { questType = 'weekly', log = true }, + [78861] = { questType = 'weekly', log = true }, + [80385] = { questType = 'weekly', log = true }, + [80386] = { questType = 'weekly', log = true }, + [80388] = { questType = 'weekly', log = true }, + [80389] = { questType = 'weekly', log = true }, }, grand_hunts = { - [70906] = {questType = 'weekly'}, - [71136] = {questType = 'weekly'}, - [71137] = {questType = 'weekly'} + [70906] = { questType = 'weekly' }, + [71136] = { questType = 'weekly' }, + [71137] = { questType = 'weekly' } }, marrukai_camp = { - [65784] = {questType = 'biweekly', log = true}, - [65789] = {questType = 'biweekly', log = true}, - [65792] = {questType = 'biweekly', log = true}, - [65796] = {questType = 'biweekly', log = true}, - [65798] = {questType = 'biweekly', log = true}, - [66698] = {questType = 'biweekly', log = true}, - [66711] = {questType = 'biweekly', log = true}, - [67034] = {questType = 'biweekly', log = true}, - [67039] = {questType = 'biweekly', log = true}, - [67222] = {questType = 'biweekly', log = true}, - [67605] = {questType = 'biweekly', log = true}, - [70210] = {questType = 'biweekly', log = true}, - [70299] = {questType = 'biweekly', log = true}, - [70279] = {questType = 'biweekly', log = true}, - [70352] = {questType = 'biweekly', log = true}, - [70701] = {questType = 'biweekly', log = true}, - [70990] = {questType = 'biweekly', log = true}, - [71241] = {questType = 'biweekly', log = true}, + [65784] = { questType = 'biweekly', log = true }, + [65789] = { questType = 'biweekly', log = true }, + [65792] = { questType = 'biweekly', log = true }, + [65796] = { questType = 'biweekly', log = true }, + [65798] = { questType = 'biweekly', log = true }, + [66698] = { questType = 'biweekly', log = true }, + [66711] = { questType = 'biweekly', log = true }, + [67034] = { questType = 'biweekly', log = true }, + [67039] = { questType = 'biweekly', log = true }, + [67222] = { questType = 'biweekly', log = true }, + [67605] = { questType = 'biweekly', log = true }, + [70210] = { questType = 'biweekly', log = true }, + [70299] = { questType = 'biweekly', log = true }, + [70279] = { questType = 'biweekly', log = true }, + [70352] = { questType = 'biweekly', log = true }, + [70701] = { questType = 'biweekly', log = true }, + [70990] = { questType = 'biweekly', log = true }, + [71241] = { questType = 'biweekly', log = true }, }, trial_of_flood = { - [71033] = {questType = 'weekly'} + [71033] = { questType = 'weekly' } }, trial_of_elements = { - [71995] = {questType = 'weekly'} + [71995] = { questType = 'weekly' } }, trial_of_storms = { - [74567] = {questType = 'weekly'} + [74567] = { questType = 'weekly' } }, brackenhide_hollow_rares = { - [74032] = {questType = 'daily', name = 'Snarglebone'}, - [73985] = {questType = 'daily', name = 'Blisterhide'}, - [73996] = {questType = 'daily', name = 'Gnarls'}, - [74004] = {questType = 'daily', name = 'High Shaman Rotknuckle'}, + [74032] = { questType = 'daily', name = 'Snarglebone' }, + [73985] = { questType = 'daily', name = 'Blisterhide' }, + [73996] = { questType = 'daily', name = 'Gnarls' }, + [74004] = { questType = 'daily', name = 'High Shaman Rotknuckle' }, }, knowledge_df_mobs = { - [70522] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198975}, --Leatherworking 1 - [70523] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198976}, --Leatherworking 2 - [73138] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 204232}, --Leatherworking 3 - [70514] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item= 198967}, --Enchanting 1 - [70515] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item= 198968}, --Enchanting 2 - [73136] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item= 204224}, --Enchanting 3 - [70516] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198969}, --Engineering 1 - [70517] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198970}, --Engineering 2 - [73165] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 204227}, --Engineering 3 - [70518] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198971}, --Inscription 1 - [70519] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198972}, --Inscription 2 - [73163] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 204229}, --Inscription 3 - [70524] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198977}, --Tailoring 1 - [70525] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198978}, --Tailoring 2 - [73153] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 204225}, --Tailoring 3 - [70512] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198965}, --Blacksmithing 1 - [70513] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198966}, --Blacksmithing 2 - [73161] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 204230}, --Blacksmithing 3 - [70520] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198973}, --Jewelcrafting 1 - [70521] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198974}, --Jewelcrafting 2 - [73168] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 204222}, --Jewelcrafting 3 - [70504] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198963}, --Alchemy 1 - [70511] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198964}, --Alchemy 2 - [73166] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 204226}, --Alchemy 3 - [71857] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, --Herbalism 1 - [71858] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, --Herbalism 2 - [71859] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, --Herbalism 3 - [71860] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, --Herbalism 4 - [71861] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, --Herbalism 5 - [71864] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, --Herbalism 6 - [70381] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, --Skinning 1 - [70383] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, --Skinning 2 - [70384] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, --Skinning 3 - [70385] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, --Skinning 4 - [70386] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, --Skinning 5 - [70389] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, --Skinning 6 - [72160] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, --Mining 1 - [72161] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, --Mining 2 - [72162] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, --Mining 3 - [72163] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, --Mining 4 - [72164] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, --Mining 5 - [72165] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, --Mining 6 + [70522] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198975 }, --Leatherworking 1 + [70523] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198976 }, --Leatherworking 2 + [73138] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 204232 }, --Leatherworking 3 + [70514] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 198967 }, --Enchanting 1 + [70515] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 198968 }, --Enchanting 2 + [73136] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 204224 }, --Enchanting 3 + [70516] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198969 }, --Engineering 1 + [70517] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198970 }, --Engineering 2 + [73165] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 204227 }, --Engineering 3 + [70518] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198971 }, --Inscription 1 + [70519] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198972 }, --Inscription 2 + [73163] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 204229 }, --Inscription 3 + [70524] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198977 }, --Tailoring 1 + [70525] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198978 }, --Tailoring 2 + [73153] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 204225 }, --Tailoring 3 + [70512] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198965 }, --Blacksmithing 1 + [70513] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198966 }, --Blacksmithing 2 + [73161] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 204230 }, --Blacksmithing 3 + [70520] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198973 }, --Jewelcrafting 1 + [70521] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198974 }, --Jewelcrafting 2 + [73168] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 204222 }, --Jewelcrafting 3 + [70504] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198963 }, --Alchemy 1 + [70511] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198964 }, --Alchemy 2 + [73166] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 204226 }, --Alchemy 3 + [71857] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 1 + [71858] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 2 + [71859] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 3 + [71860] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 4 + [71861] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 5 + [71864] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 6 + [70381] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 1 + [70383] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 2 + [70384] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 3 + [70385] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 4 + [70386] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 5 + [70389] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 6 + [72160] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 1 + [72161] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 2 + [72162] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 3 + [72163] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 4 + [72164] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 5 + [72165] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 6 }, knowledge_df_treasures = { - [66375] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193904}, --Inscription 1 - [66376] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193905}, --Inscription 2 - [66384] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 193910}, --Leatherworking 1 - [66385] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 193913}, --Leatherworking 2 - [66386] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193898}, --Tailoring 1 - [66387] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193899}, --Tailoring 2 - [66377] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193900}, --Enchanting 1 - [66378] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193901}, --Enchanting 2 - [66381] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192131}, --Blacksmithing 1 - [66382] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192132}, --Blacksmithing 2 - [66379] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193902}, --Engineering 1 - [66380] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193903}, --Engineering 2 - [66388] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193909}, --Jewelcrafting 1 - [66389] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193907}, --Jewelcrafting 2 - [66373] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193891}, --Alchemy 1 - [66374] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193897}, --Alchemy 2 + [66375] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193904 }, --Inscription 1 + [66376] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193905 }, --Inscription 2 + [66384] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 193910 }, --Leatherworking 1 + [66385] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 193913 }, --Leatherworking 2 + [66386] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193898 }, --Tailoring 1 + [66387] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193899 }, --Tailoring 2 + [66377] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193900 }, --Enchanting 1 + [66378] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193901 }, --Enchanting 2 + [66381] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192131 }, --Blacksmithing 1 + [66382] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192132 }, --Blacksmithing 2 + [66379] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193902 }, --Engineering 1 + [66380] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193903 }, --Engineering 2 + [66388] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193909 }, --Jewelcrafting 1 + [66389] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193907 }, --Jewelcrafting 2 + [66373] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193891 }, --Alchemy 1 + [66374] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193897 }, --Alchemy 2 }, knowledge_df_treatise = { - [74105] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription'}, -- Inscription - [83730] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription'}, -- Inscription 2 - [74106] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Mining - [74107] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Herbalism - [74108] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy'}, -- Alchemy - [74109] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing'}, -- Blacksmithing - [74110] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Enchanting - [74111] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering'}, -- Engineering - [74112] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting'}, -- Jewelcrafting - [74113] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking'}, -- Leatherworking - [74114] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Skinning - [74115] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring'}, -- Tailoring + [74105] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, -- Inscription + [83730] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, -- Inscription 2 + [74106] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Mining + [74107] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Herbalism + [74108] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy' }, -- Alchemy + [74109] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing' }, -- Blacksmithing + [74110] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Enchanting + [74111] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering' }, -- Engineering + [74112] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting' }, -- Jewelcrafting + [74113] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking' }, -- Leatherworking + [74114] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Skinning + [74115] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring' }, -- Tailoring }, knowledge_df_weeklies_craft = { - [70558] = {questType = 'weekly', log = true}, -- Inscription 1 - [70559] = {questType = 'weekly', log = true}, -- Inscription 2 - [70560] = {questType = 'weekly', log = true}, -- Inscription 3 - [70561] = {questType = 'weekly', log = true}, -- Inscription 4 - [70567] = {questType = 'weekly', log = true}, -- Leatherworking 1 - [70568] = {questType = 'weekly', log = true}, -- Leatherworking 2 - [70569] = {questType = 'weekly', log = true}, -- Leatherworking 3 - [70571] = {questType = 'weekly', log = true}, -- Leatherworking 4 - [70572] = {questType = 'weekly', log = true}, -- Tailoring 1 - [70582] = {questType = 'weekly', log = true}, -- Tailoring 2 - [70586] = {questType = 'weekly', log = true}, -- Tailoring 3 - [70587] = {questType = 'weekly', log = true}, -- Tailoring 4 - [72155] = {questType = 'weekly', log = true}, -- Enchanting 1 - [72172] = {questType = 'weekly', log = true}, -- Enchanting 2 - [72175] = {questType = 'weekly', log = true}, -- Enchanting 3 - [72173] = {questType = 'weekly', log = true}, -- Enchanting 4 - [70233] = {questType = 'weekly', log = true}, -- Blacksmithing 1 - [70234] = {questType = 'weekly', log = true}, -- Blacksmithing 2 - [70235] = {questType = 'weekly', log = true}, -- Blacksmithing 3 - [70211] = {questType = 'weekly', log = true}, -- Blacksmithing 4 - [70540] = {questType = 'weekly', log = true}, -- Engineering 1 - [70545] = {questType = 'weekly', log = true}, -- Engineering 2 - [70557] = {questType = 'weekly', log = true}, -- Engineering 3 - [70539] = {questType = 'weekly', log = true}, -- Engineering 4 - [70562] = {questType = 'weekly', log = true}, -- Jewelcrafting 1 - [70563] = {questType = 'weekly', log = true}, -- Jewelcrafting 2 - [70564] = {questType = 'weekly', log = true}, -- Jewelcrafting 3 - [70565] = {questType = 'weekly', log = true}, -- Jewelcrafting 4 - [70531] = {questType = 'weekly', log = true}, -- Alchemy 1 - [70532] = {questType = 'weekly', log = true}, -- Alchemy 2 - [70533] = {questType = 'weekly', log = true}, -- Alchemy 3 - [70530] = {questType = 'weekly', log = true}, -- Alchemy 4 + [70558] = { questType = 'weekly', log = true }, -- Inscription 1 + [70559] = { questType = 'weekly', log = true }, -- Inscription 2 + [70560] = { questType = 'weekly', log = true }, -- Inscription 3 + [70561] = { questType = 'weekly', log = true }, -- Inscription 4 + [70567] = { questType = 'weekly', log = true }, -- Leatherworking 1 + [70568] = { questType = 'weekly', log = true }, -- Leatherworking 2 + [70569] = { questType = 'weekly', log = true }, -- Leatherworking 3 + [70571] = { questType = 'weekly', log = true }, -- Leatherworking 4 + [70572] = { questType = 'weekly', log = true }, -- Tailoring 1 + [70582] = { questType = 'weekly', log = true }, -- Tailoring 2 + [70586] = { questType = 'weekly', log = true }, -- Tailoring 3 + [70587] = { questType = 'weekly', log = true }, -- Tailoring 4 + [72155] = { questType = 'weekly', log = true }, -- Enchanting 1 + [72172] = { questType = 'weekly', log = true }, -- Enchanting 2 + [72175] = { questType = 'weekly', log = true }, -- Enchanting 3 + [72173] = { questType = 'weekly', log = true }, -- Enchanting 4 + [70233] = { questType = 'weekly', log = true }, -- Blacksmithing 1 + [70234] = { questType = 'weekly', log = true }, -- Blacksmithing 2 + [70235] = { questType = 'weekly', log = true }, -- Blacksmithing 3 + [70211] = { questType = 'weekly', log = true }, -- Blacksmithing 4 + [70540] = { questType = 'weekly', log = true }, -- Engineering 1 + [70545] = { questType = 'weekly', log = true }, -- Engineering 2 + [70557] = { questType = 'weekly', log = true }, -- Engineering 3 + [70539] = { questType = 'weekly', log = true }, -- Engineering 4 + [70562] = { questType = 'weekly', log = true }, -- Jewelcrafting 1 + [70563] = { questType = 'weekly', log = true }, -- Jewelcrafting 2 + [70564] = { questType = 'weekly', log = true }, -- Jewelcrafting 3 + [70565] = { questType = 'weekly', log = true }, -- Jewelcrafting 4 + [70531] = { questType = 'weekly', log = true }, -- Alchemy 1 + [70532] = { questType = 'weekly', log = true }, -- Alchemy 2 + [70533] = { questType = 'weekly', log = true }, -- Alchemy 3 + [70530] = { questType = 'weekly', log = true }, -- Alchemy 4 }, knowledge_df_weeklies_loot = { - [66943] = {questType = 'weekly', log = true}, -- Inscription 5 - [66944] = {questType = 'weekly', log = true}, -- Inscription 6 - [66945] = {questType = 'weekly', log = true}, -- Inscription 7 - [72438] = {questType = 'weekly', log = true}, -- Inscription 8 - [66363] = {questType = 'weekly', log = true}, -- Leatherworking 5 - [66364] = {questType = 'weekly', log = true}, -- Leatherworking 6 - [66951] = {questType = 'weekly', log = true}, -- Leatherworking 7 - [72407] = {questType = 'weekly', log = true}, -- Leatherworking 8 - [66899] = {questType = 'weekly', log = true}, -- Tailoring 5 - [66952] = {questType = 'weekly', log = true}, -- Tailoring 6 - [66953] = {questType = 'weekly', log = true}, -- Tailoring 7 - [72410] = {questType = 'weekly', log = true}, -- Tailoring 8 - [66884] = {questType = 'weekly', log = true}, -- Enchanting 5 - [66900] = {questType = 'weekly', log = true}, -- Enchanting 6 - [66935] = {questType = 'weekly', log = true}, -- Enchanting 7 - [72423] = {questType = 'weekly', log = true}, -- Enchanting 8 - [66517] = {questType = 'weekly', log = true}, -- Blacksmithing 5 - [66941] = {questType = 'weekly', log = true}, -- Blacksmithing 6 - [72398] = {questType = 'weekly', log = true}, -- Blacksmithing 7 - [66897] = {questType = 'weekly', log = true}, -- Blacksmithing 8 - [66891] = {questType = 'weekly', log = true}, -- Engineering 5 - [66890] = {questType = 'weekly', log = true}, -- Engineering 6 - [66942] = {questType = 'weekly', log = true}, -- Engineering 7 - [72396] = {questType = 'weekly', log = true}, -- Engineering 8 - [73165] = {questType = 'weekly', log = true}, -- Engineering 9 - [66516] = {questType = 'weekly', log = true}, -- Jewelcrafting 5 - [66949] = {questType = 'weekly', log = true}, -- Jewelcrafting 6 - [66950] = {questType = 'weekly', log = true}, -- Jewelcrafting 7 - [72428] = {questType = 'weekly', log = true}, -- Jewelcrafting 8 - [66937] = {questType = 'weekly', log = true}, -- Alchemy 5 - [66938] = {questType = 'weekly', log = true}, -- Alchemy 6 - [66940] = {questType = 'weekly', log = true}, -- Alchemy 7 - [72427] = {questType = 'weekly', log = true}, -- Alchemy 8 - [70613] = {questType = 'weekly', log = true}, -- Herbalism 5 - [70614] = {questType = 'weekly', log = true}, -- Herbalism 6 - [70615] = {questType = 'weekly', log = true}, -- Herbalism 7 - [70616] = {questType = 'weekly', log = true}, -- Herbalism 8 + [66943] = { questType = 'weekly', log = true }, -- Inscription 5 + [66944] = { questType = 'weekly', log = true }, -- Inscription 6 + [66945] = { questType = 'weekly', log = true }, -- Inscription 7 + [72438] = { questType = 'weekly', log = true }, -- Inscription 8 + [66363] = { questType = 'weekly', log = true }, -- Leatherworking 5 + [66364] = { questType = 'weekly', log = true }, -- Leatherworking 6 + [66951] = { questType = 'weekly', log = true }, -- Leatherworking 7 + [72407] = { questType = 'weekly', log = true }, -- Leatherworking 8 + [66899] = { questType = 'weekly', log = true }, -- Tailoring 5 + [66952] = { questType = 'weekly', log = true }, -- Tailoring 6 + [66953] = { questType = 'weekly', log = true }, -- Tailoring 7 + [72410] = { questType = 'weekly', log = true }, -- Tailoring 8 + [66884] = { questType = 'weekly', log = true }, -- Enchanting 5 + [66900] = { questType = 'weekly', log = true }, -- Enchanting 6 + [66935] = { questType = 'weekly', log = true }, -- Enchanting 7 + [72423] = { questType = 'weekly', log = true }, -- Enchanting 8 + [66517] = { questType = 'weekly', log = true }, -- Blacksmithing 5 + [66941] = { questType = 'weekly', log = true }, -- Blacksmithing 6 + [72398] = { questType = 'weekly', log = true }, -- Blacksmithing 7 + [66897] = { questType = 'weekly', log = true }, -- Blacksmithing 8 + [66891] = { questType = 'weekly', log = true }, -- Engineering 5 + [66890] = { questType = 'weekly', log = true }, -- Engineering 6 + [66942] = { questType = 'weekly', log = true }, -- Engineering 7 + [72396] = { questType = 'weekly', log = true }, -- Engineering 8 + [73165] = { questType = 'weekly', log = true }, -- Engineering 9 + [66516] = { questType = 'weekly', log = true }, -- Jewelcrafting 5 + [66949] = { questType = 'weekly', log = true }, -- Jewelcrafting 6 + [66950] = { questType = 'weekly', log = true }, -- Jewelcrafting 7 + [72428] = { questType = 'weekly', log = true }, -- Jewelcrafting 8 + [66937] = { questType = 'weekly', log = true }, -- Alchemy 5 + [66938] = { questType = 'weekly', log = true }, -- Alchemy 6 + [66940] = { questType = 'weekly', log = true }, -- Alchemy 7 + [72427] = { questType = 'weekly', log = true }, -- Alchemy 8 + [70613] = { questType = 'weekly', log = true }, -- Herbalism 5 + [70614] = { questType = 'weekly', log = true }, -- Herbalism 6 + [70615] = { questType = 'weekly', log = true }, -- Herbalism 7 + [70616] = { questType = 'weekly', log = true }, -- Herbalism 8 --[71970] = {questType = 'weekly', log = true}, -- Herbalism 8 --[71857] = {questType = 'weekly', log = true}, -- Herbalism 8 - [70620] = {questType = 'weekly', log = true}, -- Skinning 5 - [72159] = {questType = 'weekly', log = true}, -- Skinning 6 - [70619] = {questType = 'weekly', log = true}, -- Skinning 7 - [72158] = {questType = 'weekly', log = true}, -- Skinning 8 - [72157] = {questType = 'weekly', log = true}, -- Mining 5 - [70617] = {questType = 'weekly', log = true}, -- Mining 6 - [70618] = {questType = 'weekly', log = true}, -- Mining 7 - [72156] = {questType = 'weekly', log = true}, -- Mining 8 + [70620] = { questType = 'weekly', log = true }, -- Skinning 5 + [72159] = { questType = 'weekly', log = true }, -- Skinning 6 + [70619] = { questType = 'weekly', log = true }, -- Skinning 7 + [72158] = { questType = 'weekly', log = true }, -- Skinning 8 + [72157] = { questType = 'weekly', log = true }, -- Mining 5 + [70617] = { questType = 'weekly', log = true }, -- Mining 6 + [70618] = { questType = 'weekly', log = true }, -- Mining 7 + [72156] = { questType = 'weekly', log = true }, -- Mining 8 --[66936] = {questType = 'weekly', log = true}, -- Mining 8 - [75354] = {questType = 'weekly', log = true}, -- Leatherworking - [75368] = {questType = 'weekly', log = true}, -- Leatherworking - [77945] = {questType = 'weekly', log = true}, -- Leatherworking - [77946] = {questType = 'weekly', log = true}, -- Leatherworking - [75150] = {questType = 'weekly', log = true}, -- Enchanting - [75865] = {questType = 'weekly', log = true}, -- Enchanting - [77910] = {questType = 'weekly', log = true}, -- Enchanting - [77937] = {questType = 'weekly', log = true}, -- Enchanting - [75148] = {questType = 'weekly', log = true}, -- Blacksmithing - [75569] = {questType = 'weekly', log = true}, -- Blacksmithing - [77935] = {questType = 'weekly', log = true}, -- Blacksmithing - [77936] = {questType = 'weekly', log = true}, -- Blacksmithing - [75575] = {questType = 'weekly', log = true}, -- Engineering - [75608] = {questType = 'weekly', log = true}, -- Engineering - [77891] = {questType = 'weekly', log = true}, -- Engineering - [77938] = {questType = 'weekly', log = true}, -- Engineering - [75149] = {questType = 'weekly', log = true}, -- Inscription - [75573] = {questType = 'weekly', log = true}, -- Inscription - [77889] = {questType = 'weekly', log = true}, -- Inscription - [77914] = {questType = 'weekly', log = true}, -- Inscription - [75407] = {questType = 'weekly', log = true}, -- Tailoring - [75600] = {questType = 'weekly', log = true}, -- Tailoring - [77947] = {questType = 'weekly', log = true}, -- Tailoring - [77949] = {questType = 'weekly', log = true}, -- Tailoring - [75362] = {questType = 'weekly', log = true}, -- Jewelcrafting - [75602] = {questType = 'weekly', log = true}, -- Jewelcrafting - [77892] = {questType = 'weekly', log = true}, -- Jewelcrafting - [77912] = {questType = 'weekly', log = true}, -- Jewelcrafting - [75363] = {questType = 'weekly', log = true}, -- Alchemy - [75371] = {questType = 'weekly', log = true}, -- Alchemy - [77932] = {questType = 'weekly', log = true}, -- Alchemy - [77933] = {questType = 'weekly', log = true}, -- Alchemy + [75354] = { questType = 'weekly', log = true }, -- Leatherworking + [75368] = { questType = 'weekly', log = true }, -- Leatherworking + [77945] = { questType = 'weekly', log = true }, -- Leatherworking + [77946] = { questType = 'weekly', log = true }, -- Leatherworking + [75150] = { questType = 'weekly', log = true }, -- Enchanting + [75865] = { questType = 'weekly', log = true }, -- Enchanting + [77910] = { questType = 'weekly', log = true }, -- Enchanting + [77937] = { questType = 'weekly', log = true }, -- Enchanting + [75148] = { questType = 'weekly', log = true }, -- Blacksmithing + [75569] = { questType = 'weekly', log = true }, -- Blacksmithing + [77935] = { questType = 'weekly', log = true }, -- Blacksmithing + [77936] = { questType = 'weekly', log = true }, -- Blacksmithing + [75575] = { questType = 'weekly', log = true }, -- Engineering + [75608] = { questType = 'weekly', log = true }, -- Engineering + [77891] = { questType = 'weekly', log = true }, -- Engineering + [77938] = { questType = 'weekly', log = true }, -- Engineering + [75149] = { questType = 'weekly', log = true }, -- Inscription + [75573] = { questType = 'weekly', log = true }, -- Inscription + [77889] = { questType = 'weekly', log = true }, -- Inscription + [77914] = { questType = 'weekly', log = true }, -- Inscription + [75407] = { questType = 'weekly', log = true }, -- Tailoring + [75600] = { questType = 'weekly', log = true }, -- Tailoring + [77947] = { questType = 'weekly', log = true }, -- Tailoring + [77949] = { questType = 'weekly', log = true }, -- Tailoring + [75362] = { questType = 'weekly', log = true }, -- Jewelcrafting + [75602] = { questType = 'weekly', log = true }, -- Jewelcrafting + [77892] = { questType = 'weekly', log = true }, -- Jewelcrafting + [77912] = { questType = 'weekly', log = true }, -- Jewelcrafting + [75363] = { questType = 'weekly', log = true }, -- Alchemy + [75371] = { questType = 'weekly', log = true }, -- Alchemy + [77932] = { questType = 'weekly', log = true }, -- Alchemy + [77933] = { questType = 'weekly', log = true }, -- Alchemy }, knowledge_df_weeklies_order = { - [70589] = {questType = 'weekly', log = true}, -- Blacksmithing 0 - [70591] = {questType = 'weekly', log = true}, -- Engineering 0 - [70592] = {questType = 'weekly', log = true}, -- Inscription 0 - [70593] = {questType = 'weekly', log = true}, -- Jewelcrafting 0 - [70594] = {questType = 'weekly', log = true}, -- Leatherworking 0 - [70595] = {questType = 'weekly', log = true}, -- Tailoring 0 + [70589] = { questType = 'weekly', log = true }, -- Blacksmithing 0 + [70591] = { questType = 'weekly', log = true }, -- Engineering 0 + [70592] = { questType = 'weekly', log = true }, -- Inscription 0 + [70593] = { questType = 'weekly', log = true }, -- Jewelcrafting 0 + [70594] = { questType = 'weekly', log = true }, -- Leatherworking 0 + [70595] = { questType = 'weekly', log = true }, -- Tailoring 0 }, community_feast = { - [74097] = {questType = 'daily'}, + [74097] = { questType = 'daily' }, }, iskaara_story = { - [72291] = {questType = 'weekly', log = true}, + [72291] = { questType = 'weekly', log = true }, }, obsidian_citadel_rares = { - [72127] = {questType = 'daily', name = 'Captain Lancer'}, - [73072] = {questType = 'daily', name = 'Enkine the Voracious'}, - [74067] = {questType = 'daily', name = 'Morchok'}, - [74054] = {questType = 'daily', name = 'Turboris'}, - [74043] = {questType = 'daily', name = 'Char'}, - [74040] = {questType = 'daily', name = 'Battlehorn Pyrhus'}, - [74042] = {questType = 'daily', name = 'Cauldronbreaker Blakor'}, - [74052] = {questType = 'daily', name = 'Rohzor Forgesmash'}, + [72127] = { questType = 'daily', name = 'Captain Lancer' }, + [73072] = { questType = 'daily', name = 'Enkine the Voracious' }, + [74067] = { questType = 'daily', name = 'Morchok' }, + [74054] = { questType = 'daily', name = 'Turboris' }, + [74043] = { questType = 'daily', name = 'Char' }, + [74040] = { questType = 'daily', name = 'Battlehorn Pyrhus' }, + [74042] = { questType = 'daily', name = 'Cauldronbreaker Blakor' }, + [74052] = { questType = 'daily', name = 'Rohzor Forgesmash' }, }, tyrhold_rares = { - [74055] = {questType = 'daily', name = 'Ancient Protector'}, + [74055] = { questType = 'daily', name = 'Ancient Protector' }, }, iskaara_fishing_dailies = { - [70438] = {questType = 'daily', log = true}, - [70450] = {questType = 'daily', log = true}, - [71191] = {questType = 'daily', log = true}, - [71194] = {questType = 'daily', log = true}, - [72069] = {questType = 'daily', log = true}, - [72075] = {questType = 'daily', log = true}, + [70438] = { questType = 'daily', log = true }, + [70450] = { questType = 'daily', log = true }, + [71191] = { questType = 'daily', log = true }, + [71194] = { questType = 'daily', log = true }, + [72069] = { questType = 'daily', log = true }, + [72075] = { questType = 'daily', log = true }, }, community_feast_weekly = { - [70893] = {questType = 'weekly', log = true}, + [70893] = { questType = 'weekly', log = true }, }, dragonbane_keep_siege = { - [70866] = {questType = 'weekly'}, + [70866] = { questType = 'weekly' }, }, dragonbane_keep_key = { - [66805] = {questType = 'weekly', log = true}, - [66133] = {questType = 'weekly', log = true}, + [66805] = { questType = 'weekly', log = true }, + [66133] = { questType = 'weekly', log = true }, }, dragonbane_keep_weeklies = { - [65842] = {questType = 'weekly', log = true}, - [66103] = {questType = 'weekly', log = true}, - [66308] = {questType = 'weekly', log = true}, - [66321] = {questType = 'weekly', log = true}, - [66326] = {questType = 'weekly', log = true}, - [66445] = {questType = 'weekly', log = true}, - [66449] = {questType = 'weekly', log = true}, - [66633] = {questType = 'weekly', log = true}, - [66926] = {questType = 'weekly', log = true}, - [67051] = {questType = 'weekly', log = true}, - [67099] = {questType = 'weekly', log = true}, - [67142] = {questType = 'weekly', log = true}, - [69918] = {questType = 'weekly', log = true}, - [70848] = {questType = 'weekly', log = true}, - [72447] = {questType = 'weekly', log = true}, - [72448] = {questType = 'weekly', log = true}, + [65842] = { questType = 'weekly', log = true }, + [66103] = { questType = 'weekly', log = true }, + [66308] = { questType = 'weekly', log = true }, + [66321] = { questType = 'weekly', log = true }, + [66326] = { questType = 'weekly', log = true }, + [66445] = { questType = 'weekly', log = true }, + [66449] = { questType = 'weekly', log = true }, + [66633] = { questType = 'weekly', log = true }, + [66926] = { questType = 'weekly', log = true }, + [67051] = { questType = 'weekly', log = true }, + [67099] = { questType = 'weekly', log = true }, + [67142] = { questType = 'weekly', log = true }, + [69918] = { questType = 'weekly', log = true }, + [70848] = { questType = 'weekly', log = true }, + [72447] = { questType = 'weekly', log = true }, + [72448] = { questType = 'weekly', log = true }, }, show_your_mettle = { - [70221] = {questType = 'weekly', log = true}, + [70221] = { questType = 'weekly', log = true }, }, fish_turnins_df = { - [72828] = {questType = 'weekly', name = '|T1387373:0|t[Scalebelly Mackerel]'}, - [72823] = {questType = 'weekly', name = '|T4554376:0|t[Islefin Dorado]'}, - [72827] = {questType = 'weekly', name = '|T4554372:0|t[Thousandbite Piranha]'}, - [72826] = {questType = 'weekly', name = '|T4539689:0|t[Aileron Seamoth]'}, - [72825] = {questType = 'weekly', name = '|T4539687:0|t[Cerulean Spinefish]'}, - [72824] = {questType = 'weekly', name = '|T4554371:0|t[Temporal Dragonhead]'}, + [72828] = { questType = 'weekly', name = '|T1387373:0|t[Scalebelly Mackerel]' }, + [72823] = { questType = 'weekly', name = '|T4554376:0|t[Islefin Dorado]' }, + [72827] = { questType = 'weekly', name = '|T4554372:0|t[Thousandbite Piranha]' }, + [72826] = { questType = 'weekly', name = '|T4539689:0|t[Aileron Seamoth]' }, + [72825] = { questType = 'weekly', name = '|T4539687:0|t[Cerulean Spinefish]' }, + [72824] = { questType = 'weekly', name = '|T4554371:0|t[Temporal Dragonhead]' }, }, forbidden_reach_weeklies = { - [72952] = {questType = 'weekly', log = true}, - [73140] = {questType = 'weekly', log = true}, - [73141] = {questType = 'weekly', log = true}, - [73142] = {questType = 'weekly', log = true}, - [73179] = {questType = 'weekly', log = true}, - [73190] = {questType = 'weekly', log = true}, - [73191] = {questType = 'weekly', log = true}, - [73194] = {questType = 'weekly', log = true}, - [73715] = {questType = 'weekly', log = true}, - [74282] = {questType = 'weekly', log = true}, - [74284] = {questType = 'weekly', log = true}, - [74293] = {questType = 'weekly', log = true}, - [74379] = {questType = 'weekly', log = true}, - [75024] = {questType = 'weekly', log = true}, - [75025] = {questType = 'weekly', log = true}, + [72952] = { questType = 'weekly', log = true }, + [73140] = { questType = 'weekly', log = true }, + [73141] = { questType = 'weekly', log = true }, + [73142] = { questType = 'weekly', log = true }, + [73179] = { questType = 'weekly', log = true }, + [73190] = { questType = 'weekly', log = true }, + [73191] = { questType = 'weekly', log = true }, + [73194] = { questType = 'weekly', log = true }, + [73715] = { questType = 'weekly', log = true }, + [74282] = { questType = 'weekly', log = true }, + [74284] = { questType = 'weekly', log = true }, + [74293] = { questType = 'weekly', log = true }, + [74379] = { questType = 'weekly', log = true }, + [75024] = { questType = 'weekly', log = true }, + [75025] = { questType = 'weekly', log = true }, }, forbidden_reach_task_picked = { - [74908] = {questType = 'daily', log = true}, -- Dragonscale Expedition - [74909] = {questType = 'daily', log = true}, -- Iskaara Tuskarr - [74910] = {questType = 'daily', log = true}, -- Maruuk Centaur - [74911] = {questType = 'daily', log = true}, -- Valdrakken Akkord + [74908] = { questType = 'daily', log = true }, -- Dragonscale Expedition + [74909] = { questType = 'daily', log = true }, -- Iskaara Tuskarr + [74910] = { questType = 'daily', log = true }, -- Maruuk Centaur + [74911] = { questType = 'daily', log = true }, -- Valdrakken Akkord }, forbidden_reach_tasks = { - [74118] = {questType = 'daily', log = true}, -- Dragonscale Expedition - [74389] = {questType = 'daily', log = true}, -- Dragonscale Expedition - [74119] = {questType = 'daily', log = true}, -- Iskaara Tuskarr - [74391] = {questType = 'daily', log = true}, -- Iskaara Tuskarr - [74117] = {questType = 'daily', log = true}, -- Maruuk Centaur - [74390] = {questType = 'daily', log = true}, -- Maruuk Centaur - [75261] = {questType = 'daily', log = true}, -- Valdrakken Akkord - [75263] = {questType = 'daily', log = true}, -- Valdrakken Akkord + [74118] = { questType = 'daily', log = true }, -- Dragonscale Expedition + [74389] = { questType = 'daily', log = true }, -- Dragonscale Expedition + [74119] = { questType = 'daily', log = true }, -- Iskaara Tuskarr + [74391] = { questType = 'daily', log = true }, -- Iskaara Tuskarr + [74117] = { questType = 'daily', log = true }, -- Maruuk Centaur + [74390] = { questType = 'daily', log = true }, -- Maruuk Centaur + [75261] = { questType = 'daily', log = true }, -- Valdrakken Akkord + [75263] = { questType = 'daily', log = true }, -- Valdrakken Akkord }, forbidden_reach_elite_wqs = { - [75257] = {questType = 'weekly', log = true}, -- The War Creche + [75257] = { questType = 'weekly', log = true }, -- The War Creche }, glimerogg_racer_dailies = { - [74514] = {questType = 'weekly', log = true}, -- The Slowest Fan Club - [74515] = {questType = 'weekly', log = true}, -- Snail Mail - [74516] = {questType = 'weekly', log = true}, -- A Snail's Pace - [74517] = {questType = 'weekly', log = true}, -- All Terrain Snail - [74518] = {questType = 'weekly', log = true}, -- Resistance Training - [74519] = {questType = 'weekly', log = true}, -- Good for Goo - [74520] = {questType = 'weekly', log = true}, -- Less Cargo + [74514] = { questType = 'weekly', log = true }, -- The Slowest Fan Club + [74515] = { questType = 'weekly', log = true }, -- Snail Mail + [74516] = { questType = 'weekly', log = true }, -- A Snail's Pace + [74517] = { questType = 'weekly', log = true }, -- All Terrain Snail + [74518] = { questType = 'weekly', log = true }, -- Resistance Training + [74519] = { questType = 'weekly', log = true }, -- Good for Goo + [74520] = { questType = 'weekly', log = true }, -- Less Cargo }, loamm_niffen_weekly = { - [75665] = {questType = 'weekly', log = true}, + [75665] = { questType = 'weekly', log = true }, }, researchers_under_fire_weekly = { - [75627] = {questType = 'weekly'}, - [75628] = {questType = 'weekly'}, - [75629] = {questType = 'weekly'}, - [75630] = {questType = 'weekly'}, + [75627] = { questType = 'weekly' }, + [75628] = { questType = 'weekly' }, + [75629] = { questType = 'weekly' }, + [75630] = { questType = 'weekly' }, }, zc_wb_wq = { - [74892] = {questType = 'weekly', log = true}, -- Zaqali Elders + [74892] = { questType = 'weekly', log = true }, -- Zaqali Elders }, dig_maps_weeklies = { - [75747] = {questType = 'weekly'}, - [75748] = {questType = 'weekly'}, - [75749] = {questType = 'weekly'}, + [75747] = { questType = 'weekly' }, + [75748] = { questType = 'weekly' }, + [75749] = { questType = 'weekly' }, }, dig_maps_received_weekly = { - [76077] = {questType = 'weekly'}, - [75665] = {questType = 'weekly'}, + [76077] = { questType = 'weekly' }, + [75665] = { questType = 'weekly' }, }, proven_weekly = { - [72166] = {questType = 'weekly', log = true}, - [72167] = {questType = 'weekly', log = true}, - [72168] = {questType = 'weekly', log = true}, - [72169] = {questType = 'weekly', log = true}, - [72170] = {questType = 'weekly', log = true}, - [72171] = {questType = 'weekly', log = true}, + [72166] = { questType = 'weekly', log = true }, + [72167] = { questType = 'weekly', log = true }, + [72168] = { questType = 'weekly', log = true }, + [72169] = { questType = 'weekly', log = true }, + [72170] = { questType = 'weekly', log = true }, + [72171] = { questType = 'weekly', log = true }, }, fyrak_assault = { - [75467] = {questType = 'weekly'}, + [75467] = { questType = 'weekly' }, }, zyrak_cavern_zone_events = { - [75664] = {questType = 'weekly', forceUpdate = true}, - [75156] = {questType = 'weekly', forceUpdate = true}, - [75471] = {questType = 'weekly', forceUpdate = true}, - [75222] = {questType = 'weekly', forceUpdate = true}, - [75370] = {questType = 'weekly', forceUpdate = true}, - [75441] = {questType = 'weekly', forceUpdate = true}, - [75611] = {questType = 'weekly', forceUpdate = true}, - [75624] = {questType = 'weekly', forceUpdate = true}, - [75612] = {questType = 'weekly', forceUpdate = true}, - [75454] = {questType = 'weekly', forceUpdate = true}, - [75455] = {questType = 'weekly', forceUpdate = true}, - [75450] = {questType = 'weekly', forceUpdate = true}, - [75451] = {questType = 'weekly', forceUpdate = true}, - [75461] = {questType = 'weekly', forceUpdate = true}, - [74352] = {questType = 'weekly', forceUpdate = true}, - [75478] = {questType = 'weekly', forceUpdate = true}, - [75494] = {questType = 'weekly', forceUpdate = true}, - [75705] = {questType = 'weekly', forceUpdate = true}, + [75664] = { questType = 'weekly', forceUpdate = true }, + [75156] = { questType = 'weekly', forceUpdate = true }, + [75471] = { questType = 'weekly', forceUpdate = true }, + [75222] = { questType = 'weekly', forceUpdate = true }, + [75370] = { questType = 'weekly', forceUpdate = true }, + [75441] = { questType = 'weekly', forceUpdate = true }, + [75611] = { questType = 'weekly', forceUpdate = true }, + [75624] = { questType = 'weekly', forceUpdate = true }, + [75612] = { questType = 'weekly', forceUpdate = true }, + [75454] = { questType = 'weekly', forceUpdate = true }, + [75455] = { questType = 'weekly', forceUpdate = true }, + [75450] = { questType = 'weekly', forceUpdate = true }, + [75451] = { questType = 'weekly', forceUpdate = true }, + [75461] = { questType = 'weekly', forceUpdate = true }, + [74352] = { questType = 'weekly', forceUpdate = true }, + [75478] = { questType = 'weekly', forceUpdate = true }, + [75494] = { questType = 'weekly', forceUpdate = true }, + [75705] = { questType = 'weekly', forceUpdate = true }, }, time_rift = { - [77236] = {questType = 'weekly', log = true}, + [77236] = { questType = 'weekly', log = true }, }, time_rift_pod = { - [77836] = {questType = 'weekly'} + [77836] = { questType = 'weekly' } }, dreamsurge_weekly = { - [77251] = {questType = 'weekly', log = true}, + [77251] = { questType = 'weekly', log = true }, }, ed_wb_wq = { - [76367] = {questType = 'weekly', log = true}, -- Aurostor + [76367] = { questType = 'weekly', log = true }, -- Aurostor }, dream_wardens_weekly = { - [78444] = {questType = 'weekly', log = true}, + [78444] = { questType = 'weekly', log = true }, }, superbloom = { - [78319] = {questType = 'weekly', log = true}, + [78319] = { questType = 'weekly', log = true }, }, dream_shipments = { - [78427] = {questType = 'weekly', log = true}, - [78428] = {questType = 'weekly', log = true}, + [78427] = { questType = 'weekly', log = true }, + [78428] = { questType = 'weekly', log = true }, }, anniversary_wb = { - [47461] = {questType = 'daily', name = "Kazzak"}, -- Kazzak - [47462] = {questType = 'daily', name = "Azuregos"}, -- Azuregos - [47463] = {questType = 'daily', name = "Dragons of Nightmare"}, -- Dragons of Nightmare - [60214] = {questType = 'daily', name = "Doomwalker"}, -- Doomwalker + [47461] = { questType = 'daily', name = "Kazzak" }, -- Kazzak + [47462] = { questType = 'daily', name = "Azuregos" }, -- Azuregos + [47463] = { questType = 'daily', name = "Dragons of Nightmare" }, -- Dragons of Nightmare + [60214] = { questType = 'daily', name = "Doomwalker" }, -- Doomwalker }, big_dig = { - [79226] = {questType = 'weekly', warband = true, log = true}, + [79226] = { questType = 'weekly', warband = true, log = true }, }, -- 11.0 The War Within -- Weekly World Activities - tww_world_boss = {-- PLACEHOLDER: wrong quest IDs - [999990] = {questType = 'weekly'}, -- Kordac, the Dormant Protector - [83466] = {questType = 'weekly'}, -- Aggregation of Horrors - [83467] = {questType = 'weekly'}, -- Shurrai, Atrocity of the Undersea - [999993] = {questType = 'weekly'}, -- Orta, the Broken Mountain + tww_world_boss = { -- PLACEHOLDER: wrong quest IDs + [999990] = { questType = 'weekly' }, -- Kordac, the Dormant Protector + [83466] = { questType = 'weekly' }, -- Aggregation of Horrors + [83467] = { questType = 'weekly' }, -- Shurrai, Atrocity of the Undersea + [999993] = { questType = 'weekly' }, -- Orta, the Broken Mountain }, worldsoul_weekly = { - [82452] = {questType = 'weekly', log = true}, -- Worldsoul: World Quests - [82453] = {questType = 'weekly', log = true}, -- Worldsoul: Encore! - [82458] = {questType = 'weekly', log = true}, -- Worldsoul: Renown - [82482] = {questType = 'weekly', log = true}, -- Worldsoul: Snuffling - [82483] = {questType = 'weekly', log = true}, -- Worldsoul: Spreading the Light - [82485] = {questType = 'weekly', log = true}, -- Worldsoul: Cinderbrew Meadery - [82486] = {questType = 'weekly', log = true}, -- Worldsoul: The Rookery - [82487] = {questType = 'weekly', log = true}, -- Worldsoul: The Stonevault - [82488] = {questType = 'weekly', log = true}, -- Worldsoul: Darkflame Cleft - [82489] = {questType = 'weekly', log = true}, -- Worldsoul: The Dawnbreaker - [82490] = {questType = 'weekly', log = true}, -- Worldsoul: Priory of the Sacred Flame - [82491] = {questType = 'weekly', log = true}, -- Worldsoul: Ara-Kara, City of Echoes - [82492] = {questType = 'weekly', log = true}, -- Worldsoul: City of Threads - [82493] = {questType = 'weekly', log = true}, -- Worldsoul: The Dawnbreaker - [82494] = {questType = 'weekly', log = true}, -- Worldsoul: Ara-Kara, City of Echoes - [82495] = {questType = 'weekly', log = true}, -- Worldsoul: Cinderbrew Meadery - [82496] = {questType = 'weekly', log = true}, -- Worldsoul: City of Threads - [82497] = {questType = 'weekly', log = true}, -- Worldsoul: The Stonevault - [82498] = {questType = 'weekly', log = true}, -- Worldsoul: Darkflame Cleft - [82499] = {questType = 'weekly', log = true}, -- Worldsoul: Priory of the Sacred Flame - [82500] = {questType = 'weekly', log = true}, -- Worldsoul: The Rookery - [82501] = {questType = 'weekly', log = true}, -- Worldsoul: The Dawnbreaker - [82502] = {questType = 'weekly', log = true}, -- Worldsoul: Ara-Kara, City of Echoes - [82503] = {questType = 'weekly', log = true}, -- Worldsoul: Cinderbrew Meadery - [82504] = {questType = 'weekly', log = true}, -- Worldsoul: City of Threads - [82505] = {questType = 'weekly', log = true}, -- Worldsoul: The Stonevault - [82506] = {questType = 'weekly', log = true}, -- Worldsoul: Darkflame Cleft - [82507] = {questType = 'weekly', log = true}, -- Worldsoul: Priory of the Sacred Flame - [82508] = {questType = 'weekly', log = true}, -- Worldsoul: The Rookery - [82509] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace - [82510] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace - [82511] = {questType = 'weekly', log = true}, -- Worldsoul: Awakening Machine - [82512] = {questType = 'weekly', log = true}, -- Worldsoul: World Boss - [82516] = {questType = 'weekly', log = true}, -- Worldsoul: Forging a Pact - [82659] = {questType = 'weekly', log = true}, -- Worldsoul: Nerub-ar Palace + [82452] = { questType = 'weekly', log = true }, -- Worldsoul: World Quests + [82453] = { questType = 'weekly', log = true }, -- Worldsoul: Encore! + [82458] = { questType = 'weekly', log = true }, -- Worldsoul: Renown + [82482] = { questType = 'weekly', log = true }, -- Worldsoul: Snuffling + [82483] = { questType = 'weekly', log = true }, -- Worldsoul: Spreading the Light + [82485] = { questType = 'weekly', log = true }, -- Worldsoul: Cinderbrew Meadery + [82486] = { questType = 'weekly', log = true }, -- Worldsoul: The Rookery + [82487] = { questType = 'weekly', log = true }, -- Worldsoul: The Stonevault + [82488] = { questType = 'weekly', log = true }, -- Worldsoul: Darkflame Cleft + [82489] = { questType = 'weekly', log = true }, -- Worldsoul: The Dawnbreaker + [82490] = { questType = 'weekly', log = true }, -- Worldsoul: Priory of the Sacred Flame + [82491] = { questType = 'weekly', log = true }, -- Worldsoul: Ara-Kara, City of Echoes + [82492] = { questType = 'weekly', log = true }, -- Worldsoul: City of Threads + [82493] = { questType = 'weekly', log = true }, -- Worldsoul: The Dawnbreaker + [82494] = { questType = 'weekly', log = true }, -- Worldsoul: Ara-Kara, City of Echoes + [82495] = { questType = 'weekly', log = true }, -- Worldsoul: Cinderbrew Meadery + [82496] = { questType = 'weekly', log = true }, -- Worldsoul: City of Threads + [82497] = { questType = 'weekly', log = true }, -- Worldsoul: The Stonevault + [82498] = { questType = 'weekly', log = true }, -- Worldsoul: Darkflame Cleft + [82499] = { questType = 'weekly', log = true }, -- Worldsoul: Priory of the Sacred Flame + [82500] = { questType = 'weekly', log = true }, -- Worldsoul: The Rookery + [82501] = { questType = 'weekly', log = true }, -- Worldsoul: The Dawnbreaker + [82502] = { questType = 'weekly', log = true }, -- Worldsoul: Ara-Kara, City of Echoes + [82503] = { questType = 'weekly', log = true }, -- Worldsoul: Cinderbrew Meadery + [82504] = { questType = 'weekly', log = true }, -- Worldsoul: City of Threads + [82505] = { questType = 'weekly', log = true }, -- Worldsoul: The Stonevault + [82506] = { questType = 'weekly', log = true }, -- Worldsoul: Darkflame Cleft + [82507] = { questType = 'weekly', log = true }, -- Worldsoul: Priory of the Sacred Flame + [82508] = { questType = 'weekly', log = true }, -- Worldsoul: The Rookery + [82509] = { questType = 'weekly', log = true }, -- Worldsoul: Nerub-ar Palace + [82510] = { questType = 'weekly', log = true }, -- Worldsoul: Nerub-ar Palace + [82511] = { questType = 'weekly', log = true }, -- Worldsoul: Awakening Machine + [82512] = { questType = 'weekly', log = true }, -- Worldsoul: World Boss + [82516] = { questType = 'weekly', log = true }, -- Worldsoul: Forging a Pact + [82659] = { questType = 'weekly', log = true }, -- Worldsoul: Nerub-ar Palace - [82746] = {questType = 'weekly', log = true}, -- Delves: Breaking Tough to Loot Stuff - [82712] = {questType = 'weekly', log = true}, -- Delves: Trouble Up and Down Khaz Algar - [82711] = {questType = 'weekly', log = true}, -- Delves: Lost and Found - [82709] = {questType = 'weekly', log = true}, -- Delves: Percussive Archaeology - [82706] = {questType = 'weekly', log = true}, -- Delves: Khaz Algar Research - [82707] = {questType = 'weekly', log = true}, -- Delves: Earthen Defense - [82708] = {questType = 'weekly', log = true}, -- Delves: Nerubian Menace - [82678] = {questType = 'weekly', log = true}, -- Archives: The First Disc - [82679] = {questType = 'weekly', log = true}, -- Archives: Seeking History - }, - weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later + [82746] = { questType = 'weekly', log = true }, -- Delves: Breaking Tough to Loot Stuff + [82712] = { questType = 'weekly', log = true }, -- Delves: Trouble Up and Down Khaz Algar + [82711] = { questType = 'weekly', log = true }, -- Delves: Lost and Found + [82709] = { questType = 'weekly', log = true }, -- Delves: Percussive Archaeology + [82706] = { questType = 'weekly', log = true }, -- Delves: Khaz Algar Research + [82707] = { questType = 'weekly', log = true }, -- Delves: Earthen Defense + [82708] = { questType = 'weekly', log = true }, -- Delves: Nerubian Menace + [82678] = { questType = 'weekly', log = true }, -- Archives: The First Disc + [82679] = { questType = 'weekly', log = true }, -- Archives: Seeking History + }, + weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later }, archaic_cypher_key = { - [84370] = {questType = 'weekly', warband = true, log = true}, -- The Key to Success + [84370] = { questType = 'weekly', warband = true, log = true }, -- The Key to Success }, the_theater_troupe = { - [83240] = {questType = 'weekly', warband = true, log = true}, -- The Theater Troupe - }, + [83240] = { questType = 'weekly', warband = true, log = true }, -- The Theater Troupe + }, rollin_down_in_the_deeps = { - [82946] = {questType = 'weekly', warband = true, log = true}, -- Rollin' Down in the Deeps (Digging) + [82946] = { questType = 'weekly', warband = true, log = true }, -- Rollin' Down in the Deeps (Digging) }, gearing_up_for_trouble = { - [83333] = {questType = 'weekly', log = true}, -- Gearing Up for Trouble (Awakening the Machine Weekly) + [83333] = { questType = 'weekly', log = true }, -- Gearing Up for Trouble (Awakening the Machine Weekly) }, awakening_the_machine = { - [84642] = {questType = 'weekly', warband = true, name = "1st Cache"}, -- cache 1 - [84644] = {questType = 'weekly', warband = true, name = "2nd Cache"}, -- cache 2 - [84646] = {questType = 'weekly', warband = true, name = "3rd Cache"}, -- cache 3 - [84647] = {questType = 'weekly', warband = true, name = "4th Cache"}, -- cache 4 + [84642] = { questType = 'weekly', warband = true, name = "1st Cache" }, -- cache 1 + [84644] = { questType = 'weekly', warband = true, name = "2nd Cache" }, -- cache 2 + [84646] = { questType = 'weekly', warband = true, name = "3rd Cache" }, -- cache 3 + [84647] = { questType = 'weekly', warband = true, name = "4th Cache" }, -- cache 4 }, spreading_the_light = { - [76586] = {questType = 'weekly', warband = true, log = true}, -- Hallowfall Event in Dunelle's Kindness + [76586] = { questType = 'weekly', warband = true, log = true }, -- Hallowfall Event in Dunelle's Kindness }, lesser_keyflame_weeklies = { - [76169] = {questType = 'weekly', warband = true, log = true}, -- Glow in the Dark - [76394] = {questType = 'weekly', warband = true, log = true}, -- Shadows of Flavor - [76600] = {questType = 'weekly', warband = true, log = true}, -- Right Between the Gyro-Optics - [76733] = {questType = 'weekly', warband = true, log = true}, -- Tater Trawl - [76997] = {questType = 'weekly', warband = true, log = true}, -- Lost in Shadows - [78656] = {questType = 'weekly', warband = true, log = true}, -- Hose It Down - [78915] = {questType = 'weekly', warband = true, log = true}, -- Squashing the Threat - [78933] = {questType = 'weekly', warband = true, log = true}, -- The Sweet Eclipse - [78972] = {questType = 'weekly', warband = true, log = true}, -- Harvest Havoc - [79158] = {questType = 'weekly', warband = true, log = true}, -- Seeds of Salvation - [79173] = {questType = 'weekly', warband = true, log = true}, -- Supply the Effort - [79216] = {questType = 'weekly', warband = true, log = true}, -- Web of Manipulation - [79346] = {questType = 'weekly', warband = true, log = true}, -- Chew On That - [80004] = {questType = 'weekly', warband = true, log = true}, -- Crab Grab - [80562] = {questType = 'weekly', warband = true, log = true}, -- Blossoming Delight - [81574] = {questType = 'weekly', warband = true, log = true}, -- Sporadic Growth - [81632] = {questType = 'weekly', warband = true, log = true}, -- Lizard Looters - }, - greater_keyflame_weeklies = { -- not added to default categories because shit rewards - [78590] = {questType = 'weekly', log = true}, -- Cutting Edge - [78657] = {questType = 'weekly', log = true}, -- The Midnight Sentry - [79329] = {questType = 'weekly', log = true}, -- Glowing Harvest - [79380] = {questType = 'weekly', log = true}, -- Bog Beast Banishment - [79469] = {questType = 'weekly', log = true}, -- Lurking Below - [79470] = {questType = 'weekly', log = true}, -- Waters of War - [79471] = {questType = 'weekly', log = true}, -- Bleak Sand + [76169] = { questType = 'weekly', warband = true, log = true }, -- Glow in the Dark + [76394] = { questType = 'weekly', warband = true, log = true }, -- Shadows of Flavor + [76600] = { questType = 'weekly', warband = true, log = true }, -- Right Between the Gyro-Optics + [76733] = { questType = 'weekly', warband = true, log = true }, -- Tater Trawl + [76997] = { questType = 'weekly', warband = true, log = true }, -- Lost in Shadows + [78656] = { questType = 'weekly', warband = true, log = true }, -- Hose It Down + [78915] = { questType = 'weekly', warband = true, log = true }, -- Squashing the Threat + [78933] = { questType = 'weekly', warband = true, log = true }, -- The Sweet Eclipse + [78972] = { questType = 'weekly', warband = true, log = true }, -- Harvest Havoc + [79158] = { questType = 'weekly', warband = true, log = true }, -- Seeds of Salvation + [79173] = { questType = 'weekly', warband = true, log = true }, -- Supply the Effort + [79216] = { questType = 'weekly', warband = true, log = true }, -- Web of Manipulation + [79346] = { questType = 'weekly', warband = true, log = true }, -- Chew On That + [80004] = { questType = 'weekly', warband = true, log = true }, -- Crab Grab + [80562] = { questType = 'weekly', warband = true, log = true }, -- Blossoming Delight + [81574] = { questType = 'weekly', warband = true, log = true }, -- Sporadic Growth + [81632] = { questType = 'weekly', warband = true, log = true }, -- Lizard Looters + }, + greater_keyflame_weeklies = { -- not added to default categories because shit rewards + [78590] = { questType = 'weekly', log = true }, -- Cutting Edge + [78657] = { questType = 'weekly', log = true }, -- The Midnight Sentry + [79329] = { questType = 'weekly', log = true }, -- Glowing Harvest + [79380] = { questType = 'weekly', log = true }, -- Bog Beast Banishment + [79469] = { questType = 'weekly', log = true }, -- Lurking Below + [79470] = { questType = 'weekly', log = true }, -- Waters of War + [79471] = { questType = 'weekly', log = true }, -- Bleak Sand }, severed_threads_pact_chosen = { - [80544] = {questType = 'weekly', warband = true, log = true}, -- Eyes of the Weaver + [80544] = { questType = 'weekly', warband = true, log = true }, -- Eyes of the Weaver }, severed_threads_pact_weekly = { - [80670] = {questType = 'weekly', warband = true, log = true}, -- Eyes of the Weaver - [80671] = {questType = 'weekly', warband = true, log = true}, -- Blade of the General - [80672] = {questType = 'weekly', warband = true, log = true}, -- Hand of the Vizier + [80670] = { questType = 'weekly', warband = true, log = true }, -- Eyes of the Weaver + [80671] = { questType = 'weekly', warband = true, log = true }, -- Blade of the General + [80672] = { questType = 'weekly', warband = true, log = true }, -- Hand of the Vizier }, weekly_delve_reputation = { - [83317] = {questType = 'weekly', warband = 'unique', name = 'Council of Dornogal'}, - [83318] = {questType = 'weekly', warband = 'unique', name = 'Assembly of the Deeps'}, - [83320] = {questType = 'weekly', warband = 'unique', name = 'Hallowfall Arathi'}, - [83319] = {questType = 'weekly', warband = 'unique', name = 'Severed Threads'}, + [83317] = { questType = 'weekly', warband = 'unique', name = 'Council of Dornogal' }, + [83318] = { questType = 'weekly', warband = 'unique', name = 'Assembly of the Deeps' }, + [83320] = { questType = 'weekly', warband = 'unique', name = 'Hallowfall Arathi' }, + [83319] = { questType = 'weekly', warband = 'unique', name = 'Severed Threads' }, }, weekly_coffer_keys = { - [84736] = {questType = 'weekly'}, - [84737] = {questType = 'weekly'}, - [84738] = {questType = 'weekly'}, - [84739] = {questType = 'weekly'}, + [84736] = { questType = 'weekly' }, + [84737] = { questType = 'weekly' }, + [84738] = { questType = 'weekly' }, + [84739] = { questType = 'weekly' }, }, -- Weekly Rares isle_of_dorne_rares = { - [84037] = {questType = 'weekly', warband = true, name = 'Tephratennae'}, -- (daily: 81923) - [84031] = {questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain'}, -- (daily: 81902) - [84032] = {questType = 'weekly', warband = true, name = 'Shallowshell the Clacker'}, -- (daily: 81903) - [84036] = {questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix'}, -- (daily: 81920) - [84029] = {questType = 'weekly', warband = true, name = 'Escaped Cutthroat'}, -- (daily: 81907) - [84039] = {questType = 'weekly', warband = true, name = 'Matriarch Charfuria'}, -- (daily: 81921) - [84030] = {questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus'}, -- (daily: 81901) - [84028] = {questType = 'weekly', warband = true, name = 'Gar\'loc'}, -- (daily: 81899) - [84033] = {questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched'}, -- (daily: 81904) - [84034] = {questType = 'weekly', warband = true, name = 'Flamekeeper Graz'}, -- (daily: 81905) - [84026] = {questType = 'weekly', warband = true, name = 'Plaguehart'}, -- (daily: 81897) - [84038] = {questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful'}, -- (daily: 81922) + [84037] = { questType = 'weekly', warband = true, name = 'Tephratennae' }, -- (daily: 81923) + [84031] = { questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain' }, -- (daily: 81902) + [84032] = { questType = 'weekly', warband = true, name = 'Shallowshell the Clacker' }, -- (daily: 81903) + [84036] = { questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix' }, -- (daily: 81920) + [84029] = { questType = 'weekly', warband = true, name = 'Escaped Cutthroat' }, -- (daily: 81907) + [84039] = { questType = 'weekly', warband = true, name = 'Matriarch Charfuria' }, -- (daily: 81921) + [84030] = { questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus' }, -- (daily: 81901) + [84028] = { questType = 'weekly', warband = true, name = 'Gar\'loc' }, -- (daily: 81899) + [84033] = { questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched' }, -- (daily: 81904) + [84034] = { questType = 'weekly', warband = true, name = 'Flamekeeper Graz' }, -- (daily: 81905) + [84026] = { questType = 'weekly', warband = true, name = 'Plaguehart' }, -- (daily: 81897) + [84038] = { questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful' }, -- (daily: 81922) }, ringing_deeps_rares = { - [84046] = {questType = 'weekly', warband = true, name = 'Automaxor'}, -- (daily: 81674) - [84044] = {questType = 'weekly', warband = true, name = 'Charmonger'}, -- (daily: 81562) - [84042] = {questType = 'weekly', warband = true, name = 'Cragmund'}, -- (daily: 80560) - [84041] = {questType = 'weekly', warband = true, name = 'Zilthara'}, -- (daily: 80506) - [84045] = {questType = 'weekly', warband = true, name = 'Coalesced Monstrosity'}, -- (daily: 81511) - [84040] = {questType = 'weekly', warband = true, name = 'Terror of the Forge'}, -- (daily: 80507) - [84047] = {questType = 'weekly', warband = true, name = 'Kelpmire'}, -- (daily: 81485) - [84043] = {questType = 'weekly', warband = true, name = 'Trungal'}, -- (daily: 80574) - [84049] = {questType = 'weekly', warband = true, name = 'Spore-infused Shalewing'}, -- (daily: 81652) - [84048] = {questType = 'weekly', warband = true, name = 'Hungerer of the Deeps'}, -- (daily: 81648) - [84050] = {questType = 'weekly', warband = true, name = 'Disturbed Earthgorger'}, -- (daily: 80003) - }, - hallowfall_rares = { - [84063] = {questType = 'weekly', warband = true, name = 'Lytfang the Lost'}, -- (daily: 81756) - [84051] = {questType = 'weekly', warband = true, name = 'Moth\'ethk'}, -- (daily: 82557) - [84064] = {questType = 'weekly', warband = true, name = 'The Perchfather'}, -- (daily: 81791) - [84061] = {questType = 'weekly', warband = true, name = 'The Taskmaker'}, -- (daily: 80009) - [84066] = {questType = 'weekly', warband = true, name = 'Strength of Beledar'}, -- (daily: 81849) - [84060] = {questType = 'weekly', warband = true, name = 'Murkspike'}, -- (daily: 82565) - [84053] = {questType = 'weekly', warband = true, name = 'Deathpetal'}, -- (daily: 82559) - [84056] = {questType = 'weekly', warband = true, name = 'Duskshadow'}, -- (daily: 82562) - [84067] = {questType = 'weekly', warband = true, name = 'Sir Alastair Purefire'}, -- (daily: 81853) - [84065] = {questType = 'weekly', warband = true, name = 'Horror of the Shallows'}, -- (daily: 81836) - [84062] = {questType = 'weekly', warband = true, name = 'Sloshmuck'}, -- (daily: 79271) - [84054] = {questType = 'weekly', warband = true, name = 'Croakit'}, -- (daily: 82560) - [84068] = {questType = 'weekly', warband = true, name = 'Pride of Beledar'}, -- (daily: 81882) - [84052] = {questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker'}, -- (daily: 82558) - [84055] = {questType = 'weekly', warband = true, name = 'Toadstomper'}, -- (daily: 82561) - [84059] = {questType = 'weekly', warband = true, name = 'Finclaw Bloodtide'}, -- (daily: 82564) - [84058] = {questType = 'weekly', warband = true, name = 'Ravageant'}, -- (daily: 82566) - [84057] = {questType = 'weekly', warband = true, name = 'Parasidious'}, -- (daily: 82563) + [84046] = { questType = 'weekly', warband = true, name = 'Automaxor' }, -- (daily: 81674) + [84044] = { questType = 'weekly', warband = true, name = 'Charmonger' }, -- (daily: 81562) + [84042] = { questType = 'weekly', warband = true, name = 'Cragmund' }, -- (daily: 80560) + [84041] = { questType = 'weekly', warband = true, name = 'Zilthara' }, -- (daily: 80506) + [84045] = { questType = 'weekly', warband = true, name = 'Coalesced Monstrosity' }, -- (daily: 81511) + [84040] = { questType = 'weekly', warband = true, name = 'Terror of the Forge' }, -- (daily: 80507) + [84047] = { questType = 'weekly', warband = true, name = 'Kelpmire' }, -- (daily: 81485) + [84043] = { questType = 'weekly', warband = true, name = 'Trungal' }, -- (daily: 80574) + [84049] = { questType = 'weekly', warband = true, name = 'Spore-infused Shalewing' }, -- (daily: 81652) + [84048] = { questType = 'weekly', warband = true, name = 'Hungerer of the Deeps' }, -- (daily: 81648) + [84050] = { questType = 'weekly', warband = true, name = 'Disturbed Earthgorger' }, -- (daily: 80003) + }, + hallowfall_rares = { + [84063] = { questType = 'weekly', warband = true, name = 'Lytfang the Lost' }, -- (daily: 81756) + [84051] = { questType = 'weekly', warband = true, name = 'Moth\'ethk' }, -- (daily: 82557) + [84064] = { questType = 'weekly', warband = true, name = 'The Perchfather' }, -- (daily: 81791) + [84061] = { questType = 'weekly', warband = true, name = 'The Taskmaker' }, -- (daily: 80009) + [84066] = { questType = 'weekly', warband = true, name = 'Strength of Beledar' }, -- (daily: 81849) + [84060] = { questType = 'weekly', warband = true, name = 'Murkspike' }, -- (daily: 82565) + [84053] = { questType = 'weekly', warband = true, name = 'Deathpetal' }, -- (daily: 82559) + [84056] = { questType = 'weekly', warband = true, name = 'Duskshadow' }, -- (daily: 82562) + [84067] = { questType = 'weekly', warband = true, name = 'Sir Alastair Purefire' }, -- (daily: 81853) + [84065] = { questType = 'weekly', warband = true, name = 'Horror of the Shallows' }, -- (daily: 81836) + [84062] = { questType = 'weekly', warband = true, name = 'Sloshmuck' }, -- (daily: 79271) + [84054] = { questType = 'weekly', warband = true, name = 'Croakit' }, -- (daily: 82560) + [84068] = { questType = 'weekly', warband = true, name = 'Pride of Beledar' }, -- (daily: 81882) + [84052] = { questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker' }, -- (daily: 82558) + [84055] = { questType = 'weekly', warband = true, name = 'Toadstomper' }, -- (daily: 82561) + [84059] = { questType = 'weekly', warband = true, name = 'Finclaw Bloodtide' }, -- (daily: 82564) + [84058] = { questType = 'weekly', warband = true, name = 'Ravageant' }, -- (daily: 82566) + [84057] = { questType = 'weekly', warband = true, name = 'Parasidious' }, -- (daily: 82563) }, azj_kahet_rares = { - [84071] = {questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler'}, -- (daily: 81702) - [84072] = {questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700'}, -- (daily: 81703) - [84075] = {questType = 'weekly', warband = true, name = 'Maddened Siegebomber'}, -- (daily: 81706) - [84073] = {questType = 'weekly', warband = true, name = 'Cha\'tak'}, -- (daily: 81704) - [84076] = {questType = 'weekly', warband = true, name = 'Enduring Gutterface'}, -- (daily: 81707) - [84074] = {questType = 'weekly', warband = true, name = 'Monstrous Lasharoth'}, -- (daily: 81705) - [84080] = {questType = 'weekly', warband = true, name = 'Umbraclaw Matra'}, -- (daily: 82037) - [84082] = {questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk'}, -- (daily: 82078) - [84081] = {questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh'}, -- (daily: 82077) - [84079] = {questType = 'weekly', warband = true, name = 'Harvester Qixt'}, -- (daily: 82036) - [84078] = {questType = 'weekly', warband = true, name = 'The Oozekhan'}, -- (daily: 82035) - [84077] = {questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed'}, -- (daily: 82034) - [84069] = {questType = 'weekly', warband = true, name = 'The Groundskeeper'}, -- (daily: 81634) - [84070] = {questType = 'weekly', warband = true, name = 'Xishorr'}, -- (daily: 81701) + [84071] = { questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler' }, -- (daily: 81702) + [84072] = { questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700' }, -- (daily: 81703) + [84075] = { questType = 'weekly', warband = true, name = 'Maddened Siegebomber' }, -- (daily: 81706) + [84073] = { questType = 'weekly', warband = true, name = 'Cha\'tak' }, -- (daily: 81704) + [84076] = { questType = 'weekly', warband = true, name = 'Enduring Gutterface' }, -- (daily: 81707) + [84074] = { questType = 'weekly', warband = true, name = 'Monstrous Lasharoth' }, -- (daily: 81705) + [84080] = { questType = 'weekly', warband = true, name = 'Umbraclaw Matra' }, -- (daily: 82037) + [84082] = { questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk' }, -- (daily: 82078) + [84081] = { questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh' }, -- (daily: 82077) + [84079] = { questType = 'weekly', warband = true, name = 'Harvester Qixt' }, -- (daily: 82036) + [84078] = { questType = 'weekly', warband = true, name = 'The Oozekhan' }, -- (daily: 82035) + [84077] = { questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed' }, -- (daily: 82034) + [84069] = { questType = 'weekly', warband = true, name = 'The Groundskeeper' }, -- (daily: 81634) + [84070] = { questType = 'weekly', warband = true, name = 'Xishorr' }, -- (daily: 81701) }, one_time_reputation_rares = { - [85158] = {questType = 'weekly', warband = true, name = 'Alunira', achievementID = 40435, criteriaID = 68225}, -- Isle of Dorne (daily: 82196) - [85160] = {questType = 'weekly', warband = true, name = 'Kereke', achievementID = 40435, criteriaID = 68227}, -- Isle of Dorne (daily: 82204) - [85161] = {questType = 'weekly', warband = true, name = 'Zovex', achievementID = 40435, criteriaID = 68226}, -- Isle of Dorne (daily: 82203) - [85159] = {questType = 'weekly', warband = true, name = 'Rotfist', achievementID = 40435, criteriaID = 68228}, -- Isle of Dorne (daily: 82205) - [85162] = {questType = 'weekly', warband = true, name = 'Deepflayer Broodmother', achievementID = 40837, criteriaID = 69636}, -- Ringing Deeps (daily: 80536) - [85163] = {questType = 'weekly', warband = true, name = 'Lurker of the Deeps', achievementID = 40837, criteriaID = 69637}, -- Ringing Deeps (daily: 81633) - [85164] = {questType = 'weekly', warband = true, name = 'Beledar\'s Spawn', achievementID = 40851, criteriaID = 69716}, -- Hallowfall (daily: 81763) - [85165] = {questType = 'weekly', warband = true, name = 'Deathtide', achievementID = 40851, criteriaID = 69717}, -- Hallowfall (daily: 81880) - [85167] = {questType = 'weekly', warband = true, name = 'The One Left'}, -- Azj-kahet (daily: 82290) - [85166] = {questType = 'weekly', warband = true, name = 'Tka\'ktath'}, -- Azj-kahet (daily: 82289) + [85158] = { questType = 'weekly', warband = true, name = 'Alunira', achievementID = 40435, criteriaID = 68225 }, -- Isle of Dorne (daily: 82196) + [85160] = { questType = 'weekly', warband = true, name = 'Kereke', achievementID = 40435, criteriaID = 68227 }, -- Isle of Dorne (daily: 82204) + [85161] = { questType = 'weekly', warband = true, name = 'Zovex', achievementID = 40435, criteriaID = 68226 }, -- Isle of Dorne (daily: 82203) + [85159] = { questType = 'weekly', warband = true, name = 'Rotfist', achievementID = 40435, criteriaID = 68228 }, -- Isle of Dorne (daily: 82205) + [85162] = { questType = 'weekly', warband = true, name = 'Deepflayer Broodmother', achievementID = 40837, criteriaID = 69636 }, -- Ringing Deeps (daily: 80536) + [85163] = { questType = 'weekly', warband = true, name = 'Lurker of the Deeps', achievementID = 40837, criteriaID = 69637 }, -- Ringing Deeps (daily: 81633) + [85164] = { questType = 'weekly', warband = true, name = 'Beledar\'s Spawn', achievementID = 40851, criteriaID = 69716 }, -- Hallowfall (daily: 81763) + [85165] = { questType = 'weekly', warband = true, name = 'Deathtide', achievementID = 40851, criteriaID = 69717 }, -- Hallowfall (daily: 81880) + [85167] = { questType = 'weekly', warband = true, name = 'The One Left' }, -- Azj-kahet (daily: 82290) + [85166] = { questType = 'weekly', warband = true, name = 'Tka\'ktath' }, -- Azj-kahet (daily: 82289) + }, + undermine_rares = { + [84917] = { questType = 'weekly', warband = true, name = 'Scrapbeak' }, -- (daily: 81702) + [84918] = { questType = 'weekly', warband = true, name = 'Ratspit' }, -- (daily: 81703) + [84919] = { questType = 'weekly', warband = true, name = 'Tally Doublespeak' }, -- (daily: 81706) + [84920] = { questType = 'weekly', warband = true, name = 'V.V. Goosworth and Slimesby' }, -- (daily: 81704) + [84921] = { questType = 'weekly', warband = true, name = 'Thwack' }, -- (daily: 81707) + [84922] = { questType = 'weekly', warband = true, name = 'S.A.L.' }, -- (daily: 81705) + [84926] = { questType = 'weekly', warband = true, name = 'Nitro' }, -- (daily: 81705) + [84927] = { questType = 'weekly', warband = true, name = 'Candy Stickemup' }, -- (daily: 82037) + [84928] = { questType = 'weekly', warband = true, name = 'Grimewick' }, -- (daily: 82078) + [85004] = { questType = 'weekly', warband = true, name = 'Swigs Farsight' }, -- (daily: 82077) + [84877] = { questType = 'weekly', warband = true, name = 'Ephemeral Agent Lathyd' }, -- (daily: 82036) + [84884] = { questType = 'weekly', warband = true, name = 'The Junk-Wall' }, -- (daily: 82035) + [84895] = { questType = 'weekly', warband = true, name = 'Slugger the Smart' }, -- (daily: 82034) + [84907] = { questType = 'weekly', warband = true, name = 'Chief Foreman Gutso' }, -- (daily: 81634) + [84911] = { questType = 'weekly', warband = true, name = 'Flyboy Snooty' }, -- (daily: 81701) + [86298] = { questType = 'weekly', warband = true, name = 'M.A.G.N.O.' }, -- (daily: 81701) + [86307] = { questType = 'weekly', warband = true, name = 'Giovante' }, -- (daily: 81701) + [86431] = { questType = 'weekly', warband = true, name = 'Scrapchewer' }, -- (daily: 81701) + [86428] = { questType = 'weekly', warband = true, name = 'Volstrike the Charged' }, -- (daily: 81701) }, -- Professions knowledge_tww_treasures = { - [83253] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225234}, -- Alchemical Sediment - [83255] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225235}, -- Deepstone Crucible - [83256] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225233}, -- Dense Bladestone - [83257] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225232}, -- Coreway Billet - [83258] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225231}, -- Powdered Fulgurance - [83259] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225230}, -- Crystalline Repository - [83260] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225228}, -- Rust-Locked Mechanism - [83261] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225229}, -- Earthen Induction Coil - [83264] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225226}, -- Striated Inkstone - [83262] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225227}, -- Wax-sealed Records - [83265] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225224}, -- Diaphanous Gem Shards - [83266] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225225}, -- Deepstone Fragment - [83268] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225222}, -- Stone-Leather Swatch - [83267] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225223}, -- Sturdy Nerubian Carapace - [83270] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225220}, -- Chitin Needle - [83269] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225221}, -- Spool of Webweave + [83253] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225234 }, -- Alchemical Sediment + [83255] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225235 }, -- Deepstone Crucible + [83256] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225233 }, -- Dense Bladestone + [83257] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225232 }, -- Coreway Billet + [83258] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225231 }, -- Powdered Fulgurance + [83259] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225230 }, -- Crystalline Repository + [83260] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225228 }, -- Rust-Locked Mechanism + [83261] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225229 }, -- Earthen Induction Coil + [83264] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225226 }, -- Striated Inkstone + [83262] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225227 }, -- Wax-sealed Records + [83265] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225224 }, -- Diaphanous Gem Shards + [83266] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225225 }, -- Deepstone Fragment + [83268] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225222 }, -- Stone-Leather Swatch + [83267] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225223 }, -- Sturdy Nerubian Carapace + [83270] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225220 }, -- Chitin Needle + [83269] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225221 }, -- Spool of Webweave }, knowledge_tww_treatise = { - [83725] = {questType = 'weekly', skillLineID = 171, profession = 'Alchemy'}, - [83726] = {questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing'}, - [83727] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, - [83728] = {questType = 'weekly', skillLineID = 202, profession = 'Engineering'}, - [83730] = {questType = 'weekly', skillLineID = 773, profession = 'Inscription'}, - [83731] = {questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting'}, - [83732] = {questType = 'weekly', skillLineID = 165, profession = 'Leatherworking'}, - [83735] = {questType = 'weekly', skillLineID = 197, profession = 'Tailoring'}, - [83729] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, - [83733] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, - [83734] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, + [83725] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy' }, + [83726] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing' }, + [83727] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, + [83728] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering' }, + [83730] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, + [83731] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting' }, + [83732] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking' }, + [83735] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring' }, + [83729] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, + [83733] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, + [83734] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, }, knowledge_tww_gather = { - [81416] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 1 - [81417] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 2 - [81418] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 3 - [81419] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 4 - [81420] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Petal 5 - [81421] = {questType = 'weekly', skillLineID = 182, profession = 'Herbalism'}, -- Deepgrove Rose - - [83050] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 1 - [83051] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 2 - [83052] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 3 - [83053] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 4 - [83054] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Slab of Slate 5 - [83049] = {questType = 'weekly', skillLineID = 186, profession = 'Mining'}, -- Erosion Polished Slate - - [81459] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 1 - [81460] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 2 - [81461] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 3 - [81462] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 4 - [81463] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Toughened Tempest Pelt 5 - [81464] = {questType = 'weekly', skillLineID = 393, profession = 'Skinning'}, -- Abyssal Fur - - [84290] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 1 - [84291] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 2 - [84292] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 3 - [84293] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 4 - [84294] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Fleeting Arcane Manifestation 5 - [84295] = {questType = 'weekly', skillLineID = 333, profession = 'Enchanting'}, -- Gleaming Telluric Crystal + [81416] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 1 + [81417] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 2 + [81418] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 3 + [81419] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 4 + [81420] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 5 + [81421] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Rose + + [83050] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 1 + [83051] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 2 + [83052] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 3 + [83053] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 4 + [83054] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 5 + [83049] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Erosion Polished Slate + + [81459] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 1 + [81460] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 2 + [81461] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 3 + [81462] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 4 + [81463] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 5 + [81464] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Abyssal Fur + + [84290] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 1 + [84291] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 2 + [84292] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 3 + [84293] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 4 + [84294] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 5 + [84295] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Gleaming Telluric Crystal }, knowledge_tww_weeklies_quest = { - [84133] = {questType = 'weekly', log = true}, -- Alchemy - [84127] = {questType = 'weekly', log = true}, -- Blacksmithing - - [84085] = {questType = 'weekly', log = true}, --Enchanting - [84086] = {questType = 'weekly', log = true}, --Enchanting - [84134] = {questType = 'weekly', log = true}, --Enchanting - [84084] = {questType = 'weekly', log = true}, --Enchanting - - [84128] = {questType = 'weekly', log = true}, -- Engineering - [84129] = {questType = 'weekly', log = true}, -- Inscription - [84130] = {questType = 'weekly', log = true}, -- Jewelcrafting - [84131] = {questType = 'weekly', log = true}, -- Leatherworking - [84132] = {questType = 'weekly', log = true}, -- Tailoring - - [82916] = {questType = 'weekly', log = true}, -- Herbalism - [82958] = {questType = 'weekly', log = true}, -- Herbalism - [82962] = {questType = 'weekly', log = true}, -- Herbalism - [82965] = {questType = 'weekly', log = true}, -- Herbalism - [82970] = {questType = 'weekly', log = true}, -- Herbalism - - [83102] = {questType = 'weekly', log = true}, -- Mining - [83103] = {questType = 'weekly', log = true}, -- Mining - [83104] = {questType = 'weekly', log = true}, -- Mining - [83106] = {questType = 'weekly', log = true}, -- Mining - - [82992] = {questType = 'weekly', log = true}, -- Skinning - [82993] = {questType = 'weekly', log = true}, -- Skinning - [83097] = {questType = 'weekly', log = true}, -- Skinning - [83098] = {questType = 'weekly', log = true}, -- Skinning + [84133] = { questType = 'weekly', log = true }, -- Alchemy + [84127] = { questType = 'weekly', log = true }, -- Blacksmithing + + [84085] = { questType = 'weekly', log = true }, --Enchanting + [84086] = { questType = 'weekly', log = true }, --Enchanting + [84134] = { questType = 'weekly', log = true }, --Enchanting + [84084] = { questType = 'weekly', log = true }, --Enchanting + + [84128] = { questType = 'weekly', log = true }, -- Engineering + [84129] = { questType = 'weekly', log = true }, -- Inscription + [84130] = { questType = 'weekly', log = true }, -- Jewelcrafting + [84131] = { questType = 'weekly', log = true }, -- Leatherworking + [84132] = { questType = 'weekly', log = true }, -- Tailoring + + [82916] = { questType = 'weekly', log = true }, -- Herbalism + [82958] = { questType = 'weekly', log = true }, -- Herbalism + [82962] = { questType = 'weekly', log = true }, -- Herbalism + [82965] = { questType = 'weekly', log = true }, -- Herbalism + [82970] = { questType = 'weekly', log = true }, -- Herbalism + + [83102] = { questType = 'weekly', log = true }, -- Mining + [83103] = { questType = 'weekly', log = true }, -- Mining + [83104] = { questType = 'weekly', log = true }, -- Mining + [83106] = { questType = 'weekly', log = true }, -- Mining + + [82992] = { questType = 'weekly', log = true }, -- Skinning + [82993] = { questType = 'weekly', log = true }, -- Skinning + [83097] = { questType = 'weekly', log = true }, -- Skinning + [83098] = { questType = 'weekly', log = true }, -- Skinning }, } @@ -1869,28 +1939,28 @@ PermoksAccountManager.sanctum = { [2] = 308, -- Transport Network [3] = 316, -- Command Table --[4] = 327, -- Resevoir Upgrades - [5] = 320 -- Path of Ascension + [5] = 320 -- Path of Ascension }, [2] = { [1] = 314, -- Anima Conductor [2] = 309, -- Transport Network [3] = 317, -- Command Table --[4] = 326, -- Resevoir Upgrades - [5] = 324 -- Ember Court + [5] = 324 -- Ember Court }, [3] = { [1] = 311, -- Anima Conductor [2] = 307, -- Transport Network [3] = 315, -- Command Table --[4] = 328, -- Resevoir Upgrades - [5] = 319 -- The Queen's Conservatory + [5] = 319 -- The Queen's Conservatory }, [4] = { [1] = 313, -- Anima Conductor [2] = 310, -- Transport Network [3] = 318, -- Command Table --[4] = 329, -- Resevoir Upgrades - [5] = 321 -- Abomination Factory + [5] = 321 -- Abomination Factory } } @@ -1901,38 +1971,38 @@ end PermoksAccountManager.vault_rewards = { -- MythicPlus [Enum.WeeklyRewardChestThresholdType.Activities] = { - [-1] = 593, - [0] = 603, - [2] = 606, - [3] = 610, - [4] = 610, - [5] = 613, - [6] = 613, - [7] = 616, - [8] = 619, - [9] = 619, - [10] = 623, + [-1] = 636, + [0] = 646, + [2] = 649, + [3] = 649, + [4] = 652, + [5] = 652, + [6] = 655, + [7] = 658, + [8] = 658, + [9] = 658, + [10] = 662, }, -- World [Enum.WeeklyRewardChestThresholdType.World] = { - [1] = 584, - [2] = 584, - [3] = 587, - [4] = 597, - [5] = 603, - [6] = 606, - [7] = 610, - [8] = 616, - [9] = 616, - [10] = 616, - [11] = 616, + [1] = 600, + [2] = 600, + [3] = 603, + [4] = 616, + [5] = 623, + [6] = 629, + [7] = 636, + [8] = 642, + [9] = 642, + [10] = 642, + [11] = 642, }, -- Raid [Enum.WeeklyRewardChestThresholdType.Raid] = { - [17] = 584, - [14] = 597, - [15] = 610, - [16] = 623, + [17] = 623, + [14] = 636, + [15] = 649, + [16] = 662, } } @@ -1947,7 +2017,35 @@ PermoksAccountManager.ICONBANKSTRINGS = { } PermoksAccountManager.encounterOrder = { - [2393] = 1, [2429] = 2, [2422] = 3, [2428] = 4, [2418] = 5, [2420] = 6, [2426] = 7, [2394] = 8, [2425] = 9, [2424] = 10, - [2435] = 11, [2442] = 12, [2439] = 13, [2445] = 14, [2444] = 15, [2443] = 16, [2446] = 17, [2447] = 18, [2440] = 19, [2441] = 20, - [2458] = 21, [2459] = 22, [2470] = 23, [2460] = 24, [2465] = 25, [2463] = 26, [2461] = 27, [2469] = 28, [2457] = 29, [2467] = 30, [2464] = 31, + [2393] = 1, + [2429] = 2, + [2422] = 3, + [2428] = 4, + [2418] = 5, + [2420] = 6, + [2426] = 7, + [2394] = 8, + [2425] = 9, + [2424] = 10, + [2435] = 11, + [2442] = 12, + [2439] = 13, + [2445] = 14, + [2444] = 15, + [2443] = 16, + [2446] = 17, + [2447] = 18, + [2440] = 19, + [2441] = 20, + [2458] = 21, + [2459] = 22, + [2470] = 23, + [2460] = 24, + [2465] = 25, + [2463] = 26, + [2461] = 27, + [2469] = 28, + [2457] = 29, + [2467] = 30, + [2464] = 31, } diff --git a/modules.lua b/modules.lua index 597e0e6..376565a 100644 --- a/modules.lua +++ b/modules.lua @@ -72,7 +72,6 @@ local function SetEventScript(charInfo) function(self, event, ...) if functions[event] then --if not charInfo then PermoksAccountManager:Debug("CharInfo is not loaded yet") return end - functions[event](charInfo, ...) end end diff --git a/modules/character.lua b/modules/character.lua index 559e1b0..4195a4a 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -772,7 +772,7 @@ function PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altDat end tooltip:AddLine(string.format("%s:", item.itemSlot), - string.format("|T%d:0|t|c%s[%s]|r [%s]", item.itemTexture, + string.format("|T%d:22|t|c%s[%s]|r [%s]", item.itemTexture, ITEM_QUALITY_COLORS[item.itemQuality].color:GenerateHexColor(), item.itemName, item.itemLevel or "N/A")) end diff --git a/modules/currencies.lua b/modules/currencies.lua index badc961..200703c 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -58,222 +58,215 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, - -- Shadowlands - soul_cinders = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1906].name or 'Soul Cinders' - end, - type = 'currency', - warband = true, - key = 1906, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - soul_ash = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1828].name or 'Soul Ash' - end, - type = 'currency', - warband = true, - key = 1828, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - stygia = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1767].name or 'Stygia' - end, - type = 'currency', - key = 1767, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - tower_knowledge = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1904].name or 'Tower Knowledge' - end, - type = 'currency', - key = 1904, - hideMax = true, - tooltip = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - stygian_ember = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1977].name or 'Stygian Ember' - end, - type = 'currency', - key = 1977, - customTooltip = function(button, alt_data) - PermoksAccountManager:StygianEmbersTooltip_OnEnter(button, alt_data) - end, - tooltip = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - cataloged_research = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1931].name or 'Cataloged Research' - end, - type = 'currency', - warband = true, - key = 1931, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - redeemed_soul = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1810].name or 'Redeemed Soul' - end, - type = 'currency', - customTooltip = function(button, altData, labelRow) - PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) - end, - tooltip = true, - tooltipKeyPath = { 'covenantInfo', 'souls' }, - key = 1810, - group = 'sanctum', - version = WOW_PROJECT_MAINLINE - }, - reservoir_anima = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1813].name or 'Reservoir Anima' - end, - type = 'currency', - customTooltip = function(button, altData, labelRow) - PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) - end, - tooltip = true, - tooltipKeyPath = { 'covenantInfo', 'anima' }, - key = 1813, - hideMax = true, - group = 'sanctum', - version = WOW_PROJECT_MAINLINE - }, - - -- 9.2 - cosmic_flux = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[2009] and - PermoksAccountManager.db.global.currencyInfo[2009].name or 'Cosmic Flux' - end, - type = 'currency', - warband = true, - key = 2009, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - cyphers = { - label = L['Cyphers'], - type = 'currency', - warband = true, - key = 1979, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - catalyst_charges = { - label = L['Catalyst Charges'], - type = 'catalystcharges', - key = 2813, - hideIcon = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - - -- 10.0 - dragon_isles_supplies = { - label = 'Dragon Isles Supplies', - type = 'currency', - warband = true, - key = 2003, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - elemental_overflow = { - label = 'Elemental Overflow', - type = 'currency', - warband = true, - key = 2118, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - bloody_tokens = { - label = 'Bloody Tokens', - type = 'currency', - key = 2123, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - storm_sigil = { - label = 'Storm Sigil', - type = 'currency', - key = 2122, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - - -- 10.1 - flightstones = { - label = 'Flightstones', - type = 'currency', - key = 2245, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - - -- 10.1.5 - paracausal_flakes = { - label = 'Paracausal Flakes', - type = 'currency', - warband = true, - key = 2594, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - - -- 10.2 - emerald_dewdrop = { - label = 'Emerald Dewdrop', - type = 'currency', - key = 2650, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - seedbloom = { - label = 'Seedbloom', - type = 'currency', - key = 2651, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - dream_infusion = { - label = 'Dream Infusion', - type = 'currency', - key = 2777, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, + ---- Shadowlands + --soul_cinders = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1906].name or 'Soul Cinders' + -- end, + -- type = 'currency', + -- warband = true, + -- key = 1906, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --soul_ash = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1828].name or 'Soul Ash' + -- end, + -- type = 'currency', + -- warband = true, + -- key = 1828, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --stygia = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1767].name or 'Stygia' + -- end, + -- type = 'currency', + -- key = 1767, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --tower_knowledge = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1904].name or 'Tower Knowledge' + -- end, + -- type = 'currency', + -- key = 1904, + -- hideMax = true, + -- tooltip = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --stygian_ember = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1977].name or 'Stygian Ember' + -- end, + -- type = 'currency', + -- key = 1977, + -- customTooltip = function(button, alt_data) + -- PermoksAccountManager:StygianEmbersTooltip_OnEnter(button, alt_data) + -- end, + -- tooltip = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --cataloged_research = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1931].name or 'Cataloged Research' + -- end, + -- type = 'currency', + -- warband = true, + -- key = 1931, + -- abbMax = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --redeemed_soul = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1810].name or 'Redeemed Soul' + -- end, + -- type = 'currency', + -- customTooltip = function(button, altData, labelRow) + -- PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) + -- end, + -- tooltip = true, + -- tooltipKeyPath = { 'covenantInfo', 'souls' }, + -- key = 1810, + -- group = 'sanctum', + -- version = WOW_PROJECT_MAINLINE + --}, + --reservoir_anima = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1813].name or 'Reservoir Anima' + -- end, + -- type = 'currency', + -- customTooltip = function(button, altData, labelRow) + -- PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) + -- end, + -- tooltip = true, + -- tooltipKeyPath = { 'covenantInfo', 'anima' }, + -- key = 1813, + -- hideMax = true, + -- group = 'sanctum', + -- version = WOW_PROJECT_MAINLINE + --}, +-- + ---- 9.2 + --cosmic_flux = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[2009] and + -- PermoksAccountManager.db.global.currencyInfo[2009].name or 'Cosmic Flux' + -- end, + -- type = 'currency', + -- warband = true, + -- key = 2009, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --cyphers = { + -- label = L['Cyphers'], + -- type = 'currency', + -- warband = true, + -- key = 1979, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, +-- +-- + ---- 10.0 + --dragon_isles_supplies = { + -- label = 'Dragon Isles Supplies', + -- type = 'currency', + -- warband = true, + -- key = 2003, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --elemental_overflow = { + -- label = 'Elemental Overflow', + -- type = 'currency', + -- warband = true, + -- key = 2118, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --bloody_tokens = { + -- label = 'Bloody Tokens', + -- type = 'currency', + -- key = 2123, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --storm_sigil = { + -- label = 'Storm Sigil', + -- type = 'currency', + -- key = 2122, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, +-- + ---- 10.1 + --flightstones = { + -- label = 'Flightstones', + -- type = 'currency', + -- key = 2245, + -- abbMax = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, +-- + ---- 10.1.5 + --paracausal_flakes = { + -- label = 'Paracausal Flakes', + -- type = 'currency', + -- warband = true, + -- key = 2594, + -- abbMax = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, +-- + ---- 10.2 + --emerald_dewdrop = { + -- label = 'Emerald Dewdrop', + -- type = 'currency', + -- key = 2650, + -- passRow = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --seedbloom = { + -- label = 'Seedbloom', + -- type = 'currency', + -- key = 2651, + -- passRow = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --dream_infusion = { + -- label = 'Dream Infusion', + -- type = 'currency', + -- key = 2777, + -- passRow = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, -- 11.0 - champion_crest = { + veteran_crest = { label = 'Veteran Crests', type = 'crestcurrency', - key = 2914, + key = 3107, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, - veteran_crest = { + normal_crest = { label = 'Normal Crests', type = 'crestcurrency', - key = 2915, + key = 3108, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -281,7 +274,7 @@ local labelRows = { hero_crest = { label = 'Hero Crests', type = 'crestcurrency', - key = 2916, + key = 3109, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -289,7 +282,7 @@ local labelRows = { myth_crest = { label = 'Myth Crests', type = 'crestcurrency', - key = 2917, + key = 3110, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -337,12 +330,43 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, - -- 10.0.5 - bronze_celebration_token = { - label = 'Celebration Token', + -- 11.0.5 + --bronze_celebration_token = { + -- label = 'Celebration Token', + -- type = 'currency', + -- warband = true, + -- key = 3100, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + + -- 11.1 + spark_drops = { + label = 'Spark Cap', type = 'currency', - warband = true, - key = 3100, + key = 3132, + group = 'currency', + version = WOW_PROJECT_MAINLINE, + }, + empty_kajacola_can = { + label = 'Empy Kaja\'Cola', + type = 'currency', + key = 3218, + group = 'currency', + version = WOW_PROJECT_MAINLINE, + }, + vintage_kajacola_can = { + label = 'Vintage Kaja\'Cola', + type = 'currency', + key = 3220, + group = 'currency', + version = WOW_PROJECT_MAINLINE, + }, + catalyst_charges = { + label = L['Catalyst Charges'], + type = 'catalystcharges', + key = 3116, + hideIcon = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, diff --git a/modules/factions.lua b/modules/factions.lua index fb13b90..e13529a 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -306,6 +306,78 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, + -- 11.1 + the_cartels_of_undermine = { + label = function() + return PermoksAccountManager.factions[2653].localName or 'Cartels Undermine' + end, + type = 'faction', + warband = 'unique', + key = 2653, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + bilgewater_cartel = { + label = function() + return PermoksAccountManager.factions[2673].localName or 'Bilgewater' + end, + type = 'faction', + warband = 'unique', + key = 2673, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + blackwater_cartel = { + label = function() + return PermoksAccountManager.factions[2675].localName or 'Blackwater' + end, + type = 'faction', + warband = 'unique', + key = 2675, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + steamwheedle_cartel = { + label = function() + return PermoksAccountManager.factions[2677].localName or 'Steamwheedle' + end, + type = 'faction', + warband = 'unique', + key = 2677, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + venture_company = { + label = function() + return PermoksAccountManager.factions[2671].localName or 'Venture Company' + end, + type = 'faction', + warband = 'unique', + key = 2671, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + gallagio_loyalty_rewards_club = { + label = function() + return PermoksAccountManager.factions[2685].localName or 'Gallagio' + end, + type = 'faction', + warband = 'unique', + key = 2685, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + darkfuse_solutions = { + label = function() + return PermoksAccountManager.factions[2669].localName or 'Darkfuse Solutions' + end, + type = 'faction', + warband = 'unique', + key = 2669, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, + -- wotlk alliance_vanguard = { label = function() diff --git a/modules/instances.lua b/modules/instances.lua index 68e4937..b3c3396 100644 --- a/modules/instances.lua +++ b/modules/instances.lua @@ -44,16 +44,27 @@ local labelRows = { group = 'raids', version = WOW_PROJECT_MAINLINE }, - blackrock_depths_raid = { - label = function() - return PermoksAccountManager.raids[2792].name or 'BRD' + --blackrock_depths_raid = { + -- label = function() + -- return PermoksAccountManager.raids[2792].name or 'BRD' + -- end, + -- id = 2792, + -- type = 'raid', + -- key = 'blackrock_depths_raid', + -- tooltip = true, + -- group = 'raids', + -- version = WOW_PROJECT_MAINLINE + --}, + liberation_of_undermine = { + label = function() + return PermoksAccountManager.raids[2769].name or 'LoU' end, - id = 2792, - type = 'raid', - key = 'blackrock_depths_raid', - tooltip = true, - group = 'raids', - version = WOW_PROJECT_MAINLINE + id = 2769, + type = 'raid', + key = 'liberation_of_undermine', + tooltip = true, + group = 'raids', + version = WOW_PROJECT_MAINLINE }, -- wotlk diff --git a/modules/items.lua b/modules/items.lua index c811773..a9e6f24 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -303,13 +303,25 @@ local labelRows = { group = 'item', version = WOW_PROJECT_MAINLINE }, - timewarped_relic_coffer_key = { - label = 'Timewarped Key', - type = 'reliccofferkey', + --timewarped_relic_coffer_key = { + -- label = 'Timewarped Key', + -- type = 'reliccofferkey', + -- passRow = true, + -- keys = { 231510, 232365, 232366 }, + -- group = 'item', + -- version = WOW_PROJECT_MAINLINE, + --}, + + -- 11.1 + spark_current = { + label = 'Spark - Fortunes', + type = 'spark', passRow = true, - keys = { 231510, 232365, 232366 }, + key = 230906, + reagen = 230905, + reagentRequired = 2, group = 'item', - version = WOW_PROJECT_MAINLINE, + version = WOW_PROJECT_MAINLINE }, -- tbc diff --git a/modules/quests.lua b/modules/quests.lua index 8b274b9..858fdb9 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1206,6 +1206,23 @@ local labelRows = { showAll = true, version = WOW_PROJECT_MAINLINE }, + undermine_rares = { + IDs = {84917, 84918, 84919, 84920, 84921, 84922, 84926, 84927, 84928, 85004, 84877, 84884, 84895, 84907, 84911, 86298, 86307, 86431, 86428}, + label = 'Undermine Rares', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'hidden', + group = 'resetWeekly', + achievementString = "(REP)", + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 19, + showAll = true, + version = WOW_PROJECT_MAINLINE + }, -- professions knowledge_tww_treasures = { label = 'Loot Knowledge', diff --git a/options.lua b/options.lua index a2a0a89..b824463 100644 --- a/options.lua +++ b/options.lua @@ -1990,6 +1990,58 @@ function PermoksAccountManager:AddLabelToDefaultCategory(category, label, custom end end +function PermoksAccountManager:ReplaceLabelOfDefaultCategory(category, oldLabel, newLabel) + local categoryTbl = self.db.global.options.defaultCategories[category] + + if categoryTbl and categoryTbl.childOrder[oldLabel] then + local index = categoryTbl.childOrder[oldLabel] + + if categoryTbl.childs[index] ~= oldLabel then + for i, label in pairs(categoryTbl.childs[index]) do + if label == oldLabel then + index = i + break + end + end + end + + categoryTbl.childOrder[oldLabel] = nil + categoryTbl.childOrder[newLabel] = index + categoryTbl.childs[index] = newLabel + end +end + +function PermoksAccountManager:RemoveLabelFromDefaultCategory(category, label) + local categoryTbl = self.db.global.options.defaultCategories[category] + + if categoryTbl and categoryTbl.childOrder[label] then + categoryTbl.childOrder[label] = nil + + for i, l in pairs(categoryTbl.childs) do + if l == label then + categoryTbl.childs[i] = nil + break + end + end + end +end + +function PermoksAccountManager:FixOrderOfDefaultCategories() + for _, categoryTbl in pairs(self.db.global.options.defaultCategories) do + local newChilds = {} + for _, label in pairs(categoryTbl.childs) do + tinsert(newChilds, label) + end + + categoryTbl.childs = newChilds + + wipe(categoryTbl.childOrder) + for i, label in ipairs(categoryTbl.childs) do + categoryTbl.childOrder[label] = i + end + end +end + function PermoksAccountManager:OptionsToString() local export = {internalVersion = self.db.global.internalVersion, custom = self.db.global.custom, options = self.db.global.options} From c46852e816bc1b2f1e135af72e1fc7077e40a43d Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 25 Feb 2025 21:34:55 +0100 Subject: [PATCH 094/138] 11.1 Update 2 --- PermoksAccountManager.lua | 5 +++ db/db.lua | 32 +++++++++++++++--- modules/currencies.lua | 11 +++--- modules/factions.lua | 70 +++++++++++++++++++++------------------ modules/quests.lua | 16 +++++++++ 5 files changed, 93 insertions(+), 41 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index ff759bd..219942b 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -765,8 +765,13 @@ function PermoksAccountManager:Modernize(oldInternalVersion) end if oldInternalVersion < 7 then + self:AddLabelToDefaultCategory('general', 'veteran_crest') + self:AddLabelToDefaultCategory('general', 'normal_crest') + self:AddLabelToDefaultCategory('general', 'hero_crest') + self:AddLabelToDefaultCategory('general', 'myth_crest') self:AddLabelToDefaultCategory('general', 'spark_drops') + self:AddLabelToDefaultCategory('currentweekly', 'undermine_weeklies', 19) self:AddLabelToDefaultCategory('currentweekly', 'undermine_rares') self:AddLabelToDefaultCategory('raid', 'liberation_of_undermine') diff --git a/db/db.lua b/db/db.lua index c17770c..f13f6bc 100644 --- a/db/db.lua +++ b/db/db.lua @@ -16,6 +16,7 @@ local default_categories = { 'valorstones', 'champion_crest', 'veteran_crest', + 'normal_crest', 'hero_crest', 'myth_crest', 'spark_current', @@ -42,10 +43,11 @@ local default_categories = { valorstones = 8, champion_crest = 9, veteran_crest = 10, - hero_crest = 11, - myth_crest = 12, - spark_current = 13, - spark_drops = 14, + normal_crest = 11, + hero_crest = 12, + myth_crest = 13, + spark_current = 14, + spark_drops = 15, -- Probably interesting during the first weeks, might wanna (re-)move later separator2 = 20, @@ -89,6 +91,7 @@ local default_categories = { 'lesser_keyflame_weeklies', 'greater_keyflame_weeklies', 'severed_threads_pact_weekly', + 'undermine_weeklies', 'separator2', 'isle_of_dorne_rares', @@ -115,6 +118,7 @@ local default_categories = { lesser_keyflame_weeklies = 16, greater_keyflame_weeklies = 17, severed_threads_pact_weekly = 18, + undermine_weeklies = 19, separator2 = 20, isle_of_dorne_rares = 21, @@ -1907,6 +1911,26 @@ PermoksAccountManager.quests = { [83097] = { questType = 'weekly', log = true }, -- Skinning [83098] = { questType = 'weekly', log = true }, -- Skinning }, + + -- 11.1 + undermine_weeklies = { + [85869] = { questType = 'weekly', log = true }, + [86775] = { questType = 'weekly', log = true }, + [85879] = { questType = 'weekly', log = true }, + + [85553] = { questType = 'weekly', log = true }, + [85554] = { questType = 'weekly', log = true }, + [85913] = { questType = 'weekly', log = true }, + [85914] = { questType = 'weekly', log = true }, + [85944] = { questType = 'weekly', log = true }, + [85945] = { questType = 'weekly', log = true }, + [85960] = { questType = 'weekly', log = true }, + [85962] = { questType = 'weekly', log = true }, + [86177] = { questType = 'weekly', log = true }, + [86178] = { questType = 'weekly', log = true }, + [86179] = { questType = 'weekly', log = true }, + [86180] = { questType = 'weekly', log = true }, + } } PermoksAccountManager.locale = { diff --git a/modules/currencies.lua b/modules/currencies.lua index 200703c..e460033 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -256,7 +256,7 @@ local labelRows = { -- 11.0 veteran_crest = { - label = 'Veteran Crests', + label = 'Weathered Crests', type = 'crestcurrency', key = 3107, passRow = true, @@ -264,7 +264,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, normal_crest = { - label = 'Normal Crests', + label = 'Carved Crests', type = 'crestcurrency', key = 3108, passRow = true, @@ -272,7 +272,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, hero_crest = { - label = 'Hero Crests', + label = 'Runed Crests', type = 'crestcurrency', key = 3109, passRow = true, @@ -280,7 +280,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, myth_crest = { - label = 'Myth Crests', + label = 'Gilded Crests', type = 'crestcurrency', key = 3110, passRow = true, @@ -346,6 +346,7 @@ local labelRows = { type = 'currency', key = 3132, group = 'currency', + hideIcon = true, version = WOW_PROJECT_MAINLINE, }, empty_kajacola_can = { @@ -737,7 +738,7 @@ function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurr local iconString = '' local options = self.db.global.options local globalCurrencyInfo = self.db.global.currencyInfo[currencyInfo.currencyType] - local currencyIcon = globalCurrencyInfo.icon + local currencyIcon = globalCurrencyInfo and globalCurrencyInfo.icon if not hideIcon and currencyIcon and options.currencyIcons then if customIcon then iconString = string.format('\124T%s:%d:%d:%d:%d\124t', customIcon.path or currencyIcon, diff --git a/modules/factions.lua b/modules/factions.lua index e13529a..9889cfb 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -3,20 +3,21 @@ local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local FACTION_STANDING_LABEL_CUSTOM = {} local FACTION_BAR_COLORS_CUSTOM = { - [1] = {r = 152, g = 32, b = 32}, - [2] = {r = 222, g = 0, b = 10}, - [3] = {r = 209, g = 102, b = 33}, - [4] = {r = 222, g = 255, b = 10}, - [5] = {r = 7, g = 255, b = 13}, - [6] = {r = 10, g = 222, b = 136}, - [7] = {r = 18, g = 224, b = 204}, - [8] = {r = 5, g = 255, b = 189}, + [1] = { r = 152, g = 32, b = 32 }, + [2] = { r = 222, g = 0, b = 10 }, + [3] = { r = 209, g = 102, b = 33 }, + [4] = { r = 222, g = 255, b = 10 }, + [5] = { r = 7, g = 255, b = 13 }, + [6] = { r = 10, g = 222, b = 136 }, + [7] = { r = 18, g = 224, b = 204 }, + [8] = { r = 5, g = 255, b = 189 }, } do for standingID, color in pairs(FACTION_BAR_COLORS) do - FACTION_BAR_COLORS_CUSTOM[standingID] = FACTION_BAR_COLORS_CUSTOM[standingID] or {r = color.r * 256, g = color.g * 256, b = color.b * 256} + FACTION_BAR_COLORS_CUSTOM[standingID] = FACTION_BAR_COLORS_CUSTOM[standingID] or + { r = color.r * 256, g = color.g * 256, b = color.b * 256 } end - FACTION_BAR_COLORS_CUSTOM[9] = {r = 16, g = 165, b = 202} + FACTION_BAR_COLORS_CUSTOM[9] = { r = 16, g = 165, b = 202 } for i = 1, 8 do FACTION_STANDING_LABEL_CUSTOM[i] = GetText('FACTION_STANDING_LABEL' .. i) @@ -234,7 +235,7 @@ local labelRows = { key = 2590, group = 'reputation', version = WOW_PROJECT_MAINLINE - }, + }, hallowfall_arathi = { label = function() return PermoksAccountManager.factions[2570].localName or 'Hallowfall Arathi' @@ -244,7 +245,7 @@ local labelRows = { key = 2570, group = 'reputation', version = WOW_PROJECT_MAINLINE - }, + }, the_assembly_of_the_deeps = { label = function() return PermoksAccountManager.factions[2594].localName or 'The Assembly of the Deeps' @@ -254,7 +255,7 @@ local labelRows = { key = 2594, group = 'reputation', version = WOW_PROJECT_MAINLINE - }, + }, the_severed_threads = { label = function() return PermoksAccountManager.factions[2600].localName or 'The Severed Threads' @@ -264,7 +265,7 @@ local labelRows = { key = 2600, group = 'reputation', version = WOW_PROJECT_MAINLINE - }, + }, the_general = { label = function() return PermoksAccountManager.factions[2605].localName or 'The General' @@ -274,7 +275,7 @@ local labelRows = { key = 2605, group = 'reputation', version = WOW_PROJECT_MAINLINE - }, + }, the_vizier = { label = function() return PermoksAccountManager.factions[2607].localName or 'The Vizier' @@ -284,7 +285,7 @@ local labelRows = { key = 2607, group = 'reputation', version = WOW_PROJECT_MAINLINE - }, + }, the_weaver = { label = function() return PermoksAccountManager.factions[2601].localName or 'The Weaver' @@ -294,7 +295,7 @@ local labelRows = { key = 2601, group = 'reputation', version = WOW_PROJECT_MAINLINE - }, + }, brann_bronzebeard = { label = function() return PermoksAccountManager.factions[2640].localName or 'Brann Bronzebeard' @@ -559,7 +560,7 @@ local labelRows = { version = WOW_PROJECT_CATACLYSM_CLASSIC, group = 'reputation' }, - the_ashen_verdict = { + the_ashen_verdict = { label = function() local factionInfo = PermoksAccountManager.factions[1156] return factionInfo.localName or factionInfo.name @@ -705,20 +706,22 @@ local friendshipStandings = { local GetFriendshipReputation = C_GossipInfo and C_GossipInfo.GetFriendshipReputation or GetFriendshipReputation --TODO: Rework after DF launch local function GetFactionOrFriendshipInfo(factionId, factionType) - local hasReward, renown - local name, _, standing, barMin, barMax, barValue + local barMin, barMax, barValue = 0, 0, 0 + local hasReward, renown, name, _, standing if C_Reputation and C_Reputation.GetFactionDataByID then local factionData = C_Reputation.GetFactionDataByID(factionId) - name = factionData.name - standing = factionData.reaction - barMin = factionData.currentReactionThreshold - barMax = factionData.nextReactionThreshold - barValue = factionData.currentStanding - else + if factionData then + name = factionData.name + standing = factionData.reaction + barMin = factionData.currentReactionThreshold + barMax = factionData.nextReactionThreshold + barValue = factionData.currentStanding + end + else name, _, standing, barMin, barMax, barValue = GetFactionInfoByID(factionId) end local isParagon = C_Reputation.IsFactionParagon and C_Reputation.IsFactionParagon(factionId) - + if isParagon then barValue, barMax, _, hasReward = C_Reputation.GetFactionParagonInfo(factionId) barMin, standing, barValue = 0, 9, barValue % barMax @@ -748,7 +751,6 @@ local function GetFactionOrFriendshipInfo(factionId, factionType) end local function UpdateFaction(factionTable, factionId, standing, current, maximum, info, hasReward, renown) - factionTable[factionId] = factionTable[factionId] or {} local faction = factionTable[factionId] faction.standing = standing @@ -808,7 +810,7 @@ local function convertStanding(standing) if friendshipStandings[standing] then return friendshipStandings[standing] else - return standing:sub(1,1) + return standing:sub(1, 1) end end @@ -832,10 +834,14 @@ function PermoksAccountManager:CreateFactionString(factionInfo) standing = factionInfo.standing end - local color = factionInfo.hasReward and 'ff00ff00' or CreateColor(standingColor.r / 255, standingColor.g / 255, standingColor.b / 255):GenerateHexColor() + local color = factionInfo.hasReward and 'ff00ff00' or + CreateColor(standingColor.r / 255, standingColor.g / 255, standingColor.b / 255):GenerateHexColor() if factionInfo.renown then - return string.format('%s - %s /%s', BLUE_FONT_COLOR:WrapTextInColorCode(factionInfo.renown), AbbreviateNumbers(factionInfo.current or 0), AbbreviateNumbers(factionInfo.max or 0)) + return string.format('%s - %s /%s', BLUE_FONT_COLOR:WrapTextInColorCode(factionInfo.renown), + AbbreviateNumbers(factionInfo.current or 0), AbbreviateNumbers(factionInfo.max or 0)) elseif factionInfo.max then - return string.format('|c%s%s|r/%s |cff%02X%02X%02X%s|r', color, AbbreviateLargeNumbers(factionInfo.current or 0), AbbreviateNumbers(factionInfo.max or 0), standingColor.r, standingColor.g, standingColor.b, convertStanding(standing)) + return string.format('|c%s%s|r/%s |cff%02X%02X%02X%s|r', color, AbbreviateLargeNumbers(factionInfo.current or 0), + AbbreviateNumbers(factionInfo.max or 0), standingColor.r, standingColor.g, standingColor.b, + convertStanding(standing)) end end diff --git a/modules/quests.lua b/modules/quests.lua index 858fdb9..b825924 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1223,6 +1223,22 @@ local labelRows = { showAll = true, version = WOW_PROJECT_MAINLINE }, + undermine_weeklies = { + IDS = {85869, 86775, 85879, 85553, 85554, 85913, 85914, 85944, 85945, 85960, 85962, 86177, 86178, 86179, 86180}, + label = 'Undermine Weeklies', + type = 'quest', + questType = 'weekly', + warband = true, + visibility = 'visible', + group = 'resetWeekly', + tooltip = true, + customTooltip = function(...) + PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) + end, + required = 7, + showAll = true, + version = WOW_PROJECT_MAINLINE + }, -- professions knowledge_tww_treasures = { label = 'Loot Knowledge', From b97cab8e0c5ecba04b784d9b907fbca158a54da7 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 26 Feb 2025 16:04:55 +0100 Subject: [PATCH 095/138] Fix Catalyst Charges for 11.1 --- modules/currencies.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index e460033..1d51c75 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -644,15 +644,15 @@ local function CurrencyTransferUpdate(charInfo) end local function UpdateCatalystCharges(charInfo) - if not charInfo.currencyInfo or not charInfo.currencyInfo[2813] then + if not charInfo.currencyInfo or not charInfo.currencyInfo[3116] then UpdateAllCurrencies(charInfo) end - charInfo.currencyInfo[2813].quantity = C_CurrencyInfo.GetCurrencyInfo(2813).quantity + charInfo.currencyInfo[3116].quantity = C_CurrencyInfo.GetCurrencyInfo(3116).quantity end local function CreateCatalystChargeString(currencyInfo) - local catalystCharges = currencyInfo and currencyInfo[2813] + local catalystCharges = currencyInfo and currencyInfo[3116] if not catalystCharges then return '-' end return PermoksAccountManager:CreateFractionString(catalystCharges.quantity, catalystCharges.maxQuantity) From d32926104f55efe352a04b94d99386a49fa6e06e Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 27 Feb 2025 13:59:03 +0100 Subject: [PATCH 096/138] Force crest updates --- db/db.lua | 476 +++++++++++++++++++++++++++--------------------------- 1 file changed, 240 insertions(+), 236 deletions(-) diff --git a/db/db.lua b/db/db.lua index f13f6bc..7856ab8 100644 --- a/db/db.lua +++ b/db/db.lua @@ -507,52 +507,52 @@ PermoksAccountManager.dungeons = { } PermoksAccountManager.item = { - [171276] = { key = 'flask' }, -- Flask - [172045] = { key = 'foodHaste' }, -- Haste Food - [181468] = { key = 'augmentRune' }, -- Rune - [172347] = { key = 'armorKit' }, -- Armor Kit - [171286] = { key = 'oilHeal' }, -- Heal Oil - [171285] = { key = 'oilDPS' }, -- DPS Oil - [171267] = { key = 'potHP' }, -- HP Pot - [172233] = { key = 'drum' }, -- Drum - [171272] = { key = 'potManaInstant' }, -- Mana Pot Instant - [171268] = { key = 'potManaChannel' }, -- Mana Pot Channel - [173049] = { key = 'tome' }, -- Tome - [186017] = { key = 'korthiteCrystal' }, -- Korthite Crystal - [187707] = { key = 'progenitorEssentia' }, -- Progenitor Essentia - [187802] = { key = 'potCosmicHP' }, -- Cosmic HP Pot - [199211] = { key = 'primevalEssence' }, --Primeval Essence - [202196] = { key = 'vaultKey' }, -- Zskera Vault Key - [190453] = { key = 'spark_ingenuity' }, -- Spark of Ingenuity - [199197] = { key = 'spark_ingenuity' }, -- Bottled Essence - [204440] = { key = 'spark_shadowflame' }, -- Spark of Shadowflame - [204717] = { key = 'spark_shadowflame' }, -- Splintered Spark of Shadowflame + [171276] = { key = 'flask' }, -- Flask + [172045] = { key = 'foodHaste' }, -- Haste Food + [181468] = { key = 'augmentRune' }, -- Rune + [172347] = { key = 'armorKit' }, -- Armor Kit + [171286] = { key = 'oilHeal' }, -- Heal Oil + [171285] = { key = 'oilDPS' }, -- DPS Oil + [171267] = { key = 'potHP' }, -- HP Pot + [172233] = { key = 'drum' }, -- Drum + [171272] = { key = 'potManaInstant' }, -- Mana Pot Instant + [171268] = { key = 'potManaChannel' }, -- Mana Pot Channel + [173049] = { key = 'tome' }, -- Tome + [186017] = { key = 'korthiteCrystal' }, -- Korthite Crystal + [187707] = { key = 'progenitorEssentia' }, -- Progenitor Essentia + [187802] = { key = 'potCosmicHP' }, -- Cosmic HP Pot + [199211] = { key = 'primevalEssence' }, --Primeval Essence + [202196] = { key = 'vaultKey' }, -- Zskera Vault Key + [190453] = { key = 'spark_ingenuity' }, -- Spark of Ingenuity + [199197] = { key = 'spark_ingenuity' }, -- Bottled Essence + [204440] = { key = 'spark_shadowflame' }, -- Spark of Shadowflame + [204717] = { key = 'spark_shadowflame' }, -- Splintered Spark of Shadowflame [204715] = { key = 'unearthed_fragrant_coin' }, -- Unearthed Fragrant Coin - [204985] = { key = 'barter_brick' }, -- Barter Brick - [206959] = { key = 'spark_dreams' }, -- Spark of Dreams - [208396] = { key = 'spark_dreams' }, -- Splintered Spark of Dreams - [202171] = { key = 'obsidian_flightstone' }, -- Obsidian Flightstone - [207030] = { key = 'dilated_time_capsule' }, -- Dilated Time Capsule - [209856] = { key = 'dilated_time_pod' }, -- Dilated Time Pod - [207026] = { key = 'dreamsurge_coalescence' }, -- Dreamsurge Coalescence - [208153] = { key = 'dreamsurge_chrysalis' }, -- Dreamsurge Chrysalis - [210254] = { key = 'dreamsurge_cocoon' }, -- Dreamsurge Cocoon - [208066] = { key = 'dreamseeds' }, -- Small Dreamseed - [208067] = { key = 'dreamseeds' }, -- Plump Dreamseed - [208047] = { key = 'dreamseeds' }, -- Gigantic Dreamseed - [211515] = { key = 'spark_awakening' }, -- Splintered Spark of Awakening - [211516] = { key = 'spark_awakening' }, -- Spark of Awakening - [190456] = { key = 'artisans_mettle' }, -- Artisan's Mettle + [204985] = { key = 'barter_brick' }, -- Barter Brick + [206959] = { key = 'spark_dreams' }, -- Spark of Dreams + [208396] = { key = 'spark_dreams' }, -- Splintered Spark of Dreams + [202171] = { key = 'obsidian_flightstone' }, -- Obsidian Flightstone + [207030] = { key = 'dilated_time_capsule' }, -- Dilated Time Capsule + [209856] = { key = 'dilated_time_pod' }, -- Dilated Time Pod + [207026] = { key = 'dreamsurge_coalescence' }, -- Dreamsurge Coalescence + [208153] = { key = 'dreamsurge_chrysalis' }, -- Dreamsurge Chrysalis + [210254] = { key = 'dreamsurge_cocoon' }, -- Dreamsurge Cocoon + [208066] = { key = 'dreamseeds' }, -- Small Dreamseed + [208067] = { key = 'dreamseeds' }, -- Plump Dreamseed + [208047] = { key = 'dreamseeds' }, -- Gigantic Dreamseed + [211515] = { key = 'spark_awakening' }, -- Splintered Spark of Awakening + [211516] = { key = 'spark_awakening' }, -- Spark of Awakening + [190456] = { key = 'artisans_mettle' }, -- Artisan's Mettle --- TWW items - [211297] = { key = 'spark_omens' }, -- Fractured Spark of Omens - [211296] = { key = 'spark_omens' }, -- Spark of Omens - [210814] = { key = 'artisans_acuity' }, -- Artisan's Acuity - [206350] = { key = 'radiant_remnant' }, -- Radiant Remnant - [220520] = { key = 'radiant_echo' }, -- Radiant Echo - [212493] = { key = 'firelight_ruby' }, -- Odd Glob of Wax - [224642] = { key = 'firelight_ruby' }, -- Firelight Ruby - [229899] = { key = 'coffer_key_shard' }, -- Coffer Key Shard + [211297] = { key = 'spark_omens' }, -- Fractured Spark of Omens + [211296] = { key = 'spark_omens' }, -- Spark of Omens + [210814] = { key = 'artisans_acuity' }, -- Artisan's Acuity + [206350] = { key = 'radiant_remnant' }, -- Radiant Remnant + [220520] = { key = 'radiant_echo' }, -- Radiant Echo + [212493] = { key = 'firelight_ruby' }, -- Odd Glob of Wax + [224642] = { key = 'firelight_ruby' }, -- Firelight Ruby + [229899] = { key = 'coffer_key_shard' }, -- Coffer Key Shard [231510] = { key = 'timewarped_relic_coffer_key' }, -- Timewarped Relic Coffer Key LFR [232365] = { key = 'timewarped_relic_coffer_key' }, -- Timewarped Relic Coffer Key Normal [232366] = { key = 'timewarped_relic_coffer_key' }, -- Timewarped Relic Coffer Key Heroic @@ -673,6 +673,10 @@ PermoksAccountManager.currencyCustomOptions = { [2707] = { forceUpdate = true }, [2706] = { forceUpdate = true }, [2708] = { forceUpdate = true }, + [3107] = { forceUpdate = true }, + [3108] = { forceUpdate = true }, + [3109] = { forceUpdate = true }, + [3110] = { forceUpdate = true }, } PermoksAccountManager.research = { @@ -954,7 +958,7 @@ PermoksAccountManager.quests = { [61633] = { covenant = 3, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' }, -- Dreamsong Fenn -- Necrolords [58872] = { covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' }, -- Gieger - [61647] = { covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' } -- Chosen Runecoffer + [61647] = { covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' } -- Chosen Runecoffer }, riftbound_cache = { [64456] = { questType = 'daily' }, @@ -991,7 +995,7 @@ PermoksAccountManager.quests = { jiro_cyphers = { [65144] = { questType = 'daily' }, -- Creatii [65166] = { questType = 'daily' }, -- Genesii - [65167] = { questType = 'daily' } -- Nascii + [65167] = { questType = 'daily' } -- Nascii }, maw_souls = { [61332] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 5 souls @@ -1009,13 +1013,13 @@ PermoksAccountManager.quests = { [61333] = { covenant = 4, questType = 'weekly', log = true }, -- necro 5 souls [62864] = { covenant = 4, questType = 'weekly', log = true }, -- necro 10 souls [62865] = { covenant = 4, questType = 'weekly', log = true }, -- necro 15 souls - [62866] = { covenant = 4, questType = 'weekly', log = true } -- necro 20 souls + [62866] = { covenant = 4, questType = 'weekly', log = true } -- necro 20 souls }, anima_weekly = { [61982] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 1k anima [61981] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 1k anima [61984] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 1k anima - [61983] = { covenant = 4, questType = 'weekly', log = true } -- necro 1k anima + [61983] = { covenant = 4, questType = 'weekly', log = true } -- necro 1k anima }, battle_plans = { [64521] = { questType = 'weekly', log = true } -- Helsworn Battle Plans @@ -1052,7 +1056,7 @@ PermoksAccountManager.quests = { }, tormentors_weekly = { [63854] = { questType = 'weekly' }, -- Tormentors of Torghast - [64122] = { questType = 'weekly' } -- Tormentors of Torghast + [64122] = { questType = 'weekly' } -- Tormentors of Torghast }, tormentors_locations = { [64692] = { questType = 'weekly' }, @@ -1075,7 +1079,7 @@ PermoksAccountManager.quests = { [63824] = { questType = 'weekly' }, -- Kyrian [63543] = { questType = 'weekly' }, -- Necrolord [63822] = { questType = 'weekly' }, -- Venthyr - [63823] = { questType = 'weekly' } -- Nightfae + [63823] = { questType = 'weekly' } -- Nightfae }, assault_vessels = { [64056] = { name = 'Venthyr', total = 2, questType = 'weekly' }, @@ -1201,77 +1205,77 @@ PermoksAccountManager.quests = { [70522] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198975 }, --Leatherworking 1 [70523] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198976 }, --Leatherworking 2 [73138] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 204232 }, --Leatherworking 3 - [70514] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 198967 }, --Enchanting 1 - [70515] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 198968 }, --Enchanting 2 - [73136] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 204224 }, --Enchanting 3 - [70516] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198969 }, --Engineering 1 - [70517] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198970 }, --Engineering 2 - [73165] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 204227 }, --Engineering 3 - [70518] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198971 }, --Inscription 1 - [70519] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198972 }, --Inscription 2 - [73163] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 204229 }, --Inscription 3 - [70524] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198977 }, --Tailoring 1 - [70525] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198978 }, --Tailoring 2 - [73153] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 204225 }, --Tailoring 3 - [70512] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198965 }, --Blacksmithing 1 - [70513] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198966 }, --Blacksmithing 2 - [73161] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 204230 }, --Blacksmithing 3 - [70520] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198973 }, --Jewelcrafting 1 - [70521] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198974 }, --Jewelcrafting 2 - [73168] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 204222 }, --Jewelcrafting 3 - [70504] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198963 }, --Alchemy 1 - [70511] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198964 }, --Alchemy 2 - [73166] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 204226 }, --Alchemy 3 - [71857] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 1 - [71858] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 2 - [71859] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 3 - [71860] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 4 - [71861] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 5 - [71864] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 6 - [70381] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 1 - [70383] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 2 - [70384] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 3 - [70385] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 4 - [70386] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 5 - [70389] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 6 - [72160] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 1 - [72161] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 2 - [72162] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 3 - [72163] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 4 - [72164] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 5 - [72165] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 6 + [70514] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 198967 }, --Enchanting 1 + [70515] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 198968 }, --Enchanting 2 + [73136] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 204224 }, --Enchanting 3 + [70516] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198969 }, --Engineering 1 + [70517] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198970 }, --Engineering 2 + [73165] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 204227 }, --Engineering 3 + [70518] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198971 }, --Inscription 1 + [70519] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198972 }, --Inscription 2 + [73163] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 204229 }, --Inscription 3 + [70524] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198977 }, --Tailoring 1 + [70525] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198978 }, --Tailoring 2 + [73153] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 204225 }, --Tailoring 3 + [70512] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198965 }, --Blacksmithing 1 + [70513] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198966 }, --Blacksmithing 2 + [73161] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 204230 }, --Blacksmithing 3 + [70520] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198973 }, --Jewelcrafting 1 + [70521] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198974 }, --Jewelcrafting 2 + [73168] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 204222 }, --Jewelcrafting 3 + [70504] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198963 }, --Alchemy 1 + [70511] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198964 }, --Alchemy 2 + [73166] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 204226 }, --Alchemy 3 + [71857] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 1 + [71858] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 2 + [71859] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 3 + [71860] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 4 + [71861] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 5 + [71864] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 6 + [70381] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 1 + [70383] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 2 + [70384] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 3 + [70385] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 4 + [70386] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 5 + [70389] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 6 + [72160] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 1 + [72161] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 2 + [72162] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 3 + [72163] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 4 + [72164] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 5 + [72165] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 6 }, knowledge_df_treasures = { - [66375] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193904 }, --Inscription 1 - [66376] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193905 }, --Inscription 2 + [66375] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193904 }, --Inscription 1 + [66376] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193905 }, --Inscription 2 [66384] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 193910 }, --Leatherworking 1 [66385] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 193913 }, --Leatherworking 2 - [66386] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193898 }, --Tailoring 1 - [66387] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193899 }, --Tailoring 2 - [66377] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193900 }, --Enchanting 1 - [66378] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193901 }, --Enchanting 2 - [66381] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192131 }, --Blacksmithing 1 - [66382] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192132 }, --Blacksmithing 2 - [66379] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193902 }, --Engineering 1 - [66380] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193903 }, --Engineering 2 - [66388] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193909 }, --Jewelcrafting 1 - [66389] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193907 }, --Jewelcrafting 2 - [66373] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193891 }, --Alchemy 1 - [66374] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193897 }, --Alchemy 2 + [66386] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193898 }, --Tailoring 1 + [66387] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193899 }, --Tailoring 2 + [66377] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193900 }, --Enchanting 1 + [66378] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193901 }, --Enchanting 2 + [66381] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192131 }, --Blacksmithing 1 + [66382] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192132 }, --Blacksmithing 2 + [66379] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193902 }, --Engineering 1 + [66380] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193903 }, --Engineering 2 + [66388] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193909 }, --Jewelcrafting 1 + [66389] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193907 }, --Jewelcrafting 2 + [66373] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193891 }, --Alchemy 1 + [66374] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193897 }, --Alchemy 2 }, knowledge_df_treatise = { - [74105] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, -- Inscription - [83730] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, -- Inscription 2 - [74106] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Mining - [74107] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Herbalism - [74108] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy' }, -- Alchemy - [74109] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing' }, -- Blacksmithing - [74110] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Enchanting - [74111] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering' }, -- Engineering - [74112] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting' }, -- Jewelcrafting + [74105] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, -- Inscription + [83730] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, -- Inscription 2 + [74106] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Mining + [74107] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Herbalism + [74108] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy' }, -- Alchemy + [74109] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing' }, -- Blacksmithing + [74110] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Enchanting + [74111] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering' }, -- Engineering + [74112] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting' }, -- Jewelcrafting [74113] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking' }, -- Leatherworking - [74114] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Skinning - [74115] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring' }, -- Tailoring + [74114] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Skinning + [74115] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring' }, -- Tailoring }, knowledge_df_weeklies_craft = { [70558] = { questType = 'weekly', log = true }, -- Inscription 1 @@ -1584,10 +1588,10 @@ PermoksAccountManager.quests = { [78428] = { questType = 'weekly', log = true }, }, anniversary_wb = { - [47461] = { questType = 'daily', name = "Kazzak" }, -- Kazzak - [47462] = { questType = 'daily', name = "Azuregos" }, -- Azuregos + [47461] = { questType = 'daily', name = "Kazzak" }, -- Kazzak + [47462] = { questType = 'daily', name = "Azuregos" }, -- Azuregos [47463] = { questType = 'daily', name = "Dragons of Nightmare" }, -- Dragons of Nightmare - [60214] = { questType = 'daily', name = "Doomwalker" }, -- Doomwalker + [60214] = { questType = 'daily', name = "Doomwalker" }, -- Doomwalker }, big_dig = { [79226] = { questType = 'weekly', warband = true, log = true }, @@ -1595,10 +1599,10 @@ PermoksAccountManager.quests = { -- 11.0 The War Within -- Weekly World Activities - tww_world_boss = { -- PLACEHOLDER: wrong quest IDs + tww_world_boss = { -- PLACEHOLDER: wrong quest IDs [999990] = { questType = 'weekly' }, -- Kordac, the Dormant Protector - [83466] = { questType = 'weekly' }, -- Aggregation of Horrors - [83467] = { questType = 'weekly' }, -- Shurrai, Atrocity of the Undersea + [83466] = { questType = 'weekly' }, -- Aggregation of Horrors + [83467] = { questType = 'weekly' }, -- Shurrai, Atrocity of the Undersea [999993] = { questType = 'weekly' }, -- Orta, the Broken Mountain }, worldsoul_weekly = { @@ -1648,7 +1652,7 @@ PermoksAccountManager.quests = { [82678] = { questType = 'weekly', log = true }, -- Archives: The First Disc [82679] = { questType = 'weekly', log = true }, -- Archives: Seeking History }, - weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later + weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later }, archaic_cypher_key = { [84370] = { questType = 'weekly', warband = true, log = true }, -- The Key to Success @@ -1690,14 +1694,14 @@ PermoksAccountManager.quests = { [81574] = { questType = 'weekly', warband = true, log = true }, -- Sporadic Growth [81632] = { questType = 'weekly', warband = true, log = true }, -- Lizard Looters }, - greater_keyflame_weeklies = { -- not added to default categories because shit rewards - [78590] = { questType = 'weekly', log = true }, -- Cutting Edge - [78657] = { questType = 'weekly', log = true }, -- The Midnight Sentry - [79329] = { questType = 'weekly', log = true }, -- Glowing Harvest - [79380] = { questType = 'weekly', log = true }, -- Bog Beast Banishment - [79469] = { questType = 'weekly', log = true }, -- Lurking Below - [79470] = { questType = 'weekly', log = true }, -- Waters of War - [79471] = { questType = 'weekly', log = true }, -- Bleak Sand + greater_keyflame_weeklies = { -- not added to default categories because shit rewards + [78590] = { questType = 'weekly', log = true }, -- Cutting Edge + [78657] = { questType = 'weekly', log = true }, -- The Midnight Sentry + [79329] = { questType = 'weekly', log = true }, -- Glowing Harvest + [79380] = { questType = 'weekly', log = true }, -- Bog Beast Banishment + [79469] = { questType = 'weekly', log = true }, -- Lurking Below + [79470] = { questType = 'weekly', log = true }, -- Waters of War + [79471] = { questType = 'weekly', log = true }, -- Bleak Sand }, severed_threads_pact_chosen = { [80544] = { questType = 'weekly', warband = true, log = true }, -- Eyes of the Weaver @@ -1723,120 +1727,120 @@ PermoksAccountManager.quests = { -- Weekly Rares isle_of_dorne_rares = { - [84037] = { questType = 'weekly', warband = true, name = 'Tephratennae' }, -- (daily: 81923) + [84037] = { questType = 'weekly', warband = true, name = 'Tephratennae' }, -- (daily: 81923) [84031] = { questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain' }, -- (daily: 81902) - [84032] = { questType = 'weekly', warband = true, name = 'Shallowshell the Clacker' }, -- (daily: 81903) - [84036] = { questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix' }, -- (daily: 81920) - [84029] = { questType = 'weekly', warband = true, name = 'Escaped Cutthroat' }, -- (daily: 81907) - [84039] = { questType = 'weekly', warband = true, name = 'Matriarch Charfuria' }, -- (daily: 81921) - [84030] = { questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus' }, -- (daily: 81901) - [84028] = { questType = 'weekly', warband = true, name = 'Gar\'loc' }, -- (daily: 81899) - [84033] = { questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched' }, -- (daily: 81904) - [84034] = { questType = 'weekly', warband = true, name = 'Flamekeeper Graz' }, -- (daily: 81905) - [84026] = { questType = 'weekly', warband = true, name = 'Plaguehart' }, -- (daily: 81897) - [84038] = { questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful' }, -- (daily: 81922) + [84032] = { questType = 'weekly', warband = true, name = 'Shallowshell the Clacker' }, -- (daily: 81903) + [84036] = { questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix' }, -- (daily: 81920) + [84029] = { questType = 'weekly', warband = true, name = 'Escaped Cutthroat' }, -- (daily: 81907) + [84039] = { questType = 'weekly', warband = true, name = 'Matriarch Charfuria' }, -- (daily: 81921) + [84030] = { questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus' }, -- (daily: 81901) + [84028] = { questType = 'weekly', warband = true, name = 'Gar\'loc' }, -- (daily: 81899) + [84033] = { questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched' }, -- (daily: 81904) + [84034] = { questType = 'weekly', warband = true, name = 'Flamekeeper Graz' }, -- (daily: 81905) + [84026] = { questType = 'weekly', warband = true, name = 'Plaguehart' }, -- (daily: 81897) + [84038] = { questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful' }, -- (daily: 81922) }, ringing_deeps_rares = { - [84046] = { questType = 'weekly', warband = true, name = 'Automaxor' }, -- (daily: 81674) - [84044] = { questType = 'weekly', warband = true, name = 'Charmonger' }, -- (daily: 81562) - [84042] = { questType = 'weekly', warband = true, name = 'Cragmund' }, -- (daily: 80560) - [84041] = { questType = 'weekly', warband = true, name = 'Zilthara' }, -- (daily: 80506) - [84045] = { questType = 'weekly', warband = true, name = 'Coalesced Monstrosity' }, -- (daily: 81511) - [84040] = { questType = 'weekly', warband = true, name = 'Terror of the Forge' }, -- (daily: 80507) - [84047] = { questType = 'weekly', warband = true, name = 'Kelpmire' }, -- (daily: 81485) - [84043] = { questType = 'weekly', warband = true, name = 'Trungal' }, -- (daily: 80574) + [84046] = { questType = 'weekly', warband = true, name = 'Automaxor' }, -- (daily: 81674) + [84044] = { questType = 'weekly', warband = true, name = 'Charmonger' }, -- (daily: 81562) + [84042] = { questType = 'weekly', warband = true, name = 'Cragmund' }, -- (daily: 80560) + [84041] = { questType = 'weekly', warband = true, name = 'Zilthara' }, -- (daily: 80506) + [84045] = { questType = 'weekly', warband = true, name = 'Coalesced Monstrosity' }, -- (daily: 81511) + [84040] = { questType = 'weekly', warband = true, name = 'Terror of the Forge' }, -- (daily: 80507) + [84047] = { questType = 'weekly', warband = true, name = 'Kelpmire' }, -- (daily: 81485) + [84043] = { questType = 'weekly', warband = true, name = 'Trungal' }, -- (daily: 80574) [84049] = { questType = 'weekly', warband = true, name = 'Spore-infused Shalewing' }, -- (daily: 81652) - [84048] = { questType = 'weekly', warband = true, name = 'Hungerer of the Deeps' }, -- (daily: 81648) - [84050] = { questType = 'weekly', warband = true, name = 'Disturbed Earthgorger' }, -- (daily: 80003) + [84048] = { questType = 'weekly', warband = true, name = 'Hungerer of the Deeps' }, -- (daily: 81648) + [84050] = { questType = 'weekly', warband = true, name = 'Disturbed Earthgorger' }, -- (daily: 80003) }, hallowfall_rares = { - [84063] = { questType = 'weekly', warband = true, name = 'Lytfang the Lost' }, -- (daily: 81756) - [84051] = { questType = 'weekly', warband = true, name = 'Moth\'ethk' }, -- (daily: 82557) - [84064] = { questType = 'weekly', warband = true, name = 'The Perchfather' }, -- (daily: 81791) - [84061] = { questType = 'weekly', warband = true, name = 'The Taskmaker' }, -- (daily: 80009) - [84066] = { questType = 'weekly', warband = true, name = 'Strength of Beledar' }, -- (daily: 81849) - [84060] = { questType = 'weekly', warband = true, name = 'Murkspike' }, -- (daily: 82565) - [84053] = { questType = 'weekly', warband = true, name = 'Deathpetal' }, -- (daily: 82559) - [84056] = { questType = 'weekly', warband = true, name = 'Duskshadow' }, -- (daily: 82562) - [84067] = { questType = 'weekly', warband = true, name = 'Sir Alastair Purefire' }, -- (daily: 81853) + [84063] = { questType = 'weekly', warband = true, name = 'Lytfang the Lost' }, -- (daily: 81756) + [84051] = { questType = 'weekly', warband = true, name = 'Moth\'ethk' }, -- (daily: 82557) + [84064] = { questType = 'weekly', warband = true, name = 'The Perchfather' }, -- (daily: 81791) + [84061] = { questType = 'weekly', warband = true, name = 'The Taskmaker' }, -- (daily: 80009) + [84066] = { questType = 'weekly', warband = true, name = 'Strength of Beledar' }, -- (daily: 81849) + [84060] = { questType = 'weekly', warband = true, name = 'Murkspike' }, -- (daily: 82565) + [84053] = { questType = 'weekly', warband = true, name = 'Deathpetal' }, -- (daily: 82559) + [84056] = { questType = 'weekly', warband = true, name = 'Duskshadow' }, -- (daily: 82562) + [84067] = { questType = 'weekly', warband = true, name = 'Sir Alastair Purefire' }, -- (daily: 81853) [84065] = { questType = 'weekly', warband = true, name = 'Horror of the Shallows' }, -- (daily: 81836) - [84062] = { questType = 'weekly', warband = true, name = 'Sloshmuck' }, -- (daily: 79271) - [84054] = { questType = 'weekly', warband = true, name = 'Croakit' }, -- (daily: 82560) - [84068] = { questType = 'weekly', warband = true, name = 'Pride of Beledar' }, -- (daily: 81882) + [84062] = { questType = 'weekly', warband = true, name = 'Sloshmuck' }, -- (daily: 79271) + [84054] = { questType = 'weekly', warband = true, name = 'Croakit' }, -- (daily: 82560) + [84068] = { questType = 'weekly', warband = true, name = 'Pride of Beledar' }, -- (daily: 81882) [84052] = { questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker' }, -- (daily: 82558) - [84055] = { questType = 'weekly', warband = true, name = 'Toadstomper' }, -- (daily: 82561) - [84059] = { questType = 'weekly', warband = true, name = 'Finclaw Bloodtide' }, -- (daily: 82564) - [84058] = { questType = 'weekly', warband = true, name = 'Ravageant' }, -- (daily: 82566) - [84057] = { questType = 'weekly', warband = true, name = 'Parasidious' }, -- (daily: 82563) + [84055] = { questType = 'weekly', warband = true, name = 'Toadstomper' }, -- (daily: 82561) + [84059] = { questType = 'weekly', warband = true, name = 'Finclaw Bloodtide' }, -- (daily: 82564) + [84058] = { questType = 'weekly', warband = true, name = 'Ravageant' }, -- (daily: 82566) + [84057] = { questType = 'weekly', warband = true, name = 'Parasidious' }, -- (daily: 82563) }, azj_kahet_rares = { - [84071] = { questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler' }, -- (daily: 81702) - [84072] = { questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700' }, -- (daily: 81703) + [84071] = { questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler' }, -- (daily: 81702) + [84072] = { questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700' }, -- (daily: 81703) [84075] = { questType = 'weekly', warband = true, name = 'Maddened Siegebomber' }, -- (daily: 81706) - [84073] = { questType = 'weekly', warband = true, name = 'Cha\'tak' }, -- (daily: 81704) - [84076] = { questType = 'weekly', warband = true, name = 'Enduring Gutterface' }, -- (daily: 81707) - [84074] = { questType = 'weekly', warband = true, name = 'Monstrous Lasharoth' }, -- (daily: 81705) - [84080] = { questType = 'weekly', warband = true, name = 'Umbraclaw Matra' }, -- (daily: 82037) - [84082] = { questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk' }, -- (daily: 82078) + [84073] = { questType = 'weekly', warband = true, name = 'Cha\'tak' }, -- (daily: 81704) + [84076] = { questType = 'weekly', warband = true, name = 'Enduring Gutterface' }, -- (daily: 81707) + [84074] = { questType = 'weekly', warband = true, name = 'Monstrous Lasharoth' }, -- (daily: 81705) + [84080] = { questType = 'weekly', warband = true, name = 'Umbraclaw Matra' }, -- (daily: 82037) + [84082] = { questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk' }, -- (daily: 82078) [84081] = { questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh' }, -- (daily: 82077) - [84079] = { questType = 'weekly', warband = true, name = 'Harvester Qixt' }, -- (daily: 82036) - [84078] = { questType = 'weekly', warband = true, name = 'The Oozekhan' }, -- (daily: 82035) - [84077] = { questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed' }, -- (daily: 82034) - [84069] = { questType = 'weekly', warband = true, name = 'The Groundskeeper' }, -- (daily: 81634) - [84070] = { questType = 'weekly', warband = true, name = 'Xishorr' }, -- (daily: 81701) + [84079] = { questType = 'weekly', warband = true, name = 'Harvester Qixt' }, -- (daily: 82036) + [84078] = { questType = 'weekly', warband = true, name = 'The Oozekhan' }, -- (daily: 82035) + [84077] = { questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed' }, -- (daily: 82034) + [84069] = { questType = 'weekly', warband = true, name = 'The Groundskeeper' }, -- (daily: 81634) + [84070] = { questType = 'weekly', warband = true, name = 'Xishorr' }, -- (daily: 81701) }, one_time_reputation_rares = { - [85158] = { questType = 'weekly', warband = true, name = 'Alunira', achievementID = 40435, criteriaID = 68225 }, -- Isle of Dorne (daily: 82196) - [85160] = { questType = 'weekly', warband = true, name = 'Kereke', achievementID = 40435, criteriaID = 68227 }, -- Isle of Dorne (daily: 82204) - [85161] = { questType = 'weekly', warband = true, name = 'Zovex', achievementID = 40435, criteriaID = 68226 }, -- Isle of Dorne (daily: 82203) - [85159] = { questType = 'weekly', warband = true, name = 'Rotfist', achievementID = 40435, criteriaID = 68228 }, -- Isle of Dorne (daily: 82205) + [85158] = { questType = 'weekly', warband = true, name = 'Alunira', achievementID = 40435, criteriaID = 68225 }, -- Isle of Dorne (daily: 82196) + [85160] = { questType = 'weekly', warband = true, name = 'Kereke', achievementID = 40435, criteriaID = 68227 }, -- Isle of Dorne (daily: 82204) + [85161] = { questType = 'weekly', warband = true, name = 'Zovex', achievementID = 40435, criteriaID = 68226 }, -- Isle of Dorne (daily: 82203) + [85159] = { questType = 'weekly', warband = true, name = 'Rotfist', achievementID = 40435, criteriaID = 68228 }, -- Isle of Dorne (daily: 82205) [85162] = { questType = 'weekly', warband = true, name = 'Deepflayer Broodmother', achievementID = 40837, criteriaID = 69636 }, -- Ringing Deeps (daily: 80536) - [85163] = { questType = 'weekly', warband = true, name = 'Lurker of the Deeps', achievementID = 40837, criteriaID = 69637 }, -- Ringing Deeps (daily: 81633) - [85164] = { questType = 'weekly', warband = true, name = 'Beledar\'s Spawn', achievementID = 40851, criteriaID = 69716 }, -- Hallowfall (daily: 81763) - [85165] = { questType = 'weekly', warband = true, name = 'Deathtide', achievementID = 40851, criteriaID = 69717 }, -- Hallowfall (daily: 81880) - [85167] = { questType = 'weekly', warband = true, name = 'The One Left' }, -- Azj-kahet (daily: 82290) - [85166] = { questType = 'weekly', warband = true, name = 'Tka\'ktath' }, -- Azj-kahet (daily: 82289) + [85163] = { questType = 'weekly', warband = true, name = 'Lurker of the Deeps', achievementID = 40837, criteriaID = 69637 }, -- Ringing Deeps (daily: 81633) + [85164] = { questType = 'weekly', warband = true, name = 'Beledar\'s Spawn', achievementID = 40851, criteriaID = 69716 }, -- Hallowfall (daily: 81763) + [85165] = { questType = 'weekly', warband = true, name = 'Deathtide', achievementID = 40851, criteriaID = 69717 }, -- Hallowfall (daily: 81880) + [85167] = { questType = 'weekly', warband = true, name = 'The One Left' }, -- Azj-kahet (daily: 82290) + [85166] = { questType = 'weekly', warband = true, name = 'Tka\'ktath' }, -- Azj-kahet (daily: 82289) }, undermine_rares = { - [84917] = { questType = 'weekly', warband = true, name = 'Scrapbeak' }, -- (daily: 81702) - [84918] = { questType = 'weekly', warband = true, name = 'Ratspit' }, -- (daily: 81703) - [84919] = { questType = 'weekly', warband = true, name = 'Tally Doublespeak' }, -- (daily: 81706) + [84917] = { questType = 'weekly', warband = true, name = 'Scrapbeak' }, -- (daily: 81702) + [84918] = { questType = 'weekly', warband = true, name = 'Ratspit' }, -- (daily: 81703) + [84919] = { questType = 'weekly', warband = true, name = 'Tally Doublespeak' }, -- (daily: 81706) [84920] = { questType = 'weekly', warband = true, name = 'V.V. Goosworth and Slimesby' }, -- (daily: 81704) - [84921] = { questType = 'weekly', warband = true, name = 'Thwack' }, -- (daily: 81707) - [84922] = { questType = 'weekly', warband = true, name = 'S.A.L.' }, -- (daily: 81705) - [84926] = { questType = 'weekly', warband = true, name = 'Nitro' }, -- (daily: 81705) - [84927] = { questType = 'weekly', warband = true, name = 'Candy Stickemup' }, -- (daily: 82037) - [84928] = { questType = 'weekly', warband = true, name = 'Grimewick' }, -- (daily: 82078) - [85004] = { questType = 'weekly', warband = true, name = 'Swigs Farsight' }, -- (daily: 82077) - [84877] = { questType = 'weekly', warband = true, name = 'Ephemeral Agent Lathyd' }, -- (daily: 82036) - [84884] = { questType = 'weekly', warband = true, name = 'The Junk-Wall' }, -- (daily: 82035) - [84895] = { questType = 'weekly', warband = true, name = 'Slugger the Smart' }, -- (daily: 82034) - [84907] = { questType = 'weekly', warband = true, name = 'Chief Foreman Gutso' }, -- (daily: 81634) - [84911] = { questType = 'weekly', warband = true, name = 'Flyboy Snooty' }, -- (daily: 81701) - [86298] = { questType = 'weekly', warband = true, name = 'M.A.G.N.O.' }, -- (daily: 81701) - [86307] = { questType = 'weekly', warband = true, name = 'Giovante' }, -- (daily: 81701) - [86431] = { questType = 'weekly', warband = true, name = 'Scrapchewer' }, -- (daily: 81701) - [86428] = { questType = 'weekly', warband = true, name = 'Volstrike the Charged' }, -- (daily: 81701) + [84921] = { questType = 'weekly', warband = true, name = 'Thwack' }, -- (daily: 81707) + [84922] = { questType = 'weekly', warband = true, name = 'S.A.L.' }, -- (daily: 81705) + [84926] = { questType = 'weekly', warband = true, name = 'Nitro' }, -- (daily: 81705) + [84927] = { questType = 'weekly', warband = true, name = 'Candy Stickemup' }, -- (daily: 82037) + [84928] = { questType = 'weekly', warband = true, name = 'Grimewick' }, -- (daily: 82078) + [85004] = { questType = 'weekly', warband = true, name = 'Swigs Farsight' }, -- (daily: 82077) + [84877] = { questType = 'weekly', warband = true, name = 'Ephemeral Agent Lathyd' }, -- (daily: 82036) + [84884] = { questType = 'weekly', warband = true, name = 'The Junk-Wall' }, -- (daily: 82035) + [84895] = { questType = 'weekly', warband = true, name = 'Slugger the Smart' }, -- (daily: 82034) + [84907] = { questType = 'weekly', warband = true, name = 'Chief Foreman Gutso' }, -- (daily: 81634) + [84911] = { questType = 'weekly', warband = true, name = 'Flyboy Snooty' }, -- (daily: 81701) + [86298] = { questType = 'weekly', warband = true, name = 'M.A.G.N.O.' }, -- (daily: 81701) + [86307] = { questType = 'weekly', warband = true, name = 'Giovante' }, -- (daily: 81701) + [86431] = { questType = 'weekly', warband = true, name = 'Scrapchewer' }, -- (daily: 81701) + [86428] = { questType = 'weekly', warband = true, name = 'Volstrike the Charged' }, -- (daily: 81701) }, -- Professions knowledge_tww_treasures = { - [83253] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225234 }, -- Alchemical Sediment - [83255] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225235 }, -- Deepstone Crucible - [83256] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225233 }, -- Dense Bladestone - [83257] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225232 }, -- Coreway Billet - [83258] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225231 }, -- Powdered Fulgurance - [83259] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225230 }, -- Crystalline Repository - [83260] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225228 }, -- Rust-Locked Mechanism - [83261] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225229 }, -- Earthen Induction Coil - [83264] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225226 }, -- Striated Inkstone - [83262] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225227 }, -- Wax-sealed Records - [83265] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225224 }, -- Diaphanous Gem Shards - [83266] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225225 }, -- Deepstone Fragment + [83253] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225234 }, -- Alchemical Sediment + [83255] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225235 }, -- Deepstone Crucible + [83256] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225233 }, -- Dense Bladestone + [83257] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225232 }, -- Coreway Billet + [83258] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225231 }, -- Powdered Fulgurance + [83259] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225230 }, -- Crystalline Repository + [83260] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225228 }, -- Rust-Locked Mechanism + [83261] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225229 }, -- Earthen Induction Coil + [83264] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225226 }, -- Striated Inkstone + [83262] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225227 }, -- Wax-sealed Records + [83265] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225224 }, -- Diaphanous Gem Shards + [83266] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225225 }, -- Deepstone Fragment [83268] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225222 }, -- Stone-Leather Swatch [83267] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225223 }, -- Sturdy Nerubian Carapace - [83270] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225220 }, -- Chitin Needle - [83269] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225221 }, -- Spool of Webweave + [83270] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225220 }, -- Chitin Needle + [83269] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225221 }, -- Spool of Webweave }, knowledge_tww_treatise = { [83725] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy' }, @@ -1852,26 +1856,26 @@ PermoksAccountManager.quests = { [83734] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, }, knowledge_tww_gather = { - [81416] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 1 - [81417] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 2 - [81418] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 3 - [81419] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 4 - [81420] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 5 - [81421] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Rose + [81416] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 1 + [81417] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 2 + [81418] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 3 + [81419] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 4 + [81420] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 5 + [81421] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Rose - [83050] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 1 - [83051] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 2 - [83052] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 3 - [83053] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 4 - [83054] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 5 - [83049] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Erosion Polished Slate + [83050] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 1 + [83051] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 2 + [83052] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 3 + [83053] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 4 + [83054] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 5 + [83049] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Erosion Polished Slate - [81459] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 1 - [81460] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 2 - [81461] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 3 - [81462] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 4 - [81463] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 5 - [81464] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Abyssal Fur + [81459] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 1 + [81460] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 2 + [81461] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 3 + [81462] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 4 + [81463] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 5 + [81464] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Abyssal Fur [84290] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 1 [84291] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 2 From ecc7f6afb4c85d49c268c866b8bd6f242f358a80 Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 27 Feb 2025 13:59:10 +0100 Subject: [PATCH 097/138] Fix crest quantity --- modules/currencies.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index 1d51c75..3439309 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -751,7 +751,7 @@ function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurr if currencyInfo.maxQuantity and currencyInfo.maxQuantity > 0 and (currencyInfo.quantity or 0) > currencyInfo.maxQuantity then -- REFACTOR: move this logic to the crest labelRows to remove redundancy local id = currencyInfo.currencyType - if id ~= 2914 and id ~= 2915 and id ~= 2916 and id ~= 2917 then + if id ~= 3107 and id ~= 3108 and id ~= 3109 and id ~= 3110 then currencyInfo.quantity = currencyInfo.quantity / 100 end end From 00eccc3d6065111cdc94bbaf814562f69687ef7d Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 3 Mar 2025 19:17:25 +0100 Subject: [PATCH 098/138] Fix possible lua error --- options.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/options.lua b/options.lua index b824463..3a664e8 100644 --- a/options.lua +++ b/options.lua @@ -1996,8 +1996,8 @@ function PermoksAccountManager:ReplaceLabelOfDefaultCategory(category, oldLabel, if categoryTbl and categoryTbl.childOrder[oldLabel] then local index = categoryTbl.childOrder[oldLabel] - if categoryTbl.childs[index] ~= oldLabel then - for i, label in pairs(categoryTbl.childs[index]) do + if categoryTbl.childs[index] ~= oldLabel and categoryTbl.childs then + for i, label in pairs(categoryTbl.childs) do if label == oldLabel then index = i break From 88d888b0fadec25714dbce2a51722e9776812b89 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 5 Mar 2025 12:05:03 +0100 Subject: [PATCH 099/138] Fix lua error for neutral characters --- options.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/options.lua b/options.lua index 3a664e8..cc6ee27 100644 --- a/options.lua +++ b/options.lua @@ -94,13 +94,13 @@ end ---@param altGUID string function PermoksAccountManager:AddCharacterToOrderOptions(altGUID, altData, accountName) local coloredName = RAID_CLASS_COLORS[altData.class]:WrapTextInColorCode(altData.name .. ((altData.realm and "-" .. altData.realm) or "")) - local factionIcon = ("|T%s:%d:%d|t"):format(FACTION_LOGO_TEXTURES[PLAYER_FACTION_GROUP[altData.faction]], 0, 0) + local factionIcon = altData.faction and altData.faction ~= "Neutral" and ("|T%s:%d:%d|t"):format(FACTION_LOGO_TEXTURES[PLAYER_FACTION_GROUP[altData.faction]], 0, 0) options.args.characters.args.customCharacterOrder.args[altGUID] = { order = altData.order, type = "group", inline = true, - name = coloredName .. factionIcon, + name = coloredName .. (factionIcon or ""), x = altData, args = { order = { From 0d074b6a125508316762ef3fed4b7e0d9a98cf38 Mon Sep 17 00:00:00 2001 From: Permok Date: Sun, 9 Mar 2025 00:24:02 +0100 Subject: [PATCH 100/138] Add missing keystones --- db/db.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/db/db.lua b/db/db.lua index 7856ab8..2ff76b7 100644 --- a/db/db.lua +++ b/db/db.lua @@ -444,6 +444,7 @@ PermoksAccountManager.keys = { [239] = 'SEAT', -- Seat of the Triumvirate [244] = 'AD', -- Atal'Dazar [245] = 'FH', -- Freehold + [247] = 'ML', -- Motherlode [248] = 'WM', -- Waycrest Manor [251] = 'UNDR', -- The Underrot [353] = 'SIEGE', -- Siege of Boralus @@ -462,14 +463,15 @@ PermoksAccountManager.keys = { -- PLACEHOLDER: abbreviations [499] = 'PSF', -- Priory of the Sacred Flame - [500] = 'TR', -- The Rookery + [500] = 'ROOK', -- The Rookery [501] = 'SV', -- The Stonevault [502] = 'COT', -- City of Threads [503] = 'ARAK', -- Ara-Kara, City of Echoes [504] = 'DFC', -- Darkflame Cleft [505] = 'DAWN', -- The Dawnbreaker - [506] = 'CIN', -- Cinderbrew Meadery + [506] = 'BREW', -- Cinderbrew Meadery [507] = 'GB', -- Grim Batol + [525] = 'FLOOD',-- Floodgate } -- Timewalking Keystones From 4ef58e66b7e9987b03b1509f3a40b9f22e746e34 Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 1 Apr 2025 02:24:25 +0200 Subject: [PATCH 101/138] Add Weekly Bounty Map --- PermoksAccountManager.lua | 6 +++++- db/db.lua | 11 +++++++++++ modules/quests.lua | 10 ++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 219942b..ba3cd15 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -52,7 +52,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 7 +local INTERNALTWWVERSION = 8 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -784,6 +784,10 @@ function PermoksAccountManager:Modernize(oldInternalVersion) self:FixOrderOfDefaultCategories() end + + if oldInternalVersion < 8 then + self:AddLabelToDefaultCategory('general', 'weekly_bounti_map') + end end function PermoksAccountManager:GetGUID() diff --git a/db/db.lua b/db/db.lua index 2ff76b7..840e7a2 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1936,6 +1936,17 @@ PermoksAccountManager.quests = { [86178] = { questType = 'weekly', log = true }, [86179] = { questType = 'weekly', log = true }, [86180] = { questType = 'weekly', log = true }, + }, + undermine_lieutenants_mythic = { + [88860] = { questType = 'weekly', name = "Gorbo" }, + [88868] = { questType = 'weekly', name = "Trashmaster Blazedump" }, + [88847] = { questType = 'weekly', name = "Skiggy Muckheimer" }, + [88832] = { questType = 'weekly', name = "Scraps" }, + [88843] = { questType = 'weekly', name = "King Flamespite" }, + [88839] = { questType = 'weekly', name = "Professor Boomspark" }, + }, + weekly_bounti_map = { + [86371] = {questType = 'weekly'} } } diff --git a/modules/quests.lua b/modules/quests.lua index b825924..c81fa42 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1239,6 +1239,16 @@ local labelRows = { showAll = true, version = WOW_PROJECT_MAINLINE }, + weekly_bounti_map = { + IDS = {86371}, + label = 'Weekly Bount. Map', + type = 'quest', + questType = 'weekly', + visibility = 'hidden', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, + -- professions knowledge_tww_treasures = { label = 'Loot Knowledge', From dc8719543caf3d784266fc714bb93d77d31705af Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 1 Apr 2025 02:24:41 +0200 Subject: [PATCH 102/138] Fix partial sparks --- modules/items.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/items.lua b/modules/items.lua index a9e6f24..46b7673 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -318,7 +318,7 @@ local labelRows = { type = 'spark', passRow = true, key = 230906, - reagen = 230905, + reagent = 230905, reagentRequired = 2, group = 'item', version = WOW_PROJECT_MAINLINE From 5fa6bf1a576ac96c3b3574ca48ca39822eeb1d8e Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 1 Apr 2025 02:56:15 +0200 Subject: [PATCH 103/138] Fix vault ilvl --- db/db.lua | 42 +++++++++++++++++++++--------------------- modules/vault.lua | 4 ++-- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/db/db.lua b/db/db.lua index 840e7a2..a52e84b 100644 --- a/db/db.lua +++ b/db/db.lua @@ -462,16 +462,16 @@ PermoksAccountManager.keys = { [464] = 'RISE', -- Dawn of the Infinite: Murozond's Rise -- PLACEHOLDER: abbreviations - [499] = 'PSF', -- Priory of the Sacred Flame - [500] = 'ROOK', -- The Rookery - [501] = 'SV', -- The Stonevault - [502] = 'COT', -- City of Threads - [503] = 'ARAK', -- Ara-Kara, City of Echoes - [504] = 'DFC', -- Darkflame Cleft - [505] = 'DAWN', -- The Dawnbreaker - [506] = 'BREW', -- Cinderbrew Meadery - [507] = 'GB', -- Grim Batol - [525] = 'FLOOD',-- Floodgate + [499] = 'PSF', -- Priory of the Sacred Flame + [500] = 'ROOK', -- The Rookery + [501] = 'SV', -- The Stonevault + [502] = 'COT', -- City of Threads + [503] = 'ARAK', -- Ara-Kara, City of Echoes + [504] = 'DFC', -- Darkflame Cleft + [505] = 'DAWN', -- The Dawnbreaker + [506] = 'BREW', -- Cinderbrew Meadery + [507] = 'GB', -- Grim Batol + [525] = 'FLOOD', -- Floodgate } -- Timewalking Keystones @@ -2026,17 +2026,17 @@ PermoksAccountManager.vault_rewards = { }, -- World [Enum.WeeklyRewardChestThresholdType.World] = { - [1] = 600, - [2] = 600, - [3] = 603, - [4] = 616, - [5] = 623, - [6] = 629, - [7] = 636, - [8] = 642, - [9] = 642, - [10] = 642, - [11] = 642, + [1] = 623, + [2] = 623, + [3] = 626, + [4] = 632, + [5] = 636, + [6] = 642, + [7] = 645, + [8] = 649, + [9] = 649, + [10] = 649, + [11] = 649, }, -- Raid [Enum.WeeklyRewardChestThresholdType.Raid] = { diff --git a/modules/vault.lua b/modules/vault.lua index 90a8b05..626e3f7 100644 --- a/modules/vault.lua +++ b/modules/vault.lua @@ -209,8 +209,8 @@ function PermoksAccountManager.VaultTooltip_OnEnter(button, altData, labelRow) local rewardItemLevel if activityInfo.progress >= activityInfo.threshold then - if activityInfo.type == Enum.WeeklyRewardChestThresholdType.Activities and activityInfo.level > 20 then - rewardItemLevel = self.vault_rewards[activityInfo.type][20] + if activityInfo.type == Enum.WeeklyRewardChestThresholdType.Activities and activityInfo.level > 10 then + rewardItemLevel = self.vault_rewards[activityInfo.type][10] else rewardItemLevel = self.vault_rewards[activityInfo.type][activityInfo.level] or nil end From f9f8b9b5115beeea71dbc25054cc3e8cb448c81f Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 4 Apr 2025 14:10:36 +0200 Subject: [PATCH 104/138] Fix the itemID for the Radiant Echoes --- db/db.lua | 2 +- modules/items.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/db/db.lua b/db/db.lua index a52e84b..54028c8 100644 --- a/db/db.lua +++ b/db/db.lua @@ -551,7 +551,7 @@ PermoksAccountManager.item = { [211296] = { key = 'spark_omens' }, -- Spark of Omens [210814] = { key = 'artisans_acuity' }, -- Artisan's Acuity [206350] = { key = 'radiant_remnant' }, -- Radiant Remnant - [220520] = { key = 'radiant_echo' }, -- Radiant Echo + [235897] = { key = 'radiant_echo' }, -- Radiant Echo [212493] = { key = 'firelight_ruby' }, -- Odd Glob of Wax [224642] = { key = 'firelight_ruby' }, -- Firelight Ruby [229899] = { key = 'coffer_key_shard' }, -- Coffer Key Shard diff --git a/modules/items.lua b/modules/items.lua index 46b7673..ff290b8 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -280,7 +280,7 @@ local labelRows = { radiant_echo = { label = 'Radiant Echo', type = 'item', - key = 220520, + key = 235897, group = 'item', version = WOW_PROJECT_MAINLINE }, From 2e8ffae9979725b552dc793074b57e0e2866cc9c Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 23 Apr 2025 13:49:38 +0200 Subject: [PATCH 105/138] Bump toc --- PermoksAccountManager.toc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PermoksAccountManager.toc b/PermoksAccountManager.toc index eb88e26..d82b035 100644 --- a/PermoksAccountManager.toc +++ b/PermoksAccountManager.toc @@ -1,4 +1,4 @@ -## Interface: 110005 +## Interface: 110105 ## Title: Permoks Account Manager ## Version: @project-version@ ## SavedVariables: PermoksAccountManagerDB From 623d5d4a367d6ed86e978466f7924f660f65d6df Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 23 Apr 2025 13:49:52 +0200 Subject: [PATCH 106/138] Fix font size not working after a reload --- PermoksAccountManager.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index ba3cd15..18afcc3 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -206,7 +206,7 @@ do local font = LSM:Fetch('font', options.font) normalFont = CreateFont('PAM_NormalFont') - normalFont:SetFont(font, 11, outline) + normalFont:SetFont(font, options.fontSize, outline) normalFont:SetTextColor(1, 1, 1, 1) smallFont = CreateFont('PAM_SmallFont') @@ -214,11 +214,11 @@ do smallFont:SetTextColor(1, 1, 1, 1) mediumLargeFont = CreateFont('PAM_MediumLargeFont') - mediumLargeFont:SetFont(font, 13, outline) + mediumLargeFont:SetFont(font, options.fontSize + 2, outline) mediumLargeFont:SetTextColor(1, 1, 1, 1) largeFont = CreateFont('PAM_LargeFont') - largeFont:SetFont(font, 17, outline) + largeFont:SetFont(font, max(17, options.fontSize + 2), outline) largeFont:SetTextColor(1, 1, 1, 1) end From 22c9a9785ad9418220841ee5e4f76f7eaa3c211e Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 23 Apr 2025 13:50:50 +0200 Subject: [PATCH 107/138] Add 11.1.1 Nightfall Weekly and the new Flame's Radiance faction --- PermoksAccountManager.lua | 7 ++++++- commands.lua | 7 +++++++ db/db.lua | 8 ++++++++ modules/factions.lua | 10 ++++++++++ modules/quests.lua | 9 +++++++++ 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 18afcc3..fb6acc8 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -52,7 +52,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 8 +local INTERNALTWWVERSION = 9 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -788,6 +788,11 @@ function PermoksAccountManager:Modernize(oldInternalVersion) if oldInternalVersion < 8 then self:AddLabelToDefaultCategory('general', 'weekly_bounti_map') end + + if oldInternalVersion < 9 then + self:AddLabelToDefaultCategory('renown', 'flames_radiance', 8) + self:AddLabelToDefaultCategory('currentweekly', 'nightfall_weekly', 7) + end end function PermoksAccountManager:GetGUID() diff --git a/commands.lua b/commands.lua index 287827e..198167d 100644 --- a/commands.lua +++ b/commands.lua @@ -193,6 +193,13 @@ function commands.SECRET() end end +function commands.SETVERSION(version) + version = tonumber(version) + if version then + PermoksAccountManager.db.global.internalTWWVersion = version + end +end + function commands.CL() PermoksAccountManager.db.global.customLabels = not PermoksAccountManager.db.global.customLabels end diff --git a/db/db.lua b/db/db.lua index 54028c8..0e8e890 100644 --- a/db/db.lua +++ b/db/db.lua @@ -81,6 +81,7 @@ local default_categories = { 'weekly_delve_reputation', 'weekly_coffer_keys', 'archaic_cypher_key', + 'nightfall_weekly', 'separator1', 'the_theater_troupe', @@ -108,6 +109,7 @@ local default_categories = { weekly_delve_reputation = 4, weekly_coffer_keys = 5, archaic_cypher_key = 6, + nightfall_weekly = 7, separator1 = 10, the_theater_troupe = 11, @@ -178,6 +180,7 @@ local default_categories = { 'the_general', 'the_vizier', 'the_weaver', + 'flames_radiance', -- 'brann_bronzebeard', Makes no sense without a custom string for the level 'separator1', @@ -198,6 +201,7 @@ local default_categories = { the_general = 5, the_vizier = 6, the_weaver = 7, + flames_radiance = 8, -- brann_bronzebeard = 8, separator1 = 10, @@ -605,6 +609,7 @@ PermoksAccountManager.factions = { [2675] = { name = 'Blackwater Cartel', paragon = true, warband = 'unique' }, [2677] = { name = 'Steamwheedle Cartel', paragon = true, warband = 'unique' }, [2685] = { name = 'Gallagio Loyalty Rewards Club', paragon = true, type = 'renown', warband = 'unique' }, + [2688] = { name = 'Flame\'s Radiance', paragon = true, warband = 'unique' }, } PermoksAccountManager.currency = { @@ -1947,6 +1952,9 @@ PermoksAccountManager.quests = { }, weekly_bounti_map = { [86371] = {questType = 'weekly'} + }, + nightfall_weekly = { + [89295] = {questType = 'weekly'} } } diff --git a/modules/factions.lua b/modules/factions.lua index 9889cfb..905ad3d 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -378,6 +378,16 @@ local labelRows = { group = 'reputation', version = WOW_PROJECT_MAINLINE }, + flames_radiance = { + label = function() + return PermoksAccountManager.factions[2688].localName or 'Flame\'s Radiance' + end, + type = 'faction', + warband = 'unique', + key = 2688, + group = 'reputation', + version = WOW_PROJECT_MAINLINE + }, -- wotlk alliance_vanguard = { diff --git a/modules/quests.lua b/modules/quests.lua index c81fa42..bb8d3c4 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1248,6 +1248,15 @@ local labelRows = { group = 'resetWeekly', version = WOW_PROJECT_MAINLINE }, + nightfall_weekly = { + IDS = {89295}, + label = 'Nightfall Weekly', + type = 'quest', + questType = 'weekly', + visibility = 'hidden', + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, -- professions knowledge_tww_treasures = { From af35b28a9dda15c5fd4ca72c4abdd4690d9026c4 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 19 May 2025 00:02:18 +0200 Subject: [PATCH 108/138] Add vision currencies --- PermoksAccountManager.lua | 7 +++- db/db.lua | 8 +++++ modules/character.lua | 14 ++++++++ modules/currencies.lua | 67 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+), 1 deletion(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index fb6acc8..55486ed 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -52,7 +52,7 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 9 +local INTERNALTWWVERSION = 10 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local defaultDB = { @@ -793,6 +793,11 @@ function PermoksAccountManager:Modernize(oldInternalVersion) self:AddLabelToDefaultCategory('renown', 'flames_radiance', 8) self:AddLabelToDefaultCategory('currentweekly', 'nightfall_weekly', 7) end + + if oldInternalVersion < 10 then + self:AddLabelToDefaultCategory('general', 'eye_of_nzoth') + self:AddLabelToDefaultCategory('general', 'displaced_corrupted_mementos') + end end function PermoksAccountManager:GetGUID() diff --git a/db/db.lua b/db/db.lua index 0e8e890..435926a 100644 --- a/db/db.lua +++ b/db/db.lua @@ -646,6 +646,7 @@ PermoksAccountManager.currency = { [2812] = 0, -- Aspect's Awakened Crest [2912] = 0, -- Renascent Awakening (Crucible Charges DF Season 4) [3089] = 0, -- Residual Memories (11.0 prepatch currency) + [3149] = 0, -- Displaced Corrupted Mementos -- TWW Currencies [2914] = 0, -- Weathered Harbinger Crest @@ -673,6 +674,13 @@ PermoksAccountManager.currency = { [1166] = 0, -- Timewarped Badge } +PermoksAccountManager.currencyTrees = { + [1057] = { + systemID = 20, + currencyType = 3728, -- 3728 = Echo of N'Zoth + } +} + PermoksAccountManager.currencyCustomOptions = { [2166] = { currencyUpdate = 2167 }, [2533] = { forceUpdate = true }, diff --git a/modules/character.lua b/modules/character.lua index 4195a4a..a08ccfe 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -84,6 +84,7 @@ local labelRows = { label = L['Gold'], type = 'gold', group = 'currency', + warband = true, version = false }, keystone = { @@ -463,6 +464,19 @@ end local function UpdateGold(charInfo) charInfo.gold = floor(GetMoney() / (COPPER_PER_SILVER * SILVER_PER_GOLD)) * 10000 + + local db = PermoksAccountManager.db.global + local accountData = db.accounts.main.data + local warbandData = db.accounts.main.warbandData + + local totalGold = 0 + for _, altData in pairs(accountData) do + if altData.gold then + totalGold = totalGold + altData.gold + end + end + + warbandData.gold = totalGold end local function UpdateILevel(charInfo) diff --git a/modules/currencies.lua b/modules/currencies.lua index 3439309..c03a38d 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -292,6 +292,7 @@ local labelRows = { type = 'currency', key = 3008, abbMax = true, + warband = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, @@ -372,6 +373,24 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, + -- 11.1.5 + eye_of_nzoth = { + label = 'Eye of N\'Zoth', + type = 'treecurrency', + passRow = true, + key = 3728, + maxQuantity = 13, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, + displaced_corrupted_mementos = { + label = 'Corrupted Mementos', + type = 'currency', + key = 3149, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, + -- wotlk-classic honorBCC = { label = function() @@ -525,6 +544,27 @@ local function UpdateAllCurrencies(charInfo) end end +local function UpdateAllTreeCurrencies(charInfo) + local self = PermoksAccountManager + charInfo.treeCurrencyInfo = charInfo.treeCurrencyInfo or {} + + local currencyInfo = charInfo.treeCurrencyInfo + for treeID, treeInfo in pairs(self.currencyTrees) do + + local configID = C_Traits.GetConfigIDBySystemID(treeInfo.systemID) + local treeCurrencyInfos = configID and C_Traits.GetTreeCurrencyInfo(configID, treeID, true) + + if treeCurrencyInfos then + for _, treeCurrencyInfo in ipairs(treeCurrencyInfos) do + currencyInfo[treeCurrencyInfo.traitCurrencyID] = charInfo.currencyInfo[treeCurrencyInfo.traitCurrencyID] or {} + currencyInfo[treeCurrencyInfo.traitCurrencyID].quantity = treeCurrencyInfo.quantity + currencyInfo[treeCurrencyInfo.traitCurrencyID].maxQuantity = treeCurrencyInfo.maxQuantity + currencyInfo[treeCurrencyInfo.traitCurrencyID].spent = treeCurrencyInfo.spent + end + end + end +end + local function SumWarbandCurrencies(warbandCurrency) local currencySum = 0 for _, alt in pairs(warbandCurrency) do @@ -564,6 +604,7 @@ end local function Update(charInfo) UpdateAllCurrencies(charInfo) + UpdateAllTreeCurrencies(charInfo) -- requesting the warband data has a slight server-delay if PermoksAccountManager.isRetail then @@ -607,6 +648,23 @@ local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged) end end +local function UpdateTreeCurrency(charInfo, treeID) + local self = PermoksAccountManager + if not self.currencyTrees[treeID] then + return + end + + local treeInfo = self.currencyTrees[treeID] + local currencyInfo = charInfo.treeCurrencyInfo[treeInfo.currencyType] + + local configID = C_Traits.GetConfigIDBySystemID(treeInfo.systemID) + local treeCurrencyInfo = configID and C_Traits.GetTreeCurrencyInfo(configID, treeID, true) + if treeCurrencyInfo then + currencyInfo.quantity = treeCurrencyInfo.quantity + currencyInfo.maxQuantity = treeCurrencyInfo.maxQuantity + end +end + local function CurrencyTransferUpdate(charInfo) local self = PermoksAccountManager local accountData = self.account.data @@ -709,6 +767,13 @@ local function CreateCofferKeyString(labelRow, currencyInfo, itemCounts) return PermoksAccountManager:CreateCurrencyString(keyInfo, nil, nil, nil, nil, nil, total) end +local function CreateTreeCurrencyString(labelRow, currencyInfo) + local info = currencyInfo and currencyInfo[labelRow.key] + if info then + return PermoksAccountManager:CreateFractionString((info.quantity or 0) + (info.spent or 0), labelRow.maxQuantity or 0) + end +end + local payload = { update = Update, labels = labelRows, @@ -717,6 +782,7 @@ local payload = { ['PERKS_ACTIVITIES_UDPATED'] = UpdateCatalystCharges, ['ACCOUNT_CHARACTER_CURRENCY_DATA_RECEIVED'] = UpdateAllWarbandCurrencies, ['CURRENCY_TRANSFER_LOG_UPDATE'] = CurrencyTransferUpdate, + ['TRAIT_TREE_CURRENCY_INFO_UPDATED'] = UpdateTreeCurrency, }, share = { [UpdateCurrency] = 'currencyInfo' @@ -727,6 +793,7 @@ module:AddCustomLabelType('catalystcharges', CreateCatalystChargeString, nil, 'c module:AddCustomLabelType('crestcurrency', CreateCrestString, nil, 'currencyInfo') module:AddCustomLabelType('valor', CreateValorString, nil, 'currencyInfo') module:AddCustomLabelType('cofferkey', CreateCofferKeyString, nil, 'currencyInfo', 'itemCounts') +module:AddCustomLabelType('treecurrency', CreateTreeCurrencyString, nil, 'treeCurrencyInfo') -- TODO Create a CreateIconString function instead of two functions for items and currencies function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurrent, abbreviateMaximum, hideMaximum, From cc6e985419c8b87eae1987aecd50d42141eddbcd Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 5 Aug 2025 15:13:37 +0200 Subject: [PATCH 109/138] Add 11.2 factions, currencies, items, dungeons, raid, and update vault ilevels. Add MOP factions, and fixes. --- PermoksAccountManager.lua | 47 +- PermoksAccountManager_Mists.toc | 46 + db/db-mop.lua | 411 ++++++++ db/db.lua | 147 ++- locales/deDE.lua | 1 + locales/enUS.lua | 1 + modules/character.lua | 8 +- modules/currencies.lua | 57 +- modules/factions.lua | 1733 ++++++++++++++++--------------- modules/instances.lua | 42 + modules/items.lua | 4 +- modules/quests.lua | 2 +- options.lua | 95 +- 13 files changed, 1678 insertions(+), 916 deletions(-) create mode 100644 PermoksAccountManager_Mists.toc create mode 100644 db/db-mop.lua diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 55486ed..d9f8b16 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -52,9 +52,10 @@ local LibQTip = LibStub('LibQTip-1.0') local L = LibStub('AceLocale-3.0'):GetLocale(addonName) local LSM = LibStub('LibSharedMedia-3.0') local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 10 +local INTERNALTWWVERSION = 11 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 +local INTERNALMISTSVERSION = 1 local defaultDB = { profile = { minimap = { @@ -68,7 +69,9 @@ local defaultDB = { main = { name = L['Main'], data = { - + ['**'] = { + customData = {}, + } }, warbandData = { name = 'Warband' @@ -145,8 +148,9 @@ local defaultDB = { customLabels = { quest = {}, item = {}, - currency = {} - } + currency = {}, + custom = {}, + }, }, currentCallings = {}, quests = {}, @@ -411,6 +415,7 @@ do self.isBC = WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC self.isWOTLK = WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC self.isCata = WOW_PROJECT_ID == WOW_PROJECT_CATACLYSM_CLASSIC + self.isMists = WOW_PROJECT_ID == WOW_PROJECT_MISTS_CLASSIC self.isRetail = WOW_PROJECT_ID == WOW_PROJECT_MAINLINE -- init databroker @@ -506,8 +511,11 @@ function PermoksAccountManager:CreateFrames() function(self, button) managerFrame:StopMovingOrSizing() + local left = managerFrame:GetLeft() + local top = managerFrame:GetTop() + managerFrame:ClearAllPoints() - managerFrame:SetPoint('TOPLEFT', UIParent, 'TOPLEFT', managerFrame:GetLeft(), managerFrame:GetTop() - UIParent:GetTop()) + managerFrame:SetPoint('TOPLEFT', UIParent, 'TOPLEFT', left, top - UIParent:GetTop()) managerFrame:SetMovable(false) end @@ -660,10 +668,15 @@ function PermoksAccountManager:CheckForModernize() if self.isCata then local internalVersion = self.db.global.internalCataVersion if not internalVersion or internalVersion < INTERNALCATAVERSION then - --self:ModernizeWOTLK(internalVersion) self:ModernizeCata(internalVersion) end self.db.global.internalCataVersion = INTERNALCATAVERSION + elseif self.isMists then + local internalVersion = self.db.global.internalMistsVersion + if not internalVersion or internalVersion < INTERNALMISTSVERSION then + self:ModernizeMists(internalVersion) + end + self.db.global.internalMistsVersion = INTERNALMISTSVERSION else local internalVersion = self.db.global.internalTWWVersion if (internalVersion or 0) < INTERNALTWWVERSION then @@ -673,6 +686,15 @@ function PermoksAccountManager:CheckForModernize() end end +function PermoksAccountManager:ModernizeMists(oldInternalVersion) + local db = self.db + + if (oldInternalVersion or 0) < 2 then + self:ResetCategories() + oldInternalVersion = 1 + end +end + function PermoksAccountManager:ModernizeCata(oldInternalVersion) local db = self.db @@ -729,7 +751,7 @@ function PermoksAccountManager:Modernize(oldInternalVersion) local db = self.db if not oldInternalVersion then - PermoksAccountManager:ResetCategories() + self:ResetCategories() oldInternalVersion = 1 end @@ -794,9 +816,11 @@ function PermoksAccountManager:Modernize(oldInternalVersion) self:AddLabelToDefaultCategory('currentweekly', 'nightfall_weekly', 7) end - if oldInternalVersion < 10 then - self:AddLabelToDefaultCategory('general', 'eye_of_nzoth') - self:AddLabelToDefaultCategory('general', 'displaced_corrupted_mementos') + if oldInternalVersion < 11 then + self.UpdateDefaultCategories('raid') + self.UpdateDefaultCategories('renown') + + self:AddLabelToDefaultCategory('general', 'undercoin') end end @@ -950,7 +974,8 @@ function PermoksAccountManager:OnLogin() self.account = db.accounts.main self.warbandData = db.accounts.main.warbandData local data = self.account.data - if guid and not data[guid] and not self:isBlacklisted(guid) and not (level < min_level) then + + if guid and (not data[guid] or not data[guid].name) and not self:isBlacklisted(guid) and not (level < min_level) then db.alts = db.alts + 1 self:AddNewCharacter(self.account, guid) end diff --git a/PermoksAccountManager_Mists.toc b/PermoksAccountManager_Mists.toc new file mode 100644 index 0000000..d53d503 --- /dev/null +++ b/PermoksAccountManager_Mists.toc @@ -0,0 +1,46 @@ +## Interface: 40400 +## Title: Permoks Account Manager +## Author: Permok +## Version: @project-version@ +## SavedVariables: PermoksAccountManagerDB +## X-Curse-Project-ID: 582886 +## X-Wago-ID: 25NRoe63 + + +libs\LibStub\LibStub.lua +libs\CallbackHandler-1.0\CallbackHandler-1.0.lua +libs\AceAddon-3.0\AceAddon-3.0.xml +libs\AceConsole-3.0\AceConsole-3.0.xml +libs\AceEvent-3.0\AceEvent-3.0.xml +libs\AceDB-3.0\AceDB-3.0.xml +libs\AceGUI-3.0\AceGUI-3.0.xml +libs\AceConfig-3.0\AceConfig-3.0.xml +libs\AceComm-3.0\AceComm-3.0.xml +libs\AceLocale-3.0\AceLocale-3.0.xml +libs\LibDataBroker-1.1\LibDataBroker-1.1.lua +libs\LibDBIcon-1.0\lib.xml +libs\LibQTip-1.0\lib.xml +libs\LibDeflate\LibDeflate.lua +libs\LibSerialize\LibSerialize.lua +libs\LibSharedMedia-3.0\lib.xml +libs\AceGUI-3.0-SharedMediaWidgets\widget.xml +libs\AceGUIWidget-TwoTextButton.lua + +modules.lua +locales\locales.xml +commands.lua +communication.lua + +db\db-mop.lua + +modules\accounts.lua +modules\character.lua +modules\currencies.lua +modules\factions.lua +modules\instances.lua +modules\quests.lua +modules\items.lua +modules\classic_professions.lua + +PermoksAccountManager.lua +options.lua diff --git a/db/db-mop.lua b/db/db-mop.lua new file mode 100644 index 0000000..2ff1fb0 --- /dev/null +++ b/db/db-mop.lua @@ -0,0 +1,411 @@ +local addonName, PermoksAccountManager = ... +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) + +local default_categories = { + general = { + order = 0, + name = "General", + childs = { + "characterName", + "characterLevel", + "ilevel", + "gold", + "location", + "profession1CDs", + "profession2CDs", + "honor_mists", + "conquest_points", + "justice_points", + "valor_points", + "ironpaw_token" + }, + childOrder = { + characterName = 1, + characterLevel = 2, + ilevel = 3, + gold = 4, + location = 5, + profession1CDs = 6, + profession2CDs = 7, + honor_mists = 8, + conquest_points = 9, + justice_points = 10, + valor_points = 11, + ironpaw_token = 12, + }, + hideToggle = true, + enabled = true, + }, + dailies = { + order = 1, + name = "Dailies (NYI)", + childs = {}, + childOrder = {}, + enabled = true, + }, + sharedFactions = { + order = 2, + name = "Repuation", + childs = { + "golden_lotus", + "shado_pan", + "the_august_celestials", + "the_black_prince", + "the_klaxxi", + "separator1", + "the_anglers", + "separator2", + "the_tillers", + }, + childOrder = { + golden_lotus = 1, + shado_pan = 2, + the_august_celestials = 3, + the_black_prince = 4, + the_klaxxi = 5, + separator1 = 10, + the_anglers = 11, + separator2 = 20, + the_tillers = 21, + }, + enabled = true, + }, + lockouts = { + order = 3, + name = "Lockouts", + childs = { + "mogushan_vaults", + "heart_of_fear", + "terrace_of_endless_spring", + }, + childOrder = { + mogushan_vaults = 1, + heart_of_fear = 2, + terrace_of_endless_spring = 3, + }, + enabled = true, + }, + items = { + order = 7, + name = "Items", + childs = {}, + childOrder = {}, + enabled = false, + }, +} + +PermoksAccountManager.groups = { + character = { + label = L["Character"], + order = 2, + }, + currency = { + label = L["Currency"], + order = 4, + }, + resetDaily = { + label = L["Daily Reset"], + order = 5, + }, + resetWeekly = { + label = L["Weekly Reset"], + order = 6, + }, + dungeons = { + label = L["Dungeons"], + order = 7, + }, + raids = { + label = L["Raids"], + order = 8, + }, + reputation = { + label = L["Reputation"], + order = 9, + }, + buff = { + label = L["Buff"], + order = 10, + }, + separator = { + label = L["Separator"], + order = 1, + }, + item = { + label = L["Items"], + order = 11, + }, + extra = { + label = L["Extra"], + order = 12, + }, + profession = { + label = L["Professions"], + order = 13, + }, + other = { + label = L["Other"], + order = 14, + }, +} + +PermoksAccountManager.labelRows = { + separator1 = { + hideLabel = true, + label = "Separator1", + data = function() + return "" + end, + group = "separator", + }, + separator2 = { + hideLabel = true, + label = "Separator2", + data = function() + return "" + end, + group = "separator", + }, + separator3 = { + hideLabel = true, + label = "Separator3", + data = function() + return "" + end, + group = "separator", + }, + separator4 = { + hideLabel = true, + label = "Separator4", + data = function() + return "" + end, + group = "separator", + }, + separator5 = { + hideLabel = true, + label = "Separator5", + data = function() + return "" + end, + group = "separator", + }, + separator6 = { + hideLabel = true, + label = "Separator6", + data = function() + return "" + end, + group = "separator", + }, +} + +-- instanceID = mapID (retail uses instanceIDs) +PermoksAccountManager.raids = { + -- old mount drop raids (optional) + [GetRealZoneText(309)] = { instanceID = 309, englishID = "zul_gurub" }, + [GetRealZoneText(532)] = { instanceID = 532, englishID = "karazhan" }, + [GetRealZoneText(550)] = { instanceID = 550, englishID = "tempest_keep" }, + + -- Wrath of the Lich King + [GetRealZoneText(533)] = { instanceID = 533, englishID = "naxxramas" }, + [GetRealZoneText(603)] = { instanceID = 603, englishID = "ulduar" }, + [GetRealZoneText(615)] = { instanceID = 615, englishID = "obsidian_sanctum" }, + [GetRealZoneText(616)] = { instanceID = 616, englishID = "eye_of_eternity" }, + [GetRealZoneText(624)] = { instanceID = 624, englishID = "vault_of_archavon" }, + [GetRealZoneText(649)] = { instanceID = 649, englishID = "trial_of_the_crusader" }, + [GetRealZoneText(249)] = { instanceID = 249, englishID = "onyxias_lair" }, + [GetRealZoneText(631)] = { instanceID = 631, englishID = "icecrown_citadel" }, + [GetRealZoneText(724)] = { instanceID = 724, englishID = "ruby_sanctum" }, + + -- Catacylsm + [GetRealZoneText(669)] = { instanceID = 669, englishID = "blackwing_descent" }, + [GetRealZoneText(671)] = { instanceID = 671, englishID = "the_bastion_of_twilight" }, + [GetRealZoneText(720)] = { instanceID = 720, englishID = "firelands" }, + [GetRealZoneText(754)] = { instanceID = 754, englishID = "throne_of_the_four_winds" }, + [GetRealZoneText(757)] = { instanceID = 757, englishID = "baradin_hold" }, + [GetRealZoneText(967)] = { instanceID = 967, englishID = "dragon_soul" }, + + -- Mists + [GetRealZoneText(1008)] = { instanceID = 1008, englishID = "mogushan_vaults" }, + [GetRealZoneText(1009)] = { instanceID = 1009, englishID = "heart_of_fear" }, + [GetRealZoneText(996)] = { instanceID = 996, englishID = "terrace_of_endless_spring" }, +} + +PermoksAccountManager.raidDifficultyLabels = { + [1] = "5N", + [2] = "5H", + [3] = "10N", + [4] = "25N", + [5] = "10H", + [6] = "25H", + [9] = "40", + [148] = "20", + [173] = "N", + [174] = "H", + [175] = "10", + [176] = "25", + [193] = "10H", + [194] = "25H", +} + +-- GetCurrentRegion +-- TODO Use instanceID or GetRealZoneText as key +-- Seems like we probably have to use GetCurrentRegionName +PermoksAccountManager.oldRaidResetInfo = { + -- US (+ Brazil + OC) + [1] = { + zg = { year = 2020, month = 4, day = 13, hour = 18, min = 0, sec = 0 }, + zgOC = { year = 2020, month = 4, day = 16, hour = 2, min = 0, sec = 0 }, -- not sure how to differentiate + }, + -- Korea + [2] = {}, + -- EU (+ Russia) + [3] = { + zg = { year = 2020, month = 4, day = 13, hour = 9, min = 0, sec = 0 }, --3*24*60*60 + }, + -- TW + [4] = {}, + -- CN + [5] = { + zg = { year = 2020, month = 4, day = 18, hour = 7, min = 0, sec = 0 }, + }, +} + +PermoksAccountManager.numDungeons = 16 + +-- Name = MapID +PermoksAccountManager.dungeons = {} + +PermoksAccountManager.item = { + -- Flasks + -- [46377] = { key = 'flaskEndlessRage' }, -- Flask of Endless Rage +} + +PermoksAccountManager.factions = { + [1269] = { name = "Golden Lotus" }, + [1270] = { name = "Shado-Pan" }, + [1341] = { name = "August Celestials" }, + [1359] = { name = "Black Prince" }, + [1337] = { name = "The Klaxxi" }, + [1302] = { name = "The Angler" }, + [1272] = { name = "The Tillers" }, +} + +PermoksAccountManager.currency = { + [1900] = 0, + [1901] = 0, + [101] = 0, + [102] = 0, + [161] = 0, + [221] = 0, + [301] = 0, + [2589] = 0, + [2711] = 0, + [341] = 0, + [390] = 0, + [391] = 0, + [395] = 0, + [396] = 0, + [402] = 0, -- Ironpaw Token +} + +PermoksAccountManager.currencyCustomOptions = { + [395] = { forceUpdate = true }, + [396] = { forceUpdate = true }, +} + +PermoksAccountManager.professionCDs = { + [L["Tailoring"]] = { + cds = { + [75141] = "Dreamcloth", + [75142] = "Dreamcloth", + [75144] = "Dreamcloth", + [75145] = "Dreamcloth", + [75146] = "Dreamcloth", + }, + items = { + [75141] = 54440, + [75142] = 54440, + [75144] = 54440, + [75145] = 54440, + [75146] = 54440, + }, + icon = 136249, + num = 6, + }, + [L["Alchemy"]] = { + cds = { + [78866] = L["Transmute: Living Elements"], -- Transmute: Living Elements + [80243] = L["Transmute: Truegold"], -- Transmute: Truegold + }, + items = { + [78866] = 54464, + [80243] = 58480, + }, + icon = 136240, + num = 2, + }, + [L["Leatherworking"]] = { + icon = 133611, + num = 0, + }, + [L["Enchanting"]] = { + icon = 136244, + num = 0, + }, + [L["Engineering"]] = { + icon = 136243, + num = 0, + }, + [L["Blacksmithing"]] = { + icon = 136241, + num = 0, + }, + [L["Herbalism"]] = { + icon = 136246, + num = 0, + }, + [L["Mining"]] = { + icon = 136248, + num = 0, + }, + [L["Skinning"]] = { + icon = 134366, + num = 0, + }, + [L["Jewelcrafting"]] = { + cds = { + [73478] = L["Fire Prism"], -- Fire Prism + }, + items = { + [73478] = 52304, + }, + icon = 134071, + num = 1, + }, + [L["Inscription"]] = { + icon = 237171, + num = 0, + }, +} + +PermoksAccountManager.quests = { + +} + +function PermoksAccountManager:getDefaultCategories(key) + return key and default_categories[key] or default_categories +end + +PermoksAccountManager.ICONSTRINGS = { + left = "\124T%d:18:18\124t %s", + right = "%s \124T%d:18:18\124t", + leftBank = "\124T%d:18:18\124t %s (%s)", + rightBank = "%s (%s) \124T%d:18:18\124t", +} + +PermoksAccountManager.ICONBANKSTRINGS = { + left = "\124T%d:18:18\124t %s (%s)", + right = "%s (%s) \124T%d:18:18\124t", +} diff --git a/db/db.lua b/db/db.lua index 435926a..658208c 100644 --- a/db/db.lua +++ b/db/db.lua @@ -14,7 +14,6 @@ local default_categories = { 'mplus_score', 'catalyst_charges', 'valorstones', - 'champion_crest', 'veteran_crest', 'normal_crest', 'hero_crest', @@ -25,12 +24,9 @@ local default_categories = { -- Probably interesting during the first weeks, might wanna (re-)move later 'separator2', 'restored_coffer_key', + 'undercoin', 'resonance_crystals', - 'kej', - 'radiant_remnant', 'radiant_echo', - 'empty_kajacola_can', - 'vintage_kajacola_can' }, childOrder = { characterName = 1, @@ -41,23 +37,19 @@ local default_categories = { mplus_score = 6, catalyst_charges = 7, valorstones = 8, - champion_crest = 9, - veteran_crest = 10, - normal_crest = 11, - hero_crest = 12, - myth_crest = 13, - spark_current = 14, - spark_drops = 15, + veteran_crest = 9, + normal_crest = 10, + hero_crest = 11, + myth_crest = 12, + spark_current = 13, + spark_drops = 14, -- Probably interesting during the first weeks, might wanna (re-)move later separator2 = 20, restored_coffer_key = 21, - resonance_crystals = 22, - kej = 23, - radiant_remnant = 24, - radiant_echo = 25, - empty_kajacola_can = 26, - vintage_kajacola_can = 27, + undercoin = 22, + resonance_crystals = 23, + radiant_echo = 24, }, hideToggle = true, enabled = true @@ -189,9 +181,14 @@ local default_categories = { 'blackwater_cartel', 'steamwheedle_cartel', 'venture_company', + 'separator2', 'gallagio_loyalty_rewards_club', 'darkfuse_solutions', + + 'separator3', + 'the_karesh_trust', + 'manaforge_vandals', }, childOrder = { council_of_dornogal = 1, @@ -214,6 +211,10 @@ local default_categories = { separator2 = 20, gallagio_loyalty_rewards_club = 21, darkfuse_solutions = 22, + + separator3 = 30, + the_karesh_trust = 31, + manaforge_vandals = 32, }, enabled = true }, @@ -222,11 +223,13 @@ local default_categories = { name = L['Raid'], childs = { 'nerub_ar_palace', - 'liberation_of_undermine' + 'liberation_of_undermine', + 'manaforge_omega' }, childOrder = { nerub_ar_palace = 1, liberation_of_undermine = 2, + manaforge_omega = 3, }, enabled = true }, @@ -268,7 +271,7 @@ local default_categories = { big_dig = 51, show_your_mettle = 52, }, - enabled = true, + enabled = false, }, old_daily = { order = 9, @@ -414,7 +417,7 @@ PermoksAccountManager.labelRows = { } } -PermoksAccountManager.numDungeons = 8 +PermoksAccountManager.numDungeons = 7 PermoksAccountManager.keys = { [2] = "TJS", -- Temple of the Jade Serpent [165] = "SBG", -- Shadowmoon Burial Grounds @@ -476,6 +479,7 @@ PermoksAccountManager.keys = { [506] = 'BREW', -- Cinderbrew Meadery [507] = 'GB', -- Grim Batol [525] = 'FLOOD', -- Floodgate + [542] = 'ECO', -- Eco-Dome Al'dani } -- Timewalking Keystones @@ -499,17 +503,17 @@ PermoksAccountManager.raids = { [2657] = { name = GetRealZoneText(2657), englishID = 'nerub_ar_palace', instanceID = 1273, startIndex = 1, endIndex = 8 }, [2792] = { name = GetRealZoneText(2792), englishID = 'blackrock_depths_raid', instanceID = 1301, startIndex = 1, endIndex = 8 }, [2769] = { name = GetRealZoneText(2769), englishID = 'liberation_of_undermine', instanceID = 1296, startIndex = 1, endIndex = 8 }, + [2810] = { name = GetRealZoneText(2810), englishID = 'manaforge_omega', instanceID = 1302, startIndex = 1, endIndex = 8 }, } PermoksAccountManager.dungeons = { - [1822] = GetRealZoneText(1822), -- Siege of Boralus - [670] = GetRealZoneText(670), -- Grim Batol - [2286] = GetRealZoneText(2286), -- The Necrotic Wake - [2290] = GetRealZoneText(2290), -- Mists of Tiran Scithe - [2652] = GetRealZoneText(2652), -- The Stonevault + [2287] = GetRealZoneText(2287), -- Halls of Atonement + [2649] = GetRealZoneText(2649), -- Priory of the Sacred Flame [2660] = GetRealZoneText(2660), -- Ara-Kara, City of Echoes [2662] = GetRealZoneText(2662), -- The Dawnbreaker - [2669] = GetRealZoneText(2669), -- City of Threads + [2773] = GetRealZoneText(2773), -- Operation: Floodgate + [2830] = GetRealZoneText(2830), -- Eco-Dome Al'dani + [2441] = GetRealZoneText(2441), -- Tazavesh, the Veiled Market } PermoksAccountManager.item = { @@ -566,6 +570,10 @@ PermoksAccountManager.item = { -- 11.1 [230905] = { key = 'spark_current' }, -- Fractured Spark of Fortunes [230906] = { key = 'spark_current' }, -- Spark of Fortunes + + -- 11.2 + [231757] = { key = 'spark_current'}, -- Fractured Spark of Starlight + [231756] = { key = 'spark_current'}, -- Spark of Starlight } PermoksAccountManager.factions = { @@ -610,6 +618,10 @@ PermoksAccountManager.factions = { [2677] = { name = 'Steamwheedle Cartel', paragon = true, warband = 'unique' }, [2685] = { name = 'Gallagio Loyalty Rewards Club', paragon = true, type = 'renown', warband = 'unique' }, [2688] = { name = 'Flame\'s Radiance', paragon = true, warband = 'unique' }, + + -- 11.2 + [2658] = { name = 'The K\'aresh Trust', paragon = true, type = 'renown', warband = 'unique' }, + [2736] = { name = 'Manaforge Vandals', type = 'renown', warband = 'unique' }, } PermoksAccountManager.currency = { @@ -672,6 +684,16 @@ PermoksAccountManager.currency = { [3100] = 0, -- Bronze Celebration Token [1166] = 0, -- Timewarped Badge + + -- 11.2 + [3141] = 0, -- Starlight Spark Dust + + [3284] = 0, -- Weathered Ethereal Crest + [3286] = 0, -- Carved Ethereal Crest + [3288] = 0, -- Runed Ethereal Crest + [3290] = 0, -- Gilded Ethereal Crest + + [3269] = 0, -- Ethereal Voidsplinter (Catalyst Charges TWW Season 3) } PermoksAccountManager.currencyTrees = { @@ -692,6 +714,10 @@ PermoksAccountManager.currencyCustomOptions = { [3108] = { forceUpdate = true }, [3109] = { forceUpdate = true }, [3110] = { forceUpdate = true }, + [3284] = { forceUpdate = true }, + [3286] = { forceUpdate = true }, + [3288] = { forceUpdate = true }, + [3290] = { forceUpdate = true }, } PermoksAccountManager.research = { @@ -1656,6 +1682,17 @@ PermoksAccountManager.quests = { [82512] = { questType = 'weekly', log = true }, -- Worldsoul: World Boss [82516] = { questType = 'weekly', log = true }, -- Worldsoul: Forging a Pact [82659] = { questType = 'weekly', log = true }, -- Worldsoul: Nerub-ar Palace + -- [86476] = { questType = 'weekly', log = true }, -- Worldsoul Memory: Early Cartel Wars + -- [86478] = { questType = 'weekly', log = true }, -- Worldsoul Memory: Kaja'mite Contact + [87417] = { questType = 'weekly', log = true }, -- Worldsoul: Dungeons + [87419] = { questType = 'weekly', log = true }, -- Worldsoul: Delves + [87422] = { questType = 'weekly', log = true }, -- Worldsoul: Undermine World Quests + [87423] = { questType = 'weekly', log = true }, -- Worldsoul: Undermine Explorer + [87424] = { questType = 'weekly', log = true }, -- Worldsoul: World Bosses + [89502] = { questType = 'weekly', log = true }, -- Worldsoul: Nightfall + [89514] = { questType = 'weekly', log = true }, -- Worldsoul: Horrific Visions Revisited + [91052] = { questType = 'weekly', log = true }, -- Worldsoul: Overcharged Delves + [91855] = { questType = 'weekly', log = true }, -- Worldsoul: K'aresh World Quests [82746] = { questType = 'weekly', log = true }, -- Delves: Breaking Tough to Loot Stuff [82712] = { questType = 'weekly', log = true }, -- Delves: Trouble Up and Down Khaz Algar @@ -2028,38 +2065,38 @@ end PermoksAccountManager.vault_rewards = { -- MythicPlus [Enum.WeeklyRewardChestThresholdType.Activities] = { - [-1] = 636, - [0] = 646, - [2] = 649, - [3] = 649, - [4] = 652, - [5] = 652, - [6] = 655, - [7] = 658, - [8] = 658, - [9] = 658, - [10] = 662, - }, - -- World + [-1] = 678, + [0] = 688, + [2] = 691, + [3] = 694, + [4] = 694, + [5] = 697, + [6] = 697, + [7] = 701, + [8] = 704, + [9] = 704, + [10] = 707, + }, + -- World/Delves [Enum.WeeklyRewardChestThresholdType.World] = { - [1] = 623, - [2] = 623, - [3] = 626, - [4] = 632, - [5] = 636, - [6] = 642, - [7] = 645, - [8] = 649, - [9] = 649, - [10] = 649, - [11] = 649, + [1] = 668, + [2] = 671, + [3] = 675, + [4] = 678, + [5] = 684, + [6] = 688, + [7] = 691, + [8] = 694, + [9] = 694, + [10] = 694, + [11] = 694, }, -- Raid [Enum.WeeklyRewardChestThresholdType.Raid] = { - [17] = 623, - [14] = 636, - [15] = 649, - [16] = 662, + [17] = 671, + [14] = 684, + [15] = 697, + [16] = 710, } } diff --git a/locales/deDE.lua b/locales/deDE.lua index 64106f1..8804208 100644 --- a/locales/deDE.lua +++ b/locales/deDE.lua @@ -208,6 +208,7 @@ L['Add/Edit'] = true L['Add'] = 'Hinzufügen' L['Create'] = 'Erstellen' L['Edit'] = 'Bearbeiten' +L['Save'] = "Speichern" L['ID'] = true L['Type'] = true L['Quest'] = true diff --git a/locales/enUS.lua b/locales/enUS.lua index 0af231a..694bc11 100644 --- a/locales/enUS.lua +++ b/locales/enUS.lua @@ -208,6 +208,7 @@ L['Add/Edit'] = true L['Add'] = true L['Create'] = true L['Edit'] = true +L['Save'] = true L['ID'] = true L['Type'] = true L['Quest'] = true diff --git a/modules/character.lua b/modules/character.lua index a08ccfe..dbdfd6a 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -34,7 +34,7 @@ local labelRows = { return alt_data.charLevel or '-' end, group = 'character', - version = WOW_PROJECT_CATACLYSM_CLASSIC + version = false }, location = { label = L['Location'], @@ -42,14 +42,14 @@ local labelRows = { return (alt_data.location and PermoksAccountManager:CreateLocationString(alt_data.location)) or '-' end, group = 'character', - version = WOW_PROJECT_CATACLYSM_CLASSIC + version = false }, ilevel = { label = L['Item Level'], data = function(alt_data) return alt_data.ilevel and string.format('%.2f', alt_data.ilevel) or '-' end, - version = WOW_PROJECT_MAINLINE + version = false }, ilevel_wrath = { label = L['Item Level'], @@ -559,7 +559,7 @@ local function Update(charInfo) UpdateGeneralData(charInfo) UpdateGold(charInfo) - if PermoksAccountManager.isBC then + if not PermoksAccountManager.isRetail then UpdatePlayerLevel(charInfo) UpdateLocation(charInfo) else diff --git a/modules/currencies.lua b/modules/currencies.lua index c03a38d..13752fa 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -258,7 +258,7 @@ local labelRows = { veteran_crest = { label = 'Weathered Crests', type = 'crestcurrency', - key = 3107, + key = 3284, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -266,7 +266,7 @@ local labelRows = { normal_crest = { label = 'Carved Crests', type = 'crestcurrency', - key = 3108, + key = 3286, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -274,7 +274,7 @@ local labelRows = { hero_crest = { label = 'Runed Crests', type = 'crestcurrency', - key = 3109, + key = 3288, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -282,7 +282,7 @@ local labelRows = { myth_crest = { label = 'Gilded Crests', type = 'crestcurrency', - key = 3110, + key = 3290, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -345,7 +345,7 @@ local labelRows = { spark_drops = { label = 'Spark Cap', type = 'currency', - key = 3132, + key = 3141, group = 'currency', hideIcon = true, version = WOW_PROJECT_MAINLINE, @@ -367,7 +367,7 @@ local labelRows = { catalyst_charges = { label = L['Catalyst Charges'], type = 'catalystcharges', - key = 3116, + key = 3269, hideIcon = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -489,7 +489,7 @@ local labelRows = { key = 395, abbMax = true, group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + version = false }, valor_points = { label = 'Valor Points', @@ -498,7 +498,7 @@ local labelRows = { abbMax = true, passRow = true, group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + version = false }, conquest_points = { label = 'Conquest', @@ -506,7 +506,7 @@ local labelRows = { key = 390, abbMax = true, group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC + version = false }, tol_barad_commendations = { label = 'Commendations', @@ -516,6 +516,33 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_CATACLYSM_CLASSIC }, + + -- Mists + honor_mists = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[1901] and + PermoksAccountManager.db.global.currencyInfo[1901].name or 'Honor' + end, + type = 'currency', + key = 1901, + abbMax = true, + customIcon = { + height = 20, + width = 20, + xOffset = -3, + yOffset = -1 + }, + group = 'currency', + version = WOW_PROJECT_MISTS_CLASSIC + }, + ironpaw_token = { + label = 'Ironpaw Token', + type = 'currency', + key = 402, + abbMax = true, + group = 'currency', + version = WOW_PROJECT_MISTS_CLASSIC + }, } local function UpdateAllCurrencies(charInfo) @@ -546,6 +573,10 @@ end local function UpdateAllTreeCurrencies(charInfo) local self = PermoksAccountManager + if not self.currencyTrees then + return + end + charInfo.treeCurrencyInfo = charInfo.treeCurrencyInfo or {} local currencyInfo = charInfo.treeCurrencyInfo @@ -695,22 +726,22 @@ local function CurrencyTransferUpdate(charInfo) for _, alt in pairs(newWarbandCurrencyInfo) do local character = accountData[alt.characterGUID] - if character and character.currencyInfo[lastTransferCurrencyType] then + if character and character.currencyInfo and character.currencyInfo[lastTransferCurrencyType] then character.currencyInfo[lastTransferCurrencyType].quantity = alt.quantity end end end local function UpdateCatalystCharges(charInfo) - if not charInfo.currencyInfo or not charInfo.currencyInfo[3116] then + if not charInfo.currencyInfo or not charInfo.currencyInfo[3269] then UpdateAllCurrencies(charInfo) end - charInfo.currencyInfo[3116].quantity = C_CurrencyInfo.GetCurrencyInfo(3116).quantity + charInfo.currencyInfo[3269].quantity = C_CurrencyInfo.GetCurrencyInfo(3269).quantity end local function CreateCatalystChargeString(currencyInfo) - local catalystCharges = currencyInfo and currencyInfo[3116] + local catalystCharges = currencyInfo and currencyInfo[3269] if not catalystCharges then return '-' end return PermoksAccountManager:CreateFractionString(catalystCharges.quantity, catalystCharges.maxQuantity) diff --git a/modules/factions.lua b/modules/factions.lua index 905ad3d..db5addc 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -1,857 +1,962 @@ local addonName, PermoksAccountManager = ... -local L = LibStub('AceLocale-3.0'):GetLocale(addonName) +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) local FACTION_STANDING_LABEL_CUSTOM = {} local FACTION_BAR_COLORS_CUSTOM = { - [1] = { r = 152, g = 32, b = 32 }, - [2] = { r = 222, g = 0, b = 10 }, - [3] = { r = 209, g = 102, b = 33 }, - [4] = { r = 222, g = 255, b = 10 }, - [5] = { r = 7, g = 255, b = 13 }, - [6] = { r = 10, g = 222, b = 136 }, - [7] = { r = 18, g = 224, b = 204 }, - [8] = { r = 5, g = 255, b = 189 }, + [1] = { r = 152, g = 32, b = 32 }, + [2] = { r = 222, g = 0, b = 10 }, + [3] = { r = 209, g = 102, b = 33 }, + [4] = { r = 222, g = 255, b = 10 }, + [5] = { r = 7, g = 255, b = 13 }, + [6] = { r = 10, g = 222, b = 136 }, + [7] = { r = 18, g = 224, b = 204 }, + [8] = { r = 5, g = 255, b = 189 }, } do - for standingID, color in pairs(FACTION_BAR_COLORS) do - FACTION_BAR_COLORS_CUSTOM[standingID] = FACTION_BAR_COLORS_CUSTOM[standingID] or - { r = color.r * 256, g = color.g * 256, b = color.b * 256 } - end - FACTION_BAR_COLORS_CUSTOM[9] = { r = 16, g = 165, b = 202 } - - for i = 1, 8 do - FACTION_STANDING_LABEL_CUSTOM[i] = GetText('FACTION_STANDING_LABEL' .. i) - end - FACTION_STANDING_LABEL_CUSTOM[9] = 'Paragon' + for standingID, color in pairs(FACTION_BAR_COLORS) do + FACTION_BAR_COLORS_CUSTOM[standingID] = FACTION_BAR_COLORS_CUSTOM[standingID] + or { r = color.r * 256, g = color.g * 256, b = color.b * 256 } + end + FACTION_BAR_COLORS_CUSTOM[9] = { r = 16, g = 165, b = 202 } + + for i = 1, 8 do + FACTION_STANDING_LABEL_CUSTOM[i] = GetText("FACTION_STANDING_LABEL" .. i) + end + FACTION_STANDING_LABEL_CUSTOM[9] = "Paragon" end local labelRows = { - archivists = { - label = L['Archivists'], - type = 'faction', - key = 2472, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - deaths_advance = { - label = function() - return PermoksAccountManager.factions[2470].localName or L["Death's Advance"] - end, - type = 'faction', - key = 2470, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - venari = { - label = function() - return PermoksAccountManager.factions[2432].localName or L["Ve'nari"] - end, - type = 'faction', - key = 2432, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - ascended = { - label = function() - return PermoksAccountManager.factions[2407].localName or L['Ascended'] - end, - type = 'faction', - key = 2407, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - wild_hunt = { - label = function() - return PermoksAccountManager.factions[2465].localName or L['Wild Hunt'] - end, - type = 'faction', - key = 2465, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - undying_army = { - label = function() - return PermoksAccountManager.factions[2410].localName or L['Undying Army'] - end, - type = 'faction', - key = 2410, - group = 'reputation' - }, - court_of_harvesters = { - label = function() - return PermoksAccountManager.factions[2413].localName or L['Court of Harvesters'] - end, - type = 'faction', - key = 2413, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - the_enlightened = { - label = function() - return PermoksAccountManager.factions[2478].localName or L['The Enlightened'] - end, - type = 'faction', - key = 2478, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - dragonscale_expedition = { - label = function() - return PermoksAccountManager.factions[2507].localName or 'Expedition' - end, - type = 'faction', - warband = 'unique', - key = 2507, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - iskaara_tuskar = { - label = function() - return PermoksAccountManager.factions[2511].localName or 'Iskaara Tuskar' - end, - type = 'faction', - warband = 'unique', - key = 2511, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - maruuk_centaur = { - label = function() - return PermoksAccountManager.factions[2503].localName or 'Maruuk Centaur' - end, - type = 'faction', - warband = 'unique', - key = 2503, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - valdrakken_akkord = { - label = function() - return PermoksAccountManager.factions[2510].localName or 'Valdrakken Akkord' - end, - type = 'faction', - warband = 'unique', - key = 2510, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - winterpelt_furbolg = { - label = function() - return PermoksAccountManager.factions[2526].localName or 'Winterpelt Furbolg' - end, - type = 'faction', - key = 2526, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - artisan_consortium = { - label = function() - return PermoksAccountManager.factions[2544].localName or "Artisan's Consortium" - end, - type = 'faction', - warband = 'unique', - key = 2544, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - cobalt_assembly = { - label = function() - return PermoksAccountManager.factions[2550].localName or "Cobalt Assembly" - end, - type = 'faction', - warband = 'unique', - key = 2550, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - sabellian = { - label = function() - return PermoksAccountManager.factions[2518].localName or 'Sabellian' - end, - type = 'faction', - warband = 'unique', - key = 2518, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - wrathion = { - label = function() - return PermoksAccountManager.factions[2517].localName or 'Wrathion' - end, - type = 'faction', - warband = 'unique', - key = 2517, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - loam_niffen = { - label = function() - return PermoksAccountManager.factions[2564].localName or 'Loam Niffen' - end, - type = 'faction', - warband = 'unique', - key = 2564, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - dream_wardens = { - label = function() - return PermoksAccountManager.factions[2574].localName or 'Dream Wardens' - end, - type = 'faction', - warband = 'unique', - key = 2574, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - soridormi = { - label = function() - return PermoksAccountManager.factions[2553].localName or 'Soridormi' - end, - type = 'faction', - warband = 'unique', - key = 2553, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - keg_legs_crew = { - label = function() - return PermoksAccountManager.factions[2593].localName or 'Keg Leg\'s Crew' - end, - type = 'faction', - warband = 'unique', - key = 2593, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - - -- 11.0 - council_of_dornogal = { - label = function() - return PermoksAccountManager.factions[2590].localName or 'Council of Dornogal' - end, - type = 'faction', - warband = 'unique', - key = 2590, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - hallowfall_arathi = { - label = function() - return PermoksAccountManager.factions[2570].localName or 'Hallowfall Arathi' - end, - type = 'faction', - warband = 'unique', - key = 2570, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - the_assembly_of_the_deeps = { - label = function() - return PermoksAccountManager.factions[2594].localName or 'The Assembly of the Deeps' - end, - type = 'faction', - warband = 'unique', - key = 2594, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - the_severed_threads = { - label = function() - return PermoksAccountManager.factions[2600].localName or 'The Severed Threads' - end, - type = 'faction', - warband = 'unique', - key = 2600, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - the_general = { - label = function() - return PermoksAccountManager.factions[2605].localName or 'The General' - end, - type = 'faction', - warband = 'unique', - key = 2605, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - the_vizier = { - label = function() - return PermoksAccountManager.factions[2607].localName or 'The Vizier' - end, - type = 'faction', - warband = 'unique', - key = 2607, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - the_weaver = { - label = function() - return PermoksAccountManager.factions[2601].localName or 'The Weaver' - end, - type = 'faction', - warband = 'unique', - key = 2601, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - brann_bronzebeard = { - label = function() - return PermoksAccountManager.factions[2640].localName or 'Brann Bronzebeard' - end, - type = 'faction', - warband = 'unique', - key = 2640, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - - -- 11.1 - the_cartels_of_undermine = { - label = function() - return PermoksAccountManager.factions[2653].localName or 'Cartels Undermine' - end, - type = 'faction', - warband = 'unique', - key = 2653, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - bilgewater_cartel = { - label = function() - return PermoksAccountManager.factions[2673].localName or 'Bilgewater' - end, - type = 'faction', - warband = 'unique', - key = 2673, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - blackwater_cartel = { - label = function() - return PermoksAccountManager.factions[2675].localName or 'Blackwater' - end, - type = 'faction', - warband = 'unique', - key = 2675, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - steamwheedle_cartel = { - label = function() - return PermoksAccountManager.factions[2677].localName or 'Steamwheedle' - end, - type = 'faction', - warband = 'unique', - key = 2677, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - venture_company = { - label = function() - return PermoksAccountManager.factions[2671].localName or 'Venture Company' - end, - type = 'faction', - warband = 'unique', - key = 2671, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - gallagio_loyalty_rewards_club = { - label = function() - return PermoksAccountManager.factions[2685].localName or 'Gallagio' - end, - type = 'faction', - warband = 'unique', - key = 2685, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - darkfuse_solutions = { - label = function() - return PermoksAccountManager.factions[2669].localName or 'Darkfuse Solutions' - end, - type = 'faction', - warband = 'unique', - key = 2669, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - flames_radiance = { - label = function() - return PermoksAccountManager.factions[2688].localName or 'Flame\'s Radiance' - end, - type = 'faction', - warband = 'unique', - key = 2688, - group = 'reputation', - version = WOW_PROJECT_MAINLINE - }, - - -- wotlk - alliance_vanguard = { - label = function() - local factionInfo = PermoksAccountManager.factions[1037] - return factionInfo.localName or factionInfo.name - end, - key = 1037, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - valiance_expedition = { - label = function() - local factionInfo = PermoksAccountManager.factions[1050] - return factionInfo.localName or factionInfo.name - end, - key = 1050, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - horde_expedition = { - label = function() - local factionInfo = PermoksAccountManager.factions[1052] - return factionInfo.localName or factionInfo.name - end, - key = 1052, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_taunka = { - label = function() - local factionInfo = PermoksAccountManager.factions[1064] - return factionInfo.localName or factionInfo.name - end, - key = 1064, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_hand_of_vengeance = { - label = function() - local factionInfo = PermoksAccountManager.factions[1067] - return factionInfo.localName or factionInfo.name - end, - key = 1067, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - explorers_league = { - label = function() - local factionInfo = PermoksAccountManager.factions[1068] - return factionInfo.localName or factionInfo.name - end, - key = 1068, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_kaluak = { - label = function() - local factionInfo = PermoksAccountManager.factions[1073] - return factionInfo.localName or factionInfo.name - end, - key = 1073, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - warsong_offensive = { - label = function() - local factionInfo = PermoksAccountManager.factions[1085] - return factionInfo.localName or factionInfo.name - end, - key = 1085, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - kirin_tor = { - label = function() - local factionInfo = PermoksAccountManager.factions[1090] - return factionInfo.localName or factionInfo.name - end, - key = 1090, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_wyrmrest_accord = { - label = function() - local factionInfo = PermoksAccountManager.factions[1091] - return factionInfo.localName or factionInfo.name - end, - key = 1091, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_silver_covenant = { - label = function() - local factionInfo = PermoksAccountManager.factions[1094] - return factionInfo.localName or factionInfo.name - end, - key = 1094, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - knights_of_the_ebon_blade = { - label = function() - local factionInfo = PermoksAccountManager.factions[1098] - return factionInfo.localName or factionInfo.name - end, - key = 1098, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - frenzyheart_tribe = { - label = function() - local factionInfo = PermoksAccountManager.factions[1104] - return factionInfo.localName or factionInfo.name - end, - key = 1104, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_oracles = { - label = function() - local factionInfo = PermoksAccountManager.factions[1105] - return factionInfo.localName or factionInfo.name - end, - key = 1105, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - argent_crusade = { - label = function() - local factionInfo = PermoksAccountManager.factions[1106] - return factionInfo.localName or factionInfo.name - end, - key = 1106, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_sons_of_hodir = { - label = function() - local factionInfo = PermoksAccountManager.factions[1119] - return factionInfo.localName or factionInfo.name - end, - key = 1119, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_sunreavers = { - label = function() - local factionInfo = PermoksAccountManager.factions[1124] - return factionInfo.localName or factionInfo.name - end, - key = 1124, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_frostborn = { - label = function() - local factionInfo = PermoksAccountManager.factions[1126] - return factionInfo.localName or factionInfo.name - end, - key = 1126, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - the_ashen_verdict = { - label = function() - local factionInfo = PermoksAccountManager.factions[1156] - return factionInfo.localName or factionInfo.name - end, - key = 1156, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - - the_earthen_ring = { - label = function() - local factionInfo = PermoksAccountManager.factions[1135] - return factionInfo.localName or factionInfo.name - end, - key = 1135, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - therazane = { - label = function() - local factionInfo = PermoksAccountManager.factions[1171] - return factionInfo.localName or factionInfo.name - end, - key = 1171, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - guardians_of_hyjal = { - label = function() - local factionInfo = PermoksAccountManager.factions[1158] - return factionInfo.localName or factionInfo.name - end, - key = 1158, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - dragonmaw_clan = { - label = function() - local factionInfo = PermoksAccountManager.factions[1172] - return factionInfo.localName or factionInfo.name - end, - key = 1172, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - ramkahen = { - label = function() - local factionInfo = PermoksAccountManager.factions[1173] - return factionInfo.localName or factionInfo.name - end, - key = 1173, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - wildhammer_clan = { - label = function() - local factionInfo = PermoksAccountManager.factions[1174] - return factionInfo.localName or factionInfo.name - end, - key = 1174, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - hellscreams_reach = { - label = function() - local factionInfo = PermoksAccountManager.factions[1178] - return factionInfo.localName or factionInfo.name - end, - key = 1178, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, - baradins_warden = { - label = function() - local factionInfo = PermoksAccountManager.factions[1177] - return factionInfo.localName or factionInfo.name - end, - key = 1177, - type = 'faction', - version = WOW_PROJECT_CATACLYSM_CLASSIC, - group = 'reputation' - }, + archivists = { + label = L["Archivists"], + type = "faction", + key = 2472, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + deaths_advance = { + label = function() + return PermoksAccountManager.factions[2470].localName or L["Death's Advance"] + end, + type = "faction", + key = 2470, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + venari = { + label = function() + return PermoksAccountManager.factions[2432].localName or L["Ve'nari"] + end, + type = "faction", + key = 2432, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + ascended = { + label = function() + return PermoksAccountManager.factions[2407].localName or L["Ascended"] + end, + type = "faction", + key = 2407, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + wild_hunt = { + label = function() + return PermoksAccountManager.factions[2465].localName or L["Wild Hunt"] + end, + type = "faction", + key = 2465, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + undying_army = { + label = function() + return PermoksAccountManager.factions[2410].localName or L["Undying Army"] + end, + type = "faction", + key = 2410, + group = "reputation", + }, + court_of_harvesters = { + label = function() + return PermoksAccountManager.factions[2413].localName or L["Court of Harvesters"] + end, + type = "faction", + key = 2413, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + the_enlightened = { + label = function() + return PermoksAccountManager.factions[2478].localName or L["The Enlightened"] + end, + type = "faction", + key = 2478, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + dragonscale_expedition = { + label = function() + return PermoksAccountManager.factions[2507].localName or "Expedition" + end, + type = "faction", + warband = "unique", + key = 2507, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + iskaara_tuskar = { + label = function() + return PermoksAccountManager.factions[2511].localName or "Iskaara Tuskar" + end, + type = "faction", + warband = "unique", + key = 2511, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + maruuk_centaur = { + label = function() + return PermoksAccountManager.factions[2503].localName or "Maruuk Centaur" + end, + type = "faction", + warband = "unique", + key = 2503, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + valdrakken_akkord = { + label = function() + return PermoksAccountManager.factions[2510].localName or "Valdrakken Akkord" + end, + type = "faction", + warband = "unique", + key = 2510, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + winterpelt_furbolg = { + label = function() + return PermoksAccountManager.factions[2526].localName or "Winterpelt Furbolg" + end, + type = "faction", + key = 2526, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + artisan_consortium = { + label = function() + return PermoksAccountManager.factions[2544].localName or "Artisan's Consortium" + end, + type = "faction", + warband = "unique", + key = 2544, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + cobalt_assembly = { + label = function() + return PermoksAccountManager.factions[2550].localName or "Cobalt Assembly" + end, + type = "faction", + warband = "unique", + key = 2550, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + sabellian = { + label = function() + return PermoksAccountManager.factions[2518].localName or "Sabellian" + end, + type = "faction", + warband = "unique", + key = 2518, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + wrathion = { + label = function() + return PermoksAccountManager.factions[2517].localName or "Wrathion" + end, + type = "faction", + warband = "unique", + key = 2517, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + loam_niffen = { + label = function() + return PermoksAccountManager.factions[2564].localName or "Loam Niffen" + end, + type = "faction", + warband = "unique", + key = 2564, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + dream_wardens = { + label = function() + return PermoksAccountManager.factions[2574].localName or "Dream Wardens" + end, + type = "faction", + warband = "unique", + key = 2574, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + soridormi = { + label = function() + return PermoksAccountManager.factions[2553].localName or "Soridormi" + end, + type = "faction", + warband = "unique", + key = 2553, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + keg_legs_crew = { + label = function() + return PermoksAccountManager.factions[2593].localName or "Keg Leg's Crew" + end, + type = "faction", + warband = "unique", + key = 2593, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + + -- 11.0 + council_of_dornogal = { + label = function() + return PermoksAccountManager.factions[2590].localName or "Council of Dornogal" + end, + type = "faction", + warband = "unique", + key = 2590, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + hallowfall_arathi = { + label = function() + return PermoksAccountManager.factions[2570].localName or "Hallowfall Arathi" + end, + type = "faction", + warband = "unique", + key = 2570, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + the_assembly_of_the_deeps = { + label = function() + return PermoksAccountManager.factions[2594].localName or "The Assembly of the Deeps" + end, + type = "faction", + warband = "unique", + key = 2594, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + the_severed_threads = { + label = function() + return PermoksAccountManager.factions[2600].localName or "The Severed Threads" + end, + type = "faction", + warband = "unique", + key = 2600, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + the_general = { + label = function() + return PermoksAccountManager.factions[2605].localName or "The General" + end, + type = "faction", + warband = "unique", + key = 2605, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + the_vizier = { + label = function() + return PermoksAccountManager.factions[2607].localName or "The Vizier" + end, + type = "faction", + warband = "unique", + key = 2607, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + the_weaver = { + label = function() + return PermoksAccountManager.factions[2601].localName or "The Weaver" + end, + type = "faction", + warband = "unique", + key = 2601, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + brann_bronzebeard = { + label = function() + return PermoksAccountManager.factions[2640].localName or "Brann Bronzebeard" + end, + type = "faction", + warband = "unique", + key = 2640, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + + -- 11.1 + the_cartels_of_undermine = { + label = function() + return PermoksAccountManager.factions[2653].localName or "Cartels Undermine" + end, + type = "faction", + warband = "unique", + key = 2653, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + bilgewater_cartel = { + label = function() + return PermoksAccountManager.factions[2673].localName or "Bilgewater" + end, + type = "faction", + warband = "unique", + key = 2673, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + blackwater_cartel = { + label = function() + return PermoksAccountManager.factions[2675].localName or "Blackwater" + end, + type = "faction", + warband = "unique", + key = 2675, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + steamwheedle_cartel = { + label = function() + return PermoksAccountManager.factions[2677].localName or "Steamwheedle" + end, + type = "faction", + warband = "unique", + key = 2677, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + venture_company = { + label = function() + return PermoksAccountManager.factions[2671].localName or "Venture Company" + end, + type = "faction", + warband = "unique", + key = 2671, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + gallagio_loyalty_rewards_club = { + label = function() + return PermoksAccountManager.factions[2685].localName or "Gallagio" + end, + type = "faction", + warband = "unique", + key = 2685, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + darkfuse_solutions = { + label = function() + return PermoksAccountManager.factions[2669].localName or "Darkfuse Solutions" + end, + type = "faction", + warband = "unique", + key = 2669, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + flames_radiance = { + label = function() + return PermoksAccountManager.factions[2688].localName or "Flame's Radiance" + end, + type = "faction", + warband = "unique", + key = 2688, + group = "reputation", + version = WOW_PROJECT_MAINLINE, + }, + + -- 11.2 + the_karesh_trust = { + label = function() + return PermoksAccountManager.factions[2658].localName or "Manaforge Vandals" + end, + type = "faction", + warband = "unique", + key = 2658, + group = "reputation", + version = WOW_PROJECT_MAINLINE + }, + manaforge_vandals = { + label = function() + return PermoksAccountManager.factions[2736].localName or "Manaforge Vandals" + end, + type = "faction", + warband = "unique", + key = 2736, + group = "reputation", + version = WOW_PROJECT_MAINLINE + }, + + -- wotlk + alliance_vanguard = { + label = function() + local factionInfo = PermoksAccountManager.factions[1037] + return factionInfo.localName or factionInfo.name + end, + key = 1037, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + valiance_expedition = { + label = function() + local factionInfo = PermoksAccountManager.factions[1050] + return factionInfo.localName or factionInfo.name + end, + key = 1050, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + horde_expedition = { + label = function() + local factionInfo = PermoksAccountManager.factions[1052] + return factionInfo.localName or factionInfo.name + end, + key = 1052, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_taunka = { + label = function() + local factionInfo = PermoksAccountManager.factions[1064] + return factionInfo.localName or factionInfo.name + end, + key = 1064, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_hand_of_vengeance = { + label = function() + local factionInfo = PermoksAccountManager.factions[1067] + return factionInfo.localName or factionInfo.name + end, + key = 1067, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + explorers_league = { + label = function() + local factionInfo = PermoksAccountManager.factions[1068] + return factionInfo.localName or factionInfo.name + end, + key = 1068, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_kaluak = { + label = function() + local factionInfo = PermoksAccountManager.factions[1073] + return factionInfo.localName or factionInfo.name + end, + key = 1073, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + warsong_offensive = { + label = function() + local factionInfo = PermoksAccountManager.factions[1085] + return factionInfo.localName or factionInfo.name + end, + key = 1085, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + kirin_tor = { + label = function() + local factionInfo = PermoksAccountManager.factions[1090] + return factionInfo.localName or factionInfo.name + end, + key = 1090, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_wyrmrest_accord = { + label = function() + local factionInfo = PermoksAccountManager.factions[1091] + return factionInfo.localName or factionInfo.name + end, + key = 1091, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_silver_covenant = { + label = function() + local factionInfo = PermoksAccountManager.factions[1094] + return factionInfo.localName or factionInfo.name + end, + key = 1094, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + knights_of_the_ebon_blade = { + label = function() + local factionInfo = PermoksAccountManager.factions[1098] + return factionInfo.localName or factionInfo.name + end, + key = 1098, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + frenzyheart_tribe = { + label = function() + local factionInfo = PermoksAccountManager.factions[1104] + return factionInfo.localName or factionInfo.name + end, + key = 1104, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_oracles = { + label = function() + local factionInfo = PermoksAccountManager.factions[1105] + return factionInfo.localName or factionInfo.name + end, + key = 1105, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + argent_crusade = { + label = function() + local factionInfo = PermoksAccountManager.factions[1106] + return factionInfo.localName or factionInfo.name + end, + key = 1106, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_sons_of_hodir = { + label = function() + local factionInfo = PermoksAccountManager.factions[1119] + return factionInfo.localName or factionInfo.name + end, + key = 1119, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_sunreavers = { + label = function() + local factionInfo = PermoksAccountManager.factions[1124] + return factionInfo.localName or factionInfo.name + end, + key = 1124, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_frostborn = { + label = function() + local factionInfo = PermoksAccountManager.factions[1126] + return factionInfo.localName or factionInfo.name + end, + key = 1126, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + the_ashen_verdict = { + label = function() + local factionInfo = PermoksAccountManager.factions[1156] + return factionInfo.localName or factionInfo.name + end, + key = 1156, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + + the_earthen_ring = { + label = function() + local factionInfo = PermoksAccountManager.factions[1135] + return factionInfo.localName or factionInfo.name + end, + key = 1135, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + therazane = { + label = function() + local factionInfo = PermoksAccountManager.factions[1171] + return factionInfo.localName or factionInfo.name + end, + key = 1171, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + guardians_of_hyjal = { + label = function() + local factionInfo = PermoksAccountManager.factions[1158] + return factionInfo.localName or factionInfo.name + end, + key = 1158, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + dragonmaw_clan = { + label = function() + local factionInfo = PermoksAccountManager.factions[1172] + return factionInfo.localName or factionInfo.name + end, + key = 1172, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + ramkahen = { + label = function() + local factionInfo = PermoksAccountManager.factions[1173] + return factionInfo.localName or factionInfo.name + end, + key = 1173, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + wildhammer_clan = { + label = function() + local factionInfo = PermoksAccountManager.factions[1174] + return factionInfo.localName or factionInfo.name + end, + key = 1174, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + hellscreams_reach = { + label = function() + local factionInfo = PermoksAccountManager.factions[1178] + return factionInfo.localName or factionInfo.name + end, + key = 1178, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + baradins_warden = { + label = function() + local factionInfo = PermoksAccountManager.factions[1177] + return factionInfo.localName or factionInfo.name + end, + key = 1177, + type = "faction", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + group = "reputation", + }, + + -- Mists + golden_lotus = { + label = function() + local factionInfo = PermoksAccountManager.factions[1269] + return factionInfo.localName or factionInfo.name + end, + key = 1269, + type = "faction", + version = WOW_PROJECT_MISTS_CLASSIC, + group = "reputation", + }, + shado_pan = { + label = function() + local factionInfo = PermoksAccountManager.factions[1270] + return factionInfo.localName or factionInfo.name + end, + key = 1270, + type = "faction", + version = WOW_PROJECT_MISTS_CLASSIC, + group = "reputation", + }, + the_august_celestials = { + label = function() + local factionInfo = PermoksAccountManager.factions[1341] + return factionInfo.localName or factionInfo.name + end, + key = 1341, + type = "faction", + version = WOW_PROJECT_MISTS_CLASSIC, + group = "reputation", + }, + the_black_prince = { + label = function() + local factionInfo = PermoksAccountManager.factions[1359] + return factionInfo.localName or factionInfo.name + end, + key = 1359, + type = "faction", + version = WOW_PROJECT_MISTS_CLASSIC, + group = "reputation", + }, + the_klaxxi = { + label = function() + local factionInfo = PermoksAccountManager.factions[1337] + return factionInfo.localName or factionInfo.name + end, + key = 1337, + type = "faction", + version = WOW_PROJECT_MISTS_CLASSIC, + group = "reputation", + }, + the_anglers = { + label = function() + local factionInfo = PermoksAccountManager.factions[1302] + return factionInfo.localName or factionInfo.name + end, + key = 1302, + type = "faction", + version = WOW_PROJECT_MISTS_CLASSIC, + group = "reputation", + }, + the_tillers = { + label = function() + local factionInfo = PermoksAccountManager.factions[1272] + return factionInfo.localName or factionInfo.name + end, + key = 1272, + type = "faction", + version = WOW_PROJECT_MISTS_CLASSIC, + group = "reputation", + }, } local friendshipStandings = { - -- Ve'nari - ["Dubious"] = "1/6", - ["Apprehensive"] = "2/6", - ["Tentative"] = "3/6", - ["Ambivalent"] = "4/6", - ["Cordial"] = "5/6", - ["Appreciative"] = "6/6", - - -- Black Dragons / Severed Threads Leaders - ["Stranger"] = "1/9", - ["Acquaintance"] = "2/9", - ["Crony"] = "3/9", - ["Accomplice"] = "4/9", - ["Collaborator"] = "5/9", - ["Accessory"] = "6/9", - ["Abettor"] = "7/9", - ["Conspirator"] = "8/9", - ["Mastermind"] = "9/9", - - -- Archivists - ["Tier 1"] = "1/6", - ["Tier 2"] = "2/6", - ["Tier 3"] = "3/6", - ["Tier 4"] = "4/6", - ["Tier 5"] = "5/6", - ["Tier 6"] = "6/6", - - -- Consortium - ["Neutral"] = "1/5", - ["Preferred"] = "2/5", - ["Respected"] = "3/5", - ["Valued"] = "4/5", - ["Esteemed"] = "5/5", - - -- Soridormi - ["Anomaly"] = "1/5", - ["Future Friend"] = "2/5", - ["Rift-Mender"] = "3/5", - ["Timewalker"] = "4/5", - ["Legend"] = "5/5", - - -- Cobalt Assembly - ["Empty"] = "1/5", - ["Low"] = "2/5", - ["Medium"] = "3/5", - ["High"] = "4/5", - ["Maximum"] = "5/5", + -- Ve'nari + ["Dubious"] = "1/6", + ["Apprehensive"] = "2/6", + ["Tentative"] = "3/6", + ["Ambivalent"] = "4/6", + ["Cordial"] = "5/6", + ["Appreciative"] = "6/6", + + -- Black Dragons / Severed Threads Leaders + ["Stranger"] = "1/9", + ["Acquaintance"] = "2/9", + ["Crony"] = "3/9", + ["Accomplice"] = "4/9", + ["Collaborator"] = "5/9", + ["Accessory"] = "6/9", + ["Abettor"] = "7/9", + ["Conspirator"] = "8/9", + ["Mastermind"] = "9/9", + + -- Archivists + ["Tier 1"] = "1/6", + ["Tier 2"] = "2/6", + ["Tier 3"] = "3/6", + ["Tier 4"] = "4/6", + ["Tier 5"] = "5/6", + ["Tier 6"] = "6/6", + + -- Consortium + ["Neutral"] = "1/5", + ["Preferred"] = "2/5", + ["Respected"] = "3/5", + ["Valued"] = "4/5", + ["Esteemed"] = "5/5", + + -- Soridormi + ["Anomaly"] = "1/5", + ["Future Friend"] = "2/5", + ["Rift-Mender"] = "3/5", + ["Timewalker"] = "4/5", + ["Legend"] = "5/5", + + -- Cobalt Assembly + ["Empty"] = "1/5", + ["Low"] = "2/5", + ["Medium"] = "3/5", + ["High"] = "4/5", + ["Maximum"] = "5/5", } local GetFriendshipReputation = C_GossipInfo and C_GossipInfo.GetFriendshipReputation or GetFriendshipReputation --TODO: Rework after DF launch local function GetFactionOrFriendshipInfo(factionId, factionType) - local barMin, barMax, barValue = 0, 0, 0 - local hasReward, renown, name, _, standing - if C_Reputation and C_Reputation.GetFactionDataByID then - local factionData = C_Reputation.GetFactionDataByID(factionId) - if factionData then - name = factionData.name - standing = factionData.reaction - barMin = factionData.currentReactionThreshold - barMax = factionData.nextReactionThreshold - barValue = factionData.currentStanding - end - else - name, _, standing, barMin, barMax, barValue = GetFactionInfoByID(factionId) - end - local isParagon = C_Reputation.IsFactionParagon and C_Reputation.IsFactionParagon(factionId) - - if isParagon then - barValue, barMax, _, hasReward = C_Reputation.GetFactionParagonInfo(factionId) - barMin, standing, barValue = 0, 9, barValue % barMax - elseif factionType == 'renown' then - renown = C_MajorFactions.GetCurrentRenownLevel(factionId) - local majorFactionInfo = C_MajorFactions.GetMajorFactionData(factionId) - if majorFactionInfo then - barMin = 0 - barValue = majorFactionInfo.renownReputationEarned - barMax = majorFactionInfo.renownLevelThreshold - end - elseif factionType == 'friend' then - local friendshipInfo = C_GossipInfo.GetFriendshipReputation(factionId) - if friendshipInfo then - barMin = friendshipInfo.reactionThreshold - barValue = friendshipInfo.standing - barMax = friendshipInfo.nextThreshold or friendshipInfo.reactionThreshold - standing = friendshipInfo.reaction - end - end - - if not barMax or not barMin then - return - end - - return barValue - barMin, (barMax - barMin), standing, name, hasReward, renown + local barMin, barMax, barValue = 0, 0, 0 + local hasReward, renown, name, _, standing + if C_Reputation and C_Reputation.GetFactionDataByID then + local factionData = C_Reputation.GetFactionDataByID(factionId) + if factionData then + name = factionData.name + standing = factionData.reaction + barMin = factionData.currentReactionThreshold + barMax = factionData.nextReactionThreshold + barValue = factionData.currentStanding + end + else + name, _, standing, barMin, barMax, barValue = GetFactionInfoByID(factionId) + end + local isParagon = C_Reputation.IsFactionParagon and C_Reputation.IsFactionParagon(factionId) + + if isParagon then + barValue, barMax, _, hasReward = C_Reputation.GetFactionParagonInfo(factionId) + barMin, standing, barValue = 0, 9, barValue % barMax + elseif factionType == "renown" then + renown = C_MajorFactions.GetCurrentRenownLevel(factionId) + local majorFactionInfo = C_MajorFactions.GetMajorFactionData(factionId) + if majorFactionInfo then + barMin = 0 + barValue = majorFactionInfo.renownReputationEarned + barMax = majorFactionInfo.renownLevelThreshold + end + elseif factionType == "friend" then + local friendshipInfo = C_GossipInfo.GetFriendshipReputation(factionId) + if friendshipInfo then + barMin = friendshipInfo.reactionThreshold + barValue = friendshipInfo.standing + barMax = friendshipInfo.nextThreshold or friendshipInfo.reactionThreshold + standing = friendshipInfo.reaction + end + end + + if not barMax or not barMin then + return + end + + return barValue - barMin, (barMax - barMin), standing, name, hasReward, renown end local function UpdateFaction(factionTable, factionId, standing, current, maximum, info, hasReward, renown) - factionTable[factionId] = factionTable[factionId] or {} - local faction = factionTable[factionId] - faction.standing = standing - faction.current = current - faction.max = maximum - faction.type = info.type - faction.hasReward = hasReward - faction.renown = renown - faction.exalted = not info.paragon and standing == 8 - faction.maximum = info.type == "friend" and current >= maximum + factionTable[factionId] = factionTable[factionId] or {} + local faction = factionTable[factionId] + faction.standing = standing + faction.current = current + faction.max = maximum + faction.type = info.type + faction.hasReward = hasReward + faction.renown = renown + faction.exalted = not info.paragon and standing == 8 + faction.maximum = info.type == "friend" and current >= maximum end local function UpdateFactions(charInfo) - local self = PermoksAccountManager + local self = PermoksAccountManager - charInfo.factions = charInfo.factions or {} - if self.isRetail then - self.warbandData.factions = self.warbandData.factions or {} - end + charInfo.factions = charInfo.factions or {} + if self.isRetail then + self.warbandData.factions = self.warbandData.factions or {} + end - local factions = charInfo.factions - local warbandFactions = self.warbandData.factions + local factions = charInfo.factions + local warbandFactions = self.warbandData.factions - for factionId, info in pairs(self.factions) do - local current, maximum, standing, name, hasReward, renown = GetFactionOrFriendshipInfo(factionId, info.type) + for factionId, info in pairs(self.factions) do + local current, maximum, standing, name, hasReward, renown = GetFactionOrFriendshipInfo(factionId, info.type) - UpdateFaction(factions, factionId, standing, current, maximum, info, hasReward, renown) + UpdateFaction(factions, factionId, standing, current, maximum, info, hasReward, renown) - if warbandFactions then - UpdateFaction(warbandFactions, factionId, standing, current, maximum, info, hasReward, renown) - end + if warbandFactions then + UpdateFaction(warbandFactions, factionId, standing, current, maximum, info, hasReward, renown) + end - if not info.localName then - info.localName = name - end - end + if not info.localName then + info.localName = name + end + end end local function Update(charInfo) - UpdateFactions(charInfo) + UpdateFactions(charInfo) end -local module = 'factions' +local module = "factions" local payload = { - update = Update, - labels = labelRows, - events = { - ['UPDATE_FACTION'] = UpdateFactions - }, - share = { - [UpdateFactions] = 'factions' - } + update = Update, + labels = labelRows, + events = { + ["UPDATE_FACTION"] = UpdateFactions, + }, + share = { + [UpdateFactions] = "factions", + }, } PermoksAccountManager:AddModule(module, payload) local function convertStanding(standing) - if friendshipStandings[standing] then - return friendshipStandings[standing] - else - return standing:sub(1, 1) - end + if friendshipStandings[standing] then + return friendshipStandings[standing] + else + return standing:sub(1, 1) + end end function PermoksAccountManager:CreateFactionString(factionInfo) - if not factionInfo then - return - end - if not factionInfo.standing then - return 'No Data' - end - if factionInfo.exalted then - return string.format('|cff00ff00%s|r', L['Exalted']) - elseif factionInfo.maximum then - return string.format('|cff00ff00%s|r', 'Maximum') - end - - local standingColor, standing = FACTION_BAR_COLORS_CUSTOM[5], FACTION_STANDING_LABEL_CUSTOM[factionInfo.standing] - if standing then - standingColor = FACTION_BAR_COLORS_CUSTOM[factionInfo.standing] - else - standing = factionInfo.standing - end - - local color = factionInfo.hasReward and 'ff00ff00' or - CreateColor(standingColor.r / 255, standingColor.g / 255, standingColor.b / 255):GenerateHexColor() - if factionInfo.renown then - return string.format('%s - %s /%s', BLUE_FONT_COLOR:WrapTextInColorCode(factionInfo.renown), - AbbreviateNumbers(factionInfo.current or 0), AbbreviateNumbers(factionInfo.max or 0)) - elseif factionInfo.max then - return string.format('|c%s%s|r/%s |cff%02X%02X%02X%s|r', color, AbbreviateLargeNumbers(factionInfo.current or 0), - AbbreviateNumbers(factionInfo.max or 0), standingColor.r, standingColor.g, standingColor.b, - convertStanding(standing)) - end + if not factionInfo then + return + end + if not factionInfo.standing then + return "No Data" + end + if factionInfo.exalted then + return string.format("|cff00ff00%s|r", L["Exalted"]) + elseif factionInfo.maximum then + return string.format("|cff00ff00%s|r", "Maximum") + end + + local standingColor, standing = FACTION_BAR_COLORS_CUSTOM[5], FACTION_STANDING_LABEL_CUSTOM[factionInfo.standing] + if standing then + standingColor = FACTION_BAR_COLORS_CUSTOM[factionInfo.standing] + else + standing = factionInfo.standing + end + + local color = factionInfo.hasReward and "ff00ff00" + or CreateColor(standingColor.r / 255, standingColor.g / 255, standingColor.b / 255):GenerateHexColor() + if factionInfo.renown then + return string.format( + "%s - %s /%s", + BLUE_FONT_COLOR:WrapTextInColorCode(factionInfo.renown), + AbbreviateNumbers(factionInfo.current or 0), + AbbreviateNumbers(factionInfo.max or 0) + ) + elseif factionInfo.max then + return string.format( + "|c%s%s|r/%s |cff%02X%02X%02X%s|r", + color, + AbbreviateLargeNumbers(factionInfo.current or 0), + AbbreviateNumbers(factionInfo.max or 0), + standingColor.r, + standingColor.g, + standingColor.b, + convertStanding(standing) + ) + end end diff --git a/modules/instances.lua b/modules/instances.lua index b3c3396..649fd9e 100644 --- a/modules/instances.lua +++ b/modules/instances.lua @@ -67,6 +67,19 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, + -- 11.2 + manaforge_omega = { + label = function() + return PermoksAccountManager.raids[2810].name or 'LoU' + end, + id = 2810, + type = 'raid', + key = 'manaforge_omega', + tooltip = true, + group = 'raids', + version = WOW_PROJECT_MAINLINE + }, + -- wotlk -- TOOD: Change db structure so you can get the locale name without calling the function again naxxramas = { @@ -248,6 +261,35 @@ local labelRows = { tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, + + -- Mists + mogushan_vaults = { + label = GetRealZoneText(1008), + id = 1008, + type = 'raid', + key = 'mogushan_vaults', + group = 'raids', + tooltip = true, + version = WOW_PROJECT_MISTS_CLASSIC, + }, + heart_of_fear = { + label = GetRealZoneText(1009), + id = 1009, + type = 'raid', + key = 'heart_of_fear', + group = 'raids', + tooltip = true, + version = WOW_PROJECT_MISTS_CLASSIC, + }, + terrace_of_endless_spring = { + label = GetRealZoneText(996), + id = 996, + type = 'raid', + key = 'terrace_of_endless_spring', + group = 'raids', + tooltip = true, + version = WOW_PROJECT_MISTS_CLASSIC, + }, } local function UpdateInstanceInfo(charInfo) diff --git a/modules/items.lua b/modules/items.lua index ff290b8..ff2c710 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -317,8 +317,8 @@ local labelRows = { label = 'Spark - Fortunes', type = 'spark', passRow = true, - key = 230906, - reagent = 230905, + key = 231756, + reagent = 231757, reagentRequired = 2, group = 'item', version = WOW_PROJECT_MAINLINE diff --git a/modules/quests.lua b/modules/quests.lua index bb8d3c4..603c7fc 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1661,7 +1661,7 @@ local function UpdateQuest(charInfo, questID) UpdateCataDailies(charInfo) end - if C_QuestLog.IsWorldQuest(questID) then + if C_QuestLog.IsWorldQuest and C_QuestLog.IsWorldQuest(questID) then UpdateWorldQuests(charInfo, questID) end diff --git a/options.lua b/options.lua index cc6ee27..6474afb 100644 --- a/options.lua +++ b/options.lua @@ -93,7 +93,7 @@ end ---comment ---@param altGUID string function PermoksAccountManager:AddCharacterToOrderOptions(altGUID, altData, accountName) - local coloredName = RAID_CLASS_COLORS[altData.class]:WrapTextInColorCode(altData.name .. ((altData.realm and "-" .. altData.realm) or "")) + local coloredName = altData.class and RAID_CLASS_COLORS[altData.class]:WrapTextInColorCode((altData.name or "") .. ((altData.realm and "-" .. altData.realm) or "")) or "" local factionIcon = altData.faction and altData.faction ~= "Neutral" and ("|T%s:%d:%d|t"):format(FACTION_LOGO_TEXTURES[PLAYER_FACTION_GROUP[altData.faction]], 0, 0) options.args.characters.args.customCharacterOrder.args[altGUID] = { @@ -1529,20 +1529,15 @@ function PermoksAccountManager:LoadOptionsTemplate() type = 'group', name = function() if labelData.oldId then - return L['Edit'] + return L['Save'] else return L['Create'] end end, inline = true, args = { - general_options = { - order = 0.5, - name = 'General', - type = 'header', - }, name = { - order = 2, + order = 1, name = L['Name'], type = 'input', validate = function(info, value) @@ -1584,11 +1579,11 @@ function PermoksAccountManager:LoadOptionsTemplate() end }, labelType = { - order = 1, + order = 2, name = L['Type'], type = 'select', - values = {item = L['Item'], currency = L['Currency'], quest = L['Quest']}, - sorting = {'item', 'currency', 'quest'}, + values = {item = L['Item'], currency = L['Currency'], quest = L['Quest'], custom = L['Custom']}, + sorting = {'item', 'currency', 'quest', 'custom'}, --width = 'half', disabled = function() return labelData.oldId and true or false @@ -1629,6 +1624,7 @@ function PermoksAccountManager:LoadOptionsTemplate() order = 5, name = L['Hidden'], type = 'toggle', + desc = 'If you can\'t have this quest in your visible quest log then toggle this option so it gets tracked correctly.', --width = 'half', hidden = function() return labelData.type and labelData.type ~= 'quest' or not labelData.type @@ -1640,13 +1636,80 @@ function PermoksAccountManager:LoadOptionsTemplate() return labelData.hidden or false end }, + custom_options = { + order = 6, + name = 'Custom', + type = 'header', + hidden = function() + return labelData.type and labelData.type ~= 'custom' or not labelData.type + end, + }, + custom_events ={ + order = 6.1, + name = 'Events', + type = 'input', + width = 'full', + hidden = function() + return labelData.type and labelData.type ~= 'custom' or not labelData.type + end, + get = function() + return labelData.events + end, + set = function(_, value) + labelData.events = value + end + }, + custom_update = { + order = 6.2, + name = 'Update Function', + type = 'input', + multiline = true, + width = 'full', + hidden = function() + return labelData.type and labelData.type ~= 'custom' or not labelData.type + end, + get = function() + if not labelData.update then + return [[function(data) + +end]] + else + return labelData.update + end + end, + set = function(_, value) + labelData.update = value + end + }, + custom_label_string = { + order = 6.3, + name = 'String Function', + type = 'input', + multiline = true, + width = 'full', + hidden = function() + return labelData.type and labelData.type ~= 'custom' or not labelData.type + end, + get = function() + if not labelData.labelString then + return [[function(data) + +end]] + else + return labelData.labelString + end + end, + set = function(_, value) + labelData.labelString = value + end + }, sep1 = { - order = 5.5, + order = 19, name = '', type = 'header', }, create = { - order = 6, + order = 20, name = function() if labelData.oldId then return L['Edit'] @@ -1665,7 +1728,7 @@ function PermoksAccountManager:LoadOptionsTemplate() end }, delete = { - order = 7, + order = 21, name = L['Delete'], type = 'execute', disabled = function() @@ -1679,7 +1742,7 @@ function PermoksAccountManager:LoadOptionsTemplate() if labelData.name and labelData.id and labelData.type then DeleteCustomLabelButton(labelData) end - end + end, } } }, @@ -1960,7 +2023,7 @@ function PermoksAccountManager:LoadOptions() end PermoksAccountManager.optionsFrame = AceGUI:Create('Frame') - PermoksAccountManager.optionsFrame:EnableResize(false) + PermoksAccountManager.optionsFrame:EnableResize(true) PermoksAccountManager.optionsFrame:Hide() AddAccounts() From 1564e9f937cdc88542f1e7941e78cda27ed23507 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 6 Aug 2025 00:19:35 +0200 Subject: [PATCH 110/138] Fix lua error --- PermoksAccountManager.lua | 3843 +++++++++++++++++++------------------ 1 file changed, 1959 insertions(+), 1884 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index d9f8b16..36ce448 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -1,164 +1,161 @@ local addonName, PermoksAccountManager = ... -PermoksAccountManager = LibStub('AceAddon-3.0'):NewAddon(PermoksAccountManager, 'PermoksAccountManager', 'AceConsole-3.0', 'AceEvent-3.0') +PermoksAccountManager = + LibStub("AceAddon-3.0"):NewAddon(PermoksAccountManager, "PermoksAccountManager", "AceConsole-3.0", "AceEvent-3.0") -- Create minimap icon with LibDataBroker. -local PermoksAccountManagerLDB = - LibStub('LibDataBroker-1.1'):NewDataObject( - 'PermoksAccountManager', - { - type = 'data source', - text = 'Permoks Account Manager', - icon = 'Interface/Icons/achievement_guildperk_everybodysfriend.blp', - OnClick = function(self, button) - if button == 'LeftButton' then - if PermoksAccountManager.db.global.options.showOnEnter then - PermoksAccountManager:ShowInterface() - PermoksAccountManager.openedByClick = true - elseif PermoksAccountManagerFrame:IsShown() then - PermoksAccountManager:HideInterface() - else - PermoksAccountManager:ShowInterface() - end - elseif button == 'RightButton' then - PermoksAccountManager:OpenOptions(true) - end - end, - OnTooltipShow = function(tt) - if PermoksAccountManager.db.global.options.showOnEnter then - PermoksAccountManager:ShowInterface() - PermoksAccountManager.openedByClick = nil - end - - tt:AddLine('|cfff49b42Permoks Account Manager|r') - tt:AddLine('|cffffffffLeft-click|r to open the Manager') - tt:AddLine('|cffffffffRight-click|r to open options') - tt:AddLine("Type '/pam minimap' to hide the Minimap Button!") - end, - OnLeave = function() - if PermoksAccountManager.db.global.options.showOnEnter and not PermoksAccountManager.openedByClick then - PermoksAccountManager:HideInterface() - PermoksAccountManager.openedByClick = nil - end - end - } -) +local PermoksAccountManagerLDB = LibStub("LibDataBroker-1.1"):NewDataObject("PermoksAccountManager", { + type = "data source", + text = "Permoks Account Manager", + icon = "Interface/Icons/achievement_guildperk_everybodysfriend.blp", + OnClick = function(self, button) + if button == "LeftButton" then + if PermoksAccountManager.db.global.options.showOnEnter then + PermoksAccountManager:ShowInterface() + PermoksAccountManager.openedByClick = true + elseif PermoksAccountManagerFrame:IsShown() then + PermoksAccountManager:HideInterface() + else + PermoksAccountManager:ShowInterface() + end + elseif button == "RightButton" then + PermoksAccountManager:OpenOptions(true) + end + end, + OnTooltipShow = function(tt) + if PermoksAccountManager.db.global.options.showOnEnter then + PermoksAccountManager:ShowInterface() + PermoksAccountManager.openedByClick = nil + end + + tt:AddLine("|cfff49b42Permoks Account Manager|r") + tt:AddLine("|cffffffffLeft-click|r to open the Manager") + tt:AddLine("|cffffffffRight-click|r to open options") + tt:AddLine("Type '/pam minimap' to hide the Minimap Button!") + end, + OnLeave = function() + if PermoksAccountManager.db.global.options.showOnEnter and not PermoksAccountManager.openedByClick then + PermoksAccountManager:HideInterface() + PermoksAccountManager.openedByClick = nil + end + end, +}) BINDING_HEADER_PAM = addonName -local AceGUI = LibStub('AceGUI-3.0') -local LibIcon = LibStub('LibDBIcon-1.0') -local LibQTip = LibStub('LibQTip-1.0') -local L = LibStub('AceLocale-3.0'):GetLocale(addonName) -local LSM = LibStub('LibSharedMedia-3.0') +local AceGUI = LibStub("AceGUI-3.0") +local LibIcon = LibStub("LibDBIcon-1.0") +local LibQTip = LibStub("LibQTip-1.0") +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) +local LSM = LibStub("LibSharedMedia-3.0") local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") local INTERNALTWWVERSION = 11 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local INTERNALMISTSVERSION = 1 local defaultDB = { - profile = { - minimap = { - hide = false - } - }, - global = { - blacklist = {}, - pages = {}, - accounts = { - main = { - name = L['Main'], - data = { - ['**'] = { - customData = {}, - } + profile = { + minimap = { + hide = false, + }, + }, + global = { + blacklist = {}, + pages = {}, + accounts = { + main = { + name = L["Main"], + data = { + ["**"] = { + customData = {}, + }, }, - warbandData = { - name = 'Warband' - }, - pages = {} - } - }, - currentPage = 1, - numAccounts = 1, - data = {}, - completionData = {['**'] = {numCompleted = 0}}, - alts = 0, - synchedCharacters = {}, - blockedCharacters = {}, - syncedAccountKeys = {}, - customLabels = false, - options = { - buttons = { - updated = false, - buttonWidth = 120, - buttonTextWidth = 110, - widthPerAlt = 120, - justifyH = 'LEFT' - }, - other = { - updated = false, - labelOffset = 5, - frameStrata = 'MEDIUM' - }, - characters = { - charactersPerPage = 6, - minLevel = GetMaxLevelForExpansionLevel(GetExpansionLevel())-10, - combine = false, - sortBy = 'order', - sortByLesser = true, - }, - border = { - edgeSize = 5, - color = {0.39, 0.39, 0.39, 1}, - bgColor = {0, 0, 0, 0.9} - }, - font = 'Expressway', - fontSize = 11, - hideWarband = false, - savePosition = false, - showOptionsButton = false, - showGuildAttunementButton = false, - currencyIcons = true, - itemIcons = true, - useScoreColor = true, - showCurrentSpecIcon = true, - currentCharacterFirstPosition = false, - questCompletionString = 'True', - useOutline = true, - itemIconPosition = 'right', - currencyIconPosition = 'right', - showOnEnter = false, - customCategories = { - general = { - childOrder = {characterName = 1, ilevel = 2}, - childs = {'characterName', 'ilevel'}, - order = 0, - hideToggle = true, - name = 'General', - enabled = true - }, - ['**'] = {childOrder = {}, childs = {}, enabled = true} - }, - defaultCategories = { - ['**'] = { - enabled = true - } - }, - customLabels = { - quest = {}, - item = {}, - currency = {}, - custom = {}, - }, - }, - currentCallings = {}, - quests = {}, - currencyInfo = {}, - itemIcons = {}, - position = {}, - version = VERSION - } + warbandData = { + name = "Warband", + }, + pages = {}, + }, + }, + currentPage = 1, + numAccounts = 1, + data = {}, + completionData = { ["**"] = { numCompleted = 0 } }, + alts = 0, + synchedCharacters = {}, + blockedCharacters = {}, + syncedAccountKeys = {}, + customLabels = false, + options = { + buttons = { + updated = false, + buttonWidth = 120, + buttonTextWidth = 110, + widthPerAlt = 120, + justifyH = "LEFT", + }, + other = { + updated = false, + labelOffset = 5, + frameStrata = "MEDIUM", + }, + characters = { + charactersPerPage = 6, + minLevel = GetMaxLevelForExpansionLevel(GetExpansionLevel()) - 10, + combine = false, + sortBy = "order", + sortByLesser = true, + }, + border = { + edgeSize = 5, + color = { 0.39, 0.39, 0.39, 1 }, + bgColor = { 0, 0, 0, 0.9 }, + }, + font = "Expressway", + fontSize = 11, + hideWarband = false, + savePosition = false, + showOptionsButton = false, + showGuildAttunementButton = false, + currencyIcons = true, + itemIcons = true, + useScoreColor = true, + showCurrentSpecIcon = true, + currentCharacterFirstPosition = false, + questCompletionString = "True", + useOutline = true, + itemIconPosition = "right", + currencyIconPosition = "right", + showOnEnter = false, + customCategories = { + general = { + childOrder = { characterName = 1, ilevel = 2 }, + childs = { "characterName", "ilevel" }, + order = 0, + hideToggle = true, + name = "General", + enabled = true, + }, + ["**"] = { childOrder = {}, childs = {}, enabled = true }, + }, + defaultCategories = { + ["**"] = { + enabled = true, + }, + }, + customLabels = { + quest = {}, + item = {}, + currency = {}, + custom = {}, + }, + }, + currentCallings = {}, + quests = {}, + currencyInfo = {}, + itemIcons = {}, + position = {}, + version = VERSION, + }, } --- Create an iterator for a hash table. @@ -166,2008 +163,2086 @@ local defaultDB = { -- @param order:function A sort function for the keys. -- @return function The iterator usable in a loop. local function spairs(t, order) - local keys = {} - for k in pairs(t) do - keys[#keys + 1] = k - end - - if order then - table.sort( - keys, - function(a, b) - return order(t, a, b) - end - ) - else - table.sort(keys) - end - - local i = 0 - return function() - i = i + 1 - if keys[i] then - return keys[i], t[keys[i]], keys[i + 1] - end - end + local keys = {} + for k in pairs(t) do + keys[#keys + 1] = k + end + + if order then + table.sort(keys, function(a, b) + return order(t, a, b) + end) + else + table.sort(keys) + end + + local i = 0 + return function() + i = i + 1 + if keys[i] then + return keys[i], t[keys[i]], keys[i + 1] + end + end end --- This function will be called when the user leaves the button the tooltip belonged to. local function Tooltip_OnLeave(self) - if self.tooltip then - LibQTip:Release(self.tooltip) - self.tooltip = nil - end + if self.tooltip then + LibQTip:Release(self.tooltip) + self.tooltip = nil + end end local CreateLabelButton, CreateManagerButton, LoadFonts, UpdateFonts do - local normalFont, smallFont, mediumLargeFont, largeFont - - --- Initialize the fonts - function LoadFonts() - local options = PermoksAccountManager.db.global.options - local outline = options.useOutline and 'OUTLINE' or nil - local font = LSM:Fetch('font', options.font) - - normalFont = CreateFont('PAM_NormalFont') - normalFont:SetFont(font, options.fontSize, outline) - normalFont:SetTextColor(1, 1, 1, 1) - - smallFont = CreateFont('PAM_SmallFont') - smallFont:SetFont(font, 9, outline) - smallFont:SetTextColor(1, 1, 1, 1) - - mediumLargeFont = CreateFont('PAM_MediumLargeFont') - mediumLargeFont:SetFont(font, options.fontSize + 2, outline) - mediumLargeFont:SetTextColor(1, 1, 1, 1) - - largeFont = CreateFont('PAM_LargeFont') - largeFont:SetFont(font, max(17, options.fontSize + 2), outline) - largeFont:SetTextColor(1, 1, 1, 1) - end - - --- Update the font path of all previously created fonts. - function UpdateFonts() - local options = PermoksAccountManager.db.global.options - local outline = options.useOutline and 'OUTLINE' or nil - local font = LSM:Fetch('font', options.font) - normalFont:SetFont(font, options.fontSize, outline) - smallFont:SetFont(font, 9, outline) - mediumLargeFont:SetFont(font, options.fontSize + 2, outline) - largeFont:SetFont(font, max(17, options.fontSize + 2), outline) - end - - --- Create the text for a normal button. - -- @param button:Button The button to create the font object for. - -- @param column:table The information table for the current column. - -- @param alt_data:table A table with information about a character. - -- @param text:string Text that can be used instead of generating a new one with alt_data. - -- @param buttonOptions:table - -- TODO - local function CreateInfoButton(button, column, buttonOptions) - button:SetNormalFontObject((column.big and largeFont) or (column.small and smallFont) or normalFont) - button:SetText(' ') - - local fontString = button:GetFontString() - if fontString then - button.fontString = fontString - fontString:SetSize(110, 20) - fontString:SetJustifyV(column.justify or 'MIDDLE') - fontString:SetJustifyH(buttonOptions.justifyH) - end - end - - --- Create the text for a label button. - -- @param button:Button The button to create the font object for. - -- @param buttonOptions:table - -- TODO - local function CreateMenuButton(button) - button:SetNormalFontObject(mediumLargeFont) - button:SetText(' ') - - local fontString = button:GetFontString() - fontString:SetSize(130, 20) - fontString:SetJustifyV('MIDDLE') - fontString:SetJustifyH('RIGHT') - end - - --- Create a button with a text. - -- @param type:string The type of button to create. - -- @param parent:Frame The parent frame for the button. - -- @param column:table The column data for the current column. - -- @param alt_data:table - -- @param index:int If the index is given then create a texture. - -- @param width:float Possible custom width. - function CreateLabelButton(type, parent, column, index, width) - local buttonOptions = PermoksAccountManager.db.global.options.buttons - local button = CreateFrame('Button', nil, parent) - button:SetSize(width or buttonOptions.buttonWidth, 20) - button:SetPushedTextOffset(0, 0) - - if type == 'row' then - if not column.hideOption and not column.hideLabel then - local highlightTexture = button:CreateTexture() - highlightTexture:SetAllPoints() - highlightTexture:SetColorTexture(0.5, 0.5, 0.5, 0.5) - button:SetHighlightTexture(highlightTexture) - - if index then - local normalTexture = button:CreateTexture(nil, 'BACKGROUND') - normalTexture:SetAllPoints() - button:SetNormalTexture(normalTexture) - button.normalTexture = normalTexture - end - end - CreateInfoButton(button, column, buttonOptions) - elseif type == 'label' then - CreateMenuButton(button) - end - - return button - end - - function CreateManagerButton(width, height, text) - local button = CreateFrame('Button', nil, PermoksAccountManager.managerFrame) - button:SetSize(width, height) - - local normalTexture = button:CreateTexture() - button.normalTexture = normalTexture - normalTexture:SetSize(width + 4, height + 11) - normalTexture:ClearAllPoints() - normalTexture:SetPoint('TOPLEFT', -2, 0) - normalTexture:SetAtlas('auctionhouse-nav-button', false) - - button:SetHighlightAtlas('auctionhouse-nav-button-highlight') - PermoksAccountManager:SkinButtonElvUI(button) - - local fontString = button:CreateFontString(nil, 'OVERLAY', 'PAM_MediumLargeFont') - button.Text = fontString - fontString:ClearAllPoints() - fontString:SetAllPoints() - fontString:SetText(text) - fontString:SetTextColor(1, 1, 1, 1) - - local selected = button:CreateTexture() - button.selected = selected - selected:SetSize(button:GetSize()) - selected:ClearAllPoints() - selected:SetPoint('CENTER', 0, -1) - selected:SetAtlas('auctionhouse-nav-button-select', false) - selected:Hide() - - button:SetScript( - 'OnMouseDown', - function() - fontString:AdjustPointsOffset(1, -1) - end - ) - button:SetScript( - 'OnMouseUp', - function() - fontString:AdjustPointsOffset(-1, 1) - end - ) - - return button - end + local normalFont, smallFont, mediumLargeFont, largeFont + + --- Initialize the fonts + function LoadFonts() + local options = PermoksAccountManager.db.global.options + local outline = options.useOutline and "OUTLINE" or nil + local font = LSM:Fetch("font", options.font) + + normalFont = CreateFont("PAM_NormalFont") + normalFont:SetFont(font, options.fontSize, outline) + normalFont:SetTextColor(1, 1, 1, 1) + + smallFont = CreateFont("PAM_SmallFont") + smallFont:SetFont(font, 9, outline) + smallFont:SetTextColor(1, 1, 1, 1) + + mediumLargeFont = CreateFont("PAM_MediumLargeFont") + mediumLargeFont:SetFont(font, options.fontSize + 2, outline) + mediumLargeFont:SetTextColor(1, 1, 1, 1) + + largeFont = CreateFont("PAM_LargeFont") + largeFont:SetFont(font, max(17, options.fontSize + 2), outline) + largeFont:SetTextColor(1, 1, 1, 1) + end + + --- Update the font path of all previously created fonts. + function UpdateFonts() + local options = PermoksAccountManager.db.global.options + local outline = options.useOutline and "OUTLINE" or nil + local font = LSM:Fetch("font", options.font) + normalFont:SetFont(font, options.fontSize, outline) + smallFont:SetFont(font, 9, outline) + mediumLargeFont:SetFont(font, options.fontSize + 2, outline) + largeFont:SetFont(font, max(17, options.fontSize + 2), outline) + end + + --- Create the text for a normal button. + -- @param button:Button The button to create the font object for. + -- @param column:table The information table for the current column. + -- @param alt_data:table A table with information about a character. + -- @param text:string Text that can be used instead of generating a new one with alt_data. + -- @param buttonOptions:table + -- TODO + local function CreateInfoButton(button, column, buttonOptions) + button:SetNormalFontObject((column.big and largeFont) or (column.small and smallFont) or normalFont) + button:SetText(" ") + + local fontString = button:GetFontString() + if fontString then + button.fontString = fontString + fontString:SetSize(110, 20) + fontString:SetJustifyV(column.justify or "MIDDLE") + fontString:SetJustifyH(buttonOptions.justifyH) + end + end + + --- Create the text for a label button. + -- @param button:Button The button to create the font object for. + -- @param buttonOptions:table + -- TODO + local function CreateMenuButton(button) + button:SetNormalFontObject(mediumLargeFont) + button:SetText(" ") + + local fontString = button:GetFontString() + fontString:SetSize(130, 20) + fontString:SetJustifyV("MIDDLE") + fontString:SetJustifyH("RIGHT") + end + + --- Create a button with a text. + -- @param type:string The type of button to create. + -- @param parent:Frame The parent frame for the button. + -- @param column:table The column data for the current column. + -- @param alt_data:table + -- @param index:int If the index is given then create a texture. + -- @param width:float Possible custom width. + function CreateLabelButton(type, parent, column, index, width) + local buttonOptions = PermoksAccountManager.db.global.options.buttons + local button = CreateFrame("Button", nil, parent) + button:SetSize(width or buttonOptions.buttonWidth, 20) + button:SetPushedTextOffset(0, 0) + + if type == "row" then + if not column.hideOption and not column.hideLabel then + local highlightTexture = button:CreateTexture() + highlightTexture:SetAllPoints() + highlightTexture:SetColorTexture(0.5, 0.5, 0.5, 0.5) + button:SetHighlightTexture(highlightTexture) + + if index then + local normalTexture = button:CreateTexture(nil, "BACKGROUND") + normalTexture:SetAllPoints() + button:SetNormalTexture(normalTexture) + button.normalTexture = normalTexture + end + end + CreateInfoButton(button, column, buttonOptions) + elseif type == "label" then + CreateMenuButton(button) + end + + return button + end + + function CreateManagerButton(width, height, text) + local button = CreateFrame("Button", nil, PermoksAccountManager.managerFrame) + button:SetSize(width, height) + + local normalTexture = button:CreateTexture() + button.normalTexture = normalTexture + normalTexture:SetSize(width + 4, height + 11) + normalTexture:ClearAllPoints() + normalTexture:SetPoint("TOPLEFT", -2, 0) + normalTexture:SetAtlas("auctionhouse-nav-button", false) + + button:SetHighlightAtlas("auctionhouse-nav-button-highlight") + PermoksAccountManager:SkinButtonElvUI(button) + + local fontString = button:CreateFontString(nil, "OVERLAY", "PAM_MediumLargeFont") + button.Text = fontString + fontString:ClearAllPoints() + fontString:SetAllPoints() + fontString:SetText(text) + fontString:SetTextColor(1, 1, 1, 1) + + local selected = button:CreateTexture() + button.selected = selected + selected:SetSize(button:GetSize()) + selected:ClearAllPoints() + selected:SetPoint("CENTER", 0, -1) + selected:SetAtlas("auctionhouse-nav-button-select", false) + selected:Hide() + + button:SetScript("OnMouseDown", function() + fontString:AdjustPointsOffset(1, -1) + end) + button:SetScript("OnMouseUp", function() + fontString:AdjustPointsOffset(-1, 1) + end) + + return button + end end do - local BACKDROP_PAM_NO_BG = { - edgeFile = 'Interface/Buttons/WHITE8X8', - edgeSize = 5 - } - - local BACKDROP_PAM_BG = { - edgeFile = 'Interface/Buttons/WHITE8X8', - bgFile = 'Interface/Buttons/WHITE8X8', - edgeSize = 5 - } - - local backdrops = {} - function PermoksAccountManager:UpdateBorder(backdrop, anchor, useBG) - local borderOptions = self.db.global.options.border - local color = borderOptions.color - local bgColor = borderOptions.bgColor or {0.1, 0.1, 0.1, 0.9} - backdrop:SetBackdrop(nil) - - if anchor then - backdrop:SetPoint('TOPLEFT', anchor, 'TOPLEFT', -5, 5) - backdrop:SetPoint('BOTTOMRIGHT', anchor, 'BOTTOMRIGHT', 5, -5) - end - - if useBG then - backdrop:SetBackdrop(BACKDROP_PAM_BG) - backdrop:SetBackdropColor(unpack(bgColor)) - backdrops[backdrop] = true - else - backdrop:SetBackdrop(BACKDROP_PAM_NO_BG) - backdrops[backdrop] = false - end - - backdrop:SetBackdropBorderColor(unpack(color)) - end - - function PermoksAccountManager:UpdateBorderColor() - local borderOptions = self.db.global.options.border - local color = borderOptions.color - local bgColor = borderOptions.bgColor or {0.1, 0.1, 0.1, 0.9} - - for backdrop, useBG in pairs(backdrops) do - if useBG then - backdrop:SetBackdropColor(unpack(bgColor)) - end - backdrop:SetBackdropBorderColor(unpack(color)) - end - end + local BACKDROP_PAM_NO_BG = { + edgeFile = "Interface/Buttons/WHITE8X8", + edgeSize = 5, + } + + local BACKDROP_PAM_BG = { + edgeFile = "Interface/Buttons/WHITE8X8", + bgFile = "Interface/Buttons/WHITE8X8", + edgeSize = 5, + } + + local backdrops = {} + function PermoksAccountManager:UpdateBorder(backdrop, anchor, useBG) + local borderOptions = self.db.global.options.border + local color = borderOptions.color + local bgColor = borderOptions.bgColor or { 0.1, 0.1, 0.1, 0.9 } + backdrop:SetBackdrop(nil) + + if anchor then + backdrop:SetPoint("TOPLEFT", anchor, "TOPLEFT", -5, 5) + backdrop:SetPoint("BOTTOMRIGHT", anchor, "BOTTOMRIGHT", 5, -5) + end + + if useBG then + backdrop:SetBackdrop(BACKDROP_PAM_BG) + backdrop:SetBackdropColor(unpack(bgColor)) + backdrops[backdrop] = true + else + backdrop:SetBackdrop(BACKDROP_PAM_NO_BG) + backdrops[backdrop] = false + end + + backdrop:SetBackdropBorderColor(unpack(color)) + end + + function PermoksAccountManager:UpdateBorderColor() + local borderOptions = self.db.global.options.border + local color = borderOptions.color + local bgColor = borderOptions.bgColor or { 0.1, 0.1, 0.1, 0.9 } + + for backdrop, useBG in pairs(backdrops) do + if useBG then + backdrop:SetBackdropColor(unpack(bgColor)) + end + backdrop:SetBackdropBorderColor(unpack(color)) + end + end end do - local PermoksAccountManagerEvents = { - 'CHAT_MSG_PARTY', - 'CHAT_MSG_PARTY_LEADER', - 'CHAT_MSG_GUILD' - } - - --- Initialization called on ADDON_LOADED - function PermoksAccountManager:OnInitialize() - self.spairs = spairs - self.isBC = WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC - self.isWOTLK = WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC - self.isCata = WOW_PROJECT_ID == WOW_PROJECT_CATACLYSM_CLASSIC - self.isMists = WOW_PROJECT_ID == WOW_PROJECT_MISTS_CLASSIC - self.isRetail = WOW_PROJECT_ID == WOW_PROJECT_MAINLINE - - -- init databroker - self.db = LibStub('AceDB-3.0'):New('PermoksAccountManagerDB', defaultDB, true) - PermoksAccountManager:RegisterChatCommand('pam', 'HandleChatCommand') - PermoksAccountManager:HandleSecretPsst() - LibIcon:Register('PermoksAccountManager', PermoksAccountManagerLDB, self.db.profile.minimap) - - PermoksAccountManager:CreateFrames() - self.managerFrame:RegisterEvent('PLAYER_ENTERING_WORLD') - self.managerFrame:SetScript( - 'OnEvent', - function(self, event, arg1, arg2) - if event == 'PLAYER_ENTERING_WORLD' then - if arg1 or arg2 then - PermoksAccountManager:OnLogin() - if not PermoksAccountManager.isBC then - FrameUtil.RegisterFrameForEvents(self, PermoksAccountManagerEvents) - end - end - else - if arg1 then - arg1 = arg1:lower() - local start, ending = arg1:find('^!allkeys') - if start then - PermoksAccountManager:PostKeysIntoChat(event == 'CHAT_MSG_GUILD' and 'guild' or 'party', arg1, ending) - end - end - end - end - ) - end - - --- Not used right now. - function PermoksAccountManager:OnEnable() - end - - --- Not used right now. - function PermoksAccountManager:OnDisable() - end + local PermoksAccountManagerEvents = { + "CHAT_MSG_PARTY", + "CHAT_MSG_PARTY_LEADER", + "CHAT_MSG_GUILD", + } + + --- Initialization called on ADDON_LOADED + function PermoksAccountManager:OnInitialize() + self.spairs = spairs + self.isBC = WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC + self.isWOTLK = WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC + self.isCata = WOW_PROJECT_ID == WOW_PROJECT_CATACLYSM_CLASSIC + self.isMists = WOW_PROJECT_ID == WOW_PROJECT_MISTS_CLASSIC + self.isRetail = WOW_PROJECT_ID == WOW_PROJECT_MAINLINE + + -- init databroker + self.db = LibStub("AceDB-3.0"):New("PermoksAccountManagerDB", defaultDB, true) + PermoksAccountManager:RegisterChatCommand("pam", "HandleChatCommand") + PermoksAccountManager:HandleSecretPsst() + LibIcon:Register("PermoksAccountManager", PermoksAccountManagerLDB, self.db.profile.minimap) + + PermoksAccountManager:CreateFrames() + self.managerFrame:RegisterEvent("PLAYER_ENTERING_WORLD") + self.managerFrame:SetScript("OnEvent", function(self, event, arg1, arg2) + if event == "PLAYER_ENTERING_WORLD" then + if arg1 or arg2 then + PermoksAccountManager:OnLogin() + if not PermoksAccountManager.isBC then + FrameUtil.RegisterFrameForEvents(self, PermoksAccountManagerEvents) + end + end + else + if arg1 then + arg1 = arg1:lower() + local start, ending = arg1:find("^!allkeys") + if start then + PermoksAccountManager:PostKeysIntoChat( + event == "CHAT_MSG_GUILD" and "guild" or "party", + arg1, + ending + ) + end + end + end + end) + end + + --- Not used right now. + function PermoksAccountManager:OnEnable() end + + --- Not used right now. + function PermoksAccountManager:OnDisable() end end function PermoksAccountManager:Debug(...) - if self.db.global.options.debug then - self:Print(...) - end + if self.db.global.options.debug then + self:Print(...) + end end function PermoksAccountManager:CreateFrames() - local options = self.db.global.options - - local managerFrame = CreateFrame('Frame', 'PermoksAccountManagerFrame', UIParent) - self.managerFrame = managerFrame - managerFrame:SetFrameStrata(options.other.frameStrata) - managerFrame:ClearAllPoints() - managerFrame:Hide() - tinsert(UISpecialFrames, 'PermoksAccountManagerFrame') - - -- Restore saved position - if options.savePosition then - local position = self.db.global.position - managerFrame:SetPoint(position.point or 'TOP', WorldFrame, position.relativePoint or 'TOP', position.xOffset or 0, position.yOffset or -300) - else - managerFrame:SetPoint('TOPLEFT', WorldFrame, 'TOPLEFT', WorldFrame:GetWidth() / 3, -300) - end - - local managerFrameBackdrop = CreateFrame('Frame', nil, managerFrame, 'BackdropTemplate') - managerFrame.backdrop = managerFrameBackdrop - self:UpdateBorder(managerFrameBackdrop, managerFrame, true) - - managerFrame.labelColumn = CreateFrame('Button', nil, managerFrame) - managerFrame.labelColumn:SetPoint('TOPLEFT', managerFrame, 'TOPLEFT', 0, -5) - managerFrame.labelColumn:SetPoint('BOTTOMRIGHT', managerFrame, 'BOTTOMLEFT', 140, 0) - managerFrame.altColumns = {general = {}} - managerFrame.warbandColumns = {} - - managerFrame.topDragBar = CreateFrame('Frame', nil, managerFrame, 'BackdropTemplate') - managerFrame.topDragBar:ClearAllPoints() - managerFrame.topDragBar:SetHeight(40) - managerFrame.topDragBar:SetPoint('BOTTOMLEFT', managerFrame, 'TOPLEFT', -5, 0) - managerFrame.topDragBar:SetPoint('BOTTOMRIGHT', managerFrame, 'TOPRIGHT', 5, 0) - managerFrame.topDragBar:EnableMouse(true) - managerFrame.topDragBar:RegisterForDrag('LeftButton') - managerFrame.topDragBar:SetScript( - 'OnDragStart', - function(self, button) - managerFrame:SetMovable(true) - managerFrame:StartMoving() - end - ) - managerFrame.topDragBar:SetScript( - 'OnDragStop', - function(self, button) - managerFrame:StopMovingOrSizing() - - local left = managerFrame:GetLeft() - local top = managerFrame:GetTop() - - managerFrame:ClearAllPoints() - managerFrame:SetPoint('TOPLEFT', UIParent, 'TOPLEFT', left, top - UIParent:GetTop()) - - managerFrame:SetMovable(false) - end - ) - self:UpdateBorder(managerFrame.topDragBar, nil, true) - - local categoryFrame = CreateFrame('Frame', nil, managerFrame) - self.categoryFrame = categoryFrame - managerFrame.categoryFrame = categoryFrame - categoryFrame:SetPoint('TOPLEFT', managerFrame, 'BOTTOMLEFT', 0, -12) - categoryFrame:SetPoint('TOPRIGHT', managerFrame, 'BOTTOMRIGHT', 0, -12) - - local cLabelColumn = CreateFrame('Frame', nil, categoryFrame) - categoryFrame.labelColumn = cLabelColumn - cLabelColumn.categories = {} - cLabelColumn:SetPoint('TOPLEFT', categoryFrame, 'TOPLEFT', 0, -5) - cLabelColumn:SetPoint('BOTTOMRIGHT', categoryFrame, 'BOTTOMLEFT', 140, 0) - categoryFrame.altColumns = {} - - local categoryFrameBackdrop = CreateFrame('Frame', nil, categoryFrame, 'BackdropTemplate') - categoryFrame.backdrop = categoryFrameBackdrop - self:UpdateBorder(categoryFrameBackdrop, categoryFrame, true) - categoryFrame:Hide() - - return managerFrame + local options = self.db.global.options + + local managerFrame = CreateFrame("Frame", "PermoksAccountManagerFrame", UIParent) + self.managerFrame = managerFrame + managerFrame:SetFrameStrata(options.other.frameStrata) + managerFrame:ClearAllPoints() + managerFrame:Hide() + tinsert(UISpecialFrames, "PermoksAccountManagerFrame") + + -- Restore saved position + if options.savePosition then + local position = self.db.global.position + managerFrame:SetPoint( + position.point or "TOP", + WorldFrame, + position.relativePoint or "TOP", + position.xOffset or 0, + position.yOffset or -300 + ) + else + managerFrame:SetPoint("TOPLEFT", WorldFrame, "TOPLEFT", WorldFrame:GetWidth() / 3, -300) + end + + local managerFrameBackdrop = CreateFrame("Frame", nil, managerFrame, "BackdropTemplate") + managerFrame.backdrop = managerFrameBackdrop + self:UpdateBorder(managerFrameBackdrop, managerFrame, true) + + managerFrame.labelColumn = CreateFrame("Button", nil, managerFrame) + managerFrame.labelColumn:SetPoint("TOPLEFT", managerFrame, "TOPLEFT", 0, -5) + managerFrame.labelColumn:SetPoint("BOTTOMRIGHT", managerFrame, "BOTTOMLEFT", 140, 0) + managerFrame.altColumns = { general = {} } + managerFrame.warbandColumns = {} + + managerFrame.topDragBar = CreateFrame("Frame", nil, managerFrame, "BackdropTemplate") + managerFrame.topDragBar:ClearAllPoints() + managerFrame.topDragBar:SetHeight(40) + managerFrame.topDragBar:SetPoint("BOTTOMLEFT", managerFrame, "TOPLEFT", -5, 0) + managerFrame.topDragBar:SetPoint("BOTTOMRIGHT", managerFrame, "TOPRIGHT", 5, 0) + managerFrame.topDragBar:EnableMouse(true) + managerFrame.topDragBar:RegisterForDrag("LeftButton") + managerFrame.topDragBar:SetScript("OnDragStart", function(self, button) + managerFrame:SetMovable(true) + managerFrame:StartMoving() + end) + managerFrame.topDragBar:SetScript("OnDragStop", function(self, button) + managerFrame:StopMovingOrSizing() + + local left = managerFrame:GetLeft() + local top = managerFrame:GetTop() + + managerFrame:ClearAllPoints() + managerFrame:SetPoint("TOPLEFT", UIParent, "TOPLEFT", left, top - UIParent:GetTop()) + + managerFrame:SetMovable(false) + end) + self:UpdateBorder(managerFrame.topDragBar, nil, true) + + local categoryFrame = CreateFrame("Frame", nil, managerFrame) + self.categoryFrame = categoryFrame + managerFrame.categoryFrame = categoryFrame + categoryFrame:SetPoint("TOPLEFT", managerFrame, "BOTTOMLEFT", 0, -12) + categoryFrame:SetPoint("TOPRIGHT", managerFrame, "BOTTOMRIGHT", 0, -12) + + local cLabelColumn = CreateFrame("Frame", nil, categoryFrame) + categoryFrame.labelColumn = cLabelColumn + cLabelColumn.categories = {} + cLabelColumn:SetPoint("TOPLEFT", categoryFrame, "TOPLEFT", 0, -5) + cLabelColumn:SetPoint("BOTTOMRIGHT", categoryFrame, "BOTTOMLEFT", 140, 0) + categoryFrame.altColumns = {} + + local categoryFrameBackdrop = CreateFrame("Frame", nil, categoryFrame, "BackdropTemplate") + categoryFrame.backdrop = categoryFrameBackdrop + self:UpdateBorder(categoryFrameBackdrop, categoryFrame, true) + categoryFrame:Hide() + + return managerFrame end function PermoksAccountManager:CreateMenuButtons() - local managerFrame = self.managerFrame - - ------------------- - -- Close Button - local closeButton = CreateFrame('Button', nil, managerFrame.topDragBar) - managerFrame.closeButton = closeButton - closeButton:ClearAllPoints() - closeButton:SetSize(20, 20) - closeButton:SetPoint('RIGHT', managerFrame.topDragBar, 'RIGHT', -10, 0) - closeButton:SetScript( - 'OnClick', - function() - PermoksAccountManager:HideInterface() - end - ) - closeButton:SetNormalTexture('Interface/Addons/PermoksAccountManager/textures/testbutton.tga') - closeButton:SetHighlightAtlas('auctionhouse-nav-button-highlight') - - local closeButtonTexture = closeButton:CreateTexture(nil, 'OVERLAY') - closeButton.x = closeButtonTexture - closeButtonTexture:SetAllPoints() - closeButtonTexture:SetTexture('Interface/Addons/PermoksAccountManager/textures/testbuttonx.tga') - closeButtonTexture:SetVertexColor(2, 2, 2, 1) - closeButton:SetScript( - 'OnMouseDown', - function() - closeButtonTexture:AdjustPointsOffset(1, -1) - end - ) - closeButton:SetScript( - 'OnMouseUp', - function() - closeButtonTexture:AdjustPointsOffset(-1, 1) - end - ) - - ------------------- - -- Guild Attunement Button - if self.isBC then - local guildAttunementButton = CreateFrame('Button', nil, managerFrame, 'UIPanelButtonTemplate') - managerFrame.guildAttunementButton = guildAttunementButton - guildAttunementButton:SetSize(80, 20) - guildAttunementButton:ClearAllPoints() - guildAttunementButton:SetPoint('BOTTOMLEFT', managerFrame, 'BOTTOMLEFT', -85, -5) - guildAttunementButton:SetText('Attunement') - guildAttunementButton:SetScript('OnClick', PermoksAccountManager.ShowGuildAttunements) - end + local managerFrame = self.managerFrame + + ------------------- + -- Close Button + local closeButton = CreateFrame("Button", nil, managerFrame.topDragBar) + managerFrame.closeButton = closeButton + closeButton:ClearAllPoints() + closeButton:SetSize(20, 20) + closeButton:SetPoint("RIGHT", managerFrame.topDragBar, "RIGHT", -10, 0) + closeButton:SetScript("OnClick", function() + PermoksAccountManager:HideInterface() + end) + closeButton:SetNormalTexture("Interface/Addons/PermoksAccountManager/textures/testbutton.tga") + closeButton:SetHighlightAtlas("auctionhouse-nav-button-highlight") + + local closeButtonTexture = closeButton:CreateTexture(nil, "OVERLAY") + closeButton.x = closeButtonTexture + closeButtonTexture:SetAllPoints() + closeButtonTexture:SetTexture("Interface/Addons/PermoksAccountManager/textures/testbuttonx.tga") + closeButtonTexture:SetVertexColor(2, 2, 2, 1) + closeButton:SetScript("OnMouseDown", function() + closeButtonTexture:AdjustPointsOffset(1, -1) + end) + closeButton:SetScript("OnMouseUp", function() + closeButtonTexture:AdjustPointsOffset(-1, 1) + end) + + ------------------- + -- Guild Attunement Button + if self.isBC then + local guildAttunementButton = CreateFrame("Button", nil, managerFrame, "UIPanelButtonTemplate") + managerFrame.guildAttunementButton = guildAttunementButton + guildAttunementButton:SetSize(80, 20) + guildAttunementButton:ClearAllPoints() + guildAttunementButton:SetPoint("BOTTOMLEFT", managerFrame, "BOTTOMLEFT", -85, -5) + guildAttunementButton:SetText("Attunement") + guildAttunementButton:SetScript("OnClick", PermoksAccountManager.ShowGuildAttunements) + end end function PermoksAccountManager:CreateResetTimers() - local weeklyResetTime = self:GetNextWeeklyResetTime() - local dailyResetTime = self:GetNextDailyResetTime() - - C_Timer.After( - weeklyResetTime, - function() - self:CheckForReset() - end - ) - - if dailyResetTime < weeklyResetTime then - C_Timer.After( - dailyResetTime, - function() - self:CheckForReset() - end - ) - end - - if self.isCata then - local threeDayResetTime = self:GetNextThreeDayLockoutResetTime() - if threeDayResetTime then - C_Timer.After( - threeDayResetTime, - function() - self:CheckForReset() - end - ) - end - end + local weeklyResetTime = self:GetNextWeeklyResetTime() + local dailyResetTime = self:GetNextDailyResetTime() + + C_Timer.After(weeklyResetTime, function() + self:CheckForReset() + end) + + if dailyResetTime < weeklyResetTime then + C_Timer.After(dailyResetTime, function() + self:CheckForReset() + end) + end + + if self.isCata then + local threeDayResetTime = self:GetNextThreeDayLockoutResetTime() + if threeDayResetTime then + C_Timer.After(threeDayResetTime, function() + self:CheckForReset() + end) + end + end end function PermoksAccountManager:ResetQuestCompletion(labelRow, ...) - local db = self.db.global - local accountData = db.accounts.main - local warbandData = db.accounts.main.warbandData - - local questIDs = false - local questType = self.labelRows[labelRow].questType - local visibility = self.labelRows[labelRow].visibility - - -- optional arguments in form of quest IDs can be passed if only specific quests are to be removed - if select("#", ...) > 0 then questIDs = {...} end - - -- Helper function to process questInfo tables - local function processQuestInfo(questInfo) - if questInfo and questInfo[questType] and questInfo[questType][visibility] then - if not questInfo[questType][visibility][labelRow] then - questInfo[questType][visibility][labelRow] = {} - end - - if questIDs then - for _, quest in ipairs(questIDs) do - questInfo[questType][visibility][labelRow][quest] = nil - end - else - questInfo[questType][visibility][labelRow] = {} - end - end - end - - -- Process account data - for _, alt_data in pairs(accountData.data) do - processQuestInfo(alt_data.questInfo) - end - - -- Process warband data - processQuestInfo(warbandData.questInfo) + local db = self.db.global + local accountData = db.accounts.main + local warbandData = db.accounts.main.warbandData + + local questIDs = false + local questType = self.labelRows[labelRow].questType + local visibility = self.labelRows[labelRow].visibility + + -- optional arguments in form of quest IDs can be passed if only specific quests are to be removed + if select("#", ...) > 0 then + questIDs = { ... } + end + + -- Helper function to process questInfo tables + local function processQuestInfo(questInfo) + if questInfo and questInfo[questType] and questInfo[questType][visibility] then + if not questInfo[questType][visibility][labelRow] then + questInfo[questType][visibility][labelRow] = {} + end + + if questIDs then + for _, quest in ipairs(questIDs) do + questInfo[questType][visibility][labelRow][quest] = nil + end + else + questInfo[questType][visibility][labelRow] = {} + end + end + end + + -- Process account data + for _, alt_data in pairs(accountData.data) do + processQuestInfo(alt_data.questInfo) + end + + -- Process warband data + processQuestInfo(warbandData.questInfo) end function PermoksAccountManager:CheckForModernize() - if self.isCata then - local internalVersion = self.db.global.internalCataVersion - if not internalVersion or internalVersion < INTERNALCATAVERSION then - self:ModernizeCata(internalVersion) - end - self.db.global.internalCataVersion = INTERNALCATAVERSION - elseif self.isMists then - local internalVersion = self.db.global.internalMistsVersion - if not internalVersion or internalVersion < INTERNALMISTSVERSION then - self:ModernizeMists(internalVersion) - end - self.db.global.internalMistsVersion = INTERNALMISTSVERSION - else - local internalVersion = self.db.global.internalTWWVersion - if (internalVersion or 0) < INTERNALTWWVERSION then - self:Modernize(internalVersion) - end - self.db.global.internalTWWVersion = INTERNALTWWVERSION - end + if self.isCata then + local internalVersion = self.db.global.internalCataVersion + if not internalVersion or internalVersion < INTERNALCATAVERSION then + self:ModernizeCata(internalVersion) + end + self.db.global.internalCataVersion = INTERNALCATAVERSION + elseif self.isMists then + local internalVersion = self.db.global.internalMistsVersion + if not internalVersion or internalVersion < INTERNALMISTSVERSION then + self:ModernizeMists(internalVersion) + end + self.db.global.internalMistsVersion = INTERNALMISTSVERSION + else + local internalVersion = self.db.global.internalTWWVersion + if (internalVersion or 0) < INTERNALTWWVERSION then + self:Modernize(internalVersion) + end + self.db.global.internalTWWVersion = INTERNALTWWVERSION + end end function PermoksAccountManager:ModernizeMists(oldInternalVersion) - local db = self.db + local db = self.db - if (oldInternalVersion or 0) < 2 then - self:ResetCategories() - oldInternalVersion = 1 - end + if (oldInternalVersion or 0) < 2 then + self:ResetCategories() + oldInternalVersion = 1 + end end function PermoksAccountManager:ModernizeCata(oldInternalVersion) - local db = self.db + local db = self.db - if (oldInternalVersion or 0) < 2 then - self:UpdateDefaultCategories('general') - oldInternalVersion = 1 - end - - if (oldInternalVersion or 0) < 3 then - self:UpdateDefaultCategories('general') - self:UpdateDefaultCategories('sharedFactions') - self:UpdateDefaultCategories('lockouts') - self:UpdateDefaultCategories('consumables') - self:UpdateDefaultCategories('items') - self:UpdateDefaultCategories('dailies') - end + if (oldInternalVersion or 0) < 2 then + self:UpdateDefaultCategories("general") + oldInternalVersion = 1 + end + if (oldInternalVersion or 0) < 3 then + self:UpdateDefaultCategories("general") + self:UpdateDefaultCategories("sharedFactions") + self:UpdateDefaultCategories("lockouts") + self:UpdateDefaultCategories("consumables") + self:UpdateDefaultCategories("items") + self:UpdateDefaultCategories("dailies") + end end function PermoksAccountManager:ModernizeWOTLK(oldInternalVersion) - local db = self.db - - if (oldInternalVersion or 0) < 2 then - self:UpdateDefaultCategories('general') - self:UpdateDefaultCategories('lockouts') - self:UpdateDefaultCategories('dailies') - self:UpdateDefaultCategories('consumables') - oldInternalVersion = 2 - end - - if oldInternalVersion < 3 then - self:UpdateDefaultCategories('consumables') - self:UpdateDefaultCategories('items') - oldInternalVersion = 3 - end - - if oldInternalVersion < 4 then - self:AddLabelToDefaultCategory('sharedFactions', 'the_ashen_verdict') - self:UpdateDefaultCategories('lockouts') - self:UpdateDefaultCategories('items') - oldInternalVersion = 4 - end - - if oldInternalVersion < 5 then - self:AddLabelToDefaultCategory('general', 'defilers_scourgestone') - end - - if oldInternalVersion < 6 then - self:UpdateDefaultCategories('dailies') - end + local db = self.db + + if (oldInternalVersion or 0) < 2 then + self:UpdateDefaultCategories("general") + self:UpdateDefaultCategories("lockouts") + self:UpdateDefaultCategories("dailies") + self:UpdateDefaultCategories("consumables") + oldInternalVersion = 2 + end + + if oldInternalVersion < 3 then + self:UpdateDefaultCategories("consumables") + self:UpdateDefaultCategories("items") + oldInternalVersion = 3 + end + + if oldInternalVersion < 4 then + self:AddLabelToDefaultCategory("sharedFactions", "the_ashen_verdict") + self:UpdateDefaultCategories("lockouts") + self:UpdateDefaultCategories("items") + oldInternalVersion = 4 + end + + if oldInternalVersion < 5 then + self:AddLabelToDefaultCategory("general", "defilers_scourgestone") + end + + if oldInternalVersion < 6 then + self:UpdateDefaultCategories("dailies") + end end function PermoksAccountManager:Modernize(oldInternalVersion) - local db = self.db - - if not oldInternalVersion then - self:ResetCategories() - oldInternalVersion = 1 - end - - if oldInternalVersion < 2 then - self:ResetQuestCompletion('isle_of_dorne_rares') - self:ResetQuestCompletion('ringing_deeps_rares') - self:ResetQuestCompletion('hallowfall_rares') - self:ResetQuestCompletion('azj_kahet_rares') - end - - if oldInternalVersion < 3 then - self:UpdateDefaultCategories('currentweekly') - self:ResetQuestCompletion('isle_of_dorne_rares', 85158, 85160, 85161, 85159) - self:ResetQuestCompletion('ringing_deeps_rares', 85163, 85162) - self:ResetQuestCompletion('hallowfall_rares', 85164) - self:ResetQuestCompletion('azj_kahet_rares', 85167, 85166) - end - - if oldInternalVersion < 4 then - self:AddLabelToDefaultCategory('currentweekly', 'weekly_delve_reputation', 4) - self:AddLabelToDefaultCategory('currentweekly', 'weekly_coffer_keys', 4) - self:ResetQuestCompletion('hallowfall_rares', 85165) - end - - if oldInternalVersion < 5 then - self:AddLabelToDefaultCategory('currentweekly', 'tww_world_boss', 7) - end - - if oldInternalVersion < 6 then - self:AddLabelToDefaultCategory('general', 'bronze_celebration_token', 26) - self:AddLabelToDefaultCategory('general', 'timewarped_relic_coffer_key', 27) - self:AddLabelToDefaultCategory('raid', 'blackrock_depths_raid', 2) - end - - if oldInternalVersion < 7 then - self:AddLabelToDefaultCategory('general', 'veteran_crest') - self:AddLabelToDefaultCategory('general', 'normal_crest') - self:AddLabelToDefaultCategory('general', 'hero_crest') - self:AddLabelToDefaultCategory('general', 'myth_crest') - self:AddLabelToDefaultCategory('general', 'spark_drops') - - self:AddLabelToDefaultCategory('currentweekly', 'undermine_weeklies', 19) - self:AddLabelToDefaultCategory('currentweekly', 'undermine_rares') - - self:AddLabelToDefaultCategory('raid', 'liberation_of_undermine') - - self:UpdateDefaultCategories('renown') - - self:ReplaceLabelOfDefaultCategory('general', 'spark_omens', 'spark_current') - self:RemoveLabelFromDefaultCategory('general', 'timewarped_relic_coffer_key') - self:RemoveLabelFromDefaultCategory('general', 'bronze_celebration_token') - self:FixOrderOfDefaultCategories() - - end - - if oldInternalVersion < 8 then - self:AddLabelToDefaultCategory('general', 'weekly_bounti_map') - end - - if oldInternalVersion < 9 then - self:AddLabelToDefaultCategory('renown', 'flames_radiance', 8) - self:AddLabelToDefaultCategory('currentweekly', 'nightfall_weekly', 7) - end - - if oldInternalVersion < 11 then - self.UpdateDefaultCategories('raid') - self.UpdateDefaultCategories('renown') - - self:AddLabelToDefaultCategory('general', 'undercoin') - end + local db = self.db + + if not oldInternalVersion then + self:ResetCategories() + oldInternalVersion = 1 + end + + if oldInternalVersion < 2 then + self:ResetQuestCompletion("isle_of_dorne_rares") + self:ResetQuestCompletion("ringing_deeps_rares") + self:ResetQuestCompletion("hallowfall_rares") + self:ResetQuestCompletion("azj_kahet_rares") + end + + if oldInternalVersion < 3 then + self:UpdateDefaultCategories("currentweekly") + self:ResetQuestCompletion("isle_of_dorne_rares", 85158, 85160, 85161, 85159) + self:ResetQuestCompletion("ringing_deeps_rares", 85163, 85162) + self:ResetQuestCompletion("hallowfall_rares", 85164) + self:ResetQuestCompletion("azj_kahet_rares", 85167, 85166) + end + + if oldInternalVersion < 4 then + self:AddLabelToDefaultCategory("currentweekly", "weekly_delve_reputation", 4) + self:AddLabelToDefaultCategory("currentweekly", "weekly_coffer_keys", 4) + self:ResetQuestCompletion("hallowfall_rares", 85165) + end + + if oldInternalVersion < 5 then + self:AddLabelToDefaultCategory("currentweekly", "tww_world_boss", 7) + end + + if oldInternalVersion < 6 then + self:AddLabelToDefaultCategory("general", "bronze_celebration_token", 26) + self:AddLabelToDefaultCategory("general", "timewarped_relic_coffer_key", 27) + self:AddLabelToDefaultCategory("raid", "blackrock_depths_raid", 2) + end + + if oldInternalVersion < 7 then + self:AddLabelToDefaultCategory("general", "veteran_crest") + self:AddLabelToDefaultCategory("general", "normal_crest") + self:AddLabelToDefaultCategory("general", "hero_crest") + self:AddLabelToDefaultCategory("general", "myth_crest") + self:AddLabelToDefaultCategory("general", "spark_drops") + + self:AddLabelToDefaultCategory("currentweekly", "undermine_weeklies", 19) + self:AddLabelToDefaultCategory("currentweekly", "undermine_rares") + + self:AddLabelToDefaultCategory("raid", "liberation_of_undermine") + + self:UpdateDefaultCategories("renown") + + self:ReplaceLabelOfDefaultCategory("general", "spark_omens", "spark_current") + self:RemoveLabelFromDefaultCategory("general", "timewarped_relic_coffer_key") + self:RemoveLabelFromDefaultCategory("general", "bronze_celebration_token") + self:FixOrderOfDefaultCategories() + end + + if oldInternalVersion < 8 then + self:AddLabelToDefaultCategory("general", "weekly_bounti_map") + end + + if oldInternalVersion < 9 then + self:AddLabelToDefaultCategory("renown", "flames_radiance", 8) + self:AddLabelToDefaultCategory("currentweekly", "nightfall_weekly", 7) + end + + if oldInternalVersion < 11 then + self:UpdateDefaultCategories("raid") + self:UpdateDefaultCategories("renown") + + self:AddLabelToDefaultCategory("general", "undercoin") + end end function PermoksAccountManager:GetGUID() - self.myGUID = self.myGUID or UnitGUID('player') - return self.myGUID + self.myGUID = self.myGUID or UnitGUID("player") + return self.myGUID end local function SortPages(pages) - local options = PermoksAccountManager.db.global.options - local sortBy = options.characters.sortBy - local sortByLesser = options.characters.sortByLesser - local GUID = PermoksAccountManager:GetGUID() - - table.sort( - pages, - function(a, b) - if options.currentCharacterFirstPosition then - if a.guid == GUID then - return true - elseif b.guid == GUID then - return false - end - end - - local ta = a[sortBy] - local tb = b[sortBy] - if sortByLesser then - return ta < tb or (ta == tb and a.name < b.name) - else - return ta > tb or (ta == tb and a.name < b.name) - end - end - ) - - local perPage = options.characters.charactersPerPage - local finalPages = {{}} - for i, altData in ipairs(pages) do - local page = ceil(i / perPage) - finalPages[page] = finalPages[page] or {} - - tinsert(finalPages[page], altData) - altData.page = page - end - return finalPages + local options = PermoksAccountManager.db.global.options + local sortBy = options.characters.sortBy + local sortByLesser = options.characters.sortByLesser + local GUID = PermoksAccountManager:GetGUID() + + table.sort(pages, function(a, b) + if options.currentCharacterFirstPosition then + if a.guid == GUID then + return true + elseif b.guid == GUID then + return false + end + end + + local ta = a[sortBy] + local tb = b[sortBy] + if sortByLesser then + return ta < tb or (ta == tb and a.name < b.name) + else + return ta > tb or (ta == tb and a.name < b.name) + end + end) + + local perPage = options.characters.charactersPerPage + local finalPages = { {} } + for i, altData in ipairs(pages) do + local page = ceil(i / perPage) + finalPages[page] = finalPages[page] or {} + + tinsert(finalPages[page], altData) + altData.page = page + end + return finalPages end local function GetCharacterOrders(pages, data, enabledAlts, accountName) - local db = PermoksAccountManager.db.global - local sortBy = db.options.characters.sortBy - local sortByLesser = db.options.characters.sortByLesser - local default = sortBy == 'order' and 100 or 1 - - local enabledAlts = enabledAlts or 1 - for alt_guid, alt_data in PermoksAccountManager.spairs( - data, - function(t, a, b) - if t[a] and t[b] then - local ta = t[a][sortBy] or default - local tb = t[b][sortBy] or default - - if sortByLesser then - return ta < tb or (ta == tb and t[a].name < t[b].name) - else - return ta > tb or (ta == tb and t[a].name < t[b].name) - end - end - end - ) do - if not PermoksAccountManager.db.global.blacklist[alt_guid] then - alt_data.order = alt_data.order or enabledAlts - tinsert(pages, alt_data) - PermoksAccountManager:AddCharacterToOrderOptions(alt_guid, alt_data, accountName) - enabledAlts = enabledAlts + 1 - end - end - return enabledAlts + local db = PermoksAccountManager.db.global + local sortBy = db.options.characters.sortBy + local sortByLesser = db.options.characters.sortByLesser + local default = sortBy == "order" and 100 or 1 + + local enabledAlts = enabledAlts or 1 + for alt_guid, alt_data in + PermoksAccountManager.spairs(data, function(t, a, b) + if t[a] and t[b] then + local ta = t[a][sortBy] or default + local tb = t[b][sortBy] or default + + if t[a].name and t[b].name then + if sortByLesser then + return ta < tb or (ta == tb and t[a].name < t[b].name) + else + return ta > tb or (ta == tb and t[a].name < t[b].name) + end + end + end + end) + do + if not PermoksAccountManager.db.global.blacklist[alt_guid] and alt_data.name then + alt_data.order = alt_data.order or enabledAlts + tinsert(pages, alt_data) + PermoksAccountManager:AddCharacterToOrderOptions(alt_guid, alt_data, accountName) + enabledAlts = enabledAlts + 1 + end + end + return enabledAlts end function PermoksAccountManager:SortPages() - local db = self.db.global - - if db.options.characters.combine then - local dummyPages = {} - local enabledAlts - for accountName, accountInfo in PermoksAccountManager.spairs( - db.accounts, - function(_, a, b) - if a == 'main' or b == 'main' then - return a > b - else - return a < b - end - end - ) do - enabledAlts = GetCharacterOrders(dummyPages, accountInfo.data, enabledAlts, accountName) - - if accountName == 'main' then - db.accounts.main.pages = SortPages(dummyPages) - end - end - self.pages = SortPages(dummyPages) - else - local dummyPages = {} - GetCharacterOrders(dummyPages, db.accounts.main.data, nil, 'main') - - db.accounts.main.pages = SortPages(dummyPages) - self.pages = db.accounts.main.pages - end - - self.db.global.currentPage = min(self.db.global.currentPage, #self.pages) + local db = self.db.global + + if db.options.characters.combine then + local dummyPages = {} + local enabledAlts + for accountName, accountInfo in + PermoksAccountManager.spairs(db.accounts, function(_, a, b) + if a == "main" or b == "main" then + return a > b + else + return a < b + end + end) + do + enabledAlts = GetCharacterOrders(dummyPages, accountInfo.data, enabledAlts, accountName) + + if accountName == "main" then + db.accounts.main.pages = SortPages(dummyPages) + end + end + self.pages = SortPages(dummyPages) + else + local dummyPages = {} + GetCharacterOrders(dummyPages, db.accounts.main.data, nil, "main") + + db.accounts.main.pages = SortPages(dummyPages) + self.pages = db.accounts.main.pages + end + + self.db.global.currentPage = min(self.db.global.currentPage, #self.pages) end function PermoksAccountManager:AddNewCharacter(account, guid) - local data = account.data - data[guid] = {guid = guid} + local data = account.data + data[guid] = { guid = guid } - local charInfo = data[guid] - local _, class = UnitClass('player') - charInfo.class = class - charInfo.faction = UnitFactionGroup('player') + local charInfo = data[guid] + local _, class = UnitClass("player") + charInfo.class = class + charInfo.faction = UnitFactionGroup("player") - local name, realm = UnitFullName('player') - charInfo.name = name - charInfo.realm = realm - charInfo.order = self.db.global.alts + local name, realm = UnitFullName("player") + charInfo.name = name + charInfo.realm = realm + charInfo.order = self.db.global.alts - charInfo.charLevel = UnitLevel('player') + charInfo.charLevel = UnitLevel("player") end function PermoksAccountManager:SaveBattleTag(db) - if not db.battleTag then - local _, battleTag = BNGetInfo() - db.battleTag = battleTag - end + if not db.battleTag then + local _, battleTag = BNGetInfo() + db.battleTag = battleTag + end end function PermoksAccountManager:OnLogin() - local db = self.db.global - local guid = self:GetGUID() - local level = UnitLevel('player') - local min_level = db.options.characters.minLevel - - self.elvui = C_AddOns.IsAddOnLoaded('ElvUI') - self.ElvUI_Skins = self.elvui and ElvUI[1]:GetModule('Skins') - self:SaveBattleTag(db) - self:CheckForModernize() - self:CheckForReset() - LoadFonts() - - self.account = db.accounts.main - self.warbandData = db.accounts.main.warbandData - local data = self.account.data - - if guid and (not data[guid] or not data[guid].name) and not self:isBlacklisted(guid) and not (level < min_level) then - db.alts = db.alts + 1 - self:AddNewCharacter(self.account, guid) - end - - self.charInfo = data[guid] - self:LoadAllModules(self.charInfo) - if self.charInfo then - self:RequestCharacterInfo() - self:UpdateCompletionData() - end - - db.currentPage = 1 - self:LoadOptionsTemplate() - self:SortPages() - self:LoadCustomLabelButtons() - self:LoadCustomLabelTable() - self.LoadOptions() - self:CreateResetTimers() - - self:UpdateAccounts() + local db = self.db.global + local guid = self:GetGUID() + local level = UnitLevel("player") + local min_level = db.options.characters.minLevel + + self.elvui = C_AddOns.IsAddOnLoaded("ElvUI") + self.ElvUI_Skins = self.elvui and ElvUI[1]:GetModule("Skins") + self:SaveBattleTag(db) + self:CheckForModernize() + self:CheckForReset() + LoadFonts() + + self.account = db.accounts.main + self.warbandData = db.accounts.main.warbandData + local data = self.account.data + + if + guid + and (not data[guid] or not data[guid].name) + and not self:isBlacklisted(guid) + and not (level < min_level) + then + db.alts = db.alts + 1 + self:AddNewCharacter(self.account, guid) + end + + self.charInfo = data[guid] + self:LoadAllModules(self.charInfo) + if self.charInfo then + self:RequestCharacterInfo() + self:UpdateCompletionData() + end + + db.currentPage = 1 + self:LoadOptionsTemplate() + self:SortPages() + self:LoadCustomLabelButtons() + self:LoadCustomLabelTable() + self.LoadOptions() + self:CreateResetTimers() + + self:UpdateAccounts() end function PermoksAccountManager:SkinButtonElvUI(button) - if not self.elvui then - return - end + if not self.elvui then + return + end - self.ElvUI_Skins:HandleButton(button) + self.ElvUI_Skins:HandleButton(button) end function PermoksAccountManager:GetSecondsRemaining(expirationTime) - if expirationTime == 0 then - return 0 - end - return expirationTime - time() + if expirationTime == 0 then + return 0 + end + return expirationTime - time() end -- TODO: Completion Data function PermoksAccountManager:CheckForReset() - local db = self.db.global - local currentTime = time() - local resetDaily = currentTime >= (db.dailyReset or 0) - local resetWeekly = currentTime >= (db.weeklyReset or 0) - local resetBiweekly = currentTime >= (db.biweeklyReset or 0) - local resetThreeDayRaids = currentTime >= (db.threeDayReset or 0) - wipe(db.completionData) - - for account, accountData in pairs(db.accounts) do - self:ResetAccount(db, accountData, resetDaily, resetWeekly, resetBiweekly, resetThreeDayRaids) - end - - db.weeklyReset = resetWeekly and currentTime + self:GetNextWeeklyResetTime() or db.weeklyReset - db.dailyReset = resetDaily and currentTime + self:GetNextDailyResetTime() or db.dailyReset - db.biweeklyReset = resetBiweekly and currentTime + self:GetNextBiWeeklyResetTime() or db.biweeklyReset - if self.isCata then - db.threeDayReset = resetThreeDayRaids and currentTime + self:GetNextThreeDayLockoutResetTime() or db.threeDayReset - end + local db = self.db.global + local currentTime = time() + local resetDaily = currentTime >= (db.dailyReset or 0) + local resetWeekly = currentTime >= (db.weeklyReset or 0) + local resetBiweekly = currentTime >= (db.biweeklyReset or 0) + local resetThreeDayRaids = currentTime >= (db.threeDayReset or 0) + wipe(db.completionData) + + for account, accountData in pairs(db.accounts) do + self:ResetAccount(db, accountData, resetDaily, resetWeekly, resetBiweekly, resetThreeDayRaids) + end + + db.weeklyReset = resetWeekly and currentTime + self:GetNextWeeklyResetTime() or db.weeklyReset + db.dailyReset = resetDaily and currentTime + self:GetNextDailyResetTime() or db.dailyReset + db.biweeklyReset = resetBiweekly and currentTime + self:GetNextBiWeeklyResetTime() or db.biweeklyReset + if self.isCata then + db.threeDayReset = resetThreeDayRaids and currentTime + self:GetNextThreeDayLockoutResetTime() + or db.threeDayReset + end end function PermoksAccountManager:ResetAccount(db, accountData, daily, weekly, biweekly, resetThreeDayRaids) - -- Loop through account data and reset each altData - for _, altData in pairs(accountData.data) do - self:ResetActivities(db, altData, daily, weekly, biweekly, resetThreeDayRaids) - end + -- Loop through account data and reset each altData + for _, altData in pairs(accountData.data) do + self:ResetActivities(db, altData, daily, weekly, biweekly, resetThreeDayRaids) + end - -- Reset warband data - self:ResetActivities(db, accountData.warbandData, daily, weekly, biweekly, false) + -- Reset warband data + self:ResetActivities(db, accountData.warbandData, daily, weekly, biweekly, false) end function PermoksAccountManager:ResetActivities(db, data, daily, weekly, biweekly, resetThreeDayRaids) - if weekly then - self:ResetWeeklyActivities(data) + if weekly then + self:ResetWeeklyActivities(data) - -- DEBUG LINE DELETE LATER - print('PAM: Weekly activities gracefully reset.') - end + -- DEBUG LINE DELETE LATER + print("PAM: Weekly activities gracefully reset.") + end - if daily then - self:ResetDailyActivities(db, data) - end + if daily then + self:ResetDailyActivities(db, data) + end - if biweekly then - self:ResetBiweeklyActivities(data) - end + if biweekly then + self:ResetBiweeklyActivities(data) + end - if resetThreeDayRaids then - self:ResetThreeDayRaids(data) - end + if resetThreeDayRaids then + self:ResetThreeDayRaids(data) + end end function PermoksAccountManager:ResetWeeklyActivities(altData) - if not altData then return end - - -- M0/Raids - if altData.instanceInfo then - -- Store three day raids so they won't get reset here (currently only ZG for WOTLK) - local threeDayResetRaids = altData.instanceInfo.raids['zul_gurub'] or false - altData.instanceInfo.raids = {} - altData.instanceInfo.dungeons = {} - -- Resave after purge if there were any three day raids - if threeDayResetRaids ~= false then - altData.instanceInfo.raids['zul_gurub'] = threeDayResetRaids - end - end - - -- Torghast - if altData.torghastInfo then - wipe(altData.torghastInfo) - end - - -- Vault - if altData.vaultInfo then - wipe(altData.vaultInfo) - end - - if altData.mythicPlusHistory then - wipe(altData.mythicPlusHistory) - end - - altData.raidActivityInfo = {} - - -- M+ - altData.keyInfo = nil - - -- Weekly Quests - if altData.questInfo and altData.questInfo.weekly then - for visibility, quests in pairs(altData.questInfo.weekly) do - altData.questInfo.weekly[visibility] = {} - end - end - - if altData.completedWorldQuests then - altData.completedWorldQuests = {} - end + if not altData then + return + end + + -- M0/Raids + if altData.instanceInfo then + -- Store three day raids so they won't get reset here (currently only ZG for WOTLK) + local threeDayResetRaids = altData.instanceInfo.raids["zul_gurub"] or false + altData.instanceInfo.raids = {} + altData.instanceInfo.dungeons = {} + -- Resave after purge if there were any three day raids + if threeDayResetRaids ~= false then + altData.instanceInfo.raids["zul_gurub"] = threeDayResetRaids + end + end + + -- Torghast + if altData.torghastInfo then + wipe(altData.torghastInfo) + end + + -- Vault + if altData.vaultInfo then + wipe(altData.vaultInfo) + end + + if altData.mythicPlusHistory then + wipe(altData.mythicPlusHistory) + end + + altData.raidActivityInfo = {} + + -- M+ + altData.keyInfo = nil + + -- Weekly Quests + if altData.questInfo and altData.questInfo.weekly then + for visibility, quests in pairs(altData.questInfo.weekly) do + altData.questInfo.weekly[visibility] = {} + end + end + + if altData.completedWorldQuests then + altData.completedWorldQuests = {} + end -- Crests Earned - if altData.currencyInfo then - -- REFACTOR: move this to the currency module and reduce redundancy - for _, crestID in ipairs({2914, 2915, 2916, 2917}) do - if altData.currencyInfo[crestID] then - altData.currencyInfo[crestID].quantity = 0 - end - end - end + if altData.currencyInfo then + -- REFACTOR: move this to the currency module and reduce redundancy + for _, crestID in ipairs({ 2914, 2915, 2916, 2917 }) do + if altData.currencyInfo[crestID] then + altData.currencyInfo[crestID].quantity = 0 + end + end + end end function PermoksAccountManager:ResetDailyActivities(db, altData) - local currentTime = time() - if not altData then return end - - if altData.completedDailies then - altData.completedDailies = {} - end - - -- Callings - if altData.callingsUnlocked and altData.callingInfo and altData.callingInfo.numCallings and altData.callingInfo.numCallings < 3 then - altData.callingInfo.numCallings = altData.callingInfo.numCallings + 1 - altData.callingInfo[#altData.callingInfo + 1] = currentTime + self:GetNextDailyResetTime() + (86400 * 2) - end - - if altData.covenant and db.currentCallings[altData.covenant] then - for questID, currentCallingInfo in pairs(db.currentCallings[altData.covenant]) do - if currentCallingInfo.timeRemaining and currentCallingInfo.timeRemaining < time() then - db.currentCallings[altData.covenant][questID] = nil - end - end - end - - -- Daily Quests - if altData.questInfo and altData.questInfo.daily then - for visibility, quests in pairs(altData.questInfo.daily) do - altData.questInfo.daily[visibility] = {} - end - end - - if self.isCata and altData.instanceInfo then - altData.instanceInfo.dungeons = {} - end + local currentTime = time() + if not altData then + return + end + + if altData.completedDailies then + altData.completedDailies = {} + end + + -- Callings + if + altData.callingsUnlocked + and altData.callingInfo + and altData.callingInfo.numCallings + and altData.callingInfo.numCallings < 3 + then + altData.callingInfo.numCallings = altData.callingInfo.numCallings + 1 + altData.callingInfo[#altData.callingInfo + 1] = currentTime + self:GetNextDailyResetTime() + (86400 * 2) + end + + if altData.covenant and db.currentCallings[altData.covenant] then + for questID, currentCallingInfo in pairs(db.currentCallings[altData.covenant]) do + if currentCallingInfo.timeRemaining and currentCallingInfo.timeRemaining < time() then + db.currentCallings[altData.covenant][questID] = nil + end + end + end + + -- Daily Quests + if altData.questInfo and altData.questInfo.daily then + for visibility, quests in pairs(altData.questInfo.daily) do + altData.questInfo.daily[visibility] = {} + end + end + + if self.isCata and altData.instanceInfo then + altData.instanceInfo.dungeons = {} + end end function PermoksAccountManager:ResetBiweeklyActivities(altData) - if not altData then return end + if not altData then + return + end - if altData.questInfo and altData.questInfo.biweekly then - for visibility, quests in pairs(altData.questInfo.biweekly) do - altData.questInfo.biweekly[visibility] = {} - end - end + if altData.questInfo and altData.questInfo.biweekly then + for visibility, quests in pairs(altData.questInfo.biweekly) do + altData.questInfo.biweekly[visibility] = {} + end + end end function PermoksAccountManager:ResetThreeDayRaids(altData) - if not altData then return end - - if altData.instanceInfo and altData.instanceInfo.raids and altData.instanceInfo.raids['zul_gurub'] then - altData.instanceInfo.raids['zul_gurub'] = nil - end + if not altData then + return + end + + if altData.instanceInfo and altData.instanceInfo.raids and altData.instanceInfo.raids["zul_gurub"] then + altData.instanceInfo.raids["zul_gurub"] = nil + end end function PermoksAccountManager:RequestCharacterInfo() - if not self.isBC and self.isRetail then - RequestRatedInfo() - CovenantCalling_CheckCallings() - end + if not self.isBC and self.isRetail then + RequestRatedInfo() + CovenantCalling_CheckCallings() + end end -- TODO: Rework Completion Data function PermoksAccountManager:UpdateCompletionData() - local db = self.db.global - local accountData = db.accounts.main - for alt_guid, alt_data in pairs(accountData.data) do - for key, info in pairs(self.labelRows) do - if info.isComplete then - self:SaveCompletionData(key, info.isComplete(alt_data), alt_guid) - end - end - end + local db = self.db.global + local accountData = db.accounts.main + for alt_guid, alt_data in pairs(accountData.data) do + for key, info in pairs(self.labelRows) do + if info.isComplete then + self:SaveCompletionData(key, info.isComplete(alt_data), alt_guid) + end + end + end end function PermoksAccountManager:UpdateCompletionDataForCharacter(charInfo) - if not charInfo then - return - end + if not charInfo then + return + end - for key, info in pairs(self.labelRows) do - if info.isComplete then - self:SaveCompletionData(key, info.isComplete(charInfo), charInfo.guid) - end - end + for key, info in pairs(self.labelRows) do + if info.isComplete then + self:SaveCompletionData(key, info.isComplete(charInfo), charInfo.guid) + end + end end function PermoksAccountManager:SaveCompletionData(key, isComplete, guid) - if not guid then - return - end + if not guid then + return + end - if self.labelRows[key] then - local completionData = self.db.global.completionData[key] + if self.labelRows[key] then + local completionData = self.db.global.completionData[key] - if not completionData[guid] then - completionData[guid] = isComplete or nil - completionData.numCompleted = (completionData.numCompleted or 0) + (isComplete and 1 or 0) - end - end + if not completionData[guid] then + completionData[guid] = isComplete or nil + completionData.numCompleted = (completionData.numCompleted or 0) + (isComplete and 1 or 0) + end + end end function PermoksAccountManager:UpdateAccountButtons() - local db = self.db.global - - local managerFrame = self.managerFrame - local accountDropdown = managerFrame.accountDropdown or AceGUI:Create('Dropdown') - if db.options.characters.combine then - accountDropdown.frame:Hide() - return - end - - if not managerFrame.accountDropdown then - managerFrame.accountDropdown = accountDropdown - --accountDropdown:SetLabel('Account') - accountDropdown:SetWidth(120) - accountDropdown:SetPoint('BOTTOMLEFT', managerFrame.topDragBar, 'LEFT', 5, -12) - accountDropdown.frame:SetParent(managerFrame) - accountDropdown:SetCallback( - 'OnValueChanged', - function(_, _, accountKey) - PermoksAccountManager.db.global.currentPage = 1 - - if PermoksAccountManager.managerFrame.pageDropdown then - PermoksAccountManager.managerFrame.pageDropdown:SetValue(1) - end - PermoksAccountManager.account = PermoksAccountManager.db.global.accounts[accountKey] - PermoksAccountManager.pages = PermoksAccountManager.account.pages - PermoksAccountManager:HideAllCategories() - PermoksAccountManager:UpdateWarbandAnchors('general', managerFrame.labelColumn) - PermoksAccountManager:UpdateAltAnchors('general', managerFrame, managerFrame.labelColumn) - PermoksAccountManager:UpdateStrings(1, 'general') - PermoksAccountManager:UpdatePageButtons() - PermoksAccountManager:UpdateManagerFrameSize() - end - ) - end - managerFrame.accountButtons = managerFrame.accountButtons or {} - - local accountList = {} - local accountOrder = {} - for accountName, accountInfo in self.spairs( - db.accounts, - function(t, a, b) - return a == 'main' - end - ) do - accountList[accountName] = accountInfo.name - tinsert(accountOrder, accountName) - end - - accountDropdown:Fire('OnClose') - accountDropdown:SetList(accountList, accountOrder) - accountDropdown:SetValue('main') + local db = self.db.global + + local managerFrame = self.managerFrame + local accountDropdown = managerFrame.accountDropdown or AceGUI:Create("Dropdown") + if db.options.characters.combine then + accountDropdown.frame:Hide() + return + end + + if not managerFrame.accountDropdown then + managerFrame.accountDropdown = accountDropdown + --accountDropdown:SetLabel('Account') + accountDropdown:SetWidth(120) + accountDropdown:SetPoint("BOTTOMLEFT", managerFrame.topDragBar, "LEFT", 5, -12) + accountDropdown.frame:SetParent(managerFrame) + accountDropdown:SetCallback("OnValueChanged", function(_, _, accountKey) + PermoksAccountManager.db.global.currentPage = 1 + + if PermoksAccountManager.managerFrame.pageDropdown then + PermoksAccountManager.managerFrame.pageDropdown:SetValue(1) + end + PermoksAccountManager.account = PermoksAccountManager.db.global.accounts[accountKey] + PermoksAccountManager.pages = PermoksAccountManager.account.pages + PermoksAccountManager:HideAllCategories() + PermoksAccountManager:UpdateWarbandAnchors("general", managerFrame.labelColumn) + PermoksAccountManager:UpdateAltAnchors("general", managerFrame, managerFrame.labelColumn) + PermoksAccountManager:UpdateStrings(1, "general") + PermoksAccountManager:UpdatePageButtons() + PermoksAccountManager:UpdateManagerFrameSize() + end) + end + managerFrame.accountButtons = managerFrame.accountButtons or {} + + local accountList = {} + local accountOrder = {} + for accountName, accountInfo in + self.spairs(db.accounts, function(t, a, b) + return a == "main" + end) + do + accountList[accountName] = accountInfo.name + tinsert(accountOrder, accountName) + end + + accountDropdown:Fire("OnClose") + accountDropdown:SetList(accountList, accountOrder) + accountDropdown:SetValue("main") end function PermoksAccountManager:UpdatePageButtons() - local db = self.db.global - local pages = self.pages - local managerFrame = self.managerFrame - managerFrame.pageButtons = managerFrame.pageButtons or {} - local categoryFrame = self.categoryFrame - local currentPage = db.currentPage - - if #pages == 1 then - if managerFrame.pageButtons then - for _, button in pairs(managerFrame.pageButtons) do - button:Hide() - end - return - end - end - - if #pages < #managerFrame.pageButtons then - for page = #pages + 1, #managerFrame.pageButtons do - managerFrame.pageButtons[page]:Hide() - end - end - - local offset = managerFrame.accountDropdown and managerFrame.accountDropdown:IsShown() and 130 or 10 - for pageNumber = 1, #pages do - local pageButton = managerFrame.pageButtons[pageNumber] or CreateManagerButton(35, 20, pageNumber) - if not managerFrame.pageButtons[pageNumber] then - managerFrame.pageButtons[pageNumber] = pageButton - if pageNumber == currentPage then - pageButton.Text:SetTextColor(0, 1, 0, 1) - pageButton.selected:Show() - end - - pageButton:SetPoint('LEFT', managerFrame.topDragBar, 'LEFT', offset + ((pageNumber - 1) * 40), 0) - pageButton:SetID(pageNumber) - pageButton:SetScript( - 'OnClick', - function(self, button, down) - local currentPage = db.currentPage - if currentPage == pageNumber then - return - end - - managerFrame.pageButtons[currentPage].selected:Hide() - managerFrame.pageButtons[currentPage].Text:SetTextColor(1, 1, 1, 1) - self.selected:Show() - self.Text:SetTextColor(0, 1, 0, 1) - PermoksAccountManager.db.global.currentPage = pageNumber - PermoksAccountManager:UpdateWarbandAnchors('general', managerFrame.labelColumn) - PermoksAccountManager:UpdateAltAnchors('general', managerFrame, managerFrame.labelColumn) - PermoksAccountManager:UpdateStrings(pageNumber, 'general') - PermoksAccountManager:UpdateManagerFrameSize(true) - - if categoryFrame.openCategory then - local category = categoryFrame.openCategory - PermoksAccountManager:UpdateWarbandAnchors(category, categoryFrame.labelColumn.categories[category]) - PermoksAccountManager:UpdateAltAnchors(category, categoryFrame, categoryFrame.labelColumn.categories[category]) - PermoksAccountManager:UpdateStrings(nil, category, categoryFrame) - end - end - ) - pageButton:SetParent(managerFrame.topDragBar) - end - pageButton:Show() - end + local db = self.db.global + local pages = self.pages + local managerFrame = self.managerFrame + managerFrame.pageButtons = managerFrame.pageButtons or {} + local categoryFrame = self.categoryFrame + local currentPage = db.currentPage + + if #pages == 1 then + if managerFrame.pageButtons then + for _, button in pairs(managerFrame.pageButtons) do + button:Hide() + end + return + end + end + + if #pages < #managerFrame.pageButtons then + for page = #pages + 1, #managerFrame.pageButtons do + managerFrame.pageButtons[page]:Hide() + end + end + + local offset = managerFrame.accountDropdown and managerFrame.accountDropdown:IsShown() and 130 or 10 + for pageNumber = 1, #pages do + local pageButton = managerFrame.pageButtons[pageNumber] or CreateManagerButton(35, 20, pageNumber) + if not managerFrame.pageButtons[pageNumber] then + managerFrame.pageButtons[pageNumber] = pageButton + if pageNumber == currentPage then + pageButton.Text:SetTextColor(0, 1, 0, 1) + pageButton.selected:Show() + end + + pageButton:SetPoint("LEFT", managerFrame.topDragBar, "LEFT", offset + ((pageNumber - 1) * 40), 0) + pageButton:SetID(pageNumber) + pageButton:SetScript("OnClick", function(self, button, down) + local currentPage = db.currentPage + if currentPage == pageNumber then + return + end + + managerFrame.pageButtons[currentPage].selected:Hide() + managerFrame.pageButtons[currentPage].Text:SetTextColor(1, 1, 1, 1) + self.selected:Show() + self.Text:SetTextColor(0, 1, 0, 1) + PermoksAccountManager.db.global.currentPage = pageNumber + PermoksAccountManager:UpdateWarbandAnchors("general", managerFrame.labelColumn) + PermoksAccountManager:UpdateAltAnchors("general", managerFrame, managerFrame.labelColumn) + PermoksAccountManager:UpdateStrings(pageNumber, "general") + PermoksAccountManager:UpdateManagerFrameSize(true) + + if categoryFrame.openCategory then + local category = categoryFrame.openCategory + PermoksAccountManager:UpdateWarbandAnchors(category, categoryFrame.labelColumn.categories[category]) + PermoksAccountManager:UpdateAltAnchors( + category, + categoryFrame, + categoryFrame.labelColumn.categories[category] + ) + PermoksAccountManager:UpdateStrings(nil, category, categoryFrame) + end + end) + pageButton:SetParent(managerFrame.topDragBar) + end + pageButton:Show() + end end local function UpdateOrCreateMenu(category, anchorFrame, parent) - local db = PermoksAccountManager.db.global - local childs = db.currentCategories[category].childs - local options = db.currentCategories[category].childOrder - if not options then - return - end - - PermoksAccountManager.managerFrame.labels = PermoksAccountManager.managerFrame.labels or {} - PermoksAccountManager.managerFrame.labels[category] = PermoksAccountManager.managerFrame.labels[category] or {} - local labels = PermoksAccountManager.managerFrame.labels[category] - - local enabledRows = 0 - for j, row_iden in pairs(childs) do - local row = PermoksAccountManager.labelRows[row_iden] - if row then - if row.label then - local label_row = labels[row_iden] or CreateLabelButton('label', parent or anchorFrame, row, nil, 140) - if not labels[row_iden] then - labels[row_iden] = label_row - if not row.hideLabel then - label_row:SetText((type(row.label) == 'function' and row.label() or row.label) .. ':') - end - end - label_row:SetPoint('TOPLEFT', anchorFrame, 'TOPLEFT', 0, -enabledRows * 20) - label_row:Show() - - enabledRows = enabledRows + (row.offset or 1) - elseif row.hideLabel then - enabledRows = enabledRows + (row.offset or 1) - end - end - end - - for row_iden, label in pairs(labels) do - if not options[row_iden] then - label:Hide() - end - end - - return enabledRows + local db = PermoksAccountManager.db.global + local childs = db.currentCategories[category].childs + local options = db.currentCategories[category].childOrder + if not options then + return + end + + PermoksAccountManager.managerFrame.labels = PermoksAccountManager.managerFrame.labels or {} + PermoksAccountManager.managerFrame.labels[category] = PermoksAccountManager.managerFrame.labels[category] or {} + local labels = PermoksAccountManager.managerFrame.labels[category] + + local enabledRows = 0 + for j, row_iden in pairs(childs) do + local row = PermoksAccountManager.labelRows[row_iden] + if row then + if row.label then + local label_row = labels[row_iden] or CreateLabelButton("label", parent or anchorFrame, row, nil, 140) + if not labels[row_iden] then + labels[row_iden] = label_row + if not row.hideLabel then + label_row:SetText((type(row.label) == "function" and row.label() or row.label) .. ":") + end + end + label_row:SetPoint("TOPLEFT", anchorFrame, "TOPLEFT", 0, -enabledRows * 20) + label_row:Show() + + enabledRows = enabledRows + (row.offset or 1) + elseif row.hideLabel then + enabledRows = enabledRows + (row.offset or 1) + end + end + end + + for row_iden, label in pairs(labels) do + if not options[row_iden] then + label:Hide() + end + end + + return enabledRows end local function UpdateButtonTexture(button, index, row_identifier, alt_guid) - if button.normalTexture then - if PermoksAccountManager.db.global.completionData[row_identifier][alt_guid] then - button.normalTexture:SetColorTexture(0, 1, 0, 0.25) - elseif index % 2 == 0 then - button.normalTexture:SetColorTexture(0.65, 0.65, 0.65, 0.25) - else - button.normalTexture:SetColorTexture(0.3, 0.3, 0.3, 0.25) - end - end + if button.normalTexture then + if PermoksAccountManager.db.global.completionData[row_identifier][alt_guid] then + button.normalTexture:SetColorTexture(0, 1, 0, 0.25) + elseif index % 2 == 0 then + button.normalTexture:SetColorTexture(0.65, 0.65, 0.65, 0.25) + else + button.normalTexture:SetColorTexture(0.3, 0.3, 0.3, 0.25) + end + end end local function UpdateRowButton(button, buttonOptions, _) - button:SetWidth(buttonOptions.buttonWidth) + button:SetWidth(buttonOptions.buttonWidth) - local fontString = button:GetFontString() - if fontString then - fontString:SetJustifyH(buttonOptions.justifyH) - fontString:SetWidth(buttonOptions.buttonTextWidth) - end + local fontString = button:GetFontString() + if fontString then + fontString:SetJustifyH(buttonOptions.justifyH) + fontString:SetWidth(buttonOptions.buttonTextWidth) + end end function PermoksAccountManager:UpdateMenuButton(button) - local fontString = button.fontString or button:GetFontString() - if fontString and self.db.global.updateFont then - local _, size = fontString:GetFont() - fontString:SetFont(LSM:Fetch('font', self.db.global.options.font), size) - end + local fontString = button.fontString or button:GetFontString() + if fontString and self.db.global.updateFont then + local _, size = fontString:GetFont() + fontString:SetFont(LSM:Fetch("font", self.db.global.options.font), size) + end end function PermoksAccountManager:UpdateWarbandAnchors(category, customAnchorFrame) - if not self.isRetail or self.db.global.options.hideWarband then return end + if not self.isRetail or self.db.global.options.hideWarband then + return + end - local db = self.db.global - local managerFrame = self.managerFrame - local labelOffset = db.options.other.labelOffset - local widthPerAlt = db.options.buttons.widthPerAlt + local db = self.db.global + local managerFrame = self.managerFrame + local labelOffset = db.options.other.labelOffset + local widthPerAlt = db.options.buttons.widthPerAlt - managerFrame.warbandColumns[category] = managerFrame.warbandColumns[category] or CreateFrame('Button', nil, customAnchorFrame) - local anchorFrame = managerFrame.warbandColumns[category] - anchorFrame.rows = anchorFrame.rows or {} - anchorFrame:ClearAllPoints() - anchorFrame:SetPoint('TOPLEFT', customAnchorFrame, 'TOPRIGHT', labelOffset, 0) - anchorFrame:SetPoint('BOTTOMRIGHT', customAnchorFrame, 'BOTTOMLEFT', (widthPerAlt * 2) + labelOffset, 0) - anchorFrame:Show() + managerFrame.warbandColumns[category] = managerFrame.warbandColumns[category] + or CreateFrame("Button", nil, customAnchorFrame) + local anchorFrame = managerFrame.warbandColumns[category] + anchorFrame.rows = anchorFrame.rows or {} + anchorFrame:ClearAllPoints() + anchorFrame:SetPoint("TOPLEFT", customAnchorFrame, "TOPRIGHT", labelOffset, 0) + anchorFrame:SetPoint("BOTTOMRIGHT", customAnchorFrame, "BOTTOMLEFT", (widthPerAlt * 2) + labelOffset, 0) + anchorFrame:Show() end function PermoksAccountManager:UpdateAltAnchors(category, columnFrame, customAnchorFrame) - columnFrame.altColumns[category] = columnFrame.altColumns[category] or {} - - local db = self.db.global - local altDataForPage = self.pages[db.currentPage or 1] - if not altDataForPage then - return - end - - local widthPerAlt = db.options.buttons.widthPerAlt - local labelOffset = db.options.other.labelOffset - local altColumns = columnFrame.altColumns[category] - - if #altColumns > #altDataForPage then - for index = #altDataForPage + 1, #altColumns do - altColumns[index]:Hide() - end - end - - for index, alt_guid in ipairs(altDataForPage) do - local anchorFrame = altColumns[index] or CreateFrame('Button', nil, customAnchorFrame) - anchorFrame:ClearAllPoints() - anchorFrame:SetPoint('TOPLEFT', customAnchorFrame, 'TOPRIGHT', ((self.isRetail and not self.db.global.options.hideWarband) and widthPerAlt or 0) + (widthPerAlt * (index - 1)) + labelOffset, 0) - anchorFrame:SetPoint('BOTTOMRIGHT', customAnchorFrame, 'BOTTOMLEFT', ((self.isRetail and not self.db.global.options.hideWarband) and widthPerAlt or 0) + (widthPerAlt * index) + widthPerAlt + labelOffset, 0) - anchorFrame.GUID = alt_guid - anchorFrame:Show() - - altColumns[index] = anchorFrame - anchorFrame.rows = anchorFrame.rows or {} - end + columnFrame.altColumns[category] = columnFrame.altColumns[category] or {} + + local db = self.db.global + local altDataForPage = self.pages[db.currentPage or 1] + if not altDataForPage then + return + end + + local widthPerAlt = db.options.buttons.widthPerAlt + local labelOffset = db.options.other.labelOffset + local altColumns = columnFrame.altColumns[category] + + if #altColumns > #altDataForPage then + for index = #altDataForPage + 1, #altColumns do + altColumns[index]:Hide() + end + end + + for index, alt_guid in ipairs(altDataForPage) do + local anchorFrame = altColumns[index] or CreateFrame("Button", nil, customAnchorFrame) + anchorFrame:ClearAllPoints() + anchorFrame:SetPoint( + "TOPLEFT", + customAnchorFrame, + "TOPRIGHT", + ((self.isRetail and not self.db.global.options.hideWarband) and widthPerAlt or 0) + + (widthPerAlt * (index - 1)) + + labelOffset, + 0 + ) + anchorFrame:SetPoint( + "BOTTOMRIGHT", + customAnchorFrame, + "BOTTOMLEFT", + ((self.isRetail and not self.db.global.options.hideWarband) and widthPerAlt or 0) + + (widthPerAlt * index) + + widthPerAlt + + labelOffset, + 0 + ) + anchorFrame.GUID = alt_guid + anchorFrame:Show() + + altColumns[index] = anchorFrame + anchorFrame.rows = anchorFrame.rows or {} + end end function PermoksAccountManager:UpdateAllFonts() - UpdateFonts() + UpdateFonts() end local InternalLabelFunctions = { - quest = function(alt_data, column, key) - if not alt_data.questInfo then - return '-' - end - - -- TODO Somehow save it per character so we don't have to check it everytime we change the text. - local offset, required = 0 - if column.unlock then - local unlockInfo = column.unlock - local unlocked = alt_data[unlockInfo.charKey] and alt_data[unlockInfo.charKey][unlockInfo.key] - if unlocked then - required = unlockInfo.required - end - elseif column.professionOffset and alt_data.professions then - local skillLine1, skillLine2 = alt_data.professions.profession1, alt_data.professions.profession2 - - if skillLine1 then - skillLine1 = skillLine1.skillLineID - offset = offset + (column.professionOffset[skillLine1] or 0) - end - - if skillLine2 then - skillLine2 = skillLine2.skillLineID - offset = offset + (column.professionOffset[skillLine2] or 0) - end - end - - required = (required or column.required or 1) + offset - if type(column.required) == 'function' then - required = column.required(alt_data) - end - - local questInfo = alt_data.questInfo[column.questType] and alt_data.questInfo[column.questType][column.visibility] and alt_data.questInfo[column.questType][column.visibility][column.key or key] - if not questInfo then - return PermoksAccountManager:CreateQuestString(0, required) or '-' - end - - return PermoksAccountManager:CreateQuestString(questInfo, required, column.plus or (column.plus == nil and required == 1)) or '-' - end, - currency = function(alt_data, column, key) - if not alt_data.currencyInfo then - return '-' - end - - local currencyInfo = alt_data.currencyInfo[column.key or key] - if not currencyInfo then - return '-' - end - - return PermoksAccountManager:CreateCurrencyString(currencyInfo, column.abbCurrent, column.abbMax, column.hideMax, column.customIcon, column.hideIcon) or '-' - end, - faction = function(alt_data, column, key) - if not alt_data.factions then - return '-' - end - - local factionInfo = alt_data.factions[column.key or key] - if not factionInfo then - return '-' - end - - return PermoksAccountManager:CreateFactionString(factionInfo) or '-' - end, - item = function(alt_data, column, key) - if not alt_data.itemCounts then - return '-' - end - - local itemInfo = alt_data.itemCounts[column.key or key] - if not itemInfo then - return '-' - end - - return PermoksAccountManager:CreateItemString(itemInfo) - end, - sanctum = function(alt_data, column, key) - if not alt_data.sanctumInfo then - return '-' - end - - local sanctumInfo = alt_data.sanctumInfo - if not sanctumInfo then - return '-' - end - - return PermoksAccountManager:CreateSanctumTierString(sanctumInfo, column.key or key) - end, - raid = function(alt_data, column) - if not alt_data.instanceInfo or not alt_data.instanceInfo.raids then - return '-' - end - - local raidInfo = alt_data.instanceInfo.raids[column.key] - if not raidInfo then - return '-' - end - - return PermoksAccountManager:CreateRaidString(raidInfo) - end, - pvp = function(alt_data, column, key) - if not alt_data.pvp then - return '-' - end - - local pvpInfo = alt_data.pvp[column.key or key] - if not pvpInfo then - return '-' - end - - return PermoksAccountManager:CreateRatingString(pvpInfo) - end, - vault = function(alt_data, column, key) - if not alt_data.vaultInfo then - return '-' - end - - local vaultInfo = alt_data.vaultInfo[column.key or key] - if not vaultInfo then - return '-' - end - - return PermoksAccountManager:CreateVaultString(vaultInfo) - end + quest = function(alt_data, column, key) + if not alt_data.questInfo then + return "-" + end + + -- TODO Somehow save it per character so we don't have to check it everytime we change the text. + local offset, required = 0 + if column.unlock then + local unlockInfo = column.unlock + local unlocked = alt_data[unlockInfo.charKey] and alt_data[unlockInfo.charKey][unlockInfo.key] + if unlocked then + required = unlockInfo.required + end + elseif column.professionOffset and alt_data.professions then + local skillLine1, skillLine2 = alt_data.professions.profession1, alt_data.professions.profession2 + + if skillLine1 then + skillLine1 = skillLine1.skillLineID + offset = offset + (column.professionOffset[skillLine1] or 0) + end + + if skillLine2 then + skillLine2 = skillLine2.skillLineID + offset = offset + (column.professionOffset[skillLine2] or 0) + end + end + + required = (required or column.required or 1) + offset + if type(column.required) == "function" then + required = column.required(alt_data) + end + + local questInfo = alt_data.questInfo[column.questType] + and alt_data.questInfo[column.questType][column.visibility] + and alt_data.questInfo[column.questType][column.visibility][column.key or key] + if not questInfo then + return PermoksAccountManager:CreateQuestString(0, required) or "-" + end + + return PermoksAccountManager:CreateQuestString( + questInfo, + required, + column.plus or (column.plus == nil and required == 1) + ) or "-" + end, + currency = function(alt_data, column, key) + if not alt_data.currencyInfo then + return "-" + end + + local currencyInfo = alt_data.currencyInfo[column.key or key] + if not currencyInfo then + return "-" + end + + return PermoksAccountManager:CreateCurrencyString( + currencyInfo, + column.abbCurrent, + column.abbMax, + column.hideMax, + column.customIcon, + column.hideIcon + ) or "-" + end, + faction = function(alt_data, column, key) + if not alt_data.factions then + return "-" + end + + local factionInfo = alt_data.factions[column.key or key] + if not factionInfo then + return "-" + end + + return PermoksAccountManager:CreateFactionString(factionInfo) or "-" + end, + item = function(alt_data, column, key) + if not alt_data.itemCounts then + return "-" + end + + local itemInfo = alt_data.itemCounts[column.key or key] + if not itemInfo then + return "-" + end + + return PermoksAccountManager:CreateItemString(itemInfo) + end, + sanctum = function(alt_data, column, key) + if not alt_data.sanctumInfo then + return "-" + end + + local sanctumInfo = alt_data.sanctumInfo + if not sanctumInfo then + return "-" + end + + return PermoksAccountManager:CreateSanctumTierString(sanctumInfo, column.key or key) + end, + raid = function(alt_data, column) + if not alt_data.instanceInfo or not alt_data.instanceInfo.raids then + return "-" + end + + local raidInfo = alt_data.instanceInfo.raids[column.key] + if not raidInfo then + return "-" + end + + return PermoksAccountManager:CreateRaidString(raidInfo) + end, + pvp = function(alt_data, column, key) + if not alt_data.pvp then + return "-" + end + + local pvpInfo = alt_data.pvp[column.key or key] + if not pvpInfo then + return "-" + end + + return PermoksAccountManager:CreateRatingString(pvpInfo) + end, + vault = function(alt_data, column, key) + if not alt_data.vaultInfo then + return "-" + end + + local vaultInfo = alt_data.vaultInfo[column.key or key] + if not vaultInfo then + return "-" + end + + return PermoksAccountManager:CreateVaultString(vaultInfo) + end, } local InternalTooltipFunctions = { - raid = PermoksAccountManager.RaidTooltip_OnEnter, - vault = PermoksAccountManager.VaultTooltip_OnEnter, - item = PermoksAccountManager.ItemTooltip_OnEnter, - currency = PermoksAccountManager.CurrencyTooltip_OnEnter, - pvp = PermoksAccountManager.PVPTooltip_OnEnter + raid = PermoksAccountManager.RaidTooltip_OnEnter, + vault = PermoksAccountManager.VaultTooltip_OnEnter, + item = PermoksAccountManager.ItemTooltip_OnEnter, + currency = PermoksAccountManager.CurrencyTooltip_OnEnter, + pvp = PermoksAccountManager.PVPTooltip_OnEnter, } function PermoksAccountManager:GetInternalLabelFunction(labelRow) - return InternalLabelFunctions[labelRow.type] or (type(labelRow.data) == 'function' and labelRow.data) + return InternalLabelFunctions[labelRow.type] or (type(labelRow.data) == "function" and labelRow.data) end local function DeleteUnusedLabel(category, categoryInfo, labelIdentifier) - tDeleteItem(categoryInfo.childs, labelIdentifier) - categoryInfo.childOrder[labelIdentifier] = nil - PermoksAccountManager:UpdateAnchorsAndSize(category, nil, true, true) + tDeleteItem(categoryInfo.childs, labelIdentifier) + categoryInfo.childOrder[labelIdentifier] = nil + PermoksAccountManager:UpdateAnchorsAndSize(category, nil, true, true) end function PermoksAccountManager:DeleteUnusedLabels(labelIdentifier) - for category, categoryInfo in pairs(self.db.global.options.defaultCategories) do - if categoryInfo.childOrder[labelIdentifier] then - DeleteUnusedLabel(category, categoryInfo, labelIdentifier) - end - end + for category, categoryInfo in pairs(self.db.global.options.defaultCategories) do + if categoryInfo.childOrder[labelIdentifier] then + DeleteUnusedLabel(category, categoryInfo, labelIdentifier) + end + end - for category, categoryInfo in pairs(self.db.global.options.customCategories) do - if categoryInfo.childOrder[labelIdentifier] then - DeleteUnusedLabel(category, categoryInfo, labelIdentifier) - end - end + for category, categoryInfo in pairs(self.db.global.options.customCategories) do + if categoryInfo.childOrder[labelIdentifier] then + DeleteUnusedLabel(category, categoryInfo, labelIdentifier) + end + end end function PermoksAccountManager:UpdateRows(childs, rows, anchorFrame, enabledChilds, data, options, isWarband) - local enabledRows, yOffset = 0, 0 - for _, row_identifier in pairs(childs) do - local labelRow = self.labelRows[row_identifier] - if labelRow and enabledChilds[row_identifier] then - - local row = (not self.isLayoutDirty and rows[row_identifier]) or CreateLabelButton('row', anchorFrame, labelRow, enabledRows) - if (not isWarband and labelRow.warband ~= 'unique') or (isWarband and labelRow.warband) then - if self.isLayoutDirty or not rows[row_identifier] then - - local module = self:GetModuleForRow(row_identifier) - local moduleLabelFunction = module and module.labelFunctions[labelRow.type] - if moduleLabelFunction then - row.module = module - row.labelFunction = moduleLabelFunction.callback - else - row.labelFunction = self:GetInternalLabelFunction(labelRow) - end - - if labelRow.tooltip then - local tooltipFunction - if labelRow.customTooltip then - tooltipFunction = labelRow.customTooltip - elseif InternalTooltipFunctions[labelRow.type] then - tooltipFunction = InternalTooltipFunctions[labelRow.type] - elseif type(labelRow.tooltip) == 'function' then - tooltipFunction = labelRow.tooltip - end - row:SetScript('OnLeave', Tooltip_OnLeave) - row.tooltipFunction = tooltipFunction - end - end - - if row.tooltipFunction then - row:SetScript( - 'OnEnter', - function(self) - self.tooltipFunction(self, data, labelRow, row_identifier) - end - ) - end - - if labelRow.OnClick then - row:SetScript("OnClick", function(self, button) - labelRow.OnClick(button, data) - end) - end - - UpdateRowButton(row, options, row_identifier) - - if row.module then - local args = row.module:GenerateLabelArgs(data, labelRow.type, labelRow.update) - local text - if labelRow.passKey then - text = row.labelFunction(labelRow.key or row_identifier, unpack(args)) - elseif labelRow.passRow then - text = row.labelFunction(labelRow, unpack(args)) - else - text = row.labelFunction(unpack(args)) - end - row:SetText(text) - else - row:SetText(row.labelFunction(data, labelRow, row_identifier)) - end - - if labelRow.color and row.fontString then - local color = labelRow.color(data) - if color then - row.fontString:SetTextColor(color:GetRGBA()) - end - end - end - - if rows[row_identifier] then - rows[row_identifier]:Hide() - end - rows[row_identifier] = row - - UpdateButtonTexture(row, enabledRows, row_identifier, data.guid) - - - row:SetPoint('TOPLEFT', anchorFrame, 'TOPLEFT', 0, -yOffset * 20) - row:Show() - - enabledRows = enabledRows + 1 - yOffset = yOffset + (labelRow.offset or 1) - end - end - - for row_identifier, row in pairs(rows) do - if not enabledChilds[row_identifier] then - row:Hide() - end - end + local enabledRows, yOffset = 0, 0 + for _, row_identifier in pairs(childs) do + local labelRow = self.labelRows[row_identifier] + if labelRow and enabledChilds[row_identifier] then + local row = (not self.isLayoutDirty and rows[row_identifier]) + or CreateLabelButton("row", anchorFrame, labelRow, enabledRows) + if (not isWarband and labelRow.warband ~= "unique") or (isWarband and labelRow.warband) then + if self.isLayoutDirty or not rows[row_identifier] then + local module = self:GetModuleForRow(row_identifier) + local moduleLabelFunction = module and module.labelFunctions[labelRow.type] + if moduleLabelFunction then + row.module = module + row.labelFunction = moduleLabelFunction.callback + else + row.labelFunction = self:GetInternalLabelFunction(labelRow) + end + + if labelRow.tooltip then + local tooltipFunction + if labelRow.customTooltip then + tooltipFunction = labelRow.customTooltip + elseif InternalTooltipFunctions[labelRow.type] then + tooltipFunction = InternalTooltipFunctions[labelRow.type] + elseif type(labelRow.tooltip) == "function" then + tooltipFunction = labelRow.tooltip + end + row:SetScript("OnLeave", Tooltip_OnLeave) + row.tooltipFunction = tooltipFunction + end + end + + if row.tooltipFunction then + row:SetScript("OnEnter", function(self) + self.tooltipFunction(self, data, labelRow, row_identifier) + end) + end + + if labelRow.OnClick then + row:SetScript("OnClick", function(self, button) + labelRow.OnClick(button, data) + end) + end + + UpdateRowButton(row, options, row_identifier) + + if row.module then + local args = row.module:GenerateLabelArgs(data, labelRow.type, labelRow.update) + local text + if labelRow.passKey then + text = row.labelFunction(labelRow.key or row_identifier, unpack(args)) + elseif labelRow.passRow then + text = row.labelFunction(labelRow, unpack(args)) + else + text = row.labelFunction(unpack(args)) + end + row:SetText(text) + else + row:SetText(row.labelFunction(data, labelRow, row_identifier)) + end + + if labelRow.color and row.fontString then + local color = labelRow.color(data) + if color then + row.fontString:SetTextColor(color:GetRGBA()) + end + end + end + + if rows[row_identifier] then + rows[row_identifier]:Hide() + end + rows[row_identifier] = row + + UpdateButtonTexture(row, enabledRows, row_identifier, data.guid) + + row:SetPoint("TOPLEFT", anchorFrame, "TOPLEFT", 0, -yOffset * 20) + row:Show() + + enabledRows = enabledRows + 1 + yOffset = yOffset + (labelRow.offset or 1) + end + end + + for row_identifier, row in pairs(rows) do + if not enabledChilds[row_identifier] then + row:Hide() + end + end end function PermoksAccountManager:UpdateColumnForWarband(category) - if not self.isRetail or self.db.global.options.hideWarband then return end - - if not self.account.warbandData then - return - end - - local account = self.account - local db = self.db.global - local anchorFrame = self.managerFrame.warbandColumns[category] - self:UpdateRows(db.currentCategories[category].childs, anchorFrame.rows, anchorFrame, db.currentCategories[category].childOrder, account.warbandData, db.options.buttons, true) + if not self.isRetail or self.db.global.options.hideWarband then + return + end + + if not self.account.warbandData then + return + end + + local account = self.account + local db = self.db.global + local anchorFrame = self.managerFrame.warbandColumns[category] + self:UpdateRows( + db.currentCategories[category].childs, + anchorFrame.rows, + anchorFrame, + db.currentCategories[category].childOrder, + account.warbandData, + db.options.buttons, + true + ) end function PermoksAccountManager:UpdateColumnForAlt(altData, anchorFrame, category) - -- Fix synced Account using old format - if type(altData) == 'string' then - altData = self.account.data[altData] or nil - end - - if not altData then - return - end - - local db = self.db.global - self:UpdateRows(db.currentCategories[category].childs, anchorFrame.rows, anchorFrame, db.currentCategories[category].childOrder, altData, db.options.buttons) + -- Fix synced Account using old format + if type(altData) == "string" then + altData = self.account.data[altData] or nil + end + + if not altData then + return + end + + local db = self.db.global + self:UpdateRows( + db.currentCategories[category].childs, + anchorFrame.rows, + anchorFrame, + db.currentCategories[category].childOrder, + altData, + db.options.buttons + ) end function PermoksAccountManager:UpdateStrings(page, category, columnFrame) - local db = self.db.global - local page = self.pages[page or self.db.global.currentPage] - if not page then - return - end + local db = self.db.global + local page = self.pages[page or self.db.global.currentPage] + if not page then + return + end - local enabledAlts = 1 - columnFrame = columnFrame or self.managerFrame + local enabledAlts = 1 + columnFrame = columnFrame or self.managerFrame - self:UpdateColumnForWarband(category) - for _, altData in pairs(page) do - if not db.blacklist[altData.guid] then - local anchorFrame = columnFrame.altColumns[category][enabledAlts] + self:UpdateColumnForWarband(category) + for _, altData in pairs(page) do + if not db.blacklist[altData.guid] then + local anchorFrame = columnFrame.altColumns[category][enabledAlts] - self:UpdateColumnForAlt(altData, anchorFrame, category) - enabledAlts = enabledAlts + 1 - end - end + self:UpdateColumnForAlt(altData, anchorFrame, category) + enabledAlts = enabledAlts + 1 + end + end end function PermoksAccountManager:UpdateCategory(button, defaultState, name, category) - local categoryLabelColumn = self.categoryFrame.labelColumn.categories[category] or CreateFrame('Frame', nil, self.categoryFrame.labelColumn) - self.categoryFrame.labelColumn.categories[category] = categoryLabelColumn - - categoryLabelColumn:SetPoint('TOPLEFT', self.categoryFrame.labelColumn, 'TOPLEFT', 0, 0) - categoryLabelColumn.state = defaultState or categoryLabelColumn.state or 'closed' - - if categoryLabelColumn.state == 'closed' then - local numRows = UpdateOrCreateMenu(category, categoryLabelColumn) - self:UpdateWarbandAnchors(category, categoryLabelColumn) - self:UpdateAltAnchors(category, self.categoryFrame, categoryLabelColumn) - self:UpdateStrings(nil, category, self.categoryFrame) - categoryLabelColumn:SetSize(140, (numRows * 20)) - categoryLabelColumn:Show() - - if numRows > 0 then - categoryLabelColumn.state = 'open' - self.categoryFrame.openCategory = category - self.categoryFrame.openCategoryRows = numRows - button.selected:Show() - button.Text:SetTextColor(0, 1, 0, 1) - self:UpdateCategoryFrameSize(numRows) - self.categoryFrame:Show() - end - else - self:HideCategory(button, category) - end + local categoryLabelColumn = self.categoryFrame.labelColumn.categories[category] + or CreateFrame("Frame", nil, self.categoryFrame.labelColumn) + self.categoryFrame.labelColumn.categories[category] = categoryLabelColumn + + categoryLabelColumn:SetPoint("TOPLEFT", self.categoryFrame.labelColumn, "TOPLEFT", 0, 0) + categoryLabelColumn.state = defaultState or categoryLabelColumn.state or "closed" + + if categoryLabelColumn.state == "closed" then + local numRows = UpdateOrCreateMenu(category, categoryLabelColumn) + self:UpdateWarbandAnchors(category, categoryLabelColumn) + self:UpdateAltAnchors(category, self.categoryFrame, categoryLabelColumn) + self:UpdateStrings(nil, category, self.categoryFrame) + categoryLabelColumn:SetSize(140, (numRows * 20)) + categoryLabelColumn:Show() + + if numRows > 0 then + categoryLabelColumn.state = "open" + self.categoryFrame.openCategory = category + self.categoryFrame.openCategoryRows = numRows + button.selected:Show() + button.Text:SetTextColor(0, 1, 0, 1) + self:UpdateCategoryFrameSize(numRows) + self.categoryFrame:Show() + end + else + self:HideCategory(button, category) + end end function PermoksAccountManager:HideCategory(button, category) - if self.categoryFrame.labelColumn.categories[category] then - self.categoryFrame.labelColumn.categories[category].state = 'closed' - self.categoryFrame.labelColumn.categories[category]:Hide() - end + if self.categoryFrame.labelColumn.categories[category] then + self.categoryFrame.labelColumn.categories[category].state = "closed" + self.categoryFrame.labelColumn.categories[category]:Hide() + end - if category == self.categoryFrame.openCategory then - self.categoryFrame.openCategory = nil - self.categoryFrame.openCategoryRows = nil - end + if category == self.categoryFrame.openCategory then + self.categoryFrame.openCategory = nil + self.categoryFrame.openCategoryRows = nil + end - button.selected:Hide() - button.Text:SetTextColor(1, 1, 1, 1) + button.selected:Hide() + button.Text:SetTextColor(1, 1, 1, 1) end function PermoksAccountManager:HideAllCategories(currentCategory) - local categoryButtons = self.managerFrame.categoryButtons - if not categoryButtons then - return - end + local categoryButtons = self.managerFrame.categoryButtons + if not categoryButtons then + return + end - for category, button in pairs(categoryButtons) do - if category ~= currentCategory then - self:HideCategory(button, category) - end - end + for category, button in pairs(categoryButtons) do + if category ~= currentCategory then + self:HideCategory(button, category) + end + end - self.categoryFrame:Hide() + self.categoryFrame:Hide() end function PermoksAccountManager:UpdateOrCreateCategoryButtons() - local db = PermoksAccountManager.db.global - local buttonrows = 0 - local categories = db.currentCategories - local nameTbl - if not db.custom then - nameTbl = self:getDefaultCategories() - end - for category, row in PermoksAccountManager.spairs( - categories, - function(t, a, b) - if t[a] and t[b] then - return (t[a].order or 1) < (t[b].order or 1) - end - end - ) do - if PermoksAccountManager.managerFrame.categoryButtons then - if category ~= 'general' and db.currentCategories[category].enabled then - local categoryButton = PermoksAccountManager.managerFrame.categoryButtons[category] or CreateManagerButton(100, 25, nameTbl and nameTbl[category] and nameTbl[category].name or row.name) - categoryButton:Show() - categoryButton:SetPoint('TOPRIGHT', PermoksAccountManager.managerFrame.topDragBar, 'TOPLEFT', 0, -(buttonrows * 26) - 5) - if not PermoksAccountManager.managerFrame.categoryButtons[category] then - categoryButton.name = row.name - end - - if row.disable_drawLayer then - categoryButton:DisableDrawLayer('BACKGROUND') - end - - categoryButton:SetScript( - 'OnClick', - function() - PermoksAccountManager:HideAllCategories(category) - PermoksAccountManager:UpdateCategory(categoryButton, nil, row.name, category) - end - ) - - PermoksAccountManager.managerFrame.categoryButtons[category] = categoryButton - buttonrows = buttonrows + 1 - else - if PermoksAccountManager.managerFrame.categoryButtons[category] and not PermoksAccountManager.db.global.currentCategories[category].enabled then - PermoksAccountManager.managerFrame.categoryButtons[category]:Hide() - end - end - end - end - - PermoksAccountManager:UpdateCategoryButtonsBackground(buttonrows) + local db = PermoksAccountManager.db.global + local buttonrows = 0 + local categories = db.currentCategories + local nameTbl + if not db.custom then + nameTbl = self:getDefaultCategories() + end + for category, row in + PermoksAccountManager.spairs(categories, function(t, a, b) + if t[a] and t[b] then + return (t[a].order or 1) < (t[b].order or 1) + end + end) + do + if PermoksAccountManager.managerFrame.categoryButtons then + if category ~= "general" and db.currentCategories[category].enabled then + local categoryButton = PermoksAccountManager.managerFrame.categoryButtons[category] + or CreateManagerButton( + 100, + 25, + nameTbl and nameTbl[category] and nameTbl[category].name or row.name + ) + categoryButton:Show() + categoryButton:SetPoint( + "TOPRIGHT", + PermoksAccountManager.managerFrame.topDragBar, + "TOPLEFT", + 0, + -(buttonrows * 26) - 5 + ) + if not PermoksAccountManager.managerFrame.categoryButtons[category] then + categoryButton.name = row.name + end + + if row.disable_drawLayer then + categoryButton:DisableDrawLayer("BACKGROUND") + end + + categoryButton:SetScript("OnClick", function() + PermoksAccountManager:HideAllCategories(category) + PermoksAccountManager:UpdateCategory(categoryButton, nil, row.name, category) + end) + + PermoksAccountManager.managerFrame.categoryButtons[category] = categoryButton + buttonrows = buttonrows + 1 + else + if + PermoksAccountManager.managerFrame.categoryButtons[category] + and not PermoksAccountManager.db.global.currentCategories[category].enabled + then + PermoksAccountManager.managerFrame.categoryButtons[category]:Hide() + end + end + end + end + + PermoksAccountManager:UpdateCategoryButtonsBackground(buttonrows) end function PermoksAccountManager:UpdateCategoryButtonsBackground(buttons) - if buttons > 0 then - local height = buttons * 26 - local backgroundFrame = self.managerFrame.categoriesBackgroundFrame or CreateFrame('Frame', nil, self.managerFrame, 'BackdropTemplate') - if not self.managerFrame.categoriesBackgroundFrame then - backgroundFrame:SetPoint('TOPRIGHT', self.managerFrame.topDragBar, 'TOPLEFT', PermoksAccountManager.db.global.options.border.edgeSize, 0) - backgroundFrame:SetFrameLevel(0) - self:UpdateBorder(backgroundFrame, nil, true) - self.managerFrame.categoriesBackgroundFrame = backgroundFrame - end - backgroundFrame:SetSize(110, height + 8) - backgroundFrame:Show() - elseif self.managerFrame.categoriesBackgroundFrame then - self.managerFrame.categoriesBackgroundFrame:Hide() - end + if buttons > 0 then + local height = buttons * 26 + local backgroundFrame = self.managerFrame.categoriesBackgroundFrame + or CreateFrame("Frame", nil, self.managerFrame, "BackdropTemplate") + if not self.managerFrame.categoriesBackgroundFrame then + backgroundFrame:SetPoint( + "TOPRIGHT", + self.managerFrame.topDragBar, + "TOPLEFT", + PermoksAccountManager.db.global.options.border.edgeSize, + 0 + ) + backgroundFrame:SetFrameLevel(0) + self:UpdateBorder(backgroundFrame, nil, true) + self.managerFrame.categoriesBackgroundFrame = backgroundFrame + end + backgroundFrame:SetSize(110, height + 8) + backgroundFrame:Show() + elseif self.managerFrame.categoriesBackgroundFrame then + self.managerFrame.categoriesBackgroundFrame:Hide() + end end function PermoksAccountManager:UpdateManagerFrame() - PermoksAccountManager:SortPages() - PermoksAccountManager:UpdatePageButtons() - PermoksAccountManager:UpdateAnchorsAndSize('general') + PermoksAccountManager:SortPages() + PermoksAccountManager:UpdatePageButtons() + PermoksAccountManager:UpdateAnchorsAndSize("general") end function PermoksAccountManager:UpdateManagerFrameSize(widthOnly, heightOnly) - if not self.managerFrame or not self.managerFrame.height then return end - - local alts = #self.pages[self.db.global.currentPage] - local widthPerAlt = self.db.global.options.buttons.widthPerAlt - local width = ((self.isRetail and not self.db.global.options.hideWarband) and widthPerAlt or 0) + ((alts * widthPerAlt) + 140) - min((widthPerAlt - self.db.global.options.buttons.buttonWidth), 20) + 4 - local height = self.managerFrame.height - - if widthOnly then - self.managerFrame:SetWidth(max(width + self.db.global.options.other.labelOffset, 240)) - elseif heightOnly then - self.managerFrame:SetHeight(height) - else - self.managerFrame:SetSize(max(width + self.db.global.options.other.labelOffset, 240), height) - end - self.managerFrame.lowest_point = -self.managerFrame.height + if not self.managerFrame or not self.managerFrame.height then + return + end + + local alts = #self.pages[self.db.global.currentPage] + local widthPerAlt = self.db.global.options.buttons.widthPerAlt + local width = ((self.isRetail and not self.db.global.options.hideWarband) and widthPerAlt or 0) + + ((alts * widthPerAlt) + 140) + - min((widthPerAlt - self.db.global.options.buttons.buttonWidth), 20) + + 4 + local height = self.managerFrame.height + + if widthOnly then + self.managerFrame:SetWidth(max(width + self.db.global.options.other.labelOffset, 240)) + elseif heightOnly then + self.managerFrame:SetHeight(height) + else + self.managerFrame:SetSize(max(width + self.db.global.options.other.labelOffset, 240), height) + end + self.managerFrame.lowest_point = -self.managerFrame.height end function PermoksAccountManager:UpdateCategoryFrameSize(numRows) - local height = numRows * 20 - self.categoryFrame:SetHeight(height + 10) + local height = numRows * 20 + self.categoryFrame:SetHeight(height + 10) end function PermoksAccountManager:UpdateMenu(widthOnly, heightOnly) - self.managerFrame.categoryButtons = self.managerFrame.categoryButtons or {} + self.managerFrame.categoryButtons = self.managerFrame.categoryButtons or {} - if self.isBC then - self.managerFrame.guildAttunementButton:SetShown(self.db.global.options.showGuildAttunementButton) - end + if self.isBC then + self.managerFrame.guildAttunementButton:SetShown(self.db.global.options.showGuildAttunementButton) + end - local numRows = UpdateOrCreateMenu('general', self.managerFrame.labelColumn) - self:UpdateOrCreateCategoryButtons() + local numRows = UpdateOrCreateMenu("general", self.managerFrame.labelColumn) + self:UpdateOrCreateCategoryButtons() - self.managerFrame.height = max(numRows * 20 + 10, max(0, (self.numCategories - 2) * 30)) - self.managerFrame.numRows = numRows - self:UpdateManagerFrameSize(widthOnly, heightOnly) + self.managerFrame.height = max(numRows * 20 + 10, max(0, (self.numCategories - 2) * 30)) + self.managerFrame.numRows = numRows + self:UpdateManagerFrameSize(widthOnly, heightOnly) end function PermoksAccountManager:UpdateAnchorsAndSize(category, widthOnly, heightOnly, updateMenu) - if category == 'general' then - if updateMenu then - local numRows = UpdateOrCreateMenu('general', self.managerFrame.labelColumn) - self.managerFrame.height = max(numRows * 20 + 10, max(0, (self.numCategories - 2) * 30)) - end - - self:UpdateWarbandAnchors('general', self.managerFrame.labelColumn) - self:UpdateAltAnchors('general', self.managerFrame, self.managerFrame.labelColumn) - self:UpdateStrings(self.db.global.currentPage, 'general') - end - - if self.categoryFrame.openCategory then - local openCategory = self.categoryFrame.openCategory - self:UpdateCategory(PermoksAccountManager.managerFrame.categoryButtons[openCategory], 'closed', nil, openCategory) - end - - self:UpdateManagerFrameSize(widthOnly, heightOnly) + if category == "general" then + if updateMenu then + local numRows = UpdateOrCreateMenu("general", self.managerFrame.labelColumn) + self.managerFrame.height = max(numRows * 20 + 10, max(0, (self.numCategories - 2) * 30)) + end + + self:UpdateWarbandAnchors("general", self.managerFrame.labelColumn) + self:UpdateAltAnchors("general", self.managerFrame, self.managerFrame.labelColumn) + self:UpdateStrings(self.db.global.currentPage, "general") + end + + if self.categoryFrame.openCategory then + local openCategory = self.categoryFrame.openCategory + self:UpdateCategory( + PermoksAccountManager.managerFrame.categoryButtons[openCategory], + "closed", + nil, + openCategory + ) + end + + self:UpdateManagerFrameSize(widthOnly, heightOnly) end function PermoksAccountManager:CreateFractionString(numCompleted, numDesired, abbreviateCompleted, abbreviateDesired) - if not numCompleted or not numDesired then - return - end - local color = (numCompleted >= numDesired and '00ff00') or (numCompleted > 0 and 'ff9900') or 'ffffff' + if not numCompleted or not numDesired then + return + end + local color = (numCompleted >= numDesired and "00ff00") or (numCompleted > 0 and "ff9900") or "ffffff" - numCompleted = abbreviateCompleted and AbbreviateNumbers(numCompleted) or AbbreviateLargeNumbers(numCompleted) - local numDesiredAbbreviated = abbreviateDesired and AbbreviateNumbers(numDesired) or numDesired + numCompleted = abbreviateCompleted and AbbreviateNumbers(numCompleted) or AbbreviateLargeNumbers(numCompleted) + local numDesiredAbbreviated = abbreviateDesired and AbbreviateNumbers(numDesired) or numDesired - if numDesired > 0 then - return string.format('|cff%s%s|r/%s', color, numCompleted, numDesiredAbbreviated) - else - return string.format('|cff%s%s|r', color, numCompleted) - end + if numDesired > 0 then + return string.format("|cff%s%s|r/%s", color, numCompleted, numDesiredAbbreviated) + else + return string.format("|cff%s%s|r", color, numCompleted) + end end function PermoksAccountManager:FormatTimeString(seconds, string) - local color = 'ff0000' - if seconds > 86400 then - color = '00ff00' - end + local color = "ff0000" + if seconds > 86400 then + color = "00ff00" + end - return string.format('|cff%s%s|r', color, string) + return string.format("|cff%s%s|r", color, string) end function PermoksAccountManager:HideInterface() - if self.db.global.options.hideCategory then - self.categoryFrame:Hide() - self:HideAllCategories() - end + if self.db.global.options.hideCategory then + self.categoryFrame:Hide() + self:HideAllCategories() + end - if self.db.global.options.savePosition then - local frame = self.managerFrame - local position = self.db.global.position - position.point, position.relativeTo, position.relativePoint, position.xOffset, position.yOffset = frame:GetPointByName('TOPLEFT') - end + if self.db.global.options.savePosition then + local frame = self.managerFrame + local position = self.db.global.position + position.point, position.relativeTo, position.relativePoint, position.xOffset, position.yOffset = + frame:GetPointByName("TOPLEFT") + end - self.managerFrame:Hide() + self.managerFrame:Hide() end function PermoksAccountManager:ShowInterface() - self:UpdateAccountButtons() - self.myGUID = self.myGUID or UnitGUID('player') - self:RequestCharacterInfo() + self:UpdateAccountButtons() + self.myGUID = self.myGUID or UnitGUID("player") + self:RequestCharacterInfo() - if not self.loaded then - self:CreateMenuButtons() - self:UpdateWarbandAnchors('general', self.managerFrame.labelColumn) - self:UpdateAltAnchors('general', self.managerFrame, self.managerFrame.labelColumn) - self:UpdatePageButtons() + if not self.loaded then + self:CreateMenuButtons() + self:UpdateWarbandAnchors("general", self.managerFrame.labelColumn) + self:UpdateAltAnchors("general", self.managerFrame, self.managerFrame.labelColumn) + self:UpdatePageButtons() - self.loaded = true - end + self.loaded = true + end - self.managerFrame:Show() - self:UpdateCompletionDataForCharacter(self.charInfo) - self:UpdateMenu() - self:UpdateStrings(self.db.global.currentPage, 'general') - if self.categoryFrame.openCategory then - local openCategory = self.categoryFrame.openCategory - self:UpdateCategory(self.managerFrame.categoryButtons[openCategory], 'closed', nil, openCategory) - end + self.managerFrame:Show() + self:UpdateCompletionDataForCharacter(self.charInfo) + self:UpdateMenu() + self:UpdateStrings(self.db.global.currentPage, "general") + if self.categoryFrame.openCategory then + local openCategory = self.categoryFrame.openCategory + self:UpdateCategory(self.managerFrame.categoryButtons[openCategory], "closed", nil, openCategory) + end end function PermoksAccountManager:GetNextWeeklyResetTime() - local weeklyReset = C_DateAndTime.GetSecondsUntilWeeklyReset() - return weeklyReset + local weeklyReset = C_DateAndTime.GetSecondsUntilWeeklyReset() + return weeklyReset end function PermoksAccountManager:GetNextDailyResetTime() - local dailyReset = C_DateAndTime.GetSecondsUntilDailyReset() - return dailyReset + local dailyReset = C_DateAndTime.GetSecondsUntilDailyReset() + return dailyReset end function PermoksAccountManager:GetNextBiWeeklyResetTime() - local weeklyReset = C_DateAndTime.GetSecondsUntilWeeklyReset() - return (weeklyReset >= 302400 and weeklyReset - 302400 or weeklyReset) + local weeklyReset = C_DateAndTime.GetSecondsUntilWeeklyReset() + return (weeklyReset >= 302400 and weeklyReset - 302400 or weeklyReset) end function PermoksAccountManager:GetNextThreeDayLockoutResetTime() - local resetInfo = self.oldRaidResetInfo and self.oldRaidResetInfo[GetCurrentRegion()] - if not resetInfo then return 0 end + local resetInfo = self.oldRaidResetInfo and self.oldRaidResetInfo[GetCurrentRegion()] + if not resetInfo then + return 0 + end - local selectedStart = resetInfo.zg; - local resetInterVals = { zg = 3*24*60*60, } - local interval = resetInterVals.zg + local selectedStart = resetInfo.zg + local resetInterVals = { zg = 3 * 24 * 60 * 60 } + local interval = resetInterVals.zg - local reset = time(selectedStart) - local nextReset = interval - ((GetServerTime() - reset) % interval) - - return nextReset + local reset = time(selectedStart) + local nextReset = interval - ((GetServerTime() - reset) % interval) + + return nextReset end local function GetComparisonOperator(startLevel, endLevel, operator) - startLevel = tonumber(startLevel) - endLevel = tonumber(endLevel) - if startLevel and endLevel and operator == "-" then - return function(level) - return level >= startLevel and level <= endLevel - end - elseif startLevel and operator == "+" then - return function(level) - return level >= startLevel - end - elseif startLevel then - return function(level) - return level == startLevel - end - end + startLevel = tonumber(startLevel) + endLevel = tonumber(endLevel) + if startLevel and endLevel and operator == "-" then + return function(level) + return level >= startLevel and level <= endLevel + end + elseif startLevel and operator == "+" then + return function(level) + return level >= startLevel + end + elseif startLevel then + return function(level) + return level == startLevel + end + end end function PermoksAccountManager:PostKeysIntoChat(channel, msg, ending) - local chatChannel - if channel and (channel == 'raid' or channel == 'guild' or channel == 'party') then - chatChannel = channel:upper() - else - chatChannel = UnitInParty('player') and 'PARTY' or 'GUILD' - end - - local message - local keys = {} - local arg, startLevel, operator, endLevel - if msg then - arg = msg:sub(ending + 2) - startLevel, operator, endLevel = arg:match("(%d+)([+-]*)(%d*)") - end - - if startLevel then - local comparator = GetComparisonOperator(startLevel, endLevel, operator) - if not comparator then return end - - for _, alt_data in pairs(self.db.global.accounts.main.data) do - local keyInfo = alt_data.keyInfo - if keyInfo then - local keyString = {} - if keyInfo.keyLevel and keyInfo.keyLevel > 0 and comparator(keyInfo.keyLevel) then - tinsert(keyString, keyInfo.keyDungeon .. '+' .. keyInfo.keyLevel) - end - - if #keyString > 0 then - tinsert(keys, string.format('[%s: %s]', alt_data.name, table.concat(keyString, ', '))) - end - end - end - end - - local dungeon = not startLevel and (msg and arg:upper() or '') - if dungeon then - for _, alt_data in pairs(self.db.global.accounts.main.data) do - local keyInfo = alt_data.keyInfo - if keyInfo then - local keyString = {} - if keyInfo.keyLevel and keyInfo.keyLevel > 0 and (dungeon == '' or keyInfo.keyDungeon == dungeon) then - tinsert(keyString, keyInfo.keyDungeon .. '+' .. keyInfo.keyLevel) - end - - if keyInfo.twKeyLevel and keyInfo.twKeyLevel > 0 and (dungeon == '' or keyInfo.twKeyDungeon == dungeon) then - tinsert(keyString, keyInfo.twKeyDungeon .. '+' .. keyInfo.twKeyLevel) - end - - if #keyString > 0 then - tinsert(keys, string.format('[%s: %s]', alt_data.name, table.concat(keyString, ', '))) - end - end - end - end - - message = table.concat(keys, ' ') - if message then - SendChatMessage(message:sub(1, 255), chatChannel) - end + local chatChannel + if channel and (channel == "raid" or channel == "guild" or channel == "party") then + chatChannel = channel:upper() + else + chatChannel = UnitInParty("player") and "PARTY" or "GUILD" + end + + local message + local keys = {} + local arg, startLevel, operator, endLevel + if msg then + arg = msg:sub(ending + 2) + startLevel, operator, endLevel = arg:match("(%d+)([+-]*)(%d*)") + end + + if startLevel then + local comparator = GetComparisonOperator(startLevel, endLevel, operator) + if not comparator then + return + end + + for _, alt_data in pairs(self.db.global.accounts.main.data) do + local keyInfo = alt_data.keyInfo + if keyInfo then + local keyString = {} + if keyInfo.keyLevel and keyInfo.keyLevel > 0 and comparator(keyInfo.keyLevel) then + tinsert(keyString, keyInfo.keyDungeon .. "+" .. keyInfo.keyLevel) + end + + if #keyString > 0 then + tinsert(keys, string.format("[%s: %s]", alt_data.name, table.concat(keyString, ", "))) + end + end + end + end + + local dungeon = not startLevel and (msg and arg:upper() or "") + if dungeon then + for _, alt_data in pairs(self.db.global.accounts.main.data) do + local keyInfo = alt_data.keyInfo + if keyInfo then + local keyString = {} + if keyInfo.keyLevel and keyInfo.keyLevel > 0 and (dungeon == "" or keyInfo.keyDungeon == dungeon) then + tinsert(keyString, keyInfo.keyDungeon .. "+" .. keyInfo.keyLevel) + end + + if + keyInfo.twKeyLevel + and keyInfo.twKeyLevel > 0 + and (dungeon == "" or keyInfo.twKeyDungeon == dungeon) + then + tinsert(keyString, keyInfo.twKeyDungeon .. "+" .. keyInfo.twKeyLevel) + end + + if #keyString > 0 then + tinsert(keys, string.format("[%s: %s]", alt_data.name, table.concat(keyString, ", "))) + end + end + end + end + + message = table.concat(keys, " ") + if message then + SendChatMessage(message:sub(1, 255), chatChannel) + end end do - local keystoneString = "\124cffa335ee\124Hkeystone:180653:%d:%d:%s\124h[Keystone: %s (%d)]\124h\124r" - function PermoksAccountManager:PostKeyIntoChat(altData) - if not altData then return end - - local keyInfo = altData.keyInfo - if keyInfo then - local channel = UnitInParty("player") and "PARTY" or "GUILD" - local affixes = C_MythicPlus.GetCurrentAffixes() - if keyInfo.keyMapID and affixes then - local keyLevel = keyInfo.keyLevel - local affixNum = (keyLevel >= 10 and 4) or (keyLevel >= 7 and 3) or (keyLevel >= 4 and 2) or 1 - local affixIDs = {} - for i, affixInfo in ipairs(affixes) do - tinsert(affixIDs, i<= affixNum and affixInfo.id or 0) - end - - local keystone = keystoneString:format(keyInfo.keyMapID, keyInfo.keyLevel, table.concat(affixIDs, ":"), C_ChallengeMode.GetMapUIInfo(keyInfo.keyMapID), keyInfo.keyLevel) - - if altData.guid == UnitGUID("player") then - SendChatMessage(keystone, channel) - else - SendChatMessage(string.format('[%s: %s]', altData.name, keystone), channel) - end - elseif keyInfo and keyInfo.keyLevel and keyInfo.keyLevel > 0 then - SendChatMessage(string.format('[%s: %s]', altData.name, keyInfo.keyDungeon .. '+' .. keyInfo.keyLevel), channel) - end - end - end + local keystoneString = "\124cffa335ee\124Hkeystone:180653:%d:%d:%s\124h[Keystone: %s (%d)]\124h\124r" + function PermoksAccountManager:PostKeyIntoChat(altData) + if not altData then + return + end + + local keyInfo = altData.keyInfo + if keyInfo then + local channel = UnitInParty("player") and "PARTY" or "GUILD" + local affixes = C_MythicPlus.GetCurrentAffixes() + if keyInfo.keyMapID and affixes then + local keyLevel = keyInfo.keyLevel + local affixNum = (keyLevel >= 10 and 4) or (keyLevel >= 7 and 3) or (keyLevel >= 4 and 2) or 1 + local affixIDs = {} + for i, affixInfo in ipairs(affixes) do + tinsert(affixIDs, i <= affixNum and affixInfo.id or 0) + end + + local keystone = keystoneString:format( + keyInfo.keyMapID, + keyInfo.keyLevel, + table.concat(affixIDs, ":"), + C_ChallengeMode.GetMapUIInfo(keyInfo.keyMapID), + keyInfo.keyLevel + ) + + if altData.guid == UnitGUID("player") then + SendChatMessage(keystone, channel) + else + SendChatMessage(string.format("[%s: %s]", altData.name, keystone), channel) + end + elseif keyInfo and keyInfo.keyLevel and keyInfo.keyLevel > 0 then + SendChatMessage( + string.format("[%s: %s]", altData.name, keyInfo.keyDungeon .. "+" .. keyInfo.keyLevel), + channel + ) + end + end + end end function TogglePAMFromKeybindings() - if PermoksAccountManagerFrame:IsShown() then - PermoksAccountManager:HideInterface() - else - PermoksAccountManager:ShowInterface() - end -end \ No newline at end of file + if PermoksAccountManagerFrame:IsShown() then + PermoksAccountManager:HideInterface() + else + PermoksAccountManager:ShowInterface() + end +end From a475c61c0389d6f697f7b2e4b436159b98bccf5b Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 12 Aug 2025 15:13:38 +0200 Subject: [PATCH 111/138] Fix toc --- PermoksAccountManager.toc | 2 +- PermoksAccountManager_Mists.toc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PermoksAccountManager.toc b/PermoksAccountManager.toc index d82b035..765b34e 100644 --- a/PermoksAccountManager.toc +++ b/PermoksAccountManager.toc @@ -1,4 +1,4 @@ -## Interface: 110105 +## Interface: 110200 ## Title: Permoks Account Manager ## Version: @project-version@ ## SavedVariables: PermoksAccountManagerDB diff --git a/PermoksAccountManager_Mists.toc b/PermoksAccountManager_Mists.toc index d53d503..44cbef0 100644 --- a/PermoksAccountManager_Mists.toc +++ b/PermoksAccountManager_Mists.toc @@ -1,4 +1,4 @@ -## Interface: 40400 +## Interface: 50500 ## Title: Permoks Account Manager ## Author: Permok ## Version: @project-version@ From a37a0252059fd489fb3a8b6a347e9e1eedfbd925 Mon Sep 17 00:00:00 2001 From: Permok Date: Sun, 24 Aug 2025 16:59:54 +0200 Subject: [PATCH 112/138] Fix crest display --- modules/currencies.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index 13752fa..1224c16 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -849,7 +849,7 @@ function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurr if currencyInfo.maxQuantity and currencyInfo.maxQuantity > 0 and (currencyInfo.quantity or 0) > currencyInfo.maxQuantity then -- REFACTOR: move this logic to the crest labelRows to remove redundancy local id = currencyInfo.currencyType - if id ~= 3107 and id ~= 3108 and id ~= 3109 and id ~= 3110 then + if id ~= 3248 and id ~= 3286 and id ~= 3288 and id ~= 3290 then currencyInfo.quantity = currencyInfo.quantity / 100 end end From dafa97e51bb173aa535da239d3fc7822cd17c5f7 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 21 Jan 2026 13:31:35 +0100 Subject: [PATCH 113/138] 12.0 fix --- PermoksAccountManager.lua | 1 + PermoksAccountManager.toc | 2 +- modules/character.lua | 11 ++++++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 36ce448..5c9256c 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -202,6 +202,7 @@ do local options = PermoksAccountManager.db.global.options local outline = options.useOutline and "OUTLINE" or nil local font = LSM:Fetch("font", options.font) + font = font or "Fonts\\FRIZQT__.TTF" normalFont = CreateFont("PAM_NormalFont") normalFont:SetFont(font, options.fontSize, outline) diff --git a/PermoksAccountManager.toc b/PermoksAccountManager.toc index 765b34e..764f247 100644 --- a/PermoksAccountManager.toc +++ b/PermoksAccountManager.toc @@ -1,4 +1,4 @@ -## Interface: 110200 +## Interface: 110200, 120000 ## Title: Permoks Account Manager ## Version: @project-version@ ## SavedVariables: PermoksAccountManagerDB diff --git a/modules/character.lua b/modules/character.lua index dbdfd6a..1f13b1d 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -479,6 +479,14 @@ local function UpdateGold(charInfo) warbandData.gold = totalGold end +local function UpdateWarbankGold(charInfo) + local gold = C_Bank.FetchDepositedMoney(Enum.BankType.Account); + + local db = PermoksAccountManager.db.global + local warbandData = db.accounts.main.warbandData + warbandData.warbankGold = gold +end + local function UpdateILevel(charInfo) if not PermoksAccountManager.isBC then charInfo.ilevel = select(2, GetAverageItemLevel()) @@ -664,7 +672,8 @@ local payload = { ['PLAYER_LEVEL_UP'] = UpdatePlayerLevel, ['ZONE_CHANGED'] = UpdateLocation, ['ZONE_CHANGED_NEW_AREA'] = UpdateLocation, - ['ZONE_CHANGED_INDOORS'] = UpdateLocation + ['ZONE_CHANGED_INDOORS'] = UpdateLocation, + ['ACCOUNT_MONEY'] = UpdateWarbankGold, }, share = { [UpdateGold] = 'gold', From ca9efc09defcc7a0e981c745fb598513c5c36bde Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 4 Mar 2026 19:05:47 +0100 Subject: [PATCH 114/138] Midnight Update --- PermoksAccountManager.lua | 73 +- db/db.lua | 220 +-- modules/character.lua | 28 +- modules/currencies.lua | 36 +- modules/factions.lua | 51 +- modules/instances.lua | 872 ++++----- modules/items.lua | 8 +- modules/quests.lua | 44 +- options.lua | 3840 +++++++++++++++++++------------------ 9 files changed, 2609 insertions(+), 2563 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 5c9256c..9072e7b 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -49,7 +49,7 @@ local LibQTip = LibStub("LibQTip-1.0") local L = LibStub("AceLocale-3.0"):GetLocale(addonName) local LSM = LibStub("LibSharedMedia-3.0") local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALTWWVERSION = 11 +local INTERNALMIDNIGHT = 1 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local INTERNALMISTSVERSION = 1 @@ -651,10 +651,10 @@ function PermoksAccountManager:CheckForModernize() self.db.global.internalMistsVersion = INTERNALMISTSVERSION else local internalVersion = self.db.global.internalTWWVersion - if (internalVersion or 0) < INTERNALTWWVERSION then + if (internalVersion or 0) < INTERNALMIDNIGHT then self:Modernize(internalVersion) end - self.db.global.internalTWWVersion = INTERNALTWWVERSION + self.db.global.internalTWWVersion = INTERNALMIDNIGHT end end @@ -725,73 +725,6 @@ function PermoksAccountManager:Modernize(oldInternalVersion) self:ResetCategories() oldInternalVersion = 1 end - - if oldInternalVersion < 2 then - self:ResetQuestCompletion("isle_of_dorne_rares") - self:ResetQuestCompletion("ringing_deeps_rares") - self:ResetQuestCompletion("hallowfall_rares") - self:ResetQuestCompletion("azj_kahet_rares") - end - - if oldInternalVersion < 3 then - self:UpdateDefaultCategories("currentweekly") - self:ResetQuestCompletion("isle_of_dorne_rares", 85158, 85160, 85161, 85159) - self:ResetQuestCompletion("ringing_deeps_rares", 85163, 85162) - self:ResetQuestCompletion("hallowfall_rares", 85164) - self:ResetQuestCompletion("azj_kahet_rares", 85167, 85166) - end - - if oldInternalVersion < 4 then - self:AddLabelToDefaultCategory("currentweekly", "weekly_delve_reputation", 4) - self:AddLabelToDefaultCategory("currentweekly", "weekly_coffer_keys", 4) - self:ResetQuestCompletion("hallowfall_rares", 85165) - end - - if oldInternalVersion < 5 then - self:AddLabelToDefaultCategory("currentweekly", "tww_world_boss", 7) - end - - if oldInternalVersion < 6 then - self:AddLabelToDefaultCategory("general", "bronze_celebration_token", 26) - self:AddLabelToDefaultCategory("general", "timewarped_relic_coffer_key", 27) - self:AddLabelToDefaultCategory("raid", "blackrock_depths_raid", 2) - end - - if oldInternalVersion < 7 then - self:AddLabelToDefaultCategory("general", "veteran_crest") - self:AddLabelToDefaultCategory("general", "normal_crest") - self:AddLabelToDefaultCategory("general", "hero_crest") - self:AddLabelToDefaultCategory("general", "myth_crest") - self:AddLabelToDefaultCategory("general", "spark_drops") - - self:AddLabelToDefaultCategory("currentweekly", "undermine_weeklies", 19) - self:AddLabelToDefaultCategory("currentweekly", "undermine_rares") - - self:AddLabelToDefaultCategory("raid", "liberation_of_undermine") - - self:UpdateDefaultCategories("renown") - - self:ReplaceLabelOfDefaultCategory("general", "spark_omens", "spark_current") - self:RemoveLabelFromDefaultCategory("general", "timewarped_relic_coffer_key") - self:RemoveLabelFromDefaultCategory("general", "bronze_celebration_token") - self:FixOrderOfDefaultCategories() - end - - if oldInternalVersion < 8 then - self:AddLabelToDefaultCategory("general", "weekly_bounti_map") - end - - if oldInternalVersion < 9 then - self:AddLabelToDefaultCategory("renown", "flames_radiance", 8) - self:AddLabelToDefaultCategory("currentweekly", "nightfall_weekly", 7) - end - - if oldInternalVersion < 11 then - self:UpdateDefaultCategories("raid") - self:UpdateDefaultCategories("renown") - - self:AddLabelToDefaultCategory("general", "undercoin") - end end function PermoksAccountManager:GetGUID() diff --git a/db/db.lua b/db/db.lua index 658208c..fc45874 100644 --- a/db/db.lua +++ b/db/db.lua @@ -13,7 +13,6 @@ local default_categories = { 'keystone', 'mplus_score', 'catalyst_charges', - 'valorstones', 'veteran_crest', 'normal_crest', 'hero_crest', @@ -25,8 +24,7 @@ local default_categories = { 'separator2', 'restored_coffer_key', 'undercoin', - 'resonance_crystals', - 'radiant_echo', + 'voidlight_marl', }, childOrder = { characterName = 1, @@ -36,20 +34,18 @@ local default_categories = { keystone = 5, mplus_score = 6, catalyst_charges = 7, - valorstones = 8, - veteran_crest = 9, - normal_crest = 10, - hero_crest = 11, - myth_crest = 12, - spark_current = 13, - spark_drops = 14, + veteran_crest = 8, + normal_crest = 9, + hero_crest = 10, + myth_crest = 11, + spark_current = 12, + spark_drops = 13, -- Probably interesting during the first weeks, might wanna (re-)move later separator2 = 20, restored_coffer_key = 21, undercoin = 22, - resonance_crystals = 23, - radiant_echo = 24, + voidlight_marl = 23, }, hideToggle = true, enabled = true @@ -67,60 +63,21 @@ local default_categories = { order = 2, name = '(Bi)Weekly', childs = { - 'dungeon_weekly', - 'weekend_event', - 'worldsoul_weekly', - 'weekly_delve_reputation', - 'weekly_coffer_keys', - 'archaic_cypher_key', - 'nightfall_weekly', - + 'mythics_done', 'separator1', - 'the_theater_troupe', - 'rollin_down_in_the_deeps', - 'gearing_up_for_trouble', - 'awakening_the_machine', - 'spreading_the_light', - 'lesser_keyflame_weeklies', - 'greater_keyflame_weeklies', - 'severed_threads_pact_weekly', - 'undermine_weeklies', - - 'separator2', - 'isle_of_dorne_rares', - 'ringing_deeps_rares', - 'hallowfall_rares', - 'azj_kahet_rares', - 'one_time_reputation_rares', - 'undermine_rares', + 'saltherils_soiree', + 'abundance', + 'lost_legends', + 'stormarion_assault', }, childOrder = { - dungeon_weekly = 1, - weekend_event = 2, - worldsoul_weekly = 3, - weekly_delve_reputation = 4, - weekly_coffer_keys = 5, - archaic_cypher_key = 6, - nightfall_weekly = 7, + mythics_done = 1, separator1 = 10, - the_theater_troupe = 11, - rollin_down_in_the_deeps = 12, - gearing_up_for_trouble = 13, - awakening_the_machine = 14, - spreading_the_light = 15, - lesser_keyflame_weeklies = 16, - greater_keyflame_weeklies = 17, - severed_threads_pact_weekly = 18, - undermine_weeklies = 19, - - separator2 = 20, - isle_of_dorne_rares = 21, - ringing_deeps_rares = 22, - hallowfall_rares = 23, - azj_kahet_rares = 24, - one_time_reputation_rares = 25, - undermine_rares = 26, + saltherils_soiree = 11, + abundance = 12, + lost_legends = 13, + stormarion_assault = 14, }, enabled = true }, @@ -143,21 +100,8 @@ local default_categories = { order = 4, name = L['Professions'], childs = { - 'knowledge_tww_treasures', - 'knowledge_tww_treatise', - 'knowledge_tww_gather', - 'knowledge_tww_weeklies_quest', - 'separator1', - 'artisans_acuity', }, childOrder = { - knowledge_tww_treasures = 1, - knowledge_tww_treatise = 2, - knowledge_tww_gather = 3, - knowledge_tww_weeklies_quest = 4, - - separator1 = 10, - artisans_acuity = 11, }, enabled = true }, @@ -165,56 +109,16 @@ local default_categories = { order = 5, name = L['Reputation'], childs = { - 'council_of_dornogal', - 'hallowfall_arathi', - 'the_assembly_of_the_deeps', - 'the_severed_threads', - 'the_general', - 'the_vizier', - 'the_weaver', - 'flames_radiance', - -- 'brann_bronzebeard', Makes no sense without a custom string for the level - - 'separator1', - 'the_cartels_of_undermine', - 'bilgewater_cartel', - 'blackwater_cartel', - 'steamwheedle_cartel', - 'venture_company', - - 'separator2', - 'gallagio_loyalty_rewards_club', - 'darkfuse_solutions', - - 'separator3', - 'the_karesh_trust', - 'manaforge_vandals', + 'amani_tribe', + 'the_singularity', + 'harati', + 'silvermoon_court', }, childOrder = { - council_of_dornogal = 1, - hallowfall_arathi = 2, - the_assembly_of_the_deeps = 2, - the_severed_threads = 4, - the_general = 5, - the_vizier = 6, - the_weaver = 7, - flames_radiance = 8, - -- brann_bronzebeard = 8, - - separator1 = 10, - the_cartels_of_undermine = 11, - bilgewater_cartel = 12, - blackwater_cartel = 13, - steamwheedle_cartel = 14, - venture_company = 15, - - separator2 = 20, - gallagio_loyalty_rewards_club = 21, - darkfuse_solutions = 22, - - separator3 = 30, - the_karesh_trust = 31, - manaforge_vandals = 32, + amani_tribe = 1, + the_singularity = 2, + harati = 3, + silvermoon_court = 4, }, enabled = true }, @@ -222,14 +126,14 @@ local default_categories = { order = 6, name = L['Raid'], childs = { - 'nerub_ar_palace', - 'liberation_of_undermine', - 'manaforge_omega' + 'the_dreamrift', + 'the_voidspire', + 'march_on_queldanas' }, childOrder = { - nerub_ar_palace = 1, - liberation_of_undermine = 2, - manaforge_omega = 3, + the_dreamrift = 1, + the_voidspire = 2, + march_on_queldanas = 3, }, enabled = true }, @@ -417,7 +321,7 @@ PermoksAccountManager.labelRows = { } } -PermoksAccountManager.numDungeons = 7 +PermoksAccountManager.numDungeons = 8 PermoksAccountManager.keys = { [2] = "TJS", -- Temple of the Jade Serpent [165] = "SBG", -- Shadowmoon Burial Grounds @@ -500,20 +404,21 @@ PermoksAccountManager.activityIDToKeys = { } PermoksAccountManager.raids = { - [2657] = { name = GetRealZoneText(2657), englishID = 'nerub_ar_palace', instanceID = 1273, startIndex = 1, endIndex = 8 }, - [2792] = { name = GetRealZoneText(2792), englishID = 'blackrock_depths_raid', instanceID = 1301, startIndex = 1, endIndex = 8 }, - [2769] = { name = GetRealZoneText(2769), englishID = 'liberation_of_undermine', instanceID = 1296, startIndex = 1, endIndex = 8 }, - [2810] = { name = GetRealZoneText(2810), englishID = 'manaforge_omega', instanceID = 1302, startIndex = 1, endIndex = 8 }, + [2912] = { name = GetRealZoneText(2912), englishID = 'the_voidspire', instanceID = 1307, startIndex = 1, endIndex = 6 }, + [2913] = { name = GetRealZoneText(2913), englishID = 'march_on_queldanas', instanceID = 1308, startIndex = 1, endIndex = 2 }, + [2939] = { name = GetRealZoneText(2939), englishID = 'the_dreamrift', instanceID = 1314, startIndex = 1, endIndex = 1 }, + } PermoksAccountManager.dungeons = { - [2287] = GetRealZoneText(2287), -- Halls of Atonement - [2649] = GetRealZoneText(2649), -- Priory of the Sacred Flame - [2660] = GetRealZoneText(2660), -- Ara-Kara, City of Echoes - [2662] = GetRealZoneText(2662), -- The Dawnbreaker - [2773] = GetRealZoneText(2773), -- Operation: Floodgate - [2830] = GetRealZoneText(2830), -- Eco-Dome Al'dani - [2441] = GetRealZoneText(2441), -- Tazavesh, the Veiled Market + [2805] = GetRealZoneText(2805), -- Windrunner Spire + [2811] = GetRealZoneText(2811), -- Magisters' Terrace + [2813] = GetRealZoneText(2813), -- Murder Row + [2825] = GetRealZoneText(2825), -- Den of Nalorakk + [2859] = GetRealZoneText(2859), -- The Blinding Vale + [2874] = GetRealZoneText(2874), -- Maisara Caverns + [2915] = GetRealZoneText(2915), -- Nexus-Point Xenas + [2923] = GetRealZoneText(2923), -- Voidscar Arena } PermoksAccountManager.item = { @@ -574,6 +479,9 @@ PermoksAccountManager.item = { -- 11.2 [231757] = { key = 'spark_current'}, -- Fractured Spark of Starlight [231756] = { key = 'spark_current'}, -- Spark of Starlight + + -- 12.0 + [232875] = { key = 'spark_current'}, -- Spark of Radiance } PermoksAccountManager.factions = { @@ -622,6 +530,12 @@ PermoksAccountManager.factions = { -- 11.2 [2658] = { name = 'The K\'aresh Trust', paragon = true, type = 'renown', warband = 'unique' }, [2736] = { name = 'Manaforge Vandals', type = 'renown', warband = 'unique' }, + + -- 12.0 + [2696] = { name = 'Amani Tribe', paragon = true, type = 'renown', warband = 'unique' }, + [2699] = { name = 'The Singularity', paragon = true, type = 'renown', warband = 'unique' }, + [2704] = { name = 'Hara\'ti', paragon = true, type = 'renown', warband = 'unique' }, + [2710] = { name = 'Silvermoon Court', paragon = true, type = 'renown', warband = 'unique' }, } PermoksAccountManager.currency = { @@ -694,6 +608,17 @@ PermoksAccountManager.currency = { [3290] = 0, -- Gilded Ethereal Crest [3269] = 0, -- Ethereal Voidsplinter (Catalyst Charges TWW Season 3) + + -- 12.0 + [3383] = 0, -- Adventurer Dawncrest + [3343] = 0, -- Champion Dawncrest + [3345] = 0, -- Hero Dawncrest + [3347] = 0, -- Myth Dawncrest + + [3212] = 0, -- Radiant Spark Dust + [3378] = 0, -- Dawnlight Manaflux (Catalyst Charges Midnight Season 1) + + [3316] = 0, -- Voidlight Marl } PermoksAccountManager.currencyTrees = { @@ -2000,6 +1925,21 @@ PermoksAccountManager.quests = { }, nightfall_weekly = { [89295] = {questType = 'weekly'} + }, + saltherils_soiree = { + [90573] = {questType = 'weekly'}, + [90574] = {questType = 'weekly'}, + [90575] = {questType = 'weekly'}, + [90576] = {questType = 'weekly'}, + }, + abundance = { + [89507] = {questType = 'weekly'}, + }, + lost_legends = { + [89268] = {questType = 'weekly'}, + }, + stormarion_assault = { + [90962] = {questType = 'weekly'}, } } diff --git a/modules/character.lua b/modules/character.lua index 1f13b1d..8292978 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -84,6 +84,10 @@ local labelRows = { label = L['Gold'], type = 'gold', group = 'currency', + tooltip = true, + customTooltip = function(button, altData) + PermoksAccountManager:CustomGoldTooltip_OnEnter(button, altData) + end, warband = true, version = false }, @@ -484,7 +488,7 @@ local function UpdateWarbankGold(charInfo) local db = PermoksAccountManager.db.global local warbandData = db.accounts.main.warbandData - warbandData.warbankGold = gold + warbandData.warbankGold = floor(gold / (COPPER_PER_SILVER * SILVER_PER_GOLD)) * 10000 end local function UpdateILevel(charInfo) @@ -566,6 +570,7 @@ end local function Update(charInfo) UpdateGeneralData(charInfo) UpdateGold(charInfo) + UpdateWarbankGold(charInfo) if not PermoksAccountManager.isRetail then UpdatePlayerLevel(charInfo) @@ -802,6 +807,27 @@ function PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altDat end end + tooltip:SmartAnchorTo(button) + tooltip:Show() +end + +function PermoksAccountManager:CustomGoldTooltip_OnEnter(button, warbandData) + if not warbandData or not (warbandData.name == "Warband") then + return + end + + local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') + button.tooltip = tooltip + tooltip:SetBackdropColor(0, 0, 0, 1) + tooltip:AddHeader('Gold:') + tooltip:AddSeparator(2, 1, 1, 1) + + tooltip:AddLine("Character Gold:", GetMoneyString(warbandData.gold or 0, true)) + tooltip:AddLine("Warband Bank:", GetMoneyString(warbandData.warbankGold or 0, true)) + tooltip:AddSeparator(2, 1, 1, 1) + tooltip:AddLine("Total Gold:", GetMoneyString((warbandData.gold or 0) + (warbandData.warbankGold or 0), true)) + + tooltip:SmartAnchorTo(button) tooltip:Show() end diff --git a/modules/currencies.lua b/modules/currencies.lua index 1224c16..876f176 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -256,33 +256,33 @@ local labelRows = { -- 11.0 veteran_crest = { - label = 'Weathered Crests', + label = 'Adventurer Crests', type = 'crestcurrency', - key = 3284, + key = 3383, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, normal_crest = { - label = 'Carved Crests', + label = 'Champion Crests', type = 'crestcurrency', - key = 3286, + key = 3343, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, hero_crest = { - label = 'Runed Crests', + label = 'Hero Crests', type = 'crestcurrency', - key = 3288, + key = 3345, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE }, myth_crest = { - label = 'Gilded Crests', + label = 'Myth Crests', type = 'crestcurrency', - key = 3290, + key = 3347, passRow = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -345,7 +345,7 @@ local labelRows = { spark_drops = { label = 'Spark Cap', type = 'currency', - key = 3141, + key = 3212, group = 'currency', hideIcon = true, version = WOW_PROJECT_MAINLINE, @@ -367,7 +367,7 @@ local labelRows = { catalyst_charges = { label = L['Catalyst Charges'], type = 'catalystcharges', - key = 3269, + key = 3378, hideIcon = true, group = 'currency', version = WOW_PROJECT_MAINLINE @@ -391,6 +391,16 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, + -- 12.0 + voidlight_marl = { + label = 'Voidlight Marl', + type = 'currency', + warband = true, + key = 3316, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, + -- wotlk-classic honorBCC = { label = function() @@ -733,15 +743,15 @@ local function CurrencyTransferUpdate(charInfo) end local function UpdateCatalystCharges(charInfo) - if not charInfo.currencyInfo or not charInfo.currencyInfo[3269] then + if not charInfo.currencyInfo or not charInfo.currencyInfo[3378] then UpdateAllCurrencies(charInfo) end - charInfo.currencyInfo[3269].quantity = C_CurrencyInfo.GetCurrencyInfo(3269).quantity + charInfo.currencyInfo[3378].quantity = C_CurrencyInfo.GetCurrencyInfo(3378).quantity end local function CreateCatalystChargeString(currencyInfo) - local catalystCharges = currencyInfo and currencyInfo[3269] + local catalystCharges = currencyInfo and currencyInfo[3378] if not catalystCharges then return '-' end return PermoksAccountManager:CreateFractionString(catalystCharges.quantity, catalystCharges.maxQuantity) diff --git a/modules/factions.lua b/modules/factions.lua index db5addc..d033274 100644 --- a/modules/factions.lua +++ b/modules/factions.lua @@ -411,6 +411,48 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, + -- 12.0 + silvermoon_court = { + label = function() + return PermoksAccountManager.factions[2710].localName or "Silvermoon Court" + end, + type = "faction", + warband = "unique", + key = 2710, + group = "reputation", + version = WOW_PROJECT_MAINLINE + }, + the_singularity = { + label = function() + return PermoksAccountManager.factions[2699].localName or "The Singularity" + end, + type = "faction", + warband = "unique", + key = 2699, + group = "reputation", + version = WOW_PROJECT_MAINLINE + }, + harati = { + label = function() + return PermoksAccountManager.factions[2704].localName or "Hara'ti" + end, + type = "faction", + warband = "unique", + key = 2704, + group = "reputation", + version = WOW_PROJECT_MAINLINE + }, + amani_tribe = { + label = function() + return PermoksAccountManager.factions[2696].localName or "Amani Tribe" + end, + type = "faction", + warband = "unique", + key = 2696, + group = "reputation", + version = WOW_PROJECT_MAINLINE + }, + -- wotlk alliance_vanguard = { label = function() @@ -826,10 +868,11 @@ local function GetFactionOrFriendshipInfo(factionId, factionType) end local isParagon = C_Reputation.IsFactionParagon and C_Reputation.IsFactionParagon(factionId) - if isParagon then - barValue, barMax, _, hasReward = C_Reputation.GetFactionParagonInfo(factionId) - barMin, standing, barValue = 0, 9, barValue % barMax - elseif factionType == "renown" then + --if isParagon then + -- barValue, barMax, _, hasReward = C_Reputation.GetFactionParagonInfo(factionId) + -- barMin, standing, barValue = 0, 9, barValue % barMax + --elseif factionType == "renown" then + if factionType == "renown" then renown = C_MajorFactions.GetCurrentRenownLevel(factionId) local majorFactionInfo = C_MajorFactions.GetMajorFactionData(factionId) if majorFactionInfo then diff --git a/modules/instances.lua b/modules/instances.lua index 649fd9e..6ccc9a4 100644 --- a/modules/instances.lua +++ b/modules/instances.lua @@ -1,376 +1,354 @@ local addonName, PermoksAccountManager = ... -local LibQTip = LibStub('LibQTip-1.0') -local L = LibStub('AceLocale-3.0'):GetLocale(addonName) +local LibQTip = LibStub("LibQTip-1.0") +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) -local module = 'instances' +local module = "instances" local labelRows = { - mythics_done = { - label = 'Mythic Dungeons', - tooltip = true, - customTooltip = function(button, alt_data) - PermoksAccountManager:DungeonTooltip_OnEnter(button, alt_data) - end, - data = function(alt_data) - return alt_data.instanceInfo and PermoksAccountManager:CreateDungeonString(alt_data.instanceInfo.dungeons) or '-' - end, - group = 'dungeons', - version = WOW_PROJECT_MAINLINE - }, - dawn_of_the_infinite = { - label = GetRealZoneText(2579), - id = 2579, - data = function(alt_data) - local defeated = 0 - if alt_data.instanceInfo and alt_data.instanceInfo.dungeons and alt_data.instanceInfo.dungeons[2579] then - defeated = alt_data.instanceInfo.dungeons[2579].defeatedEncounters - else - - end - return PermoksAccountManager:CreateFractionString(defeated, 8) - end, - group = 'dungeons', - version = WOW_PROJECT_MAINLINE - }, - - -- TWW Raids - nerub_ar_palace = { + mythics_done = { + label = "Mythic Dungeons", + tooltip = true, + customTooltip = function(button, alt_data) + PermoksAccountManager:DungeonTooltip_OnEnter(button, alt_data) + end, + data = function(alt_data) + return alt_data.instanceInfo and PermoksAccountManager:CreateDungeonString(alt_data.instanceInfo.dungeons) + or "-" + end, + group = "dungeons", + version = WOW_PROJECT_MAINLINE, + }, + --12.0 + the_voidspire = { label = function() - return PermoksAccountManager.raids[2657].name or 'Palace' - end, - id = 2657, - type = 'raid', - key = 'nerub_ar_palace', + return PermoksAccountManager.raids[2912].name or "Voidspire" + end, + id = 2912, + type = "raid", + key = "the_voidspire", tooltip = true, - group = 'raids', - version = WOW_PROJECT_MAINLINE - }, - --blackrock_depths_raid = { - -- label = function() - -- return PermoksAccountManager.raids[2792].name or 'BRD' - -- end, - -- id = 2792, - -- type = 'raid', - -- key = 'blackrock_depths_raid', - -- tooltip = true, - -- group = 'raids', - -- version = WOW_PROJECT_MAINLINE - --}, - liberation_of_undermine = { + group = "raids", + version = WOW_PROJECT_MAINLINE, + }, + the_dreamrift = { label = function() - return PermoksAccountManager.raids[2769].name or 'LoU' - end, - id = 2769, - type = 'raid', - key = 'liberation_of_undermine', + return PermoksAccountManager.raids[2939].name or "Dreamrift" + end, + id = 2939, + type = "raid", + key = "the_dreamrift", tooltip = true, - group = 'raids', - version = WOW_PROJECT_MAINLINE - }, - - -- 11.2 - manaforge_omega = { + group = "raids", + version = WOW_PROJECT_MAINLINE, + }, + march_on_queldanas = { label = function() - return PermoksAccountManager.raids[2810].name or 'LoU' - end, - id = 2810, - type = 'raid', - key = 'manaforge_omega', + return PermoksAccountManager.raids[2913].name or "March" + end, + id = 2913, + type = "raid", + key = "march_on_queldanas", tooltip = true, - group = 'raids', - version = WOW_PROJECT_MAINLINE - }, + group = "raids", + version = WOW_PROJECT_MAINLINE, + }, - -- wotlk + -- wotlk -- TOOD: Change db structure so you can get the locale name without calling the function again naxxramas = { label = GetRealZoneText(533), id = 533, - type = 'raid', - key = 'naxxramas', - group = 'raids', + type = "raid", + key = "naxxramas", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, ulduar = { label = GetRealZoneText(603), id = 603, - type = 'raid', - key = 'ulduar', - group = 'raids', + type = "raid", + key = "ulduar", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, obsidian_sanctum = { label = GetRealZoneText(615), id = 615, - type = 'raid', - key = 'obsidian_sanctum', - group = 'raids', + type = "raid", + key = "obsidian_sanctum", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, eye_of_eternity = { label = GetRealZoneText(616), id = 616, - type = 'raid', - key = 'eye_of_eternity', - group = 'raids', + type = "raid", + key = "eye_of_eternity", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, vault_of_archavon = { label = GetRealZoneText(624), id = 624, - type = 'raid', - key = 'vault_of_archavon', - group = 'raids', + type = "raid", + key = "vault_of_archavon", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, icecrown_citadel = { label = GetRealZoneText(631), id = 631, - type = 'raid', - key = 'icecrown_citadel', - group = 'raids', + type = "raid", + key = "icecrown_citadel", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, trial_of_the_crusader = { label = GetRealZoneText(649), id = 649, - type = 'raid', - key = 'trial_of_the_crusader', - group = 'raids', + type = "raid", + key = "trial_of_the_crusader", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - onyxias_lair = { + onyxias_lair = { label = GetRealZoneText(249), id = 249, - type = 'raid', - key = 'onyxias_lair', - group = 'raids', + type = "raid", + key = "onyxias_lair", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, - }, + }, ruby_sanctum = { label = GetRealZoneText(724), id = 724, - type = 'raid', - key = 'ruby_sanctum', - group = 'raids', + type = "raid", + key = "ruby_sanctum", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - -- old mount drop raids (optional) - zul_gurub = { + -- old mount drop raids (optional) + zul_gurub = { label = GetRealZoneText(309), id = 309, - type = 'raid', - key = 'zul_gurub', - group = 'raids', + type = "raid", + key = "zul_gurub", + group = "raids", tooltip = true, - hasSingularLockout = true, + hasSingularLockout = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - karazhan = { + karazhan = { label = GetRealZoneText(532), id = 532, - type = 'raid', - key = 'karazhan', - group = 'raids', + type = "raid", + key = "karazhan", + group = "raids", tooltip = true, - hasSingularLockout = true, + hasSingularLockout = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - tempest_keep = { + tempest_keep = { label = GetRealZoneText(550), id = 550, - type = 'raid', - key = 'tempest_keep', - group = 'raids', + type = "raid", + key = "tempest_keep", + group = "raids", tooltip = true, - hasSingularLockout = true, + hasSingularLockout = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - heroics_done = { - label = 'Heroic Dungeons', - tooltip = function(button, alt_data) - PermoksAccountManager:DungeonTooltip_OnEnter(button, alt_data) - end, - data = function(alt_data) - return alt_data.instanceInfo and PermoksAccountManager:CreateDungeonString(alt_data.instanceInfo.dungeons) or '-' - end, - group = 'dungeons', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - - -- Cataclysm - blackwing_descent = { + heroics_done = { + label = "Heroic Dungeons", + tooltip = function(button, alt_data) + PermoksAccountManager:DungeonTooltip_OnEnter(button, alt_data) + end, + data = function(alt_data) + return alt_data.instanceInfo and PermoksAccountManager:CreateDungeonString(alt_data.instanceInfo.dungeons) + or "-" + end, + group = "dungeons", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + + -- Cataclysm + blackwing_descent = { label = GetRealZoneText(669), id = 669, - type = 'raid', - key = 'blackwing_descent', - group = 'raids', + type = "raid", + key = "blackwing_descent", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - the_bastion_of_twilight = { + the_bastion_of_twilight = { label = GetRealZoneText(671), id = 671, - type = 'raid', - key = 'the_bastion_of_twilight', - group = 'raids', + type = "raid", + key = "the_bastion_of_twilight", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - firelands = { + firelands = { label = GetRealZoneText(720), id = 720, - type = 'raid', - key = 'firelands', - group = 'raids', + type = "raid", + key = "firelands", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - throne_of_the_four_winds = { + throne_of_the_four_winds = { label = GetRealZoneText(754), id = 754, - type = 'raid', - key = 'throne_of_the_four_winds', - group = 'raids', + type = "raid", + key = "throne_of_the_four_winds", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - baradin_hold = { + baradin_hold = { label = GetRealZoneText(757), id = 757, - type = 'raid', - key = 'baradin_hold', - group = 'raids', + type = "raid", + key = "baradin_hold", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - dragon_soul = { + dragon_soul = { label = GetRealZoneText(967), id = 967, - type = 'raid', - key = 'dragon_soul', - group = 'raids', + type = "raid", + key = "dragon_soul", + group = "raids", tooltip = true, version = WOW_PROJECT_CATACLYSM_CLASSIC, }, - -- Mists - mogushan_vaults = { + -- Mists + mogushan_vaults = { label = GetRealZoneText(1008), id = 1008, - type = 'raid', - key = 'mogushan_vaults', - group = 'raids', + type = "raid", + key = "mogushan_vaults", + group = "raids", tooltip = true, version = WOW_PROJECT_MISTS_CLASSIC, }, - heart_of_fear = { + heart_of_fear = { label = GetRealZoneText(1009), id = 1009, - type = 'raid', - key = 'heart_of_fear', - group = 'raids', + type = "raid", + key = "heart_of_fear", + group = "raids", tooltip = true, version = WOW_PROJECT_MISTS_CLASSIC, }, - terrace_of_endless_spring = { + terrace_of_endless_spring = { label = GetRealZoneText(996), id = 996, - type = 'raid', - key = 'terrace_of_endless_spring', - group = 'raids', + type = "raid", + key = "terrace_of_endless_spring", + group = "raids", tooltip = true, version = WOW_PROJECT_MISTS_CLASSIC, }, } local function UpdateInstanceInfo(charInfo) - charInfo.instanceInfo = charInfo.instanceInfo or {raids = {}, dungeons = {}, customRaids = {}} - local self = PermoksAccountManager - local instanceInfo = charInfo.instanceInfo - local name, difficulty, locked, extended, difficultyName, numEncounters, encounterProgress, _ - for i = 1, GetNumSavedInstances() do - local link = GetSavedInstanceChatLink(i) - local mapID, _ = link:match(':(%d+):%d+:%d+\124h%[(.+)%]\124h') - mapID = tonumber(mapID) - name, _, _, difficulty, locked, extended, _, _, _, difficultyName, numEncounters, encounterProgress = GetSavedInstanceInfo(i) + charInfo.instanceInfo = charInfo.instanceInfo or { raids = {}, dungeons = {}, customRaids = {} } + local self = PermoksAccountManager + local instanceInfo = charInfo.instanceInfo + local name, difficulty, locked, extended, difficultyName, numEncounters, encounterProgress, _ + for i = 1, GetNumSavedInstances() do + local link = GetSavedInstanceChatLink(i) + local mapID, _ = link:match(":(%d+):%d+:%d+\124h%[(.+)%]\124h") + mapID = tonumber(mapID) + name, _, _, difficulty, locked, extended, _, _, _, difficultyName, numEncounters, encounterProgress = + GetSavedInstanceInfo(i) local raidInfo - if locked or extended then - if self.raids[mapID] or (self.isCata and self.raids[name]) then - local info = self.raids[mapID] or self.raids[name] - instanceInfo.raids[info.englishID] = instanceInfo.raids[info.englishID] or {} - instanceInfo.raids[info.englishID][difficulty] = instanceInfo.raids[info.englishID][difficulty] or { - key = info.englishID, - difficulty = difficultyName, - numEncounters = numEncounters - } - - if not instanceInfo.raids[info.englishID][difficulty].key then - instanceInfo.raids[info.englishID][difficulty].key = info.englishID - end - - local oldInstanceInfo = instanceInfo.raids[info.englishID][difficulty] - if not oldInstanceInfo.defeatedEncounters or oldInstanceInfo.defeatedEncounters < encounterProgress then - instanceInfo.raids[info.englishID][difficulty].defeatedEncounters = encounterProgress - end + if locked or extended then + if self.raids[mapID] or (self.isCata and self.raids[name]) then + local info = self.raids[mapID] or self.raids[name] + instanceInfo.raids[info.englishID] = instanceInfo.raids[info.englishID] or {} + instanceInfo.raids[info.englishID][difficulty] = instanceInfo.raids[info.englishID][difficulty] + or { + key = info.englishID, + difficulty = difficultyName, + numEncounters = numEncounters, + } + + if not instanceInfo.raids[info.englishID][difficulty].key then + instanceInfo.raids[info.englishID][difficulty].key = info.englishID + end + + local oldInstanceInfo = instanceInfo.raids[info.englishID][difficulty] + if not oldInstanceInfo.defeatedEncounters or oldInstanceInfo.defeatedEncounters < encounterProgress then + instanceInfo.raids[info.englishID][difficulty].defeatedEncounters = encounterProgress + end raidInfo = oldInstanceInfo - elseif (self.dungeons[mapID] and difficulty == 23) or (self.isCata and self.dungeons[name] and difficulty == 2) then - local completed = numEncounters == encounterProgress - - -- find out if last boss is killed, since in wotlk the dungeon is completed if last boss is killed - if self.isCata then - -- for Ahn'kahet: The Old Kingdom we need to subtract 1 from numEncounters, since the last boss from API is the heroic only boss - local lastBossIndex = numEncounters - if(mapID == 619) then - lastBossIndex = lastBossIndex - 1 - end - - local _, _, isKilled = GetSavedInstanceEncounterInfo(i, lastBossIndex) - completed = isKilled - end - - local oldInstanceInfo = instanceInfo.dungeons[mapID or self.dungeons[name]] - if oldInstanceInfo then - oldInstanceInfo.defeatedEncounters = max(oldInstanceInfo.defeatedEncounters, encounterProgress) - oldInstanceInfo.completed = completed - else - instanceInfo.dungeons[mapID or self.dungeons[name]] = { - numEncounters = numEncounters, - defeatedEncounters = encounterProgress, - completed = completed - } - end - elseif self.customRaids and self.customRaids[name] then - local info = self.customRaids[name] - instanceInfo.customRaids = instanceInfo.customRaids or {} - instanceInfo.customRaids[info.englishID] = instanceInfo.customRaids[info.englishID] or {} - instanceInfo.customRaids[info.englishID][difficulty] = instanceInfo.customRaids[info.englishID][difficulty] or { - key = info.englishID, - difficulty = difficultyName, - numEncounters = numEncounters - } - - if not instanceInfo.customRaids[info.englishID][difficulty].key then - instanceInfo.customRaids[info.englishID][difficulty].key = info.englishID - end - - local oldInstanceInfo = instanceInfo.customRaids[info.englishID][difficulty] - if not oldInstanceInfo.defeatedEncounters or oldInstanceInfo.defeatedEncounters < encounterProgress then - instanceInfo.customRaids[info.englishID][difficulty].defeatedEncounters = encounterProgress - end + elseif + (self.dungeons[mapID] and difficulty == 23) or (self.isCata and self.dungeons[name] and difficulty == 2) + then + local completed = numEncounters == encounterProgress + + -- find out if last boss is killed, since in wotlk the dungeon is completed if last boss is killed + if self.isCata then + -- for Ahn'kahet: The Old Kingdom we need to subtract 1 from numEncounters, since the last boss from API is the heroic only boss + local lastBossIndex = numEncounters + if mapID == 619 then + lastBossIndex = lastBossIndex - 1 + end + + local _, _, isKilled = GetSavedInstanceEncounterInfo(i, lastBossIndex) + completed = isKilled + end + + local oldInstanceInfo = instanceInfo.dungeons[mapID or self.dungeons[name]] + if oldInstanceInfo then + oldInstanceInfo.defeatedEncounters = max(oldInstanceInfo.defeatedEncounters, encounterProgress) + oldInstanceInfo.completed = completed + else + instanceInfo.dungeons[mapID or self.dungeons[name]] = { + numEncounters = numEncounters, + defeatedEncounters = encounterProgress, + completed = completed, + } + end + elseif self.customRaids and self.customRaids[name] then + local info = self.customRaids[name] + instanceInfo.customRaids = instanceInfo.customRaids or {} + instanceInfo.customRaids[info.englishID] = instanceInfo.customRaids[info.englishID] or {} + instanceInfo.customRaids[info.englishID][difficulty] = instanceInfo.customRaids[info.englishID][difficulty] + or { + key = info.englishID, + difficulty = difficultyName, + numEncounters = numEncounters, + } + + if not instanceInfo.customRaids[info.englishID][difficulty].key then + instanceInfo.customRaids[info.englishID][difficulty].key = info.englishID + end + + local oldInstanceInfo = instanceInfo.customRaids[info.englishID][difficulty] + if not oldInstanceInfo.defeatedEncounters or oldInstanceInfo.defeatedEncounters < encounterProgress then + instanceInfo.customRaids[info.englishID][difficulty].defeatedEncounters = encounterProgress + end raidInfo = oldInstanceInfo - end - end + end + end if self.isRetail and raidInfo then local index = self.raids[mapID].startIndex - 1 @@ -379,52 +357,52 @@ local function UpdateInstanceInfo(charInfo) local isKilled = select(3, GetSavedInstanceEncounterInfo(i, boss)) raidInfo.defeatedEncountersInfo[index + boss] = isKilled end - elseif self.isCata and raidInfo then - raidInfo.defeatedEncountersInfo = raidInfo.defeatedEncountersInfo or {} - for bossIndex = 1, raidInfo.numEncounters do - local name, _, isKilled = GetSavedInstanceEncounterInfo(i, bossIndex) - if name then - raidInfo.defeatedEncountersInfo[bossIndex] = { - name = name, - isKilled = isKilled - } - end - end - end - end + elseif self.isCata and raidInfo then + raidInfo.defeatedEncountersInfo = raidInfo.defeatedEncountersInfo or {} + for bossIndex = 1, raidInfo.numEncounters do + local name, _, isKilled = GetSavedInstanceEncounterInfo(i, bossIndex) + if name then + raidInfo.defeatedEncountersInfo[bossIndex] = { + name = name, + isKilled = isKilled, + } + end + end + end + end end local function Update(charInfo) - UpdateInstanceInfo(charInfo) + UpdateInstanceInfo(charInfo) end do - local payload = { - update = Update, - labels = labelRows, - events = { - ['UPDATE_INSTANCE_INFO'] = UpdateInstanceInfo, - ['WEEKLY_REWARDS_UPDATE'] = UpdateInstanceInfo, - ['INSTANCE_LOCK_STOP'] = UpdateInstanceInfo, - }, - share = { - [UpdateInstanceInfo] = 'instanceInfo' - } - } - PermoksAccountManager:AddModule(module, payload) + local payload = { + update = Update, + labels = labelRows, + events = { + ["UPDATE_INSTANCE_INFO"] = UpdateInstanceInfo, + ["WEEKLY_REWARDS_UPDATE"] = UpdateInstanceInfo, + ["INSTANCE_LOCK_STOP"] = UpdateInstanceInfo, + }, + share = { + [UpdateInstanceInfo] = "instanceInfo", + }, + } + PermoksAccountManager:AddModule(module, payload) end function PermoksAccountManager:CreateDungeonString(savedInfo) - if not savedInfo then - return '-' - end - local numCompletedDungeons = 0 + if not savedInfo then + return "-" + end + local numCompletedDungeons = 0 - for _, info in pairs(savedInfo) do - if info.completed then - numCompletedDungeons = numCompletedDungeons + 1 - end - end + for _, info in pairs(savedInfo) do + if info.completed then + numCompletedDungeons = numCompletedDungeons + 1 + end + end return self:CreateFractionString(numCompletedDungeons, self.numDungeons) end @@ -437,170 +415,202 @@ local retailDifficultyOrder = { } function PermoksAccountManager:CreateRaidString(savedInfo, hideDifficulty) - local raidString = '' - - local highestDifficulty = 0 - for difficulty in pairs(savedInfo) do - if (self.isRetail and (retailDifficultyOrder[difficulty] > (retailDifficultyOrder[highestDifficulty] or highestDifficulty))) or (self.isCata and (difficulty > highestDifficulty)) then - highestDifficulty = difficulty - end - end - - if self.isCata then - -- for wrath we want to show all difficulties - for difficulty in PermoksAccountManager.spairs(savedInfo, function(_, a, b) return a < b end) do - local difficultyString = '' - local raidInfo = savedInfo[difficulty] - - -- add failsafe if saved data is not updated with key - local hasSingularLockout = false - if labelRows[raidInfo.key] and labelRows[raidInfo.key].hasSingularLockout then - hasSingularLockout = labelRows[raidInfo.key].hasSingularLockout - end - - if hasSingularLockout then - difficultyString = self:CreateFractionString(raidInfo.defeatedEncounters, raidInfo.numEncounters) - else - difficultyString = string.format('%s %s', PermoksAccountManager.raidDifficultyLabels[difficulty], self:CreateFractionString(raidInfo.defeatedEncounters, raidInfo.numEncounters)) - end - - raidString = string.format('%s%s%s', raidString, difficultyString, difficulty == highestDifficulty and '' or ' ') - end - else - local raidInfo = savedInfo[highestDifficulty] - if not raidInfo then return end - local raidDifficulty = raidInfo.difficulty:sub(1, 1) - - -- for retail we only want to show the highest difficulty - raidString = string.format('%s%s', self:CreateFractionString(raidInfo.defeatedEncounters, raidInfo.numEncounters), hideDifficulty and '' or raidDifficulty) - end - - return raidString + local raidString = "" + + local highestDifficulty = 0 + for difficulty in pairs(savedInfo) do + if + ( + self.isRetail + and ( + retailDifficultyOrder[difficulty] > (retailDifficultyOrder[highestDifficulty] or highestDifficulty) + ) + ) or (self.isCata and (difficulty > highestDifficulty)) + then + highestDifficulty = difficulty + end + end + + if self.isCata then + -- for wrath we want to show all difficulties + for difficulty in + PermoksAccountManager.spairs(savedInfo, function(_, a, b) + return a < b + end) + do + local difficultyString = "" + local raidInfo = savedInfo[difficulty] + + -- add failsafe if saved data is not updated with key + local hasSingularLockout = false + if labelRows[raidInfo.key] and labelRows[raidInfo.key].hasSingularLockout then + hasSingularLockout = labelRows[raidInfo.key].hasSingularLockout + end + + if hasSingularLockout then + difficultyString = self:CreateFractionString(raidInfo.defeatedEncounters, raidInfo.numEncounters) + else + difficultyString = string.format( + "%s %s", + PermoksAccountManager.raidDifficultyLabels[difficulty], + self:CreateFractionString(raidInfo.defeatedEncounters, raidInfo.numEncounters) + ) + end + + raidString = + string.format("%s%s%s", raidString, difficultyString, difficulty == highestDifficulty and "" or " ") + end + else + local raidInfo = savedInfo[highestDifficulty] + if not raidInfo then + return + end + local raidDifficulty = raidInfo.difficulty:sub(1, 1) + + -- for retail we only want to show the highest difficulty + raidString = string.format( + "%s%s", + self:CreateFractionString(raidInfo.defeatedEncounters, raidInfo.numEncounters), + hideDifficulty and "" or raidDifficulty + ) + end + + return raidString end function PermoksAccountManager:DungeonTooltip_OnEnter(button, alt_data) - if not alt_data or not alt_data.instanceInfo then - return - end - local dungeonInfo = alt_data.instanceInfo.dungeons - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 3, 'LEFT', 'CENTER', 'RIGHT') - button.tooltip = tooltip - - for key, value in self.spairs( - self.dungeons, - function(t, a, b) - return t[a] < t[b] - end - ) do - local left = self.isCata and key or value - local info = self.isCata and dungeonInfo[value] or dungeonInfo[key] - local right = '|cffff0000-|r' - - if info then - right = self:CreateQuestString(info.defeatedEncounters, info.numEncounters, true) - end - tooltip:AddLine(left, ' ', right) - end - - tooltip:SmartAnchorTo(button) - tooltip:Show() + if not alt_data or not alt_data.instanceInfo then + return + end + local dungeonInfo = alt_data.instanceInfo.dungeons + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 3, "LEFT", "CENTER", "RIGHT") + button.tooltip = tooltip + + for key, value in + self.spairs(self.dungeons, function(t, a, b) + return t[a] < t[b] + end) + do + local left = self.isCata and key or value + local info = self.isCata and dungeonInfo[value] or dungeonInfo[key] + local right = "|cffff0000-|r" + + if info then + right = self:CreateQuestString(info.defeatedEncounters, info.numEncounters, true) + end + tooltip:AddLine(left, " ", right) + end + + tooltip:SmartAnchorTo(button) + tooltip:Show() end local function RetailRaid_OnEnter(tooltip, altData, dbInfo, raidInfo) - local self = PermoksAccountManager - - local raidActivityInfo = altData.raidActivityInfo - local localRaidActivityInfo = {} - for _, info in pairs(raidActivityInfo) do - if info.instanceID == dbInfo.instanceID then - localRaidActivityInfo[info.uiOrder] = info - end - end - - for difficulty, info in self.spairs( - raidInfo, - function(_, a, b) - if a == 17 or b == 17 then - return b < a - else - return a < b - end - end - ) do - tooltip:AddLine(info.difficulty .. ':', self:CreateQuestString(info.defeatedEncounters, info.numEncounters)) - - if info.defeatedEncountersInfo and difficulty < 17 then - local bossIndex = 1 - for index = dbInfo.startIndex, dbInfo.endIndex do - local bossInfo = info.defeatedEncountersInfo[index] - local text = L['Unsaved'] - local color = "00ff00" - - if difficulty == 16 and localRaidActivityInfo[bossIndex] and localRaidActivityInfo[bossIndex].bestDifficulty == difficulty then - text = L['Killed'] - color = "ff0000" - elseif bossInfo then - text = L['Saved'] - color = "ff9933" - end - - tooltip:AddLine(bossIndex .. " " .. EJ_GetEncounterInfo(localRaidActivityInfo[bossIndex].encounterID), string.format("|cff%s%s|r", color, text)) - bossIndex = bossIndex + 1 - end - end - tooltip:AddSeparator(2, 1, 1, 1) - end + local self = PermoksAccountManager + + local raidActivityInfo = altData.raidActivityInfo + local localRaidActivityInfo = {} + for _, info in pairs(raidActivityInfo) do + if info.instanceID == dbInfo.instanceID then + localRaidActivityInfo[info.uiOrder] = info + end + end + + for difficulty, info in + self.spairs(raidInfo, function(_, a, b) + if a == 17 or b == 17 then + return b < a + else + return a < b + end + end) + do + tooltip:AddLine(info.difficulty .. ":", self:CreateQuestString(info.defeatedEncounters, info.numEncounters)) + + if info.defeatedEncountersInfo and difficulty < 17 then + local bossIndex = 1 + for index = dbInfo.startIndex, dbInfo.endIndex do + local bossInfo = info.defeatedEncountersInfo[index] + local text = L["Unsaved"] + local color = "00ff00" + + if + difficulty == 16 + and localRaidActivityInfo[bossIndex] + and localRaidActivityInfo[bossIndex].bestDifficulty == difficulty + then + text = L["Killed"] + color = "ff0000" + elseif bossInfo then + text = L["Saved"] + color = "ff9933" + end + + tooltip:AddLine( + bossIndex .. " " .. EJ_GetEncounterInfo(localRaidActivityInfo[bossIndex].encounterID), + string.format("|cff%s%s|r", color, text) + ) + bossIndex = bossIndex + 1 + end + end + tooltip:AddSeparator(2, 1, 1, 1) + end end local function WOTLKRaid_OnEnter(tooltip, raidInfo) - local self = PermoksAccountManager - - for _, info in self.spairs(raidInfo, function(_, a, b) return a < b end) do - tooltip:AddLine(info.difficulty .. ':', self:CreateQuestString(info.defeatedEncounters, info.numEncounters)) - - if info.defeatedEncountersInfo then - for bossIndex = 1, info.numEncounters do - - local bossName = info.defeatedEncountersInfo[bossIndex] and info.defeatedEncountersInfo[bossIndex].name - local text = L['Alive'] - local color = "00ff00" - - if info.defeatedEncountersInfo[bossIndex] and info.defeatedEncountersInfo[bossIndex].isKilled then - text = L['Killed'] - color = "ff0000" - end - - tooltip:AddLine(bossName or L['Unknown'], string.format("|cff%s%s|r", color, text)) - bossIndex = bossIndex + 1 - end - end - tooltip:AddSeparator(2, 1, 1, 1) - end + local self = PermoksAccountManager + + for _, info in + self.spairs(raidInfo, function(_, a, b) + return a < b + end) + do + tooltip:AddLine(info.difficulty .. ":", self:CreateQuestString(info.defeatedEncounters, info.numEncounters)) + + if info.defeatedEncountersInfo then + for bossIndex = 1, info.numEncounters do + local bossName = info.defeatedEncountersInfo[bossIndex] and info.defeatedEncountersInfo[bossIndex].name + local text = L["Alive"] + local color = "00ff00" + + if info.defeatedEncountersInfo[bossIndex] and info.defeatedEncountersInfo[bossIndex].isKilled then + text = L["Killed"] + color = "ff0000" + end + + tooltip:AddLine(bossName or L["Unknown"], string.format("|cff%s%s|r", color, text)) + bossIndex = bossIndex + 1 + end + end + tooltip:AddSeparator(2, 1, 1, 1) + end end function PermoksAccountManager.RaidTooltip_OnEnter(button, altData, labelRow) - local self = PermoksAccountManager - - if not altData.instanceInfo or (not self.raids[labelRow.id] and not self.raids[labelRow.label]) then - return - end - - local dbInfo = self.raids[labelRow.id] or self.raids[labelRow.label] - local raidInfo = dbInfo and altData.instanceInfo.raids[dbInfo.englishID] - if not raidInfo then return end - - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') - button.tooltip = tooltip - - tooltip:AddHeader(dbInfo.name or labelRow.label) - tooltip:AddLine('') - - if self.isCata then - WOTLKRaid_OnEnter(tooltip, raidInfo) - elseif not self.isBC and self.isRetail then - RetailRaid_OnEnter(tooltip, altData, dbInfo, raidInfo) - end - - tooltip:SmartAnchorTo(button) - tooltip:Show() + local self = PermoksAccountManager + + if not altData.instanceInfo or (not self.raids[labelRow.id] and not self.raids[labelRow.label]) then + return + end + + local dbInfo = self.raids[labelRow.id] or self.raids[labelRow.label] + local raidInfo = dbInfo and altData.instanceInfo.raids[dbInfo.englishID] + if not raidInfo then + return + end + + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "RIGHT") + button.tooltip = tooltip + + tooltip:AddHeader(dbInfo.name or labelRow.label) + tooltip:AddLine("") + + if self.isCata then + WOTLKRaid_OnEnter(tooltip, raidInfo) + elseif not self.isBC and self.isRetail then + RetailRaid_OnEnter(tooltip, altData, dbInfo, raidInfo) + end + + tooltip:SmartAnchorTo(button) + tooltip:Show() end diff --git a/modules/items.lua b/modules/items.lua index ff2c710..57892c5 100644 --- a/modules/items.lua +++ b/modules/items.lua @@ -314,12 +314,12 @@ local labelRows = { -- 11.1 spark_current = { - label = 'Spark - Fortunes', + label = 'Spark - Radiance', type = 'spark', passRow = true, - key = 231756, - reagent = 231757, - reagentRequired = 2, + key = 232875, + -- reagent = 231757, + -- reagentRequired = 2, group = 'item', version = WOW_PROJECT_MAINLINE }, diff --git a/modules/quests.lua b/modules/quests.lua index 603c7fc..88c81cb 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1334,7 +1334,49 @@ local labelRows = { required = 2, version = WOW_PROJECT_MAINLINE }, - + + -- 12.0 + saltherils_soiree = { + IDS = {90573, 90574, 90575, 90576}, + label = 'Soiree (Eversong)', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + warband = true, + version = WOW_PROJECT_MAINLINE + }, + abundance = { + IDS = {89507}, + label = 'Abundance (Zul\'Aman)', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + warband = true, + version = WOW_PROJECT_MAINLINE + }, + lost_legends = { + IDS = {89268}, + label = 'Legends (Harandar1)', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + warband = true, + version = WOW_PROJECT_MAINLINE + }, + stormarion_assault = { + IDS = {89507}, + label = 'Assault (Voidstorm)', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + warband = true, + version = WOW_PROJECT_MAINLINE + }, + --wotlk general_dailies = { label = 'General', diff --git a/options.lua b/options.lua index 6474afb..a421228 100644 --- a/options.lua +++ b/options.lua @@ -1,13 +1,13 @@ local addonName, PermoksAccountManager = ... -local L = LibStub('AceLocale-3.0'):GetLocale(addonName) -local AceConfig = LibStub('AceConfig-3.0') -local AceConfigDialog = LibStub('AceConfigDialog-3.0') -local AceConfigRegistry = LibStub('AceConfigRegistry-3.0') -local AceGUI = LibStub('AceGUI-3.0') -local LibIcon = LibStub('LibDBIcon-1.0') -local LibDeflate = LibStub('LibDeflate') -local LibSerialize = LibStub('LibSerialize') -local LSM = LibStub('LibSharedMedia-3.0') +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) +local AceConfig = LibStub("AceConfig-3.0") +local AceConfigDialog = LibStub("AceConfigDialog-3.0") +local AceConfigRegistry = LibStub("AceConfigRegistry-3.0") +local AceGUI = LibStub("AceGUI-3.0") +local LibIcon = LibStub("LibDBIcon-1.0") +local LibDeflate = LibStub("LibDeflate") +local LibSerialize = LibStub("LibSerialize") +local LSM = LibStub("LibSharedMedia-3.0") local options local imexport @@ -17,75 +17,74 @@ local custom_categories local default_categories = PermoksAccountManager:getDefaultCategories() local function changeAccountName(accountKey, name) - local account = PermoksAccountManager.db.global.accounts[accountKey] - if account then - account.name = name - PermoksAccountManager:UpdateAccountButtons() - end + local account = PermoksAccountManager.db.global.accounts[accountKey] + if account then + account.name = name + PermoksAccountManager:UpdateAccountButtons() + end end local function UnsyncAccount(accountKey) - options.args.sync.args.syncedAccounts.args[accountKey] = nil - PermoksAccountManager:UnsyncAccount(accountKey) + options.args.sync.args.syncedAccounts.args[accountKey] = nil + PermoksAccountManager:UnsyncAccount(accountKey) - AceConfigRegistry:NotifyChange(addonName) + AceConfigRegistry:NotifyChange(addonName) end function PermoksAccountManager:AddAccountToOptions(accountKey) - if not options.args.sync.args.syncedAccounts.args[accountKey] then - options.args.sync.args.syncedAccounts.args[accountKey] = { - type = 'group', - name = '', - inline = true, - args = { - name = { - order = 1, - type = 'input', - name = L['Rename'], - desc = nil, - get = function(info) - local accountKey = info[#info - 1] - return PermoksAccountManager.db.global.accounts[accountKey].name - end, - set = function(info, value) - local accountKey = info[#info - 1] - changeAccountName(accountKey, value) - end - }, - unsync = { - order = 3, - type = 'execute', - name = L['Delete'], - func = function(info) - local accountKey = info[#info - 1] - UnsyncAccount(accountKey) - end, - confirm = true, - confirmText = L['Are you sure?'] - } - } - } - end + if not options.args.sync.args.syncedAccounts.args[accountKey] then + options.args.sync.args.syncedAccounts.args[accountKey] = { + type = "group", + name = "", + inline = true, + args = { + name = { + order = 1, + type = "input", + name = L["Rename"], + desc = nil, + get = function(info) + local accountKey = info[#info - 1] + return PermoksAccountManager.db.global.accounts[accountKey].name + end, + set = function(info, value) + local accountKey = info[#info - 1] + changeAccountName(accountKey, value) + end, + }, + unsync = { + order = 3, + type = "execute", + name = L["Delete"], + func = function(info) + local accountKey = info[#info - 1] + UnsyncAccount(accountKey) + end, + confirm = true, + confirmText = L["Are you sure?"], + }, + }, + } + end end local function AddAccounts() - for account, _ in pairs(PermoksAccountManager.db.global.accounts) do - if account ~= 'main' then - PermoksAccountManager:AddAccountToOptions(account) - end - end + for account, _ in pairs(PermoksAccountManager.db.global.accounts) do + if account ~= "main" then + PermoksAccountManager:AddAccountToOptions(account) + end + end end local function GetAccountSyncDescription() - local comment = 'THIS ONLY WORKS ON CONNECTED REALMS' - local first = 'Enter the necessary info of a currently online character of the second account.' - local second = 'Press the Sync Button.' - local third = 'Follow the instruction in the chat on the second account.' + local comment = "THIS ONLY WORKS ON CONNECTED REALMS" + local first = "Enter the necessary info of a currently online character of the second account." + local second = "Press the Sync Button." + local third = "Follow the instruction in the chat on the second account." - return string.format('|cffff0000%s|r\nSteps:\n1 - %s\n2 - %s\n3 - %s', comment, first, second, third) + return string.format("|cffff0000%s|r\nSteps:\n1 - %s\n2 - %s\n3 - %s", comment, first, second, third) end - local function RemoveCharacterFromOptions(altGUID) options.args.characters.args.customCharacterOrder.args[altGUID] = nil end @@ -93,8 +92,14 @@ end ---comment ---@param altGUID string function PermoksAccountManager:AddCharacterToOrderOptions(altGUID, altData, accountName) - local coloredName = altData.class and RAID_CLASS_COLORS[altData.class]:WrapTextInColorCode((altData.name or "") .. ((altData.realm and "-" .. altData.realm) or "")) or "" - local factionIcon = altData.faction and altData.faction ~= "Neutral" and ("|T%s:%d:%d|t"):format(FACTION_LOGO_TEXTURES[PLAYER_FACTION_GROUP[altData.faction]], 0, 0) + local coloredName = altData.class + and RAID_CLASS_COLORS[altData.class]:WrapTextInColorCode( + (altData.name or "") .. ((altData.realm and "-" .. altData.realm) or "") + ) + or "" + local factionIcon = altData.faction + and altData.faction ~= "Neutral" + and ("|T%s:%d:%d|t"):format(FACTION_LOGO_TEXTURES[PLAYER_FACTION_GROUP[altData.faction]], 0, 0) options.args.characters.args.customCharacterOrder.args[altGUID] = { order = altData.order, @@ -105,1056 +110,1074 @@ function PermoksAccountManager:AddCharacterToOrderOptions(altGUID, altData, acco args = { order = { order = 1, - type = 'input', - name = 'Order', - width = 'half', - disabled = function() - return PermoksAccountManager.db.global.options.characters.sortBy ~= 'order' - end + type = "input", + name = "Order", + width = "half", + disabled = function() + return PermoksAccountManager.db.global.options.characters.sortBy ~= "order" + end, }, remove = { order = 2, - type = 'execute', - name = 'Remove', + type = "execute", + name = "Remove", width = 0.9, func = function(info) - PermoksAccountManager:RemoveCharacter(info[#info-1]) - RemoveCharacterFromOptions(info[#info-1]) + PermoksAccountManager:RemoveCharacter(info[#info - 1]) + RemoveCharacterFromOptions(info[#info - 1]) end, confirm = true, - confirmText = 'Are you sure you want to remove this character?', + confirmText = "Are you sure you want to remove this character?", }, [accountName] = { - order = 3, - type = 'execute', - name = 'Filter', + order = 3, + type = "execute", + name = "Filter", width = 0.9, func = function(info) - PermoksAccountManager:AddChracterToFilterFromOptions(info[#info-1], info[#info]) - RemoveCharacterFromOptions(info[#info-1]) + PermoksAccountManager:AddChracterToFilterFromOptions(info[#info - 1], info[#info]) + RemoveCharacterFromOptions(info[#info - 1]) end, confirm = true, - confirmText = 'Do you really want to remove this character and add him to the filter?' - }, - } - } + confirmText = "Do you really want to remove this character and add him to the filter?", + }, + }, + } end -- credit to the author of Shadowed Unit Frames local function selectDifferentTab(group, key) - AceConfigDialog.Status[addonName].children.categories.children[group].status.groups.selected = key - AceConfigRegistry:NotifyChange(addonName) + AceConfigDialog.Status[addonName].children.categories.children[group].status.groups.selected = key + AceConfigRegistry:NotifyChange(addonName) end local function deleteCustomCategory(category) - local categoryButtons = PermoksAccountManager.managerFrame.categoryButtons - local categoryFrame = PermoksAccountManager.categoryFrame - - if categoryFrame and categoryButtons then - if categoryFrame.openCategory and categoryFrame.openCategory == category then - PermoksAccountManager:UpdateCategory(categoryButtons[category], 'open', nil, category) - categoryFrame.labelColumn.categories[category] = nil - end - - if categoryButtons[category] then - categoryButtons[category]:Hide() - categoryButtons[category] = nil - end - end - - if PermoksAccountManager.db.global.custom then - custom_categories[category] = nil - options.args.categories.args.custom_categories_toggles.args[category] = nil - options.args.categories.args.customCategories.args[category] = nil - options.args.order.args.customCategories.args[category] = nil - options.args.order.args.customCategoriesOrder.args[category] = nil - selectDifferentTab('customCategories', 'create') - else - PermoksAccountManager.db.global.currentCategories[category] = nil - options.args.categories.args.default_categories_toggles.args[category] = nil - options.args.categories.args.defaultCategories.args[category] = nil - options.args.order.args.defaultCategories.args[category] = nil - options.args.order.args.defaultCategoriesOrder.args[category] = nil - selectDifferentTab('defaultCategories', 'create') - end - - PermoksAccountManager.numCategories = PermoksAccountManager.numCategories - 1 + local categoryButtons = PermoksAccountManager.managerFrame.categoryButtons + local categoryFrame = PermoksAccountManager.categoryFrame + + if categoryFrame and categoryButtons then + if categoryFrame.openCategory and categoryFrame.openCategory == category then + PermoksAccountManager:UpdateCategory(categoryButtons[category], "open", nil, category) + categoryFrame.labelColumn.categories[category] = nil + end + + if categoryButtons[category] then + categoryButtons[category]:Hide() + categoryButtons[category] = nil + end + end + + if PermoksAccountManager.db.global.custom then + custom_categories[category] = nil + options.args.categories.args.custom_categories_toggles.args[category] = nil + options.args.categories.args.customCategories.args[category] = nil + options.args.order.args.customCategories.args[category] = nil + options.args.order.args.customCategoriesOrder.args[category] = nil + selectDifferentTab("customCategories", "create") + else + PermoksAccountManager.db.global.currentCategories[category] = nil + options.args.categories.args.default_categories_toggles.args[category] = nil + options.args.categories.args.defaultCategories.args[category] = nil + options.args.order.args.defaultCategories.args[category] = nil + options.args.order.args.defaultCategoriesOrder.args[category] = nil + selectDifferentTab("defaultCategories", "create") + end + + PermoksAccountManager.numCategories = PermoksAccountManager.numCategories - 1 end local function sortCategoryChilds(optionsTable, category) - local category = PermoksAccountManager.db.global.options[optionsTable][category] - table.sort( - category.childs, - function(a, b) - return category.childOrder[a] < category.childOrder[b] - end - ) + local category = PermoksAccountManager.db.global.options[optionsTable][category] + table.sort(category.childs, function(a, b) + return category.childOrder[a] < category.childOrder[b] + end) end local function setCategoryOrder(info, value) - local category = info[#info] - local optionsTable = info[#info - 1] - local newOrder = tonumber(value) + local category = info[#info] + local optionsTable = info[#info - 1] + local newOrder = tonumber(value) - PermoksAccountManager.db.global.options[optionsTable:gsub('Order', '')][category].order = newOrder - options.args.order.args[optionsTable].args[category].order = newOrder - AceConfigRegistry:NotifyChange(addonName) + PermoksAccountManager.db.global.options[optionsTable:gsub("Order", "")][category].order = newOrder + options.args.order.args[optionsTable].args[category].order = newOrder + AceConfigRegistry:NotifyChange(addonName) end local function getCategoryOrder(info) - local category = info[#info] - local optionsTable = info[#info - 1] - return tostring(PermoksAccountManager.db.global.options[optionsTable:gsub('Order', '')][category].order) + local category = info[#info] + local optionsTable = info[#info - 1] + return tostring(PermoksAccountManager.db.global.options[optionsTable:gsub("Order", "")][category].order) end local function setOrder(info, value) - local key = info[#info] - local category = info[#info - 1] - local optionsTable = info[#info - 2] - local newOrder = tonumber(value) - local categoryOptions = PermoksAccountManager.db.global.options[optionsTable][category] - - categoryOptions.childOrder[key] = newOrder - sortCategoryChilds(optionsTable, category) - for i, child in pairs(categoryOptions.childs) do + local key = info[#info] + local category = info[#info - 1] + local optionsTable = info[#info - 2] + local newOrder = tonumber(value) + local categoryOptions = PermoksAccountManager.db.global.options[optionsTable][category] + + categoryOptions.childOrder[key] = newOrder + sortCategoryChilds(optionsTable, category) + for i, child in pairs(categoryOptions.childs) do if options.args.order.args[optionsTable].args[category].args[child] then - options.args.order.args[optionsTable].args[category].args[child].order = i + options.args.order.args[optionsTable].args[category].args[child].order = i end - end + end - AceConfigRegistry:NotifyChange(addonName) - PermoksAccountManager:UpdateAnchorsAndSize(category, nil, true, true) + AceConfigRegistry:NotifyChange(addonName) + PermoksAccountManager:UpdateAnchorsAndSize(category, nil, true, true) end local function getOrder(info) - local key = info[#info] - local category = info[#info - 1] - local optionsTable = info[#info - 2] - return tostring(PermoksAccountManager.db.global.options[optionsTable][category].childOrder[key]) + local key = info[#info] + local category = info[#info - 1] + local optionsTable = info[#info - 2] + return tostring(PermoksAccountManager.db.global.options[optionsTable][category].childOrder[key]) end local function setCategoryChildOption(info, value) - local key = info[#info] - local category = info[3] - local categoryType = info[2] - local categoryOptionsTbl = PermoksAccountManager.db.global.options[categoryType] - - local childs = categoryOptionsTbl[category].childs - local optionsOrderConfig = options.args.order.args[categoryType].args - if not value and categoryOptionsTbl[category].childOrder[key] then - tDeleteItem(childs, key) - - local i = 1 - for _, child in pairs(childs) do - categoryOptionsTbl[category].childOrder[child] = i - i = i + 1 - end - - categoryOptionsTbl[category].childOrder[key] = nil - optionsOrderConfig[category].args[key] = nil - elseif value and not tContains(childs, key) then - local order = (#childs + 1) - tinsert(childs, order, key) - - categoryOptionsTbl[category].childOrder[key] = order - - optionsOrderConfig[category].args[key] = { - order = order, - type = 'input', - name = PermoksAccountManager.labelRows[key].label, - width = 'half' - } - elseif categoryType == 'customCategories' then - categoryOptionsTbl[category].childOrder[key] = value - optionsOrderConfig[category].args[key] = nil - end - - PermoksAccountManager:UpdateAnchorsAndSize(category, nil, true, true) + local key = info[#info] + local category = info[3] + local categoryType = info[2] + local categoryOptionsTbl = PermoksAccountManager.db.global.options[categoryType] + + local childs = categoryOptionsTbl[category].childs + local optionsOrderConfig = options.args.order.args[categoryType].args + if not value and categoryOptionsTbl[category].childOrder[key] then + tDeleteItem(childs, key) + + local i = 1 + for _, child in pairs(childs) do + categoryOptionsTbl[category].childOrder[child] = i + i = i + 1 + end + + categoryOptionsTbl[category].childOrder[key] = nil + optionsOrderConfig[category].args[key] = nil + elseif value and not tContains(childs, key) then + local order = (#childs + 1) + tinsert(childs, order, key) + + categoryOptionsTbl[category].childOrder[key] = order + + optionsOrderConfig[category].args[key] = { + order = order, + type = "input", + name = PermoksAccountManager.labelRows[key].label, + width = "half", + } + elseif categoryType == "customCategories" then + categoryOptionsTbl[category].childOrder[key] = value + optionsOrderConfig[category].args[key] = nil + end + + PermoksAccountManager:UpdateAnchorsAndSize(category, nil, true, true) end local function getCategoryChildOption(info) - local key = info[#info] - local categoryType = info[2] - local category = info[3] + local key = info[#info] + local categoryType = info[2] + local category = info[3] - local value = PermoksAccountManager.db.global.options[categoryType][category].childOrder[key] - return type(value) == 'number' or (type(value) == 'boolean' and value) + local value = PermoksAccountManager.db.global.options[categoryType][category].childOrder[key] + return type(value) == "number" or (type(value) == "boolean" and value) end local function addCategoryToggle(optionsTable, category, name, order) - options.args.categories.args[optionsTable].args[category] = { - order = order, - type = 'toggle', - name = name - } + options.args.categories.args[optionsTable].args[category] = { + order = order, + type = "toggle", + name = name, + } end local function addCategoryOptions(optionsTable, args, category, name, order) - options.args.categories.args[optionsTable].args[category] = { - order = order, - type = 'group', - name = name, - hidden = function() - return not PermoksAccountManager.db.global.options[optionsTable][category].enabled - end, - args = args or PermoksAccountManager:GetCustomLabelTable() - } - - options.args.order.args[optionsTable].args[category] = { - order = order, - type = 'group', - name = name, - hidden = function() - return not PermoksAccountManager.db.global.options[optionsTable][category].enabled - end, - args = {} - } + options.args.categories.args[optionsTable].args[category] = { + order = order, + type = "group", + name = name, + hidden = function() + return not PermoksAccountManager.db.global.options[optionsTable][category].enabled + end, + args = args or PermoksAccountManager:GetCustomLabelTable(), + } + + options.args.order.args[optionsTable].args[category] = { + order = order, + type = "group", + name = name, + hidden = function() + return not PermoksAccountManager.db.global.options[optionsTable][category].enabled + end, + args = {}, + } end local function createOrderOptionsForCategory(categoryOptions, optionsTable, category) - if not categoryOptions.hideToggle then - options.args.order.args[optionsTable .. 'Order'].args[category] = { - order = categoryOptions.order, - type = 'input', - name = categoryOptions.name, - width = 'half' - } - end - - table.sort( - categoryOptions.childs, - function(a, b) - if a and b then - return (categoryOptions.childOrder[a] or 0) < (categoryOptions.childOrder[b] or 0) - end - end - ) - - for i, child in pairs(categoryOptions.childs) do - local name = PermoksAccountManager.labelRows[child] and PermoksAccountManager.labelRows[child].label - if name then - options.args.order.args[optionsTable].args[category].args[child] = { - order = i, - type = 'input', - name = name, - width = 'half' - } - end - end + if not categoryOptions.hideToggle then + options.args.order.args[optionsTable .. "Order"].args[category] = { + order = categoryOptions.order, + type = "input", + name = categoryOptions.name, + width = "half", + } + end + + table.sort(categoryOptions.childs, function(a, b) + if a and b then + return (categoryOptions.childOrder[a] or 0) < (categoryOptions.childOrder[b] or 0) + end + end) + + for i, child in pairs(categoryOptions.childs) do + local name = PermoksAccountManager.labelRows[child] and PermoksAccountManager.labelRows[child].label + if name then + options.args.order.args[optionsTable].args[category].args[child] = { + order = i, + type = "input", + name = name, + width = "half", + } + end + end end local function addCustomCategory(category, name, isDefault) - if isDefault then - local currentCategories = PermoksAccountManager.db.global.currentCategories - if not currentCategories[category].name then - PermoksAccountManager.numCategories = PermoksAccountManager.numCategories + 1 - local order = PermoksAccountManager.numCategories - - currentCategories[category] = { - name = name, - childs = {}, - childOrder = {}, - order = order, - hideToggle = false, - enabled = true, - } - - addCategoryToggle('default_categories_toggles', category, name, order) - addCategoryOptions('defaultCategories', nil, category, name, order) - createOrderOptionsForCategory(PermoksAccountManager.db.global.options.defaultCategories[category], 'defaultCategories', category) - - selectDifferentTab('defaultCategories', category) - PermoksAccountManager:UpdateOrCreateCategoryButtons() - end - elseif not custom_categories[category].name then - if PermoksAccountManager.db.global.custom then - PermoksAccountManager.numCategories = PermoksAccountManager.numCategories + 1 - end - local order = PermoksAccountManager.numCategories - - custom_categories[category].order = order - custom_categories[category].name = name - - addCategoryToggle('custom_categories_toggles', category, name, order) - addCategoryOptions('customCategories', nil, category, name, order) - createOrderOptionsForCategory(PermoksAccountManager.db.global.options.customCategories[category], 'customCategories', category) - - selectDifferentTab('customCategories', category) - PermoksAccountManager:UpdateOrCreateCategoryButtons() - end + if isDefault then + local currentCategories = PermoksAccountManager.db.global.currentCategories + if not currentCategories[category].name then + PermoksAccountManager.numCategories = PermoksAccountManager.numCategories + 1 + local order = PermoksAccountManager.numCategories + + currentCategories[category] = { + name = name, + childs = {}, + childOrder = {}, + order = order, + hideToggle = false, + enabled = true, + } + + addCategoryToggle("default_categories_toggles", category, name, order) + addCategoryOptions("defaultCategories", nil, category, name, order) + createOrderOptionsForCategory( + PermoksAccountManager.db.global.options.defaultCategories[category], + "defaultCategories", + category + ) + + selectDifferentTab("defaultCategories", category) + PermoksAccountManager:UpdateOrCreateCategoryButtons() + end + elseif not custom_categories[category].name then + if PermoksAccountManager.db.global.custom then + PermoksAccountManager.numCategories = PermoksAccountManager.numCategories + 1 + end + local order = PermoksAccountManager.numCategories + + custom_categories[category].order = order + custom_categories[category].name = name + + addCategoryToggle("custom_categories_toggles", category, name, order) + addCategoryOptions("customCategories", nil, category, name, order) + createOrderOptionsForCategory( + PermoksAccountManager.db.global.options.customCategories[category], + "customCategories", + category + ) + + selectDifferentTab("customCategories", category) + PermoksAccountManager:UpdateOrCreateCategoryButtons() + end end local function createDefaultOptions() - local numCategories = 0 - - for category, info in pairs(PermoksAccountManager.db.global.options.defaultCategories) do - if not info.hideToggle then - if PermoksAccountManager.db.global.options.defaultCategories[category].enabled then - numCategories = numCategories + 1 - end - addCategoryToggle('default_categories_toggles', category, info.name, info.order) - end - - local args = {} - if category == 'general' or not default_categories[category] then - args = nil - else - if info.childs then - for i, child in pairs(info.childs) do - if PermoksAccountManager.labelRows[child] and not PermoksAccountManager.labelRows[child].hideOption then - args[child] = { - order = i, - type = 'toggle', - name = PermoksAccountManager.labelRows[child].label - } - end - end - end - end + local numCategories = 0 + + for category, info in pairs(PermoksAccountManager.db.global.options.defaultCategories) do + if not info.hideToggle then + if PermoksAccountManager.db.global.options.defaultCategories[category].enabled then + numCategories = numCategories + 1 + end + addCategoryToggle("default_categories_toggles", category, info.name, info.order) + end - if not PermoksAccountManager.db.global.options.defaultCategories[category].childs then - PermoksAccountManager:UpdateDefaultCategories(category) - end + local args = {} + if category == "general" or not default_categories[category] then + args = nil + else + if info.childs then + for i, child in pairs(info.childs) do + if + PermoksAccountManager.labelRows[child] and not PermoksAccountManager.labelRows[child].hideOption + then + args[child] = { + order = i, + type = "toggle", + name = PermoksAccountManager.labelRows[child].label, + } + end + end + end + end - addCategoryOptions('defaultCategories', args, category, info.name, info.order) - createOrderOptionsForCategory(PermoksAccountManager.db.global.options.defaultCategories[category], 'defaultCategories', category) - end + if not PermoksAccountManager.db.global.options.defaultCategories[category].childs then + PermoksAccountManager:UpdateDefaultCategories(category) + end - return numCategories + addCategoryOptions("defaultCategories", args, category, info.name, info.order) + createOrderOptionsForCategory( + PermoksAccountManager.db.global.options.defaultCategories[category], + "defaultCategories", + category + ) + end + + return numCategories end local function createCustomOptions() - local numCategories = 0 + local numCategories = 0 - for category, info in pairs(custom_categories) do - if not info.hideToggle then - numCategories = numCategories + 1 - addCategoryToggle('custom_categories_toggles', category, info.name, info.order) - end + for category, info in pairs(custom_categories) do + if not info.hideToggle then + numCategories = numCategories + 1 + addCategoryToggle("custom_categories_toggles", category, info.name, info.order) + end - addCategoryOptions('customCategories', nil, category, info.name, info.order) - createOrderOptionsForCategory(PermoksAccountManager.db.global.options.customCategories[category], 'customCategories', category) - end + addCategoryOptions("customCategories", nil, category, info.name, info.order) + createOrderOptionsForCategory( + PermoksAccountManager.db.global.options.customCategories[category], + "customCategories", + category + ) + end - return numCategories + return numCategories end local labelData = {} local function EditCustomLabel(labelInfo, labelOptionsInfo) - labelData = labelInfo - labelData.oldId = labelOptionsInfo[#labelOptionsInfo] - AceConfigRegistry:NotifyChange(addonName) + labelData = labelInfo + labelData.oldId = labelOptionsInfo[#labelOptionsInfo] + AceConfigRegistry:NotifyChange(addonName) end local function CreateCustomLabelQuestKey(name) - return name:lower():gsub(" ", "_") + return name:lower():gsub(" ", "_") end local function CreateCustomLabelButton(labelInfo, options, labelOptionsTbl, labelIdentifier) - local labelIdentifier = labelIdentifier or labelInfo.labelIdentifier or string.format('custom_%s', labelInfo.name:lower()) - if PermoksAccountManager.labelRows[labelIdentifier] then - PermoksAccountManager:Print(labelInfo.name .. ' already exists as a custom label.') - return - end - - labelOptionsTbl.args[labelInfo.id] = { - type = 'execute', - name = labelInfo.name, - labelIdentifier = labelIdentifier, - func = function(info) - EditCustomLabel(labelInfo, info) - end - } - - labelInfo.labelIdentifier = labelIdentifier - options[labelInfo.id] = labelInfo - PermoksAccountManager.labelRows[labelIdentifier] = { - label = labelInfo.name, - type = labelInfo.type, - customId = labelInfo.id, - key = labelInfo.type ~= 'quest' and labelInfo.id or nil, - group = labelInfo.type ~= 'quest' and labelInfo.type or string.format("reset%s%s", labelInfo.reset:sub(1,1):upper(), labelInfo.reset:sub(2)), - tooltip = labelInfo.type == 'item', - version = WOW_PROJECT_ID - } - - if labelInfo.type == 'item' then - PermoksAccountManager.item[labelInfo.id] = {key = labelIdentifier} - - local module, charInfo = PermoksAccountManager:GetPAMModule('items') - if module and charInfo then - module.update(charInfo) - end - elseif labelInfo.type == 'currency' then - PermoksAccountManager.currency[labelInfo.id] = 0 - - local module, charInfo = PermoksAccountManager:GetPAMModule('currencies') - if module and charInfo then - module.update(charInfo) - end - elseif labelInfo.type == 'quest' then - local key = CreateCustomLabelQuestKey(labelInfo.name) - if not PermoksAccountManager.quests[key] then - PermoksAccountManager.quests[key] = {} - PermoksAccountManager.quests[key][labelInfo.id] = {questType = labelInfo.reset, log = not labelInfo.hidden} - - local module, charInfo = PermoksAccountManager:GetPAMModule('quests') - if module and charInfo then - module.update(charInfo) - end - else - PermoksAccountManager:Print(labelInfo.name .. " already exists. Please choose a different one.") - end - end + local labelIdentifier = labelIdentifier + or labelInfo.labelIdentifier + or string.format("custom_%s", labelInfo.name:lower()) + if PermoksAccountManager.labelRows[labelIdentifier] then + PermoksAccountManager:Print(labelInfo.name .. " already exists as a custom label.") + return + end + + labelOptionsTbl.args[labelInfo.id] = { + type = "execute", + name = labelInfo.name, + labelIdentifier = labelIdentifier, + func = function(info) + EditCustomLabel(labelInfo, info) + end, + } + + labelInfo.labelIdentifier = labelIdentifier + options[labelInfo.id] = labelInfo + PermoksAccountManager.labelRows[labelIdentifier] = { + label = labelInfo.name, + type = labelInfo.type, + customId = labelInfo.id, + key = labelInfo.type ~= "quest" and labelInfo.id or nil, + group = labelInfo.type ~= "quest" and labelInfo.type + or string.format("reset%s%s", labelInfo.reset:sub(1, 1):upper(), labelInfo.reset:sub(2)), + tooltip = labelInfo.type == "item", + version = WOW_PROJECT_ID, + } + + if labelInfo.type == "item" then + PermoksAccountManager.item[labelInfo.id] = { key = labelIdentifier } + + local module, charInfo = PermoksAccountManager:GetPAMModule("items") + if module and charInfo then + module.update(charInfo) + end + elseif labelInfo.type == "currency" then + PermoksAccountManager.currency[labelInfo.id] = 0 + + local module, charInfo = PermoksAccountManager:GetPAMModule("currencies") + if module and charInfo then + module.update(charInfo) + end + elseif labelInfo.type == "quest" then + local key = CreateCustomLabelQuestKey(labelInfo.name) + if not PermoksAccountManager.quests[key] then + PermoksAccountManager.quests[key] = {} + PermoksAccountManager.quests[key][labelInfo.id] = + { questType = labelInfo.reset, log = not labelInfo.hidden } + + local module, charInfo = PermoksAccountManager:GetPAMModule("quests") + if module and charInfo then + module.update(charInfo) + end + else + PermoksAccountManager:Print(labelInfo.name .. " already exists. Please choose a different one.") + end + end end local function DeleteCustomLabelButton(labelInfo, isUpdate) - local labelOptionsTbl = options.args.add.args[labelInfo.type] - local options = PermoksAccountManager.db.global.options.customLabels[labelInfo.type] - if labelOptionsTbl and options and labelOptionsTbl.args[labelInfo.id] then - local oldLabelOptions = labelOptionsTbl.args[labelInfo.id] - local oldLabeRowInfo = PermoksAccountManager.labelRows[oldLabelOptions.labelIdentifier] - - PermoksAccountManager.labelRows[oldLabelOptions.labelIdentifier] = nil - labelOptionsTbl.args[labelInfo.id] = nil - options[labelInfo.id] = nil - labelData = {} - - if not isUpdate then - PermoksAccountManager:DeleteUnusedLabels(oldLabelOptions.labelIdentifier) - PermoksAccountManager:RemoveIdentifierFromLabelTable(oldLabeRowInfo.type, oldLabelOptions.labelIdentifier) - end - end + local labelOptionsTbl = options.args.add.args[labelInfo.type] + local options = PermoksAccountManager.db.global.options.customLabels[labelInfo.type] + if labelOptionsTbl and options and labelOptionsTbl.args[labelInfo.id] then + local oldLabelOptions = labelOptionsTbl.args[labelInfo.id] + local oldLabeRowInfo = PermoksAccountManager.labelRows[oldLabelOptions.labelIdentifier] + + PermoksAccountManager.labelRows[oldLabelOptions.labelIdentifier] = nil + labelOptionsTbl.args[labelInfo.id] = nil + options[labelInfo.id] = nil + labelData = {} + + if not isUpdate then + PermoksAccountManager:DeleteUnusedLabels(oldLabelOptions.labelIdentifier) + PermoksAccountManager:RemoveIdentifierFromLabelTable(oldLabeRowInfo.type, oldLabelOptions.labelIdentifier) + end + end end local function UpdateCustomLabelButton(labelInfo, options, labelOptionsTbl) - local oldId = labelInfo.oldId - if oldId and labelOptionsTbl.args[oldId] then - local oldlabelOptionsTbl = labelOptionsTbl.args[oldId] - local labelIdentifier = oldlabelOptionsTbl.labelIdentifier or string.format('custom_%s', labelInfo.name:lower()) - - DeleteCustomLabelButton({name = oldlabelOptionsTbl.name, id = oldId, type = labelInfo.type}, true) - CreateCustomLabelButton(labelInfo, options, labelOptionsTbl, labelIdentifier) - end + local oldId = labelInfo.oldId + if oldId and labelOptionsTbl.args[oldId] then + local oldlabelOptionsTbl = labelOptionsTbl.args[oldId] + local labelIdentifier = oldlabelOptionsTbl.labelIdentifier or string.format("custom_%s", labelInfo.name:lower()) + + DeleteCustomLabelButton({ name = oldlabelOptionsTbl.name, id = oldId, type = labelInfo.type }, true) + CreateCustomLabelButton(labelInfo, options, labelOptionsTbl, labelIdentifier) + end end function PermoksAccountManager:AddCustomLabelButton(labelInfo) - local labelOptionsTbl = options.args.add.args[labelInfo.type] - local options = self.db.global.options.customLabels[labelInfo.type] - if labelOptionsTbl and options then - if not labelOptionsTbl.args[labelInfo.id] and not labelOptionsTbl.args[labelInfo.oldId] then - CreateCustomLabelButton(labelInfo, options, labelOptionsTbl) - else - UpdateCustomLabelButton(labelInfo, options, labelOptionsTbl) - end - end + local labelOptionsTbl = options.args.add.args[labelInfo.type] + local options = self.db.global.options.customLabels[labelInfo.type] + if labelOptionsTbl and options then + if not labelOptionsTbl.args[labelInfo.id] and not labelOptionsTbl.args[labelInfo.oldId] then + CreateCustomLabelButton(labelInfo, options, labelOptionsTbl) + else + UpdateCustomLabelButton(labelInfo, options, labelOptionsTbl) + end + end end local function createConfirmPopup() - -- mostly copied from AceConfigDialog-3.0.lua - local frame = CreateFrame('Frame', nil, UIParent) - PermoksAccountManager.confirm = frame - frame:Hide() - frame:SetPoint('CENTER', UIParent, 'CENTER') - frame:SetSize(320, 85) - frame:SetFrameStrata('TOOLTIP') - - local border = CreateFrame('Frame', nil, frame, 'DialogBorderDarkTemplate') - border:SetAllPoints(frame) - - local text = frame:CreateFontString(nil, 'ARTWORK', 'GameFontHighlight') - text:SetSize(290, 0) - text:SetPoint('TOP', 0, -16) - text:SetText('You need to reload the interface to import a profile.') - - local function newButton(text, parent) - local button = AceGUI:Create('Button') - button.frame:SetParent(frame) - button.frame:SetFrameLevel(button.frame:GetFrameLevel() + 1) - button:SetText(text) - return button - end - - local accept = newButton(ACCEPT) - accept:SetPoint('BOTTOMRIGHT', frame, 'BOTTOM', -6, 16) - accept.frame:SetSize(128, 21) - accept.frame:Show() - frame.accept = accept - - local cancel = newButton(CANCEL) - cancel:SetPoint('LEFT', accept.frame, 'RIGHT', 13, 0) - cancel.frame:SetSize(128, 21) - cancel.frame:Show() - cancel:SetCallback( - 'OnClick', - function() - frame:Hide() - end - ) - frame.cancel = cancel + -- mostly copied from AceConfigDialog-3.0.lua + local frame = CreateFrame("Frame", nil, UIParent) + PermoksAccountManager.confirm = frame + frame:Hide() + frame:SetPoint("CENTER", UIParent, "CENTER") + frame:SetSize(320, 85) + frame:SetFrameStrata("TOOLTIP") + + local border = CreateFrame("Frame", nil, frame, "DialogBorderDarkTemplate") + border:SetAllPoints(frame) + + local text = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight") + text:SetSize(290, 0) + text:SetPoint("TOP", 0, -16) + text:SetText("You need to reload the interface to import a profile.") + + local function newButton(text, parent) + local button = AceGUI:Create("Button") + button.frame:SetParent(frame) + button.frame:SetFrameLevel(button.frame:GetFrameLevel() + 1) + button:SetText(text) + return button + end + + local accept = newButton(ACCEPT) + accept:SetPoint("BOTTOMRIGHT", frame, "BOTTOM", -6, 16) + accept.frame:SetSize(128, 21) + accept.frame:Show() + frame.accept = accept + + local cancel = newButton(CANCEL) + cancel:SetPoint("LEFT", accept.frame, "RIGHT", 13, 0) + cancel.frame:SetSize(128, 21) + cancel.frame:Show() + cancel:SetCallback("OnClick", function() + frame:Hide() + end) + frame.cancel = cancel end local function createImportExportFrame(options) - local editGroup = AceGUI:Create('InlineGroup') - editGroup:SetLayout('fill') - editGroup.frame:SetParent(options.frame) - editGroup.frame:SetPoint('BOTTOMLEFT', options.frame, 'BOTTOMLEFT', 17, 52) - editGroup.frame:SetPoint('TOPRIGHT', options.frame, 'TOPRIGHT', -17, -10) - editGroup.frame:Hide() - - local editBox = AceGUI:Create('MultiLineEditBox') - editBox:SetWidth(options.frame:GetWidth() - 20) - editBox:SetLabel('Export Options') - editBox.button:Hide() - editBox.frame:SetClipsChildren(true) - editBox.editBox:SetScript( - 'OnEscapePressed', - function() - editGroup:Close() - end - ) - editGroup:AddChild(editBox) - - local close = AceGUI:Create('Button') - close.frame:SetParent(editGroup.frame) - close:SetPoint('BOTTOMRIGHT', -27, 13) - close.frame:SetFrameLevel(close.frame:GetFrameLevel() + 1) - close:SetHeight(20) - close:SetWidth(100) - close.frame:Hide() - - function editGroup.OpenBox(self, mode) - if mode == 'export' then - editGroup.frame:Show() - - local optionsString = PermoksAccountManager:OptionsToString() - editBox.editBox:SetScript( - 'OnChar', - function() - editBox:SetText(optionsString) - editBox.editBox:HighlightText() - end - ) - editBox.button:Hide() - editBox:SetText(optionsString) - editBox.editBox:HighlightText() - editBox:SetFocus() - close:SetCallback( - 'OnClick', - function() - editGroup:Close(true) - end - ) - close:SetText('Done') - close.frame:Show() - - C_Timer.After( - 0, - function() - options:ReleaseChildren() - end - ) - elseif mode == 'import' then - editBox:SetText('') - editGroup.frame:Show() - editBox:SetFocus() - - close:SetCallback( - 'OnClick', - function() - PermoksAccountManager:ImportOptions(editBox:GetText()) - end - ) - close:SetText('Import') - close.frame:Show() - - C_Timer.After( - 0, - function() - options:ReleaseChildren() - end - ) - end - end - - function editGroup.Close(self, openOptions) - editBox:ClearFocus() - editGroup.frame:Hide() - - if openOptions then - PermoksAccountManager.OpenOptions() - end - end - - return editGroup + local editGroup = AceGUI:Create("InlineGroup") + editGroup:SetLayout("fill") + editGroup.frame:SetParent(options.frame) + editGroup.frame:SetPoint("BOTTOMLEFT", options.frame, "BOTTOMLEFT", 17, 52) + editGroup.frame:SetPoint("TOPRIGHT", options.frame, "TOPRIGHT", -17, -10) + editGroup.frame:Hide() + + local editBox = AceGUI:Create("MultiLineEditBox") + editBox:SetWidth(options.frame:GetWidth() - 20) + editBox:SetLabel("Export Options") + editBox.button:Hide() + editBox.frame:SetClipsChildren(true) + editBox.editBox:SetScript("OnEscapePressed", function() + editGroup:Close() + end) + editGroup:AddChild(editBox) + + local close = AceGUI:Create("Button") + close.frame:SetParent(editGroup.frame) + close:SetPoint("BOTTOMRIGHT", -27, 13) + close.frame:SetFrameLevel(close.frame:GetFrameLevel() + 1) + close:SetHeight(20) + close:SetWidth(100) + close.frame:Hide() + + function editGroup.OpenBox(self, mode) + if mode == "export" then + editGroup.frame:Show() + + local optionsString = PermoksAccountManager:OptionsToString() + editBox.editBox:SetScript("OnChar", function() + editBox:SetText(optionsString) + editBox.editBox:HighlightText() + end) + editBox.button:Hide() + editBox:SetText(optionsString) + editBox.editBox:HighlightText() + editBox:SetFocus() + close:SetCallback("OnClick", function() + editGroup:Close(true) + end) + close:SetText("Done") + close.frame:Show() + + C_Timer.After(0, function() + options:ReleaseChildren() + end) + elseif mode == "import" then + editBox:SetText("") + editGroup.frame:Show() + editBox:SetFocus() + + close:SetCallback("OnClick", function() + PermoksAccountManager:ImportOptions(editBox:GetText()) + end) + close:SetText("Import") + close.frame:Show() + + C_Timer.After(0, function() + options:ReleaseChildren() + end) + end + end + + function editGroup.Close(self, openOptions) + editBox:ClearFocus() + editGroup.frame:Hide() + + if openOptions then + PermoksAccountManager.OpenOptions() + end + end + + return editGroup end function PermoksAccountManager:LoadOptionsTemplate() - local categoryData = {} - local syncData = {} - - options = { - type = 'group', - name = addonName, - args = {} - } - - options.args.categoryToggles = { - order = 1, - type = 'group', - name = L['General'], - args = { - general = { - order = 1, - type = 'group', - name = L['General'], - inline = true, - set = function(info, value) - PermoksAccountManager.db.global.options[info[#info]] = value - end, - get = function(info) - return PermoksAccountManager.db.global.options[info[#info]] - end, - args = { - showGuildAttunementButton = { - order = 1, - type = 'toggle', - name = L['Show Guild Attunement Button'], - hidden = function() - return not PermoksAccountManager.isBC - end, - set = function(info, value) - PermoksAccountManager.db.global.options.showGuildAttunementButton = value - PermoksAccountManager.managerFrame.guildAttunementButton:SetShown(value) - end, - get = function(info) - return PermoksAccountManager.db.global.options.showGuildAttunementButton - end - }, - showMinimapButton = { - order = 2, - type = 'toggle', - name = L['Show Minimap Button'], - set = function(info, value) - PermoksAccountManager.db.profile.minimap.hide = not value - if not value then - LibIcon:Hide('PermoksAccountManager') - else - LibIcon:Show('PermoksAccountManager') - end - end, - get = function(info) - return not PermoksAccountManager.db.profile.minimap.hide - end - }, - useCustom = { - order = 3, - type = 'toggle', - name = L['Use Custom'], - desc = 'Toggle the use of custom categories.', - set = function(info, value) - PermoksAccountManager.db.global.custom = value - C_UI.Reload() - end, - get = function(info) - return PermoksAccountManager.db.global.custom - end, - confirm = true, - confirmText = 'Requires a reload!' - }, - hideCategory = { - order = 4, - type = 'toggle', - name = L['Hide Category'], - desc = L['Hide Category when closing the manager.'], - set = function(info, value) - if value then - PermoksAccountManager:HideAllCategories() - end - - PermoksAccountManager.db.global.options[info[#info]] = value - end - }, + local categoryData = {} + local syncData = {} + + options = { + type = "group", + name = addonName, + args = {}, + } + + options.args.categoryToggles = { + order = 1, + type = "group", + name = L["General"], + args = { + general = { + order = 1, + type = "group", + name = L["General"], + inline = true, + set = function(info, value) + PermoksAccountManager.db.global.options[info[#info]] = value + end, + get = function(info) + return PermoksAccountManager.db.global.options[info[#info]] + end, + args = { + showGuildAttunementButton = { + order = 1, + type = "toggle", + name = L["Show Guild Attunement Button"], + hidden = function() + return not PermoksAccountManager.isBC + end, + set = function(info, value) + PermoksAccountManager.db.global.options.showGuildAttunementButton = value + PermoksAccountManager.managerFrame.guildAttunementButton:SetShown(value) + end, + get = function(info) + return PermoksAccountManager.db.global.options.showGuildAttunementButton + end, + }, + showMinimapButton = { + order = 2, + type = "toggle", + name = L["Show Minimap Button"], + set = function(info, value) + PermoksAccountManager.db.profile.minimap.hide = not value + if not value then + LibIcon:Hide("PermoksAccountManager") + else + LibIcon:Show("PermoksAccountManager") + end + end, + get = function(info) + return not PermoksAccountManager.db.profile.minimap.hide + end, + }, + useCustom = { + order = 3, + type = "toggle", + name = L["Use Custom"], + desc = "Toggle the use of custom categories.", + set = function(info, value) + PermoksAccountManager.db.global.custom = value + C_UI.Reload() + end, + get = function(info) + return PermoksAccountManager.db.global.custom + end, + confirm = true, + confirmText = "Requires a reload!", + }, + hideCategory = { + order = 4, + type = "toggle", + name = L["Hide Category"], + desc = L["Hide Category when closing the manager."], + set = function(info, value) + if value then + PermoksAccountManager:HideAllCategories() + end + + PermoksAccountManager.db.global.options[info[#info]] = value + end, + }, savePosition = { order = 5, - type = 'toggle', - name = L['Save Position'], + type = "toggle", + name = L["Save Position"], }, - hideWarband = { - order = 6, - type = 'toggle', - name = 'Hide Warband', - hidden = function() return not PermoksAccountManager.isRetail end, - set = function(info, value) - PermoksAccountManager.db.global.options[info[#info]] = value - C_UI.Reload() - end, - confirm = true, - confirmText = 'This requires a reload (for now). Are you sure?', - }, - } - }, - commands = { - order = 5, - type = 'group', - name = L['Commands'], - inline = true, - args = { - export = { - order = 0, - type = 'execute', - name = L['Export'], - func = function() - imexport:OpenBox('export') - end - }, - import = { - order = 1, - type = 'execute', - name = L['Import'], - func = function() - imexport:OpenBox('import') - end - }, - resetDB = { - order = 2, - type = 'execute', - name = L['Reset Categories'], - func = function() - PermoksAccountManager:ResetCategories() - C_UI.Reload() - end, - confirm = true, - confirmText = 'Are you sure?' - }, - weeklyReset = { - order = 3, - type = 'execute', - name = 'Trigger Weekly Reset', - func = function() - PermoksAccountManager:ResetAccount(PermoksAccountManager.db.global, PermoksAccountManager.account, nil, true) - C_UI.Reload() - end, - confirm = true, - confirmText = 'Are you sure?' - }, - dailyReset = { - order = 4, - type = 'execute', - name = 'Trigger Daily Reset', - func = function() - PermoksAccountManager:ResetAccount(PermoksAccountManager.db.global, PermoksAccountManager.account, true) - C_UI.Reload() - end, - confirm = true, - confirmText = 'Are you sure?' - }, - purge = { - order = 5, - type = 'execute', - name = L['Purge'], - func = function() - PermoksAccountManager:Purge() - C_UI.Reload() - end, - confirm = true, - confirmText = 'Are you sure?' - } - } - } - } - } - - options.args.frame = { - order = 1.5, - type = 'group', - name = L['Frame Config'], - get = function(info) - local key = info[#info] - local parentKey = info[#info - 1] - return PermoksAccountManager.db.global.options[parentKey][key] - end, - set = function(info, value) - local key = info[#info] - local parentKey = info[#info - 1] - PermoksAccountManager.db.global.options[parentKey][key] = value - end, - args = { - characters = { - order = 1, - type = 'group', - name = L['Characters'], - inline = true, - set = function(info, value) - local key = info[#info] - local parentKey = info[#info - 1] - PermoksAccountManager.db.global.options[parentKey][key] = value - - if key == 'charactersPerPage' then - PermoksAccountManager.db.global.currentPage = 1 - PermoksAccountManager:SortPages() - PermoksAccountManager:UpdatePageButtons() - PermoksAccountManager:UpdateAnchorsAndSize('general', true) - end - end, - args = { + hideWarband = { + order = 6, + type = "toggle", + name = "Hide Warband", + hidden = function() + return not PermoksAccountManager.isRetail + end, + set = function(info, value) + PermoksAccountManager.db.global.options[info[#info]] = value + C_UI.Reload() + end, + confirm = true, + confirmText = "This requires a reload (for now). Are you sure?", + }, + }, + }, + commands = { + order = 5, + type = "group", + name = L["Commands"], + inline = true, + args = { + export = { + order = 0, + type = "execute", + name = L["Export"], + func = function() + imexport:OpenBox("export") + end, + }, + import = { + order = 1, + type = "execute", + name = L["Import"], + func = function() + imexport:OpenBox("import") + end, + }, + resetDB = { + order = 2, + type = "execute", + name = L["Reset Categories"], + func = function() + PermoksAccountManager:ResetCategories() + C_UI.Reload() + end, + confirm = true, + confirmText = "Are you sure?", + }, + weeklyReset = { + order = 3, + type = "execute", + name = "Trigger Weekly Reset", + func = function() + PermoksAccountManager:ResetAccount( + PermoksAccountManager.db.global, + PermoksAccountManager.account, + nil, + true + ) + C_UI.Reload() + end, + confirm = true, + confirmText = "Are you sure?", + }, + dailyReset = { + order = 4, + type = "execute", + name = "Trigger Daily Reset", + func = function() + PermoksAccountManager:ResetAccount( + PermoksAccountManager.db.global, + PermoksAccountManager.account, + true + ) + C_UI.Reload() + end, + confirm = true, + confirmText = "Are you sure?", + }, + purge = { + order = 5, + type = "execute", + name = L["Purge"], + func = function() + PermoksAccountManager:Purge() + C_UI.Reload() + end, + confirm = true, + confirmText = "Are you sure?", + }, + }, + }, + }, + } + + options.args.frame = { + order = 1.5, + type = "group", + name = L["Frame Config"], + get = function(info) + local key = info[#info] + local parentKey = info[#info - 1] + return PermoksAccountManager.db.global.options[parentKey][key] + end, + set = function(info, value) + local key = info[#info] + local parentKey = info[#info - 1] + PermoksAccountManager.db.global.options[parentKey][key] = value + end, + args = { + characters = { + order = 1, + type = "group", + name = L["Characters"], + inline = true, + set = function(info, value) + local key = info[#info] + local parentKey = info[#info - 1] + PermoksAccountManager.db.global.options[parentKey][key] = value + + if key == "charactersPerPage" then + PermoksAccountManager.db.global.currentPage = 1 + PermoksAccountManager:SortPages() + PermoksAccountManager:UpdatePageButtons() + PermoksAccountManager:UpdateAnchorsAndSize("general", true) + end + end, + args = { warning = { order = 0, - type = 'description', - name = 'Will be moved to the Characters options in an upcoming update.' + type = "description", + name = "Will be moved to the Characters options in an upcoming update.", }, - minLevel = { - order = 1, - type = 'range', - name = L['Minimum Level'], - desc = L["Changing this won't remove characters that are below this threshold."], - min = 1, - max = GetMaxLevelForExpansionLevel(GetExpansionLevel()), - bigStep = 1 - }, - charactersPerPage = { - order = 2, - type = 'range', - name = L['Characters Per Page'], - min = 3, - max = 20, - bigStep = 1 - } - } - }, - buttons = { - order = 2, - type = 'group', - name = L['Column'], - inline = true, - set = function(info, value) - local key = info[#info] - local parentKey = info[#info - 1] - PermoksAccountManager.db.global.options[parentKey][key] = value - - if key == 'buttonWidth' and PermoksAccountManager.db.global.options[parentKey].buttonTextWidth > value then - PermoksAccountManager.db.global.options[parentKey].buttonTextWidth = value - end + minLevel = { + order = 1, + type = "range", + name = L["Minimum Level"], + desc = L["Changing this won't remove characters that are below this threshold."], + min = 1, + max = GetMaxLevelForExpansionLevel(GetExpansionLevel()), + bigStep = 1, + }, + charactersPerPage = { + order = 2, + type = "range", + name = L["Characters Per Page"], + min = 3, + max = 20, + bigStep = 1, + }, + }, + }, + buttons = { + order = 2, + type = "group", + name = L["Column"], + inline = true, + set = function(info, value) + local key = info[#info] + local parentKey = info[#info - 1] + PermoksAccountManager.db.global.options[parentKey][key] = value + + if + key == "buttonWidth" + and PermoksAccountManager.db.global.options[parentKey].buttonTextWidth > value + then + PermoksAccountManager.db.global.options[parentKey].buttonTextWidth = value + end - if key == 'justifyH' then - PermoksAccountManager.isLayoutDirty = true - end + if key == "justifyH" then + PermoksAccountManager.isLayoutDirty = true + end - PermoksAccountManager:UpdateAnchorsAndSize('general', true) - PermoksAccountManager.isLayoutDirty = nil - end, - args = { - buttonWidth = { - order = 1, - type = 'range', - name = L['Button Width'], - set = function(info, value) - local key = info[#info] - local parentKey = info[#info - 1] - local options = PermoksAccountManager.db.global.options - - options[parentKey][key] = value - options.buttons.widthPerAlt = max(value, options.buttons.widthPerAlt) - PermoksAccountManager:UpdateAnchorsAndSize('general', true) - end, - min = 80, - max = 250, - bigStep = 1 - }, - buttonTextWidth = { - order = 2, - type = 'range', - name = L['Text Width'], - set = function(info, value) - local key = info[#info] - local parentKey = info[#info - 1] - local options = PermoksAccountManager.db.global.options - - options[parentKey][key] = value - options[parentKey].buttonWidth = max(value, options[parentKey].buttonWidth) - options.buttons.widthPerAlt = max(options[parentKey].buttonWidth, options.buttons.widthPerAlt) - PermoksAccountManager:UpdateAnchorsAndSize('general', true) - end, - min = 80, - max = 250 - }, - justifyH = { - order = 3, - type = 'select', - name = L['Justify Horizontal'], - values = {['LEFT'] = 'Left', ['CENTER'] = 'Center', ['RIGHT'] = 'Right'}, - sorting = {'LEFT', 'CENTER', 'RIGHT'}, - style = 'dropdown' - }, + PermoksAccountManager:UpdateAnchorsAndSize("general", true) + PermoksAccountManager.isLayoutDirty = nil + end, + args = { + buttonWidth = { + order = 1, + type = "range", + name = L["Button Width"], + set = function(info, value) + local key = info[#info] + local parentKey = info[#info - 1] + local options = PermoksAccountManager.db.global.options + + options[parentKey][key] = value + options.buttons.widthPerAlt = max(value, options.buttons.widthPerAlt) + PermoksAccountManager:UpdateAnchorsAndSize("general", true) + end, + min = 80, + max = 250, + bigStep = 1, + }, + buttonTextWidth = { + order = 2, + type = "range", + name = L["Text Width"], + set = function(info, value) + local key = info[#info] + local parentKey = info[#info - 1] + local options = PermoksAccountManager.db.global.options + + options[parentKey][key] = value + options[parentKey].buttonWidth = max(value, options[parentKey].buttonWidth) + options.buttons.widthPerAlt = + max(options[parentKey].buttonWidth, options.buttons.widthPerAlt) + PermoksAccountManager:UpdateAnchorsAndSize("general", true) + end, + min = 80, + max = 250, + }, + justifyH = { + order = 3, + type = "select", + name = L["Justify Horizontal"], + values = { ["LEFT"] = "Left", ["CENTER"] = "Center", ["RIGHT"] = "Right" }, + sorting = { "LEFT", "CENTER", "RIGHT" }, + style = "dropdown", + }, widthPerAlt = { - order = 4, - type = 'range', - name = L['Column Width'], - min = 80, - max = 250, - bigStep = 1 - }, - } - }, - border = { - order = 3, - type = 'group', - name = L['Border'], - inline = true, - args = { - color = { - order = 2, - type = 'color', - name = L['Border Color'], - hasAlpha = true, - get = function(info) - return unpack(PermoksAccountManager.db.global.options.border.color) - end, - set = function(info, ...) - PermoksAccountManager.db.global.options.border.color = {...} - PermoksAccountManager:UpdateBorderColor() - end - }, - bgColor = { - order = 2, - type = 'color', - name = L['Background Color'], - hasAlpha = true, - get = function(info) - return unpack(PermoksAccountManager.db.global.options.border.bgColor) - end, - set = function(info, ...) - PermoksAccountManager.db.global.options.border.bgColor = {...} - PermoksAccountManager:UpdateBorderColor() - end - } - } - }, - other = { - order = 3, - type = 'group', - name = L['Other'], - inline = true, - set = function(info, value) - local key = info[#info] - local parentKey = info[#info - 1] - local options = PermoksAccountManager.db.global.options - options[parentKey].updated = options[parentKey].updated or options[parentKey][key] - options[parentKey][key] = value - - PermoksAccountManager:UpdateAnchorsAndSize('general', true) - end, - args = { - labelOffset = { - order = 1, - type = 'range', - name = L['Label Offset'], - min = 0, - max = 40, - bigStep = 1 - }, - frameStrata = { - order = 3, - type = 'select', - name = L['Frame Strata'], - values = {BACKGROUND = 'BACKGROUND', LOW = 'LOW', MEDIUM = 'MEDIUM', HIGH = 'HIGH', DIALOG = 'DIALOG', TOOLTIP = 'TOOLTIP'}, - sorting = {'BACKGROUND', 'LOW', 'MEDIUM', 'HIGH', 'DIALOG', 'TOOLTIP'}, - set = function(info, value) - local key = info[#info] - local parentKey = info[#info - 1] - - PermoksAccountManager.managerFrame:SetFrameStrata(value) - PermoksAccountManager.db.global.options[parentKey][key] = value - end - } - } - } - } - } + order = 4, + type = "range", + name = L["Column Width"], + min = 80, + max = 250, + bigStep = 1, + }, + }, + }, + border = { + order = 3, + type = "group", + name = L["Border"], + inline = true, + args = { + color = { + order = 2, + type = "color", + name = L["Border Color"], + hasAlpha = true, + get = function(info) + return unpack(PermoksAccountManager.db.global.options.border.color) + end, + set = function(info, ...) + PermoksAccountManager.db.global.options.border.color = { ... } + PermoksAccountManager:UpdateBorderColor() + end, + }, + bgColor = { + order = 2, + type = "color", + name = L["Background Color"], + hasAlpha = true, + get = function(info) + return unpack(PermoksAccountManager.db.global.options.border.bgColor) + end, + set = function(info, ...) + PermoksAccountManager.db.global.options.border.bgColor = { ... } + PermoksAccountManager:UpdateBorderColor() + end, + }, + }, + }, + other = { + order = 3, + type = "group", + name = L["Other"], + inline = true, + set = function(info, value) + local key = info[#info] + local parentKey = info[#info - 1] + local options = PermoksAccountManager.db.global.options + options[parentKey].updated = options[parentKey].updated or options[parentKey][key] + options[parentKey][key] = value + + PermoksAccountManager:UpdateAnchorsAndSize("general", true) + end, + args = { + labelOffset = { + order = 1, + type = "range", + name = L["Label Offset"], + min = 0, + max = 40, + bigStep = 1, + }, + frameStrata = { + order = 3, + type = "select", + name = L["Frame Strata"], + values = { + BACKGROUND = "BACKGROUND", + LOW = "LOW", + MEDIUM = "MEDIUM", + HIGH = "HIGH", + DIALOG = "DIALOG", + TOOLTIP = "TOOLTIP", + }, + sorting = { "BACKGROUND", "LOW", "MEDIUM", "HIGH", "DIALOG", "TOOLTIP" }, + set = function(info, value) + local key = info[#info] + local parentKey = info[#info - 1] + + PermoksAccountManager.managerFrame:SetFrameStrata(value) + PermoksAccountManager.db.global.options[parentKey][key] = value + end, + }, + }, + }, + }, + } options.args.characters = { order = 1.6, - type = 'group', - name = L['Characters'], - childGroups = 'tab', + type = "group", + name = L["Characters"], + childGroups = "tab", args = { test = { order = 1, - type = 'group', - name = L['Character Options'], + type = "group", + name = L["Character Options"], inline = true, args = { combine = { order = 1, - type = 'toggle', - name = L['Combine Accounts'], - desc = L['Combine Main and Alt Account Characters'], + type = "toggle", + name = L["Combine Accounts"], + desc = L["Combine Main and Alt Account Characters"], set = function(_, value) - PermoksAccountManager.db.global.options.characters.combine = value - C_UI.Reload() - end, - get = function(_) - return PermoksAccountManager.db.global.options.characters.combine - end, - confirm = true, - confirmText = 'Requires a reload!' + PermoksAccountManager.db.global.options.characters.combine = value + C_UI.Reload() + end, + get = function(_) + return PermoksAccountManager.db.global.options.characters.combine + end, + confirm = true, + confirmText = "Requires a reload!", }, - sortByIlvl = { - order = 2, - type = 'select', - name = L['Sort By'], - values = {ilevel = 'Ilevel', order = 'Custom Order', charLevel = 'Level'}, - sorting = {'order', 'ilevel', 'charLevel'}, - hidden = function() - return PermoksAccountManager.isWOTLK - end, + sortByIlvl = { + order = 2, + type = "select", + name = L["Sort By"], + values = { ilevel = "Ilevel", order = "Custom Order", charLevel = "Level" }, + sorting = { "order", "ilevel", "charLevel" }, + hidden = function() + return PermoksAccountManager.isWOTLK + end, set = function(_, value) - PermoksAccountManager.db.global.options.characters.sortBy = value - if value == 'order' then - PermoksAccountManager.db.global.options.characters.sortByLesser = true - else - PermoksAccountManager.db.global.options.characters.sortByLesser = false - end - - PermoksAccountManager:SortPages() - PermoksAccountManager:UpdateAnchorsAndSize('general') - end, - get = function(_) - return PermoksAccountManager.db.global.options.characters.sortBy - end, - }, - sortByComparison = { - order = 3, - type = 'select', - name = L['Operator'], - values = {greater = '>', lesser = '<'}, - sorting = {'greater', 'lesser'}, - width = 'half', - disabled = function() - return PermoksAccountManager.db.global.options.characters.sortBy == 'order' - end, - hidden = function() - return PermoksAccountManager.isWOTLK - end, + PermoksAccountManager.db.global.options.characters.sortBy = value + if value == "order" then + PermoksAccountManager.db.global.options.characters.sortByLesser = true + else + PermoksAccountManager.db.global.options.characters.sortByLesser = false + end + + PermoksAccountManager:SortPages() + PermoksAccountManager:UpdateAnchorsAndSize("general") + end, + get = function(_) + return PermoksAccountManager.db.global.options.characters.sortBy + end, + }, + sortByComparison = { + order = 3, + type = "select", + name = L["Operator"], + values = { greater = ">", lesser = "<" }, + sorting = { "greater", "lesser" }, + width = "half", + disabled = function() + return PermoksAccountManager.db.global.options.characters.sortBy == "order" + end, + hidden = function() + return PermoksAccountManager.isWOTLK + end, set = function(_, value) - PermoksAccountManager.db.global.options.characters.sortByLesser = value == 'lesser' - PermoksAccountManager:SortPages() - PermoksAccountManager:UpdateAnchorsAndSize('general') - end, - get = function(_) - return PermoksAccountManager.db.global.options.characters.sortByLesser and 'lesser' or 'greater' - end, - } - } + PermoksAccountManager.db.global.options.characters.sortByLesser = value == "lesser" + PermoksAccountManager:SortPages() + PermoksAccountManager:UpdateAnchorsAndSize("general") + end, + get = function(_) + return PermoksAccountManager.db.global.options.characters.sortByLesser and "lesser" + or "greater" + end, + }, + }, }, customCharacterOrder = { order = 2, - type = 'group', + type = "group", inline = true, - name = L['Character Info'], + name = L["Character Info"], get = function(info) for _, accountInfo in pairs(PermoksAccountManager.db.global.accounts) do - local data = accountInfo.data[info[#info-1]] + local data = accountInfo.data[info[#info - 1]] if data then return tostring(data.order) end @@ -1163,884 +1186,902 @@ function PermoksAccountManager:LoadOptionsTemplate() set = function(info, value) local order = tonumber(value) for _, accountInfo in pairs(PermoksAccountManager.db.global.accounts) do - local data = accountInfo.data[info[#info-1]] + local data = accountInfo.data[info[#info - 1]] if data then data.order = order - options.args.characters.args.customCharacterOrder.args[info[#info-1]].args.order = order + options.args.characters.args.customCharacterOrder.args[info[#info - 1]].args.order = order break end end AceConfigRegistry:NotifyChange(addonName) PermoksAccountManager:SortPages() - PermoksAccountManager:UpdateAnchorsAndSize('general') + PermoksAccountManager:UpdateAnchorsAndSize("general") end, - args = {} + args = {}, }, - } + }, } - options.args.categories = { - order = 2, - type = 'group', - name = 'Category Config', - set = setCategoryChildOption, - get = getCategoryChildOption, - args = { - default_categories_toggles = { - order = 1, - type = 'group', - name = L['Categories'], - inline = true, - set = function(info, value) - local key = info[#info] - PermoksAccountManager.db.global.options.defaultCategories[key].enabled = value - - if not PermoksAccountManager.db.global.custom then - if not value then - PermoksAccountManager.numCategories = PermoksAccountManager.numCategories - 1 - else - PermoksAccountManager.numCategories = PermoksAccountManager.numCategories + 1 - end - end - PermoksAccountManager:UpdateMenu() - end, - get = function(info) - local key = info[#info] - return PermoksAccountManager.db.global.options.defaultCategories[key].enabled - end, - hidden = function() - return PermoksAccountManager.db.global.custom - end, - args = { - - } - }, - custom_categories_toggles = { - order = 1, - type = 'group', - name = L['Categories'], - inline = true, - hidden = function() - return not PermoksAccountManager.db.global.custom - end, - set = function(info, value) - local key = info[#info] - PermoksAccountManager.db.global.options.customCategories[key].enabled = value - - if PermoksAccountManager.db.global.custom then - if not value then - PermoksAccountManager.numCategories = PermoksAccountManager.numCategories - 1 - else - PermoksAccountManager.numCategories = PermoksAccountManager.numCategories + 1 - end - end - PermoksAccountManager:UpdateMenu() - end, - get = function(info) - local key = info[#info] - return PermoksAccountManager.db.global.options.customCategories[key].enabled - end, - args = {} - }, - defaultCategories = { - order = 2, - type = 'group', - name = L['Default'], - childGroups = 'tab', - args = { - create = { - order = 100, - type = 'group', - name = L['Add New'], - args = { - create_group = { - order = 1, - type = 'group', - name = L['General'], - inline = true, - args = { - name = { - order = 1, - name = L['Name'], - type = 'input', - validate = function(info, value) - if value:match('[^%w:]') then - return 'You can only use letters, numbers, and colons (for now).' - elseif string.len(value) == 0 then - return "Can't create an empty category." - elseif PermoksAccountManager.db.global.currentCategories[value:lower()].name then - return 'This category already exists.' - end - - return true - end, - set = function(info, value) - categoryData.create = value - end, - get = function(info) - return categoryData.create or '' - end - }, - create = { - order = 2, - name = L['Create'], - type = 'execute', - func = function(info) - if categoryData.create then - local categoryName = categoryData.create:lower() - addCustomCategory(categoryName, categoryData.create, true) - categoryData.create = nil - end - end - } - } - } - } - }, - } - }, - customCategories = { - order = 3, - type = 'group', - name = L['Custom'], - childGroups = 'tab', - args = { - create = { - order = 100, - type = 'group', - name = L['Add New'], - args = { - create_group = { - order = 1, - type = 'group', - name = L['General'], - inline = true, - args = { - name = { - order = 1, - name = L['Name'], - type = 'input', - validate = function(info, value) - if value:match('[^%w:]') then - return 'You can only use letters, numbers, and colons (for now).' - elseif string.len(value) == 0 then - return "Can't create an empty category." - elseif PermoksAccountManager.db.global.options.customCategories[value:lower()].name then - return 'This category already exists.' - end - - return true - end, - set = function(info, value) - categoryData.create = value - end, - get = function(info) - return categoryData.create or '' - end - }, - create = { - order = 2, - name = L['Create'], - type = 'execute', - func = function(info) - if categoryData.create then - local categoryName = categoryData.create:lower() - addCustomCategory(categoryName, categoryData.create) - categoryData.create = nil - end - end - } - } - } - } - }, - general = { - order = 0, - type = 'group', - name = L['General'], - args = {} - } - } - } - } - } - - options.args.order = { - order = 4, - type = 'group', - name = L['Category Order'], - args = { - defaultCategories = { - order = 1, - type = 'group', - name = L['Default'], - childGroups = 'tab', - set = setOrder, - get = getOrder, - validate = function(_, value) - return tonumber(value) or 'Please insert a number.' - end, - args = {} - }, - defaultCategoriesOrder = { - order = 2, - type = 'group', - name = L['Default'], - inline = true, - set = setCategoryOrder, - get = getCategoryOrder, - validate = function(info, value) - local newOrder = tonumber(value) - return (not newOrder and 'Please insert a number.') or (newOrder <= 0 and 'Please insert a number greater than 0') or true - end, - args = {} - }, - customCategories = { - order = 3, - type = 'group', - name = L['Custom'], - childGroups = 'tab', - set = setOrder, - get = getOrder, - validate = function(_, value) - return tonumber(value) or 'Please insert a number.' - end, - args = {} - }, - customCategoriesOrder = { - order = 4, - type = 'group', - name = L['Custom'], - inline = true, - set = setCategoryOrder, - get = getCategoryOrder, - validate = function(info, value) - local newOrder = tonumber(value) - return (not newOrder and 'Please insert a number.') or (newOrder <= 0 and 'Please insert a number greater than 0') or true - end, - args = {} - } - } - } - - options.args.sync = { - order = 5, - type = 'group', - name = L['Account Syncing'], - childGroups = 'tab', - args = { - syncOptions = { - order = 1, - type = 'group', - name = L['Sync Accounts'], - args = { - explanation = { - order = 1, - type = 'description', - name = function() - return GetAccountSyncDescription() - end - }, - name = { - order = 2, - name = L['Name'], - type = 'input', - validate = function(info, value) - if value:match('[%d%s%p%c]') then - return 'Character names can only consist of letters.' - end - - return true - end, - set = function(info, value) - syncData.name = value - end, - get = function(info) - return syncData.name or '' - end - }, - realm = { - order = 3, - name = L['Realm (if different from current)'], - type = 'input', - hidden = function() - local connectedRealms = GetAutoCompleteRealms() - return PermoksAccountManager.isBC or #connectedRealms == 0 - end, - validate = function(info, value) - if value:match('[^%a]') then - return 'Realm names can only consist of letters.' - end - - return true - end, - set = function(info, value) - syncData.realm = value - end, - get = function(info) - return syncData.realm or '' - end - }, - sync = { - order = 4, - name = L['Sync (Beta)'], - type = 'execute', - func = function(info) - if syncData.name then - PermoksAccountManager:RequestAccountSync(syncData.name, syncData.realm) - end - end - }, - forceUpdate = { - order = 5, - name = L['Send Update'], - type = 'execute', - desc = 'To update the character list. Make sure to click this button on a character that existed in the manager at the time of syncing.', - disabled = function() - return PermoksAccountManager:GetNumAccounts() == 1 - end, - func = function(info) - PermoksAccountManager:SendAccountUpdates() - end - } - } - }, - syncedAccounts = { - order = 2, - type = 'group', - name = L['Synced Accounts'], - args = {} - } - } - } - - options.args.add = { - order = 6, - type = 'group', - name = L['Custom Labels'], - childGroups = 'tab', + options.args.categories = { + order = 2, + type = "group", + name = "Category Config", + set = setCategoryChildOption, + get = getCategoryChildOption, + args = { + default_categories_toggles = { + order = 1, + type = "group", + name = L["Categories"], + inline = true, + set = function(info, value) + local key = info[#info] + PermoksAccountManager.db.global.options.defaultCategories[key].enabled = value + + if not PermoksAccountManager.db.global.custom then + if not value then + PermoksAccountManager.numCategories = PermoksAccountManager.numCategories - 1 + else + PermoksAccountManager.numCategories = PermoksAccountManager.numCategories + 1 + end + end + PermoksAccountManager:UpdateMenu() + end, + get = function(info) + local key = info[#info] + return PermoksAccountManager.db.global.options.defaultCategories[key].enabled + end, + hidden = function() + return PermoksAccountManager.db.global.custom + end, + args = {}, + }, + custom_categories_toggles = { + order = 1, + type = "group", + name = L["Categories"], + inline = true, + hidden = function() + return not PermoksAccountManager.db.global.custom + end, + set = function(info, value) + local key = info[#info] + PermoksAccountManager.db.global.options.customCategories[key].enabled = value + + if PermoksAccountManager.db.global.custom then + if not value then + PermoksAccountManager.numCategories = PermoksAccountManager.numCategories - 1 + else + PermoksAccountManager.numCategories = PermoksAccountManager.numCategories + 1 + end + end + PermoksAccountManager:UpdateMenu() + end, + get = function(info) + local key = info[#info] + return PermoksAccountManager.db.global.options.customCategories[key].enabled + end, + args = {}, + }, + defaultCategories = { + order = 2, + type = "group", + name = L["Default"], + childGroups = "tab", + args = { + create = { + order = 100, + type = "group", + name = L["Add New"], + args = { + create_group = { + order = 1, + type = "group", + name = L["General"], + inline = true, + args = { + name = { + order = 1, + name = L["Name"], + type = "input", + validate = function(info, value) + if value:match("[^%w:]") then + return "You can only use letters, numbers, and colons (for now)." + elseif string.len(value) == 0 then + return "Can't create an empty category." + elseif + PermoksAccountManager.db.global.currentCategories[value:lower()].name + then + return "This category already exists." + end + + return true + end, + set = function(info, value) + categoryData.create = value + end, + get = function(info) + return categoryData.create or "" + end, + }, + create = { + order = 2, + name = L["Create"], + type = "execute", + func = function(info) + if categoryData.create then + local categoryName = categoryData.create:lower() + addCustomCategory(categoryName, categoryData.create, true) + categoryData.create = nil + end + end, + }, + }, + }, + }, + }, + }, + }, + customCategories = { + order = 3, + type = "group", + name = L["Custom"], + childGroups = "tab", + args = { + create = { + order = 100, + type = "group", + name = L["Add New"], + args = { + create_group = { + order = 1, + type = "group", + name = L["General"], + inline = true, + args = { + name = { + order = 1, + name = L["Name"], + type = "input", + validate = function(info, value) + if value:match("[^%w:]") then + return "You can only use letters, numbers, and colons (for now)." + elseif string.len(value) == 0 then + return "Can't create an empty category." + elseif + PermoksAccountManager.db.global.options.customCategories[value:lower()].name + then + return "This category already exists." + end + + return true + end, + set = function(info, value) + categoryData.create = value + end, + get = function(info) + return categoryData.create or "" + end, + }, + create = { + order = 2, + name = L["Create"], + type = "execute", + func = function(info) + if categoryData.create then + local categoryName = categoryData.create:lower() + addCustomCategory(categoryName, categoryData.create) + categoryData.create = nil + end + end, + }, + }, + }, + }, + }, + general = { + order = 0, + type = "group", + name = L["General"], + args = {}, + }, + }, + }, + }, + } + + options.args.order = { + order = 4, + type = "group", + name = L["Category Order"], + args = { + defaultCategories = { + order = 1, + type = "group", + name = L["Default"], + childGroups = "tab", + set = setOrder, + get = getOrder, + validate = function(_, value) + return tonumber(value) or "Please insert a number." + end, + args = {}, + }, + defaultCategoriesOrder = { + order = 2, + type = "group", + name = L["Default"], + inline = true, + set = setCategoryOrder, + get = getCategoryOrder, + validate = function(info, value) + local newOrder = tonumber(value) + return (not newOrder and "Please insert a number.") + or (newOrder <= 0 and "Please insert a number greater than 0") + or true + end, + args = {}, + }, + customCategories = { + order = 3, + type = "group", + name = L["Custom"], + childGroups = "tab", + set = setOrder, + get = getOrder, + validate = function(_, value) + return tonumber(value) or "Please insert a number." + end, + args = {}, + }, + customCategoriesOrder = { + order = 4, + type = "group", + name = L["Custom"], + inline = true, + set = setCategoryOrder, + get = getCategoryOrder, + validate = function(info, value) + local newOrder = tonumber(value) + return (not newOrder and "Please insert a number.") + or (newOrder <= 0 and "Please insert a number greater than 0") + or true + end, + args = {}, + }, + }, + } + + options.args.sync = { + order = 5, + type = "group", + name = L["Account Syncing"], + childGroups = "tab", + args = { + syncOptions = { + order = 1, + type = "group", + name = L["Sync Accounts"], + args = { + explanation = { + order = 1, + type = "description", + name = function() + return GetAccountSyncDescription() + end, + }, + name = { + order = 2, + name = L["Name"], + type = "input", + validate = function(info, value) + if value:match("[%d%s%p%c]") then + return "Character names can only consist of letters." + end + + return true + end, + set = function(info, value) + syncData.name = value + end, + get = function(info) + return syncData.name or "" + end, + }, + realm = { + order = 3, + name = L["Realm (if different from current)"], + type = "input", + hidden = function() + local connectedRealms = GetAutoCompleteRealms() + return PermoksAccountManager.isBC or #connectedRealms == 0 + end, + validate = function(info, value) + if value:match("[^%a]") then + return "Realm names can only consist of letters." + end + + return true + end, + set = function(info, value) + syncData.realm = value + end, + get = function(info) + return syncData.realm or "" + end, + }, + sync = { + order = 4, + name = L["Sync (Beta)"], + type = "execute", + func = function(info) + if syncData.name then + PermoksAccountManager:RequestAccountSync(syncData.name, syncData.realm) + end + end, + }, + forceUpdate = { + order = 5, + name = L["Send Update"], + type = "execute", + desc = "To update the character list. Make sure to click this button on a character that existed in the manager at the time of syncing.", + disabled = function() + return PermoksAccountManager:GetNumAccounts() == 1 + end, + func = function(info) + PermoksAccountManager:SendAccountUpdates() + end, + }, + }, + }, + syncedAccounts = { + order = 2, + type = "group", + name = L["Synced Accounts"], + args = {}, + }, + }, + } + + options.args.add = { + order = 6, + type = "group", + name = L["Custom Labels"], + childGroups = "tab", hidden = function() - return not PermoksAccountManager.db.global.customLabels - end, - args = { - addTab = { - order = 1, - type = 'group', - name = function() - if labelData.oldId then - return L['Save'] - else - return L['Create'] - end - end, - inline = true, - args = { - name = { - order = 1, - name = L['Name'], - type = 'input', - validate = function(info, value) - if value:match('[^%a%s:]') then - return 'You can only use letters (for now).' - elseif string.len(value) == 0 then - return "Can't create an empty label." - end - - return true - end, - set = function(info, value) - labelData.name = value - end, - get = function(info) - return labelData.name or '' - end - }, - id = { - order = 3, - name = L['ID'], - type = 'input', - width = 'half', - validate = function(info, value) - if not tonumber(value) then - return 'IDs only contain digits.' - end - - return true - end, - disabled = function() - return labelData.oldId and true or false - end, - set = function(info, value) - labelData.id = tonumber(value) - end, - get = function() - return labelData.id and tostring(labelData.id) or '' - end - }, - labelType = { - order = 2, - name = L['Type'], - type = 'select', - values = {item = L['Item'], currency = L['Currency'], quest = L['Quest'], custom = L['Custom']}, - sorting = {'item', 'currency', 'quest', 'custom'}, - --width = 'half', - disabled = function() - return labelData.oldId and true or false - end, - set = function(info, value) - labelData.type = value - end, - get = function(info) - return labelData.type or '' - end - }, - quest_options = { - order = 3.5, - name = 'Quest', - type = 'header', - hidden = function() - return labelData.type and labelData.type ~= 'quest' or not labelData.type - end, - }, - reset = { - order = 4, - name = L['Reset'], - type = 'select', - values = {daily = L['Daily'], weekly = L['Weekly'], biweekly = L['Biweekly']}, - sorting = {'daily', 'biweekly', 'weekly'}, - --width = 'half', - hidden = function() - return labelData.type and labelData.type ~= 'quest' or not labelData.type - end, - set = function(info, value) - labelData.reset = value - end, - get = function(info) - return labelData.reset or ' ' - end - }, - inlog = { - order = 5, - name = L['Hidden'], - type = 'toggle', - desc = 'If you can\'t have this quest in your visible quest log then toggle this option so it gets tracked correctly.', - --width = 'half', - hidden = function() - return labelData.type and labelData.type ~= 'quest' or not labelData.type - end, - set = function(info, value) - labelData.hidden = value - end, - get = function(info) - return labelData.hidden or false - end - }, - custom_options = { - order = 6, - name = 'Custom', - type = 'header', - hidden = function() - return labelData.type and labelData.type ~= 'custom' or not labelData.type - end, - }, - custom_events ={ - order = 6.1, - name = 'Events', - type = 'input', - width = 'full', - hidden = function() - return labelData.type and labelData.type ~= 'custom' or not labelData.type - end, - get = function() - return labelData.events - end, - set = function(_, value) - labelData.events = value - end - }, - custom_update = { - order = 6.2, - name = 'Update Function', - type = 'input', - multiline = true, - width = 'full', - hidden = function() - return labelData.type and labelData.type ~= 'custom' or not labelData.type - end, - get = function() - if not labelData.update then - return [[function(data) + return not PermoksAccountManager.db.global.customLabels + end, + args = { + addTab = { + order = 1, + type = "group", + name = function() + if labelData.oldId then + return L["Save"] + else + return L["Create"] + end + end, + inline = true, + args = { + name = { + order = 1, + name = L["Name"], + type = "input", + validate = function(info, value) + if value:match("[^%a%s:]") then + return "You can only use letters (for now)." + elseif string.len(value) == 0 then + return "Can't create an empty label." + end + + return true + end, + set = function(info, value) + labelData.name = value + end, + get = function(info) + return labelData.name or "" + end, + }, + id = { + order = 3, + name = L["ID"], + type = "input", + width = "half", + validate = function(info, value) + if not tonumber(value) then + return "IDs only contain digits." + end + + return true + end, + disabled = function() + return labelData.oldId and true or false + end, + set = function(info, value) + labelData.id = tonumber(value) + end, + get = function() + return labelData.id and tostring(labelData.id) or "" + end, + }, + labelType = { + order = 2, + name = L["Type"], + type = "select", + values = { + item = L["Item"], + currency = L["Currency"], + quest = L["Quest"], + custom = L["Custom"], + }, + sorting = { "item", "currency", "quest", "custom" }, + --width = 'half', + disabled = function() + return labelData.oldId and true or false + end, + set = function(info, value) + labelData.type = value + end, + get = function(info) + return labelData.type or "" + end, + }, + quest_options = { + order = 3.5, + name = "Quest", + type = "header", + hidden = function() + return labelData.type and labelData.type ~= "quest" or not labelData.type + end, + }, + reset = { + order = 4, + name = L["Reset"], + type = "select", + values = { daily = L["Daily"], weekly = L["Weekly"], biweekly = L["Biweekly"] }, + sorting = { "daily", "biweekly", "weekly" }, + --width = 'half', + hidden = function() + return labelData.type and labelData.type ~= "quest" or not labelData.type + end, + set = function(info, value) + labelData.reset = value + end, + get = function(info) + return labelData.reset or " " + end, + }, + inlog = { + order = 5, + name = L["Hidden"], + type = "toggle", + desc = "If you can't have this quest in your visible quest log then toggle this option so it gets tracked correctly.", + --width = 'half', + hidden = function() + return labelData.type and labelData.type ~= "quest" or not labelData.type + end, + set = function(info, value) + labelData.hidden = value + end, + get = function(info) + return labelData.hidden or false + end, + }, + custom_options = { + order = 6, + name = "Custom", + type = "header", + hidden = function() + return labelData.type and labelData.type ~= "custom" or not labelData.type + end, + }, + custom_events = { + order = 6.1, + name = "Events", + type = "input", + width = "full", + hidden = function() + return labelData.type and labelData.type ~= "custom" or not labelData.type + end, + get = function() + return labelData.events + end, + set = function(_, value) + labelData.events = value + end, + }, + custom_update = { + order = 6.2, + name = "Update Function", + type = "input", + multiline = true, + width = "full", + hidden = function() + return labelData.type and labelData.type ~= "custom" or not labelData.type + end, + get = function() + if not labelData.update then + return [[function(data) end]] - else - return labelData.update - end - end, - set = function(_, value) - labelData.update = value - end - }, - custom_label_string = { - order = 6.3, - name = 'String Function', - type = 'input', - multiline = true, - width = 'full', - hidden = function() - return labelData.type and labelData.type ~= 'custom' or not labelData.type - end, - get = function() - if not labelData.labelString then - return [[function(data) + else + return labelData.update + end + end, + set = function(_, value) + labelData.update = value + end, + }, + custom_label_string = { + order = 6.3, + name = "String Function", + type = "input", + multiline = true, + width = "full", + hidden = function() + return labelData.type and labelData.type ~= "custom" or not labelData.type + end, + get = function() + if not labelData.labelString then + return [[function(data) end]] - else - return labelData.labelString - end - end, - set = function(_, value) - labelData.labelString = value - end - }, - sep1 = { - order = 19, - name = '', - type = 'header', - }, - create = { - order = 20, - name = function() - if labelData.oldId then - return L['Edit'] - else - return L['Create'] - end - end, - type = 'execute', - func = function(info) - if labelData.name and labelData.id and labelData.type then - PermoksAccountManager:AddCustomLabelButton(labelData) - PermoksAccountManager.UpdateCustomLabelOptions() - end - - labelData = {} - end - }, - delete = { - order = 21, - name = L['Delete'], - type = 'execute', - disabled = function() - if labelData.oldId then - return false - else - return true - end - end, - func = function(info) - if labelData.name and labelData.id and labelData.type then - DeleteCustomLabelButton(labelData) - end - end, - } - } - }, - desc = { - order = 1.5, - type = 'description', - name = 'To edit/delete custom labels click on the button for the label below.', - fontSize = 'medium', - }, - item = { - order = 2, - type = 'group', - name = L['Items'], - args = {} - }, - currency = { - order = 3, - type = 'group', - name = L['Currencies'], - args = {} - }, - quest = { - order = 4, - type = 'group', - name = L['Quests'], - args = {} - } - } - } - - -- TODO: Retail differentiation - options.args.experimental = { - order = 7, - type = 'group', - name = L['Experimental'], - set = function(info, value) - PermoksAccountManager.db.global.options[info[#info]] = value - PermoksAccountManager:SortPages() - PermoksAccountManager:UpdateAnchorsAndSize('general', nil, nil, true) - end, - get = function(info) - return PermoksAccountManager.db.global.options[info[#info]] - end, - args = { - testOptions = { - order = 7, - type = 'group', - name = L['Test Options'], - inline = true, - args = { - currencyIcons = { - order = 1, - type = 'toggle', - name = L['Currency Icons'], - retailOnly = false - }, - itemIcons = { - order = 2, - type = 'toggle', - name = L['Item Icons'], - retailOnly = false - }, - showCurrentSpecIcon = { - order = 3, - type = 'toggle', - name = L['Show Current Spec'], - retailOnly = true - }, - useScoreColor = { - order = 4, - type = 'toggle', - name = L['Color Mythic+ Score'], - retailOnly = true - }, - useOutline = { - order = 5, - type = 'toggle', - name = L['Outline'], - set = function(info, value) - PermoksAccountManager.db.global.options[info[#info]] = value - PermoksAccountManager:UpdateAllFonts() - end, - retailOnly = true - }, - questCompletionString = { - order = 6, - type = 'input', - name = L['Quest Completion String'], - retailOnly = false - }, - font = { - order = 7, - type = 'select', - name = 'Font', - values = LSM:HashTable('font'), - set = function(info, value) - PermoksAccountManager.db.global.options[info[#info]] = value - PermoksAccountManager:UpdateAllFonts() - end, - dialogControl = 'LSM30_Font' - }, - fontSize = { - order = 8, - type = 'range', - name = 'Font Size', - min = 9, - max = 16, - step = 1, - set = function(info, value) - PermoksAccountManager.db.global.options[info[#info]] = value - PermoksAccountManager:UpdateAllFonts() - end, - }, - itemIconPosition = { - order = 9, - type = 'select', - name = 'Item Icon Position', - values = {left = 'Left', right = 'Right'} - }, - currencyIconPosition = { - order = 10, - type = 'select', - name = 'Currency Icon Position', - values = {left = 'Left', right = 'Right'} - }, - currentCharacterFirstPosition = { - order = 11, - type = 'toggle', - name = 'Prioritise current char', - desc = 'Always show the current character at the front' - }, - name = { - order = 12, - type = 'input', - name = 'Rename Main Account', - desc = nil, - get = function(info) - return PermoksAccountManager.db.global.accounts.main.name - end, - set = function(info, value) - changeAccountName('main', value) - end - }, - showOnEnter = { - order = 13, - type = 'toggle', - name = 'Show On Mouseover', - desc = 'Show the window while hovering over the minimap button' - } - } - } - } - } + else + return labelData.labelString + end + end, + set = function(_, value) + labelData.labelString = value + end, + }, + sep1 = { + order = 19, + name = "", + type = "header", + }, + create = { + order = 20, + name = function() + if labelData.oldId then + return L["Edit"] + else + return L["Create"] + end + end, + type = "execute", + func = function(info) + if labelData.name and labelData.id and labelData.type then + PermoksAccountManager:AddCustomLabelButton(labelData) + PermoksAccountManager.UpdateCustomLabelOptions() + end + + labelData = {} + end, + }, + delete = { + order = 21, + name = L["Delete"], + type = "execute", + disabled = function() + if labelData.oldId then + return false + else + return true + end + end, + func = function(info) + if labelData.name and labelData.id and labelData.type then + DeleteCustomLabelButton(labelData) + end + end, + }, + }, + }, + desc = { + order = 1.5, + type = "description", + name = "To edit/delete custom labels click on the button for the label below.", + fontSize = "medium", + }, + item = { + order = 2, + type = "group", + name = L["Items"], + args = {}, + }, + currency = { + order = 3, + type = "group", + name = L["Currencies"], + args = {}, + }, + quest = { + order = 4, + type = "group", + name = L["Quests"], + args = {}, + }, + }, + } + + -- TODO: Retail differentiation + options.args.experimental = { + order = 7, + type = "group", + name = L["Experimental"], + set = function(info, value) + PermoksAccountManager.db.global.options[info[#info]] = value + PermoksAccountManager:SortPages() + PermoksAccountManager:UpdateAnchorsAndSize("general", nil, nil, true) + end, + get = function(info) + return PermoksAccountManager.db.global.options[info[#info]] + end, + args = { + testOptions = { + order = 7, + type = "group", + name = L["Test Options"], + inline = true, + args = { + currencyIcons = { + order = 1, + type = "toggle", + name = L["Currency Icons"], + retailOnly = false, + }, + itemIcons = { + order = 2, + type = "toggle", + name = L["Item Icons"], + retailOnly = false, + }, + showCurrentSpecIcon = { + order = 3, + type = "toggle", + name = L["Show Current Spec"], + retailOnly = true, + }, + useScoreColor = { + order = 4, + type = "toggle", + name = L["Color Mythic+ Score"], + retailOnly = true, + }, + useOutline = { + order = 5, + type = "toggle", + name = L["Outline"], + set = function(info, value) + PermoksAccountManager.db.global.options[info[#info]] = value + PermoksAccountManager:UpdateAllFonts() + end, + retailOnly = true, + }, + questCompletionString = { + order = 6, + type = "input", + name = L["Quest Completion String"], + retailOnly = false, + }, + font = { + order = 7, + type = "select", + name = "Font", + values = LSM:HashTable("font"), + set = function(info, value) + PermoksAccountManager.db.global.options[info[#info]] = value + PermoksAccountManager:UpdateAllFonts() + end, + dialogControl = "LSM30_Font", + }, + fontSize = { + order = 8, + type = "range", + name = "Font Size", + min = 9, + max = 16, + step = 1, + set = function(info, value) + PermoksAccountManager.db.global.options[info[#info]] = value + PermoksAccountManager:UpdateAllFonts() + end, + }, + itemIconPosition = { + order = 9, + type = "select", + name = "Item Icon Position", + values = { left = "Left", right = "Right" }, + }, + currencyIconPosition = { + order = 10, + type = "select", + name = "Currency Icon Position", + values = { left = "Left", right = "Right" }, + }, + currentCharacterFirstPosition = { + order = 11, + type = "toggle", + name = "Prioritise current char", + desc = "Always show the current character at the front", + }, + name = { + order = 12, + type = "input", + name = "Rename Main Account", + desc = nil, + get = function(info) + return PermoksAccountManager.db.global.accounts.main.name + end, + set = function(info, value) + changeAccountName("main", value) + end, + }, + showOnEnter = { + order = 13, + type = "toggle", + name = "Show On Mouseover", + desc = "Show the window while hovering over the minimap button", + }, + }, + }, + }, + } end function PermoksAccountManager:LoadCustomLabelButtons() - for _, customLabels in pairs(self.db.global.options.customLabels) do - for _, labelInfo in pairs(customLabels) do - self:AddCustomLabelButton(labelInfo) - end - end + for _, customLabels in pairs(self.db.global.options.customLabels) do + for _, labelInfo in pairs(customLabels) do + self:AddCustomLabelButton(labelInfo) + end + end end function PermoksAccountManager.UpdateCustomLabelOptions(newDefault) - newDefault = newDefault or PermoksAccountManager:GetCustomLabelTable(true) + newDefault = newDefault or PermoksAccountManager:GetCustomLabelTable(true) - for category, args in pairs(options.args.categories.args.customCategories.args) do - if category ~= 'create' then - args.args = newDefault - end - end + for category, args in pairs(options.args.categories.args.customCategories.args) do + if category ~= "create" then + args.args = newDefault + end + end - options.args.categories.args.defaultCategories.args.general.args = newDefault - AceConfigRegistry:NotifyChange(addonName) + options.args.categories.args.defaultCategories.args.general.args = newDefault + AceConfigRegistry:NotifyChange(addonName) end function PermoksAccountManager.OpenOptions(closeImexport) - if closeImexport then - PermoksAccountManager.CloseImexport() - end + if closeImexport then + PermoksAccountManager.CloseImexport() + end - AceConfigDialog:Open(addonName, PermoksAccountManager.optionsFrame) + AceConfigDialog:Open(addonName, PermoksAccountManager.optionsFrame) end local function copyTable(obj) - if type(obj) ~= 'table' then - return obj - end - local res = {} - for k, v in pairs(obj) do - res[copyTable(k)] = copyTable(v) - end - return res + if type(obj) ~= "table" then + return obj + end + local res = {} + for k, v in pairs(obj) do + res[copyTable(k)] = copyTable(v) + end + return res end do - local labelTable = { - delete = { - order = 0.5, - type = 'execute', - name = L['Delete'], - func = function(info) - deleteCustomCategory(info[#info - 1]) - PermoksAccountManager:UpdateOrCreateCategoryButtons() - end, - hidden = function(info) - if info[#info - 1] == 'general' then - return true - end - end, - confirm = true - } - } - local function UpdateLabelTable() - for key, info in pairs(PermoksAccountManager.labelRows) do - if not info.hideOption then - local group = info.group or 'other' - local groupInfo = PermoksAccountManager.groups[group] - - labelTable[group] = - labelTable[group] or - { - order = groupInfo.order, - type = 'group', - name = groupInfo.label, - inline = true, - args = {} - } - - labelTable[group].args[key] = - labelTable[group].args[key] or - { - type = 'toggle', - name = info.label - } - end - end - end - - function PermoksAccountManager:RemoveIdentifierFromLabelTable(group, labelIdentifier) - if labelTable[group] then - labelTable[group].args[labelIdentifier] = nil - AceConfigRegistry:NotifyChange(addonName) - end - end - - function PermoksAccountManager:GetCustomLabelTable(update) - if update then - UpdateLabelTable() - end - - return labelTable - end - - function PermoksAccountManager:LoadCustomLabelTable() - UpdateLabelTable() - end + local labelTable = { + delete = { + order = 0.5, + type = "execute", + name = L["Delete"], + func = function(info) + deleteCustomCategory(info[#info - 1]) + PermoksAccountManager:UpdateOrCreateCategoryButtons() + end, + hidden = function(info) + if info[#info - 1] == "general" then + return true + end + end, + confirm = true, + }, + } + local function UpdateLabelTable() + for key, info in pairs(PermoksAccountManager.labelRows) do + if not info.hideOption then + local group = info.group or "other" + local groupInfo = PermoksAccountManager.groups[group] + + labelTable[group] = labelTable[group] + or { + order = groupInfo.order, + type = "group", + name = groupInfo.label, + inline = true, + args = {}, + } + + local name = info.label + if group == "currency" then + local globalCurrencyInfo = PermoksAccountManager.db.global.currencyInfo[info.key] + local currencyIcon = globalCurrencyInfo and globalCurrencyInfo.icon + if currencyIcon then + name = string.format('\124T%d:18:18\124t%s', currencyIcon, type(name) == "function" and name() or name) + end + end + + labelTable[group].args[key] = labelTable[group].args[key] + or { + type = "toggle", + name = name, + } + end + end + end + + function PermoksAccountManager:RemoveIdentifierFromLabelTable(group, labelIdentifier) + if labelTable[group] then + labelTable[group].args[labelIdentifier] = nil + AceConfigRegistry:NotifyChange(addonName) + end + end + + function PermoksAccountManager:GetCustomLabelTable(update) + if update then + UpdateLabelTable() + end + + return labelTable + end + + function PermoksAccountManager:LoadCustomLabelTable() + UpdateLabelTable() + end end function PermoksAccountManager:LoadOptions() - PermoksAccountManager.numCategories = 0 - if type(PermoksAccountManager.db.global.options.defaultCategories.general.childs) == 'nil' then - PermoksAccountManager.db.global.options.defaultCategories = copyTable(default_categories) - end - - custom_categories = PermoksAccountManager.db.global.options.customCategories - - local numDefaultCategories = createDefaultOptions() - local numCustomCategories = createCustomOptions() - - local db = PermoksAccountManager.db.global - if db.custom then - PermoksAccountManager.numCategories = numCustomCategories - db.currentCategories = db.options.customCategories - else - PermoksAccountManager.numCategories = numDefaultCategories - db.currentCategories = db.options.defaultCategories - end - - PermoksAccountManager.optionsFrame = AceGUI:Create('Frame') - PermoksAccountManager.optionsFrame:EnableResize(true) - PermoksAccountManager.optionsFrame:Hide() - - AddAccounts() - createConfirmPopup() - imexport = imexport or createImportExportFrame(PermoksAccountManager.optionsFrame) - - AceConfigRegistry:RegisterOptionsTable(addonName, options, true) + PermoksAccountManager.numCategories = 0 + if type(PermoksAccountManager.db.global.options.defaultCategories.general.childs) == "nil" then + PermoksAccountManager.db.global.options.defaultCategories = copyTable(default_categories) + end + + custom_categories = PermoksAccountManager.db.global.options.customCategories + + local numDefaultCategories = createDefaultOptions() + local numCustomCategories = createCustomOptions() + + local db = PermoksAccountManager.db.global + if db.custom then + PermoksAccountManager.numCategories = numCustomCategories + db.currentCategories = db.options.customCategories + else + PermoksAccountManager.numCategories = numDefaultCategories + db.currentCategories = db.options.defaultCategories + end + + PermoksAccountManager.optionsFrame = AceGUI:Create("Frame") + PermoksAccountManager.optionsFrame:EnableResize(true) + PermoksAccountManager.optionsFrame:Hide() + + AddAccounts() + createConfirmPopup() + imexport = imexport or createImportExportFrame(PermoksAccountManager.optionsFrame) + + AceConfigRegistry:RegisterOptionsTable(addonName, options, true) end function PermoksAccountManager:CloseImexport() - if imexport then - imexport.Close() - end + if imexport then + imexport.Close() + end end function PermoksAccountManager:UpdateDefaultCategories(key) - PermoksAccountManager.db.global.options.defaultCategories[key] = copyTable(default_categories[key]) + PermoksAccountManager.db.global.options.defaultCategories[key] = copyTable(default_categories[key]) end function PermoksAccountManager:AddLabelToDefaultCategory(category, label, customOrder) @@ -2056,99 +2097,100 @@ end function PermoksAccountManager:ReplaceLabelOfDefaultCategory(category, oldLabel, newLabel) local categoryTbl = self.db.global.options.defaultCategories[category] - if categoryTbl and categoryTbl.childOrder[oldLabel] then - local index = categoryTbl.childOrder[oldLabel] - - if categoryTbl.childs[index] ~= oldLabel and categoryTbl.childs then - for i, label in pairs(categoryTbl.childs) do - if label == oldLabel then - index = i - break - end - end - end - - categoryTbl.childOrder[oldLabel] = nil - categoryTbl.childOrder[newLabel] = index - categoryTbl.childs[index] = newLabel - end + if categoryTbl and categoryTbl.childOrder[oldLabel] then + local index = categoryTbl.childOrder[oldLabel] + + if categoryTbl.childs[index] ~= oldLabel and categoryTbl.childs then + for i, label in pairs(categoryTbl.childs) do + if label == oldLabel then + index = i + break + end + end + end + + categoryTbl.childOrder[oldLabel] = nil + categoryTbl.childOrder[newLabel] = index + categoryTbl.childs[index] = newLabel + end end function PermoksAccountManager:RemoveLabelFromDefaultCategory(category, label) local categoryTbl = self.db.global.options.defaultCategories[category] - if categoryTbl and categoryTbl.childOrder[label] then - categoryTbl.childOrder[label] = nil + if categoryTbl and categoryTbl.childOrder[label] then + categoryTbl.childOrder[label] = nil - for i, l in pairs(categoryTbl.childs) do - if l == label then - categoryTbl.childs[i] = nil - break - end - end - end + for i, l in pairs(categoryTbl.childs) do + if l == label then + categoryTbl.childs[i] = nil + break + end + end + end end function PermoksAccountManager:FixOrderOfDefaultCategories() - for _, categoryTbl in pairs(self.db.global.options.defaultCategories) do - local newChilds = {} - for _, label in pairs(categoryTbl.childs) do - tinsert(newChilds, label) - end - - categoryTbl.childs = newChilds - - wipe(categoryTbl.childOrder) - for i, label in ipairs(categoryTbl.childs) do - categoryTbl.childOrder[label] = i - end - end + for _, categoryTbl in pairs(self.db.global.options.defaultCategories) do + local newChilds = {} + for _, label in pairs(categoryTbl.childs) do + tinsert(newChilds, label) + end + + categoryTbl.childs = newChilds + + wipe(categoryTbl.childOrder) + for i, label in ipairs(categoryTbl.childs) do + categoryTbl.childOrder[label] = i + end + end end function PermoksAccountManager:OptionsToString() - local export = {internalVersion = self.db.global.internalVersion, custom = self.db.global.custom, options = self.db.global.options} + local export = { + internalVersion = self.db.global.internalVersion, + custom = self.db.global.custom, + options = self.db.global.options, + } - local serialized = LibSerialize:Serialize(export) - local compressed = LibDeflate:CompressDeflate(serialized) - local encode = LibDeflate:EncodeForPrint(compressed) + local serialized = LibSerialize:Serialize(export) + local compressed = LibDeflate:CompressDeflate(serialized) + local encode = LibDeflate:EncodeForPrint(compressed) - return encode or 'HMM' + return encode or "HMM" end function PermoksAccountManager:ImportOptions(optionsString) - local decoded = LibDeflate:DecodeForPrint(optionsString) - if not decoded then - return - end - local decompressed = LibDeflate:DecompressDeflate(decoded) - if not decompressed then - return - end - local success, data = LibSerialize:Deserialize(decompressed) - if not success then - return - end - - local categories = data.options.customCategories - for category, info in pairs(categories) do - for identifier, index in pairs(info.childOrder) do - if not PermoksAccountManager.labelRows[identifier] then - info.childOrder[identifier] = nil - tDeleteItem(info.childs, identifier) - end - end - end - - PermoksAccountManager.confirm.accept:SetCallback( - 'OnClick', - function() - PermoksAccountManager.db.global.custom = data.custom - PermoksAccountManager.db.global.options = data.options - PermoksAccountManager.db.global.internalVersion = data.internalVersion - - C_UI.Reload() - end - ) - - PermoksAccountManager.confirm:Show() + local decoded = LibDeflate:DecodeForPrint(optionsString) + if not decoded then + return + end + local decompressed = LibDeflate:DecompressDeflate(decoded) + if not decompressed then + return + end + local success, data = LibSerialize:Deserialize(decompressed) + if not success then + return + end + + local categories = data.options.customCategories + for category, info in pairs(categories) do + for identifier, index in pairs(info.childOrder) do + if not PermoksAccountManager.labelRows[identifier] then + info.childOrder[identifier] = nil + tDeleteItem(info.childs, identifier) + end + end + end + + PermoksAccountManager.confirm.accept:SetCallback("OnClick", function() + PermoksAccountManager.db.global.custom = data.custom + PermoksAccountManager.db.global.options = data.options + PermoksAccountManager.db.global.internalVersion = data.internalVersion + + C_UI.Reload() + end) + + PermoksAccountManager.confirm:Show() end From 19baeaf4f562f6c162698a1040a9e8b57bfa78d8 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 4 Mar 2026 19:17:25 +0100 Subject: [PATCH 115/138] Fix weekly quests --- PermoksAccountManager.toc | 2 +- db/db.lua | 14 +++++++------- modules/quests.lua | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/PermoksAccountManager.toc b/PermoksAccountManager.toc index 764f247..7228bec 100644 --- a/PermoksAccountManager.toc +++ b/PermoksAccountManager.toc @@ -1,4 +1,4 @@ -## Interface: 110200, 120000 +## Interface: 110200, 120001 ## Title: Permoks Account Manager ## Version: @project-version@ ## SavedVariables: PermoksAccountManagerDB diff --git a/db/db.lua b/db/db.lua index fc45874..bce2099 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1927,19 +1927,19 @@ PermoksAccountManager.quests = { [89295] = {questType = 'weekly'} }, saltherils_soiree = { - [90573] = {questType = 'weekly'}, - [90574] = {questType = 'weekly'}, - [90575] = {questType = 'weekly'}, - [90576] = {questType = 'weekly'}, + [90573] = {questType = 'weekly', warband = true, log = true}, + [90574] = {questType = 'weekly', warband = true, log = true}, + [90575] = {questType = 'weekly', warband = true, log = true}, + [90576] = {questType = 'weekly', warband = true, log = true}, }, abundance = { - [89507] = {questType = 'weekly'}, + [89507] = {questType = 'weekly', warband = true, log = true}, }, lost_legends = { - [89268] = {questType = 'weekly'}, + [89268] = {questType = 'weekly', warband = true, log = true}, }, stormarion_assault = { - [90962] = {questType = 'weekly'}, + [90962] = {questType = 'weekly', warband = true, log = true}, } } diff --git a/modules/quests.lua b/modules/quests.lua index 88c81cb..9135b3d 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1367,7 +1367,7 @@ local labelRows = { version = WOW_PROJECT_MAINLINE }, stormarion_assault = { - IDS = {89507}, + IDS = {90962}, label = 'Assault (Voidstorm)', type = 'quest', questType = 'weekly', @@ -1634,7 +1634,7 @@ local function UpdateAllHiddenQuests(charInfo) end charInfo.questInfo[questType].hidden[key][questID] = isComplete or nil - if warbandInfo and questData.warband and not warbandInfo.questInfo[questType].hidden[key][questID] then + if warbandInfo and questData.warband and warbandInfo.questInfo[questType] and warbandInfo.questInfo[questType].hidden and warbandInfo.questInfo[questType].hidden[key] and not warbandInfo.questInfo[questType].hidden[key][questID] then warbandInfo.questInfo[questType].hidden[key][questID] = isComplete or nil end end From a4521e8a619377dd2d6ff5e2010f8c159bfcc485 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 9 Mar 2026 20:33:13 +0100 Subject: [PATCH 116/138] Add Veteran Crests --- PermoksAccountManager.lua | 7 ++++++- db/db.lua | 16 ++++++++++------ modules/currencies.lua | 20 ++++++++++++++++++-- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 9072e7b..cb3262c 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -49,7 +49,7 @@ local LibQTip = LibStub("LibQTip-1.0") local L = LibStub("AceLocale-3.0"):GetLocale(addonName) local LSM = LibStub("LibSharedMedia-3.0") local VERSION = C_AddOns.GetAddOnMetadata(addonName, "Version") -local INTERNALMIDNIGHT = 1 +local INTERNALMIDNIGHT = 2 local INTERNALWOTLKVERSION = 6 local INTERNALCATAVERSION = 3 local INTERNALMISTSVERSION = 1 @@ -725,6 +725,11 @@ function PermoksAccountManager:Modernize(oldInternalVersion) self:ResetCategories() oldInternalVersion = 1 end + + if oldInternalVersion < 2 then + self:AddLabelToDefaultCategory("general", "adventurer_crest", 7.5) + oldInternalVersion = 2 + end end function PermoksAccountManager:GetGUID() diff --git a/db/db.lua b/db/db.lua index bce2099..5e83455 100644 --- a/db/db.lua +++ b/db/db.lua @@ -13,6 +13,7 @@ local default_categories = { 'keystone', 'mplus_score', 'catalyst_charges', + 'adventurer_crest', 'veteran_crest', 'normal_crest', 'hero_crest', @@ -34,12 +35,13 @@ local default_categories = { keystone = 5, mplus_score = 6, catalyst_charges = 7, - veteran_crest = 8, - normal_crest = 9, - hero_crest = 10, - myth_crest = 11, - spark_current = 12, - spark_drops = 13, + adventurer_crest = 8, + veteran_crest = 9, + normal_crest = 10, + hero_crest = 11, + myth_crest = 12, + spark_current = 13, + spark_drops = 14, -- Probably interesting during the first weeks, might wanna (re-)move later separator2 = 20, @@ -611,6 +613,7 @@ PermoksAccountManager.currency = { -- 12.0 [3383] = 0, -- Adventurer Dawncrest + [3341] = 0, -- Veteran Dawncrest [3343] = 0, -- Champion Dawncrest [3345] = 0, -- Hero Dawncrest [3347] = 0, -- Myth Dawncrest @@ -619,6 +622,7 @@ PermoksAccountManager.currency = { [3378] = 0, -- Dawnlight Manaflux (Catalyst Charges Midnight Season 1) [3316] = 0, -- Voidlight Marl + [3376] = 0, -- Shard of Dundun } PermoksAccountManager.currencyTrees = { diff --git a/modules/currencies.lua b/modules/currencies.lua index 876f176..0ba3a8d 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -255,7 +255,7 @@ local labelRows = { --}, -- 11.0 - veteran_crest = { + adventurer_crest = { label = 'Adventurer Crests', type = 'crestcurrency', key = 3383, @@ -263,6 +263,14 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, + veteran_crest = { + label = 'Veteran Crests', + type = 'crestcurrency', + key = 3341, + passRow = true, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, normal_crest = { label = 'Champion Crests', type = 'crestcurrency', @@ -400,6 +408,14 @@ local labelRows = { group = 'currency', version = WOW_PROJECT_MAINLINE }, + shard_of_dundun = { + label = 'Shard of Dundun', + type = 'currency', + warband = true, + key = 3376, + group = 'currency', + version = WOW_PROJECT_MAINLINE + }, -- wotlk-classic honorBCC = { @@ -859,7 +875,7 @@ function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurr if currencyInfo.maxQuantity and currencyInfo.maxQuantity > 0 and (currencyInfo.quantity or 0) > currencyInfo.maxQuantity then -- REFACTOR: move this logic to the crest labelRows to remove redundancy local id = currencyInfo.currencyType - if id ~= 3248 and id ~= 3286 and id ~= 3288 and id ~= 3290 then + if id ~= 3383 and id ~= 3341 and id ~= 3343 and id ~= 3345 and id ~= 3347 then currencyInfo.quantity = currencyInfo.quantity / 100 end end From 567173bac4030a53e7ac975b69f574fc2b2b1103 Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 13 Mar 2026 23:58:04 +0100 Subject: [PATCH 117/138] Give manager buttons and the close button a global name (for ElvUI) --- PermoksAccountManager.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index cb3262c..a414b94 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -301,8 +301,10 @@ do return button end + local categoryButtons = {} function CreateManagerButton(width, height, text) - local button = CreateFrame("Button", nil, PermoksAccountManager.managerFrame) + local button = CreateFrame("Button", "PAM_ManagerButton_" .. #categoryButtons + 1, PermoksAccountManager.managerFrame) + tinsert(categoryButtons, button) button:SetSize(width, height) local normalTexture = button:CreateTexture() @@ -536,7 +538,7 @@ function PermoksAccountManager:CreateMenuButtons() ------------------- -- Close Button - local closeButton = CreateFrame("Button", nil, managerFrame.topDragBar) + local closeButton = CreateFrame("Button", "PAM_CloseButton", managerFrame.topDragBar) managerFrame.closeButton = closeButton closeButton:ClearAllPoints() closeButton:SetSize(20, 20) From 29f9e9ef0bd497d1073691c4052bdee7bf0b68e4 Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 13 Mar 2026 23:58:23 +0100 Subject: [PATCH 118/138] Check if the guild message is secret before parsing it --- PermoksAccountManager.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index a414b94..3978a1d 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -426,7 +426,7 @@ do end end else - if arg1 then + if arg1 and not issecretvalue(arg1) then arg1 = arg1:lower() local start, ending = arg1:find("^!allkeys") if start then From ce55951b2df66aae7744e3158490f86707d69940 Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 13 Mar 2026 23:58:59 +0100 Subject: [PATCH 119/138] Add the import API, PRMKAPI.Import(importString) --- api.lua | 12 ++++++++++++ options.lua | 40 ++++++++++++++++++++++++++-------------- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/api.lua b/api.lua index d0ada6d..df87030 100644 --- a/api.lua +++ b/api.lua @@ -23,3 +23,15 @@ function api.GetCharactersForAccount(account) return PermoksAccountManager.db.global.accounts[account].data end end + +function api.Import(importString) + local data = PermoksAccountManager:ParseImportString(importString) + if data then + PermoksAccountManager.db.global.custom = data.custom + PermoksAccountManager.db.global.options = data.options + PermoksAccountManager.db.global.internalVersion = data.internalVersion + end + + --TODO: Handle the import more gracefully. This should work for now. Forcing a reload would probably be more secure. + PermoksAccountManager:OnLogin() +end diff --git a/options.lua b/options.lua index a421228..fae0403 100644 --- a/options.lua +++ b/options.lua @@ -409,7 +409,8 @@ local function createDefaultOptions() if info.childs then for i, child in pairs(info.childs) do if - PermoksAccountManager.labelRows[child] and not PermoksAccountManager.labelRows[child].hideOption + PermoksAccountManager.labelRows[child] + and not PermoksAccountManager.labelRows[child].hideOption then args[child] = { order = i, @@ -2009,9 +2010,13 @@ do if group == "currency" then local globalCurrencyInfo = PermoksAccountManager.db.global.currencyInfo[info.key] local currencyIcon = globalCurrencyInfo and globalCurrencyInfo.icon - if currencyIcon then - name = string.format('\124T%d:18:18\124t%s', currencyIcon, type(name) == "function" and name() or name) - end + if currencyIcon then + name = string.format( + "\124T%d:18:18\124t%s", + currencyIcon, + type(name) == "function" and name() or name + ) + end end labelTable[group].args[key] = labelTable[group].args[key] @@ -2063,7 +2068,7 @@ function PermoksAccountManager:LoadOptions() db.currentCategories = db.options.defaultCategories end - PermoksAccountManager.optionsFrame = AceGUI:Create("Frame") + PermoksAccountManager.optionsFrame = PermoksAccountManager.optionsFrame or AceGUI:Create("Frame") PermoksAccountManager.optionsFrame:EnableResize(true) PermoksAccountManager.optionsFrame:Hide() @@ -2157,10 +2162,10 @@ function PermoksAccountManager:OptionsToString() local compressed = LibDeflate:CompressDeflate(serialized) local encode = LibDeflate:EncodeForPrint(compressed) - return encode or "HMM" + return encode or "Error" end -function PermoksAccountManager:ImportOptions(optionsString) +function PermoksAccountManager:ParseImportString(optionsString) local decoded = LibDeflate:DecodeForPrint(optionsString) if not decoded then return @@ -2184,13 +2189,20 @@ function PermoksAccountManager:ImportOptions(optionsString) end end - PermoksAccountManager.confirm.accept:SetCallback("OnClick", function() - PermoksAccountManager.db.global.custom = data.custom - PermoksAccountManager.db.global.options = data.options - PermoksAccountManager.db.global.internalVersion = data.internalVersion + return data +end - C_UI.Reload() - end) +function PermoksAccountManager:ImportOptions(optionsString) + local data = self:ParseImportString(optionsString) + if data then + PermoksAccountManager.confirm.accept:SetCallback("OnClick", function() + PermoksAccountManager.db.global.custom = data.custom + PermoksAccountManager.db.global.options = data.options + PermoksAccountManager.db.global.internalVersion = data.internalVersion + + C_UI.Reload() + end) - PermoksAccountManager.confirm:Show() + PermoksAccountManager.confirm:Show() + end end From 580fefa6b14af6b2f262fc4e14d77b38a009d54a Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 16 Mar 2026 16:50:00 +0100 Subject: [PATCH 120/138] Add an API reference to make it more clear that you can create plugins --- api.lua | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 109 insertions(+), 3 deletions(-) diff --git a/api.lua b/api.lua index df87030..f2363be 100644 --- a/api.lua +++ b/api.lua @@ -3,12 +3,118 @@ _G.PAMAPI = {} local api = _G.PAMAPI -function api.AddModule(...) - if ... then - local added = PermoksAccountManager:AddModule(...) +--[[ +PAM API quick reference + +How to add a module +1. Create a unique module name. +2. Build a payload table: + - update(charInfo): fills or refreshes data on the current character. + - labels: table of rowIdentifier = labelRow. + - events: eventName = callback or { callbackA, callbackB }. + Every callback receives (charInfo, ...eventArgs). + - share: optional map of callbackFunction = charInfoKey. + After that callback runs, PAM shares charInfo[charInfoKey] with synced accounts. +3. Register the module with: + local module = _G.PAMAPI.AddModule("my_module", payload, true) + Pass true for forceLoad when you want the module to register events and run update() immediately. +4. Keep every row identifier unique across all PAM modules. + +Minimal complete example +local api = _G.PAMAPI + +local function UpdateExample(charInfo) + charInfo.exampleModule = charInfo.exampleModule or {} + charInfo.exampleModule.status = IsResting() and "Resting" or "Awake" +end + +local payload = { + update = UpdateExample, + labels = { + example_status = { + label = "Example Status", + group = "other", + version = false, + data = function(altData) + return altData.exampleModule and altData.exampleModule.status or "-" + end, + }, + }, + events = { + PLAYER_ENTERING_WORLD = UpdateExample, + PLAYER_UPDATE_RESTING = UpdateExample, + }, + share = { + [UpdateExample] = "exampleModule", + }, +} + +api.AddModule("example_module", payload, true) + +Built-in labelRow.type values supported by PAM without custom registration +- quest: reads altData.questInfo[questType][visibility][key]. +- currency: reads altData.currencyInfo[key]. +- faction: reads altData.factions[key]. +- item: reads altData.itemCounts[key]. +- sanctum: reads altData.sanctumInfo with labelRow.key. +- raid: reads altData.instanceInfo.raids[key]. +- pvp: reads altData.pvp[key]. +- vault: reads altData.vaultInfo[key]. + +If you do not want to use one of the built-in types, set data = function(altData, labelRow, rowIdentifier) +on the row instead. Bundled types such as gold, keystone, spark, worldquest, renown, and similar module- +specific types are not core defaults; they are registered by their owning modules. + +Common label row fields +- label: string or function returning the row name shown in the UI. +- type: optional string; use one of the built-in types above or a custom type you registered yourself. +- data: optional fallback renderer used when no built-in/custom type is needed. +- key: optional lookup key used by most built-in types. +- group: optional group/category key such as character, currency, item, dungeons, raids, reputation, + profession, resetDaily, resetWeekly, or other. +- version: false for all game versions, or a specific WOW_PROJECT_* constant. +- tooltip: true to use the default tooltip for the type, or a function for a custom tooltip. +- customTooltip: function(button, altData, labelRow, rowIdentifier) for full tooltip control. +- color: function(altData) returning a ColorMixin. +- OnClick: function(buttonName, altData) for row click handling. +- warband: true to show in the warband column, "unique" for warband-only rows. +- passKey: for custom label types, prepends labelRow.key or rowIdentifier to the callback arguments. +- passRow: for custom label types, prepends the full labelRow to the callback arguments. + +Available functions +- PAMAPI.AddModule(moduleName, payload, forceLoad) + moduleName: unique string used to register the module. + payload: table containing update, labels, optional events, and optional share. + forceLoad: boolean; pass true to load the module immediately. + returns: the created module object, or nil when registration fails. + +- module:AddCustomLabelType(customType, callback, alwaysForceUpdate, ...) + customType: string that your label rows use in labelRow.type. + callback: renderer called with the altData fields named in ... after PAM extracts them. + alwaysForceUpdate: boolean; when true, callback arguments are rebuilt every refresh instead of cached. + ...: one or more altData keys, for example "itemCounts", "currencyInfo", or "exampleModule". + +- PAMAPI.GetCharacterInfo(key) + key: string key from the current character info table. + returns: PermoksAccountManager.charInfo[key], or nil. + +- PAMAPI.GetCharactersForAccount(account) + account: account key from db.global.accounts, for example "main" or a synced account id. + returns: db.global.accounts[account].data, or nil. + +- PAMAPI.Import(importString) + importString: export string created by PAM. + effect: overwrites the imported custom/category/options data and reruns OnLogin() to refresh state. +]] + + +function api.AddModule(moduleName, payload, forceLoad) + if moduleName and payload then + local added = PermoksAccountManager:AddModule(moduleName, payload, forceLoad) if added then PermoksAccountManager.UpdateCustomLabelOptions() end + return added end end From 726c63edd0d98e977a756c511c87f4ea58ad47cf Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 16 Mar 2026 16:51:00 +0100 Subject: [PATCH 121/138] Add Special Assignments, the World Bosses and fix Harandir weekly --- db/db.lua | 26 ++++++++++++++++++++------ modules/quests.lua | 42 ++++++++++++++++++++++++++---------------- 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/db/db.lua b/db/db.lua index 5e83455..931d6bc 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1014,10 +1014,6 @@ PermoksAccountManager.quests = { [63199] = { questType = 'weekly' }, [63433] = { questType = 'weekly' } }, - -- World Boss - world_boss = { - [82653] = { questType = 'weekly' }, -- Aggregation of Horrors - }, korthia_world_boss = { [64531] = { questType = 'weekly' } -- Mor'geth, Tormentor of the Damned }, @@ -1940,11 +1936,29 @@ PermoksAccountManager.quests = { [89507] = {questType = 'weekly', warband = true, log = true}, }, lost_legends = { - [89268] = {questType = 'weekly', warband = true, log = true}, + [88993] = {questType = 'weekly', warband = true, log = true}, + [88994] = {questType = 'weekly', warband = true, log = true}, + [88995] = {questType = 'weekly', warband = true, log = true}, + [88996] = {questType = 'weekly', warband = true, log = true}, + [88997] = {questType = 'weekly', warband = true, log = true}, + [88998] = {questType = 'weekly', warband = true, log = true}, + -- [89268] = {questType = 'weekly', warband = true, log = true}, }, stormarion_assault = { [90962] = {questType = 'weekly', warband = true, log = true}, - } + }, + special_assignments = { + [92139] = {questType = 'weekly', warband = true, log = true}, + [92145] = {questType = 'weekly', warband = true, log = true}, + [93244] = {questType = 'weekly', warband = true, log = true}, + }, + -- World Boss + world_boss = { + [92560] = { questType = 'weekly', log = true }, -- Lu'ashal + [92123] = { questType = 'weekly', log = true }, -- Cragpine's Treevenge + [92034] = { questType = 'weekly', log = true }, -- Thorm'belan + [92636] = { questType = 'weekly', log = true }, -- Predaxas + }, } PermoksAccountManager.locale = { diff --git a/modules/quests.lua b/modules/quests.lua index 9135b3d..1cd8613 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -243,21 +243,8 @@ local labelRows = { group = 'resetDaily', version = WOW_PROJECT_MAINLINE }, - world_boss = { - label = L['World Boss'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - isCompleteTest = true, - isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.world_boss) == 2 - end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE - }, korthia_world_boss = { - label = 'Korthia WB', + label = 'World Boss Korthia', type = 'quest', questType = 'weekly', visibility = 'hidden', @@ -468,7 +455,7 @@ local labelRows = { -- 10.0 Dragonflight dragonflight_world_boss = { - label = L['World Boss'], + label = 'World Boss DF', type = 'quest', questType = 'weekly', visibility = 'hidden', @@ -950,7 +937,7 @@ local labelRows = { -- 11.0 The War Within -- world activities tww_world_boss = { - label = L['World Boss'], + label = 'World Boss TWW', type = 'quest', questType = 'weekly', visibility = 'hidden', @@ -1376,6 +1363,29 @@ local labelRows = { warband = true, version = WOW_PROJECT_MAINLINE }, + special_assignments = { + IDS = {92139, 92145, 93244}, + label = 'Special Assignments', + type = 'quest', + questType = 'weekly', + visibility = 'visible', + group = 'resetWeekly', + required = 2, + version = WOW_PROJECT_MAINLINE + }, + world_boss = { + label = L['World Boss'] .. "Midnight", + type = 'quest', + questType = 'weekly', + visibility = 'visible', + -- isCompleteTest = true, + -- isComplete = function(alt_data) + -- return alt_data.questInfo and alt_data.questInfo.weekly and + -- PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.world_boss) == 2 + -- end, + group = 'resetWeekly', + version = WOW_PROJECT_MAINLINE + }, --wotlk general_dailies = { From 99f0884f70c0c6cd7e302ca8587d379db20fa11d Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 16 Mar 2026 16:51:09 +0100 Subject: [PATCH 122/138] Fix possible Lua error in the currency module --- modules/currencies.lua | 2037 +++++++++++++++++++++------------------- 1 file changed, 1066 insertions(+), 971 deletions(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index 0ba3a8d..b075471 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -1,1046 +1,1141 @@ local addonName, PermoksAccountManager = ... -local LibQTip = LibStub('LibQTip-1.0') -local L = LibStub('AceLocale-3.0'):GetLocale(addonName) +local LibQTip = LibStub("LibQTip-1.0") +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) -local module = 'currencies' +local module = "currencies" local labelRows = { - -- general currencies - honor = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1792].name or 'Honor' - end, - type = 'currency', - warband = true, - key = 1792, - abbCurrent = true, - abbMax = true, - tooltip = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - valor = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1191].name or 'Valor' - end, - type = 'currency', - key = 1191, - hideMax = true, - tooltip = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - conquest = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1602].name or 'Conquest' - end, - type = 'currency', - key = 1602, - hideMax = true, - tooltip = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - timewarped_badge = { - label = 'Timewarped Badge', - type = 'currency', - warband = true, - key = 1166, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - dmf_prize_ticket = { - label = 'Darkmoon Prize Ticket', - type = 'currency', - warband = true, - key = 515, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - - ---- Shadowlands - --soul_cinders = { - -- label = function() - -- return PermoksAccountManager.db.global.currencyInfo[1906].name or 'Soul Cinders' - -- end, - -- type = 'currency', - -- warband = true, - -- key = 1906, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --soul_ash = { - -- label = function() - -- return PermoksAccountManager.db.global.currencyInfo[1828].name or 'Soul Ash' - -- end, - -- type = 'currency', - -- warband = true, - -- key = 1828, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --stygia = { - -- label = function() - -- return PermoksAccountManager.db.global.currencyInfo[1767].name or 'Stygia' - -- end, - -- type = 'currency', - -- key = 1767, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --tower_knowledge = { - -- label = function() - -- return PermoksAccountManager.db.global.currencyInfo[1904].name or 'Tower Knowledge' - -- end, - -- type = 'currency', - -- key = 1904, - -- hideMax = true, - -- tooltip = true, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --stygian_ember = { - -- label = function() - -- return PermoksAccountManager.db.global.currencyInfo[1977].name or 'Stygian Ember' - -- end, - -- type = 'currency', - -- key = 1977, - -- customTooltip = function(button, alt_data) - -- PermoksAccountManager:StygianEmbersTooltip_OnEnter(button, alt_data) - -- end, - -- tooltip = true, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --cataloged_research = { - -- label = function() - -- return PermoksAccountManager.db.global.currencyInfo[1931].name or 'Cataloged Research' - -- end, - -- type = 'currency', - -- warband = true, - -- key = 1931, - -- abbMax = true, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --redeemed_soul = { - -- label = function() - -- return PermoksAccountManager.db.global.currencyInfo[1810].name or 'Redeemed Soul' - -- end, - -- type = 'currency', - -- customTooltip = function(button, altData, labelRow) - -- PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) - -- end, - -- tooltip = true, - -- tooltipKeyPath = { 'covenantInfo', 'souls' }, - -- key = 1810, - -- group = 'sanctum', - -- version = WOW_PROJECT_MAINLINE - --}, - --reservoir_anima = { - -- label = function() - -- return PermoksAccountManager.db.global.currencyInfo[1813].name or 'Reservoir Anima' - -- end, - -- type = 'currency', - -- customTooltip = function(button, altData, labelRow) - -- PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) - -- end, - -- tooltip = true, - -- tooltipKeyPath = { 'covenantInfo', 'anima' }, - -- key = 1813, - -- hideMax = true, - -- group = 'sanctum', - -- version = WOW_PROJECT_MAINLINE - --}, --- - ---- 9.2 - --cosmic_flux = { - -- label = function() - -- return PermoksAccountManager.db.global.currencyInfo[2009] and - -- PermoksAccountManager.db.global.currencyInfo[2009].name or 'Cosmic Flux' - -- end, - -- type = 'currency', - -- warband = true, - -- key = 2009, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --cyphers = { - -- label = L['Cyphers'], - -- type = 'currency', - -- warband = true, - -- key = 1979, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, --- --- - ---- 10.0 - --dragon_isles_supplies = { - -- label = 'Dragon Isles Supplies', - -- type = 'currency', - -- warband = true, - -- key = 2003, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --elemental_overflow = { - -- label = 'Elemental Overflow', - -- type = 'currency', - -- warband = true, - -- key = 2118, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --bloody_tokens = { - -- label = 'Bloody Tokens', - -- type = 'currency', - -- key = 2123, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --storm_sigil = { - -- label = 'Storm Sigil', - -- type = 'currency', - -- key = 2122, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, --- - ---- 10.1 - --flightstones = { - -- label = 'Flightstones', - -- type = 'currency', - -- key = 2245, - -- abbMax = true, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, --- - ---- 10.1.5 - --paracausal_flakes = { - -- label = 'Paracausal Flakes', - -- type = 'currency', - -- warband = true, - -- key = 2594, - -- abbMax = true, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, --- - ---- 10.2 - --emerald_dewdrop = { - -- label = 'Emerald Dewdrop', - -- type = 'currency', - -- key = 2650, - -- passRow = true, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --seedbloom = { - -- label = 'Seedbloom', - -- type = 'currency', - -- key = 2651, - -- passRow = true, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - --dream_infusion = { - -- label = 'Dream Infusion', - -- type = 'currency', - -- key = 2777, - -- passRow = true, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - - -- 11.0 - adventurer_crest = { - label = 'Adventurer Crests', - type = 'crestcurrency', - key = 3383, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - veteran_crest = { - label = 'Veteran Crests', - type = 'crestcurrency', - key = 3341, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - normal_crest = { - label = 'Champion Crests', - type = 'crestcurrency', - key = 3343, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - hero_crest = { - label = 'Hero Crests', - type = 'crestcurrency', - key = 3345, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - myth_crest = { - label = 'Myth Crests', - type = 'crestcurrency', - key = 3347, - passRow = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - valorstones = { - label = 'Valorstones', - type = 'currency', - key = 3008, - abbMax = true, - warband = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - resonance_crystals = { - label = 'Resonance Crystals', - type = 'currency', - warband = true, - key = 2815, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - kej = { - label = 'Kej', - type = 'currency', - warband = true, - key = 3056, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - restored_coffer_key = { - label = 'Restored Coffer Key', - type = 'cofferkey', - passRow = true, - key = 3028, - reagent = 229899, - reagentRequired = 100, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - undercoin = { - label = 'Undercoin', - type = 'currency', - warband = true, - key = 2803, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - - -- 11.0.5 - --bronze_celebration_token = { - -- label = 'Celebration Token', - -- type = 'currency', - -- warband = true, - -- key = 3100, - -- group = 'currency', - -- version = WOW_PROJECT_MAINLINE - --}, - - -- 11.1 - spark_drops = { - label = 'Spark Cap', - type = 'currency', - key = 3212, - group = 'currency', - hideIcon = true, - version = WOW_PROJECT_MAINLINE, - }, - empty_kajacola_can = { - label = 'Empy Kaja\'Cola', - type = 'currency', - key = 3218, - group = 'currency', - version = WOW_PROJECT_MAINLINE, - }, - vintage_kajacola_can = { - label = 'Vintage Kaja\'Cola', - type = 'currency', - key = 3220, - group = 'currency', - version = WOW_PROJECT_MAINLINE, - }, - catalyst_charges = { - label = L['Catalyst Charges'], - type = 'catalystcharges', - key = 3378, - hideIcon = true, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - - -- 11.1.5 - eye_of_nzoth = { - label = 'Eye of N\'Zoth', - type = 'treecurrency', - passRow = true, - key = 3728, - maxQuantity = 13, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - displaced_corrupted_mementos = { - label = 'Corrupted Mementos', - type = 'currency', - key = 3149, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - - -- 12.0 - voidlight_marl = { - label = 'Voidlight Marl', - type = 'currency', - warband = true, - key = 3316, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - shard_of_dundun = { - label = 'Shard of Dundun', - type = 'currency', - warband = true, - key = 3376, - group = 'currency', - version = WOW_PROJECT_MAINLINE - }, - - -- wotlk-classic - honorBCC = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1901] and - PermoksAccountManager.db.global.currencyInfo[1901].name or 'Honor' - end, - type = 'currency', - key = 1901, - abbMax = true, - customIcon = { - height = 32, - width = 32, - xOffset = -5, - yOffset = -5 - }, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - arenaPoints = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1900] and - PermoksAccountManager.db.global.currencyInfo[1900].name or 'Arena Points' - end, - type = 'currency', - key = 1900, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - emblem_of_heroism = { - label = 'Heroism Emblems', - type = 'currency', - key = 101, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - emblem_of_valor = { - label = 'Valor Emblems', - type = 'currency', - key = 102, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - emblem_of_conquest = { - label = 'Conq. Emblems', - type = 'currency', - key = 221, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - emblem_of_triumph = { - label = 'Triumph Emblems', - type = 'currency', - key = 301, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - emblem_of_frost = { - label = 'Frost Emblems', - type = 'currency', - key = 341, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - sidereal_essence = { - label = 'Sidereal Essence', - type = 'currency', - key = 2589, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - defilers_scourgestone = { - label = 'Scourgestones', - type = 'currency', - key = 2711, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - stone_keepers_shard = { - label = 'Stone Keeper\'s Shard', - type = 'currency', - key = 161, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - justice_points = { - label = 'Justice Points', - type = 'currency', - key = 395, - abbMax = true, - group = 'currency', - version = false - }, - valor_points = { - label = 'Valor Points', - type = 'valor', - key = 396, - abbMax = true, - passRow = true, - group = 'currency', - version = false - }, - conquest_points = { - label = 'Conquest', - type = 'currency', - key = 390, - abbMax = true, - group = 'currency', - version = false - }, - tol_barad_commendations = { - label = 'Commendations', - type = 'currency', - key = 391, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_CATACLYSM_CLASSIC - }, - - -- Mists - honor_mists = { - label = function() - return PermoksAccountManager.db.global.currencyInfo[1901] and - PermoksAccountManager.db.global.currencyInfo[1901].name or 'Honor' - end, - type = 'currency', - key = 1901, - abbMax = true, - customIcon = { - height = 20, - width = 20, - xOffset = -3, - yOffset = -1 - }, - group = 'currency', - version = WOW_PROJECT_MISTS_CLASSIC - }, - ironpaw_token = { - label = 'Ironpaw Token', - type = 'currency', - key = 402, - abbMax = true, - group = 'currency', - version = WOW_PROJECT_MISTS_CLASSIC - }, + -- general currencies + honor = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[1792].name or "Honor" + end, + type = "currency", + warband = true, + key = 1792, + abbCurrent = true, + abbMax = true, + tooltip = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + valor = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[1191].name or "Valor" + end, + type = "currency", + key = 1191, + hideMax = true, + tooltip = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + conquest = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[1602].name or "Conquest" + end, + type = "currency", + key = 1602, + hideMax = true, + tooltip = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + timewarped_badge = { + label = "Timewarped Badge", + type = "currency", + warband = true, + key = 1166, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + dmf_prize_ticket = { + label = "Darkmoon Prize Ticket", + type = "currency", + warband = true, + key = 515, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + + ---- Shadowlands + --soul_cinders = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1906].name or 'Soul Cinders' + -- end, + -- type = 'currency', + -- warband = true, + -- key = 1906, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --soul_ash = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1828].name or 'Soul Ash' + -- end, + -- type = 'currency', + -- warband = true, + -- key = 1828, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --stygia = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1767].name or 'Stygia' + -- end, + -- type = 'currency', + -- key = 1767, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --tower_knowledge = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1904].name or 'Tower Knowledge' + -- end, + -- type = 'currency', + -- key = 1904, + -- hideMax = true, + -- tooltip = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --stygian_ember = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1977].name or 'Stygian Ember' + -- end, + -- type = 'currency', + -- key = 1977, + -- customTooltip = function(button, alt_data) + -- PermoksAccountManager:StygianEmbersTooltip_OnEnter(button, alt_data) + -- end, + -- tooltip = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --cataloged_research = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1931].name or 'Cataloged Research' + -- end, + -- type = 'currency', + -- warband = true, + -- key = 1931, + -- abbMax = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --redeemed_soul = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1810].name or 'Redeemed Soul' + -- end, + -- type = 'currency', + -- customTooltip = function(button, altData, labelRow) + -- PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) + -- end, + -- tooltip = true, + -- tooltipKeyPath = { 'covenantInfo', 'souls' }, + -- key = 1810, + -- group = 'sanctum', + -- version = WOW_PROJECT_MAINLINE + --}, + --reservoir_anima = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[1813].name or 'Reservoir Anima' + -- end, + -- type = 'currency', + -- customTooltip = function(button, altData, labelRow) + -- PermoksAccountManager:CustomCovenantCurrencyTooltip(button, altData, labelRow) + -- end, + -- tooltip = true, + -- tooltipKeyPath = { 'covenantInfo', 'anima' }, + -- key = 1813, + -- hideMax = true, + -- group = 'sanctum', + -- version = WOW_PROJECT_MAINLINE + --}, + -- + ---- 9.2 + --cosmic_flux = { + -- label = function() + -- return PermoksAccountManager.db.global.currencyInfo[2009] and + -- PermoksAccountManager.db.global.currencyInfo[2009].name or 'Cosmic Flux' + -- end, + -- type = 'currency', + -- warband = true, + -- key = 2009, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --cyphers = { + -- label = L['Cyphers'], + -- type = 'currency', + -- warband = true, + -- key = 1979, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + -- + -- + ---- 10.0 + --dragon_isles_supplies = { + -- label = 'Dragon Isles Supplies', + -- type = 'currency', + -- warband = true, + -- key = 2003, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --elemental_overflow = { + -- label = 'Elemental Overflow', + -- type = 'currency', + -- warband = true, + -- key = 2118, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --bloody_tokens = { + -- label = 'Bloody Tokens', + -- type = 'currency', + -- key = 2123, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --storm_sigil = { + -- label = 'Storm Sigil', + -- type = 'currency', + -- key = 2122, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + -- + ---- 10.1 + --flightstones = { + -- label = 'Flightstones', + -- type = 'currency', + -- key = 2245, + -- abbMax = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + -- + ---- 10.1.5 + --paracausal_flakes = { + -- label = 'Paracausal Flakes', + -- type = 'currency', + -- warband = true, + -- key = 2594, + -- abbMax = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + -- + ---- 10.2 + --emerald_dewdrop = { + -- label = 'Emerald Dewdrop', + -- type = 'currency', + -- key = 2650, + -- passRow = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --seedbloom = { + -- label = 'Seedbloom', + -- type = 'currency', + -- key = 2651, + -- passRow = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + --dream_infusion = { + -- label = 'Dream Infusion', + -- type = 'currency', + -- key = 2777, + -- passRow = true, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + + -- 11.0 + adventurer_crest = { + label = "Adventurer Crests", + type = "crestcurrency", + key = 3383, + passRow = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + veteran_crest = { + label = "Veteran Crests", + type = "crestcurrency", + key = 3341, + passRow = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + normal_crest = { + label = "Champion Crests", + type = "crestcurrency", + key = 3343, + passRow = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + hero_crest = { + label = "Hero Crests", + type = "crestcurrency", + key = 3345, + passRow = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + myth_crest = { + label = "Myth Crests", + type = "crestcurrency", + key = 3347, + passRow = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + valorstones = { + label = "Valorstones", + type = "currency", + key = 3008, + abbMax = true, + warband = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + resonance_crystals = { + label = "Resonance Crystals", + type = "currency", + warband = true, + key = 2815, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + kej = { + label = "Kej", + type = "currency", + warband = true, + key = 3056, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + restored_coffer_key = { + label = "Restored Coffer Key", + type = "cofferkey", + passRow = true, + key = 3028, + reagent = 229899, + reagentRequired = 100, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + undercoin = { + label = "Undercoin", + type = "currency", + warband = true, + key = 2803, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + + -- 11.0.5 + --bronze_celebration_token = { + -- label = 'Celebration Token', + -- type = 'currency', + -- warband = true, + -- key = 3100, + -- group = 'currency', + -- version = WOW_PROJECT_MAINLINE + --}, + + -- 11.1 + spark_drops = { + label = "Spark Cap", + type = "currency", + key = 3212, + group = "currency", + hideIcon = true, + version = WOW_PROJECT_MAINLINE, + }, + empty_kajacola_can = { + label = "Empy Kaja'Cola", + type = "currency", + key = 3218, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + vintage_kajacola_can = { + label = "Vintage Kaja'Cola", + type = "currency", + key = 3220, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + catalyst_charges = { + label = L["Catalyst Charges"], + type = "catalystcharges", + key = 3378, + hideIcon = true, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + + -- 11.1.5 + eye_of_nzoth = { + label = "Eye of N'Zoth", + type = "treecurrency", + passRow = true, + key = 3728, + maxQuantity = 13, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + displaced_corrupted_mementos = { + label = "Corrupted Mementos", + type = "currency", + key = 3149, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + + -- 12.0 + voidlight_marl = { + label = "Voidlight Marl", + type = "currency", + warband = true, + key = 3316, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + shard_of_dundun = { + label = "Shard of Dundun", + type = "currency", + warband = true, + key = 3376, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, + + -- wotlk-classic + honorBCC = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[1901] + and PermoksAccountManager.db.global.currencyInfo[1901].name + or "Honor" + end, + type = "currency", + key = 1901, + abbMax = true, + customIcon = { + height = 32, + width = 32, + xOffset = -5, + yOffset = -5, + }, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + arenaPoints = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[1900] + and PermoksAccountManager.db.global.currencyInfo[1900].name + or "Arena Points" + end, + type = "currency", + key = 1900, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + emblem_of_heroism = { + label = "Heroism Emblems", + type = "currency", + key = 101, + abbMax = true, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + emblem_of_valor = { + label = "Valor Emblems", + type = "currency", + key = 102, + abbMax = true, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + emblem_of_conquest = { + label = "Conq. Emblems", + type = "currency", + key = 221, + abbMax = true, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + emblem_of_triumph = { + label = "Triumph Emblems", + type = "currency", + key = 301, + abbMax = true, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + emblem_of_frost = { + label = "Frost Emblems", + type = "currency", + key = 341, + abbMax = true, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + sidereal_essence = { + label = "Sidereal Essence", + type = "currency", + key = 2589, + abbMax = true, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + defilers_scourgestone = { + label = "Scourgestones", + type = "currency", + key = 2711, + abbMax = true, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + stone_keepers_shard = { + label = "Stone Keeper's Shard", + type = "currency", + key = 161, + abbMax = true, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + justice_points = { + label = "Justice Points", + type = "currency", + key = 395, + abbMax = true, + group = "currency", + version = false, + }, + valor_points = { + label = "Valor Points", + type = "valor", + key = 396, + abbMax = true, + passRow = true, + group = "currency", + version = false, + }, + conquest_points = { + label = "Conquest", + type = "currency", + key = 390, + abbMax = true, + group = "currency", + version = false, + }, + tol_barad_commendations = { + label = "Commendations", + type = "currency", + key = 391, + abbMax = true, + group = "currency", + version = WOW_PROJECT_CATACLYSM_CLASSIC, + }, + + -- Mists + honor_mists = { + label = function() + return PermoksAccountManager.db.global.currencyInfo[1901] + and PermoksAccountManager.db.global.currencyInfo[1901].name + or "Honor" + end, + type = "currency", + key = 1901, + abbMax = true, + customIcon = { + height = 20, + width = 20, + xOffset = -3, + yOffset = -1, + }, + group = "currency", + version = WOW_PROJECT_MISTS_CLASSIC, + }, + ironpaw_token = { + label = "Ironpaw Token", + type = "currency", + key = 402, + abbMax = true, + group = "currency", + version = WOW_PROJECT_MISTS_CLASSIC, + }, } local function UpdateAllCurrencies(charInfo) - local self = PermoksAccountManager - charInfo.currencyInfo = charInfo.currencyInfo or {} - - local currencyInfo = charInfo.currencyInfo - for currencyType, offset in pairs(self.currency) do - local info = C_CurrencyInfo.GetCurrencyInfo(currencyType) - if info then - currencyInfo[currencyType] = charInfo.currencyInfo[currencyType] or { name = info.name } - - currencyInfo[currencyType].currencyType = currencyType - currencyInfo[currencyType].quantity = info.quantity + offset - currencyInfo[currencyType].maxQuantity = info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity or - nil - currencyInfo[currencyType].totalEarned = info.totalEarned - currencyInfo[currencyType].maxWeeklyQuantity = info.maxWeeklyQuantity - currencyInfo[currencyType].quantityEarnedThisWeek = info.quantityEarnedThisWeek - - self.db.global.currencyInfo[currencyType] = self.db.global.currencyInfo[currencyType] or - { icon = info.iconFileID, name = info.name } - self.db.global.currencyInfo[currencyType].maxQuantity = info.maxQuantity and info.maxQuantity > 0 and - info.maxQuantity or self.db.global.currencyInfo[currencyType].maxQuantity - end - end + local self = PermoksAccountManager + charInfo.currencyInfo = charInfo.currencyInfo or {} + + local currencyInfo = charInfo.currencyInfo + for currencyType, offset in pairs(self.currency) do + local info = C_CurrencyInfo.GetCurrencyInfo(currencyType) + if info then + currencyInfo[currencyType] = charInfo.currencyInfo[currencyType] or { name = info.name } + + currencyInfo[currencyType].currencyType = currencyType + currencyInfo[currencyType].quantity = info.quantity + offset + currencyInfo[currencyType].maxQuantity = info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity + or nil + currencyInfo[currencyType].totalEarned = info.totalEarned + currencyInfo[currencyType].maxWeeklyQuantity = info.maxWeeklyQuantity + currencyInfo[currencyType].quantityEarnedThisWeek = info.quantityEarnedThisWeek + + self.db.global.currencyInfo[currencyType] = self.db.global.currencyInfo[currencyType] + or { icon = info.iconFileID, name = info.name } + self.db.global.currencyInfo[currencyType].maxQuantity = info.maxQuantity + and info.maxQuantity > 0 + and info.maxQuantity + or self.db.global.currencyInfo[currencyType].maxQuantity + end + end end local function UpdateAllTreeCurrencies(charInfo) - local self = PermoksAccountManager - if not self.currencyTrees then - return - end - - charInfo.treeCurrencyInfo = charInfo.treeCurrencyInfo or {} - - local currencyInfo = charInfo.treeCurrencyInfo - for treeID, treeInfo in pairs(self.currencyTrees) do - - local configID = C_Traits.GetConfigIDBySystemID(treeInfo.systemID) - local treeCurrencyInfos = configID and C_Traits.GetTreeCurrencyInfo(configID, treeID, true) - - if treeCurrencyInfos then - for _, treeCurrencyInfo in ipairs(treeCurrencyInfos) do - currencyInfo[treeCurrencyInfo.traitCurrencyID] = charInfo.currencyInfo[treeCurrencyInfo.traitCurrencyID] or {} - currencyInfo[treeCurrencyInfo.traitCurrencyID].quantity = treeCurrencyInfo.quantity - currencyInfo[treeCurrencyInfo.traitCurrencyID].maxQuantity = treeCurrencyInfo.maxQuantity - currencyInfo[treeCurrencyInfo.traitCurrencyID].spent = treeCurrencyInfo.spent - end - end - end + local self = PermoksAccountManager + if not self.currencyTrees then + return + end + + charInfo.treeCurrencyInfo = charInfo.treeCurrencyInfo or {} + + local currencyInfo = charInfo.treeCurrencyInfo + for treeID, treeInfo in pairs(self.currencyTrees) do + local configID = C_Traits.GetConfigIDBySystemID(treeInfo.systemID) + local treeCurrencyInfos = configID and C_Traits.GetTreeCurrencyInfo(configID, treeID, true) + + if treeCurrencyInfos then + for _, treeCurrencyInfo in ipairs(treeCurrencyInfos) do + currencyInfo[treeCurrencyInfo.traitCurrencyID] = charInfo.currencyInfo[treeCurrencyInfo.traitCurrencyID] + or {} + currencyInfo[treeCurrencyInfo.traitCurrencyID].quantity = treeCurrencyInfo.quantity + currencyInfo[treeCurrencyInfo.traitCurrencyID].maxQuantity = treeCurrencyInfo.maxQuantity + currencyInfo[treeCurrencyInfo.traitCurrencyID].spent = treeCurrencyInfo.spent + end + end + end end local function SumWarbandCurrencies(warbandCurrency) - local currencySum = 0 - for _, alt in pairs(warbandCurrency) do - currencySum = currencySum + alt.quantity - end - return currencySum + local currencySum = 0 + for _, alt in pairs(warbandCurrency) do + currencySum = currencySum + alt.quantity + end + return currencySum end -- this is only for the Warband column, not for the Warband characters local function UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, currencyType) - warbandCurrencyInfo[currencyType] = warbandCurrencyInfo[currencyType] or - { name = C_CurrencyInfo.GetCurrencyInfo(currencyType).name } + if not warbandCurrencyInfo then + return + end - warbandCurrencyInfo[currencyType].currencyType = currencyType - warbandCurrencyInfo[currencyType].altQuantity = newWarbandCurrencyInfo and - SumWarbandCurrencies(newWarbandCurrencyInfo) or 0 + warbandCurrencyInfo[currencyType] = warbandCurrencyInfo[currencyType] + or { name = C_CurrencyInfo.GetCurrencyInfo(currencyType).name } + + warbandCurrencyInfo[currencyType].currencyType = currencyType + warbandCurrencyInfo[currencyType].altQuantity = newWarbandCurrencyInfo + and SumWarbandCurrencies(newWarbandCurrencyInfo) + or 0 end local function UpdateAllWarbandCurrencies(charInfo) - local self = PermoksAccountManager - self.warbandData.currencyInfo = self.warbandData.currencyInfo or {} - - -- reference to the currency tables for character and Warband - local charCurrencyInfo = charInfo.currencyInfo - local warbandCurrencyInfo = self.warbandData.currencyInfo - for currencyType, offset in pairs(self.currency) do - -- only fetches data from non-active characters - local newWarbandCurrencyInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(currencyType) - local transferableCurrency = C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) - if newWarbandCurrencyInfo or transferableCurrency then - UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, currencyType) - warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + - charCurrencyInfo[currencyType].quantity + offset - end - end + local self = PermoksAccountManager + self.warbandData.currencyInfo = self.warbandData.currencyInfo or {} + + -- reference to the currency tables for character and Warband + local charCurrencyInfo = charInfo.currencyInfo + local warbandCurrencyInfo = self.warbandData.currencyInfo + for currencyType, offset in pairs(self.currency) do + -- only fetches data from non-active characters + local newWarbandCurrencyInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(currencyType) + local transferableCurrency = C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) + if newWarbandCurrencyInfo or transferableCurrency then + UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, currencyType) + + if warbandCurrencyInfo[currencyType] then + warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + + charCurrencyInfo[currencyType].quantity + + offset + end + end + end end local function Update(charInfo) - UpdateAllCurrencies(charInfo) - UpdateAllTreeCurrencies(charInfo) + UpdateAllCurrencies(charInfo) + UpdateAllTreeCurrencies(charInfo) - -- requesting the warband data has a slight server-delay - if PermoksAccountManager.isRetail then - C_CurrencyInfo.RequestCurrencyDataForAccountCharacters() - end + -- requesting the warband data has a slight server-delay + if PermoksAccountManager.isRetail then + C_CurrencyInfo.RequestCurrencyDataForAccountCharacters() + end end local function UpdateCurrency(charInfo, currencyType, quantity, quantityChanged) - local self = PermoksAccountManager - if not currencyType or not self.currency[currencyType] then - return - end - - local currencyInfo = charInfo.currencyInfo[currencyType] - if self.isRetail then - currencyInfo.totalEarned = quantityChanged + (currencyInfo.totalEarned or 0) - end - - local customOptions = self.currencyCustomOptions and self.currencyCustomOptions[currencyType] - if customOptions then - if customOptions.forceUpdate then - local newCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo(currencyType) - currencyInfo.quantity = newCurrencyInfo.quantity - currencyInfo.totalEarned = newCurrencyInfo.totalEarned - currencyInfo.quantityEarnedThisWeek = newCurrencyInfo.quantityEarnedThisWeek - currencyInfo.maxWeeklyQuantity = newCurrencyInfo.maxWeeklyQuantity - currencyInfo.maxQuantity = newCurrencyInfo.maxQuantity and newCurrencyInfo.maxQuantity > 0 and - newCurrencyInfo.maxQuantity or nil - elseif customOptions.currencyUpdate and charInfo.currencyInfo[customOptions.currencyUpdate] then - charInfo.currencyInfo[customOptions.currencyUpdate].quantity = C_CurrencyInfo.GetCurrencyInfo(customOptions - .currencyUpdate).quantity - end - else - charInfo.currencyInfo[currencyType].quantity = quantity + self.currency[currencyType] - end - - -- Update Warband amount - if self.warbandData.currencyInfo and C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) then - local warbandCurrencyInfo = self.warbandData.currencyInfo - warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + quantity - end + local self = PermoksAccountManager + if not currencyType or not self.currency[currencyType] then + return + end + + local currencyInfo = charInfo.currencyInfo[currencyType] + if self.isRetail and quantityChanged then + currencyInfo.totalEarned = quantityChanged + (currencyInfo.totalEarned or 0) + end + + local customOptions = self.currencyCustomOptions and self.currencyCustomOptions[currencyType] + if customOptions or not quantityChanged then + if not quantityChanged or customOptions.forceUpdate then + local newCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo(currencyType) + currencyInfo.quantity = newCurrencyInfo.quantity + currencyInfo.totalEarned = newCurrencyInfo.totalEarned + currencyInfo.quantityEarnedThisWeek = newCurrencyInfo.quantityEarnedThisWeek + currencyInfo.maxWeeklyQuantity = newCurrencyInfo.maxWeeklyQuantity + currencyInfo.maxQuantity = newCurrencyInfo.maxQuantity + and newCurrencyInfo.maxQuantity > 0 + and newCurrencyInfo.maxQuantity + or nil + elseif customOptions.currencyUpdate and charInfo.currencyInfo[customOptions.currencyUpdate] then + charInfo.currencyInfo[customOptions.currencyUpdate].quantity = + C_CurrencyInfo.GetCurrencyInfo(customOptions.currencyUpdate).quantity + end + else + charInfo.currencyInfo[currencyType].quantity = quantity + self.currency[currencyType] + end + + -- Update Warband amount + if self.warbandData.currencyInfo and C_CurrencyInfo.IsAccountTransferableCurrency(currencyType) then + local warbandCurrencyInfo = self.warbandData.currencyInfo + warbandCurrencyInfo[currencyType].quantity = warbandCurrencyInfo[currencyType].altQuantity + quantity + end end local function UpdateTreeCurrency(charInfo, treeID) - local self = PermoksAccountManager - if not self.currencyTrees[treeID] then - return - end - - local treeInfo = self.currencyTrees[treeID] - local currencyInfo = charInfo.treeCurrencyInfo[treeInfo.currencyType] - - local configID = C_Traits.GetConfigIDBySystemID(treeInfo.systemID) - local treeCurrencyInfo = configID and C_Traits.GetTreeCurrencyInfo(configID, treeID, true) - if treeCurrencyInfo then - currencyInfo.quantity = treeCurrencyInfo.quantity - currencyInfo.maxQuantity = treeCurrencyInfo.maxQuantity - end + local self = PermoksAccountManager + if not self.currencyTrees[treeID] then + return + end + + local treeInfo = self.currencyTrees[treeID] + local currencyInfo = charInfo.treeCurrencyInfo[treeInfo.currencyType] + + local configID = C_Traits.GetConfigIDBySystemID(treeInfo.systemID) + local treeCurrencyInfo = configID and C_Traits.GetTreeCurrencyInfo(configID, treeID, true) + if treeCurrencyInfo then + currencyInfo.quantity = treeCurrencyInfo.quantity + currencyInfo.maxQuantity = treeCurrencyInfo.maxQuantity + end end local function CurrencyTransferUpdate(charInfo) - local self = PermoksAccountManager - local accountData = self.account.data - local warbandCurrencyInfo = self.warbandData.currencyInfo - - -- Fetch the latest currency transfer transactions - local transferLog = C_CurrencyInfo.FetchCurrencyTransferTransactions() - local lastTransferCurrencyType = transferLog[#transferLog].currencyType - - - -- Get new currency information for character and warband - local newCharacterCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo(lastTransferCurrencyType) - local newWarbandCurrencyInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(lastTransferCurrencyType) - - -- this is necessary because a transfer can be taxed by with different penalties - UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, lastTransferCurrencyType) - warbandCurrencyInfo[lastTransferCurrencyType].quantity = warbandCurrencyInfo[lastTransferCurrencyType].altQuantity + - newCharacterCurrencyInfo.quantity - - -- update all alts for this currency because the transferlog has no GUID unless you relog (cringe) - -- even more cringe is that reducing a currency to 0 makes the character disappear from data. - -- comparing tables to find the nils is too complex so we just reset the db and fill it again. - for guID, alt in pairs(accountData) do - if guID ~= charInfo.guid and alt.currencyInfo[lastTransferCurrencyType] then - alt.currencyInfo[lastTransferCurrencyType].quantity = 0 - end - end - - for _, alt in pairs(newWarbandCurrencyInfo) do - local character = accountData[alt.characterGUID] - if character and character.currencyInfo and character.currencyInfo[lastTransferCurrencyType] then - character.currencyInfo[lastTransferCurrencyType].quantity = alt.quantity - end - end + local self = PermoksAccountManager + local accountData = self.account.data + local warbandCurrencyInfo = self.warbandData.currencyInfo + + -- Fetch the latest currency transfer transactions + local transferLog = C_CurrencyInfo.FetchCurrencyTransferTransactions() + local lastTransferCurrencyType = transferLog[#transferLog].currencyType + + -- Get new currency information for character and warband + local newCharacterCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo(lastTransferCurrencyType) + local newWarbandCurrencyInfo = C_CurrencyInfo.FetchCurrencyDataFromAccountCharacters(lastTransferCurrencyType) + + -- this is necessary because a transfer can be taxed by with different penalties + UpdateWarbandAltCurrency(warbandCurrencyInfo, newWarbandCurrencyInfo, lastTransferCurrencyType) + warbandCurrencyInfo[lastTransferCurrencyType].quantity = warbandCurrencyInfo[lastTransferCurrencyType].altQuantity + + newCharacterCurrencyInfo.quantity + + -- update all alts for this currency because the transferlog has no GUID unless you relog (cringe) + -- even more cringe is that reducing a currency to 0 makes the character disappear from data. + -- comparing tables to find the nils is too complex so we just reset the db and fill it again. + for guID, alt in pairs(accountData) do + if guID ~= charInfo.guid and alt.currencyInfo[lastTransferCurrencyType] then + alt.currencyInfo[lastTransferCurrencyType].quantity = 0 + end + end + + for _, alt in pairs(newWarbandCurrencyInfo) do + local character = accountData[alt.characterGUID] + if character and character.currencyInfo and character.currencyInfo[lastTransferCurrencyType] then + character.currencyInfo[lastTransferCurrencyType].quantity = alt.quantity + end + end end local function UpdateCatalystCharges(charInfo) - if not charInfo.currencyInfo or not charInfo.currencyInfo[3378] then - UpdateAllCurrencies(charInfo) - end + if not charInfo.currencyInfo or not charInfo.currencyInfo[3378] then + UpdateAllCurrencies(charInfo) + end - charInfo.currencyInfo[3378].quantity = C_CurrencyInfo.GetCurrencyInfo(3378).quantity + charInfo.currencyInfo[3378].quantity = C_CurrencyInfo.GetCurrencyInfo(3378).quantity end local function CreateCatalystChargeString(currencyInfo) - local catalystCharges = currencyInfo and currencyInfo[3378] - if not catalystCharges then return '-' end + local catalystCharges = currencyInfo and currencyInfo[3378] + if not catalystCharges then + return "-" + end - return PermoksAccountManager:CreateFractionString(catalystCharges.quantity, catalystCharges.maxQuantity) + return PermoksAccountManager:CreateFractionString(catalystCharges.quantity, catalystCharges.maxQuantity) end local function CreateCrestString(labelRow, currencyInfo) - local crestInfo = currencyInfo and currencyInfo[labelRow.key] - local self = PermoksAccountManager - - if crestInfo then - if crestInfo.maxQuantity and crestInfo.maxQuantity > 0 then - local currencyString = PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, - labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, crestInfo.totalEarned) - return string.format("%d - %s", crestInfo.quantity, currencyString) - elseif currencyInfo then - return PermoksAccountManager:CreateCurrencyString(crestInfo, labelRow.abbCurrent, labelRow.abbMax, - labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon) - end - -- manually exclcluding crests for the warband column. need a better solution what labelRows the Warband column shows - elseif currencyInfo and currencyInfo ~= self.warbandData.currencyInfo then - return PermoksAccountManager:CreateCurrencyString({ currencyType = labelRow.key }, labelRow.abbCurrent, - labelRow.abbMax, labelRow.hideMaximum, labelRow.customIcon, labelRow.hideIcon, 0) - else - return '-' - end + local crestInfo = currencyInfo and currencyInfo[labelRow.key] + local self = PermoksAccountManager + + if crestInfo then + if crestInfo.maxQuantity and crestInfo.maxQuantity > 0 then + local currencyString = PermoksAccountManager:CreateCurrencyString( + crestInfo, + labelRow.abbCurrent, + labelRow.abbMax, + labelRow.hideMaximum, + labelRow.customIcon, + labelRow.hideIcon, + crestInfo.totalEarned + ) + return string.format("%d - %s", crestInfo.quantity, currencyString) + elseif currencyInfo then + return PermoksAccountManager:CreateCurrencyString( + crestInfo, + labelRow.abbCurrent, + labelRow.abbMax, + labelRow.hideMaximum, + labelRow.customIcon, + labelRow.hideIcon + ) + end + -- manually exclcluding crests for the warband column. need a better solution what labelRows the Warband column shows + elseif currencyInfo and currencyInfo ~= self.warbandData.currencyInfo then + return PermoksAccountManager:CreateCurrencyString( + { currencyType = labelRow.key }, + labelRow.abbCurrent, + labelRow.abbMax, + labelRow.hideMaximum, + labelRow.customIcon, + labelRow.hideIcon, + 0 + ) + else + return "-" + end end local function CreateValorString(labelRow, currencyInfo) - local info = currencyInfo and currencyInfo[labelRow.key] - if info then - local globalCurrencyInfo = PermoksAccountManager.db.global.currencyInfo[labelRow.key] - local maxQuantity = (info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity) or - (globalCurrencyInfo and globalCurrencyInfo.maxQuantity or 0) - return string.format("%s - %s", AbbreviateNumbers(info.quantity), - PermoksAccountManager:CreateFractionString(info.totalEarned or 0, maxQuantity or 0)) - end + local info = currencyInfo and currencyInfo[labelRow.key] + if info then + local globalCurrencyInfo = PermoksAccountManager.db.global.currencyInfo[labelRow.key] + local maxQuantity = (info.maxQuantity and info.maxQuantity > 0 and info.maxQuantity) + or (globalCurrencyInfo and globalCurrencyInfo.maxQuantity or 0) + return string.format( + "%s - %s", + AbbreviateNumbers(info.quantity), + PermoksAccountManager:CreateFractionString(info.totalEarned or 0, maxQuantity or 0) + ) + end end local function CreateCofferKeyString(labelRow, currencyInfo, itemCounts) - if not currencyInfo then return '-' end + if not currencyInfo then + return "-" + end - local keyInfo = currencyInfo[labelRow.key] - local reagentInfo = itemCounts[labelRow.reagent] + local keyInfo = currencyInfo[labelRow.key] + local reagentInfo = itemCounts[labelRow.reagent] - local total = 0 - if keyInfo then - total = total + keyInfo.quantity - end + local total = 0 + if keyInfo then + total = total + keyInfo.quantity + end - if reagentInfo then - total = total + (reagentInfo.total / labelRow.reagentRequired) - end + if reagentInfo then + total = total + (reagentInfo.total / labelRow.reagentRequired) + end - return PermoksAccountManager:CreateCurrencyString(keyInfo, nil, nil, nil, nil, nil, total) + return PermoksAccountManager:CreateCurrencyString(keyInfo, nil, nil, nil, nil, nil, total) end local function CreateTreeCurrencyString(labelRow, currencyInfo) - local info = currencyInfo and currencyInfo[labelRow.key] - if info then - return PermoksAccountManager:CreateFractionString((info.quantity or 0) + (info.spent or 0), labelRow.maxQuantity or 0) - end + local info = currencyInfo and currencyInfo[labelRow.key] + if info then + return PermoksAccountManager:CreateFractionString( + (info.quantity or 0) + (info.spent or 0), + labelRow.maxQuantity or 0 + ) + end end local payload = { - update = Update, - labels = labelRows, - events = { - ['CURRENCY_DISPLAY_UPDATE'] = UpdateCurrency, - ['PERKS_ACTIVITIES_UDPATED'] = UpdateCatalystCharges, - ['ACCOUNT_CHARACTER_CURRENCY_DATA_RECEIVED'] = UpdateAllWarbandCurrencies, - ['CURRENCY_TRANSFER_LOG_UPDATE'] = CurrencyTransferUpdate, - ['TRAIT_TREE_CURRENCY_INFO_UPDATED'] = UpdateTreeCurrency, - }, - share = { - [UpdateCurrency] = 'currencyInfo' - } + update = Update, + labels = labelRows, + events = { + ["CURRENCY_DISPLAY_UPDATE"] = UpdateCurrency, + ["PERKS_ACTIVITIES_UDPATED"] = UpdateCatalystCharges, + ["ACCOUNT_CHARACTER_CURRENCY_DATA_RECEIVED"] = UpdateAllWarbandCurrencies, + ["CURRENCY_TRANSFER_LOG_UPDATE"] = CurrencyTransferUpdate, + ["TRAIT_TREE_CURRENCY_INFO_UPDATED"] = UpdateTreeCurrency, + }, + share = { + [UpdateCurrency] = "currencyInfo", + }, } local module = PermoksAccountManager:AddModule(module, payload) -module:AddCustomLabelType('catalystcharges', CreateCatalystChargeString, nil, 'currencyInfo') -module:AddCustomLabelType('crestcurrency', CreateCrestString, nil, 'currencyInfo') -module:AddCustomLabelType('valor', CreateValorString, nil, 'currencyInfo') -module:AddCustomLabelType('cofferkey', CreateCofferKeyString, nil, 'currencyInfo', 'itemCounts') -module:AddCustomLabelType('treecurrency', CreateTreeCurrencyString, nil, 'treeCurrencyInfo') +module:AddCustomLabelType("catalystcharges", CreateCatalystChargeString, nil, "currencyInfo") +module:AddCustomLabelType("crestcurrency", CreateCrestString, nil, "currencyInfo") +module:AddCustomLabelType("valor", CreateValorString, nil, "currencyInfo") +module:AddCustomLabelType("cofferkey", CreateCofferKeyString, nil, "currencyInfo", "itemCounts") +module:AddCustomLabelType("treecurrency", CreateTreeCurrencyString, nil, "treeCurrencyInfo") -- TODO Create a CreateIconString function instead of two functions for items and currencies -function PermoksAccountManager:CreateCurrencyString(currencyInfo, abbreviateCurrent, abbreviateMaximum, hideMaximum, - customIcon, hideIcon, customQuantitiy) - if not currencyInfo then - return - end - - local iconString = '' - local options = self.db.global.options - local globalCurrencyInfo = self.db.global.currencyInfo[currencyInfo.currencyType] - local currencyIcon = globalCurrencyInfo and globalCurrencyInfo.icon - if not hideIcon and currencyIcon and options.currencyIcons then - if customIcon then - iconString = string.format('\124T%s:%d:%d:%d:%d\124t', customIcon.path or currencyIcon, - customIcon.height or 18, customIcon.width or 18, customIcon.xOffset or 0, customIcon.yOffset or 0) - else - iconString = string.format('\124T%d:18:18\124t', currencyIcon) - end - end - - if currencyInfo.maxQuantity and currencyInfo.maxQuantity > 0 and (currencyInfo.quantity or 0) > currencyInfo.maxQuantity then - -- REFACTOR: move this logic to the crest labelRows to remove redundancy - local id = currencyInfo.currencyType - if id ~= 3383 and id ~= 3341 and id ~= 3343 and id ~= 3345 and id ~= 3347 then - currencyInfo.quantity = currencyInfo.quantity / 100 - end - end - - local quantity = customQuantitiy or currencyInfo.quantity - local currencyString = quantity - if not hideMaximum and ((currencyInfo.maxQuantity and currencyInfo.maxQuantity > 0) or (currencyInfo.maxWeeklyQuantity and currencyInfo.maxWeeklyQuantity > 0)) then - currencyString = self:CreateFractionString(quantity, - globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity or currencyInfo.maxWeeklyQuantity, - abbreviateCurrent, abbreviateMaximum) - elseif quantity >= 1000 then - currencyString = abbreviateCurrent and AbbreviateNumbers(quantity) or AbbreviateLargeNumbers(quantity) - end - - local iconPosition = options.currencyIconPosition - if iconPosition == 'left' then - return string.format('%s %s', iconString, currencyString) - end - return string.format('%s %s', currencyString, iconString) +function PermoksAccountManager:CreateCurrencyString( + currencyInfo, + abbreviateCurrent, + abbreviateMaximum, + hideMaximum, + customIcon, + hideIcon, + customQuantitiy +) + if not currencyInfo then + return + end + + local iconString = "" + local options = self.db.global.options + local globalCurrencyInfo = self.db.global.currencyInfo[currencyInfo.currencyType] + local currencyIcon = globalCurrencyInfo and globalCurrencyInfo.icon + if not hideIcon and currencyIcon and options.currencyIcons then + if customIcon then + iconString = string.format( + "\124T%s:%d:%d:%d:%d\124t", + customIcon.path or currencyIcon, + customIcon.height or 18, + customIcon.width or 18, + customIcon.xOffset or 0, + customIcon.yOffset or 0 + ) + else + iconString = string.format("\124T%d:18:18\124t", currencyIcon) + end + end + + if + currencyInfo.maxQuantity + and currencyInfo.maxQuantity > 0 + and (currencyInfo.quantity or 0) > currencyInfo.maxQuantity + then + -- REFACTOR: move this logic to the crest labelRows to remove redundancy + local id = currencyInfo.currencyType + if id ~= 3383 and id ~= 3341 and id ~= 3343 and id ~= 3345 and id ~= 3347 then + currencyInfo.quantity = currencyInfo.quantity / 100 + end + end + + local quantity = customQuantitiy or currencyInfo.quantity + local currencyString = quantity + if + not hideMaximum + and ( + (currencyInfo.maxQuantity and currencyInfo.maxQuantity > 0) + or (currencyInfo.maxWeeklyQuantity and currencyInfo.maxWeeklyQuantity > 0) + ) + then + currencyString = self:CreateFractionString( + quantity, + globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity or currencyInfo.maxWeeklyQuantity, + abbreviateCurrent, + abbreviateMaximum + ) + elseif quantity >= 1000 then + currencyString = abbreviateCurrent and AbbreviateNumbers(quantity) or AbbreviateLargeNumbers(quantity) + end + + local iconPosition = options.currencyIconPosition + if iconPosition == "left" then + return string.format("%s %s", iconString, currencyString) + end + return string.format("%s %s", currencyString, iconString) end function PermoksAccountManager.CurrencyTooltip_OnEnter(button, altData, labelRow) - if not altData.currencyInfo then - return - end - - local self = PermoksAccountManager - local currencyInfo = altData.currencyInfo[labelRow.key] - local globalCurrencyInfo = self.db.global.currencyInfo[labelRow.key] - if not currencyInfo or not currencyInfo.name or currencyInfo.altQuantity then - -- don't create currency tooltips for the warband column - return - end - - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') - button.tooltip = tooltip - - tooltip:AddHeader(currencyInfo.name) - tooltip:AddLine('') - - tooltip:AddLine('Total Earned:', - self:CreateFractionString(currencyInfo.totalEarned, globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity)) - - if ((globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity) or 0) > currencyInfo.totalEarned then - tooltip:AddLine('Left:', (globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity) - currencyInfo.totalEarned) - end - - tooltip:SmartAnchorTo(button) - tooltip:Show() + if not altData.currencyInfo then + return + end + + local self = PermoksAccountManager + local currencyInfo = altData.currencyInfo[labelRow.key] + local globalCurrencyInfo = self.db.global.currencyInfo[labelRow.key] + if not currencyInfo or not currencyInfo.name or currencyInfo.altQuantity then + -- don't create currency tooltips for the warband column + return + end + + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "RIGHT") + button.tooltip = tooltip + + tooltip:AddHeader(currencyInfo.name) + tooltip:AddLine("") + + tooltip:AddLine( + "Total Earned:", + self:CreateFractionString(currencyInfo.totalEarned, globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity) + ) + + if ((globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity) or 0) > currencyInfo.totalEarned then + tooltip:AddLine( + "Left:", + (globalCurrencyInfo.maxQuantity or currencyInfo.maxQuantity) - currencyInfo.totalEarned + ) + end + + tooltip:SmartAnchorTo(button) + tooltip:Show() end do - local torghastSoulCinders = { - [8] = 50, - [9] = 90, - [10] = 120, - [11] = 150, - [12] = 180 - } - - function PermoksAccountManager:SoulCindersTooltip_OnEnter(button, alt_data) - if not alt_data or not alt_data.questInfo or not alt_data.torghastInfo then - return - end - local torghastInfo = alt_data.torghastInfo - local weekly = alt_data.questInfo.weekly - - local assaults = PermoksAccountManager:GetNumCompletedQuests(weekly.hidden.assault) * 50 - local tormentors = min(self:GetNumCompletedQuests(weekly.hidden.tormentors_weekly) * 50, 50) - - local torghast = 0 - for layer, completed in pairs(torghastInfo) do - if torghastSoulCinders[completed] then - torghast = torghast + torghastSoulCinders[completed] - end - end - - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') - button.tooltip = tooltip - tooltip:AddHeader(alt_data.currencyInfo[1906].name) - tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine('Assaults:', PermoksAccountManager:CreateFractionString(assaults, 100)) - tooltip:AddLine('Tormentors:', PermoksAccountManager:CreateFractionString(tormentors, 50)) - tooltip:AddLine('Torghast:', PermoksAccountManager:CreateFractionString(torghast, 360)) - tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine('|cff00f7ffTotal:|r', - PermoksAccountManager:CreateFractionString(assaults + tormentors + torghast, 510)) - tooltip:SmartAnchorTo(button) - tooltip:Show() - end + local torghastSoulCinders = { + [8] = 50, + [9] = 90, + [10] = 120, + [11] = 150, + [12] = 180, + } + + function PermoksAccountManager:SoulCindersTooltip_OnEnter(button, alt_data) + if not alt_data or not alt_data.questInfo or not alt_data.torghastInfo then + return + end + local torghastInfo = alt_data.torghastInfo + local weekly = alt_data.questInfo.weekly + + local assaults = PermoksAccountManager:GetNumCompletedQuests(weekly.hidden.assault) * 50 + local tormentors = min(self:GetNumCompletedQuests(weekly.hidden.tormentors_weekly) * 50, 50) + + local torghast = 0 + for layer, completed in pairs(torghastInfo) do + if torghastSoulCinders[completed] then + torghast = torghast + torghastSoulCinders[completed] + end + end + + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "RIGHT") + button.tooltip = tooltip + tooltip:AddHeader(alt_data.currencyInfo[1906].name) + tooltip:AddSeparator(2, 1, 1, 1) + tooltip:AddLine("Assaults:", PermoksAccountManager:CreateFractionString(assaults, 100)) + tooltip:AddLine("Tormentors:", PermoksAccountManager:CreateFractionString(tormentors, 50)) + tooltip:AddLine("Torghast:", PermoksAccountManager:CreateFractionString(torghast, 360)) + tooltip:AddSeparator(2, 1, 1, 1) + tooltip:AddLine( + "|cff00f7ffTotal:|r", + PermoksAccountManager:CreateFractionString(assaults + tormentors + torghast, 510) + ) + tooltip:SmartAnchorTo(button) + tooltip:Show() + end end do - local raidBossEmbers = { - [17] = 1, - [14] = 2, - [15] = 3, - [16] = 4 - } - - local function GetEmbersForDifficulty(embersTable, difficulty) - local totalNumEmbers = 0 - for boss, numEmbers in pairs(embersTable) do - if numEmbers >= raidBossEmbers[difficulty] then - totalNumEmbers = totalNumEmbers + 1 - end - end - - return totalNumEmbers - end - - local function GetTotalNumRaidEmbers(embersTable) - local total = 0 - for _, numEmbers in ipairs(embersTable) do - total = total + numEmbers - end - - return total - end - - function PermoksAccountManager:StygianEmbersTooltip_OnEnter(button, alt_data) - if not alt_data or not alt_data.raidActivityInfo or not alt_data.questInfo or not alt_data.questInfo.weekly or not alt_data.questInfo.weekly.visible then - return - end - local raidActivityInfo = alt_data.raidActivityInfo - local questInfo = alt_data.questInfo.weekly - - local embersFromRaidBosses = {} - for i, encounter in ipairs(raidActivityInfo) do - if raidBossEmbers[encounter.bestDifficulty] then - embersFromRaidBosses[encounter.uiOrder] = (embersFromRaidBosses[encounter.uiOrder] or 0) + - raidBossEmbers[encounter.bestDifficulty] - end - end - - local embersFromShapingFate = questInfo.visible.korthia_weekly and next(questInfo.visible.korthia_weekly) and 10 or - 0 - local embersFromWB = questInfo.hidden.world_boss and questInfo.hidden.world_boss[64531] and 1 or 0 - local embersFromNormalRaidTrash = self:GetNumCompletedQuests(questInfo.hidden.sanctum_normal_embers_trash) - local embersFromHeroicRaidTrash = self:GetNumCompletedQuests(questInfo.hidden.sanctum_heroic_embers_trash) - local total = GetTotalNumRaidEmbers(embersFromRaidBosses) + embersFromShapingFate + embersFromWB + - embersFromNormalRaidTrash + embersFromHeroicRaidTrash - - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') - button.tooltip = tooltip - tooltip:AddHeader(alt_data.currencyInfo[1977].name) - tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine('LFR Raid:', - PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 17), 10)) - tooltip:AddLine('Normal Raid:', - PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 14), 10)) - tooltip:AddLine('Heroic Raid:', - PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 15), 10)) - tooltip:AddLine('Mythic Raid:', - PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 16), 10)) - tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine('Normal Trash:', PermoksAccountManager:CreateFractionString(embersFromNormalRaidTrash, 5)) - tooltip:AddLine('Heroic Trash:', PermoksAccountManager:CreateFractionString(embersFromHeroicRaidTrash, 5)) - tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine('Shaping Fate:', PermoksAccountManager:CreateFractionString(embersFromShapingFate, 10)) - tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine('World Boss:', PermoksAccountManager:CreateFractionString(embersFromWB, 1)) - tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine('|cff00f7ffTotal:|r', PermoksAccountManager:CreateFractionString(total, 61)) - tooltip:SmartAnchorTo(button) - tooltip:Show() - end + local raidBossEmbers = { + [17] = 1, + [14] = 2, + [15] = 3, + [16] = 4, + } + + local function GetEmbersForDifficulty(embersTable, difficulty) + local totalNumEmbers = 0 + for boss, numEmbers in pairs(embersTable) do + if numEmbers >= raidBossEmbers[difficulty] then + totalNumEmbers = totalNumEmbers + 1 + end + end + + return totalNumEmbers + end + + local function GetTotalNumRaidEmbers(embersTable) + local total = 0 + for _, numEmbers in ipairs(embersTable) do + total = total + numEmbers + end + + return total + end + + function PermoksAccountManager:StygianEmbersTooltip_OnEnter(button, alt_data) + if + not alt_data + or not alt_data.raidActivityInfo + or not alt_data.questInfo + or not alt_data.questInfo.weekly + or not alt_data.questInfo.weekly.visible + then + return + end + local raidActivityInfo = alt_data.raidActivityInfo + local questInfo = alt_data.questInfo.weekly + + local embersFromRaidBosses = {} + for i, encounter in ipairs(raidActivityInfo) do + if raidBossEmbers[encounter.bestDifficulty] then + embersFromRaidBosses[encounter.uiOrder] = (embersFromRaidBosses[encounter.uiOrder] or 0) + + raidBossEmbers[encounter.bestDifficulty] + end + end + + local embersFromShapingFate = questInfo.visible.korthia_weekly and next(questInfo.visible.korthia_weekly) and 10 + or 0 + local embersFromWB = questInfo.hidden.world_boss and questInfo.hidden.world_boss[64531] and 1 or 0 + local embersFromNormalRaidTrash = self:GetNumCompletedQuests(questInfo.hidden.sanctum_normal_embers_trash) + local embersFromHeroicRaidTrash = self:GetNumCompletedQuests(questInfo.hidden.sanctum_heroic_embers_trash) + local total = GetTotalNumRaidEmbers(embersFromRaidBosses) + + embersFromShapingFate + + embersFromWB + + embersFromNormalRaidTrash + + embersFromHeroicRaidTrash + + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "RIGHT") + button.tooltip = tooltip + tooltip:AddHeader(alt_data.currencyInfo[1977].name) + tooltip:AddSeparator(2, 1, 1, 1) + tooltip:AddLine( + "LFR Raid:", + PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 17), 10) + ) + tooltip:AddLine( + "Normal Raid:", + PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 14), 10) + ) + tooltip:AddLine( + "Heroic Raid:", + PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 15), 10) + ) + tooltip:AddLine( + "Mythic Raid:", + PermoksAccountManager:CreateFractionString(GetEmbersForDifficulty(embersFromRaidBosses, 16), 10) + ) + tooltip:AddSeparator(2, 1, 1, 1) + tooltip:AddLine("Normal Trash:", PermoksAccountManager:CreateFractionString(embersFromNormalRaidTrash, 5)) + tooltip:AddLine("Heroic Trash:", PermoksAccountManager:CreateFractionString(embersFromHeroicRaidTrash, 5)) + tooltip:AddSeparator(2, 1, 1, 1) + tooltip:AddLine("Shaping Fate:", PermoksAccountManager:CreateFractionString(embersFromShapingFate, 10)) + tooltip:AddSeparator(2, 1, 1, 1) + tooltip:AddLine("World Boss:", PermoksAccountManager:CreateFractionString(embersFromWB, 1)) + tooltip:AddSeparator(2, 1, 1, 1) + tooltip:AddLine("|cff00f7ffTotal:|r", PermoksAccountManager:CreateFractionString(total, 61)) + tooltip:SmartAnchorTo(button) + tooltip:Show() + end end From 63f0e62c921fa8315dd1b6140bc477411e47e769 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 16 Mar 2026 16:51:15 +0100 Subject: [PATCH 123/138] Add item icons to the options --- options.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/options.lua b/options.lua index fae0403..ec67b7a 100644 --- a/options.lua +++ b/options.lua @@ -2017,6 +2017,8 @@ do type(name) == "function" and name() or name ) end + elseif group == "item" and info.key then + name = string.format("\124T%d:18:18\124t %s", C_Item.GetItemIconByID(info.key), type(name) == "function" and name() or name) end labelTable[group].args[key] = labelTable[group].args[key] From 278a609ac9d79ada6ec814a7cb3d83ce7721fb2e Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 18 Mar 2026 17:59:51 +0100 Subject: [PATCH 124/138] Add Coffer Key Shards --- db/db.lua | 2 ++ modules/currencies.lua | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/db/db.lua b/db/db.lua index 931d6bc..b15e7ae 100644 --- a/db/db.lua +++ b/db/db.lua @@ -623,6 +623,8 @@ PermoksAccountManager.currency = { [3316] = 0, -- Voidlight Marl [3376] = 0, -- Shard of Dundun + + [3310] = 0, -- Coffer Key Shards } PermoksAccountManager.currencyTrees = { diff --git a/modules/currencies.lua b/modules/currencies.lua index b075471..c04ab6e 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -416,6 +416,13 @@ local labelRows = { group = "currency", version = WOW_PROJECT_MAINLINE, }, + coffer_key_shard = { + label = "Coffer Key Shards", + type = "currency", + key = 3310, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, -- wotlk-classic honorBCC = { From 3e7c632eeff68d67249d4fdbbe006894e891737a Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 18 Mar 2026 18:00:00 +0100 Subject: [PATCH 125/138] Add gold tooltip --- modules/character.lua | 401 +++++++++++++++++++++++------------------- 1 file changed, 222 insertions(+), 179 deletions(-) diff --git a/modules/character.lua b/modules/character.lua index 8292978..26f1ac7 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -1,18 +1,18 @@ local addonName, PermoksAccountManager = ... -local L = LibStub('AceLocale-3.0'):GetLocale(addonName) -local LibQTip = LibStub('LibQTip-1.0') +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) +local LibQTip = LibStub("LibQTip-1.0") local options -local module = 'character' +local module = "character" local labelRows = { characterName = { hideLabel = true, - label = L['Name'], + label = L["Name"], hideOption = true, warband = true, big = true, offset = 1.5, - type = 'characterName', + type = "characterName", tooltip = true, customTooltip = function(button, altData, labelRow) PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altData, labelRow) @@ -25,45 +25,45 @@ local labelRows = { return RAID_CLASS_COLORS[alt_data.class] end end, - version = false + version = false, }, characterLevel = { - label = L['Level'], - type = 'charLevel', + label = L["Level"], + type = "charLevel", data = function(alt_data) - return alt_data.charLevel or '-' + return alt_data.charLevel or "-" end, - group = 'character', - version = false + group = "character", + version = false, }, location = { - label = L['Location'], + label = L["Location"], data = function(alt_data) - return (alt_data.location and PermoksAccountManager:CreateLocationString(alt_data.location)) or '-' + return (alt_data.location and PermoksAccountManager:CreateLocationString(alt_data.location)) or "-" end, - group = 'character', - version = false + group = "character", + version = false, }, ilevel = { - label = L['Item Level'], + label = L["Item Level"], data = function(alt_data) - return alt_data.ilevel and string.format('%.2f', alt_data.ilevel) or '-' + return alt_data.ilevel and string.format("%.2f", alt_data.ilevel) or "-" end, - version = false + version = false, }, ilevel_wrath = { - label = L['Item Level'], + label = L["Item Level"], data = function(alt_data) - return string.format('%.2f', alt_data.ilevel or 0) + return string.format("%.2f", alt_data.ilevel or 0) end, - group = 'character', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = "character", + version = WOW_PROJECT_CATACLYSM_CLASSIC, }, gearScore = { - label = L['Gear Score'], + label = L["Gear Score"], data = function(alt_data) local gearScore = alt_data.gearScore or 0 - return gearScore or '-' + return gearScore or "-" end, color = function(alt_data) local gearScore = alt_data.gearScore or 0 @@ -77,24 +77,24 @@ local labelRows = { return CreateColor(gearScoreRed, gearScoreGreen, gearScoreBlue, 1) end, - group = 'character', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = "character", + version = WOW_PROJECT_CATACLYSM_CLASSIC, }, gold = { - label = L['Gold'], - type = 'gold', - group = 'currency', + label = L["Gold"], + type = "gold", + group = "currency", tooltip = true, customTooltip = function(button, altData) PermoksAccountManager:CustomGoldTooltip_OnEnter(button, altData) end, warband = true, - version = false + version = false, }, keystone = { - label = L['Keystone'], - type = 'keystone', - group = 'dungeons', + label = L["Keystone"], + type = "keystone", + group = "dungeons", version = WOW_PROJECT_MAINLINE, OnClick = function(button, altData) if button == "LeftButton" and IsShiftKeyDown() then @@ -103,14 +103,14 @@ local labelRows = { end, }, tw_keystone = { - label = L['TW Keystone'], - type = 'twkeystone', - group = 'dungeons', - version = WOW_PROJECT_MAINLINE + label = L["TW Keystone"], + type = "twkeystone", + group = "dungeons", + version = WOW_PROJECT_MAINLINE, }, weekly_key = { - label = L['Highest Key'], - type = 'weeklyKey', + label = L["Highest Key"], + type = "weeklyKey", tooltip = true, customTooltip = function(button, alt_data) PermoksAccountManager:HighestKeyTooltip_OnEnter(button, alt_data) @@ -118,22 +118,22 @@ local labelRows = { isComplete = function(alt_data) return alt_data.vaultInfo and alt_data.vaultInfo.MythicPlus and alt_data.vaultInfo.MythicPlus[1].level >= 15 end, - group = 'character', - version = WOW_PROJECT_MAINLINE + group = "character", + version = WOW_PROJECT_MAINLINE, }, mplus_score = { - label = L['Mythic+ Score'], + label = L["Mythic+ Score"], outline = "OUTLINE", - type = 'dungeonScore', - group = 'character', - version = WOW_PROJECT_MAINLINE + type = "dungeonScore", + group = "character", + version = WOW_PROJECT_MAINLINE, }, contract = { - label = L['Contract'], - type = 'contract', - group = 'character', - version = WOW_PROJECT_MAINLINE - } + label = L["Contract"], + type = "contract", + group = "character", + version = WOW_PROJECT_MAINLINE, + }, } local gsItemTypes = { @@ -167,14 +167,14 @@ local gsFormula = { ["A"] = { [4] = { ["A"] = 91.4500, ["B"] = 0.6500 }, [3] = { ["A"] = 81.3750, ["B"] = 0.8125 }, - [2] = { ["A"] = 73.0000, ["B"] = 1.0000 } + [2] = { ["A"] = 73.0000, ["B"] = 1.0000 }, }, ["B"] = { [4] = { ["A"] = 26.0000, ["B"] = 1.2000 }, [3] = { ["A"] = 0.7500, ["B"] = 1.8000 }, [2] = { ["A"] = 8.0000, ["B"] = 2.0000 }, - [1] = { ["A"] = 0.0000, ["B"] = 2.2500 } - } + [1] = { ["A"] = 0.0000, ["B"] = 2.2500 }, + }, } local gsQuality = { @@ -182,42 +182,42 @@ local gsQuality = { ["Red"] = { ["A"] = 0.94, ["B"] = 5000, ["C"] = 0.00006, ["D"] = 1 }, ["Green"] = { ["A"] = 0.47, ["B"] = 5000, ["C"] = 0.00047, ["D"] = -1 }, ["Blue"] = { ["A"] = 0, ["B"] = 0, ["C"] = 0, ["D"] = 0 }, - ["Description"] = "Legendary" + ["Description"] = "Legendary", }, [5000] = { ["Red"] = { ["A"] = 0.69, ["B"] = 4000, ["C"] = 0.00025, ["D"] = 1 }, ["Green"] = { ["A"] = 0.28, ["B"] = 4000, ["C"] = 0.00019, ["D"] = 1 }, ["Blue"] = { ["A"] = 0.97, ["B"] = 4000, ["C"] = 0.00096, ["D"] = -1 }, - ["Description"] = "Epic" + ["Description"] = "Epic", }, [4000] = { ["Red"] = { ["A"] = 0.0, ["B"] = 3000, ["C"] = 0.00069, ["D"] = 1 }, ["Green"] = { ["A"] = 0.5, ["B"] = 3000, ["C"] = 0.00022, ["D"] = -1 }, ["Blue"] = { ["A"] = 1, ["B"] = 3000, ["C"] = 0.00003, ["D"] = -1 }, - ["Description"] = "Superior" + ["Description"] = "Superior", }, [3000] = { ["Red"] = { ["A"] = 0.12, ["B"] = 2000, ["C"] = 0.00012, ["D"] = -1 }, ["Green"] = { ["A"] = 1, ["B"] = 2000, ["C"] = 0.00050, ["D"] = -1 }, ["Blue"] = { ["A"] = 0, ["B"] = 2000, ["C"] = 0.001, ["D"] = 1 }, - ["Description"] = "Uncommon" + ["Description"] = "Uncommon", }, [2000] = { ["Red"] = { ["A"] = 1, ["B"] = 1000, ["C"] = 0.00088, ["D"] = -1 }, ["Green"] = { ["A"] = 1, ["B"] = 000, ["C"] = 0.00000, ["D"] = 0 }, ["Blue"] = { ["A"] = 1, ["B"] = 1000, ["C"] = 0.001, ["D"] = -1 }, - ["Description"] = "Common" + ["Description"] = "Common", }, [1000] = { ["Red"] = { ["A"] = 0.55, ["B"] = 0, ["C"] = 0.00045, ["D"] = 1 }, ["Green"] = { ["A"] = 0.55, ["B"] = 0, ["C"] = 0.00045, ["D"] = 1 }, ["Blue"] = { ["A"] = 0.55, ["B"] = 0, ["C"] = 0.00045, ["D"] = 1 }, - ["Description"] = "Trash" + ["Description"] = "Trash", }, } local function GearScoreGetEnchantInfo(ItemLink, ItemEquipLoc) - local _, _, ItemSubString = string.find(ItemLink, "^|c%x+|H(.+)|h%[.*%]"); + local _, _, ItemSubString = string.find(ItemLink, "^|c%x+|H(.+)|h%[.*%]") local ItemSubStringTable = {} for v in string.gmatch(ItemSubString, "[^:]+") do @@ -227,32 +227,41 @@ local function GearScoreGetEnchantInfo(ItemLink, ItemEquipLoc) ItemSubString = ItemSubStringTable[2] .. ":" .. ItemSubStringTable[3], ItemSubStringTable[2] local StringStart, _ = string.find(ItemSubString, ":") ItemSubString = string.sub(ItemSubString, StringStart + 1) - if (ItemSubString == "0") and (gsItemTypes[ItemEquipLoc]["Enchantable"]) then - local percent = (floor((-2 * (gsItemTypes[ItemEquipLoc]["SlotMOD"])) * 100) / 100); - return (1 + (percent / 100)); + if (ItemSubString == "0") and gsItemTypes[ItemEquipLoc]["Enchantable"] then + local percent = (floor((-2 * gsItemTypes[ItemEquipLoc]["SlotMOD"]) * 100) / 100) + return (1 + (percent / 100)) else - return 1; + return 1 end end local function GearScoreGetQuality(ItemScore) ItemScore = tonumber(ItemScore) - if (not ItemScore) then + if not ItemScore then return 0, 0, 0, "Trash" end - if (ItemScore > 5999) then + if ItemScore > 5999 then ItemScore = 5999 end for i = 0, 6 do - if ((ItemScore > i * 1000) and (ItemScore <= ((i + 1) * 1000))) then - local Red = gsQuality[(i + 1) * 1000].Red["A"] + - (((ItemScore - gsQuality[(i + 1) * 1000].Red["B"]) * gsQuality[(i + 1) * 1000].Red["C"]) * gsQuality[(i + 1) * 1000].Red["D"]) - local Blue = gsQuality[(i + 1) * 1000].Green["A"] + - (((ItemScore - gsQuality[(i + 1) * 1000].Green["B"]) * gsQuality[(i + 1) * 1000].Green["C"]) * gsQuality[(i + 1) * 1000].Green["D"]) - local Green = gsQuality[(i + 1) * 1000].Blue["A"] + - (((ItemScore - gsQuality[(i + 1) * 1000].Blue["B"]) * gsQuality[(i + 1) * 1000].Blue["C"]) * gsQuality[(i + 1) * 1000].Blue["D"]) + if (ItemScore > i * 1000) and (ItemScore <= ((i + 1) * 1000)) then + local Red = gsQuality[(i + 1) * 1000].Red["A"] + + ( + ((ItemScore - gsQuality[(i + 1) * 1000].Red["B"]) * gsQuality[(i + 1) * 1000].Red["C"]) + * gsQuality[(i + 1) * 1000].Red["D"] + ) + local Blue = gsQuality[(i + 1) * 1000].Green["A"] + + ( + ((ItemScore - gsQuality[(i + 1) * 1000].Green["B"]) * gsQuality[(i + 1) * 1000].Green["C"]) + * gsQuality[(i + 1) * 1000].Green["D"] + ) + local Green = gsQuality[(i + 1) * 1000].Blue["A"] + + ( + ((ItemScore - gsQuality[(i + 1) * 1000].Blue["B"]) * gsQuality[(i + 1) * 1000].Blue["C"]) + * gsQuality[(i + 1) * 1000].Blue["D"] + ) -- we swap up blue and green because for some reason the coloring of level power works like that return Red, Blue, Green, gsQuality[(i + 1) * 1000].Description end @@ -266,7 +275,7 @@ local function GearScoreGetItemScore(ItemLink) local PVPScore = 0 local GearScore = 0 - if not (ItemLink) then + if not ItemLink then return 0, 0 end @@ -274,41 +283,45 @@ local function GearScoreGetItemScore(ItemLink) local Table = {} local Scale = 1.8618 - if (ItemRarity == 5) then + if ItemRarity == 5 then QualityScale = 1.3 ItemRarity = 4 - elseif (ItemRarity == 1) then + elseif ItemRarity == 1 then QualityScale = 0.005 ItemRarity = 2 - elseif (ItemRarity == 0) then + elseif ItemRarity == 0 then QualityScale = 0.005 ItemRarity = 2 end - if (ItemRarity == 7) then + if ItemRarity == 7 then ItemRarity = 3 - ItemLevel = 187.05; + ItemLevel = 187.05 end - if (gsItemTypes[ItemEquipLoc]) then - if (ItemLevel > 120) then + if gsItemTypes[ItemEquipLoc] then + if ItemLevel > 120 then Table = gsFormula["A"] else Table = gsFormula["B"] end if (ItemRarity >= 2) and (ItemRarity <= 4) then - GearScore = floor(((ItemLevel - Table[ItemRarity].A) / Table[ItemRarity].B) * - gsItemTypes[ItemEquipLoc].SlotMOD * Scale * QualityScale) - - if (ItemLevel == 187.05) then + GearScore = floor( + ((ItemLevel - Table[ItemRarity].A) / Table[ItemRarity].B) + * gsItemTypes[ItemEquipLoc].SlotMOD + * Scale + * QualityScale + ) + + if ItemLevel == 187.05 then ItemLevel = 0 end - if (GearScore < 0) then + if GearScore < 0 then GearScore = 0 end - if (PVPScale == 0.75) then + if PVPScale == 0.75 then PVPScore = 1 GearScore = GearScore * 1 else @@ -327,7 +340,7 @@ local function GearScoreGetItemScore(ItemLink) end local function GearScoreGetScore(Name, Target) - if (UnitIsPlayer(Target)) then + if UnitIsPlayer(Target) then local _, PlayerEnglishClass = UnitClass(Target) local TempScore, _ = nil local GearScore = 0 @@ -338,21 +351,21 @@ local function GearScoreGetScore(Name, Target) local mainHandItemLink = GetInventoryItemLink(Target, 16) local offhandItemLink = GetInventoryItemLink(Target, 17) - if (mainHandItemLink) and (offhandItemLink) then + if mainHandItemLink and offhandItemLink then local _, _, _, _, _, _, _, _, ItemEquipLoc, _ = GetItemInfo(mainHandItemLink) - if (ItemEquipLoc == "INVTYPE_2HWEAPON") then + if ItemEquipLoc == "INVTYPE_2HWEAPON" then TitanGrip = 0.5 end end - if (offhandItemLink) then + if offhandItemLink then local _, _, _, _, _, _, _, _, ItemEquipLoc, _ = GetItemInfo(offhandItemLink) - if (ItemEquipLoc == "INVTYPE_2HWEAPON") then + if ItemEquipLoc == "INVTYPE_2HWEAPON" then TitanGrip = 0.5 end local TempScore, ItemLevel = GearScoreGetItemScore(offhandItemLink) - if (PlayerEnglishClass == "HUNTER") then + if PlayerEnglishClass == "HUNTER" then TempScore = TempScore * 0.3164 end @@ -369,7 +382,7 @@ local function GearScoreGetScore(Name, Target) for i = 1, 18 do if (i ~= 4) and (i ~= 17) then local ItemLink = GetInventoryItemLink(Target, i) - if (ItemLink) then + if ItemLink then local _, ItemLink, _, ItemLevel, _, _, _, _, _, _ = GetItemInfo(ItemLink) TempScore, _ = GearScoreGetItemScore(ItemLink) @@ -381,7 +394,7 @@ local function GearScoreGetScore(Name, Target) TempScore = TempScore * 5.3224 end - if (i == 16) then + if i == 16 then TempScore = TempScore * TitanGrip end @@ -404,7 +417,7 @@ local function GearScoreGetScore(Name, Target) GearScore = 0 end - if (ItemCount == 0) then + if ItemCount == 0 then LevelTotal = 0 end @@ -421,7 +434,7 @@ local function UpdateGeneralData(charInfo) -- Contracts local contract = nil - local contracts = { [311457] = 'CoH', [311458] = 'Ascended', [311460] = 'UA', [311459] = 'WH', [353999] = 'DA' } + local contracts = { [311457] = "CoH", [311458] = "Ascended", [311460] = "UA", [311459] = "WH", [353999] = "DA" } for spellId, faction in pairs(contracts) do local info = { GetPlayerAuraBySpellID(spellId) } if info[1] then @@ -437,7 +450,7 @@ local function UpdateGeneralData(charInfo) charInfo.callingsUnlocked = C_CovenantCallings and C_CovenantCallings.AreCallingsUnlocked() elseif self.isWOTLK or self.isCata then -- Gear Score and Item Level - local gearScore, ilvl = GearScoreGetScore(UnitName('player'), 'player') + local gearScore, ilvl = GearScoreGetScore(UnitName("player"), "player") local red, green, blue = GearScoreGetQuality(gearScore) charInfo.gearScore = gearScore @@ -449,19 +462,21 @@ local function UpdateGeneralData(charInfo) end local function UpdateKeystones(charInfo) - if not PermoksAccountManager.isRetail then return end + if not PermoksAccountManager.isRetail then + return + end charInfo.keyInfo = charInfo.keyInfo or {} C_Timer.After(0.5, function() local ownedKeystone = C_MythicPlus.GetOwnedKeystoneChallengeMapID() local keyInfo = charInfo.keyInfo - keyInfo.keyDungeon = ownedKeystone and PermoksAccountManager.keys[ownedKeystone] or L['No Key'] + keyInfo.keyDungeon = ownedKeystone and PermoksAccountManager.keys[ownedKeystone] or L["No Key"] keyInfo.keyLevel = ownedKeystone and C_MythicPlus.GetOwnedKeystoneLevel() or 0 keyInfo.keyMapID = ownedKeystone local activityID, _, keyLevel = C_LFGList.GetOwnedKeystoneActivityAndGroupAndLevel(true) local keyDungeonID = PermoksAccountManager.activityIDToKeys[activityID] - keyInfo.twKeyDungeon = keyDungeonID and PermoksAccountManager.keys[keyDungeonID] or L['No Key'] + keyInfo.twKeyDungeon = keyDungeonID and PermoksAccountManager.keys[keyDungeonID] or L["No Key"] keyInfo.twKeyLevel = keyDungeonID and keyLevel or 0 end) end @@ -470,8 +485,8 @@ local function UpdateGold(charInfo) charInfo.gold = floor(GetMoney() / (COPPER_PER_SILVER * SILVER_PER_GOLD)) * 10000 local db = PermoksAccountManager.db.global - local accountData = db.accounts.main.data - local warbandData = db.accounts.main.warbandData + local accountData = db.accounts.main.data + local warbandData = db.accounts.main.warbandData local totalGold = 0 for _, altData in pairs(accountData) do @@ -484,10 +499,10 @@ local function UpdateGold(charInfo) end local function UpdateWarbankGold(charInfo) - local gold = C_Bank.FetchDepositedMoney(Enum.BankType.Account); + local gold = C_Bank.FetchDepositedMoney(Enum.BankType.Account) local db = PermoksAccountManager.db.global - local warbandData = db.accounts.main.warbandData + local warbandData = db.accounts.main.warbandData warbandData.warbankGold = floor(gold / (COPPER_PER_SILVER * SILVER_PER_GOLD)) * 10000 end @@ -538,7 +553,9 @@ local function UpdateCharacterEquip(charInfo) end local function UpdateMythicScore(charInfo) - if not PermoksAccountManager.isRetail then return end + if not PermoksAccountManager.isRetail then + return + end C_MythicPlus.RequestMapInfo() charInfo.mythicScore = C_ChallengeMode.GetOverallDungeonScore() @@ -560,11 +577,11 @@ local function UpdatePlayerSpecialization(charInfo) end local function UpdatePlayerLevel(charInfo, level) - charInfo.charLevel = level or UnitLevel('player') + charInfo.charLevel = level or UnitLevel("player") end local function UpdateLocation(charInfo) - charInfo.location = C_Map.GetBestMapForUnit('player') + charInfo.location = C_Map.GetBestMapForUnit("player") end local function Update(charInfo) @@ -585,51 +602,51 @@ local function Update(charInfo) end local function CreateGoldString(gold) - return gold and tonumber(gold) and GetMoneyString(gold, true) or '-' + return gold and tonumber(gold) and GetMoneyString(gold, true) or "-" end local function CreateCharacterString(name, specInfo) if not name then - return '-' + return "-" end local specString if specInfo and PermoksAccountManager.db.global.options.showCurrentSpecIcon then - specString = string.format('\124T%d:0\124t', specInfo[4]) + specString = string.format("\124T%d:0\124t", specInfo[4]) end - return string.format('%s %s', name, specString or '') + return string.format("%s %s", name, specString or "") end local function CreateKeystoneString(name, keyInfo) - if name == 'Warband' then - return '-' + if name == "Warband" then + return "-" elseif not keyInfo or not type(keyInfo) == "table" or not keyInfo.keyDungeon then - return 'Unknown' + return "Unknown" end if keyInfo.keyLevel == 0 then - return string.format('%s', keyInfo.keyDungeon) + return string.format("%s", keyInfo.keyDungeon) end - return string.format('%s+%d', keyInfo.keyDungeon, keyInfo.keyLevel) + return string.format("%s+%d", keyInfo.keyDungeon, keyInfo.keyLevel) end local function CreateTWKeystoneString(keyInfo) if not keyInfo or not type(keyInfo) == "table" or not keyInfo.twKeyDungeon then - return 'Unknown' + return "Unknown" end if keyInfo.twKeyLevel == 0 then - return string.format('%s', keyInfo.twKeyDungeon) + return string.format("%s", keyInfo.twKeyDungeon) end - return string.format('%s+%d', keyInfo.twKeyDungeon, keyInfo.twKeyLevel) + return string.format("%s+%d", keyInfo.twKeyDungeon, keyInfo.twKeyLevel) end local function CreateDungeonScoreString(score) if not score then - return '-' + return "-" end if PermoksAccountManager.db.global.options.useScoreColor then @@ -642,62 +659,62 @@ end local function CreateWeeklyString(vaultInfo) if not vaultInfo or not vaultInfo.MythicPlus then - return '-' + return "-" end local activityInfo = vaultInfo.MythicPlus[1] if not activityInfo or activityInfo.level <= 0 then - return '-' + return "-" end - return string.format('+%d', activityInfo.level) + return string.format("+%d", activityInfo.level) end local function CreateContractString(contractInfo) if not contractInfo then - return '-' + return "-" end local seconds = PermoksAccountManager:GetSecondsRemaining(contractInfo.expirationTime) local timeString = SecondsToTime(seconds) - return string.format('%s - %s', contractInfo.faction, PermoksAccountManager:FormatTimeString(seconds, timeString)) + return string.format("%s - %s", contractInfo.faction, PermoksAccountManager:FormatTimeString(seconds, timeString)) end local payload = { update = Update, events = { - ['PLAYER_MONEY'] = UpdateGold, - ['PLAYER_AVG_ITEM_LEVEL_UPDATE'] = UpdateILevel, - ['PLAYER_EQUIPMENT_CHANGED'] = { UpdateILevel, UpdateEquip }, - ['PLAYER_SPECIALIZATION_CHANGED'] = UpdatePlayerSpecialization, - ['CHALLENGE_MODE_MAPS_UPDATE'] = { UpdateMythicScore, UpdateMythicPlusHistory }, - ['BAG_UPDATE_DELAYED'] = { UpdateGeneralData, UpdateKeystones }, - ['ITEM_CHANGED'] = UpdateKeystones, - ['WEEKLY_REWARDS_UPDATE'] = UpdateMythicScore, - ['PLAYER_LEVEL_UP'] = UpdatePlayerLevel, - ['ZONE_CHANGED'] = UpdateLocation, - ['ZONE_CHANGED_NEW_AREA'] = UpdateLocation, - ['ZONE_CHANGED_INDOORS'] = UpdateLocation, - ['ACCOUNT_MONEY'] = UpdateWarbankGold, + ["PLAYER_MONEY"] = UpdateGold, + ["PLAYER_AVG_ITEM_LEVEL_UPDATE"] = UpdateILevel, + ["PLAYER_EQUIPMENT_CHANGED"] = { UpdateILevel, UpdateEquip }, + ["PLAYER_SPECIALIZATION_CHANGED"] = UpdatePlayerSpecialization, + ["CHALLENGE_MODE_MAPS_UPDATE"] = { UpdateMythicScore, UpdateMythicPlusHistory }, + ["BAG_UPDATE_DELAYED"] = { UpdateGeneralData, UpdateKeystones }, + ["ITEM_CHANGED"] = UpdateKeystones, + ["WEEKLY_REWARDS_UPDATE"] = UpdateMythicScore, + ["PLAYER_LEVEL_UP"] = UpdatePlayerLevel, + ["ZONE_CHANGED"] = UpdateLocation, + ["ZONE_CHANGED_NEW_AREA"] = UpdateLocation, + ["ZONE_CHANGED_INDOORS"] = UpdateLocation, + ["ACCOUNT_MONEY"] = UpdateWarbankGold, }, share = { - [UpdateGold] = 'gold', - [UpdateILevel] = 'ilevel', - [UpdatePlayerSpecialization] = 'specInfo', - [UpdateMythicPlusHistory] = 'mythicPlusHistory', - [UpdateMythicScore] = 'mythicScore', - [UpdatePlayerLevel] = 'charLevel' + [UpdateGold] = "gold", + [UpdateILevel] = "ilevel", + [UpdatePlayerSpecialization] = "specInfo", + [UpdateMythicPlusHistory] = "mythicPlusHistory", + [UpdateMythicScore] = "mythicScore", + [UpdatePlayerLevel] = "charLevel", }, - labels = labelRows + labels = labelRows, } local module = PermoksAccountManager:AddModule(module, payload) -module:AddCustomLabelType('gold', CreateGoldString, true, 'gold') -module:AddCustomLabelType('characterName', CreateCharacterString, nil, 'name', 'specInfo') -module:AddCustomLabelType('keystone', CreateKeystoneString, nil, 'name', 'keyInfo') -module:AddCustomLabelType('twkeystone', CreateTWKeystoneString, nil, 'keyInfo') -module:AddCustomLabelType('dungeonScore', CreateDungeonScoreString, true, 'mythicScore') -module:AddCustomLabelType('weeklyKey', CreateWeeklyString, nil, 'vaultInfo') -module:AddCustomLabelType('contract', CreateContractString, nil, 'contractInfo') +module:AddCustomLabelType("gold", CreateGoldString, true, "gold") +module:AddCustomLabelType("characterName", CreateCharacterString, nil, "name", "specInfo") +module:AddCustomLabelType("keystone", CreateKeystoneString, nil, "name", "keyInfo") +module:AddCustomLabelType("twkeystone", CreateTWKeystoneString, nil, "keyInfo") +module:AddCustomLabelType("dungeonScore", CreateDungeonScoreString, true, "mythicScore") +module:AddCustomLabelType("weeklyKey", CreateWeeklyString, nil, "vaultInfo") +module:AddCustomLabelType("contract", CreateContractString, nil, "contractInfo") function PermoksAccountManager:CreateLocationString(mapId) if not mapId then @@ -720,8 +737,8 @@ function PermoksAccountManager:HighestKeyTooltip_OnEnter(button, alt_data) local runPerDungeon = {} for _, info in ipairs(alt_data.mythicPlusHistory) do runPerDungeon[info.mapChallengeModeID] = runPerDungeon[info.mapChallengeModeID] or {} - runPerDungeon[info.mapChallengeModeID][info.level] = (runPerDungeon[info.mapChallengeModeID][info.level] or 0) + - 1 + runPerDungeon[info.mapChallengeModeID][info.level] = (runPerDungeon[info.mapChallengeModeID][info.level] or 0) + + 1 tinsert(runs, info.level) end @@ -730,27 +747,31 @@ function PermoksAccountManager:HighestKeyTooltip_OnEnter(button, alt_data) for i in ipairs(runs) do if i == 1 or i == 4 or i == 8 then - runs[i] = string.format('|cff00f7ff+%d|r', runs[i]) + runs[i] = string.format("|cff00f7ff+%d|r", runs[i]) else runs[i] = "+" .. runs[i] end end - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'LEFT') + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "LEFT") button.tooltip = tooltip tooltip:SetBackdropColor(0, 0, 0, 1) - tooltip:AddLine('Vault Keys:', table.concat(runs, ', ', 1, (min(#runs, 8)))) - tooltip:AddLine('') + tooltip:AddLine("Vault Keys:", table.concat(runs, ", ", 1, (min(#runs, 8)))) + tooltip:AddLine("") tooltip:AddSeparator(2, 1, 1, 1) local total = 0 for mapChallengeModeID, levels in pairs(runPerDungeon) do local keys = {} - for level, count in self.spairs(levels, function(_, a, b) return a > b end) do - tinsert(keys, string.format('+%d (%d)', level, count)) + for level, count in + self.spairs(levels, function(_, a, b) + return a > b + end) + do + tinsert(keys, string.format("+%d (%d)", level, count)) total = total + count end - tooltip:AddLine(PermoksAccountManager.keys[mapChallengeModeID], table.concat(keys, ', ')) + tooltip:AddLine(PermoksAccountManager.keys[mapChallengeModeID], table.concat(keys, ", ")) end tooltip:AddSeparator(2, 1, 1, 1) @@ -767,16 +788,24 @@ function PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altDat return end - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'LEFT') + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "LEFT") button.tooltip = tooltip tooltip:SetBackdropColor(0, 0, 0, 1) - tooltip:AddHeader('Equipment:') + tooltip:AddHeader("Equipment:") tooltip:AddSeparator(2, 1, 1, 1) for _, equipmentSlot in ipairs(equipmentSlotOrdered) do local item = altData.equippedItems[equipmentSlot] if item then - if (not item.itemName or not item.itemTexture or not item.itemQuality or not item.itemLink or not item.itemSlot) and item.itemID then + if + ( + not item.itemName + or not item.itemTexture + or not item.itemQuality + or not item.itemLink + or not item.itemSlot + ) and item.itemID + then local itemObject = Item:CreateFromItemID(item.itemID) local y, x = tooltip:AddLine() itemObject:ContinueOnItemLoad(function() @@ -786,23 +815,35 @@ function PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altDat item.itemSlot = _G[itemObject:GetInventoryTypeName()] item.itemTexture = itemObject:GetItemIcon() - if tooltip:IsAcquiredBy(addonName .. 'Tooltip') then + if tooltip:IsAcquiredBy(addonName .. "Tooltip") then tooltip:SetCell(y, 1, string.format("%s:", item.itemSlot)) - tooltip:SetCell(y, 2, - string.format("|T%d:0|t|c%s[%s]|r [%s]", item.itemTexture, - ITEM_QUALITY_COLORS[item.itemQuality].color:GenerateHexColor(), item.itemName, - item.itemLevel or "N/A")) + tooltip:SetCell( + y, + 2, + string.format( + "|T%d:0|t|c%s[%s]|r [%s]", + item.itemTexture, + ITEM_QUALITY_COLORS[item.itemQuality].color:GenerateHexColor(), + item.itemName, + item.itemLevel or "N/A" + ) + ) end end) else if not item.itemLevel and altData.GUID == UnitGUID("player") then - end - tooltip:AddLine(string.format("%s:", item.itemSlot), - string.format("|T%d:22|t|c%s[%s]|r [%s]", item.itemTexture, - ITEM_QUALITY_COLORS[item.itemQuality].color:GenerateHexColor(), item.itemName, - item.itemLevel or "N/A")) + tooltip:AddLine( + string.format("%s:", item.itemSlot), + string.format( + "|T%d:22|t|c%s[%s]|r [%s]", + item.itemTexture, + ITEM_QUALITY_COLORS[item.itemQuality].color:GenerateHexColor(), + item.itemName, + item.itemLevel or "N/A" + ) + ) end end end @@ -813,21 +854,23 @@ end function PermoksAccountManager:CustomGoldTooltip_OnEnter(button, warbandData) if not warbandData or not (warbandData.name == "Warband") then + warbandData = self.account.warbandData + end + if not warbandData then return end - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "RIGHT") button.tooltip = tooltip tooltip:SetBackdropColor(0, 0, 0, 1) - tooltip:AddHeader('Gold:') + tooltip:AddHeader("Gold:") tooltip:AddSeparator(2, 1, 1, 1) - tooltip:AddLine("Character Gold:", GetMoneyString(warbandData.gold or 0, true)) + tooltip:AddLine("Total Character Gold:", GetMoneyString(warbandData.gold or 0, true)) tooltip:AddLine("Warband Bank:", GetMoneyString(warbandData.warbankGold or 0, true)) tooltip:AddSeparator(2, 1, 1, 1) tooltip:AddLine("Total Gold:", GetMoneyString((warbandData.gold or 0) + (warbandData.warbankGold or 0), true)) - tooltip:SmartAnchorTo(button) tooltip:Show() end From f20393c6ef62294c44fa550c2d27d8038f180982 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 18 Mar 2026 18:15:33 +0100 Subject: [PATCH 126/138] Fix Coffer Key Shard Currency --- modules/currencies.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/currencies.lua b/modules/currencies.lua index c04ab6e..5fcda14 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -416,7 +416,7 @@ local labelRows = { group = "currency", version = WOW_PROJECT_MAINLINE, }, - coffer_key_shard = { + coffer_key_shard_currency = { label = "Coffer Key Shards", type = "currency", key = 3310, From 1a633bb7a52214add6289f5e81aa6f2eed595360 Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 19 Mar 2026 17:21:16 +0100 Subject: [PATCH 127/138] Fix raid tooltip --- db/db.lua | 4 ++-- modules/instances.lua | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/db/db.lua b/db/db.lua index b15e7ae..c58bc8d 100644 --- a/db/db.lua +++ b/db/db.lua @@ -406,8 +406,8 @@ PermoksAccountManager.activityIDToKeys = { } PermoksAccountManager.raids = { - [2912] = { name = GetRealZoneText(2912), englishID = 'the_voidspire', instanceID = 1307, startIndex = 1, endIndex = 6 }, - [2913] = { name = GetRealZoneText(2913), englishID = 'march_on_queldanas', instanceID = 1308, startIndex = 1, endIndex = 2 }, + [2912] = { name = GetRealZoneText(2912), englishID = 'the_voidspire', instanceID = 1307, startIndex = 0, endIndex = 5 }, + [2913] = { name = GetRealZoneText(2913), englishID = 'march_on_queldanas', instanceID = 1308, startIndex = 0, endIndex = 1 }, [2939] = { name = GetRealZoneText(2939), englishID = 'the_dreamrift', instanceID = 1314, startIndex = 1, endIndex = 1 }, } diff --git a/modules/instances.lua b/modules/instances.lua index 6ccc9a4..febda16 100644 --- a/modules/instances.lua +++ b/modules/instances.lua @@ -530,14 +530,14 @@ local function RetailRaid_OnEnter(tooltip, altData, dbInfo, raidInfo) if info.defeatedEncountersInfo and difficulty < 17 then local bossIndex = 1 for index = dbInfo.startIndex, dbInfo.endIndex do - local bossInfo = info.defeatedEncountersInfo[index] + local bossInfo = info.defeatedEncountersInfo[bossIndex] local text = L["Unsaved"] local color = "00ff00" if difficulty == 16 - and localRaidActivityInfo[bossIndex] - and localRaidActivityInfo[bossIndex].bestDifficulty == difficulty + and localRaidActivityInfo[index] + and localRaidActivityInfo[index].bestDifficulty == difficulty then text = L["Killed"] color = "ff0000" @@ -547,7 +547,7 @@ local function RetailRaid_OnEnter(tooltip, altData, dbInfo, raidInfo) end tooltip:AddLine( - bossIndex .. " " .. EJ_GetEncounterInfo(localRaidActivityInfo[bossIndex].encounterID), + bossIndex .. " " .. EJ_GetEncounterInfo(localRaidActivityInfo[index].encounterID), string.format("|cff%s%s|r", color, text) ) bossIndex = bossIndex + 1 From aa9e6c4db0e3b08ac2d8efd2c169e833db6faff0 Mon Sep 17 00:00:00 2001 From: Permok Date: Thu, 19 Mar 2026 17:21:23 +0100 Subject: [PATCH 128/138] Fix vault tooltip --- db/db.lua | 52 +++--- modules/vault.lua | 421 +++++++++++++++++++++++++--------------------- 2 files changed, 259 insertions(+), 214 deletions(-) diff --git a/db/db.lua b/db/db.lua index c58bc8d..4f81d3d 100644 --- a/db/db.lua +++ b/db/db.lua @@ -2025,38 +2025,38 @@ end PermoksAccountManager.vault_rewards = { -- MythicPlus [Enum.WeeklyRewardChestThresholdType.Activities] = { - [-1] = 678, - [0] = 688, - [2] = 691, - [3] = 694, - [4] = 694, - [5] = 697, - [6] = 697, - [7] = 701, - [8] = 704, - [9] = 704, - [10] = 707, + [-1] = 230, + [0] = 246, + [2] = 259, + [3] = 259, + [4] = 263, + [5] = 263, + [6] = 266, + [7] = 269, + [8] = 269, + [9] = 269, + [10] = 272, }, -- World/Delves [Enum.WeeklyRewardChestThresholdType.World] = { - [1] = 668, - [2] = 671, - [3] = 675, - [4] = 678, - [5] = 684, - [6] = 688, - [7] = 691, - [8] = 694, - [9] = 694, - [10] = 694, - [11] = 694, + [1] = 233, + [2] = 237, + [3] = 240, + [4] = 243, + [5] = 246, + [6] = 253, + [7] = 256, + [8] = 259, + [9] = 259, + [10] = 259, + [11] = 259, }, -- Raid [Enum.WeeklyRewardChestThresholdType.Raid] = { - [17] = 671, - [14] = 684, - [15] = 697, - [16] = 710, + [17] = 233, + [14] = 246, + [15] = 259, + [16] = 272, } } diff --git a/modules/vault.lua b/modules/vault.lua index 626e3f7..ad4a350 100644 --- a/modules/vault.lua +++ b/modules/vault.lua @@ -1,242 +1,287 @@ local addonName, PermoksAccountManager = ... -local LibQTip = LibStub('LibQTip-1.0') -local L = LibStub('AceLocale-3.0'):GetLocale(addonName) +local LibQTip = LibStub("LibQTip-1.0") +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) local options -local module = 'vault' +local module = "vault" local labelRows = { - great_vault_mplus = { - label = L['Vault M+'], - type = 'vault', - key = 'MythicPlus', - tooltip = true, - group = 'vault', - version = WOW_PROJECT_MAINLINE - }, - great_vault_raid = { - label = L['Vault Raid'], - type = 'vault', - key = 'Raid', - tooltip = true, - group = 'vault', - version = WOW_PROJECT_MAINLINE - }, - great_vault_pvp = { - label = 'Vault World', - type = 'vault', - key = 'World', - tooltip = true, - group = 'vault', - version = WOW_PROJECT_MAINLINE - }, - great_vault_reward_available = { - label = L['Vault Reward'], - type = 'vault_reward', - group = 'vault', - version = WOW_PROJECT_MAINLINE - } + great_vault_mplus = { + label = L["Vault M+"], + type = "vault", + key = "MythicPlus", + tooltip = true, + group = "vault", + version = WOW_PROJECT_MAINLINE, + }, + great_vault_raid = { + label = L["Vault Raid"], + type = "vault", + key = "Raid", + tooltip = true, + group = "vault", + version = WOW_PROJECT_MAINLINE, + }, + great_vault_pvp = { + label = "Vault World", + type = "vault", + key = "World", + tooltip = true, + group = "vault", + version = WOW_PROJECT_MAINLINE, + }, + great_vault_reward_available = { + label = L["Vault Reward"], + type = "vault_reward", + group = "vault", + version = WOW_PROJECT_MAINLINE, + }, } local function CreateVaultRewardString(vaultRewardInfo) - if vaultRewardInfo then - return string.format("|cff00ff00Available|r") - else - return "-" - end + if vaultRewardInfo then + return string.format("|cff00ff00Available|r") + else + return "-" + end end local function valueChanged(oldTable, newTable, key, checkUneven) - if not oldTable or not newTable or not key then - return false - end - if not oldTable[key] or not newTable[key] then - return false - end - - if checkUneven then - return newTable[key] ~= oldTable[key] - else - return newTable[key] > oldTable[key] - end + if not oldTable or not newTable or not key then + return false + end + if not oldTable[key] or not newTable[key] then + return false + end + + if checkUneven then + return newTable[key] ~= oldTable[key] + else + return newTable[key] > oldTable[key] + end end -- https://github.com/Gethe/wow-ui-source/blob/87c526a3ae979a7f5244d635bd8ae952b4313bd8/Interface/AddOns/Blizzard_WeeklyRewardsUtil/Blizzard_WeeklyRewardsUtil.lua#L16 -- Blizzard doesn't count incomplete runs (runs which were depleted) local function GetLowestLevelInTopDungeonRuns(numRuns) - local lowestLevel; - local lowestCount = 0; + local lowestLevel + local lowestCount = 0 - local numHeroic, numMythic, numMythicPlus = C_WeeklyRewards.GetNumCompletedDungeonRuns(); + local numHeroic, numMythic, numMythicPlus = C_WeeklyRewards.GetNumCompletedDungeonRuns() -- if there are not enough MythicPlus runs, the lowest level might be either Heroic or Mythic if numRuns > numMythicPlus and (numHeroic + numMythic) > 0 then -- if there are not enough of both mythics combined, the lowest level might be Heroic if numRuns > numMythicPlus + numMythic and numHeroic > 0 then - lowestLevel = WeeklyRewardsUtil.HeroicLevel; - lowestCount = numRuns - numMythicPlus - numMythic; + lowestLevel = WeeklyRewardsUtil.HeroicLevel + lowestCount = numRuns - numMythicPlus - numMythic else - lowestLevel = WeeklyRewardsUtil.MythicLevel; - lowestCount = numRuns - numMythicPlus; + lowestLevel = WeeklyRewardsUtil.MythicLevel + lowestCount = numRuns - numMythicPlus end - return lowestLevel, lowestCount; + return lowestLevel, lowestCount end - local runHistory = C_MythicPlus.GetRunHistory(nil, true); - table.sort(runHistory, function(left, right) return left.level > right.level; end); + local runHistory = C_MythicPlus.GetRunHistory(nil, true) + table.sort(runHistory, function(left, right) + return left.level > right.level + end) for i = math.min(numRuns, #runHistory), 1, -1 do - local run = runHistory[i]; + local run = runHistory[i] if not lowestLevel then - lowestLevel = run.level; + lowestLevel = run.level end if lowestLevel == run.level then - lowestCount = lowestCount + 1; + lowestCount = lowestCount + 1 else - break; + break end end - return lowestLevel, lowestCount; + return lowestLevel, lowestCount +end + +local function GetRewardItemLevel(id) + local itemLink = C_WeeklyRewards.GetExampleRewardItemHyperlinks(id) + if itemLink then + return C_Item.GetDetailedItemLevelInfo(itemLink) + end end local function UpdateVaultInfo(charInfo, force) - local self = PermoksAccountManager - - charInfo.vaultRewardInfo = C_WeeklyRewards.HasAvailableRewards() - charInfo.vaultInfo = charInfo.vaultInfo or {} - local vaultInfo = charInfo.vaultInfo - local activities = C_WeeklyRewards.GetActivities() - for i, activityInfo in ipairs(activities) do - if activityInfo.type == Enum.WeeklyRewardChestThresholdType.Raid then - vaultInfo.Raid = vaultInfo.Raid or {} - local progressChanged = valueChanged(vaultInfo.Raid[activityInfo.index], activityInfo, 'progress') - local levelChanged = valueChanged(vaultInfo.Raid[activityInfo.index], activityInfo, 'level', true) - - if not vaultInfo.Raid[activityInfo.index] or progressChanged or levelChanged then - vaultInfo.Raid[activityInfo.index] = activityInfo - end - elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.Activities then - vaultInfo.MythicPlus = vaultInfo.MythicPlus or {} - activityInfo.level = activityInfo.progress > 0 and GetLowestLevelInTopDungeonRuns(activityInfo.threshold) or activityInfo.level - - local progressChanged = valueChanged(vaultInfo.MythicPlus[activityInfo.index], activityInfo, 'progress') - local levelChanged = valueChanged(vaultInfo.MythicPlus[activityInfo.index], activityInfo, 'level', true) - - if not vaultInfo.MythicPlus[activityInfo.index] or progressChanged or levelChanged or force then - vaultInfo.MythicPlus[activityInfo.index] = activityInfo - end - elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.World then - vaultInfo.World = vaultInfo.World or {} - local progressChanged = valueChanged(vaultInfo.World[activityInfo.index], activityInfo, 'progress') - local levelChanged = valueChanged(vaultInfo.World[activityInfo.index], activityInfo, 'level', true) - - if not vaultInfo.World[activityInfo.index] or progressChanged or levelChanged then - vaultInfo.World[activityInfo.index] = activityInfo - end - end - end + local self = PermoksAccountManager + + charInfo.vaultRewardInfo = C_WeeklyRewards.HasAvailableRewards() + charInfo.vaultInfo = charInfo.vaultInfo or {} + local vaultInfo = charInfo.vaultInfo + local activities = C_WeeklyRewards.GetActivities() + for i, activityInfo in ipairs(activities) do + if activityInfo.type == Enum.WeeklyRewardChestThresholdType.Raid then + vaultInfo.Raid = vaultInfo.Raid or {} + local progressChanged = valueChanged(vaultInfo.Raid[activityInfo.index], activityInfo, "progress") + local levelChanged = valueChanged(vaultInfo.Raid[activityInfo.index], activityInfo, "level", true) + + if not vaultInfo.Raid[activityInfo.index] or progressChanged or levelChanged or force then + local data = CopyTable(activityInfo) + data.itemLevel = GetRewardItemLevel(activityInfo.id) or data.itemLevel + vaultInfo.Raid[activityInfo.index] = data + end + elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.Activities then + vaultInfo.MythicPlus = vaultInfo.MythicPlus or {} + activityInfo.level = activityInfo.progress > 0 and GetLowestLevelInTopDungeonRuns(activityInfo.threshold) + or activityInfo.level + + local progressChanged = valueChanged(vaultInfo.MythicPlus[activityInfo.index], activityInfo, "progress") + local levelChanged = valueChanged(vaultInfo.MythicPlus[activityInfo.index], activityInfo, "level", true) + + if not vaultInfo.MythicPlus[activityInfo.index] or progressChanged or levelChanged or force then + local data = CopyTable(activityInfo) + data.itemLevel = GetRewardItemLevel(activityInfo.id) or data.itemLevel + + vaultInfo.MythicPlus[activityInfo.index] = data + end + elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.World then + vaultInfo.World = vaultInfo.World or {} + local progressChanged = valueChanged(vaultInfo.World[activityInfo.index], activityInfo, "progress") + local levelChanged = valueChanged(vaultInfo.World[activityInfo.index], activityInfo, "level", true) + + if not vaultInfo.World[activityInfo.index] or progressChanged or levelChanged or force then + local data = CopyTable(activityInfo) + data.itemLevel = GetRewardItemLevel(activityInfo.id) or data.itemLevel + + vaultInfo.World[activityInfo.index] = data + end + end + end end local function UpdateRaidActivity(charInfo) - charInfo.raidActivityInfo = C_WeeklyRewards.GetActivityEncounterInfo(Enum.WeeklyRewardChestThresholdType.Raid, 1) + charInfo.raidActivityInfo = C_WeeklyRewards.GetActivityEncounterInfo(Enum.WeeklyRewardChestThresholdType.Raid, 1) end local function Update(charInfo) - UpdateVaultInfo(charInfo, true) - UpdateRaidActivity(charInfo) + UpdateVaultInfo(charInfo, true) + UpdateRaidActivity(charInfo) end local payload = { - update = Update, - events = { - ['UPDATE_INSTANCE_INFO'] = {UpdateVaultInfo, UpdateRaidActivity}, - ['WEEKLY_REWARDS_UPDATE'] = {UpdateVaultInfo, UpdateRaidActivity}, - ['CHALLENGE_MODE_COMPLETED'] = {UpdateVaultInfo, UpdateRaidActivity}, - ['CHALLEGE_MODE_MAPS_UPDATE'] = {UpdateVaultInfo, UpdateRaidActivity} - }, - share = { - [UpdateVaultInfo] = 'vaultInfo' - }, - labels = labelRows + update = Update, + events = { + ["UPDATE_INSTANCE_INFO"] = { UpdateVaultInfo, UpdateRaidActivity }, + ["WEEKLY_REWARDS_UPDATE"] = { UpdateVaultInfo, UpdateRaidActivity }, + ["CHALLENGE_MODE_COMPLETED"] = { UpdateVaultInfo, UpdateRaidActivity }, + ["CHALLEGE_MODE_MAPS_UPDATE"] = { UpdateVaultInfo, UpdateRaidActivity }, + }, + share = { + [UpdateVaultInfo] = "vaultInfo", + }, + labels = labelRows, } local module = PermoksAccountManager:AddModule(module, payload) -module:AddCustomLabelType('vault_reward', CreateVaultRewardString, nil, 'vaultRewardInfo') +module:AddCustomLabelType("vault_reward", CreateVaultRewardString, nil, "vaultRewardInfo") local function GetDifficultyString(type, level) - if type == Enum.WeeklyRewardChestThresholdType.Raid then - return DifficultyUtil.GetDifficultyName(level):sub(1, 1) - elseif type == Enum.WeeklyRewardChestThresholdType.Activities then - return level - elseif type == Enum.WeeklyRewardChestThresholdType.World then - return level - end + if type == Enum.WeeklyRewardChestThresholdType.Raid then + return DifficultyUtil.GetDifficultyName(level):sub(1, 1) + elseif type == Enum.WeeklyRewardChestThresholdType.Activities then + return level + elseif type == Enum.WeeklyRewardChestThresholdType.World then + return level + end end function PermoksAccountManager:CreateVaultString(vaultInfo) - local vaultString - local difficulties = {} - - for i, activityInfo in ipairs(vaultInfo) do - if not vaultString then - if activityInfo.progress >= activityInfo.threshold then - tinsert(difficulties, GetDifficultyString(activityInfo.type, activityInfo.level)) - end - - if activityInfo.threshold > activityInfo.progress or i == 3 then - if #difficulties > 0 then - vaultString = string.format('%s (%s)', self:CreateFractionString(activityInfo.progress, activityInfo.threshold), table.concat(difficulties, '\124\124')) - else - vaultString = self:CreateFractionString(activityInfo.progress, activityInfo.threshold) - end - end - end - end - - return vaultString + local vaultString + local difficulties = {} + + for i, activityInfo in ipairs(vaultInfo) do + if not vaultString then + if activityInfo.progress >= activityInfo.threshold then + tinsert(difficulties, GetDifficultyString(activityInfo.type, activityInfo.level)) + end + + if activityInfo.threshold > activityInfo.progress or i == 3 then + if #difficulties > 0 then + vaultString = string.format( + "%s (%s)", + self:CreateFractionString(activityInfo.progress, activityInfo.threshold), + table.concat(difficulties, "\124\124") + ) + else + vaultString = self:CreateFractionString(activityInfo.progress, activityInfo.threshold) + end + end + end + end + + return vaultString end function PermoksAccountManager.VaultTooltip_OnEnter(button, altData, labelRow) - if not altData or not altData.vaultInfo or not altData.vaultInfo[labelRow.key] then - return - end - - local self = PermoksAccountManager - local vaultInfo = altData.vaultInfo[labelRow.key] - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 4, 'LEFT', 'CENTER', 'CENTER', 'RIGHT') - button.tooltip = tooltip - - tooltip:AddHeader(labelRow.label, '', '') - tooltip:AddLine('') - - for i, activityInfo in pairs(vaultInfo) do - local rewardItemLevel - - if activityInfo.progress >= activityInfo.threshold then - if activityInfo.type == Enum.WeeklyRewardChestThresholdType.Activities and activityInfo.level > 10 then - rewardItemLevel = self.vault_rewards[activityInfo.type][10] - else - rewardItemLevel = self.vault_rewards[activityInfo.type][activityInfo.level] or nil - end - end - - if activityInfo.type == Enum.WeeklyRewardChestThresholdType.Activities then - local difficultyName = activityInfo.level and activityInfo.progress >= activityInfo.threshold and '+' .. activityInfo.level - - tooltip:AddLine(i .. '. Reward:', difficultyName or '-', '|', rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold)) - elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.Raid then - local difficultyName = activityInfo.level and activityInfo.progress >= activityInfo.threshold and DifficultyUtil.GetDifficultyName(activityInfo.level) - - tooltip:AddLine(i .. '. Reward:', difficultyName or '-', '|', rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold)) - elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.World then - local difficultyName = activityInfo.level and activityInfo.progress >= activityInfo.threshold and 'Tier ' .. activityInfo.level - - tooltip:AddLine(i .. '. Reward:', difficultyName or '-', '|', rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold)) - end - - if not rewardItemLevel then - tooltip:SetCellTextColor(tooltip:GetLineCount(), 1, 1, 0, 0) - else - tooltip:SetCellTextColor(tooltip:GetLineCount(), 1, 0, 1, 0) - end - end - - tooltip:SmartAnchorTo(button) - tooltip:Show() + if not altData or not altData.vaultInfo or not altData.vaultInfo[labelRow.key] then + return + end + + local self = PermoksAccountManager + local vaultInfo = altData.vaultInfo[labelRow.key] + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 4, "LEFT", "CENTER", "CENTER", "RIGHT") + button.tooltip = tooltip + + tooltip:AddHeader(labelRow.label, "", "") + tooltip:AddLine("") + + for i, activityInfo in pairs(vaultInfo) do + local rewardItemLevel = activityInfo.itemLevel + + if not rewardItemLevel then + if activityInfo.progress >= activityInfo.threshold then + if activityInfo.type == Enum.WeeklyRewardChestThresholdType.Activities and activityInfo.level > 10 then + rewardItemLevel = self.vault_rewards[activityInfo.type][10] + else + rewardItemLevel = self.vault_rewards[activityInfo.type][activityInfo.level] or nil + end + end + end + + if activityInfo.type == Enum.WeeklyRewardChestThresholdType.Activities then + local difficultyName = activityInfo.level + and activityInfo.progress >= activityInfo.threshold + and "+" .. activityInfo.level + + tooltip:AddLine( + i .. ". Reward:", + difficultyName or "-", + "|", + rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold) + ) + elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.Raid then + local difficultyName = activityInfo.level + and activityInfo.progress >= activityInfo.threshold + and DifficultyUtil.GetDifficultyName(activityInfo.level) + + tooltip:AddLine( + i .. ". Reward:", + difficultyName or "-", + "|", + rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold) + ) + elseif activityInfo.type == Enum.WeeklyRewardChestThresholdType.World then + local difficultyName = activityInfo.level + and activityInfo.progress >= activityInfo.threshold + and "Tier " .. activityInfo.level + + tooltip:AddLine( + i .. ". Reward:", + difficultyName or "-", + "|", + rewardItemLevel or self:CreateQuestString(activityInfo.progress, activityInfo.threshold) + ) + end + + if not rewardItemLevel then + tooltip:SetCellTextColor(tooltip:GetLineCount(), 1, 1, 0, 0) + else + tooltip:SetCellTextColor(tooltip:GetLineCount(), 1, 0, 1, 0) + end + end + + tooltip:SmartAnchorTo(button) + tooltip:Show() end From 1955c65b122a1a0664da8ca8fa9a90cdb5e98abc Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 20 Mar 2026 16:55:48 +0100 Subject: [PATCH 129/138] Add "Nightmare Preys" and "(The) Nightmarish Task" (Weekly Prey Quest) --- db/db.lua | 4120 ++++++++++++++++++++++---------------------- modules/quests.lua | 2057 ++++++++++++---------- 2 files changed, 3209 insertions(+), 2968 deletions(-) diff --git a/db/db.lua b/db/db.lua index 4f81d3d..7e65bfe 100644 --- a/db/db.lua +++ b/db/db.lua @@ -1,2105 +1,2163 @@ local addonName, PermoksAccountManager = ... -local L = LibStub('AceLocale-3.0'):GetLocale(addonName) +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) local default_categories = { - general = { - order = 0, - name = L['General'], - childs = { - 'characterName', - 'ilevel', - 'gold', - 'weekly_key', - 'keystone', - 'mplus_score', - 'catalyst_charges', - 'adventurer_crest', - 'veteran_crest', - 'normal_crest', - 'hero_crest', - 'myth_crest', - 'spark_current', - 'spark_drops', - - -- Probably interesting during the first weeks, might wanna (re-)move later - 'separator2', - 'restored_coffer_key', - 'undercoin', - 'voidlight_marl', - }, - childOrder = { - characterName = 1, - ilevel = 2, - gold = 3, - weekly_key = 4, - keystone = 5, - mplus_score = 6, - catalyst_charges = 7, - adventurer_crest = 8, - veteran_crest = 9, - normal_crest = 10, - hero_crest = 11, - myth_crest = 12, - spark_current = 13, - spark_drops = 14, - - -- Probably interesting during the first weeks, might wanna (re-)move later - separator2 = 20, - restored_coffer_key = 21, - undercoin = 22, - voidlight_marl = 23, - }, - hideToggle = true, - enabled = true - }, - currentdaily = { - order = 1, - name = 'Daily', - childs = { - }, - childOrder = { - }, - enabled = false - }, - currentweekly = { - order = 2, - name = '(Bi)Weekly', - childs = { - 'mythics_done', - 'separator1', - 'saltherils_soiree', - 'abundance', - 'lost_legends', - 'stormarion_assault', - }, - childOrder = { - mythics_done = 1, - - separator1 = 10, - saltherils_soiree = 11, - abundance = 12, - lost_legends = 13, - stormarion_assault = 14, - }, - enabled = true - }, - vault = { - order = 3, - name = L['Vault'], - childs = { - 'great_vault_mplus', - 'great_vault_raid', - 'great_vault_pvp' - }, - childOrder = { - great_vault_mplus = 1, - great_vault_raid = 2, - great_vault_pvp = 3 - }, - enabled = true - }, - professions = { - order = 4, - name = L['Professions'], - childs = { - }, - childOrder = { - }, - enabled = true - }, - renown = { - order = 5, - name = L['Reputation'], - childs = { - 'amani_tribe', - 'the_singularity', - 'harati', - 'silvermoon_court', - }, - childOrder = { - amani_tribe = 1, - the_singularity = 2, - harati = 3, - silvermoon_court = 4, - }, - enabled = true - }, - raid = { - order = 6, - name = L['Raid'], - childs = { - 'the_dreamrift', - 'the_voidspire', - 'march_on_queldanas' - }, - childOrder = { - the_dreamrift = 1, - the_voidspire = 2, - march_on_queldanas = 3, - }, - enabled = true - }, - pvp = { - order = 7, - name = L['PVP'], - childs = { - 'conquest', - 'honor', - 'arenaRating2v2', - 'arenaRating3v3', - 'rbgRating', - - 'separator3', - 'pvp_sparks', - 'pvp_weekly', - }, - childOrder = { - conquest = 1, - honor = 2, - arenaRating2v2 = 3, - arenaRating3v3 = 4, - rbgRating = 5, - - separator3 = 30, - pvp_sparks = 31, - pvp_weekly = 32, - }, - enabled = true - }, - old_weekly = { - order = 8, - name = "Old Weekly", - childs = { - 'big_dig', - 'show_your_mettle', - }, - childOrder = { - big_dig = 51, - show_your_mettle = 52, - }, - enabled = false, - }, - old_daily = { - order = 9, - name = "Old Daily", - childs = { - }, - childOrder = { - }, - enabled = false, - }, - unlocks = { - order = 10, - name = 'Unlocks', - childs = {}, - childOrder = {}, - enabled = false, - }, + general = { + order = 0, + name = L["General"], + childs = { + "characterName", + "ilevel", + "gold", + "weekly_key", + "keystone", + "mplus_score", + "catalyst_charges", + "adventurer_crest", + "veteran_crest", + "normal_crest", + "hero_crest", + "myth_crest", + "spark_current", + "spark_drops", + + -- Probably interesting during the first weeks, might wanna (re-)move later + "separator2", + "restored_coffer_key", + "undercoin", + "voidlight_marl", + }, + childOrder = { + characterName = 1, + ilevel = 2, + gold = 3, + weekly_key = 4, + keystone = 5, + mplus_score = 6, + catalyst_charges = 7, + adventurer_crest = 8, + veteran_crest = 9, + normal_crest = 10, + hero_crest = 11, + myth_crest = 12, + spark_current = 13, + spark_drops = 14, + + -- Probably interesting during the first weeks, might wanna (re-)move later + separator2 = 20, + restored_coffer_key = 21, + undercoin = 22, + voidlight_marl = 23, + }, + hideToggle = true, + enabled = true, + }, + currentdaily = { + order = 1, + name = "Daily", + childs = {}, + childOrder = {}, + enabled = false, + }, + currentweekly = { + order = 2, + name = "(Bi)Weekly", + childs = { + "mythics_done", + "separator1", + "saltherils_soiree", + "abundance", + "lost_legends", + "stormarion_assault", + }, + childOrder = { + mythics_done = 1, + + separator1 = 10, + saltherils_soiree = 11, + abundance = 12, + lost_legends = 13, + stormarion_assault = 14, + }, + enabled = true, + }, + vault = { + order = 3, + name = L["Vault"], + childs = { + "great_vault_mplus", + "great_vault_raid", + "great_vault_pvp", + }, + childOrder = { + great_vault_mplus = 1, + great_vault_raid = 2, + great_vault_pvp = 3, + }, + enabled = true, + }, + professions = { + order = 4, + name = L["Professions"], + childs = {}, + childOrder = {}, + enabled = true, + }, + renown = { + order = 5, + name = L["Reputation"], + childs = { + "amani_tribe", + "the_singularity", + "harati", + "silvermoon_court", + }, + childOrder = { + amani_tribe = 1, + the_singularity = 2, + harati = 3, + silvermoon_court = 4, + }, + enabled = true, + }, + raid = { + order = 6, + name = L["Raid"], + childs = { + "the_dreamrift", + "the_voidspire", + "march_on_queldanas", + }, + childOrder = { + the_dreamrift = 1, + the_voidspire = 2, + march_on_queldanas = 3, + }, + enabled = true, + }, + pvp = { + order = 7, + name = L["PVP"], + childs = { + "conquest", + "honor", + "arenaRating2v2", + "arenaRating3v3", + "rbgRating", + + "separator3", + "pvp_sparks", + "pvp_weekly", + }, + childOrder = { + conquest = 1, + honor = 2, + arenaRating2v2 = 3, + arenaRating3v3 = 4, + rbgRating = 5, + + separator3 = 30, + pvp_sparks = 31, + pvp_weekly = 32, + }, + enabled = true, + }, + old_weekly = { + order = 8, + name = "Old Weekly", + childs = { + "big_dig", + "show_your_mettle", + }, + childOrder = { + big_dig = 51, + show_your_mettle = 52, + }, + enabled = false, + }, + old_daily = { + order = 9, + name = "Old Daily", + childs = {}, + childOrder = {}, + enabled = false, + }, + unlocks = { + order = 10, + name = "Unlocks", + childs = {}, + childOrder = {}, + enabled = false, + }, } PermoksAccountManager.groups = { - currency = { - label = L['Currency'], - order = 3 - }, - character = { - label = L['Character'], - order = 2 - }, - resetDaily = { - label = L['Daily Reset'], - order = 5 - }, - resetWeekly = { - label = L['Weekly Reset'], - order = 6 - }, - resetBiweekly = { - label = L['Biweekly Reset'], - order = 8, - }, - vault = { - label = L['Vault'], - order = 9 - }, - torghast = { - label = L['Torghast'], - order = 10 - }, - dungeons = { - label = L['Dungeons'], - order = 11 - }, - raids = { - label = L['Raids'], - order = 12 - }, - reputation = { - label = L['Reputation'], - order = 13 - }, - buff = { - label = L['Buff'], - order = 14 - }, - sanctum = { - label = L['Sanctum'], - order = 15 - }, - separator = { - label = L['Separator'], - order = 1 - }, - item = { - label = L['Items'], - order = 15 - }, - pvp = { - label = L['PVP'], - order = 16 - }, - onetime = { - label = L['ETC'], - order = 17 - }, - other = { - label = L['Other'], - order = 18 - }, - profession = { - label = L['Professions'], - order = 19 - } + currency = { + label = L["Currency"], + order = 3, + }, + character = { + label = L["Character"], + order = 2, + }, + resetDaily = { + label = L["Daily Reset"], + order = 5, + }, + resetWeekly = { + label = L["Weekly Reset"], + order = 6, + }, + resetBiweekly = { + label = L["Biweekly Reset"], + order = 8, + }, + vault = { + label = L["Vault"], + order = 9, + }, + torghast = { + label = L["Torghast"], + order = 10, + }, + dungeons = { + label = L["Dungeons"], + order = 11, + }, + raids = { + label = L["Raids"], + order = 12, + }, + reputation = { + label = L["Reputation"], + order = 13, + }, + buff = { + label = L["Buff"], + order = 14, + }, + sanctum = { + label = L["Sanctum"], + order = 15, + }, + separator = { + label = L["Separator"], + order = 1, + }, + item = { + label = L["Items"], + order = 15, + }, + pvp = { + label = L["PVP"], + order = 16, + }, + onetime = { + label = L["ETC"], + order = 17, + }, + other = { + label = L["Other"], + order = 18, + }, + profession = { + label = L["Professions"], + order = 19, + }, } PermoksAccountManager.labelRows = { - separator1 = { - hideLabel = true, - label = 'Separator1', - data = function() - return '' - end, - group = 'separator' - }, - separator2 = { - hideLabel = true, - label = 'Separator2', - data = function() - return '' - end, - group = 'separator' - }, - separator3 = { - hideLabel = true, - label = 'Separator3', - data = function() - return '' - end, - group = 'separator' - }, - separator4 = { - hideLabel = true, - label = 'Separator4', - data = function() - return '' - end, - group = 'separator' - }, - separator5 = { - hideLabel = true, - label = 'Separator5', - data = function() - return '' - end, - group = 'separator' - }, - separator6 = { - hideLabel = true, - label = 'Separator6', - data = function() - return '' - end, - group = 'separator' - } + separator1 = { + hideLabel = true, + label = "Separator1", + data = function() + return "" + end, + group = "separator", + }, + separator2 = { + hideLabel = true, + label = "Separator2", + data = function() + return "" + end, + group = "separator", + }, + separator3 = { + hideLabel = true, + label = "Separator3", + data = function() + return "" + end, + group = "separator", + }, + separator4 = { + hideLabel = true, + label = "Separator4", + data = function() + return "" + end, + group = "separator", + }, + separator5 = { + hideLabel = true, + label = "Separator5", + data = function() + return "" + end, + group = "separator", + }, + separator6 = { + hideLabel = true, + label = "Separator6", + data = function() + return "" + end, + group = "separator", + }, } PermoksAccountManager.numDungeons = 8 PermoksAccountManager.keys = { - [2] = "TJS", -- Temple of the Jade Serpent - [165] = "SBG", -- Shadowmoon Burial Grounds - [369] = 'YARD', -- Operation: Mechagon - Junkyard - [370] = 'WORK', -- Operation: Mechagon - Workshop - [375] = 'MISTS', -- Mists of Tirna Scithe - [376] = 'NW', -- The Necrotic Wage - [377] = 'DOS', -- De Other Side - [378] = 'HOA', -- Halls of Atonement - [379] = 'PF', -- Plaguefall - [380] = 'SD', -- Sanguine Depths - [381] = 'SOA', -- Spires of Ascension - [382] = 'TOP', -- Theater of Pain - [391] = 'STRT', -- Tazavesh: Streets of Wonder - [392] = 'GMBT', -- Tazavesh: So'lesh Gambit - [166] = 'GD', -- Grimrail Depot - [168] = 'EB', -- Everbloom - [169] = 'ID', -- Iron Docks - [197] = 'EOA', -- Eye of Azshara - [198] = 'DHT', -- Darkheart Thicket - [199] = 'BRH', -- Blackrook Hold - [200] = 'HOV', -- Halls of Valor - [206] = 'NL', -- Neltharion's Lair - [207] = 'VOTW', -- Vault of the Wardens - [208] = 'MOS', -- Maw of Souls - [209] = 'ARC', -- The Arcway - [210] = 'COS', -- Court of Stars - [227] = 'LOWR', -- Return to Karazhan: Lower - [233] = 'COEN', -- Cathedral of Eternal Night - [234] = 'UPPR', -- Return to Karathan: Upper - [239] = 'SEAT', -- Seat of the Triumvirate - [244] = 'AD', -- Atal'Dazar - [245] = 'FH', -- Freehold - [247] = 'ML', -- Motherlode - [248] = 'WM', -- Waycrest Manor - [251] = 'UNDR', -- The Underrot - [353] = 'SIEGE', -- Siege of Boralus - [399] = 'RLP', -- Ruby Life Pools - [400] = 'NO', -- The Nokhud Offensive - [401] = 'AV', -- The Azure Vault - [402] = 'AA', -- Algeth'ar Academy - [403] = 'ULD', -- Uldaman: Legacy of Tyr - [404] = 'NELT', -- Neltharus - [405] = 'BH', -- Brackenhide Hollow - [406] = 'HOI', -- Halls of Infusion - [438] = 'VP', -- The Vortex Pinnacle - [456] = 'TOTT', -- Throne of the Tides - [463] = 'FALL', -- Dawn of the Infinite: Galakrond's Fall - [464] = 'RISE', -- Dawn of the Infinite: Murozond's Rise - - -- PLACEHOLDER: abbreviations - [499] = 'PSF', -- Priory of the Sacred Flame - [500] = 'ROOK', -- The Rookery - [501] = 'SV', -- The Stonevault - [502] = 'COT', -- City of Threads - [503] = 'ARAK', -- Ara-Kara, City of Echoes - [504] = 'DFC', -- Darkflame Cleft - [505] = 'DAWN', -- The Dawnbreaker - [506] = 'BREW', -- Cinderbrew Meadery - [507] = 'GB', -- Grim Batol - [525] = 'FLOOD', -- Floodgate - [542] = 'ECO', -- Eco-Dome Al'dani + [2] = "TJS", -- Temple of the Jade Serpent + [165] = "SBG", -- Shadowmoon Burial Grounds + [369] = "YARD", -- Operation: Mechagon - Junkyard + [370] = "WORK", -- Operation: Mechagon - Workshop + [375] = "MISTS", -- Mists of Tirna Scithe + [376] = "NW", -- The Necrotic Wage + [377] = "DOS", -- De Other Side + [378] = "HOA", -- Halls of Atonement + [379] = "PF", -- Plaguefall + [380] = "SD", -- Sanguine Depths + [381] = "SOA", -- Spires of Ascension + [382] = "TOP", -- Theater of Pain + [391] = "STRT", -- Tazavesh: Streets of Wonder + [392] = "GMBT", -- Tazavesh: So'lesh Gambit + [166] = "GD", -- Grimrail Depot + [168] = "EB", -- Everbloom + [169] = "ID", -- Iron Docks + [197] = "EOA", -- Eye of Azshara + [198] = "DHT", -- Darkheart Thicket + [199] = "BRH", -- Blackrook Hold + [200] = "HOV", -- Halls of Valor + [206] = "NL", -- Neltharion's Lair + [207] = "VOTW", -- Vault of the Wardens + [208] = "MOS", -- Maw of Souls + [209] = "ARC", -- The Arcway + [210] = "COS", -- Court of Stars + [227] = "LOWR", -- Return to Karazhan: Lower + [233] = "COEN", -- Cathedral of Eternal Night + [234] = "UPPR", -- Return to Karathan: Upper + [239] = "SEAT", -- Seat of the Triumvirate + [244] = "AD", -- Atal'Dazar + [245] = "FH", -- Freehold + [247] = "ML", -- Motherlode + [248] = "WM", -- Waycrest Manor + [251] = "UNDR", -- The Underrot + [353] = "SIEGE", -- Siege of Boralus + [399] = "RLP", -- Ruby Life Pools + [400] = "NO", -- The Nokhud Offensive + [401] = "AV", -- The Azure Vault + [402] = "AA", -- Algeth'ar Academy + [403] = "ULD", -- Uldaman: Legacy of Tyr + [404] = "NELT", -- Neltharus + [405] = "BH", -- Brackenhide Hollow + [406] = "HOI", -- Halls of Infusion + [438] = "VP", -- The Vortex Pinnacle + [456] = "TOTT", -- Throne of the Tides + [463] = "FALL", -- Dawn of the Infinite: Galakrond's Fall + [464] = "RISE", -- Dawn of the Infinite: Murozond's Rise + + -- PLACEHOLDER: abbreviations + [499] = "PSF", -- Priory of the Sacred Flame + [500] = "ROOK", -- The Rookery + [501] = "SV", -- The Stonevault + [502] = "COT", -- City of Threads + [503] = "ARAK", -- Ara-Kara, City of Echoes + [504] = "DFC", -- Darkflame Cleft + [505] = "DAWN", -- The Dawnbreaker + [506] = "BREW", -- Cinderbrew Meadery + [507] = "GB", -- Grim Batol + [525] = "FLOOD", -- Floodgate + [542] = "ECO", -- Eco-Dome Al'dani } -- Timewalking Keystones PermoksAccountManager.activityIDToKeys = { - [459] = 197, -- EOA - [460] = 198, -- DHT - [461] = 200, -- HOV - [462] = 206, -- NL - [463] = 199, -- BRH - [464] = 207, -- VOTW - [465] = 208, -- MOS - [466] = 210, -- COS - [467] = 209, -- ARC - [471] = 227, -- LOWR - [473] = 234, -- UPPR - [476] = 233, -- COEN - [486] = 239, -- SEAT + [459] = 197, -- EOA + [460] = 198, -- DHT + [461] = 200, -- HOV + [462] = 206, -- NL + [463] = 199, -- BRH + [464] = 207, -- VOTW + [465] = 208, -- MOS + [466] = 210, -- COS + [467] = 209, -- ARC + [471] = 227, -- LOWR + [473] = 234, -- UPPR + [476] = 233, -- COEN + [486] = 239, -- SEAT } PermoksAccountManager.raids = { - [2912] = { name = GetRealZoneText(2912), englishID = 'the_voidspire', instanceID = 1307, startIndex = 0, endIndex = 5 }, - [2913] = { name = GetRealZoneText(2913), englishID = 'march_on_queldanas', instanceID = 1308, startIndex = 0, endIndex = 1 }, - [2939] = { name = GetRealZoneText(2939), englishID = 'the_dreamrift', instanceID = 1314, startIndex = 1, endIndex = 1 }, - + [2912] = { + name = GetRealZoneText(2912), + englishID = "the_voidspire", + instanceID = 1307, + startIndex = 0, + endIndex = 5, + }, + [2913] = { + name = GetRealZoneText(2913), + englishID = "march_on_queldanas", + instanceID = 1308, + startIndex = 0, + endIndex = 1, + }, + [2939] = { + name = GetRealZoneText(2939), + englishID = "the_dreamrift", + instanceID = 1314, + startIndex = 1, + endIndex = 1, + }, } PermoksAccountManager.dungeons = { - [2805] = GetRealZoneText(2805), -- Windrunner Spire - [2811] = GetRealZoneText(2811), -- Magisters' Terrace - [2813] = GetRealZoneText(2813), -- Murder Row - [2825] = GetRealZoneText(2825), -- Den of Nalorakk - [2859] = GetRealZoneText(2859), -- The Blinding Vale - [2874] = GetRealZoneText(2874), -- Maisara Caverns - [2915] = GetRealZoneText(2915), -- Nexus-Point Xenas - [2923] = GetRealZoneText(2923), -- Voidscar Arena + [2805] = GetRealZoneText(2805), -- Windrunner Spire + [2811] = GetRealZoneText(2811), -- Magisters' Terrace + [2813] = GetRealZoneText(2813), -- Murder Row + [2825] = GetRealZoneText(2825), -- Den of Nalorakk + [2859] = GetRealZoneText(2859), -- The Blinding Vale + [2874] = GetRealZoneText(2874), -- Maisara Caverns + [2915] = GetRealZoneText(2915), -- Nexus-Point Xenas + [2923] = GetRealZoneText(2923), -- Voidscar Arena } PermoksAccountManager.item = { - [171276] = { key = 'flask' }, -- Flask - [172045] = { key = 'foodHaste' }, -- Haste Food - [181468] = { key = 'augmentRune' }, -- Rune - [172347] = { key = 'armorKit' }, -- Armor Kit - [171286] = { key = 'oilHeal' }, -- Heal Oil - [171285] = { key = 'oilDPS' }, -- DPS Oil - [171267] = { key = 'potHP' }, -- HP Pot - [172233] = { key = 'drum' }, -- Drum - [171272] = { key = 'potManaInstant' }, -- Mana Pot Instant - [171268] = { key = 'potManaChannel' }, -- Mana Pot Channel - [173049] = { key = 'tome' }, -- Tome - [186017] = { key = 'korthiteCrystal' }, -- Korthite Crystal - [187707] = { key = 'progenitorEssentia' }, -- Progenitor Essentia - [187802] = { key = 'potCosmicHP' }, -- Cosmic HP Pot - [199211] = { key = 'primevalEssence' }, --Primeval Essence - [202196] = { key = 'vaultKey' }, -- Zskera Vault Key - [190453] = { key = 'spark_ingenuity' }, -- Spark of Ingenuity - [199197] = { key = 'spark_ingenuity' }, -- Bottled Essence - [204440] = { key = 'spark_shadowflame' }, -- Spark of Shadowflame - [204717] = { key = 'spark_shadowflame' }, -- Splintered Spark of Shadowflame - [204715] = { key = 'unearthed_fragrant_coin' }, -- Unearthed Fragrant Coin - [204985] = { key = 'barter_brick' }, -- Barter Brick - [206959] = { key = 'spark_dreams' }, -- Spark of Dreams - [208396] = { key = 'spark_dreams' }, -- Splintered Spark of Dreams - [202171] = { key = 'obsidian_flightstone' }, -- Obsidian Flightstone - [207030] = { key = 'dilated_time_capsule' }, -- Dilated Time Capsule - [209856] = { key = 'dilated_time_pod' }, -- Dilated Time Pod - [207026] = { key = 'dreamsurge_coalescence' }, -- Dreamsurge Coalescence - [208153] = { key = 'dreamsurge_chrysalis' }, -- Dreamsurge Chrysalis - [210254] = { key = 'dreamsurge_cocoon' }, -- Dreamsurge Cocoon - [208066] = { key = 'dreamseeds' }, -- Small Dreamseed - [208067] = { key = 'dreamseeds' }, -- Plump Dreamseed - [208047] = { key = 'dreamseeds' }, -- Gigantic Dreamseed - [211515] = { key = 'spark_awakening' }, -- Splintered Spark of Awakening - [211516] = { key = 'spark_awakening' }, -- Spark of Awakening - [190456] = { key = 'artisans_mettle' }, -- Artisan's Mettle - - --- TWW items - [211297] = { key = 'spark_omens' }, -- Fractured Spark of Omens - [211296] = { key = 'spark_omens' }, -- Spark of Omens - [210814] = { key = 'artisans_acuity' }, -- Artisan's Acuity - [206350] = { key = 'radiant_remnant' }, -- Radiant Remnant - [235897] = { key = 'radiant_echo' }, -- Radiant Echo - [212493] = { key = 'firelight_ruby' }, -- Odd Glob of Wax - [224642] = { key = 'firelight_ruby' }, -- Firelight Ruby - [229899] = { key = 'coffer_key_shard' }, -- Coffer Key Shard - [231510] = { key = 'timewarped_relic_coffer_key' }, -- Timewarped Relic Coffer Key LFR - [232365] = { key = 'timewarped_relic_coffer_key' }, -- Timewarped Relic Coffer Key Normal - [232366] = { key = 'timewarped_relic_coffer_key' }, -- Timewarped Relic Coffer Key Heroic - - -- 11.1 - [230905] = { key = 'spark_current' }, -- Fractured Spark of Fortunes - [230906] = { key = 'spark_current' }, -- Spark of Fortunes - - -- 11.2 - [231757] = { key = 'spark_current'}, -- Fractured Spark of Starlight - [231756] = { key = 'spark_current'}, -- Spark of Starlight - - -- 12.0 - [232875] = { key = 'spark_current'}, -- Spark of Radiance + [171276] = { key = "flask" }, -- Flask + [172045] = { key = "foodHaste" }, -- Haste Food + [181468] = { key = "augmentRune" }, -- Rune + [172347] = { key = "armorKit" }, -- Armor Kit + [171286] = { key = "oilHeal" }, -- Heal Oil + [171285] = { key = "oilDPS" }, -- DPS Oil + [171267] = { key = "potHP" }, -- HP Pot + [172233] = { key = "drum" }, -- Drum + [171272] = { key = "potManaInstant" }, -- Mana Pot Instant + [171268] = { key = "potManaChannel" }, -- Mana Pot Channel + [173049] = { key = "tome" }, -- Tome + [186017] = { key = "korthiteCrystal" }, -- Korthite Crystal + [187707] = { key = "progenitorEssentia" }, -- Progenitor Essentia + [187802] = { key = "potCosmicHP" }, -- Cosmic HP Pot + [199211] = { key = "primevalEssence" }, --Primeval Essence + [202196] = { key = "vaultKey" }, -- Zskera Vault Key + [190453] = { key = "spark_ingenuity" }, -- Spark of Ingenuity + [199197] = { key = "spark_ingenuity" }, -- Bottled Essence + [204440] = { key = "spark_shadowflame" }, -- Spark of Shadowflame + [204717] = { key = "spark_shadowflame" }, -- Splintered Spark of Shadowflame + [204715] = { key = "unearthed_fragrant_coin" }, -- Unearthed Fragrant Coin + [204985] = { key = "barter_brick" }, -- Barter Brick + [206959] = { key = "spark_dreams" }, -- Spark of Dreams + [208396] = { key = "spark_dreams" }, -- Splintered Spark of Dreams + [202171] = { key = "obsidian_flightstone" }, -- Obsidian Flightstone + [207030] = { key = "dilated_time_capsule" }, -- Dilated Time Capsule + [209856] = { key = "dilated_time_pod" }, -- Dilated Time Pod + [207026] = { key = "dreamsurge_coalescence" }, -- Dreamsurge Coalescence + [208153] = { key = "dreamsurge_chrysalis" }, -- Dreamsurge Chrysalis + [210254] = { key = "dreamsurge_cocoon" }, -- Dreamsurge Cocoon + [208066] = { key = "dreamseeds" }, -- Small Dreamseed + [208067] = { key = "dreamseeds" }, -- Plump Dreamseed + [208047] = { key = "dreamseeds" }, -- Gigantic Dreamseed + [211515] = { key = "spark_awakening" }, -- Splintered Spark of Awakening + [211516] = { key = "spark_awakening" }, -- Spark of Awakening + [190456] = { key = "artisans_mettle" }, -- Artisan's Mettle + + --- TWW items + [211297] = { key = "spark_omens" }, -- Fractured Spark of Omens + [211296] = { key = "spark_omens" }, -- Spark of Omens + [210814] = { key = "artisans_acuity" }, -- Artisan's Acuity + [206350] = { key = "radiant_remnant" }, -- Radiant Remnant + [235897] = { key = "radiant_echo" }, -- Radiant Echo + [212493] = { key = "firelight_ruby" }, -- Odd Glob of Wax + [224642] = { key = "firelight_ruby" }, -- Firelight Ruby + [229899] = { key = "coffer_key_shard" }, -- Coffer Key Shard + [231510] = { key = "timewarped_relic_coffer_key" }, -- Timewarped Relic Coffer Key LFR + [232365] = { key = "timewarped_relic_coffer_key" }, -- Timewarped Relic Coffer Key Normal + [232366] = { key = "timewarped_relic_coffer_key" }, -- Timewarped Relic Coffer Key Heroic + + -- 11.1 + [230905] = { key = "spark_current" }, -- Fractured Spark of Fortunes + [230906] = { key = "spark_current" }, -- Spark of Fortunes + + -- 11.2 + [231757] = { key = "spark_current" }, -- Fractured Spark of Starlight + [231756] = { key = "spark_current" }, -- Spark of Starlight + + -- 12.0 + [232875] = { key = "spark_current" }, -- Spark of Radiance } PermoksAccountManager.factions = { - [2432] = { name = "Ve'nari", paragon = true, type = 'friend' }, - [2472] = { name = "The Archivists' Codex", paragon = true, type = 'friend' }, - [2407] = { name = 'The Ascended', paragon = true }, - [2465] = { name = 'The Wild Hunt', paragon = true }, - [2410] = { name = 'The Undying Army', paragon = true }, - [2413] = { name = 'Court of Harvesters', paragon = true }, - [2470] = { name = "Death's Advance", paragon = true }, - [2478] = { name = 'The Enlightened', paragon = true }, - [2480] = { name = 'Automa', paragon = true }, - [2503] = { name = 'Maruuk Centaur', paragon = true, type = 'renown', warband = 'unique' }, - [2507] = { name = 'Dragonscale Expedition', paragon = true, type = 'renown', warband = 'unique' }, - [2510] = { name = 'Valdrakken Akkord', paragon = true, type = 'renown', warband = 'unique' }, - [2511] = { name = 'Iskaara Tuskar', paragon = true, type = 'renown', warband = 'unique' }, - [2517] = { name = 'Wrathion', paragon = true, type = 'friend', warband = 'unique' }, - [2518] = { name = 'Sabellian', paragon = true, type = 'friend', warband = 'unique' }, - [2526] = { name = 'Winterpelt Furbolg', paragon = true }, - [2544] = { name = 'Artisan\'s Consortium', paragon = true, type = 'friend', warband = 'unique' }, - [2550] = { name = 'Cobalt Assembly', paragon = true, type = 'friend', warband = 'unique' }, - [2553] = { name = 'Soridormi', paragon = true, type = 'friend', warband = 'unique' }, - [2564] = { name = 'Loamm Niffen', paragon = true, type = 'renown', warband = 'unique' }, - [2568] = { name = 'Glimmerogg Racer' }, - [2574] = { name = 'Dream Wardens', paragon = true, type = 'renown', warband = 'unique' }, - [2593] = { name = 'Keg Leg\'s Crew', type = 'renown', warband = 'unique' }, - [2590] = { name = 'Council of Dornogal', paragon = true, type = 'renown', warband = 'unique' }, - [2570] = { name = 'Hallowfall Arathi', paragon = true, type = 'renown', warband = 'unique' }, - [2594] = { name = 'The Assembly of the Deeps', paragon = true, type = 'renown', warband = 'unique' }, - [2600] = { name = 'The Severed Threads', paragon = true, type = 'renown', warband = 'unique' }, - [2605] = { name = 'The General', paragon = true, type = 'friend', warband = 'unique' }, - [2607] = { name = 'The Vizier', paragon = true, type = 'friend', warband = 'unique' }, - [2601] = { name = 'The Weaver', paragon = true, type = 'friend', warband = 'unique' }, - [2640] = { name = 'Brann Bronzebeard', type = 'friend', warband = 'unique' }, - - -- 11.1 - [2653] = { name = 'The Cartels of Undermine', paragon = true, type = 'renown', warband = 'unique' }, - [2669] = { name = 'Darkfuse Solutions', paragon = true, type = 'renown', warband = 'unique' }, - [2671] = { name = 'Venture Company', paragon = true, warband = 'unique' }, - [2673] = { name = 'Bilgewater Cartel', paragon = true, warband = 'unique' }, - [2675] = { name = 'Blackwater Cartel', paragon = true, warband = 'unique' }, - [2677] = { name = 'Steamwheedle Cartel', paragon = true, warband = 'unique' }, - [2685] = { name = 'Gallagio Loyalty Rewards Club', paragon = true, type = 'renown', warband = 'unique' }, - [2688] = { name = 'Flame\'s Radiance', paragon = true, warband = 'unique' }, - - -- 11.2 - [2658] = { name = 'The K\'aresh Trust', paragon = true, type = 'renown', warband = 'unique' }, - [2736] = { name = 'Manaforge Vandals', type = 'renown', warband = 'unique' }, - - -- 12.0 - [2696] = { name = 'Amani Tribe', paragon = true, type = 'renown', warband = 'unique' }, - [2699] = { name = 'The Singularity', paragon = true, type = 'renown', warband = 'unique' }, - [2704] = { name = 'Hara\'ti', paragon = true, type = 'renown', warband = 'unique' }, - [2710] = { name = 'Silvermoon Court', paragon = true, type = 'renown', warband = 'unique' }, + [2432] = { name = "Ve'nari", paragon = true, type = "friend" }, + [2472] = { name = "The Archivists' Codex", paragon = true, type = "friend" }, + [2407] = { name = "The Ascended", paragon = true }, + [2465] = { name = "The Wild Hunt", paragon = true }, + [2410] = { name = "The Undying Army", paragon = true }, + [2413] = { name = "Court of Harvesters", paragon = true }, + [2470] = { name = "Death's Advance", paragon = true }, + [2478] = { name = "The Enlightened", paragon = true }, + [2480] = { name = "Automa", paragon = true }, + [2503] = { name = "Maruuk Centaur", paragon = true, type = "renown", warband = "unique" }, + [2507] = { name = "Dragonscale Expedition", paragon = true, type = "renown", warband = "unique" }, + [2510] = { name = "Valdrakken Akkord", paragon = true, type = "renown", warband = "unique" }, + [2511] = { name = "Iskaara Tuskar", paragon = true, type = "renown", warband = "unique" }, + [2517] = { name = "Wrathion", paragon = true, type = "friend", warband = "unique" }, + [2518] = { name = "Sabellian", paragon = true, type = "friend", warband = "unique" }, + [2526] = { name = "Winterpelt Furbolg", paragon = true }, + [2544] = { name = "Artisan's Consortium", paragon = true, type = "friend", warband = "unique" }, + [2550] = { name = "Cobalt Assembly", paragon = true, type = "friend", warband = "unique" }, + [2553] = { name = "Soridormi", paragon = true, type = "friend", warband = "unique" }, + [2564] = { name = "Loamm Niffen", paragon = true, type = "renown", warband = "unique" }, + [2568] = { name = "Glimmerogg Racer" }, + [2574] = { name = "Dream Wardens", paragon = true, type = "renown", warband = "unique" }, + [2593] = { name = "Keg Leg's Crew", type = "renown", warband = "unique" }, + [2590] = { name = "Council of Dornogal", paragon = true, type = "renown", warband = "unique" }, + [2570] = { name = "Hallowfall Arathi", paragon = true, type = "renown", warband = "unique" }, + [2594] = { name = "The Assembly of the Deeps", paragon = true, type = "renown", warband = "unique" }, + [2600] = { name = "The Severed Threads", paragon = true, type = "renown", warband = "unique" }, + [2605] = { name = "The General", paragon = true, type = "friend", warband = "unique" }, + [2607] = { name = "The Vizier", paragon = true, type = "friend", warband = "unique" }, + [2601] = { name = "The Weaver", paragon = true, type = "friend", warband = "unique" }, + [2640] = { name = "Brann Bronzebeard", type = "friend", warband = "unique" }, + + -- 11.1 + [2653] = { name = "The Cartels of Undermine", paragon = true, type = "renown", warband = "unique" }, + [2669] = { name = "Darkfuse Solutions", paragon = true, type = "renown", warband = "unique" }, + [2671] = { name = "Venture Company", paragon = true, warband = "unique" }, + [2673] = { name = "Bilgewater Cartel", paragon = true, warband = "unique" }, + [2675] = { name = "Blackwater Cartel", paragon = true, warband = "unique" }, + [2677] = { name = "Steamwheedle Cartel", paragon = true, warband = "unique" }, + [2685] = { name = "Gallagio Loyalty Rewards Club", paragon = true, type = "renown", warband = "unique" }, + [2688] = { name = "Flame's Radiance", paragon = true, warband = "unique" }, + + -- 11.2 + [2658] = { name = "The K'aresh Trust", paragon = true, type = "renown", warband = "unique" }, + [2736] = { name = "Manaforge Vandals", type = "renown", warband = "unique" }, + + -- 12.0 + [2696] = { name = "Amani Tribe", paragon = true, type = "renown", warband = "unique" }, + [2699] = { name = "The Singularity", paragon = true, type = "renown", warband = "unique" }, + [2704] = { name = "Hara'ti", paragon = true, type = "renown", warband = "unique" }, + [2710] = { name = "Silvermoon Court", paragon = true, type = "renown", warband = "unique" }, } PermoksAccountManager.currency = { - [1602] = 0, - [1767] = 0, - [1792] = 0, - [1810] = 0, - [1813] = 0, - [1828] = 0, - [1191] = 0, - [1931] = 0, - [1904] = 0, - [1906] = 0, - [1977] = 0, - [1822] = 1, -- Renown - [1979] = 0, - [2000] = 0, - [2003] = 0, -- Dragon Isles Supplies - [2009] = 0, - [2118] = 0, -- Elemental Overflow - [2122] = 0, -- Storm Sigil - [2123] = 0, -- Bloody Tokens - [2166] = 0, -- Renascent Lifeblood (Crucible Charges DF Season 1) - [2245] = 0, -- Flightstones - [2533] = 0, -- Renascent Shadowflame (Crucible Charges DF Season 2) - [2594] = 0, -- Paracausal Flakes - [2650] = 0, -- Emerald Dewdrop - [2651] = 0, -- Seedbloom - [2777] = 0, -- Dream Infusion - [2796] = 0, -- Renascent Dream (Crucible Charges DF Season 3) - [2806] = 0, -- Whelpling Awakened Crest - [2807] = 0, -- Drake's Awakened Crest - [2809] = 0, -- Wyrm's Awakened Crest - [2812] = 0, -- Aspect's Awakened Crest - [2912] = 0, -- Renascent Awakening (Crucible Charges DF Season 4) - [3089] = 0, -- Residual Memories (11.0 prepatch currency) - [3149] = 0, -- Displaced Corrupted Mementos - - -- TWW Currencies - [2914] = 0, -- Weathered Harbinger Crest - [2915] = 0, -- Carved Harbinger Crest - [2916] = 0, -- Runed Harbinger Crest - [2917] = 0, -- Gilded Harbinger Crest - [2813] = 0, -- Harmonized Silk (Crucible Charges TWW Season 1) - [3008] = 0, -- Valorstones - [2815] = 0, -- Resonance Crystals - [3056] = 0, -- Kej - [3028] = 0, -- Restored Coffer Key - [2803] = 0, -- Undercoin - - [3107] = 0, -- Weathered Undermine Crest - [3108] = 0, -- Carved Undermine Crest - [3109] = 0, -- Runed Undermine Crest - [3110] = 0, -- Gilded Undermine Crest - [3116] = 0, -- Essence of Kaja'mite (Catalyst Charges TWW Season 2) - - [3132] = 0, -- Spark Drops - [3218] = 0, -- Empty Kaja'Cola Can - [3220] = 0, -- Vintage Kaja'Cola Can - - [3100] = 0, -- Bronze Celebration Token - [1166] = 0, -- Timewarped Badge - - -- 11.2 - [3141] = 0, -- Starlight Spark Dust - - [3284] = 0, -- Weathered Ethereal Crest - [3286] = 0, -- Carved Ethereal Crest - [3288] = 0, -- Runed Ethereal Crest - [3290] = 0, -- Gilded Ethereal Crest - - [3269] = 0, -- Ethereal Voidsplinter (Catalyst Charges TWW Season 3) - - -- 12.0 - [3383] = 0, -- Adventurer Dawncrest - [3341] = 0, -- Veteran Dawncrest - [3343] = 0, -- Champion Dawncrest - [3345] = 0, -- Hero Dawncrest - [3347] = 0, -- Myth Dawncrest - - [3212] = 0, -- Radiant Spark Dust - [3378] = 0, -- Dawnlight Manaflux (Catalyst Charges Midnight Season 1) - - [3316] = 0, -- Voidlight Marl - [3376] = 0, -- Shard of Dundun - - [3310] = 0, -- Coffer Key Shards + [1602] = 0, + [1767] = 0, + [1792] = 0, + [1810] = 0, + [1813] = 0, + [1828] = 0, + [1191] = 0, + [1931] = 0, + [1904] = 0, + [1906] = 0, + [1977] = 0, + [1822] = 1, -- Renown + [1979] = 0, + [2000] = 0, + [2003] = 0, -- Dragon Isles Supplies + [2009] = 0, + [2118] = 0, -- Elemental Overflow + [2122] = 0, -- Storm Sigil + [2123] = 0, -- Bloody Tokens + [2166] = 0, -- Renascent Lifeblood (Crucible Charges DF Season 1) + [2245] = 0, -- Flightstones + [2533] = 0, -- Renascent Shadowflame (Crucible Charges DF Season 2) + [2594] = 0, -- Paracausal Flakes + [2650] = 0, -- Emerald Dewdrop + [2651] = 0, -- Seedbloom + [2777] = 0, -- Dream Infusion + [2796] = 0, -- Renascent Dream (Crucible Charges DF Season 3) + [2806] = 0, -- Whelpling Awakened Crest + [2807] = 0, -- Drake's Awakened Crest + [2809] = 0, -- Wyrm's Awakened Crest + [2812] = 0, -- Aspect's Awakened Crest + [2912] = 0, -- Renascent Awakening (Crucible Charges DF Season 4) + [3089] = 0, -- Residual Memories (11.0 prepatch currency) + [3149] = 0, -- Displaced Corrupted Mementos + + -- TWW Currencies + [2914] = 0, -- Weathered Harbinger Crest + [2915] = 0, -- Carved Harbinger Crest + [2916] = 0, -- Runed Harbinger Crest + [2917] = 0, -- Gilded Harbinger Crest + [2813] = 0, -- Harmonized Silk (Crucible Charges TWW Season 1) + [3008] = 0, -- Valorstones + [2815] = 0, -- Resonance Crystals + [3056] = 0, -- Kej + [3028] = 0, -- Restored Coffer Key + [2803] = 0, -- Undercoin + + [3107] = 0, -- Weathered Undermine Crest + [3108] = 0, -- Carved Undermine Crest + [3109] = 0, -- Runed Undermine Crest + [3110] = 0, -- Gilded Undermine Crest + [3116] = 0, -- Essence of Kaja'mite (Catalyst Charges TWW Season 2) + + [3132] = 0, -- Spark Drops + [3218] = 0, -- Empty Kaja'Cola Can + [3220] = 0, -- Vintage Kaja'Cola Can + + [3100] = 0, -- Bronze Celebration Token + [1166] = 0, -- Timewarped Badge + + -- 11.2 + [3141] = 0, -- Starlight Spark Dust + + [3284] = 0, -- Weathered Ethereal Crest + [3286] = 0, -- Carved Ethereal Crest + [3288] = 0, -- Runed Ethereal Crest + [3290] = 0, -- Gilded Ethereal Crest + + [3269] = 0, -- Ethereal Voidsplinter (Catalyst Charges TWW Season 3) + + -- 12.0 + [3383] = 0, -- Adventurer Dawncrest + [3341] = 0, -- Veteran Dawncrest + [3343] = 0, -- Champion Dawncrest + [3345] = 0, -- Hero Dawncrest + [3347] = 0, -- Myth Dawncrest + + [3212] = 0, -- Radiant Spark Dust + [3378] = 0, -- Dawnlight Manaflux (Catalyst Charges Midnight Season 1) + + [3316] = 0, -- Voidlight Marl + [3376] = 0, -- Shard of Dundun + + [3310] = 0, -- Coffer Key Shards } PermoksAccountManager.currencyTrees = { - [1057] = { - systemID = 20, - currencyType = 3728, -- 3728 = Echo of N'Zoth - } + [1057] = { + systemID = 20, + currencyType = 3728, -- 3728 = Echo of N'Zoth + }, } PermoksAccountManager.currencyCustomOptions = { - [2166] = { currencyUpdate = 2167 }, - [2533] = { forceUpdate = true }, - [2709] = { forceUpdate = true }, - [2707] = { forceUpdate = true }, - [2706] = { forceUpdate = true }, - [2708] = { forceUpdate = true }, - [3107] = { forceUpdate = true }, - [3108] = { forceUpdate = true }, - [3109] = { forceUpdate = true }, - [3110] = { forceUpdate = true }, - [3284] = { forceUpdate = true }, - [3286] = { forceUpdate = true }, - [3288] = { forceUpdate = true }, - [3290] = { forceUpdate = true }, + [2166] = { currencyUpdate = 2167 }, + [2533] = { forceUpdate = true }, + [2709] = { forceUpdate = true }, + [2707] = { forceUpdate = true }, + [2706] = { forceUpdate = true }, + [2708] = { forceUpdate = true }, + [3107] = { forceUpdate = true }, + [3108] = { forceUpdate = true }, + [3109] = { forceUpdate = true }, + [3110] = { forceUpdate = true }, + [3284] = { forceUpdate = true }, + [3286] = { forceUpdate = true }, + [3288] = { forceUpdate = true }, + [3290] = { forceUpdate = true }, } PermoksAccountManager.research = { - [1902] = 'zereth_mortis_three_dailies', - [1972] = 'zereth_mortis_three_wqs' + [1902] = "zereth_mortis_three_dailies", + [1972] = "zereth_mortis_three_wqs", } PermoksAccountManager.professionCDs = { - [L['Tailoring']] = { - cds = { - [376556] = true, -- Azureweave Bolt - [376557] = true, -- Chronocloth Bolt - }, - }, - [L['Alchemy']] = { - }, - [L['Leatherworking']] = { - }, - [L['Enchanting']] = { - }, - [L['Engineering']] = { - }, - [L['Blacksmithing']] = { - }, - [L['Herbalism']] = { - }, - [L['Mining']] = { - }, - [L['Skinning']] = { - }, - [L['Jewelcrafting']] = { - } + [L["Tailoring"]] = { + cds = { + [376556] = true, -- Azureweave Bolt + [376557] = true, -- Chronocloth Bolt + }, + }, + [L["Alchemy"]] = {}, + [L["Leatherworking"]] = {}, + [L["Enchanting"]] = {}, + [L["Engineering"]] = {}, + [L["Blacksmithing"]] = {}, + [L["Herbalism"]] = {}, + [L["Mining"]] = {}, + [L["Skinning"]] = {}, + [L["Jewelcrafting"]] = {}, } -- key is the SkillLineID of the parentProfession PermoksAccountManager.childProfessions = { - df_profession = { - [164] = { spellID = 365677, skillLineID = 2822 }, -- Blacksmithing - [165] = { spellID = 366249, skillLineID = 2830 }, -- Leatherworking - [171] = { spellID = 366261, skillLineID = 2823 }, -- Alchemy - [182] = { spellID = 366252, skillLineID = 2832 }, -- Herbalism - [185] = { spellID = 366256, skillLineID = 2824 }, -- Cooking - [186] = { spellID = 366260, skillLineID = 2833 }, -- Mining - [197] = { spellID = 366258, skillLineID = 2831 }, -- Tailoring - [202] = { spellID = 366254, skillLineID = 2827 }, -- Engineering - [333] = { spellID = 366255, skillLineID = 2825 }, -- Enchanting - [356] = { spellID = 366253, skillLineID = 2826 }, -- Fishing - [393] = { spellID = 366259, skillLineID = 2834 }, -- Skinning - [755] = { spellID = 366250, skillLineID = 2829 }, -- Jewelcrafting - [773] = { spellID = 366251, skillLineID = 2828 }, -- Inscription - }, - tww_profession = { - [164] = { spellID = 423332, skillLineID = 2872 }, -- Blacksmithing - [165] = { spellID = 423340, skillLineID = 2880 }, -- Leatherworking - [171] = { spellID = 423321, skillLineID = 2871 }, -- Alchemy - [182] = { spellID = 441327, skillLineID = 2877 }, -- Herbalism - [185] = { spellID = 423333, skillLineID = 2873 }, -- Cooking - [186] = { spellID = 423341, skillLineID = 2881 }, -- Mining - [197] = { spellID = 423343, skillLineID = 2883 }, -- Tailoring - [202] = { spellID = 423335, skillLineID = 2875 }, -- Engineering - [333] = { spellID = 423334, skillLineID = 2874 }, -- Enchanting - [356] = { spellID = 423336, skillLineID = 2876 }, -- Fishing - [393] = { spellID = 423342, skillLineID = 2882 }, -- Skinning - [755] = { spellID = 423339, skillLineID = 2879 }, -- Jewelcrafting - [773] = { spellID = 423338, skillLineID = 2878 }, -- Inscription - }, + df_profession = { + [164] = { spellID = 365677, skillLineID = 2822 }, -- Blacksmithing + [165] = { spellID = 366249, skillLineID = 2830 }, -- Leatherworking + [171] = { spellID = 366261, skillLineID = 2823 }, -- Alchemy + [182] = { spellID = 366252, skillLineID = 2832 }, -- Herbalism + [185] = { spellID = 366256, skillLineID = 2824 }, -- Cooking + [186] = { spellID = 366260, skillLineID = 2833 }, -- Mining + [197] = { spellID = 366258, skillLineID = 2831 }, -- Tailoring + [202] = { spellID = 366254, skillLineID = 2827 }, -- Engineering + [333] = { spellID = 366255, skillLineID = 2825 }, -- Enchanting + [356] = { spellID = 366253, skillLineID = 2826 }, -- Fishing + [393] = { spellID = 366259, skillLineID = 2834 }, -- Skinning + [755] = { spellID = 366250, skillLineID = 2829 }, -- Jewelcrafting + [773] = { spellID = 366251, skillLineID = 2828 }, -- Inscription + }, + tww_profession = { + [164] = { spellID = 423332, skillLineID = 2872 }, -- Blacksmithing + [165] = { spellID = 423340, skillLineID = 2880 }, -- Leatherworking + [171] = { spellID = 423321, skillLineID = 2871 }, -- Alchemy + [182] = { spellID = 441327, skillLineID = 2877 }, -- Herbalism + [185] = { spellID = 423333, skillLineID = 2873 }, -- Cooking + [186] = { spellID = 423341, skillLineID = 2881 }, -- Mining + [197] = { spellID = 423343, skillLineID = 2883 }, -- Tailoring + [202] = { spellID = 423335, skillLineID = 2875 }, -- Engineering + [333] = { spellID = 423334, skillLineID = 2874 }, -- Enchanting + [356] = { spellID = 423336, skillLineID = 2876 }, -- Fishing + [393] = { spellID = 423342, skillLineID = 2882 }, -- Skinning + [755] = { spellID = 423339, skillLineID = 2879 }, -- Jewelcrafting + [773] = { spellID = 423338, skillLineID = 2878 }, -- Inscription + }, } PermoksAccountManager.quests = { - -- General Weeklies (previous expansion quests get deprecated so we replace these IDs instead of adding new ones) - weekend_event = { - [83345] = { questType = 'weekly', log = true }, -- Battleground Event: A Call to Battle - [83347] = { questType = 'weekly', log = true }, -- Mythic Dungeon Event: Emissary of War - [83357] = { questType = 'weekly', log = true }, -- Pet Battle Event: The Very Best - [83358] = { questType = 'weekly', log = true }, -- Arena Event: The Arena Calls - [83366] = { questType = 'weekly', log = true }, -- World Quests: The World Awaits - [83359] = { questType = 'weekly', log = true }, -- A Shattered Path Through Time - [83362] = { questType = 'weekly', log = true }, -- A Shrouded Path Through Time - [83365] = { questType = 'weekly', log = true }, -- A Frozen Path Through Time - [83364] = { questType = 'weekly', log = true }, -- A Savage Path Through Time - - }, - pvp_weekly = { - [80184] = { questType = 'weekly', log = true }, -- Preserving in Battle - [80185] = { questType = 'weekly', log = true }, -- Preserving Solo - [80186] = { questType = 'weekly', log = true }, -- Preserving in War - [80187] = { questType = 'weekly', log = true }, -- Preserving in Skirmishes - [80188] = { questType = 'weekly', log = true }, -- Preserving in Arenas - [80189] = { questType = 'weekly', log = true }, -- Preserving Teamwork - }, - pvp_sparks = { - [81793] = { questType = 'weekly', log = true }, -- Sparks of War: Isle of Dorn - [81794] = { questType = 'weekly', log = true }, -- Sparks of War: The Ringing Deeps - [81795] = { questType = 'weekly', log = true }, -- Sparks of War: Hallowfall - [81796] = { questType = 'weekly', log = true }, -- Sparks of War: Azj-Kahet - }, - dungeon_weekly = { - [83432] = { questType = 'weekly', warband = true, log = true }, -- The Rookery - [83436] = { questType = 'weekly', warband = true, log = true }, -- Cinderbrew Meadery - [83443] = { questType = 'weekly', warband = true, log = true }, -- Darkflame Cleft - [83457] = { questType = 'weekly', warband = true, log = true }, -- The Stonevault - [83458] = { questType = 'weekly', warband = true, log = true }, -- Priory of the Sacred Flame - [83459] = { questType = 'weekly', warband = true, log = true }, -- The Dawnbreaker - [83465] = { questType = 'weekly', warband = true, log = true }, -- Ara-Kara, City of Echoes - [83469] = { questType = 'weekly', warband = true, log = true }, -- City of Threads - }, - - -- 9.0 Shadowlands - maw_dailies = { - [60732] = { questType = 'daily', log = true }, - [61334] = { questType = 'daily', log = true }, - [62239] = { questType = 'daily', log = true }, - [63031] = { questType = 'daily', log = true }, - [63038] = { questType = 'daily', log = true }, - [63039] = { questType = 'daily', log = true }, - [63040] = { questType = 'daily', log = true }, - [63043] = { questType = 'daily', log = true }, - [63045] = { questType = 'daily', log = true }, - [63047] = { questType = 'daily', log = true }, - [63050] = { questType = 'daily', log = true }, - [63062] = { questType = 'daily', log = true }, - [63069] = { questType = 'daily', log = true }, - [63072] = { questType = 'daily', log = true }, - [63100] = { questType = 'daily', log = true }, - [63179] = { questType = 'daily', log = true }, - [60622] = { questType = 'weekly', log = true }, - [60646] = { questType = 'weekly', log = true }, - [60762] = { questType = 'weekly', log = true }, - [60775] = { questType = 'weekly', log = true }, - [60902] = { questType = 'weekly', log = true }, - [61075] = { questType = 'weekly', log = true }, - [61079] = { questType = 'weekly', log = true }, - [61088] = { questType = 'weekly', log = true }, - [61103] = { questType = 'weekly', log = true }, - [61104] = { questType = 'weekly', log = true }, - [61765] = { questType = 'weekly', log = true }, - [62214] = { questType = 'weekly', log = true }, - [62234] = { questType = 'weekly', log = true }, - [63206] = { questType = 'weekly', log = true } - }, - transport_network = { - -- Kyrian - -- Venthyr - -- Night Fae - [62614] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, - [62615] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, - [62611] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, - [62610] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, - [62606] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, - [62608] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, - [60175] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, - [62607] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = 'daily', log = true }, - [62453] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true }, - [62296] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true }, - [60153] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true }, - [62382] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = 'daily', log = true }, - [62263] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true }, - [62459] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true }, - [62466] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true }, - [60188] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true }, - [62465] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = 'daily', log = true } - }, - korthia_dailies = { - [63775] = { questType = 'daily', log = true }, - [63776] = { questType = 'daily', log = true }, - [63777] = { questType = 'daily', log = true }, - [63778] = { questType = 'daily', log = true }, - [63779] = { questType = 'daily', log = true }, - [63780] = { questType = 'daily', log = true }, - [63781] = { questType = 'daily', log = true }, - [63782] = { questType = 'daily', log = true }, - [63783] = { questType = 'daily', log = true }, - [63784] = { questType = 'daily', log = true }, - [63785] = { questType = 'daily', log = true }, - [63786] = { questType = 'daily', log = true }, - [63787] = { questType = 'daily', log = true }, - [63788] = { questType = 'daily', log = true }, - [63789] = { questType = 'daily', log = true }, - [63790] = { questType = 'daily', log = true }, - [63791] = { questType = 'daily', log = true }, - [63792] = { questType = 'daily', log = true }, - [63793] = { questType = 'daily', log = true }, - [63794] = { questType = 'daily', log = true }, - [63934] = { questType = 'daily', log = true }, - [63935] = { questType = 'daily', log = true }, - [63936] = { questType = 'daily', log = true }, - [63937] = { questType = 'daily', log = true }, - [63950] = { questType = 'daily', log = true }, - [63954] = { questType = 'daily', log = true }, - [63955] = { questType = 'daily', log = true }, - [63956] = { questType = 'daily', log = true }, - [63957] = { questType = 'daily', log = true }, - [63958] = { questType = 'daily', log = true }, - [63959] = { questType = 'daily', log = true }, - [63960] = { questType = 'daily', log = true }, - [63961] = { questType = 'daily', log = true }, - [63962] = { questType = 'daily', log = true }, - [63963] = { questType = 'daily', log = true }, - [63964] = { questType = 'daily', log = true }, - [63965] = { questType = 'daily', log = true }, - [63989] = { questType = 'daily', log = true }, - [64015] = { questType = 'daily', log = true }, - [64016] = { questType = 'daily', log = true }, - [64017] = { questType = 'daily', log = true }, - [64043] = { questType = 'daily', log = true }, - [64065] = { questType = 'daily', log = true }, - [64070] = { questType = 'daily', log = true }, - [64080] = { questType = 'daily', log = true }, - [64089] = { questType = 'daily', log = true }, - [64101] = { questType = 'daily', log = true }, - [64103] = { questType = 'daily', log = true }, - [64104] = { questType = 'daily', log = true }, - [64129] = { questType = 'daily', log = true }, - [64166] = { questType = 'daily', log = true }, - [64194] = { questType = 'daily', log = true }, - [64432] = { questType = 'daily', log = true } - }, - zereth_mortis_dailies = { - [64579] = { questType = 'daily', log = true }, - [64592] = { questType = 'daily', log = true }, - [64717] = { questType = 'daily', log = true }, - [64785] = { questType = 'daily', log = true }, - [64854] = { questType = 'daily', log = true }, - [64964] = { questType = 'daily', log = true }, - [64977] = { questType = 'daily', log = true }, - [65033] = { questType = 'daily', log = true }, - [65072] = { questType = 'daily', log = true }, - [65096] = { questType = 'daily', log = true }, - [65142] = { questType = 'daily', log = true }, - [65177] = { questType = 'daily', log = true }, - [65226] = { questType = 'daily', log = true }, - [65255] = { questType = 'daily', log = true }, - [65256] = { questType = 'daily', log = true }, - [65264] = { questType = 'daily', log = true }, - [65265] = { questType = 'daily', log = true }, - [65268] = { questType = 'daily', log = true }, - [65269] = { questType = 'daily', log = true }, - [65325] = { questType = 'daily', log = true }, - [65326] = { questType = 'daily', log = true }, - [65362] = { questType = 'daily', log = true }, - [65363] = { questType = 'daily', log = true }, - [65364] = { questType = 'daily', log = true }, - [65445] = { questType = 'daily', log = true } - }, - zereth_mortis_wqs = { - [64960] = { questType = 'daily' }, - [64974] = { questType = 'daily' }, - [65081] = { questType = 'daily' }, - [65089] = { questType = 'daily' }, - [65102] = { questType = 'daily' }, - [65115] = { questType = 'daily' }, - [65117] = { questType = 'daily' }, - [65119] = { questType = 'daily' }, - [65232] = { questType = 'daily' }, - [65234] = { questType = 'daily' }, - [65230] = { questType = 'daily' }, - [65244] = { questType = 'daily' }, - [65252] = { questType = 'daily' }, - [65262] = { questType = 'daily' }, - [65402] = { questType = 'daily' }, - [65403] = { questType = 'daily' }, - [65405] = { questType = 'daily' }, - [65406] = { questType = 'daily' }, - [65407] = { questType = 'daily' }, - [65408] = { questType = 'daily' }, - [65409] = { questType = 'daily' }, - [65410] = { questType = 'daily' }, - [65411] = { questType = 'daily' }, - [65412] = { questType = 'daily' }, - [65413] = { questType = 'daily' }, - [65414] = { questType = 'daily' }, - [65415] = { questType = 'daily' }, - [65416] = { questType = 'daily' }, - [65417] = { questType = 'daily' } - }, - conductor = { - [61691] = { covenant = 3, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' }, -- Large Lunarlight Pod - [61633] = { covenant = 3, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' }, -- Dreamsong Fenn - -- Necrolords - [58872] = { covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' }, -- Gieger - [61647] = { covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = 'daily' } -- Chosen Runecoffer - }, - riftbound_cache = { - [64456] = { questType = 'daily' }, - [64470] = { questType = 'daily' }, - [64471] = { questType = 'daily' }, - [64472] = { questType = 'daily' } - }, - relic_creatures = { - [64341] = { questType = 'daily' }, - [64342] = { questType = 'daily' }, - [64343] = { questType = 'daily' }, - [64344] = { questType = 'daily' }, - [64747] = { questType = 'daily' }, - [64748] = { questType = 'daily' }, - [64749] = { questType = 'daily' }, - [64750] = { questType = 'daily' }, - [64751] = { questType = 'daily' }, - [64752] = { questType = 'daily' }, - [64753] = { questType = 'daily' }, - [64754] = { questType = 'daily' }, - [64755] = { questType = 'daily' }, - [64756] = { questType = 'daily' }, - [64757] = { questType = 'daily' } - }, - helsworn_chest = { - [64256] = { questType = 'daily' } - }, - relic_gorger = { - [64433] = { questType = 'daily' }, - [64434] = { questType = 'daily' }, - [64435] = { questType = 'daily' }, - [64436] = { questType = 'daily' } - }, - jiro_cyphers = { - [65144] = { questType = 'daily' }, -- Creatii - [65166] = { questType = 'daily' }, -- Genesii - [65167] = { questType = 'daily' } -- Nascii - }, - maw_souls = { - [61332] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 5 souls - [62861] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 10 souls - [62862] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 15 souls - [62863] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 20 souls - [61334] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 5 souls - [62867] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 10 souls - [62868] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 15 souls - [62869] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 20 souls - [61331] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 5 souls - [62858] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 10 souls - [62859] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 15 souls - [62860] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 20 souls - [61333] = { covenant = 4, questType = 'weekly', log = true }, -- necro 5 souls - [62864] = { covenant = 4, questType = 'weekly', log = true }, -- necro 10 souls - [62865] = { covenant = 4, questType = 'weekly', log = true }, -- necro 15 souls - [62866] = { covenant = 4, questType = 'weekly', log = true } -- necro 20 souls - }, - anima_weekly = { - [61982] = { covenant = 1, questType = 'weekly', log = true }, -- kyrian 1k anima - [61981] = { covenant = 2, questType = 'weekly', log = true }, -- venthyr 1k anima - [61984] = { covenant = 3, questType = 'weekly', log = true }, -- night fae 1k anima - [61983] = { covenant = 4, questType = 'weekly', log = true } -- necro 1k anima - }, - battle_plans = { - [64521] = { questType = 'weekly', log = true } -- Helsworn Battle Plans - }, - korthia_supplies = { - [64522] = { questType = 'weekly', log = true } -- Stolen Korthia Supplies - }, - korthia_weekly = { - [63949] = { questType = 'weekly', log = true } -- Shaping Fate - }, - zereth_mortis_weekly = { - [65324] = { questType = 'weekly', log = true } - }, - -- Maw Warth of the Jailer - wrath = { - [63414] = { questType = 'weekly' } -- Wrath of the Jailer - }, - -- Maw Hunt - hunt = { - [63195] = { questType = 'weekly' }, - [63198] = { questType = 'weekly' }, - [63199] = { questType = 'weekly' }, - [63433] = { questType = 'weekly' } - }, - korthia_world_boss = { - [64531] = { questType = 'weekly' } -- Mor'geth, Tormentor of the Damned - }, - zereth_mortis_world_boss = { - [65143] = { questType = 'weekly' } -- Antros - }, - tormentors_weekly = { - [63854] = { questType = 'weekly' }, -- Tormentors of Torghast - [64122] = { questType = 'weekly' } -- Tormentors of Torghast - }, - tormentors_locations = { - [64692] = { questType = 'weekly' }, - [64693] = { questType = 'weekly' }, - [64694] = { questType = 'weekly' }, - [64695] = { questType = 'weekly' }, - [64696] = { questType = 'weekly' }, - [64697] = { questType = 'weekly' }, - [64698] = { questType = 'weekly' } - }, - containing_the_helsworn = { - [64273] = { questType = 'weekly' } -- Containing the Helsworn World Quest - }, - rift_vessels = { - [64265] = { questType = 'weekly' }, - [64269] = { questType = 'weekly' }, - [64270] = { questType = 'weekly' } - }, - maw_assault = { - [63824] = { questType = 'weekly' }, -- Kyrian - [63543] = { questType = 'weekly' }, -- Necrolord - [63822] = { questType = 'weekly' }, -- Venthyr - [63823] = { questType = 'weekly' } -- Nightfae - }, - assault_vessels = { - [64056] = { name = 'Venthyr', total = 2, questType = 'weekly' }, - [64055] = { name = 'Venthyr', total = 2, questType = 'weekly' }, - [64058] = { name = 'Kyrian', total = 2, questType = 'weekly' }, - [64057] = { name = 'Kyrian', total = 2, questType = 'weekly' }, - [64059] = { name = 'Night Fae', total = 2, questType = 'weekly' }, - [64060] = { name = 'Night Fae', total = 2, questType = 'weekly' }, - [64044] = { name = 'Necrolord', total = 2, questType = 'weekly' }, - [64045] = { name = 'Necrolord', total = 2, questType = 'weekly' } - }, - adamant_vault_conduit = { - [64347] = { questType = 'weekly' } - }, - sanctum_normal_embers_trash = { - [64610] = { questType = 'weekly' }, - [64613] = { questType = 'weekly' }, - [64616] = { questType = 'weekly' }, - [64619] = { questType = 'weekly' }, - [64622] = { questType = 'weekly' } - }, - sanctum_heroic_embers_trash = { - [64611] = { questType = 'weekly' }, - [64614] = { questType = 'weekly' }, - [64617] = { questType = 'weekly' }, - [64620] = { questType = 'weekly' }, - [64623] = { questType = 'weekly' } - }, - sandworn_chest = { - [65611] = { questType = 'daily' } - }, - puzzle_caches = { - [64972] = { questType = 'daily' }, -- Toccatian Cache - [65314] = { questType = 'daily' }, - [65319] = { questType = 'daily' }, - [65323] = { questType = 'daily' }, -- Cantaric Cache - [65094] = { questType = 'daily' }, - [65318] = { questType = 'daily' }, - [65091] = { questType = 'daily' }, -- Mezzonic Cache - [65315] = { questType = 'daily' }, - [65320] = { questType = 'daily' }, - [65316] = { questType = 'daily' }, -- Glissandian Cache - [65321] = { questType = 'daily' }, - [65092] = { questType = 'daily' }, - [65317] = { questType = 'daily' }, -- Fuguel Cache - [65322] = { questType = 'daily' }, - [65093] = { questType = 'daily' } - }, - korthia_five_dailies = { - [63727] = { questType = 'unlocks', log = true } - }, - zereth_mortis_three_dailies = { - [65219] = { questType = 'unlocks', log = true } - }, - dragonflight_world_boss = { - [69927] = { questType = 'weekly' }, - [69928] = { questType = 'weekly' }, - [69929] = { questType = 'weekly' }, - [69930] = { questType = 'weekly' }, - }, - aiding_the_accord = { - [70750] = { questType = 'weekly', log = true }, - [72068] = { questType = 'weekly', log = true }, - [72373] = { questType = 'weekly', log = true }, - [72374] = { questType = 'weekly', log = true }, - [72375] = { questType = 'weekly', log = true }, - [75259] = { questType = 'weekly', log = true }, - [75859] = { questType = 'weekly', log = true }, - [75860] = { questType = 'weekly', log = true }, - [75861] = { questType = 'weekly', log = true }, - [77254] = { questType = 'weekly', log = true }, - [77976] = { questType = 'weekly', log = true }, - [78446] = { questType = 'weekly', log = true }, - [78447] = { questType = 'weekly', log = true }, - [78861] = { questType = 'weekly', log = true }, - [80385] = { questType = 'weekly', log = true }, - [80386] = { questType = 'weekly', log = true }, - [80388] = { questType = 'weekly', log = true }, - [80389] = { questType = 'weekly', log = true }, - - }, - grand_hunts = { - [70906] = { questType = 'weekly' }, - [71136] = { questType = 'weekly' }, - [71137] = { questType = 'weekly' } - }, - marrukai_camp = { - [65784] = { questType = 'biweekly', log = true }, - [65789] = { questType = 'biweekly', log = true }, - [65792] = { questType = 'biweekly', log = true }, - [65796] = { questType = 'biweekly', log = true }, - [65798] = { questType = 'biweekly', log = true }, - [66698] = { questType = 'biweekly', log = true }, - [66711] = { questType = 'biweekly', log = true }, - [67034] = { questType = 'biweekly', log = true }, - [67039] = { questType = 'biweekly', log = true }, - [67222] = { questType = 'biweekly', log = true }, - [67605] = { questType = 'biweekly', log = true }, - [70210] = { questType = 'biweekly', log = true }, - [70299] = { questType = 'biweekly', log = true }, - [70279] = { questType = 'biweekly', log = true }, - [70352] = { questType = 'biweekly', log = true }, - [70701] = { questType = 'biweekly', log = true }, - [70990] = { questType = 'biweekly', log = true }, - [71241] = { questType = 'biweekly', log = true }, - }, - trial_of_flood = { - [71033] = { questType = 'weekly' } - }, - trial_of_elements = { - [71995] = { questType = 'weekly' } - }, - trial_of_storms = { - [74567] = { questType = 'weekly' } - }, - brackenhide_hollow_rares = { - [74032] = { questType = 'daily', name = 'Snarglebone' }, - [73985] = { questType = 'daily', name = 'Blisterhide' }, - [73996] = { questType = 'daily', name = 'Gnarls' }, - [74004] = { questType = 'daily', name = 'High Shaman Rotknuckle' }, - }, - knowledge_df_mobs = { - [70522] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198975 }, --Leatherworking 1 - [70523] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 198976 }, --Leatherworking 2 - [73138] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 204232 }, --Leatherworking 3 - [70514] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 198967 }, --Enchanting 1 - [70515] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 198968 }, --Enchanting 2 - [73136] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 204224 }, --Enchanting 3 - [70516] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198969 }, --Engineering 1 - [70517] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 198970 }, --Engineering 2 - [73165] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 204227 }, --Engineering 3 - [70518] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198971 }, --Inscription 1 - [70519] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 198972 }, --Inscription 2 - [73163] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 204229 }, --Inscription 3 - [70524] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198977 }, --Tailoring 1 - [70525] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 198978 }, --Tailoring 2 - [73153] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 204225 }, --Tailoring 3 - [70512] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198965 }, --Blacksmithing 1 - [70513] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 198966 }, --Blacksmithing 2 - [73161] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 204230 }, --Blacksmithing 3 - [70520] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198973 }, --Jewelcrafting 1 - [70521] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 198974 }, --Jewelcrafting 2 - [73168] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 204222 }, --Jewelcrafting 3 - [70504] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198963 }, --Alchemy 1 - [70511] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 198964 }, --Alchemy 2 - [73166] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 204226 }, --Alchemy 3 - [71857] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 1 - [71858] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 2 - [71859] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 3 - [71860] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 4 - [71861] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 5 - [71864] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, --Herbalism 6 - [70381] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 1 - [70383] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 2 - [70384] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 3 - [70385] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 4 - [70386] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 5 - [70389] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, --Skinning 6 - [72160] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 1 - [72161] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 2 - [72162] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 3 - [72163] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 4 - [72164] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 5 - [72165] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, --Mining 6 - }, - knowledge_df_treasures = { - [66375] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193904 }, --Inscription 1 - [66376] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 193905 }, --Inscription 2 - [66384] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 193910 }, --Leatherworking 1 - [66385] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 193913 }, --Leatherworking 2 - [66386] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193898 }, --Tailoring 1 - [66387] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 193899 }, --Tailoring 2 - [66377] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193900 }, --Enchanting 1 - [66378] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 193901 }, --Enchanting 2 - [66381] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192131 }, --Blacksmithing 1 - [66382] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 192132 }, --Blacksmithing 2 - [66379] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193902 }, --Engineering 1 - [66380] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 193903 }, --Engineering 2 - [66388] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193909 }, --Jewelcrafting 1 - [66389] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 193907 }, --Jewelcrafting 2 - [66373] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193891 }, --Alchemy 1 - [66374] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 193897 }, --Alchemy 2 - }, - knowledge_df_treatise = { - [74105] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, -- Inscription - [83730] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, -- Inscription 2 - [74106] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Mining - [74107] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Herbalism - [74108] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy' }, -- Alchemy - [74109] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing' }, -- Blacksmithing - [74110] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Enchanting - [74111] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering' }, -- Engineering - [74112] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting' }, -- Jewelcrafting - [74113] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking' }, -- Leatherworking - [74114] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Skinning - [74115] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring' }, -- Tailoring - }, - knowledge_df_weeklies_craft = { - [70558] = { questType = 'weekly', log = true }, -- Inscription 1 - [70559] = { questType = 'weekly', log = true }, -- Inscription 2 - [70560] = { questType = 'weekly', log = true }, -- Inscription 3 - [70561] = { questType = 'weekly', log = true }, -- Inscription 4 - [70567] = { questType = 'weekly', log = true }, -- Leatherworking 1 - [70568] = { questType = 'weekly', log = true }, -- Leatherworking 2 - [70569] = { questType = 'weekly', log = true }, -- Leatherworking 3 - [70571] = { questType = 'weekly', log = true }, -- Leatherworking 4 - [70572] = { questType = 'weekly', log = true }, -- Tailoring 1 - [70582] = { questType = 'weekly', log = true }, -- Tailoring 2 - [70586] = { questType = 'weekly', log = true }, -- Tailoring 3 - [70587] = { questType = 'weekly', log = true }, -- Tailoring 4 - [72155] = { questType = 'weekly', log = true }, -- Enchanting 1 - [72172] = { questType = 'weekly', log = true }, -- Enchanting 2 - [72175] = { questType = 'weekly', log = true }, -- Enchanting 3 - [72173] = { questType = 'weekly', log = true }, -- Enchanting 4 - [70233] = { questType = 'weekly', log = true }, -- Blacksmithing 1 - [70234] = { questType = 'weekly', log = true }, -- Blacksmithing 2 - [70235] = { questType = 'weekly', log = true }, -- Blacksmithing 3 - [70211] = { questType = 'weekly', log = true }, -- Blacksmithing 4 - [70540] = { questType = 'weekly', log = true }, -- Engineering 1 - [70545] = { questType = 'weekly', log = true }, -- Engineering 2 - [70557] = { questType = 'weekly', log = true }, -- Engineering 3 - [70539] = { questType = 'weekly', log = true }, -- Engineering 4 - [70562] = { questType = 'weekly', log = true }, -- Jewelcrafting 1 - [70563] = { questType = 'weekly', log = true }, -- Jewelcrafting 2 - [70564] = { questType = 'weekly', log = true }, -- Jewelcrafting 3 - [70565] = { questType = 'weekly', log = true }, -- Jewelcrafting 4 - [70531] = { questType = 'weekly', log = true }, -- Alchemy 1 - [70532] = { questType = 'weekly', log = true }, -- Alchemy 2 - [70533] = { questType = 'weekly', log = true }, -- Alchemy 3 - [70530] = { questType = 'weekly', log = true }, -- Alchemy 4 - }, - knowledge_df_weeklies_loot = { - [66943] = { questType = 'weekly', log = true }, -- Inscription 5 - [66944] = { questType = 'weekly', log = true }, -- Inscription 6 - [66945] = { questType = 'weekly', log = true }, -- Inscription 7 - [72438] = { questType = 'weekly', log = true }, -- Inscription 8 - [66363] = { questType = 'weekly', log = true }, -- Leatherworking 5 - [66364] = { questType = 'weekly', log = true }, -- Leatherworking 6 - [66951] = { questType = 'weekly', log = true }, -- Leatherworking 7 - [72407] = { questType = 'weekly', log = true }, -- Leatherworking 8 - [66899] = { questType = 'weekly', log = true }, -- Tailoring 5 - [66952] = { questType = 'weekly', log = true }, -- Tailoring 6 - [66953] = { questType = 'weekly', log = true }, -- Tailoring 7 - [72410] = { questType = 'weekly', log = true }, -- Tailoring 8 - [66884] = { questType = 'weekly', log = true }, -- Enchanting 5 - [66900] = { questType = 'weekly', log = true }, -- Enchanting 6 - [66935] = { questType = 'weekly', log = true }, -- Enchanting 7 - [72423] = { questType = 'weekly', log = true }, -- Enchanting 8 - [66517] = { questType = 'weekly', log = true }, -- Blacksmithing 5 - [66941] = { questType = 'weekly', log = true }, -- Blacksmithing 6 - [72398] = { questType = 'weekly', log = true }, -- Blacksmithing 7 - [66897] = { questType = 'weekly', log = true }, -- Blacksmithing 8 - [66891] = { questType = 'weekly', log = true }, -- Engineering 5 - [66890] = { questType = 'weekly', log = true }, -- Engineering 6 - [66942] = { questType = 'weekly', log = true }, -- Engineering 7 - [72396] = { questType = 'weekly', log = true }, -- Engineering 8 - [73165] = { questType = 'weekly', log = true }, -- Engineering 9 - [66516] = { questType = 'weekly', log = true }, -- Jewelcrafting 5 - [66949] = { questType = 'weekly', log = true }, -- Jewelcrafting 6 - [66950] = { questType = 'weekly', log = true }, -- Jewelcrafting 7 - [72428] = { questType = 'weekly', log = true }, -- Jewelcrafting 8 - [66937] = { questType = 'weekly', log = true }, -- Alchemy 5 - [66938] = { questType = 'weekly', log = true }, -- Alchemy 6 - [66940] = { questType = 'weekly', log = true }, -- Alchemy 7 - [72427] = { questType = 'weekly', log = true }, -- Alchemy 8 - [70613] = { questType = 'weekly', log = true }, -- Herbalism 5 - [70614] = { questType = 'weekly', log = true }, -- Herbalism 6 - [70615] = { questType = 'weekly', log = true }, -- Herbalism 7 - [70616] = { questType = 'weekly', log = true }, -- Herbalism 8 - --[71970] = {questType = 'weekly', log = true}, -- Herbalism 8 - --[71857] = {questType = 'weekly', log = true}, -- Herbalism 8 - [70620] = { questType = 'weekly', log = true }, -- Skinning 5 - [72159] = { questType = 'weekly', log = true }, -- Skinning 6 - [70619] = { questType = 'weekly', log = true }, -- Skinning 7 - [72158] = { questType = 'weekly', log = true }, -- Skinning 8 - [72157] = { questType = 'weekly', log = true }, -- Mining 5 - [70617] = { questType = 'weekly', log = true }, -- Mining 6 - [70618] = { questType = 'weekly', log = true }, -- Mining 7 - [72156] = { questType = 'weekly', log = true }, -- Mining 8 - --[66936] = {questType = 'weekly', log = true}, -- Mining 8 - [75354] = { questType = 'weekly', log = true }, -- Leatherworking - [75368] = { questType = 'weekly', log = true }, -- Leatherworking - [77945] = { questType = 'weekly', log = true }, -- Leatherworking - [77946] = { questType = 'weekly', log = true }, -- Leatherworking - [75150] = { questType = 'weekly', log = true }, -- Enchanting - [75865] = { questType = 'weekly', log = true }, -- Enchanting - [77910] = { questType = 'weekly', log = true }, -- Enchanting - [77937] = { questType = 'weekly', log = true }, -- Enchanting - [75148] = { questType = 'weekly', log = true }, -- Blacksmithing - [75569] = { questType = 'weekly', log = true }, -- Blacksmithing - [77935] = { questType = 'weekly', log = true }, -- Blacksmithing - [77936] = { questType = 'weekly', log = true }, -- Blacksmithing - [75575] = { questType = 'weekly', log = true }, -- Engineering - [75608] = { questType = 'weekly', log = true }, -- Engineering - [77891] = { questType = 'weekly', log = true }, -- Engineering - [77938] = { questType = 'weekly', log = true }, -- Engineering - [75149] = { questType = 'weekly', log = true }, -- Inscription - [75573] = { questType = 'weekly', log = true }, -- Inscription - [77889] = { questType = 'weekly', log = true }, -- Inscription - [77914] = { questType = 'weekly', log = true }, -- Inscription - [75407] = { questType = 'weekly', log = true }, -- Tailoring - [75600] = { questType = 'weekly', log = true }, -- Tailoring - [77947] = { questType = 'weekly', log = true }, -- Tailoring - [77949] = { questType = 'weekly', log = true }, -- Tailoring - [75362] = { questType = 'weekly', log = true }, -- Jewelcrafting - [75602] = { questType = 'weekly', log = true }, -- Jewelcrafting - [77892] = { questType = 'weekly', log = true }, -- Jewelcrafting - [77912] = { questType = 'weekly', log = true }, -- Jewelcrafting - [75363] = { questType = 'weekly', log = true }, -- Alchemy - [75371] = { questType = 'weekly', log = true }, -- Alchemy - [77932] = { questType = 'weekly', log = true }, -- Alchemy - [77933] = { questType = 'weekly', log = true }, -- Alchemy - }, - knowledge_df_weeklies_order = { - [70589] = { questType = 'weekly', log = true }, -- Blacksmithing 0 - [70591] = { questType = 'weekly', log = true }, -- Engineering 0 - [70592] = { questType = 'weekly', log = true }, -- Inscription 0 - [70593] = { questType = 'weekly', log = true }, -- Jewelcrafting 0 - [70594] = { questType = 'weekly', log = true }, -- Leatherworking 0 - [70595] = { questType = 'weekly', log = true }, -- Tailoring 0 - }, - community_feast = { - [74097] = { questType = 'daily' }, - }, - iskaara_story = { - [72291] = { questType = 'weekly', log = true }, - }, - obsidian_citadel_rares = { - [72127] = { questType = 'daily', name = 'Captain Lancer' }, - [73072] = { questType = 'daily', name = 'Enkine the Voracious' }, - [74067] = { questType = 'daily', name = 'Morchok' }, - [74054] = { questType = 'daily', name = 'Turboris' }, - [74043] = { questType = 'daily', name = 'Char' }, - [74040] = { questType = 'daily', name = 'Battlehorn Pyrhus' }, - [74042] = { questType = 'daily', name = 'Cauldronbreaker Blakor' }, - [74052] = { questType = 'daily', name = 'Rohzor Forgesmash' }, - }, - tyrhold_rares = { - [74055] = { questType = 'daily', name = 'Ancient Protector' }, - }, - iskaara_fishing_dailies = { - [70438] = { questType = 'daily', log = true }, - [70450] = { questType = 'daily', log = true }, - [71191] = { questType = 'daily', log = true }, - [71194] = { questType = 'daily', log = true }, - [72069] = { questType = 'daily', log = true }, - [72075] = { questType = 'daily', log = true }, - - }, - community_feast_weekly = { - [70893] = { questType = 'weekly', log = true }, - }, - dragonbane_keep_siege = { - [70866] = { questType = 'weekly' }, - }, - dragonbane_keep_key = { - [66805] = { questType = 'weekly', log = true }, - [66133] = { questType = 'weekly', log = true }, - }, - dragonbane_keep_weeklies = { - [65842] = { questType = 'weekly', log = true }, - [66103] = { questType = 'weekly', log = true }, - [66308] = { questType = 'weekly', log = true }, - [66321] = { questType = 'weekly', log = true }, - [66326] = { questType = 'weekly', log = true }, - [66445] = { questType = 'weekly', log = true }, - [66449] = { questType = 'weekly', log = true }, - [66633] = { questType = 'weekly', log = true }, - [66926] = { questType = 'weekly', log = true }, - [67051] = { questType = 'weekly', log = true }, - [67099] = { questType = 'weekly', log = true }, - [67142] = { questType = 'weekly', log = true }, - [69918] = { questType = 'weekly', log = true }, - [70848] = { questType = 'weekly', log = true }, - [72447] = { questType = 'weekly', log = true }, - [72448] = { questType = 'weekly', log = true }, - }, - show_your_mettle = { - [70221] = { questType = 'weekly', log = true }, - }, - fish_turnins_df = { - [72828] = { questType = 'weekly', name = '|T1387373:0|t[Scalebelly Mackerel]' }, - [72823] = { questType = 'weekly', name = '|T4554376:0|t[Islefin Dorado]' }, - [72827] = { questType = 'weekly', name = '|T4554372:0|t[Thousandbite Piranha]' }, - [72826] = { questType = 'weekly', name = '|T4539689:0|t[Aileron Seamoth]' }, - [72825] = { questType = 'weekly', name = '|T4539687:0|t[Cerulean Spinefish]' }, - [72824] = { questType = 'weekly', name = '|T4554371:0|t[Temporal Dragonhead]' }, - }, - forbidden_reach_weeklies = { - [72952] = { questType = 'weekly', log = true }, - [73140] = { questType = 'weekly', log = true }, - [73141] = { questType = 'weekly', log = true }, - [73142] = { questType = 'weekly', log = true }, - [73179] = { questType = 'weekly', log = true }, - [73190] = { questType = 'weekly', log = true }, - [73191] = { questType = 'weekly', log = true }, - [73194] = { questType = 'weekly', log = true }, - [73715] = { questType = 'weekly', log = true }, - [74282] = { questType = 'weekly', log = true }, - [74284] = { questType = 'weekly', log = true }, - [74293] = { questType = 'weekly', log = true }, - [74379] = { questType = 'weekly', log = true }, - [75024] = { questType = 'weekly', log = true }, - [75025] = { questType = 'weekly', log = true }, - }, - forbidden_reach_task_picked = { - [74908] = { questType = 'daily', log = true }, -- Dragonscale Expedition - [74909] = { questType = 'daily', log = true }, -- Iskaara Tuskarr - [74910] = { questType = 'daily', log = true }, -- Maruuk Centaur - [74911] = { questType = 'daily', log = true }, -- Valdrakken Akkord - }, - forbidden_reach_tasks = { - [74118] = { questType = 'daily', log = true }, -- Dragonscale Expedition - [74389] = { questType = 'daily', log = true }, -- Dragonscale Expedition - [74119] = { questType = 'daily', log = true }, -- Iskaara Tuskarr - [74391] = { questType = 'daily', log = true }, -- Iskaara Tuskarr - [74117] = { questType = 'daily', log = true }, -- Maruuk Centaur - [74390] = { questType = 'daily', log = true }, -- Maruuk Centaur - [75261] = { questType = 'daily', log = true }, -- Valdrakken Akkord - [75263] = { questType = 'daily', log = true }, -- Valdrakken Akkord - }, - forbidden_reach_elite_wqs = { - [75257] = { questType = 'weekly', log = true }, -- The War Creche - }, - glimerogg_racer_dailies = { - [74514] = { questType = 'weekly', log = true }, -- The Slowest Fan Club - [74515] = { questType = 'weekly', log = true }, -- Snail Mail - [74516] = { questType = 'weekly', log = true }, -- A Snail's Pace - [74517] = { questType = 'weekly', log = true }, -- All Terrain Snail - [74518] = { questType = 'weekly', log = true }, -- Resistance Training - [74519] = { questType = 'weekly', log = true }, -- Good for Goo - [74520] = { questType = 'weekly', log = true }, -- Less Cargo - }, - loamm_niffen_weekly = { - [75665] = { questType = 'weekly', log = true }, - }, - researchers_under_fire_weekly = { - [75627] = { questType = 'weekly' }, - [75628] = { questType = 'weekly' }, - [75629] = { questType = 'weekly' }, - [75630] = { questType = 'weekly' }, - }, - zc_wb_wq = { - [74892] = { questType = 'weekly', log = true }, -- Zaqali Elders - }, - dig_maps_weeklies = { - [75747] = { questType = 'weekly' }, - [75748] = { questType = 'weekly' }, - [75749] = { questType = 'weekly' }, - }, - dig_maps_received_weekly = { - [76077] = { questType = 'weekly' }, - [75665] = { questType = 'weekly' }, - }, - proven_weekly = { - [72166] = { questType = 'weekly', log = true }, - [72167] = { questType = 'weekly', log = true }, - [72168] = { questType = 'weekly', log = true }, - [72169] = { questType = 'weekly', log = true }, - [72170] = { questType = 'weekly', log = true }, - [72171] = { questType = 'weekly', log = true }, - }, - fyrak_assault = { - [75467] = { questType = 'weekly' }, - }, - zyrak_cavern_zone_events = { - [75664] = { questType = 'weekly', forceUpdate = true }, - [75156] = { questType = 'weekly', forceUpdate = true }, - [75471] = { questType = 'weekly', forceUpdate = true }, - [75222] = { questType = 'weekly', forceUpdate = true }, - [75370] = { questType = 'weekly', forceUpdate = true }, - [75441] = { questType = 'weekly', forceUpdate = true }, - [75611] = { questType = 'weekly', forceUpdate = true }, - [75624] = { questType = 'weekly', forceUpdate = true }, - [75612] = { questType = 'weekly', forceUpdate = true }, - [75454] = { questType = 'weekly', forceUpdate = true }, - [75455] = { questType = 'weekly', forceUpdate = true }, - [75450] = { questType = 'weekly', forceUpdate = true }, - [75451] = { questType = 'weekly', forceUpdate = true }, - [75461] = { questType = 'weekly', forceUpdate = true }, - [74352] = { questType = 'weekly', forceUpdate = true }, - [75478] = { questType = 'weekly', forceUpdate = true }, - [75494] = { questType = 'weekly', forceUpdate = true }, - [75705] = { questType = 'weekly', forceUpdate = true }, - }, - time_rift = { - [77236] = { questType = 'weekly', log = true }, - }, - time_rift_pod = { - [77836] = { questType = 'weekly' } - }, - dreamsurge_weekly = { - [77251] = { questType = 'weekly', log = true }, - }, - ed_wb_wq = { - [76367] = { questType = 'weekly', log = true }, -- Aurostor - }, - dream_wardens_weekly = { - [78444] = { questType = 'weekly', log = true }, - }, - superbloom = { - [78319] = { questType = 'weekly', log = true }, - }, - dream_shipments = { - [78427] = { questType = 'weekly', log = true }, - [78428] = { questType = 'weekly', log = true }, - }, - anniversary_wb = { - [47461] = { questType = 'daily', name = "Kazzak" }, -- Kazzak - [47462] = { questType = 'daily', name = "Azuregos" }, -- Azuregos - [47463] = { questType = 'daily', name = "Dragons of Nightmare" }, -- Dragons of Nightmare - [60214] = { questType = 'daily', name = "Doomwalker" }, -- Doomwalker - }, - big_dig = { - [79226] = { questType = 'weekly', warband = true, log = true }, - }, - - -- 11.0 The War Within - -- Weekly World Activities - tww_world_boss = { -- PLACEHOLDER: wrong quest IDs - [999990] = { questType = 'weekly' }, -- Kordac, the Dormant Protector - [83466] = { questType = 'weekly' }, -- Aggregation of Horrors - [83467] = { questType = 'weekly' }, -- Shurrai, Atrocity of the Undersea - [999993] = { questType = 'weekly' }, -- Orta, the Broken Mountain - }, - worldsoul_weekly = { - [82452] = { questType = 'weekly', log = true }, -- Worldsoul: World Quests - [82453] = { questType = 'weekly', log = true }, -- Worldsoul: Encore! - [82458] = { questType = 'weekly', log = true }, -- Worldsoul: Renown - [82482] = { questType = 'weekly', log = true }, -- Worldsoul: Snuffling - [82483] = { questType = 'weekly', log = true }, -- Worldsoul: Spreading the Light - [82485] = { questType = 'weekly', log = true }, -- Worldsoul: Cinderbrew Meadery - [82486] = { questType = 'weekly', log = true }, -- Worldsoul: The Rookery - [82487] = { questType = 'weekly', log = true }, -- Worldsoul: The Stonevault - [82488] = { questType = 'weekly', log = true }, -- Worldsoul: Darkflame Cleft - [82489] = { questType = 'weekly', log = true }, -- Worldsoul: The Dawnbreaker - [82490] = { questType = 'weekly', log = true }, -- Worldsoul: Priory of the Sacred Flame - [82491] = { questType = 'weekly', log = true }, -- Worldsoul: Ara-Kara, City of Echoes - [82492] = { questType = 'weekly', log = true }, -- Worldsoul: City of Threads - [82493] = { questType = 'weekly', log = true }, -- Worldsoul: The Dawnbreaker - [82494] = { questType = 'weekly', log = true }, -- Worldsoul: Ara-Kara, City of Echoes - [82495] = { questType = 'weekly', log = true }, -- Worldsoul: Cinderbrew Meadery - [82496] = { questType = 'weekly', log = true }, -- Worldsoul: City of Threads - [82497] = { questType = 'weekly', log = true }, -- Worldsoul: The Stonevault - [82498] = { questType = 'weekly', log = true }, -- Worldsoul: Darkflame Cleft - [82499] = { questType = 'weekly', log = true }, -- Worldsoul: Priory of the Sacred Flame - [82500] = { questType = 'weekly', log = true }, -- Worldsoul: The Rookery - [82501] = { questType = 'weekly', log = true }, -- Worldsoul: The Dawnbreaker - [82502] = { questType = 'weekly', log = true }, -- Worldsoul: Ara-Kara, City of Echoes - [82503] = { questType = 'weekly', log = true }, -- Worldsoul: Cinderbrew Meadery - [82504] = { questType = 'weekly', log = true }, -- Worldsoul: City of Threads - [82505] = { questType = 'weekly', log = true }, -- Worldsoul: The Stonevault - [82506] = { questType = 'weekly', log = true }, -- Worldsoul: Darkflame Cleft - [82507] = { questType = 'weekly', log = true }, -- Worldsoul: Priory of the Sacred Flame - [82508] = { questType = 'weekly', log = true }, -- Worldsoul: The Rookery - [82509] = { questType = 'weekly', log = true }, -- Worldsoul: Nerub-ar Palace - [82510] = { questType = 'weekly', log = true }, -- Worldsoul: Nerub-ar Palace - [82511] = { questType = 'weekly', log = true }, -- Worldsoul: Awakening Machine - [82512] = { questType = 'weekly', log = true }, -- Worldsoul: World Boss - [82516] = { questType = 'weekly', log = true }, -- Worldsoul: Forging a Pact - [82659] = { questType = 'weekly', log = true }, -- Worldsoul: Nerub-ar Palace - -- [86476] = { questType = 'weekly', log = true }, -- Worldsoul Memory: Early Cartel Wars - -- [86478] = { questType = 'weekly', log = true }, -- Worldsoul Memory: Kaja'mite Contact - [87417] = { questType = 'weekly', log = true }, -- Worldsoul: Dungeons - [87419] = { questType = 'weekly', log = true }, -- Worldsoul: Delves - [87422] = { questType = 'weekly', log = true }, -- Worldsoul: Undermine World Quests - [87423] = { questType = 'weekly', log = true }, -- Worldsoul: Undermine Explorer - [87424] = { questType = 'weekly', log = true }, -- Worldsoul: World Bosses - [89502] = { questType = 'weekly', log = true }, -- Worldsoul: Nightfall - [89514] = { questType = 'weekly', log = true }, -- Worldsoul: Horrific Visions Revisited - [91052] = { questType = 'weekly', log = true }, -- Worldsoul: Overcharged Delves - [91855] = { questType = 'weekly', log = true }, -- Worldsoul: K'aresh World Quests - - [82746] = { questType = 'weekly', log = true }, -- Delves: Breaking Tough to Loot Stuff - [82712] = { questType = 'weekly', log = true }, -- Delves: Trouble Up and Down Khaz Algar - [82711] = { questType = 'weekly', log = true }, -- Delves: Lost and Found - [82709] = { questType = 'weekly', log = true }, -- Delves: Percussive Archaeology - [82706] = { questType = 'weekly', log = true }, -- Delves: Khaz Algar Research - [82707] = { questType = 'weekly', log = true }, -- Delves: Earthen Defense - [82708] = { questType = 'weekly', log = true }, -- Delves: Nerubian Menace - [82678] = { questType = 'weekly', log = true }, -- Archives: The First Disc - [82679] = { questType = 'weekly', log = true }, -- Archives: Seeking History - }, - weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later - }, - archaic_cypher_key = { - [84370] = { questType = 'weekly', warband = true, log = true }, -- The Key to Success - }, - the_theater_troupe = { - [83240] = { questType = 'weekly', warband = true, log = true }, -- The Theater Troupe - }, - rollin_down_in_the_deeps = { - [82946] = { questType = 'weekly', warband = true, log = true }, -- Rollin' Down in the Deeps (Digging) - }, - gearing_up_for_trouble = { - [83333] = { questType = 'weekly', log = true }, -- Gearing Up for Trouble (Awakening the Machine Weekly) - }, - awakening_the_machine = { - [84642] = { questType = 'weekly', warband = true, name = "1st Cache" }, -- cache 1 - [84644] = { questType = 'weekly', warband = true, name = "2nd Cache" }, -- cache 2 - [84646] = { questType = 'weekly', warband = true, name = "3rd Cache" }, -- cache 3 - [84647] = { questType = 'weekly', warband = true, name = "4th Cache" }, -- cache 4 - }, - spreading_the_light = { - [76586] = { questType = 'weekly', warband = true, log = true }, -- Hallowfall Event in Dunelle's Kindness - }, - lesser_keyflame_weeklies = { - [76169] = { questType = 'weekly', warband = true, log = true }, -- Glow in the Dark - [76394] = { questType = 'weekly', warband = true, log = true }, -- Shadows of Flavor - [76600] = { questType = 'weekly', warband = true, log = true }, -- Right Between the Gyro-Optics - [76733] = { questType = 'weekly', warband = true, log = true }, -- Tater Trawl - [76997] = { questType = 'weekly', warband = true, log = true }, -- Lost in Shadows - [78656] = { questType = 'weekly', warband = true, log = true }, -- Hose It Down - [78915] = { questType = 'weekly', warband = true, log = true }, -- Squashing the Threat - [78933] = { questType = 'weekly', warband = true, log = true }, -- The Sweet Eclipse - [78972] = { questType = 'weekly', warband = true, log = true }, -- Harvest Havoc - [79158] = { questType = 'weekly', warband = true, log = true }, -- Seeds of Salvation - [79173] = { questType = 'weekly', warband = true, log = true }, -- Supply the Effort - [79216] = { questType = 'weekly', warband = true, log = true }, -- Web of Manipulation - [79346] = { questType = 'weekly', warband = true, log = true }, -- Chew On That - [80004] = { questType = 'weekly', warband = true, log = true }, -- Crab Grab - [80562] = { questType = 'weekly', warband = true, log = true }, -- Blossoming Delight - [81574] = { questType = 'weekly', warband = true, log = true }, -- Sporadic Growth - [81632] = { questType = 'weekly', warband = true, log = true }, -- Lizard Looters - }, - greater_keyflame_weeklies = { -- not added to default categories because shit rewards - [78590] = { questType = 'weekly', log = true }, -- Cutting Edge - [78657] = { questType = 'weekly', log = true }, -- The Midnight Sentry - [79329] = { questType = 'weekly', log = true }, -- Glowing Harvest - [79380] = { questType = 'weekly', log = true }, -- Bog Beast Banishment - [79469] = { questType = 'weekly', log = true }, -- Lurking Below - [79470] = { questType = 'weekly', log = true }, -- Waters of War - [79471] = { questType = 'weekly', log = true }, -- Bleak Sand - }, - severed_threads_pact_chosen = { - [80544] = { questType = 'weekly', warband = true, log = true }, -- Eyes of the Weaver - }, - severed_threads_pact_weekly = { - [80670] = { questType = 'weekly', warband = true, log = true }, -- Eyes of the Weaver - [80671] = { questType = 'weekly', warband = true, log = true }, -- Blade of the General - [80672] = { questType = 'weekly', warband = true, log = true }, -- Hand of the Vizier - }, - weekly_delve_reputation = { - [83317] = { questType = 'weekly', warband = 'unique', name = 'Council of Dornogal' }, - [83318] = { questType = 'weekly', warband = 'unique', name = 'Assembly of the Deeps' }, - [83320] = { questType = 'weekly', warband = 'unique', name = 'Hallowfall Arathi' }, - [83319] = { questType = 'weekly', warband = 'unique', name = 'Severed Threads' }, - }, - weekly_coffer_keys = { - [84736] = { questType = 'weekly' }, - [84737] = { questType = 'weekly' }, - [84738] = { questType = 'weekly' }, - [84739] = { questType = 'weekly' }, - - }, - - -- Weekly Rares - isle_of_dorne_rares = { - [84037] = { questType = 'weekly', warband = true, name = 'Tephratennae' }, -- (daily: 81923) - [84031] = { questType = 'weekly', warband = true, name = 'Kronolith, Might of the Mountain' }, -- (daily: 81902) - [84032] = { questType = 'weekly', warband = true, name = 'Shallowshell the Clacker' }, -- (daily: 81903) - [84036] = { questType = 'weekly', warband = true, name = 'Clawbreaker K\'zithix' }, -- (daily: 81920) - [84029] = { questType = 'weekly', warband = true, name = 'Escaped Cutthroat' }, -- (daily: 81907) - [84039] = { questType = 'weekly', warband = true, name = 'Matriarch Charfuria' }, -- (daily: 81921) - [84030] = { questType = 'weekly', warband = true, name = 'Tempest Lord Incarnus' }, -- (daily: 81901) - [84028] = { questType = 'weekly', warband = true, name = 'Gar\'loc' }, -- (daily: 81899) - [84033] = { questType = 'weekly', warband = true, name = 'Twice-Stinger the Wretched' }, -- (daily: 81904) - [84034] = { questType = 'weekly', warband = true, name = 'Flamekeeper Graz' }, -- (daily: 81905) - [84026] = { questType = 'weekly', warband = true, name = 'Plaguehart' }, -- (daily: 81897) - [84038] = { questType = 'weekly', warband = true, name = 'Sweetspark the Oozeful' }, -- (daily: 81922) - }, - ringing_deeps_rares = { - [84046] = { questType = 'weekly', warband = true, name = 'Automaxor' }, -- (daily: 81674) - [84044] = { questType = 'weekly', warband = true, name = 'Charmonger' }, -- (daily: 81562) - [84042] = { questType = 'weekly', warband = true, name = 'Cragmund' }, -- (daily: 80560) - [84041] = { questType = 'weekly', warband = true, name = 'Zilthara' }, -- (daily: 80506) - [84045] = { questType = 'weekly', warband = true, name = 'Coalesced Monstrosity' }, -- (daily: 81511) - [84040] = { questType = 'weekly', warband = true, name = 'Terror of the Forge' }, -- (daily: 80507) - [84047] = { questType = 'weekly', warband = true, name = 'Kelpmire' }, -- (daily: 81485) - [84043] = { questType = 'weekly', warband = true, name = 'Trungal' }, -- (daily: 80574) - [84049] = { questType = 'weekly', warband = true, name = 'Spore-infused Shalewing' }, -- (daily: 81652) - [84048] = { questType = 'weekly', warband = true, name = 'Hungerer of the Deeps' }, -- (daily: 81648) - [84050] = { questType = 'weekly', warband = true, name = 'Disturbed Earthgorger' }, -- (daily: 80003) - }, - hallowfall_rares = { - [84063] = { questType = 'weekly', warband = true, name = 'Lytfang the Lost' }, -- (daily: 81756) - [84051] = { questType = 'weekly', warband = true, name = 'Moth\'ethk' }, -- (daily: 82557) - [84064] = { questType = 'weekly', warband = true, name = 'The Perchfather' }, -- (daily: 81791) - [84061] = { questType = 'weekly', warband = true, name = 'The Taskmaker' }, -- (daily: 80009) - [84066] = { questType = 'weekly', warband = true, name = 'Strength of Beledar' }, -- (daily: 81849) - [84060] = { questType = 'weekly', warband = true, name = 'Murkspike' }, -- (daily: 82565) - [84053] = { questType = 'weekly', warband = true, name = 'Deathpetal' }, -- (daily: 82559) - [84056] = { questType = 'weekly', warband = true, name = 'Duskshadow' }, -- (daily: 82562) - [84067] = { questType = 'weekly', warband = true, name = 'Sir Alastair Purefire' }, -- (daily: 81853) - [84065] = { questType = 'weekly', warband = true, name = 'Horror of the Shallows' }, -- (daily: 81836) - [84062] = { questType = 'weekly', warband = true, name = 'Sloshmuck' }, -- (daily: 79271) - [84054] = { questType = 'weekly', warband = true, name = 'Croakit' }, -- (daily: 82560) - [84068] = { questType = 'weekly', warband = true, name = 'Pride of Beledar' }, -- (daily: 81882) - [84052] = { questType = 'weekly', warband = true, name = 'Crazed Cabbage Smacker' }, -- (daily: 82558) - [84055] = { questType = 'weekly', warband = true, name = 'Toadstomper' }, -- (daily: 82561) - [84059] = { questType = 'weekly', warband = true, name = 'Finclaw Bloodtide' }, -- (daily: 82564) - [84058] = { questType = 'weekly', warband = true, name = 'Ravageant' }, -- (daily: 82566) - [84057] = { questType = 'weekly', warband = true, name = 'Parasidious' }, -- (daily: 82563) - }, - azj_kahet_rares = { - [84071] = { questType = 'weekly', warband = true, name = 'Kaheti Silk Hauler' }, -- (daily: 81702) - [84072] = { questType = 'weekly', warband = true, name = 'XT-Minecrusher 8700' }, -- (daily: 81703) - [84075] = { questType = 'weekly', warband = true, name = 'Maddened Siegebomber' }, -- (daily: 81706) - [84073] = { questType = 'weekly', warband = true, name = 'Cha\'tak' }, -- (daily: 81704) - [84076] = { questType = 'weekly', warband = true, name = 'Enduring Gutterface' }, -- (daily: 81707) - [84074] = { questType = 'weekly', warband = true, name = 'Monstrous Lasharoth' }, -- (daily: 81705) - [84080] = { questType = 'weekly', warband = true, name = 'Umbraclaw Matra' }, -- (daily: 82037) - [84082] = { questType = 'weekly', warband = true, name = 'Skirmisher Sa\'zryk' }, -- (daily: 82078) - [84081] = { questType = 'weekly', warband = true, name = 'Deepcrawler Tx\'kesh' }, -- (daily: 82077) - [84079] = { questType = 'weekly', warband = true, name = 'Harvester Qixt' }, -- (daily: 82036) - [84078] = { questType = 'weekly', warband = true, name = 'The Oozekhan' }, -- (daily: 82035) - [84077] = { questType = 'weekly', warband = true, name = 'Jix\'ak the Crazed' }, -- (daily: 82034) - [84069] = { questType = 'weekly', warband = true, name = 'The Groundskeeper' }, -- (daily: 81634) - [84070] = { questType = 'weekly', warband = true, name = 'Xishorr' }, -- (daily: 81701) - }, - one_time_reputation_rares = { - [85158] = { questType = 'weekly', warband = true, name = 'Alunira', achievementID = 40435, criteriaID = 68225 }, -- Isle of Dorne (daily: 82196) - [85160] = { questType = 'weekly', warband = true, name = 'Kereke', achievementID = 40435, criteriaID = 68227 }, -- Isle of Dorne (daily: 82204) - [85161] = { questType = 'weekly', warband = true, name = 'Zovex', achievementID = 40435, criteriaID = 68226 }, -- Isle of Dorne (daily: 82203) - [85159] = { questType = 'weekly', warband = true, name = 'Rotfist', achievementID = 40435, criteriaID = 68228 }, -- Isle of Dorne (daily: 82205) - [85162] = { questType = 'weekly', warband = true, name = 'Deepflayer Broodmother', achievementID = 40837, criteriaID = 69636 }, -- Ringing Deeps (daily: 80536) - [85163] = { questType = 'weekly', warband = true, name = 'Lurker of the Deeps', achievementID = 40837, criteriaID = 69637 }, -- Ringing Deeps (daily: 81633) - [85164] = { questType = 'weekly', warband = true, name = 'Beledar\'s Spawn', achievementID = 40851, criteriaID = 69716 }, -- Hallowfall (daily: 81763) - [85165] = { questType = 'weekly', warband = true, name = 'Deathtide', achievementID = 40851, criteriaID = 69717 }, -- Hallowfall (daily: 81880) - [85167] = { questType = 'weekly', warband = true, name = 'The One Left' }, -- Azj-kahet (daily: 82290) - [85166] = { questType = 'weekly', warband = true, name = 'Tka\'ktath' }, -- Azj-kahet (daily: 82289) - }, - undermine_rares = { - [84917] = { questType = 'weekly', warband = true, name = 'Scrapbeak' }, -- (daily: 81702) - [84918] = { questType = 'weekly', warband = true, name = 'Ratspit' }, -- (daily: 81703) - [84919] = { questType = 'weekly', warband = true, name = 'Tally Doublespeak' }, -- (daily: 81706) - [84920] = { questType = 'weekly', warband = true, name = 'V.V. Goosworth and Slimesby' }, -- (daily: 81704) - [84921] = { questType = 'weekly', warband = true, name = 'Thwack' }, -- (daily: 81707) - [84922] = { questType = 'weekly', warband = true, name = 'S.A.L.' }, -- (daily: 81705) - [84926] = { questType = 'weekly', warband = true, name = 'Nitro' }, -- (daily: 81705) - [84927] = { questType = 'weekly', warband = true, name = 'Candy Stickemup' }, -- (daily: 82037) - [84928] = { questType = 'weekly', warband = true, name = 'Grimewick' }, -- (daily: 82078) - [85004] = { questType = 'weekly', warband = true, name = 'Swigs Farsight' }, -- (daily: 82077) - [84877] = { questType = 'weekly', warband = true, name = 'Ephemeral Agent Lathyd' }, -- (daily: 82036) - [84884] = { questType = 'weekly', warband = true, name = 'The Junk-Wall' }, -- (daily: 82035) - [84895] = { questType = 'weekly', warband = true, name = 'Slugger the Smart' }, -- (daily: 82034) - [84907] = { questType = 'weekly', warband = true, name = 'Chief Foreman Gutso' }, -- (daily: 81634) - [84911] = { questType = 'weekly', warband = true, name = 'Flyboy Snooty' }, -- (daily: 81701) - [86298] = { questType = 'weekly', warband = true, name = 'M.A.G.N.O.' }, -- (daily: 81701) - [86307] = { questType = 'weekly', warband = true, name = 'Giovante' }, -- (daily: 81701) - [86431] = { questType = 'weekly', warband = true, name = 'Scrapchewer' }, -- (daily: 81701) - [86428] = { questType = 'weekly', warband = true, name = 'Volstrike the Charged' }, -- (daily: 81701) - }, - - -- Professions - knowledge_tww_treasures = { - [83253] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225234 }, -- Alchemical Sediment - [83255] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy', item = 225235 }, -- Deepstone Crucible - [83256] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225233 }, -- Dense Bladestone - [83257] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing', item = 225232 }, -- Coreway Billet - [83258] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225231 }, -- Powdered Fulgurance - [83259] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting', item = 225230 }, -- Crystalline Repository - [83260] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225228 }, -- Rust-Locked Mechanism - [83261] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering', item = 225229 }, -- Earthen Induction Coil - [83264] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225226 }, -- Striated Inkstone - [83262] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription', item = 225227 }, -- Wax-sealed Records - [83265] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225224 }, -- Diaphanous Gem Shards - [83266] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting', item = 225225 }, -- Deepstone Fragment - [83268] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225222 }, -- Stone-Leather Swatch - [83267] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking', item = 225223 }, -- Sturdy Nerubian Carapace - [83270] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225220 }, -- Chitin Needle - [83269] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring', item = 225221 }, -- Spool of Webweave - }, - knowledge_tww_treatise = { - [83725] = { questType = 'weekly', skillLineID = 171, profession = 'Alchemy' }, - [83726] = { questType = 'weekly', skillLineID = 164, profession = 'Blacksmithing' }, - [83727] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, - [83728] = { questType = 'weekly', skillLineID = 202, profession = 'Engineering' }, - [83730] = { questType = 'weekly', skillLineID = 773, profession = 'Inscription' }, - [83731] = { questType = 'weekly', skillLineID = 755, profession = 'Jewelcrafting' }, - [83732] = { questType = 'weekly', skillLineID = 165, profession = 'Leatherworking' }, - [83735] = { questType = 'weekly', skillLineID = 197, profession = 'Tailoring' }, - [83729] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, - [83733] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, - [83734] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, - }, - knowledge_tww_gather = { - [81416] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 1 - [81417] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 2 - [81418] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 3 - [81419] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 4 - [81420] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Petal 5 - [81421] = { questType = 'weekly', skillLineID = 182, profession = 'Herbalism' }, -- Deepgrove Rose - - [83050] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 1 - [83051] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 2 - [83052] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 3 - [83053] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 4 - [83054] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Slab of Slate 5 - [83049] = { questType = 'weekly', skillLineID = 186, profession = 'Mining' }, -- Erosion Polished Slate - - [81459] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 1 - [81460] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 2 - [81461] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 3 - [81462] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 4 - [81463] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Toughened Tempest Pelt 5 - [81464] = { questType = 'weekly', skillLineID = 393, profession = 'Skinning' }, -- Abyssal Fur - - [84290] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 1 - [84291] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 2 - [84292] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 3 - [84293] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 4 - [84294] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Fleeting Arcane Manifestation 5 - [84295] = { questType = 'weekly', skillLineID = 333, profession = 'Enchanting' }, -- Gleaming Telluric Crystal - }, - knowledge_tww_weeklies_quest = { - [84133] = { questType = 'weekly', log = true }, -- Alchemy - [84127] = { questType = 'weekly', log = true }, -- Blacksmithing - - [84085] = { questType = 'weekly', log = true }, --Enchanting - [84086] = { questType = 'weekly', log = true }, --Enchanting - [84134] = { questType = 'weekly', log = true }, --Enchanting - [84084] = { questType = 'weekly', log = true }, --Enchanting - - [84128] = { questType = 'weekly', log = true }, -- Engineering - [84129] = { questType = 'weekly', log = true }, -- Inscription - [84130] = { questType = 'weekly', log = true }, -- Jewelcrafting - [84131] = { questType = 'weekly', log = true }, -- Leatherworking - [84132] = { questType = 'weekly', log = true }, -- Tailoring - - [82916] = { questType = 'weekly', log = true }, -- Herbalism - [82958] = { questType = 'weekly', log = true }, -- Herbalism - [82962] = { questType = 'weekly', log = true }, -- Herbalism - [82965] = { questType = 'weekly', log = true }, -- Herbalism - [82970] = { questType = 'weekly', log = true }, -- Herbalism - - [83102] = { questType = 'weekly', log = true }, -- Mining - [83103] = { questType = 'weekly', log = true }, -- Mining - [83104] = { questType = 'weekly', log = true }, -- Mining - [83106] = { questType = 'weekly', log = true }, -- Mining - - [82992] = { questType = 'weekly', log = true }, -- Skinning - [82993] = { questType = 'weekly', log = true }, -- Skinning - [83097] = { questType = 'weekly', log = true }, -- Skinning - [83098] = { questType = 'weekly', log = true }, -- Skinning - }, - - -- 11.1 - undermine_weeklies = { - [85869] = { questType = 'weekly', log = true }, - [86775] = { questType = 'weekly', log = true }, - [85879] = { questType = 'weekly', log = true }, - - [85553] = { questType = 'weekly', log = true }, - [85554] = { questType = 'weekly', log = true }, - [85913] = { questType = 'weekly', log = true }, - [85914] = { questType = 'weekly', log = true }, - [85944] = { questType = 'weekly', log = true }, - [85945] = { questType = 'weekly', log = true }, - [85960] = { questType = 'weekly', log = true }, - [85962] = { questType = 'weekly', log = true }, - [86177] = { questType = 'weekly', log = true }, - [86178] = { questType = 'weekly', log = true }, - [86179] = { questType = 'weekly', log = true }, - [86180] = { questType = 'weekly', log = true }, - }, - undermine_lieutenants_mythic = { - [88860] = { questType = 'weekly', name = "Gorbo" }, - [88868] = { questType = 'weekly', name = "Trashmaster Blazedump" }, - [88847] = { questType = 'weekly', name = "Skiggy Muckheimer" }, - [88832] = { questType = 'weekly', name = "Scraps" }, - [88843] = { questType = 'weekly', name = "King Flamespite" }, - [88839] = { questType = 'weekly', name = "Professor Boomspark" }, - }, - weekly_bounti_map = { - [86371] = {questType = 'weekly'} - }, - nightfall_weekly = { - [89295] = {questType = 'weekly'} - }, - saltherils_soiree = { - [90573] = {questType = 'weekly', warband = true, log = true}, - [90574] = {questType = 'weekly', warband = true, log = true}, - [90575] = {questType = 'weekly', warband = true, log = true}, - [90576] = {questType = 'weekly', warband = true, log = true}, - }, - abundance = { - [89507] = {questType = 'weekly', warband = true, log = true}, - }, - lost_legends = { - [88993] = {questType = 'weekly', warband = true, log = true}, - [88994] = {questType = 'weekly', warband = true, log = true}, - [88995] = {questType = 'weekly', warband = true, log = true}, - [88996] = {questType = 'weekly', warband = true, log = true}, - [88997] = {questType = 'weekly', warband = true, log = true}, - [88998] = {questType = 'weekly', warband = true, log = true}, - -- [89268] = {questType = 'weekly', warband = true, log = true}, - }, - stormarion_assault = { - [90962] = {questType = 'weekly', warband = true, log = true}, - }, - special_assignments = { - [92139] = {questType = 'weekly', warband = true, log = true}, - [92145] = {questType = 'weekly', warband = true, log = true}, - [93244] = {questType = 'weekly', warband = true, log = true}, - }, - -- World Boss - world_boss = { - [92560] = { questType = 'weekly', log = true }, -- Lu'ashal - [92123] = { questType = 'weekly', log = true }, -- Cragpine's Treevenge - [92034] = { questType = 'weekly', log = true }, -- Thorm'belan - [92636] = { questType = 'weekly', log = true }, -- Predaxas - }, + -- General Weeklies (previous expansion quests get deprecated so we replace these IDs instead of adding new ones) + weekend_event = { + [83345] = { questType = "weekly", log = true }, -- Battleground Event: A Call to Battle + [83347] = { questType = "weekly", log = true }, -- Mythic Dungeon Event: Emissary of War + [83357] = { questType = "weekly", log = true }, -- Pet Battle Event: The Very Best + [83358] = { questType = "weekly", log = true }, -- Arena Event: The Arena Calls + [83366] = { questType = "weekly", log = true }, -- World Quests: The World Awaits + [83359] = { questType = "weekly", log = true }, -- A Shattered Path Through Time + [83362] = { questType = "weekly", log = true }, -- A Shrouded Path Through Time + [83365] = { questType = "weekly", log = true }, -- A Frozen Path Through Time + [83364] = { questType = "weekly", log = true }, -- A Savage Path Through Time + }, + pvp_weekly = { + [80184] = { questType = "weekly", log = true }, -- Preserving in Battle + [80185] = { questType = "weekly", log = true }, -- Preserving Solo + [80186] = { questType = "weekly", log = true }, -- Preserving in War + [80187] = { questType = "weekly", log = true }, -- Preserving in Skirmishes + [80188] = { questType = "weekly", log = true }, -- Preserving in Arenas + [80189] = { questType = "weekly", log = true }, -- Preserving Teamwork + }, + pvp_sparks = { + [81793] = { questType = "weekly", log = true }, -- Sparks of War: Isle of Dorn + [81794] = { questType = "weekly", log = true }, -- Sparks of War: The Ringing Deeps + [81795] = { questType = "weekly", log = true }, -- Sparks of War: Hallowfall + [81796] = { questType = "weekly", log = true }, -- Sparks of War: Azj-Kahet + }, + dungeon_weekly = { + [83432] = { questType = "weekly", warband = true, log = true }, -- The Rookery + [83436] = { questType = "weekly", warband = true, log = true }, -- Cinderbrew Meadery + [83443] = { questType = "weekly", warband = true, log = true }, -- Darkflame Cleft + [83457] = { questType = "weekly", warband = true, log = true }, -- The Stonevault + [83458] = { questType = "weekly", warband = true, log = true }, -- Priory of the Sacred Flame + [83459] = { questType = "weekly", warband = true, log = true }, -- The Dawnbreaker + [83465] = { questType = "weekly", warband = true, log = true }, -- Ara-Kara, City of Echoes + [83469] = { questType = "weekly", warband = true, log = true }, -- City of Threads + }, + + -- 9.0 Shadowlands + maw_dailies = { + [60732] = { questType = "daily", log = true }, + [61334] = { questType = "daily", log = true }, + [62239] = { questType = "daily", log = true }, + [63031] = { questType = "daily", log = true }, + [63038] = { questType = "daily", log = true }, + [63039] = { questType = "daily", log = true }, + [63040] = { questType = "daily", log = true }, + [63043] = { questType = "daily", log = true }, + [63045] = { questType = "daily", log = true }, + [63047] = { questType = "daily", log = true }, + [63050] = { questType = "daily", log = true }, + [63062] = { questType = "daily", log = true }, + [63069] = { questType = "daily", log = true }, + [63072] = { questType = "daily", log = true }, + [63100] = { questType = "daily", log = true }, + [63179] = { questType = "daily", log = true }, + [60622] = { questType = "weekly", log = true }, + [60646] = { questType = "weekly", log = true }, + [60762] = { questType = "weekly", log = true }, + [60775] = { questType = "weekly", log = true }, + [60902] = { questType = "weekly", log = true }, + [61075] = { questType = "weekly", log = true }, + [61079] = { questType = "weekly", log = true }, + [61088] = { questType = "weekly", log = true }, + [61103] = { questType = "weekly", log = true }, + [61104] = { questType = "weekly", log = true }, + [61765] = { questType = "weekly", log = true }, + [62214] = { questType = "weekly", log = true }, + [62234] = { questType = "weekly", log = true }, + [63206] = { questType = "weekly", log = true }, + }, + transport_network = { + -- Kyrian + -- Venthyr + -- Night Fae + [62614] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = "daily", log = true }, + [62615] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = "daily", log = true }, + [62611] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = "daily", log = true }, + [62610] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = "daily", log = true }, + [62606] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = "daily", log = true }, + [62608] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = "daily", log = true }, + [60175] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = "daily", log = true }, + [62607] = { covenant = 3, sanctum = 2, minSanctumTier = 1, questType = "daily", log = true }, + [62453] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = "daily", log = true }, + [62296] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = "daily", log = true }, + [60153] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = "daily", log = true }, + [62382] = { covenant = 3, sanctum = 2, minSanctumTier = 2, questType = "daily", log = true }, + [62263] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = "daily", log = true }, + [62459] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = "daily", log = true }, + [62466] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = "daily", log = true }, + [60188] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = "daily", log = true }, + [62465] = { covenant = 3, sanctum = 2, minSanctumTier = 3, questType = "daily", log = true }, + }, + korthia_dailies = { + [63775] = { questType = "daily", log = true }, + [63776] = { questType = "daily", log = true }, + [63777] = { questType = "daily", log = true }, + [63778] = { questType = "daily", log = true }, + [63779] = { questType = "daily", log = true }, + [63780] = { questType = "daily", log = true }, + [63781] = { questType = "daily", log = true }, + [63782] = { questType = "daily", log = true }, + [63783] = { questType = "daily", log = true }, + [63784] = { questType = "daily", log = true }, + [63785] = { questType = "daily", log = true }, + [63786] = { questType = "daily", log = true }, + [63787] = { questType = "daily", log = true }, + [63788] = { questType = "daily", log = true }, + [63789] = { questType = "daily", log = true }, + [63790] = { questType = "daily", log = true }, + [63791] = { questType = "daily", log = true }, + [63792] = { questType = "daily", log = true }, + [63793] = { questType = "daily", log = true }, + [63794] = { questType = "daily", log = true }, + [63934] = { questType = "daily", log = true }, + [63935] = { questType = "daily", log = true }, + [63936] = { questType = "daily", log = true }, + [63937] = { questType = "daily", log = true }, + [63950] = { questType = "daily", log = true }, + [63954] = { questType = "daily", log = true }, + [63955] = { questType = "daily", log = true }, + [63956] = { questType = "daily", log = true }, + [63957] = { questType = "daily", log = true }, + [63958] = { questType = "daily", log = true }, + [63959] = { questType = "daily", log = true }, + [63960] = { questType = "daily", log = true }, + [63961] = { questType = "daily", log = true }, + [63962] = { questType = "daily", log = true }, + [63963] = { questType = "daily", log = true }, + [63964] = { questType = "daily", log = true }, + [63965] = { questType = "daily", log = true }, + [63989] = { questType = "daily", log = true }, + [64015] = { questType = "daily", log = true }, + [64016] = { questType = "daily", log = true }, + [64017] = { questType = "daily", log = true }, + [64043] = { questType = "daily", log = true }, + [64065] = { questType = "daily", log = true }, + [64070] = { questType = "daily", log = true }, + [64080] = { questType = "daily", log = true }, + [64089] = { questType = "daily", log = true }, + [64101] = { questType = "daily", log = true }, + [64103] = { questType = "daily", log = true }, + [64104] = { questType = "daily", log = true }, + [64129] = { questType = "daily", log = true }, + [64166] = { questType = "daily", log = true }, + [64194] = { questType = "daily", log = true }, + [64432] = { questType = "daily", log = true }, + }, + zereth_mortis_dailies = { + [64579] = { questType = "daily", log = true }, + [64592] = { questType = "daily", log = true }, + [64717] = { questType = "daily", log = true }, + [64785] = { questType = "daily", log = true }, + [64854] = { questType = "daily", log = true }, + [64964] = { questType = "daily", log = true }, + [64977] = { questType = "daily", log = true }, + [65033] = { questType = "daily", log = true }, + [65072] = { questType = "daily", log = true }, + [65096] = { questType = "daily", log = true }, + [65142] = { questType = "daily", log = true }, + [65177] = { questType = "daily", log = true }, + [65226] = { questType = "daily", log = true }, + [65255] = { questType = "daily", log = true }, + [65256] = { questType = "daily", log = true }, + [65264] = { questType = "daily", log = true }, + [65265] = { questType = "daily", log = true }, + [65268] = { questType = "daily", log = true }, + [65269] = { questType = "daily", log = true }, + [65325] = { questType = "daily", log = true }, + [65326] = { questType = "daily", log = true }, + [65362] = { questType = "daily", log = true }, + [65363] = { questType = "daily", log = true }, + [65364] = { questType = "daily", log = true }, + [65445] = { questType = "daily", log = true }, + }, + zereth_mortis_wqs = { + [64960] = { questType = "daily" }, + [64974] = { questType = "daily" }, + [65081] = { questType = "daily" }, + [65089] = { questType = "daily" }, + [65102] = { questType = "daily" }, + [65115] = { questType = "daily" }, + [65117] = { questType = "daily" }, + [65119] = { questType = "daily" }, + [65232] = { questType = "daily" }, + [65234] = { questType = "daily" }, + [65230] = { questType = "daily" }, + [65244] = { questType = "daily" }, + [65252] = { questType = "daily" }, + [65262] = { questType = "daily" }, + [65402] = { questType = "daily" }, + [65403] = { questType = "daily" }, + [65405] = { questType = "daily" }, + [65406] = { questType = "daily" }, + [65407] = { questType = "daily" }, + [65408] = { questType = "daily" }, + [65409] = { questType = "daily" }, + [65410] = { questType = "daily" }, + [65411] = { questType = "daily" }, + [65412] = { questType = "daily" }, + [65413] = { questType = "daily" }, + [65414] = { questType = "daily" }, + [65415] = { questType = "daily" }, + [65416] = { questType = "daily" }, + [65417] = { questType = "daily" }, + }, + conductor = { + [61691] = { covenant = 3, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = "daily" }, -- Large Lunarlight Pod + [61633] = { covenant = 3, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = "daily" }, -- Dreamsong Fenn + -- Necrolords + [58872] = { covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = "daily" }, -- Gieger + [61647] = { covenant = 4, sanctum = 1, minSanctumTier = 1, addToMax = 1, questType = "daily" }, -- Chosen Runecoffer + }, + riftbound_cache = { + [64456] = { questType = "daily" }, + [64470] = { questType = "daily" }, + [64471] = { questType = "daily" }, + [64472] = { questType = "daily" }, + }, + relic_creatures = { + [64341] = { questType = "daily" }, + [64342] = { questType = "daily" }, + [64343] = { questType = "daily" }, + [64344] = { questType = "daily" }, + [64747] = { questType = "daily" }, + [64748] = { questType = "daily" }, + [64749] = { questType = "daily" }, + [64750] = { questType = "daily" }, + [64751] = { questType = "daily" }, + [64752] = { questType = "daily" }, + [64753] = { questType = "daily" }, + [64754] = { questType = "daily" }, + [64755] = { questType = "daily" }, + [64756] = { questType = "daily" }, + [64757] = { questType = "daily" }, + }, + helsworn_chest = { + [64256] = { questType = "daily" }, + }, + relic_gorger = { + [64433] = { questType = "daily" }, + [64434] = { questType = "daily" }, + [64435] = { questType = "daily" }, + [64436] = { questType = "daily" }, + }, + jiro_cyphers = { + [65144] = { questType = "daily" }, -- Creatii + [65166] = { questType = "daily" }, -- Genesii + [65167] = { questType = "daily" }, -- Nascii + }, + maw_souls = { + [61332] = { covenant = 1, questType = "weekly", log = true }, -- kyrian 5 souls + [62861] = { covenant = 1, questType = "weekly", log = true }, -- kyrian 10 souls + [62862] = { covenant = 1, questType = "weekly", log = true }, -- kyrian 15 souls + [62863] = { covenant = 1, questType = "weekly", log = true }, -- kyrian 20 souls + [61334] = { covenant = 2, questType = "weekly", log = true }, -- venthyr 5 souls + [62867] = { covenant = 2, questType = "weekly", log = true }, -- venthyr 10 souls + [62868] = { covenant = 2, questType = "weekly", log = true }, -- venthyr 15 souls + [62869] = { covenant = 2, questType = "weekly", log = true }, -- venthyr 20 souls + [61331] = { covenant = 3, questType = "weekly", log = true }, -- night fae 5 souls + [62858] = { covenant = 3, questType = "weekly", log = true }, -- night fae 10 souls + [62859] = { covenant = 3, questType = "weekly", log = true }, -- night fae 15 souls + [62860] = { covenant = 3, questType = "weekly", log = true }, -- night fae 20 souls + [61333] = { covenant = 4, questType = "weekly", log = true }, -- necro 5 souls + [62864] = { covenant = 4, questType = "weekly", log = true }, -- necro 10 souls + [62865] = { covenant = 4, questType = "weekly", log = true }, -- necro 15 souls + [62866] = { covenant = 4, questType = "weekly", log = true }, -- necro 20 souls + }, + anima_weekly = { + [61982] = { covenant = 1, questType = "weekly", log = true }, -- kyrian 1k anima + [61981] = { covenant = 2, questType = "weekly", log = true }, -- venthyr 1k anima + [61984] = { covenant = 3, questType = "weekly", log = true }, -- night fae 1k anima + [61983] = { covenant = 4, questType = "weekly", log = true }, -- necro 1k anima + }, + battle_plans = { + [64521] = { questType = "weekly", log = true }, -- Helsworn Battle Plans + }, + korthia_supplies = { + [64522] = { questType = "weekly", log = true }, -- Stolen Korthia Supplies + }, + korthia_weekly = { + [63949] = { questType = "weekly", log = true }, -- Shaping Fate + }, + zereth_mortis_weekly = { + [65324] = { questType = "weekly", log = true }, + }, + -- Maw Warth of the Jailer + wrath = { + [63414] = { questType = "weekly" }, -- Wrath of the Jailer + }, + -- Maw Hunt + hunt = { + [63195] = { questType = "weekly" }, + [63198] = { questType = "weekly" }, + [63199] = { questType = "weekly" }, + [63433] = { questType = "weekly" }, + }, + korthia_world_boss = { + [64531] = { questType = "weekly" }, -- Mor'geth, Tormentor of the Damned + }, + zereth_mortis_world_boss = { + [65143] = { questType = "weekly" }, -- Antros + }, + tormentors_weekly = { + [63854] = { questType = "weekly" }, -- Tormentors of Torghast + [64122] = { questType = "weekly" }, -- Tormentors of Torghast + }, + tormentors_locations = { + [64692] = { questType = "weekly" }, + [64693] = { questType = "weekly" }, + [64694] = { questType = "weekly" }, + [64695] = { questType = "weekly" }, + [64696] = { questType = "weekly" }, + [64697] = { questType = "weekly" }, + [64698] = { questType = "weekly" }, + }, + containing_the_helsworn = { + [64273] = { questType = "weekly" }, -- Containing the Helsworn World Quest + }, + rift_vessels = { + [64265] = { questType = "weekly" }, + [64269] = { questType = "weekly" }, + [64270] = { questType = "weekly" }, + }, + maw_assault = { + [63824] = { questType = "weekly" }, -- Kyrian + [63543] = { questType = "weekly" }, -- Necrolord + [63822] = { questType = "weekly" }, -- Venthyr + [63823] = { questType = "weekly" }, -- Nightfae + }, + assault_vessels = { + [64056] = { name = "Venthyr", total = 2, questType = "weekly" }, + [64055] = { name = "Venthyr", total = 2, questType = "weekly" }, + [64058] = { name = "Kyrian", total = 2, questType = "weekly" }, + [64057] = { name = "Kyrian", total = 2, questType = "weekly" }, + [64059] = { name = "Night Fae", total = 2, questType = "weekly" }, + [64060] = { name = "Night Fae", total = 2, questType = "weekly" }, + [64044] = { name = "Necrolord", total = 2, questType = "weekly" }, + [64045] = { name = "Necrolord", total = 2, questType = "weekly" }, + }, + adamant_vault_conduit = { + [64347] = { questType = "weekly" }, + }, + sanctum_normal_embers_trash = { + [64610] = { questType = "weekly" }, + [64613] = { questType = "weekly" }, + [64616] = { questType = "weekly" }, + [64619] = { questType = "weekly" }, + [64622] = { questType = "weekly" }, + }, + sanctum_heroic_embers_trash = { + [64611] = { questType = "weekly" }, + [64614] = { questType = "weekly" }, + [64617] = { questType = "weekly" }, + [64620] = { questType = "weekly" }, + [64623] = { questType = "weekly" }, + }, + sandworn_chest = { + [65611] = { questType = "daily" }, + }, + puzzle_caches = { + [64972] = { questType = "daily" }, -- Toccatian Cache + [65314] = { questType = "daily" }, + [65319] = { questType = "daily" }, + [65323] = { questType = "daily" }, -- Cantaric Cache + [65094] = { questType = "daily" }, + [65318] = { questType = "daily" }, + [65091] = { questType = "daily" }, -- Mezzonic Cache + [65315] = { questType = "daily" }, + [65320] = { questType = "daily" }, + [65316] = { questType = "daily" }, -- Glissandian Cache + [65321] = { questType = "daily" }, + [65092] = { questType = "daily" }, + [65317] = { questType = "daily" }, -- Fuguel Cache + [65322] = { questType = "daily" }, + [65093] = { questType = "daily" }, + }, + korthia_five_dailies = { + [63727] = { questType = "unlocks", log = true }, + }, + zereth_mortis_three_dailies = { + [65219] = { questType = "unlocks", log = true }, + }, + dragonflight_world_boss = { + [69927] = { questType = "weekly" }, + [69928] = { questType = "weekly" }, + [69929] = { questType = "weekly" }, + [69930] = { questType = "weekly" }, + }, + aiding_the_accord = { + [70750] = { questType = "weekly", log = true }, + [72068] = { questType = "weekly", log = true }, + [72373] = { questType = "weekly", log = true }, + [72374] = { questType = "weekly", log = true }, + [72375] = { questType = "weekly", log = true }, + [75259] = { questType = "weekly", log = true }, + [75859] = { questType = "weekly", log = true }, + [75860] = { questType = "weekly", log = true }, + [75861] = { questType = "weekly", log = true }, + [77254] = { questType = "weekly", log = true }, + [77976] = { questType = "weekly", log = true }, + [78446] = { questType = "weekly", log = true }, + [78447] = { questType = "weekly", log = true }, + [78861] = { questType = "weekly", log = true }, + [80385] = { questType = "weekly", log = true }, + [80386] = { questType = "weekly", log = true }, + [80388] = { questType = "weekly", log = true }, + [80389] = { questType = "weekly", log = true }, + }, + grand_hunts = { + [70906] = { questType = "weekly" }, + [71136] = { questType = "weekly" }, + [71137] = { questType = "weekly" }, + }, + marrukai_camp = { + [65784] = { questType = "biweekly", log = true }, + [65789] = { questType = "biweekly", log = true }, + [65792] = { questType = "biweekly", log = true }, + [65796] = { questType = "biweekly", log = true }, + [65798] = { questType = "biweekly", log = true }, + [66698] = { questType = "biweekly", log = true }, + [66711] = { questType = "biweekly", log = true }, + [67034] = { questType = "biweekly", log = true }, + [67039] = { questType = "biweekly", log = true }, + [67222] = { questType = "biweekly", log = true }, + [67605] = { questType = "biweekly", log = true }, + [70210] = { questType = "biweekly", log = true }, + [70299] = { questType = "biweekly", log = true }, + [70279] = { questType = "biweekly", log = true }, + [70352] = { questType = "biweekly", log = true }, + [70701] = { questType = "biweekly", log = true }, + [70990] = { questType = "biweekly", log = true }, + [71241] = { questType = "biweekly", log = true }, + }, + trial_of_flood = { + [71033] = { questType = "weekly" }, + }, + trial_of_elements = { + [71995] = { questType = "weekly" }, + }, + trial_of_storms = { + [74567] = { questType = "weekly" }, + }, + brackenhide_hollow_rares = { + [74032] = { questType = "daily", name = "Snarglebone" }, + [73985] = { questType = "daily", name = "Blisterhide" }, + [73996] = { questType = "daily", name = "Gnarls" }, + [74004] = { questType = "daily", name = "High Shaman Rotknuckle" }, + }, + knowledge_df_mobs = { + [70522] = { questType = "weekly", skillLineID = 165, profession = "Leatherworking", item = 198975 }, --Leatherworking 1 + [70523] = { questType = "weekly", skillLineID = 165, profession = "Leatherworking", item = 198976 }, --Leatherworking 2 + [73138] = { questType = "weekly", skillLineID = 165, profession = "Leatherworking", item = 204232 }, --Leatherworking 3 + [70514] = { questType = "weekly", skillLineID = 333, profession = "Enchanting", item = 198967 }, --Enchanting 1 + [70515] = { questType = "weekly", skillLineID = 333, profession = "Enchanting", item = 198968 }, --Enchanting 2 + [73136] = { questType = "weekly", skillLineID = 333, profession = "Enchanting", item = 204224 }, --Enchanting 3 + [70516] = { questType = "weekly", skillLineID = 202, profession = "Engineering", item = 198969 }, --Engineering 1 + [70517] = { questType = "weekly", skillLineID = 202, profession = "Engineering", item = 198970 }, --Engineering 2 + [73165] = { questType = "weekly", skillLineID = 202, profession = "Engineering", item = 204227 }, --Engineering 3 + [70518] = { questType = "weekly", skillLineID = 773, profession = "Inscription", item = 198971 }, --Inscription 1 + [70519] = { questType = "weekly", skillLineID = 773, profession = "Inscription", item = 198972 }, --Inscription 2 + [73163] = { questType = "weekly", skillLineID = 773, profession = "Inscription", item = 204229 }, --Inscription 3 + [70524] = { questType = "weekly", skillLineID = 197, profession = "Tailoring", item = 198977 }, --Tailoring 1 + [70525] = { questType = "weekly", skillLineID = 197, profession = "Tailoring", item = 198978 }, --Tailoring 2 + [73153] = { questType = "weekly", skillLineID = 197, profession = "Tailoring", item = 204225 }, --Tailoring 3 + [70512] = { questType = "weekly", skillLineID = 164, profession = "Blacksmithing", item = 198965 }, --Blacksmithing 1 + [70513] = { questType = "weekly", skillLineID = 164, profession = "Blacksmithing", item = 198966 }, --Blacksmithing 2 + [73161] = { questType = "weekly", skillLineID = 164, profession = "Blacksmithing", item = 204230 }, --Blacksmithing 3 + [70520] = { questType = "weekly", skillLineID = 755, profession = "Jewelcrafting", item = 198973 }, --Jewelcrafting 1 + [70521] = { questType = "weekly", skillLineID = 755, profession = "Jewelcrafting", item = 198974 }, --Jewelcrafting 2 + [73168] = { questType = "weekly", skillLineID = 755, profession = "Jewelcrafting", item = 204222 }, --Jewelcrafting 3 + [70504] = { questType = "weekly", skillLineID = 171, profession = "Alchemy", item = 198963 }, --Alchemy 1 + [70511] = { questType = "weekly", skillLineID = 171, profession = "Alchemy", item = 198964 }, --Alchemy 2 + [73166] = { questType = "weekly", skillLineID = 171, profession = "Alchemy", item = 204226 }, --Alchemy 3 + [71857] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, --Herbalism 1 + [71858] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, --Herbalism 2 + [71859] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, --Herbalism 3 + [71860] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, --Herbalism 4 + [71861] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, --Herbalism 5 + [71864] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, --Herbalism 6 + [70381] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, --Skinning 1 + [70383] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, --Skinning 2 + [70384] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, --Skinning 3 + [70385] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, --Skinning 4 + [70386] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, --Skinning 5 + [70389] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, --Skinning 6 + [72160] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, --Mining 1 + [72161] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, --Mining 2 + [72162] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, --Mining 3 + [72163] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, --Mining 4 + [72164] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, --Mining 5 + [72165] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, --Mining 6 + }, + knowledge_df_treasures = { + [66375] = { questType = "weekly", skillLineID = 773, profession = "Inscription", item = 193904 }, --Inscription 1 + [66376] = { questType = "weekly", skillLineID = 773, profession = "Inscription", item = 193905 }, --Inscription 2 + [66384] = { questType = "weekly", skillLineID = 165, profession = "Leatherworking", item = 193910 }, --Leatherworking 1 + [66385] = { questType = "weekly", skillLineID = 165, profession = "Leatherworking", item = 193913 }, --Leatherworking 2 + [66386] = { questType = "weekly", skillLineID = 197, profession = "Tailoring", item = 193898 }, --Tailoring 1 + [66387] = { questType = "weekly", skillLineID = 197, profession = "Tailoring", item = 193899 }, --Tailoring 2 + [66377] = { questType = "weekly", skillLineID = 333, profession = "Enchanting", item = 193900 }, --Enchanting 1 + [66378] = { questType = "weekly", skillLineID = 333, profession = "Enchanting", item = 193901 }, --Enchanting 2 + [66381] = { questType = "weekly", skillLineID = 164, profession = "Blacksmithing", item = 192131 }, --Blacksmithing 1 + [66382] = { questType = "weekly", skillLineID = 164, profession = "Blacksmithing", item = 192132 }, --Blacksmithing 2 + [66379] = { questType = "weekly", skillLineID = 202, profession = "Engineering", item = 193902 }, --Engineering 1 + [66380] = { questType = "weekly", skillLineID = 202, profession = "Engineering", item = 193903 }, --Engineering 2 + [66388] = { questType = "weekly", skillLineID = 755, profession = "Jewelcrafting", item = 193909 }, --Jewelcrafting 1 + [66389] = { questType = "weekly", skillLineID = 755, profession = "Jewelcrafting", item = 193907 }, --Jewelcrafting 2 + [66373] = { questType = "weekly", skillLineID = 171, profession = "Alchemy", item = 193891 }, --Alchemy 1 + [66374] = { questType = "weekly", skillLineID = 171, profession = "Alchemy", item = 193897 }, --Alchemy 2 + }, + knowledge_df_treatise = { + [74105] = { questType = "weekly", skillLineID = 773, profession = "Inscription" }, -- Inscription + [83730] = { questType = "weekly", skillLineID = 773, profession = "Inscription" }, -- Inscription 2 + [74106] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, -- Mining + [74107] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, -- Herbalism + [74108] = { questType = "weekly", skillLineID = 171, profession = "Alchemy" }, -- Alchemy + [74109] = { questType = "weekly", skillLineID = 164, profession = "Blacksmithing" }, -- Blacksmithing + [74110] = { questType = "weekly", skillLineID = 333, profession = "Enchanting" }, -- Enchanting + [74111] = { questType = "weekly", skillLineID = 202, profession = "Engineering" }, -- Engineering + [74112] = { questType = "weekly", skillLineID = 755, profession = "Jewelcrafting" }, -- Jewelcrafting + [74113] = { questType = "weekly", skillLineID = 165, profession = "Leatherworking" }, -- Leatherworking + [74114] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, -- Skinning + [74115] = { questType = "weekly", skillLineID = 197, profession = "Tailoring" }, -- Tailoring + }, + knowledge_df_weeklies_craft = { + [70558] = { questType = "weekly", log = true }, -- Inscription 1 + [70559] = { questType = "weekly", log = true }, -- Inscription 2 + [70560] = { questType = "weekly", log = true }, -- Inscription 3 + [70561] = { questType = "weekly", log = true }, -- Inscription 4 + [70567] = { questType = "weekly", log = true }, -- Leatherworking 1 + [70568] = { questType = "weekly", log = true }, -- Leatherworking 2 + [70569] = { questType = "weekly", log = true }, -- Leatherworking 3 + [70571] = { questType = "weekly", log = true }, -- Leatherworking 4 + [70572] = { questType = "weekly", log = true }, -- Tailoring 1 + [70582] = { questType = "weekly", log = true }, -- Tailoring 2 + [70586] = { questType = "weekly", log = true }, -- Tailoring 3 + [70587] = { questType = "weekly", log = true }, -- Tailoring 4 + [72155] = { questType = "weekly", log = true }, -- Enchanting 1 + [72172] = { questType = "weekly", log = true }, -- Enchanting 2 + [72175] = { questType = "weekly", log = true }, -- Enchanting 3 + [72173] = { questType = "weekly", log = true }, -- Enchanting 4 + [70233] = { questType = "weekly", log = true }, -- Blacksmithing 1 + [70234] = { questType = "weekly", log = true }, -- Blacksmithing 2 + [70235] = { questType = "weekly", log = true }, -- Blacksmithing 3 + [70211] = { questType = "weekly", log = true }, -- Blacksmithing 4 + [70540] = { questType = "weekly", log = true }, -- Engineering 1 + [70545] = { questType = "weekly", log = true }, -- Engineering 2 + [70557] = { questType = "weekly", log = true }, -- Engineering 3 + [70539] = { questType = "weekly", log = true }, -- Engineering 4 + [70562] = { questType = "weekly", log = true }, -- Jewelcrafting 1 + [70563] = { questType = "weekly", log = true }, -- Jewelcrafting 2 + [70564] = { questType = "weekly", log = true }, -- Jewelcrafting 3 + [70565] = { questType = "weekly", log = true }, -- Jewelcrafting 4 + [70531] = { questType = "weekly", log = true }, -- Alchemy 1 + [70532] = { questType = "weekly", log = true }, -- Alchemy 2 + [70533] = { questType = "weekly", log = true }, -- Alchemy 3 + [70530] = { questType = "weekly", log = true }, -- Alchemy 4 + }, + knowledge_df_weeklies_loot = { + [66943] = { questType = "weekly", log = true }, -- Inscription 5 + [66944] = { questType = "weekly", log = true }, -- Inscription 6 + [66945] = { questType = "weekly", log = true }, -- Inscription 7 + [72438] = { questType = "weekly", log = true }, -- Inscription 8 + [66363] = { questType = "weekly", log = true }, -- Leatherworking 5 + [66364] = { questType = "weekly", log = true }, -- Leatherworking 6 + [66951] = { questType = "weekly", log = true }, -- Leatherworking 7 + [72407] = { questType = "weekly", log = true }, -- Leatherworking 8 + [66899] = { questType = "weekly", log = true }, -- Tailoring 5 + [66952] = { questType = "weekly", log = true }, -- Tailoring 6 + [66953] = { questType = "weekly", log = true }, -- Tailoring 7 + [72410] = { questType = "weekly", log = true }, -- Tailoring 8 + [66884] = { questType = "weekly", log = true }, -- Enchanting 5 + [66900] = { questType = "weekly", log = true }, -- Enchanting 6 + [66935] = { questType = "weekly", log = true }, -- Enchanting 7 + [72423] = { questType = "weekly", log = true }, -- Enchanting 8 + [66517] = { questType = "weekly", log = true }, -- Blacksmithing 5 + [66941] = { questType = "weekly", log = true }, -- Blacksmithing 6 + [72398] = { questType = "weekly", log = true }, -- Blacksmithing 7 + [66897] = { questType = "weekly", log = true }, -- Blacksmithing 8 + [66891] = { questType = "weekly", log = true }, -- Engineering 5 + [66890] = { questType = "weekly", log = true }, -- Engineering 6 + [66942] = { questType = "weekly", log = true }, -- Engineering 7 + [72396] = { questType = "weekly", log = true }, -- Engineering 8 + [73165] = { questType = "weekly", log = true }, -- Engineering 9 + [66516] = { questType = "weekly", log = true }, -- Jewelcrafting 5 + [66949] = { questType = "weekly", log = true }, -- Jewelcrafting 6 + [66950] = { questType = "weekly", log = true }, -- Jewelcrafting 7 + [72428] = { questType = "weekly", log = true }, -- Jewelcrafting 8 + [66937] = { questType = "weekly", log = true }, -- Alchemy 5 + [66938] = { questType = "weekly", log = true }, -- Alchemy 6 + [66940] = { questType = "weekly", log = true }, -- Alchemy 7 + [72427] = { questType = "weekly", log = true }, -- Alchemy 8 + [70613] = { questType = "weekly", log = true }, -- Herbalism 5 + [70614] = { questType = "weekly", log = true }, -- Herbalism 6 + [70615] = { questType = "weekly", log = true }, -- Herbalism 7 + [70616] = { questType = "weekly", log = true }, -- Herbalism 8 + --[71970] = {questType = 'weekly', log = true}, -- Herbalism 8 + --[71857] = {questType = 'weekly', log = true}, -- Herbalism 8 + [70620] = { questType = "weekly", log = true }, -- Skinning 5 + [72159] = { questType = "weekly", log = true }, -- Skinning 6 + [70619] = { questType = "weekly", log = true }, -- Skinning 7 + [72158] = { questType = "weekly", log = true }, -- Skinning 8 + [72157] = { questType = "weekly", log = true }, -- Mining 5 + [70617] = { questType = "weekly", log = true }, -- Mining 6 + [70618] = { questType = "weekly", log = true }, -- Mining 7 + [72156] = { questType = "weekly", log = true }, -- Mining 8 + --[66936] = {questType = 'weekly', log = true}, -- Mining 8 + [75354] = { questType = "weekly", log = true }, -- Leatherworking + [75368] = { questType = "weekly", log = true }, -- Leatherworking + [77945] = { questType = "weekly", log = true }, -- Leatherworking + [77946] = { questType = "weekly", log = true }, -- Leatherworking + [75150] = { questType = "weekly", log = true }, -- Enchanting + [75865] = { questType = "weekly", log = true }, -- Enchanting + [77910] = { questType = "weekly", log = true }, -- Enchanting + [77937] = { questType = "weekly", log = true }, -- Enchanting + [75148] = { questType = "weekly", log = true }, -- Blacksmithing + [75569] = { questType = "weekly", log = true }, -- Blacksmithing + [77935] = { questType = "weekly", log = true }, -- Blacksmithing + [77936] = { questType = "weekly", log = true }, -- Blacksmithing + [75575] = { questType = "weekly", log = true }, -- Engineering + [75608] = { questType = "weekly", log = true }, -- Engineering + [77891] = { questType = "weekly", log = true }, -- Engineering + [77938] = { questType = "weekly", log = true }, -- Engineering + [75149] = { questType = "weekly", log = true }, -- Inscription + [75573] = { questType = "weekly", log = true }, -- Inscription + [77889] = { questType = "weekly", log = true }, -- Inscription + [77914] = { questType = "weekly", log = true }, -- Inscription + [75407] = { questType = "weekly", log = true }, -- Tailoring + [75600] = { questType = "weekly", log = true }, -- Tailoring + [77947] = { questType = "weekly", log = true }, -- Tailoring + [77949] = { questType = "weekly", log = true }, -- Tailoring + [75362] = { questType = "weekly", log = true }, -- Jewelcrafting + [75602] = { questType = "weekly", log = true }, -- Jewelcrafting + [77892] = { questType = "weekly", log = true }, -- Jewelcrafting + [77912] = { questType = "weekly", log = true }, -- Jewelcrafting + [75363] = { questType = "weekly", log = true }, -- Alchemy + [75371] = { questType = "weekly", log = true }, -- Alchemy + [77932] = { questType = "weekly", log = true }, -- Alchemy + [77933] = { questType = "weekly", log = true }, -- Alchemy + }, + knowledge_df_weeklies_order = { + [70589] = { questType = "weekly", log = true }, -- Blacksmithing 0 + [70591] = { questType = "weekly", log = true }, -- Engineering 0 + [70592] = { questType = "weekly", log = true }, -- Inscription 0 + [70593] = { questType = "weekly", log = true }, -- Jewelcrafting 0 + [70594] = { questType = "weekly", log = true }, -- Leatherworking 0 + [70595] = { questType = "weekly", log = true }, -- Tailoring 0 + }, + community_feast = { + [74097] = { questType = "daily" }, + }, + iskaara_story = { + [72291] = { questType = "weekly", log = true }, + }, + obsidian_citadel_rares = { + [72127] = { questType = "daily", name = "Captain Lancer" }, + [73072] = { questType = "daily", name = "Enkine the Voracious" }, + [74067] = { questType = "daily", name = "Morchok" }, + [74054] = { questType = "daily", name = "Turboris" }, + [74043] = { questType = "daily", name = "Char" }, + [74040] = { questType = "daily", name = "Battlehorn Pyrhus" }, + [74042] = { questType = "daily", name = "Cauldronbreaker Blakor" }, + [74052] = { questType = "daily", name = "Rohzor Forgesmash" }, + }, + tyrhold_rares = { + [74055] = { questType = "daily", name = "Ancient Protector" }, + }, + iskaara_fishing_dailies = { + [70438] = { questType = "daily", log = true }, + [70450] = { questType = "daily", log = true }, + [71191] = { questType = "daily", log = true }, + [71194] = { questType = "daily", log = true }, + [72069] = { questType = "daily", log = true }, + [72075] = { questType = "daily", log = true }, + }, + community_feast_weekly = { + [70893] = { questType = "weekly", log = true }, + }, + dragonbane_keep_siege = { + [70866] = { questType = "weekly" }, + }, + dragonbane_keep_key = { + [66805] = { questType = "weekly", log = true }, + [66133] = { questType = "weekly", log = true }, + }, + dragonbane_keep_weeklies = { + [65842] = { questType = "weekly", log = true }, + [66103] = { questType = "weekly", log = true }, + [66308] = { questType = "weekly", log = true }, + [66321] = { questType = "weekly", log = true }, + [66326] = { questType = "weekly", log = true }, + [66445] = { questType = "weekly", log = true }, + [66449] = { questType = "weekly", log = true }, + [66633] = { questType = "weekly", log = true }, + [66926] = { questType = "weekly", log = true }, + [67051] = { questType = "weekly", log = true }, + [67099] = { questType = "weekly", log = true }, + [67142] = { questType = "weekly", log = true }, + [69918] = { questType = "weekly", log = true }, + [70848] = { questType = "weekly", log = true }, + [72447] = { questType = "weekly", log = true }, + [72448] = { questType = "weekly", log = true }, + }, + show_your_mettle = { + [70221] = { questType = "weekly", log = true }, + }, + fish_turnins_df = { + [72828] = { questType = "weekly", name = "|T1387373:0|t[Scalebelly Mackerel]" }, + [72823] = { questType = "weekly", name = "|T4554376:0|t[Islefin Dorado]" }, + [72827] = { questType = "weekly", name = "|T4554372:0|t[Thousandbite Piranha]" }, + [72826] = { questType = "weekly", name = "|T4539689:0|t[Aileron Seamoth]" }, + [72825] = { questType = "weekly", name = "|T4539687:0|t[Cerulean Spinefish]" }, + [72824] = { questType = "weekly", name = "|T4554371:0|t[Temporal Dragonhead]" }, + }, + forbidden_reach_weeklies = { + [72952] = { questType = "weekly", log = true }, + [73140] = { questType = "weekly", log = true }, + [73141] = { questType = "weekly", log = true }, + [73142] = { questType = "weekly", log = true }, + [73179] = { questType = "weekly", log = true }, + [73190] = { questType = "weekly", log = true }, + [73191] = { questType = "weekly", log = true }, + [73194] = { questType = "weekly", log = true }, + [73715] = { questType = "weekly", log = true }, + [74282] = { questType = "weekly", log = true }, + [74284] = { questType = "weekly", log = true }, + [74293] = { questType = "weekly", log = true }, + [74379] = { questType = "weekly", log = true }, + [75024] = { questType = "weekly", log = true }, + [75025] = { questType = "weekly", log = true }, + }, + forbidden_reach_task_picked = { + [74908] = { questType = "daily", log = true }, -- Dragonscale Expedition + [74909] = { questType = "daily", log = true }, -- Iskaara Tuskarr + [74910] = { questType = "daily", log = true }, -- Maruuk Centaur + [74911] = { questType = "daily", log = true }, -- Valdrakken Akkord + }, + forbidden_reach_tasks = { + [74118] = { questType = "daily", log = true }, -- Dragonscale Expedition + [74389] = { questType = "daily", log = true }, -- Dragonscale Expedition + [74119] = { questType = "daily", log = true }, -- Iskaara Tuskarr + [74391] = { questType = "daily", log = true }, -- Iskaara Tuskarr + [74117] = { questType = "daily", log = true }, -- Maruuk Centaur + [74390] = { questType = "daily", log = true }, -- Maruuk Centaur + [75261] = { questType = "daily", log = true }, -- Valdrakken Akkord + [75263] = { questType = "daily", log = true }, -- Valdrakken Akkord + }, + forbidden_reach_elite_wqs = { + [75257] = { questType = "weekly", log = true }, -- The War Creche + }, + glimerogg_racer_dailies = { + [74514] = { questType = "weekly", log = true }, -- The Slowest Fan Club + [74515] = { questType = "weekly", log = true }, -- Snail Mail + [74516] = { questType = "weekly", log = true }, -- A Snail's Pace + [74517] = { questType = "weekly", log = true }, -- All Terrain Snail + [74518] = { questType = "weekly", log = true }, -- Resistance Training + [74519] = { questType = "weekly", log = true }, -- Good for Goo + [74520] = { questType = "weekly", log = true }, -- Less Cargo + }, + loamm_niffen_weekly = { + [75665] = { questType = "weekly", log = true }, + }, + researchers_under_fire_weekly = { + [75627] = { questType = "weekly" }, + [75628] = { questType = "weekly" }, + [75629] = { questType = "weekly" }, + [75630] = { questType = "weekly" }, + }, + zc_wb_wq = { + [74892] = { questType = "weekly", log = true }, -- Zaqali Elders + }, + dig_maps_weeklies = { + [75747] = { questType = "weekly" }, + [75748] = { questType = "weekly" }, + [75749] = { questType = "weekly" }, + }, + dig_maps_received_weekly = { + [76077] = { questType = "weekly" }, + [75665] = { questType = "weekly" }, + }, + proven_weekly = { + [72166] = { questType = "weekly", log = true }, + [72167] = { questType = "weekly", log = true }, + [72168] = { questType = "weekly", log = true }, + [72169] = { questType = "weekly", log = true }, + [72170] = { questType = "weekly", log = true }, + [72171] = { questType = "weekly", log = true }, + }, + fyrak_assault = { + [75467] = { questType = "weekly" }, + }, + zyrak_cavern_zone_events = { + [75664] = { questType = "weekly", forceUpdate = true }, + [75156] = { questType = "weekly", forceUpdate = true }, + [75471] = { questType = "weekly", forceUpdate = true }, + [75222] = { questType = "weekly", forceUpdate = true }, + [75370] = { questType = "weekly", forceUpdate = true }, + [75441] = { questType = "weekly", forceUpdate = true }, + [75611] = { questType = "weekly", forceUpdate = true }, + [75624] = { questType = "weekly", forceUpdate = true }, + [75612] = { questType = "weekly", forceUpdate = true }, + [75454] = { questType = "weekly", forceUpdate = true }, + [75455] = { questType = "weekly", forceUpdate = true }, + [75450] = { questType = "weekly", forceUpdate = true }, + [75451] = { questType = "weekly", forceUpdate = true }, + [75461] = { questType = "weekly", forceUpdate = true }, + [74352] = { questType = "weekly", forceUpdate = true }, + [75478] = { questType = "weekly", forceUpdate = true }, + [75494] = { questType = "weekly", forceUpdate = true }, + [75705] = { questType = "weekly", forceUpdate = true }, + }, + time_rift = { + [77236] = { questType = "weekly", log = true }, + }, + time_rift_pod = { + [77836] = { questType = "weekly" }, + }, + dreamsurge_weekly = { + [77251] = { questType = "weekly", log = true }, + }, + ed_wb_wq = { + [76367] = { questType = "weekly", log = true }, -- Aurostor + }, + dream_wardens_weekly = { + [78444] = { questType = "weekly", log = true }, + }, + superbloom = { + [78319] = { questType = "weekly", log = true }, + }, + dream_shipments = { + [78427] = { questType = "weekly", log = true }, + [78428] = { questType = "weekly", log = true }, + }, + anniversary_wb = { + [47461] = { questType = "daily", name = "Kazzak" }, -- Kazzak + [47462] = { questType = "daily", name = "Azuregos" }, -- Azuregos + [47463] = { questType = "daily", name = "Dragons of Nightmare" }, -- Dragons of Nightmare + [60214] = { questType = "daily", name = "Doomwalker" }, -- Doomwalker + }, + big_dig = { + [79226] = { questType = "weekly", warband = true, log = true }, + }, + + -- 11.0 The War Within + -- Weekly World Activities + tww_world_boss = { -- PLACEHOLDER: wrong quest IDs + [999990] = { questType = "weekly" }, -- Kordac, the Dormant Protector + [83466] = { questType = "weekly" }, -- Aggregation of Horrors + [83467] = { questType = "weekly" }, -- Shurrai, Atrocity of the Undersea + [999993] = { questType = "weekly" }, -- Orta, the Broken Mountain + }, + worldsoul_weekly = { + [82452] = { questType = "weekly", log = true }, -- Worldsoul: World Quests + [82453] = { questType = "weekly", log = true }, -- Worldsoul: Encore! + [82458] = { questType = "weekly", log = true }, -- Worldsoul: Renown + [82482] = { questType = "weekly", log = true }, -- Worldsoul: Snuffling + [82483] = { questType = "weekly", log = true }, -- Worldsoul: Spreading the Light + [82485] = { questType = "weekly", log = true }, -- Worldsoul: Cinderbrew Meadery + [82486] = { questType = "weekly", log = true }, -- Worldsoul: The Rookery + [82487] = { questType = "weekly", log = true }, -- Worldsoul: The Stonevault + [82488] = { questType = "weekly", log = true }, -- Worldsoul: Darkflame Cleft + [82489] = { questType = "weekly", log = true }, -- Worldsoul: The Dawnbreaker + [82490] = { questType = "weekly", log = true }, -- Worldsoul: Priory of the Sacred Flame + [82491] = { questType = "weekly", log = true }, -- Worldsoul: Ara-Kara, City of Echoes + [82492] = { questType = "weekly", log = true }, -- Worldsoul: City of Threads + [82493] = { questType = "weekly", log = true }, -- Worldsoul: The Dawnbreaker + [82494] = { questType = "weekly", log = true }, -- Worldsoul: Ara-Kara, City of Echoes + [82495] = { questType = "weekly", log = true }, -- Worldsoul: Cinderbrew Meadery + [82496] = { questType = "weekly", log = true }, -- Worldsoul: City of Threads + [82497] = { questType = "weekly", log = true }, -- Worldsoul: The Stonevault + [82498] = { questType = "weekly", log = true }, -- Worldsoul: Darkflame Cleft + [82499] = { questType = "weekly", log = true }, -- Worldsoul: Priory of the Sacred Flame + [82500] = { questType = "weekly", log = true }, -- Worldsoul: The Rookery + [82501] = { questType = "weekly", log = true }, -- Worldsoul: The Dawnbreaker + [82502] = { questType = "weekly", log = true }, -- Worldsoul: Ara-Kara, City of Echoes + [82503] = { questType = "weekly", log = true }, -- Worldsoul: Cinderbrew Meadery + [82504] = { questType = "weekly", log = true }, -- Worldsoul: City of Threads + [82505] = { questType = "weekly", log = true }, -- Worldsoul: The Stonevault + [82506] = { questType = "weekly", log = true }, -- Worldsoul: Darkflame Cleft + [82507] = { questType = "weekly", log = true }, -- Worldsoul: Priory of the Sacred Flame + [82508] = { questType = "weekly", log = true }, -- Worldsoul: The Rookery + [82509] = { questType = "weekly", log = true }, -- Worldsoul: Nerub-ar Palace + [82510] = { questType = "weekly", log = true }, -- Worldsoul: Nerub-ar Palace + [82511] = { questType = "weekly", log = true }, -- Worldsoul: Awakening Machine + [82512] = { questType = "weekly", log = true }, -- Worldsoul: World Boss + [82516] = { questType = "weekly", log = true }, -- Worldsoul: Forging a Pact + [82659] = { questType = "weekly", log = true }, -- Worldsoul: Nerub-ar Palace + -- [86476] = { questType = 'weekly', log = true }, -- Worldsoul Memory: Early Cartel Wars + -- [86478] = { questType = 'weekly', log = true }, -- Worldsoul Memory: Kaja'mite Contact + [87417] = { questType = "weekly", log = true }, -- Worldsoul: Dungeons + [87419] = { questType = "weekly", log = true }, -- Worldsoul: Delves + [87422] = { questType = "weekly", log = true }, -- Worldsoul: Undermine World Quests + [87423] = { questType = "weekly", log = true }, -- Worldsoul: Undermine Explorer + [87424] = { questType = "weekly", log = true }, -- Worldsoul: World Bosses + [89502] = { questType = "weekly", log = true }, -- Worldsoul: Nightfall + [89514] = { questType = "weekly", log = true }, -- Worldsoul: Horrific Visions Revisited + [91052] = { questType = "weekly", log = true }, -- Worldsoul: Overcharged Delves + [91855] = { questType = "weekly", log = true }, -- Worldsoul: K'aresh World Quests + + [82746] = { questType = "weekly", log = true }, -- Delves: Breaking Tough to Loot Stuff + [82712] = { questType = "weekly", log = true }, -- Delves: Trouble Up and Down Khaz Algar + [82711] = { questType = "weekly", log = true }, -- Delves: Lost and Found + [82709] = { questType = "weekly", log = true }, -- Delves: Percussive Archaeology + [82706] = { questType = "weekly", log = true }, -- Delves: Khaz Algar Research + [82707] = { questType = "weekly", log = true }, -- Delves: Earthen Defense + [82708] = { questType = "weekly", log = true }, -- Delves: Nerubian Menace + [82678] = { questType = "weekly", log = true }, -- Archives: The First Disc + [82679] = { questType = "weekly", log = true }, -- Archives: Seeking History + }, + weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Delete later + }, + archaic_cypher_key = { + [84370] = { questType = "weekly", warband = true, log = true }, -- The Key to Success + }, + the_theater_troupe = { + [83240] = { questType = "weekly", warband = true, log = true }, -- The Theater Troupe + }, + rollin_down_in_the_deeps = { + [82946] = { questType = "weekly", warband = true, log = true }, -- Rollin' Down in the Deeps (Digging) + }, + gearing_up_for_trouble = { + [83333] = { questType = "weekly", log = true }, -- Gearing Up for Trouble (Awakening the Machine Weekly) + }, + awakening_the_machine = { + [84642] = { questType = "weekly", warband = true, name = "1st Cache" }, -- cache 1 + [84644] = { questType = "weekly", warband = true, name = "2nd Cache" }, -- cache 2 + [84646] = { questType = "weekly", warband = true, name = "3rd Cache" }, -- cache 3 + [84647] = { questType = "weekly", warband = true, name = "4th Cache" }, -- cache 4 + }, + spreading_the_light = { + [76586] = { questType = "weekly", warband = true, log = true }, -- Hallowfall Event in Dunelle's Kindness + }, + lesser_keyflame_weeklies = { + [76169] = { questType = "weekly", warband = true, log = true }, -- Glow in the Dark + [76394] = { questType = "weekly", warband = true, log = true }, -- Shadows of Flavor + [76600] = { questType = "weekly", warband = true, log = true }, -- Right Between the Gyro-Optics + [76733] = { questType = "weekly", warband = true, log = true }, -- Tater Trawl + [76997] = { questType = "weekly", warband = true, log = true }, -- Lost in Shadows + [78656] = { questType = "weekly", warband = true, log = true }, -- Hose It Down + [78915] = { questType = "weekly", warband = true, log = true }, -- Squashing the Threat + [78933] = { questType = "weekly", warband = true, log = true }, -- The Sweet Eclipse + [78972] = { questType = "weekly", warband = true, log = true }, -- Harvest Havoc + [79158] = { questType = "weekly", warband = true, log = true }, -- Seeds of Salvation + [79173] = { questType = "weekly", warband = true, log = true }, -- Supply the Effort + [79216] = { questType = "weekly", warband = true, log = true }, -- Web of Manipulation + [79346] = { questType = "weekly", warband = true, log = true }, -- Chew On That + [80004] = { questType = "weekly", warband = true, log = true }, -- Crab Grab + [80562] = { questType = "weekly", warband = true, log = true }, -- Blossoming Delight + [81574] = { questType = "weekly", warband = true, log = true }, -- Sporadic Growth + [81632] = { questType = "weekly", warband = true, log = true }, -- Lizard Looters + }, + greater_keyflame_weeklies = { -- not added to default categories because shit rewards + [78590] = { questType = "weekly", log = true }, -- Cutting Edge + [78657] = { questType = "weekly", log = true }, -- The Midnight Sentry + [79329] = { questType = "weekly", log = true }, -- Glowing Harvest + [79380] = { questType = "weekly", log = true }, -- Bog Beast Banishment + [79469] = { questType = "weekly", log = true }, -- Lurking Below + [79470] = { questType = "weekly", log = true }, -- Waters of War + [79471] = { questType = "weekly", log = true }, -- Bleak Sand + }, + severed_threads_pact_chosen = { + [80544] = { questType = "weekly", warband = true, log = true }, -- Eyes of the Weaver + }, + severed_threads_pact_weekly = { + [80670] = { questType = "weekly", warband = true, log = true }, -- Eyes of the Weaver + [80671] = { questType = "weekly", warband = true, log = true }, -- Blade of the General + [80672] = { questType = "weekly", warband = true, log = true }, -- Hand of the Vizier + }, + weekly_delve_reputation = { + [83317] = { questType = "weekly", warband = "unique", name = "Council of Dornogal" }, + [83318] = { questType = "weekly", warband = "unique", name = "Assembly of the Deeps" }, + [83320] = { questType = "weekly", warband = "unique", name = "Hallowfall Arathi" }, + [83319] = { questType = "weekly", warband = "unique", name = "Severed Threads" }, + }, + weekly_coffer_keys = { + [84736] = { questType = "weekly" }, + [84737] = { questType = "weekly" }, + [84738] = { questType = "weekly" }, + [84739] = { questType = "weekly" }, + }, + + -- Weekly Rares + isle_of_dorne_rares = { + [84037] = { questType = "weekly", warband = true, name = "Tephratennae" }, -- (daily: 81923) + [84031] = { questType = "weekly", warband = true, name = "Kronolith, Might of the Mountain" }, -- (daily: 81902) + [84032] = { questType = "weekly", warband = true, name = "Shallowshell the Clacker" }, -- (daily: 81903) + [84036] = { questType = "weekly", warband = true, name = "Clawbreaker K'zithix" }, -- (daily: 81920) + [84029] = { questType = "weekly", warband = true, name = "Escaped Cutthroat" }, -- (daily: 81907) + [84039] = { questType = "weekly", warband = true, name = "Matriarch Charfuria" }, -- (daily: 81921) + [84030] = { questType = "weekly", warband = true, name = "Tempest Lord Incarnus" }, -- (daily: 81901) + [84028] = { questType = "weekly", warband = true, name = "Gar'loc" }, -- (daily: 81899) + [84033] = { questType = "weekly", warband = true, name = "Twice-Stinger the Wretched" }, -- (daily: 81904) + [84034] = { questType = "weekly", warband = true, name = "Flamekeeper Graz" }, -- (daily: 81905) + [84026] = { questType = "weekly", warband = true, name = "Plaguehart" }, -- (daily: 81897) + [84038] = { questType = "weekly", warband = true, name = "Sweetspark the Oozeful" }, -- (daily: 81922) + }, + ringing_deeps_rares = { + [84046] = { questType = "weekly", warband = true, name = "Automaxor" }, -- (daily: 81674) + [84044] = { questType = "weekly", warband = true, name = "Charmonger" }, -- (daily: 81562) + [84042] = { questType = "weekly", warband = true, name = "Cragmund" }, -- (daily: 80560) + [84041] = { questType = "weekly", warband = true, name = "Zilthara" }, -- (daily: 80506) + [84045] = { questType = "weekly", warband = true, name = "Coalesced Monstrosity" }, -- (daily: 81511) + [84040] = { questType = "weekly", warband = true, name = "Terror of the Forge" }, -- (daily: 80507) + [84047] = { questType = "weekly", warband = true, name = "Kelpmire" }, -- (daily: 81485) + [84043] = { questType = "weekly", warband = true, name = "Trungal" }, -- (daily: 80574) + [84049] = { questType = "weekly", warband = true, name = "Spore-infused Shalewing" }, -- (daily: 81652) + [84048] = { questType = "weekly", warband = true, name = "Hungerer of the Deeps" }, -- (daily: 81648) + [84050] = { questType = "weekly", warband = true, name = "Disturbed Earthgorger" }, -- (daily: 80003) + }, + hallowfall_rares = { + [84063] = { questType = "weekly", warband = true, name = "Lytfang the Lost" }, -- (daily: 81756) + [84051] = { questType = "weekly", warband = true, name = "Moth'ethk" }, -- (daily: 82557) + [84064] = { questType = "weekly", warband = true, name = "The Perchfather" }, -- (daily: 81791) + [84061] = { questType = "weekly", warband = true, name = "The Taskmaker" }, -- (daily: 80009) + [84066] = { questType = "weekly", warband = true, name = "Strength of Beledar" }, -- (daily: 81849) + [84060] = { questType = "weekly", warband = true, name = "Murkspike" }, -- (daily: 82565) + [84053] = { questType = "weekly", warband = true, name = "Deathpetal" }, -- (daily: 82559) + [84056] = { questType = "weekly", warband = true, name = "Duskshadow" }, -- (daily: 82562) + [84067] = { questType = "weekly", warband = true, name = "Sir Alastair Purefire" }, -- (daily: 81853) + [84065] = { questType = "weekly", warband = true, name = "Horror of the Shallows" }, -- (daily: 81836) + [84062] = { questType = "weekly", warband = true, name = "Sloshmuck" }, -- (daily: 79271) + [84054] = { questType = "weekly", warband = true, name = "Croakit" }, -- (daily: 82560) + [84068] = { questType = "weekly", warband = true, name = "Pride of Beledar" }, -- (daily: 81882) + [84052] = { questType = "weekly", warband = true, name = "Crazed Cabbage Smacker" }, -- (daily: 82558) + [84055] = { questType = "weekly", warband = true, name = "Toadstomper" }, -- (daily: 82561) + [84059] = { questType = "weekly", warband = true, name = "Finclaw Bloodtide" }, -- (daily: 82564) + [84058] = { questType = "weekly", warband = true, name = "Ravageant" }, -- (daily: 82566) + [84057] = { questType = "weekly", warband = true, name = "Parasidious" }, -- (daily: 82563) + }, + azj_kahet_rares = { + [84071] = { questType = "weekly", warband = true, name = "Kaheti Silk Hauler" }, -- (daily: 81702) + [84072] = { questType = "weekly", warband = true, name = "XT-Minecrusher 8700" }, -- (daily: 81703) + [84075] = { questType = "weekly", warband = true, name = "Maddened Siegebomber" }, -- (daily: 81706) + [84073] = { questType = "weekly", warband = true, name = "Cha'tak" }, -- (daily: 81704) + [84076] = { questType = "weekly", warband = true, name = "Enduring Gutterface" }, -- (daily: 81707) + [84074] = { questType = "weekly", warband = true, name = "Monstrous Lasharoth" }, -- (daily: 81705) + [84080] = { questType = "weekly", warband = true, name = "Umbraclaw Matra" }, -- (daily: 82037) + [84082] = { questType = "weekly", warband = true, name = "Skirmisher Sa'zryk" }, -- (daily: 82078) + [84081] = { questType = "weekly", warband = true, name = "Deepcrawler Tx'kesh" }, -- (daily: 82077) + [84079] = { questType = "weekly", warband = true, name = "Harvester Qixt" }, -- (daily: 82036) + [84078] = { questType = "weekly", warband = true, name = "The Oozekhan" }, -- (daily: 82035) + [84077] = { questType = "weekly", warband = true, name = "Jix'ak the Crazed" }, -- (daily: 82034) + [84069] = { questType = "weekly", warband = true, name = "The Groundskeeper" }, -- (daily: 81634) + [84070] = { questType = "weekly", warband = true, name = "Xishorr" }, -- (daily: 81701) + }, + one_time_reputation_rares = { + [85158] = { questType = "weekly", warband = true, name = "Alunira", achievementID = 40435, criteriaID = 68225 }, -- Isle of Dorne (daily: 82196) + [85160] = { questType = "weekly", warband = true, name = "Kereke", achievementID = 40435, criteriaID = 68227 }, -- Isle of Dorne (daily: 82204) + [85161] = { questType = "weekly", warband = true, name = "Zovex", achievementID = 40435, criteriaID = 68226 }, -- Isle of Dorne (daily: 82203) + [85159] = { questType = "weekly", warband = true, name = "Rotfist", achievementID = 40435, criteriaID = 68228 }, -- Isle of Dorne (daily: 82205) + [85162] = { + questType = "weekly", + warband = true, + name = "Deepflayer Broodmother", + achievementID = 40837, + criteriaID = 69636, + }, -- Ringing Deeps (daily: 80536) + [85163] = { + questType = "weekly", + warband = true, + name = "Lurker of the Deeps", + achievementID = 40837, + criteriaID = 69637, + }, -- Ringing Deeps (daily: 81633) + [85164] = { + questType = "weekly", + warband = true, + name = "Beledar's Spawn", + achievementID = 40851, + criteriaID = 69716, + }, -- Hallowfall (daily: 81763) + [85165] = { + questType = "weekly", + warband = true, + name = "Deathtide", + achievementID = 40851, + criteriaID = 69717, + }, -- Hallowfall (daily: 81880) + [85167] = { questType = "weekly", warband = true, name = "The One Left" }, -- Azj-kahet (daily: 82290) + [85166] = { questType = "weekly", warband = true, name = "Tka'ktath" }, -- Azj-kahet (daily: 82289) + }, + undermine_rares = { + [84917] = { questType = "weekly", warband = true, name = "Scrapbeak" }, -- (daily: 81702) + [84918] = { questType = "weekly", warband = true, name = "Ratspit" }, -- (daily: 81703) + [84919] = { questType = "weekly", warband = true, name = "Tally Doublespeak" }, -- (daily: 81706) + [84920] = { questType = "weekly", warband = true, name = "V.V. Goosworth and Slimesby" }, -- (daily: 81704) + [84921] = { questType = "weekly", warband = true, name = "Thwack" }, -- (daily: 81707) + [84922] = { questType = "weekly", warband = true, name = "S.A.L." }, -- (daily: 81705) + [84926] = { questType = "weekly", warband = true, name = "Nitro" }, -- (daily: 81705) + [84927] = { questType = "weekly", warband = true, name = "Candy Stickemup" }, -- (daily: 82037) + [84928] = { questType = "weekly", warband = true, name = "Grimewick" }, -- (daily: 82078) + [85004] = { questType = "weekly", warband = true, name = "Swigs Farsight" }, -- (daily: 82077) + [84877] = { questType = "weekly", warband = true, name = "Ephemeral Agent Lathyd" }, -- (daily: 82036) + [84884] = { questType = "weekly", warband = true, name = "The Junk-Wall" }, -- (daily: 82035) + [84895] = { questType = "weekly", warband = true, name = "Slugger the Smart" }, -- (daily: 82034) + [84907] = { questType = "weekly", warband = true, name = "Chief Foreman Gutso" }, -- (daily: 81634) + [84911] = { questType = "weekly", warband = true, name = "Flyboy Snooty" }, -- (daily: 81701) + [86298] = { questType = "weekly", warband = true, name = "M.A.G.N.O." }, -- (daily: 81701) + [86307] = { questType = "weekly", warband = true, name = "Giovante" }, -- (daily: 81701) + [86431] = { questType = "weekly", warband = true, name = "Scrapchewer" }, -- (daily: 81701) + [86428] = { questType = "weekly", warband = true, name = "Volstrike the Charged" }, -- (daily: 81701) + }, + + -- Professions + knowledge_tww_treasures = { + [83253] = { questType = "weekly", skillLineID = 171, profession = "Alchemy", item = 225234 }, -- Alchemical Sediment + [83255] = { questType = "weekly", skillLineID = 171, profession = "Alchemy", item = 225235 }, -- Deepstone Crucible + [83256] = { questType = "weekly", skillLineID = 164, profession = "Blacksmithing", item = 225233 }, -- Dense Bladestone + [83257] = { questType = "weekly", skillLineID = 164, profession = "Blacksmithing", item = 225232 }, -- Coreway Billet + [83258] = { questType = "weekly", skillLineID = 333, profession = "Enchanting", item = 225231 }, -- Powdered Fulgurance + [83259] = { questType = "weekly", skillLineID = 333, profession = "Enchanting", item = 225230 }, -- Crystalline Repository + [83260] = { questType = "weekly", skillLineID = 202, profession = "Engineering", item = 225228 }, -- Rust-Locked Mechanism + [83261] = { questType = "weekly", skillLineID = 202, profession = "Engineering", item = 225229 }, -- Earthen Induction Coil + [83264] = { questType = "weekly", skillLineID = 773, profession = "Inscription", item = 225226 }, -- Striated Inkstone + [83262] = { questType = "weekly", skillLineID = 773, profession = "Inscription", item = 225227 }, -- Wax-sealed Records + [83265] = { questType = "weekly", skillLineID = 755, profession = "Jewelcrafting", item = 225224 }, -- Diaphanous Gem Shards + [83266] = { questType = "weekly", skillLineID = 755, profession = "Jewelcrafting", item = 225225 }, -- Deepstone Fragment + [83268] = { questType = "weekly", skillLineID = 165, profession = "Leatherworking", item = 225222 }, -- Stone-Leather Swatch + [83267] = { questType = "weekly", skillLineID = 165, profession = "Leatherworking", item = 225223 }, -- Sturdy Nerubian Carapace + [83270] = { questType = "weekly", skillLineID = 197, profession = "Tailoring", item = 225220 }, -- Chitin Needle + [83269] = { questType = "weekly", skillLineID = 197, profession = "Tailoring", item = 225221 }, -- Spool of Webweave + }, + knowledge_tww_treatise = { + [83725] = { questType = "weekly", skillLineID = 171, profession = "Alchemy" }, + [83726] = { questType = "weekly", skillLineID = 164, profession = "Blacksmithing" }, + [83727] = { questType = "weekly", skillLineID = 333, profession = "Enchanting" }, + [83728] = { questType = "weekly", skillLineID = 202, profession = "Engineering" }, + [83730] = { questType = "weekly", skillLineID = 773, profession = "Inscription" }, + [83731] = { questType = "weekly", skillLineID = 755, profession = "Jewelcrafting" }, + [83732] = { questType = "weekly", skillLineID = 165, profession = "Leatherworking" }, + [83735] = { questType = "weekly", skillLineID = 197, profession = "Tailoring" }, + [83729] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, + [83733] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, + [83734] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, + }, + knowledge_tww_gather = { + [81416] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, -- Deepgrove Petal 1 + [81417] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, -- Deepgrove Petal 2 + [81418] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, -- Deepgrove Petal 3 + [81419] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, -- Deepgrove Petal 4 + [81420] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, -- Deepgrove Petal 5 + [81421] = { questType = "weekly", skillLineID = 182, profession = "Herbalism" }, -- Deepgrove Rose + + [83050] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, -- Slab of Slate 1 + [83051] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, -- Slab of Slate 2 + [83052] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, -- Slab of Slate 3 + [83053] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, -- Slab of Slate 4 + [83054] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, -- Slab of Slate 5 + [83049] = { questType = "weekly", skillLineID = 186, profession = "Mining" }, -- Erosion Polished Slate + + [81459] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, -- Toughened Tempest Pelt 1 + [81460] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, -- Toughened Tempest Pelt 2 + [81461] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, -- Toughened Tempest Pelt 3 + [81462] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, -- Toughened Tempest Pelt 4 + [81463] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, -- Toughened Tempest Pelt 5 + [81464] = { questType = "weekly", skillLineID = 393, profession = "Skinning" }, -- Abyssal Fur + + [84290] = { questType = "weekly", skillLineID = 333, profession = "Enchanting" }, -- Fleeting Arcane Manifestation 1 + [84291] = { questType = "weekly", skillLineID = 333, profession = "Enchanting" }, -- Fleeting Arcane Manifestation 2 + [84292] = { questType = "weekly", skillLineID = 333, profession = "Enchanting" }, -- Fleeting Arcane Manifestation 3 + [84293] = { questType = "weekly", skillLineID = 333, profession = "Enchanting" }, -- Fleeting Arcane Manifestation 4 + [84294] = { questType = "weekly", skillLineID = 333, profession = "Enchanting" }, -- Fleeting Arcane Manifestation 5 + [84295] = { questType = "weekly", skillLineID = 333, profession = "Enchanting" }, -- Gleaming Telluric Crystal + }, + knowledge_tww_weeklies_quest = { + [84133] = { questType = "weekly", log = true }, -- Alchemy + [84127] = { questType = "weekly", log = true }, -- Blacksmithing + + [84085] = { questType = "weekly", log = true }, --Enchanting + [84086] = { questType = "weekly", log = true }, --Enchanting + [84134] = { questType = "weekly", log = true }, --Enchanting + [84084] = { questType = "weekly", log = true }, --Enchanting + + [84128] = { questType = "weekly", log = true }, -- Engineering + [84129] = { questType = "weekly", log = true }, -- Inscription + [84130] = { questType = "weekly", log = true }, -- Jewelcrafting + [84131] = { questType = "weekly", log = true }, -- Leatherworking + [84132] = { questType = "weekly", log = true }, -- Tailoring + + [82916] = { questType = "weekly", log = true }, -- Herbalism + [82958] = { questType = "weekly", log = true }, -- Herbalism + [82962] = { questType = "weekly", log = true }, -- Herbalism + [82965] = { questType = "weekly", log = true }, -- Herbalism + [82970] = { questType = "weekly", log = true }, -- Herbalism + + [83102] = { questType = "weekly", log = true }, -- Mining + [83103] = { questType = "weekly", log = true }, -- Mining + [83104] = { questType = "weekly", log = true }, -- Mining + [83106] = { questType = "weekly", log = true }, -- Mining + + [82992] = { questType = "weekly", log = true }, -- Skinning + [82993] = { questType = "weekly", log = true }, -- Skinning + [83097] = { questType = "weekly", log = true }, -- Skinning + [83098] = { questType = "weekly", log = true }, -- Skinning + }, + + -- 11.1 + undermine_weeklies = { + [85869] = { questType = "weekly", log = true }, + [86775] = { questType = "weekly", log = true }, + [85879] = { questType = "weekly", log = true }, + + [85553] = { questType = "weekly", log = true }, + [85554] = { questType = "weekly", log = true }, + [85913] = { questType = "weekly", log = true }, + [85914] = { questType = "weekly", log = true }, + [85944] = { questType = "weekly", log = true }, + [85945] = { questType = "weekly", log = true }, + [85960] = { questType = "weekly", log = true }, + [85962] = { questType = "weekly", log = true }, + [86177] = { questType = "weekly", log = true }, + [86178] = { questType = "weekly", log = true }, + [86179] = { questType = "weekly", log = true }, + [86180] = { questType = "weekly", log = true }, + }, + undermine_lieutenants_mythic = { + [88860] = { questType = "weekly", name = "Gorbo" }, + [88868] = { questType = "weekly", name = "Trashmaster Blazedump" }, + [88847] = { questType = "weekly", name = "Skiggy Muckheimer" }, + [88832] = { questType = "weekly", name = "Scraps" }, + [88843] = { questType = "weekly", name = "King Flamespite" }, + [88839] = { questType = "weekly", name = "Professor Boomspark" }, + }, + weekly_bounti_map = { + [86371] = { questType = "weekly" }, + }, + nightfall_weekly = { + [89295] = { questType = "weekly" }, + }, + saltherils_soiree = { + [90573] = { questType = "weekly", warband = true, log = true }, + [90574] = { questType = "weekly", warband = true, log = true }, + [90575] = { questType = "weekly", warband = true, log = true }, + [90576] = { questType = "weekly", warband = true, log = true }, + }, + abundance = { + [89507] = { questType = "weekly", warband = true, log = true }, + }, + lost_legends = { + [88993] = { questType = "weekly", warband = true, log = true }, + [88994] = { questType = "weekly", warband = true, log = true }, + [88995] = { questType = "weekly", warband = true, log = true }, + [88996] = { questType = "weekly", warband = true, log = true }, + [88997] = { questType = "weekly", warband = true, log = true }, + [88998] = { questType = "weekly", warband = true, log = true }, + -- [89268] = {questType = 'weekly', warband = true, log = true}, + }, + stormarion_assault = { + [90962] = { questType = "weekly", warband = true, log = true }, + }, + special_assignments = { + [92139] = { questType = "weekly", warband = true, log = true }, + [92145] = { questType = "weekly", warband = true, log = true }, + [93244] = { questType = "weekly", warband = true, log = true }, + [92063] = { questType = "weekly", warband = true, log = true }, + }, + -- World Boss + world_boss = { + [92560] = { questType = "weekly", log = true }, -- Lu'ashal + [92123] = { questType = "weekly", log = true }, -- Cragpine's Treevenge + [92034] = { questType = "weekly", log = true }, -- Thorm'belan + [92636] = { questType = "weekly", log = true }, -- Predaxas + }, + preys_nightmare = { + [91211] = { questType = 'weekly', log = true }, + [91213] = { questType = 'weekly', log = true }, + [91215] = { questType = 'weekly', log = true }, + [91217] = { questType = 'weekly', log = true }, + [91219] = { questType = 'weekly', log = true }, + [91221] = { questType = 'weekly', log = true }, + [91223] = { questType = 'weekly', log = true }, + [91225] = { questType = 'weekly', log = true }, + [91227] = { questType = 'weekly', log = true }, + [91229] = { questType = 'weekly', log = true }, + [91231] = { questType = 'weekly', log = true }, + [91233] = { questType = 'weekly', log = true }, + [91235] = { questType = 'weekly', log = true }, + [91237] = { questType = 'weekly', log = true }, + [91239] = { questType = 'weekly', log = true }, + [91241] = { questType = 'weekly', log = true }, + [91256] = { questType = 'weekly', log = true }, + [91258] = { questType = 'weekly', log = true }, + [91257] = { questType = 'weekly', log = true }, + [91259] = { questType = 'weekly', log = true }, + [91260] = { questType = 'weekly', log = true }, + [91261] = { questType = 'weekly', log = true }, + [91262] = { questType = 'weekly', log = true }, + [91263] = { questType = 'weekly', log = true }, + [91265] = { questType = 'weekly', log = true }, + [91264] = { questType = 'weekly', log = true }, + [91266] = { questType = 'weekly', log = true }, + [91267] = { questType = 'weekly', log = true }, + [91268] = { questType = 'weekly', log = true }, + [91269] = { questType = 'weekly', log = true }, + }, + nightmarish_task = { + [94446] = { questType = 'weekly', log = true }, + } } PermoksAccountManager.locale = { - currency = { - ['renown'] = C_CurrencyInfo.GetBasicCurrencyInfo(1822).name, - ['soul_ash'] = C_CurrencyInfo.GetBasicCurrencyInfo(1828).name, - ['stygia'] = C_CurrencyInfo.GetBasicCurrencyInfo(1767).name, - ['reservoir_anima'] = C_CurrencyInfo.GetBasicCurrencyInfo(1813).name, - ['redeemed_soul'] = C_CurrencyInfo.GetBasicCurrencyInfo(1810).name, - ['conquest'] = C_CurrencyInfo.GetBasicCurrencyInfo(1602).name, - ['honor'] = C_CurrencyInfo.GetBasicCurrencyInfo(1792).name, - ['valor'] = C_CurrencyInfo.GetBasicCurrencyInfo(1191).name - }, - raids = { - nathria = { - ['deDE'] = 'Castle Nathria', - ['enUS'] = 'Castle Nathria', - ['enGB'] = 'Castle Nathria', - ['esES'] = 'Castle Nathria', - ['esMX'] = 'Castle Nathria', - ['frFR'] = 'Castle Nathria', - ['itIT'] = 'Castle Nathria' - } - } + currency = { + ["renown"] = C_CurrencyInfo.GetBasicCurrencyInfo(1822).name, + ["soul_ash"] = C_CurrencyInfo.GetBasicCurrencyInfo(1828).name, + ["stygia"] = C_CurrencyInfo.GetBasicCurrencyInfo(1767).name, + ["reservoir_anima"] = C_CurrencyInfo.GetBasicCurrencyInfo(1813).name, + ["redeemed_soul"] = C_CurrencyInfo.GetBasicCurrencyInfo(1810).name, + ["conquest"] = C_CurrencyInfo.GetBasicCurrencyInfo(1602).name, + ["honor"] = C_CurrencyInfo.GetBasicCurrencyInfo(1792).name, + ["valor"] = C_CurrencyInfo.GetBasicCurrencyInfo(1191).name, + }, + raids = { + nathria = { + ["deDE"] = "Castle Nathria", + ["enUS"] = "Castle Nathria", + ["enGB"] = "Castle Nathria", + ["esES"] = "Castle Nathria", + ["esMX"] = "Castle Nathria", + ["frFR"] = "Castle Nathria", + ["itIT"] = "Castle Nathria", + }, + }, } PermoksAccountManager.sanctum = { - [1] = { - [1] = 312, -- Anima Conductor - [2] = 308, -- Transport Network - [3] = 316, -- Command Table - --[4] = 327, -- Resevoir Upgrades - [5] = 320 -- Path of Ascension - }, - [2] = { - [1] = 314, -- Anima Conductor - [2] = 309, -- Transport Network - [3] = 317, -- Command Table - --[4] = 326, -- Resevoir Upgrades - [5] = 324 -- Ember Court - }, - [3] = { - [1] = 311, -- Anima Conductor - [2] = 307, -- Transport Network - [3] = 315, -- Command Table - --[4] = 328, -- Resevoir Upgrades - [5] = 319 -- The Queen's Conservatory - }, - [4] = { - [1] = 313, -- Anima Conductor - [2] = 310, -- Transport Network - [3] = 318, -- Command Table - --[4] = 329, -- Resevoir Upgrades - [5] = 321 -- Abomination Factory - } + [1] = { + [1] = 312, -- Anima Conductor + [2] = 308, -- Transport Network + [3] = 316, -- Command Table + --[4] = 327, -- Resevoir Upgrades + [5] = 320, -- Path of Ascension + }, + [2] = { + [1] = 314, -- Anima Conductor + [2] = 309, -- Transport Network + [3] = 317, -- Command Table + --[4] = 326, -- Resevoir Upgrades + [5] = 324, -- Ember Court + }, + [3] = { + [1] = 311, -- Anima Conductor + [2] = 307, -- Transport Network + [3] = 315, -- Command Table + --[4] = 328, -- Resevoir Upgrades + [5] = 319, -- The Queen's Conservatory + }, + [4] = { + [1] = 313, -- Anima Conductor + [2] = 310, -- Transport Network + [3] = 318, -- Command Table + --[4] = 329, -- Resevoir Upgrades + [5] = 321, -- Abomination Factory + }, } function PermoksAccountManager:getDefaultCategories() - return default_categories + return default_categories end PermoksAccountManager.vault_rewards = { - -- MythicPlus - [Enum.WeeklyRewardChestThresholdType.Activities] = { - [-1] = 230, - [0] = 246, - [2] = 259, - [3] = 259, - [4] = 263, - [5] = 263, - [6] = 266, - [7] = 269, - [8] = 269, - [9] = 269, - [10] = 272, - }, - -- World/Delves - [Enum.WeeklyRewardChestThresholdType.World] = { - [1] = 233, - [2] = 237, - [3] = 240, - [4] = 243, - [5] = 246, - [6] = 253, - [7] = 256, - [8] = 259, - [9] = 259, - [10] = 259, - [11] = 259, - }, - -- Raid - [Enum.WeeklyRewardChestThresholdType.Raid] = { - [17] = 233, - [14] = 246, - [15] = 259, - [16] = 272, - } + -- MythicPlus + [Enum.WeeklyRewardChestThresholdType.Activities] = { + [-1] = 230, + [0] = 246, + [2] = 259, + [3] = 259, + [4] = 263, + [5] = 263, + [6] = 266, + [7] = 269, + [8] = 269, + [9] = 269, + [10] = 272, + }, + -- World/Delves + [Enum.WeeklyRewardChestThresholdType.World] = { + [1] = 233, + [2] = 237, + [3] = 240, + [4] = 243, + [5] = 246, + [6] = 253, + [7] = 256, + [8] = 259, + [9] = 259, + [10] = 259, + [11] = 259, + }, + -- Raid + [Enum.WeeklyRewardChestThresholdType.Raid] = { + [17] = 233, + [14] = 246, + [15] = 259, + [16] = 272, + }, } PermoksAccountManager.ICONSTRINGS = { - left = '\124T%d:18:18\124t %s', - right = '%s \124T%d:18:18\124t' + left = "\124T%d:18:18\124t %s", + right = "%s \124T%d:18:18\124t", } PermoksAccountManager.ICONBANKSTRINGS = { - left = '\124T%d:18:18\124t %s (%s)', - right = '%s (%s) \124T%d:18:18\124t' + left = "\124T%d:18:18\124t %s (%s)", + right = "%s (%s) \124T%d:18:18\124t", } PermoksAccountManager.encounterOrder = { - [2393] = 1, - [2429] = 2, - [2422] = 3, - [2428] = 4, - [2418] = 5, - [2420] = 6, - [2426] = 7, - [2394] = 8, - [2425] = 9, - [2424] = 10, - [2435] = 11, - [2442] = 12, - [2439] = 13, - [2445] = 14, - [2444] = 15, - [2443] = 16, - [2446] = 17, - [2447] = 18, - [2440] = 19, - [2441] = 20, - [2458] = 21, - [2459] = 22, - [2470] = 23, - [2460] = 24, - [2465] = 25, - [2463] = 26, - [2461] = 27, - [2469] = 28, - [2457] = 29, - [2467] = 30, - [2464] = 31, + [2393] = 1, + [2429] = 2, + [2422] = 3, + [2428] = 4, + [2418] = 5, + [2420] = 6, + [2426] = 7, + [2394] = 8, + [2425] = 9, + [2424] = 10, + [2435] = 11, + [2442] = 12, + [2439] = 13, + [2445] = 14, + [2444] = 15, + [2443] = 16, + [2446] = 17, + [2447] = 18, + [2440] = 19, + [2441] = 20, + [2458] = 21, + [2459] = 22, + [2470] = 23, + [2460] = 24, + [2465] = 25, + [2463] = 26, + [2461] = 27, + [2469] = 28, + [2457] = 29, + [2467] = 30, + [2464] = 31, } diff --git a/modules/quests.lua b/modules/quests.lua index 1cd8613..8c13341 100644 --- a/modules/quests.lua +++ b/modules/quests.lua @@ -1,116 +1,119 @@ local addonName, PermoksAccountManager = ... -local LibQTip = LibStub('LibQTip-1.0') -local L = LibStub('AceLocale-3.0'):GetLocale(addonName) +local LibQTip = LibStub("LibQTip-1.0") +local L = LibStub("AceLocale-3.0"):GetLocale(addonName) local COLOR_COMPLETED = "00FF00" local COLOR_NOT_COMPLETED = "FF0000" local frequencyNames = { - [0] = 'default', - [1] = 'daily', - [2] = 'weekly' + [0] = "default", + [1] = "daily", + [2] = "weekly", } local completedString = { - [1] = '|cff00ff00Completed|r', - [2] = '|cffff0000Not Completed|r' + [1] = "|cff00ff00Completed|r", + [2] = "|cffff0000Not Completed|r", } local default = { daily = { visible = {}, - hidden = {} + hidden = {}, }, weekly = { visible = {}, - hidden = {} + hidden = {}, }, biweekly = { visible = {}, - hidden = {} + hidden = {}, }, relics = { visible = {}, - hidden = {} + hidden = {}, }, unlocks = { visible = {}, - hidden = {} - } + hidden = {}, + }, } -local module = 'quests' +local module = "quests" local labelRows = { -- General Weeklies dungeon_weekly = { - IDs = {80184, 80185, 80186, 80187, 80188, 80189}, - label = L['Dungeon Quests'], - type = 'quest', - questType = 'weekly', + IDs = { 80184, 80185, 80186, 80187, 80188, 80189 }, + label = L["Dungeon Quests"], + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', + visibility = "visible", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.dungeon_quests) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.dungeon_quests) == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, completed_world_quests = { - label = 'Done WQs', - type = 'worldquest', + label = "Done WQs", + type = "worldquest", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedWorldQuestsTooltip_OnEnter(...) end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, pvp_weekly = { - IDs = {80184, 80185, 80186, 80187, 80188, 80189}, - label = L['PVP Quests'], - type = 'quest', - questType = 'weekly', + IDs = { 80184, 80185, 80186, 80187, 80188, 80189 }, + label = L["PVP Quests"], + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', + visibility = "visible", required = 1, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.pvp_quests) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.pvp_quests) == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, pvp_sparks = { - IDs = {81793, 81794, 81795, 81796}, - label = 'Sparks of War', - type = 'quest', - questType = 'weekly', + IDs = { 81793, 81794, 81795, 81796 }, + label = "Sparks of War", + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, weekend_event = { - IDs = {83345, 83347, 83357, 83358, 83366, 83359, 83362, 83365, 83364}, - label = L['Weekend Event'], - type = 'quest', - questType = 'weekly', - visibility = 'visible', + IDs = { 83345, 83347, 83357, 83358, 83366, 83359, 83362, 83365, 83364 }, + label = L["Weekend Event"], + type = "quest", + questType = "weekly", + visibility = "visible", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.weekend_event) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.weekend_event) == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, -- 9.0 Shadowlands korthia_dailies = { - label = L['Korthia Dailies'], - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = L["Korthia Dailies"], + type = "quest", + questType = "daily", + visibility = "visible", required = function(alt_data) local unlocks = alt_data.questInfo.unlocks and alt_data.questInfo.unlocks.visible if unlocks then @@ -120,416 +123,441 @@ local labelRows = { return 3 end, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.daily and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.visible.korthia_dailies) >= 3 + return alt_data.questInfo + and alt_data.questInfo.daily + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.visible.korthia_dailies) + >= 3 end, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, riftbound_cache = { - label = L['Riftbound Caches'], - type = 'quest', - questType = 'daily', - visibility = 'hidden', + label = L["Riftbound Caches"], + type = "quest", + questType = "daily", + visibility = "hidden", required = 4, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.daily and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.riftbound_cache) >= 4 + return alt_data.questInfo + and alt_data.questInfo.daily + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.riftbound_cache) >= 4 end, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, relic_creatures = { - label = L['Relic Creatures'], - type = 'quest', - questType = 'daily', - visibility = 'hidden', + label = L["Relic Creatures"], + type = "quest", + questType = "daily", + visibility = "hidden", required = 15, plus = true, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.daily and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.relic_creatures) >= 15 + return alt_data.questInfo + and alt_data.questInfo.daily + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.relic_creatures) >= 15 end, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, dailyQuestCounter = { - label = 'Daily Quests', + label = "Daily Quests", data = function(alt_data) - return alt_data.completedDailies and - PermoksAccountManager:CreateFractionString((alt_data.completedDailies.num or 0), 25) + return alt_data.completedDailies + and PermoksAccountManager:CreateFractionString((alt_data.completedDailies.num or 0), 25) end, - group = 'resetDaily', - version = WOW_PROJECT_CATACLYSM_CLASSIC + group = "resetDaily", + version = WOW_PROJECT_CATACLYSM_CLASSIC, }, relic_gorger = { - label = L['Relic Gorger'], - type = 'quest', - questType = 'daily', - visibility = 'hidden', + label = L["Relic Gorger"], + type = "quest", + questType = "daily", + visibility = "hidden", required = 4, plus = true, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.daily and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.relic_gorger) >= 4 + return alt_data.questInfo + and alt_data.questInfo.daily + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.relic_gorger) >= 4 end, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, helsworn_chest = { - label = L['Helsworn Chest'], - type = 'quest', - questType = 'daily', - visibility = 'hidden', + label = L["Helsworn Chest"], + type = "quest", + questType = "daily", + visibility = "hidden", plus = true, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.daily and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.helsworn_chest) >= 1 + return alt_data.questInfo + and alt_data.questInfo.daily + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.helsworn_chest) >= 1 end, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, assault_vessels = { - label = L['Assault Vessels'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = L["Assault Vessels"], + type = "quest", + questType = "weekly", + visibility = "hidden", required = 4, tooltip = function(button, alt_data, column) PermoksAccountManager:QuestTooltip_OnEnter(button, alt_data, column) end, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.assault_vessels) >= 2 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.assault_vessels) >= 2 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, rift_vessels = { - label = L['Rift Vessels'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = L["Rift Vessels"], + type = "quest", + questType = "weekly", + visibility = "hidden", required = 3, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.rift_vessels) >= 3 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.rift_vessels) >= 3 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, adamant_vault_conduit = { - label = L['AV Conduit'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = L["AV Conduit"], + type = "quest", + questType = "weekly", + visibility = "hidden", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.adamant_vault_conduit) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests( + alt_data.questInfo.weekly.hidden.adamant_vault_conduit + ) + == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, maw_dailies = { - label = L['Maw Dailies'], - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = L["Maw Dailies"], + type = "quest", + questType = "daily", + visibility = "visible", required = 2, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.daily and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.maw_dailies) >= 2 + return alt_data.questInfo + and alt_data.questInfo.daily + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.daily.maw_dailies) >= 2 end, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, korthia_world_boss = { - label = 'World Boss Korthia', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "World Boss Korthia", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, anima_weekly = { - label = L['1k Anima'], - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = L["1k Anima"], + type = "quest", + questType = "weekly", + visibility = "visible", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.visible.anima_weekly) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.visible.anima_weekly) == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, maw_souls = { - label = L['Return Souls'], - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = L["Return Souls"], + type = "quest", + questType = "weekly", + visibility = "visible", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.visible.maw_souls) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.visible.maw_souls) == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, korthia_weekly = { - label = L['Korthia Weekly'], - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = L["Korthia Weekly"], + type = "quest", + questType = "weekly", + visibility = "visible", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.visible.korthia_weekly) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.visible.korthia_weekly) + == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, tormentors_weekly = { - label = L['Tormentors'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = L["Tormentors"], + type = "quest", + questType = "weekly", + visibility = "hidden", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.tormentors_weekly) >= 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.tormentors_weekly) + >= 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, tormentors_locations = { - label = L['Tormentors Rep'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = L["Tormentors Rep"], + type = "quest", + questType = "weekly", + visibility = "hidden", required = 6, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.tormentors_locations) >= 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.tormentors_locations) >= 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, maw_assault = { - label = L['Maw Assault'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = L["Maw Assault"], + type = "quest", + questType = "weekly", + visibility = "hidden", required = 2, isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.assault) >= 2 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.assault) >= 2 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, battle_plans = { - label = L['Maw Battle Plans'], - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = L["Maw Battle Plans"], + type = "quest", + questType = "weekly", + visibility = "visible", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.battle_plans) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.battle_plans) == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, korthia_supplies = { - label = L['Korthia Supplies'], - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = L["Korthia Supplies"], + type = "quest", + questType = "weekly", + visibility = "visible", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.korthia_supplies) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.korthia_supplies) == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, containing_the_helsworn = { - label = L['Maw WQ'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = L["Maw WQ"], + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, wrath = { - label = L['Wrath of the Jailer'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = L["Wrath of the Jailer"], + type = "quest", + questType = "weekly", + visibility = "hidden", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.wrath) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.wrath) == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, hunt = { - label = L['The Hunt'], - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = L["The Hunt"], + type = "quest", + questType = "weekly", + visibility = "hidden", isComplete = function(alt_data) - return alt_data.questInfo and alt_data.questInfo.weekly and - PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hunt) == 1 + return alt_data.questInfo + and alt_data.questInfo.weekly + and PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hunt) == 1 end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, --- 9.2 sandworn_chest = { - label = 'Sandworn Chest', - type = 'quest', - questType = 'daily', - visibility = 'hidden', - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + label = "Sandworn Chest", + type = "quest", + questType = "daily", + visibility = "hidden", + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, zereth_mortis_dailies = { - label = 'Dailies', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Dailies", + type = "quest", + questType = "daily", + visibility = "visible", required = 2, unlock = { - key = 'zereth_mortis_three_dailies', - charKey = 'researchInfo', + key = "zereth_mortis_three_dailies", + charKey = "researchInfo", required = 3, }, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, zereth_mortis_weekly = { - label = 'Patterns', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Patterns", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, zereth_mortis_wqs = { - label = 'ZM WQs', - type = 'quest', - questType = 'daily', - visibility = 'hidden', + label = "ZM WQs", + type = "quest", + questType = "daily", + visibility = "hidden", required = 2, unlock = { - key = 'zereth_mortis_three_wqs', - charKey = 'researchInfo', + key = "zereth_mortis_three_wqs", + charKey = "researchInfo", required = 3, }, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, zereth_mortis_world_boss = { - label = 'ZM WB', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "ZM WB", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, jiro_cyphers = { - label = 'Jiro Cyphers', - type = 'quest', - questType = 'daily', - visibility = 'hidden', + label = "Jiro Cyphers", + type = "quest", + questType = "daily", + visibility = "hidden", required = 3, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, puzzle_caches = { - label = 'Puzzle Caches', - type = 'quest', - questType = 'daily', - visibility = 'hidden', + label = "Puzzle Caches", + type = "quest", + questType = "daily", + visibility = "hidden", required = 5, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, -- 10.0 Dragonflight dragonflight_world_boss = { - label = 'World Boss DF', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "World Boss DF", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, aiding_the_accord = { - label = 'Aiding the Accord', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Aiding the Accord", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, grand_hunts = { - label = 'Grand Hunts', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', + label = "Grand Hunts", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", required = 3, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, marrukai_camp = { - label = 'Maruukai Camp', - type = 'quest', - questType = 'biweekly', - visibility = 'visible', - group = 'resetBiweekly', + label = "Maruukai Camp", + type = "quest", + questType = "biweekly", + visibility = "visible", + group = "resetBiweekly", required = 4, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, brackenhide_hollow_rares = { - label = 'Brackenhide Rares', - type = 'quest', - questType = 'daily', - visibility = 'hidden', - group = 'resetDaily', + label = "Brackenhide Rares", + type = "quest", + questType = "daily", + visibility = "hidden", + group = "resetDaily", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 4, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, trial_of_flood = { - label = 'Trial of Flood', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Trial of Flood", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, trial_of_elements = { - label = 'Trial of Elements', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Trial of Elements", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, trial_of_storms = { - label = 'Trial of Storms', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Trial of Storms", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, knowledge_df_mobs = { - label = '(DF) Gather Knowledge', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = "(DF) Gather Knowledge", + type = "quest", + questType = "weekly", + visibility = "hidden", tooltip = true, customTooltip = function(...) PermoksAccountManager:KnowledgeTooltip_OnEnter(...) @@ -546,14 +574,14 @@ local labelRows = { [186] = 6, [393] = 6, }, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, knowledge_df_treasures = { - label = '(DF) Treasure Knowledge', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = "(DF) Treasure Knowledge", + type = "quest", + questType = "weekly", + visibility = "hidden", tooltip = true, customTooltip = function(...) PermoksAccountManager:KnowledgeTooltip_OnEnter(...) @@ -564,28 +592,28 @@ local labelRows = { [186] = -2, [393] = -2, }, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, knowledge_df_treatise = { - label = '(DF) Treatise Knowledge', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = "(DF) Treatise Knowledge", + type = "quest", + questType = "weekly", + visibility = "hidden", tooltip = true, customTooltip = function(...) PermoksAccountManager:KnowledgeTooltip_OnEnter(...) end, tooltipRequired = 1, required = 2, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, knowledge_df_weeklies_craft = { - label = '(DF) Crafting Quests', - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = "(DF) Crafting Quests", + type = "quest", + questType = "weekly", + visibility = "visible", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) @@ -596,27 +624,27 @@ local labelRows = { [186] = -1, [393] = -1, }, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, knowledge_df_weeklies_loot = { - label = '(DF) Loot Quests', - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = "(DF) Loot Quests", + type = "quest", + questType = "weekly", + visibility = "visible", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 2, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE - }, - knowledge_df_weeklies_order ={ - label = '(DF) Crafting Order Quests', - type = 'quest', - questType = 'weekly', - visibility = 'visible', + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, + }, + knowledge_df_weeklies_order = { + label = "(DF) Crafting Order Quests", + type = "quest", + questType = "weekly", + visibility = "visible", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) @@ -629,334 +657,365 @@ local labelRows = { [333] = -1, [393] = -1, }, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, community_feast = { - label = 'Community Feast', - type = 'quest', - questType = 'daily', - visibility = 'hidden', - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + label = "Community Feast", + type = "quest", + questType = "daily", + visibility = "hidden", + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, iskaara_story = { - label = 'Iskaara Story Scroll', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Iskaara Story Scroll", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, obsidian_citadel_rares = { - label = 'Obsidian Citadel Rares', - type = 'quest', - questType = 'daily', - visibility = 'hidden', + label = "Obsidian Citadel Rares", + type = "quest", + questType = "daily", + visibility = "hidden", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 8, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, fish_turnins_df = { - label = 'Fish Turn Ins', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = "Fish Turn Ins", + type = "quest", + questType = "weekly", + visibility = "hidden", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 6, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, tyrhold_rares = { - label = 'Tyrhold Rare', - type = 'quest', - questType = 'daily', + label = "Tyrhold Rare", + type = "quest", + questType = "daily", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, - visibility = 'hidden', - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + visibility = "hidden", + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, iskaara_fishing_dailies = { - label = 'Iskaara Dailies', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Iskaara Dailies", + type = "quest", + questType = "daily", + visibility = "visible", required = 2, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, forbidden_reach_weeklies = { - label = 'FR Weeklies', - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = "FR Weeklies", + type = "quest", + questType = "weekly", + visibility = "visible", required = 5, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, forbidden_reach_elite_wqs = { - label = 'FR WQ', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "FR WQ", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, forbidden_reach_tasks = { - label = 'FR Dailies', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "FR Dailies", + type = "quest", + questType = "daily", + visibility = "visible", required = 2, - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, forbidden_reach_task_picked = { - label = 'FR Faction Picked', - type = 'quest', - questType = 'daily', - visibility = 'visible', - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + label = "FR Faction Picked", + type = "quest", + questType = "daily", + visibility = "visible", + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, community_feast_weekly = { - label = 'Community Feast', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Community Feast", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, dragonbane_keep_siege = { - label = 'Siege', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Siege", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, dragonbane_keep_key = { - label = 'Citadel WQ', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Citadel WQ", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, dragonbane_keep_weeklies = { - label = 'Citadel Weeklies', - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = "Citadel Weeklies", + type = "quest", + questType = "weekly", + visibility = "visible", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 6, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, show_your_mettle = { - label = 'Show Your Mettle', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Show Your Mettle", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, loamm_niffen_weekly = { - label = 'AWA: Cavern', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "AWA: Cavern", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, researchers_under_fire_weekly = { - label = 'Under Fire', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Under Fire", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, zc_wb_wq = { - label = 'Zaralek WB', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Zaralek WB", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, dig_maps_weeklies = { - label = 'Sniffenseeking', - type = 'quest', - questType = 'weekly', + label = "Sniffenseeking", + type = "quest", + questType = "weekly", required = 3, - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, dig_maps_received_weekly = { - label = 'Dig Maps', - type = 'quest', - questType = 'weekly', + label = "Dig Maps", + type = "quest", + questType = "weekly", required = 2, - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, proven_weekly = { - label = 'PVP Weekly', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "PVP Weekly", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, fyrak_assault = { - label = 'Fyrak Assault', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Fyrak Assault", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, glimerogg_racer_dailies = { - label = 'Glimerogg Dailies', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Glimerogg Dailies", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, zyrak_cavern_zone_events = { - label = 'Cavern Zone Events', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = "Cavern Zone Events", + type = "quest", + questType = "weekly", + visibility = "hidden", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, showAll = true, required = 18, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, time_rift = { - label = 'Time Needs Mending', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Time Needs Mending", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, time_rift_pod = { - label = 'Time Rift Weekly', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Time Rift Weekly", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, dreamsurge_weekly = { - label = 'Dreamsurge Weekly', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Dreamsurge Weekly", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, superbloom = { - label = 'Superbloom', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Superbloom", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, ed_wb_wq = { - label = 'Dream WB', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Dream WB", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, dream_wardens_weekly = { - label = 'AWA: Dream', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "AWA: Dream", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, dream_shipments = { - label = 'Shipments', - type = 'quest', - questType = 'weekly', + label = "Shipments", + type = "quest", + questType = "weekly", required = 2, - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, anniversary_wb = { - label = 'Anniv. WBs.', - type = 'quest', - questType = 'daily', + label = "Anniv. WBs.", + type = "quest", + questType = "daily", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 4, - visibility = 'hidden', - group = 'resetDaily', - version = WOW_PROJECT_MAINLINE + visibility = "hidden", + group = "resetDaily", + version = WOW_PROJECT_MAINLINE, }, big_dig = { - label = 'The Big Dig', - type = 'quest', - questType = 'weekly', + label = "The Big Dig", + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, - -- 11.0 The War Within + -- 11.0 The War Within -- world activities tww_world_boss = { - label = 'World Boss TWW', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "World Boss TWW", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, worldsoul_weekly = { - IDs = { - 82483, 82489, 82452, 82516, 82458, 82482, 82511, 82486, 82492, 82503, - 82453, 82488, 82485, 82659, 82494, 82498, 82490, 82510, 82491, 82504, - 82495, 82506, 82496, 82507, 82497, 82508, 82509, 82499, 82500, 82501, - 82512, 82505, 82502, 82487, 82493 + IDs = { + 82483, + 82489, + 82452, + 82516, + 82458, + 82482, + 82511, + 82486, + 82492, + 82503, + 82453, + 82488, + 82485, + 82659, + 82494, + 82498, + 82490, + 82510, + 82491, + 82504, + 82495, + 82506, + 82496, + 82507, + 82497, + 82508, + 82509, + 82499, + 82500, + 82501, + 82512, + 82505, + 82502, + 82487, + 82493, }, - label = 'Weekly Meta', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = "Weekly Meta", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, --weekly_meta = { -- PLACEHOLDER: Looks like this weekly doesn't reset but is just a timegated questline. Need better solution -- IDs = {82746, 82712, 82711, 82709, 82706, 82707, 82678, 82679}, @@ -973,217 +1032,251 @@ local labelRows = { -- version = WOW_PROJECT_MAINLINE -- }, archaic_cypher_key = { - IDs = {84370}, - label = 'Archaic Cypher Key', - type = 'quest', - questType = 'weekly', - warband = 'unique', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + IDs = { 84370 }, + label = "Archaic Cypher Key", + type = "quest", + questType = "weekly", + warband = "unique", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, the_theater_troupe = { - IDs = {83240}, - label = 'The Theater Troupe', - type = 'quest', - questType = 'weekly', + IDs = { 83240 }, + label = "The Theater Troupe", + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, rollin_down_in_the_deeps = { - IDs = {82946}, + IDs = { 82946 }, label = "Wax Weekly", -- Rollin' Down in the Deeps - type = 'quest', - questType = 'weekly', + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, gearing_up_for_trouble = { - IDs = {83333}, + IDs = { 83333 }, label = "Machine Weekly", -- Gearing Up for Trouble - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, awakening_the_machine = { - IDs = {84642, 84644, 84646, 84647}, - label = 'Awakening the Machine', - type = 'quest', - questType = 'weekly', + IDs = { 84642, 84644, 84646, 84647 }, + label = "Awakening the Machine", + type = "quest", + questType = "weekly", warband = true, - visibility = 'hidden', - group = 'resetWeekly', + visibility = "hidden", + group = "resetWeekly", required = 4, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, spreading_the_light = { - IDs = {76586}, - label = 'Spreading the Light', - type = 'quest', - questType = 'weekly', + IDs = { 76586 }, + label = "Spreading the Light", + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, lesser_keyflame_weeklies = { IDs = { - 76169, 76394, 76600, 76733, 76997, 78656, 78915, 78933, 78972, 79158, - 79173, 79216, 79346, 80004, 80562, 81574, 81632 + 76169, + 76394, + 76600, + 76733, + 76997, + 78656, + 78915, + 78933, + 78972, + 79158, + 79173, + 79216, + 79346, + 80004, + 80562, + 81574, + 81632, }, - label = 'Lesser Keyflames', - type = 'quest', - questType = 'weekly', + label = "Lesser Keyflames", + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', - group = 'resetWeekly', + visibility = "visible", + group = "resetWeekly", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 8, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, greater_keyflame_weeklies = { - IDs = {78590, 78657, 79329, 79380, 79469, 79470, 79471}, - label = 'Greater Keyflames', - type = 'quest', - questType = 'weekly', + IDs = { 78590, 78657, 79329, 79380, 79469, 79470, 79471 }, + label = "Greater Keyflames", + type = "quest", + questType = "weekly", warband = false, - visibility = 'visible', - group = 'resetWeekly', + visibility = "visible", + group = "resetWeekly", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 7, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, severed_threads_pact_chosen = { - IDs = {80544}, - label = 'Severed Threads Pact Chosen', - type = 'quest', - questType = 'weekly', - warband = 'unique', - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + IDs = { 80544 }, + label = "Severed Threads Pact Chosen", + type = "quest", + questType = "weekly", + warband = "unique", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, severed_threads_pact_weekly = { - IDs = {80670, 80671, 80672}, - label = 'Severed Threads', - type = 'quest', - questType = 'weekly', + IDs = { 80670, 80671, 80672 }, + label = "Severed Threads", + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, weekly_delve_reputation = { - IDs = {83317, 83319, 83318, 83320}, - label = 'Weekly Delve Reputation', - type = 'quest', - questType = 'weekly', - warband = 'unique', - visibility = 'hidden', - group = 'resetWeekly', + IDs = { 83317, 83319, 83318, 83320 }, + label = "Weekly Delve Reputation", + type = "quest", + questType = "weekly", + warband = "unique", + visibility = "hidden", + group = "resetWeekly", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 4, showAll = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, weekly_coffer_keys = { - IDs = {84736, 84737, 84738, 84739}, - label = 'Weekly Coffer Keys', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', + IDs = { 84736, 84737, 84738, 84739 }, + label = "Weekly Coffer Keys", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", required = 4, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, -- rares isle_of_dorne_rares = { - IDs = {84037, 84031, 84032, 84036, 84029, 84039, 84030, 84028, 84033, 84034, 84026, 84038}, - label = 'Isle of Dorne Rares', - type = 'quest', - questType = 'weekly', + IDs = { 84037, 84031, 84032, 84036, 84029, 84039, 84030, 84028, 84033, 84034, 84026, 84038 }, + label = "Isle of Dorne Rares", + type = "quest", + questType = "weekly", warband = true, - visibility = 'hidden', - group = 'resetWeekly', + visibility = "hidden", + group = "resetWeekly", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 12, showAll = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, ringing_deeps_rares = { - IDs = {84046, 84044, 84042, 84041, 84045, 84040, 84047, 84043, 84049, 84048, 84050}, - label = 'Ringing Deeps Rares', - type = 'quest', - questType = 'weekly', + IDs = { 84046, 84044, 84042, 84041, 84045, 84040, 84047, 84043, 84049, 84048, 84050 }, + label = "Ringing Deeps Rares", + type = "quest", + questType = "weekly", warband = true, - visibility = 'hidden', - group = 'resetWeekly', + visibility = "hidden", + group = "resetWeekly", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 11, showAll = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, hallowfall_rares = { - IDs = {84063, 84051, 84064, 84061, 84066, 84060, 84053, 84056, 84067, 84065, 84062, 84054, 84068, 84052, 84055, 84059, 84058, 84057}, - label = 'Hallowfall Rares', - type = 'quest', - questType = 'weekly', + IDs = { + 84063, + 84051, + 84064, + 84061, + 84066, + 84060, + 84053, + 84056, + 84067, + 84065, + 84062, + 84054, + 84068, + 84052, + 84055, + 84059, + 84058, + 84057, + }, + label = "Hallowfall Rares", + type = "quest", + questType = "weekly", warband = true, - visibility = 'hidden', - group = 'resetWeekly', + visibility = "hidden", + group = "resetWeekly", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 18, showAll = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, azj_kahet_rares = { - IDs = {84071, 84072, 84075, 84073, 84076, 84074, 84080, 84082, 84081, 84079, 84078, 84077, 84069, 84070}, - label = 'Azj-Kahet Rares', - type = 'quest', - questType = 'weekly', + IDs = { 84071, 84072, 84075, 84073, 84076, 84074, 84080, 84082, 84081, 84079, 84078, 84077, 84069, 84070 }, + label = "Azj-Kahet Rares", + type = "quest", + questType = "weekly", warband = true, - visibility = 'hidden', - group = 'resetWeekly', + visibility = "hidden", + group = "resetWeekly", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 14, showAll = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, one_time_reputation_rares = { - IDs = {85158, 85160, 85161, 85159, 85163, 85164, 85165, 85167, 85166, 85162}, - label = 'One-Time Reputation Rares', - type = 'quest', - questType = 'weekly', + IDs = { 85158, 85160, 85161, 85159, 85163, 85164, 85165, 85167, 85166, 85162 }, + label = "One-Time Reputation Rares", + type = "quest", + questType = "weekly", warband = true, - visibility = 'hidden', - group = 'resetWeekly', + visibility = "hidden", + group = "resetWeekly", achievementString = "(REP)", tooltip = true, customTooltip = function(...) @@ -1191,16 +1284,36 @@ local labelRows = { end, required = 10, showAll = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, undermine_rares = { - IDs = {84917, 84918, 84919, 84920, 84921, 84922, 84926, 84927, 84928, 85004, 84877, 84884, 84895, 84907, 84911, 86298, 86307, 86431, 86428}, - label = 'Undermine Rares', - type = 'quest', - questType = 'weekly', + IDs = { + 84917, + 84918, + 84919, + 84920, + 84921, + 84922, + 84926, + 84927, + 84928, + 85004, + 84877, + 84884, + 84895, + 84907, + 84911, + 86298, + 86307, + 86431, + 86428, + }, + label = "Undermine Rares", + type = "quest", + questType = "weekly", warband = true, - visibility = 'hidden', - group = 'resetWeekly', + visibility = "hidden", + group = "resetWeekly", achievementString = "(REP)", tooltip = true, customTooltip = function(...) @@ -1208,49 +1321,65 @@ local labelRows = { end, required = 19, showAll = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, undermine_weeklies = { - IDS = {85869, 86775, 85879, 85553, 85554, 85913, 85914, 85944, 85945, 85960, 85962, 86177, 86178, 86179, 86180}, - label = 'Undermine Weeklies', - type = 'quest', - questType = 'weekly', + IDS = { + 85869, + 86775, + 85879, + 85553, + 85554, + 85913, + 85914, + 85944, + 85945, + 85960, + 85962, + 86177, + 86178, + 86179, + 86180, + }, + label = "Undermine Weeklies", + type = "quest", + questType = "weekly", warband = true, - visibility = 'visible', - group = 'resetWeekly', + visibility = "visible", + group = "resetWeekly", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 7, showAll = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, weekly_bounti_map = { - IDS = {86371}, - label = 'Weekly Bount. Map', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + IDS = { 86371 }, + label = "Weekly Bount. Map", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, nightfall_weekly = { - IDS = {89295}, - label = 'Nightfall Weekly', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + IDS = { 89295 }, + label = "Nightfall Weekly", + type = "quest", + questType = "weekly", + visibility = "hidden", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, -- professions knowledge_tww_treasures = { - label = 'Loot Knowledge', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = "Loot Knowledge", + type = "quest", + questType = "weekly", + visibility = "hidden", tooltip = true, customTooltip = function(...) PermoksAccountManager:KnowledgeTooltip_OnEnter(...) @@ -1261,28 +1390,28 @@ local labelRows = { [186] = -2, [393] = -2, }, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, knowledge_tww_treatise = { - label = 'Treatise Knowledge', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = "Treatise Knowledge", + type = "quest", + questType = "weekly", + visibility = "hidden", tooltip = true, customTooltip = function(...) PermoksAccountManager:KnowledgeTooltip_OnEnter(...) end, tooltipRequired = 1, required = 2, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, knowledge_tww_gather = { - label = 'Gather Knowledge', - type = 'quest', - questType = 'weekly', - visibility = 'hidden', + label = "Gather Knowledge", + type = "quest", + questType = "weekly", + visibility = "hidden", tooltip = true, customTooltip = function(...) PermoksAccountManager:KnowledgeTooltip_OnEnter(...) @@ -1304,245 +1433,257 @@ local labelRows = { [393] = 6, [333] = 6, }, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, knowledge_tww_weeklies_quest = { - label = 'Profession Quests', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', + label = "Profession Quests", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", tooltip = true, customTooltip = function(...) PermoksAccountManager:CompletedQuestsTooltip_OnEnter(...) end, required = 2, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, -- 12.0 saltherils_soiree = { - IDS = {90573, 90574, 90575, 90576}, - label = 'Soiree (Eversong)', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', + IDS = { 90573, 90574, 90575, 90576 }, + label = "Soiree (Eversong)", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", warband = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, abundance = { - IDS = {89507}, - label = 'Abundance (Zul\'Aman)', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', + IDS = { 89507 }, + label = "Abundance (Zul'Aman)", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", warband = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, lost_legends = { - IDS = {89268}, - label = 'Legends (Harandar1)', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', + IDS = { 89268 }, + label = "Legends (Harandar1)", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", warband = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, stormarion_assault = { - IDS = {90962}, - label = 'Assault (Voidstorm)', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', + IDS = { 90962 }, + label = "Assault (Voidstorm)", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", warband = true, - version = WOW_PROJECT_MAINLINE + version = WOW_PROJECT_MAINLINE, }, special_assignments = { - IDS = {92139, 92145, 93244}, - label = 'Special Assignments', - type = 'quest', - questType = 'weekly', - visibility = 'visible', - group = 'resetWeekly', - required = 2, - version = WOW_PROJECT_MAINLINE + IDS = { 92139, 92145, 93244 }, + label = "Special Assignments", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + required = 3, + version = WOW_PROJECT_MAINLINE, }, world_boss = { - label = L['World Boss'] .. "Midnight", - type = 'quest', - questType = 'weekly', - visibility = 'visible', - -- isCompleteTest = true, - -- isComplete = function(alt_data) - -- return alt_data.questInfo and alt_data.questInfo.weekly and - -- PermoksAccountManager:GetNumCompletedQuests(alt_data.questInfo.weekly.hidden.world_boss) == 2 - -- end, - group = 'resetWeekly', - version = WOW_PROJECT_MAINLINE + label = L["World Boss"] .. " Midnight", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, + }, + preys_nightmare = { + label = "Nightmare Preys", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + required = 2, + version = WOW_PROJECT_MAINLINE, + }, + nightmarish_task = { + label = "Nightmarish Task", + type = "quest", + questType = "weekly", + visibility = "visible", + group = "resetWeekly", + version = WOW_PROJECT_MAINLINE, }, --wotlk general_dailies = { - label = 'General', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "General", + type = "quest", + questType = "daily", + visibility = "visible", required = 3, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, general_horde_dailies = { - label = 'General Horde', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "General Horde", + type = "quest", + questType = "daily", + visibility = "visible", required = 3, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, general_alliance_dailies = { - label = 'General Alliance', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "General Alliance", + type = "quest", + questType = "daily", + visibility = "visible", required = 3, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, heroic_dungeon_dailies = { - label = 'Heroic Dungeon', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Heroic Dungeon", + type = "quest", + questType = "daily", + visibility = "visible", required = 2, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, raid_weekly = { - label = 'Raid Weekly', - type = 'quest', - questType = 'weekly', - visibility = 'visible', + label = "Raid Weekly", + type = "quest", + questType = "weekly", + visibility = "visible", required = 1, - group = 'resetWeekly', + group = "resetWeekly", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, argent_crusade_dailies = { - label = 'Argent Crusade', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Argent Crusade", + type = "quest", + questType = "daily", + visibility = "visible", required = 7, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, the_oracles_dailies = { - label = 'Orcales', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Orcales", + type = "quest", + questType = "daily", + visibility = "visible", required = 3, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, frenzyheart_tribe_dailies = { - label = 'Frenzyheart', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Frenzyheart", + type = "quest", + questType = "daily", + visibility = "visible", required = 3, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, knights_of_the_ebon_blade_dailies = { - label = 'Ebon Blade', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Ebon Blade", + type = "quest", + questType = "daily", + visibility = "visible", required = 3, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, the_sons_of_hodir_dailies = { - label = 'Sons of Hodir', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Sons of Hodir", + type = "quest", + questType = "daily", + visibility = "visible", required = 3, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, valiance_expedition_dailies = { - label = 'Expedition', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Expedition", + type = "quest", + questType = "daily", + visibility = "visible", required = 3, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, explorers_league_dailies = { - label = 'Explorers League', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Explorers League", + type = "quest", + questType = "daily", + visibility = "visible", required = 1, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, the_frostborn_dailies = { - label = 'Frostborn', - type = 'quest', - questType = 'daily', + label = "Frostborn", + type = "quest", + questType = "daily", tooltip = true, customTooltip = function(button, ...) PermoksAccountManager:WOTLKDailyQuest_OnEnter(button, ...) end, - visibility = 'visible', + visibility = "visible", required = 1, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, warsong_offensive_dailies = { - label = 'Offensive', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Offensive", + type = "quest", + questType = "daily", + visibility = "visible", required = 3, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, wotlk_cooking_dailies = { - label = 'Cooking', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Cooking", + type = "quest", + questType = "daily", + visibility = "visible", required = 1, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, wotlk_fishing_dailies = { - label = 'Fishing', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Fishing", + type = "quest", + questType = "daily", + visibility = "visible", required = 1, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, wotlk_jewelcrafting_dailies = { - label = 'Jewelcrafting', - type = 'quest', - questType = 'daily', - visibility = 'visible', + label = "Jewelcrafting", + type = "quest", + questType = "daily", + visibility = "visible", required = 1, - group = 'resetDaily', + group = "resetDaily", version = WOW_PROJECT_CATACLYSM_CLASSIC, }, } @@ -1559,7 +1700,8 @@ end local function GetQuestInfo(questLogIndex) if not PermoksAccountManager.isRetail then - local title, _, _, isHeader, _, _, frequency, questID, _, _, _, _, _, _, _, isHidden = GetQuestLogTitle(questLogIndex) + local title, _, _, isHeader, _, _, frequency, questID, _, _, _, _, _, _, _, isHidden = + GetQuestLogTitle(questLogIndex) return { title = title, isHeader = isHeader, frequency = frequency, isHidden = isHidden, questID = questID } else return C_QuestLog.GetInfo and C_QuestLog.GetInfo(questLogIndex) @@ -1567,7 +1709,7 @@ local function GetQuestInfo(questLogIndex) end local function setQuestInfo(questInfo, info, key) - local visibleType = info.log and 'visible' or 'hidden' + local visibleType = info.log and "visible" or "hidden" questInfo[info.questType] = questInfo[info.questType] or {} questInfo[info.questType][visibleType] = questInfo[info.questType][visibleType] or {} @@ -1590,30 +1732,29 @@ local function UpdateAllQuests(charInfo) local currentQuestInfo = setQuestInfo(questInfo, info, key) if not self.isBC then - -- check for weekly Warband Rewards if info.warband then - local currentWarbandQuestInfo = setQuestInfo(warbandQuestInfo, info, key) + local currentWarbandQuestInfo = setQuestInfo(warbandQuestInfo, info, key) -- API CURRENTLY NOT FUNCTIONING AS INTENDED - -- local isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) + -- local isWarbandComplete = C_QuestLog.IsQuestFlaggedCompletedOnAccount(questID) -- Workaround, but requires login on character that completed the quest: local isWarbandComplete = isComplete - currentWarbandQuestInfo[questID] = currentWarbandQuestInfo[questID] or isWarbandComplete or nil + currentWarbandQuestInfo[questID] = currentWarbandQuestInfo[questID] or isWarbandComplete or nil end -- covenant stuff if info.covenant and covenant == info.covenant then local sanctumTier if info.sanctum and charInfo.sanctumInfo then - sanctumTier = charInfo.sanctumInfo[info.sanctum] and charInfo.sanctumInfo[info.sanctum].tier or 0 - questInfo['max' .. key] = max(1, sanctumTier) + sanctumTier = charInfo.sanctumInfo[info.sanctum] and charInfo.sanctumInfo[info.sanctum].tier + or 0 + questInfo["max" .. key] = max(1, sanctumTier) end if not info.sanctum or (sanctumTier and sanctumTier >= info.minSanctumTier) then currentQuestInfo[questID] = currentQuestInfo[questID] or isComplete or nil end - elseif not info.covenant then currentQuestInfo[questID] = currentQuestInfo[questID] or isComplete or nil end @@ -1629,12 +1770,12 @@ local function UpdateAllHiddenQuests(charInfo) if not charInfo.questInfo then UpdateAllQuests(charInfo) end - self:Debug('Update Hidden Quests') + self:Debug("Update Hidden Quests") local warbandInfo = self.isRetail and self.warbandData or nil for questType, keys in pairs(charInfo.questInfo) do - if type(keys) == 'table' and keys.hidden then + if type(keys) == "table" and keys.hidden then for key, _ in pairs(keys.hidden) do if self.quests[key] then for questID, questData in pairs(self.quests[key]) do @@ -1644,7 +1785,14 @@ local function UpdateAllHiddenQuests(charInfo) end charInfo.questInfo[questType].hidden[key][questID] = isComplete or nil - if warbandInfo and questData.warband and warbandInfo.questInfo[questType] and warbandInfo.questInfo[questType].hidden and warbandInfo.questInfo[questType].hidden[key] and not warbandInfo.questInfo[questType].hidden[key][questID] then + if + warbandInfo + and questData.warband + and warbandInfo.questInfo[questType] + and warbandInfo.questInfo[questType].hidden + and warbandInfo.questInfo[questType].hidden[key] + and not warbandInfo.questInfo[questType].hidden[key][questID] + then warbandInfo.questInfo[questType].hidden[key][questID] = isComplete or nil end end @@ -1672,8 +1820,8 @@ end -- classic function local function AddQuest(_, questID, questLogIndex, questInfo) local self = PermoksAccountManager - local questLogIndex = questLogIndex or - (self.isBC and GetQuestLogIndexByID(questID) or C_QuestLog.GetLogIndexForQuestID(questID)) + local questLogIndex = questLogIndex + or (self.isBC and GetQuestLogIndexByID(questID) or C_QuestLog.GetLogIndexForQuestID(questID)) if questLogIndex then local questInfo = questInfo or GetQuestInfo(questLogIndex) self.db.global.quests[questID] = { frequency = questInfo.frequency, name = questInfo.title } @@ -1689,7 +1837,8 @@ end -- classic function local function UpdateCurrentlyActiveQuests(charInfo) - local numQuests = C_QuestLog and C_QuestLog.GetNumQuestLogEntries and C_QuestLog.GetNumQuestLogEntries() or GetNumQuestLogEntries() + local numQuests = C_QuestLog and C_QuestLog.GetNumQuestLogEntries and C_QuestLog.GetNumQuestLogEntries() + or GetNumQuestLogEntries() local info for questLogIndex = 1, numQuests do info = GetQuestInfo(questLogIndex) @@ -1725,10 +1874,10 @@ local function UpdateQuest(charInfo, questID) local warbandInfo = self.isRetail and self.warbandData or nil local questInfo = self.quests[key][questID] - local questType, visibility = questInfo.questType, questInfo.log and 'visible' or 'hidden' - self:Debug('Update', questType, visibility, key, questID) + local questType, visibility = questInfo.questType, questInfo.log and "visible" or "hidden" + self:Debug("Update", questType, visibility, key, questID) if questType and visibility and key and charInfo.questInfo[questType][visibility][key] then - if self.isCata and questType == 'daily' then + if self.isCata and questType == "daily" then UpdateCataDailies(charInfo) end @@ -1759,15 +1908,15 @@ do update = Update, labels = labelRows, events = { - ['QUEST_ACCEPTED'] = AddQuest, - ['QUEST_TURNED_IN'] = UpdateQuest, - ['QUEST_REMOVED'] = RemoveQuest, - ['QUEST_LOG_UPDATE'] = {HiddenQuestTimer}, + ["QUEST_ACCEPTED"] = AddQuest, + ["QUEST_TURNED_IN"] = UpdateQuest, + ["QUEST_REMOVED"] = RemoveQuest, + ["QUEST_LOG_UPDATE"] = { HiddenQuestTimer }, }, share = { - [HiddenQuestTimer] = 'questInfo', - [UpdateQuest] = 'questInfo' - } + [HiddenQuestTimer] = "questInfo", + [UpdateQuest] = "questInfo", + }, } if PermoksAccountManager.isCata then @@ -1775,7 +1924,7 @@ do end local module = PermoksAccountManager:AddModule(module, payload) - module:AddCustomLabelType('worldquest', CreateWorldQuestString, true, 'completedWorldQuests') + module:AddCustomLabelType("worldquest", CreateWorldQuestString, true, "completedWorldQuests") end if PermoksAccountManager.isCata then @@ -1821,21 +1970,25 @@ function PermoksAccountManager:GetNumCompletedQuests(questInfo) return numCompleted end -function PermoksAccountManager:CreateQuestString(questInfo, numDesired, replaceWithPlus) +function PermoksAccountManager:CreateQuestString(questInfo, numDesired, replaceWithPlus, capAtDesired) if not questInfo or not numDesired then return end - local numCompleted = type(questInfo) == 'table' and self:GetNumCompletedQuests(questInfo) or questInfo + local numCompleted = type(questInfo) == "table" and self:GetNumCompletedQuests(questInfo) or questInfo if replaceWithPlus and numCompleted >= numDesired then - return string.format('|cff00ff00%s|r', self.db.global.options.questCompletionString) + return string.format("|cff00ff00%s|r", self.db.global.options.questCompletionString) else - return self:CreateFractionString(numCompleted, numDesired) + return self:CreateFractionString(capAtDesired and min(numDesired, numCompleted) or numCompleted, numDesired) end end function PermoksAccountManager:QuestTooltip_OnEnter(button, alt_data, column) - if not alt_data or not alt_data.questInfo or not alt_data.questInfo[column.reset] or - not alt_data.questInfo[column.reset][column.visibility] then + if + not alt_data + or not alt_data.questInfo + or not alt_data.questInfo[column.reset] + or not alt_data.questInfo[column.reset][column.visibility] + then return end local info = alt_data.questInfo[column.questType][column.visibility][column.key] @@ -1847,8 +2000,8 @@ function PermoksAccountManager:QuestTooltip_OnEnter(button, alt_data, column) local completedByName = {} for questId, isComplete in pairs(info) do if isComplete and quests[questId] and quests[questId].name then - completedByName[quests[questId].name] = completedByName[quests[questId].name] or - { num = 0, total = quests[questId].total } + completedByName[quests[questId].name] = completedByName[quests[questId].name] + or { num = 0, total = quests[questId].total } completedByName[quests[questId].name].num = completedByName[quests[questId].name].num + 1 end end @@ -1856,7 +2009,7 @@ function PermoksAccountManager:QuestTooltip_OnEnter(button, alt_data, column) if not next(completedByName) then return end - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "RIGHT") button.tooltip = tooltip for name, completionInfo in pairs(completedByName) do tooltip:AddLine(name, self:CreateFractionString(completionInfo.num, completionInfo.total)) @@ -1867,8 +2020,12 @@ function PermoksAccountManager:QuestTooltip_OnEnter(button, alt_data, column) end function PermoksAccountManager:CompletedQuestsTooltip_OnEnter(button, altData, column, key) - if not altData or not altData.questInfo or not altData.questInfo[column.questType] or - not altData.questInfo[column.questType][column.visibility] then + if + not altData + or not altData.questInfo + or not altData.questInfo[column.questType] + or not altData.questInfo[column.questType][column.visibility] + then return end local info = altData.questInfo[column.questType][column.visibility][column.key or key] @@ -1877,7 +2034,7 @@ function PermoksAccountManager:CompletedQuestsTooltip_OnEnter(button, altData, c end if next(info) then - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "RIGHT") button.tooltip = tooltip local quests = self.quests[key] @@ -1897,8 +2054,11 @@ function PermoksAccountManager:CompletedQuestsTooltip_OnEnter(button, altData, c if name then if questInfo.achievementID and questInfo.criteriaID then - local completed = select(3, GetAchievementCriteriaInfoByID(questInfo.achievementID, questInfo.criteriaID)) - local achievementString = completed and string.format("|cFF%s%s|r", COLOR_COMPLETED, column.achievementString) or string.format("|cFF%s%s|r", COLOR_NOT_COMPLETED, column.achievementString) + local completed = + select(3, GetAchievementCriteriaInfoByID(questInfo.achievementID, questInfo.criteriaID)) + local achievementString = completed + and string.format("|cFF%s%s|r", COLOR_COMPLETED, column.achievementString) + or string.format("|cFF%s%s|r", COLOR_NOT_COMPLETED, column.achievementString) tooltip:AddLine(string.format("|cFF%s%s|r", color, name), achievementString) else tooltip:AddLine(string.format("|cFF%s%s|r", color, name)) @@ -1936,7 +2096,7 @@ function PermoksAccountManager:CompletedWorldQuestsTooltip_OnEnter(button, altDa local info = altData.completedWorldQuests - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 1, 'LEFT') + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 1, "LEFT") button.tooltip = tooltip for questID, isComplete in pairs(info) do @@ -1957,8 +2117,12 @@ function PermoksAccountManager:CompletedWorldQuestsTooltip_OnEnter(button, altDa end function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, key) - if not altData or not altData.questInfo or not altData.questInfo[column.questType] or - not altData.questInfo[column.questType][column.visibility] then + if + not altData + or not altData.questInfo + or not altData.questInfo[column.questType] + or not altData.questInfo[column.questType][column.visibility] + then return end local info = altData.questInfo[column.questType][column.visibility][column.key or key] @@ -1966,8 +2130,6 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, return end - - local questInfo = self.quests[key] local professionCounter = {} local professionItems = {} @@ -1981,20 +2143,25 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, professionCounter[skillLineID] = (professionCounter[skillLineID] or 0) + 1 end - if (skillLineID == prof1.skillLineID or skillLineID == prof2.skillLineID) then + if skillLineID == prof1.skillLineID or skillLineID == prof2.skillLineID then professionItems[questInfoTbl.skillLineID] = professionItems[questInfoTbl.skillLineID] or {} if questInfoTbl.item then - tinsert(professionItems[questInfoTbl.skillLineID], {questID, questInfoTbl.item, info[questID]}) + tinsert( + professionItems[questInfoTbl.skillLineID], + { questID, questInfoTbl.item, info[questID] } + ) end end end end end - if not next(professionItems) then return end + if not next(professionItems) then + return + end - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 3, 'LEFT', 'RIGHT', 'RIGHT') + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 3, "LEFT", "RIGHT", "RIGHT") button.tooltip = tooltip local professioIndex = 1 @@ -2005,8 +2172,10 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, local counter = professionCounter[skillLineID] or 0 local professionName = C_TradeSkillUI.GetProfessionInfoBySkillLineID(skillLineID).professionName - local maximum = column.professionRequired and column.professionRequired[skillLineID] or column.tooltipRequired or 2 - tooltip:AddLine(string.format('%s (%s)', professionName, self:CreateFractionString(counter, maximum))) + local maximum = column.professionRequired and column.professionRequired[skillLineID] + or column.tooltipRequired + or 2 + tooltip:AddLine(string.format("%s (%s)", professionName, self:CreateFractionString(counter, maximum))) if #info > 0 then tooltip:AddSeparator(1) @@ -2014,12 +2183,20 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, local questID, itemID, isComplete = unpack(itemInfo) local item = Item:CreateFromItemID(itemID) if item:IsItemDataCached() then - tooltip:AddLine(string.format('%s%s', CreateSimpleTextureMarkup(item:GetItemIcon()), item:GetItemLink()), string.format("(%d)", questID), isComplete and completedString[1] or completedString[2]) + tooltip:AddLine( + string.format("%s%s", CreateSimpleTextureMarkup(item:GetItemIcon()), item:GetItemLink()), + string.format("(%d)", questID), + isComplete and completedString[1] or completedString[2] + ) else local y, x = tooltip:AddLine() item:ContinueOnItemLoad(function() - if tooltip:IsAcquiredBy(addonName .. 'Tooltip') then - tooltip:SetCell(y, 1, string.format('%s%s', CreateSimpleTextureMarkup(item:GetItemIcon()), item:GetItemLink())) + if tooltip:IsAcquiredBy(addonName .. "Tooltip") then + tooltip:SetCell( + y, + 1, + string.format("%s%s", CreateSimpleTextureMarkup(item:GetItemIcon()), item:GetItemLink()) + ) tooltip:SetCell(y, 2, string.format("(%d)", questID)) tooltip:SetCell(y, 3, isComplete and completedString[1] or completedString[2]) end @@ -2028,28 +2205,34 @@ function PermoksAccountManager:KnowledgeTooltip_OnEnter(button, altData, column, end end - professioIndex = professioIndex + 1 + professioIndex = professioIndex + 1 end tooltip:SmartAnchorTo(button) tooltip:Show() end - function PermoksAccountManager:WOTLKDailyQuest_OnEnter(button, altData, labelRow, labelIdentifier) - if (not altData or not altData.questInfo or not altData.questInfo[labelRow.questType]) or not labelRow or - not labelIdentifier then + if + (not altData or not altData.questInfo or not altData.questInfo[labelRow.questType]) + or not labelRow + or not labelIdentifier + then return end - local info = altData[labelRow.questType][labelRow.visibility] and - altData[labelRow.questType][labelRow.visibility][labelIdentifier] - if not info then return end + local info = altData[labelRow.questType][labelRow.visibility] + and altData[labelRow.questType][labelRow.visibility][labelIdentifier] + if not info then + return + end local quests = self.quests[labelIdentifier] - if not quests then return end + if not quests then + return + end - local tooltip = LibQTip:Acquire(addonName .. 'Tooltip', 2, 'LEFT', 'RIGHT') + local tooltip = LibQTip:Acquire(addonName .. "Tooltip", 2, "LEFT", "RIGHT") button.tooltip = tooltip for name, completionInfo in pairs(completedByName) do tooltip:AddLine(name, self:CreateFractionString(completionInfo.num, completionInfo.total)) From 562bd2ff0d2b810ca61c5c3c99edcaa55552ae86 Mon Sep 17 00:00:00 2001 From: Permok Date: Sun, 22 Mar 2026 09:18:20 +0100 Subject: [PATCH 130/138] Fix quantity of the Coffer Key Shards --- PermoksAccountManager.lua | 7 +++++-- modules/currencies.lua | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 3978a1d..7581dea 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -303,7 +303,8 @@ do local categoryButtons = {} function CreateManagerButton(width, height, text) - local button = CreateFrame("Button", "PAM_ManagerButton_" .. #categoryButtons + 1, PermoksAccountManager.managerFrame) + local button = + CreateFrame("Button", "PAM_ManagerButton_" .. #categoryButtons + 1, PermoksAccountManager.managerFrame) tinsert(categoryButtons, button) button:SetSize(width, height) @@ -1473,7 +1474,9 @@ local InternalLabelFunctions = { column.abbMax, column.hideMax, column.customIcon, - column.hideIcon + column.hideIcon, + nil, + column.useWeeklyEarned ) or "-" end, faction = function(alt_data, column, key) diff --git a/modules/currencies.lua b/modules/currencies.lua index 5fcda14..e6e55be 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -420,6 +420,7 @@ local labelRows = { label = "Coffer Key Shards", type = "currency", key = 3310, + useWeeklyEarned = true, group = "currency", version = WOW_PROJECT_MAINLINE, }, @@ -912,7 +913,8 @@ function PermoksAccountManager:CreateCurrencyString( hideMaximum, customIcon, hideIcon, - customQuantitiy + customQuantitiy, + useWeeklyEarned ) if not currencyInfo then return @@ -949,7 +951,7 @@ function PermoksAccountManager:CreateCurrencyString( end end - local quantity = customQuantitiy or currencyInfo.quantity + local quantity = customQuantitiy or (useWeeklyEarned and currencyInfo.quantityEarnedThisWeek) or currencyInfo.quantity local currencyString = quantity if not hideMaximum From 74fd6c79c0285532f17ec00103352b314e9d54b5 Mon Sep 17 00:00:00 2001 From: Permok Date: Wed, 25 Mar 2026 12:55:51 +0100 Subject: [PATCH 131/138] Add new keystones --- db/db.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/db/db.lua b/db/db.lua index 7e65bfe..fd4d7c5 100644 --- a/db/db.lua +++ b/db/db.lua @@ -380,6 +380,14 @@ PermoksAccountManager.keys = { [507] = "GB", -- Grim Batol [525] = "FLOOD", -- Floodgate [542] = "ECO", -- Eco-Dome Al'dani + + [599] = "MT", -- Magister's Terrace + [560] = "MC", -- Maisara Caverns + [559] = "NPX", -- Nexus-Point Xenas + [557] = "WS", -- Windrunner Spire + [556] = "POS", -- Pit of Saron + [583] = "SEAT", -- Seat of the Triumvirate + [161] = "SR", -- Skyreach } -- Timewalking Keystones From 8dec08327d2f382fe82521445a79fee7f5fcc629 Mon Sep 17 00:00:00 2001 From: Permok Date: Fri, 27 Mar 2026 17:33:26 +0100 Subject: [PATCH 132/138] Fix raid tooltip --- modules/instances.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/instances.lua b/modules/instances.lua index febda16..dcc5b15 100644 --- a/modules/instances.lua +++ b/modules/instances.lua @@ -351,7 +351,7 @@ local function UpdateInstanceInfo(charInfo) end if self.isRetail and raidInfo then - local index = self.raids[mapID].startIndex - 1 + local index = self.raids[mapID].startIndex raidInfo.defeatedEncountersInfo = raidInfo.defeatedEncountersInfo or {} for boss = 1, numEncounters do local isKilled = select(3, GetSavedInstanceEncounterInfo(i, boss)) From 22c9054d280d7cde3de2513c8a8a00915a85eee5 Mon Sep 17 00:00:00 2001 From: Permok Date: Sun, 29 Mar 2026 10:02:15 +0200 Subject: [PATCH 133/138] Add missing weekly event quests --- db/db.lua | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/db/db.lua b/db/db.lua index fd4d7c5..5606c0d 100644 --- a/db/db.lua +++ b/db/db.lua @@ -731,15 +731,19 @@ PermoksAccountManager.quests = { -- General Weeklies (previous expansion quests get deprecated so we replace these IDs instead of adding new ones) weekend_event = { - [83345] = { questType = "weekly", log = true }, -- Battleground Event: A Call to Battle - [83347] = { questType = "weekly", log = true }, -- Mythic Dungeon Event: Emissary of War - [83357] = { questType = "weekly", log = true }, -- Pet Battle Event: The Very Best - [83358] = { questType = "weekly", log = true }, -- Arena Event: The Arena Calls - [83366] = { questType = "weekly", log = true }, -- World Quests: The World Awaits - [83359] = { questType = "weekly", log = true }, -- A Shattered Path Through Time - [83362] = { questType = "weekly", log = true }, -- A Shrouded Path Through Time - [83365] = { questType = "weekly", log = true }, -- A Frozen Path Through Time - [83364] = { questType = "weekly", log = true }, -- A Savage Path Through Time + [83366] = { questType = "weekly", log = true }, -- The World Awaits (World Quests) + [83357] = { questType = "weekly", log = true }, -- The Very Best (Pet Battles) + [83358] = { questType = "weekly", log = true }, -- The Arena Calls (Arena) + [83347] = { questType = "weekly", log = true }, -- Emmissary of War (Mythic Dungeons) + [86731] = { questType = "weekly", log = true }, -- An Original Path Through Time (Timewalking Dungeons) + [83362] = { questType = "weekly", log = true }, -- A Shrouded Path Through Time (Timewalking Dungeons, Pandaria) + [83359] = { questType = "weekly", log = true }, -- A Shattered Path Through Time (Timewalking Dungeons) + [88805] = { questType = "weekly", log = true }, -- A Scarred Path Through Time (Timewalking Dungeons) + [83364] = { questType = "weekly", log = true }, -- A Savage Path Through Time (Timewalking Dungeons) + [83365] = { questType = "weekly", log = true }, -- A Frozen Path Through Time (Timewaling Dungeons, Wrath of the Lich King) + [83360] = { questType = "weekly", log = true }, -- A Fel Path Through Time (Timewalking Dungeons, Legion) + [84476] = { questType = "weekly", log = true }, -- A Call to Delves (Delves) + [83363] = { questType = "weekly", log = true }, -- A Burning Path Through Time (Timewalking Dungeons, Burning Crusade) }, pvp_weekly = { [80184] = { questType = "weekly", log = true }, -- Preserving in Battle From fe64d449675d09631018d0b6a179e26d3194d836 Mon Sep 17 00:00:00 2001 From: Permok Date: Mon, 30 Mar 2026 20:36:00 +0200 Subject: [PATCH 134/138] Fix the challenge mode id of Magister Terrace --- db/db.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/db/db.lua b/db/db.lua index 5606c0d..8045468 100644 --- a/db/db.lua +++ b/db/db.lua @@ -381,11 +381,11 @@ PermoksAccountManager.keys = { [525] = "FLOOD", -- Floodgate [542] = "ECO", -- Eco-Dome Al'dani - [599] = "MT", -- Magister's Terrace - [560] = "MC", -- Maisara Caverns - [559] = "NPX", -- Nexus-Point Xenas - [557] = "WS", -- Windrunner Spire [556] = "POS", -- Pit of Saron + [557] = "WS", -- Windrunner Spire + [558] = "MT", -- Magister's Terrace + [559] = "NPX", -- Nexus-Point Xenas + [560] = "MC", -- Maisara Caverns [583] = "SEAT", -- Seat of the Triumvirate [161] = "SR", -- Skyreach } From b4c4b6f7d1ca18d4206c94263dcf061d22c77f7d Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 31 Mar 2026 11:30:41 +0200 Subject: [PATCH 135/138] Possible coffer key shard fix --- db/db.lua | 6 +++++ modules/character.lua | 3 --- modules/currencies.lua | 58 ++++++++++++++++++------------------------ 3 files changed, 31 insertions(+), 36 deletions(-) diff --git a/db/db.lua b/db/db.lua index 8045468..fef7db2 100644 --- a/db/db.lua +++ b/db/db.lua @@ -668,6 +668,12 @@ PermoksAccountManager.currencyCustomOptions = { [3286] = { forceUpdate = true }, [3288] = { forceUpdate = true }, [3290] = { forceUpdate = true }, + [3383] = { forceUpdate = true }, + [3341] = { forceUpdate = true }, + [3343] = { forceUpdate = true }, + [3345] = { forceUpdate = true }, + [3347] = { forceUpdate = true }, + [3310] = { forceUpdate = true }, } PermoksAccountManager.research = { diff --git a/modules/character.lua b/modules/character.lua index 26f1ac7..62a08a1 100644 --- a/modules/character.lua +++ b/modules/character.lua @@ -831,9 +831,6 @@ function PermoksAccountManager:CustomEquippedItemsTooltip_OnEnter(button, altDat end end) else - if not item.itemLevel and altData.GUID == UnitGUID("player") then - end - tooltip:AddLine( string.format("%s:", item.itemSlot), string.format( diff --git a/modules/currencies.lua b/modules/currencies.lua index e6e55be..b711152 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -320,16 +320,6 @@ local labelRows = { group = "currency", version = WOW_PROJECT_MAINLINE, }, - restored_coffer_key = { - label = "Restored Coffer Key", - type = "cofferkey", - passRow = true, - key = 3028, - reagent = 229899, - reagentRequired = 100, - group = "currency", - version = WOW_PROJECT_MAINLINE, - }, undercoin = { label = "Undercoin", type = "currency", @@ -418,9 +408,10 @@ local labelRows = { }, coffer_key_shard_currency = { label = "Coffer Key Shards", - type = "currency", + type = "keyshard", key = 3310, useWeeklyEarned = true, + passRow = true, group = "currency", version = WOW_PROJECT_MAINLINE, }, @@ -840,6 +831,25 @@ local function CreateCrestString(labelRow, currencyInfo) end end +local function CreateKeyShardString(labelRow, currencyInfo) + local keyshardInfo = currencyInfo and currencyInfo[labelRow.key] + + if keyshardInfo then + local currencyString = PermoksAccountManager:CreateCurrencyString( + keyshardInfo, + labelRow.abbCurrent, + labelRow.abbMax, + labelRow.hideMaximum, + labelRow.customIcon, + labelRow.hideIcon, + keyshardInfo.quantityEarnedThisWeek + ) + return string.format("%d - %s", keyshardInfo.quantity, currencyString) + else + return "-" + end +end + local function CreateValorString(labelRow, currencyInfo) local info = currencyInfo and currencyInfo[labelRow.key] if info then @@ -854,26 +864,6 @@ local function CreateValorString(labelRow, currencyInfo) end end -local function CreateCofferKeyString(labelRow, currencyInfo, itemCounts) - if not currencyInfo then - return "-" - end - - local keyInfo = currencyInfo[labelRow.key] - local reagentInfo = itemCounts[labelRow.reagent] - - local total = 0 - if keyInfo then - total = total + keyInfo.quantity - end - - if reagentInfo then - total = total + (reagentInfo.total / labelRow.reagentRequired) - end - - return PermoksAccountManager:CreateCurrencyString(keyInfo, nil, nil, nil, nil, nil, total) -end - local function CreateTreeCurrencyString(labelRow, currencyInfo) local info = currencyInfo and currencyInfo[labelRow.key] if info then @@ -901,8 +891,8 @@ local payload = { local module = PermoksAccountManager:AddModule(module, payload) module:AddCustomLabelType("catalystcharges", CreateCatalystChargeString, nil, "currencyInfo") module:AddCustomLabelType("crestcurrency", CreateCrestString, nil, "currencyInfo") +module:AddCustomLabelType("keyshard", CreateKeyShardString, nil, "currencyInfo") module:AddCustomLabelType("valor", CreateValorString, nil, "currencyInfo") -module:AddCustomLabelType("cofferkey", CreateCofferKeyString, nil, "currencyInfo", "itemCounts") module:AddCustomLabelType("treecurrency", CreateTreeCurrencyString, nil, "treeCurrencyInfo") -- TODO Create a CreateIconString function instead of two functions for items and currencies @@ -951,7 +941,9 @@ function PermoksAccountManager:CreateCurrencyString( end end - local quantity = customQuantitiy or (useWeeklyEarned and currencyInfo.quantityEarnedThisWeek) or currencyInfo.quantity + local quantity = customQuantitiy + or (useWeeklyEarned and currencyInfo.quantityEarnedThisWeek) + or currencyInfo.quantity local currencyString = quantity if not hideMaximum From b6fc5bf0295d01b95c15d5d97c057be289235d1f Mon Sep 17 00:00:00 2001 From: Permok Date: Tue, 31 Mar 2026 12:14:57 +0200 Subject: [PATCH 136/138] Restore accidentally deleted coffer keys --- modules/currencies.lua | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/modules/currencies.lua b/modules/currencies.lua index b711152..82c3627 100644 --- a/modules/currencies.lua +++ b/modules/currencies.lua @@ -415,6 +415,16 @@ local labelRows = { group = "currency", version = WOW_PROJECT_MAINLINE, }, + restored_coffer_key = { + label = "Restored Coffer Key", + type = "cofferkey", + passRow = true, + key = 3028, + reagent = 229899, + reagentRequired = 100, + group = "currency", + version = WOW_PROJECT_MAINLINE, + }, -- wotlk-classic honorBCC = { @@ -831,6 +841,26 @@ local function CreateCrestString(labelRow, currencyInfo) end end +local function CreateCofferKeyString(labelRow, currencyInfo, itemCounts) + if not currencyInfo then + return "-" + end + + local keyInfo = currencyInfo[labelRow.key] + local reagentInfo = itemCounts[labelRow.reagent] + + local total = 0 + if keyInfo then + total = total + keyInfo.quantity + end + + if reagentInfo then + total = total + (reagentInfo.total / labelRow.reagentRequired) + end + + return PermoksAccountManager:CreateCurrencyString(keyInfo, nil, nil, nil, nil, nil, total) +end + local function CreateKeyShardString(labelRow, currencyInfo) local keyshardInfo = currencyInfo and currencyInfo[labelRow.key] @@ -893,6 +923,7 @@ module:AddCustomLabelType("catalystcharges", CreateCatalystChargeString, nil, "c module:AddCustomLabelType("crestcurrency", CreateCrestString, nil, "currencyInfo") module:AddCustomLabelType("keyshard", CreateKeyShardString, nil, "currencyInfo") module:AddCustomLabelType("valor", CreateValorString, nil, "currencyInfo") +module:AddCustomLabelType("cofferkey", CreateCofferKeyString, nil, "currencyInfo", "itemCounts") module:AddCustomLabelType("treecurrency", CreateTreeCurrencyString, nil, "treeCurrencyInfo") -- TODO Create a CreateIconString function instead of two functions for items and currencies From 400ad52fbed80951ab6fbf9d0e2340193f87dfe0 Mon Sep 17 00:00:00 2001 From: Permok Date: Sat, 4 Apr 2026 16:48:22 +0200 Subject: [PATCH 137/138] Fix Outline option in the Experimental options --- PermoksAccountManager.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PermoksAccountManager.lua b/PermoksAccountManager.lua index 7581dea..26b7632 100644 --- a/PermoksAccountManager.lua +++ b/PermoksAccountManager.lua @@ -224,7 +224,7 @@ do --- Update the font path of all previously created fonts. function UpdateFonts() local options = PermoksAccountManager.db.global.options - local outline = options.useOutline and "OUTLINE" or nil + local outline = options.useOutline and "OUTLINE" or "" local font = LSM:Fetch("font", options.font) normalFont:SetFont(font, options.fontSize, outline) smallFont:SetFont(font, 9, outline) From 9b40f9c0a84f51183451e78200099e0820126f4c Mon Sep 17 00:00:00 2001 From: Permok Date: Sun, 5 Apr 2026 09:52:45 +0200 Subject: [PATCH 138/138] Hopefully fix the raids for real this time --- db/db.lua | 10 ++++++---- modules/instances.lua | 12 ++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/db/db.lua b/db/db.lua index fef7db2..e118c9b 100644 --- a/db/db.lua +++ b/db/db.lua @@ -412,15 +412,17 @@ PermoksAccountManager.raids = { name = GetRealZoneText(2912), englishID = "the_voidspire", instanceID = 1307, - startIndex = 0, - endIndex = 5, + startIndex = 1, + endIndex = 6, + startAtZero = true, }, [2913] = { name = GetRealZoneText(2913), englishID = "march_on_queldanas", instanceID = 1308, - startIndex = 0, - endIndex = 1, + startIndex = 1, + endIndex = 2, + startAtZero = true, }, [2939] = { name = GetRealZoneText(2939), diff --git a/modules/instances.lua b/modules/instances.lua index dcc5b15..4956d1c 100644 --- a/modules/instances.lua +++ b/modules/instances.lua @@ -355,7 +355,7 @@ local function UpdateInstanceInfo(charInfo) raidInfo.defeatedEncountersInfo = raidInfo.defeatedEncountersInfo or {} for boss = 1, numEncounters do local isKilled = select(3, GetSavedInstanceEncounterInfo(i, boss)) - raidInfo.defeatedEncountersInfo[index + boss] = isKilled + raidInfo.defeatedEncountersInfo[index - 1 + boss] = isKilled end elseif self.isCata and raidInfo then raidInfo.defeatedEncountersInfo = raidInfo.defeatedEncountersInfo or {} @@ -528,16 +528,16 @@ local function RetailRaid_OnEnter(tooltip, altData, dbInfo, raidInfo) tooltip:AddLine(info.difficulty .. ":", self:CreateQuestString(info.defeatedEncounters, info.numEncounters)) if info.defeatedEncountersInfo and difficulty < 17 then - local bossIndex = 1 + local bossIndex = dbInfo.startAtZero and 0 or 1 for index = dbInfo.startIndex, dbInfo.endIndex do - local bossInfo = info.defeatedEncountersInfo[bossIndex] + local bossInfo = info.defeatedEncountersInfo[index] local text = L["Unsaved"] local color = "00ff00" if difficulty == 16 - and localRaidActivityInfo[index] - and localRaidActivityInfo[index].bestDifficulty == difficulty + and localRaidActivityInfo[bossIndex] + and localRaidActivityInfo[bossIndex].bestDifficulty == difficulty then text = L["Killed"] color = "ff0000" @@ -547,7 +547,7 @@ local function RetailRaid_OnEnter(tooltip, altData, dbInfo, raidInfo) end tooltip:AddLine( - bossIndex .. " " .. EJ_GetEncounterInfo(localRaidActivityInfo[index].encounterID), + index .. " " .. EJ_GetEncounterInfo(localRaidActivityInfo[bossIndex].encounterID), string.format("|cff%s%s|r", color, text) ) bossIndex = bossIndex + 1