From bc8dc03724b70c4c33538a9c6a74127979ba8d7c Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 14 Mar 2023 02:22:08 -0400 Subject: [PATCH] Core/Creatures: Allow overriding default gossip menu id Port From (https://github.com/TrinityCore/TrinityCore/commit/09568736134372ec1a79b936a248eec30f071c8d) --- Source/Game/Entities/Creature/Creature.Fields.cs | 1 + Source/Game/Entities/Creature/Creature.cs | 13 +++++++++++++ Source/Game/Entities/Player/Player.cs | 2 +- Source/Game/Handlers/NPCHandler.cs | 2 +- Source/Game/Handlers/QuestHandler.cs | 2 +- 5 files changed, 17 insertions(+), 3 deletions(-) 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); }