diff options
| author | Shauren <shauren.trinity@gmail.com> | 2019-01-04 00:08:26 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2019-01-04 00:08:26 +0100 |
| commit | 74d51b92630eb4a0f5fc0082b7252019acd90460 (patch) | |
| tree | b3364446415845bf216fdf4db73ee86d5f831774 /src/server/game/Globals/ObjectMgr.cpp | |
| parent | 19791a35df11e2c5c42ee437bfc13466c708ea43 (diff) | |
Core/Creatures: Fixed trainer requirements
Closes #22906
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index f4277e3ffec..df4cdc346c2 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -8742,6 +8742,34 @@ void ObjectMgr::LoadTrainers() spellsByTrainer.erase(spellsItr); } + switch (trainerType) + { + case Trainer::Type::Class: + case Trainer::Type::Pet: + if (requirement && !sChrClassesStore.LookupEntry(requirement)) + { + TC_LOG_ERROR("sql.sql", "Table `trainer` references non-existing class requirement %u for TrainerId %u, ignoring", requirement, trainerId); + continue; + } + break; + case Trainer::Type::Mount: + if (requirement && !sChrRacesStore.LookupEntry(requirement)) + { + TC_LOG_ERROR("sql.sql", "Table `trainer` references non-existing race requirement %u for TrainerId %u, ignoring", requirement, trainerId); + continue; + } + break; + case Trainer::Type::Tradeskill: + if (requirement && !sSpellMgr->GetSpellInfo(requirement)) + { + TC_LOG_ERROR("sql.sql", "Table `trainer` references non-existing spell requirement %u for TrainerId %u, ignoring", requirement, trainerId); + continue; + } + break; + default: + break; + } + _trainers.emplace(std::piecewise_construct, std::forward_as_tuple(trainerId), std::forward_as_tuple(trainerId, trainerType, requirement, std::move(greeting), std::move(spells))); } while (trainersResult->NextRow()); } |
