diff options
author | Chaplain <aionthefirst@gmail.com> | 2012-01-18 18:42:25 +0300 |
---|---|---|
committer | Chaplain <aionthefirst@gmail.com> | 2012-01-18 18:42:25 +0300 |
commit | accea2b44ed5fd5d1a3953f5b0deaf0ff5571807 (patch) | |
tree | d4826fa73c29235f7c62fd3a79c6f3d26baf68a0 /src | |
parent | 86104943cb5ad053314559c33ec20292e13f27dc (diff) |
Core/Movegen: Added missing part in ChaseMovementgenerator and minor logic fix in MotionMaster::MoveJump()
Diffstat (limited to 'src')
3 files changed, 19 insertions, 2 deletions
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index b07c915165a..8975a2d7d7b 100755 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -365,7 +365,10 @@ void MotionMaster::MoveJump(float x, float y, float z, float speedXY, float spee init.SetParabolic(max_height,0); init.SetVelocity(speedXY); init.Launch(); - Mutate(new EffectMovementGenerator(id), MOTION_SLOT_CONTROLLED); + if (i_owner->GetTypeId() == TYPEID_PLAYER) + Mutate(new EffectMovementGenerator(id), MOTION_SLOT_CONTROLLED); + else + Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE); } void MotionMaster::MoveFall(uint32 id/*=0*/) diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index bded2fd512c..b03e13f91f4 100755 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -211,6 +211,19 @@ void ChaseMovementGenerator<T>::Reset(T &owner) Initialize(owner); } +template<class T> +void ChaseMovementGenerator<T>::MovementInform(T & /*unit*/) +{ +} + +template<> +void ChaseMovementGenerator<Creature>::MovementInform(Creature &unit) +{ + // Pass back the GUIDLow of the target. If it is pet's owner then PetAI will handle + if (unit.AI()) + unit.AI()->MovementInform(CHASE_MOTION_TYPE, i_target.getTarget()->GetGUIDLow()); +} + //-----------------------------------------------// template<> bool FollowMovementGenerator<Creature>::EnableWalking() const @@ -300,6 +313,7 @@ template void ChaseMovementGenerator<Player>::Finalize(Player &); template void ChaseMovementGenerator<Creature>::Finalize(Creature &); template void ChaseMovementGenerator<Player>::Reset(Player &); template void ChaseMovementGenerator<Creature>::Reset(Creature &); +template void ChaseMovementGenerator<Player>::MovementInform(Player &unit); template void FollowMovementGenerator<Player>::Finalize(Player &); template void FollowMovementGenerator<Creature>::Finalize(Creature &); diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h index 785d12ba6d2..982f7fc875c 100755 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h @@ -76,7 +76,7 @@ class ChaseMovementGenerator : public TargetedMovementGeneratorMedium<T, ChaseMo void Initialize(T &); void Finalize(T &); void Reset(T &); - void MovementInform(T &){} + void MovementInform(T &); static void _clearUnitStateMove(T &u) { u.ClearUnitState(UNIT_STAT_CHASE_MOVE); } static void _addUnitStateMove(T &u) { u.AddUnitState(UNIT_STAT_CHASE_MOVE); } |