Necro post, but I wanted to leave it here for anyone that wants it. OP asked and got a reply on the right direction, just only for one part of the code.
To change the skill points to match the character level and to make NPCs, Items and the /level command properly give the correct amount of skill points based on the level limit, in char_skill.cpp replace:
void CHARACTER::ClearSkill()
{
PointChange(POINT_SKILL, 4 + (GetLevel() - 5) - GetPoint(POINT_SKILL));
ResetSkill();
}
With:
void CHARACTER::ClearSkill()
{
int level = GetLevel();
if (level >102)
{
level = 102;
}
PointChange(POINT_SKILL, 5 + (level - 5) - GetPoint(POINT_SKILL));
ResetSkill();
}
*You can change the 102 to your specific level limit.
To limit the levels that skill points are awarded, in char.cpp, within void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast) replace:
case POINT_LEVEL_STEP:
[...]
if (GetSkillGroup())
{
if (GetLevel() >= 5)
PointChange(POINT_SKILL, 1);
if (GetLevel() >= 9)
PointChange(POINT_SUB_SKILL, 1);
}
With:
case POINT_LEVEL_STEP:
[...]
if (GetSkillGroup())
{
if (GetLevel() >= 5 && GetLevel() < 102)
PointChange(POINT_SKILL, 1);
if (GetLevel() >= 9)
PointChange(POINT_SUB_SKILL, 1);
}
*You can change the 102 to your specific level limit.