PRD-063 修炼与心法
文档编号:PRD-063
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
脚本挂载:lua/numeric/cultivation.lua
1. 背景与目标
修炼/心法提供离线/在线的长线属性成长。修炼队列、突破、加速、心法组合适合用 Lua 编排。
目标
- 4 个修炼位,可同时修炼不同心法。
- 修炼按时间产出修为,突破提升心法等级。
- 心法可组合激活羁绊,提供额外属性。
2. 核心规则
2.1 修炼位
- 初始 1 个,等级/道具解锁第 2–4 个。
- 每个位可修炼 1 本心法,修炼中不可替换。
- 修炼速度受心法品质、修炼加成、VIP 影响。
2.2 修为与突破
- 每 10 秒产出 1 点修为,离线按 50% 结算,上限 12 小时。
- 修为满可突破,成功率随等级下降,失败积累悟性。
- 悟性满 100 必成;突破后心法等级 +1,属性提升。
- 心法等级上限受角色等级/转生次数限制。
2.3 羁绊
- 心法分 4 系:攻击、防御、生命、辅助。
- 同时装备 2/4 本同系心法激活羁绊。
- 羁绊只统计当前修炼位,不统计背包。
3. 服务端设计
3.1 Lua 脚本设计
-- lua/numeric/cultivation.lua
Cultivation = {
slots = 4,
tick_seconds = 10,
offline_rate = 0.5,
offline_cap_hours = 12,
breakthrough = { base=0.8, decay=0.05, min=0.2, pity=100 },
}
function OnCultivateStart(ctx, role, slot, book_id)
if ctx:GetSlotLevel(role) < slot then return ctx:Fail(role, "修炼位未解锁") end
if ctx:GetCultivating(role, slot) then return ctx:Fail(role, "该位正在修炼") end
ctx:SetCultivating(role, slot, book_id, ctx:Now())
ctx:StartTimer("cult_" .. role .. "_" .. slot, Cultivation.tick_seconds, OnTick)
end
function OnTick(ctx, role, slot)
local book = ctx:GetCultivating(role, slot)
if not book then return ctx:StopTimer() end
ctx:AddCultivationExp(role, book, ctx:CalcRate(role, book))
end
function OnBreakthrough(ctx, role, book_id)
local rate = ctx:GetBreakRate(book_id, Cultivation.breakthrough)
if ctx:Random() <= rate then
ctx:AddBookLevel(role, book_id, 1)
ctx:ClearPity(role, book_id)
else
ctx:AddPity(role, book_id, 10)
end
end
- 修炼状态/时间戳持久化,登录按离线时长补算。
- 离线补算按 50% 且封顶 12 小时,防止挂机脚本。
- 突破/羁绊由脚本计算,属性汇总到角色。
3.2 协议
| 方向 | 协议 | 说明 |
|---|---|---|
| C→S | CS_CultivateStart | 开始修炼 |
| C→S | CS_CultivateStop | 停止 |
| C→S | CS_Breakthrough | 突破 |
| S→C | SC_CultivationInfo | 修炼位/修为/羁绊 |
| S→C | SC_BreakthroughResult | 成功/失败/悟性 |
3.3 竞技约束
- 心法属性计入战力,竞技模板可归一化。
- 战斗中不可切换心法/突破。
- 离线收益不计入竞技赛季积分。
4. 客户端设计
- 修炼面板:4 位、心法、修为进度、速度。
- 突破按钮、成功率、悟性进度。
- 羁绊提示:当前系/件数/效果。
- 离线收益结算弹窗。
- 心法图鉴/来源。
5. 配置与 Lua 接口
| 配置 | 说明 |
|---|---|
book_id | 心法 |
quality | 品质 |
max_level | 等级上限 |
break_rate | 突破成功率 |
bond | 羁绊效果 |
Lua 接口:SetCultivating、GetCultivating、AddCultivationExp、AddBookLevel、CalcRate、RecalcAttributes。
6. 边界与异常
| 场景 | 处理 |
|---|---|
| 修炼位未解锁 | 拒绝 |
| 重复开始 | 拒绝 |
| 离线超过 12h | 按上限结算 |
| 心法被删除 | 停止修炼,邮件通知 |
| 战斗中突破 | 拒绝 |
| 脚本异常 | 停止该位修炼,保留修为 |
7. 验收标准
- 修炼位/开始/停止/产出/离线结算正确。
- 突破成功率/悟性/保底正确。
- 羁绊统计/属性正确。
- 战斗/删除/异常处理正确。
- 客户端进度与服务端一致。