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
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:
@@ -481,6 +481,17 @@ function makeInitial(overrides: Partial<GameState> = {}): GameState {
|
||||
skillTiers: overrides.skillTiers || {},
|
||||
parallelStudyTarget: null,
|
||||
|
||||
// Achievements
|
||||
achievements: {
|
||||
unlocked: [],
|
||||
progress: {},
|
||||
},
|
||||
|
||||
// Stats tracking
|
||||
totalSpellsCast: 0,
|
||||
totalDamageDealt: 0,
|
||||
totalCraftsCompleted: 0,
|
||||
|
||||
// New equipment system
|
||||
equippedInstances: startingEquipment.equippedInstances,
|
||||
equipmentInstances: startingEquipment.equipmentInstances,
|
||||
@@ -1700,6 +1711,10 @@ export const useGameStore = create<GameStore>()(
|
||||
skillTiers: state.skillTiers,
|
||||
currentStudyTarget: state.currentStudyTarget,
|
||||
parallelStudyTarget: state.parallelStudyTarget,
|
||||
achievements: state.achievements,
|
||||
totalSpellsCast: state.totalSpellsCast,
|
||||
totalDamageDealt: state.totalDamageDealt,
|
||||
totalCraftsCompleted: state.totalCraftsCompleted,
|
||||
insight: state.insight,
|
||||
totalInsight: state.totalInsight,
|
||||
prestigeUpgrades: state.prestigeUpgrades,
|
||||
|
||||
@@ -258,6 +258,34 @@ export interface LootInventory {
|
||||
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 interface ScheduleBlock {
|
||||
@@ -363,6 +391,14 @@ export interface GameState {
|
||||
// Parallel Study Target (for Parallel Mind milestone upgrade)
|
||||
parallelStudyTarget: StudyTarget | null;
|
||||
|
||||
// Achievements
|
||||
achievements: AchievementState;
|
||||
|
||||
// Stats tracking
|
||||
totalSpellsCast: number;
|
||||
totalDamageDealt: number;
|
||||
totalCraftsCompleted: number;
|
||||
|
||||
// Prestige
|
||||
insight: number;
|
||||
totalInsight: number;
|
||||
|
||||
Reference in New Issue
Block a user