Achievements, dailies & progression
Achievements, daily rewards with streaks, quests, battle passes, and an XP/level curve.
These systems keep players coming back. All of them deliver their rewards through the inbox (the one grant path) — the client reports progress but never grants a reward.
Achievements
Report progress toward an achievement; the server clamps it, unlocks exactly-once, and escrows the reward. Secret achievements are hidden from the trophy list until unlocked.
await tg.achievements.report('first_win', 1); // unlock → reward lands in tg.inbox Daily rewards
Daily claims are gated by the SERVER day (never the client clock), and track a streak. Re-claiming the same day returns a conflict.
const s = await tg.daily.status();
if (s.claimable) await tg.daily.claim(); Quests & battle pass
Quests are objectives over a period (daily/weekly) that claim a reward when complete (quest_not_complete otherwise). A battle pass is a season of tiers earned by XP, with a free and an optional premium lane (premium_required / tier_not_earned guard claims). Configure both in the dashboard.
await tg.quests.claim('win_3');
const pass = await tg.battlePass.get('s1'); Level curve
A single XP curve (base + growth + max level) turns an XP stat into levels. tg.progression.get() returns the player's level and XP toward the next.