diff options
author | ariel- <ariel-@users.noreply.github.com> | 2016-12-09 14:34:40 -0300 |
---|---|---|
committer | ariel- <ariel-@users.noreply.github.com> | 2016-12-09 14:40:15 -0300 |
commit | e8528717a55fbddf1ad6a7061aae5f7e293b18af (patch) | |
tree | 79be38bec50f28d5225091c0a7632a7931a40684 | |
parent | ed5aa4092979e9232f19f7fff93523cf0a0d4cec (diff) |
Core/Stats: fixed feral AP calculation
Closes #18435
-rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 44 |
1 files changed, 10 insertions, 34 deletions
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 31d760ef70a..22288acaae1 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -395,50 +395,26 @@ void Player::UpdateAttackPowerAndDamage(bool ranged) case CLASS_DRUID: { // Check if Predatory Strikes is skilled - float mLevelMult = 0.0f; - float weapon_bonus = 0.0f; + float levelBonus = 0.0f; + float weaponBonus = 0.0f; if (IsInFeralForm()) { - Unit::AuraEffectList const& mDummy = GetAuraEffectsByType(SPELL_AURA_DUMMY); - for (Unit::AuraEffectList::const_iterator itr = mDummy.begin(); itr != mDummy.end(); ++itr) - { - AuraEffect* aurEff = *itr; - if (aurEff->GetSpellInfo()->SpellIconID == 1563) - { - switch (aurEff->GetEffIndex()) - { - case 0: // Predatory Strikes (effect 0) - mLevelMult = CalculatePct(1.0f, aurEff->GetAmount()); - break; - case 1: // Predatory Strikes (effect 1) - if (Item* mainHand = m_items[EQUIPMENT_SLOT_MAINHAND]) - { - // also gains % attack power from equipped weapon - ItemTemplate const* proto = mainHand->GetTemplate(); - if (!proto) - continue; - - weapon_bonus = CalculatePct(float(proto->getFeralBonus()), aurEff->GetAmount()); - } - break; - default: - break; - } - } - } + if (AuraEffect const* levelMod = GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_DRUID, 1563, EFFECT_0)) + levelBonus = CalculatePct(1.0f, levelMod->GetAmount()); + + if (Item const* weapon = m_items[EQUIPMENT_SLOT_MAINHAND]) + if (AuraEffect const* weaponMod = GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_DRUID, 1563, EFFECT_1)) + weaponBonus = CalculatePct(static_cast<float>(ASSERT_NOTNULL(weapon->GetTemplate())->getFeralBonus()), weaponMod->GetAmount()); } switch (GetShapeshiftForm()) { case FORM_CAT: - val2 = getLevel() * (mLevelMult + 2.0f) + GetStat(STAT_STRENGTH) * 2.0f + GetStat(STAT_AGILITY) - 20.0f + weapon_bonus + m_baseFeralAP; + val2 = getLevel() * levelBonus + GetStat(STAT_STRENGTH) * 2.0f + GetStat(STAT_AGILITY) - 20.0f + weaponBonus + m_baseFeralAP; break; case FORM_BEAR: case FORM_DIREBEAR: - val2 = getLevel() * (mLevelMult + 3.0f) + GetStat(STAT_STRENGTH) * 2.0f - 20.0f + weapon_bonus + m_baseFeralAP; - break; - case FORM_MOONKIN: - val2 = getLevel() * (mLevelMult + 1.5f) + GetStat(STAT_STRENGTH) * 2.0f - 20.0f + m_baseFeralAP; + val2 = getLevel() * levelBonus + GetStat(STAT_STRENGTH) * 2.0f - 20.0f + weaponBonus + m_baseFeralAP; break; default: val2 = GetStat(STAT_STRENGTH) * 2.0f - 20.0f; |