mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[7697] Interrupt casting at enter to evade mode.
This commit is contained in:
parent
cc83cac0aa
commit
d910610600
9 changed files with 19 additions and 18 deletions
|
|
@ -314,6 +314,7 @@ void ScriptedAI::UpdateAI(const uint32)
|
|||
|
||||
void ScriptedAI::EnterEvadeMode()
|
||||
{
|
||||
m_creature->CombatStop(true);
|
||||
if( m_creature->isAlive() )
|
||||
DoGoHome();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ void AggressorAI::EnterEvadeMode()
|
|||
{
|
||||
DEBUG_LOG("Creature stopped attacking cuz his dead [guid=%u]", m_creature->GetGUIDLow());
|
||||
i_victimGuid = 0;
|
||||
m_creature->CombatStop();
|
||||
m_creature->CombatStop(true);
|
||||
m_creature->DeleteThreatList();
|
||||
return;
|
||||
}
|
||||
|
|
@ -114,7 +114,7 @@ void AggressorAI::EnterEvadeMode()
|
|||
|
||||
m_creature->DeleteThreatList();
|
||||
i_victimGuid = 0;
|
||||
m_creature->CombatStop();
|
||||
m_creature->CombatStop(true);
|
||||
m_creature->SetLootRecipient(NULL);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1063,7 +1063,7 @@ void CreatureEventAI::EnterEvadeMode()
|
|||
m_creature->InterruptNonMeleeSpells(true);
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->DeleteThreatList();
|
||||
m_creature->CombatStop();
|
||||
m_creature->CombatStop(true);
|
||||
|
||||
if (m_creature->isAlive())
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ void GuardAI::EnterEvadeMode()
|
|||
i_state = STATE_NORMAL;
|
||||
|
||||
i_victimGuid = 0;
|
||||
m_creature->CombatStop();
|
||||
m_creature->CombatStop(true);
|
||||
m_creature->DeleteThreatList();
|
||||
return;
|
||||
}
|
||||
|
|
@ -97,7 +97,7 @@ void GuardAI::EnterEvadeMode()
|
|||
m_creature->RemoveAllAuras();
|
||||
m_creature->DeleteThreatList();
|
||||
i_victimGuid = 0;
|
||||
m_creature->CombatStop();
|
||||
m_creature->CombatStop(true);
|
||||
i_state = STATE_NORMAL;
|
||||
|
||||
// Remove TargetedMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ ReactorAI::EnterEvadeMode()
|
|||
m_creature->GetMotionMaster()->MovementExpired();
|
||||
m_creature->GetMotionMaster()->MoveIdle();
|
||||
i_victimGuid = 0;
|
||||
m_creature->CombatStop();
|
||||
m_creature->CombatStop(true);
|
||||
m_creature->DeleteThreatList();
|
||||
return;
|
||||
}
|
||||
|
|
@ -118,7 +118,7 @@ ReactorAI::EnterEvadeMode()
|
|||
m_creature->RemoveAllAuras();
|
||||
m_creature->DeleteThreatList();
|
||||
i_victimGuid = 0;
|
||||
m_creature->CombatStop();
|
||||
m_creature->CombatStop(true);
|
||||
m_creature->SetLootRecipient(NULL);
|
||||
|
||||
// Remove TargetedMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ TotemAI::MoveInLineOfSight(Unit *)
|
|||
|
||||
void TotemAI::EnterEvadeMode()
|
||||
{
|
||||
m_creature->CombatStop();
|
||||
m_creature->CombatStop(true);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -7214,9 +7214,9 @@ bool Unit::AttackStop(bool targetSwitch /*=false*/)
|
|||
return true;
|
||||
}
|
||||
|
||||
void Unit::CombatStop(bool cast)
|
||||
void Unit::CombatStop(bool includingCast)
|
||||
{
|
||||
if (cast && IsNonMeleeSpellCasted(false))
|
||||
if (includingCast && IsNonMeleeSpellCasted(false))
|
||||
InterruptNonMeleeSpells(false);
|
||||
|
||||
AttackStop();
|
||||
|
|
@ -7226,19 +7226,19 @@ void Unit::CombatStop(bool cast)
|
|||
ClearInCombat();
|
||||
}
|
||||
|
||||
void Unit::CombatStopWithPets(bool cast)
|
||||
void Unit::CombatStopWithPets(bool includingCast)
|
||||
{
|
||||
CombatStop(cast);
|
||||
CombatStop(includingCast);
|
||||
if(Pet* pet = GetPet())
|
||||
pet->CombatStop(cast);
|
||||
pet->CombatStop(includingCast);
|
||||
if(Unit* charm = GetCharm())
|
||||
charm->CombatStop(cast);
|
||||
charm->CombatStop(includingCast);
|
||||
if(GetTypeId()==TYPEID_PLAYER)
|
||||
{
|
||||
GuardianPetList const& guardians = ((Player*)this)->GetGuardians();
|
||||
for(GuardianPetList::const_iterator itr = guardians.begin(); itr != guardians.end(); ++itr)
|
||||
if(Unit* guardian = Unit::GetUnit(*this,*itr))
|
||||
guardian->CombatStop(cast);
|
||||
guardian->CombatStop(includingCast);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -855,8 +855,8 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
AttackerSet const& getAttackers() const { return m_attackers; }
|
||||
bool isAttackingPlayer() const;
|
||||
Unit* getVictim() const { return m_attacking; }
|
||||
void CombatStop(bool cast = false);
|
||||
void CombatStopWithPets(bool cast = false);
|
||||
void CombatStop(bool includingCast = false);
|
||||
void CombatStopWithPets(bool includingCast = false);
|
||||
Unit* SelectNearbyTarget() const;
|
||||
bool hasNegativeAuraWithInterruptFlag(uint32 flag);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "7696"
|
||||
#define REVISION_NR "7697"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue