diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a265f31b7a..0975fcc162 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25987,8 +25987,8 @@ bool Player::SetDisableGravity(bool disable, bool /*packetOnly = false*/, bool / if (IsMovedByClient() && IsInWorld()) MovementPacketSender::SendMovementFlagChangeToMover(this, MOVEMENTFLAG_DISABLE_GRAVITY, disable); - else - Unit::SetDisableGravity(disable, false, false); + + Unit::SetDisableGravity(disable, false, false); return true; } @@ -26000,8 +26000,8 @@ bool Player::SetCanFly(bool enable, bool /*packetOnly = false*/) if (IsMovedByClient() && IsInWorld()) MovementPacketSender::SendMovementFlagChangeToMover(this, MOVEMENTFLAG_CAN_FLY, enable); - else - Unit::SetCanFly(enable); + + Unit::SetCanFly(enable); return true; } @@ -26013,15 +26013,16 @@ bool Player::SetCanTransitionBetweenSwimAndFly(bool enable) if (IsMovedByClient() && IsInWorld()) MovementPacketSender::SendMovementFlagChangeToMover(this, MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS, enable); - else - Unit::SetCanTransitionBetweenSwimAndFly(enable); + + Unit::SetCanTransitionBetweenSwimAndFly(enable); return true; } void Player::SendMovementSetCollisionHeight(float height, UpdateCollisionHeightReason reason) { - MovementPacketSender::SendHeightChangeToMover(this, height, reason); + if (IsMovedByClient() && IsInWorld()) + MovementPacketSender::SendHeightChangeToMover(this, height, reason); } void Player::ResetAchievements() diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 4c158c28a5..dee8759d4c 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9075,9 +9075,13 @@ void Unit::SetSpeedRate(UnitMoveType mtype, float rate) if (m_speed_rate[mtype] == rate) return; + float newSpeedFlat = rate * (IsControlledByPlayer() ? playerBaseMoveSpeed[mtype] : baseMoveSpeed[mtype]); if (IsMovedByClient() && IsInWorld()) + { MovementPacketSender::SendSpeedChangeToMover(this, mtype, newSpeedFlat); + SetSpeedRateReal(mtype, rate); + } else if (IsMovedByClient() && !IsInWorld()) // (1) SetSpeedRateReal(mtype, rate); else // <=> if(!IsMovedByPlayer())