private void LevelNumericUpDown_ValueChanged(object sender, EventArgs e) { if (!_loaded) { return; } try { var prevLvl = Convert.ToInt32(((UpDownBase)sender).Text); var level = Convert.ToInt32(((NumericUpDown)sender).Value); var xp = PlayerLevel.GetLevelMinXP(level); xpTextBox.Text = string.Format("{0}", (xp + 1)); var dif = level - prevLvl; var attr = dif * PlayerLevel.AtrributePointsPerLevel; var skills = dif * PlayerLevel.SkillPointsPerLevel; var newAttr = attributeNumericUpDown.Value + attr; if (newAttr <= Convert.ToInt32(attributeNumericUpDown.Maximum) && newAttr >= Convert.ToInt32(attributeNumericUpDown.Minimum) ) { attributeNumericUpDown.Value = newAttr; } var newSkills = skillPointsNumericUpDown.Value + skills; if (newSkills <= Convert.ToInt32(skillPointsNumericUpDown.Maximum) && newSkills >= Convert.ToInt32(skillPointsNumericUpDown.Minimum)) { skillPointsNumericUpDown.Value = newSkills; } } catch (Exception ex) { Log.ErrorException(ex); } }