*Implement simple charmed AI for players charmed by creatures.

--HG--
branch : trunk
This commit is contained in:
megamage
2008-11-24 17:15:41 -06:00
parent 7312c5034e
commit f7e5b2ba69
4 changed files with 51 additions and 27 deletions
+12 -5
View File
@@ -141,17 +141,24 @@ void ScriptedAI::UpdateAI(const uint32 diff)
void ScriptedAI::EnterEvadeMode()
{
m_creature->InterruptNonMeleeSpells(true);
//m_creature->InterruptNonMeleeSpells(true);
m_creature->RemoveAllAuras();
m_creature->DeleteThreatList();
m_creature->CombatStop();
m_creature->LoadCreaturesAddon();
if (m_creature->isAlive())
m_creature->GetMotionMaster()->MoveTargetedHome();
m_creature->SetLootRecipient(NULL);
if(m_creature->isAlive())
{
if(Unit* owner = m_creature->GetOwner())
{
if(owner->isAlive())
m_creature->GetMotionMaster()->MoveFollow(owner,PET_FOLLOW_DIST,PET_FOLLOW_ANGLE);
}
else
m_creature->GetMotionMaster()->MoveTargetedHome();
}
InCombat = false;
Reset();
}
@@ -1033,26 +1033,9 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI
void EnterEvadeMode()
{
m_creature->RemoveAllAuras();
m_creature->DeleteThreatList();
m_creature->CombatStop();
m_creature->LoadCreaturesAddon();
if( m_creature->isAlive() )
{
if (Unit* owner = m_creature->GetOwner())
{
if (owner->isAlive())
m_creature->GetMotionMaster()->MoveFollow(owner,PET_FOLLOW_DIST,PET_FOLLOW_ANGLE);
}
else
m_creature->GetMotionMaster()->MoveTargetedHome();
}
ScriptedAI::EnterEvadeMode();
m_creature->SetLootRecipient(NULL);
InCombat = false;
IsFleeing = false;
Reset();
//Handle Evade events
for (std::list<EventHolder>::iterator i = EventList.begin(); i != EventList.end(); ++i)