From f5908a9adf6de83c9dced1d30e7d96edd4561472 Mon Sep 17 00:00:00 2001 From: pan Date: Tue, 8 Sep 2026 10:38:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor):=20=E5=AE=8C=E5=96=84=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E8=A6=86=E5=86=99=E7=BC=96=E8=BE=91=E5=99=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE=E4=BD=93?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 为OverrideEditor新增baseSkillUuid参数,支持对敌技能debuff配置校验 2. 优化proc_skill和timed_buff_id的编辑体验,自动补全关联配置项 3. 更新常量注释与英雄技能配置,修正overrides字段配置 4. 新增对敌技能buff配置警示提示,引导正确配置方式 --- assets/script/game/common/config/heroSet.ts | 4 +- put/server/data/heroes.json | 9 +-- put/server/data/heroes.json编辑指引.md | 52 ++++++++++++++++- put/web/src/components/OverrideEditor.vue | 58 ++++++++++++++++++- put/web/src/components/SkillEditor.vue | 4 +- put/web/src/components/TriggerGroupEditor.vue | 2 +- put/web/src/constants.js | 4 +- 7 files changed, 119 insertions(+), 14 deletions(-) diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index f2d53fb3..8e9583e0 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -544,9 +544,9 @@ export const HeroInfo: Record = { 5001: { uuid: 5001, name: "叠甲骑士", path: "hk1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Melee, grow_type: HGrowType.Tank, role: HRole.Tank, hp: HERO_ROLE_BASE[HRole.Tank].hp + 20, ap: HERO_ROLE_BASE[HRole.Tank].ap, def: HERO_ROLE_BASE[HRole.Tank].def + 10, skills: { - 6004: { uuid: 6004, name: "强化普攻", lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: {"ap":100,"timed_buff_id":7010,"buff_chance":50}, desc: "挥剑对{target}造成攻击力{ap}%伤害", + 6004: { uuid: 6004, name: "强化普攻", lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: {"ap":100}, desc: "挥剑对{target}造成攻击力{ap}%伤害", lv_entries: [ - { lv: 2, s_lv: SkillLv.Lv2, overrides: {"ap":120}, desc: "普通攻击造成 120% 攻击伤害" }, + { lv: 2, s_lv: SkillLv.Lv2, overrides: {"timed_buff_id":7012,"buff_value":30,"buff_chance":100,"buff_duration":5}, desc: "普通攻击造成 120% 攻击伤害" }, ], }, 6301: { uuid: 6301, name: "魔法盾", lv: 1, cd: 8, ccd: 0, overrides: {"ap":30}, desc: "{target}获得生命最大值{ap}%的护盾", diff --git a/put/server/data/heroes.json b/put/server/data/heroes.json index 7b5b0c70..fedfedd9 100644 --- a/put/server/data/heroes.json +++ b/put/server/data/heroes.json @@ -23,9 +23,7 @@ "cd": 1.2, "cdExpr": "AtkSpeedSet[AtkSpeedLv.Slow].cd", "overrides": { - "ap": 100, - "timed_buff_id": 7010, - "buff_chance": 50 + "ap": 100 }, "desc": "挥剑对{target}造成攻击力{ap}%伤害", "lv_entries": [ @@ -33,7 +31,10 @@ "lv": 2, "s_lv": 2, "overrides": { - "ap": 120 + "timed_buff_id": 7012, + "buff_value": 30, + "buff_chance": 100, + "buff_duration": 5 }, "desc": "普通攻击造成 120% 攻击伤害" } diff --git a/put/server/data/heroes.json编辑指引.md b/put/server/data/heroes.json编辑指引.md index 38e816c2..f78f38f2 100644 --- a/put/server/data/heroes.json编辑指引.md +++ b/put/server/data/heroes.json编辑指引.md @@ -98,6 +98,54 @@ 引用校验:`timed_buff_id` 必须 ∈ `BuffList`;`proc_skill.s_uuid` / 触发组 key / 召唤类引用必须 ∈ `SkillSet`。 +### 6.1 timed_buff_id(计时 buff 注入) + +**编辑器 UI**:overrides 添加 `timed_buff_id 计时buff` 行后,值栏为 BuffList 下拉(`id 名称` + 右侧 buff 效果摘要,数据来自 `/api/meta` 的 `BuffList`);meta 未加载时可手输数字 id(allow-create,保存时自动归一化为数字)。选定 buff id 后编辑器自动补齐 `buff_value` / `buff_chance` / `buff_duration` 三行(已存在不重复),数值预填 BuffList 默认值。 + +**配套键**(同一 overrides 内按需添加): + +| 键 | 说明 | 缺省 | +|---|---|---| +| `buff_value` | 覆写修饰数值(modifiers.value / tick.damage_or_heal,单位同 BuffList) | 回退 BuffList 默认 | +| `buff_duration` | 覆写持续时间(秒) | 回退 BuffList.duration | +| `buff_chance` | 触发概率 %(命中时掷骰) | 100(必触发) | +| `buff_target` | 施加目标:0 被命中者(Hit) / 1 施法者(Self) / 2 全体友方(Ally) / 3 全体敌方(Enemy) | 按主效果推导:伤害→被命中者,辅助→友方 | + +**生效路径(重要)**: +- ✅ 友方/辅助技能(TGroup 为 Self/Team/Ally,或 6300/6500 段辅助底座):走 SCastSystem merged config,overrides 注入完整生效;`buff_target: 3`(Enemy)可把 buff 分流挂到敌方网格,实现对敌 debuff; +- ✅ 对敌技能的命中附带 debuff:以 SkillSet **底座配置**为准(HeroAtkSystem 按 `SkillSet[s_uuid]` 读取 `timed_buff_id`/`buff_chance` 等),对敌 debuff 写入底座即可起效; +- 同一 overrides 不要既配 `timed_buff_id` 又依赖永久 `buff_type` 加成:timed 路径生效后永久分支被跳过。 + +**语义陷阱**:`buff_target` 缺省为被命中者——若想"攻击回血/吸血",必须显式配 `"buff_target": 1`,否则 buff 挂到被打的敌人身上(如 7010 回血会奶敌人)。 + +### 6.2 proc_skill(命中概率触发主动技能) + +**定位**:命中后概率触发一个**主动技能**(大招/触发技底座,如 6100+/6200+ 段伤害技能),以施法者身份完整释放(含伤害/弹道/特效)。它是技能触发器,不是挂 buff 的方式——debuff 注入请用 `timed_buff_id`(见 §6.1)。 + +**编辑器 UI**:overrides 添加 `proc_skill 命中概率触发主动技能` 行后展开结构化编辑: +1. `被触发技能 uuid`:下拉列出全部 SkillSet(`uuid 名称`); +2. `概率%`:0~100 数字输入,默认 100; +3. `被触发技能覆写`:内嵌 OverrideEditor(同套白名单),可递归覆写被触发技能的 `ap`/`TGroup`/`hit_count` 等。 +选中被触发技能后自动在其内嵌 overrides 补 `TGroup` 行(取底座值,已存在不覆盖),便于直改释放对象并联动对敌断链警示。 + +选中 `s_uuid` 前该行不输出(防止半成品配置导出),编辑中状态会被保留。 + +**JSON 格式**: + +```json +"proc_skill": { "s_uuid": 6201, "chance": 20, "overrides": { "ap": 150 } } +``` + +**运行时行为**: +- 触发链路:技能命中 → 掷 `chance` 骰(≥100 直接成功不掷骰;无 70% 封顶)→ 以施法者身份走 `forceCastTriggerSkill`(无视 CD、无施法前摇,触发类型记为 atking); +- `overrides` 与被触发技能自身 heroSet overrides 叠加,本次传入优先; +- DoT 伤害不触发 proc;被触发的技能不再累加普攻计数(防递归); +- 内嵌 `TGroup` 可改变被触发技能的释放对象(如触发一个友方增益)。 + +**选型指引**(对敌附带效果): +- 挂 debuff(冰冻/中毒/易伤等)→ `timed_buff_id`:写入 SkillSet 底座,或用友方技能 + `buff_target: 3` 分流挂敌; +- 命中后追发一个主动技能(陨石/火球等完整释放)→ `proc_skill`。 + ## 7. 新增英雄操作清单 1. 读 §0 数据源:选定技能/光环/buff 底座,确认 `HERO_ROLE_BASE` 模板值与攻速档位; @@ -117,4 +165,6 @@ - 触发技/光环解锁写 lv6、大招档位写 lv9 → 现行惯例 lv4 / lv8+lv16; - 普攻用数值 cd 而不给 `cdExpr` → 丢失攻速档位语义(编辑器攻速下拉失效); - 档位 overrides 全量复制基础档 → 浅合并下冗余且后续改基础值不生效; -- desc 与 overrides 数值脱节 → desc 模板只写 `{ap}` 等占位符,不要硬编码数字。 +- desc 与 overrides 数值脱节 → desc 模板只写 `{ap}` 等占位符,不要硬编码数字; +- 对敌技能 debuff 写在 overrides → 命中附带判定按 SkillSet 底座读取,应写入底座配置(详见 §6.1); +- 想做吸血但漏配 `buff_target:1` → 缺省挂被命中者,回血 buff 会奶敌人。 diff --git a/put/web/src/components/OverrideEditor.vue b/put/web/src/components/OverrideEditor.vue index b61c4c79..2be30617 100644 --- a/put/web/src/components/OverrideEditor.vue +++ b/put/web/src/components/OverrideEditor.vue @@ -36,6 +36,7 @@ size="small" style="width: 220px" filterable + @change="onProcSkillChange(item)" > @@ -50,7 +51,7 @@ />
被触发技能覆写: - +
@@ -74,12 +75,21 @@ 删除 + + 添加覆盖