From 3e0e2354b70845328c70b80be91ca808778e890e Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Mon, 19 May 2025 17:26:50 -0400 Subject: [PATCH] Core/Gossip: Fix interaction with gossip launched by accepting quest Port From (https://github.com/TrinityCore/TrinityCore/commit/75bc3021da469d7c8eddbff23e5f1ec7c4a4dfbb) --- Source/Game/Entities/Creature/Gossip.cs | 1 + Source/Game/Handlers/MiscHandler.cs | 4 +++- Source/Game/Handlers/QuestHandler.cs | 7 ++++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Source/Game/Entities/Creature/Gossip.cs b/Source/Game/Entities/Creature/Gossip.cs index 6a9d1e979..42b247cc2 100644 --- a/Source/Game/Entities/Creature/Gossip.cs +++ b/Source/Game/Entities/Creature/Gossip.cs @@ -217,6 +217,7 @@ namespace Game.Misc public ObjectGuid SourceGuid; public uint TrainerId; public uint PlayerChoiceId; + public bool IsLaunchedByQuest; } public class PlayerMenu diff --git a/Source/Game/Handlers/MiscHandler.cs b/Source/Game/Handlers/MiscHandler.cs index a3b31e8b2..f2af348bf 100644 --- a/Source/Game/Handlers/MiscHandler.cs +++ b/Source/Game/Handlers/MiscHandler.cs @@ -436,7 +436,9 @@ namespace Game [WorldPacketHandler(ClientOpcodes.CloseInteraction)] void HandleCloseInteraction(CloseInteraction closeInteraction) { - if (_player.PlayerTalkClass.GetInteractionData().SourceGuid == closeInteraction.SourceGuid) + if (_player.PlayerTalkClass.GetInteractionData().IsLaunchedByQuest) + _player.PlayerTalkClass.GetInteractionData().IsLaunchedByQuest = false; + else if (_player.PlayerTalkClass.GetInteractionData().SourceGuid == closeInteraction.SourceGuid) _player.PlayerTalkClass.GetInteractionData().Reset(); if (_player.GetStableMaster() == closeInteraction.SourceGuid) diff --git a/Source/Game/Handlers/QuestHandler.cs b/Source/Game/Handlers/QuestHandler.cs index 5ee27bb06..1d7a0d823 100644 --- a/Source/Game/Handlers/QuestHandler.cs +++ b/Source/Game/Handlers/QuestHandler.cs @@ -159,15 +159,14 @@ namespace Game } } - _player.PlayerTalkClass.SendCloseGossip(); - - if (quest.HasFlag(QuestFlags.LaunchGossipAccept)) + if (quest.HasFlag(QuestFlags.LaunchGossipAccept) && !quest.HasFlagEx(QuestFlagsEx.SuppressGossipAccept)) { void launchGossip(WorldObject worldObject) { _player.PlayerTalkClass.ClearMenus(); _player.PrepareGossipMenu(worldObject, _player.GetGossipMenuForSource(worldObject), true); _player.SendPreparedGossip(worldObject); + _player.PlayerTalkClass.GetInteractionData().IsLaunchedByQuest = true; } Creature creature = obj.ToCreature(); @@ -180,6 +179,8 @@ namespace Game launchGossip(go); } } + else + _player.PlayerTalkClass.SendCloseGossip(); return; }