AbstractStatCalculator.kt
package io.github.lishangbu.avalon.game.calculator.stat
/**
* 抽象能力值计算器
*
* 提供属性支持判断和第三世代后的公共中间值计算
*/
abstract class AbstractStatCalculator(
private vararg val supportedStats: String,
) : StatCalculator {
/** 判断是否支持指定能力项 */
override fun support(stateInternalName: String): Boolean = supportedStats.any { supportedStat -> supportedStat.equals(stateInternalName, ignoreCase = true) }
/** 计算第三世代之后公式的公共部分 */
protected fun calculateBaseStatValue(
base: Int,
dv: Int,
stateExp: Int,
level: Int,
): Int = ((2 * base + dv + stateExp / 4) * level) / 100
}