diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-11-18 18:05:33 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-11-18 18:05:33 +0100 |
| commit | 7c5e6f695d65ab3b92a6d8e90cf60dd9139105e6 (patch) | |
| tree | 02bce945bf86c01db8c818661278d163ccdba0aa /src/server/game/Movement/MotionMaster.cpp | |
| parent | 71ebbc60cccdf28c02f01cacf2adc44f7812286f (diff) | |
Core/Movement: Use MotionMaster::MoveKnockbackFrom for creatures hit by SPELL_EFFECT_LEAP_BACK, SPELL_EFFECT_PULL_TOWARDS and SPELL_EFFECT_PULL_TOWARDS_DEST
Diffstat (limited to 'src/server/game/Movement/MotionMaster.cpp')
| -rw-r--r-- | src/server/game/Movement/MotionMaster.cpp | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index d378c7f0c5d..202663cf1cc 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -801,7 +801,7 @@ void MotionMaster::MoveCharge(PathGenerator const& path, float speed /*= SPEED_C init.Launch(); } -void MotionMaster::MoveKnockbackFrom(Position const& origin, float speedXY, float speedZ, Movement::SpellEffectExtraData const* spellEffectExtraData /*= nullptr*/) +void MotionMaster::MoveKnockbackFrom(Position const& origin, float speedXY, float speedZ, float angle /*= M_PI*/, Movement::SpellEffectExtraData const* spellEffectExtraData /*= nullptr*/) { // This function may make players fall below map if (_owner->GetTypeId() == TYPEID_PLAYER) @@ -811,7 +811,7 @@ void MotionMaster::MoveKnockbackFrom(Position const& origin, float speedXY, floa return; Position dest = _owner->GetPosition(); - float o = dest == origin ? 0.0f : _owner->GetRelativeAngle(origin) + float(M_PI); + float o = (dest == origin ? 0.0f : _owner->GetRelativeAngle(origin)) + angle; if (speedXY < 0) { speedXY = -speedXY; @@ -858,23 +858,6 @@ void MotionMaster::MoveKnockbackFrom(Position const& origin, float speedXY, floa Add(movement); } -void MotionMaster::MoveJumpTo(float angle, float speedXY, float speedZ) -{ - // This function may make players fall below map - if (_owner->GetTypeId() == TYPEID_PLAYER) - return; - - float x, y, z = _owner->GetPositionZ(); - - float moveTimeHalf = speedZ / Movement::gravity; - float dist = 2 * moveTimeHalf * speedXY; - - _owner->GetNearPoint2D(nullptr, x, y, dist, _owner->GetOrientation() + angle); - _owner->UpdateAllowedPositionZ(x, y, z); - - MoveJump({ x, y, z }, speedXY, speedZ); -} - void MotionMaster::MoveJump(Position const& pos, float speedXY, float speedZ, uint32 id /*= EVENT_JUMP*/, MovementFacingTarget const& facing /*= {}*/, bool orientationFixed /*= false*/, JumpArrivalCastArgs const* arrivalCast /*= nullptr*/, Movement::SpellEffectExtraData const* spellEffectExtraData /*= nullptr*/, Optional<Scripting::v2::ActionResultSetter<MovementStopReason>>&& scriptResult /*= {}*/) |
