品质系统
品质系统决定锻造结果的品质等级,影响材料效果的数值倍率和物品展示。
全局品质配置
品质在 config.yml 的 quality 节点中全局配置:
yaml
quality:
tiers:
- "普通-70-1.0"
- "精良-25-1.05"
- "稀有-4-1.10"
- "史诗-1-1.20"
default_tier: "普通"
guarantee:
enabled: true
threshold: 15
minimum: "精良"
item_meta:
enabled: true
tiers:
史诗:
name_actions:
- action: "prepend_prefix"
value: "<gold>[史诗] "
lore_actions:
- action: "append"
content:
- "<gold>史诗品质锻造"
action:
- 'broadcastmessage text="<gold>%player_name% 锻造出了史诗品质装备!"'tiers 格式
每个品质等级为一个字符串,格式为 "品质名-权重-倍率":
| 部分 | 说明 |
|---|---|
| 品质名 | 品质的唯一标识和显示名。 |
| 权重 | 随机权重,越大越常见。 |
| 倍率 | 材料效果数值的乘数(配置值 × 材料数量 × 品质倍率)。 |
保底机制
| 字段 | 类型 | 说明 |
|---|---|---|
guarantee.enabled | boolean | 是否启用保底。 |
guarantee.threshold | integer | 连续未获得高品质的次数阈值。达到后保底触发。 |
guarantee.minimum | string | 保底触发时的最低品质等级。 |
保底计数器按玩家 + 配方维度记录。
quality_modify的force模式不会触发保底计数。
item_meta 品质写入
当 item_meta.enabled: true 时,锻造成功后会根据品质等级对结果物品执行额外操作:
| 字段 | 说明 |
|---|---|
name_actions | 按品质等级对物品名称执行操作。 |
lore_actions | 按品质等级对物品 Lore 执行操作。 |
action | 按品质等级执行动作列表(如全服广播)。 |
确定性算法
品质计算使用确定性算法:相同的输入(玩家、配方、材料、保底计数)在 30 秒内总是产生相同的品质结果。内部使用 SHA-256 哈希的前 12 位十六进制字符作为随机源。
这意味着:
- 玩家在 GUI 中预览品质结果是准确的。
- 30 秒内重复提交相同输入不会改变结果。
- 更换材料或等待超时后结果会变化。
配方级别品质覆盖
每个配方可以在 quality 节点中覆盖全局配置:
yaml
quality:
enabled: true
tiers:
- "普通-50-1.0"
- "精良-35-1.08"
- "史诗-15-1.25"
guarantee:
enabled: true
threshold: 5
minimum: "精良"与材料效果的交互
variables效果值 =配置值 × 材料数量 × 品质倍率attribute效果值 =配置值 × 材料数量 × 品质倍率quality_modify的force模式会跳过保底计数器quality_modify的minimum模式只在随机结果低于指定品质时生效