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)); } }