diff --git a/Source/Game/Entities/Unit/Unit.Combat.cs b/Source/Game/Entities/Unit/Unit.Combat.cs index df07c942a..c05938577 100644 --- a/Source/Game/Entities/Unit/Unit.Combat.cs +++ b/Source/Game/Entities/Unit/Unit.Combat.cs @@ -1914,7 +1914,7 @@ namespace Game.Entities damage += CalculateDamage(damageInfo.attackType, false, true); // Add melee damage bonus 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 Global.ScriptMgr.ModifyMeleeDamage(damageInfo.target, damageInfo.attacker, ref damage); @@ -2876,7 +2876,7 @@ namespace Game.Entities // bonus result can be negative 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) return 0; @@ -2932,6 +2932,9 @@ namespace Game.Entities return false; }); } + + if (damagetype == DamageEffectType.DOT) + TakenTotalMod *= GetTotalAuraMultiplier(AuraType.ModPeriodicDamageTaken, aurEff => (aurEff.GetMiscValue() & (uint)spellProto.GetSchoolMask()) != 0); } AuraEffect cheatDeath = GetAuraEffect(45182, 0); diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index f724fc315..8c04cb53f 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -306,6 +306,9 @@ namespace Game.Entities 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()); // Check for table values diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index 56d1831ff..bac4af283 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -2664,7 +2664,7 @@ namespace Game.Spells // Add melee damage bonuses (also check for negative) 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)]