diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index 591970330..cd7ab7252 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -115,6 +115,10 @@ bool ChaseMovementGenerator::DoUpdate(T* owner, uint32 time_diff) if (owner->IsWithinMeleeRange(this->i_target.getTarget())) { owner->Attack(this->i_target.getTarget(), true); + if (Creature* cOwner2 = owner->ToCreature()) + { + cOwner2->SetCannotReachTarget(); + } } else if (i_path && i_path->GetPathType() & PATHFIND_INCOMPLETE) { @@ -134,7 +138,14 @@ bool ChaseMovementGenerator::DoUpdate(T* owner, uint32 time_diff) _lastTargetPosition = i_target->GetPosition(); if (PositionOkay(owner, target, maxRange, angle) && !owner->HasUnitState(UNIT_STATE_CHASE_MOVE)) + { + if (Creature* cOwner2 = owner->ToCreature()) + { + cOwner2->SetCannotReachTarget(); + } + return true; + } float tarX, tarY, tarZ; target->GetPosition(tarX, tarY, tarZ); @@ -207,15 +218,15 @@ bool ChaseMovementGenerator::DoUpdate(T* owner, uint32 time_diff) { switch (cOwner->GetMovementTemplate().GetChase()) { - case CreatureChaseMovementType::CanWalk: - if (owner->IsWalking()) + case CreatureChaseMovementType::CanWalk: + if (owner->IsWalking()) + walk = true; + break; + case CreatureChaseMovementType::AlwaysWalk: walk = true; - break; - case CreatureChaseMovementType::AlwaysWalk: - walk = true; - break; - default: - break; + break; + default: + break; } }