aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp35
1 files changed, 14 insertions, 21 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 47d187f6505..ec274b41ba8 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -784,35 +784,28 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
if (!unitTarget)
return;
- float damage;
- // DW should benefit of attack power, damage percent mods etc.
- // TODO: check if using offhand damage is correct and if it should be divided by 2
- if (m_caster->haveOffhandWeapon() && m_caster->getAttackTimer(BASE_ATTACK) > m_caster->getAttackTimer(OFF_ATTACK))
- damage = (m_caster->GetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE) + m_caster->GetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE))/2;
- else
- damage = (m_caster->GetFloatValue(UNIT_FIELD_MINDAMAGE) + m_caster->GetFloatValue(UNIT_FIELD_MAXDAMAGE))/2;
+ // apply damage percent mods
+ damage = m_caster->SpellDamageBonus(unitTarget, m_spellInfo, damage, SPELL_DIRECT_DAMAGE);
switch (m_spellInfo->Id)
{
- case 12162: damage *= 0.16f; break; // Rank 1
- case 12850: damage *= 0.32f; break; // Rank 2
- case 12868: damage *= 0.48f; break; // Rank 3
+ case 12162: ApplyPctN(damage, 16); break; // Rank 1
+ case 12850: ApplyPctN(damage, 32); break; // Rank 2
+ case 12868: ApplyPctN(damage, 48); break; // Rank 3
default:
sLog->outError("Spell::EffectDummy: Spell %u not handled in DW", m_spellInfo->Id);
return;
- };
-
- // get remaining damage of old Deep Wound aura
- AuraEffect* deepWound = unitTarget->GetAuraEffect(12721, 0, m_caster->GetGUID());
- if (deepWound)
- {
- int32 remainingTicks = deepWound->GetBase()->GetDuration() / deepWound->GetAmplitude();
- damage += remainingTicks * deepWound->GetAmount();
}
- // 1 tick/sec * 6 sec = 6 ticks
- int32 deepWoundsDotBasePoints0 = int32(damage / 6);
- m_caster->CastCustomSpell(unitTarget, 12721, &deepWoundsDotBasePoints0, NULL, NULL, true, NULL);
+ SpellEntry const* spellInfo = sSpellStore.LookupEntry(12721);
+ uint32 ticks = GetSpellDuration(spellInfo) / spellInfo->EffectAmplitude[0];
+
+ // Add remaining ticks to damage done
+ if (AuraEffect const* aurEff = unitTarget->GetAuraEffect(12721, EFFECT_0, m_caster->GetGUID()))
+ damage += aurEff->GetAmount() * (ticks - aurEff->GetTickNumber());
+
+ damage = damage / ticks;
+ m_caster->CastCustomSpell(unitTarget, 12721, &damage, NULL, NULL, true);
return;
}
case 13567: // Dummy Trigger