diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2018-02-11 22:52:28 -0300 |
|---|---|---|
| committer | ariel- <ariel-@users.noreply.github.com> | 2018-02-12 00:21:26 -0300 |
| commit | 546a605bd0cd0e828def81e26697f1c116a3f1b7 (patch) | |
| tree | 92a8b481bd8e2615c54ea6242fd611e0dd42f3e9 /src/server/game/Spells/Spell.cpp | |
| parent | 52873a7072ceb1f88d9caeefdda6084e6bb1d4af (diff) | |
Core/Spells: implement SPELLVALUE_CRIT_CHANCE and SPELL_ATTR4_INHERIT_CRIT_FROM_AURA
Closes #18813
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 8c186064fff..dcf0bc5b1dc 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -522,6 +522,7 @@ SpellValue::SpellValue(SpellInfo const* proto) MaxAffectedTargets = proto->MaxAffectedTargets; RadiusMod = 1.0f; AuraStackAmount = 1; + CriticalChance = 0.0f; } class TC_GAME_API SpellEvent : public BasicEvent @@ -7316,7 +7317,9 @@ void Spell::DoAllEffectOnLaunchTarget(TargetInfo& targetInfo, float* multiplier) } } - float critChance = m_caster->SpellCritChanceDone(m_spellInfo, m_spellSchoolMask, m_attackType); + float critChance = m_spellValue->CriticalChance; + if (!critChance) + critChance = m_caster->SpellCritChanceDone(m_spellInfo, m_spellSchoolMask, m_attackType); targetInfo.crit = roll_chance_f(unit->SpellCritChanceTaken(m_caster, m_spellInfo, m_spellSchoolMask, critChance, m_attackType)); } @@ -7404,6 +7407,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; } } |
