diff --git a/Source/engine/render/scrollrt.cpp b/Source/engine/render/scrollrt.cpp index c12cc0e3e..3b1bbeb9f 100644 --- a/Source/engine/render/scrollrt.cpp +++ b/Source/engine/render/scrollrt.cpp @@ -1791,7 +1791,7 @@ void DrawAndBlit() DrawFlaskValues(out, { mainPanel.position.x + 134, mainPanel.position.y + 28 }, MyPlayer->_pHitPoints >> 6, MyPlayer->_pMaxHP >> 6); if (*GetOptions().Gameplay.showManaValues) 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) || MyPlayer->hasNoMana()) ? 0 : MyPlayer->_pMana >> 6, HasAnyOf(InspectPlayer->_pIFlags, ItemSpecialEffect::NoMana) ? 0 : MyPlayer->_pMaxMana >> 6); if (*GetOptions().Gameplay.floatingInfoBox) DrawFloatingInfoBox(out); diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 788bf4947..2891a7a77 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -4207,7 +4207,7 @@ static void DeleteMissiles() void ProcessManaShield() { Player &myPlayer = *MyPlayer; - if (myPlayer.pManaShield && myPlayer._pMana <= 0) { + if (myPlayer.pManaShield && myPlayer.hasNoMana()) { myPlayer.pManaShield = false; NetSendCmd(true, CMD_REMSHIELD); } diff --git a/Source/monster.cpp b/Source/monster.cpp index c71fcfdbf..f1ea88430 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -4008,7 +4008,7 @@ void PrepDoEnding() if (gbIsMultiplayer) { if (player.hasNoLife()) player._pHitPoints = 64; - if (player._pMana >> 6 == 0) + if (player.hasNoMana()) player._pMana = 64; } } diff --git a/Source/objects.cpp b/Source/objects.cpp index 7f1012c88..3b4d09e59 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -2533,7 +2533,7 @@ void OperateShrineCostOfWisdom(Player &player, SpellID spellId, diablo_message m player._pMana -= t; player._pMaxMana -= t; player._pMaxManaBase -= t; - if (player._pMana >> 6 <= 0) { + if (player.hasNoMana()) { player._pMana = v1; player._pManaBase = 0; } diff --git a/Source/panels/charpanel.cpp b/Source/panels/charpanel.cpp index 98f1845c5..30ee9c222 100644 --- a/Source/panels/charpanel.cpp +++ b/Source/panels/charpanel.cpp @@ -188,7 +188,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) || (InspectPlayer->_pMana >> 6) <= 0) ? 0 : InspectPlayer->_pMana >> 6) }; } }, + []() { return StyledText { (InspectPlayer->_pMana != InspectPlayer->_pMaxMana ? UiFlags::ColorRed : GetMaxManaColor()), StrCat((HasAnyOf(InspectPlayer->_pIFlags, ItemSpecialEffect::NoMana) || InspectPlayer->hasNoMana()) ? 0 : InspectPlayer->_pMana >> 6) }; } }, { N_("Resist magic"), { RightColumnLabelX, 256 }, 57, RightColumnLabelWidth, []() { return GetResistInfo(InspectPlayer->_pMagResist); } }, diff --git a/Source/player.h b/Source/player.h index e60868256..1758e2207 100644 --- a/Source/player.h +++ b/Source/player.h @@ -905,6 +905,11 @@ public: { return leveltype == DTYPE_TOWN ? false : _pHitPoints >> 6 <= 0; } + + bool hasNoMana() const + { + return _pMana >> 6 <= 0; + } }; extern DVL_API_FOR_TEST uint8_t MyPlayerId;