aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/AI/CreatureAISelector.cpp5
-rw-r--r--src/server/game/Entities/Player/Player.cpp5
2 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp
index ec0e1d213b9..159f81f3333 100644
--- a/src/server/game/AI/CreatureAISelector.cpp
+++ b/src/server/game/AI/CreatureAISelector.cpp
@@ -103,8 +103,9 @@ namespace FactorySelector
MovementGenerator* SelectMovementGenerator(Unit* unit)
{
MovementGeneratorType type = IDLE_MOTION_TYPE;
- if (unit->GetTypeId() == TYPEID_UNIT)
- type = unit->ToCreature()->GetDefaultMovementType();
+ if (Creature* creature = unit->ToCreature())
+ if (!creature->GetPlayerMovingMe())
+ type = unit->ToCreature()->GetDefaultMovementType();
MovementGeneratorCreator const* mv_factory = sMovementGeneratorRegistry->GetRegistryItem(type);
return ASSERT_NOTNULL(mv_factory)->Create(unit);
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index e46b8a4e5e8..266259b8257 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -23830,8 +23830,13 @@ void Player::SetClientControl(Unit* target, bool allowMove)
void Player::SetMovedUnit(Unit* target)
{
m_unitMovedByMe->m_playerMovingMe = nullptr;
+ if (m_unitMovedByMe->GetTypeId() == TYPEID_UNIT)
+ m_unitMovedByMe->GetMotionMaster()->Initialize();
+
m_unitMovedByMe = target;
m_unitMovedByMe->m_playerMovingMe = this;
+ if (m_unitMovedByMe->GetTypeId() == TYPEID_UNIT)
+ m_unitMovedByMe->GetMotionMaster()->Initialize();
}
void Player::UpdateZoneDependentAuras(uint32 newZone)