diff options
Diffstat (limited to 'src')
3 files changed, 14 insertions, 4 deletions
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index 76568705373..271207558c1 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -550,13 +550,13 @@ void MotionMaster::MoveCharge(float x, float y, float z, float speed /*= SPEED_C if (_owner->GetTypeId() == TYPEID_PLAYER) { TC_LOG_DEBUG("misc", "Player (%s) charged point (X: %f Y: %f Z: %f).", _owner->GetGUID().ToString().c_str(), x, y, z); - Mutate(new PointMovementGenerator<Player>(id, x, y, z, generatePath, speed, target), MOTION_SLOT_CONTROLLED); + Mutate(new PointMovementGenerator<Player>(id, x, y, z, generatePath, speed, target, spellEffectExtraData), MOTION_SLOT_CONTROLLED); } else { TC_LOG_DEBUG("misc", "Creature (Entry: %u %s) charged point (X: %f Y: %f Z: %f).", _owner->GetEntry(), _owner->GetGUID().ToString().c_str(), x, y, z); - Mutate(new PointMovementGenerator<Creature>(id, x, y, z, generatePath, speed, target), MOTION_SLOT_CONTROLLED); + Mutate(new PointMovementGenerator<Creature>(id, x, y, z, generatePath, speed, target, spellEffectExtraData), MOTION_SLOT_CONTROLLED); } } diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp index 113eafadb74..39ee3fbf6d4 100755 --- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp @@ -45,6 +45,8 @@ void PointMovementGenerator<T>::DoInitialize(T* unit) init.SetVelocity(speed); if (i_faceTarget) init.SetFacing(i_faceTarget); + if (i_spellEffectExtra) + init.SetSpellEffectExtraData(*i_spellEffectExtra); init.Launch(); // Call for creature group update diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h index ee804f83820..e07d4b5a2d9 100644 --- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h @@ -22,12 +22,19 @@ #include "MovementGenerator.h" #include "FollowerReference.h" +namespace Movement +{ + struct SpellEffectExtraData; +} + template<class T> class PointMovementGenerator : public MovementGeneratorMedium< T, PointMovementGenerator<T> > { public: - PointMovementGenerator(uint32 _id, float _x, float _y, float _z, bool _generatePath, float _speed = 0.0f, Unit const* faceTarget = nullptr) : id(_id), - i_x(_x), i_y(_y), i_z(_z), speed(_speed), i_faceTarget(faceTarget), m_generatePath(_generatePath), i_recalculateSpeed(false) { } + PointMovementGenerator(uint32 _id, float _x, float _y, float _z, bool _generatePath, float _speed = 0.0f, Unit const* faceTarget = nullptr, + Movement::SpellEffectExtraData const* spellEffectExtraData = nullptr) : id(_id), + i_x(_x), i_y(_y), i_z(_z), speed(_speed), i_faceTarget(faceTarget), i_spellEffectExtra(spellEffectExtraData), + m_generatePath(_generatePath), i_recalculateSpeed(false) { } void DoInitialize(T*); void DoFinalize(T*); @@ -46,6 +53,7 @@ class PointMovementGenerator : public MovementGeneratorMedium< T, PointMovementG float i_x, i_y, i_z; float speed; Unit const* i_faceTarget; + Movement::SpellEffectExtraData const* i_spellEffectExtra; bool m_generatePath; bool i_recalculateSpeed; }; |