PRD-074 子女养育与成长
文档编号:PRD-074
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
脚本挂载:lua/family/parenting.lua
1. 背景与目标
子嗣出生后需要长期养育与成长目标。养育互动、属性培养、阶段突破、成年职业适合用 Lua 编排,与生育(PRD-073)、结婚(PRD-004)组成完整家庭链路。
目标
- 子女分襁褓/幼年/少年/成年四个阶段,逐步解锁互动。
- 每日互动培养体质/智力/魅力/武艺,影响成年职业。
- 成年子女可游历产出家庭资源,不直接参与 PvP 数值碾压。
2. 核心规则
2.1 成长阶段
| 阶段 | 年龄(游戏日) | 解锁 |
|---|---|---|
| 襁褓 | 0–2 | 喂养、哄睡 |
| 幼年 | 3–6 | 讲故事、玩耍 |
| 少年 | 7–13 | 习武、读书、随机事件 |
| 成年 | 14 | 职业选择、游历、家庭加成 |
- 每阶段需累计成长值,成长值来自每日互动与随机事件。
- 阶段突破需父母双方确认(可配置单方)。
- 成年后不再成长,转为职业与游历。
2.2 属性与心情
- 四维:体质、智力、魅力、武艺,0–100,受资质上限限制。
- 心情 0–100,过低拒绝互动;疲劳 0–100,过高收益减半。
- 每日 10 点行动点,互动消耗 1–3 点。
- 每日 0 点恢复行动点,心情/疲劳部分恢复。
2.3 互动
| 互动 | 消耗 | 效果 |
|---|---|---|
| 喂养 | 1 行动点 + 食物 | 体质 +1,心情 +5 |
| 哄睡 | 1 | 疲劳 -20,心情 +3 |
| 讲故事 | 2 | 智力 +1,心情 +5 |
| 玩耍 | 2 | 魅力 +1,疲劳 +10 |
| 习武 | 3 | 武艺 +1,疲劳 +15 |
| 读书 | 3 | 智力 +2,疲劳 +10 |
- 每次互动有概率触发“顿悟”,额外 +2 对应属性。
- 属性达到资质上限后不再增加,转为成长值。
2.4 成年职业
| 职业 | 倾向 | 家庭加成 |
|---|---|---|
| 文官 | 智力最高 | 任务经验 +2% |
| 武将 | 武艺最高 | 副本伤害 +1% |
| 商贾 | 魅力最高 | 金币产出 +2% |
| 匠人 | 体质最高 | 装备修理 -10% |
- 职业由成年时最高属性决定,可消耗道具重选一次。
- 家庭加成全角色生效,设上限,不参与 PvP 结算。
- 成年子女可派去“游历”,按职业带回材料/金币。
3. 服务端设计
3.1 Lua 脚本设计
-- lua/family/parenting.lua
Parenting = {
stages = { 3, 7, 14 }, -- 成长值阈值
daily_actions = 10,
interact = {
feed = { cost=1, attr="con", gain=1, mood=5 },
story = { cost=2, attr="int", gain=1, mood=5 },
play = { cost=2, attr="cha", gain=1, fatigue=10 },
train = { cost=3, attr="war", gain=1, fatigue=15 },
read = { cost=3, attr="int", gain=2, fatigue=10 },
},
career = { int="civil", war="general", cha="merchant", con="artisan" },
}
function OnInteract(ctx, role, child_id, action)
local child = ctx:GetChild(child_id)
local cfg = Parenting.interact[action]
if not ctx:IsParent(role, child) then return ctx:Fail(role, "不是父母") end
if ctx:GetActions(role, child) < cfg.cost then return ctx:Fail(role, "行动点不足") end
if child.mood < 20 then return ctx:Fail(role, "心情过低") end
ctx:ConsumeActions(role, child, cfg.cost)
local gain = cfg.gain
if child.fatigue >= 80 then gain = math.floor(gain / 2) end
ctx:AddChildAttr(child, cfg.attr, gain, ctx:GetAptitudeCap(child))
ctx:AddGrowth(child, gain)
ctx:CheckStageUp(child)
end
function OnAdult(ctx, child)
local top = ctx:GetTopAttr(child)
local career = Parenting.career[top]
ctx:SetCareer(child, career)
ctx:GrantFamilyBuff(child, career)
end
- 养育状态、行动点、冷却、成长值持久化。
- 阶段突破/成年职业由脚本判定,C++ 提供子女实体与家庭面板。
- 游历是定时任务,脚本按职业/阶段计算产出。
3.2 协议
| 方向 | 协议 | 说明 |
|---|---|---|
| C→S | CS_ChildInteract | 互动 |
| C→S | CS_ChildStageUp | 阶段突破 |
| C→S | CS_ChildCareer | 选择/重选职业 |
| C→S | CS_ChildTravel | 游历 |
| S→C | SC_ChildDetail | 属性/心情/疲劳/阶段 |
| S→C | SC_ChildResult | 互动/突破/职业结果 |
3.3 数据结构
struct ChildState {
uint64_t child_id;
uint8_t stage;
uint16_t growth;
uint16_t attrs[4]; // con/int/cha/war
uint8_t mood, fatigue, actions;
uint8_t career;
uint64_t travel_end;
};
3.4 家庭联动
- 夫妻双方共享子女养育权,互动次数按角色独立计算。
- 离婚后子女归抚养方,另一方保留探视(只读)。
- 子女成年后可加入家庭列表,不占角色栏位。
4. 客户端设计
- 子女房间:子女模型、心情/疲劳、互动按钮、成长值。
- 属性面板:四维、资质上限、职业倾向预览。
- 阶段突破动画与全服/家庭公告。
- 成年职业选择:职业介绍、家庭加成、确认。
- 游历界面:目的地、时长、预期产出、召回。
- 家庭相册/成长时间线(可选)。
5. 配置与 Lua 接口
| 配置 | 说明 |
|---|---|
stages | 阶段阈值 |
daily_actions | 每日行动点 |
interact | 互动效果 |
career | 职业映射 |
travel | 游历产出 |
Lua 接口:GetChild、IsParent、AddChildAttr、AddGrowth、CheckStageUp、SetCareer、GrantFamilyBuff。
6. 边界与异常
| 场景 | 处理 |
|---|---|
| 行动点不足 | 拒绝互动 |
| 心情过低 | 拒绝互动,提示安抚 |
| 属性达上限 | 转成长值,不溢出 |
| 父母离婚 | 抚养方继续养育,另一方只读 |
| 服务器重启 | 状态/游历计时恢复 |
| 脚本异常 | 不扣行动点,记录日志 |
7. 验收标准
- 四阶段、成长值、突破、成年职业正确。
- 互动消耗/属性/心情/疲劳/行动点正确。
- 家庭加成不参与 PvP,数值上限正确。
- 离婚/重启/游历/异常处理正确。
- 客户端子女状态与服务端一致。
相关阅读: