From e43b760c089e99226f9a88fc005cfcb14752361c Mon Sep 17 00:00:00 2001 From: Walter Pagani Date: Thu, 10 Oct 2024 18:10:55 -0300 Subject: [PATCH] fix(Core/QuestHandler): Question marks not being shown (#20099) --- src/server/game/Handlers/QuestHandler.cpp | 34 ++++++++++------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 4933dc6ef..0ba046d39 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -38,14 +38,8 @@ void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket& recvData) recvData >> guid; uint32 questStatus = DIALOG_STATUS_NONE; - GossipMenu& gossipMenu = _player->PlayerTalkClass->GetGossipMenu(); - // Did we already get a gossip menu with that NPC? if so no need to status query - if (gossipMenu.GetSenderGUID() == guid) - { - return; - } - Object* questGiver = ObjectAccessor::GetObjectByTypeMask(*_player, guid, TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT); + if (!questGiver) { LOG_DEBUG("network.opcode", "Error in CMSG_QUESTGIVER_STATUS_QUERY, called for not found questgiver ({})", guid.ToString()); @@ -55,21 +49,23 @@ void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket& recvData) switch (questGiver->GetTypeId()) { case TYPEID_UNIT: - { - LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_STATUS_QUERY for npc {}", guid.ToString()); - if (!questGiver->ToCreature()->IsHostileTo(_player)) // do not show quest status to enemies - questStatus = _player->GetQuestDialogStatus(questGiver); - break; - } + { + LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_STATUS_QUERY for npc {}", guid.ToString()); + if (!questGiver->ToCreature()->IsHostileTo(_player)) // do not show quest status to enemies + questStatus = _player->GetQuestDialogStatus(questGiver); + break; + } + case TYPEID_GAMEOBJECT: + { + LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_STATUS_QUERY for GameObject {}", guid.ToString()); + if (sWorld->getBoolConfig(CONFIG_OBJECT_QUEST_MARKERS)) { - LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_STATUS_QUERY for GameObject {}", guid.ToString()); - if (sWorld->getBoolConfig(CONFIG_OBJECT_QUEST_MARKERS)) - { - questStatus = _player->GetQuestDialogStatus(questGiver); - } - break; + questStatus = _player->GetQuestDialogStatus(questGiver); } + break; + } + default: LOG_ERROR("network.opcode", "QuestGiver called for unexpected type {}", questGiver->GetTypeId()); break;