export function xpForLevel(level: number): number { if (level <= 1) return 0; return Math.floor(100 * Math.pow(level - 1, 1.6)); } export function levelFromXp(totalXp: number): number { let level = 1; while (xpForLevel(level + 1) <= totalXp && level < 150) { level++; } return level; } export function xpProgressInLevel(totalXp: number): { level: number; current: number; needed: number; percent: number; } { const level = levelFromXp(totalXp); const currentLevelXp = xpForLevel(level); const nextLevelXp = xpForLevel(level + 1); const current = totalXp - currentLevelXp; const needed = nextLevelXp - currentLevelXp; const percent = needed > 0 ? Math.min(100, (current / needed) * 100) : 100; return { level, current, needed, percent }; }