[Rule] Add ManaOnDeath and EndurOnDeath (#2661)

* [Rule] Add ManaOnDeath and EndurOnDeath
This rule allows death to fully fill Mana or Endurance.

* Updates rules to live-like

* Adjust rule names to be more descriptive of their intent, remove else cases

Co-authored-by: Akkadius <akkadius1@gmail.com>
This commit is contained in:
Michael 2022-12-19 22:04:03 -05:00 committed by GitHub
parent 083d44d4fe
commit e6f58382de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 8 deletions

View File

@ -194,6 +194,8 @@ RULE_INT(Character, BeastlordTrackingDistanceMultiplier, 0, "If you want beastlo
RULE_INT(Character, BerserkerTrackingDistanceMultiplier, 0, "If you want berserkers to be able to track, increase this above 0. 0 disables tracking packets.")
RULE_BOOL(Character, OnInviteReceiveAlreadyinGroupMessage, true, "If you want clients to receive a message when trying to invite a player into a group that is currently in another group.")
RULE_BOOL(Character, PetZoneWithOwner, true, "Should Pets Zone with Owner")
RULE_BOOL(Character, FullManaOnDeath, true, "On death set mana to full")
RULE_BOOL(Character, FullEndurOnDeath, true, "On death set endurance to full")
RULE_CATEGORY_END()
RULE_CATEGORY(Mercs)

View File

@ -645,16 +645,22 @@ bool Client::Save(uint8 iCommitNow) {
m_pp.guildrank = guildrank;
/* Mana and HP */
if (GetHP() <= 0) {
if (dead && GetHP() <= 0) {
m_pp.cur_hp = GetMaxHP();
}
else {
m_pp.cur_hp = GetHP();
}
m_pp.mana = current_mana;
if (RuleB(Character, FullManaOnDeath)) {
m_pp.mana = GetMaxMana();
}
m_pp.mana = current_mana;
m_pp.endurance = current_endurance;
m_pp.endurance = current_endurance;
if (RuleB(Character, FullEndurOnDeath)) {
m_pp.endurance = GetMaxEndurance();
}
} else { // Otherwise, no changes.
m_pp.cur_hp = GetHP();
m_pp.mana = current_mana;
m_pp.endurance = current_endurance;
}
/* Save Character Currency */
database.SaveCharacterCurrency(CharacterID(), &m_pp);