寿元
寿元是记在每个身体上的一本账,两个数:还剩多少刻与这一世被给到的上限,单位都是刻(24000 刻 = 一游戏日),存在 lifespan 附件里。账本里的数字来自数据包、命令与服务端配置——本体不写死任何世界观数值——服务端配置决定这条线怎么运转。整套规则默认关闭,所以升级后行为不变。
数字从哪里来
| 来源 | 什么时候写 |
|---|---|
realm_stage 的 lifespan | 突破到该档时加一次,是增量;写死常量必须有限且非负,否则加载期报错。 |
实体行为 mxt:modify_lifespan | add(可负,等于折寿)或 set(两个数一起改写)。 |
实体行为 mxt:reincarnate | 让身体当场转世:跑的是「转世」标签页那份重置清单(与「耗尽后果」选 reincarnate 时同一份),再把账本按「凡人基础寿元」重开(0 就是不记账);它不写数字,只是把账本重开。细节见实体行为类型。 |
命令 /mxt lifespan set / add / reincarnate | 管理员直接改写或增减;reincarnate 让身体当场转世,把账本按服务端配置「寿元 → 凡人基础寿元」重开。 |
KubeJS MxtLifespan | 脚本读写。 |
| 服务端配置「寿元 → 凡人基础寿元」 | 总开关打开且该值大于 0 时,首次登录、或第一次结算时已经持有账本却从没被给过寿元的身体,按它开账;给一个从没记过账的身体 add 时也是这个起点。转世后重算到它。 |
没有账本的身体读作「未记账」:公式变量 lifespan_remaining / lifespan_total 读作 NaN,/mxt lifespan get 直接说「未记账」。写入不受总开关影响:开关只管时间流不流逝,数据包与命令的写入照记。
服务端怎么结算
- 每结算周期(默认
20刻)结算一次,每次扣掉每次流逝(默认20刻);两者之比就是流逝倍率,把「每次流逝」设为0就是只结算、不老化。 - 同一个世界里所有实体踩同一个节拍(按世界时间取模),扣的是每个实体自己的剩余刻数。倒计时挂在实体 tick 上,所以离线不流逝,登录也不补扣。
- 创造模式与旁观者不参与结算——旁观者正是耗尽后的归宿,这样同一场死亡不会反复重演。
- 剩余寿元降到上限的提醒阈值(默认
0.1)那一刻,动作栏提醒一次;只在跨过阈值的那一次提醒,之后不再重复。 - 总开关关着=整条寿元线停住:不结算、不播种、不耗尽、不提醒,人物信息面板也不显示那一行;开启后账本从那一刻接着跑,不补扣关闭期间的时间。
耗尽之后
「耗尽后果」三选一:
| 取值 | 发生什么 |
|---|---|
death(默认) | 玩家被转为旁观者:不掉物品、不触发死亡事件、不插重生点,账本停在 0(不是「不受限」,再被给寿元就接着用)。非玩家生物死于伤害类型 mxt:lifespan,死亡消息键是 death.attack.mxt.lifespan;这个类型在 mxt:no_bonus 标签里,不参与加成结算(见伤害系统)。 |
reincarnate | 当场洗回凡人,保留什么看下面的「转世」标签页;同一份重置也能按需触发——命令 /mxt lifespan reincarnate、脚本入口 MxtLifespan.reincarnate 与数据包行为 mxt:reincarnate 跑的就是它。 |
none | 什么都不做,只发 lifespanEnd 事件,交给内容包处理。 |
耗尽前会发 lifespanEnd 的 Pre,可以取消:在事件里给身体写下正数寿元(走服务或直接写附件都行)就是续命,倒计时接着跑;什么都没写的取消只是拒绝这一次结束,账本随之关闭(remaining = -1、total = 0),不会反复重试。Post 带 getOutcome(),说明基础流程走了哪一支。细节见 MxtEvents。
人物信息面板
人物信息面板(默认 Z)多出一行「寿元」:剩余与上限按每岁刻数换算成岁显示,把它填成 1 就直接显示刻;没有账本、或账本已经关闭(剩余为负)时显示「不受限」。总开关关着时整行都不画。
命令
/mxt lifespan(顶层别名 /lifespan,由服务端配置「命令别名 → /lifespan」开关)查看与改写账本:get 打印每个目标的账本,set 把两个数一起改写,add 增减(负数折寿,只扣剩余、不动上限),reincarnate 让目标当场转世(跑「转世」页那份重置清单,再按「凡人基础寿元」重开账本,0 就是不记账)。写入节点 set / add 与 reincarnate,以及 get 点名别的目标时,都需要 gamemaster 权限。逐条说明见 /lifespan。
服务端配置
寿元
| 条目 | 默认 | 作用 |
|---|---|---|
| 服务端配置「寿元 → 启用寿元」 | 关 | 总开关,见上面的「服务端怎么结算」。 |
| 服务端配置「寿元 → 凡人基础寿元」 | 0 | 首次登录、或第一次结算时已经持有账本却从没被给过寿元的身体拿到的刻数;0=不播种。范围 0..1000000000000。 |
| 服务端配置「寿元 → 结算周期」 | 20 | 每隔多少刻结算一次,范围 1..72000。 |
| 服务端配置「寿元 → 每次流逝」 | 20 | 每次结算扣掉多少刻;与结算周期之比就是流逝倍率(20/20 常速、20/40 半速、40/20 双速),0=只结算不老化。范围 0..72000。 |
| 服务端配置「寿元 → 耗尽后果」 | 身死 | 取值 death / reincarnate / none,见上面的「耗尽之后」。 |
| 服务端配置「寿元 → 提醒阈值」 | 0.1 | 剩余降到上限的这个比例时在动作栏提醒一次(只在跨过阈值那一次);0=不提醒,填 1 事实上也不会提醒(剩余永远不会高于上限)。范围 0.0..1.0。 |
| 服务端配置「寿元 → 每岁刻数」 | 24000 | 人物面板与提醒把刻换算成「岁」的除数;1 就直接显示刻。范围 1..1000000。 |
转世
「耗尽后果」选 reincarnate(转世)时,下面这些开关决定洗完留下什么。
| 条目 | 默认 | 作用 |
|---|---|---|
| 服务端配置「转世 → 转世先死一次」 | 关 | 开=先走一遍真正的死亡流程(掉落物品、死亡消息、重生点),再洗回凡人。 |
| 服务端配置「转世 → 清空境界与修为」 | 开 | 清空境界、修为进度、打坐状态与打坐冷却,于是回到凡人、可以重新突破第一档;境界带来的被动属性与子境界技能随之收回。 |
| 服务端配置「转世 → 清空子境界层数记录」 | 开 | 清空「曾经达到过第几层」的记录;不清的话,把层数当门槛的内容在转世后仍会认为那个门槛已经达到过。 |
| 服务端配置「转世 → 中断进行中的天劫」 | 开 | 清掉正在进行的天劫:不发成功、也不发失败。 |
| 服务端配置「转世 → 清空资源数值」 | 关 | 把所有资源数值清空(下次读取时按定义重新初始化)。基座默认不动资源——哪门数值算「修为」是数据包的事。 |
| 服务端配置「转世 → 保留灵根与体质」 | 开 | 保留灵根、体质以及它们的启用 / 停用状态;关=连它们一起清掉。 |
| 服务端配置「转世 → 保留功法」 | 开 | 保留已习得的功法与进度等级(记忆还在、道基重来);关=连功法一起清掉。 |
| 服务端配置「转世 → 保留魂四项」 | 开 | 保留业力、心魔、神魂强度与神识范围;关=四项一起归零。 |
相关
- 字段:realm_stage 的
lifespan、mxt:modify_lifespan/mxt:reincarnate、公式变量lifespan_remaining/lifespan_total。 - 脚本入口:MxtLifespan(读写账本,也能让身体当场转世);耗尽回调:MxtEvents 的
lifespanEnd。 - 命令:/lifespan。