mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-11 03:31:08 +00:00
Rework regens to match modern clients
This commit is contained in:
+13
-13
@@ -1820,7 +1820,7 @@ void Client::OPGMSummon(const EQApplicationPacket *app)
|
||||
}
|
||||
|
||||
void Client::DoHPRegen() {
|
||||
SetHP(GetHP() + CalcHPRegen() + RestRegenHP);
|
||||
SetHP(GetHP() + CalcHPRegen());
|
||||
SendHPUpdate();
|
||||
}
|
||||
|
||||
@@ -1828,7 +1828,10 @@ void Client::DoManaRegen() {
|
||||
if (GetMana() >= max_mana && spellbonuses.ManaRegen >= 0)
|
||||
return;
|
||||
|
||||
SetMana(GetMana() + CalcManaRegen() + RestRegenMana);
|
||||
if (GetMana() < max_mana && (IsSitting() || CanMedOnHorse()) && HasSkill(EQEmu::skills::SkillMeditate))
|
||||
CheckIncreaseSkill(EQEmu::skills::SkillMeditate, nullptr, -5);
|
||||
|
||||
SetMana(GetMana() + CalcManaRegen());
|
||||
CheckManaEndUpdate();
|
||||
}
|
||||
|
||||
@@ -1869,10 +1872,11 @@ void Client::DoStaminaHungerUpdate()
|
||||
|
||||
void Client::DoEnduranceRegen()
|
||||
{
|
||||
if(GetEndurance() >= GetMaxEndurance())
|
||||
return;
|
||||
// endurance has some negative mods that could result in a negative regen when starved
|
||||
int regen = CalcEnduranceRegen();
|
||||
|
||||
SetEndurance(GetEndurance() + CalcEnduranceRegen() + RestRegenEndurance);
|
||||
if (regen < 0 || (regen > 0 && GetEndurance() < GetMaxEndurance()))
|
||||
SetEndurance(GetEndurance() + regen);
|
||||
}
|
||||
|
||||
void Client::DoEnduranceUpkeep() {
|
||||
@@ -1921,12 +1925,12 @@ void Client::CalcRestState() {
|
||||
// The client must have been out of combat for RuleI(Character, RestRegenTimeToActivate) seconds,
|
||||
// must be sitting down, and must not have any detrimental spells affecting them.
|
||||
//
|
||||
if(!RuleI(Character, RestRegenPercent))
|
||||
if(!RuleB(Character, RestRegenEnabled))
|
||||
return;
|
||||
|
||||
RestRegenHP = RestRegenMana = RestRegenEndurance = 0;
|
||||
ooc_regen = false;
|
||||
|
||||
if(AggroCount || !IsSitting())
|
||||
if(AggroCount || !(IsSitting() || CanMedOnHorse()))
|
||||
return;
|
||||
|
||||
if(!rest_timer.Check(false))
|
||||
@@ -1941,12 +1945,8 @@ void Client::CalcRestState() {
|
||||
}
|
||||
}
|
||||
|
||||
RestRegenHP = (GetMaxHP() * RuleI(Character, RestRegenPercent) / 100);
|
||||
ooc_regen = true;
|
||||
|
||||
RestRegenMana = (GetMaxMana() * RuleI(Character, RestRegenPercent) / 100);
|
||||
|
||||
if(RuleB(Character, RestRegenEndurance))
|
||||
RestRegenEndurance = (GetMaxEndurance() * RuleI(Character, RestRegenPercent) / 100);
|
||||
}
|
||||
|
||||
void Client::DoTracking()
|
||||
|
||||
Reference in New Issue
Block a user