Skip to content

Commit 7cb616c

Browse files
committed
ItemManager: Clamp random item level range to valid min/max
We can't go below 1, and in the case of scaling by hero level, we shouldn't exceed the XP table max level.
1 parent b87671d commit 7cb616c

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/ItemManager.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1669,14 +1669,14 @@ ItemID ItemManager::getExtendedItem(ItemID item_id) {
16691669

16701670
// set the item level
16711671
if (option->level_src == ItemRandomizerDef::Option::LEVEL_SRC_BASE) {
1672-
int min = items[item_id]->level + option->level_range_min;
1673-
int max = items[item_id]->level + option->level_range_max;
1672+
int min = std::max(1, items[item_id]->level + option->level_range_min);
1673+
int max = std::max(min, items[item_id]->level + option->level_range_max);
16741674

16751675
items[extended_item]->level = Math::randBetween(min, max);
16761676
}
16771677
else if (option->level_src == ItemRandomizerDef::Option::LEVEL_SRC_HERO) {
1678-
int min = pc->stats.level + option->level_range_min;
1679-
int max = pc->stats.level + option->level_range_max;
1678+
int min = std::max(1, pc->stats.level + option->level_range_min);
1679+
int max = std::min(eset->xp.getMaxLevel(), std::max(min, pc->stats.level + option->level_range_max));
16801680

16811681
items[extended_item]->level = Math::randBetween(min, max);
16821682
}

src/Version.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ FLARE. If not, see http://www.gnu.org/licenses/
3030

3131
#include <SDL.h>
3232

33-
Version VersionInfo::ENGINE(1, 14, 225);
33+
Version VersionInfo::ENGINE(1, 14, 226);
3434
Version VersionInfo::MIN(0, 0, 0);
3535
Version VersionInfo::MAX(USHRT_MAX, USHRT_MAX, USHRT_MAX);
3636

0 commit comments

Comments
 (0)