import{_ as s,c as a,o as n,d as l}from"./app.99998402.js";const h=JSON.parse('{"title":"Buyables","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/buyables.md","lastUpdated":null}'),o={name:"public/lit/docs/buyables.md"},e=l(`

Buyables

Buyables are usually things that can be bought multiple times with scaling costs. If you set a respec function, the player can reset the purchases to get their currency back.

The amount of a buyable owned is a Decimal.

Useful functions for dealing with buyables and implementing their effects:

Buyables should be formatted like this:

js
buyables: {
    rows: # of rows,
    cols: # of columns,
    11: {
        cost(x) { return new Decimal(1).mul(x || getBuyableAmt(this.layer, this.id)) },
        display() { return "Blah" },
        canAfford() { return player[this.layer].points.gte(this.cost()) },
        buy() {
            player[this.layer].points = player[this.layer].points.sub(this.cost())
            setBuyableAmount(this.layer, this.id, getBuyableAmt(this.layer, this.id).add(1))
        },
        etc
    },
    etc
}

Features:

Sell One/Sell All:

Including a sellOne or sellAll function will cause an additional button to appear beneath the buyable. They are functionally identical, but "sell one" appears above "sell all". You can also use them for other things.

`,12),t=[e];function p(r,c,y,i,F,u){return n(),a("div",null,t)}const b=s(o,[["render",p]]);export{h as __pageData,b as default};