[MD]
## 表达式计算教程
插件使用 [exp4j](https://github.com/fasseg/exp4j) 表达式引擎,支持在配置文件中编写数学公式来自定义游戏数值,无需修改代码即可调整平衡性。
### 可用变量
| 变量 | 类型 | 说明 |
|------|------|------|
| `level` | double | 等级(怪物等级 / 玩家等级 / 装备等级 / 等级差,取决于公式) |
| `count` | double | 物品原始数量(仅材料掉落公式可用) |
| `damage` | double | 原始伤害(预留变量) |
| `diff` | double | 等级差(预留变量) |
### 支持的运算符与函数
- **基础运算**: `+`, `-`, `*`, `/`
- **幂运算**: `^`(如 `1.2 ^ level`)
- **取模**: `%`
- **数学函数**: `abs()`, `sqrt()`, `log()`, `sin()`, `cos()`, `tan()`, `min()`, `max()` 等
- **括号**: `()` 控制运算优先级
### 公式配置一览
| 配置键 | 可用变量 | 默认公式 | 说明 |
|--------|---------|---------|------|
| `等级材料掉落公式` | `level`, `count` | `count * level * 0.5` | 额外掉落数量 = 公式结果 |
| `等级击杀经验公式` | `level` | `level * 10` | 击杀获得经验 = 公式结果 |
| `玩家升级经验公式` | `level` | `1000 * 1.2 ^ level` | 升级所需经验 = 公式结果 |
| `玩家升级经济公式` | `level` | `10000 * 1.2 ^ level` | 升级所需经济 = 公式结果 |
| `装备升级材料公式` | `level` | `1.2 ^ level` | 实际材料 = 基础材料数 × 公式结果 |
| `装备升级经济公式` | `level` | `1000 * 1.2 ^ level` | 升级所需经济 = 公式结果 |
| `剑每级提升攻击公式` | `level` | `level * 2` | 额外攻击力 = 公式结果 |
| `盔甲每级提升血量公式` | `level` | `level * 2` | 额外血量 = 公式结果(每件护甲累加) |
| `等级压制公式` | `level` | `1 + level * 0.2` | 实际伤害 = 原始伤害 × 公式结果 |
### 公式示例
```yaml
# 线性增长:每级增加 10 经验
等级击杀经验公式: "level * 10"
# 指数增长:基础 1000,每级乘以 1.2 倍
玩家升级经验公式: "1000 * 1.2 ^ level"
# 材料掉落与等级和原始数量都相关
等级材料掉落公式: "count * level * 0.5"
# 等级压制:等级差为正时增伤,为负时减伤
# 当 level(等级差) = 5 时,倍率 = 1 + 5 * 0.2 = 2.0 (双倍伤害)
# 当 level(等级差) = -3 时,倍率 = 1 + (-3) * 0.2 = 0.4 (减伤)
等级压制公式: "1 + level * 0.2"
# 使用数学函数:限制压制倍率在 0.5~3.0 之间
等级压制公式: "min(3.0, max(0.5, 1 + level * 0.2))"
# 使用对数增长,避免高等级数值膨胀过大
玩家升级经验公式: "1000 * (1 + log(level + 1))"
```
> **注意**: 表达式计算出错时,插件会在控制台输出错误日志并返回 0。请确保公式语法正确。
[/MD]