generated from nhcarrigan/template
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
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
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,
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user