diff options
author | ariel- <ariel-@users.noreply.github.com> | 2018-02-11 22:52:28 -0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-06-19 23:33:44 +0200 |
commit | 13be704cb4619ef585ae0043580e2534f62e64aa (patch) | |
tree | d249b45c0eb51cb57590ca742f3a3dd57d979e9e /src/server/game/Spells/Spell.cpp | |
parent | 85e5509e91a1370b16851d375a26121797870921 (diff) |
Core/Spells: implement SPELLVALUE_CRIT_CHANCE
(cherry picked from commit 546a605bd0cd0e828def81e26697f1c116a3f1b7)
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 501d7acbb04..59d67d12069 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -503,6 +503,7 @@ SpellValue::SpellValue(SpellInfo const* proto, Unit const* caster) MaxAffectedTargets = proto->MaxAffectedTargets; RadiusMod = 1.0f; AuraStackAmount = 1; + CriticalChance = 0.0f; DurationMul = 1; } @@ -7485,7 +7486,9 @@ void Spell::DoAllEffectOnLaunchTarget(TargetInfo& targetInfo, float* multiplier) } } - float critChance = m_caster->SpellCritChanceDone(this, nullptr, m_spellSchoolMask, m_attackType); + float critChance = m_spellValue->CriticalChance; + if (!critChance) + critChance = m_caster->SpellCritChanceDone(this, nullptr, m_spellSchoolMask, m_attackType); targetInfo.crit = roll_chance_f(unit->SpellCritChanceTaken(m_caster, this, nullptr, m_spellSchoolMask, critChance, m_attackType)); } @@ -7578,6 +7581,9 @@ void Spell::SetSpellValue(SpellValueMod mod, int32 value) case SPELLVALUE_AURA_STACK: m_spellValue->AuraStackAmount = uint8(value); break; + case SPELLVALUE_CRIT_CHANCE: + m_spellValue->CriticalChance = value / 100.0f; // @todo ugly /100 remove when basepoints are double + break; case SPELLVALUE_DURATION_PCT: m_spellValue->DurationMul = float(value) / 100.0f; break; |