From 6e241689e7c87cb9887a90c00ec22ff797fbe614 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Sun, 9 Jan 2011 00:52:13 +0300 Subject: [PATCH] [10987] Prevent deleting reflect source aura ebfore reflected spell cast. --- src/game/Unit.cpp | 6 ++++++ src/shared/revision_nr.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 47220694a..527e1a018 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -2055,6 +2055,7 @@ void Unit::CalculateDamageAbsorbAndResist(Unit *pCaster, SpellSchoolMask schoolM reflectDamage = currentAbsorb / 2; reflectSpell = 33619; reflectTriggeredBy = *i; + reflectTriggeredBy->SetInUse(true); // lock aura from final deletion until processing break; } if (spellProto->Id == 39228 || // Argussian Compass @@ -2130,6 +2131,7 @@ void Unit::CalculateDamageAbsorbAndResist(Unit *pCaster, SpellSchoolMask schoolM reflectDamage = (*k)->GetModifier()->m_amount * RemainingDamage/100; reflectSpell = 33619; reflectTriggeredBy = *i; + reflectTriggeredBy->SetInUse(true);// lock aura from final deletion until processing } break; default: break; } @@ -2237,7 +2239,11 @@ void Unit::CalculateDamageAbsorbAndResist(Unit *pCaster, SpellSchoolMask schoolM // Cast back reflect damage spell if (canReflect && reflectSpell) + { CastCustomSpell(pCaster, reflectSpell, &reflectDamage, NULL, NULL, true, NULL, reflectTriggeredBy); + reflectTriggeredBy->SetInUse(false); // free lock from deletion + } + // absorb by mana cost AuraList const& vManaShield = GetAurasByType(SPELL_AURA_MANA_SHIELD); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index c578f9ee1..044b2ffdc 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 "10986" + #define REVISION_NR "10987" #endif // __REVISION_NR_H__