Combat

Rings

Access every ring in Stardew Valley with filters for craftable and purchasable rings, plus sorting by sell price.

Quick Start

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

// Get all rings
const allRings = rings().get()

// Find a specific ring
const iridiumBand = rings().findByName('Iridium Band')

// Get craftable rings sorted by value
const craftableRings = rings().craftable().sortBySellPrice('desc').get()

Type Definition

The Ring type represents a single ring item.

FieldTypeDescription
idstringUnique identifier
namestringDisplay name
descriptionstringIn-game description
sellPricenumberSell price in gold
imagestringRelative path to the ring image
craftingLevelnumber | nullRequired crafting level, or null if not craftable
craftingSkill'combat' | 'mining' | nullSkill associated with the crafting recipe, or null
ingredientsIngredient[]Crafting ingredients (empty array if not craftable)
purchasePricenumber | nullPurchase price in gold, or null if not purchasable
sourcesstring[]How the ring can be obtained

Ingredient

FieldTypeDescription
namestringIngredient name
idstringIngredient item ID
quantitynumberQuantity required

Query Methods

Create a query with the rings() function. Every filter and sort method returns a new RingQuery, so you can chain calls in any order.

Filter Methods

MethodSignatureDescription
craftablecraftable(): RingQueryFilter to rings that have crafting ingredients.
purchasablepurchasable(): RingQueryFilter to rings available for purchase (have a purchasePrice).

Sort Methods

MethodSignatureDescription
sortBySellPricesortBySellPrice(order?: 'asc' | 'desc'): RingQuerySort by sell price. Default: 'desc' (most valuable first).

Terminal Methods

These methods are inherited from the base query and return actual values instead of a new query.

MethodSignatureDescription
getget(): Ring[]Return all results as an array.
firstfirst(): Ring | undefinedReturn the first result, or undefined if empty.
findfind(id: string): Ring | undefinedFind an item by its exact ID.
findByNamefindByName(name: string): Ring | undefinedFind an item by name (case-insensitive exact match).
countcount(): numberReturn the number of results.

Examples

List all craftable rings with their ingredients

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

const craftable = rings().craftable().get()
craftable.forEach((ring) => {
  const recipe = ring.ingredients
    .map((i) => `${i.quantity}x ${i.name}`)
    .join(', ')
  console.log(`${ring.name} (Combat Lv ${ring.craftingLevel}): ${recipe}`)
})

Find the most valuable purchasable rings

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

const valuable = rings().purchasable().sortBySellPrice('desc').get().slice(0, 5)

valuable.forEach((r) =>
  console.log(`${r.name}: Buy ${r.purchasePrice}g / Sell ${r.sellPrice}g`),
)

Get all ring sources

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

const ring = rings().findByName("Burglar's Ring")
if (ring) {
  console.log(`Sources: ${ring.sources.join(', ')}`)
}

Count rings by availability

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

console.log(`Total rings: ${rings().count()}`)
console.log(`Craftable: ${rings().craftable().count()}`)
console.log(`Purchasable: ${rings().purchasable().count()}`)
Previous
Weapons & weapon stats