Core/Gossip: Fix interaction with gossip launched by accepting quest
Port From (https://github.com/TrinityCore/TrinityCore/commit/75bc3021da469d7c8eddbff23e5f1ec7c4a4dfbb)
This commit is contained in:
@@ -217,6 +217,7 @@ namespace Game.Misc
|
||||
public ObjectGuid SourceGuid;
|
||||
public uint TrainerId;
|
||||
public uint PlayerChoiceId;
|
||||
public bool IsLaunchedByQuest;
|
||||
}
|
||||
|
||||
public class PlayerMenu
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user