Commit Graph

528 Commits

Author SHA1 Message Date
Xurkon 1248d7a1f6 Fix Arrow pointing to completed objectives instead of finisher
QuestieArrow._CollectObjective was only checking objective.Completed
to determine if it should skip an objective. In WotLK, the server often
doesn't send the completed flag until turn-in time.

This caused the arrow to still pick up the kill/interaction spawns (like
the 5/5 Goblin Prisoners) because their Completed flag hadn't been
set, overpowering the finisher spawn.

Added a fallback check: if objective.Collected >= objective.Needed,
skip the objective.
2026-02-21 12:07:07 -06:00
Xurkon 6d86a784e7 Set quest.isComplete when IsComplete==1 in GetAllQuestIds
QuestieArrow._CollectQuestTargets checks quest.isComplete (the quest
object field) to decide whether to collect finisher spawns or objective
spawns. Without setting this field, the arrow fell through to objective
collection and picked up the stale Cold Iron Key fake objective
(CheckQuestSourceItem) which resolves to NPC 29323 at 39.8, 72.7.

Now when QuestieDB.IsComplete returns 1, set quest.isComplete = true
and quest.WasComplete = true before PopulateObjectiveNotes, so the
arrow correctly routes to the finisher (Gretchen Fizzlespark) instead.
2026-02-21 11:59:34 -06:00
Xurkon 25f2ece139 Fix IsComplete: check numFulfilled==numRequired instead of finished flag
The finished flag in QuestLogCache is only set to true when the server
sends isComplete=1 via GetQuestLogTitle. For quest 12843 ('They Took
Our Men!'), after using all Cold Iron Keys the objectives numerically
complete (5/5) but isComplete=1 may not fire until the player visits
the turn-in NPC.

Use numFulfilled == numRequired as the completion check instead, which
updates from GetQuestLogLeaderBoard immediately when each objective
fills. Added numRequired > 0 guard to avoid trivially matching
zero-required objectives.
2026-02-21 11:44:32 -06:00
Xurkon e6c9d241fb Fix tooltip error for zone-complete trigger objectives (quest 50150)
_RegisterObjectiveTooltips was only silently skipping objectives
with Type == 'event'. Quest 50150 'Storm Peak Orders' uses a
server-tracked zone-completion trigger objective which has no spawnList
and no Id -- the server sends it with a type like 'monster' not 'event'.

Broaden the guard: any objective with no spawnList AND no Id has nothing
for Questie to draw. Mark hasRegisteredTooltips = true and return
silently. Objectives with no spawnList but a valid Id still error
so missing data is reported.
2026-02-21 11:42:26 -06:00
Xurkon ec013e2861 Demote cache count mismatch from Error to Debug
When isQuestLogGood passes, the cache IS valid. The goodQuestsCount != numQuests
mismatch is a false positive on WotLK private servers where GetNumQuestLogEntries
returns a different numQuests than what the objectives loop validated.
Log at debug level so it doesn't spam player chat.
2026-02-21 11:29:02 -06:00
Xurkon 9890343616 Fix IsComplete returning 0 when all objectives are finished
The inline ternary short-circuited to 0 as soon as objectives[1]
existed, regardless of whether all objectives were done. This caused
quests using consumable key items (e.g. Cold Iron Key for quest 12843)
to incorrectly return IsComplete=0 after using the key, since the key
is no longer in the bag (CheckQuestSourceItem=false) and
questLogEntry.isComplete is not set by the server until after
explicit turn-in.

Now iterates questLogEntry.objectives and returns 1 if all are
finished, so PopulateObjectiveNotes routes to AddFinisher correctly.
2026-02-21 11:28:14 -06:00
Xurkon 211bc5be84 Fix arrow pointing to key-drop NPC after quest complete
GetAllQuestIds called CheckQuestSourceItem(questId, true) for all
non-failed quests. When a consumable key is used and leaves the bag,
this created a fake 'get the item' objective pointing to the drop NPC
even when the quest was already complete (complete == 1).

Guard the call: only run CheckQuestSourceItem when complete != 1.
Complete quests route through PopulateObjectiveNotes which correctly
shows the finisher instead.
2026-02-21 11:17:37 -06:00
Xurkon 6600e57d30 Restore visible error for non-event objectives missing spawnList
Event-type objectives (triggerEnd with no coordinates) silently skip.
All other objective types with missing spawnList keep Questie:Error
so players can see and report missing spawn data.
2026-02-21 11:10:15 -06:00
Xurkon db1d8363c4 Fix false-positive 'broken quest log' error on WotLK servers
GetQuestObjectives returns nil for quests with no trackable objectives
on WotLK private servers. The original code set hasInvalidObjective=true
but left isQuestLogGood=true, causing goodQuestsCount to stay 0 while
numQuests was 19 -> 'Good quest: 0/19' error on every login/reload.

Treat a non-table return as an empty valid objective list. Demote the
Questie:Error to Questie:Debug so it doesn't spam chat.
2026-02-21 11:07:05 -06:00
Xurkon cfeee769e8 Release v9.7.9
Register BAG_UPDATE_DELAYED to catch autoloot objective updates.
Autoloot bots that bypass the loot frame skip QUEST_WATCH_UPDATE,
leaving the tracker stuck at a stale count. Setting doFullQuestLogScan=true
on BAG_UPDATE_DELAYED forces a refresh on the next QUEST_LOG_UPDATE.
2026-02-21 10:44:26 -06:00
Xurkon 5c059f6682 Release v9.7.8
Fix tooltip population error for event objectives with no spawnList
2026-02-21 10:35:53 -06:00
Xurkon 052d38c2f7 Fix tooltip objective population error for event-type objectives with no spawnList
_RegisterObjectiveTooltips: silently return for Type='event' objectives
with no spawnList (e.g. triggerEnd with nil coordinates). These have no
tooltip to register, so mark hasRegisteredTooltips=true and bail out.
For other types, demote from Error to Debug.
2026-02-21 10:35:23 -06:00
Xurkon 9771a53869 Fix spurious 'Missing event data' error for triggerEnd objectives with no coordinates
QuestieQuestPrivates.lua: event handler now returns nil silently when
Coordinates is nil, instead of logging a visible error. Nil coordinates
are valid for server-tracked objectives (complete N quests in zone) that
have no map pin.
2026-02-21 00:08:33 -06:00
Xurkon b8d2d5a9ea docs: remove self-learning section, update version to 9.7.6 2026-02-21 00:06:15 -06:00
Xurkon fae8a36c2d docs: expand v9.7.5 changelog entry for quest pin fixes 2026-02-20 22:53:54 -06:00
Xurkon 315cb1f31b Release v9.7.6
Fix missing objective data for complete-quests-in-zone quest types
2026-02-20 22:45:40 -06:00
Xurkon b1d79ee31e Fix missing objective data for complete-quests-in-zone quest types
Add [9] triggerEnd field to all 9 complete-N-quests quests (50151, 50145,
50098, 50100, 50149, 50099, 50108, 50111, 50150). QuestieDB.GetQuest maps
rawdata[9] to triggerEnd, which appends ObjectiveData[1]={Type='event'}
satisfying PopulateQuestLogInfo when server sends one objective. No map
pins are drawn since coordinates are nil.

Also removed unnecessary all-nil [10] objectives table from quest 50111.
2026-02-20 22:12:54 -06:00
Xurkon b365fdf641 Docs: Add full changelog page and link in index 2026-02-18 22:59:01 -06:00
Xurkon 59f7386c43 Docs: Add new Ebonhold quests to Changelog 2026-02-18 22:51:01 -06:00
Xurkon dd6329de97 Docs: Update Changelog with new Ascension quests 2026-02-18 22:49:11 -06:00
Xurkon 86f9b39a8d Fix Lua syntax error - missing closing brace in EbonholdNpcDB.lua 2026-02-17 16:49:47 -06:00
Xurkon bdd3119762 Ebonhold v9.7.4: Add new quests and fixes 2026-02-17 06:51:49 -06:00
Xurkon 69bba6e756 Add missing spawn data for Quest 50031 Stormbound elementals 2026-02-16 16:55:11 -06:00
Xurkon 7dce7b792e Fix: Tooltip nil name concatenation error 2026-02-16 11:13:46 -06:00
Xurkon a113070b7d Release v9.7.3 2026-02-15 09:08:51 -06:00
Xurkon 0a1bc74f45 Docs: Complete README overhaul with professional aesthetics and badges 2026-02-15 07:22:30 -06:00
Xurkon 6ef85d4e2d v9.7.2: Ebonhold Database integration and core logic refinements 2026-02-14 21:13:44 -06:00
Xurkon 0a2cc15641 Initial commit 2026-02-11 16:15:16 -06:00