跳到主要内容

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→SCS_ChildInteract互动
C→SCS_ChildStageUp阶段突破
C→SCS_ChildCareer选择/重选职业
C→SCS_ChildTravel游历
S→CSC_ChildDetail属性/心情/疲劳/阶段
S→CSC_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,数值上限正确。
  • 离婚/重启/游历/异常处理正确。
  • 客户端子女状态与服务端一致。

相关阅读: