From f9c8071537953ec8b2f6f29a1782596f1c912467 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 24 Jun 2025 11:19:24 +0300 Subject: [PATCH] Do not show bonuses for which unit only has percentage bonuses --- client/windows/CCreatureWindow.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/client/windows/CCreatureWindow.cpp b/client/windows/CCreatureWindow.cpp index ebc0e7f3e..8834e1720 100644 --- a/client/windows/CCreatureWindow.cpp +++ b/client/windows/CCreatureWindow.cpp @@ -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