UNPKG

@jeremyckahn/farmhand

Version:
30 lines (24 loc) • 886 B
import { itemsMap } from '../data/maps.js' import { randomStream } from '../enums.js' import { chooseRandom } from './chooseRandom.js' import { chooseRandomIndex } from './chooseRandomIndex.js' import { getFinalCropItemIdFromSeedItemId } from './getFinalCropItemIdFromSeedItemId.js' export const getRandomUnlockedCrop = ( unlockedSeedItemIds: Array<string>, stream?: randomStream ): farmhand.item => { const seedItemId = chooseRandom(unlockedSeedItemIds, stream) const seedItem = itemsMap[seedItemId] const variationIdx = Array.isArray(seedItem.growsInto) ? chooseRandomIndex(seedItem.growsInto, stream) : 0 const finalCropItemId = getFinalCropItemIdFromSeedItemId( seedItemId, variationIdx ) if (!finalCropItemId) throw new Error( `Seed item ID ${seedItemId} has no corresponding final crop ID` ) return itemsMap[finalCropItemId] }