generated from nhcarrigan/template
feat: add titles system with unlock tracking and character sheet display
Titles are earned by reaching milestones (quests, bosses, gold, clicks, adventurers, guild, prestige, transcendence, apotheosis, achievements, longevity) and are permanent - never lost on prestige/transcendence/ apotheosis resets. 20 titles available at launch. Also fixes a pre-existing P2034 write-conflict on the load backfill path and the exactOptionalPropertyTypes violation in the quest failure handler.
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
import type { Title } from "@elysium/types";
|
||||
|
||||
export const TITLES: Title[] = [
|
||||
// Quest milestones
|
||||
{
|
||||
id: "the_adventurous",
|
||||
name: "The Adventurous",
|
||||
description: "Complete your first quest.",
|
||||
condition: { type: "questsCompleted", amount: 1 },
|
||||
},
|
||||
{
|
||||
id: "the_persistent",
|
||||
name: "The Persistent",
|
||||
description: "Complete 100 quests in a single run.",
|
||||
condition: { type: "questsCompleted", amount: 100 },
|
||||
},
|
||||
// Boss milestones
|
||||
{
|
||||
id: "boss_slayer",
|
||||
name: "Boss Slayer",
|
||||
description: "Defeat your first boss.",
|
||||
condition: { type: "bossesDefeated", amount: 1 },
|
||||
},
|
||||
{
|
||||
id: "dungeon_master",
|
||||
name: "Dungeon Master",
|
||||
description: "Defeat 10 bosses in a single run.",
|
||||
condition: { type: "bossesDefeated", amount: 10 },
|
||||
},
|
||||
// Gold milestones
|
||||
{
|
||||
id: "the_wealthy",
|
||||
name: "The Wealthy",
|
||||
description: "Earn 1,000,000 gold in a single run.",
|
||||
condition: { type: "totalGoldEarned", amount: 1_000_000 },
|
||||
},
|
||||
{
|
||||
id: "the_rich",
|
||||
name: "The Rich",
|
||||
description: "Earn 1,000,000,000 gold in a single run.",
|
||||
condition: { type: "totalGoldEarned", amount: 1_000_000_000 },
|
||||
},
|
||||
// Click milestones
|
||||
{
|
||||
id: "click_maniac",
|
||||
name: "Click Maniac",
|
||||
description: "Click the Guild Hall 10,000 times in a single run.",
|
||||
condition: { type: "totalClicks", amount: 10_000 },
|
||||
},
|
||||
// Adventurer milestones
|
||||
{
|
||||
id: "commander",
|
||||
name: "Commander",
|
||||
description: "Recruit 100 adventurers.",
|
||||
condition: { type: "adventurerTotal", amount: 100 },
|
||||
},
|
||||
{
|
||||
id: "warlord",
|
||||
name: "Warlord",
|
||||
description: "Recruit 1,000 adventurers.",
|
||||
condition: { type: "adventurerTotal", amount: 1_000 },
|
||||
},
|
||||
// Social
|
||||
{
|
||||
id: "guild_founder",
|
||||
name: "Guild Founder",
|
||||
description: "Give your guild a name.",
|
||||
condition: { type: "guildFounded" },
|
||||
},
|
||||
// Prestige milestones
|
||||
{
|
||||
id: "the_undying",
|
||||
name: "The Undying",
|
||||
description: "Achieve your first Prestige.",
|
||||
condition: { type: "prestigeCount", amount: 1 },
|
||||
},
|
||||
{
|
||||
id: "battle_hardened",
|
||||
name: "Battle Hardened",
|
||||
description: "Achieve 5 Prestiges.",
|
||||
condition: { type: "prestigeCount", amount: 5 },
|
||||
},
|
||||
{
|
||||
id: "legend",
|
||||
name: "Legend",
|
||||
description: "Achieve 25 Prestiges.",
|
||||
condition: { type: "prestigeCount", amount: 25 },
|
||||
},
|
||||
// Transcendence milestones
|
||||
{
|
||||
id: "transcendent",
|
||||
name: "Transcendent",
|
||||
description: "Achieve your first Transcendence.",
|
||||
condition: { type: "transcendenceCount", amount: 1 },
|
||||
},
|
||||
{
|
||||
id: "beyond_mortal",
|
||||
name: "Beyond Mortal",
|
||||
description: "Achieve 5 Transcendences.",
|
||||
condition: { type: "transcendenceCount", amount: 5 },
|
||||
},
|
||||
// Apotheosis milestones
|
||||
{
|
||||
id: "apotheosised",
|
||||
name: "Apotheosised",
|
||||
description: "Achieve your first Apotheosis.",
|
||||
condition: { type: "apotheosisCount", amount: 1 },
|
||||
},
|
||||
{
|
||||
id: "ascendant",
|
||||
name: "Ascendant",
|
||||
description: "Achieve 5 Apotheoses.",
|
||||
condition: { type: "apotheosisCount", amount: 5 },
|
||||
},
|
||||
// Achievement milestone
|
||||
{
|
||||
id: "completionist",
|
||||
name: "Completionist",
|
||||
description: "Unlock all achievements.",
|
||||
condition: { type: "achievementsUnlocked", amount: 40 },
|
||||
},
|
||||
// Longevity
|
||||
{
|
||||
id: "veteran",
|
||||
name: "Veteran",
|
||||
description: "Play Elysium for 30 days.",
|
||||
condition: { type: "playedDays", amount: 30 },
|
||||
},
|
||||
{
|
||||
id: "timeless",
|
||||
name: "Timeless",
|
||||
description: "Play Elysium for a full year.",
|
||||
condition: { type: "playedDays", amount: 365 },
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user