From a744ffc4c0375c6610d52a9287b48ca7ee8ca084 Mon Sep 17 00:00:00 2001 From: Sarjuuk Date: Fri, 27 Nov 2009 19:35:38 +0300 Subject: [PATCH] [8881] Fixed aura SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT(255) apply. Function use wrong base at fact that spell misc values for this aura store single value instead mask. Signed-off-by: VladimirMangos --- src/game/Unit.cpp | 11 ++++++++++- src/shared/revision_nr.h | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index c45f8cbff..3fd9a67e9 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9355,7 +9355,16 @@ uint32 Unit::MeleeDamageBonus(Unit *pVictim, uint32 pdamage,WeaponAttackType att TakenPercent *= pVictim->GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, schoolMask); // ..taken pct (by mechanic mask) - TakenPercent *= pVictim->GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT, mechanicMask); + if (mechanicMask) + { + AuraList const& mTotalAuraList = GetAurasByType(SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT); + for(AuraList::const_iterator i = mTotalAuraList.begin(); i != mTotalAuraList.end(); ++i) + { + Modifier* mod = (*i)->GetModifier(); + if ((1<<(mod->m_miscvalue-1)) & mechanicMask) + TakenPercent *= (100.0f + mod->m_amount)/100.0f; + } + } // ..taken pct (melee/ranged) if(attType == RANGED_ATTACK) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 7209c4999..13b688be4 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 "8880" + #define REVISION_NR "8881" #endif // __REVISION_NR_H__