/** * 天赋系统配置文件 * 支持定义英雄的特殊能力或特性 */ import { Attrs, BType } from "./HeroAttrs"; import { SkillSet } from "./SkillSet"; // ========== 枚举定义 ========== /** * 天赋类型枚举,也是触发条件 */ export enum TalType { LEVEL = 1, // 基于特定等级触发 LEVEL_UP = 2, // 基于等级升级触发 ACTION_COUNT = 3, // 基于普通攻击触发, skills[0]计数触发 SKILL_COUNT = 4, // 基于技能触发, > skills[0]计数触发 DAMAGE_COUNT = 5, // 基于受伤次数触发 INIT = 6, // 初始触发,如:多1个技能 DEAD = 7 // 基于死亡触发 } /** * 触发效果 */ export enum TalEType { ATTRS = 1, // 属性修改 SKILL = 2, // 技能触发 SKILL_MORE = 3, // 天生多1个技能 } /** * 天赋配置接口 * 定义一个完整的天赋效果 */ export interface ItalConf { uuid: number; // 天赋ID name: string; // 天赋名称 desc: string; // 天赋描述(说明触发条件和效果) type: TalType; triggerType: TalEType; // 触发效果类型 chance: number; // 触发概率,默认100,`0-100`之间的数字 t_value: number; // 触发的阈值(如5级触发一次, 5次攻击触发一次,初始触发) e_value: number; // 触发的效果值(如增加10%攻击力, 触发的技能uuid,增加1个技能uuid) e_name: number; // 触发的特殊值,如具体属性类型, 0表示没有特定值,对应Attrs枚举 e_type: BType; // 效果类型, 主要针对属性修改,是百分比还是固定值 e_scaling: number; // 效果随等级缩放系数,默认1, 0.5表示效果随等级减半 e_count: number; // 触发效果的累计次数(如触发2次技能实现召唤2个召唤物) stackable?: boolean; // 是否可堆叠效果(默认true) maxStack?: number; // 最大堆叠次数(不设置表示无限制) } // ========== 天赋配置表 ========== /** * 天赋配置表 - 2行紧凑格式 * 每个天赋配置压缩为2行:注释行 + 配置对象行 * * 格式说明: * 第1行:// 天赋名称 - 英雄专属/通用 | 触发条件 | 效果描述 * 第2行:{uuid, name, desc, type, triggerType, chance, t_value, e_value, e_name, e_type, e_scaling, e_count, stackable, maxStack} * * 使用说明: * 1. 等级类天赋:当英雄升级到指定等级时,每次都会触发效果 * 2. 行为计数类:当特定行为累计达到阈值时触发,支持是否重置计数 * 3. 受伤计数类:当受伤累计达到阈值时触发,支持是否重置计数 * 4. 技能触发类:当特定条件满足时自动触发指定技能 */ export const talConf: Record = { // ========== 等级类天赋 ========== // 剑意提升 - 刘邦专属 | 每5级 | 攻击力+10% 7001: {uuid: 7001, name: "剑意提升", desc: "每升5级,攻击力增加10%", type: TalType.LEVEL_UP, triggerType: TalEType.ATTRS, chance: 100, t_value: 5, e_value: 0.10, e_name: Attrs.AP, e_type: BType.RATIO, e_scaling: 1, e_count: 1, stackable: true, maxStack: 10}, // 胡服骑射 - 赵武灵王专属 | 每3级 | 攻击速度+5% 7002: {uuid: 7002, name: "胡服骑射", desc: "每升3级,攻击速度增加5%", type: TalType.LEVEL_UP, triggerType: TalEType.ATTRS, chance: 100, t_value: 3, e_value: 0.05, e_name: Attrs.AS, e_type: BType.RATIO, e_scaling: 1.2, e_count: 1, stackable: true, maxStack: 15}, // 运筹帷幄 - 张良专属 | 每4级 | 魔法攻击力+8% 7004: {uuid: 7004, name: "运筹帷幄", desc: "每升4级,魔法攻击力增加8%", type: TalType.LEVEL_UP, triggerType: TalEType.ATTRS, chance: 100, t_value: 4, e_value: 0.08, e_name: Attrs.MAP, e_type: BType.RATIO, e_scaling: 1.3, e_count: 1, stackable: true, maxStack: 12}, // 后勤保障 - 萧何专属 | 每6级 | 生命回复+3点 7006: {uuid: 7006, name: "后勤保障", desc: "每升6级,生命回复增加3点", type: TalType.LEVEL_UP, triggerType: TalEType.ATTRS, chance: 100, t_value: 6, e_value: 3, e_name: Attrs.HP_REGEN, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: true, maxStack: 8}, // 离骚诗韵 - 屈原专属 | 每8次攻击 | 火焰伤害+2% 7101: {uuid: 7101, name: "离骚诗韵", desc: "每攻击8次,触发火焰buff,火焰山航海加成增加2%,持续10秒", type: TalType.ACTION_COUNT, triggerType: TalEType.SKILL, chance: 100, t_value: 8, e_value: SkillSet[6005].uuid, e_name: 0, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: true, maxStack: 15}, // ========== 初始触发类天赋 ========== // 霸王之威 - 项羽专属 | 初始 | 生命值+100 7201: {uuid: 7201, name: "霸王之威", desc: "初始获得额外100点生命值", type: TalType.INIT, triggerType: TalEType.ATTRS, chance: 100, t_value: 1, e_value: 100, e_name: Attrs.HP_MAX, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: false}, // 兵圣之道 - 孙武专属 | 初始 | 额外技能 7202: {uuid: 7202, name: "兵圣之道", desc: "初始获得额外一个技能", type: TalType.INIT, triggerType: TalEType.SKILL_MORE, chance: 100, t_value: 1, e_value: SkillSet[6005].uuid, e_name: 0, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: false}, // ========== 受伤触发类天赋 ========== // 坚韧意志 - 通用 | 每3次受伤 | 防御力+2点 7301: {uuid: 7301, name: "坚韧意志", desc: "每受伤3次,50%纪律,触发[坚韧意志],防御力增加2点,持续10秒", type: TalType.DAMAGE_COUNT, triggerType: TalEType.SKILL, chance: 50, t_value: 3, e_value: SkillSet[6005].uuid, e_name: 0, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: true, maxStack: 12}, // ========== 特定等级触发类天赋 ========== // 坚韧意志 - 通用 | 每3次受伤 | 防御力+2点 7401: {uuid: 7401, name: "坚韧意志", desc: "20级是获得[坚韧意志]技能,防御力增加2点,持续10秒", type: TalType.LEVEL, triggerType: TalEType.SKILL_MORE, chance: 100, t_value: 20, e_value: SkillSet[6005].uuid, e_name: 0, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: true, maxStack: 12}, }; // ========== 工具函数 ==========