mirror of
https://github.com/mangosfour/server.git
synced 2025-12-21 01:37:05 +00:00
[8635] Rewrote bonus damage claculation
* calculation depends on the damageClass now ->SPELL_DAMAGE_CLASS_RANGED & SPELL_DAMAGE_CLASS_MELEE use MeleeDamageBonus() ->SPELL_DAMAGE_CLASS_MAGIC & SPELL_DAMAGE_CLASS_RANGED use SpellDamageBonus() * changes/improvements in MeleeDamageBonus: -> improved criterions to apply bonuses -> implemented scaling of FLAT damage Bonus for non weapon damage based spells -> support of DOT's -> added pet's bonus damage for non weapon based spells * general cleanup in CalculateSpellDamage() and MeleeDamageBonus() * implemented global helper functions GetWeaponAttackType() and GetAuraTicks() in SpellMgr Signed-off-by: ApoC <apoc@nymfe.net>
This commit is contained in:
parent
29fde5f671
commit
c47cf7bd61
9 changed files with 414 additions and 290 deletions
|
|
@ -6281,18 +6281,26 @@ void Aura::PeriodicTick()
|
|||
{
|
||||
pdamage = amount;
|
||||
|
||||
// SpellDamageBonus for magic spells
|
||||
if(GetSpellProto()->DmgClass == SPELL_DAMAGE_CLASS_NONE || GetSpellProto()->DmgClass == SPELL_DAMAGE_CLASS_MAGIC)
|
||||
pdamage = pCaster->SpellDamageBonus(m_target, GetSpellProto(), pdamage, DOT, GetStackAmount());
|
||||
// MeleeDamagebonus for weapon based spells
|
||||
else
|
||||
{
|
||||
WeaponAttackType attackType = GetWeaponAttackType(GetSpellProto());
|
||||
pdamage = pCaster->MeleeDamageBonus(m_target, pdamage, attackType, GetSpellProto(), DOT, GetStackAmount());
|
||||
}
|
||||
|
||||
// Calculate armor mitigation if it is a physical spell
|
||||
// But not for bleed mechanic spells
|
||||
if ( GetSpellSchoolMask(GetSpellProto()) & SPELL_SCHOOL_MASK_NORMAL &&
|
||||
GetEffectMechanic(GetSpellProto(), m_effIndex) != MECHANIC_BLEED)
|
||||
if (GetSpellSchoolMask(GetSpellProto()) & SPELL_SCHOOL_MASK_NORMAL &&
|
||||
GetEffectMechanic(GetSpellProto(), m_effIndex) != MECHANIC_BLEED)
|
||||
{
|
||||
uint32 pdamageReductedArmor = pCaster->CalcArmorReducedDamage(m_target, pdamage);
|
||||
cleanDamage.damage += pdamage - pdamageReductedArmor;
|
||||
pdamage = pdamageReductedArmor;
|
||||
}
|
||||
|
||||
pdamage = pCaster->SpellDamageBonus(m_target, GetSpellProto(), pdamage, DOT, GetStackAmount());
|
||||
|
||||
// Curse of Agony damage-per-tick calculation
|
||||
if (GetSpellProto()->SpellFamilyName==SPELLFAMILY_WARLOCK && (GetSpellProto()->SpellFamilyFlags & UI64LIT(0x0000000000000400)) && GetSpellProto()->SpellIconID==544)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue