mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 18:52:22 +00:00
[Skills] Configurable Exponential Decay Formula for Skill Up (#1887)
* [Skills] Exponential Decay Skill Up Formula Added an exponential decay skill up formula option. The current, linear, formula results in negative chances to skill up, which have been mitigated via a multiplier and minimum of 1% * [Skills]Configurable Exponential Decay Formala for Skill Up What this fixes: The existing formula for determining whether or not to skill up could result in negative chances, and made an assumption around the number 252. This would ultimately result in an override that would set the chance to 1. My fix: I created 2 new rules: Character:SkillUpMaximumChancePercentage Character:SkillUpMinimumChancePercentage I changed the forumla to: chance = ((max - min + skill_modification) * (.99^skill)) + min This results in an exponential decay that starts at skill-modified maximum and approaches minimum. I decided that max-min+skill_modification should never be less than min I also decided to continue to apply the Character:SkillUpModifier rule post-calculation. I do not really think this is necessary anymore, given this new formula, but we can discuss removing it. I chose 25 and 2 as default maximum and minimum based on feel. Related method signature fix: Client::mod_increase_skill_chance was changed to return a double and accept a double as an input for chance. This matches the actual data types provided while calling the method and eliminates some type coersion and resultant truncation. Right now, this method doesn't do anything, but in the future we could implement skill-specific training dummies that accelerate skill ups. I deduce that this is the purpose of this method call. * [Skills]Configurable Exponential Decay Formula for Skill Up What this fixes: The existing formula for determining whether or not to skill up could result in negative chances, and made an assumption around the number 252. This would ultimately result in an override that would set the chance to 1. My fix: I created 2 new rules: Character:SkillUpMaximumChancePercentage Character:SkillUpMinimumChancePercentage I changed the forumla to: chance = ((max - min + skill_modification) * (.99^skill)) + min This results in an exponential decay that starts at skill-modified maximum and approaches minimum. I decided that max-min+skill_modification should never be less than min I also decided to continue to apply the Character:SkillUpModifier rule post-calculation. I do not really think this is necessary anymore, given this new formula, but we can discuss removing it. I chose 25 and 2 as default maximum and minimum based on feel. Related method signature fix: Client::mod_increase_skill_chance was changed to return a double and accept a double as an input for chance. This matches the actual data types provided while calling the method and eliminates some type coersion and resultant truncation. Right now, this method doesn't do anything, but in the future we could implement skill-specific training dummies that accelerate skill ups. I deduce that this is the purpose of this method call. * fixup! [Skills]Configurable Exponential Decay Formula for Skill Up * fixup! [Skills]Configurable Exponential Decay Formula for Skill Up
This commit is contained in:
@@ -174,6 +174,8 @@ RULE_INT(Character, ResurrectionSicknessSpellID, 756, "756 is Default Resurrecti
|
||||
RULE_BOOL(Character, EnableBardMelody, true, "Enable Bard /melody by default, to disable change to false for a classic experience.")
|
||||
RULE_BOOL(Character, EnableRangerAutoFire, true, "Enable Ranger /autofire by default, to disable change to false for a classic experience.")
|
||||
RULE_BOOL(Character, EnableTGB, true, "Enable /tgb (Target Group Buff) by default, to disable change to false for a classic experience.")
|
||||
RULE_INT(Character, SkillUpMaximumChancePercentage, 25, "Maximum chance to improve a combat skill, before skill-specific modifiers. This should be greater than SkillUpMinimumChancePercentage.")
|
||||
RULE_INT(Character, SkillUpMinimumChancePercentage, 2, "Minimum chance to improve a combat skill, after skill-specific modifiers. This should be lesser than SkillUpMaximumChancePercentage.")
|
||||
RULE_INT(Character, WarriorTrackingDistanceMultiplier, 0, "If you want warriors to be able to track, increase this above 0. 0 disables tracking packets.")
|
||||
RULE_INT(Character, ClericTrackingDistanceMultiplier, 0, "If you want clerics to be able to track, increase this above 0. 0 disables tracking packets.")
|
||||
RULE_INT(Character, PaladinTrackingDistanceMultiplier, 0, "If you want paladins to be able to track, increase this above 0. 0 disables tracking packets.")
|
||||
|
||||
Reference in New Issue
Block a user