Files
elysium/apps/api/src/data/achievements.ts
T
hikari e9e0df31fd feat: add equipment, achievements, and visual polish
- Equipment system: 12 items across weapon/armour/trinket slots with
  common/rare/epic/legendary rarities; starter commons auto-equipped,
  higher tiers drop from boss victories
- Achievement system: 15 milestones with typed conditions; checked
  each tick and crystal rewards applied automatically
- Achievement toast: slide-in notification, auto-dismisses after 4s
- Floating click text: +X gold floats on each manual click
- Expanded quests (9 total) and upgrades (12 total)
- Upgrade panel now shows locked upgrades so players can see their
  progression path
- formatNumber utility (K/M/B/T) used consistently across all panels
- Backfill logic for existing saves to add new content gracefully
- types package now emits .d.ts declarations
2026-03-06 13:27:48 -08:00

140 lines
3.6 KiB
TypeScript

import type { Achievement } from "@elysium/types";
export const DEFAULT_ACHIEVEMENTS: Achievement[] = [
{
id: "first_click",
name: "First Strike",
description: "Click the Guild Hall for the first time.",
icon: "👆",
condition: { type: "totalClicks", amount: 1 },
reward: { crystals: 5 },
unlockedAt: null,
},
{
id: "click_enthusiast",
name: "Click Enthusiast",
description: "Click the Guild Hall 100 times.",
icon: "🖱️",
condition: { type: "totalClicks", amount: 100 },
reward: { crystals: 25 },
unlockedAt: null,
},
{
id: "click_master",
name: "Click Master",
description: "Click the Guild Hall 1,000 times.",
icon: "⚡",
condition: { type: "totalClicks", amount: 1_000 },
reward: { crystals: 100 },
unlockedAt: null,
},
{
id: "first_gold",
name: "First Gold",
description: "Earn your first 100 gold.",
icon: "🪙",
condition: { type: "totalGoldEarned", amount: 100 },
reward: { crystals: 5 },
unlockedAt: null,
},
{
id: "wealthy",
name: "Wealthy",
description: "Earn 10,000 gold in total.",
icon: "💰",
condition: { type: "totalGoldEarned", amount: 10_000 },
reward: { crystals: 25 },
unlockedAt: null,
},
{
id: "rich",
name: "Rich",
description: "Earn 1,000,000 gold in total.",
icon: "👑",
condition: { type: "totalGoldEarned", amount: 1_000_000 },
reward: { crystals: 100 },
unlockedAt: null,
},
{
id: "billionaire",
name: "Billionaire",
description: "Earn 1,000,000,000 gold in total.",
icon: "🏦",
condition: { type: "totalGoldEarned", amount: 1_000_000_000 },
reward: { crystals: 500 },
unlockedAt: null,
},
{
id: "first_quest",
name: "Adventurous Spirit",
description: "Complete your first quest.",
icon: "📜",
condition: { type: "questsCompleted", amount: 1 },
reward: { crystals: 10 },
unlockedAt: null,
},
{
id: "quest_veteran",
name: "Quest Veteran",
description: "Complete 5 quests.",
icon: "📚",
condition: { type: "questsCompleted", amount: 5 },
reward: { crystals: 50 },
unlockedAt: null,
},
{
id: "boss_slayer",
name: "Boss Slayer",
description: "Defeat your first boss.",
icon: "⚔️",
condition: { type: "bossesDefeated", amount: 1 },
reward: { crystals: 25 },
unlockedAt: null,
},
{
id: "legendary_hunter",
name: "Legendary Hunter",
description: "Defeat all four bosses.",
icon: "🏆",
condition: { type: "bossesDefeated", amount: 4 },
reward: { crystals: 200 },
unlockedAt: null,
},
{
id: "guild_master",
name: "Guild Master",
description: "Recruit a total of 50 adventurers.",
icon: "🏰",
condition: { type: "adventurerTotal", amount: 50 },
reward: { crystals: 50 },
unlockedAt: null,
},
{
id: "army_commander",
name: "Army Commander",
description: "Recruit a total of 500 adventurers.",
icon: "🛡️",
condition: { type: "adventurerTotal", amount: 500 },
reward: { crystals: 200 },
unlockedAt: null,
},
{
id: "first_prestige",
name: "Born Again",
description: "Prestige for the first time.",
icon: "⭐",
condition: { type: "prestigeCount", amount: 1 },
reward: { crystals: 100 },
unlockedAt: null,
},
{
id: "collector",
name: "Collector",
description: "Acquire your first piece of boss-dropped equipment.",
icon: "🎒",
condition: { type: "equipmentOwned", amount: 4 },
reward: { crystals: 10 },
unlockedAt: null,
},
];