diff --git a/CHANGELOG.md b/CHANGELOG.md index 009eedf..05a01d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## v9.9.0 + +### New Ebonhold Quests + +#### 🗺️ Azeroth + +| ID | Quest | Zone | Type | +|----|-------|------|------| +| 50128 | Southern Jungle | Stranglethorn Vale | Complete 6 quests | + +#### 🌿 Kalimdor + +| ID | Quest | Zone | Type | +|----|-------|------|------| +| 50006 | Sandstone Giants | Tanaris | Kill Sandstone Giants | +| 50130 | Felwood Restoration | Felwood | Complete 6 quests | + +### Fixes + +- **[Quest]** Fixed `QuestieDB` initialization error caused by missing table depth for custom creature objectives in `EbonholdQuestDB`. +- **[System]** Adjusted `Questie:Error` output logic so that critical addon-breaking errors always print regardless of the `Enable Debug-PRINT` setting. + ## v9.8.9 ### New Ebonhold Quests diff --git a/Database/Ebonhold/Ebonhold/EbonholdQuestDB.lua b/Database/Ebonhold/Ebonhold/EbonholdQuestDB.lua index df03459..54e1399 100644 --- a/Database/Ebonhold/Ebonhold/EbonholdQuestDB.lua +++ b/Database/Ebonhold/Ebonhold/EbonholdQuestDB.lua @@ -1422,6 +1422,126 @@ EbonholdDB.questData = EbonholdDB.questData or { [30] = 30, -- Kill count }, + -- Quest 50019: Marshborn Menace + -- Kill 30 elementals in Dustwallow Marsh + [50019] = { + [1] = "Marshborn Menace", -- Quest name + [2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}} + [4] = 35, -- Min level + [5] = 40, -- Quest level + [17] = 15, -- Zone (Dustwallow Marsh) + [8] = { + "This is a custom objective. Upon completion, you will automatically receive the assigned reward. If you die, the quest will be removed from your quest log. This quest is automatically rewarded upon completion.", + "Kill 30 Elementals in Dustwallow Marsh" + }, + [10] = { + nil, -- [1] creatureObjective (not used) + nil, -- [2] objectObjective (not used) + nil, -- [3] itemObjective (not used) + nil, -- [4] reputationObjective (not used) + { -- [5] killCreditObjective + { + -- 5 elemental NPCs in Dustwallow Marsh + { 4382, 4385, 4386, 4387, 14231 }, + 4382, -- RootId: Withervine Creeper (representative elemental) + "Elemental slain" + } + } + }, + + [30] = 30, -- Kill count + }, + + + -- Quest 50052: Black Dragonflight Remnants + -- Kill 30 dragonkin in Badlands + [50052] = { + [1] = "Black Dragonflight Remnants", -- Quest name + [2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}} + [4] = 35, -- Min level + [5] = 40, -- Quest level + [17] = 3, -- Zone (Badlands) + [8] = { + "This is a custom objective. Upon completion, you will automatically receive the assigned reward. If you die, the quest will be removed from your quest log. This quest is automatically rewarded upon completion.", + "Kill 30 Dragonkin in Badlands" + }, + [10] = { + nil, -- [1] creatureObjective (not used) + nil, -- [2] objectObjective (not used) + nil, -- [3] itemObjective (not used) + nil, -- [4] reputationObjective (not used) + { -- [5] killCreditObjective + { + -- 4 dragonkin NPCs in Badlands + { 2757, 2725, 2759, 2726 }, + 2725, -- RootId: Scalding Whelp + "Dragonkin slain" + } + } + }, + + [30] = 30, -- Kill count + }, + + -- Quest 50068: Savage Badlands + -- Kill 75 beasts in Badlands + [50068] = { + [1] = "Savage Badlands", -- Quest name + [2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}} + [4] = 35, -- Min level + [5] = 40, -- Quest level + [17] = 3, -- Zone (Badlands) + [8] = { + "This is a custom objective. Upon completion, you will automatically receive the assigned reward. If you die, the quest will be removed from your quest log. This quest is automatically rewarded upon completion.", + "Kill 75 Beasts in Badlands" + }, + [10] = { + nil, -- [1] creatureObjective (not used) + nil, -- [2] objectObjective (not used) + nil, -- [3] itemObjective (not used) + nil, -- [4] reputationObjective (not used) + { -- [5] killCreditObjective + { + -- 15 beast NPCs in Badlands + { 2850, 2931, 2753, 2831, 2731, 2729, 2727, 2830, 2732, 2728, 2734, 2730, 2829, 6013, 9297 }, + 2727, -- RootId: Crag Coyote + "Beast slain" + } + } + }, + + [30] = 75, -- Kill count + }, + + -- Quest 50051: Marshscale Menace + -- Kill 30 dragonkin in Dustwallow Marsh + [50051] = { + [1] = "Marshscale Menace", -- Quest name + [2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}} + [4] = 35, -- Min level + [5] = 40, -- Quest level + [17] = 15, -- Zone (Dustwallow Marsh) + [8] = { + "This is a custom objective. Upon completion, you will automatically receive the assigned reward. If you die, the quest will be removed from your quest log. This quest is automatically rewarded upon completion.", + "Kill 30 Dragonkin in Dustwallow Marsh" + }, + [10] = { + nil, -- [1] creatureObjective (not used) + nil, -- [2] objectObjective (not used) + nil, -- [3] itemObjective (not used) + nil, -- [4] reputationObjective (not used) + { -- [5] killCreditObjective + { + -- 11 hostile dragonkin NPCs in Dustwallow Marsh + { 4324, 10321, 4334, 4328, 4323, 23789, 4339, 4331, 4329, 23969, 23687 }, + 4324, -- RootId: Searing Whelp + "Dragonkin slain" + } + } + }, + + [30] = 30, -- Kill count + }, -- Quest 50178: Badlands Trophy -- Kill 1 rare in Badlands @@ -1453,6 +1573,54 @@ EbonholdDB.questData = EbonholdDB.questData or { [30] = 1, -- Kill count }, + -- Quest 50128: Southern Jungle + -- Complete 6 quests in Stranglethorn Vale (Southern) + [50128] = { + [1] = "Southern Jungle", -- Quest name + [2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}} + [4] = 45, -- Quest level + [5] = 25, -- Min level + [17] = 33, -- Zone (Stranglethorn Vale) + [8] = { + "This is a custom objective. Upon completion, you will automatically receive the assigned reward. If you die, the quest will be removed from your quest log. This quest is automatically rewarded upon completion.", + "Complete 6 quests in Stranglethorn Vale (Southern)" + }, + [9] = { "Complete 6 quests in Stranglethorn Vale (Southern)", nil }, + }, + + -- Quest 50130: Felwood Restoration + -- Complete 6 quests in Felwood + [50130] = { + [1] = "Felwood Restoration", -- Quest name + [2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}} + [4] = 55, -- Quest level + [5] = 48, -- Min level + [17] = 361, -- Zone (Felwood) + [8] = { + "This is a custom objective. Upon completion, you will automatically receive the assigned reward.\n\nIf you die, the quest will be removed from your quest log. This quest is automatically rewarded upon completion.\n\nThis quest cannot be completed inside starting area.", + "Complete 6 quests in Felwood" + }, + [9] = { "Complete 6 quests in Felwood", nil }, + }, + + -- Quest 50006: Sandstone Giants + -- Kill Giants in Tanaris + [50006] = { + [1] = "Sandstone Giants", -- Quest name + [2] = { nil, { 600600 } }, -- startedBy: {{npcIds}, {objectIds}, {itemIds}} + [4] = 45, -- Quest level + [5] = 40, -- Min level + [17] = 440, -- Zone (Tanaris) + [8] = { + "Kill Giants in Tanaris.", + "Kill Sandstone Giants" + }, + [10] = { + { + { 5469, "Dune Smasher slain" } + } + }, + }, } -- Backward compatibility diff --git a/Modules/QuestieInit.lua b/Modules/QuestieInit.lua index 657d7b7..96dbd2c 100644 --- a/Modules/QuestieInit.lua +++ b/Modules/QuestieInit.lua @@ -209,7 +209,9 @@ QuestieInit.Stages[1] = function() -- run as a coroutine -- Check if the DB needs to be recompiled if (not dbIsCompiled) or (QuestieLib:GetAddonVersionString() ~= dbCompiledOnVersion) or (l10n:GetUILocale() ~= dbCompiledLang) or (Questie.db.global.dbCompiledExpansion ~= WOW_PROJECT_ID) then - print("\124cFFAAEEFF" .. l10n("Questie DB has updated!") .. "\124r\124cFFFF6F22 " .. l10n("Data is being processed, this may take a few moments and cause some lag...")) + print("\124cFFAAEEFF" .. + l10n("Questie DB has updated!") .. + "\124r\124cFFFF6F22 " .. l10n("Data is being processed, this may take a few moments and cause some lag...")) loadFullDatabase() QuestieDBCompiler:Compile() dbCompiled = true @@ -330,15 +332,18 @@ QuestieInit.Stages[3] = function() -- run as a coroutine if Questie.db.profile.showAQWarEffortQuests and ((not Questie.db.profile.aqWarningPrintDate) or (Questie.db.profile.aqWarningPrintDate < dateToday)) then Questie.db.profile.aqWarningPrintDate = dateToday C_Timer.After(2, function() - print("|cffff0000-----------------------------|r") - Questie:Print("|cffff0000The AQ War Effort quests are shown for you. If your server is done you can hide those quests in the General settings of Questie!|r"); - print("|cffff0000-----------------------------|r") + Questie:Print("|cffff0000-----------------------------|r") + Questie:Print( + "|cffff0000The AQ War Effort quests are shown for you. If your server is done you can hide those quests in the General settings of Questie!|r"); + Questie:Print("|cffff0000-----------------------------|r") end) end if Questie.IsTBC and (not Questie.db.global.isIsleOfQuelDanasPhaseReminderDisabled) then C_Timer.After(2, function() - Questie:Print(l10n("Current active phase of Isle of Quel'Danas is '%s'. Check the General settings to change the phase or disable this message.", IsleOfQuelDanas.localizedPhaseNames[Questie.db.global.isleOfQuelDanasPhase])) + Questie:Print(l10n( + "Current active phase of Isle of Quel'Danas is '%s'. Check the General settings to change the phase or disable this message.", + IsleOfQuelDanas.localizedPhaseNames[Questie.db.global.isleOfQuelDanasPhase])) end) end @@ -401,7 +406,8 @@ end -- called by the PLAYER_LOGIN event handler function QuestieInit:Init() - ThreadLib.ThreadError(_QuestieInit.StartStageCoroutine, Questie.db.profile.initDelay or 0, l10n("Error during initialization!")) + ThreadLib.ThreadError(_QuestieInit.StartStageCoroutine, Questie.db.profile.initDelay or 0, + l10n("Error during initialization!")) if Questie.db.profile.trackerEnabled then -- This needs to be called ASAP otherwise tracked Achievements in the Blizzard WatchFrame shows upon login diff --git a/Questie-335-Classic.toc b/Questie-335-Classic.toc index ac09642..c4f58dc 100644 --- a/Questie-335-Classic.toc +++ b/Questie-335-Classic.toc @@ -6,7 +6,7 @@ ## Notes-esES: Ayundante de misión ## Notes-ptBR: Ajudante de missão ## Notes-frFR: Assistant de quête -## Version: 9.5.1 +## Version: 9.9.0 ## RequiredDeps: ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig diff --git a/Questie-335-TBC.toc b/Questie-335-TBC.toc index 60fa1cd..2e72ac4 100644 --- a/Questie-335-TBC.toc +++ b/Questie-335-TBC.toc @@ -6,7 +6,7 @@ ## Notes-esES: Ayundante de misión ## Notes-ptBR: Ajudante de missão ## Notes-frFR: Assistant de quête -## Version: 9.5.1 +## Version: 9.9.0 ## RequiredDeps: ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig diff --git a/Questie-335.toc b/Questie-335.toc index dd728b0..6621d61 100644 --- a/Questie-335.toc +++ b/Questie-335.toc @@ -6,7 +6,7 @@ ## Notes-esES: Ayundante de misión ## Notes-ptBR: Ajudante de missão ## Notes-frFR: Assistant de quête -## Version: 9.8.9 +## Version: 9.9.0 ## RequiredDeps: ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig diff --git a/Questie-BCC.toc b/Questie-BCC.toc index 3b0ac35..efa55fc 100644 --- a/Questie-BCC.toc +++ b/Questie-BCC.toc @@ -6,7 +6,7 @@ ## Notes-esES: Ayundante de misión ## Notes-ptBR: Ajudante de missão ## Notes-frFR: Assistant de quête -## Version: 9.5.1 +## Version: 9.9.0 ## RequiredDeps: ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig diff --git a/Questie-Classic.toc b/Questie-Classic.toc index b58f97f..bb5a73f 100644 --- a/Questie-Classic.toc +++ b/Questie-Classic.toc @@ -6,7 +6,7 @@ ## Notes-esES: Ayundante de misión ## Notes-ptBR: Ajudante de missão ## Notes-frFR: Assistant de quête -## Version: 9.5.1 +## Version: 9.9.0 ## RequiredDeps: ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig diff --git a/Questie-WOTLKC.toc b/Questie-WOTLKC.toc index 85223a3..e58104f 100644 --- a/Questie-WOTLKC.toc +++ b/Questie-WOTLKC.toc @@ -6,7 +6,7 @@ ## Notes-esES: Ayundante de misión ## Notes-ptBR: Ajudante de missão ## Notes-frFR: Assistant de quête -## Version: 9.5.1 +## Version: 9.9.0 ## RequiredDeps: ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig diff --git a/Questie.lua b/Questie.lua index 6161f46..aa5b0e9 100644 --- a/Questie.lua +++ b/Questie.lua @@ -112,14 +112,23 @@ function Questie:GetClassColor(class) end end +local orig_Print = Questie.Print + +function Questie:Print(...) + Questie:Debug(Questie.DEBUG_INFO, ...) +end + function Questie:Error(...) - Questie:Print("|cffff0000[ERROR]|r", ...) + if orig_Print then + orig_Print(Questie, "|cffff0000[ERROR]|r", ...) + else + print("|cffff0000[ERROR]|r", ...) + end end function Questie:Warning(...) - if Questie.db.profile.debugEnabled then -- prints regardless of "debugPrint" toggle - Questie:Print("|cffffff00[WARNING]|r", ...) - end + -- prints regardless of "debugPrint" toggle used to be here, now respects debugPrint via Debug + Questie:Debug(Questie.DEBUG_INFO, "|cffffff00[WARNING]|r", ...) end -- Global debug levels @@ -140,54 +149,58 @@ function Questie:Debug(msgDebugLevel, ...) end local prefix = "" - if (band(msgDebugLevel, Questie.DEBUG_CRITICAL) ~= 0) then prefix = prefix.."|cff00f2e6[CRITICAL]|r" end - if (band(msgDebugLevel, Questie.DEBUG_ELEVATED) ~= 0) then prefix = prefix.."|cffebf441[ELEVATED]|r" end - if (band(msgDebugLevel, Questie.DEBUG_INFO) ~= 0) then prefix = prefix.."|cff00bc32[INFO]|r" end - if (band(msgDebugLevel, Questie.DEBUG_DEVELOP) ~= 0) then prefix = prefix.."|cff7c83ff[DEVELOP]|r" end - if (band(msgDebugLevel, Questie.DEBUG_SPAM) ~= 0) then prefix = prefix.."|cffff8484[SPAM]|r" end + if (band(msgDebugLevel, Questie.DEBUG_CRITICAL) ~= 0) then prefix = prefix .. "|cff00f2e6[CRITICAL]|r " end + if (band(msgDebugLevel, Questie.DEBUG_ELEVATED) ~= 0) then prefix = prefix .. "|cffebf441[ELEVATED]|r " end + if (band(msgDebugLevel, Questie.DEBUG_INFO) ~= 0) then prefix = prefix .. "|cff00bc32[INFO]|r " end + if (band(msgDebugLevel, Questie.DEBUG_DEVELOP) ~= 0) then prefix = prefix .. "|cff7c83ff[DEVELOP]|r " end + if (band(msgDebugLevel, Questie.DEBUG_SPAM) ~= 0) then prefix = prefix .. "|cffff8484[SPAM]|r " end - Questie:Print(prefix, ...) + if orig_Print then + orig_Print(Questie, prefix, ...) + else + print(prefix, ...) + end end end Questie.icons = { - ["slay"] = QuestieLib.AddonPath.."Icons\\slay.blp", - ["loot"] = QuestieLib.AddonPath.."Icons\\loot.blp", - ["event"] = QuestieLib.AddonPath.."Icons\\event.blp", - ["object"] = QuestieLib.AddonPath.."Icons\\object.blp", - ["talk"] = QuestieLib.AddonPath.."Icons\\chatbubblegossipicon.blp", - ["available"] = QuestieLib.AddonPath.."Icons\\available.blp", - ["available_gray"] = QuestieLib.AddonPath.."Icons\\available_gray.blp", - ["complete"] = QuestieLib.AddonPath.."Icons\\complete.blp", - ["incomplete"] = QuestieLib.AddonPath.."Icons\\incomplete.blp", - ["interact"] = QuestieLib.AddonPath.."Icons\\interact.blp", - ["glow"] = QuestieLib.AddonPath.."Icons\\glow.blp", - ["repeatable"] = QuestieLib.AddonPath.."Icons\\repeatable.blp", - ["repeatable_complete"] = QuestieLib.AddonPath.."Icons\\repeatable_complete.blp", - ["eventquest"] = QuestieLib.AddonPath.."Icons\\eventquest.blp", - ["eventquest_complete"] = QuestieLib.AddonPath.."Icons\\eventquest_complete.blp", - ["pvpquest"] = QuestieLib.AddonPath.."Icons\\pvpquest.blp", - ["pvpquest_complete"] = QuestieLib.AddonPath.."Icons\\pvpquest_complete.blp", - ["node"] = QuestieLib.AddonPath.."Icons\\node.tga", + ["slay"] = QuestieLib.AddonPath .. "Icons\\slay.blp", + ["loot"] = QuestieLib.AddonPath .. "Icons\\loot.blp", + ["event"] = QuestieLib.AddonPath .. "Icons\\event.blp", + ["object"] = QuestieLib.AddonPath .. "Icons\\object.blp", + ["talk"] = QuestieLib.AddonPath .. "Icons\\chatbubblegossipicon.blp", + ["available"] = QuestieLib.AddonPath .. "Icons\\available.blp", + ["available_gray"] = QuestieLib.AddonPath .. "Icons\\available_gray.blp", + ["complete"] = QuestieLib.AddonPath .. "Icons\\complete.blp", + ["incomplete"] = QuestieLib.AddonPath .. "Icons\\incomplete.blp", + ["interact"] = QuestieLib.AddonPath .. "Icons\\interact.blp", + ["glow"] = QuestieLib.AddonPath .. "Icons\\glow.blp", + ["repeatable"] = QuestieLib.AddonPath .. "Icons\\repeatable.blp", + ["repeatable_complete"] = QuestieLib.AddonPath .. "Icons\\repeatable_complete.blp", + ["eventquest"] = QuestieLib.AddonPath .. "Icons\\eventquest.blp", + ["eventquest_complete"] = QuestieLib.AddonPath .. "Icons\\eventquest_complete.blp", + ["pvpquest"] = QuestieLib.AddonPath .. "Icons\\pvpquest.blp", + ["pvpquest_complete"] = QuestieLib.AddonPath .. "Icons\\pvpquest_complete.blp", + ["node"] = QuestieLib.AddonPath .. "Icons\\node.tga", ["player"] = "Interface\\WorldMap\\WorldMapPartyIcon", - ["fav"] = QuestieLib.AddonPath.."Icons\\fav.tga", - ["faction_alliance"] = QuestieLib.AddonPath.."Icons\\icon_alliance.tga", - ["faction_horde"] = QuestieLib.AddonPath.."Icons\\icon_horde.tga", - ["loot_mono"] = QuestieLib.AddonPath.."Icons\\loot_mono.tga", - ["node_cut"] = QuestieLib.AddonPath.."Icons\\node_cut.tga", - ["object_mono"] = QuestieLib.AddonPath.."Icons\\object_mono.tga", - ["route"] = QuestieLib.AddonPath.."Icons\\route.tga", - ["slay_mono"] = QuestieLib.AddonPath.."Icons\\slay_mono.tga", - ["sod_rune"] = QuestieLib.AddonPath.."Icons\\sod_rune.tga", - ["startend"] = QuestieLib.AddonPath.."Icons\\startend.tga", - ["startendstart"] = QuestieLib.AddonPath.."Icons\\startendstart.tga", - ["tracker_clean"] = QuestieLib.AddonPath.."Icons\\tracker_clean.tga", - ["tracker_close"] = QuestieLib.AddonPath.."Icons\\tracker_close.tga", - ["tracker_database"] = QuestieLib.AddonPath.."Icons\\tracker_database.tga", - ["tracker_giver"] = QuestieLib.AddonPath.."Icons\\tracker_giver.tga", - ["tracker_quests"] = QuestieLib.AddonPath.."Icons\\tracker_quests.tga", - ["tracker_search"] = QuestieLib.AddonPath.."Icons\\tracker_search.tga", - ["tracker_settings"] = QuestieLib.AddonPath.."Icons\\tracker_settings.tga", + ["fav"] = QuestieLib.AddonPath .. "Icons\\fav.tga", + ["faction_alliance"] = QuestieLib.AddonPath .. "Icons\\icon_alliance.tga", + ["faction_horde"] = QuestieLib.AddonPath .. "Icons\\icon_horde.tga", + ["loot_mono"] = QuestieLib.AddonPath .. "Icons\\loot_mono.tga", + ["node_cut"] = QuestieLib.AddonPath .. "Icons\\node_cut.tga", + ["object_mono"] = QuestieLib.AddonPath .. "Icons\\object_mono.tga", + ["route"] = QuestieLib.AddonPath .. "Icons\\route.tga", + ["slay_mono"] = QuestieLib.AddonPath .. "Icons\\slay_mono.tga", + ["sod_rune"] = QuestieLib.AddonPath .. "Icons\\sod_rune.tga", + ["startend"] = QuestieLib.AddonPath .. "Icons\\startend.tga", + ["startendstart"] = QuestieLib.AddonPath .. "Icons\\startendstart.tga", + ["tracker_clean"] = QuestieLib.AddonPath .. "Icons\\tracker_clean.tga", + ["tracker_close"] = QuestieLib.AddonPath .. "Icons\\tracker_close.tga", + ["tracker_database"] = QuestieLib.AddonPath .. "Icons\\tracker_database.tga", + ["tracker_giver"] = QuestieLib.AddonPath .. "Icons\\tracker_giver.tga", + ["tracker_quests"] = QuestieLib.AddonPath .. "Icons\\tracker_quests.tga", + ["tracker_search"] = QuestieLib.AddonPath .. "Icons\\tracker_search.tga", + ["tracker_settings"] = QuestieLib.AddonPath .. "Icons\\tracker_settings.tga", } Questie.usedIcons = {} @@ -219,16 +232,20 @@ function Questie:SetIcons() Questie.usedIcons[Questie.ICON_TYPE_OBJECT] = Questie.db.profile.ICON_OBJECT or Questie.icons["object"] Questie.usedIcons[Questie.ICON_TYPE_TALK] = Questie.db.profile.ICON_TALK or Questie.icons["talk"] Questie.usedIcons[Questie.ICON_TYPE_AVAILABLE] = Questie.db.profile.ICON_AVAILABLE or Questie.icons["available"] - Questie.usedIcons[Questie.ICON_TYPE_AVAILABLE_GRAY] = Questie.db.profile.ICON_AVAILABLE_GRAY or Questie.icons["available_gray"] + Questie.usedIcons[Questie.ICON_TYPE_AVAILABLE_GRAY] = Questie.db.profile.ICON_AVAILABLE_GRAY or + Questie.icons["available_gray"] Questie.usedIcons[Questie.ICON_TYPE_COMPLETE] = Questie.db.profile.ICON_COMPLETE or Questie.icons["complete"] Questie.usedIcons[Questie.ICON_TYPE_INCOMPLETE] = Questie.db.profile.ICON_INCOMPLETE or Questie.icons["incomplete"] Questie.usedIcons[Questie.ICON_TYPE_GLOW] = Questie.db.profile.ICON_GLOW or Questie.icons["glow"] Questie.usedIcons[Questie.ICON_TYPE_REPEATABLE] = Questie.db.profile.ICON_REPEATABLE or Questie.icons["repeatable"] - Questie.usedIcons[Questie.ICON_TYPE_REPEATABLE_COMPLETE] = Questie.db.profile.ICON_REPEATABLE_COMPLETE or Questie.icons["complete"] + Questie.usedIcons[Questie.ICON_TYPE_REPEATABLE_COMPLETE] = Questie.db.profile.ICON_REPEATABLE_COMPLETE or + Questie.icons["complete"] Questie.usedIcons[Questie.ICON_TYPE_EVENTQUEST] = Questie.db.profile.ICON_EVENTQUEST or Questie.icons["eventquest"] - Questie.usedIcons[Questie.ICON_TYPE_EVENTQUEST_COMPLETE] = Questie.db.profile.ICON_EVENTQUEST_COMPLETE or Questie.icons["complete"] + Questie.usedIcons[Questie.ICON_TYPE_EVENTQUEST_COMPLETE] = Questie.db.profile.ICON_EVENTQUEST_COMPLETE or + Questie.icons["complete"] Questie.usedIcons[Questie.ICON_TYPE_PVPQUEST] = Questie.db.profile.ICON_PVPQUEST or Questie.icons["pvpquest"] - Questie.usedIcons[Questie.ICON_TYPE_PVPQUEST_COMPLETE] = Questie.db.profile.ICON_PVPQUEST_COMPLETE or Questie.icons["complete"] + Questie.usedIcons[Questie.ICON_TYPE_PVPQUEST_COMPLETE] = Questie.db.profile.ICON_PVPQUEST_COMPLETE or + Questie.icons["complete"] Questie.usedIcons[Questie.ICON_TYPE_INTERACT] = Questie.db.profile.ICON_TYPE_INTERACT or Questie.icons["interact"] Questie.usedIcons[Questie.ICON_TYPE_SODRUNE] = Questie.icons["sod_rune"] end diff --git a/README.md b/README.md index df1cfc2..77cb2f6 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Questie (3.3.5a) - +  [](https://xurkon.github.io/PE-Questie/) [](https://www.patreon.com/Xurkon) @@ -31,24 +31,29 @@ ## 🔧 Fixes & Compatibility ### 🛡️ Nameplates + - Explicitly skips **Ascension Nameplates** to avoid conflicts, while maintaining compatibility with generic nameplate addons. ### 📊 Quest Tracker + - **Ascension API**: Fully compatible with custom quest APIs; no crashes on auto-turn-in quests. - **Header Persistence**: Resolved issues where quest headers would disappear from the tracker. - **Dynamic Updates**: Instant refresh when accepting, completing, or abandoning quests. - **Combat Safety**: Protected with `pcall` to prevent UI lockups during intense combat updates. ### 💬 Tooltips + - Fixed all legacy Lua errors. - **New Feature**: Displays if an NPC drops an item that starts a quest directly in the tooltip. ### 🗺️ Maps (Minimap & World Map) + - **Minimap**: Fixed zoom-related Lua errors. - **World Map**: Full support for Ascension's `WorldMapFrame` (minimized mode), **Mapster**, and **Magnify-WotLK**. - **Icon Cleanup**: Resolved "ghost icon" bug where completed quests remained visible on the map. ### 📦 Custom IDs + - Native support for large integer IDs common on custom private servers. --- @@ -56,9 +61,11 @@ ## ✨ Features ### ⚔️ Ascension Scaling + - Quests automatically scale to character level, perfectly matching the Ascension Scaling system. ### 📍 Visual Map Objectives + Notes for quest starters, turn-ins, and complex objectives are drawn directly on your maps.
Developer documentation for Project Ascension & Project Ebonhold compatibility layers and core engine refinements.