diff options
| -rw-r--r-- | src/game/CreatureAI.cpp | 12 | ||||
| -rw-r--r-- | src/game/CreatureEventAI.cpp | 9 | ||||
| -rw-r--r-- | src/game/MotionMaster.cpp | 10 | ||||
| -rw-r--r-- | src/game/SpellEffects.cpp | 4 | 
4 files changed, 14 insertions, 21 deletions
diff --git a/src/game/CreatureAI.cpp b/src/game/CreatureAI.cpp index 8633ee2e1f4..ea65d233a17 100644 --- a/src/game/CreatureAI.cpp +++ b/src/game/CreatureAI.cpp @@ -104,14 +104,22 @@ bool CreatureAI::UpdateVictim()  void CreatureAI::EnterEvadeMode()  { +    if(me->IsInEvadeMode()) +        return; +      me->RemoveAllAuras();      me->DeleteThreatList(); -    me->CombatStop(); +    me->CombatStop(true);      me->LoadCreaturesAddon();      me->SetLootRecipient(NULL);      if(me->isAlive()) -        me->GetMotionMaster()->MoveTargetedHome(); +    { +        if(Unit *owner = me->GetCharmerOrOwner()) +            me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE, MOTION_SLOT_IDLE); +        else +            me->GetMotionMaster()->MoveTargetedHome(); +    }      Reset();  } diff --git a/src/game/CreatureEventAI.cpp b/src/game/CreatureEventAI.cpp index fb7b7119860..470225e0da0 100644 --- a/src/game/CreatureEventAI.cpp +++ b/src/game/CreatureEventAI.cpp @@ -1054,14 +1054,7 @@ void CreatureEventAI::JustReachedHome()  void CreatureEventAI::EnterEvadeMode()  { -    m_creature->RemoveAllAuras(); -    m_creature->DeleteThreatList(); -    m_creature->CombatStop(true); - -    if (m_creature->isAlive()) -        m_creature->GetMotionMaster()->MoveTargetedHome(); - -    m_creature->SetLootRecipient(NULL); +    CreatureAI::EnterEvadeMode();      if (bEmptyList)          return; diff --git a/src/game/MotionMaster.cpp b/src/game/MotionMaster.cpp index b31d3231a3b..52b9ba56e3e 100644 --- a/src/game/MotionMaster.cpp +++ b/src/game/MotionMaster.cpp @@ -203,14 +203,7 @@ MotionMaster::MoveTargetedHome()      Clear(false); -    if(Unit *target = i_owner->GetCharmerOrOwner()) -    { -        DEBUG_LOG("Pet or controlled unit (Entry: %u GUID: %u) targeting home", -            i_owner->GetEntry(), i_owner->GetGUIDLow() ); - -        MoveFollow(target, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE, MOTION_SLOT_IDLE); -    } -    else if(i_owner->GetTypeId() == TYPEID_UNIT) +    if(i_owner->GetTypeId() == TYPEID_UNIT)      {          DEBUG_LOG("Creature (Entry: %u GUID: %u) targeted home", i_owner->GetEntry(), i_owner->GetGUIDLow());          Mutate(new HomeMovementGenerator<Creature>(), MOTION_SLOT_ACTIVE); @@ -218,7 +211,6 @@ MotionMaster::MoveTargetedHome()      else      {          sLog.outError("Player (GUID: %u) attempt targeted home", i_owner->GetGUIDLow() ); -        return;      }  } diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index a3401a77e21..0f04822546b 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3275,7 +3275,7 @@ void Spell::EffectSummonType(uint32 i)                      summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); -                    summon->GetMotionMaster()->MoveTargetedHome(); +                    summon->AI()->EnterEvadeMode();                      std::string name = m_originalCaster->GetName();                      name.append(petTypeSuffix[3]); @@ -6423,7 +6423,7 @@ void Spell::SummonGuardian(uint32 entry, SummonPropertiesEntry const *properties          summon->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id); -        summon->GetMotionMaster()->MoveTargetedHome(); +        summon->AI()->EnterEvadeMode();      }  }  | 
