Finding Skill level XP requirements?

Users who are viewing this thread

I am having a hard time finding which dll is responsible for the skill level XP requirements. The closest I get is within the TaleWorlds.CampaignSystem.CharacterDevelopmentModel class


C#:
        // Token: 0x060009AE RID: 2478
        public abstract int GetXpAmountForSkillLevelChange(Hero hero, SkillObject skill, int skillLevelChange);


It seems it contained within the SkillObject class but I can't find where that is created anywhere?
 
Solution
Hey!
You can find it in TaleWorlds.CampaignSystem.SandBox.GameComponents.DefaultCharacterDevelopmentModel

C#:
// Token: 0x06001DD4 RID: 7636 RVA: 0x00071EF4 File Offset: 0x000700F4
        public override void GetSkillLevelChange(Hero hero, SkillObject skill, float skillXp, out int skillLevelChange)
        {
            skillLevelChange = 0;
            int skillValue = hero.GetSkillValue(skill);
            for (int i = 0; i < 1024; i++)
            {
                int num = skillValue + i;
                if (num < 1023)
                {
                    if (skillXp < (float)this._xpRequiredForSkillLevel[num])
                    {
                        break;
                    }
                    skillLevelChange++...
Hey!
You can find it in TaleWorlds.CampaignSystem.SandBox.GameComponents.DefaultCharacterDevelopmentModel

C#:
// Token: 0x06001DD4 RID: 7636 RVA: 0x00071EF4 File Offset: 0x000700F4
        public override void GetSkillLevelChange(Hero hero, SkillObject skill, float skillXp, out int skillLevelChange)
        {
            skillLevelChange = 0;
            int skillValue = hero.GetSkillValue(skill);
            for (int i = 0; i < 1024; i++)
            {
                int num = skillValue + i;
                if (num < 1023)
                {
                    if (skillXp < (float)this._xpRequiredForSkillLevel[num])
                    {
                        break;
                    }
                    skillLevelChange++;
                }
            }
        }

Initializing array _xpRequiredForSkillLevel:
C#:
// Token: 0x06001DD0 RID: 7632 RVA: 0x00071DF8 File Offset: 0x0006FFF8
        private void InitializeXpRequiredForSkillLevel()
        {
            int num = 30;
            this._xpRequiredForSkillLevel[0] = num;
            for (int i = 1; i < 1024; i++)
            {
                num += i * 2 + MathF.Round((float)num * 0.005f);
                this._xpRequiredForSkillLevel[i] = this._xpRequiredForSkillLevel[i - 1] + num;
            }
        }
 
Upvote 0
Solution
Back
Top Bottom