diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 55817ca8a10..c65f5f4b5de 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -7393,13 +7393,15 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB // Drain Soul if (auraSpellInfo->SpellFamilyFlags & UI64LIT(0x0000000000004000)) { - Unit::AuraList const& mAddFlatModifier = GetAurasByType(SPELL_AURA_ADD_FLAT_MODIFIER); - for(Unit::AuraList::const_iterator i = mAddFlatModifier.begin(); i != mAddFlatModifier.end(); ++i) + // search for "Improved Drain Soul" dummy aura + Unit::AuraList const& mDummyAura = GetAurasByType(SPELL_AURA_DUMMY); + for(Unit::AuraList::const_iterator i = mDummyAura.begin(); i != mDummyAura.end(); ++i) { - if ((*i)->GetModifier()->m_miscvalue == SPELLMOD_CHANCE_OF_SUCCESS && (*i)->GetSpellProto()->SpellIconID == 113) + if ((*i)->GetSpellProto()->SpellFamilyName == SPELLFAMILY_WARLOCK && (*i)->GetSpellProto()->SpellIconID == 113) { - // Drain Soul - CastCustomSpell(this, 18371, &basepoints[0], NULL, NULL, true, castItem, triggeredByAura); + // basepoints of trigger spell stored in dummyeffect of spellProto + int32 basepoints = GetMaxPower(POWER_MANA) * (*i)->GetSpellProto()->CalculateSimpleValue(EFFECT_INDEX_2) / 100; + CastCustomSpell(this, 18371, &basepoints, NULL, NULL, true, castItem, triggeredByAura); break; } } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 05f9363ccb6..1a1d651fb8f 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 "9960" + #define REVISION_NR "9961" #endif // __REVISION_NR_H__