refactor(hero): 重构英雄配置和添加天赋系统,需要测试验证
refactor(heroSet): 修改英雄属性配置,调整数值和描述 refactor(TalSet): 简化天赋系统结构,移除旧文档
This commit is contained in:
@@ -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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user