aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/QuestHandler.cpp
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2024-12-29 00:43:01 +0100
committerGitHub <noreply@github.com>2024-12-29 00:43:01 +0100
commit75bc3021da469d7c8eddbff23e5f1ec7c4a4dfbb (patch)
tree8e58c4dd6234c06941b6b7ddc76b8babd99744a1 /src/server/game/Handlers/QuestHandler.cpp
parent6b96facee3389f79e579e8a325440051891fa27e (diff)
Core/Gossip: Fix interaction with gossip launched by accepting quest (#30419)
Diffstat (limited to 'src/server/game/Handlers/QuestHandler.cpp')
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index cca62c6ac08..cec2672e689 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -181,15 +181,14 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG
}
}
- _player->PlayerTalkClass->SendCloseGossip();
-
- if (quest->HasFlag(QUEST_FLAGS_LAUNCH_GOSSIP_ACCEPT))
+ if (quest->HasFlag(QUEST_FLAGS_LAUNCH_GOSSIP_ACCEPT) && !quest->HasFlagEx(QUEST_FLAGS_EX_SUPPRESS_GOSSIP_ACCEPT))
{
auto launchGossip = [&](WorldObject* worldObject)
{
_player->PlayerTalkClass->ClearMenus();
_player->PrepareGossipMenu(worldObject, _player->GetGossipMenuForSource(worldObject), true);
_player->SendPreparedGossip(worldObject);
+ _player->PlayerTalkClass->GetInteractionData().IsLaunchedByQuest = true;
};
if (Creature* creature = object->ToCreature())
@@ -197,6 +196,8 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG
else if (GameObject* go = object->ToGameObject())
launchGossip(go);
}
+ else
+ _player->PlayerTalkClass->SendCloseGossip();
return;
}