91 lines
2.6 KiB
TypeScript
91 lines
2.6 KiB
TypeScript
/**
|
||
* 天赋系统配置文件
|
||
* 支持定义英雄的特殊能力或特性
|
||
*/
|
||
|
||
import { Attrs } from "./HeroAttrs";
|
||
|
||
// ========== 枚举定义 ==========
|
||
|
||
/**
|
||
* 天赋类型枚举,也是触发条件
|
||
*/
|
||
export enum TalType {
|
||
LEVEL_TRIGGER = 1, // 基于等级触发
|
||
ACTION_COUNT_TRIGGER = 2, // 基于普通攻击触发, skills[0]计数触发
|
||
SKILL_COUNT_TRIGGER = 3, // 基于技能触发, > skills[0]计数触发
|
||
DAMAGE_COUNT_TRIGGER = 4, // 基于受伤次数触发
|
||
INIT_TRIGGER = 5, // 初始触发,如:多1个技能
|
||
DEAD_TRIGGER = 6 // 基于死亡触发
|
||
}
|
||
|
||
/**
|
||
* 触发效果
|
||
*/
|
||
export enum TalEffectType {
|
||
ATTR_MODIFY = 1, // 属性修改
|
||
SKILL_TRIGGER = 2, // 技能触发
|
||
SKILL_MORE = 3, // 天生多1个技能
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 天赋配置接口
|
||
* 定义一个完整的天赋效果
|
||
*/
|
||
export interface ItalConf {
|
||
talId: number; // 天赋ID
|
||
name: string; // 天赋名称
|
||
desc: string; // 天赋描述(说明触发条件和效果)
|
||
type: TalType;
|
||
triggerType: TalEffectType; // 触发效果类型
|
||
t_value: number; // 触发的阈值(如5级触发一次, 5次攻击触发一次,初始触发)
|
||
e_value: number; // 触发的效果值(如增加10%攻击力, 触发的技能uuid,增加1个技能uuid)
|
||
e_count?: number; // 触发效果的累计次数(如触发2次技能实现召唤2个召唤物)
|
||
stackable?: boolean; // 是否可堆叠效果(默认true)
|
||
maxStack?: number; // 最大堆叠次数(不设置表示无限制)
|
||
}
|
||
|
||
// ========== 天赋配置表 ==========
|
||
|
||
/**
|
||
* 天赋配置表 - 一维数组格式
|
||
* 存储所有天赋的配置信息,采用2行紧凑格式
|
||
*
|
||
* 使用说明:
|
||
* 1. 等级类天赋:当英雄升级到指定等级时,每次都会触发效果
|
||
* 2. 行为计数类:当特定行为累计达到阈值时触发,支持是否重置计数
|
||
* 3. 受伤计数类:当受伤累计达到阈值时触发,支持是否重置计数
|
||
* 4. 技能触发类:当特定条件满足时自动触发指定技能
|
||
*/
|
||
export const talConf: ItalConf[] = [
|
||
// ========== 等级类天赋 ==========
|
||
|
||
/**
|
||
* 剑意提升 - 刘邦专属
|
||
* 每升5级,攻击力增加10%
|
||
*/
|
||
|
||
];
|
||
|
||
// ========== 工具函数 ==========
|
||
|
||
/**
|
||
* 根据天赋ID获取天赋配置
|
||
* @param talId 天赋ID
|
||
* @returns 天赋配置,不存在返回undefined
|
||
*/
|
||
export const getTalConf = (talId: number): ItalConf | undefined => {
|
||
return talConf.find(tal => tal.talId === talId);
|
||
};
|
||
|
||
|
||
/**
|
||
* 获取所有天赋ID列表
|
||
* @returns 天赋ID数组
|
||
*/
|
||
export const getAllTalIds = (): number[] => {
|
||
return talConf.map(tal => tal.talId);
|
||
};
|