aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxinef1 <w.szyszko2@gmail.com>2017-02-19 06:30:04 +0100
committerfunjoker <funjoker109@gmail.com>2020-04-27 12:25:52 +0200
commit8df577ebfed34131184d2fd08b131b29b96d4fd3 (patch)
treecde0a3403dc7de7bd9b7eb6893ffc8a6b181deb8 /src
parent6f7ff9a3efd10cd4f776a67540109e7bb774f1c5 (diff)
Corrected points per level calculation for some spells (#19105)
(cherry picked from commit 9142c778dd861eda188ba868433af05038c4e13c)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellInfo.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 12eb37b6861..3b27c060639 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -510,14 +510,16 @@ int32 SpellEffectInfo::CalcValue(Unit const* caster /*= nullptr*/, int32 const*
if (Scaling.ResourceCoefficient)
comboDamage = Scaling.ResourceCoefficient * value;
}
- else
+ else if (GetScalingExpectedStat() == ExpectedStatType::None)
{
- if (GetScalingExpectedStat() == ExpectedStatType::None)
+ if (caster && basePointsPerLevel != 0.0f)
{
- int32 level = caster ? int32(caster->getLevel()) : 0;
+ int32 level = int32(caster->getLevel());
if (level > int32(_spellInfo->MaxLevel) && _spellInfo->MaxLevel > 0)
level = int32(_spellInfo->MaxLevel);
- level -= int32(_spellInfo->BaseLevel);
+
+ // if base level is greater than spell level, reduce by base level (eg. pilgrims foods)
+ level -= int32(std::max(_spellInfo->BaseLevel, _spellInfo->SpellLevel));
if (level < 0)
level = 0;
value += level * basePointsPerLevel;