diff options
author | Ovah <dreadkiller@gmx.de> | 2019-11-17 18:29:31 +0100 |
---|---|---|
committer | Keader <keader.android@gmail.com> | 2019-11-17 14:29:31 -0300 |
commit | 4ddf7f59761df525e6ab5ef99175258a1d86101d (patch) | |
tree | 0a6b55b7805a6b0cb5dca99545208c2acdcd0270 | |
parent | 754e207777d109918ae54e69ff770d0d76bc28c6 (diff) |
Fixed pets repositioning themselves after every cast (#23923)
-rw-r--r-- | src/server/game/AI/CoreAI/PetAI.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp index f3f0596bb65..1ba08c3599d 100644 --- a/src/server/game/AI/CoreAI/PetAI.cpp +++ b/src/server/game/AI/CoreAI/PetAI.cpp @@ -420,8 +420,12 @@ void PetAI::DoAttack(Unit* target, bool chase) if (me->HasUnitState(UNIT_STATE_FOLLOW)) me->GetMotionMaster()->Remove(FOLLOW_MOTION_TYPE); - - me->GetMotionMaster()->MoveChase(target, me->GetPetChaseDistance(), float(M_PI)); + + // Pets with ranged attacks should not care about the chase angle at all. + float chaseDistance = me->GetPetChaseDistance(); + float angle = chaseDistance == 0.f ? float(M_PI) : 0.f; + float tolerance = chaseDistance == 0.f ? float(M_PI_4) : float(M_PI * 2); + me->GetMotionMaster()->MoveChase(target, ChaseRange(0.f, chaseDistance), ChaseAngle(angle, tolerance)); } else // (Stay && ((Aggressive || Defensive) && In Melee Range))) { |