EnsureLearnedData was using 'or' which never updates an existing table.
If learnedData was created by an older version of the code without
learnQuests/learnItems/learnObjects keys, those stayed nil (falsy),
causing every quest/item/object learn call to return immediately.
Now explicitly backfills each missing key to true so all categories
record correctly regardless of when the SavedVariables were first created.
- QuestieOptionsDatabase: added 'Loaded Questie-X Plugins' section at order 7
For pull-type plugins (WotLKDB) where plugin.stats are all 0, the panel now
falls back to counting QuestieDB.*Data directly — this is safe because the
name function is called after init completes (user opens the options panel)
- QuestieOptionsAdvanced: replaced full plugin panel with redirect note
pointing users to the Database tab
- LearnNPC/Quest/Item/Object: only print when entry is brand new (isNew flag)
Update calls (coord refresh, mc increment) are silent
- Remove mouseover cache log (fired on every quest giver hover)
- Remove target cache log (fired on every target switch)
- Remove network MERGE log (fired every 60s reinforcement cycle)
- Remove network NEW log (replaced by the isNew pattern above)
- Kill log kept but wording tightened to 'Kill recorded'
- Inject summary, Events registered, Initialized kept at DEBUG_INFO
(only visible when INFO level is enabled, not default DEVELOP spam)
QuestieInit:LoadBaseDB:
- Count WotLKDB records BEFORE clearing globals
- Store counts in QuestieX_WotLKDB_Counts global for Loader.lua to read
QuestieLearner:OnCombatLogEvent:
- Only record kill coords for NPCs already in QuestieDB (quest objectives)
or that were explicitly cached via target/mouseover (known quest givers)
- Prevents every random mob kill from polluting the learner database
QuestieLearner:
- Expose QuestieLearner.data as direct ref to Questie.db.global.learnedData
- Add mc (match-count) field tracking to LearnNPC/Quest/Item/Object
- Add _Learner:BroadcastIfCommsAvailable() hook called after every write
- Add QuestieLearner:HandleNetworkData() — validates, merges, and deduplicates
incoming network data for NPC/QUEST/ITEM/OBJECT types, including coordinate
and item-drop list merging
QuestieLearnerComms:
- Move DebugLog definition to top of file (was called before definition)
- Fix IsDuplicateMessage fallback: table.getn(serializedData) -> string.len(),
mod() -> math.mod() for Lua 5.0 compatibility
- Add mutedUntil table and implement 5-minute timed mute on 3 strikes
(previously the 3-strike branch was an empty if body with no effect)
- Remove duplicated nil-check + DebugLog block in ProcessRawMessage
The previous implementation used 'arg' (Lua 5.0 implicit vararg table) which
is nil inside a fixed-parameter function. Replace with the explicit index-chain
pattern matching the QuestieCompat.lua version.
- Icons/mmapIcon.tga: new minimap button icon
- MinimapIcon.lua: use mmapIcon.tga as LDB icon; apply circular mask
(AddMaskTexture for Retail, SetMask+pcall for Classic/WotLK/1.12 vanilla)
When QuestLogCache parses incomplete tracker data upon reload,
it leaves quest.isComplete undefined or false. This allows the
Arrow to process SpecialObjectives (like required source item drops)
which do not have Completed/Needed/Collected stats on them, bypassing
our recent arrow logic fix.
Added an explicit check for QuestieDB.IsComplete(quest.Id) == 1
at the very top of the track loop to guarantee the Arrow immediately
stops processing objectives and exclusively targets the finisher.