diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-04-23 10:24:44 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-04-23 10:24:44 +0200 |
commit | 8dbdc1570597745d5ba3b49f73ef5fb2bef66f98 (patch) | |
tree | 1a28cfa9e6f057bded8e01961447952d67f9f568 | |
parent | 05ef35c355786c576bdd2379bfe0c084117309f7 (diff) |
Core/Units: Made RemoveAllAurasExceptVehicle more generic, can now be used to remove all auras except specified type
-rwxr-xr-x | src/server/game/AI/CreatureAIImpl.h | 7 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 2 |
3 files changed, 6 insertions, 9 deletions
diff --git a/src/server/game/AI/CreatureAIImpl.h b/src/server/game/AI/CreatureAIImpl.h index cc3bfad4f86..e641c4fca6b 100755 --- a/src/server/game/AI/CreatureAIImpl.h +++ b/src/server/game/AI/CreatureAIImpl.h @@ -549,11 +549,8 @@ inline bool CreatureAI::_EnterEvadeMode() if (!me->isAlive()) return false; - // call specialized vehicle remove auras if creature is one - if (!me->IsVehicle()) - me->RemoveAllAuras(); - else - me->RemoveAllAurasExceptVehicle(); + // dont remove vehicle auras, passengers arent supposed to drop off the vehicle + me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE); // sometimes bosses stuck in combat? me->DeleteThreatList(); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 22cecbc983e..1d39897b994 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4010,12 +4010,12 @@ void Unit::RemoveAllAurasRequiringDeadTarget() } } -void Unit::RemoveAllAurasExceptVehicle() +void Unit::RemoveAllAurasExceptType(AuraType type) { for (AuraApplicationMap::iterator iter = m_appliedAuras.begin(); iter != m_appliedAuras.end();) { Aura const* aura = iter->second->GetBase(); - if (!IsSpellHaveAura(aura->GetSpellProto(), SPELL_AURA_CONTROL_VEHICLE)) + if (!IsSpellHaveAura(aura->GetSpellProto(), type)) _UnapplyAura(iter, AURA_REMOVE_BY_DEFAULT); else ++iter; @@ -4024,7 +4024,7 @@ void Unit::RemoveAllAurasExceptVehicle() for (AuraMap::iterator iter = m_ownedAuras.begin(); iter != m_ownedAuras.end();) { Aura* aura = iter->second; - if (!IsSpellHaveAura(aura->GetSpellProto(), SPELL_AURA_CONTROL_VEHICLE)) + if (!IsSpellHaveAura(aura->GetSpellProto(), type)) RemoveOwnedAura(iter, AURA_REMOVE_BY_DEFAULT); else ++iter; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 2dfcc4412cb..5eec4be30b1 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1664,7 +1664,7 @@ class Unit : public WorldObject void RemoveArenaAuras(bool onleave = false); void RemoveAllAurasOnDeath(); void RemoveAllAurasRequiringDeadTarget(); - void RemoveAllAurasExceptVehicle(); + void RemoveAllAurasExceptType(AuraType type); void DelayOwnedAuras(uint32 spellId, uint64 caster, int32 delaytime); void _RemoveAllAuraStatMods(); |