import type { ApotheosisData, ExplorationState, GameState, Player, PrestigeData, TranscendenceData } from "@elysium/types"; import { DEFAULT_ACHIEVEMENTS } from "./achievements.js"; import { CURRENT_SCHEMA_VERSION } from "./schemaVersion.js"; import { DEFAULT_ADVENTURERS } from "./adventurers.js"; import { DEFAULT_BOSSES } from "./bosses.js"; import { DEFAULT_EQUIPMENT } from "./equipment.js"; import { DEFAULT_EXPLORATIONS } from "./explorations.js"; import { DEFAULT_QUESTS } from "./quests.js"; import { DEFAULT_UPGRADES } from "./upgrades.js"; import { DEFAULT_ZONES } from "./zones.js"; export const INITIAL_PRESTIGE: PrestigeData = { count: 0, runestones: 0, productionMultiplier: 1, purchasedUpgradeIds: [], }; export const INITIAL_TRANSCENDENCE: TranscendenceData = { count: 0, echoes: 0, purchasedUpgradeIds: [], echoIncomeMultiplier: 1, echoCombatMultiplier: 1, echoPrestigeThresholdMultiplier: 1, echoPrestigeRunestoneMultiplier: 1, echoMetaMultiplier: 1, }; export const INITIAL_APOTHEOSIS: ApotheosisData = { count: 0, }; export const INITIAL_EXPLORATION: ExplorationState = { areas: DEFAULT_EXPLORATIONS.map((area) => ({ id: area.id, status: area.zoneId === "verdant_vale" ? "available" as const : "locked" as const, })), materials: [], craftedRecipeIds: [], craftedGoldMultiplier: 1, craftedEssenceMultiplier: 1, craftedClickMultiplier: 1, craftedCombatMultiplier: 1, }; export const INITIAL_GAME_STATE = (player: Player, characterName: string): GameState => ({ player: { ...player, characterName, totalGoldEarned: 0, totalClicks: 0, }, resources: { gold: 0, essence: 0, crystals: 0, runestones: 0, }, adventurers: structuredClone(DEFAULT_ADVENTURERS), upgrades: structuredClone(DEFAULT_UPGRADES), quests: structuredClone(DEFAULT_QUESTS), bosses: structuredClone(DEFAULT_BOSSES), equipment: structuredClone(DEFAULT_EQUIPMENT), achievements: structuredClone(DEFAULT_ACHIEVEMENTS), prestige: INITIAL_PRESTIGE, zones: structuredClone(DEFAULT_ZONES), baseClickPower: 1, lastTickAt: Date.now(), transcendence: { ...INITIAL_TRANSCENDENCE }, apotheosis: { ...INITIAL_APOTHEOSIS }, exploration: structuredClone(INITIAL_EXPLORATION), companions: { unlockedCompanionIds: [], activeCompanionId: null }, schemaVersion: CURRENT_SCHEMA_VERSION, });