aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
authorSeyden <saiifii@live.de>2017-07-29 21:40:28 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-07-29 21:40:28 +0200
commit567590248592494adabd0ffa8cbb3c9daed983f4 (patch)
tree5c4cb413a560aaaa3b3356d28524e4b50804bf69 /src/server/game/Globals/ObjectMgr.cpp
parent7e4f6078512cd42f606b513f0a2597cc5f06dcc0 (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.cpp39
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)