diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index 768d7004c97..d33e418c51f 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -597,13 +597,11 @@ void MotionMaster::MoveRandom(float wanderDistance /*= 0.0f*/, Optional>&& scriptResult /*= {}*/) { + TC_LOG_DEBUG("movement.motionmaster", "MotionMaster::MoveRandom: '{}', started random movement (spawnDist: {})", _owner->GetGUID(), wanderDistance); if (_owner->GetTypeId() == TYPEID_UNIT) - { - TC_LOG_DEBUG("movement.motionmaster", "MotionMaster::MoveRandom: '{}', started random movement (spawnDist: {})", _owner->GetGUID(), wanderDistance); Add(new RandomMovementGenerator(wanderDistance, duration, speed, speedSelectionMode, std::move(scriptResult)), slot); - } - else if (scriptResult) - scriptResult->SetResult(MovementStopReason::Interrupted); + else + Add(new RandomMovementGenerator(wanderDistance, duration, speed, speedSelectionMode, std::move(scriptResult)), slot); } void MotionMaster::MoveFollow(Unit* target, float dist, Optional angle /*= {}*/, Optional duration /*= {}*/, bool ignoreTargetWalk /*= false*/, MovementSlot slot/* = MOTION_SLOT_ACTIVE*/, diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp index 12dcb0dda19..569cc519157 100644 --- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp @@ -22,6 +22,7 @@ #include "MoveSplineInit.h" #include "MovementDefines.h" #include "PathGenerator.h" +#include "Player.h" #include "Random.h" template @@ -181,7 +182,8 @@ void RandomMovementGenerator::SetRandomLocation(T* owner) } // Call for creature group update - owner->SignalFormationMovement(); + if constexpr (std::is_base_of_v) + owner->SignalFormationMovement(); } template @@ -244,8 +246,9 @@ void RandomMovementGenerator::DoFinalize(T* owner, bool active, bool movement if (movementInform && this->HasFlag(MOVEMENTGENERATOR_FLAG_INFORM_ENABLED)) { this->SetScriptResult(MovementStopReason::Finished); - if (owner->IsAIEnabled()) - owner->AI()->MovementInform(RANDOM_MOTION_TYPE, 0); + if constexpr (std::is_base_of_v) + if (owner->IsAIEnabled()) + owner->AI()->MovementInform(RANDOM_MOTION_TYPE, 0); } } @@ -271,3 +274,4 @@ MovementGenerator* RandomMovementFactory::Create(Unit* object) const } template class RandomMovementGenerator; +template class RandomMovementGenerator;