SlowThenVeryFastGrowthRateCalculator.kt

package io.github.lishangbu.avalon.game.calculator.growthrate

import org.springframework.stereotype.Service

/**
 * 最快组成长速率计算器
 *
 * @author lishangbu
 * @since 2026/2/25
 */
@Service
class SlowThenVeryFastGrowthRateCalculator : AbstractGrowthRateCalculator() {
    /** 获取成长速率内部名称 */
    override fun getGrowthRateInternalName(): String = "slow-then-very-fast"

    /**
     * 计算最快组在指定等级下的经验值
     *
     * 使用官方分段函数实现
     */
    override fun tryCalculateGrowthRate(level: Int): Int {
        val cubedLevel = level * level * level
        return if (level <= 50) {
            cubedLevel * (100 - level) / 50
        } else if (level <= 68) {
            cubedLevel * (150 - level) / 100
        } else if (level <= 98) {
            val mod = level % 3
            val term = 1274 + mod * mod - 9 * mod - 20 * (level / 3)
            cubedLevel * term / 1000
        } else {
            cubedLevel * (160 - level) / 100
        }
    }
}