diff options
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 9ce58362a18..c9b97dd2221 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5877,9 +5877,13 @@ void Spell::EffectJumpCharge() if (!params) return; - float speed = params->Speed; - if (params->TreatSpeedAsMoveTimeSeconds) - speed = unitCaster->GetExactDist(destTarget) / params->MoveTimeInSec; + std::variant<std::monostate, float, Milliseconds> speedOrTime = [params]() -> std::variant<std::monostate, float, Milliseconds> + { + if (params->TreatSpeedAsMoveTimeSeconds) + return duration_cast<Milliseconds>(FloatSeconds(params->MoveTimeInSec)); + + return params->Speed; + }(); MovementFacingTarget facing; if (Unit const* target = m_targets.GetUnitTarget()) @@ -5910,8 +5914,8 @@ void Spell::EffectJumpCharge() effectExtra->ParabolicCurveId = *params->ParabolicCurveId; } - unitCaster->GetMotionMaster()->MoveJumpWithGravity(*destTarget, speed, params->JumpGravity, EVENT_JUMP, facing, - m_spellInfo->HasAttribute(SPELL_ATTR9_JUMPCHARGE__NO_FACING_CONTROL), + unitCaster->GetMotionMaster()->MoveJump(EVENT_JUMP, *destTarget, speedOrTime, params->MinHeight, params->MaxHeight, + facing, m_spellInfo->HasAttribute(SPELL_ATTR9_JUMPCHARGE__NO_FACING_CONTROL), params->UnlimitedSpeed, {}, arrivalCast ? &*arrivalCast : nullptr, effectExtra ? &*effectExtra : nullptr); } |
