From b318ab02678255a2b7127d4ac285dd3f69ee46ee Mon Sep 17 00:00:00 2001 From: Astellar Date: Mon, 27 Jul 2009 16:37:31 +0400 Subject: [PATCH] [8257] Avoid remove daze and croud control spells except polymorph at druid form change. Signed-off-by: VladimirMangos --- src/game/SharedDefines.h | 6 ++++++ src/game/SpellAuras.cpp | 22 +++++++++++++++++++++- src/shared/revision_nr.h | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index a1879af85..7597de6cb 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -951,6 +951,12 @@ enum Mechanics (1<RemoveSpellsCausingAura(SPELL_AURA_MOD_ROOT); - m_target->RemoveSpellsCausingAura(SPELL_AURA_MOD_DECREASE_SPEED); + Unit::AuraList const& slowingAuras = m_target->GetAurasByType(SPELL_AURA_MOD_DECREASE_SPEED); + for (Unit::AuraList::const_iterator iter = slowingAuras.begin(); iter != slowingAuras.end();) + { + SpellEntry const* aurSpellInfo = (*iter)->GetSpellProto(); + + // If spell that caused this aura has Croud Control or Daze effect + if((GetAllSpellMechanicMask(aurSpellInfo) & MECHANIC_NOT_REMOVED_BY_SHAPESHIFT) || + // some Daze spells have these parameters instead of MECHANIC_DAZE + (aurSpellInfo->SpellIconID == 15 && aurSpellInfo->Dispel == 0)) + { + ++iter; + continue; + } + + // All OK, remove aura now + m_target->RemoveAurasDueToSpellByCancel(aurSpellInfo->Id); + iter = slowingAuras.begin(); + } // and polymorphic affects if(m_target->IsPolymorphed()) m_target->RemoveAurasDueToSpell(m_target->getTransForm()); + break; + } default: break; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index cedadc5c5..d286180a4 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8256" + #define REVISION_NR "8257" #endif // __REVISION_NR_H__ -- 2.11.4.GIT