fix(quest): quest log population, NPC marker updates on accept/abandon

- Delegate GameHandler::getQuestGiverStatus() to QuestHandler instead of
  reading from GameHandler's own empty npcQuestStatus_ map
- Immediately add quest to local log in acceptQuest() instead of waiting
  for field updates, fixing quests not appearing after accept
- Handle duplicate accept path (server already has quest) by also adding
  to local log
- Remove early return on empty questLog_ in applyQuestStateFromFields()
- Re-query nearby quest giver NPC statuses on abandon so markers refresh

Signed-off-by: Pavel Okhlopkov <pavel.okhlopkov@flant.com>
This commit is contained in:
Pavel Okhlopkov 2026-04-10 19:50:56 +03:00
parent 9c1ffae140
commit 759d6046bb
3 changed files with 49 additions and 7 deletions

View file

@ -2261,6 +2261,10 @@ const std::unordered_map<uint64_t, QuestGiverStatus>& GameHandler::getNpcQuestSt
static const std::unordered_map<uint64_t, QuestGiverStatus> empty;
return empty;
}
QuestGiverStatus GameHandler::getQuestGiverStatus(uint64_t guid) const {
if (questHandler_) return questHandler_->getQuestGiverStatus(guid);
return QuestGiverStatus::NONE;
}
const std::vector<GameHandler::QuestLogEntry>& GameHandler::getQuestLog() const {
if (questHandler_) return questHandler_->getQuestLog();
static const std::vector<QuestLogEntry> empty;