diff options
| author | Shauren <shauren.trinity@gmail.com> | 2023-03-06 00:14:42 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2023-03-06 00:14:42 +0100 |
| commit | 705d5701bf17f1787d2646c55c994b0404659991 (patch) | |
| tree | 37c31da9cd37d22743f32d0e9953182864cbcf0a /src/server/game/Spells/SpellEffects.cpp | |
| parent | cdc09d29bc8fcb85d97846027ddf589478e21139 (diff) | |
Core/Movement: Refactor jump speed calculation out of spell code
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 16 |
1 files changed, 1 insertions, 15 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index e2aca6adda0..f731304766e 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -830,29 +830,15 @@ void Spell::CalculateJumpSpeeds(SpellEffectInfo const* effInfo, float dist, floa { Unit* unitCaster = GetUnitCasterForEffectHandlers(); ASSERT(unitCaster); - float runSpeed = unitCaster->IsControlledByPlayer() ? playerBaseMoveSpeed[MOVE_RUN] : baseMoveSpeed[MOVE_RUN]; - if (Creature* creature = unitCaster->ToCreature()) - runSpeed *= creature->GetCreatureTemplate()->speed_run; float multiplier = effInfo->Amplitude; if (multiplier <= 0.0f) multiplier = 1.0f; - speedXY = std::min(runSpeed * 3.0f * multiplier, std::max(28.0f, unitCaster->GetSpeed(MOVE_RUN) * 4.0f)); - - float duration = dist / speedXY; - float durationSqr = duration * duration; float minHeight = effInfo->MiscValue ? effInfo->MiscValue / 10.0f : 0.5f; // Lower bound is blizzlike float maxHeight = effInfo->MiscValueB ? effInfo->MiscValueB / 10.0f : 1000.0f; // Upper bound is unknown - float height; - if (durationSqr < minHeight * 8 / Movement::gravity) - height = minHeight; - else if (durationSqr > maxHeight * 8 / Movement::gravity) - height = maxHeight; - else - height = Movement::gravity * durationSqr / 8; - speedZ = std::sqrt(2 * Movement::gravity * height); + unitCaster->GetMotionMaster()->CalculateJumpSpeeds(dist, MOVE_RUN, multiplier, minHeight, maxHeight, speedXY, speedZ); } void Spell::EffectJump() |
