aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2025-06-28 18:17:10 +0200
committerGitHub <noreply@github.com>2025-06-28 18:17:10 +0200
commit4c92d3550b331aff6a22f753295388fa2a215e6c (patch)
tree52ddb5ff08b50f86321d281b81ad34f0d656ac0b
parentc4c721cb7dd098d66b3e3cf940877f702d06c4cf (diff)
Core/Gossip: Send correct response depending on how the interaction was started (#31046)
-rw-r--r--src/server/game/Entities/Player/Player.cpp5
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp4
2 files changed, 5 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 351a4758222..65e24aa3639 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -14031,16 +14031,17 @@ void Player::SendPreparedGossip(WorldObject* source)
if (!source)
return;
+ // If there is only one quest available (and no gossip options), send quest info
if (source->GetTypeId() == TYPEID_UNIT || source->GetTypeId() == TYPEID_GAMEOBJECT)
{
- if (PlayerTalkClass->GetGossipMenu().Empty() && !PlayerTalkClass->GetQuestMenu().Empty())
+ if (PlayerTalkClass->GetGossipMenu().Empty() && PlayerTalkClass->GetQuestMenu().GetMenuItemCount() == 1)
{
SendPreparedQuest(source);
return;
}
}
- // in case non empty gossip menu (that not included quests list size) show it
+ // In case non empty gossip menu or quest menu count > 1, show it
// (quest entries from quest menu will be included in list)
uint32 textId = GetGossipTextId(source);
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index c8d41b9dc78..1fe2dbc32b9 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -80,8 +80,8 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPackets::Quest::QuestGiverHe
if (creature->AI()->OnGossipHello(_player))
return;
- _player->PrepareGossipMenu(creature, _player->GetGossipMenuForSource(creature), true);
- _player->SendPreparedGossip(creature);
+ _player->PrepareQuestMenu(creature->GetGUID());
+ _player->SendPreparedQuest(creature);
}
void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestGiverAcceptQuest& packet)