The rule Character:SkillUpModifier for modifying skill up rate has no effect on some skills (weapon & defense for example) after skill level 150.
In zone/Client.cpp function CheckIncreaseSkill:
Code:
int32 Chance = 10 + chancemodi + ((252 - skillval) / 20);
Chance = (Chance * RuleI(Character, SkillUpModifier) / 100);
Chance = mod_increase_skill_chance(Chance, against_who);
if(Chance < 1)
Chance = 1; // Make it always possible
if(zone->random.Real(0, 99) < Chance)
The calculation Chance = 10 + chancemodi + ((252 - skillval) / 20) will yield negative chance from skill value 153 for skills that use -15 as chancemodi (weapon, offense and defense).
And since the rule Character:SkillUpModifier is applied before the check that chance is at least 1 the rule will then have no effect at all.
Suggested change.
Just move the check that Chance is at least 1 before the rule Character:SkillUpModifier is applied.
Code:
int32 Chance = 10 + chancemodi + ((252 - skillval) / 20);
if(Chance < 1)
Chance = 1; // Make it always possible
Chance = (Chance * RuleI(Character, SkillUpModifier) / 100);
Chance = mod_increase_skill_chance(Chance, against_who);
if(zone->random.Real(0, 99) < Chance)