diff options
Diffstat (limited to 'src/server/game/Movement/MotionMaster.cpp')
| -rw-r--r-- | src/server/game/Movement/MotionMaster.cpp | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index d1cc83b35b0..d65788dcbac 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -16,12 +16,14 @@ */ #include "MotionMaster.h" +#include "ChaseMovementGenerator.h" #include "ConfusedMovementGenerator.h" #include "Creature.h" #include "CreatureAISelector.h" #include "DB2Stores.h" #include "FleeingMovementGenerator.h" #include "FlightPathMovementGenerator.h" +#include "FollowMovementGenerator.h" #include "FormationMovementGenerator.h" #include "HomeMovementGenerator.h" #include "IdleMovementGenerator.h" @@ -36,7 +38,6 @@ #include "RandomMovementGenerator.h" #include "ScriptSystem.h" #include "SplineChainMovementGenerator.h" -#include "TargetedMovementGenerator.h" #include "WaypointMovementGenerator.h" inline MovementGenerator* GetIdleMovementGenerator() @@ -217,7 +218,7 @@ void MotionMaster::MoveTargetedHome() if (target) { TC_LOG_DEBUG("misc", "Following %s", target->GetGUID().ToString().c_str()); - Mutate(new FollowMovementGenerator<Creature>(target, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE), MOTION_SLOT_ACTIVE); + Mutate(new FollowMovementGenerator(target, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE), MOTION_SLOT_ACTIVE); } } else @@ -235,47 +236,33 @@ void MotionMaster::MoveRandom(float spawndist) } } -void MotionMaster::MoveFollow(Unit* target, float dist, float angle, MovementSlot slot) +void MotionMaster::MoveFollow(Unit* target, float dist, ChaseAngle angle, MovementSlot slot) { // ignore movement request if target not exist if (!target || target == _owner) return; - //_owner->AddUnitState(UNIT_STATE_FOLLOW); - if (_owner->GetTypeId() == TYPEID_PLAYER) - { - TC_LOG_DEBUG("misc", "Player (%s) follows (%s)", _owner->GetGUID().ToString().c_str(), target->GetGUID().ToString().c_str()); - Mutate(new FollowMovementGenerator<Player>(target, dist, angle), slot); - } - else - { - TC_LOG_DEBUG("misc", "Creature (Entry: %u %s) follows (%s)", _owner->GetEntry(), _owner->GetGUID().ToString().c_str(), target->GetGUID().ToString().c_str()); - Mutate(new FollowMovementGenerator<Creature>(target, dist, angle), slot); - } + TC_LOG_DEBUG("misc", "%s (Entry: %u, %s) follows %s (Entry %u, %s).", + _owner->GetTypeId() == TYPEID_PLAYER ? "Player" : "Creature", + _owner->GetEntry(), _owner->GetGUID().ToString().c_str(), + target->GetTypeId() == TYPEID_PLAYER ? "player" : "creature", + target->GetEntry(), target->GetGUID().ToString().c_str()); + + Mutate(new FollowMovementGenerator(target, dist, angle), slot); } -void MotionMaster::MoveChase(Unit* target, float dist, float angle) +void MotionMaster::MoveChase(Unit* target, Optional<ChaseRange> dist, Optional<ChaseAngle> angle) { // ignore movement request if target not exist if (!target || target == _owner) return; - //_owner->ClearUnitState(UNIT_STATE_FOLLOW); - if (_owner->GetTypeId() == TYPEID_PLAYER) - { - TC_LOG_DEBUG("misc", "Player (%s) chase (%s)", - _owner->GetGUID().ToString().c_str(), - target->GetGUID().ToString().c_str()); - Mutate(new ChaseMovementGenerator<Player>(target, dist, angle), MOTION_SLOT_ACTIVE); - } - else - { - TC_LOG_DEBUG("misc", "Creature (Entry: %u %s) chase %s", - _owner->GetEntry(), - _owner->GetGUID().ToString().c_str(), - target->GetGUID().ToString().c_str()); - Mutate(new ChaseMovementGenerator<Creature>(target, dist, angle), MOTION_SLOT_ACTIVE); - } + TC_LOG_DEBUG("misc", "%s (Entry: %u, %s) chase to %s (Entry: %u, %s)", + _owner->GetTypeId() == TYPEID_PLAYER ? "Player" : "Creature", + _owner->GetEntry(), _owner->GetGUID().ToString().c_str(), + target->GetTypeId() == TYPEID_PLAYER ? "player" : "creature", + target->GetEntry(), target->GetGUID().ToString().c_str()); + Mutate(new ChaseMovementGenerator(target, dist, angle), MOTION_SLOT_ACTIVE); } void MotionMaster::MoveConfused() |
