diff options
| author | megamage <none@none> | 2009-01-04 10:42:53 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2009-01-04 10:42:53 -0600 |
| commit | 73e4623119784e48f87898c725d0876163eab0f0 (patch) | |
| tree | 6ac5ac5241860f20046af67320a92a07d7e619a5 /src/game/Spell.cpp | |
| parent | e19482bcb4a0867ca729779ab680fd10b849d797 (diff) | |
*Calculate spell damage bonus when spell is casted rather than when spell hits target.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Spell.cpp')
| -rw-r--r-- | src/game/Spell.cpp | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 96ce55d5540..49ee1d2849f 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1012,7 +1012,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target) SpellNonMeleeDamage damageInfo(caster, unitTarget, m_spellInfo->Id, m_spellSchoolMask); // Add bonuses and fill damageInfo struct - caster->CalculateSpellDamage(&damageInfo, m_damage, m_spellInfo); + caster->CalculateSpellDamageTaken(&damageInfo, m_damage, m_spellInfo); // Send log damage message to client caster->SendSpellNonMeleeDamageLog(&damageInfo); @@ -5367,19 +5367,14 @@ void Spell::CalculateDamageDoneForAllTargets() int32 Spell::CalculateDamageDone(Unit *unit, const uint32 effectMask, float *multiplier) { - m_damage = 0; + int32 damageDone = 0; unitTarget = unit; for(uint32 i = 0; i < 3; ++i) { if (effectMask & (1<<i)) { - if(m_applyMultiplierMask & (1 << i)) - { - damage = CalculateDamage(i, NULL) * m_damageMultipliers[i]; - m_damageMultipliers[i] *= multiplier[i]; - } - else - damage = CalculateDamage(i, NULL); + m_damage = 0; + damage = CalculateDamage(i, NULL); switch(m_spellInfo->Effect[i]) { @@ -5396,7 +5391,18 @@ int32 Spell::CalculateDamageDone(Unit *unit, const uint32 effectMask, float *mul SpellDamageHeal(i); break; } + + if(m_damage > 0 && m_originalCaster) + m_originalCaster->SpellDamageBonus(unit, m_spellInfo, m_damage, SPELL_DIRECT_DAMAGE); + if(m_applyMultiplierMask & (1 << i)) + { + m_damage *= m_damageMultipliers[i]; + m_damageMultipliers[i] *= multiplier[i]; + } + + damageDone += m_damage; } } - return m_damage; + + return damageDone; }
\ No newline at end of file |
