public void SetLevelAndStats(int level) { // Set the level and handle excess experience by looping here. int carryOverXp = (int)(Stats.Experience.Actual - Stats.Experience.Max); Stats.Experience.Actual = Stats.Experience.Min + carryOverXp; Stats.Level.Actual = level; Stats.Experience.Max = StaticUtil.StatShouldBe(Stats.Experience, (int)Stats.Level.Actual); if (Stats.Experience.Actual > Stats.Experience.Max) { LevelUp(); } // The level is correct, now calculate all of the stats. Stats.XpReward.Actual = StaticUtil.StatShouldBe(Stats.XpReward, (int)Stats.Level.Actual); Stats.Health.Max = StaticUtil.StatShouldBe(Stats.Health, (int)Stats.Level.Actual); Stats.Armor.Max = StaticUtil.StatShouldBe(Stats.Armor, (int)Stats.Level.Actual); Stats.Agility.Actual = StaticUtil.StatShouldBe(Stats.Agility, (int)Stats.Level.Actual); Stats.Dexterity.Actual = StaticUtil.StatShouldBe(Stats.Dexterity, (int)Stats.Level.Actual); Stats.Endurance.Actual = StaticUtil.StatShouldBe(Stats.Endurance, (int)Stats.Level.Actual); Stats.Strength.Actual = StaticUtil.StatShouldBe(Stats.Strength, (int)Stats.Level.Actual); }