diff options
author | Rushor <PBienati@web.de> | 2016-02-08 17:04:03 +0100 |
---|---|---|
committer | Rushor <PBienati@web.de> | 2016-02-10 14:33:58 +0100 |
commit | 5c0b0add27299ee94448b36cabe32e724b682cd6 (patch) | |
tree | 29d7248b5a1a3013f2d7015651f0456fe380ec22 | |
parent | fe2a0fda4464effeb2fb655da84a0460328b1aeb (diff) |
Core/Unit: Do not remove auras from Pets and Guardians after evading
* this adds free space for further adjustments
* this fixes #14347
-rw-r--r-- | src/server/game/AI/CreatureAI.cpp | 4 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartAI.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 1 |
4 files changed, 13 insertions, 4 deletions
diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index c254a9124c1..c46d80cc0df 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -257,9 +257,7 @@ bool CreatureAI::_EnterEvadeMode(EvadeReason /*why*/) if (!me->IsAlive()) return false; - // don't remove vehicle auras, passengers aren't supposed to drop off the vehicle - // don't remove clone caster on evade (to be verified) - me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE, SPELL_AURA_CLONE_CASTER); + me->RemoveAurasOnEvade(); // sometimes bosses stuck in combat? me->DeleteThreatList(); diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index eca327e770e..3e7f806e81e 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -413,7 +413,7 @@ void SmartAI::EnterEvadeMode(EvadeReason /*why*/) if (!me->IsAlive() || me->IsInEvadeMode()) return; - me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE, SPELL_AURA_CLONE_CASTER); + me->RemoveAurasOnEvade(); me->AddUnitState(UNIT_STATE_EVADE); me->DeleteThreatList(); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 3aed5fde7b3..8c41e4a39fd 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4113,6 +4113,16 @@ void Unit::RemoveArenaAuras() } } +void Unit::RemoveAurasOnEvade() +{ + if (IsCharmedOwnedByPlayerOrPlayer()) // if it is a player owned creature it should not remove the aura + return; + + // don't remove vehicle auras, passengers aren't supposed to drop off the vehicle + // don't remove clone caster on evade (to be verified) + RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE, SPELL_AURA_CLONE_CASTER); +} + void Unit::RemoveAllAurasOnDeath() { // used just after dieing to remove all visible auras diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 8572c791d67..50ca78e5285 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1720,6 +1720,7 @@ class Unit : public WorldObject void RemoveAreaAurasDueToLeaveWorld(); void RemoveAllAuras(); void RemoveArenaAuras(); + void RemoveAurasOnEvade(); void RemoveAllAurasOnDeath(); void RemoveAllAurasRequiringDeadTarget(); void RemoveAllAurasExceptType(AuraType type); |