import { CropDefinitions, Upgrade, Equipment } from '../types' export const INITIAL_CASH = 50 export const INITIAL_FIELD_SIZE = 3 export const COOLDOWN_DURATION = 2000 // 2 seconds in milliseconds export const TICK_INTERVAL = 12000 // 12 seconds in milliseconds export const GAME_SPEEDS = { NORMAL: 1, FAST: 5, SUPER_FAST: 10, } export const INITIAL_GAME_SPEED = GAME_SPEEDS.NORMAL export const FIELD_UPGRADE_COSTS = [100, 1000, 10000, 100000] export const CROPS: CropDefinitions = { celery: { id: 'celery', name: 'Celery', growthTicks: 36, waterPerTick: 1 / 20, yield: 1, yieldType: 'celery', fertilityDepletion: 0.1, seedType: 'celery_seed', }, corn: { id: 'corn', name: 'Corn', growthTicks: 120, waterPerTick: 1 / 40, yield: 5, yieldType: 'corn', fertilityDepletion: 0.3, seedType: 'corn_seed', }, olive: { id: 'olive', name: 'Olive Tree', growthTicks: 200, waterPerTick: 1 / 50, yield: 5, yieldType: 'olive', fertilityDepletion: 0.1, seedType: 'olive', // Uses olives as seeds isPerennial: true, regrowthProgress: 150, // Resets to 150 ticks after harvest }, } export const INITIAL_INVENTORY = { celery_seed: 8, } export const UPGRADES: Record = { aqueous_vigor_1: { id: 'aqueous_vigor_1', name: 'Aqueous Vigor I', description: 'Reduces watering cooldown by 25%', cost: [ { itemId: 'celery', amount: 10, }, ], }, aqueous_vigor_2: { id: 'aqueous_vigor_2', name: 'Aqueous Vigor II', description: 'Reduces watering cooldown by an additional 25% (requires Aqueous Vigor I)', cost: [ { itemId: 'celery', amount: 25, }, ], }, aqua_diffundere_1: { id: 'aqua_diffundere_1', name: 'Aqua Diffundere I', description: 'Watering a plot also increases water level of adjacent plots by 10%', cost: [ { itemId: 'celery', amount: 10, }, { itemId: 'corn', amount: 15, }, ], }, aqua_diffundere_2: { id: 'aqua_diffundere_2', name: 'Aqua Diffundere II', description: 'Watering a plot also increases water level of adjacent plots by 30% (requires Aqua Diffundere I)', cost: [ { itemId: 'corn', amount: 100, }, { itemId: 'celery', amount: 25, }, ], }, } export interface Item { id: string name: string emoji: string buyPrice: number | null // null means not buyable sellPrice: number | null // null means not sellable } export const EQUIPMENT: Record = { press: { id: 'press', type: 'press', name: 'Press', emoji: 'πŸ›’οΈ', cost: 100, recipes: [ { id: 'olive_oil', name: 'Olive Oil', inputItem: 'olive', inputAmount: 10, outputItem: 'olive_oil', outputAmount: 1, processTicks: 10, cooldownDuration: 10000, // 10 seconds }, { id: 'grape_juice', name: 'Grape Juice', inputItem: 'grape', inputAmount: 20, outputItem: 'grape_juice', outputAmount: 1, processTicks: 20, cooldownDuration: 15000, // 15 seconds }, ], progress: 0, isProcessing: false, }, } export const ITEMS: Record = { additional_land: { id: 'additional_land', name: 'Additional Land', emoji: '🌱', buyPrice: 100, sellPrice: null, }, celery_seed: { id: 'celery_seed', name: 'Celery Seeds', emoji: '🌰', buyPrice: 1, sellPrice: null, }, corn_seed: { id: 'corn_seed', name: 'Corn Seeds', emoji: '🌰', buyPrice: 5, sellPrice: null, }, celery: { id: 'celery', name: 'Celery', emoji: 'πŸ₯¬', buyPrice: null, sellPrice: 5, }, corn: { id: 'corn', name: 'Corn', emoji: '🌽', buyPrice: null, sellPrice: 8, }, olive: { id: 'olive', name: 'Olive', emoji: 'πŸ«’', buyPrice: 15, sellPrice: null, }, olive_oil: { id: 'olive_oil', name: 'Olive Oil', emoji: 'πŸ«’', buyPrice: null, sellPrice: 50, }, grape: { id: 'grape', name: 'Grape', emoji: 'πŸ‡', buyPrice: null, sellPrice: 20, }, grape_juice: { id: 'grape_juice', name: 'Grape Juice', emoji: 'πŸ‡juice', buyPrice: null, sellPrice: 100, }, wine: { id: 'wine', name: 'Wine', emoji: '🍷', buyPrice: null, sellPrice: 100, }, }