diff options
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index ff0d7043e8b..f400e7f2d79 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2714,7 +2714,7 @@ void Spell::EffectTaunt(SpellEffIndex /*effIndex*/) mgr.MatchUnitThreatToHighestThreat(m_caster); } -void Spell::EffectWeaponDmg(SpellEffIndex effIndex) +void Spell::EffectWeaponDmg(SpellEffIndex /*effIndex*/) { if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH_TARGET) return; @@ -2725,9 +2725,8 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex) // multiple weapon dmg effect workaround // execute only the last weapon damage // and handle all effects at once - for (uint8 index = effIndex + 1; index < MAX_SPELL_EFFECTS; ++index) + for (SpellEffectInfo const* effect : m_spellInfo->GetEffects()) { - SpellEffectInfo const* effect = m_spellInfo->GetEffect(index); if (!effect) continue; switch (effect->Effect) @@ -2889,6 +2888,7 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex) break; case SPELL_EFFECT_WEAPON_PERCENT_DAMAGE: weaponDamage = int32(weaponDamage * weaponDamagePercentMod); + break; default: break; // not weapon damage effect, just skip } @@ -2898,12 +2898,11 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex) weaponDamage = int32(weaponDamage * totalDamagePercentMod); // prevent negative damage - uint32 eff_damage(std::max(weaponDamage, 0)); + weaponDamage = std::max(weaponDamage, 0); // Add melee damage bonuses (also check for negative) - uint32 damageBonusDone = m_caster->MeleeDamageBonusDone(unitTarget, eff_damage, m_attackType, SPELL_DIRECT_DAMAGE, m_spellInfo); - - m_damage += unitTarget->MeleeDamageBonusTaken(m_caster, damageBonusDone, m_attackType, SPELL_DIRECT_DAMAGE, m_spellInfo); + weaponDamage = m_caster->MeleeDamageBonusDone(unitTarget, weaponDamage, m_attackType, SPELL_DIRECT_DAMAGE, m_spellInfo); + m_damage += unitTarget->MeleeDamageBonusTaken(m_caster, weaponDamage, m_attackType, SPELL_DIRECT_DAMAGE, m_spellInfo); } void Spell::EffectThreat(SpellEffIndex /*effIndex*/) |