Shops

Marnie's Ranch

Access the complete stock list for Marnie's Ranch with category-based filtering using the chainable MarnieQuery API.

Quick Start

import { marnie } from 'stardew-valley-data'

// Get all Marnie items
const all = marnie().get()

// Get animal supplies sorted by price
const supplies = marnie().animalSupplies().sortByPrice().get()

// Get tools
const tools = marnie().tools().get()

// Find a specific item
const hay = marnie().findByName('Hay')

Type Definition

Each item conforms to the MarnieItem interface:

FieldTypeDescription
idstringUnique identifier.
namestringDisplay name of the item.
pricenumberPurchase price in gold.
descriptionstringIn-game description text.
imagestringPath to the item's image.
categoryMarnieCategoryItem category.
availabilitystring | undefinedSpecial purchase condition, if any.

MarnieCategory

type MarnieCategory =
  | 'animal-supply'
  | 'tool'
  | 'furniture'
  | 'catalogue'
  | 'special'

Query Methods

MarnieQuery extends QueryBase and inherits five terminal methods:

MethodReturnsDescription
get()MarnieItem[]Return all results as an array.
first()MarnieItem | undefinedReturn the first result.
find(id)MarnieItem | undefinedFind an item by exact ID.
findByName(name)MarnieItem | undefinedFind an item by name (case-insensitive).
count()numberReturn the number of results.

Filter Methods

MethodReturnsDescription
byCategory(category)MarnieQueryFilter to items in the given category.
animalSupplies()MarnieQueryFilter to animal supply items (Hay, Heater, Auto-Grabber).
tools()MarnieQueryFilter to tools (Milk Pail, Shears).
furniture()MarnieQueryFilter to furniture and decor items.
alwaysAvailable()MarnieQueryFilter to items with no special purchase condition.

Sort Methods

MethodReturnsDescription
sortByPrice(order?)MarnieQuerySort by price. Pass 'asc' (default) or 'desc'.
sortByName(order?)MarnieQuerySort alphabetically by name. Pass 'asc' (default) or 'desc'.

Examples

List all items by category

import { marnie } from 'stardew-valley-data'

const categories = [
  'animal-supply',
  'tool',
  'furniture',
  'catalogue',
  'special',
]

categories.forEach((cat) => {
  const items = marnie().byCategory(cat).get()
  if (items.length > 0) {
    console.log(`\n${cat.toUpperCase()} (${items.length}):`)
    items.forEach((item) => console.log(`  ${item.name} - ${item.price}g`))
  }
})

Get the most expensive item

import { marnie } from 'stardew-valley-data'

const priciest = marnie().sortByPrice('desc').first()

if (priciest) {
  console.log(`${priciest.name} costs ${priciest.price}g`)
}

List always-available items

import { marnie } from 'stardew-valley-data'

const available = marnie().alwaysAvailable().sortByName().get()

available.forEach((item) => {
  console.log(`${item.name} - ${item.price}g (${item.category})`)
})
Previous
Krobus