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