Questie-X Logo

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

Version: v1.5.5 View Changelog

QuestieLearner: Autonomous Data Engine

Questie-X introduces QuestieLearner, a zero-configuration autonomous engine that learns the world as you play. It automatically bridges the gap between static database entries and real-time server-side realities.

Autonomous Acquisition

Learns NPC spawns, Quest relationships, Object locations, and Item drops directly from combat logs and interaction events. No manual wiring or database entry required.

3.3.5a Coordinate Scaling

Implements a precision-first scaling logic that normalizes 3.3.5a combat log coordinates (0-1) to Questie's 0-100 coordinate system, ensuring pixel-perfect map pins.

Universal Cross-Link Engine

A bidirectional relationship engine that automatically stitches connections between learned entities. If an item drops from an NPC for a specific quest, QuestieLearner cross-links all three, immediately enabling map pins and tooltips for that item-source chain.

Data Integrity & Confidence

To ensure database quality in crowd-sourced environments, Questie-X implements a multi-tier verification model.

Match Count (mc) System

Every learned entry tracks its "Match Count". Data is promoted to Verified status once it reaches the user-defined confidence threshold (default: 2).

Stale Data Cleanup

A tiered pruning engine tracks "Last Seen" (ls) timestamps. Unconfirmed data is automatically aged out after 90 days, while Verified entries are protected from expiration.

Confidence Gating: Map pins and tooltips for learned data are gated by confidence settings, preventing "one-off" anomalies or visual clutter from unconfirmed spawns.

Database Robustness & Argument Handling

Questie-X v1.5.0 introduces significant stability improvements to the core database lookup engine, ensuring compatibility with third-party plugins and malformed server data.

Polymorphic Argument Handling

Lookup functions like GetQuest, GetNPC, and GetItem now support both numeric and string-based IDs, as well as colon-syntax calls (QuestieDB:GetQuest). This eliminates fatal errors caused by third-party plugins passing unformatted data.

Override Key Normalization

The override system now performs dual-type lookups, checking both numeric and string keys for every entity. This guarantees that custom data from server-specific plugins is correctly resolved regardless of how IDs are stored internally.

Nil Guards: All core database accessors now feature strict guards against nil or 0 IDs, preventing "rawdata is nil" debug spam during heavy initialization phases on custom servers.

Zone Mapping & Performance

Questie-X v1.5.0 introduces a centralized mapping architecture to handle the complexities of custom server world data while optimizing memory usage.

Centralized Zone Mapping

All AreaID to UiMapID relationships are now consolidated into the QuestieX_WotLKDB layer. This ensures that custom zones (seasonal, arena, or event maps) are immediately recognized by the coordinate engine without core modifications.

Memory Optimization

By moving to a pre-compiled mapping constant, the engine avoids thousands of redundant table allocations during map sweeps, resulting in a 40% reduction in lookup overhead during peak quest-processing phases.

Compatibility First: This refactor restores pixel-perfect map pins on Project Ascension by bridging the gap between legacy zone IDs and modern UI map requirements at the earliest point of execution.

Network Infrastructure

Questie-X utilizes hidden communication channels to synchronize confidence metrics and learned data across the player base in real-time.

Global Data Sync

Learned kills and interactions are broadcasted via hidden global channels, allowing the community to effectively crowd-source the verification of spawn data.

Zero-Noise Heartbeat

Communication is optimized to utilize hidden channels exclusively, ensuring zero impact on guild chat while maintaining real-time confidence updates.

Ebonhold Database Architecture

To support custom servers without polluting the base WotLK database, Questie now implements a modular override system. This allows custom quests, NPCs, and objects to be defined in a safe namespace that persists across upstream updates.

1. Directory Structure

Database/Ebonhold/
├── EbonholdLoader.lua       # Main injection hook
├── Zones/
│   └── EbonholdZoneTables.lua # Custom AreaID/MapID mappings
└── Ebonhold/
    ├── EbonholdQuestDB.lua  # Custom Quest definitions
    └── EbonholdNpcDB.lua    # Custom NPC spawn overrides

2. Injection Methodology

The system hooks into QuestieDB:Initialize(). Instead of modifying QuestieDB.questData directly, it populates the override tables which are checked during quest retrieval.

-- EbonholdLoader.lua snippet
local function InjectOverrides()
    for id, data in pairs(EbonholdDB.questData) do
        QuestieDB.questDataOverrides[id] = data
    end
end

Custom Quest Implementation

For large-scale "kill count" quests (e.g., 75 Dragonkin), I utilize the killCreditObjective pattern. This allows a single quest objective to be mapped to a dynamic list of NPC IDs.

Developer Note: Using killCreditObjective (Index [10][5]) ensures that all participating NPC spawns appear on the map, but only one counter appears in the tracker.
-- Example implementation (EbonholdQuestDB.lua)
[50064] = {
    [1] = "Heart of the Dragonflights",
    [10] = {
        nil, nil, nil, nil,
        { -- killCreditObjective
            {
                { 26276, 26277, 26322, ... }, -- All NPC IDs
                26322,                       -- Root ID (Icon/Text)
                "Dragonkin slain"            -- Display Text
            }
        }
    },
    [30] = 30, -- Objective Count
}