Skip to content

Commit b10b673

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 7c4aec5 commit b10b673

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
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
}

0 commit comments

Comments
 (0)