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.
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.
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.