Files
pixelheros/assets/script/game/common/config/TalSet.ts
walkpan 175a6e4232 refactor(hero): 重构英雄配置和添加天赋系统,需要测试验证
refactor(heroSet): 修改英雄属性配置,调整数值和描述
refactor(TalSet): 简化天赋系统结构,移除旧文档
2025-10-28 00:07:13 +08:00

91 lines
2.6 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.
/**
* 天赋系统配置文件
* 支持定义英雄的特殊能力或特性
*/
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);
};