PRD-057 附魔与铭文
文档编号:PRD-057
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
脚本挂载:lua/numeric/enchant.lua
1. 背景与目标
附魔/铭文提供装备的额外词条与套装效果,是数值追求与材料消耗点。附魔等级、成功率、套装组合适合用 Lua 配置。
目标
- 每件装备 1–2 个附魔槽,使用卷轴附加属性。
- 同套附魔激活 2/4/6 件套装效果。
- 支持覆盖、移除、保护符。
2. 核心规则
2.1 附魔槽
- 精良及以上装备有 1 槽,史诗 2 槽,传说 2 槽(可打孔第 3 槽)。
- 附魔卷轴分 1–5 级,等级越高属性越高、成功率越低。
- 同槽新附魔覆盖旧附魔,旧附魔不返还。
- 附魔绑定装备,不可转移到其他装备。
2.2 成功率
- 1–3 级 100%,4 级 70%,5 级 45%。
- 失败只扣卷轴,不损坏装备;保护符保证失败不降级(附魔有等级时)。
- 连续失败 5 次后,下一次成功率 +20%(保底)。
2.3 套装
- 附魔分 6 套:烈焰、寒冰、雷霆、大地、光明、暗影。
- 同套 2/4/6 件激活不同效果。
- 套装效果只按当前装备的附魔统计,不按背包。
3. 服务端设计
3.1 Lua 脚本设计
-- lua/numeric/enchant.lua
Enchant = {
max_slots = 3,
scrolls = { [1]={rate=1.0,attr=10}, [4]={rate=0.7,attr=40}, [5]={rate=0.45,attr=60} },
sets = {
flame = { [2]={atk=30}, [4]={atk=80}, [6]={atk=150, crit=0.05} },
},
}
function OnEnchant(ctx, role, item_uid, slot, scroll_id)
local equip = ctx:GetEquip(item_uid)
local scroll = Enchant.scrolls[scroll_id]
if not equip or not scroll or slot > Enchant.max_slots then
return ctx:Fail(role, "参数不合法")
end
if not ctx:ConsumeItem(role, scroll_id, 1) then
return ctx:Fail(role, "卷轴不足")
end
if ctx:Random() <= scroll.rate then
ctx:SetEnchant(equip, slot, scroll_id)
ctx:RecalcAttributes(role)
end
ctx:AddFailCount(role, equip, slot)
end
- 附魔槽、套装统计由脚本计算,C++ 存槽位数据。
- 覆盖/移除走同一接口,保证属性重算。
- 套装效果在每次附魔变化后重新汇总。
3.2 协议
| 方向 | 协议 | 说明 |
|---|---|---|
| C→S | CS_Enchant | 附魔 |
| C→S | CS_EnchantRemove | 移除 |
| S→C | SC_EnchantInfo | 槽位/套装/成功率 |
| S→C | SC_EnchantResult | 成功/失败/属性 |
3.3 数值约束
- 附魔属性计入战力,设单件上限。
- 套装效果与装备套装(PRD-025)分开计算,避免重复。
- 竞技模板可关闭附魔或归一化。
4. 客户端设计
- 附魔面板:装备槽位、卷轴选择、成功率、属性预览。
- 套装提示:当前件数/下一档效果。
- 覆盖/移除二次确认。
- 失败动画与保底计数。
- 属性对比。
5. 配置与 Lua 接口
| 配置 | 说明 |
|---|---|
scroll_id | 卷轴 |
level / rate | 等级/成功率 |
attr | 属性 |
set_id | 套装 |
set_bonus | 套装效果 |
slot_limit | 槽位上限 |
Lua 接口:GetEquip、ConsumeItem、SetEnchant、RemoveEnchant、RecalcAttributes、AddFailCount。
6. 边界与异常
| 场景 | 处理 |
|---|---|
| 装备不可附魔 | 拒绝 |
| 槽位未解锁 | 拒绝 |
| 卷轴不足 | 拒绝,不扣 |
| 覆盖传说附魔 | 二次确认 |
| 装备被交易 | 先移除附魔或禁止交易 |
| 热更套装 | 下次重算生效 |
7. 验收标准
- 附魔/覆盖/移除/套装/保底正确。
- 成功率、消耗、属性预览一致。
- 套装件数统计正确,不与装备套装混淆。
- 交易/删除装备时附魔处理正确。
- 客户端槽位/套装显示一致。