diff options
author | Ovahlord <dreadkiller@gmx.de> | 2024-06-17 03:05:55 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-06-17 03:05:55 +0200 |
commit | 618c5841baf52febd44f7edea81275a7740d4c1c (patch) | |
tree | c055923d5437273f855b7fe4fce603a9598a09b2 | |
parent | cc4d016a86e131c599eed0b19e8b0e5001e3401a (diff) |
Core/Units: updated spell crit damage bonus percentages for Cataclysm
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 836f40a85ba..ec27408cf5d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1175,6 +1175,8 @@ void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage* damageInfo, int32 dama SpellSchoolMask damageSchoolMask = SpellSchoolMask(damageInfo->schoolMask); + damageInfo->originalDamage = damage; + // Spells with SPELL_ATTR4_IGNORE_DAMAGE_TAKEN_MODIFIERS ignore resilience because their damage is based off another spell's damage. if (!spellInfo->HasAttribute(SPELL_ATTR4_IGNORE_DAMAGE_TAKEN_MODIFIERS)) { @@ -1255,7 +1257,6 @@ void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage* damageInfo, int32 dama damage = 0; damageInfo->damage = damage; - damageInfo->originalDamage = damage; DamageInfo dmgInfo(*damageInfo, SPELL_DIRECT_DAMAGE, BASE_ATTACK, PROC_HIT_NONE); Unit::CalcAbsorbResist(dmgInfo, spell); damageInfo->absorb = dmgInfo.GetAbsorb(); @@ -7102,9 +7103,21 @@ float Unit::SpellCritChanceTaken(Unit const* caster, Spell* spell, AuraEffect co /*static*/ uint32 Unit::SpellCriticalDamageBonus(Unit const* caster, SpellInfo const* spellProto, uint32 damage, Unit* victim) { // Calculate critical bonus - int32 crit_bonus = damage * 2; + int32 crit_bonus = damage; float crit_mod = 0.0f; + switch (spellProto->DmgClass) + { + case SPELL_DAMAGE_CLASS_MELEE: // for melee based spells is 100% + case SPELL_DAMAGE_CLASS_RANGED: + /// @todo write here full calculation for melee/ranged spells + crit_bonus += damage; + break; + default: + crit_bonus += damage / 2; // for spells is 50% + break; + } + if (caster) { crit_mod += (caster->GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_CRIT_DAMAGE_BONUS, spellProto->GetSchoolMask()) - 1.0f) * 100; |