aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellInfo.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-12-14 00:24:24 +0100
committerShauren <shauren.trinity@gmail.com>2022-12-14 00:24:24 +0100
commit2d205506bfd3a2bb253db73b121fd147928811ba (patch)
tree27776a348e064a17dbf9abc821355010bedd514b /src/server/game/Spells/SpellInfo.cpp
parente98e1283ea0034baf6be9aa2ffb386eb5582801b (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.cpp10
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;