From 93e02fa292e2f447fbd3c7a6c8af75366e95833b Mon Sep 17 00:00:00 2001 From: panFD Date: Sat, 15 Aug 2026 20:40:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor(config):=20=E6=8C=89=E7=85=A7=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E9=85=8D=E7=BD=AE=E8=A7=84=E8=8C=83=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 移除SkillSet中硬编码的buff效果,将6104技能替换为通用6101底座 2. 所有英雄/怪物技能通过overrides注入buff和数值修改 3. 新增项目技能配置规范文档 --- .trae/rules/project_rules.md | 89 ++++++++++++++++++++ assets/script/game/common/config/SkillSet.ts | 7 +- assets/script/game/common/config/heroSet.ts | 22 ++--- 3 files changed, 101 insertions(+), 17 deletions(-) diff --git a/.trae/rules/project_rules.md b/.trae/rules/project_rules.md index 9cd21774..451247bb 100644 --- a/.trae/rules/project_rules.md +++ b/.trae/rules/project_rules.md @@ -57,3 +57,92 @@ alwaysApply: true - 代码前指明使用了 oops-framework 哪个模块 - `oops` API 调用附带简明中文注释 - 检查所有监听是否在生命周期结束时注销 + +--- + +# SkillSet / heroSet 配置规则 + +## 核心原则 + +1. **技能底座纯净化**:SkillSet 中的技能只定义基础行为(伤害、弹道、命中),**禁止**在基础配置中写死 `timed_buff_id` / `buff_type` 等效果字段 +2. **效果由引用处注入**:英雄/怪物引用技能时,通过 `HSkillInfo.overrides` 按需附加 debuff/buff,实现"同一技能、不同效果" +3. **数值覆盖优先**:`ap`(伤害百分比)、`hit_count`、`crt` 等数值差异,统一由 `overrides` 覆写,而非新建相似技能 + +## SkillSet 配置规范 + +### 技能 uuid 段位分配 + +| 段位 | 用途 | 示例 | +|------|------|------| +| 6001-6099 | 基础单体攻击(近战/远程通用底座) | 6001 飞剑、6004 攻击 | +| 6100-6199 | 中阶攻击技能(高阶特效/多命中) | 6101 火球、6102 飓风 | +| 6200-6299 | 高阶范围技能(AOE/必杀) | 6201 陨石术 | +| 6300-6399 | 辅助/治疗/护盾技能 | 6301 护盾、6302 治疗 | +| 6400-6499 | 永久属性强化(buff_type) | 6401 攻击强化 | +| 6500-6599 | 计时爆发技能(timed_buff_id) | 6501 复活 | + +### 新增技能检查清单 + +- [ ] uuid 在对应段位内,且未与现有技能冲突 +- [ ] `sp_name` / `icon` 与现有技能不重复(避免视觉混淆) +- [ ] `IType`(近战/远程/辅助)与 `RType`(弹道类型)匹配合理 +- [ ] 基础配置**不含** `timed_buff_id` / `buff_type`(效果由引用处注入) +- [ ] `info` 描述只写基础效果,不写具体 debuff(如"造成攻击力100%的伤害") + +## heroSet 配置规范 + +### 英雄 uuid 段位分配 + +| 段位 | 品质 | 说明 | +|------|------|------| +| 5001-5099 | card_lv=1 | 基础单体/默认范围 | +| 5101-5199 | card_lv=2 | 数值强化 | +| 5201-5299 | card_lv=3 | 范围扩大 | +| 5301-5399 | card_lv=4 | 数值+范围 | +| 5401-5499 | card_lv=5 | 双技能(+revive/field) | + +### 怪物 uuid 段位分配 + +| 段位 | 类型 | +|------|------| +| 6001-6099 | 基础怪物(近战/远程/特殊位) | +| 6100-6199 | Boss 怪物 | + +### 新增英雄/怪物检查清单 + +- [ ] `skills` 引用的技能 uuid 在 SkillSet 中存在 +- [ ] 技能效果通过 `overrides` 按需注入,**禁止**直接修改 SkillSet 基础配置 +- [ ] `overrides.ap` 明确写出(如 80/100/150),避免依赖基础配置的默认值 +- [ ] `timed_buff_id` 指向 BuffList 中存在的 buff 配置 +- [ ] 怪物技能引用优先使用 6001-6012 基础技能,Boss 可用 6101+ 中阶技能 + +### 触发技能配置规则 + +| 触发类型 | 字段 | 说明 | +|----------|------|------| +| 普通攻击 | `skills` | 携带技能,`overrides` 注入效果 | +| 受击触发 | `atked` | 按 s_uuid 分组,按 lv 升序 | +| 攻击后触发 | `atking` | 按 s_uuid 分组,按 lv 升序 | +| 死亡触发 | `dead` | 按 s_uuid 分组,按 lv 升序 | +| 战斗开始 | `fstart` | 按 s_uuid 分组,按 lv 升序 | +| 驻场光环 | `field` | `FieldEntry[]`,按 lv 升序 | +| 复活 | `revive` | `LvReviveEntry[]`,按 lv 升序 | + +### 示例:同一技能不同效果 + +```typescript +// SkillSet 6101 火球 — 纯伤害底座,无 debuff +6101: { + uuid: 6101, name: "火球", sp_name: "fb-1", ..., + // 禁止写 timed_buff_id / buff_type +} + +// heroSet 5004 破晓先知 — 冰冻版火球 +skills: { 6101: { uuid: 6101, overrides: { ap: 80, timed_buff_id: 7003 } } } + +// heroSet 5304 战吼术士 — 中毒版火球 +skills: { 6101: { uuid: 6101, overrides: { ap: 80, timed_buff_id: 7005 } } } + +// heroSet 6008 兽人火法 — 原版火球(ap=100,无 debuff) +skills: { 6101: { uuid: 6101 } } +``` diff --git a/assets/script/game/common/config/SkillSet.ts b/assets/script/game/common/config/SkillSet.ts index 46f3557e..168ab209 100644 --- a/assets/script/game/common/config/SkillSet.ts +++ b/assets/script/game/common/config/SkillSet.ts @@ -280,12 +280,7 @@ export const SkillSet: Record = { DTType: DTType.single, ap: 100, hit_count: 2, hitcd: 0.3, speed: 720, with: 90, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote, RType: RType.linear, EType: EType.collision, info: "造成攻击力100%的伤害, 高阶技能", }, - // DoT 技能:命中附加易伤(7002,受到伤害附加固定值,可被易伤抗性减免) - 6104: { - uuid: 6104, name: "灼热火球", sp_name: "fb-1", icon: "Stat_FireDamage", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "atk", - DTType: DTType.single, ap: 80, hit_count: 2, hitcd: 0.3, speed: 720, with: 90, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote, - RType: RType.bezier, EType: EType.collision, timed_buff_id: 7002, info: "造成攻击力80%的伤害, 命中附加易伤(5秒内受到伤害附加固定值)", - }, + // 6201 陨石术 6201: { uuid: 6201, name: "陨石术", sp_name: "fb-3", icon: "Stat_Tripleshot", TGroup: TGroup.Enemy, readyAnm: "blues", endAnm: "", act: "max", DTType: DTType.aoe_grid, stun: 0, ap: 150, hit_count: 6, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote, diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index 606ce0ad..f7ddd564 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -1,4 +1,4 @@ -import { v3 } from "cc" +import { v3 } from "cc" import { BoxSet, FacSet, FightSet } from "./GameSet" import { SkillOverrides, TGroup, SkillSet, FieldSkillSet, SkillConfig, SkillKind, FieldSkillConfig, FieldSkillType, mergeSkillParams } from "./SkillSet" import { BuffList, BuffConfig, ModOp } from "./BuffSet" @@ -424,7 +424,7 @@ export const HeroInfo: Record = { // 5004 破晓先知 — fstart 全队攻击 5004: { uuid: 5004, name: "破晓先知", path: "hm1", fac: FacSet.HERO, card_lv: 1, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: 143, ap: 32, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7003 } } }, fstart: { 6401: [ { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 3 } }, @@ -437,7 +437,7 @@ export const HeroInfo: Record = { // 5005 战歌法师 — field 攻击光环 5005: { uuid: 5005, name: "战歌法师", path: "hm2", fac: FacSet.HERO, card_lv: 1, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Support, hp: 143, ap: 32, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7006 } } }, field: [ { lv: 1, uuids: [{ uuid: 7002, value: 0.1 }] }, { lv: 3, uuids: [{ uuid: 7002, value: 0.2 }] }, @@ -490,7 +490,7 @@ export const HeroInfo: Record = { // 5104 圣光祭司 — fstart 全队护盾(更高数值) 5104: { uuid: 5104, name: "圣光祭司", path: "hm3", fac: FacSet.HERO, card_lv: 2, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: 287, ap: 64, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7003 } } }, fstart: { 6301: [ { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 3 } }, @@ -503,7 +503,7 @@ export const HeroInfo: Record = { // 5105 风怒先知 — field 攻速光环 5105: { uuid: 5105, name: "风怒先知", path: "hm1", fac: FacSet.HERO, card_lv: 2, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Support, hp: 287, ap: 64, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7006 } } }, field: [ { lv: 1, uuids: [{ uuid: 7006, value: 0.1 }] }, { lv: 3, uuids: [{ uuid: 7006, value: 0.2 }] }, @@ -569,7 +569,7 @@ export const HeroInfo: Record = { // 5204 晨光贤者 — fstart 全队暴击(范围扩大) 5204: { uuid: 5204, name: "晨光贤者", path: "hm2", fac: FacSet.HERO, card_lv: 3, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: 430, ap: 96, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7002 } } }, fstart: { 6403: [ { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, @@ -582,7 +582,7 @@ export const HeroInfo: Record = { // 5205 精准术士 — field 暴击光环(范围扩大) 5205: { uuid: 5205, name: "精准术士", path: "hm3", fac: FacSet.HERO, card_lv: 3, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Support, hp: 430, ap: 96, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7006 } } }, field: [ { lv: 1, uuids: [{ uuid: 7004, value: 0.1 }] }, { lv: 3, uuids: [{ uuid: 7004, value: 0.2 }] }, @@ -640,7 +640,7 @@ export const HeroInfo: Record = { // 5304 战吼术士 — fstart 全队攻击+生命(双效果) 5304: { uuid: 5304, name: "战吼术士", path: "hm1", fac: FacSet.HERO, card_lv: 4, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: 573, ap: 128, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7005 } } }, fstart: { 6401: [ { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, @@ -658,7 +658,7 @@ export const HeroInfo: Record = { // 5305 领域贤者 — field 暴伤+攻速光环(双效果) 5305: { uuid: 5305, name: "领域贤者", path: "hm2", fac: FacSet.HERO, card_lv: 4, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Support, hp: 573, ap: 128, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7006 } } }, field: [ { lv: 1, uuids: [{ uuid: 7005, value: 0.2 }, { uuid: 7006, value: 0.1 }] }, { lv: 3, uuids: [{ uuid: 7005, value: 0.4 }, { uuid: 7006, value: 0.2 }] }, @@ -731,7 +731,7 @@ export const HeroInfo: Record = { // 5404 涅槃贤者 — fstart 护盾+攻击 + revive(双技能) 5404: { uuid: 5404, name: "涅槃贤者", path: "hm3", fac: FacSet.HERO, card_lv: 5, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: 717, ap: 160, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7004 } } }, fstart: { 6301: [ { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, @@ -837,7 +837,7 @@ export const HeroInfo: Record = { }, 6105: { uuid: 6105, name: "亡灵首领-法师", path: "mb5", fac: FacSet.MON, lv: 6, type: HType.Long, monType: MonType.LongBoss, hp: 1000, ap: 30, speed: 110, - skills: { 6104: { uuid: 6104, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0 } }, info: "后排高AP Boss" + skills: { 6101: { uuid: 6101, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 80, timed_buff_id: 7002 } } }, info: "后排高AP Boss" }, 6106: { uuid: 6106, name: "亡灵首领-骑马战士", path: "mb6", fac: FacSet.MON, lv: 6, type: HType.Melee, monType: MonType.MeleeBoss, hp: 1800, ap: 20, speed: 130,