Skip to content

流程说明

强化流程围绕“目标装备 + 强化配方 + 消耗材料 + 成功/失败结果”运行。排查问题时按流程定位:先看配方是否匹配,再看材料和费用,最后看 PDC 写入与展示刷新。

标准流程

text
┌─────────────────────────────────────────────────────────────┐
│ 1. 玩家打开强化 GUI                                          │
│ 2. 放入目标装备 → 读取当前星级和装备类型                       │
│ 3. 匹配可用强化配方(等级段、装备类型、权限)                   │
│ 4. 校验材料、金币、保护符、幸运符和条件                        │
│ 5. 计算成功率(基础率 + 材料加成 + 幸运符加成 - 星级修正)      │
│ 6. 检查保底状态(连续失败计数是否达到阈值)                     │
│ 7. 扣除消耗(材料、金币、保护符)                              │
│ 8. 执行随机判定 → 成功 / 失败                                 │
│ 9. 写入 PDC 强化数据                                         │
│ 10. CoreLib 重建装备展示                                      │
│ 11. 执行对应分支动作                                          │
│ 12. 刷新 GUI 和玩家背包                                       │
└─────────────────────────────────────────────────────────────┘

排查入口

现象先检查
GUI 显示无法强化配方 match、当前星级、权限和 stars 节点。
点击后提示材料不足materials、物品来源、数量和玩家实际背包。
金币不足或扣费异常economy.currencies、经济提供器和 cost_formula
星级没有变化PDC strengthen layer 是否写入,是否被失败分支降级或保护。
Lore 没刷新CoreLib 装配是否执行,必要时使用 refresh 命令。

详细阶段说明

阶段 1-2:打开 GUI 与装备识别

玩家打开强化 GUI 后,将目标装备放入指定槽位。模块会:

  • 读取装备当前的 strengthen layer(星级、锻印状态、保底计数)。
  • 识别装备类型(通过 Material tag、物品来源或 PDC 标记)。
  • 如果装备没有 strengthen layer,视为 +0。

阶段 3:配方匹配

根据以下条件筛选可用配方:

  • 装备类型是否匹配配方的 match 规则。
  • 当前星级是否未超过 limits.max_star,且目标星级存在对应 stars 配置。
  • 玩家是否拥有配方所需权限。
  • 配方是否启用。

如果没有匹配到配方,GUI 应提示"无法强化"。

阶段 4:校验

校验以下内容:

校验项失败行为
必需材料数量提示材料不足,阻止操作。
经济余额提示金币不足,阻止操作。
条件检查执行 deny_actions,阻止操作。
星级上限提示已达最高等级,阻止操作。

保护符和幸运符在此阶段被识别但不强制要求。

阶段 5:成功率计算

text
最终成功率 = 基础成功率 + 材料加成 + 幸运符加成

成功率通常限制在 0~1 范围内。部分配方可能允许超过 100%(保证成功)。

阶段 6:保底检查

如果配方配置了 guarantee_after

  • 连续失败次数 ≥ guarantee_after 时,本次强制成功。
  • 保底触发后重置计数器。

阶段 7:消耗扣除

在所有校验通过后扣除:

  • 必需材料(按配置数量消耗)。
  • 经济费用(按 economy.currencies[].cost_formula 计算)。
  • 保护符(如果放入了保护符,无论成功失败都消耗)。
  • 幸运符(如果放入了幸运符,无论成功失败都消耗)。

阶段 8:随机判定

生成 0~1 随机数,与最终成功率比较:

  • 随机数 ≤ 成功率 → 成功
  • 随机数 > 成功率 → 失败

阶段 9:写入 PDC

根据结果更新 strengthen layer:

  • 成功:星级 +1,重置保底计数,可能触发里程碑。
  • 失败 keep:星级不变,保底计数 +1。
  • 失败 downgrade:星级 -N(N 由 downgrade_levels 决定),保底计数 +1。
  • 失败 destroy:装备被摧毁(从背包移除),保底计数重置。
  • 保护触发:抵消 downgrade 或 destroy,改为 keep,保底计数 +1。

阶段 10-12:展示重建与反馈

  • CoreLib Assembly 重建装备名称和 Lore(更新星级显示)。
  • Attribute 可选读取新的强化属性。
  • 执行对应分支的动作列表。
  • 刷新 GUI 显示。

结果分支

分支触发条件说明
success随机判定成功或保底触发星级提升,重置保底计数。
failure_keep失败且惩罚为 keep星级不变,材料和金币已消耗。
failure_downgrade失败且惩罚为 downgrade,无保护符星级降低。
failure_destroy失败且惩罚为 destroy,无保护符装备被摧毁。
protected失败且惩罚为 downgrade/destroy,但有保护符保护符抵消惩罚,等效于 keep。

锻印(Temper / Crack)

部分配方可能在失败时产生锻印(历史命名为 crack)。锻印是一种累积标记:

  • 每次特定类型的失败可能增加锻印计数。
  • 锻印达到阈值时可能触发额外惩罚或限制。
  • 部分配方可能提供"清除锻印"的材料或流程。

锻印状态保存在 strengthen layer 的 PDC 中。

里程碑

达到指定星级时可以触发里程碑效果:

  • 额外属性加成。
  • 特殊名称前缀或 Lore 标记。
  • 执行里程碑动作(如全服广播)。

里程碑配置通常在配方或全局配置中定义。

动作节点

节点触发时机
actions.success强化成功后。
actions.failure强化失败后(所有失败类型)。
actions.failure_downgrade降级失败后。
actions.failure_destroy摧毁失败后。
actions.protected保护符触发后。
actions.guarantee保底触发后。

动作示例

yaml
actions:
  success:
    - 'sendtitle title="<green>强化成功</green>" subtitle="<gray>装备提升至 +%star%</gray>" fade_in=5t stay=40t fade_out=10t'
    - 'playsound sound=minecraft:block.anvil.use volume=1 pitch=1.3'
    - 'spawnparticle particle=happy_villager count=15 offset_x=0.3 offset_y=0.5 offset_z=0.3'
  failure_keep:
    - 'sendmessage text="<red>强化失败,装备等级未变。</red>"'
    - 'playsound sound=minecraft:entity.villager.no volume=1 pitch=1'
  failure_downgrade:
    - 'sendmessage text="<red>强化失败,装备等级下降至 +%star%。</red>"'
    - 'playsound sound=minecraft:block.anvil.destroy volume=1 pitch=0.8'
  failure_destroy:
    - 'sendtitle title="<dark_red>装备损毁</dark_red>" subtitle="<gray>强化失败,装备已被摧毁</gray>"'
    - 'playsound sound=minecraft:entity.wither.death volume=0.5 pitch=1.5'
  protected:
    - 'sendmessage text="<yellow>保护符发挥了作用,抵消了失败惩罚。</yellow>"'
    - 'playsound sound=minecraft:block.enchantment_table.use volume=1 pitch=1.2'
  guarantee:
    - 'sendmessage text="<gold>保底触发!本次强化必定成功。</gold>"'