diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/CoreAI/PetAI.cpp | 8 | ||||
-rw-r--r-- | src/server/game/AI/CoreAI/PetAI.h | 1 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartAI.cpp | 3 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp index efabd38edb0..eb0ad17ce7d 100644 --- a/src/server/game/AI/CoreAI/PetAI.cpp +++ b/src/server/game/AI/CoreAI/PetAI.cpp @@ -631,6 +631,14 @@ void PetAI::UpdateAllies() _allySet.insert(owner->GetGUID()); } +void PetAI::OnCharmed(bool isNew) +{ + if (me->IsCharmed()) + me->GetMotionMaster()->MoveFollow(me->GetCharmer(), PET_FOLLOW_DIST, me->GetFollowAngle()); + + CreatureAI::OnCharmed(isNew); +} + void PetAI::ClearCharmInfoFlags() { CharmInfo* ci = me->GetCharmInfo(); diff --git a/src/server/game/AI/CoreAI/PetAI.h b/src/server/game/AI/CoreAI/PetAI.h index 6705b049430..0a208f1f8fe 100644 --- a/src/server/game/AI/CoreAI/PetAI.h +++ b/src/server/game/AI/CoreAI/PetAI.h @@ -46,6 +46,7 @@ class TC_GAME_API PetAI : public CreatureAI void ReceiveEmote(Player* player, uint32 textEmote) override; void JustEnteredCombat(Unit* who) override { EngagementStart(who); } void JustExitedCombat() override { EngagementOver(); } + void OnCharmed(bool isNew) override; // The following aren't used by the PetAI but need to be defined to override // default CreatureAI functions which interfere with the PetAI diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 90236d81a8f..4bc9aeafe0c 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -690,6 +690,9 @@ void SmartAI::OnCharmed(bool /*isNew*/) _charmed = charmed; + if (charmed) + me->GetMotionMaster()->MoveFollow(me->GetCharmer(), PET_FOLLOW_DIST, me->GetFollowAngle()); + if (!charmed && !me->IsInEvadeMode()) { if (_repeatWaypointPath) |