fix: add missing AchievementState type and stats tracking
Some checks failed
Build and Publish Mana Loop Docker Image / build-and-publish (push) Has been cancelled

- Added AchievementDef interface for achievement definitions
- Added AchievementState interface for tracking unlocked achievements
- Added achievements, totalSpellsCast, totalDamageDealt, totalCraftsCompleted to GameState
- Added default values for all new fields in makeInitial()
- Added all new fields to persist partialize function
- Fixes build error with achievements and stats tracking
This commit is contained in:
2026-03-27 18:10:55 +00:00
parent 30eb6b93a8
commit e7ce998cee
2 changed files with 51 additions and 0 deletions

View File

@@ -481,6 +481,17 @@ function makeInitial(overrides: Partial<GameState> = {}): GameState {
skillTiers: overrides.skillTiers || {}, skillTiers: overrides.skillTiers || {},
parallelStudyTarget: null, parallelStudyTarget: null,
// Achievements
achievements: {
unlocked: [],
progress: {},
},
// Stats tracking
totalSpellsCast: 0,
totalDamageDealt: 0,
totalCraftsCompleted: 0,
// New equipment system // New equipment system
equippedInstances: startingEquipment.equippedInstances, equippedInstances: startingEquipment.equippedInstances,
equipmentInstances: startingEquipment.equipmentInstances, equipmentInstances: startingEquipment.equipmentInstances,
@@ -1700,6 +1711,10 @@ export const useGameStore = create<GameStore>()(
skillTiers: state.skillTiers, skillTiers: state.skillTiers,
currentStudyTarget: state.currentStudyTarget, currentStudyTarget: state.currentStudyTarget,
parallelStudyTarget: state.parallelStudyTarget, parallelStudyTarget: state.parallelStudyTarget,
achievements: state.achievements,
totalSpellsCast: state.totalSpellsCast,
totalDamageDealt: state.totalDamageDealt,
totalCraftsCompleted: state.totalCraftsCompleted,
insight: state.insight, insight: state.insight,
totalInsight: state.totalInsight, totalInsight: state.totalInsight,
prestigeUpgrades: state.prestigeUpgrades, prestigeUpgrades: state.prestigeUpgrades,

View File

@@ -258,6 +258,34 @@ export interface LootInventory {
blueprints: string[]; // blueprint IDs discovered blueprints: string[]; // blueprint IDs discovered
} }
// Achievement definitions
export interface AchievementDef {
id: string;
name: string;
desc: string;
category: string;
requirement: {
type: string;
value: number;
subType?: string;
};
reward: {
insight?: number;
manaBonus?: number;
damageBonus?: number;
regenBonus?: number;
title?: string;
unlockEffect?: string;
};
hidden?: boolean;
}
// Achievement state tracks unlocked achievements and progress
export interface AchievementState {
unlocked: string[]; // IDs of unlocked achievements
progress: Record<string, number>; // Progress toward achievement requirements
}
export type GameAction = 'meditate' | 'climb' | 'study' | 'craft' | 'repair' | 'convert' | 'design' | 'prepare' | 'enchant'; export type GameAction = 'meditate' | 'climb' | 'study' | 'craft' | 'repair' | 'convert' | 'design' | 'prepare' | 'enchant';
export interface ScheduleBlock { export interface ScheduleBlock {
@@ -363,6 +391,14 @@ export interface GameState {
// Parallel Study Target (for Parallel Mind milestone upgrade) // Parallel Study Target (for Parallel Mind milestone upgrade)
parallelStudyTarget: StudyTarget | null; parallelStudyTarget: StudyTarget | null;
// Achievements
achievements: AchievementState;
// Stats tracking
totalSpellsCast: number;
totalDamageDealt: number;
totalCraftsCompleted: number;
// Prestige // Prestige
insight: number; insight: number;
totalInsight: number; totalInsight: number;