[9874] Fix auras with custom periodic damage not entering spell/melee bonus damage done methods

Signed-off-by: Laise <fenrisse@gmail.com>
This commit is contained in:
reeshack 2010-05-11 22:19:52 +03:00 committed by Laise
parent aa8a36afd4
commit 789f2f8167
2 changed files with 4 additions and 32 deletions

View file

@ -4829,11 +4829,8 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
{ {
// Pounce Bleed // Pounce Bleed
if ( m_spellProto->SpellIconID == 147 && m_spellProto->SpellVisual[0] == 0 ) if ( m_spellProto->SpellIconID == 147 && m_spellProto->SpellVisual[0] == 0 )
{
// $AP*0.18/6 bonus per tick // $AP*0.18/6 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 3 / 100); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 3 / 100);
return;
}
break; break;
} }
case SPELLFAMILY_WARRIOR: case SPELLFAMILY_WARRIOR:
@ -4851,7 +4848,6 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
if (m_spellProto->CalculateSimpleValue(EFFECT_INDEX_1) !=0 && if (m_spellProto->CalculateSimpleValue(EFFECT_INDEX_1) !=0 &&
m_target->GetHealth() > m_target->GetMaxHealth() * m_spellProto->CalculateSimpleValue(EFFECT_INDEX_1) / 100) m_target->GetHealth() > m_target->GetMaxHealth() * m_spellProto->CalculateSimpleValue(EFFECT_INDEX_1) / 100)
m_modifier.m_amount += m_modifier.m_amount * m_spellProto->CalculateSimpleValue(EFFECT_INDEX_2) / 100; m_modifier.m_amount += m_modifier.m_amount * m_spellProto->CalculateSimpleValue(EFFECT_INDEX_2) / 100;
return;
} }
break; break;
} }
@ -4859,24 +4855,18 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
{ {
// Rake // Rake
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000001000) && m_spellProto->Effect[EFFECT_INDEX_2] == SPELL_EFFECT_ADD_COMBO_POINTS) if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000001000) && m_spellProto->Effect[EFFECT_INDEX_2] == SPELL_EFFECT_ADD_COMBO_POINTS)
{
// $AP*0.18/3 bonus per tick // $AP*0.18/3 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 6 / 100); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 6 / 100);
return;
}
// Lacerate // Lacerate
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x000000010000000000)) if (m_spellProto->SpellFamilyFlags & UI64LIT(0x000000010000000000))
{
// $AP*0.05/5 bonus per tick // $AP*0.05/5 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) / 100); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) / 100);
return;
}
// Rip // Rip
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x000000000000800000)) if (m_spellProto->SpellFamilyFlags & UI64LIT(0x000000000000800000))
{ {
// 0.01*$AP*cp // 0.01*$AP*cp
if (caster->GetTypeId() != TYPEID_PLAYER) if (caster->GetTypeId() != TYPEID_PLAYER)
return; break;
uint8 cp = ((Player*)caster)->GetComboPoints(); uint8 cp = ((Player*)caster)->GetComboPoints();
@ -4891,15 +4881,11 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
} }
} }
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * cp / 100); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * cp / 100);
return;
} }
// Lock Jaw // Lock Jaw
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x1000000000000000)) if (m_spellProto->SpellFamilyFlags & UI64LIT(0x1000000000000000))
{
// 0.15*$AP // 0.15*$AP
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 15 / 100); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 15 / 100);
return;
}
break; break;
} }
case SPELLFAMILY_ROGUE: case SPELLFAMILY_ROGUE:
@ -4908,7 +4894,7 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x000000000000100000)) if (m_spellProto->SpellFamilyFlags & UI64LIT(0x000000000000100000))
{ {
if (caster->GetTypeId() != TYPEID_PLAYER) if (caster->GetTypeId() != TYPEID_PLAYER)
return; break;
//1 point : ${($m1+$b1*1+0.015*$AP)*4} damage over 8 secs //1 point : ${($m1+$b1*1+0.015*$AP)*4} damage over 8 secs
//2 points: ${($m1+$b1*2+0.024*$AP)*5} damage over 10 secs //2 points: ${($m1+$b1*2+0.024*$AP)*5} damage over 10 secs
//3 points: ${($m1+$b1*3+0.03*$AP)*6} damage over 12 secs //3 points: ${($m1+$b1*3+0.03*$AP)*6} damage over 12 secs
@ -4918,40 +4904,27 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
uint8 cp = ((Player*)caster)->GetComboPoints(); uint8 cp = ((Player*)caster)->GetComboPoints();
if (cp > 5) cp = 5; if (cp > 5) cp = 5;
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * AP_per_combo[cp]); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * AP_per_combo[cp]);
return;
} }
// Garrote // Garrote
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x000000000000000100)) if (m_spellProto->SpellFamilyFlags & UI64LIT(0x000000000000000100))
{
// $AP*0.07 bonus per tick // $AP*0.07 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 7 / 100); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 7 / 100);
return;
}
// Deadly Poison // Deadly Poison
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000010000)) if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000010000))
{
// 0.12*$AP / 4 * amount of stack // 0.12*$AP / 4 * amount of stack
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 3 * GetStackAmount() / 100); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 3 * GetStackAmount() / 100);
return;
}
break; break;
} }
case SPELLFAMILY_HUNTER: case SPELLFAMILY_HUNTER:
{ {
// Serpent Sting // Serpent Sting
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000004000)) if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000004000))
{
// $RAP*0.2/5 bonus per tick // $RAP*0.2/5 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.2 / 5); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.2 / 5);
return;
}
// Immolation Trap // Immolation Trap
if ((m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000004)) && m_spellProto->SpellIconID == 678) if ((m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000004)) && m_spellProto->SpellIconID == 678)
{
// $RAP*0.1/5 bonus per tick // $RAP*0.1/5 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 10 / 500); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 10 / 500);
return;
}
break; break;
} }
case SPELLFAMILY_PALADIN: case SPELLFAMILY_PALADIN:
@ -4965,7 +4938,6 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
if (holy < 0) if (holy < 0)
holy = 0; holy = 0;
m_modifier.m_amount += int32(GetStackAmount()) * (int32(ap * 0.025f) + int32(holy * 13 / 1000)); m_modifier.m_amount += int32(GetStackAmount()) * (int32(ap * 0.025f) + int32(holy * 13 / 1000));
return;
} }
break; break;
} }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "9873" #define REVISION_NR "9874"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__