/** * 天赋系统配置文件 * 支持定义英雄的特殊能力或特性 */ // ========== 枚举定义 ========== /** * 天赋类型枚举 */ export enum TalType { LEVEL_ATTR = 1, // 基于等级的属性增长 ACTION_COUNT_ATTR = 2, // 基于行为计数的属性变化 DAMAGE_COUNT_ATTR = 3, // 基于受伤次数的属性提升 ACTION_TRIGGER_SKILL = 4, // 基于行为触发的技能释放 } /** * 属性类型枚举 */ export enum TalAttrType { HP = "hp", // 最大生命值 MP = "mp", // 最大魔力值 AP = "ap", // 攻击力 MAP = "map", // 魔法攻击力 DEF = "def", // 防御力 MDEF = "mdef", // 魔法防御力 SPEED = "speed", // 移动速度 DODGE = "dodge", // 闪避率 CRIT = "crit", // 暴击率 } /** * 行为类型枚举 */ export enum TalActionType { ATTACK = 1, // 攻击 SKILL = 2, // 使用技能 DAMAGED = 3, // 受伤 } // ========== 触发条件接口 ========== /** * 触发条件基础接口 */ export interface ITriggerCondition { type: "level" | "actionCount" | "damageCount"; } /** * 等级触发条件 * 当英雄达到指定等级时触发 */ export interface ILevelTrigger extends ITriggerCondition { type: "level"; level: number; // 触发的等级阈值(如5级触发一次) } /** * 行为计数触发条件 * 当特定行为累计达到指定次数时触发 */ export interface IActionCountTrigger extends ITriggerCondition { type: "actionCount"; actionType: TalActionType; // 要计数的行为类型 count: number; // 触发的计数阈值 resetPerLevel?: boolean; // 是否每升一级重置计数(默认false,不重置) } /** * 受伤次数触发条件 * 当英雄累计受伤达到指定次数时触发 */ export interface IDamageCountTrigger extends ITriggerCondition { type: "damageCount"; count: number; // 触发的受伤次数阈值 resetPerLevel?: boolean; // 是否每升一级重置计数(默认false,不重置) } // ========== 效果接口 ========== /** * 效果基础接口 */ export interface ITalEffect { type: "attrModify" | "skillTrigger"; } /** * 属性修改效果 * 对指定属性进行修改:增加/减少固定值或百分比 */ export interface IAttrModifyEffect extends ITalEffect { type: "attrModify"; attr: TalAttrType; // 修改的属性名 value: number; // 修改值(正数增加,负数减少) percent?: boolean; // 是否为百分比修改(默认false,为固定值) } /** * 技能触发效果 * 自动触发指定的技能 */ export interface ISkillTriggerEffect extends ITalEffect { type: "skillTrigger"; skillId: number; // 要触发的技能ID } // ========== 天赋配置接口 ========== /** * 天赋配置接口 * 定义一个完整的天赋效果 */ export interface ItalConf { talId: number; // 天赋ID name: string; // 天赋名称 desc: string; // 天赋描述(说明触发条件和效果) talType: TalType; // 天赋类型 trigger: ITriggerCondition; // 触发条件 effect: ITalEffect; // 效果 stackable?: boolean; // 是否可堆叠效果(默认true) maxStack?: number; // 最大堆叠次数(不设置表示无限制) } // ========== 天赋配置表 ========== /** * 天赋配置表 * 存储所有天赋的配置信息 * * 使用说明: * 1. 等级类天赋:当英雄升级到指定等级时,每次都会触发效果 * 2. 行为计数类:当特定行为累计达到阈值时触发,支持是否重置计数 * 3. 受伤计数类:当受伤累计达到阈值时触发,支持是否重置计数 * 4. 技能触发类:当特定条件满足时自动触发指定技能 */ export const talConf: Record = { // ========== 等级类天赋 ========== /** * 剑意提升 - 刘邦专属 * 每升5级,攻击力增加10% */ 7001: { talId: 7001, name: "剑意提升", desc: "每升5级,攻击力增加10%", talType: TalType.LEVEL_ATTR, trigger: { type: "level", level: 5, } as ILevelTrigger, effect: { type: "attrModify", attr: TalAttrType.AP, value: 10, percent: true, } as IAttrModifyEffect, stackable: true, maxStack: 20, // 最多堆叠到100级 }, /** * 法力修炼 - 通用 * 每升3级,最大魔力值增加15点 */ 7002: { talId: 7002, name: "法力修炼", desc: "每升3级,最大魔力值增加15点", talType: TalType.LEVEL_ATTR, trigger: { type: "level", level: 3, } as ILevelTrigger, effect: { type: "attrModify", attr: TalAttrType.MP, value: 15, percent: false, } as IAttrModifyEffect, stackable: true, maxStack: 33, }, // ========== 行为计数类天赋 ========== /** * 强化闪避 - 敏捷英雄 * 每攻击10次,闪避率增加1% * 不按等级重置,持续累积 */ 7101: { talId: 7101, name: "强化闪避", desc: "每攻击10次,闪避率增加1%", talType: TalType.ACTION_COUNT_ATTR, trigger: { type: "actionCount", actionType: TalActionType.ATTACK, count: 10, resetPerLevel: false, } as IActionCountTrigger, effect: { type: "attrModify", attr: TalAttrType.DODGE, value: 1, percent: true, } as IAttrModifyEffect, stackable: true, maxStack: 20, }, /** * 暴击强化 - 刺客 * 每攻击15次,暴击率增加2% */ 7102: { talId: 7102, name: "暴击强化", desc: "每攻击15次,暴击率增加2%", talType: TalType.ACTION_COUNT_ATTR, trigger: { type: "actionCount", actionType: TalActionType.ATTACK, count: 15, resetPerLevel: false, } as IActionCountTrigger, effect: { type: "attrModify", attr: TalAttrType.CRIT, value: 2, percent: true, } as IAttrModifyEffect, stackable: true, maxStack: 15, }, /** * 连击精通 - 战士 * 每使用技能8次,攻击力增加5% */ 7103: { talId: 7103, name: "连击精通", desc: "每使用技能8次,攻击力增加5%", talType: TalType.ACTION_COUNT_ATTR, trigger: { type: "actionCount", actionType: TalActionType.SKILL, count: 8, resetPerLevel: false, } as IActionCountTrigger, effect: { type: "attrModify", attr: TalAttrType.AP, value: 5, percent: true, } as IAttrModifyEffect, stackable: true, maxStack: 18, }, // ========== 受伤计数类天赋 ========== /** * 坚甲护体 - 重装战士 * 每受伤10次,最大生命值增加100点 */ 7201: { talId: 7201, name: "坚甲护体", desc: "每受伤10次,最大生命值增加100点", talType: TalType.DAMAGE_COUNT_ATTR, trigger: { type: "damageCount", count: 10, resetPerLevel: false, } as IDamageCountTrigger, effect: { type: "attrModify", attr: TalAttrType.HP, value: 100, percent: false, } as IAttrModifyEffect, stackable: true, maxStack: 15, }, /** * 防御强化 - 防守型 * 每受伤12次,防御力增加3% */ 7202: { talId: 7202, name: "防御强化", desc: "每受伤12次,防御力增加3%", talType: TalType.DAMAGE_COUNT_ATTR, trigger: { type: "damageCount", count: 12, resetPerLevel: false, } as IDamageCountTrigger, effect: { type: "attrModify", attr: TalAttrType.DEF, value: 3, percent: true, } as IAttrModifyEffect, stackable: true, maxStack: 20, }, /** * 魔抗修炼 - 法系英雄 * 每受伤15次,魔法防御增加5点 */ 7203: { talId: 7203, name: "魔抗修炼", desc: "每受伤15次,魔法防御增加5点", talType: TalType.DAMAGE_COUNT_ATTR, trigger: { type: "damageCount", count: 15, resetPerLevel: false, } as IDamageCountTrigger, effect: { type: "attrModify", attr: TalAttrType.MDEF, value: 5, percent: false, } as IAttrModifyEffect, stackable: true, maxStack: 12, }, // ========== 技能触发类天赋 ========== /** * 连击反击 - 刺客 * 每攻击15次,自动触发反击技能(假设技能ID为6010) */ 7301: { talId: 7301, name: "连击反击", desc: "每攻击15次,自动触发反击技能", talType: TalType.ACTION_TRIGGER_SKILL, trigger: { type: "actionCount", actionType: TalActionType.ATTACK, count: 15, resetPerLevel: true, // 每升级重置计数 } as IActionCountTrigger, effect: { type: "skillTrigger", skillId: 6010, } as ISkillTriggerEffect, stackable: false, // 技能触发类天赋不堆叠 }, /** * 受伤反制 - 防守型 * 每受伤8次,自动触发反制护盾技能(假设技能ID为6011) */ 7302: { talId: 7302, name: "受伤反制", desc: "每受伤8次,自动触发反制护盾技能", talType: TalType.ACTION_TRIGGER_SKILL, trigger: { type: "damageCount", count: 8, resetPerLevel: true, } as IDamageCountTrigger, effect: { type: "skillTrigger", skillId: 6011, } as ISkillTriggerEffect, stackable: false, }, /** * 技能链接 - 法师 * 每使用技能5次,自动触发增强魔法技能(假设技能ID为6012) */ 7303: { talId: 7303, name: "技能链接", desc: "每使用技能5次,自动触发增强魔法技能", talType: TalType.ACTION_TRIGGER_SKILL, trigger: { type: "actionCount", actionType: TalActionType.SKILL, count: 5, resetPerLevel: true, } as IActionCountTrigger, effect: { type: "skillTrigger", skillId: 6012, } as ISkillTriggerEffect, stackable: false, }, }; // ========== 工具函数 ========== /** * 根据天赋ID获取天赋配置 * @param talId 天赋ID * @returns 天赋配置,不存在返回undefined */ export const getTalConf = (talId: number): ItalConf | undefined => { return talConf[talId]; }; /** * 获取指定类型的所有天赋 * @param talType 天赋类型 * @returns 天赋配置数组 */ export const getTalConfByType = (talType: TalType): ItalConf[] => { return Object.values(talConf).filter(tal => tal.talType === talType); }; /** * 获取所有天赋ID列表 * @returns 天赋ID数组 */ export const getAllTalIds = (): number[] => { return Object.keys(talConf).map(Number); };