1. 新建 EquipSet.ts 统一管理装备卡原始数据与工具函数 2. 从 CardSet.ts 移除重复的装备卡配置,改为导入复用 3. 迁移装备相关工具函数到 EquipSet.ts,CardSet 保留兼容导出 4. 自动批量注册装备卡到卡牌池,减少手动维护成本
124 lines
7.7 KiB
TypeScript
124 lines
7.7 KiB
TypeScript
/**
|
||
* @file EquipSet.ts
|
||
* @description 装备卡池独立配置
|
||
*
|
||
* 职责:
|
||
* 1. 定义所有装备卡的原始数据(EquipCardData)。
|
||
* 2. 提供 isEquipmentCard / getEquipmentFieldCount 工具函数。
|
||
*
|
||
* 设计说明:
|
||
* - 装备卡在运行时仍以 CardConfig 形式注册到 CardPoolList(由 CardSet.ts 统一映射),
|
||
* 保证 SkillBoxComp.init() 和 EquipListComp.applyCardData() 能通过 CardPoolList 查询配置。
|
||
* - 装备卡统一 trigger_type = Field,keep_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 固定为 Field,keep_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 档(强度 ×2,field 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 档(强度 ×3,field 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 为 Field(3),且 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;
|
||
}
|