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
This commit is contained in:
thenecromancer
2010-01-14 17:47:38 +01:00
parent 97576c68c4
commit a428293dae
+23 -8
View File
@@ -9847,9 +9847,29 @@ uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint3
if (pVictim->GetDiseasesByCaster(owner->GetGUID()) > 0) if (pVictim->GetDiseasesByCaster(owner->GetGUID()) > 0)
DoneTotalMod *= (100.0f + aurEff->GetAmount()) / 100.0f; DoneTotalMod *= (100.0f + aurEff->GetAmount()) / 100.0f;
// This is not a typo - Impurity has SPELLFAMILY_DRUID // Impurity (dummy effect)
if (AuraEffect * aurEff = GetDummyAuraEffect(SPELLFAMILY_DRUID, 1986, 0)) if (GetTypeId() == TYPEID_PLAYER)
ApCoeffMod *= (100.0f + aurEff->GetAmount()) / 100.0f; {
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; break;
} }
@@ -10815,11 +10835,6 @@ void Unit::MeleeDamageBonus(Unit *pVictim, uint32 *pdamage, WeaponAttackType att
normalized = true; normalized = true;
break; 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)); DoneFlatBenefit += int32(APbonus/14.0f * GetAPMultiplier(attType,normalized));
} }