diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 6 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index af3438aa3d0..a0559650ccf 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -9253,7 +9253,14 @@ void ObjectMgr::LoadCreatureDefaultTrainers() continue; } - _creatureDefaultTrainers[creatureId] = trainerId; + Trainer::Trainer* trainer = Trinity::Containers::MapGetValuePtr(_trainers, trainerId); + if (!trainer) + { + TC_LOG_ERROR("sql.sql", "Table `creature_default_trainer` references non-existing trainer (TrainerId: %u) for CreatureId %u, ignoring", trainerId, creatureId); + continue; + } + + _creatureDefaultTrainers[creatureId] = trainer; } while (result->NextRow()); } @@ -9467,7 +9474,7 @@ Trainer::Trainer const* ObjectMgr::GetTrainer(uint32 creatureId) const { auto itr = _creatureDefaultTrainers.find(creatureId); if (itr != _creatureDefaultTrainers.end()) - return Trinity::Containers::MapGetValuePtr(_trainers, itr->second); + return itr->second; return nullptr; } diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index e17c70b3583..9ac00872e13 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -958,7 +958,7 @@ class TC_GAME_API ObjectMgr typedef std::unordered_map<uint32, AreaTrigger> AreaTriggerContainer; - typedef std::unordered_map<uint32, uint32> AreaTriggerScriptContainer; + typedef std::map<uint32, uint32> AreaTriggerScriptContainer; typedef std::unordered_map<uint32, std::unique_ptr<AccessRequirement>> AccessRequirementContainer; @@ -1591,7 +1591,7 @@ class TC_GAME_API ObjectMgr QuestContainer _questTemplates; typedef std::unordered_map<uint32, GossipText> GossipTextContainer; - typedef std::unordered_map<uint32, uint32> QuestAreaTriggerContainer; + typedef std::map<uint32, uint32> QuestAreaTriggerContainer; typedef std::set<uint32> TavernAreaTriggerContainer; typedef std::set<uint32> GameObjectForQuestContainer; @@ -1719,7 +1719,7 @@ class TC_GAME_API ObjectMgr CacheVendorItemContainer _cacheVendorItemStore; std::unordered_map<uint32, Trainer::Trainer> _trainers; - std::unordered_map<uint32, uint32> _creatureDefaultTrainers; + std::unordered_map<uint32, Trainer::Trainer const*> _creatureDefaultTrainers; std::set<uint32> _difficultyEntries[MAX_DIFFICULTY - 1]; // already loaded difficulty 1 value in creatures, used in CheckCreatureTemplate std::set<uint32> _hasDifficultyEntries[MAX_DIFFICULTY - 1]; // already loaded creatures with difficulty 1 values, used in CheckCreatureTemplate |