aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-11-28 00:05:38 +0100
committerShauren <shauren.trinity@gmail.com>2021-11-28 00:05:38 +0100
commita809932f5017c98092a02694e86e276add03f8b9 (patch)
tree1ba76f989a3082339832c2e50ad40d138f8d386d /src/server/game/Globals/ObjectMgr.cpp
parent684cd9d9681466019dcd06ad6f994890cff8cb2e (diff)
Core/Spells: Implemented spell effect 254 (SPELL_EFFECT_JUMP_CHARGE)
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 4cbe4830866..30e504635ed 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -43,6 +43,7 @@
#include "Mail.h"
#include "MapManager.h"
#include "MotionMaster.h"
+#include "MovementTypedefs.h"
#include "ObjectAccessor.h"
#include "ObjectDefines.h"
#include "PhasingHandler.h"
@@ -10432,6 +10433,11 @@ PlayerChoice const* ObjectMgr::GetPlayerChoice(int32 choiceId) const
return Trinity::Containers::MapGetValuePtr(_playerChoices, choiceId);
}
+JumpChargeParams const* ObjectMgr::GetJumpChargeParams(int32 id) const
+{
+ return Trinity::Containers::MapGetValuePtr(_jumpChargeParams, id);
+}
+
void ObjectMgr::LoadGameObjectQuestItems()
{
uint32 oldMSTime = getMSTime();
@@ -11048,3 +11054,83 @@ void ObjectMgr::LoadPlayerChoicesLocale()
TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Player Choice Response locale strings in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
}
+
+void ObjectMgr::LoadJumpChargeParams()
+{
+ uint32 oldMSTime = getMSTime();
+
+ // need for reload case
+ _jumpChargeParams.clear();
+
+ // 0 1 2 3 4 5 6
+ QueryResult result = WorldDatabase.Query("SELECT id, speed, treatSpeedAsMoveTimeSeconds, jumpGravity, spellVisualId, progressCurveId, parabolicCurveId FROM jump_charge_params");
+ if (!result)
+ {
+ return;
+ }
+
+ do
+ {
+ Field* fields = result->Fetch();
+
+ int32 id = fields[0].GetInt32();
+ float speed = fields[1].GetFloat();
+ bool treatSpeedAsMoveTimeSeconds = fields[2].GetBool();
+ float jumpGravity = fields[3].GetFloat();
+ Optional<int32> spellVisualId;
+ Optional<int32> progressCurveId;
+ Optional<int32> parabolicCurveId;
+
+ if (speed <= 0.0f)
+ {
+ TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` uses invalid speed %f for id %d, set to default charge speed %f.",
+ speed, id, SPEED_CHARGE);
+ speed = SPEED_CHARGE;
+ }
+
+ if (jumpGravity <= 0.0f)
+ {
+ TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` uses invalid jump gravity %f for id %d, set to default %f.",
+ jumpGravity, id, Movement::gravity);
+ jumpGravity = Movement::gravity;
+ }
+
+ if (!fields[4].IsNull())
+ {
+ if (sSpellVisualStore.LookupEntry(fields[4].GetInt32()))
+ spellVisualId = fields[4].GetInt32();
+ else
+ TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` references non-existing SpellVisual: %d for id %d, ignored.",
+ fields[4].GetInt32(), id);
+ }
+
+ if (!fields[5].IsNull())
+ {
+ if (sCurveStore.LookupEntry(fields[5].GetInt32()))
+ progressCurveId = fields[5].GetInt32();
+ else
+ TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` references non-existing progress Curve: %d for id, ignored.",
+ fields[4].GetInt32(), id);
+ }
+
+ if (!fields[6].IsNull())
+ {
+ if (sCurveStore.LookupEntry(fields[6].GetInt32()))
+ parabolicCurveId = fields[6].GetInt32();
+ else
+ TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` references non-existing parabolic Curve: %d for id, ignored.",
+ fields[6].GetInt32(), id);
+ }
+
+ JumpChargeParams& params = _jumpChargeParams[id];
+ params.Speed = speed;
+ params.TreatSpeedAsMoveTimeSeconds = treatSpeedAsMoveTimeSeconds;
+ params.JumpGravity = jumpGravity;
+ params.SpellVisualId = spellVisualId;
+ params.ProgressCurveId = progressCurveId;
+ params.ParabolicCurveId = parabolicCurveId;
+
+ } while (result->NextRow());
+
+ TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Player Choice locale strings in %u ms", _jumpChargeParams.size(), GetMSTimeDiffToNow(oldMSTime));
+}