v1.2.5 — Ebonhold & Ascension DB Plugin Load Fix
Fixed a fatal load-time crash in all four Ebonhold DB files (and identically in the Ascension DB files) caused by calling GetRealmName() and QuestieLoader:CreateModule() at file scope — before WoW's API is fully available. Switched to plain global table population; realm-gating and injection remain safely deferred to the loader's PLAYER_LOGIN handler.
Root Cause
- [File-scope execution]
EbonholdNpcDB.lua, EbonholdObjectDB.lua, EbonholdItemDB.lua, and EbonholdQuestDB.lua each began with if GetRealmName() ~= "Rogue-Lite (Live)" then return end followed immediately by QuestieLoader:CreateModule("EbonholdDB"). Both calls execute at file-load time (during LoadAddOn()), before PLAYER_LOGIN has fired and before QuestieLoader is guaranteed to be populated. This produced attempt to index global 'QuestieLoader' (a nil value) on every load.
- [Same issue in Ascension DB] All four
Bronzebeard/AscensionXxxDB.lua files had the same pattern with a different realm guard. Same crash, same fix applied.
Questie-X-EbonholdDB
- [Ebonhold/EbonholdNpcDB.lua] Removed file-level realm guard and
QuestieLoader:CreateModule call. Replaced with _G.EbonholdDB = _G.EbonholdDB or {} and a local alias. Data is now populated unconditionally into the global at load time.
- [Ebonhold/EbonholdObjectDB.lua] Same fix.
- [Ebonhold/EbonholdItemDB.lua] Same fix.
- [Ebonhold/EbonholdQuestDB.lua] Same fix.
- [EbonholdLoader.lua] Replaced
QuestieLoader:ImportModule("EbonholdDB") with _G.EbonholdDB or {}. The loader's existing PLAYER_LOGIN handler with realm check remains intact as the sole gate for injection into Questie-X.
Questie-X-AscensionDB
- [Bronzebeard/AscensionNpcDB.lua] Removed file-level realm guard and
QuestieLoader:CreateModule call. Replaced with _G.AscensionDB = _G.AscensionDB or {}.
- [Bronzebeard/AscensionObjectDB.lua] Same fix.
- [Bronzebeard/AscensionItemDB.lua] Same fix.
- [Bronzebeard/AscensionQuestDB.lua] Same fix.
- [AscensionLoader.lua] Replaced
QuestieLoader:ImportModule("AscensionDB") with _G.AscensionDB or {}.
- [Questie-X-AscensionDB.toc] TOC title corrected from
Questie-Ascension to Questie-X-AscensionDB to match the folder name and plugin naming convention.
XXH_Lua_Lib Universal Compatibility Fix
- [Libs/XXH_Lua_Lib/XXH_Lua_Lib.lua] All string-length calls were incorrectly using
table.getn(str), which expects a table — passing a string (e.g. a player name like "MooeshaLC@Asc.BB25") caused a crash: bad argument #1 to 'getn' (table expected, got string). Fixed by replacing all string-length calls with string.len(str) (universal across Lua 5.0 and 5.1). Table-length calls restored to table.getn(t) for the same universal coverage — the # length operator is only available in Lua 5.1+ and would break on WoW 1.12 vanilla clients.
Repository & Releases
- Published initial GitHub releases for all four database plugins: Questie-X-WotLKDB, Questie-X-TBCDB, Questie-X-EbonholdDB, Questie-X-AscensionDB.
- Added
.gitattributes to all five repos with export-ignore for dev-only files (.gitattributes, .gitignore, Tools/, docs/, .git_disabled/). Release archives are now generated from tags — named RepoName-vX.Y.Z.zip rather than RepoName-main.zip.
- README plugin table updated to link all four available repos.
v1.2.4 — Retail/SoD Corrections Removed
Deleted all Season of Discovery, Season of Mastery, and Hardcore correction files. These were retail-specific and never referenced by the TOC. Cleaned up all dead imports, constants, and code branches they left behind in QuestieCorrections.lua.
Files Deleted
Database/Corrections/SeasonOfDiscovery.lua — SoD base quest/NPC/object/item overrides
Database/Corrections/sodQuestFixes.lua — SoD quest corrections
Database/Corrections/sodNPCFixes.lua — SoD NPC corrections
Database/Corrections/sodItemFixes.lua — SoD item corrections
Database/Corrections/sodObjectFixes.lua — SoD object corrections
Database/Corrections/Automatic/sodBaseQuests.lua — SoD auto-generated base quests
Database/Corrections/Automatic/sodBaseNPCs.lua — SoD auto-generated base NPCs
Database/Corrections/Automatic/sodBaseItems.lua — SoD auto-generated base items
Database/Corrections/Automatic/sodBaseObjects.lua — SoD auto-generated base objects
Database/Corrections/HardcoreBlacklist.lua — Hardcore mode quest blacklist
Database/Corrections/SoMPhases.lua — Season of Mastery phase data (was already commented out in TOC)
QuestieCorrections.lua Cleanup
- Imports removed:
HardcoreBlacklist and SeasonOfDiscovery ImportModule calls deleted.
- Constants removed:
SOD_ONLY = 5 and HIDE_SOD = 6 deleted from the expansion filter enum. Remaining constants (TBC_ONLY, CLASSIC_ONLY, WOTLK_ONLY, TBC_AND_WOTLK, CLASSIC_AND_TBC) are unchanged.
filterExpansion: Removed the isSoD local and the two SOD_ONLY / HIDE_SOD branches.
MinimalInit: Removed the if Questie.IsSoD then addOverride(...SeasonOfDiscovery...) end block and the if Questie.IsHardcore then HardcoreBlacklist:Load() end block.
Initialize: Removed the 8-call if Questie.IsSoD then SeasonOfDiscovery:LoadBase*/Load*() end block covering quest/NPC/item/object base data and fixes.
- TOC: Removed the commented-out
#Database\Corrections\SoMPhases.lua line.
v1.2.3 — Diagnostics Refactor & Monolithic DB Removal
Moved all DB init diagnostics out of chat and into the Develop debug level. Replaced hardcoded quest-ID spot-checks with generic per-table stats. Removed the stale monolithic database folders fully superseded by the DB plugin architecture (~30 MB removed).
DB Init Diagnostics — DEVELOP Level
- [QuestieInit —
_dbStats helper] Added a local _dbStats(t) function returning count=N minID=X maxID=Y for any table. Used at every checkpoint so diagnostic output is meaningful for any server's dataset without hardcoding expansion-specific IDs.
- [QuestieInit —
_dbDiag removed] Eliminated the local _dbDiag = {} accumulator and the deferred C_Timer.After(6, ...) print block. Diagnostics are now emitted inline as Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] ...") calls at the exact point each stage completes — visible in real time when Develop logging is enabled, not as a delayed flood 6 seconds post-load.
- [QuestieInit:LoadBaseDB] Pull result line converted to
DEBUG_DEVELOP.
- [QuestieInit:loadFullDatabase] Four diagnostic checkpoints converted to
DEBUG_DEVELOP with generic _dbStats output: After LoadBaseDB, After Corrections, Before Compile, After Compile.
- [QuestieInit:LoadDatabase — error paths]
loadstring parse errors and pcall execution errors converted to DEBUG_DEVELOP.
- [QuestieInit.Stages[1] — cached path]
DB was CACHED (no recompile) line converted to DEBUG_DEVELOP.
DB Plugin — Loader.lua Premature Count Check Removed
- [Questie-X-WotLKDB/Loader.lua] Removed the
countTable / quest+npc+obj+item count block and the DEBUG_CRITICAL "questData is empty" warning that fired at PLAYER_LOGIN. This check always reported zero counts because it ran before QuestieInit's loading coroutine had started. Loader.lua is now a minimal registration stub.
Monolithic Database Folders Removed
- [Database/Classic/] Deleted
classicQuestDB.lua (1.0 MB), classicNpcDB.lua (2.0 MB), classicObjectDB.lua (1.0 MB), classicItemDB.lua (2.1 MB). Never listed in Questie-X.toc. Classic data is now provided exclusively by the ClassicDB plugin.
- [Database/TBC/] Deleted
tbcQuestDB.lua (1.6 MB), tbcNpcDB.lua (3.5 MB), tbcObjectDB.lua (1.6 MB), tbcItemDB.lua (3.3 MB). TBC data is now provided exclusively by the TBCDB plugin.
- [Database/Wotlk/] Deleted
wotlkQuestDB.lua (2.3 MB), wotlkNpcDB.lua (5.2 MB), wotlkObjectDB.lua (2.0 MB), wotlkItemDB.lua (4.4 MB). WotLK data is now provided exclusively by the WotLKDB plugin. Combined removal: ~30 MB of dead weight from the core repository.
v1.2.2 — DB Plugin Pull Architecture & Compiler Hardening
Overhauled the DB plugin loading pipeline from a fragile push/bridge pattern to a direct pull at init time. Fixed a long-standing compiler bug that silently dropped extraobjective condition data. Removed all DevTools_Dump calls that were printing raw Lua table syntax to chat during validation.
DB Plugin Architecture — Pull Pattern
- [QuestieInit:LoadBaseDB] Replaced the broken
QuestieX_CoreDB bridge mechanism with a direct pull of DB plugin globals at init time. LoadBaseDB() now checks for QuestieX_WotLKDB_quest, QuestieX_WotLKDB_npc, QuestieX_WotLKDB_object, and QuestieX_WotLKDB_item globals and assigns them directly to QuestieDB.*Data. Globals are cleared (= nil) after transfer to free memory. This runs inside Questie-X's own init coroutine at a known point in the load sequence, with no dependency on cross-addon module references.
- [QuestieDB.lua] Removed
_G.QuestieX_CoreDB = QuestieDB export. The CoreDB bridge global is no longer needed and was never reliably accessible from DB plugin Loader.lua files due to module-registry timing.
DB Plugin — Loader.lua Simplification
- [Questie-X-WotLKDB/Loader.lua] Stripped the entire data-transfer block (the
if not QuestieX_CoreDB then return end guard and subsequent QuestieX_CoreDB.*Data = ... assignments). The file is now a PLAYER_LOGIN handler that registers the plugin with QuestiePluginAPI, logs absorbed table sizes, and emits a DEBUG_CRITICAL warning if questData is still empty after init.
Compiler — extraobjectives Conditions Field
- [compiler.lua — writer] Added serialization of
data[6] (conditions table). After writing the 5 existing fields per entry, the writer now writes a WriteByte(n) count followed by WriteShortString(key) + WriteInt24(value) for each condition entry. If data[6] is nil, writes 0.
- [compiler.lua — reader] Added deserialization of the conditions field. Reads a
ReadByte() condition count; if non-zero, reconstructs the conditions table as {[key]=value} and assigns it to entry[6].
- [compiler.lua — skipper] Updated to skip condition bytes: reads condition count, then skips a
ShortString + Int24 per condition.
- [Root cause]
QuestieDB.lua:1443 reads HideCondition = o[6] from each extraobjective. Before this fix, compiled data always produced o[6] = nil, so ShouldHideObjective() never activated. The hideIfQuestActive / hideIfQuestComplete conditions were silently ignored post-compilation. Validation also flagged the mismatch every load, which triggered DevTools_Dump to flood chat with raw Lua table syntax.
Compiler — DevTools_Dump Removal
- [compiler.lua — ValidateNPCs / ValidateObjects / ValidateItems / ValidateQuests] Removed all four
DevTools_Dump({["Compiled Table:"]=a, ["Base Table:"]=b}) calls from table-mismatch branches. These calls serialized full Lua tables to the chat frame as raw source code, appearing to users as a syntax error or data corruption. The preceding Questie:Warning(...) line already captures the mismatch identity. DevTools_Dump is a retail WoW debugging API unavailable or unreliable on private/custom servers and should never be called in production validation paths.
v1.1.7 – v1.2.1 — DB Loading Diagnostics & Fallback Tracker
Ongoing stability pass. Hardened the entire database loading pipeline, wired up the live quest-log fallback for quests missing from the DB, and fixed a chain of nil-guard crashes across corrections, map, and tracker modules.
Database Loading
- [LoadDatabase] Replaced bare
loadstring() / fn() calls with proper error capture (local fn, err = loadstring(...) + pcall(fn)). Errors now print to chat with the failing key and string length instead of silently falling back to {}.
- [Compiler] Fixed
hasData guard in QuestieDBCompiler:Compile() — now accepts type == "table" in addition to "string", preventing the compiler from silently aborting when LoadDatabase has already decoded the string to a table before compilation.
- [DB Architecture] Identified and documented that loading multiple DB plugins simultaneously (e.g. WotLKDB + ClassicDB) causes
questData overwrites. On WotLK servers only Questie-X-WotLKDB should be enabled alongside the server-specific plugin.
Live Fallback for Missing Quests
- [QuestieDB.GetQuest] When
rawdata is nil, a minimal quest object is now built from QuestLogCache instead of returning nil. The fallback populates name, level, isComplete, and an empty Objectives table with _isLogFallback = true.
- [QuestieQuest.PopulateQuestLogInfo] Fallback quests now seed their
Objectives table from QuestLogCache.GetQuestObjectives on first call, then call obj:Update() on each to refresh progress from the live quest log.
- [QuestieQuest.UpdateObjectiveNotes] Fallback quests now early-return to skip the static DB spawn-list path (
objectiveSpawnListCallTable), preventing "Corrupted objective data" errors caused by nil NPC IDs.
Crash Fixes
- [QuestieLib.GetQuestString] Guard against nil
name — returns quest ID string as fallback.
- [QuestieDB spawn loop] Nil-guard on
objectData[id] before clearing spawn keys in prune loop (attempt to index nil at QuestieDB:1715).
- [QuestieDB.GetSpawnList] Wrapped
objectiveSpawnListCallTable result in nil-guard before iterating — prevents pairs(nil) when a referenced NPC/object is missing from the loaded DB.
- [QuestieQuestPrivates killcredit]
monster(killCreditNpcId) result nil-guarded before indexing — prevents crash for kill-credit NPCs absent from npcData.
- [Townsfolk]
flags nil-guard added before bitband(flags, VENDOR) call.
- [QuestieQuest.UpdateObjectiveNotes]
quest.SpecialObjectives nil-guard before next() call.
- [QuestieQuest.PopulateQuestLogInfo]
quest.SpecialObjectives nil-guard before next() call.
v1.1.6 — Minimap Icon & P2 Stability
Minimap button overhaul and second pass of P2 bug fixes.
Minimap
- [MinimapIcon] Replaced default minimap icon with custom
mmapIcon.tga. Applied SetMask for circular clip on WotLK+ clients with SetTexCoord fallback for 1.12 vanilla clients.
Bug Fixes
- [QuestieServer] Restored plugin status UI,
C_QuestLog/C_Map shims, and QuestieServer init sequence.
- [QuestieLoader] Corrected
select() polyfill to not use arg table.
- [TOC] Added XXH load to TBC toc and guarded
plugin.stats nil access.
v1.1.5 — QuestieLearner Expansion & Database Options
Major expansion of the data-learning system and a new Database options tab.
QuestieLearner
- [QuestieLearner] Expanded hook coverage: quest accept, objective kill, object interaction, and item loot all feed learned data back to the appropriate DB table.
- [QuestieLearnerComms] Broadcast/receive learned entries to nearby Questie-X users via addon messages.
- [Custom Server Detection] Learned data for unrecognised quest IDs is stored under a per-realm key in
QuestieLearnerDB to separate retail/private/custom content.
- [DEVELOP logging] Debug messages emitted on every successful learn and every failed-to-learn event.
Options — Database Tab
- [QuestieOptionsDatabase] New "Database" tab with Import / Export (LibDeflate base64 encoded strings) and Cleanup (prune stale learned entries) functionality.
v1.1.4 — Questie-X: Plugin Architecture & Maintenance Update
This release marks the official rebranding from Questie-335 / PE-Questie to Questie-X and introduces the new plugin architecture. Additionally, this version includes significant UI enhancements, core compatibility refinements for legacy clients, and critical database corrections.
Architecture Changes
- [Repo] Repository renamed and re-homed to
Xurkon/Questie-X. Remote updated from PE-Questie to Questie-X.
- [Plugin API] Introduced
QuestiePluginAPI (Modules/Libs/QuestiePluginAPI.lua). Plugins register themselves and inject quest, NPC, object, item, and zone data without modifying core files.
- [Server Detection] Added
QuestieServer module (Modules/QuestieServer.lua) for improved runtime server environment detection.
- [Network] Added
QuestieLearnerComms module (Modules/Network/QuestieLearnerComms.lua) for cross-client quest data sharing.
- [Database] Removed embedded
Database/Ascension/ and Database/Ebonhold/ folders. All custom server data is now distributed via separate plugin addons.
UI Enhancements
- [Options] Resizable Options window! The Questie options UI can now be resized with corner drag functionality. Size and position persist between sessions.
- [Options] New Credits Tab! A dedicated tab in the options menu to acknowledge contributors and community partners.
- [Tutorial] Improved tutorial flows for objective type selection.
Core & Compatibility
- [Lua 5.0] Globally polyfilled
string.match and string.gmatch using string.find and string.gfind to ensure universal compatibility with legacy WoW clients (e.g., Turtle WoW).
- [AceTimer] Patched embedded
AceTimer-3.0 instances in ElvUI and OG-RaidHelper to resolve math.mod errors on Lua 5.0 clients.
- [Colors] Updated
CreateColor polyfill with SetRGB, SetRGBA, SetColor, and GetColor methods.
- [Comm] Improved cross-client data sharing stability.
Map & Tooltips
- [Tooltips] NPC names and objective text now populate reliably on map pins and world unit tooltips.
- [Tooltips] Resolved
[QuestieTooltips:GetTooltip] m_20509 debug log spam.
Quest Data
- [Database] Scraped and injected missing spawn coordinates for Bonechewer Mutant, Raider, Evoker, and Scavenger (NPC IDs 16876, 16925, 19701, 18952) from Wowhead.
- [Quest 10482] Correctly mapped Bonechewer NPCs to quest objectives in both WotLK and TBC database correction files.
New Plugins
- Questie-Ascension — Project Ascension server database.
- Questie-Ebonhold — Ebonhold server database.
TOC / Addon Identity
- [TOC] Core addon
.toc files updated to Questie-X title and v1.1.4 version.
- [Libs] Added
LibDeflate, XXH_Lua_Lib, LibDBIcon-1.0, and LibDataBroker-1.1 to the Libs directory.
Bug Fixes
- [QuestieDB] Overhauled
QuestieDB.IsComplete to accurately verify all objectives are finished using numFulfilled == numRequired instead of the unreliable server-side finished flag.
- [QuestieQuest] Implemented
HideCondition mechanism for objectives, allowing specific spawns to be hidden based on quest log status (hideIfQuestActive / hideIfQuestComplete).
- [Cache] Demoted Cache Validation "0/15 Error" to Debug level to reduce user confusion during login.
v9.9.2 — Final Pre-Refactor Release
⚠️ This is the final stable release before a major architectural refactoring. All active features and quest data from previous releases are preserved.
Fixes
- [Map] Resolved an issue where NPC names and objective text were inconsistently missing from map tooltips.
New Ebonhold Quests
- Western Plaguelands Trophy (ID 50187) - Kill 1 Rare in Western Plaguelands.
v9.9.1
New Ebonhold Quests
- Brood of the Black Flight (ID 50057) - Kill 30 Dragonkin in Burning Steppes.
v9.9.0
New Ebonhold Quests
- Azeroth: Southern Jungle (Complete 6 quests in Stranglethorn Vale).
- Kalimdor: Sandstone Giants (Kill Sandstone Giants in Tanaris). Felwood Restoration
(Complete 6 quests in Felwood).
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.
- [Map] Fixed missing map pins for the "Sandstone Giants" quest by switching from
creatureObjective to killCreditObjective, allowing Questie to correctly
resolve Dune Smasher spawn locations from the NPC database.
- [Tracking] Fixed collection quest counters showing stale counts when the Ebonhold scav
bot loots items — implemented a 3-stage
BAG_UPDATE_DELAYED strategy: immediate scan, 0.3s
debounce scan, and a 2s follow-up scan to allow the server's quest-objective cache to flush batch loot
counts.
v9.7.5
Fixes
- [Quest] Fixed an issue where re-accepted quests (e.g., repeatable custom quests) would
not show objective pins/icons on the map.
New Quests
- [Database] Added Storm Peak Orders (ID 50150) - The Storm
Peaks
- Objective: Complete any 6 quests in The Storm Peaks.
- [Database] Added Wild Basin (ID 50094) - Sholazar Basin
- Objective: Kill 75 Beasts. Includes 29 Beast NPC types with full spawn coordinates.
- NPCs: King Krush, Shardhorn Rhino, Aotona, Pitch, Serfex the Reaver, Dreadsaber, Hardknuckle
Matriarch, Shango, Venomtip, Bushwhacker, Hardknuckle Charger, Ravenous Mangal Crocolisk, Farunn,
Zeptek the Destroyer, Goretalon Matriarch, Sapphire Hive Wasp, Emperor Cobra, Sapphire Hive Drone,
Shattertusk Bull, Siltslither Eel, Spirit of Atha, Stranded Thresher, Mangal Crocolisk, Spirit of
Koosu, Longneck Grazer, Goretalon Roc, Sapphire Hive Queen, Spirit of Ha-Khalan, Bittertide Hydra
v9.7.4
Fixes
- [Tooltips] Fixed "attempt to concatenate local 'name' (a nil value)" error when quest
starters/finishers have missing names in the database.
- [Database] Added missing spawn coordinates for Quest 50031 "Stormbound" elementals in
Storm Peaks (zone 67).
- [Database] Fixed "Unknown Zone" issue for custom quests by correcting Zone ID index
usage (swapped `[6]` RequiredRaces for `[17]` ZoneID).
- [Database] Corrected Dragonblight Zone ID in custom quest definitions.
New Quests
- [Database] Added Morogh Missions (ID 50098) - Dun Morogh
- Objective: Complete any 6 quests in Dun Morogh. Auto-completes upon reaching the objective.
- [Database] Added Azuremyst Aid (ID 50100) - Azuremyst Isle
- Objective: Complete any 6 quests in Azuremyst Isle. Auto-completes upon reaching the objective.
- [Database] Added Stormforged Scales (ID 50066) - The Storm
Peaks
- Objective: Kill 30 Dragonkin. Includes 8 Dragonkin NPC types with full spawn coordinates.
- [Database] Added Peak Predators (ID 50095) - The Storm Peaks
- Objective: Kill 75 Beasts. Includes 24 Beast NPC types with full spawn coordinates.
- [Database] Added Peak Predators (ID 50096) - Icecrown
- Objective: Kill 75 Beasts. Includes 12 Beast NPC types with full spawn coordinates.
- [Database] Added Icecrown Advance (ID 50151) - Icecrown
- Objective: Complete any 6 quests in Icecrown. Auto-completes upon reaching the objective.
- [Database] Added Storm Peaks Trophy (ID 50205) - The Storm
Peaks
- Objective: Kill 1 Rare in The Storm Peaks. Includes 4 Rare NPC types (Skoll, Time-Lost Proto-Drake,
Vyragosa, Dirkee) with full spawn coordinates.
v9.7.3
New Features
- [Database] Implemented Ebonhold Database Module.
- Created dedicated `Database/Ebonhold/` structure for custom server data.
- Added `EbonholdLoader` to inject custom Quests, NPCs, Objects, and Items as overrides.
- **Note:** This structure preserves custom data during upstream Questie updates.
- [Objectives] Implemented Automated Text Retrieval.
- Questie now attempts to fetch quest text from the server at runtime for custom quests that are
missing from the database.
- Added "Objectives Board" (ID 600600) as a global quest starter.
Quests (Custom Content)
- [New] Added Heart of the Dragonflights (ID 50064) -
Dragonblight
- Objective: Kill 30 Dragonkin. Includes 49 Dragonkin NPC types.
- [New] Added Skies of Blade's Edge (ID 50060) - Blade's Edge
Mountains
- Objective: Kill 75 Dragonkin. Includes 17 Dragonkin NPC types.
- [New] Added Shadowed Beasts (ID 50087) - Shadowmoon Valley
- Objective: Kill 75 Beasts. Includes 25 Beast NPC types.
- [New] Added Forest Stalkers (ID 50083) - Terokkar Forest
- Objective: Kill 75 Beasts. Includes 53 Beast NPC types.
- [New] Added Savage Heights (ID 50085) - Blade's Edge
Mountains
- Objective: Kill 75 Beasts. Includes 47 Beast NPC types.
- [New] Added Unstable Fauna (ID 50086) - Netherstorm
- Objective: Kill 75 Beasts. Includes 18 Beast NPC types.
- [New] Added Elemental Balance (ID 50026) - Nagrand
- Objective: Kill 30 Elementals. Includes 12 Elemental NPC types.
- [New] Added Redridge Trophy (ID 50160) and Zangarmarsh
Trophy (ID 50192).
New Ascension Quests
- Westfall: Agria's Medicine, Seven Years of Bad Luck, Worm-Eaten Apple, Goldshire's
Generosity, Bookworm, Knowledge Corrupts, The Ruins of Northshire, Accursed Sisterhood, Words That
Shepherd Madness, Oracular Idol, A Betrayal Within, The Maid I Left Behind, The Saddest Among Us, The
Threat Swept Downstream, Stay a While, Defias Disruption.
- Dun Morogh: A Small Mistake, We Found Her!, The Scout's Favor, Old Mirsinth, Smoke on
the Wind, A Promising Path, A Fitting Disguise, His Radiant Majesty, Deciphering Radiation, Soaking the
Masses, Sever the Right Hand, A Growing Business, Thunderbrew's Hop, Stay a While, Live-Fire Demo, Bots
on Strike, A Brother's Betrayal, The True Story, Timber for the Coldhewn, Icehide the Unbroken.
- Teldrassil: The Carrion Road, The Sister Who Never Returned, Finding the Good Meat,
Transsubstantiating the Flesh, Communion Banquet, A Trail of Petals, Restless entrails, A Dark Warning,
The Aid of Theren-Dion, No Place for Scavengers, Termites in Teldrassil, Stay a While, Elydna's
Heirloom.
- Durotar: To Find a Cure, A Dangerous Sample, Knowledge of the Centaurs, Those Who Fell,
The Way is Shut, The Sinister Triad, So That He May Hear Again, A Sinister Ritual, Innocents for
Sinners, Unease Makes Tongues Wag, A Door Left Ajar, Esgramor's Master, Shinies!, Echoes of Hirsutta,
Auction the Past, Stay a While, Durotar's Dire Drought, The Queen's Decree, Avianna's Rose, The Last
Piece, Reversion.
- Tirisfal Glades: Rude Awakening, Marla's Last Wish, Monsters With Noble Intentions,
Restless Family Members, An Unspeakable Secret, A Noble Heritage, The True Heir of the Cains, The
Friends We Make Along the Way, I'm Home, Apothecary Flemer, The Nature of Freedom, Spotless Standing,
Stay a While, More Than the Sum of its Parts, Scarlet Correspondence, A Humble Duty, The Balnirs' Rest,
Brewing Disarray, This Is Justice.
- Mulgore: Death and Tribute, Death and Exile, Death and Dishonor, Death and Justice,
Death by Laughter, To Whom I Devote, Fighting Over Carrion, Smoke on the Horizon, Amphora of Sacred
Water, Stay a While, Exile of Embers, The Smoke that Remembers, The Circle’s Rite.
New Ebonhold Quests
- Outland: Elemental Balance, Savage Heights, Unstable Fauna, Forest Stalkers, Marsh
Predators, Skies of Blade's Edge, Shadowed Beasts, Zangarmarsh Trophy.
- Northrend: Tundra Turbulence, Stormbound, Dragonblight Trophy, Heart of the
Dragonflights, Peak Predators, Icecrown Advance, Storm Peaks Trophy, Stormforged Scales, Fjord Front,
Wild Basin, Grizzly Trophy, Zul'Drak Trophy, Basin Expeditions.
- Azeroth: Redridge Trophy, Morogh Missions, Azuremyst Aid, Shadow of Teldrassil, Trials
of Durotar, Song of the Woods, Morogh Trophy, Tirisfal Trophy.
Fixes
- [Tracker] Combat Update Fix: Tracker now updates objectives
immediately during combat without causing Lua errors or taint.
- [Tracker] Bag Update Fix: Quest progress now updates immediately when
looting items (fixes delay with loot bots).
- [Arrow] Refined Visibility Logic:
- **Auto Nearby**: Arrow correctly defaults to showing the nearest quest when no quests are tracked.
- **Zone Filter**: In "Auto Mode", the arrow hides if the nearest quest is in a different zone.
- **Instance Filter**: Arrow explicitly hides if the target is in a different instance.
- [Map] Fixed an issue where completed quest icons would persist on the map
(`RequestMapUpdate` logic).
- [Database] Updated `wotlkNpcDB.lua` with scraped spawn data for 12 key beast NPCs in
Terokkar Forest to ensure accuracy.
- [Arrow] Fixed a nil function error for `_CollectObjective` when processing incomplete
quests.
- [Arrow] Fixed syntax issues that prevented `QuestieArrow` module from initializing
correctly.
- [Database] Fixed a runtime crash in `ZoneDB` when encountering maps with no AreaId
mapping (e.g., Kalimdor).