添加 天赋设置

This commit is contained in:
2025-10-27 11:17:15 +08:00
parent c05e26b101
commit 16fcaeb3f3
4 changed files with 1815 additions and 0 deletions

View File

@@ -0,0 +1,434 @@
/**
* 天赋系统配置文件
* 支持定义英雄的特殊能力或特性
*/
// ========== 枚举定义 ==========
/**
* 天赋类型枚举
*/
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<number, ItalConf> = {
// ========== 等级类天赋 ==========
/**
* 剑意提升 - 刘邦专属
* 每升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);
};