INNER CODE UNIT · TypeScript

unlockAchievement

vibeeval/vibecosystem · hooks/src/achievement-tracker.ts:157

function unlockAchievement(
  state: AchievementState,
  id: string,
  baseXp: number,
  celebrations: string[]
): void {
  if (state.unlocked[id]) return; // already unlocked

  const multiplier = streakMultiplier(state.streak);
  const earnedXp = Math.round(baseXp * multiplier);

  state.unlocked[id] = { unlockedAt: new Date().toISOString(), xp: earnedXp };
  state.xp += earnedXp;
  state.level = calcLevel(state.xp);

  const name = ACHIEVEMENT_NAMES[id] ?? id;
  const bonusStr = multiplier > 1 ? ` (${multiplier}x streak bonus)` : '';
  celebrations.push(

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…