Bump version to 9.9.0 and add Custom Ebonhold Quests

This commit is contained in:
Xurkon
2026-03-04 06:45:02 -06:00
parent a4cb621619
commit 0055f84d11
13 changed files with 300 additions and 64 deletions
+22
View File
@@ -1,5 +1,27 @@
# Changelog # 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 ## v9.8.9
### New Ebonhold Quests ### New Ebonhold Quests
@@ -1422,6 +1422,126 @@ EbonholdDB.questData = EbonholdDB.questData or {
[30] = 30, -- Kill count [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 -- Quest 50178: Badlands Trophy
-- Kill 1 rare in Badlands -- Kill 1 rare in Badlands
@@ -1453,6 +1573,54 @@ EbonholdDB.questData = EbonholdDB.questData or {
[30] = 1, -- Kill count [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 -- Backward compatibility
+12 -6
View File
@@ -209,7 +209,9 @@ QuestieInit.Stages[1] = function() -- run as a coroutine
-- Check if the DB needs to be recompiled -- 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 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() loadFullDatabase()
QuestieDBCompiler:Compile() QuestieDBCompiler:Compile()
dbCompiled = true 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 if Questie.db.profile.showAQWarEffortQuests and ((not Questie.db.profile.aqWarningPrintDate) or (Questie.db.profile.aqWarningPrintDate < dateToday)) then
Questie.db.profile.aqWarningPrintDate = dateToday Questie.db.profile.aqWarningPrintDate = dateToday
C_Timer.After(2, function() C_Timer.After(2, function()
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(
print("|cffff0000-----------------------------|r") "|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)
end end
if Questie.IsTBC and (not Questie.db.global.isIsleOfQuelDanasPhaseReminderDisabled) then if Questie.IsTBC and (not Questie.db.global.isIsleOfQuelDanasPhaseReminderDisabled) then
C_Timer.After(2, function() 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)
end end
@@ -401,7 +406,8 @@ end
-- called by the PLAYER_LOGIN event handler -- called by the PLAYER_LOGIN event handler
function QuestieInit:Init() 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 if Questie.db.profile.trackerEnabled then
-- This needs to be called ASAP otherwise tracked Achievements in the Blizzard WatchFrame shows upon login -- This needs to be called ASAP otherwise tracked Achievements in the Blizzard WatchFrame shows upon login
+1 -1
View File
@@ -6,7 +6,7 @@
## Notes-esES: Ayundante de misión ## Notes-esES: Ayundante de misión
## Notes-ptBR: Ajudante de missão ## Notes-ptBR: Ajudante de missão
## Notes-frFR: Assistant de quête ## Notes-frFR: Assistant de quête
## Version: 9.5.1 ## Version: 9.9.0
## RequiredDeps: ## RequiredDeps:
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
## SavedVariables: QuestieConfig ## SavedVariables: QuestieConfig
+1 -1
View File
@@ -6,7 +6,7 @@
## Notes-esES: Ayundante de misión ## Notes-esES: Ayundante de misión
## Notes-ptBR: Ajudante de missão ## Notes-ptBR: Ajudante de missão
## Notes-frFR: Assistant de quête ## Notes-frFR: Assistant de quête
## Version: 9.5.1 ## Version: 9.9.0
## RequiredDeps: ## RequiredDeps:
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
## SavedVariables: QuestieConfig ## SavedVariables: QuestieConfig
+1 -1
View File
@@ -6,7 +6,7 @@
## Notes-esES: Ayundante de misión ## Notes-esES: Ayundante de misión
## Notes-ptBR: Ajudante de missão ## Notes-ptBR: Ajudante de missão
## Notes-frFR: Assistant de quête ## Notes-frFR: Assistant de quête
## Version: 9.8.9 ## Version: 9.9.0
## RequiredDeps: ## RequiredDeps:
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
## SavedVariables: QuestieConfig ## SavedVariables: QuestieConfig
+1 -1
View File
@@ -6,7 +6,7 @@
## Notes-esES: Ayundante de misión ## Notes-esES: Ayundante de misión
## Notes-ptBR: Ajudante de missão ## Notes-ptBR: Ajudante de missão
## Notes-frFR: Assistant de quête ## Notes-frFR: Assistant de quête
## Version: 9.5.1 ## Version: 9.9.0
## RequiredDeps: ## RequiredDeps:
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
## SavedVariables: QuestieConfig ## SavedVariables: QuestieConfig
+1 -1
View File
@@ -6,7 +6,7 @@
## Notes-esES: Ayundante de misión ## Notes-esES: Ayundante de misión
## Notes-ptBR: Ajudante de missão ## Notes-ptBR: Ajudante de missão
## Notes-frFR: Assistant de quête ## Notes-frFR: Assistant de quête
## Version: 9.5.1 ## Version: 9.9.0
## RequiredDeps: ## RequiredDeps:
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
## SavedVariables: QuestieConfig ## SavedVariables: QuestieConfig
+1 -1
View File
@@ -6,7 +6,7 @@
## Notes-esES: Ayundante de misión ## Notes-esES: Ayundante de misión
## Notes-ptBR: Ajudante de missão ## Notes-ptBR: Ajudante de missão
## Notes-frFR: Assistant de quête ## Notes-frFR: Assistant de quête
## Version: 9.5.1 ## Version: 9.9.0
## RequiredDeps: ## RequiredDeps:
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
## SavedVariables: QuestieConfig ## SavedVariables: QuestieConfig
+67 -50
View File
@@ -112,14 +112,23 @@ function Questie:GetClassColor(class)
end end
end end
local orig_Print = Questie.Print
function Questie:Print(...)
Questie:Debug(Questie.DEBUG_INFO, ...)
end
function Questie:Error(...) 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 end
function Questie:Warning(...) function Questie:Warning(...)
if Questie.db.profile.debugEnabled then -- prints regardless of "debugPrint" toggle -- prints regardless of "debugPrint" toggle used to be here, now respects debugPrint via Debug
Questie:Print("|cffffff00[WARNING]|r", ...) Questie:Debug(Questie.DEBUG_INFO, "|cffffff00[WARNING]|r", ...)
end
end end
-- Global debug levels -- Global debug levels
@@ -140,54 +149,58 @@ function Questie:Debug(msgDebugLevel, ...)
end end
local prefix = "" local prefix = ""
if (band(msgDebugLevel, Questie.DEBUG_CRITICAL) ~= 0) then prefix = prefix.."|cff00f2e6[CRITICAL]|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_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_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_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_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
end end
Questie.icons = { Questie.icons = {
["slay"] = QuestieLib.AddonPath.."Icons\\slay.blp", ["slay"] = QuestieLib.AddonPath .. "Icons\\slay.blp",
["loot"] = QuestieLib.AddonPath.."Icons\\loot.blp", ["loot"] = QuestieLib.AddonPath .. "Icons\\loot.blp",
["event"] = QuestieLib.AddonPath.."Icons\\event.blp", ["event"] = QuestieLib.AddonPath .. "Icons\\event.blp",
["object"] = QuestieLib.AddonPath.."Icons\\object.blp", ["object"] = QuestieLib.AddonPath .. "Icons\\object.blp",
["talk"] = QuestieLib.AddonPath.."Icons\\chatbubblegossipicon.blp", ["talk"] = QuestieLib.AddonPath .. "Icons\\chatbubblegossipicon.blp",
["available"] = QuestieLib.AddonPath.."Icons\\available.blp", ["available"] = QuestieLib.AddonPath .. "Icons\\available.blp",
["available_gray"] = QuestieLib.AddonPath.."Icons\\available_gray.blp", ["available_gray"] = QuestieLib.AddonPath .. "Icons\\available_gray.blp",
["complete"] = QuestieLib.AddonPath.."Icons\\complete.blp", ["complete"] = QuestieLib.AddonPath .. "Icons\\complete.blp",
["incomplete"] = QuestieLib.AddonPath.."Icons\\incomplete.blp", ["incomplete"] = QuestieLib.AddonPath .. "Icons\\incomplete.blp",
["interact"] = QuestieLib.AddonPath.."Icons\\interact.blp", ["interact"] = QuestieLib.AddonPath .. "Icons\\interact.blp",
["glow"] = QuestieLib.AddonPath.."Icons\\glow.blp", ["glow"] = QuestieLib.AddonPath .. "Icons\\glow.blp",
["repeatable"] = QuestieLib.AddonPath.."Icons\\repeatable.blp", ["repeatable"] = QuestieLib.AddonPath .. "Icons\\repeatable.blp",
["repeatable_complete"] = QuestieLib.AddonPath.."Icons\\repeatable_complete.blp", ["repeatable_complete"] = QuestieLib.AddonPath .. "Icons\\repeatable_complete.blp",
["eventquest"] = QuestieLib.AddonPath.."Icons\\eventquest.blp", ["eventquest"] = QuestieLib.AddonPath .. "Icons\\eventquest.blp",
["eventquest_complete"] = QuestieLib.AddonPath.."Icons\\eventquest_complete.blp", ["eventquest_complete"] = QuestieLib.AddonPath .. "Icons\\eventquest_complete.blp",
["pvpquest"] = QuestieLib.AddonPath.."Icons\\pvpquest.blp", ["pvpquest"] = QuestieLib.AddonPath .. "Icons\\pvpquest.blp",
["pvpquest_complete"] = QuestieLib.AddonPath.."Icons\\pvpquest_complete.blp", ["pvpquest_complete"] = QuestieLib.AddonPath .. "Icons\\pvpquest_complete.blp",
["node"] = QuestieLib.AddonPath.."Icons\\node.tga", ["node"] = QuestieLib.AddonPath .. "Icons\\node.tga",
["player"] = "Interface\\WorldMap\\WorldMapPartyIcon", ["player"] = "Interface\\WorldMap\\WorldMapPartyIcon",
["fav"] = QuestieLib.AddonPath.."Icons\\fav.tga", ["fav"] = QuestieLib.AddonPath .. "Icons\\fav.tga",
["faction_alliance"] = QuestieLib.AddonPath.."Icons\\icon_alliance.tga", ["faction_alliance"] = QuestieLib.AddonPath .. "Icons\\icon_alliance.tga",
["faction_horde"] = QuestieLib.AddonPath.."Icons\\icon_horde.tga", ["faction_horde"] = QuestieLib.AddonPath .. "Icons\\icon_horde.tga",
["loot_mono"] = QuestieLib.AddonPath.."Icons\\loot_mono.tga", ["loot_mono"] = QuestieLib.AddonPath .. "Icons\\loot_mono.tga",
["node_cut"] = QuestieLib.AddonPath.."Icons\\node_cut.tga", ["node_cut"] = QuestieLib.AddonPath .. "Icons\\node_cut.tga",
["object_mono"] = QuestieLib.AddonPath.."Icons\\object_mono.tga", ["object_mono"] = QuestieLib.AddonPath .. "Icons\\object_mono.tga",
["route"] = QuestieLib.AddonPath.."Icons\\route.tga", ["route"] = QuestieLib.AddonPath .. "Icons\\route.tga",
["slay_mono"] = QuestieLib.AddonPath.."Icons\\slay_mono.tga", ["slay_mono"] = QuestieLib.AddonPath .. "Icons\\slay_mono.tga",
["sod_rune"] = QuestieLib.AddonPath.."Icons\\sod_rune.tga", ["sod_rune"] = QuestieLib.AddonPath .. "Icons\\sod_rune.tga",
["startend"] = QuestieLib.AddonPath.."Icons\\startend.tga", ["startend"] = QuestieLib.AddonPath .. "Icons\\startend.tga",
["startendstart"] = QuestieLib.AddonPath.."Icons\\startendstart.tga", ["startendstart"] = QuestieLib.AddonPath .. "Icons\\startendstart.tga",
["tracker_clean"] = QuestieLib.AddonPath.."Icons\\tracker_clean.tga", ["tracker_clean"] = QuestieLib.AddonPath .. "Icons\\tracker_clean.tga",
["tracker_close"] = QuestieLib.AddonPath.."Icons\\tracker_close.tga", ["tracker_close"] = QuestieLib.AddonPath .. "Icons\\tracker_close.tga",
["tracker_database"] = QuestieLib.AddonPath.."Icons\\tracker_database.tga", ["tracker_database"] = QuestieLib.AddonPath .. "Icons\\tracker_database.tga",
["tracker_giver"] = QuestieLib.AddonPath.."Icons\\tracker_giver.tga", ["tracker_giver"] = QuestieLib.AddonPath .. "Icons\\tracker_giver.tga",
["tracker_quests"] = QuestieLib.AddonPath.."Icons\\tracker_quests.tga", ["tracker_quests"] = QuestieLib.AddonPath .. "Icons\\tracker_quests.tga",
["tracker_search"] = QuestieLib.AddonPath.."Icons\\tracker_search.tga", ["tracker_search"] = QuestieLib.AddonPath .. "Icons\\tracker_search.tga",
["tracker_settings"] = QuestieLib.AddonPath.."Icons\\tracker_settings.tga", ["tracker_settings"] = QuestieLib.AddonPath .. "Icons\\tracker_settings.tga",
} }
Questie.usedIcons = {} 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_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_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] = 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_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_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_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] = 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] = 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] = 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_INTERACT] = Questie.db.profile.ICON_TYPE_INTERACT or Questie.icons["interact"]
Questie.usedIcons[Questie.ICON_TYPE_SODRUNE] = Questie.icons["sod_rune"] Questie.usedIcons[Questie.ICON_TYPE_SODRUNE] = Questie.icons["sod_rune"]
end end
+13 -1
View File
@@ -2,7 +2,7 @@
# Questie (3.3.5a) # Questie (3.3.5a)
![Version](https://img.shields.io/badge/version-v9.7.12-blue.svg?style=for-the-badge) ![Version](https://img.shields.io/badge/version-v9.9.0-blue.svg?style=for-the-badge)
![Downloads](https://img.shields.io/github/downloads/Xurkon/PE-Questie/total?style=for-the-badge&color=e67e22) ![Downloads](https://img.shields.io/github/downloads/Xurkon/PE-Questie/total?style=for-the-badge&color=e67e22)
[![Documentation](https://img.shields.io/badge/Documentation-View%20Docs-58a6ff?style=for-the-badge)](https://xurkon.github.io/PE-Questie/) [![Documentation](https://img.shields.io/badge/Documentation-View%20Docs-58a6ff?style=for-the-badge)](https://xurkon.github.io/PE-Questie/)
[![Patreon](https://img.shields.io/badge/Patreon-F96854?style=for-the-badge&logo=patreon&logoColor=white)](https://www.patreon.com/Xurkon) [![Patreon](https://img.shields.io/badge/Patreon-F96854?style=for-the-badge&logo=patreon&logoColor=white)](https://www.patreon.com/Xurkon)
@@ -31,24 +31,29 @@
## 🔧 Fixes & Compatibility ## 🔧 Fixes & Compatibility
### 🛡️ Nameplates ### 🛡️ Nameplates
- Explicitly skips **Ascension Nameplates** to avoid conflicts, while maintaining compatibility with generic nameplate addons. - Explicitly skips **Ascension Nameplates** to avoid conflicts, while maintaining compatibility with generic nameplate addons.
### 📊 Quest Tracker ### 📊 Quest Tracker
- **Ascension API**: Fully compatible with custom quest APIs; no crashes on auto-turn-in quests. - **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. - **Header Persistence**: Resolved issues where quest headers would disappear from the tracker.
- **Dynamic Updates**: Instant refresh when accepting, completing, or abandoning quests. - **Dynamic Updates**: Instant refresh when accepting, completing, or abandoning quests.
- **Combat Safety**: Protected with `pcall` to prevent UI lockups during intense combat updates. - **Combat Safety**: Protected with `pcall` to prevent UI lockups during intense combat updates.
### 💬 Tooltips ### 💬 Tooltips
- Fixed all legacy Lua errors. - Fixed all legacy Lua errors.
- **New Feature**: Displays if an NPC drops an item that starts a quest directly in the tooltip. - **New Feature**: Displays if an NPC drops an item that starts a quest directly in the tooltip.
### 🗺️ Maps (Minimap & World Map) ### 🗺️ Maps (Minimap & World Map)
- **Minimap**: Fixed zoom-related Lua errors. - **Minimap**: Fixed zoom-related Lua errors.
- **World Map**: Full support for Ascension's `WorldMapFrame` (minimized mode), **Mapster**, and **Magnify-WotLK**. - **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. - **Icon Cleanup**: Resolved "ghost icon" bug where completed quests remained visible on the map.
### 📦 Custom IDs ### 📦 Custom IDs
- Native support for large integer IDs common on custom private servers. - Native support for large integer IDs common on custom private servers.
--- ---
@@ -56,9 +61,11 @@
## ✨ Features ## ✨ Features
### ⚔️ Ascension Scaling ### ⚔️ Ascension Scaling
- Quests automatically scale to character level, perfectly matching the Ascension Scaling system. - Quests automatically scale to character level, perfectly matching the Ascension Scaling system.
### 📍 Visual Map Objectives ### 📍 Visual Map Objectives
Notes for quest starters, turn-ins, and complex objectives are drawn directly on your maps. Notes for quest starters, turn-ins, and complex objectives are drawn directly on your maps.
<div align="center"> <div align="center">
@@ -68,6 +75,7 @@ Notes for quest starters, turn-ins, and complex objectives are drawn directly on
</div> </div>
### 📜 Advanced Quest Tracker ### 📜 Advanced Quest Tracker
- **Smart Tracking**: Automatically tracks quests upon acceptance. - **Smart Tracking**: Automatically tracks quests upon acceptance.
- **Expanded Capacity**: Displays up to 20 quests (original limit: 5). - **Expanded Capacity**: Displays up to 20 quests (original limit: 5).
- **Interactive**: Left-click to open the log; Right-click for focus modes or TomTom arrow integration. - **Interactive**: Left-click to open the log; Right-click for focus modes or TomTom arrow integration.
@@ -77,6 +85,7 @@ Notes for quest starters, turn-ins, and complex objectives are drawn directly on
</div> </div>
### 🗺️ My Journey & Quests by Zone ### 🗺️ My Journey & Quests by Zone
- **Journey Log**: Record every major step of your adventure. - **Journey Log**: Record every major step of your adventure.
- **Completionist View**: Lists all available and completed quests per zone to ensure nothing is missed. - **Completionist View**: Lists all available and completed quests per zone to ensure nothing is missed.
@@ -86,6 +95,7 @@ Notes for quest starters, turn-ins, and complex objectives are drawn directly on
</div> </div>
### 🔍 Database Search & Config ### 🔍 Database Search & Config
- **Global Search**: Find any NPC, Object, or Quest in the massive Questie database. - **Global Search**: Find any NPC, Object, or Quest in the massive Questie database.
- **Deep Customization**: Adjust everything from icon scale to tracking logic. - **Deep Customization**: Adjust everything from icon scale to tracking logic.
@@ -97,9 +107,11 @@ Notes for quest starters, turn-ins, and complex objectives are drawn directly on
--- ---
## 👥 Credits ## 👥 Credits
- **Questie Team** - Original addon developers. - **Questie Team** - Original addon developers.
- **Xurkon** - Private Expansion fork and maintenance. - **Xurkon** - Private Expansion fork and maintenance.
- **Project Ascension & Ebonhold Communities** - Testing and data feedback. - **Project Ascension & Ebonhold Communities** - Testing and data feedback.
## 📄 License ## 📄 License
MIT License - See [LICENSE](LICENSE) for details. MIT License - See [LICENSE](LICENSE) for details.
+11
View File
@@ -167,6 +167,17 @@
</div> </div>
<div class="container"> <div class="container">
<h2 id="v990">v9.9.0</h2>
<h3>New Ebonhold Quests</h3>
<ul>
<li><strong>Azeroth</strong>: Southern Jungle (Complete 6 quests in Stranglethorn Vale).</li>
<li><strong>Kalimdor</strong>: Sandstone Giants (Kill Sandstone Giants in Tanaris). Felwood Restoration (Complete 6 quests in Felwood).</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><strong>[Quest]</strong> Fixed QuestieDB initialization error caused by missing table depth for custom creature objectives in EbonholdQuestDB.</li>
<li><strong>[System]</strong> Adjusted Questie:Error output logic so that critical addon-breaking errors always print regardless of the Enable Debug-PRINT setting.</li>
</ul>
<h2 id="v975">v9.7.5</h2> <h2 id="v975">v9.7.5</h2>
<h3>Fixes</h3> <h3>Fixes</h3>
<ul> <ul>
+1 -1
View File
@@ -170,7 +170,7 @@
<p class="subtitle">Developer documentation for Project Ascension & Project Ebonhold compatibility layers and <p class="subtitle">Developer documentation for Project Ascension & Project Ebonhold compatibility layers and
core engine refinements.</p> core engine refinements.</p>
<div style="display: flex; justify-content: center; gap: 10px;"> <div style="display: flex; justify-content: center; gap: 10px;">
<code>Version: v9.8.6</code> <code>Version: v9.9.0</code>
<code>Branch: feature/ebonhold-compat</code> <code>Branch: feature/ebonhold-compat</code>
<a href="changelog.html" <a href="changelog.html"
style="background: var(--bg-tertiary); color: var(--accent-green); text-decoration: none; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; border: 1px solid var(--border-color);">View style="background: var(--bg-tertiary); color: var(--accent-green); text-decoration: none; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; border: 1px solid var(--border-color);">View