diff --git a/Source/engine/render/scrollrt.cpp b/Source/engine/render/scrollrt.cpp index 2f674df99c9..271a9a9d58c 100644 --- a/Source/engine/render/scrollrt.cpp +++ b/Source/engine/render/scrollrt.cpp @@ -1688,7 +1688,9 @@ void DrawAndBlit() if (*sgOptions.Gameplay.showHealthValues) DrawFlaskValues(out, { mainPanel.position.x + 134, mainPanel.position.y + 28 }, MyPlayer->_pHitPoints >> 6, MyPlayer->_pMaxHP >> 6); if (*sgOptions.Gameplay.showManaValues) - DrawFlaskValues(out, { mainPanel.position.x + mainPanel.size.width - 138, mainPanel.position.y + 28 }, HasAnyOf(InspectPlayer->_pIFlags, ItemSpecialEffect::NoMana) ? 0 : MyPlayer->_pMana >> 6, HasAnyOf(InspectPlayer->_pIFlags, ItemSpecialEffect::NoMana) ? 0 : MyPlayer->_pMaxMana >> 6); + DrawFlaskValues(out, { mainPanel.position.x + mainPanel.size.width - 138, mainPanel.position.y + 28 }, + (HasAnyOf(InspectPlayer->_pIFlags, ItemSpecialEffect::NoMana) || (MyPlayer->_pMana >> 6) <= 0) ? 0 : MyPlayer->_pMana >> 6, + HasAnyOf(InspectPlayer->_pIFlags, ItemSpecialEffect::NoMana) ? 0 : MyPlayer->_pMaxMana >> 6); DrawCursor(out); diff --git a/Source/items.cpp b/Source/items.cpp index c66085443d1..2e74bacc3b0 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -2629,14 +2629,14 @@ void CalcPlrLifeMana(Player &player, int vitality, int magic, int life, int mana magic = (magic * playerClassAttributes.itmMana) >> 6; mana += (magic << 6); - player._pMaxHP = life + player._pMaxHPBase; + player._pMaxHP = std::clamp(life + player._pMaxHPBase, 1 << 6, 2000 << 6); player._pHitPoints = std::min(life + player._pHPBase, player._pMaxHP); if (&player == MyPlayer && (player._pHitPoints >> 6) <= 0) { SetPlayerHitPoints(player, 0); } - player._pMaxMana = mana + player._pMaxManaBase; + player._pMaxMana = std::clamp(mana + player._pMaxManaBase, 0, 2000 << 6); player._pMana = std::min(mana + player._pManaBase, player._pMaxMana); } diff --git a/Source/panels/charpanel.cpp b/Source/panels/charpanel.cpp index 769d4bc6241..5b49fe9f6ec 100644 --- a/Source/panels/charpanel.cpp +++ b/Source/panels/charpanel.cpp @@ -189,7 +189,7 @@ PanelEntry panelEntries[] = { { N_("Mana"), { LeftColumnLabelX, 312 }, 45, LeftColumnLabelWidth, []() { return StyledText { GetMaxManaColor(), StrCat(HasAnyOf(InspectPlayer->_pIFlags, ItemSpecialEffect::NoMana) ? 0 : InspectPlayer->_pMaxMana >> 6) }; } }, { "", { 135, 312 }, 45, 0, - []() { return StyledText { (InspectPlayer->_pMana != InspectPlayer->_pMaxMana ? UiFlags::ColorRed : GetMaxManaColor()), StrCat(HasAnyOf(InspectPlayer->_pIFlags, ItemSpecialEffect::NoMana) ? 0 : InspectPlayer->_pMana >> 6) }; } }, + []() { return StyledText { (InspectPlayer->_pMana != InspectPlayer->_pMaxMana ? UiFlags::ColorRed : GetMaxManaColor()), StrCat((HasAnyOf(InspectPlayer->_pIFlags, ItemSpecialEffect::NoMana) || (InspectPlayer->_pMana >> 6) <= 0) ? 0 : InspectPlayer->_pMana >> 6) }; } }, { N_("Resist magic"), { RightColumnLabelX, 256 }, 57, RightColumnLabelWidth, []() { return GetResistInfo(InspectPlayer->_pMagResist); } },