Browse Source

Fix Life/Mana bugs (#5777)

pull/7462/head
Eric Robinson 1 year ago committed by GitHub
parent
commit
0fd4a7b348
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      Source/engine/render/scrollrt.cpp
  2. 4
      Source/items.cpp
  3. 2
      Source/panels/charpanel.cpp

4
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);

4
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);
}

2
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); } },

Loading…
Cancel
Save