refactor(hero): 重构英雄配置和添加天赋系统,需要测试验证

refactor(heroSet): 修改英雄属性配置,调整数值和描述
refactor(TalSet): 简化天赋系统结构,移除旧文档
This commit is contained in:
2025-10-28 00:07:13 +08:00
parent b7ddbce7e7
commit 175a6e4232
7 changed files with 93 additions and 2348 deletions

View File

@@ -3,111 +3,32 @@
* 支持定义英雄的特殊能力或特性
*/
import { Attrs } from "./HeroAttrs";
// ========== 枚举定义 ==========
/**
* 天赋类型枚举
* 天赋类型枚举,也是触发条件
*/
export enum TalType {
LEVEL_ATTR = 1, // 基于等级的属性增长
ACTION_COUNT_ATTR = 2, // 基于行为计数的属性变化
DAMAGE_COUNT_ATTR = 3, // 基于受伤次数的属性提升
ACTION_TRIGGER_SKILL = 4, // 基于行为触发的技能释放
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 TalAttrType {
HP = "hp", // 最大生命值
MP = "mp", // 最大魔力值
AP = "ap", // 攻击力
MAP = "map", // 魔法攻击力
DEF = "def", // 防御力
MDEF = "mdef", // 魔法防御力
SPEED = "speed", // 移动速度
DODGE = "dodge", // 闪避率
CRIT = "crit", // 暴击率
export enum TalEffectType {
ATTR_MODIFY = 1, // 属性修改
SKILL_TRIGGER = 2, // 技能触发
SKILL_MORE = 3, // 天生多1个技能
}
/**
* 行为类型枚举
*/
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
}
// ========== 天赋配置接口 ==========
/**
* 天赋配置接口
@@ -117,9 +38,11 @@ export interface ItalConf {
talId: number; // 天赋ID
name: string; // 天赋名称
desc: string; // 天赋描述(说明触发条件和效果)
talType: TalType; // 天赋类型
trigger: ITriggerCondition; // 触发条件
effect: ITalEffect; // 效果
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; // 最大堆叠次数(不设置表示无限制)
}
@@ -127,8 +50,8 @@ export interface ItalConf {
// ========== 天赋配置表 ==========
/**
* 天赋配置表
* 存储所有天赋的配置信息
* 天赋配置表 - 一维数组格式
* 存储所有天赋的配置信息采用2行紧凑格式
*
* 使用说明:
* 1. 等级类天赋:当英雄升级到指定等级时,每次都会触发效果
@@ -136,274 +59,15 @@ export interface ItalConf {
* 3. 受伤计数类:当受伤累计达到阈值时触发,支持是否重置计数
* 4. 技能触发类:当特定条件满足时自动触发指定技能
*/
export const talConf: Record<number, ItalConf> = {
export const talConf: 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,
},
};
];
// ========== 工具函数 ==========
@@ -413,22 +77,14 @@ export const talConf: Record<number, ItalConf> = {
* @returns 天赋配置不存在返回undefined
*/
export const getTalConf = (talId: number): ItalConf | undefined => {
return talConf[talId];
return talConf.find(tal => tal.talId === 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);
return talConf.map(tal => tal.talId);
};