From 9142c778dd861eda188ba868433af05038c4e13c 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) --- src/server/game/Spells/SpellInfo.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/server/game/Spells/SpellInfo.cpp') diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index a5df6218e83..1a3b58afa83 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -411,14 +411,16 @@ int32 SpellEffectInfo::CalcValue(Unit const* caster, int32 const* bp, Unit const int32 randomPoints = int32(DieSides); // base amount modification based on spell lvl vs caster lvl - if (caster) + if (caster && basePointsPerLevel != 0.0f) { int32 level = int32(caster->getLevel()); if (level > int32(_spellInfo->MaxLevel) && _spellInfo->MaxLevel > 0) level = int32(_spellInfo->MaxLevel); else if (level < int32(_spellInfo->BaseLevel)) level = int32(_spellInfo->BaseLevel); - level -= int32(_spellInfo->SpellLevel); + + // if base level is greater than spell level, reduce by base level (eg. pilgrims foods) + level -= int32(std::max(_spellInfo->BaseLevel, _spellInfo->SpellLevel)); basePoints += int32(level * basePointsPerLevel); } -- cgit v1.2.3