[Regen] Fix possible overflow in CalcHPRegenCap(). (#2185)

This commit is contained in:
Kinglykrab 2022-05-27 14:39:25 -04:00 committed by GitHub
parent f9191d4ef4
commit 5bc4cff7a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -303,12 +303,17 @@ int64 Client::CalcHPRegen(bool bCombat)
int64 Client::CalcHPRegenCap()
{
int cap = RuleI(Character, ItemHealthRegenCap);
if (GetLevel() > 60)
cap = std::max(cap, GetLevel() - 30); // if the rule is set greater than normal I guess
if (GetLevel() > 65)
int64 cap = RuleI(Character, ItemHealthRegenCap);
if (GetLevel() > 60) {
cap = std::max(cap, static_cast<int64>(GetLevel() - 30)); // if the rule is set greater than normal I guess
}
if (GetLevel() > 65) {
cap += GetLevel() - 65;
}
cap += aabonuses.ItemHPRegenCap + spellbonuses.ItemHPRegenCap + itembonuses.ItemHPRegenCap;
return (cap * RuleI(Character, HPRegenMultiplier) / 100);
}