aboutsummaryrefslogtreecommitdiff
path: root/src/game/Spell.cpp
diff options
context:
space:
mode:
authorBlaymoira <none@none>2009-01-04 17:58:31 +0100
committerBlaymoira <none@none>2009-01-04 17:58:31 +0100
commitaafde5059f15c7f8dbab080d79769e3477e5ee59 (patch)
tree6c7ae5d216a5aeebd02a0f59d8a0cac3c2983184 /src/game/Spell.cpp
parentc9f0d4292afa4b468728c456f7ec0f56d8d15c62 (diff)
parenta7cc53d2620512548feb23446f469326110fb859 (diff)
*Merge
--HG-- branch : trunk
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r--src/game/Spell.cpp26
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