Merge pull request #4641 from Subv/fix001
Core/Vehicles: Vehicles with SAI should not kick their passengers when resetting
This commit is contained in:
@@ -431,12 +431,36 @@ void SmartAI::MovementInform(uint32 MovementType, uint32 Data)
|
|||||||
MovepointReached(Data);
|
MovepointReached(Data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SmartAI::RemoveAuras()
|
||||||
|
{
|
||||||
|
Unit::AuraApplicationMap appliedAuras = me->GetAppliedAuras();
|
||||||
|
for (Unit::AuraApplicationMap::iterator iter = appliedAuras.begin(); iter != appliedAuras.end();)
|
||||||
|
{
|
||||||
|
Aura const* aura = iter->second->GetBase();
|
||||||
|
if (!aura->GetSpellInfo()->HasAura(SPELL_AURA_CONTROL_VEHICLE) && !(iter->second->GetTarget() == me && aura->GetCaster() == me))
|
||||||
|
me->_UnapplyAura(iter, AURA_REMOVE_BY_DEFAULT);
|
||||||
|
else
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
|
||||||
|
Unit::AuraMap ownedAuras = me->GetOwnedAuras();
|
||||||
|
for (Unit::AuraMap::iterator iter = ownedAuras.begin(); iter != ownedAuras.end();)
|
||||||
|
{
|
||||||
|
Aura* aura = iter->second;
|
||||||
|
if (!aura->GetSpellInfo()->HasAura(SPELL_AURA_CONTROL_VEHICLE))
|
||||||
|
me->RemoveOwnedAura(iter, AURA_REMOVE_BY_DEFAULT);
|
||||||
|
else
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SmartAI::EnterEvadeMode()
|
void SmartAI::EnterEvadeMode()
|
||||||
{
|
{
|
||||||
if (!me->isAlive())
|
if (!me->isAlive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
me->RemoveAllAuras();
|
RemoveAuras();
|
||||||
|
|
||||||
me->DeleteThreatList();
|
me->DeleteThreatList();
|
||||||
me->CombatStop(true);
|
me->CombatStop(true);
|
||||||
me->LoadCreaturesAddon();
|
me->LoadCreaturesAddon();
|
||||||
|
|||||||
@@ -194,6 +194,8 @@ class SmartAI : public CreatureAI
|
|||||||
}
|
}
|
||||||
void StartDespawn() { mDespawnState = 2; }
|
void StartDespawn() { mDespawnState = 2; }
|
||||||
|
|
||||||
|
void RemoveAuras();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint32 mFollowCreditType;
|
uint32 mFollowCreditType;
|
||||||
uint32 mFollowArrivedTimer;
|
uint32 mFollowArrivedTimer;
|
||||||
|
|||||||
Reference in New Issue
Block a user