DoL x 凡人修仙传 · 大型模组 · 完整设计文档
凡人修仙传 × DoL 大型模组 · 完整设计文档
版本:v0.2-draft · 2026-10-15
状态:设计阶段
前置依赖:说书人模组draft9.9.5.8+ 秋风白桦模组5.4.2+
目录
- 项目概述
- 说书人联动 · 入口与引路系统
- 世界观设定
- 修炼体系
- 战斗系统
- 炼制系统
- NPC 与关系系统
- 势力与宗门
- 剧情大纲
- 成人内容融合设计
- 美术与音频素材规划
- UI 与交互设计
- 技术实现方案
- 开发路线图
1. 项目概述
1.1 模组定位
以忘语所著小说《凡人修仙传》为蓝本,在 DoL(Degrees of Lewdity)框架上构建一个大型修仙世界模组。玩家扮演一名原创角色,降生在凡人修仙传的世界中,从一介凡人逐步修炼,经历越国、乱星海、大晋、灵界等经典场景,与韩立、南宫婉等原著角色互动,最终踏上修仙之巅。
1.2 核心设计原则
- 完全开放世界:没有线性剧情推进,没有章节锁。玩家进入修仙世界后想去哪就去哪,想干嘛就干嘛。区域按境界设难度门槛,但不锁剧情。
- 原创角色:玩家不是韩立,而是这个世界里的一个独立个体。韩立、南宫婉等原著人物作为 NPC 出现,有自己的行为轨迹——他们不会等玩家,世界自己在转。
- 完整修炼体系:炼气→筑基→结丹→元婴→化神→炼虚→合体→大乘→渡劫,每个境界有完整的突破机制和能力提升。修炼是玩家自驱的选择,不是任务奖励。
- 保留 DoL 风格:成人内容不回避,用修仙世界的设定(双修、炉鼎、道侣、媚术等)自然融合。
- 纯追加取向:不修改 DoL 原有代码,所有功能通过模组的 JS/CSS/Passage 追加实现。
- 世界是活的:NPC 有自己的日程和目的,势力之间会自行冲突演变,事件按世界时间线发生。玩家是这个世界的一个参与者,不是主角光环持有者。
1.3 与 DoL 原版的融合策略
DoL 的核心是一个现代都市背景的生存模拟,我们的策略是:
| DoL 原有概念 | 修仙传模组映射 | 实现方式 |
|---|---|---|
| 金钱(money) | 灵石 | 变量重映射,UI 改名 |
| 属性(stats) | 修炼属性 | 新增修炼相关变量组 |
| 服装/装备 | 法袍/法宝 | 扩展装备槽位 |
| 地点(zones) | 修仙世界区域 | 新增 zone 注册 |
| 战斗 | 修仙战斗 | 扩展战斗系统 |
| NPC 关系 | 道侣/师徒/仇敌 | 扩展关系系统 |
| 工作 | 修炼/炼丹/任务 | 新增活动系统 |
| 学校 | 宗门 | 场景替换 |
| 时间系统 | 修仙纪年 | 保留原系统,UI 层改名 |
1.4 与说书人模组的联动
本模组与说书人模组(fable mod)深度联动。说书人不仅是引路人,更是连接两个世界的桥梁。详见第2章。
1.5 制作标准
这是一个大型精品模组,制作标准如下:
- 剧情完整:小说中出现的所有重要场景、事件、人物都要复刻,不偷工减料
- 素材丰富:AI 生成配套图片(场景、人物、物品、UI 素材)和音频(背景音乐、环境音、音效)
- 沉浸感优先:每一个区域都应该有独特的视觉风格和氛围
- 系统深度:修炼、战斗、炼制、社交等系统要有足够的深度和可玩性
- 完美主义:宁可慢不可糙,每个系统都要打磨到满意
2. 说书人联动 · 入口与引路系统
2.1 设计理念
说书人模组的老宅(多瑙河街)是连接 DoL 原版世界与凡人修仙传世界的枢纽。说书人本人作为引路人,负责引导玩家进入修仙世界,并在初期担任导师角色,讲解模组玩法。
核心设定:说书人来自东方,他不仅讲故事——他本身就是通往那个故事的门。
2.2 入口设计:老宅中的仙门
2.2.1 触发条件
入口不是从一开始就开放的。需要满足以下条件:
触发前置:
1. 玩家已获得说书人老宅地契(V['fable:deed'] === 1)
2. 说书人常客度 ≥ 80(自己人级别)
3. 二十折《未卜书》已全部读完(V['fable:serialDone'] === 1)
4. 连中七卦里程碑已达成(V['fable:gift7'] === 1)
2.2.2 入口呈现
当条件满足后,老宅的「神奇的门」会发生永久变化:
原来:23 格通往 DoL 世界各地(三页 8/8/6)
变化后:最后一页新增一格「一扇从未见过的门」
门上描述:
"这扇门你从未注意过——或许它一直不在那里。
门框上刻着细密的符文,隐约泛着青光。
门缝间透出一缕不属于这个世界的灵气。"
门图标:自定义"仙门"图标(AI 生成)
2.2.3 入门过渡场景
点击仙门后进入一段专属过渡剧情(约 500 字):
第一幕:
说书人的声音从身后传来——
"客人,您终于看到了这扇门。"
他站在堂屋门口,青布长衫在无风中轻轻飘动。
"我讲了二十折书给您听,每一折都是这个世界的真实。
现在,您准备好亲自走进去了吗?"
第二幕(选择):
[我已经准备好了] → 进入修仙世界
[我还需要准备] → 返回老宅(可以之后再来)
第三幕(确认后):
说书人从怀中取出一枚温润的玉佩,递到你手上。
"拿着这个。到了那边,它会护住你的神魂。"
"记住——你在那个世界里的一切,都会真实地影响这里。
修为、法宝、甚至……道侣。"
他微微一笑,"毕竟,故事里的人,总觉得自己是醒着的。"
你推开门。
青光吞没了一切。
→ 进入「仙缘·开局」序列
2.3 说书人 · 引路人角色
2.3.1 在修仙世界中的存在
说书人不会直接出现在修仙世界中,但他以另一种形式陪伴:
「说书人的声音」系统:
- 在修仙世界的关键节点,说书人的声音会以"旁白"形式出现
- 为玩家讲解新系统、新功能
- 偶尔给出 hints(但不剧透)
- 语气保持说书人的人设:东方、神秘、略带调侃
示例(首次进入修炼界面时):
"修炼这件事,说难也难,说简单也简单。
您看到那个进度条了?每天打坐,它就往前走一点。
走到头了,就该冲关了。冲得过去海阔天空,冲不过去……
嗯,那就再说吧。"
2.3.2 导师功能(初期引导)
说书人在游戏前 3 天(游戏内时间)担任导师:
| 引导节点 | 触发时机 | 内容 |
|---|---|---|
| 灵根觉醒 | 进入修仙世界后 | 讲解灵根系统、修炼基础 |
| 第一次打坐 | 解锁修炼面板时 | 讲解修炼进度、丹药辅助 |
| 第一次战斗 | 遭遇第一个敌人时 | 讲解法术、灵力、战斗操作 |
| 进入宗门 | 到达黄枫谷时 | 讲解宗门系统、任务、贡献 |
| 第一次炼丹 | 解锁炼丹系统时 | 讲解炼制流程 |
| 遇到第一个NPC | 韩立/厉飞雨出场时 | 讲解关系系统 |
2.3.3 回归老宅
玩家在修仙世界中可以随时通过特殊方式回到老宅:
- 玉佩回归:使用说书人给的玉佩(有冷却时间),直接回到老宅
- 梦中归:在修仙世界睡觉时,有概率梦回老宅(可以在信箱里留消息)
- 说书人的收音机:如果在老宅收音机里听过折子,修仙世界中可以"听到"说书人的声音(纯文字提示)
2.4 两个世界的关联
2.4.1 资源互通(双向·效果不变)
玩家在修仙世界获得的一切——装备、技能、物品、灵石——都可以带回 DoL 主世界,效果不变。反过来,DoL 世界的某些东西也能带进修仙世界。
修仙 → DoL(带回主世界):
| 修仙世界物品 | DoL 主世界效果 | 携带方式 |
|---|---|---|
| 灵石 | 直接兑换为 £(汇率 1灵石 = £0.5) | 回归时自动结算,或老宅信箱手动兑换 |
| 丹药 | 对应 DoL 能量/属性增益 | 存入储物袋→老宅信箱取出使用 |
| 法袍/灵衣 | 进入 DoL 衣柜,属性映射为服装 | 老宅衣柜互通 |
| 法器/法宝 | 映射为 DoL 武器/饰品,保留攻击加成 | 装备栏互通 |
| 法术 | 在 DoL 世界也可使用(消耗灵力) | 法术栏跨世界保留 |
| 灵材 | 部分对应 DoL 古董/材料 | 储物袋→信箱 |
| 灵兽 | 以特殊形态跟随(可召唤) | 灵兽栏跨世界保留 |
| 功法修为 | 境界/灵力/功法等级完全保留 | 自动保留,随时可回修仙世界继续 |
DoL → 修仙(带入修仙世界):
| DoL 世界物品 | 修仙世界效果 | 携带方式 |
|---|---|---|
| £ 英镑 | 兑换为灵石(汇率同上) | 进入仙门时自动兑换一定额度 |
| 服装 | 映射为凡级法袍(无灵力加成) | 衣柜互通 |
| 武器 | 映射为凡器(凡人级武器) | 装备栏互通 |
| DoL 属性 | 部分映射(魅力→NPC初始好感,体能→体质基础) | 自动映射 |
互通实现:
// 跨世界物品桥接
FanrenBridge = {
// 灵石 ↔ 英镑 汇率
STONE_TO_POUND: 0.5,
// 进入修仙世界时:DoL → 修仙
onEnterCultivation: function() {
// 自动兑换 £100 → 200灵石(首次进入奖励)
// 服装同步:DoL衣柜 → 修仙储物袋
// 属性映射:魅力/体能 → 修仙初始加成
},
// 回到DoL世界时:修仙 → DoL
onReturnToDoL: function() {
// 灵石 → £ 自动结算(可选比例)
// 丹药/灵材 → 老宅信箱
// 法袍 → DoL衣柜
// 法术/境界/灵力 → 完全保留(不做转换)
},
// 物品映射表
ITEM_MAP: {
// 修仙物品 → DoL 等价物
"spirit-robe-01": { dolSlot: "upper", dolName: "青色法袍", defense: 5 },
"qingfeng-sword": { dolSlot: "mainHand", dolName: "青锋剑", attack: 8 },
"juling-pill": { dolEffect: "energy", value: 20, name: "聚灵丹" },
// ...
},
};
核心原则:效果不变。 一把攻击+8的青锋剑,在修仙世界攻击+8,带回DoL主世界依然攻击+8。一个火球术,在修仙世界能放,回DoL也能放。玩家的成长是跨世界累积的。
2.4.2 成就联动
- 在修仙世界达成某些成就 → 老宅信箱里会出现说书人的贺信 + 特殊奖励
- 在 DoL 世界达成某些条件 → 修仙世界获得对应增益(如高魅力 → 修仙世界初始魅力加成)
2.5 技术实现要点
// 仙门入口注入(追加到 fable-home.twee 的 fhome_door 段)
// 在神奇的门的最后一页末尾追加一格
// 条件判定(twee)
<<if V['fable:deed'] and V['fable:audience'] >= 80 and V['fable:serialDone'] and V['fable:gift7']>>
<<dooricon "open">>[[一扇从未见过的门|fanren_portal_enter]]
<</if>>
// 过渡段 :: fanren_portal_enter
// 包含说书人的送别台词 + 选择 + 进入修仙世界
// 说书人引导系统(fanren-guide.js)
FanrenGuide = {
// 引导节点注册表
nodes: {
spiritualRoot: { shown: false, trigger: "firstEnter" },
cultivation: { shown: false, trigger: "unlockCultivation" },
combat: { shown: false, trigger: "firstCombat" },
sect: { shown: false, trigger: "enterSect" },
alchemy: { shown: false, trigger: "unlockAlchemy" },
npc: { shown: false, trigger: "meetFirstNPC" },
},
// 显示引导文本
showGuide: function(nodeId) {
var node = this.nodes[nodeId];
if (!node || node.shown) return;
node.shown = true;
V['fable:guideSeen'] = V['fable:guideSeen'] || {};
V['fable:guideSeen'][nodeId] = true;
return GUIDE_TEXTS[nodeId];
},
};
3. 世界观设定
3.1 世界地理总览
凡人修仙传的世界分为三大层级:人界 → 灵界 → 仙界。模组的主要舞台在人界,灵界作为后期内容,仙界作为终极目标(可作为结局线)。
3.1.1 人界地图
┌─────────────────────────────────────────────────────────┐
│ 人 界 │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌────────────┐ │
│ │ 天南地区 │ │ 乱星海 │ │ 大晋帝国 │ │
│ │ │───→│ │───→│ │ │
│ │ ·越国 │ │ ·外星海 │ │ ·大晋皇城 │ │
│ │ ·元武国 │ │ ·内星海 │ │ ·阴罗宗 │ │
│ │ ·紫金国 │ │ ·妙音门 │ │ ·太真门 │ │
│ │ ·姜国 │ │ ·星宫 │ │ │ │
│ │ │ │ │ │ │ │
│ │ 黄枫谷 ←起点│ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌────────────┐ │
│ │ 幕兰草原 │ │ 极西之地 │ │
│ │ │ │ │ │
│ │ ·幕兰族 │ │ ·大雷音寺 │ │
│ │ ·游牧部落 │ │ ·各种蛮荒 │ │
│ └─────────────┘ └────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 其他区域 │ │
│ │ ·乱魔海 ·海底秘境 ·各处上古遗迹 ·各中小国家 │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
3.1.2 区域详细设计
天南地区(起始区域,炼气~筑基阶段)
| 子区域 | 对应 DoL Zone | 内容概述 | 解锁条件 |
|---|---|---|---|
| 越国·青牛镇 | fanren-town | 起始村庄,凡人生活,初始事件 | 默认解锁 |
| 越国·京城 | fanren-capital | 凡人城市,有集市、官府、低阶修士出没 | 炼气期 |
| 黄枫谷·山门 | fanren-sect-gate | 宗门入口,拜师入门 | 通过灵根测试 |
| 黄枫谷·外门 | fanren-sect-outer | 外门弟子生活区,任务大厅,修炼室 | 入门后 |
| 黄枫谷·内门 | fanren-sect-inner | 内门弟子区域,高级修炼资源 | 筑基后 |
| 黄枫谷·药园 | fanren-sect-garden | 灵药种植,采药任务 | 入门后 |
| 黄枫谷·禁地 | fanren-sect-forbidden | 宗门秘境,血色禁地副本 | 特定剧情触发 |
| 元武国 | fanren-yuanwu | 邻国,有灵兽山等势力 | 筑基后 |
| 紫金国 | fanren-zijin | 紫金国势力范围 | 筑基后 |
乱星海(中期区域,结丹~元婴阶段)
| 子区域 | 对应 DoL Zone | 内容概述 | 解锁条件 |
|---|---|---|---|
| 外星海 | fanren-outer-sea | 荒凉海域,妖兽出没,采集灵材 | 结丹后 |
| 内星海 | fanren-inner-sea | 繁华海域,各势力交汇 | 结丹后 |
| 妙音门 | fanren-miaoyin | 女修宗门,可加入或互动 | 元婴前 |
| 星宫 | fanren-star-palace | 乱星海霸主势力 | 元婴后 |
| 虚天殿 | fanren-xutian | 上古遗迹副本,高风险高回报 | 结丹后期 |
大晋帝国(后期区域,元婴~化神阶段)
| 子区域 | 对应 DoL Zone | 内容概述 | 解锁条件 |
|---|---|---|---|
| 大晋皇城 | fanren-dajin-city | 凡人帝国都城,暗中修士势力 | 元婴后 |
| 阴罗宗 | fanren-yinluo | 魔道大宗,可走正/邪路线 | 化神前 |
| 太真门 | fanren-taizhen | 正道大宗 | 化神前 |
| 昆吾山 | fanren-kunwu | 上古秘境,化神期副本 | 化神期 |
灵界(终局区域,炼虚~渡劫阶段)
| 子区域 | 对应 DoL Zone | 内容概述 | 解锁条件 |
|---|---|---|---|
| 灵界·初入 | fanren-spirit-realm | 初入灵界,适应高灵气环境 | 化神突破后 |
| 灵界·人族领地 | fanren-spirit-human | 灵界人族势力 | 炼虚后 |
| 灵界·妖族领地 | fanren-spirit-beast | 妖族地盘,危险但资源丰富 | 合体后 |
| 灵界·各超级势力 | fanren-spirit-powers | 灵界顶级势力 | 大乘期 |
| 仙界之门 | fanren-ascension | 渡劫飞升,终极结局 | 渡劫成功 |
3.2 灵气与环境系统
每个区域有灵气浓度属性,影响修炼速度:
灵气等级:
稀薄(凡人城镇) → 修炼速度 ×0.3
普通(一般野外) → 修炼速度 ×0.7
浓郁(宗门/灵山) → 修炼速度 ×1.0
极浓(灵脉/秘境) → 修炼速度 ×1.5
仙灵之气(上古遗迹)→ 修炼速度 ×2.0+
环境还会影响:
- 灵气恢复速度:战斗中灵力回复
- 妖兽出现概率:灵气越浓,妖兽越强但灵材越好
- 隐藏事件触发:某些秘境只在特定灵气条件下出现
4. 修炼体系
4.1 灵根系统
灵根是修炼的基础,决定修炼速度和属性亲和。
灵根类型
| 灵根 | 修炼速度 | 稀有度 | 说明 |
|---|---|---|---|
| 五行灵根(伪灵根) | ×0.3 | 常见 | 金木水火土全有,修炼极慢,但后期可转多属性功法 |
| 四灵根 | ×0.5 | 较常见 | 缺一种属性 |
| 三灵根 | ×0.8 | 少见 | 可入中等宗门 |
| 双灵根 | ×1.2 | 稀有 | 天赋不错,各宗门争抢 |
| 单灵根(天灵根) | ×2.0 | 极稀有 | 修炼天才,必定被大宗门收入 |
| 变异灵根 | 特殊 | 极稀有 | 冰灵根、暗灵根、风灵根、雷灵根等 |
灵根与 DoL 属性的映射
// 灵根数据结构
V.fanren = {
spiritualRoot: {
type: "dual", // "five"|"four"|"triple"|"dual"|"single"|"mutant"
elements: ["metal", "wood"], // 具体属性
aptitude: 75, // 0-100,同类型内的个体差异
},
// 灵根决定了修炼速度基础值
// aptitude 影响突破成功率和领悟功法的速度
};
灵根获取
- 开局随机:玩家创建角色时随机分配(可用某种方式重随)
- 特殊事件:某些剧情可以改变灵根(如吞噬灵果、特殊体质觉醒)
- 原著联动:如果玩家与韩立关系密切,可能触发与掌天瓶相关的灵根改造事件
4.2 境界系统
境界总表
| 境界 | 层级 | 寿命上限 | 对应 DoL 阶段 | 核心能力 |
|---|---|---|---|---|
| 凡人 | — | 70-80年 | 游戏开始 | 无特殊能力 |
| 炼气 | 1-13层 | 100-120年 | 教程/初期 | 基础法术、灵觉、御器 |
| 筑基 | 初/中/后期 | 200-250年 | 第一幕 | 飞行、护体灵光、中阶法术 |
| 结丹 | 初/中/后期 | 400-500年 | 第二幕 | 丹火、领域雏形、法宝威能大增 |
| 元婴 | 初/中/后期 | 800-1000年 | 第三幕 | 元婴出窍、瞬移、大威力法术 |
| 化神 | 初/中/后期 | 1500-2000年 | 第四幕 | 神游太虚、空间之力 |
| 炼虚 | 初/中/后期 | 3000年+ | 灵界篇 | 虚空行走、法则领悟 |
| 合体 | 初/中/后期 | 5000年+ | 灵界篇后期 | 合体变身、法则运用 |
| 大乘 | 初/中/后期 | 10000年+ | 终局 | 接近仙人之力 |
| 渡劫 | — | 不定 | 结局线 | 渡天劫飞升仙界 |
修炼进度机制
每个境界分初期/中期/后期(炼气是1-13层),修炼进度以百分比追踪:
V.fanren.cultivation = {
realm: "foundation", // 当前境界
stage: "early", // 初期/中期/后期
progress: 0, // 0-100,当前阶段修炼进度
totalProgress: 0, // 累计修炼量(用于某些条件判断)
breakthroughAttempts: 0, // 突破尝试次数
realmHistory: [], // 境界历史记录
};
每日修炼进度增长公式:
日增长 = 基础速率 × 灵根倍率 × 灵气浓度 × 功法加成 × 丹药加成 × 心境修正
基础速率:由境界决定,越高越慢
炼气:0.5/天
筑基:0.3/天
结丹:0.15/天
元婴:0.08/天
化神+:0.04/天
灵根倍率:见灵根表
灵气浓度:见灵气等级表
功法加成:1.0-3.0,取决于功法品级
丹药加成:1.0-2.0,取决于丹药品质
心境修正:0.5-1.5,受 DoL 压力/创伤系统影响
突破机制
当修炼进度达到 100% 时,可以尝试突破到下一个境界:
突破成功率 = 基础成功率 × 灵根修正 × 丹药修正 × 心境修正 × 外在条件
基础成功率:
炼气→筑基:60%
筑基→结丹:40%
结丹→元婴:25%
元婴→化神:15%
化神→炼虚:10%(需要特殊条件)
更高境界:逐步递减
灵根修正:天灵根 ×1.5,双灵根 ×1.2,伪灵根 ×0.6
丹药修正:有对应突破丹 ×1.3-2.0
心境修正:无创伤 ×1.2,重度创伤 ×0.5
外在条件:在灵脉上突破 ×1.3,有护法 ×1.1
突破失败的后果:
- 轻度:修为倒退 10-20%,无永久伤害
- 中度:修为倒退 30%,暂时降低灵根资质
- 重度(连续失败3次+):走火入魔,触发特殊事件线(可关联 DoL 的创伤/压力系统)
- 极重度:境界跌落一个大层(极罕见,作为极端事件)
4.3 功法系统
功法品级
| 品级 | 说明 | 获取途径 |
|---|---|---|
| 凡级 | 凡人武学,不涉及灵气 | 城镇武馆、自学 |
| 灵级下品 | 入门修炼功法 | 小宗门、坊市购买 |
| 灵级中品 | 正经修炼功法 | 中等宗门、拍卖行 |
| 灵级上品 | 高级功法,有独特效果 | 大宗门核心传承、秘境 |
| 玄级 | 顶级功法,可修炼至化神 | 超级势力传承、上古遗迹 |
| 天级 | 传说功法,可修炼至大乘+ | 极罕见,几乎只有主角级NPC拥有 |
功法与 DoL 系统的融合
功法影响:
- 修炼速度:品级越高,修炼越快
- 战斗能力:功法决定可用的法术/战技
- 属性加成:某些功法增加特定属性(力量、敏捷、魅力等)
- 特殊效果:如隐匿气息、加速恢复、增强双修效果等
V.fanren.techniques = {
main: { // 主修功法(只能一本)
id: "qingyuan_01",
name: "清元剑诀",
grade: "spirit-upper",
level: 5, // 修炼层数
maxLevel: 12,
effects: {
cultivationSpeed: 1.5,
combatPower: 1.3,
element: "metal",
},
},
auxiliary: [], // 辅修功法(可多本)
secret: [], // 秘术(一次性或特殊条件触发)
};
功法获取途径
- 宗门传承:加入宗门后,按贡献/地位解锁
- 坊市购买:低阶功法可在坊市用灵石购买
- 秘境探索:上古遗迹中可能发现失传功法
- NPC 传授:与特定 NPC 建立关系后传授
- 战斗缴获:击败敌人后可能获得其功法(概率低)
- 任务奖励:完成特定任务线奖励
4.4 法术系统
法术是战斗和日常的核心工具,分为:
| 类别 | 示例 | 用途 |
|---|---|---|
| 攻击法术 | 火球术、冰锥术、剑气 | 战斗伤害 |
| 防御法术 | 护体灵光、灵盾 | 减伤/格挡 |
| 辅助法术 | 轻身术、隐身术、灵觉 | 探索/逃跑 |
| 生活法术 | 点火术、清洁术、储物术 | 日常便利 |
| 禁术 | 燃魂术、血祭 | 强力但代价大 |
法术与 DoL 战斗系统的映射将在第4节详述。
4.5 法宝与装备
装备槽位扩展
DoL 原有装备槽位 + 修仙扩展:
| 槽位 | DoL 原有 | 修仙扩展 |
|---|---|---|
| 头部 | 有 | 发冠/头饰(+灵觉) |
| 上身 | 有 | 法袍/铠甲 |
| 下身 | 有 | 法裙/法裤 |
| 脚部 | 有 | 灵靴(+速度/飞行) |
| 主手 | 有 | 法器/法宝 |
| 副手 | 有 | 盾牌/副法器 |
| 新增:丹田 | — | 本命法宝 |
| 新增:灵兽栏 | — | 契约灵兽(1-3只) |
| 新增:储物袋 | — | 背包扩展 |
| 新增:符箓栏 | — | 预设符箓(快捷使用) |
法宝品级
| 品级 | 对应境界 | 说明 |
|---|---|---|
| 凡器 | 凡人 | 普通武器,不含灵气 |
| 法器 | 炼气-筑基 | 注入灵力可使用特殊效果 |
| 法宝 | 结丹-元婴 | 有器灵雏形,可自主攻防 |
| 灵宝 | 化神+ | 器灵成熟,有独立意识 |
| 仙器 | 仙人级 | 传说级,几乎不存在于人界 |
4.6 灵兽系统
灵兽是修仙者的战斗伙伴和辅助。
灵兽获取
- 野外捕获:击败野生妖兽后有概率契约
- 卵/幼崽:在秘境中发现,培养成长型
- NPC 赠送/交易
- 特殊事件
灵兽成长
灵兽也有等级系统,与主人修为相关:
- 灵兽等级不能超过主人境界+1
- 灵兽可以通过吞噬妖兽内丹成长
- 某些灵兽可以进化(需要特殊材料)
V.fanren.spiritBeasts = [
{
id: "beast_001",
name: "啼魂兽",
species: "啼魂",
level: 3,
loyalty: 80, // 忠诚度
growth: 0.6, // 成长度
skills: ["soul_attack", "fear_aura"],
evolution: null, // 进化条件
},
];
5. 战斗系统
5.1 战斗框架
在 DoL 原有回合制战斗基础上扩展:
原版 DoL 战斗:
攻击 / 防御 / 逃跑 / (物品)
修仙传扩展:
物理攻击(保留原版)
法术攻击(新增)
法宝攻击(新增)
灵兽攻击(新增)
防御/护体灵光(扩展原版)
符箓使用(新增)
逃跑/遁术(扩展)
投降/求饶(保留,增加修仙世界特有后果)
5.2 灵力系统
新增灵力池(MP),与 DoL 的体力/健康并行:
V.fanren.combat = {
spiritualPower: 100, // 灵力(MP),上限由境界决定
spiritualPowerMax: 100,
hp: V.tiredness, // 复用 DoL 体力系统
hpMax: V.fitness, // 复用 DoL 体质
// 战斗状态
activeBuffs: [], // 当前增益法术
activeDebuffs: [], // 当前减益
formationActive: null, // 激活的阵法
};
灵力上限随境界增长:
| 境界 | 灵力基础 | 每层/阶增长 |
|---|---|---|
| 炼气1层 | 50 | +10/层 |
| 筑基 | 180 | +30/阶 |
| 结丹 | 300 | +60/阶 |
| 元婴 | 500 | +100/阶 |
| 化神 | 800 | +150/阶 |
| 炼虚+ | 1200 | +200/阶 |
5.3 战斗流程
战斗开始
↓
判断先手(灵觉/速度属性)
↓
┌─── 玩家回合 ───┐
│ 选择行动: │
│ ·物理攻击 │
│ ·施放法术(消耗灵力)│
│ ·使用法宝 │
│ ·灵兽攻击 │
│ ·使用符箓 │
│ ·防御 │
│ ·使用物品(丹药等)│
│ ·逃跑 │
└────────┘
↓
┌─── 敌人回合 ───┐
│ AI 决策: │
│ ·物理攻击 │
│ ·法术攻击 │
│ ·特殊技能 │
│ ·防御 │
│ ·逃跑(部分敌人) │
└────────┘
↓
判断胜负 → 继续/结束
5.4 敌人设计
敌人类型
| 类型 | 示例 | 特点 |
|---|---|---|
| 凡人武者 | 土匪、士兵、武林高手 | 无灵力,靠物理攻击 |
| 低阶修士 | 散修、外门弟子 | 少量法术,灵力有限 |
| 高阶修士 | 宗门长老、魔修 | 强力法术+法宝 |
| 妖兽 | 各等级妖兽 | 物理+天赋神通 |
| 鬼修/尸妖 | 鬼物、僵尸 | 特殊弱点(雷/火) |
| 邪修 | 魔道修士 | 血祭、诅咒、炉鼎术 |
敌人与境界对应
战斗系统根据玩家境界动态生成敌人:
// 敌人等级缩放
function generateEnemy(zone, playerRealm) {
const realmIndex = REALM_ORDER.indexOf(playerRealm);
const enemyLevel = clamp(realmIndex + random(-1, 1), 0, MAX_REALM);
// 敌人可能比玩家低1级到高1级
// 某些区域有固定强敌(BOSS)
if (zone.bosses && random() < 0.05) {
return pick(zone.bosses);
}
return generateGenericEnemy(enemyLevel, zone.enemyPool);
}
5.5 战斗奖励
| 奖励类型 | 说明 |
|---|---|
| 灵石 | 基础货币 |
| 灵材 | 炼丹/炼器材料 |
| 功法残页 | 收集齐可合成完整功法 |
| 内丹 | 妖兽精华,灵兽升级用 |
| 经验(修炼进度) | 战斗经验转化为修炼感悟 |
| 装备/法宝 | 缴获敌人装备 |
6. 炼制系统
6.1 炼丹
炼丹是凡人修仙传中最核心的副职业。
炼丹流程
1. 获取丹方(配方)
2. 收集灵材
3. 在丹炉中炼制
4. 判定成功率(受炼丹等级、灵材品质、丹炉品质影响)
5. 获得丹药(品质有波动)
丹药分类
| 类别 | 示例 | 效果 |
|---|---|---|
| 筑基丹 | 筑基丹 | 突破筑基的必备丹药 |
| 修炼加速 | 聚灵丹、凝元丹 | 临时提升修炼速度 |
| 疗伤 | 金创药、回春丹 | 恢复HP/灵力 |
| 突破辅助 | 各类突破丹 | 提升突破成功率 |
| 特殊 | 驻颜丹、易容丹 | 改变外貌(关联 DoL 魅力系统) |
| 毒药 | 各类毒丹 | 战斗用/剧情用 |
炼丹与 DoL 系统的融合
- 炼丹需要「炼丹术」技能等级 → 映射到 DoL 的 skills 系统
- 灵材采集 → 映射到 DoL 的采集/探索系统
- 丹药效果 → 临时 buff,叠加到 DoL 的属性修正上
- 炼丹失败 → 可能炸炉(造成伤害,关联 DoL 的受伤系统)
6.2 炼器
炼器是制作法宝的副职业。
炼器流程
1. 获取器方(图纸)
2. 收集灵材(矿石、妖兽材料等)
3. 在炼器炉中熔炼
4. 锻造成型
5. 刻录阵法
6. 判定品质
6.3 阵法
阵法是防御和探索的关键。
| 阵法类型 | 用途 |
|---|---|
| 防御阵法 | 保护洞府,自动攻击入侵者 |
| 困阵 | 困住敌人,战斗辅助 |
| 幻阵 | 迷惑敌人,隐匿洞府 |
| 传送阵 | 区域间快速移动 |
| 聚灵阵 | 提升洞府灵气浓度 |
6.4 符箓
符箓是一次性消耗品,可以预先制作,战斗中快速使用。
| 符箓类型 | 效果 |
|---|---|
| 攻击符 | 释放一道法术攻击 |
| 防御符 | 临时护盾 |
| 遁术符 | 逃跑用 |
| 特殊符 | 隐匿、追踪、通讯等 |
7. NPC 与关系系统
7.1 原著 NPC 列表
女性 NPC(可发展感情线/道侣线)
| NPC | 身份 | 初始位置 | 境界 | 性格/特点 | 关系线 |
|---|---|---|---|---|---|
| 南宫婉 | 掩月宗天才 | 天南 | 结丹→化神 | 外冷内热,重情义 | 主道侣线 |
| 紫灵 | 妙音门弟子 | 乱星海 | 筑基→元婴 | 聪慧灵动 | 感情线 |
| 元瑶 | 乱星海散修 | 乱星海 | 炼气→元婴 | 温柔坚韧 | 感情线 |
| 慕沛灵 | 黄枫谷弟子 | 黄枫谷 | 炼气→筑基 | 活泼开朗 | 同门线 |
| 陈巧倩 | 黄枫谷弟子 | 黄枫谷 | 炼气→筑基 | 温婉善良 | 同门线 |
| 董萱儿 | 黄枫谷师姐 | 黄枫谷 | 筑基→结丹 | 高傲但正义 | 师姐线 |
| 梅凝 | 大晋 | 大晋 | 结丹 | 神秘冷艳 | 后期线 |
男性 NPC
| NPC | 身份 | 与玩家关系 | 说明 |
|---|---|---|---|
| 韩立 | 主角(原著) | 同期修士 | 重要剧情NPC,可结为好友或对手 |
| 厉飞雨 | 黄枫谷弟子 | 好友 | 忠义之友,早期同伴 |
| 大衍神君 | 天南强者 | 亦师亦友 | 传授大衍决 |
| 向之礼 | 化神强者 | 前辈 | 后期重要NPC |
| 王蝉 | 魔道弟子 | 对手 | 早期反派 |
| 鬼灵门主 | 鬼灵门 | 敌人 | 中期BOSS |
NPC 行为系统
原著 NPC 有自己的行为轨迹,不完全围绕玩家运转:
// NPC 自主行为示例
V.fanren.npcAI = {
hanLi: {
currentLocation: "outer-sea",
cultivationGoal: "nascent-soul",
relationshipWithPlayer: "neutral",
// 韩立会自己修炼、探索、做任务
// 玩家可以在某些地点偶遇他
// 关系好时会分享情报/资源
// 关系差时可能在某些场景冲突
},
};
7.2 关系系统
关系维度
V.fanren.relationships = {
"npc_hanli": {
friendship: 50, // 友情 0-100
trust: 30, // 信任 0-100
romance: 0, // 感情 0-100(仅部分NPC可发展)
respect: 40, // 敬重 0-100
hostility: 0, // 敌意 0-100
// 综合关系等级由以上维度计算
},
};
关系等级
| 等级 | 条件 | 解锁内容 |
|---|---|---|
| 陌生人 | 默认 | 基础对话 |
| 认识 | 多次互动 | 交易、基础任务 |
| 朋友 | 友情>60 | 赠送物品、分享情报 |
| 密友 | 友情>80, 信任>70 | 传授功法、联手战斗 |
| 道侣 | romance>90, 特定条件 | 双修、联合技能 |
| 仇敌 | hostility>80 | 追杀事件、对决 |
7.3 道侣系统
道侣是修仙世界的伴侣关系,比 DoL 原版的恋爱系统更深。
道侣机制
- 结为道侣:需要双方同意 + 特定仪式 + 一定修为
- 双修:道侣之间可以双修,双方都获得修炼加速
- 道侣技能:结为道侣后解锁联合战斗技能
- 道侣互动:日常互动影响关系值
- 多道侣:可以同时拥有多个道侣(修仙世界设定允许),但会影响各道侣关系
双修系统设计
双修作为修炼途径之一:
双修效果 = 基础修炼量 × 双方功法契合度 × 关系亲密度 × 环境灵气
功法契合度:
互补属性(如阴阳互补):×2.0
同属性:×1.5
相克属性:×0.8(但可以提升亲密度)
8. 势力与宗门
8.1 正道宗门
| 宗门 | 位置 | 实力 | 特点 | 加入条件 |
|---|---|---|---|---|
| 黄枫谷 | 越国 | 中等 | 药草见长,玩家起始宗门 | 灵根测试通过 |
| 掩月宗 | 天南 | 上等 | 女修宗门,南宫婉所在 | 女性/特殊条件 |
| 灵兽山 | 元武国 | 中等 | 灵兽驯养 | 对灵兽有亲和力 |
| 太真门 | 大晋 | 超级 | 正道第一大宗 | 高灵根要求 |
| 化意门 | 天南 | 中等 | 意念修炼 | 特殊体质 |
8.2 魔道宗门
| 宗门 | 位置 | 实力 | 特点 | 加入条件 |
|---|---|---|---|---|
| 鬼灵门 | 天南 | 中等 | 驱鬼御尸 | 不限(魔道不挑) |
| 阴罗宗 | 大晋 | 超级 | 魔道第一大宗 | 需放弃正道身份 |
| 合欢宗 | 各处 | 中等 | 双修/媚术 | 魅力要求高 |
8.3 其他势力
| 势力 | 位置 | 说明 |
|---|---|---|
| 星宫 | 乱星海 | 乱星海霸主 |
| 妙音门 | 乱星海 | 女修门派 |
| 幕兰族 | 幕兰草原 | 游牧修炼民族 |
| 大晋皇室 | 大晋 | 凡人帝国,暗中与修士合作 |
8.4 宗门系统机制
宗门贡献与地位
V.fanren.sect = {
id: "yellow-maple",
rank: "outer-disciple", // 外门弟子/内门弟子/核心弟子/长老/掌门
contribution: 0, // 贡献点
reputation: 50, // 宗门声望 0-100
tasks: [], // 可接任务
unlockedAreas: ["outer"], // 已解锁区域
unlockedTechniques: [], // 已解锁功法
};
宗门地位晋升
| 地位 | 条件 | 权限 |
|---|---|---|
| 记名弟子 | 入门测试 | 基础功法、外门区域 |
| 外门弟子 | 炼气6层+ | 任务系统、坊市交易 |
| 内门弟子 | 筑基+,宗门贡献达标 | 高级功法、内门区域 |
| 核心弟子 | 结丹+,特殊贡献 | 长老指导、秘境进入 |
| 长老 | 元婴+,重大贡献 | 收徒、参与宗门决策 |
| 掌门 | 化神+,极高威望 | 宗门管理 |
宗门任务
宗门任务是获取贡献点和资源的主要途径:
| 任务类型 | 示例 | 奖励 |
|---|---|---|
| 采集任务 | 采集特定灵草 | 贡献+灵石 |
| 猎杀任务 | 消灭特定妖兽 | 贡献+灵材 |
| 护送任务 | 护送宗门人员 | 贡献+关系 |
| 探索任务 | 探索未知区域 | 贡献+发现 |
| 宗门大比 | 弟子间比武 | 大量贡献+特殊奖励 |
9. 开放世界设计 · 「活着的世界」引擎
9.1 核心理念:沙盒,不是RPG
没有主线、没有章节锁、没有"下一步该去哪"的指引。
玩家进入修仙世界后,就是一个活在这个世界里的人。想去黄枫谷拜师就去,想去坊市淘宝就去,想在深山老林里独自修炼也行,想去乱星海闯荡也可以——只要修为够,哪里都去得。
世界不按"卷"推进,而是按世界时钟运转。所有事件、NPC行为、势力变化都挂在世界时钟上,自行发生。玩家是参与者,不是被选中的人。
「活着的世界」三层含义:
- 玩家不在时世界照转——回到 DoL 世界后,修仙世界每天自行推进。NPC 修炼、赶路、打架、结盟、陨落,势力扩张或衰落,事件按时间线发生。几天后玩家再回来,世界已经变了。
- 玩家的行为留下痕迹——杀了人,对方的师门会来寻仇;救了人,对方可能日后报恩;在某地大闹一场,该地NPC会记住你。世界记得你做过什么。
- NPC 不是玩家的附属——韩立不会等玩家到炼气6层才出发。他有自己的人生,走自己的路。玩家赶得上就同行,赶不上就错过。错过就是错过。
9.2 世界时钟系统
世界时钟是「活世界」的心脏。一个从玩家首次进入修仙世界起算的天数计数器,驱动一切。
V.fanren.world = {
// 时钟
day: 0, // 世界天数(从玩家首次进入起算)
lastSimDay: 0, // 上次模拟推进到的天数
playerPresent: false, // 玩家当前是否在修仙世界
enteredDay: 0, // 玩家首次进入的天数(=0)
// 跨世界同步
lastDepartDay: 0, // 玩家上次离开修仙世界的天数
returnGap: 0, // 本次回归时计算出的离开天数差
};
时钟推进规则:
| 场景 | 时钟行为 | 说明 |
|---|---|---|
| 玩家在修仙世界 | 每次 :passagedisplay 检查是否跨天,跨则 +1 | 玩家亲历的每天 |
| 玩家在 DoL 世界 | DoL 的 dayPassed 触发时 +1 并跑模拟 | 玩家不在的每天 |
| 玩家回归修仙世界 | 先算 gap = 当前DoL日 - lastDepartDay,逐天补模拟 | 补完再让玩家落地 |
关键:时钟不依赖现实时间(不用 Date.now()),完全由游戏内事件驱动。玩家不操作就不推进,避免后台计算。
9.3 世界状态持久化
所有世界状态存在 V.fanren 下,随 DoL 自动存档落盘。
V.fanren.worldState = {
// NPC 状态快照(每个重要NPC一份)
npcs: {
hanLi: {
alive: true,
realm: "qi", // 当前境界 id
stage: 6, // 炼气6层
location: "yellow-maple-outer", // 当前位置 id
hp: 100, // 当前生命比例
status: "cultivating", // 状态:cultivating/traveling/fighting/idle/dead
timelineIdx: 3, // 时间线执行到第几条
relationship: 0, // 与玩家的关系值 -100~100
lastSeenByPlayer: -1, // 上次与玩家同地点的天数(-1=从未)
known: false, // 玩家是否知道此人存在
metadata: {}, // NPC 特有字段
},
// ... 更多 NPC
},
// 势力状态
factions: {
"yellow-maple": {
power: 100, // 综合实力(动态变化)
territory: ["yellow-maple-mountain"], // 控制区域
alliances: ["spirit-beast-mountain"], // 盟友
enemies: ["ghost-gate"], // 敌对
leader: "yueyan", // 掌门 NPC id
eventHistory: [], // 该势力经历的大事
},
// ... 更多势力
},
// 区域状态
zones: {
"blood-forbidden": {
open: false, // 血色禁地是否开启
nextOpenDay: 100, // 下次开启天数
explored: false, // 是否已被探索
secrets: [], // 已发现的秘密
},
// ...
},
// 世界事件日志(永久记录)
eventLog: [
// { day, type, actor, action, detail, playerInvolved }
],
// 玩家造成的世界改变(永久记录)
playerImpact: {
kills: [], // 玩家杀死的NPC/势力成员
saves: [], // 玩家救过的NPC
gifts: [], // 玩家赠送过的重大物品
battles: [], // 玩家参与的重大战斗
discoveries: [], // 玩家的发现(秘境、宝物等)
reputation: {}, // 在各势力中的声望变化
karma: 0, // 因果值(善行/恶行累计)
},
};
9.4 事件调度引擎
所有世界事件挂在时间线上,由调度器按天推进。
// 事件定义格式
{
id: "blood-forbidden-open-1",
type: "scheduled", // scheduled/conditional/npc/faction/random/chain
day: 100, // scheduled 类型专用
condition: function(), // conditional 类型专用
actor: null, // npc/faction 类型专用
priority: 1, // 同天多事件时的执行顺序
once: true, // 是否只触发一次
execute: function(day, worldState) { ... },
}
六类事件
| 类型 | 触发方式 | 示例 |
|---|---|---|
| 定时事件 | 到特定天数必然发生 | 血色禁地每100天开启一次 |
| 条件事件 | 世界状态满足条件时触发 | 任意NPC结丹→天降异象 |
| NPC事件 | NPC时间线推进到该条 | 韩立第50天离开黄枫谷 |
| 势力事件 | 势力关系演变到临界点 | 正魔两道实力差>50→爆发大战 |
| 随机事件 | 每天按概率 roll | 坊市遇到神秘老者(5%/天) |
| 连锁事件 | 由其他事件/玩家行为触发 | 玩家杀某人→其师门追杀 |
调度器核心循环
function simulateDay(day) {
// 1. 推进所有NPC时间线
for (var npcId in V.fanren.worldState.npcs) {
advanceNPC(npcId, day);
}
// 2. 执行当天定时事件
var scheduled = EVENT_TABLE.filter(function(e) {
return e.type === "scheduled" && e.day === day;
});
scheduled.forEach(function(e) { e.execute(day, V.fanren.worldState); });
// 3. 检查条件事件
CONDITIONAL_EVENTS.forEach(function(e) {
if (e.condition(day, V.fanren.worldState)) {
e.execute(day, V.fanren.worldState);
}
});
// 4. 势力演化
advanceFactions(day);
// 5. 随机事件(按区域 roll)
generateRandomEvents(day);
// 6. 记录日志
logDaySummary(day);
}
9.5 NPC 自主行为引擎
每个重要NPC有独立的时间线和行为逻辑。NPC不围绕玩家转——他们有自己的目标、路线、成长。
NPC 时间线结构
NPC_TIMELINES = {
hanLi: {
// 韩立的完整人生轨迹(基于小说)
// 每条 = { day, action, location, duration, condition?, effect? }
entries: [
{ day: 0, action: "cultivate", location: "yellow-maple-outer", duration: 30,
note: "在黄枫谷外门修炼" },
{ day: 30, action: "mission", location: "yellow-maple", duration: 10,
note: "执行宗门任务" },
{ day: 50, action: "travel", destination: "inner-sea", duration: 30,
note: "离开黄枫谷前往乱星海" },
{ day: 100, action: "explore", location: "outer-sea", duration: 50,
note: "在外星海历险" },
{ day: 150, action: "breakthrough",realm: "core", location: "outer-sea",
note: "在乱星海结丹" },
// ... 数百条,覆盖韩立整条小说线
],
// 韩立的性格参数(影响对玩家行为的反应)
personality: {
caution: 0.9, // 谨慎度(极高)
greed: 0.3, // 贪心度(低)
loyalty: 0.7, // 忠诚度(高)
curiosity: 0.5, // 好奇心(中)
trustBaseline: 20, // 初始信任值
},
// 对玩家反应规则
reactionRules: [
// 例:如果玩家偷了韩立的东西
{ condition: "playerStoleFrom", threshold: 1,
effect: "relationship -50, mark as enemy" },
// 例:如果玩家救过韩立
{ condition: "playerSaved", threshold: 1,
effect: "relationship +30, may gift item" },
// 例:如果在同一地点且关系>50
{ condition: "sameLocation && relationship > 50",
effect: "trigger encounter event" },
],
},
nanGongWan: {
entries: [
// 南宫婉自己的轨迹
// ...
],
personality: { /* ... */ },
reactionRules: [ /* ... */ ],
},
// ... 更多 NPC
};
NPC 每日推进逻辑
function advanceNPC(npcId, day) {
var state = V.fanren.worldState.npcs[npcId];
var timeline = NPC_TIMELINES[npcId];
if (!state || !timeline || !state.alive) return;
var entry = timeline.entries[state.timelineIdx];
if (!entry) return; // 时间线已走完
// 检查是否到了执行时间
if (day >= entry.day) {
// 执行该条
executeNPCEntity(npcId, entry, day);
// 推进到下一条
state.timelineIdx++;
// 执行效果(修炼突破、位置变更等)
applyNPCEffect(npcId, entry, day);
}
// NPC 日常修炼(即使在等待期间也在修炼)
if (state.status === "cultivating" || state.status === "idle") {
npcDailyCultivation(npcId);
}
}
NPC 与玩家的交互判定
当玩家在修仙世界某地点时,检查该地点有哪些NPC:
function checkNPCCEncounters(locationId) {
var encounters = [];
for (var npcId in V.fanren.worldState.npcs) {
var state = V.fanren.worldState.npcs[npcId];
if (state.location === locationId && state.alive) {
// 根据关系值和NPC性格决定是否出现
var chance = calculateEncounterChance(npcId, state);
if (Math.random() < chance) {
encounters.push(npcId);
}
}
}
return encounters;
}
9.6 势力演化引擎
势力不是静态背景板——它们会扩张、衰落、结盟、开战。
V.fanren.worldState.factions["yellow-maple"] = {
power: 100, // 综合实力值(动态)
powerHistory: [], // 每天的实力快照(用于趋势计算)
territory: [], // 控制区域列表
alliances: [], // 盟友势力 id
enemies: [], // 敌对势力 id
leader: "yueyan", // 掌门
elderCount: 5, // 长老数量
discipleCount: 200, // 弟子数量
morale: 70, // 士气 0-100
treasury: 10000, // 灵石储备
eventHistory: [], // 经历的大事
};
势力每日演化
function advanceFactions(day) {
for (var fid in V.fanren.worldState.factions) {
var f = V.fanren.worldState.factions[fid];
// 1. 实力自然变化(弟子修炼/陨落影响)
f.power += calculateFactionGrowth(fid);
// 2. 检查势力关系临界
checkFactionRelations(fid, day);
// 3. 资源消耗(维持弟子/阵法等)
f.treasury -= f.discipleCount * 0.5;
if (f.treasury < 0) f.morale -= 5; // 穷→士气降
// 4. 记录历史
f.powerHistory.push({ day: day, power: f.power });
}
}
势力冲突判定
function checkFactionRelations(fid, day) {
var f = V.fanren.worldState.factions[fid];
// 检查所有敌对势力
f.enemies.forEach(function(eid) {
var enemy = V.fanren.worldState.factions[eid];
if (!enemy) return;
// 实力差距 + 随机因素 → 战争概率
var powerDiff = Math.abs(f.power - enemy.power);
var aggression = calculateAggression(fid, eid);
var warChance = aggression * (1 - powerDiff / 200) * 0.01; // 每天1%基础
if (Math.random() < warChance) {
// 爆发冲突!
triggerFactionWar(fid, eid, day);
}
});
}
9.7 跨世界同步机制(核心)
这是「活着的世界」最关键的技术实现:玩家往返两个世界时,修仙世界如何追赶时间。
同步流程
玩家在修仙世界(第50天)
→ 通过仙门回到 DoL 世界
→ lastDepartDay = 50
→ playerPresent = false
玩家在 DoL 世界过了 20 天(DoL dayPassed 触发 20 次)
→ 每次 dayPassed 调用 simulateDay(world.day)
→ world.day: 51, 52, 53, ... 70
→ NPC 推进、事件发生、势力变化,全部在后台跑
玩家再次通过仙门回到修仙世界
→ returnGap = world.day - lastDepartDay = 70 - 50 = 20
→ 生成「离开期间大事记」
→ 玩家落地时看到新闻摘要
挂接 DoL 日结算
// 在 fanren-world.js 中
jQuery(document).on(":dayPassed", function() {
if (!V.fanren || !V.fanren.world) return;
if (!V.fanren.world.playerPresent && V.fanren.world.entered) {
// 玩家不在修仙世界但已开启 → 推进一天
var world = V.fanren.world;
simulateDay(world.day + 1);
world.day++;
world.lastSimDay = world.day;
}
});
回归时的「追赶报告」
玩家回到修仙世界时,生成一份离开期间的大事摘要:
【离开的这20天里……】
· 第53天:黄枫谷一名内门弟子突破筑基,宗门上下庆贺
· 第58天:商业街坊市传来消息,有散修在幕兰草原发现上古遗迹入口
· 第62天:越国京城发生修士斗法,半条街被毁,凡人死伤数十
· 第65天:韩立已抵达乱星海内星海, reportedly 正在寻找洞府
· 第68天:鬼灵门与灵兽山在边境发生小规模冲突
· 第70天:血色禁地将在30天后再次开启
(详细记录可在「世界大事记」中查看)
9.8 世界新闻系统
新闻是玩家感知「世界在转」的主要窗口。
新闻生成规则
function generateNews(fromDay, toDay) {
var news = [];
// 从事件日志中提取 fromDay~toDay 的事件
var logs = V.fanren.worldState.eventLog.filter(function(e) {
return e.day >= fromDay && e.day <= toDay;
});
// 按重要性排序,取前 N 条
logs.sort(function(a, b) { return b.importance - a.importance; });
// 转化为新闻文本
logs.slice(0, 8).forEach(function(e) {
news.push(formatNewsLine(e));
});
return news;
}
function formatNewsLine(event) {
// 根据事件类型生成不同风格的新闻
var templates = {
"npc-breakthrough": [
"第{day}天:{name}成功突破至{realm},天降异象,方圆百里灵气震荡",
"传闻{location}一带有天降瑞兆,疑似有人突破{realm}",
],
"npc-death": [
"第{day}天:{name}在{location}陨落,死因不明",
"{name}的遗体在{location}被发现,修仙界震动",
],
"faction-war": [
"{factionA}与{factionB}在{location}爆发冲突,双方死伤惨重",
"第{day}天:{factionA}与{factionB}正式宣战,天南局势骤然紧张",
],
"random-event": [
"有修士在{location}发现异常灵光,疑似秘境出世",
"{location}附近的凡人报告看到御剑飞行之人",
],
};
// ...
}
新闻显示位置
| 位置 | 内容 | 刷新时机 |
|---|---|---|
| 回归时弹窗 | 离开期间大事摘要 | 玩家从 DoL 返回修仙世界时 |
| 坊市公告栏 | 近期修仙界传闻 | 每次进入坊市区域 |
| 侧栏小字 | 今日一条快讯 | 每天刷新 |
| 客栈/茶馆 | 更详细的传闻 | 进入该区域时 |
9.9 玩家影响追踪
玩家在修仙世界的每一个重大行为都被记录,影响世界走向。
V.fanren.worldState.playerImpact = {
// 杀业
kills: [
{ day: 15, name: "张三", faction: "ghost-gate", realm: "qi-8",
consequence: "ghost-gate reputation -10, 鬼灵门弟子见到玩家会敌对" },
],
// 善行
saves: [
{ day: 22, name: "李四", method: "从妖兽口中救下",
consequence: "李四 relationship +40, 李四的师门对玩家好感+10" },
],
// 馈赠
gifts: [
{ day: 30, to: "王五", item: "聚灵丹×3",
consequence: "王五 relationship +20" },
],
// 重大战斗
battles: [
{ day: 40, location: "yellow-maple-outer",
result: "击败外门大比第一名",
consequence: "yellow-maple reputation +20, 内门长老注意到玩家" },
],
// 发现
discoveries: [
{ day: 35, type: "secret-realm", location: "forest-deep",
consequence: "记录在地图,可再次进入" },
],
// 各势力声望
reputation: {
"yellow-maple": 65, // 0-100,默认50
"ghost-gate": 30, // 被杀业拉低
"spirit-beast": 55,
},
// 因果值
karma: -5, // 正=善,负=恶。影响突破成功率、NPC初始态度、天劫难度
};
影响如何反馈到世界
| 玩家行为 | 世界反馈 | 实现方式 |
|---|---|---|
| 杀某势力弟子 | 该势力弟子见到玩家会回避或攻击 | NPC encounter 检查 playerImpact.reputation |
| 救某NPC | 该NPC日后可能报恩(赠礼/帮忙/提供信息) | NPC reactionRules 检查 saves 列表 |
| 在某地大闹 | 该地NPC对玩家警惕度上升 | zone 的 alertLevel 字段影响随机事件 |
| 大量善行 | 正道声望高,突破时有人护法 | karma 影响 breakthrough 成功率 |
| 大量恶行 | 被正道通缉,魔道接纳 | karma 影响 faction 反应和天劫难度 |
| 偷窃/欺骗 | 被发现的NPC永远降低信任 | relationship 永久降低,不可恢复 |
9.10 区域开放策略
所有区域从一开始就在地图上可见,但进入有修为门槛:
| 区域 | 最低境界 | 实际危险 | 说明 |
|---|---|---|---|
| 青牛镇 | 凡人 | 无 | 起始点 |
| 黄枫谷·山门 | 凡人 | 无 | 任何人都能去 |
| 黄枫谷·外门 | 炼气 | 低 | 弟子区域 |
| 黄枫谷·内门 | 筑基 | 低 | 内门弟子/访客 |
| 越国京城 | 凡人 | 低 | 凡人城市 |
| 血色禁地 | 炼气6层+ | 高 | 随时可进,但里面很危险 |
| 乱星海·内星海 | 筑基 | 中 | 需要渡海(有旅途事件) |
| 乱星海·外星海 | 结丹 | 高 | 妖兽横行 |
| 虚天殿 | 结丹后期 | 极高 | 上古遗迹 |
| 大晋皇城 | 元婴 | 中 | 超级势力地盘 |
| 灵界 | 化神+ | 极高 | 需要飞升通道 |
关键设计:低修为玩家可以去高危险区域——只是会被秒杀。不锁路,但后果自负。如果玩家非要炼气1层就去虚天殿,那是他的选择。
9.11 玩家自由选择的人生道路
没有"主线任务",但世界提供无数可能性:
修炼路线(自选):
- 加入宗门 → 享受资源但有义务
- 散修 → 自由但一切靠自己
- 入魔道 → 快速但代价大
- 炼丹师 → 靠卖丹药发财
- 炼器师 → 打造法宝
- 驯兽师 → 养灵兽战斗
- 双修者 → 找道侣共同修炼
- 任何组合都可以
社交路线(自选):
- 广交好友 → 消息灵通,遇事有人帮
- 独来独往 → 清净,但孤立无援
- 当好人 → 正道声望高
- 当坏人 → 魔道势力接纳你,但正道追杀
- 当商人 → 低买高卖,灵石为王
- 当恶霸 → 抢夺他人资源
探索路线(自选):
- 到处跑 → 发现秘境、奇遇
- 蹲在一个地方 → 深耕该区域的资源和人脉
- 追NPC → 观察韩立等人的轨迹,蹭机缘
- 挖宝 → 找上古遗迹
9.12 与原著 NPC 的交互设计
韩立作为最重要的 NPC,有自己的完整人生轨迹。玩家可以在任何阶段与他相遇、结交、对抗、或完全擦肩而过。
交互原则:
- NPC 不围绕玩家转。他们有自己的目标、路线、成长。
- 关系是双向的。你对他好,他记住;你惹他,他也记住。
- 没有"必触发"的剧情。一切取决于玩家的选择和行动。
- 错过就是错过。韩立走了就是走了,你不会在下一个路口等到他。
韩立时间线示例(完整时间线有数百条):
第 0 天:韩立在黄枫谷外门修炼(玩家可能在宗门遇到他)
第 30 天:执行宗门任务(可能在任务中偶遇)
第 50 天:离开黄枫谷,前往乱星海(不管玩家在不在)
第100 天:在外星海历险
第150 天:在乱星海结丹(世界新闻传来消息)
第200 天:返回内星海,建立洞府
第300 天:元婴突破
第500 天:飞升灵界
如果玩家第60天才到乱星海 → 韩立已经走了,只留下传说
如果玩家第40天就和韩立成为好友 → 韩立走前会留信/赠礼
如果玩家从未见过韩立 → 韩立依然是这个世界的传说,但和玩家无关
9.13 NPC 生死系统
NPC 不是不朽的剧情道具——他们会死。死了就永远消失,本存档内不再出现。
三种死因
| 死因 | 说明 | 谁受影响 |
|---|---|---|
| 寿元耗尽 | 每个境界有对应的寿元上限,超龄后每天概率老死 | 非剧情保护NPC |
| 玩家击杀 | 战斗中杀死,永久消失 | 所有NPC(含剧情保护) |
| NPC互杀 | 世界模拟中NPC之间的冲突致死 | 非剧情保护NPC |
境界寿元对照
| 境界 | 寿元上限 | 说明 |
|---|---|---|
| 凡人 | 80 岁 | 普通人的极限 |
| 炼气 | 120 岁 | 初窥仙道 |
| 筑基 | 250 岁 | 延年益寿 |
| 结丹 | 500 岁 | 金丹驻颜 |
| 元婴 | 1000 岁 | 千年老怪 |
| 化神 | 2000 岁 | 两千年 |
| 炼虚 | 3000 岁 | 三千年 |
| 合体 | 5000 岁 | 五千年 |
| 大乘 | 10000 岁 | 万年 |
| 渡劫 | 无限 | 超脱寿元限制 |
剧情保护机制
主要NPC(韩立、南宫婉等)有 plotArmor: true 标记:
- 不会被随机事件杀死——NPC互杀不会选中他们
- 不会老死——寿元检查跳过他们
- 只会在时间线指定节点死亡——如果时间线里没有"死亡"条目,他们就永远不会死
- 唯一例外:玩家亲手击杀——如果玩家实力足够强,可以打破命运。这是设计上的选择:玩家有能力就可以改变剧情走向
死亡后的世界反馈
NPC死亡后:
· 事件日志记录死因、地点、凶手
· 世界新闻播报(重要NPC死亡是大新闻)
· 凶手NPC可能被受害者同门追杀
· 玩家杀NPC → 因果值下降、相关势力声望降低
· 该NPC从所有遭遇池中移除——再也遇不到
· 该NPC的时间线永久停止
设计意图
- 生命有重量:杀一个NPC是不可逆的决定,玩家会慎重
- 世界有代价:你杀的人可能有师门、有好友,他们会来寻仇
- 命运可改写:剧情保护不是铁板一块——足够强的玩家可以打破宿命
- 时间有痕迹:NPC会老死,说明时间在流逝,世界在变化
9.13·乙 玩家死亡规则
玩家在修仙世界死亡(战斗失败/被NPC击杀/突破走火入魔等)后,神魂被说书人玉佩救回主世界(DoL)。
可再次进入修仙世界,代价是失去身上所有物品。
保留 vs 失去
| 保留(不丢) | 失去(全部清零) |
|---|---|
| 境界/修为(进度回退10%) | 灵石(全部) |
| 功法(已学功法不变) | 丹药(全部) |
| 法术(已学法术不变) | 灵材(全部) |
| 本命法宝(灵魂绑定,不丢) | 普通装备(头/身/脚/主手/副手) |
| 副职业等级 | 储物袋内容 |
| NPC关系 | 灵兽(契约断裂) |
| 世界状态/剧情标记 | 灵力(清零) |
设计意图
- 修为是刻在灵魂里的——境界/功法/法术不会因死亡消失,这是修炼者的根基
- 本命法宝与命相连——唯一保留的装备,体现"本命"二字的份量
- 身外之物皆可丢——灵石/丹药/灵材/普通装备都是外物,死了自然保不住
- 10%修为回退——不是清零但有惩罚,走火入魔不是没代价
- 灵兽契约断裂——生死之际顾不上灵兽,它们会跑掉(但不会死,下次可以重新找)
- 可以反复进入——死亡不是game over,只是代价大。鼓励玩家再战
实现
// 玩家死亡时调用
FanrenWorld.onPlayerDeath("战斗中陨落");
// → 清空物品/装备/灵兽/灵力
// → 修为回退10%
// → 保留境界/功法/法术/本命法宝
// → 自动回归DoL主世界
// → 记录死亡历史(可查)
9.14 世界模拟引擎技术架构
fanren-world.js 模块结构:
FanrenWorld(顶层命名空间)
├── init() # 初始化,挂事件钩子
├── clock # 时钟管理
│ ├── tick() # 推进一天
│ ├── getPlayerGap() # 计算离开天数差
│ └── isPlayerPresent() # 玩家是否在场
├── simulate # 模拟引擎
│ ├── simulateDay(day) # 模拟一天
│ ├── advanceNPCs(day) # 推进所有NPC
│ ├── checkEvents(day) # 检查/执行事件
│ ├── advanceFactions(day) # 势力演化
│ └── generateRandom(day) # 随机事件
├── npc # NPC 管理
│ ├── advance(id, day) # 推进单个NPC
│ ├── checkEncounters(loc) # 检查地点NPC遭遇
│ └── react(id, event) # NPC对事件反应
├── death # NPC 生死系统
│ ├── killNPC(id, cause, killer, day) # 永久杀死NPC
│ ├── isNPCAlive(id) # 查询存活状态
│ ├── getDeadNPCs() # 获取已死亡列表
│ ├── getLifespan(realm) # 查询境界寿元
│ ├── checkLifespanDeaths(day) # 每日寿元检查
│ └── npcVsNPCCombat(day) # NPC互杀判定
├── faction # 势力管理
│ ├── evolve(id, day) # 势力演化
│ └── checkConflicts(day) # 势力冲突检查
├── news # 新闻系统
│ ├── generate(from, to) # 生成新闻
│ ├── format(event) # 格式化新闻文本
│ └── getUnread() # 获取未读新闻
├── impact # 玩家影响追踪
│ ├── record(type, data) # 记录玩家行为
│ ├── getReputation(fid) # 查询势力声望
│ └── getKarma() # 查询因果值
├── sync # 跨世界同步
│ ├── onDepart() # 玩家离开修仙世界
│ ├── onReturn() # 玩家回归修仙世界
│ └── generateReport(gap) # 生成追赶报告
└── data # 数据访问
├── getWorldState() # 获取世界状态
├── getNPCState(id) # 获取NPC状态
└── getFactionState(id) # 获取势力状态
性能考量:
- 模拟引擎只在跨天时跑一次,不在每帧跑
- 离开多天回归时,批量模拟(最多一次跑365天,超过则截断)
- NPC 数量控制在 30-50 个有完整时间线的具名NPC
- 事件日志保留最近 500 条,更早的归档压缩
10. 成人内容融合设计
10.1 融合原则
- 用修仙传的世界观自然包装成人内容
- 道侣/双修是正当的修炼途径
- 炉鼎/媚术是邪修的手段
- 保持 DoL 的开放性和自由度
10.2 成人内容系统
双修系统
双修是修仙世界的正统修炼方式:
- 道侣双修:与道侣进行,双方获益,增进感情
- 功法双修:特定功法需要双修才能修炼
- 交易双修:为获取资源而进行(可关联利益关系)
双修场景的描写风格与 DoL 一致,但包装在修仙设定中(灵气交融、阴阳调和等)。
炉鼎系统(邪修路线)
走魔道/邪修路线时可以触及:
- 炉鼎:被邪修捕获作为修炼工具
- 这是 DoL 原有非自愿内容的修仙包装
- 被击败后可能被邪修炼为炉鼎
- 也可以反过来将他人炼为炉鼎(走邪道时)
- 炉鼎状态有逃脱/被救的剧情线
媚术/魅惑
- 合欢宗等魔道宗门使用媚术
- 魅惑类法术可以影响NPC
- 对应 DoL 的诱惑/诱惑相关系统
- 高魅力角色可以学习媚术作为战斗/社交工具
道侣后宫
- 修仙世界允许多道侣
- 可以建立自己的"后宫"
- 道侣之间有互动事件(和谐/嫉妒)
- 管理道侣关系是 gameplay 的一部分
10.3 成人内容与修炼的关系
| 行为 | 修炼影响 | 说明 |
|---|---|---|
| 道侣双修 | 正面,加速修炼 | 正当途径 |
| 被炼为炉鼎 | 负面,修为流失 | 邪修手段 |
| 采补(邪术) | 短期正面,长期负面 | 损人利己,有因果报应 |
| 媚术修炼 | 提升魅力,可能影响心境 | 合欢宗特色 |
| 守身/禁欲 | 某些功法需要 | 如童子功之类 |
11. 美术与音频素材规划
11.1 总体策略
本模组追求沉浸式体验,所有核心场景、角色、物品都配有 AI 生成的图片和音频素材。素材风格统一为「东方仙侠水墨+光影」基调。
11.2 图片素材清单
11.2.1 场景图(每个主要区域一张全景图)
| 场景 | 描述 | 尺寸 | 优先级 |
|---|---|---|---|
| 青牛镇 | 宁静凡人小镇,远山如黛,炊烟袅袅 | 1792×1024 | P0 |
| 黄枫谷·山门 | 两座山峰夹道,灵气氤氲,石阶蜿蜒而上 | 1792×1024 | P0 |
| 黄枫谷·外门 | 简朴的弟子居所,远处有修炼场 | 1792×1024 | P0 |
| 黄枫谷·内门 | 精致的内门建筑,灵气更浓 | 1792×1024 | P1 |
| 黄枫谷·药园 | 灵草遍地,各色灵光闪烁 | 1792×1024 | P1 |
| 血色禁地 | 血红天空,扭曲大地,诡异光芒 | 1792×1024 | P2 |
| 越国京城 | 繁华古城,修士与凡人混居 | 1792×1024 | P1 |
| 乱星海·内星海 | 碧波万顷,仙岛点点,灵舟穿梭 | 1792×1024 | P2 |
| 乱星海·外星海 | 荒凉海域,暗礁密布,妖兽出没 | 1792×1024 | P2 |
| 虚天殿 | 上古遗迹,宏伟废墟,神秘阵法 | 1792×1024 | P3 |
| 大晋皇城 | 帝国都城,气象万千 | 1792×1024 | P3 |
| 灵界 | 超越凡尘的仙境,灵气化为实质 | 1792×1024 | P4 |
11.2.2 角色图(重要NPC立绘)
| 角色 | 描述 | 尺寸 | 优先级 |
|---|---|---|---|
| 韩立 | 青年修士,面容坚毅,眼神沉稳 | 1024×1536 | P0 |
| 南宫婉 | 绝美女修,气质清冷,白衣胜雪 | 1024×1536 | P1 |
| 厉飞雨 | 忠厚青年,豪爽笑容 | 1024×1536 | P1 |
| 紫灵 | 灵动少女,妙音门弟子 | 1024×1536 | P2 |
| 元瑶 | 温柔坚韧的散修 | 1024×1536 | P2 |
| 大衍神君 | 仙风道骨的老者 | 1024×1536 | P2 |
| 说书人(修仙版) | 青布长衫,手持折扇,神秘微笑 | 1024×1536 | P0 |
11.2.3 物品/法术效果图
| 素材 | 描述 | 尺寸 | 优先级 |
|---|---|---|---|
| 灵石 | 晶莹剔透的灵石,散发柔和光芒 | 256×256 | P0 |
| 各类丹药 | 聚灵丹/筑基丹/回春丹等 | 128×128 | P1 |
| 法宝图标 | 各类法器/法宝 | 128×128 | P1 |
| 法术特效 | 火球/冰锥/剑气/护盾等 | 256×256 | P1 |
| 灵根图示 | 五行灵根可视化 | 512×512 | P0 |
| 境界突破特效 | 突破时的光影效果 | 1024×1024 | P2 |
11.2.4 UI 素材
| 素材 | 描述 | 尺寸 |
|---|---|---|
| 修炼面板背景 | 古色古香的卷轴/玉简风格 | 800×600 |
| 战斗界面边框 | 仙侠风格的边框装饰 | 自适应 |
| 地图底图 | 修仙世界地图(羊皮纸风格) | 1792×1024 |
| 侧栏修仙面板 | 与 DoL 侧栏融合的修仙信息面板 | 300×400 |
| 仙门入口图标 | 泛着青光的符文门 | 64×64 |
11.3 音频素材清单
11.3.1 背景音乐(BGM)
| 场景 | 风格 | 时长 | 优先级 |
|---|---|---|---|
| 青牛镇/凡人场景 | 田园牧笛,古筝轻弹 | 3-5min循环 | P0 |
| 黄枫谷/宗门日常 | 清幽仙乐,流水鸟鸣 | 3-5min循环 | P0 |
| 修炼/打坐 | 空灵冥想,低频嗡鸣 | 5min循环 | P0 |
| 战斗(低阶) | 紧张鼓点,剑鸣声 | 2-3min循环 | P1 |
| 战斗(高阶) | 宏大交响,雷鸣电闪 | 2-3min循环 | P2 |
| 坊市/集市 | 热闹市井,人声鼎沸 | 3min循环 | P1 |
| 乱星海 | 海浪涛声,远处仙乐 | 3-5min循环 | P2 |
| 秘境/遗迹 | 诡异空灵,不安氛围 | 3min循环 | P2 |
| 灵界 | 超越凡尘的宏大音乐 | 5min循环 | P4 |
| 说书人场景 | 东方古韵,三弦/琵琶 | 2min循环 | P0 |
11.3.2 环境音效
| 音效 | 触发场景 |
|---|---|
| 灵气流动声 | 高灵气区域持续播放 |
| 鸟鸣/虫鸣 | 山林/药园场景 |
| 海浪声 | 乱星海区域 |
| 风声 | 高空/山顶场景 |
| 集市喧闹 | 坊市/城市 |
| 雷声/雨声 | 配合天气系统 |
11.3.3 交互音效
| 音效 | 触发时机 |
|---|---|
| 突破成功 | 境界突破成功时 |
| 突破失败 | 突破失败/走火入魔时 |
| 法术释放 | 每次施放法术 |
| 法宝出鞘 | 装备/使用法宝 |
| 炼丹成功 | 炼制出丹药 |
| 炼丹爆炸 | 炼丹失败/炸炉 |
| 灵石获得 | 获得灵石时 |
| 升级提示 | 功法/法术升级 |
11.4 素材技术方案
// 音频播放(使用 maplebirch 的 Howler 集成)
FanrenAudio = {
bgm: null,
playBGM: function(trackId) {
if (this.bgm) this.bgm.stop();
this.bgm = new Howl({
src: ['fanren-audio/bgm/' + trackId + '.ogg'],
loop: true,
volume: 0.5,
});
this.bgm.play();
},
playSFX: function(sfxId) {
new Howl({
src: ['fanren-audio/sfx/' + sfxId + '.ogg'],
volume: 0.7,
}).play();
},
// 按区域自动切换 BGM
onZoneChange: function(zoneId) {
var bgmMap = {
'fanren-town': 'pastoral',
'fanren-sect-outer': 'sect-calm',
'fanren-sect-garden': 'sect-calm',
'fanren-combat': 'battle-low',
// ...
};
if (bgmMap[zoneId]) this.playBGM(bgmMap[zoneId]);
},
};
// 图片显示(场景图作为 passage 背景)
FanrenScene = {
showScene: function(imageId) {
var container = document.getElementById('fanren-scene-bg');
if (!container) {
container = document.createElement('div');
container.id = 'fanren-scene-bg';
container.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;opacity:0.3;background-size:cover;background-position:center;transition:opacity 1s;';
document.getElementById('passage-content').appendChild(container);
}
container.style.backgroundImage = 'url(fanren-images/scenes/' + imageId + '.png)';
container.style.opacity = '0.3';
},
};
11.5 素材生成计划
| 阶段 | 素材范围 | 预计数量 |
|---|---|---|
| Phase 1(v0.1) | 青牛镇场景+灵石图标+修炼BGM+说书人BGM | ~10件 |
| Phase 2(v0.2) | 黄枫谷全套场景+宗门BGM+基础法术图标 | ~20件 |
| Phase 3(v0.3) | 战斗特效+低阶NPC立绘+战斗BGM | ~30件 |
| Phase 4(v0.4) | 血色禁地场景+韩立立绘+秘境BGM | ~20件 |
| Phase 5+ | 后续区域/角色/音效 | 持续扩展 |
12. UI 与交互设计
12.1 侧栏改造
DoL 的侧栏需要展示修仙信息:
┌──────────────────────┐
│ [角色名] │
│ 境界:筑基中期 │
│ 灵根:双灵根(金木) │
│ ───────────── │
│ 灵力:■■■■■□□□ 65/100 │
│ 体力:■■■□□□□□ 35/100 │
│ 心境:■■■■■■■□ 85 │
│ ───────────── │
│ 灵石:1,234 │
│ 宗门:黄枫谷·内门弟子 │
│ ───────────── │
│ [装备栏] │
│ 法袍:灵级上品 × │
│ 法器:青锋剑 × │
│ 本命:× │
│ 灵兽:啼魂兽 × │
│ ───────────── │
│ [功法] │
│ 主修:清元剑诀 Lv.5 │
│ ───────────── │
│ 日期:天历3年春 │
└──────────────────────┘
12.2 新增界面
修炼面板
┌──────────────────────────────────┐
│ 修炼 │
│ ───────────────────── │
│ 当前境界:筑基中期 │
│ 修炼进度:■■■■■■□□□□ 62% │
│ 预计突破:约45天 │
│ ───────────────────── │
│ [打坐修炼] [服用丹药] [查看功法] │
│ [突破尝试] [离开] │
└──────────────────────────────────┘
炼丹面板
┌──────────────────────────────────┐
│ 炼丹 │
│ ───────────────────── │
│ 丹方列表: │
│ · 聚灵丹(灵级下品)✓ │
│ · 筑基丹(灵级中品)✓ │
│ · ??? │
│ ───────────────────── │
│ 灵材库存: │
│ · 聚灵草 ×12 │
│ · 凝元花 ×5 │
│ · ... │
│ ───────────────────── │
│ [选择丹方] [开始炼制] │
└──────────────────────────────────┘
法术面板
┌──────────────────────────────────┐
│ 法术 │
│ ───────────────────── │
│ 攻击法术: │
│ · 火球术 Lv.3 灵力:15 │
│ · 剑气术 Lv.5 灵力:20 │
│ ───────────────────── │
│ 防御法术: │
│ · 护体灵光 Lv.4 灵力:10 │
│ ───────────────────── │
│ 辅助法术: │
│ · 轻身术 Lv.2 灵力:8 │
│ · 隐身术 Lv.1 灵力:25 │
│ ───────────────────── │
│ [装备法术栏位] │
└──────────────────────────────────┘
12.3 地图系统
新增修仙世界地图界面:
┌──────────────────────────────────┐
│ 修仙世界地图 │
│ ───────────────────── │
│ ┌─────────────────────────┐ │
│ │ [天南] [乱星海] [大晋] │ │
│ │ ↓ │ │
│ │ [幕兰] [极西] │ │
│ └─────────────────────────┘ │
│ │
│ 当前位置:黄枫谷·内门 │
│ 灵气浓度:浓郁 │
│ │
│ [前往...] │
│ · 黄枫谷·山门 │
│ · 黄枫谷·药园 │
│ · 黄枫谷·任务大厅 │
│ · 越国·京城 │
└──────────────────────────────────┘
13. 技术实现方案
13.1 架构总览
fanren-xiuxian.mod.zip
├── mod.json # 模组元信息
├── fanren-main.js # 主逻辑入口
├── fanren-cultivation.js # 修炼系统
├── fanren-combat.js # 战斗扩展
├── fanren-crafting.js # 炼制系统
├── fanren-npc.js # NPC 系统
├── fanren-sect.js # 宗门系统
├── fanren-story.js # 剧情系统
├── fanren-ui.js # UI 扩展
├── fanren-ui.css # 样式
├── fanren-data.js # 数据定义(功法/丹药/NPC等)
├── fanren-zones.js # Zone 注册
├── fanren-events.js # 事件注册
└── passages/ # Twine 段落(剧情文本)
├── fanren-intro.html # 开场
├── fanren-sect/ # 宗门相关段落
├── fanren-quests/ # 任务段落
└── ...
13.2 核心技术要点
13.2.1 初始化
// fanren-main.js
// 模组初始化入口
(function() {
"use strict";
// 等待 DoL 框架加载完毕
document.addEventListener(":init", function() {
// 注册所有子系统
FanrenCultivation.init();
FanrenCombat.init();
FanrenCrafting.init();
FanrenNPC.init();
FanrenSect.init();
FanrenStory.init();
FanrenUI.init();
FanrenZones.init();
FanrenEvents.init();
// 初始化玩家修仙数据
if (!V.fanren) {
V.fanren = FanrenData.createDefaultPlayer();
}
console.log("[凡人修仙传] 模组初始化完成");
});
})();
13.2.2 数据持久化
所有修仙数据通过 V.fanren 对象存储,随 DoL 的存档系统自动保存:
V.fanren = {
// 基础
spiritualRoot: { ... },
cultivation: { ... },
techniques: { ... },
// 战斗
combat: { ... },
spells: [ ... ],
// 物品
inventory: { ... }, // 灵石、灵材、丹药等
equipment: { ... }, // 装备
spiritBeasts: [ ... ], // 灵兽
// 社交
sect: { ... }, // 宗门信息
relationships: { ... }, // NPC 关系
// 剧情
story: {
currentVolume: 1,
completedQuests: [],
activeQuests: [],
flags: {}, // 剧情标记
},
// 副职业
crafting: {
alchemy: { level: 0, exp: 0 },
artifactRefining: { level: 0, exp: 0 },
formation: { level: 0, exp: 0 },
talisman: { level: 0, exp: 0 },
},
};
13.2.3 Zone 注册
使用 DoL 的 zone 系统注册修仙世界区域:
// fanren-zones.js
FanrenZones = {
init: function() {
// 注册所有 zone
this.registerZone("fanren-town", {
name: "青牛镇",
description: "一个普通的凡人小镇...",
spiritualEnergy: "thin",
connections: ["fanren-capital", "fanren-wilderness"],
events: ["fanren-town-event-01", "fanren-town-event-02"],
npcs: ["npc_elder", "npc_merchant"],
dangerLevel: 0,
});
this.registerZone("fanren-sect-gate", {
name: "黄枫谷·山门",
description: "黄枫谷的入口,两座山峰之间...",
spiritualEnergy: "rich",
connections: ["fanren-sect-outer", "fanren-town"],
events: ["fanren-sect-gate-event-01"],
npcs: ["npc_gate_guard"],
dangerLevel: 0,
requires: { realm: "mortal" }, // 凡人可进入
});
// ... 更多 zone
},
};
13.2.4 战斗系统集成
扩展 DoL 的战斗系统而不修改原版代码:
// fanren-combat.js
FanrenCombat = {
init: function() {
// 监听战斗开始事件
document.addEventListener(":combat-start", function() {
// 注入修仙战斗 UI
FanrenCombat.injectCombatUI();
});
// 监听战斗回合
document.addEventListener(":combat-round", function() {
// 处理灵力消耗、法术效果等
FanrenCombat.processRound();
});
// 监听战斗结束
document.addEventListener(":combat-end", function() {
// 处理战利品、经验等
FanrenCombat.processRewards();
});
},
injectCombatUI: function() {
// 在战斗界面添加法术按钮、灵力条等
// 使用 AfterLinkZone 或 DOM 注入
},
};
13.2.5 侧栏扩展
// fanren-ui.js
FanrenUI = {
init: function() {
// 在侧栏添加修仙信息
this.injectSidebar();
// 定时刷新侧栏显示
setInterval(function() {
FanrenUI.updateSidebar();
}, 1000);
},
injectSidebar: function() {
// 在侧栏注入修仙状态面板
// 使用与 clothesicon 类似的方式
var sidebar = document.querySelector("#sidebar-stats");
if (sidebar) {
var panel = document.createElement("div");
panel.id = "fanren-sidebar-panel";
panel.innerHTML = this.buildSidebarHTML();
sidebar.appendChild(panel);
}
},
};
13.3 与现有模组的兼容性
| 已有模组 | 兼容策略 |
|---|---|
| 说书人 NPC(fable mod) | 深度联动:老宅仙门入口、说书人引路系统、资源互通、成就联动。需要 fable draft9.9.5.8+ |
| 小小PC(litterPC) | 共存,litterPC 的换装系统兼容法袍 |
| 服装图标(clothesicon) | 扩展图标支持法袍/法宝 |
13.4 性能考量
- 每日修炼计算延迟到玩家主动操作时执行,不做后台实时计算
- NPC AI 行为在 zone 切换时批量更新
- 大量数据(功法/丹药/灵材)使用查找表而非循环
- 战斗系统复用 DoL 原版战斗循环,只在关键节点注入逻辑
13.5 MapleBirch 框架 API 适配(v5.4.2 验证)
经逐项查验 MapleBirch v5.4.2 框架源码(137 个 .d.ts 类型声明),确认以下 API 适配方案:
事件系统
| 原设计 | 框架实际 API | 适配方式 |
|---|---|---|
jQuery(document).on(":passagedisplay") | maplebirch.on(':passagedisplay', cb) | 已适配,jQuery 作后备 |
jQuery(document).on(":dayPassed") | maplebirch.dynamic.regTimeEvent('onDay', id, opts) | 已适配,:dayPassed 不存在 |
:combat-start/round/end | 不存在 | 改用 CombatAction.reg() 注册战斗按钮 + 段落拦截 |
战斗系统
框架战斗扩展是动作按钮注册制,非事件流:
// 注册新的战斗动作(法术/法宝/灵兽攻击)
maplebirch.combat.CombatAction.reg({
id: 'fanren:fireball',
actionType: 'leftaction',
cond: function(ctx) { return V.fanren.combat.spiritualPower >= 15; },
display: function(ctx) { return '火球术(灵力-15)'; },
value: function(ctx) {
V.fanren.combat.spiritualPower -= 15;
return 'fireball';
},
color: '#ff4500',
order: 50
});
无法拦截回合结算流程。Boss 战等需要完全自定义的战斗用 regStateEvent('gate') 跳转到自建 twee 段落。
装备系统
NPCClothesSlot 是固定 15 槽位,不可扩展。修仙专属槽位(丹田/灵兽/储物袋/符箓)存在 V.fanren.equipment 中,用自定义 UI 面板显示。
音频系统
完整 Howler.js 集成:maplebirch.audio(播放列表/环境音)+ maplebirch.howler.Howl(原始音频实例)。
Zone 系统
maplebirch.tool.addTo(zone, widgets) + ZonesManager 完整支持区域注册/导航/段落注入。Location.configure() 支持视觉位置渲染。
NPC 系统
maplebirch.npc.add(npcData) 支持创建自定义 NPC,含日程/服装/变身/怀孕子系统。可用于实装韩立等原著 NPC 的可视化。
启动配置
"addonPlugin": [],
"dependenceInfo": [
{ "modName": "maplebirch", "version": ">=5.0.0" },
{ "modName": "fable", "version": ">=0.1.0-draft9.9.5.8" }
]
addonPlugin 留空(已知坑:params.script 在特定打包场景静默不执行),脚本走 scriptFileList 原生通道。
14. 开发路线图
14.1 当前进度总览
已完成设计/编码:
✅ 完整设计文档(14章 + 附录)
✅ boot.json 模组骨架
✅ fanren-cultivation.js — 修炼体系(境界/灵根/功法/灵力/修炼公式)
✅ fanren-world.js — 活世界引擎(世界时钟/NPC时间线/势力演化/事件调度/
跨世界同步/新闻系统/玩家影响追踪/NPC生死系统)
✅ fanren-portal.js — 仙门入口(说书人联动/条件检测/DOM注入)
✅ fanren-guide.js — 说书人引导系统(6节点/自动触发)
✅ fanren-ui.js — 侧栏修仙面板
✅ fanren-ui.css — 仙侠主题UI(翡翠金纹/水墨气韵/全套组件)
✅ fanren-main.js — 主入口(初始化/跨世界检测)
14.2 阶段划分
Phase 0:说书人联动 · 入口(v0.0)—— 大部分已完成
- boot.json 模组骨架
- 仙门入口代码(fanren-portal.js)
- 说书人引导系统代码(fanren-guide.js)
- 仙侠主题 UI 框架(fanren-ui.css)
- fanren-passages.twee — 过渡段落(仙门进入/说书人送别/灵根觉醒/第一步)
- 跨世界桥接 — fanren-bridge.js(灵石↔英镑/装备映射/法术跨世界/属性同步)
- 素材:仙门图标(AI生成)、说书人送别场景图、过渡BGM
- 真机验收:装包→满足条件→老宅出现仙门→点击进入→过渡剧情→落地修仙世界
Phase 1:核心框架 · 可玩最小循环(v0.1)
- 修炼系统实装(灵根觉醒段落、打坐修炼UI、突破尝试UI)
- 第一个 Zone(青牛镇 + 黄枫谷山门)—— 可移动、可交互
- 基础战斗扩展(灵力条、法术消耗)
- 世界时钟实装验证(:dayPassed 驱动、NPC 自动推进、回归报告)
- NPC 生死系统验证(寿元检查、互杀、玩家击杀→永久消失)
- 开场剧情完整链路(仙缘→灵根觉醒→说书人第一段引导→自由行动)
- 素材:青牛镇场景图、灵石图标、修炼/田园BGM、基础音效
Phase 2:宗门系统(v0.2)
- 黄枫谷完整区域(外门/内门/药园/任务大厅/禁地)
- 宗门地位系统(记名→外门→内门→核心→长老→掌门)
- 宗门任务系统(采集/猎杀/护送/探索)
- 初始 NPC 实装(厉飞雨、慕沛灵、陈巧倩、董萱儿——含时间线/遭遇/对话)
- 功法系统(获取/装备/修炼/升级)
- 素材:黄枫谷全套场景、宗门BGM、NPC立绘
Phase 3:战斗与炼制(v0.3)
- 完整战斗扩展(法术选择/法宝使用/灵兽出战)
- 炼丹系统(丹方/灵材/炼制UI/成功率/炸炉)
- 装备/法宝系统(品级/槽位/强化)
- 敌人设计(低阶修士/妖兽/BOSS)
- 素材:战斗特效、法术图标、丹药图标、战斗BGM
Phase 4:天南篇完整(v0.4)
- 天南各国地图(越国京城/元武国/紫金国/幕兰草原)
- 血色禁地副本(完整探索/战斗/宝物)
- 韩立 NPC 完整交互(同地点遭遇/对话/关系/交易/战斗)
- 正魔冲突事件(世界引擎驱动)
- 筑基突破事件线
- 素材:各区域场景、韩立立绘、秘境BGM
Phase 5:乱星海篇(v0.5)
- 乱星海完整地图(内星海/外星海/虚天殿)
- 星宫/妙音门势力实装
- 紫灵/元瑶 NPC 线
- 结丹突破事件
- 素材:海景场景、虚天殿场景、新NPC立绘
Phase 6:天南回归 + 大晋(v0.6)
- 元婴期重返天南(世界已变化/旧NPC已成长或陨落)
- 大晋帝国地图
- 太真门/阴罗宗超级势力
- 化神突破
Phase 7-10:灵界 + 飞升
- Phase 7:灵界篇上(化神→炼虚→合体)
- Phase 8:灵界篇下(合体→大乘)
- Phase 9:渡劫 + 飞升结局
- Phase 10:终局内容(全NPC结局收束/世界最终状态/成就系统)
14.3 优先级排序
P0 · 最高优先级(核心体验·必须先有):
1. 过渡段落 + 跨世界桥接(Phase 0 剩余)
2. 修炼系统实装(打坐/突破/进度可视化)
3. 第一个可玩 Zone(青牛镇 + 黄枫谷山门)
4. 世界时钟真机验证(:dayPassed 驱动模拟)
P1 · 高优先级(让世界「活」起来):
5. NPC 时间线实装(至少韩立+3个NPC完整可运行)
6. NPC 生死系统真机验证(老死/互杀/玩家击杀)
7. 回归报告(离开期间大事记)
8. 基础战斗扩展
P2 · 中优先级(深度内容):
9. 宗门系统
10. 炼丹/炼器
11. 灵兽系统
12. 道侣/双修
13. 跨世界装备互通实装
P3 · 低优先级(锦上添花):
14. 完整地图(天南各国/乱星海/大晋/灵界)
15. 阵法系统
16. 后期境界内容
17. 全NPC立绘/全场景图/全BGM
14.4 设计原则(贯穿全程)
| 原则 | 说明 |
|---|---|
| 世界是活的 | 不需要玩家干预也会自动运转。NPC自行修炼/赶路/战斗/死亡。势力自行扩张/冲突/衰落。事件按时间线发生。 |
| 效果跨世界不变 | 修仙世界的装备/技能/物品带回DoL主世界效果完全一样。玩家的成长是跨世界累积的。 |
| 死亡不可逆 | NPC死了就是死了,本存档不再出现。玩家杀/老死/互杀三种死因。主要NPC有剧情保护但玩家可破。 |
| 完全开放 | 没有线性剧情推进,没有章节锁。想去哪就去哪,想干嘛就干嘛。区域按境界设难度门槛但不锁路。 |
| 纯追加 | 不修改 DoL 原有代码。所有功能通过模组 JS/CSS/Passage 追加实现。 |
| 完美主义 | 宁可慢不可糙。每个系统都要打磨到满意。素材不齐不发版。 |
14.5 风险与对策
| 风险 | 影响 | 对策 |
|---|---|---|
| DoL 框架限制 | 某些功能可能无法实现 | 先做技术验证,不行就简化 |
| 内容量过大 | 开发周期极长 | 分阶段交付,每阶段独立可玩 |
| 与 DoL 系统冲突 | 属性/战斗系统不兼容 | 追加不修改,用事件桥接 |
| 平衡性 | 修炼速度/战斗难度 | 早期就引入调参机制 |
| 跨世界物品平衡 | 修仙装备带回DoL可能破坏平衡 | 品级映射+上限控制(凡器级不带加成) |
| 世界模拟性能 | 离开太久回归时补算太多天 | 单次补算上限365天,超过截断 |
| NPC死亡太早 | 剧情保护NPC被玩家过早杀死 | plotArmor机制+只有玩家能破保护 |
| 原著还原度 | 玩家期望与实现差距 | 抓大放小,核心体验优先 |
附录 A:凡人修仙传境界对照表
| 境界 | 层级细分 | 寿命 | 标志能力 | 对应小说进度 |
|---|---|---|---|---|
| 凡人 | — | 70-80 | 无 | 第一卷前 |
| 炼气 | 1-13层 | 100-120 | 灵觉、基础法术 | 第一卷 |
| 筑基 | 初/中/后 | 200-250 | 飞行、护体灵光 | 第二卷 |
| 结丹 | 初/中/后 | 400-500 | 丹火、领域 | 第三-四卷 |
| 元婴 | 初/中/后 | 800-1000 | 元婴出窍、瞬移 | 第四-五卷 |
| 化神 | 初/中/后 | 1500-2000 | 神游太虚 | 第六卷 |
| 炼虚 | 初/中/后 | 3000+ | 虚空行走 | 第七卷 |
| 合体 | 初/中/后 | 5000+ | 合体变身 | 第七卷 |
| 大乘 | 初/中/后 | 10000+ | 近仙之力 | 第八卷 |
| 渡劫 | — | 不定 | 渡天劫 | 结局 |
附录 B:核心功法列表(初始设计)
| 功法名 | 品级 | 属性 | 效果 | 获取途径 |
|---|---|---|---|---|
| 长春功 | 灵级下品 | 木 | 修炼稳定,延寿 | 黄枫谷基础功法 |
| 清元剑诀 | 灵级上品 | 金 | 攻击力强 | 黄枫谷内门 |
| 大衍决 | 玄级 | 无 | 增强神识 | 大衍神君传授 |
| 青元剑诀 | 天级 | 金 | 顶级剑修功法 | 极罕见 |
| 玄阴经 | 玄级 | 暗 | 魔道顶级功法 | 阴罗宗 |
| 紫焰真诀 | 灵级上品 | 火 | 火系强攻 | 坊市/秘境 |
| 冰心诀 | 灵级中品 | 水/冰 | 防御+心境 | 掩月宗 |
附录 C:核心丹药列表(初始设计)
| 丹药名 | 品级 | 效果 | 主要材料 |
|---|---|---|---|
| 聚灵丹 | 灵级下品 | 修炼速度+50%,持续1天 | 聚灵草 |
| 筑基丹 | 灵级中品 | 突破筑基必备 | 多种稀有灵草 |
| 金创药 | 灵级下品 | 恢复30%体力 | 常见草药 |
| 回春丹 | 灵级中品 | 完全恢复体力 | 回春花 |
| 凝元丹 | 灵级中品 | 恢复50%灵力 | 凝元果 |
| 结丹丹 | 灵级上品 | 突破结丹辅助 | 极稀有 |
本文档为初始设计草案。
所有系统设计均为初步方案,具体数值和细节在实现时根据实际测试调整。
.webp)
.webp?width=800)