diff options
author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2020-03-01 13:31:14 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-22 20:46:17 +0100 |
commit | 144cfc2bcebbd0d2bbce5f97a06f634d17d62e79 (patch) | |
tree | 08db9b4bb86caf39a976d3f44c7e739f9245749f /src | |
parent | 478be1f7ea0b52381ff46339a789ad4fda8a7d40 (diff) |
Core/AI: Make charmed creatures follow their owner (#24195)
* Core/AI: Make charmed creatures follow their owner
* Follow the charmer only when applying the charm
* Make SmartAI follow the charmer
(cherry picked from commit ddf2f60c1317f0ce728d5894064f51251cf71c72)
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 c192719f80f..a7309e9039b 100644 --- a/src/server/game/AI/CoreAI/PetAI.cpp +++ b/src/server/game/AI/CoreAI/PetAI.cpp @@ -632,6 +632,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 64a61689990..1c4035d302b 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 7658a62d928..aac8edd3a37 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -692,6 +692,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) |