Xurkon 457420f90c feat: add Database options tab with import/export/cleanup
New files:
- Modules/QuestieLearnerExport.lua: serialize/compress/encode pipeline using
  AceSerializer + LibDeflate:CompressDeflate(level=9) + EncodeForPrint.
  QxLD:<version>!<encoded> string format. Export(), ExportAll(), ValidateImport(),
  MergeImport(), DryRunPrune(), Prune().
- Modules/Options/DatabaseTab/QuestieOptionsDatabase.lua: new Database tab with:
    - Live learned data stats (per server)
    - Per-type learner toggles (NPCs/Quests/Objects/Items/Broadcast)
    - Export current server / Export all servers buttons (opens scrollable dialog)
    - Import window (paste -> Validate -> Import with diff summary)
    - Dry-run preview and Prune Now cleanup buttons
    - Full reset button (confirm-gated)
    - Contribute section with step-by-step GitHub submission instructions

Wiring:
- QuestieOptions.lua: database_tab initialized and registered in args
- All TOC files: QuestieLearnerExport.lua added before options, DatabaseTab lua added
2026-03-15 19:48:45 -05:00
2026-02-11 16:15:16 -06:00

Questie-X Logo

Version Downloads Documentation Patreon PayPal License


A universal WoW quest-helper with a plugin architecture for any private server.

Download Latest  •  View Source  •  Documentation


About

Questie-X is a fork of the original Questie addon, rebuilt to run reliably on any private server regardless of realm type or custom content. It fixes longstanding Lua errors, corrects API incompatibilities introduced by custom server emulators, and introduces a plugin system so server-specific quest databases can be distributed and maintained separately from the core addon.


Installation

  1. Download the latest release.
  2. Extract the archive into your Interface/AddOns/ directory.
  3. Rename the folder to match the dataset you want to load:
    • Questie-X — WotLK 3.3.5a (default)
    • Questie-X-Classic — Vanilla / Classic era content
    • Questie-X-TBC — The Burning Crusade content
  4. Log in. If your server does not use standard map data, enable Options -> Advanced -> Use WotLK map data.

Installing a Plugin

Plugins are standalone addons that inject custom quest, NPC, object, and item data into Questie-X at runtime. They are installed identically to the core addon.

  1. Download the plugin archive from its repository's Releases page.
  2. Extract it into Interface/AddOns/ alongside Questie-X.
  3. The folder name must match the plugin's .toc title exactly.
  4. Log in — Questie-X detects and loads all present plugins automatically on startup.

A plugin will not load unless Questie-X is also installed. The dependency is declared in the plugin's .toc file and enforced by the WoW client.


Plugin System

Questie-X exposes a public QuestiePluginAPI that any addon can use to register custom server data without touching core files. This makes it possible to maintain server-specific databases as independent repositories that update on their own release schedule.

How It Works

A plugin calls QuestiePluginAPI:RegisterPlugin during addon load and passes its database tables. Questie-X merges these into its runtime database before the first quest scan, so all features — map pins, tooltips, tracker, arrow — work transparently for custom content.

Writing a Plugin

A minimal plugin needs only a .toc file declaring Questie-X as a dependency and a loader script:

-- MyServerLoader.lua
local plugin = QuestiePluginAPI:RegisterPlugin("MyServer")
plugin:RegisterQuestDB(MyServerQuestDB)
plugin:RegisterNpcDB(MyServerNpcDB)
plugin:RegisterObjectDB(MyServerObjectDB)
plugin:RegisterItemDB(MyServerItemDB)
plugin:RegisterZoneData(MyServerUiMapData, MyServerZoneTables)

The database tables follow the same schema as Questie's built-in databases. See Modules/Libs/QuestiePluginAPI.lua for the full API reference and Database/Wotlk/wotlkQuestDB.lua for table format examples.


Fixes & Compatibility

Quest Log & Tracker

  • Corrected GetQuestLogTitle return value indices to match the client API. The client returns suggestedGroup at index 4, shifting isHeader to index 5 and questId to index 9. Previously, modules were using indices 4/8, causing quest headers to be misidentified and isDaily to be assigned the wrong value.
  • Removed premature break on nil title in quest log iteration loops. Quest log slots on private servers can be non-contiguous; the loop now uses a nil guard instead of aborting, preventing silently skipped quests.
  • Quest objective counters now update correctly when items are deposited by automated systems that bypass the standard loot frame, using a multi-stage BAG_UPDATE_DELAYED strategy.
  • Fixed QuestEventHandler crash on auto-completing quests caused by a missing QuestiePlayer module import.
  • Fixed re-accepted repeatable quests not showing objective icons after the second acceptance.

Map & Minimap

  • Fixed WorldMapFrame compatibility for servers that render the world map in minimized mode.
  • Fixed "ghost icon" bug where completed quest icons remained on the map after turn-in.
  • Fixed RequestMapUpdate logic that caused completed quest icons to persist across zone transitions.
  • Downgraded spurious [CRITICAL] No AreaId found for UiMapId log spam to debug level. On some servers, C_Map.GetBestMapForUnit returns a continent-level UiMapId for capital cities; the nil return was already handled gracefully but was incorrectly logged as critical.
  • Fixed map pins for killCredit-type objectives not resolving spawn locations correctly.

Tooltips

  • Fixed attempt to concatenate nil error when a quest starter or finisher has no name in the database.
  • Added support for killcredit and spell objective types in MapIconTooltip.
  • Tooltip now displays if an NPC drops an item that starts a quest.

Quest Arrow

  • Refactored distance calculations and target prioritisation; arrow now correctly filters targets by zone and instance.
  • Fixed arrow pointing to previously completed objective locations instead of the current finisher.
  • Fixed nil error in _CollectObjective when processing incomplete quests.
  • Fixed arrow direction for quests that require speaking to an NPC as a prerequisite step.

Nameplates

  • Questie nameplate hooks are skipped when a conflicting nameplate addon is detected, preventing taint and UI errors.

Databases & Custom IDs

  • Full support for large integer NPC, quest, object, and item IDs used by custom server emulators.
  • Fixed ZoneDB crash when encountering maps with no AreaId mapping (e.g. continent-level maps on Kalimdor).
  • Fixed GetObject returning nil for Item Finishers misidentified as GameObject Finishers on custom servers.
  • Fixed NPC 30514 (Thorim listen bunny) missing fallback spawn data for Sibling Rivalry turn-in.

Features

Visual Map Objectives

Quest starters, turn-ins, and all objective types are drawn as icons directly on the minimap and world map.

Quest Givers Quest Complete Quest Tooltip

Quest Tracker

  • Tracks quests automatically on acceptance.
  • Displays up to 20 quests simultaneously (original limit: 5).
  • Left-click opens the quest log; right-click provides focus mode and TomTom arrow integration.
  • Headers persist correctly across all session events.
Tracker

Quest Arrow

Directional arrow pointing toward the nearest active objective or quest finisher, with zone and instance awareness.

My Journey & Quests by Zone

  • Journey Log — records every quest accepted, completed, and abandoned during a session.
  • Quests by Zone — lists all available and completed quests in a given zone for completionists.
Journey Zone Quests

Database Search & Configuration

  • Search the full Questie database for any NPC, object, or quest by name or ID.
  • Extensive options: icon scale, tracking behaviour, nameplate display, tracker layout, and more.
Search Config

Credits

  • Questie Team — Original addon developers.
  • Xurkon — Questie-X fork and ongoing maintenance.
  • Majed (3majed) — Ascension server dataset.

License

MIT License — see LICENSE for details.

S
Description
No description provided
Readme MIT 35 MiB
Languages
Lua 100%