aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-02-21 15:20:18 +0100
committerShauren <shauren.trinity@gmail.com>2021-02-21 15:20:18 +0100
commit4ee565b2c85a442069ee7a611378f30f066de873 (patch)
treeb8f0aed14e77def0f8f1cdec04fc07cc6b364fe0 /src/server/game/Entities/Unit
parentbd7c714c97beb04eb815b0aa175badfb6933ccf1 (diff)
Core/Auras: Implemented SPELL_AURA_MOD_PERIODIC_DAMAGE_TAKEN
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index c01b389aa85..746811fec5f 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -1293,7 +1293,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam
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, DIRECT_DAMAGE);
// Script Hook For CalculateMeleeDamage -- Allow scripts to change the Damage pre class mitigation calculations
sScriptMgr->ModifyMeleeDamage(damageInfo->target, damageInfo->attacker, damage);
@@ -6857,6 +6857,14 @@ uint32 Unit::SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, ui
return aurEff->GetCasterGUID() == caster->GetGUID() && aurEff->IsAffectingSpell(spellProto);
});
+ if (damagetype == DOT)
+ {
+ TakenTotalMod *= GetTotalAuraMultiplier(SPELL_AURA_MOD_PERIODIC_DAMAGE_TAKEN, [spellProto](AuraEffect const* aurEff) -> bool
+ {
+ return aurEff->GetMiscValue() & spellProto->GetSchoolMask();
+ });
+ }
+
int32 TakenAdvertisedBenefit = SpellBaseDamageBonusTaken(spellProto->GetSchoolMask());
// Check for table values
@@ -7654,7 +7662,7 @@ uint32 Unit::MeleeDamageBonusDone(Unit* victim, uint32 pdamage, WeaponAttackType
return uint32(std::max(tmpDamage, 0.0f));
}
-uint32 Unit::MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackType attType, SpellInfo const* spellProto)
+uint32 Unit::MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackType attType, DamageEffectType damagetype, SpellInfo const* spellProto)
{
if (pdamage == 0)
return 0;
@@ -7710,6 +7718,14 @@ uint32 Unit::MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackT
return false;
});
}
+
+ if (damagetype == DOT)
+ {
+ TakenTotalMod *= GetTotalAuraMultiplier(SPELL_AURA_MOD_PERIODIC_DAMAGE_TAKEN, [spellProto](AuraEffect const* aurEff) -> bool
+ {
+ return aurEff->GetMiscValue() & spellProto->GetSchoolMask();
+ });
+ }
}
if (AuraEffect const* cheatDeath = GetAuraEffect(45182, EFFECT_0))