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:
+23
-8
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user