56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
/*
|
|
* Functions for BedWars exp and level conversions.
|
|
*/
|
|
const EASY_LEVELS = 4
|
|
const EASY_LEVELS_XP = 7000
|
|
const XP_PER_PRESTIGE = 96 * 5000 + EASY_LEVELS_XP
|
|
const LEVELS_PER_PRESTIGE = 100
|
|
const HIGHEST_PRESTIGE = 10
|
|
|
|
export function getBWLevel(level: number) {
|
|
if (level > HIGHEST_PRESTIGE * LEVELS_PER_PRESTIGE) {
|
|
return level - HIGHEST_PRESTIGE * LEVELS_PER_PRESTIGE
|
|
}
|
|
|
|
return level % LEVELS_PER_PRESTIGE
|
|
}
|
|
|
|
export function getBWExpForLevel(level: number) {
|
|
if (level === 0) return 0
|
|
|
|
const respectedLevel = getBWLevel(level)
|
|
if (respectedLevel > EASY_LEVELS) {
|
|
return 5000
|
|
}
|
|
|
|
switch (respectedLevel) {
|
|
case 1:
|
|
return 500
|
|
case 2:
|
|
return 1000
|
|
case 3:
|
|
return 2000
|
|
case 4:
|
|
return 3500
|
|
default:
|
|
return 5000
|
|
}
|
|
}
|
|
|
|
export function getBWLevelForExp(exp: number) {
|
|
const prestiges = Math.floor(exp / XP_PER_PRESTIGE)
|
|
let level = prestiges * LEVELS_PER_PRESTIGE
|
|
let expWithoutPrestiges = exp - (prestiges * XP_PER_PRESTIGE)
|
|
let expForEasyLevel
|
|
|
|
for (let i = 1; i <= EASY_LEVELS; i += 1) {
|
|
expForEasyLevel = getBWExpForLevel(i)
|
|
if (expWithoutPrestiges < expForEasyLevel) {
|
|
break
|
|
}
|
|
level += 1
|
|
expWithoutPrestiges -= expForEasyLevel
|
|
}
|
|
return level + Math.floor(expWithoutPrestiges / 5000)
|
|
}
|