aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-04-23 10:24:44 +0200
committerShauren <shauren.trinity@gmail.com>2011-04-23 10:24:44 +0200
commit8dbdc1570597745d5ba3b49f73ef5fb2bef66f98 (patch)
tree1a28cfa9e6f057bded8e01961447952d67f9f568
parent05ef35c355786c576bdd2379bfe0c084117309f7 (diff)
Core/Units: Made RemoveAllAurasExceptVehicle more generic, can now be used to remove all auras except specified type
-rwxr-xr-xsrc/server/game/AI/CreatureAIImpl.h7
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp6
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.h2
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();