From 74bb5e4541b7ce95712480fd5be80fab68676a56 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 14 Mar 2023 01:55:52 -0400 Subject: [PATCH] Core/Creatures: Allow overriding non-gossip based trainer ids for creatures Port From (https://github.com/TrinityCore/TrinityCore/commit/689d3a667af8c3e2662b77d14edf201771130bee) --- Source/Game/Entities/Creature/Creature.Fields.cs | 2 ++ Source/Game/Entities/Creature/Creature.cs | 13 +++++++++++++ Source/Game/Handlers/NPCHandler.cs | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Source/Game/Entities/Creature/Creature.Fields.cs b/Source/Game/Entities/Creature/Creature.Fields.cs index 9f4324b96..6df7a1b7c 100644 --- a/Source/Game/Entities/Creature/Creature.Fields.cs +++ b/Source/Game/Entities/Creature/Creature.Fields.cs @@ -27,6 +27,8 @@ namespace Game.Entities bool _isMissingCanSwimFlagOutOfCombat; + uint? _trainerId; + public ulong m_PlayerDamageReq; public float m_SightDistance; public float m_CombatDistance; diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index 94bcaf374..b985fbb06 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -1128,6 +1128,19 @@ namespace Game.Entities // exited position so it won't run away (home) and evade if it's hostile SetHomePosition(GetPosition()); } + + public uint GetTrainerId() + { + if (_trainerId.HasValue) + return _trainerId.Value; + + return Global.ObjectMgr.GetCreatureDefaultTrainer(GetEntry()); + } + + public void SetTrainerId(uint? trainerId) + { + _trainerId = trainerId; + } public override bool IsMovementPreventedByCasting() { diff --git a/Source/Game/Handlers/NPCHandler.cs b/Source/Game/Handlers/NPCHandler.cs index ca1e80243..6439aa831 100644 --- a/Source/Game/Handlers/NPCHandler.cs +++ b/Source/Game/Handlers/NPCHandler.cs @@ -52,7 +52,7 @@ namespace Game return; } - uint trainerId = Global.ObjectMgr.GetCreatureDefaultTrainer(npc.GetEntry()); + uint trainerId = npc.GetTrainerId(); if (trainerId != 0) SendTrainerList(npc, trainerId); else