import type { World } from './world' import { pack } from '../data/registry' export function marketPrice(w: World, itemId: string): number { const base = pack().items[itemId]?.basePrice ?? 1 const fam = w.state.family const mult = typeof fam.flag['priceMult'] === 'number' ? (fam.flag['priceMult'] as number) : 1 const mood = fam.reputation >= 40 ? 1.06 : fam.reputation >= 20 ? 1.02 : 0.98 return Math.max(1, Math.round(base * mult * mood)) } export function buyItem(w: World, itemId: string, count: number): boolean { const fam = w.state.family const total = marketPrice(w, itemId) * count if (total > fam.stones) return false fam.stones -= total fam.inventory[itemId] = (fam.inventory[itemId] ?? 0) + count return true } export function sellItem(w: World, itemId: string, count: number): boolean { const fam = w.state.family const have = fam.inventory[itemId] ?? 0 if (have < count) return false fam.inventory[itemId] = have - count fam.stones += marketPrice(w, itemId) * count return true } export function buyTechnique(w: World, techId: string, price: number): boolean { const fam = w.state.family if (fam.techniques.includes(techId)) return false if (fam.stones < price) return false fam.stones -= price fam.techniques.push(techId) return true } export function techniquePrice(techId: string): number { const grade = TECH_GRADE_BASE[techId] ?? 200 return grade } import { TECHNIQUES } from '../data/techniques' const TECH_GRADE_BASE: Record = Object.fromEntries( TECHNIQUES.map((t) => [t.id, [120, 300, 700, 1600, 3600][t.grade] ?? 300]) )