1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

Do not show bonuses for which unit only has percentage bonuses

This commit is contained in:
Ivan Savenko
2025-06-24 11:19:24 +03:00
parent c00ce0eaae
commit f9c8071537

View File

@@ -900,9 +900,12 @@ void CStackWindow::initBonusesList()
BonusList groupIndepMin = group;
BonusList groupIndepMax = group;
BonusList groupNoMinMax = group;
BonusList groupBaseOnly = group;
groupIndepMin.remove_if([](const Bonus * b) { return b->valType != BonusValueType::INDEPENDENT_MIN; });
groupIndepMax.remove_if([](const Bonus * b) { return b->valType != BonusValueType::INDEPENDENT_MAX; });
groupNoMinMax.remove_if([](const Bonus * b) { return b->valType == BonusValueType::INDEPENDENT_MAX || b->valType == BonusValueType::INDEPENDENT_MIN; });
groupBaseOnly.remove_if([](const Bonus * b) { return b->valType != BonusValueType::ADDITIVE_VALUE || b->valType == BonusValueType::BASE_NUMBER; });
int valIndepMin = groupIndepMin.totalValue();
int valIndepMax = groupIndepMax.totalValue();
@@ -914,8 +917,8 @@ void CStackWindow::initBonusesList()
usedGroup = groupIndepMin; // bonus value was limited due to INDEPENDENT_MIN bonus -> show this bonus
else if (!groupIndepMax.empty() && valNoMinMax != valIndepMax)
usedGroup = groupIndepMax; // bonus value was limited due to INDEPENDENT_MAX bonus -> show this bonus
else
usedGroup = groupNoMinMax; // bonus value is not limited - show first non-independent bonus
else if (!groupBaseOnly.empty())
usedGroup = groupNoMinMax; // bonus value is not limited and has bonuses other than percent to base / percent to all - show first non-independent bonus
// It is possible that empty group was selected. For example, there is only INDEPENDENT effect with value of 0, which does not actually has any effect on this unit
// For example, orb of vulnerability on unit without any resistances