diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-12-14 00:24:24 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-12-14 00:24:24 +0100 |
| commit | 2d205506bfd3a2bb253db73b121fd147928811ba (patch) | |
| tree | 27776a348e064a17dbf9abc821355010bedd514b /src/server/game/Spells/SpellInfo.cpp | |
| parent | e98e1283ea0034baf6be9aa2ffb386eb5582801b (diff) | |
Core/Spells: Fixed spell effect value truncation when value is a large integer
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index fa6221427bb..910f9e3da5c 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -479,11 +479,11 @@ bool SpellEffectInfo::IsUnitOwnedAuraEffect() const int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 const* bp /*= nullptr*/, Unit const* target /*= nullptr*/, float* variance /*= nullptr*/, uint32 castItemId /*= 0*/, int32 itemLevel /*= -1*/) const { - float basePointsPerLevel = RealPointsPerLevel; + double basePointsPerLevel = RealPointsPerLevel; // TODO: this needs to be a float, not rounded int32 basePoints = CalcBaseValue(caster, target, castItemId, itemLevel); - float value = bp ? *bp : basePoints; - float comboDamage = PointsPerResource; + double value = bp ? *bp : basePoints; + double comboDamage = PointsPerResource; Unit const* casterUnit = nullptr; if (caster) @@ -492,8 +492,8 @@ int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 if (Scaling.Variance) { float delta = fabs(Scaling.Variance * 0.5f); - float valueVariance = frand(-delta, delta); - value += basePoints * valueVariance; + double valueVariance = frand(-delta, delta); + value += double(basePoints) * valueVariance; if (variance) *variance = valueVariance; |
