Core/Auras: Implemented SPELL_AURA_MOD_PERIODIC_DAMAGE_TAKEN
Port From (https://github.com/TrinityCore/TrinityCore/commit/4ee565b2c85a442069ee7a611378f30f066de873)
This commit is contained in:
@@ -1914,7 +1914,7 @@ namespace Game.Entities
|
|||||||
damage += CalculateDamage(damageInfo.attackType, false, true);
|
damage += CalculateDamage(damageInfo.attackType, false, true);
|
||||||
// Add melee damage bonus
|
// Add melee damage bonus
|
||||||
damage = MeleeDamageBonusDone(damageInfo.target, damage, damageInfo.attackType);
|
damage = MeleeDamageBonusDone(damageInfo.target, damage, damageInfo.attackType);
|
||||||
damage = damageInfo.target.MeleeDamageBonusTaken(this, damage, damageInfo.attackType);
|
damage = damageInfo.target.MeleeDamageBonusTaken(this, damage, damageInfo.attackType, DamageEffectType.Direct);
|
||||||
|
|
||||||
// Script Hook For CalculateMeleeDamage -- Allow scripts to change the Damage pre class mitigation calculations
|
// Script Hook For CalculateMeleeDamage -- Allow scripts to change the Damage pre class mitigation calculations
|
||||||
Global.ScriptMgr.ModifyMeleeDamage(damageInfo.target, damageInfo.attacker, ref damage);
|
Global.ScriptMgr.ModifyMeleeDamage(damageInfo.target, damageInfo.attacker, ref damage);
|
||||||
@@ -2876,7 +2876,7 @@ namespace Game.Entities
|
|||||||
// bonus result can be negative
|
// bonus result can be negative
|
||||||
return (uint)Math.Max(tmpDamage, 0.0f);
|
return (uint)Math.Max(tmpDamage, 0.0f);
|
||||||
}
|
}
|
||||||
public uint MeleeDamageBonusTaken(Unit attacker, uint pdamage, WeaponAttackType attType, SpellInfo spellProto = null)
|
public uint MeleeDamageBonusTaken(Unit attacker, uint pdamage, WeaponAttackType attType, DamageEffectType damagetype, SpellInfo spellProto = null)
|
||||||
{
|
{
|
||||||
if (pdamage == 0)
|
if (pdamage == 0)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -2932,6 +2932,9 @@ namespace Game.Entities
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (damagetype == DamageEffectType.DOT)
|
||||||
|
TakenTotalMod *= GetTotalAuraMultiplier(AuraType.ModPeriodicDamageTaken, aurEff => (aurEff.GetMiscValue() & (uint)spellProto.GetSchoolMask()) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
AuraEffect cheatDeath = GetAuraEffect(45182, 0);
|
AuraEffect cheatDeath = GetAuraEffect(45182, 0);
|
||||||
|
|||||||
@@ -306,6 +306,9 @@ namespace Game.Entities
|
|||||||
return aurEff.GetCasterGUID() == caster.GetGUID() && aurEff.IsAffectingSpell(spellProto);
|
return aurEff.GetCasterGUID() == caster.GetGUID() && aurEff.IsAffectingSpell(spellProto);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (damagetype == DamageEffectType.DOT)
|
||||||
|
TakenTotalMod *= GetTotalAuraMultiplier(AuraType.ModPeriodicDamageTaken, aurEff => (aurEff.GetMiscValue() & (uint)spellProto.GetSchoolMask()) != 0);
|
||||||
|
|
||||||
int TakenAdvertisedBenefit = SpellBaseDamageBonusTaken(spellProto.GetSchoolMask());
|
int TakenAdvertisedBenefit = SpellBaseDamageBonusTaken(spellProto.GetSchoolMask());
|
||||||
|
|
||||||
// Check for table values
|
// Check for table values
|
||||||
|
|||||||
@@ -2664,7 +2664,7 @@ namespace Game.Spells
|
|||||||
// Add melee damage bonuses (also check for negative)
|
// Add melee damage bonuses (also check for negative)
|
||||||
uint damage = m_caster.MeleeDamageBonusDone(unitTarget, eff_damage, m_attackType, m_spellInfo);
|
uint damage = m_caster.MeleeDamageBonusDone(unitTarget, eff_damage, m_attackType, m_spellInfo);
|
||||||
|
|
||||||
m_damage += (int)unitTarget.MeleeDamageBonusTaken(m_caster, damage, m_attackType, m_spellInfo);
|
m_damage += (int)unitTarget.MeleeDamageBonusTaken(m_caster, damage, m_attackType, DamageEffectType.SpellDirect, m_spellInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
[SpellEffectHandler(SpellEffectName.Threat)]
|
[SpellEffectHandler(SpellEffectName.Threat)]
|
||||||
|
|||||||
Reference in New Issue
Block a user