From a428293dae905f7c3730277ac15fe5f5cba70aa5 Mon Sep 17 00:00:00 2001 From: thenecromancer Date: Thu, 14 Jan 2010 17:47:38 +0100 Subject: [PATCH] Issue 62: DK talent Impurity Note that there are probably more of things having just "dummy effect". This way to get them is quite slow (auras are at least sorted by their type) and probably some sort of modifier could be stored for them --HG-- branch : trunk --- src/game/Unit.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 3e918396c0..f1e799ea43 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9847,9 +9847,29 @@ uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint3 if (pVictim->GetDiseasesByCaster(owner->GetGUID()) > 0) DoneTotalMod *= (100.0f + aurEff->GetAmount()) / 100.0f; - // This is not a typo - Impurity has SPELLFAMILY_DRUID - if (AuraEffect * aurEff = GetDummyAuraEffect(SPELLFAMILY_DRUID, 1986, 0)) - ApCoeffMod *= (100.0f + aurEff->GetAmount()) / 100.0f; + // Impurity (dummy effect) + if (GetTypeId() == TYPEID_PLAYER) + { + PlayerSpellMap playerSpells = ((Player*)this)->GetSpellMap(); + for (PlayerSpellMap::const_iterator itr = playerSpells.begin(); itr != playerSpells.end(); ++itr) + { + if (itr->second->state == PLAYERSPELL_REMOVED || itr->second->disabled) + continue; + switch (itr->first) + { + case 49220: + case 49633: + case 49635: + case 49636: + case 49638: + { + if (const SpellEntry *proto=sSpellStore.LookupEntry(itr->first)) + ApCoeffMod *= (100.0f + proto->CalculateSimpleValue(0)) / 100.0f; + } + break; + } + } + } break; } @@ -10815,11 +10835,6 @@ void Unit::MeleeDamageBonus(Unit *pVictim, uint32 *pdamage, WeaponAttackType att normalized = true; break; } - - // This is not a typo - Impurity has SPELLFAMILY_DRUID - if (AuraEffect const * aurEff = GetDummyAuraEffect(SPELLFAMILY_DRUID, 1986, 0)) - APbonus *= (100.0f + aurEff->GetAmount()) / 100.0f; - DoneFlatBenefit += int32(APbonus/14.0f * GetAPMultiplier(attType,normalized)); }