feat(天赋系统): 重构天赋系统并添加新天赋效果

- 重构天赋类型和效果枚举,简化触发条件分类
- 添加天赋buff数组支持叠加效果计算
- 实现多种新天赋效果包括风怒、溅射、护盾等
- 修改熟练天赋触发条件从3次改为10次攻击
This commit is contained in:
2025-11-18 16:46:13 +08:00
parent ab8bb01dee
commit 7b067213c0
4 changed files with 140 additions and 50 deletions

View File

@@ -4,42 +4,32 @@ import { Attrs } from "./HeroAttrs";
/**
* 天赋类型枚举,也是触发条件
*/
export enum TalType {
LUP_1 = 1, // 等级升级1级触发
LUP_5 = 2, // 等级升级5级触发
LUP_10 = 3, // 等级升级10级触发
ATK_1 = 4, //普通攻击1次触发
ATK_3 = 5, // 普通攻击3次触发
ATK_5 = 6, // 普通攻击5次触发
DMG_1 = 7, // 受伤1次触发
DMG_3 = 8, // 受伤3次触发
DMG_5 = 9, // 受伤5次触发
SKILL_1 = 10, // 技能1次触发
SKILL_3 = 11, // 技能3次触发
SKILL_5 = 12, // 技能5次触发
LHP_50 = 13, // 失去生命值50%触发
LHP_30 = 14, // 失去生命值30%触发
AHP_100 = 15, // 获得生命值100%触发
AHP_200 = 16, // 获得生命值200%触发
INIT = 17, // 初始触发,如:多1个技能
DEAD = 18 // 基于死亡触发
export enum TriType {
LUP = 1, // 等级升触发
ATK = 2, //普通攻击触发
DMG = 3, // 受伤触发
SKILL = 4, // 技能触发
HPL = 5, // 失去生命值触发
HPA = 6, // 获得生命值触发
INIT = 7, // 初始触发,如:多1个技能
DEAD = 8 // 基于死亡触发
}
/**
* 触发效果
*/
export enum TalETag {
Wfuny = 1, // 风怒
}
export enum TalEffet {
DMG=1, // 伤害
ATTR=2, // 属性hp,mp数值持久添加
BUFF = 3, // 暴击率,闪避率等,可叠加的触发后清零
STATS=3, // 状态
N_ATK = 4, // 下n次普通攻击 需要特殊处理
N_SKILL=5, // 下n次技能攻击 需要特殊处理
HP=2, // 回血 百分比
MP=3, //回蓝 百分比
BUFF = 4, // 暴击率,闪避率等,可叠加的触发后清零
STATS=5, // 状态
N_ATK = 6, // 下n次普通攻击暴击
N_SKILL=7, // 下n次技能攻击暴击
WFUNY=8, // 风怒
SPLASH=9, // 溅射
D_SKILL=10, //两次技能
SHIELD=11, // 护盾
LDMG=12, // 减伤
}
export enum TalTarget {
@@ -48,6 +38,7 @@ export enum TalTarget {
}
export enum TalAttrs {
NON=0,
FREEZE_CHANCE=Attrs.FREEZE_CHANCE, // 冰冻概率
STUN_CHANCE=Attrs.STUN_CHANCE, // 冰冻概率
BACK_CHANCE=Attrs.BACK_CHANCE, // 击退概率
@@ -62,11 +53,11 @@ export enum TalAttrs {
export interface ItalConf {
uuid: number; // 天赋ID
name: string; // 天赋名称
type: TalType;
triType: TriType;
target: TalTarget;
effet: TalEffet;
value: number; // 触发的效果值如增加10%攻击力, 触发的技能uuid,增加1个技能uuid
attrs:TalAttrs //触发的
attrs?:TalAttrs //触发的attrs效果的对应attrs
Trigger:number //触发值
desc: string; // 天赋描述(说明触发条件和效果)
}
@@ -88,7 +79,44 @@ export interface ItalConf {
* 4. 技能触发类:当特定条件满足时自动触发指定技能
*/
export const talConf: Record<number, ItalConf> = {
7001:{uuid:7001,name:"风怒",type:TalType.ATK_3,target:TalTarget.ENEMY,effet:TalEffet.DMG,value:150,Trigger:3,desc:"普通攻击3次后, 给于目标150%的伤害"},
/*** 普通攻击触发 ***/
7001:{uuid:7001,name:"风怒",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.WFUNY,value:150,attrs:TalAttrs.NON,
desc:"普通攻击3次后, 给于目标150%的伤害"},
7002:{uuid:7002,name:"溅射",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.SPLASH,value:50,attrs:TalAttrs.NON,
desc:"普通攻击3次后, 会对目标100码内的敌人造成30%伤害"},
7003:{uuid:7003,name:"回血",triType:TriType.ATK,Trigger:3,target:TalTarget.SELF,effet:TalEffet.HP,value:1,attrs:TalAttrs.NON,
desc:"普通攻击3次后, 会回复10%的生命值"},
7004:{uuid:7004,name:"回蓝",triType:TriType.ATK,Trigger:3,target:TalTarget.SELF,effet:TalEffet.MP,value:1,attrs:TalAttrs.NON,
desc:"普通攻击3次后, 会回复10%的蓝值"},
7005:{uuid:7005,name:"冰冻",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.BUFF,value:5,attrs:TalAttrs.FREEZE_CHANCE,
desc:"普通攻击3次后, 获得5%的冻结率"},
7006:{uuid:7006,name:"沉默",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.BUFF,value:5,attrs:TalAttrs.SILENCE_CHANCE,
desc:"普通攻击3次后, 获得5%的沉默率"},
7007:{uuid:7007,name:"击退",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.BUFF,value:5,attrs:TalAttrs.BACK_CHANCE,
desc:"普通攻击3次后, 获得5%的击退率"},
7008:{uuid:7008,name:"会心",triType:TriType.ATK,Trigger:3,target:TalTarget.SELF,effet:TalEffet.BUFF,value:5,attrs:TalAttrs.CRITICAL,
desc:"普通攻击3次后, 获得5%的暴击率"},
7009:{uuid:7009,name:"眩晕",triType:TriType.ATK,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.BUFF,value:5,attrs:TalAttrs.STUN_CHANCE,
desc:"普通攻击3次后, 获得5%的眩晕率"},
7010:{uuid:7010,name:"熟练",triType:TriType.ATK,Trigger:10,target:TalTarget.SELF,effet:TalEffet.D_SKILL,value:2,attrs:TalAttrs.NON,
desc:"普通攻击10次后, 获得下2次一般技能触发2次"},
/*** 受伤触发 ***/
7101:{uuid:7101,name:"反击",triType:TriType.DMG,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.DMG,value:50,attrs:TalAttrs.NON,
desc:"被攻击3次后, 给于目标50%的伤害"},
7102:{uuid:7102,name:"护盾",triType:TriType.DMG,Trigger:3,target:TalTarget.SELF,effet:TalEffet.SHIELD,value:20,attrs:TalAttrs.NON,
desc:"被攻击3次后, 获得20%的生命值护盾"},
7103:{uuid:7103,name:"减伤",triType:TriType.DMG,Trigger:3,target:TalTarget.ENEMY,effet:TalEffet.LDMG,value:50,attrs:TalAttrs.NON,
desc:"被攻击3次后, 下1次伤害减50%"},
/*** 失去血量触发 ***/
7201:{uuid:7201,name:"背水",triType:TriType.HPL,Trigger:50,target:TalTarget.SELF,effet:TalEffet.N_ATK,value:10,attrs:TalAttrs.NON,
desc:"每失去50%生命值,获得下10次普通攻击暴击"},
/*** 升级触发 ***/
7301:{uuid:7301,name:"勤勉",triType:TriType.LUP,Trigger:1,target:TalTarget.SELF,effet:TalEffet.N_ATK,value:10,attrs:TalAttrs.NON,
desc:"每升1级,获得下5次技能暴击"},
};