Core/Gossip: Fix interaction with gossip launched by accepting quest

Port From (https://github.com/TrinityCore/TrinityCore/commit/75bc3021da469d7c8eddbff23e5f1ec7c4a4dfbb)
This commit is contained in:
Hondacrx
2025-05-19 17:26:50 -04:00
parent e44861a629
commit 3e0e2354b7
3 changed files with 8 additions and 4 deletions
+1
View File
@@ -217,6 +217,7 @@ namespace Game.Misc
public ObjectGuid SourceGuid; public ObjectGuid SourceGuid;
public uint TrainerId; public uint TrainerId;
public uint PlayerChoiceId; public uint PlayerChoiceId;
public bool IsLaunchedByQuest;
} }
public class PlayerMenu public class PlayerMenu
+3 -1
View File
@@ -436,7 +436,9 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.CloseInteraction)] [WorldPacketHandler(ClientOpcodes.CloseInteraction)]
void HandleCloseInteraction(CloseInteraction 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(); _player.PlayerTalkClass.GetInteractionData().Reset();
if (_player.GetStableMaster() == closeInteraction.SourceGuid) if (_player.GetStableMaster() == closeInteraction.SourceGuid)
+4 -3
View File
@@ -159,15 +159,14 @@ namespace Game
} }
} }
_player.PlayerTalkClass.SendCloseGossip(); if (quest.HasFlag(QuestFlags.LaunchGossipAccept) && !quest.HasFlagEx(QuestFlagsEx.SuppressGossipAccept))
if (quest.HasFlag(QuestFlags.LaunchGossipAccept))
{ {
void launchGossip(WorldObject worldObject) void launchGossip(WorldObject worldObject)
{ {
_player.PlayerTalkClass.ClearMenus(); _player.PlayerTalkClass.ClearMenus();
_player.PrepareGossipMenu(worldObject, _player.GetGossipMenuForSource(worldObject), true); _player.PrepareGossipMenu(worldObject, _player.GetGossipMenuForSource(worldObject), true);
_player.SendPreparedGossip(worldObject); _player.SendPreparedGossip(worldObject);
_player.PlayerTalkClass.GetInteractionData().IsLaunchedByQuest = true;
} }
Creature creature = obj.ToCreature(); Creature creature = obj.ToCreature();
@@ -180,6 +179,8 @@ namespace Game
launchGossip(go); launchGossip(go);
} }
} }
else
_player.PlayerTalkClass.SendCloseGossip();
return; return;
} }