UNPKG

@jeremyckahn/farmhand

Version:
50 lines (41 loc) 1.3 kB
/** @typedef {farmhand.keg} keg */ import { KEG_INTEREST_RATE, WINE_GROWTH_TIMELINE_CAP, WINE_INTEREST_RATE, } from '../constants.js' import { itemsMap } from '../data/maps.js' import { wineService } from '../services/wine.js' import { getItemBaseValue } from './getItemBaseValue.js' /** * @param {keg} keg */ export const getKegValue = keg => { const { itemId, daysUntilMature } = keg const kegItem = itemsMap[itemId] if (daysUntilMature > 0) return 0 let principalValue = 0 let interestRate = 0 let exponent = 0 if (wineService.isWineRecipe(kegItem)) { principalValue = kegItem.value interestRate = WINE_INTEREST_RATE exponent = Math.min(Math.max(-daysUntilMature, 1), WINE_GROWTH_TIMELINE_CAP) } else { principalValue = (kegItem.tier ?? 1) * getItemBaseValue(itemId) interestRate = KEG_INTEREST_RATE exponent = Math.abs(keg.daysUntilMature) } // NOTE: Keg values are (loosely) based on the standard compound interest // rate formula: // // A = P(1 + r/n)^nt // // A = final amount // P = initial principal balance // r = interest rate // n = number of times interest applied per time period // t = number of time periods elapsed const kegValue = principalValue * (1 + interestRate) ** exponent return kegValue }