[7697] Interrupt casting at enter to evade mode. Author: VladimirMangos
--HG-- branch : trunk
This commit is contained in:
@@ -47,7 +47,7 @@ void AggressorAI::EnterEvadeMode()
|
|||||||
{
|
{
|
||||||
DEBUG_LOG("Creature stopped attacking cuz his dead [guid=%u]", m_creature->GetGUIDLow());
|
DEBUG_LOG("Creature stopped attacking cuz his dead [guid=%u]", m_creature->GetGUIDLow());
|
||||||
i_victimGuid = 0;
|
i_victimGuid = 0;
|
||||||
m_creature->CombatStop();
|
m_creature->CombatStop(true);
|
||||||
m_creature->DeleteThreatList();
|
m_creature->DeleteThreatList();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ void AggressorAI::EnterEvadeMode()
|
|||||||
|
|
||||||
m_creature->DeleteThreatList();
|
m_creature->DeleteThreatList();
|
||||||
i_victimGuid = 0;
|
i_victimGuid = 0;
|
||||||
m_creature->CombatStop();
|
m_creature->CombatStop(true);
|
||||||
m_creature->SetLootRecipient(NULL);
|
m_creature->SetLootRecipient(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1081,7 +1081,7 @@ void CreatureEventAI::EnterEvadeMode()
|
|||||||
m_creature->InterruptNonMeleeSpells(true);
|
m_creature->InterruptNonMeleeSpells(true);
|
||||||
m_creature->RemoveAllAuras();
|
m_creature->RemoveAllAuras();
|
||||||
m_creature->DeleteThreatList();
|
m_creature->DeleteThreatList();
|
||||||
m_creature->CombatStop();
|
m_creature->CombatStop(true);
|
||||||
|
|
||||||
if (m_creature->isAlive())
|
if (m_creature->isAlive())
|
||||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ void GuardAI::EnterEvadeMode()
|
|||||||
i_state = STATE_NORMAL;
|
i_state = STATE_NORMAL;
|
||||||
|
|
||||||
i_victimGuid = 0;
|
i_victimGuid = 0;
|
||||||
m_creature->CombatStop();
|
m_creature->CombatStop(true);
|
||||||
m_creature->DeleteThreatList();
|
m_creature->DeleteThreatList();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ void GuardAI::EnterEvadeMode()
|
|||||||
m_creature->RemoveAllAuras();
|
m_creature->RemoveAllAuras();
|
||||||
m_creature->DeleteThreatList();
|
m_creature->DeleteThreatList();
|
||||||
i_victimGuid = 0;
|
i_victimGuid = 0;
|
||||||
m_creature->CombatStop();
|
m_creature->CombatStop(true);
|
||||||
i_state = STATE_NORMAL;
|
i_state = STATE_NORMAL;
|
||||||
|
|
||||||
// Remove TargetedMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead
|
// Remove TargetedMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ ReactorAI::EnterEvadeMode()
|
|||||||
m_creature->GetMotionMaster()->MovementExpired();
|
m_creature->GetMotionMaster()->MovementExpired();
|
||||||
m_creature->GetMotionMaster()->MoveIdle();
|
m_creature->GetMotionMaster()->MoveIdle();
|
||||||
i_victimGuid = 0;
|
i_victimGuid = 0;
|
||||||
m_creature->CombatStop();
|
m_creature->CombatStop(true);
|
||||||
m_creature->DeleteThreatList();
|
m_creature->DeleteThreatList();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -102,7 +102,7 @@ ReactorAI::EnterEvadeMode()
|
|||||||
m_creature->RemoveAllAuras();
|
m_creature->RemoveAllAuras();
|
||||||
m_creature->DeleteThreatList();
|
m_creature->DeleteThreatList();
|
||||||
i_victimGuid = 0;
|
i_victimGuid = 0;
|
||||||
m_creature->CombatStop();
|
m_creature->CombatStop(true);
|
||||||
m_creature->SetLootRecipient(NULL);
|
m_creature->SetLootRecipient(NULL);
|
||||||
|
|
||||||
if(!m_creature->GetCharmerOrOwner())
|
if(!m_creature->GetCharmerOrOwner())
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ TotemAI::MoveInLineOfSight(Unit *)
|
|||||||
|
|
||||||
void TotemAI::EnterEvadeMode()
|
void TotemAI::EnterEvadeMode()
|
||||||
{
|
{
|
||||||
m_creature->CombatStop();
|
m_creature->CombatStop(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+5
-5
@@ -7845,9 +7845,9 @@ bool Unit::AttackStop()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::CombatStop(bool cast)
|
void Unit::CombatStop(bool includingCast)
|
||||||
{
|
{
|
||||||
if(cast && IsNonMeleeSpellCasted(false))
|
if (includingCast && IsNonMeleeSpellCasted(false))
|
||||||
InterruptNonMeleeSpells(false);
|
InterruptNonMeleeSpells(false);
|
||||||
|
|
||||||
AttackStop();
|
AttackStop();
|
||||||
@@ -7857,12 +7857,12 @@ void Unit::CombatStop(bool cast)
|
|||||||
ClearInCombat();
|
ClearInCombat();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::CombatStopWithPets(bool cast)
|
void Unit::CombatStopWithPets(bool includingCast)
|
||||||
{
|
{
|
||||||
CombatStop(cast);
|
CombatStop(includingCast);
|
||||||
|
|
||||||
for(ControlList::const_iterator itr = m_Controlled.begin(); itr != m_Controlled.end(); ++itr)
|
for(ControlList::const_iterator itr = m_Controlled.begin(); itr != m_Controlled.end(); ++itr)
|
||||||
(*itr)->CombatStop(cast);
|
(*itr)->CombatStop(includingCast);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Unit::isAttackingPlayer() const
|
bool Unit::isAttackingPlayer() const
|
||||||
|
|||||||
+2
-2
@@ -967,8 +967,8 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
|
|||||||
AttackerSet const& getAttackers() const { return m_attackers; }
|
AttackerSet const& getAttackers() const { return m_attackers; }
|
||||||
bool isAttackingPlayer() const;
|
bool isAttackingPlayer() const;
|
||||||
Unit* getVictim() const { return m_attacking; }
|
Unit* getVictim() const { return m_attacking; }
|
||||||
void CombatStop(bool cast = false);
|
void CombatStop(bool includingCast = false);
|
||||||
void CombatStopWithPets(bool cast = false);
|
void CombatStopWithPets(bool includingCast = false);
|
||||||
Unit* SelectNearbyTarget(float dist = NOMINAL_MELEE_RANGE) const;
|
Unit* SelectNearbyTarget(float dist = NOMINAL_MELEE_RANGE) const;
|
||||||
bool hasNegativeAuraWithInterruptFlag(uint32 flag);
|
bool hasNegativeAuraWithInterruptFlag(uint32 flag);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user