From 8df577ebfed34131184d2fd08b131b29b96d4fd3 Mon Sep 17 00:00:00 2001 From: xinef1 Date: Sun, 19 Feb 2017 06:30:04 +0100 Subject: Corrected points per level calculation for some spells (#19105) (cherry picked from commit 9142c778dd861eda188ba868433af05038c4e13c) --- src/server/game/Spells/SpellInfo.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') 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; -- cgit v1.2.3