feat(editor): 完善技能覆写编辑器功能,优化配置体验
1. 为OverrideEditor新增baseSkillUuid参数,支持对敌技能debuff配置校验 2. 优化proc_skill和timed_buff_id的编辑体验,自动补全关联配置项 3. 更新常量注释与英雄技能配置,修正overrides字段配置 4. 新增对敌技能buff配置警示提示,引导正确配置方式
This commit is contained in:
@@ -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% 攻击伤害"
|
||||
}
|
||||
|
||||
@@ -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 会奶敌人。
|
||||
|
||||
Reference in New Issue
Block a user