Browse Source

update

pull/8402/head
Eric Robinson 3 months ago
parent
commit
39064741fc
  1. 26
      Source/player.cpp
  2. 2
      Source/player.h

26
Source/player.cpp

@ -3372,22 +3372,26 @@ void ModifyPlrVit(Player &player, int l)
}
}
void ModifyPlrManaCapacity(Player &player, int l)
void ModifyPlrManaCapacity(Player &player, int delta, bool shiftCurrent)
{
// Repair bugged base; do not propagate this "fix" to other fields.
if (player._pMaxManaBase < 0)
player._pMaxManaBase = 0;
constexpr int MinManaBase = 0;
// Clamp so base never goes below 0 after applying l.
const int newMaxBase = std::max(0, player._pMaxManaBase + l);
const int applied = newMaxBase - player._pMaxManaBase; // actual l after clamp
const int newMaxBase = std::max(MinManaBase, player._pMaxManaBase + delta);
const int applied = newMaxBase - player._pMaxManaBase;
player._pMaxManaBase = newMaxBase;
// Apply the same actual l to the other mana fields (may go negative, allowed).
player._pManaBase += applied;
player._pMaxMana += applied;
player._pMana += applied;
if (shiftCurrent) {
player._pManaBase += applied;
player._pMana += applied;
} else {
player._pManaBase = std::min(player._pManaBase, player._pMaxManaBase);
player._pMana = std::min(player._pMana, player._pMaxMana);
}
if (&player == MyPlayer)
RedrawComponent(PanelDrawComponent::Mana);
}
void SetPlayerHitPoints(Player &player, int val)

2
Source/player.h

@ -990,7 +990,7 @@ void ModifyPlrStr(Player &player, int l);
void ModifyPlrMag(Player &player, int l);
void ModifyPlrDex(Player &player, int l);
void ModifyPlrVit(Player &player, int l);
void ModifyPlrManaCapacity(Player &player, int l);
void ModifyPlrManaCapacity(Player &player, int l, bool shiftCurrent);
void SetPlayerHitPoints(Player &player, int val);
void SetPlrStr(Player &player, int v);
void SetPlrMag(Player &player, int v);

Loading…
Cancel
Save