diff --git a/Source/Game/Entities/Creature/Creature.Fields.cs b/Source/Game/Entities/Creature/Creature.Fields.cs index 4b2e109a4..20b408ac6 100644 --- a/Source/Game/Entities/Creature/Creature.Fields.cs +++ b/Source/Game/Entities/Creature/Creature.Fields.cs @@ -28,6 +28,7 @@ namespace Game.Entities bool _isMissingCanSwimFlagOutOfCombat; + uint? _gossipMenuId; uint? _trainerId; public ulong m_PlayerDamageReq; diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index 6ee14edc2..5b011496b 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -1138,6 +1138,19 @@ namespace Game.Entities public bool HasFlag(CreatureStaticFlags7 flag) { return _staticFlags.HasFlag(flag); } public bool HasFlag(CreatureStaticFlags8 flag) { return _staticFlags.HasFlag(flag); } + public uint GetGossipMenuId() + { + if (_gossipMenuId.HasValue) + return _gossipMenuId.Value; + + return GetCreatureTemplate().GossipMenuId; + } + + public void SetGossipMenuId(uint? gossipMenuId) + { + _gossipMenuId = gossipMenuId; + } + public uint GetTrainerId() { if (_trainerId.HasValue) diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 7ea9cdb1e..ddb27baa5 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -2698,7 +2698,7 @@ namespace Game.Entities switch (source.GetTypeId()) { case TypeId.Unit: - return source.ToCreature().GetCreatureTemplate().GossipMenuId; + return source.ToCreature().GetGossipMenuId(); case TypeId.GameObject: return source.ToGameObject().GetGoInfo().GetGossipMenuId(); default: diff --git a/Source/Game/Handlers/NPCHandler.cs b/Source/Game/Handlers/NPCHandler.cs index 6439aa831..26c50b50c 100644 --- a/Source/Game/Handlers/NPCHandler.cs +++ b/Source/Game/Handlers/NPCHandler.cs @@ -153,7 +153,7 @@ namespace Game _player.PlayerTalkClass.ClearMenus(); if (!unit.GetAI().OnGossipHello(_player)) { - GetPlayer().PrepareGossipMenu(unit, unit.GetCreatureTemplate().GossipMenuId, true); + GetPlayer().PrepareGossipMenu(unit, unit.GetGossipMenuId(), true); GetPlayer().SendPreparedGossip(unit); } } diff --git a/Source/Game/Handlers/QuestHandler.cs b/Source/Game/Handlers/QuestHandler.cs index 8d9b84d3f..c789767e1 100644 --- a/Source/Game/Handlers/QuestHandler.cs +++ b/Source/Game/Handlers/QuestHandler.cs @@ -68,7 +68,7 @@ namespace Game if (creature.GetAI().OnGossipHello(_player)) return; - GetPlayer().PrepareGossipMenu(creature, creature.GetCreatureTemplate().GossipMenuId, true); + GetPlayer().PrepareGossipMenu(creature, creature.GetGossipMenuId(), true); GetPlayer().SendPreparedGossip(creature); }