Jianghu · 功法系统设计方案 v1
🔴 数值与实现核对(2026-10-10)
本文是 v1 设计稿,落地后以下条目已过时。数值一律以 server/arts.mjs 与 server/skills.mjs 为准:
- 招式池 = 功法位的武器功法(最多 3 式)+ 普攻;老的
hero.skills已退役、不再参战
- 掉落品阶:小怪只出凡品;精英怪按 Boss 档结算;金 / 传奇是 Boss 与关底专属
- 「精英每 10 关额外 6% 掉良品」不存在;代码里的 6% 精英档要求单波击杀 ≥8 只、当前触发不了
- 武器功法不是"只给招不给属性":它自带按品阶的基础攻击(10/19/33/54/84)与 0~4 条附加词条
- 内 / 外功没有主属性加成(唯一例外:龙象神功 +18 力量)
- 「传奇额外一条被动」不存在:传奇只是多一条附加词条
- 功法是学不是穿:学了占格、取不下来,只能遗忘(遗忘连书销毁);遣散门人时功法随人销毁、不回收
江 湖 · 功 法 系 统
内功 · 外功 · 武器功法 —— 三系 / 五品阶 / 十八职业各十二式
设计方案 v1 · 2026-10-07 · 待老大过目 · 配套文档:装备系统设计.html / 门人职业与形象设计.html
## ⚠️ 2026-10-07 第二版调整(以此为准,正文里"穿/卸"的字样已作废)
- 功法不是装备,是"学习" —— 学会后占用一个功法格,不能被取下来,
只能「遗忘」;遗忘有二次确认,功法和练出来的等级一起永久消失(书不回仓库)。
- 战斗即练功 —— 学会的功法在战斗中只要有一次使用就涨经验:
武器功法要真的放过那一式;内功/外功是被动(没有"释放"这个动作), 只要该门人这一波有参战就算。
- 功法 12 级,等级越高加成越大:倍率
1 + 0.12 × (等级 − 1),
12 级封顶约 ×2.32。经验曲线 60 × 1.28^(lv−1), 1 → 12 级累计约 3023 点(每波每种 8 点、Boss 波 ×2.5,约 380 波练满)。
实现对应:后端 server/arts.mjs(等级与曲线)+ server/artsStore.mjs (learn / forget / addBattleExp);前端 src/hall.js 的 pickArtLearn / forgetArt 与功法格上的 Lv·熟练度条。 验收:node tools/verify_arts.mjs。
⚠️ 第四版补充(同日)· 提示卡改版式: 「信息排列效果都很差,突出不了重点,而且很多文字很暗,看不清楚」—— 装备 / 功法 / 人物 / 招募候选四处的提示卡统一改用 tp-* 版式: 1 属性数值走「大数字」格子(标签在上、数字 19px 等宽体在下); 2 特殊效果走独立专区(淡橙底 + 左侧色条:词条 / 传奇威能 / 招式效果 / 起手招式); 3 人物信息走徽记行(头像 + 姓名 + 资质印 + 性别/职业/定位/站位/本命/等级/战力)。 对比度一并收口:标签用 --tip-k(#5f5a4f ≈6.5:1)、数值 --tip-v(#2f2c26 ≈12:1), 不再用 --ink-2/--ink-3(3~4:1,就是"文字很暗"的来源); 品质徽记从"实心底 + 白字"改成"淡彩底 + 同色系深字"(金字上的白字只有 2:1)。 招募候选的卡内自绘深底浮层(.cand-tip)删除,改挂 data-tip-who 走共用浮层。 看图自查:node tools/shot_tips.mjs(七张:装备已鉴定/未鉴定/功法/候选/名册/身上装备/身上功法)。
⚠️ 第三版补充(同日)· 悬浮详情只有一份实现: 「人物身上的装备和已经学会的功法,鼠标指上去时也都要有详细的信息」(老大原话)。 ⇒ 人物面板的 8 个装备格与 7 个功法格分别挂 data-tip-item / data-tip-art, 详情由 src/warehouse.js 的 equipTipHTML / artTipHTML + 全页单例浮层 TipLayer 渲染 —— 与仓库、右侧换装栏同一份。 原先人物面板那套纯 CSS 浮层(.art-slot:hover .as-tip)已删除: 格子为了裁圆角带 overflow: hidden,浮层定位在格子之外, 其实一直被裁掉、根本看不见。
另:仓库里的功法格(还没学)不再显示"熟练度 0/60(还差 60 点)"—— 没学过的书没有熟练度,判据是后端给不给 lv 字段。
零 · 一句话讲清
功法 = 可以像装备一样穿在身上的秘籍。仓库里是方形圆角格子,拖到门人身上占一个功法位, 穿上去就生效 —— 内功/外功给被动属性(内力、属性攻防、物攻物防),武器功法给主动招式(群攻、连击、控制、增益、恢复)。 五品阶(白→传奇)决定数值档位与图标底色,与装备同一套语言。(已改为学习 / 遗忘:学后不可卸,只能遗忘)
这样做的理由:装备已经有"掉落 → 仓库 → 拖上身 → 属性面板变化"这条完整闭环, 功法沿用同一条管线,玩家学一次就懂;后端也只需要多一个 Store,而不是多一套交互范式。
240 功法总数
216 武器功法 · 18 职业 × 12
7 单人功法位 · 内2 外2 武器3
106 图标基础素材(全部模型生图)
一 · 三系定位
内 功
neigong · 卷册形制 · 各职业通用
修的是真气。主加内力池与内力循环,并把内力转化为属性伤害; 也有护体一路,加属性抗性。
- 内力上限 / 内力回复 / 内力消耗
- 属性伤害(招式上的真气伤害)
- 属性抗性(挡内家路子的伤害)
- 少量:技能冷却缩减
外 功
waigong · 卷册形制 · 各职业通用
练的是筋骨。主加物理伤害与物理防御, 是"谁都穿得、谁穿都不亏"的底子。
- 物理攻击 / 破防 / 暴击
- 物理防御 / 生命上限
- 伤害减免 / 反弹
- 少量:受击回内力、击杀回血
武 器 功 法
weaponArt · 书本形制 · 每职业 12 式
记的是招。封面印本门兵器徽记, 翻开就是杀敌的招式 —— 群攻、连击、控制、增益、恢复。
- 穿在 武器功法位 才可用
- 一个门人最多带 3 式出战
- 招式数据沿用现有
SKILLS表
- 本命兵器穿本门功法无额外限制(招式本来就按职业设计)
为什么内功/外功不做成主动技
主动技的规则是"消耗内力、有冷却、点了才放"。若内功也走这条线,玩家会得到两个几乎一样的技能位, 却少了"配装"这层乐趣。做成被动秘籍之后:内功 = 强化你的招式(属性伤害/内力循环),外功 = 强化你的平砍与抗揍, 两条路互相独立又都指向同一场战斗 —— 这就是挂机作品里最好用的"数字叠层"结构。
二 · 品阶与数量
五品阶沿用装备的一套
| 品阶 | key | 底色 | 功法加成档位 | 图标处理 | 掉落词条等价 |
|---|---|---|---|---|---|
| 凡品 | white | ● | ×1.00 | 素净米白纸底,不施装饰 | ≈ 白装 |
| 良品 | green | ● | ×1.35 | 淡青竹色纸底,一圈细竹青纸边 | ≈ 绿装 |
| 精品 | blue | ● | ×1.80 | 靛青纸底,配靛青与银白双色纸片 | ≈ 蓝装 |
| 宝器 | gold | ● | ×2.40 | 暖赭金纸底,点缀金箔角饰 | ≈ 金装 |
| 传奇 | legend | ● | ×3.20 | 朱砂红纸底,繁复围框 + 顶饰,气势卓然 | ≈ 神兵 |
倍率直接复用 equipDefs.mjs 的 AFFIX_TIER_MUL —— 同一套数字,玩家不用记两遍。
每职业 12 式的品阶配比
| 品阶 | 数量 | 定位 | 获取 |
|---|---|---|---|
| 凡品 | 3 | 入门式,新人 5 分钟就能凑齐 | 招募自带 1 式 + 小怪掉落 |
| 良品 | 3 | 第一次有"选了哪个"的感觉 | 精英掉落(Boss 只出精品以上) |
| 精品 | 3 | 主力招式档,含群攻与核心控制 | Boss 掉落、游历首通 |
| 宝器 | 2 | 职业特色招式,只此两式 | Boss 稀有掉落 |
| 传奇 | 1 | 本门绝学,一格只放得下它一个念想 | Boss 极稀有 / 游历深处 |
| 系 | 品阶档位 | 合计 | 说明 |
|---|---|---|---|
| 武器功法 | 3/3/3/2/1 | 216 | 18 职业 × 12 式 |
| 内功 | 3/3/3/2/1 | 12 | 通用,卷册形制 |
| 外功 | 3/3/3/2/1 | 12 | 通用,卷册形制 |
| 总计 | 240 | 三系配比一致,好记也好做 |
三 · 属性口径
🔴 不改三层属性模型的规矩。功法加成一律走 sumEquipStats() 的同一条通道 (attrs / flat / pct / special 四个桶), 绝不写回门人的本体属性 attrs。否则一穿一脱,资质分档就废了。
新增两个战斗字段
"属性伤害 / 属性防御"在现有 statsFor() 里没有对应项(现在只有物理 atk / def)。 新增两个,改动面最小、口径最清楚:
| 字段 | 中文 | 类型 | 作用位置 |
|---|---|---|---|
| elemDmg | 属性伤害 | pct | 招式命中时,在物理伤害之后追加 招式基础伤害 × elemDmg 的真气伤害(不受 def 减免,受 elemRes 减免) |
| elemRes | 属性抗性 | flat | 受击结算时,真气伤害部分 ×(1 − elemRes);与 damageReduce 独立相乘,不叠加同一桶 |
平砍不含真气,所以内功对平砍没有帮助 —— 这正是"内功强招式、外功强平砍"的分工。
三系各加什么(落桶一览)
| 系 | 主属性(落 attrs 桶) | 固定值(flat) | 百分比(flat/pct) | 特殊(special) |
|---|---|---|---|---|
| 内功 | —(仅龙象神功 +18 力量) | maxMp mpRegen | elemDmg elemRes mpCost(负) skillDmg mpOnHit | 气劲再生、招式附带减速 |
| 外功 | —(仅龙象神功 +18 力量) | atk def maxHp | atk(pct) def(pct) crit critDmg armorPen damageReduce hpRegen | 反弹、受击回内力、击杀回血 |
| 武器功法 | 基础攻击(按品阶 10/19/33/54/84)+ 0~4 条附加词条 | 招式数据本身:targets / hits / mult / cost / cd / effects | 传奇为第 4 条附加词条 |
数值锚点(以 30 级门人裸属性为基准):附加词条数按品阶 0/1/2/3/4 条。 同一门人穿满 7 格功法,白装全套约 +12% 战力,传奇全套约 +55% —— 与装备的占比大致 4:6,功法是一份"看得见但吃不掉装备"的补强。
四 · 功法位:怎么穿、穿几个
内功位 2 格 —— 任何职业都能穿,两个内功可叠加(叠算走同一套 (base+flat)×(1+pct))
外功位 2 格 —— 同上
武器功法位 3 格 —— 出战时可用的招式就是这 3 式(外加本体自带的 1 式普攻)
合计 7 格 —— 面板上与 8 个装备槽并列,一行功法区,视觉上自成一块
与门人自带的"技能位"是什么关系
现有门人有 maxSkills = 5 个技能位(技能书学会的技能)。新体系下:
| 来源 | 存在哪 | 战斗中的作用 |
|---|---|---|
| hero.skills(老字段) | 门人身上,永久 | 保留(存档字段)。已退役、不再参战 —— 出战招式只来自功法位(见顶部核对块) |
| 武器功法 × 3 | 功法位,可随时换 | 从功法位来的招式,脱下即失效 |
| 内功 × 2 / 外功 × 2 | 功法位,可随时换 | 不产生招式,只产生属性 |
(2026-10-07 起已改为「学习 / 遗忘」:学后不可卸,只能遗忘 —— 表中"可随时换 / 脱下即失效"的字样已作废,见顶部核对块。)
为什么保留老 hero.skills:老存档里已经学过的技能不能凭空消失(玩家会觉得东西被吞了); "学会就永远是自己的"这条情感线值得留着(老技能已由迁移把这人的本职业招式转为对应功法)。 现已退役:出战招式池 = 功法位武器功法(最多 3 式)+ 普攻,hero.skills 不再参战(见顶部核对块)。
招式池上限与排序
- 可用招式 = 功法位武器功法(最多 3 式)+ 普攻(老
hero.skills已退役、不再参战,见顶部核对块)。
- 战斗里 AI 按「能放就放、冷却好了就放、内力不够跳过」的现有逻辑挑招,不改战斗框架。
- 老
hero.skills不再入池:不存在"同一式算两次"的问题,原"去重后取前 8"的算法已作废(见顶部核对块)。
五 · 命名总表
下表 216 个武器功法名按 18 职业排布。凡品三个是"能立刻拿到手"的入门式,名字要平实;越往上越见骨气,传奇那一式要是玩家愿意截图的那一个。 带「新」标记的是本次新设计的名字;不带标记的是沿用现有技能(下方小字为现有技能 id, 后端直接复用,老存档不受影响)。
招式列的含义:单体 = 最靠前一只;单体(远) = 最远一只;群攻 n = 最靠前 n 只;群攻全体 = 全部; 连击 = 同一目标多段;控制 = 附带眩晕/定身;增益 = 加我方;恢复 = 治疗。
剑侠 swordsman · 剑 · jian · 近战敏捷
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 基础剑法jichujian | 单体 | 1 段 135% |
| 凡 | 刺剑诀 | 单体 | 1 段 145% · 破防 10% |
| 凡 | 撩剑式 | 连击 | 2 段 75% |
| 良 | 三才剑法 | 群攻 2 | 1 段 110% |
| 良 | 游身剑 | 连击 | 3 段 60% · 自身闪避 +15% 5s |
| 良 | 清风剑意 | 增益 | 自身攻速 +18% 8s |
| 精 | 剑气纵横jianqi | 群攻 3 | 1 段 160% |
| 精 | 流云剑法liuyun | 单体 | 1 段 310% |
| 精 | 追魂十三剑 | 连击 | 4 段 88% · 每段叠 3% 破防 |
| 宝 | 太乙分光剑 | 群攻 3 | 2 段 95% |
| 宝 | 剑心无我 | 单体 | 1 段 360% · 必中 · 破防 30% |
| 传 | 万剑归宗wanjian | 群攻全体 | 1 段 140% · 剑雨覆盖全场 |
刀客 saber · 刀 · dao · 近战输出
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 刀法入门daofa | 连击 | 2 段 115% |
| 凡 | 劈山式 | 单体 | 1 段 160% · 慢 |
| 凡 | 断木刀 | 群攻 2 | 1 段 100% |
| 良 | 五虎断门刀 | 连击 | 3 段 95% |
| 良 | 柳叶刀法 | 单体 | 1 段 175% · 破防 15% |
| 良 | 回风落雁刀 | 群攻 2 | 1 段 115% · 命中减速 15% |
| 精 | 狂刀三叠kuangdaosandie | 连击 | 3 段 105% |
| 精 | 血浪刀罡 | 单体 | 1 段 280% · 吸血 12% |
| 精 | 斩马刀诀 | 单体 | 1 段 200% · 目标血高于 70% 时额外 +50% |
| 宝 | 霸刀裂地 | 群攻全体 | 1 段 125% · 击退 |
| 宝 | 天罡刀阵 | 群攻 3 | 3 段 70% |
| 传 | 血战八荒xuezhan | 群攻全体 | 1 段 120% · 吸血 20% |
枪客 lancer · 枪 · qiang · 近战敏捷
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 拦拿扎lanaza | 单体 | 1 段 130% · 破防 10% |
| 凡 | 中平枪 | 单体 | 1 段 150% |
| 凡 | 点枪诀 | 连击 | 2 段 80% |
| 良 | 梅花枪 | 群攻 3 | 1 段 100% |
| 良 | 锁喉枪 | 控制 | 1 段 160% · 减速 20% 4s |
| 良 | 游龙枪法 | 连击 | 3 段 85% |
| 精 | 回马枪huimaqiang | 单体(远) | 1 段 170% · 直取最远 |
| 精 | 疾风骤雨枪 | 连击 | 5 段 55% |
| 精 | 挑滑车 | 单体 | 1 段 210% · 破防 25% |
| 宝 | 霸王卸甲枪 | 群攻 3 | 1 段 140% · 破防 35% |
| 宝 | 穿云破日枪 | 单体(远) | 1 段 330% |
| 传 | 百鸟朝凤bainiaochaofeng | 群攻 3 | 5 段 55% · 枪尖连点如群鸟啄食 |
戟将 halberdier · 戟 · ji · 近战输出
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 横戟立马hengji | 群攻 2 | 1 段 110% |
| 凡 | 拨戟式 | 单体 | 1 段 150% · 自身闪避 +10% 5s |
| 凡 | 刺戟诀 | 连击 | 2 段 85% |
| 良 | 双戟连环 | 连击 | 4 段 70% |
| 良 | 拦江戟法 | 群攻 3 | 1 段 105% |
| 良 | 勾戟锁敌 | 控制 | 1 段 130% · 30% 眩晕 1s |
| 精 | 横扫千军hengsaoqianjun | 群攻全体 | 1 段 115% |
| 精 | 戟影重重 | 群攻 3 | 3 段 75% |
| 精 | 画地为牢 | 控制 | 群攻 3 · 1 段 90% · 减速 30% 5s |
| 宝 | 方天画戟·裂阵 | 群攻全体 | 1 段 145% · 破防 30% |
| 宝 | 戟挑山河 | 单体 | 1 段 380% |
| 传 | 破军pojun | 群攻全体 | 1 段 130% · 破防 30% 8s |
斧手 axeman · 斧 · fu · 近战输出
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 力劈华山lipihuashan | 单体 | 1 段 160% · 慢而重 |
| 凡 | 板斧挥砍 | 群攻 2 | 1 段 105% |
| 凡 | 双斧交击 | 连击 | 2 段 90% |
| 良 | 断岳斧 | 单体 | 1 段 185% · 破防 20% |
| 良 | 回旋飞斧 | 群攻 3 | 1 段 95% |
| 良 | 碎骨斧法 | 单体 | 1 段 170% · 命中后目标攻击 −15% 6s |
| 精 | 旋风斩xuanfengzhan | 群攻 3 | 1 段 125% |
| 精 | 怒斧狂涛 | 连击 | 3 段 100% |
| 精 | 劈风斩浪 | 群攻全体 | 1 段 100% |
| 宝 | 盘古开山斧 | 单体 | 1 段 330% · 破防 40% |
| 宝 | 斧定乾坤 | 群攻全体 | 1 段 130% · 自身减伤 +30% 6s |
| 传 | 开天辟地kaitianpidi | 单体 | 1 段 400% · 残血(<30%)直接斩杀 |
锏侠 maceman · 锏 · mace · 近战输出
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 双锏点打shuangjiandian | 连击 | 2 段 100% |
| 凡 | 砸锏式 | 单体 | 1 段 155% |
| 凡 | 封架锏 | 增益 | 自身减伤 +25% 5s |
| 良 | 四楞锏法 | 单体 | 1 段 165% · 破防 20% |
| 良 | 连珠锏 | 连击 | 3 段 85% · 破防 15% |
| 良 | 破甲锏 | 单体 | 1 段 175% · 破防 25% |
| 精 | 断筋锏duanjin | 单体 | 1 段 180% · 破防 35% 6s |
| 精 | 撒手锏 | 单体(远) | 1 段 240% |
| 精 | 雷神锏 | 群攻 2 | 1 段 150% · 20% 眩晕 1s |
| 宝 | 金锏碎岳 | 群攻全体 | 1 段 125% · 破防 30% |
| 宝 | 八棱破军锏 | 单体 | 1 段 340% · 破防 50% |
| 传 | 碎甲suijia | 群攻 2 | 1 段 190% · 破防 50% 8s |
拳师 pugilist · 拳掌 · quan · 近战敏捷
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 长拳changquan | 单体 | 1 段 150% · 破防 15% |
| 凡 | 掌法zhangfa | 单体 | 1 段 160% · 15% 眩晕 1s |
| 凡 | 点穴术dianxue | 控制 | 1 段 70% · 眩晕 1.5s |
| 良 | 伏虎拳 | 单体 | 1 段 170% |
| 良 | 棉掌 | 增益 | 自身攻速 +20% 6s |
| 良 | 擒拿手 | 控制 | 1 段 130% · 减速 25% 5s |
| 精 | 铁指寸劲 | 单体 | 1 段 260% · 破防 30% |
| 精 | 分筋错骨手 | 控制 | 1 段 180% · 眩晕 1.5s · 降攻 20% 8s |
| 精 | 金刚指 | 单体(远) | 1 段 230% · 破防 40% |
| 宝 | 七伤拳 | 群攻全体 | 1 段 115% · 自损 5% 当前生命换 40% 增伤 |
| 宝 | 般若掌 | 群攻 3 | 1 段 140% · 30% 眩晕 1s |
| 传 | 亢龙有悔kanglong | 单体 | 1 段 420% · 破防 30% 6s |
棍僧 staffmonk · 棍 · gun · 近战坦克
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 棍法gunfa | 群攻 2 | 1 段 105% |
| 凡 | 挑棍式 | 单体 | 1 段 150% |
| 凡 | 扫堂棍 | 群攻 2 | 1 段 95% · 减速 15% 3s |
| 良 | 伏魔棍 | 控制 | 1 段 145% · 25% 眩晕 1s |
| 良 | 疯魔棍法 | 连击 | 3 段 90% |
| 良 | 行者棒 | 单体 | 1 段 175% |
| 精 | 韦陀护法weituohufa | 增益 | 自身减伤 +45% 8s |
| 精 | 十八罗汉棍 | 群攻 3 | 1 段 120% |
| 精 | 铁扫帚 | 群攻全体 | 1 段 105% · 减速 20% 4s |
| 宝 | 大圣降妖棍 | 单体 | 1 段 340% · 眩晕 2s |
| 宝 | 金刚伏魔圈 | 增益 | 全队减伤 +30% 10s |
| 传 | 罗汉伏魔luohan | 群攻全体 | 1 段 110% · 30% 眩晕 1.2s |
锤伯 hammerer · 锤 · chui · 近战坦克
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 双锤交击shuangchuijiaoji | 单体 | 1 段 120% · 破防 20% |
| 凡 | 锤击式 | 单体 | 1 段 165% |
| 凡 | 破壳锤 | 单体 | 1 段 150% · 破防 25% |
| 良 | 流星赶月锤 | 单体(远) | 1 段 180% |
| 良 | 震山锤 | 群攻 2 | 1 段 130% · 20% 眩晕 1s |
| 良 | 连环锤法 | 连击 | 3 段 90% |
| 精 | 地裂dilie | 群攻 2 | 1 段 135% · 25% 眩晕 1s |
| 精 | 雷公锤 | 单体 | 1 段 250% · 破防 30% |
| 精 | 崩山锤 | 群攻全体 | 1 段 110% · 击退 |
| 宝 | 混元一气锤 | 群攻 3 | 2 段 95% |
| 宝 | 摧城锤 | 单体 | 1 段 360% · 破防 45% |
| 传 | 擂鼓瓮金leiguwengjin | 群攻全体 | 1 段 100% · 破防 30% 8s |
拐师 crutchman · 拐 · guai · 近战坦克
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 铁拐横挡tieguaihengdang | 增益 | 自身减伤 +30% 5s |
| 凡 | 点拐式 | 单体 | 1 段 145% |
| 凡 | 拨拐诀 | 增益 | 1 段 130% · 自身闪避 +15% 4s |
| 良 | 双拐连环 | 连击 | 2 段 95% |
| 良 | 拐影重重 | 群攻 2 | 1 段 115% |
| 良 | 锁拐擒拿 | 控制 | 1 段 125% · 25% 眩晕 1s |
| 精 | 拐打连环guaidalianhuan | 单体 | 1 段 140% · 自身闪避 +20% 6s |
| 精 | 醉八拐 | 增益 | 自身闪避 +35% 8s · 攻速 +15% |
| 精 | 拐破千军 | 群攻 3 | 1 段 125% |
| 宝 | 金刚拐阵 | 增益 | 全队减伤 +25% 10s · 反射 20% |
| 宝 | 定海神拐 | 单体 | 1 段 320% · 眩晕 1.5s |
| 传 | 不动明王budongmingwang | 增益 | 自身反射 100% 8s |
鞭姬 whipmaster · 鞭 · bian · 控制
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 软鞭缠腕ruanbianchanwan | 控制 | 1 段 120% · 减速 20% 4s |
| 凡 | 甩鞭式 | 群攻 2 | 1 段 95% |
| 凡 | 抽鞭诀 | 单体 | 1 段 145% |
| 良 | 九节鞭法 | 连击 | 3 段 85% |
| 良 | 灵蛇出洞 | 单体(远) | 1 段 165% |
| 良 | 缠丝鞭 | 控制 | 1 段 115% · 减速 25% 5s |
| 精 | 长鞭扫堂changbiansaotang | 群攻 3 | 1 段 100% · 减速 25% 5s |
| 精 | 如影随形鞭 | 连击 | 4 段 70% · 吸血 8% |
| 精 | 锁魂鞭 | 控制 | 1 段 180% · 眩晕 1.5s |
| 宝 | 缚龙索 | 控制 | 群攻 3 · 1 段 120% · 定身 2s |
| 宝 | 万蛇噬心鞭 | 群攻全体 | 1 段 115% · 中毒持续伤害 6s |
| 传 | 天罗地网tianluodiwang | 控制 | 群攻全体 · 1 段 90% · 眩晕 2s |
钩叟 hookmaster · 钩 · gou · 控制
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 擒拿钩qinnagou | 单体 | 1 段 115% |
| 凡 | 挑钩式 | 单体 | 1 段 140% |
| 凡 | 挂钩诀 | 控制 | 1 段 100% · 减速 20% 4s |
| 良 | 虎头钩法 | 单体 | 1 段 165% |
| 良 | 双钩连环 | 连击 | 2 段 95% |
| 良 | 夺刃钩 | 单体 | 1 段 150% · 破防 25% |
| 精 | 锁喉suohou | 控制 | 1 段 160% · 眩晕 1.5s |
| 精 | 钩魂锁魄 | 控制 | 1 段 210% · 降攻 20% 8s |
| 精 | 破甲夺心钩 | 单体 | 1 段 190% · 破防 40% |
| 宝 | 五毒追魂钩 | 单体 | 1 段 250% · 中毒 6s |
| 宝 | 阎罗钩 | 控制 | 群攻 2 · 1 段 150% · 眩晕 2s |
| 传 | 勾魂夺魄gounhundo | 控制 | 1 段 260% · 眩晕 3s · 降攻 20% |
流星客 meteor · 流星锤 · liuxing · 控制
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 流星追月liuxingzhuiyue | 随机 2 | 1 段 105% |
| 凡 | 甩链式 | 群攻 2 | 1 段 100% |
| 凡 | 缠链诀 | 控制 | 1 段 110% · 减速 20% 4s |
| 良 | 双流星赶月 | 随机 3 | 1 段 100% |
| 良 | 铁链锁喉 | 控制 | 1 段 140% · 25% 眩晕 1s |
| 良 | 回环链击 | 连击 | 3 段 80% |
| 精 | 锁链连击suolianlianji | 随机 3 | 1 段 95% · 20% 眩晕 1s |
| 精 | 飞星问路 | 单体(远) | 1 段 220% |
| 精 | 链锁八方 | 群攻 3 | 1 段 120% · 减速 20% 5s |
| 宝 | 天外飞星 | 单体(远) | 1 段 400% · 链锤脱手,直取最远者 |
| 宝 | 星陨落九天 | 群攻全体 | 3 段 55% |
| 传 | 陨星落yunxingluo | 群攻全体 | 1 段 110% · 35% 眩晕 1.5s |
弓手 archer · 弓 · gong · 远程输出
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 引弓射月yingongsheyue | 单体(远) | 1 段 145% |
| 凡 | 速射 | 连击 | 2 段 80% |
| 凡 | 蓄力箭 | 单体 | 1 段 165% · 出手慢 |
| 良 | 穿杨箭 | 单体(远) | 1 段 170% |
| 良 | 破空箭 | 单体 | 1 段 160% · 破防 20% |
| 良 | 啸天箭 | 增益 | 自身攻速 +20% 6s |
| 精 | 连珠箭lianzhujian | 连击 | 3 段 100% |
| 精 | 贯石箭 | 单体 | 1 段 240% · 破防 30% |
| 精 | 追云逐月箭 | 单体(远) | 3 段 95% |
| 宝 | 百步穿杨 | 单体(远) | 1 段 330% · 必中 |
| 宝 | 射日神弓 | 群攻全体 | 1 段 130% · 一箭洞穿一列 |
| 传 | 落日神射luorishensh | 单体 | 1 段 360% · 破防 25% 6s |
弩手 crossbow · 弩 · nu · 远程输出
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 平射pingshe | 单体 | 1 段 125% · 破防 15% |
| 凡 | 机括连发 | 连击 | 2 段 85% |
| 凡 | 定身弩 | 控制 | 1 段 110% · 减速 25% 4s |
| 良 | 三连弩 | 连击 | 3 段 90% |
| 良 | 破甲矢 | 单体 | 1 段 170% · 破防 25% |
| 良 | 毒牙弩 | 单体 | 1 段 150% · 中毒 6s |
| 精 | 连环弩lianhuannu | 群攻 3 | 1 段 85% · 破防 20% |
| 精 | 暴雨弩匣 | 随机 5 | 1 段 90% |
| 精 | 贯甲破盾弩 | 单体 | 1 段 230% · 破防 45% |
| 宝 | 千机弩 | 连击 | 5 段 75% · 破防 25% |
| 宝 | 破城重弩 | 单体 | 1 段 380% · 破防 55% |
| 传 | 穿云裂石chuanyunlieshi | 单体 | 1 段 280% · 破防 60% 8s |
镖客 darter · 暗器 · anqi · 远程输出
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 暗器手法anqi | 随机 3 | 1 段 85% |
| 凡 | 袖箭 | 单体 | 1 段 140% |
| 凡 | 飞石诀 | 控制 | 1 段 115% · 20% 眩晕 1s |
| 良 | 柳叶飞刀 | 随机 4 | 1 段 85% |
| 良 | 梅花镖 | 单体(远) | 1 段 165% |
| 良 | 甩手箭 | 连击 | 3 段 80% |
| 精 | 暴雨梨花baoyu | 随机 5 | 1 段 90% |
| 精 | 追魂夺命镖 | 单体(远) | 1 段 250% · 破防 25% |
| 精 | 漫天花雨·散 | 随机 5 | 2 段 55% |
| 宝 | 孔雀翎 | 群攻全体 | 1 段 130% · 中毒 6s |
| 宝 | 夺命十三连珠 | 连击 | 3 段 130% |
| 传 | 满天花雨mantianhuayu | 群攻全体 | 1 段 100% · 场内无一处不在射程 |
药师 herbalist · 药 · yao · 辅助
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 金针渡厄jinzhendue | 恢复 | 治疗最需者 20% |
| 凡 | 止血散 | 恢复 | 治疗单体 15% |
| 凡 | 消肿膏 | 恢复 | 治疗单体 12% · 减伤 +10% 5s |
| 良 | 银针通络 | 恢复 | 全队治疗 12% |
| 良 | 回气散 | 恢复 | 全队回内力 20% |
| 良 | 解毒丹诀 | 增益 | 全队清除减益 · 治疗 8% |
| 精 | 清心散qingxinsan | 恢复 | 全队治疗 18% · 清减益 |
| 精 | 续命八针 | 恢复 | 治疗最需者 35% |
| 精 | 百草回春 | 恢复 | 全队治疗 15% · 之后每秒回血 5s |
| 宝 | 九转还魂针 | 恢复 | 治疗最需者 50% · 3s 内免疫死亡 |
| 宝 | 药王续命经 | 增益 | 全队减伤 +35% 10s · 治疗 20% |
| 传 | 起死回生qisihuisheng | 恢复 | 全队治疗 35% · 减伤 +50% 3s |
扇士 fanmaster · 扇 · shan · 辅助
| 阶 | 名称 | 招式 | 效果要点 |
|---|---|---|---|
| 凡 | 清风徐来qingfengxulai | 增益 | 全队攻速 +15% 8s |
| 凡 | 扇骨击 | 单体 | 1 段 130% |
| 凡 | 拂穴扇 | 控制 | 1 段 100% · 20% 眩晕 1s |
| 良 | 流云扇法 | 群攻 2 | 1 段 105% |
| 良 | 旋风扇 | 群攻 3 | 1 段 95% |
| 良 | 扇舞戏花 | 增益 | 自身闪避 +25% 6s |
| 精 | 指点江山zhidianjiangshan | 增益 | 全队攻击 +20% 8s |
| 精 | 羽扇纶巾 | 增益 | 全队内力回复 ×2 10s |
| 精 | 扇定风雷 | 群攻 3 | 1 段 130% · 减速 25% 5s |
| 宝 | 天罡扇阵 | 增益 | 全队攻击 +25% · 攻速 +15% 10s |
| 宝 | 文昌拂世扇 | 增益 | 全队技能伤害 +30% 10s |
| 传 | 谈笑风生tanxiaofengsheng | 增益 | 全队攻击 +30% · 攻速 +20% 10s |
内功 · 十二册(通用)
卷册形制,任何职业都能穿。凡品三册是"内功的常识",名字要像武馆墙上就挂着的那种;越往上越是秘传。
内 功 neigong · 卷册 · 通用 · 加内力 / 属性攻防
| 阶 | 名称 | 主加 | 效果要点 |
|---|---|---|---|
| 凡 | 吐纳术 | 内力 | 最大内力 +60 · 内力回复 +1.0/s |
| 凡 | 静心诀 | 内力 | 内力回复 +1.5/s · 内力消耗 −6% |
| 凡 | 内功心法neigong | 内力 | 属性伤害 +8% · 最大内力 +30 |
| 良 | 小周天功 | 内力 | 最大内力 +120 · 内力回复 +2.0/s |
| 良 | 龟息功guixi | 循环 | 最大内力 +80 · 内力低于 30% 时回复翻倍 |
| 良 | 养气诀 | 属性攻 | 属性伤害 +12% · 内力消耗 −8% |
| 精 | 大周天功 | 内力 | 最大内力 +200 · 内力回复 +3.5/s |
| 精 | 紫府玄功 | 属性攻 | 属性伤害 +15% · 技能伤害 +12% |
| 精 | 混元一气功 | 属攻属防 | 属性伤害 +18% · 属性抗性 +10% |
| 宝 | 易筋经 | 属防内力 | 最大内力 +300 · 属性抗性 +18% · 内力回复 +4/s |
| 宝 | 太虚心法taixuxinfa | 属攻属防 | 属性伤害 +25% · 技能伤害 +18% · 内力消耗 −12% |
| 传 | 纯阳真经 | 全 | 属性伤害 +35% · 属性抗性 +25% · 最大内力 +400 · 每释一式回 3% 内力 |
外 功 waigong · 卷册 · 通用 · 加物攻 / 物防
| 阶 | 名称 | 主加 | 效果要点 |
|---|---|---|---|
| 凡 | 站桩功 | 体魄 | 最大生命 +150 · 防御 +12 |
| 凡 | 铁臂功 | 物攻 | 攻击 +18 |
| 凡 | 碎石掌 | 物攻 | 攻击 +22 · 破防 +6% |
| 良 | 铁布衫tiebushan | 物防 | 伤害减免 +8% · 最大生命 +120 |
| 良 | 开碑手 | 物攻 | 攻击 +30 · 破防 +10% |
| 良 | 铜皮铁骨 | 物防 | 防御 +30 · 最大生命 +200 |
| 精 | 金钟罩jinzhong | 物防 | 伤害减免 +12% · 防御 +35 |
| 精 | 铁砂掌 | 物攻 | 攻击 +45 · 暴击率 +5% |
| 精 | 铁头功 | 物防 | 最大生命 +380 · 伤害减免 +8% |
| 宝 | 金刚不坏jingangbuhuai | 反震 | 伤害减免 +18% · 受击反弹 25% |
| 宝 | 龙象神功 | 物攻体魄 | 攻击 +70 · 最大生命 +450 · 力量 +18 |
| 传 | 玄铁铸体经 | 全 | 攻击 +90 · 防御 +80 · 最大生命 +700 · 伤害减免 +15% · 受击回内力 +2 |
关于旧主动技的去向:现有 skills.mjs 里 neigong / guixi / huichun / taixuxinfa / tiebushan / jinzhong / jingangbuhuai 七个"内功·外功"门派技能从主动技改为被动秘籍 (它们本来就是"加属性"的语义,做成主动技得点一下才有意义,做成秘籍穿上就生效反而更顺)。 老存档 hero.skills 里的这些 id 由 SKILL_NAME_TO_ID 同一条路迁移到功法 id, 门人身上不会凭空少东西。轻功(qinggong 4 式)保留为主动技,暂不功法化 —— 它是"位移/闪避"语义,做成被动会丢味道。
六 · 图标规范
总原则:跟装备图标长在同一套语言里 —— 折纸纸感、圆角方形底、品阶决定底色。 区别只有两处:1形制不同(书 / 卷册,装备是实物)2品阶的"贵气"加在书的装帧上,而不是换个东西画。
尺寸 1024×1024 原图 → 落地 512×512 WebP(q88);显示 64px(仓库)/ 56px(角色功法位)
圆角 边长 × 18%,与装备同一套 mask 裁切(tools/promote_icons.py)
风格 折纸 / 剪纸,与装备、资源图标同源;不用水墨、不用三维渲染、不加数码光效
底色谱 与 equipDefs.QUALITIES 的纸色一一对应:米白 / 竹青 / 靛青 / 赭金 / 朱砂
命名 public/assets/arts/<artId>.webp —— 图里已经含品阶底色,不再按品阶拆文件
形制一 · 书(武器功法)
一本竖放的线装书,书脊在左、纸边在右,封面正中是本门兵器徽记,封面下方留一块空的题签。 不用写书名 —— 名字由界面用文字显示,图里写字会在 64px 下糊成一团。
凡品剑侠 · 基础剑法
良品竹青细边
精品靛青双线框
宝器金箔四角
传奇朱砂围框 + 顶饰
品阶差靠"装帧"表达,不靠换主体。同一式的凡品与传奇是同一把剑徽记, 差别全在底纸颜色、书脊色泽、边框与角饰、以及封面纸张的白度。 好处:玩家一眼看出"这是同一式的高阶版本",而不是"这俩是两样东西"。
形制二 · 卷册(内功 / 外功)
横放的卷轴:左右两根木轴,中间展开的纸面上是「气」或「劲」的符号。 内功用旋绕的气纹,外功用方正的发力印 —— 两者在 64px 下也能一眼分开。
内功 · 凡品气旋 · 米白纸
内功 · 良品竹青轴头
内功 · 精品靛青 + 内框
内功 · 宝器金箔角饰
内功 · 传奇朱砂围框
外功 · 凡品劲印 · 暖白纸
角标 · 六种招式类型
书架右下角一枚小圆牌,标出这式的形态。玩家扫一眼就知道"这本是群攻还是控制",不用读文字。 内功/外功的卷册不带角标 —— 它们不出招。
角标同样是模型生图(老大 2026-10-07 定的:图标一律走模型,不用程序画图形)。 AI 出「暖白纸底 + 一枚折纸剪纸符号」,程序只做一件事:用圆形 mask 裁成圆牌。 和装备图标"圆角由 mask 裁、内容由模型画"是同一条思路 —— 模型每次给的构图与留白都不同, 形状不统一的话一排图标摆出来就歪了。
单体一点
群攻层层荡开
连击三重递进
控制锁
增益升势
恢复十字
▲ 真实素材(模型生图 + 圆形 mask 裁形,已落在 _gen_icons/arts/badge_*.png)
下面六张 SVG 是形态规范(给生图与合成对齐用的示意图,不是最终素材): 圆牌 + 一枚朱砂色(恢复用青绿)的剪纸符号,符号占圆牌直径约 60%,四周留白均匀。
单体一点
群攻层层荡开
连击三重递进
控制锁
增益升势
恢复十字
生成方式 模型生图:AI 出「暖白纸底 + 一枚折纸剪纸符号」,程序只用圆形 mask 裁成圆牌。形状由 mask 保证统一,内容交给模型
角标位置 书的右下角,直径占画布 21.6%,压在书角上(不遮挡封面徽记)
卷册 不带角标;内功 = 旋绕气纹,外功 = 方正劲印,两者形态本身即区分
色调 五种朱砂红(恢复用青绿),不高亮、不发光 —— 免得在传奇红底上糊成一片
本次交付样张 · 真实素材(不是设计稿)
下面 8 张是已经跑出来的真实文件:模型生图 → mask 裁形 → 512 WebP, 直接落在 public/assets/arts/,前端 <img> 就能用。 看三件事:1 五档的档次差够不够 2 兵器徽记在 64px 下认不认得出 3 卷册与书是不是一眼分得开。
凡品剑侠 · 基础剑法
良品剑侠 · 游身剑
精品剑侠 · 流云剑法
宝器剑侠 · 剑心无我
传奇剑侠 · 万剑归宗
内功 · 凡品吐纳术
内功 · 传奇纯阳真经
外功 · 凡品站桩功
落地位置 public/assets/arts/<artId>.webp(512×512,WebP q88,圆角 18%)
原图 _gen_icons/arts/*.png(1024×1024,别删,重生成要花钱)
生成命令 gen_art_icons.py --sample → compose_art_icons.py --sample
全量 去掉 --sample 即跑 106 张素材 + 全量合成(约 20 分钟)
七 · 界面与交互
2026-10-07 晚的追加决定 —— 技能退役:老大原话 「人物的属性里不再有技能,而是由功法代替,技能这一块就不需要了」。于是:
- 人物面板的「技能」区删掉(连带「N 项技能」那行摘要);出战招式全来自功法位
- 仓库的「技能书」页签摘掉,挂机也不再掉技能书;老存档里剩下的书由迁移换成功法
- 战斗招式池 = 功法位上的武器功法(最多 3 式)+ 普攻;
hero.skills字段留在存档里但没人读它了
- 每个角色默认带一本武器功法:招募时自动发本命凡品并穿上(开局主角同理)
- 功法排在内功、外功之前:功法区 3 + 内 2 + 外 2;仓库列表与筛选条同序
- 点功法格 = 开仓库挑(像换武器一样):自动切到功法页签 + 按这一系过滤 + 只看这个角色能穿的
仓库 · 「功法」页签(技能书页签已下线)
仓库现在是 装备 / 功法 / 材料 三个页签。 技能书那一页已经摘掉 —— 招式不再靠"学一次",而是靠"穿一本"。
| 区域 | 规则 |
|---|---|
| 网格 | 与装备同一套:repeat(auto-fill, 64px),格间距 8px,一行 8 格 |
| 排序 | 默认 品阶降序 → 系别 → 名称;顶部筛选行:三系(全部 / 内功 / 外功 / 武器功法)+ 品阶 + 「只看本职业」 |
| 格子 | 图标铺满,右下角小圆标品阶色;已穿戴的在左上角打一枚「穿」字小印 |
| 悬浮 | 0.15s 延迟出详情卡(见下),与装备卡片同一位置、同一套边框 |
| 拖拽 | 拖到角色面板对应功法位 → 穿上;拖回仓库 → 脱下 |
| 一键 | 角色面板顶部一枚「一键最优」:按战力贡献给三系各挑最优的填满 7 格 |
角色面板 · 功法区(7 格)
门人浮窗右侧「数」栏现有:职业 / 本体属性 / 战斗属性 / 战力。功法区插在战斗属性之后、战力之前, 顺序 功法 3 → 内功 2 → 外功 2(老大:「功法要排在内功、外功的前面」):
+ 功法
+ 功法
+ 功法
武器功法 ×3
+ 内功
+ 内功
内功 ×2
+ 外功
+ 外功
外功 ×2
空格子是一个入口:显示「+ 系别名」,点它直接打开仓库的功法页签 (自动按这一系过滤、只看这个角色能穿的)。已穿的格子悬浮看详情、右上角一枚 × 可卸下。
悬浮详情卡
流云剑法 精品 已穿 · 剑侠 凌无涯
武器功法 · 剑侠 · 剑
招式 · 单体 · 1 段 310%
耗内力 30 · 冷却 9.0s
一剑流云,重创当面之敌。
属性加成
攻击 +33 | 暴击率 +4.8%
攻速 +6.4%太虚心法 宝器 仓库
内功 · 通用 · 卷册
属性加成
属性伤害 +25% | 技能伤害 +18%
内力消耗 −12%
太虚一气,十息之内血与内力同时自复 —— 耗得起,才打得久。
卡片结构与装备卡完全一致(标题行 + 归属行 + 分段线 + 属性块 + 描述),只是把「槽位」换成「系别」、把「词条」换成「招式 + 加成」。同一套 CSS 类复用,不新写样式。
挂机场景的提示
- 掉落功法时,飘字用品阶色(只改描边,不叠 7 种颜色)。
- 功法不进战斗 HUD —— 它是"养成物",挂机时满屏飘书反而乱。
- 换上功法导致战力变化时,在角色面板给一次「+N 战力」的短飘字(与换装一致)。
八 · 与现有系统的衔接
新增与改动的文件
| 文件 | 动作 | 内容 |
|---|---|---|
| server/arts.mjs | 新增 | 功法静态表:ART_DEFS(240 条)、ART_QUALITIES、ART_KINDS(neigong / waigong / weaponArt)、掉落权重、rollArt() |
| server/artsStore.mjs | 新增 | 功法仓库与穿戴:arts.json({ items:[], worn:{ heroId:{ neigong:[], waigong:[], weaponArt:[] } } }) |
| server/world.mjs | 改 | getWorld() 里 new ArtsStore(...) —— 不加全局单例(会让所有账号共享数据) |
| server/index.mjs | 改 | makeCtx() 补 arts: world.arts;新增接口 /api/arts/*(list / equip / unequip / autoEquip) |
| server/heroes.mjs | 改 | statsFor(hero, items, arts) 加第三个参数;sumEquipStats 里合入功法加成与招式 |
| server/skills.mjs | 改 | 移除 7 个"内外功主动技",其余 48 式保留;SKILL_NAME_TO_ID 增加 7 条 → 功法 id 的迁移映射 |
| src/artIcon.js | 新增 | 与 equipIcon.js 同构:artIconUrl(art) → ./assets/arts/.webp,带 onerror 兜底 |
| src/warehouse.js | 改 | 页签 books → arts;booksHTML() 换成格子网格 + artCardHTML() |
| src/hall.js | 改 | 「数」栏加功法区 7 格;换装逻辑复用现有 dropzone 那套 |
| src/idle/idleWorld.js | 改 | 招式池 = 功法位武器功法(最多 3 式)+ 普攻;战斗侧不新增框架 |
🔴 三条必守的老规矩(都踩过):
- 功法掉落只在后端 roll。前端只上报"在场景 N 击杀了 Boss"这个事实,永远不上报"我掉了什么"。
- 加成不能写回
hero.attrs。走statsFor的第 3 层,与装备同一通道。
- 数值不许写在前端常量里 —— 功法表由
/api/game/meta下发,前端只缓存。
掉落
| 来源 | 规则 |
|---|---|
| 小怪 | 每击杀 3% 掉一本凡品;其中 35% 是内 / 外功卷册(凡品),其余是武器功法凡品 |
| 精英 (普通关打满 15 只后出的本区精英) | 按 Boss 那一档 12% 结算(精品起步,可出金 / 传奇);另有一次 6% 单独掉一本(其中 55% 是白 / 绿卷册) |
| Boss / 关底头目 | 每波 12%(关底 ×2 → 24%):品阶按场景等级分档(≤35 蓝68/金28/传奇4 → ≤55 蓝50/金40/传奇10 → >55 蓝34/金48/传奇18);其中 40% 是通用卷册(内 / 外功) |
| 游历首通 | 每个节点固定 1 本,品阶按节点深度定⚠️ 逻辑已写、尚未接线(当前不会掉) |
| 招募 | 新门人自带本门派 1 式凡品功法(直接穿在武器功法位) |
2026-10-10:内 / 外功掉落上调(老大:「内功和外功掉落太少了」)—— 病根不是"率调低了",是池子里根本没有卷册:小怪那一支原来只从武器功法里挑,而它占击杀量的绝对主力; 精英那 6% 的入口挂在"单波击杀 ≥ 8 只"上,可单波最多 3 只,从来没触发过。 于是内外功实际只剩 Boss 那 20%,平均每关 0.02 本。 ⇒ 新增旋钮 ART_SCROLL_RATE(server/arts.mjs):小怪 35% / 精英 55% / Boss 40%, 总掉率(ART_DROP)一点没动——只换池子构成,免得"顺手把武器功法也改多了"。 现在平均每关 0.24 本内外功(约 12 倍),验收 tools/verify_art_drop.mjs。
旧的「技能书」掉落(BOOK_DROP_RATE)由功法掉落接替;已发出的技能书按下面的迁移规则处理。
老存档迁移(一次,读档时跑)
| 老数据 | 迁移后 |
|---|---|
| 仓库里的技能书(books 数组) | 转成同品阶的功法(skillId → 对应的 artId);对不上 artId 的直接丢弃,无折算(轻功书属于此类) |
| hero.skills 里的 7 个内外功 id | 从技能位移除,改成一本对应功法放进该门人的功法位(位子空着才放) |
| hero.skills 里的其余 48 式 | 本职业武器招式迁为对应功法(迁完从技能位移除);跨职业招式与轻功保留在存档里、不再出战 |
| 传奇威能引用的 skillId | 不动。威能引用的 jianqi / liuyun / xuezhan 这些 id 在新表里仍在,引用继续有效 |
九 · 素材生产链
图标一律走模型生图(老大 2026-10-07 定)。书、卷册、封面上的兵器徽记、招式角标 —— 全部由 AI 出折纸素材,与装备图标同一套提示词与同一条落地管线。 程序只做两件事:拼装(把角标贴到书角)和 裁形(圆角方形 / 圆形,与装备共用同一套 mask)。 这样不会出现"程序画的图形混在折纸素材里"的割裂感。
1 AI 生图 · 106 张素材 → 2 拼装 + mask 裁形 → 3 缩放 → WebP → 4 public/assets/arts/
| 步 | 脚本 | 说明 |
|---|---|---|
| 1 | tools/gen_art_icons.py 已落地 | 复用 ark2.py(豆包 Seedream 5.0 Flash)。三类素材共 106 张: 书 ×90(18 般兵器 × 5 品阶,兵器徽记由模型直接画在封面上)、 卷册 ×10(内功 / 外功 × 5 品阶)、角标 ×6。 折纸风提示词沿用 gen_equip_icons.py 的 STYLE 常量。 |
| 2 | tools/compose_art_icons.py 已落地 | 1 把角标用圆形 mask 裁成圆牌(模型给的构图/留白每次不同,形状必须由 mask 保证统一), 贴到书的右下角;2 同品阶内的纸色微调(±4%,让同品阶几式不完全一样);3 输出 1024 原图。 |
| 3 | tools/promote_icons.py 已有 | 裁圆角(边长 18%,与装备同一份 mask)→ 缩放 512 → WebP q88。完全复用,不写第二份。 |
| 4 | — | 命名 .webp:武器功法 liuyun / 内功 nj_tuna / 外功 wj_zhanzhuang |
两条路线:共用底图 vs 逐式生图
106 张素材支撑 240 个功法 —— 也就是同职业、同品阶的几式共用同一张底图,靠右下角角标与纸色微调区分。 这样省 130 多次模型调用,但同一品阶内若有两式是同一种招式形态(例如剑侠凡品的「基础剑法」与「刺剑诀」都是单体),图标会明显接近。
| 路线 | 模型调用 | 效果 | 代价 |
|---|---|---|---|
| A · 共用底图 本次样张 | 106 次 | 同职业同品阶的几式底图一致,靠角标与纸色微调区分;跨品阶、跨职业差异明显 | 同形态的两式看起来接近 |
| B · 逐式生图 | 240 次 | 每一式都是独一无二的折纸书:同一职业的书用图生图保持装帧一致,封面徽记按招式变化(群攻画三道剑影、控制画锁、增益画升箭…) | 约 40–50 分钟生成时间 + 相应费用 |
建议:先按 A 上线(图标只是"认得出是哪本",具体效果在悬浮卡里看), 等功法真的打起来了、玩家开始在意"我这一式长什么样",再按 B 逐式重出。
十 · 老大拍板与落地情况
2026-10-07 晚,老大对四个待定项给了结论,已按结论实现:
| 项 | 老大决定 | 落地情况 |
|---|---|---|
| 图标路线 | B · 逐式生图 | 240 张全部逐式生图(14 分 47 秒 / 并发 3),每本功法一张独立的折纸图,没有两张一样的 |
| elemDmg / elemRes | 加 | 已进 STAT_DEFAULTS;内功主加属性伤害与内力;Boss 招式带 5 成内劲,玩家的属性抗性据它生效 |
| 轻功 4 式 | 暂时不功法化 | 保留为主动技(qingshen/yufeng/lingboweibu/taxuewuhen),未做卷册 |
| 功法掉落率 | 按方案先做 | 小怪每只 3% 凡品 / 精英 6% 良品 / Boss 12%(品阶按场景等级分档)/ 游历首通 1 本 ⚠️ 2026-10-10 调整过 —— 各支的卷册占比另见上方「掉落」表(总率未变) |
本次实现落地的文件
| 文件 | 动作 | 内容 |
|---|---|---|
| server/arts.mjs | 新增 | 240 条功法表 + 三系 + 五品阶 + 六角标 + 属性推导 + 掉落 roll + 模块自检 |
| server/artsStore.mjs | 新增 | 仓库与学习(7 格)+ 学习校验 + 一键最优;遣散时功法随人销毁(不回收) |
| server/skills.mjs | 改 | 技能全表合计 220 条;7 个内外功主动技移出,改被动秘籍 |
| server/heroes.mjs | 改 | statsFor(hero, items, arts) 第三参 + elemDmg/elemRes 面板项 + artsOf() |
| server/world.mjs | 改 | 装配 ArtsStore + 开局送本命功法 + 老存档迁移(7 个主动技 → 被动秘籍) |
| server/index.mjs | 改 | /api/arts 全套接口 + meta 带出功法表 + 挂机上报掉功法(与装备同一幂等键) |
| src/artIcon.js | 新增 | 图标 URL / img / 三系与品阶的中文与配色 |
| src/warehouse.js | 改 | 新增「功法」页签:格子网格 + 筛选 + 悬浮详情 + 选人穿戴 + 拖拽起点 |
| src/hall.js | 改 | 人物面板 7 格功法区 + 点击卸下 + 拖入换上;悬浮详情改走 warehouse.js 的共用浮层(挂 data-tip-art,不再自拼一份) |
| src/idle/idleBattle.js | 改 | 招式追加真气伤害(_elemBonus);怪的招式按玩家属性抗性削减 |
| src/idle/idleWorld.js | 改 | Boss 带 5 成内劲;overlayStats 放行后端新增面板项(否则新字段被静默吞掉) |
| tools/gen_art_icons.py | 新增 | 逐式生图(读 manifest.json,不手抄清单) |
| tools/compose_art_icons.py | 新增 | 贴角标(圆形 mask 裁形)+ 裁圆角 + 512 WebP |
| tools/_export_arts.mjs | 新增 | 把功法表导成 JSON 给生图脚本 —— 素材与规则同一个数据源 |
| tools/test_arts.mjs | 新增 | 后端链路 27 项验收(静态表 / 开局 / 掉落幂等 / 学习校验 / 一键最优 / 属性) |
| tools/verify_arts_ui.mjs | 新增 | 界面验收(页签 / 格子不漏图 / 悬浮详情 / 人物面板 7 格) |
验收结果(2026-10-07 晚)
后端链路 39 / 39 通过 —— node tools/test_arts.mjs (含技能退役后新增的 10 项:三系顺序 / artSkills / 招募默认功法 / 技能书停发)
界面 仓库功法页 241 格零裂图;人物面板功法区 功法3→内功2→外功2; 技能区与技能书页签已消失;点功法格 → 仓库功法页签(13 本可选)+ 自动勾「只看他能用的」
素材 240 张落地 WebP 与功法表一一对应、零缺失(512 / q88 / 圆角 18%)
老存档 门人身上的主动技与仓库里的技能书都自动换成对应功法(幂等)
排查时踩的一个坑(值得记):改完后端跑测试还是旧行为,查了半天 —— 原因是 tools/test_arts.mjs 的默认目标端口写死成了 8123 (当初为了避开别人占着的 8000 而起的临时实例)。那个临时实例一直没关, 于是脚本一直在测旧代码。教训:自测脚本的默认目标必须是正式的常驻服务, 临时端口的实例用完就关。
还没做 / 后续可以做的
- 技能书整套代码还没删干净 —— 页签与掉落下线了、老书迁移了,但
/api/skills/learn|forget
与 equips.books 的结构还在(留一个"永远为空"的数组)。等确认没人再引用,可以一并清掉。
- 功法加工/精炼没有做(装备有 +1~+10)。功法目前只靠品阶拉开差距,留作后续成长空间。
- 功法分解没有做(重复的功法只能占仓库)。要做的话与装备的「分解」同一套写法。
- 游历首通送功法已写进掉落表但还没接到游历流程里。
- 转职后功法会作废:武器功法限同职业,如果以后加"转职",身上那几格要能自动卸下。