跳到主要内容

PRD-062 转生与轮回

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

1. 背景与目标​

转生提供满级后的长期成长与数值重置。转生条件、保留项、转生点、专属内容适合用 Lua 编排。

目标

  • 100 级可转生,转生后等级重置,获得转生点与专属属性。
  • 保留装备/图鉴/坐骑等收集,重置等级/技能点/主线。
  • 转生次数越多,成长上限越高。

2. 核心规则​

2.1 转生条件​

  • 等级 ≥ 100,完成转生任务,消耗转生令。
  • 无未领取的等级奖励、无进行中的转生任务。
  • 转生后 24 小时内可回退(仅限首次/可配置)。

2.2 重置与保留​

项目处理
等级/经验重置为 1 级
技能点/天赋重置并返还
主线任务保留已完成标记,可跳过
装备/背包/仓库保留
图鉴/坐骑/宠物/称号保留
排行榜转生榜单独统计

2.3 转生收益​

  • 每次转生获得 5 点转生点,可加成分支。
  • 转生等级提供全属性 +5%/次,上限 5 次。
  • 解锁转生专属副本/商店/称号。

3. 服务端设计​

3.1 Lua 脚本设计​

-- lua/numeric/rebirth.lua
Rebirth = {
level = 100,
max_times = 5,
points_per = 5,
keep = { "equip", "bag", "codex", "mount", "pet", "title" },
}

function OnRebirth(ctx, role)
if ctx:GetLevel(role) < Rebirth.level then return ctx:Fail(role, "等级不足") end
if ctx:GetRebirthTimes(role) >= Rebirth.max_times then return ctx:Fail(role, "已达上限") end
if not ctx:Consume(role, "rebirth_token", 1) then return ctx:Fail(role, "转生令不足") end

ctx:BackupRole(role)
ctx:ResetLevel(role, 1)
ctx:ResetSkills(role)
ctx:ResetTalents(role, true)
ctx:AddRebirthTimes(role, 1)
ctx:AddRebirthPoints(role, Rebirth.points_per)
ctx:RecalcAttributes(role)
ctx:RefreshRebirthRank(role)
end
  • 转生是事务:备份、重置、加点、属性、榜单。
  • 保留项按 keep 列表处理,未列出的按默认重置。
  • 转生点分配走独立接口,可重置。

3.2 协议​

方向协议说明
C→SCS_Rebirth转生
C→SCS_RebirthPoint分配转生点
S→CSC_RebirthInfo次数/点数/加成
S→CSC_RebirthResult结果/重置项

3.3 竞技约束​

  • 转生后 24 小时内不参与跨服联赛(可配置)。
  • 竞技场按转生次数分段,避免新转生被碾压。
  • 转生榜与等级榜分开。

4. 客户端设计​

  • 转生面板:条件、保留项、收益、确认。
  • 转生动画/全服公告。
  • 转生点分配树。
  • 转生专属商店/副本入口。
  • 回退入口与倒计时。

5. 配置与 Lua 接口​

配置说明
level转生等级
max_times最多次数
points_per转生点
attr_bonus属性加成
keep保留项

Lua 接口:GetLevel、ResetLevel、ResetSkills、ResetTalents、AddRebirthTimes、AddRebirthPoints、RefreshRebirthRank。

6. 边界与异常​

场景处理
转生中掉线事务回滚/重连查询
背包满保留项不涉及背包,正常
任务链断链转生后按标记跳过/补接
回退超过时限禁止
脚本异常回滚到备份

7. 验收标准​

  • 转生条件/重置/保留/收益正确。
  • 转生点分配/重置正确。
  • 事务失败可回滚。
  • 榜单/竞技分段正确。
  • 客户端预览与实际一致。