diff options
author | MrSmite <mrsmite@att.net> | 2012-11-19 23:55:42 +0000 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-11-19 23:55:42 +0000 |
commit | ced723a53a04b08cc7cafd4dda913108f138c31b (patch) | |
tree | 4e295c24446b2d9d897bb5d8ffce77b785145f2c | |
parent | 12c9d0d466486f8bd5ffd4c8e296c66f7af52bc5 (diff) |
Core/Pets: Pet "at rest" distance from owner is now closer as it should be
Original PR modified
Closes #8358
Closes #8181
Signed-off-by: Nay <dnpd.dd@gmail.com>
-rwxr-xr-x | src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index 7e74907040f..9a4d33a5665 100755 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -59,10 +59,29 @@ void TargetedMovementGeneratorMedium<T,D>::_setTargetLocation(T &owner) } else { - if (i_target->IsWithinDistInMap(&owner, i_offset + 1.0f)) + float dist; + float size; + + // Pets need special handling. + // We need to subtract GetObjectSize() because it gets added back further down the chain + // and that makes pets too far away. Subtracting it allows pets to properly + // be (GetCombatReach() + i_offset) away. + if (owner.isPet()) + { + dist = i_target->GetCombatReach(); + size = i_target->GetCombatReach() - i_target->GetObjectSize(); + } + else + { + dist = i_offset + 1.0f; + size = owner.GetObjectSize(); + } + + if (i_target->IsWithinDistInMap(&owner, dist)) return; + // to at i_offset distance from target and i_angle from target facing - i_target->GetClosePoint(x, y, z, owner.GetObjectSize(), i_offset, i_angle); + i_target->GetClosePoint(x, y, z, size, i_offset, i_angle); } /* |