diff options
author | Ovahlord <dreadkiller@gmx.de> | 2024-05-31 22:00:37 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-05-31 22:00:37 +0200 |
commit | b23ebaa00ca44e11819ae9bdcf54525bf3ffd161 (patch) | |
tree | 458b49b60a155906e391393ce7306129bd823eda /src/server/game/Spells/SpellInfo.cpp | |
parent | 98f5c121d2047b06164fc85b5b7eb447272f12d7 (diff) |
Core/Spells: relocated DieSides handling - fall back to DieSides when Variance is not provided
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 42137fd2428..c0a7dd72d12 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -504,7 +504,7 @@ int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 if (caster) casterUnit = caster->ToUnit(); - if (Scaling.Variance) + if (Scaling.Variance != 0.0f) { float delta = fabs(Scaling.Variance * 0.5f); double valueVariance = frand(-delta, delta); @@ -513,6 +513,17 @@ int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 if (variance) *variance = valueVariance; } + else + { + if (DieSides) + { + // roll in a range <1;EffectDieSides> as of patch 3.3.3 + if (DieSides == 1) + value += DieSides; + else + value += (DieSides >= 1) ? irand(1, DieSides) : irand(DieSides, 1); + } + } // base amount modification based on spell lvl vs caster lvl if (Scaling.Coefficient != 0.0f) @@ -534,15 +545,6 @@ int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 level = 0; value += level * basePointsPerLevel; } - - if (DieSides) - { - // roll in a range <1;EffectDieSides> as of patch 3.3.3 - if (DieSides == 1) - value += DieSides; - else - value += (DieSides >= 1) ? irand(1, DieSides) : irand(DieSides, 1); - } } // random damage |