public static byte LevelForExperienceValue(MonsterExperienceType experienceType, int experience)
        {
            // returns level 1 if no experience (or negative value):
            if (experience <= 0)
                return 1;

            byte level = 1;
            while (ExperienceNeededForLevel(experienceType, level) <= experience)
                level++;

            return level;
        }
 public static int ExperienceNeededForLevel(MonsterExperienceType experienceType, int level)
 {
     switch (experienceType)
     {
         case MonsterExperienceType.Erratic:
             return (int) Math.Round(ExperienceNeededForLevelErratic(level));
         case MonsterExperienceType.Fast:
             return (int) Math.Round(ExperienceNeededForLevelFast(level));
         case MonsterExperienceType.MediumFast:
             return (int) Math.Round(ExperienceNeededForLevelMediumFast(level));
         case MonsterExperienceType.MediumSlow:
             return (int) Math.Round(ExperienceNeededForLevelMediumSlow(level));
         case MonsterExperienceType.Slow:
             return (int) Math.Round(ExperienceNeededForLevelSlow(level));
         case MonsterExperienceType.Fluctuating:
             return (int) Math.Round(ExperienceNeededForLevelFluctuating(level));
         default:
             return (int) Math.Round(ExperienceNeededForLevelMediumFast(level));
     }
 }