aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMrSmite <mrsmite@att.net>2012-11-19 23:55:42 +0000
committerNay <dnpd.dd@gmail.com>2012-11-19 23:55:42 +0000
commitced723a53a04b08cc7cafd4dda913108f138c31b (patch)
tree4e295c24446b2d9d897bb5d8ffce77b785145f2c /src
parent12c9d0d466486f8bd5ffd4c8e296c66f7af52bc5 (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>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp23
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);
}
/*