diff options
| author | Seyden <saiifii@live.de> | 2017-07-29 21:40:28 +0200 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-07-29 21:40:28 +0200 |
| commit | 567590248592494adabd0ffa8cbb3c9daed983f4 (patch) | |
| tree | 5c4cb413a560aaaa3b3356d28524e4b50804bf69 /src/server/game/Globals/ObjectMgr.cpp | |
| parent | 7e4f6078512cd42f606b513f0a2597cc5f06dcc0 (diff) | |
Core/Creatures: Implemented Basic Creature Scaling (#20026)
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 2efdbfb015b..a506a7676cd 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -641,6 +641,45 @@ void ObjectMgr::LoadCreatureTemplateAddons() TC_LOG_INFO("server.loading", ">> Loaded %u creature template addons in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); } +void ObjectMgr::LoadCreatureScalingData() +{ + uint32 oldMSTime = getMSTime(); + + // 0 1 + QueryResult result = WorldDatabase.Query("SELECT Entry, LevelScalingMin, LevelScalingMax, LevelScalingDelta FROM creature_template_scaling"); + + if (!result) + { + TC_LOG_INFO("server.loading", ">> Loaded 0 creature template scaling definitions. DB table `creature_template_scaling` is empty."); + return; + } + + uint32 count = 0; + do + { + Field* fields = result->Fetch(); + + uint32 entry = fields[0].GetUInt32(); + + CreatureTemplateContainer::iterator itr = _creatureTemplateStore.find(entry); + if (itr == _creatureTemplateStore.end()) + { + TC_LOG_ERROR("sql.sql", "Creature template (Entry: %u) does not exist but has a record in `creature_template_scaling`", entry); + continue; + } + + CreatureLevelScaling creatureLevelScaling; + creatureLevelScaling.MinLevel = fields[1].GetUInt16(); + creatureLevelScaling.MaxLevel = fields[2].GetUInt16(); + creatureLevelScaling.DeltaLevel = fields[3].GetInt16(); + itr->second.levelScaling = creatureLevelScaling; + + ++count; + } while (result->NextRow()); + + TC_LOG_INFO("server.loading", ">> Loaded %u creature template scaling data in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); +} + void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo) { if (!cInfo) |
