From ebd438883e31de4482617631ff9939f2246fda69 Mon Sep 17 00:00:00 2001 From: ccrs Date: Mon, 24 Jun 2019 12:49:15 +0200 Subject: Core/AI: minimize further undesired behaviours (e3e4b97 followup) Those Category checks come from checking all Spell::SummonGuardian uses --- src/server/game/AI/CreatureAI.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'src/server/game') diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index cfb58a99826..c8dd13f53b5 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -21,6 +21,7 @@ #include "Creature.h" #include "CreatureAIImpl.h" #include "CreatureTextMgr.h" +#include "DBCStructure.h" #include "Language.h" #include "Log.h" #include "Map.h" @@ -153,13 +154,22 @@ void CreatureAI::TriggerAlert(Unit const* who) const void CreatureAI::JustAppeared() { - if (!me->GetVehicle()) + // Filter which type of summons apply the following follow handling + if (!me->IsSummon()) + return; + + TempSummon* summon = me->ToTempSummon(); + if (summon->m_Properties->Category != SUMMON_CATEGORY_UNK && summon->m_Properties->Category != SUMMON_CATEGORY_PET) + return; + + // Not applied to vehicles + if (summon->GetVehicle()) + return; + + if (Unit* owner = summon->GetCharmerOrOwner()) { - if (Unit* owner = me->GetCharmerOrOwner()) - { - me->GetMotionMaster()->Clear(); - me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, me->GetFollowAngle()); - } + summon->GetMotionMaster()->Clear(); + summon->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, summon->GetFollowAngle()); } } -- cgit v1.2.3