diff --git a/.trae/skills/HeroInfo_to_CardPoolList/SKILL.md b/.trae/skills/HeroInfo_to_CardPoolList/SKILL.md new file mode 100644 index 00000000..e9c1c120 --- /dev/null +++ b/.trae/skills/HeroInfo_to_CardPoolList/SKILL.md @@ -0,0 +1,70 @@ +--- +name: HeroInfo_to_CardPoolList +description: 将 Cocos Creator 项目中 heroSet.ts 的 HeroInfo 全量同步到 CardSet.ts 的 CardPoolList。只要用户提到“根据 HeroInfo 自动补全/同步 CardPoolList”“按 cards_lv 映射 CardPoolList.lv”“按 HeroInfo.lv 映射 hero_lv”就应立即使用本技能执行批量转换与校验。 +--- + +# HeroInfo_to_CardPoolList + +## 适用场景 + +当用户提出以下目标时使用本技能: + +- 把 `HeroInfo` 里的所有英雄补进 `CardPoolList` +- 保证卡池条目和英雄配置一一对应 +- 批量同步等级映射关系,避免手动漏配 + +## 固定输入位置 + +- 英雄源:`assets/script/game/common/config/heroSet.ts` +- 卡池目标:`assets/script/game/common/config/CardSet.ts` + +## 固定映射规则 + +- 仅处理英雄条目(`CardType.Hero`) +- `CardPoolList.uuid = HeroInfo.uuid` +- `CardPoolList.lv = HeroInfo.cards_lv` +- `CardPoolList.hero_lv = HeroInfo.lv` +- 英雄条目按 `CardPoolList.lv` 升序排序(同级按 `uuid` 升序) +- 未指定时,英雄卡默认使用: + - `type: CardType.Hero` + - `cost: 3` + - `weight: 25` + +## 执行流程 + +1. 读取 `heroSet.ts`,定位 `export const HeroInfo` 对象。 +2. 解析所有英雄项(按实际对象内容为准,不依赖号段硬编码)。 +3. 提取每个英雄的 `uuid`、`cards_lv`、`lv`。 +4. 读取 `CardSet.ts` 中 `CardPoolList`。 +5. 仅对 `type: CardType.Hero` 条目做“新增或更新”: + - 已存在同 `uuid`:更新 `lv` 与 `hero_lv` + - 不存在同 `uuid`:按默认字段新增 +6. 对全部英雄卡条目按 `lv` 升序重排(同级按 `uuid` 升序)。 +7. 非英雄卡(如 `Special/Skill/Buff/Debuff`)保持原样和原顺序。 +8. 输出结果后做一致性校验: + - `HeroInfo` 英雄数量 == `CardPoolList` 英雄数量 + - 每个英雄 `uuid` 都能在 `CardPoolList` 找到 + - 每个条目都满足 `lv=cards_lv` 且 `hero_lv=HeroInfo.lv` + - 英雄条目顺序满足 `lv` 升序 + +## 输出要求 + +- 优先直接修改 `CardSet.ts`,不新建额外文档文件。 +- 最终反馈必须包含: + - 新增了多少英雄条目 + - 更新了多少已有英雄条目 + - 是否存在无法映射的异常条目 + +## 失败处理 + +出现以下情况必须停止并明确报错: + +- `HeroInfo` 结构不存在或语法异常 +- 英雄缺失 `uuid/cards_lv/lv` 任一关键字段 +- `CardPoolList` 结构不存在 + +## 质量门槛 + +- 不改动与本任务无关的字段 +- 不改变非英雄卡逻辑 +- 修改后需确认 TypeScript 诊断无新增错误 diff --git a/assets/script/game/common/config/CardSet.ts b/assets/script/game/common/config/CardSet.ts index 01a68020..a1eaa928 100644 --- a/assets/script/game/common/config/CardSet.ts +++ b/assets/script/game/common/config/CardSet.ts @@ -32,24 +32,25 @@ export interface CardConfig { export const CARD_POOL_INIT_LEVEL = CardKind.LV1 /** 卡池等级上限 */ export const CARD_POOL_MAX_LEVEL = CardKind.LV6 - +/** 英雄最高等级限制 */ +export const CARD_HERO_MAX_LEVEL = 3 /** 基础卡池(英雄、技能、Buff、Debuff) */ export const CardPoolList: CardConfig[] = [ - { uuid: 5001, type: CardType.Hero, cost: 3, weight: 25, lv: 1 ,hero_lv:1,}, - { uuid: 5002, type: CardType.Hero, cost: 3, weight: 25, lv: 3 ,hero_lv:1,}, - { uuid: 5003, type: CardType.Hero, cost: 3, weight: 25, lv: 2 ,hero_lv:1,}, - { uuid: 5004, type: CardType.Hero, cost: 3, weight: 25, lv: 4 ,hero_lv:1,}, - { uuid: 5101, type: CardType.Hero, cost: 3, weight: 25, lv: 1 ,hero_lv:1,}, - { uuid: 5102, type: CardType.Hero, cost: 3, weight: 25, lv: 2 ,hero_lv:1,}, - { uuid: 5103, type: CardType.Hero, cost: 3, weight: 25, lv: 3 ,hero_lv:1,}, - { uuid: 5104, type: CardType.Hero, cost: 3, weight: 25, lv: 4 ,hero_lv:1,}, - { uuid: 5105, type: CardType.Hero, cost: 3, weight: 25, lv: 5 ,hero_lv:1,}, - { uuid: 5201, type: CardType.Hero, cost: 3, weight: 25, lv: 1 ,hero_lv:1,}, - { uuid: 5202, type: CardType.Hero, cost: 3, weight: 25, lv: 3 ,hero_lv:1,}, - { uuid: 5301, type: CardType.Hero, cost: 3, weight: 25, lv: 1 ,hero_lv:1,}, - { uuid: 5302, type: CardType.Hero, cost: 3, weight: 25, lv: 2 ,hero_lv:1,}, - { uuid: 5303, type: CardType.Hero, cost: 3, weight: 25, lv: 4 ,hero_lv:1,}, - { uuid: 5304, type: CardType.Hero, cost: 3, weight: 25, lv: 6 ,hero_lv:1,}, + { uuid: 5001, type: CardType.Hero, cost: 3, weight: 25, lv: 1, hero_lv: 1 }, + { uuid: 5101, type: CardType.Hero, cost: 3, weight: 25, lv: 1, hero_lv: 1 }, + { uuid: 5201, type: CardType.Hero, cost: 3, weight: 25, lv: 1, hero_lv: 1 }, + { uuid: 5301, type: CardType.Hero, cost: 3, weight: 25, lv: 1, hero_lv: 1 }, + { uuid: 5003, type: CardType.Hero, cost: 3, weight: 25, lv: 2, hero_lv: 1 }, + { uuid: 5012, type: CardType.Hero, cost: 3, weight: 25, lv: 2, hero_lv: 1 }, + { uuid: 5302, type: CardType.Hero, cost: 3, weight: 25, lv: 2, hero_lv: 1 }, + { uuid: 5002, type: CardType.Hero, cost: 3, weight: 25, lv: 3, hero_lv: 1 }, + { uuid: 5013, type: CardType.Hero, cost: 3, weight: 25, lv: 3, hero_lv: 1 }, + { uuid: 5202, type: CardType.Hero, cost: 3, weight: 25, lv: 3, hero_lv: 1 }, + { uuid: 5004, type: CardType.Hero, cost: 3, weight: 25, lv: 4, hero_lv: 1 }, + { uuid: 5104, type: CardType.Hero, cost: 3, weight: 25, lv: 4, hero_lv: 1 }, + { uuid: 5303, type: CardType.Hero, cost: 3, weight: 25, lv: 4, hero_lv: 1 }, + { uuid: 5105, type: CardType.Hero, cost: 3, weight: 25, lv: 5, hero_lv: 1 }, + { uuid: 5304, type: CardType.Hero, cost: 3, weight: 25, lv: 6, hero_lv: 1 }, { uuid: 7001, type: CardType.Special, cost: 1, weight: 20, lv: 1 }, ]