跳到主要内容

PRD-056 装备洗练与词条重铸

文档编号:PRD-056
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
脚本挂载:lua/numeric/reforge.lua

1. 背景与目标​

洗练/重铸提供装备词条的二次追求。词条池、锁定、保底、消耗适合用 Lua 配置,便于赛季调数值。

目标

  • 每件装备 2–4 条随机词条,可单条洗练或整件重铸。
  • 锁定词条增加消耗,结果可预览/对比。
  • 词条品质、数值区间、同词条互斥可配置。

2. 核心规则​

2.1 词条​

品质数值区间出现权重
普通50%–70%50
精良70%–85%30
史诗85%–95%15
传说95%–100%5
  • 同件装备不允许重复词条。
  • 词条类型受装备部位限制。
  • 词条数值 = 区间内随机 × 装备等级系数。

2.2 洗练方式​

  • 单条洗练:选择 1 条词条,消耗洗练石,重新随机类型与数值。
  • 整件重铸:重置全部未锁定词条,消耗更高。
  • 锁定:每条锁定额外消耗锁定符,最多锁 2 条。
  • 保底:连续 10 次未出史诗,下一次必出史诗(可配置)。

2.3 替换与保留​

  • 洗练结果先进入“待替换”状态,玩家选择替换/放弃。
  • 放弃不返还材料,保留原词条。
  • 替换后旧词条进入历史记录,可查看最近 5 次。

3. 服务端设计​

3.1 Lua 脚本设计​

-- lua/numeric/reforge.lua
Reforge = {
max_affix = 4,
lock_cost = { item=7101, count=1 },
pity_threshold = 10,
pools = {
weapon = { {id="atk",w=30}, {id="crit",w=20}, {id="pierce",w=15} },
},
}

function OnReforge(ctx, role, item_uid, lock_indexes, mode)
local equip = ctx:GetEquip(item_uid)
if not equip then return ctx:Fail(role, "装备不存在") end
local cost = ctx:CalcReforgeCost(mode, #lock_indexes)
if not ctx:Consume(role, cost) then return ctx:Fail(role, "材料不足") end

local new_affixes = {}
for i, affix in ipairs(equip.affixes) do
if ctx:IsLocked(i, lock_indexes) then
new_affixes[i] = affix
else
new_affixes[i] = ctx:RollAffix(Reforge.pools[equip.type], equip.level)
end
end
ctx:SetPendingReforge(role, item_uid, new_affixes)
end
  • 洗练结果不立即写入装备,进入待替换,避免误操作。
  • 锁定索引由客户端提交,服务端校验数量与合法性。
  • 保底计数按角色 + 装备槽位记录。

3.2 协议​

方向协议说明
C→SCS_Reforge洗练/重铸
C→SCS_ReforgeConfirm替换/放弃
S→CSC_ReforgePreview新旧词条对比
S→CSC_ReforgeResult结果/保底

3.3 数值与竞技​

  • 词条总战力纳入战力公式,设单件上限。
  • 竞技场装备模板会归一化词条,避免碾压。
  • 异常高数值词条触发日志,可回滚。

4. 客户端设计​

  • 洗练面板:装备词条列表、锁定勾选、消耗预览。
  • 新旧对比:绿色提升/红色下降,可逐条查看。
  • 替换/放弃二次确认。
  • 保底进度与历史记录。
  • 一键洗练到目标品质(可选)。

5. 配置与 Lua 接口​

配置说明
affix_id词条
pool部位词条池
quality_range品质区间
lock_cost锁定消耗
pity_threshold保底次数

Lua 接口:GetEquip、CalcReforgeCost、Consume、RollAffix、SetPendingReforge、ConfirmReforge。

6. 边界与异常​

场景处理
装备已锁定/交易中拒绝
锁定数量超限拒绝
待替换状态下线保留 10 分钟,超时放弃
重复确认幂等
词条池为空返回失败,不扣材料
热更词条池下次洗练生效

7. 验收标准​

  • 单条/整件洗练、锁定、保底、替换/放弃正确。
  • 词条互斥、部位限制、数值区间正确。
  • 材料扣除与结果事务一致。
  • 待替换/断线/重复请求处理正确。
  • 客户端对比与服务端一致。