Files
pixelheros/assets/script/game/common/config/EquipSet.ts
pan c335df9b95 refactor(card-config): 拆分装备卡配置到独立模块
1. 新建 EquipSet.ts 统一管理装备卡原始数据与工具函数
2. 从 CardSet.ts 移除重复的装备卡配置,改为导入复用
3. 迁移装备相关工具函数到 EquipSet.ts,CardSet 保留兼容导出
4. 自动批量注册装备卡到卡牌池,减少手动维护成本
2026-07-22 11:08:08 +08:00

124 lines
7.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file EquipSet.ts
* @description 装备卡池独立配置
*
* 职责:
* 1. 定义所有装备卡的原始数据EquipCardData
* 2. 提供 isEquipmentCard / getEquipmentFieldCount 工具函数。
*
* 设计说明:
* - 装备卡在运行时仍以 CardConfig 形式注册到 CardPoolList由 CardSet.ts 统一映射),
* 保证 SkillBoxComp.init() 和 EquipListComp.applyCardData() 能通过 CardPoolList 查询配置。
* - 装备卡统一 trigger_type = Fieldkeep_waves = -1持续到战斗结束
* - wave 档位区分强度wave 1 (×1) / wave 5 (×2) / wave 8 (×3)
* field uuid 分别对应 FieldSkillSet 的 70xx / 72xx / 74xx 段。
*
* 依赖:
* - GameSet.SKILL_CARD_WAVES —— wave 档位定义
*/
import { SKILL_CARD_WAVES } from "./GameSet";
/**
* 装备卡原始数据(不含 CardType/CKind 等框架字段,由 CardSet.ts 统一映射为 CardConfig
* trigger_type 固定为 Fieldkeep_waves 固定为 -1。
*/
export interface EquipCardRaw {
/** 装备唯一标识 */
uuid: number;
/** 所属波次档位 */
wave: number;
/** 装备名称 */
name: string;
/** 装备描述 */
info: string;
/** 属性词条数组(指向 FieldSkillSet uuid支持单卡多词条 */
field: number[];
/** 购买费用(默认 0 */
cost?: number;
}
// ==================== 装备卡数据 ====================
export const EquipCardData: EquipCardRaw[] = [
// ==================== wave 1 档(基础强度) ====================
{ uuid: 8701, wave: SKILL_CARD_WAVES[0], name: "战后恢复", info: "战斗结束生命回复量+10%", field: [7001] },
{ uuid: 8702, wave: SKILL_CARD_WAVES[0], name: "攻击加成", info: "英雄攻击力+10%", field: [7002] },
{ uuid: 8703, wave: SKILL_CARD_WAVES[0], name: "击晕加成", info: "英雄击晕概率+10%", field: [7003] },
{ uuid: 8704, wave: SKILL_CARD_WAVES[0], name: "暴击加成", info: "英雄暴击率+10%", field: [7004] },
{ uuid: 8705, wave: SKILL_CARD_WAVES[0], name: "暴伤加成", info: "英雄暴击伤害+20%", field: [7005] },
{ uuid: 8706, wave: SKILL_CARD_WAVES[0], name: "攻速加成", info: "英雄攻击速度+10%", field: [7006] },
{ uuid: 8707, wave: SKILL_CARD_WAVES[0], name: "生命加成", info: "英雄最大生命+10%", field: [7007] },
{ uuid: 8708, wave: SKILL_CARD_WAVES[0], name: "风怒加成", info: "英雄风怒概率+10%", field: [7008] },
{ uuid: 8709, wave: SKILL_CARD_WAVES[0], name: "穿刺加成", info: "英雄穿刺概率+10%", field: [7009] },
{ uuid: 8710, wave: SKILL_CARD_WAVES[0], name: "金币收益", info: "每回合金币收益+1", field: [7010] },
{ uuid: 8711, wave: SKILL_CARD_WAVES[0], name: "出售强化", info: "卖出英雄金币+1", field: [7011] },
// --- 多词条装备 ---
{ uuid: 8720, wave: SKILL_CARD_WAVES[0], name: "勇者护符", info: "英雄攻击力+10%, 暴击率+10%, 暴击伤害+20%", field: [7002, 7004, 7005] },
// ==================== wave 5 档(强度 ×2field uuid 72xx 段) ====================
{ uuid: 8751, wave: SKILL_CARD_WAVES[1], name: "战后恢复+", info: "战斗结束生命回复量+20%", field: [7201] },
{ uuid: 8752, wave: SKILL_CARD_WAVES[1], name: "攻击加成+", info: "英雄攻击力+20%", field: [7202] },
{ uuid: 8753, wave: SKILL_CARD_WAVES[1], name: "击晕加成+", info: "英雄击晕概率+20%", field: [7203] },
{ uuid: 8754, wave: SKILL_CARD_WAVES[1], name: "暴击加成+", info: "英雄暴击率+20%", field: [7204] },
{ uuid: 8755, wave: SKILL_CARD_WAVES[1], name: "暴伤加成+", info: "英雄暴击伤害+40%", field: [7205] },
{ uuid: 8756, wave: SKILL_CARD_WAVES[1], name: "攻速加成+", info: "英雄攻击速度+20%", field: [7206] },
{ uuid: 8757, wave: SKILL_CARD_WAVES[1], name: "生命加成+", info: "英雄最大生命+20%", field: [7207] },
{ uuid: 8758, wave: SKILL_CARD_WAVES[1], name: "风怒加成+", info: "英雄风怒概率+20%", field: [7208] },
{ uuid: 8759, wave: SKILL_CARD_WAVES[1], name: "穿刺加成+", info: "英雄穿刺概率+20%", field: [7209] },
{ uuid: 8760, wave: SKILL_CARD_WAVES[1], name: "金币收益+", info: "每回合金币收益+2", field: [7210] },
{ uuid: 8761, wave: SKILL_CARD_WAVES[1], name: "购买优惠+", info: "购买卡牌费用-2金币", field: [7212] },
{ uuid: 8762, wave: SKILL_CARD_WAVES[1], name: "刷新优惠", info: "刷新卡牌费用-1金币", field: [7213] },
// --- 多词条装备 ---
{ uuid: 8770, wave: SKILL_CARD_WAVES[1], name: "守卫护甲", info: "英雄最大生命+20%, 战后生命回复+20%, 攻速+20%", field: [7207, 7201, 7206] },
// ==================== wave 8 档(强度 ×3field uuid 74xx 段) ====================
{ uuid: 8801, wave: SKILL_CARD_WAVES[2], name: "战后恢复++", info: "战斗结束生命回复量+30%", field: [7401] },
{ uuid: 8802, wave: SKILL_CARD_WAVES[2], name: "攻击加成++", info: "英雄攻击力+30%", field: [7402] },
{ uuid: 8803, wave: SKILL_CARD_WAVES[2], name: "击晕加成++", info: "英雄击晕概率+30%", field: [7403] },
{ uuid: 8804, wave: SKILL_CARD_WAVES[2], name: "暴击加成++", info: "英雄暴击率+30%", field: [7404] },
{ uuid: 8805, wave: SKILL_CARD_WAVES[2], name: "暴伤加成++", info: "英雄暴击伤害+60%", field: [7405] },
{ uuid: 8806, wave: SKILL_CARD_WAVES[2], name: "攻速加成++", info: "英雄攻击速度+30%", field: [7406] },
{ uuid: 8807, wave: SKILL_CARD_WAVES[2], name: "生命加成++", info: "英雄最大生命+30%", field: [7407] },
{ uuid: 8808, wave: SKILL_CARD_WAVES[2], name: "风怒加成++", info: "英雄风怒概率+30%", field: [7408] },
{ uuid: 8809, wave: SKILL_CARD_WAVES[2], name: "穿刺加成++", info: "英雄穿刺概率+30%", field: [7409] },
{ uuid: 8810, wave: SKILL_CARD_WAVES[2], name: "金币收益++", info: "每回合金币收益+3", field: [7410] },
{ uuid: 8811, wave: SKILL_CARD_WAVES[2], name: "召唤强化++", info: "召唤触发技能次数+1", field: [7014] },
{ uuid: 8812, wave: SKILL_CARD_WAVES[2], name: "死亡强化++", info: "死亡触发技能次数+1", field: [7015] },
{ uuid: 8813, wave: SKILL_CARD_WAVES[2], name: "开场强化++", info: "战斗开始触发技能次数+1", field: [7016] },
{ uuid: 8814, wave: SKILL_CARD_WAVES[2], name: "结束强化++", info: "战斗结束触发技能次数+1", field: [7017] },
{ uuid: 8815, wave: SKILL_CARD_WAVES[2], name: "攻击强化++", info: "攻击触发技能次数+1", field: [7018] },
{ uuid: 8816, wave: SKILL_CARD_WAVES[2], name: "受击强化++", info: "被攻击触发技能次数+1", field: [7019] },
// --- 多词条装备 ---
{ uuid: 8820, wave: SKILL_CARD_WAVES[2], name: "神圣之刃", info: "英雄攻击力+30%, 暴击率+30%, 暴击伤害+60%, 攻速+30%", field: [7402, 7404, 7405, 7406] },
];
// ==================== 工具函数 ====================
/**
* 判断卡牌是否为「装备」(光环类技能卡)。
* 判定条件trigger_type 为 Field3且 field 数组非空。
*
* 使用数字字面量 3 避免对 CardSet.CardTriggerType 的运行时依赖,
* 由 CardSet.ts 注册时统一填充 trigger_type = CardTriggerType.Field。
*/
export const isEquipmentCard = (card: { trigger_type?: number; field?: number[] }): boolean => {
return card.trigger_type === 3
&& !!card.field
&& card.field.length > 0;
}
/**
* 获取装备卡的属性词条数量。
* 非装备卡返回 0装备卡返回 field 数组长度。
*/
export const getEquipmentFieldCount = (card: { trigger_type?: number; field?: number[] }): number => {
return isEquipmentCard(card) ? (card.field?.length ?? 0) : 0;
}