diff options
| author | megamage <none@none> | 2009-01-04 16:17:46 -0600 | 
|---|---|---|
| committer | megamage <none@none> | 2009-01-04 16:17:46 -0600 | 
| commit | eb5a7b02eef6fe13684dfe14faf048bbce1d0f83 (patch) | |
| tree | 395bd3da004c0628956d64335ee0e2c404d4f772 /src/game/Spell.cpp | |
| parent | 820e0214faf4645ef1bc411aa5cc581392db62db (diff) | |
| parent | 15d25f45ae920a4418f3fcb1e6828c923a3aedc1 (diff) | |
*Merge with Trinity 783.
--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 d48294a77a1..20e10384a49 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -938,7 +938,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); @@ -5536,19 +5536,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])              { @@ -5565,7 +5560,18 @@ int32 Spell::CalculateDamageDone(Unit *unit, const uint32 effectMask, float *mul                      SpellDamageHeal(i);                      break;              } + +            if(m_damage > 0 && m_originalCaster) +                m_damage = 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;  }  | 
