HpStatCalculator.kt

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

import org.springframework.stereotype.Service

/**
 * HP 能力值计算器
 *
 * 公式:
 *
 * `HP = floor((2 * base + IV + floor(EV / 4)) * level / 100) + level + 10`
 *
 * 特例:
 *
 * 脱壳忍者的 HP 固定为 `1`。
 */
@Service
class HpStatCalculator : AbstractStatCalculator("hp") {
    override fun calculateStat(
        base: Int,
        iv: Int,
        ev: Int,
        level: Int,
        nature: Int,
    ): Int {
        if (level <= 0) {
            return 0
        }
        // 计算器目前只接收能力项的内部名,不接收物种信息。
        // 现有资料中只有脱壳忍者的 HP 种族值为 1,因此这里按 base=1 处理固定 HP。
        if (base == 1) {
            return 1
        }
        return calculateBaseStatValue(base, iv, ev, level) + level + 10
    }
}