From 73faabbc491e72c4189f15c62546cdecf0f6bd39 Mon Sep 17 00:00:00 2001 From: QAston Date: Sat, 23 May 2009 11:26:08 +0200 Subject: *Fix a crash. --HG-- branch : trunk --- src/game/SpellAuras.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/game/SpellAuras.cpp') diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index c0c64bd8181..e0c6184d695 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -848,7 +848,7 @@ void AuraEffect::ApplyModifier(bool apply, bool Real, bool changeAmount) (*this.*AuraHandler [m_auraName])(apply,Real, changeAmount); } -void AuraEffect::RecalculateAmount() +void AuraEffect::RecalculateAmount(bool applied) { Unit *caster = GetParentAura()->GetCaster(); int32 amount = GetParentAura()->GetStackAmount() * caster->CalculateSpellDamage(m_spellProto, GetEffIndex(), GetBasePoints(), m_target); @@ -856,9 +856,11 @@ void AuraEffect::RecalculateAmount() if (amount!=GetAmount()) { // Auras which are applying spellmod should have removed spellmods for real - ApplyModifier(false,false,true); + if (applied) + ApplyModifier(false,false,true); SetAmount(amount); - ApplyModifier(true,false,true); + if (applied) + ApplyModifier(true,false,true); } } @@ -1195,7 +1197,7 @@ void Aura::_RemoveAura() } } -void Aura::SetStackAmount(uint8 stackAmount) +void Aura::SetStackAmount(uint8 stackAmount, bool applied) { if (stackAmount != m_stackAmount) { @@ -1204,7 +1206,7 @@ void Aura::SetStackAmount(uint8 stackAmount) { if (AuraEffect * part = GetPartAura(i)) { - part->RecalculateAmount(); + part->RecalculateAmount(applied); } } } -- cgit v1.2.3