File size: 1,059 Bytes
a2b2aac |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
export const growth = Math.pow(Math.PI / Math.E, 1.618) * Math.E * .75
export function xpRange(level, multiplier = global.multiplier || 1) {
if (level < 0)
throw new TypeError('level cannot be negative value')
level = Math.floor(level)
let min = level === 0 ? 0 : Math.round(Math.pow(level, growth) * multiplier) + 1
let max = Math.round(Math.pow(++level, growth) * multiplier)
return {
min,
max,
xp: max - min
}
}
export function findLevel(xp, multiplier = global.multiplier || 1) {
if (xp === Infinity)
return Infinity
if (isNaN(xp))
return NaN
if (xp <= 0)
return -1
let level = 0
do
level++
while (xpRange(level, multiplier).min <= xp)
return --level
}
export function canLevelUp(level, xp, multiplier = global.multiplier || 1) {
if (level < 0)
return false
if (xp === Infinity)
return true
if (isNaN(xp))
return false
if (xp <= 0)
return false
return level < findLevel(xp, multiplier)
} |