- 移除升级触发类型(TriType.LUP)及相关逻辑,改为通过英雄配置定义天赋点数获取规则 - 新增天赋点数接口(ITalPts)和配置字段,支持攻击、受击等不同触发条件 - 在天赋配置中添加点数获取(Pts)和消耗(CPts)字段 - 移除必杀技触发类型(TriType.MAX)的处理逻辑 - 优化TalComp组件结构,移除不必要的heroView引用 - 添加天赋系统设计文档(taldev.md)
154 lines
8.3 KiB
TypeScript
154 lines
8.3 KiB
TypeScript
import { count } from "console";
|
||
import { Attrs, BType } from "./HeroAttrs";
|
||
import { CardKind } from "./GameSet";
|
||
|
||
/**
|
||
* 天赋类型枚举,也是触发条件
|
||
*/
|
||
export enum TriType {
|
||
ATK = 1, // 等级升触发
|
||
DMG = 2, //普通攻击触发
|
||
ATKED=3,
|
||
SKILL = 4, // 技能触发
|
||
HPL = 6, // 失去生命值触发
|
||
HPA = 7, // 获得生命值触发
|
||
INIT = 8, // 初始触发,如:多1个技能
|
||
DEAD = 9, // 基于死亡触发
|
||
}
|
||
|
||
|
||
|
||
export enum TalEffet {
|
||
ATK_DMG=1, // 伤害 次数+伤害加成,如额外5次 伤害+20%
|
||
SKILL_DMG=2, // 技能伤害 次数+伤害加成,如额外5次 伤害+20%
|
||
DEF=10, // 减伤 次数+减伤加成,如额外5次 伤害-20%
|
||
THORNS=14, //反伤 百分比 次数+反伤加成,如额外5次 反伤-20%
|
||
///////////////////////////////////////////////////////////////////////
|
||
HP=3, // 回血 百分比 直接触发,回血20%
|
||
SHIELD=9, // 护盾 直接触发,获得20%的生命值护盾
|
||
////////////////////////////////////////////////////////////////////////
|
||
BUFF = 5, // 数值叠加 触发后清零: 暴击率,闪避率等,触发后效果取消
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
ATTR=6, // 属性 永久添加
|
||
|
||
WFUNY=7, // 风怒 次数 叠加 ,如额外5次 风怒
|
||
D_SKILL=8, //两次技能 次数 叠加,如额外5次 两次技能
|
||
C_MSKILL=11, // 必杀技能必暴 次数 叠加 ,如额外5次 必杀技能必暴
|
||
C_ATK=12, // 普工必爆 次数 叠加 ,如额外5次 普工必爆
|
||
C_SKILL=13, // 一般技能必暴 次数 叠加 ,如额外5次 一般技能必暴
|
||
}
|
||
|
||
|
||
export enum TalTarget {
|
||
SELF = 1, // 自己触发
|
||
ENEMY = 2, // 敌人触发
|
||
}
|
||
|
||
export enum TalAttrs {
|
||
NON=0,
|
||
FREEZE_CHANCE=Attrs.FREEZE_CHANCE, // 冰冻概率
|
||
STUN_CHANCE=Attrs.STUN_CHANCE, // 冰冻概率
|
||
BACK_CHANCE=Attrs.BACK_CHANCE, // 击退概率
|
||
SILENCE_CHANCE=Attrs.SILENCE_CHANCE, // 沉默概率
|
||
CRITICAL=Attrs.CRITICAL, // 暴击率
|
||
AP=Attrs.AP, // 攻击力
|
||
HP_MAX=Attrs.HP_MAX, // 最大生命值
|
||
THORNS=Attrs.THORNS, //反伤 百分比
|
||
REVIVE_COUNT=Attrs.REVIVE_COUNT, // 复活次数
|
||
WFUNY=Attrs.WFUNY, // 风怒
|
||
}
|
||
|
||
/**
|
||
* 天赋配置接口
|
||
* 定义一个完整的天赋效果
|
||
*/
|
||
|
||
export interface ItalConf {
|
||
uuid: number; // 天赋ID
|
||
name: string; // 天赋名称
|
||
icon:string; // 天赋图标
|
||
kind:CardKind; // 天赋类型
|
||
triType: TriType; // 天赋触发类型
|
||
target: TalTarget; // 天赋触发目标
|
||
effet: TalEffet; // 天赋触发效果
|
||
vType:BType; //数值型还是百分比型
|
||
value: number; // 触发的效果值(如增加10%攻击力, 触发的技能uuid,增加1个技能uuid)
|
||
attrs?:TalAttrs //触发的attrs效果的对应attrs
|
||
Trigger:number //触发值
|
||
Pts:number //添加的天赋点数
|
||
CPts:number //消耗的天赋点数
|
||
desc: string; // 天赋描述(说明触发条件和效果)
|
||
count:number //执行次数,及可以触发的次数
|
||
}
|
||
|
||
// ========== 天赋配置表 ==========
|
||
|
||
/**
|
||
* 天赋配置表 - 2行紧凑格式
|
||
* 每个天赋配置压缩为2行:注释行 + 配置对象行
|
||
*
|
||
* 格式说明:
|
||
* 第1行:// 天赋名称 - 英雄专属/通用 | 触发条件 | 效果描述
|
||
* 第2行:{uuid, name, desc, type, triggerType, chance, t_value, e_value, e_name, e_type, e_scaling, e_count, stackable, maxStack}
|
||
*
|
||
* 使用说明:
|
||
* 1. 等级类天赋:当英雄升级到指定等级时,每次都会触发效果
|
||
* 2. 行为计数类:当特定行为累计达到阈值时触发,支持是否重置计数
|
||
* 3. 受伤计数类:当受伤累计达到阈值时触发,支持是否重置计数
|
||
* 4. 技能触发类:当特定条件满足时自动触发指定技能
|
||
*/
|
||
export const talConf: Record<number, ItalConf> = {
|
||
/*** 普通攻击触发 ***/
|
||
7001:{uuid:7001,name:"风怒",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.WFUNY,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
||
Pts:2,CPts:0,desc:"普通攻击3次后, 立即给与目标150%伤害的额外打击"},
|
||
7003:{uuid:7003,name:"回血",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.HP,vType:BType.RATIO, value:1,attrs:TalAttrs.NON,
|
||
Pts:2,CPts:0,desc:"普通攻击3次后, 会回复1%的生命值"},
|
||
7004:{uuid:7004,name:"回血(大)",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.HP,vType:BType.RATIO, value:2,attrs:TalAttrs.NON,
|
||
Pts:2,CPts:0,desc:"普通攻击5次后, 会回复2%的生命值"},
|
||
7005:{uuid:7005,name:"冰冻",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.FREEZE_CHANCE,
|
||
Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定冻结目标"},
|
||
7006:{uuid:7006,name:"沉默",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.SILENCE_CHANCE,
|
||
Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定沉默目标"},
|
||
7007:{uuid:7007,name:"击退",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.BACK_CHANCE,
|
||
Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定击退目标"},
|
||
7008:{uuid:7008,name:"会心",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.CRITICAL,
|
||
Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定获得100%的暴击率"},
|
||
7009:{uuid:7009,name:"眩晕",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:100,attrs:TalAttrs.STUN_CHANCE,
|
||
Pts:2,CPts:0,desc:"普通攻击3次后, 下一次攻击必定获得100%的眩晕率"},
|
||
7010:{uuid:7010,name:"熟练",icon:"7001",kind:CardKind.Atk,triType:TriType.ATK,Trigger:10,count:1,target:TalTarget.SELF,effet:TalEffet.D_SKILL,vType:BType.RATIO, value:0,attrs:TalAttrs.NON,
|
||
Pts:2,CPts:0,desc:"普通攻击10次后, 下次一般技能额外释放1次,伤害100%"},
|
||
|
||
/*** 受伤触发 ***/
|
||
7101:{uuid:7101,name:"反击",icon:"7001",kind:CardKind.Atted,triType:TriType.ATKED,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.ATK_DMG,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
||
Pts:2,CPts:0,desc:"被攻击3次后, 给于目标50%的伤害"},
|
||
7102:{uuid:7102,name:"护盾",icon:"7001",kind:CardKind.Atted,triType:TriType.ATKED,Trigger:30,count:1,target:TalTarget.SELF,effet:TalEffet.SHIELD,vType:BType.RATIO, value:20,attrs:TalAttrs.NON,
|
||
Pts:2,CPts:0,desc:"被攻击30次后, 获得20%的生命值护盾"},
|
||
7103:{uuid:7103,name:"减伤",icon:"7001",kind:CardKind.Atted,triType:TriType.ATKED,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.DEF,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
||
Pts:2,CPts:0,desc:"被攻击3次后, 下1次伤害减50%"},
|
||
7104:{uuid:7104,name:"复苏",icon:"7001",kind:CardKind.Atted,triType:TriType.ATKED,Trigger:100,count:1,target:TalTarget.SELF,effet:TalEffet.BUFF,vType:BType.VALUE, value:1,attrs:TalAttrs.REVIVE_COUNT,
|
||
Pts:2,CPts:0,desc:"被攻击100次后, 获得1次复活"},
|
||
|
||
/*** 失去血量触发 ***/
|
||
7201:{uuid:7201,name:"背水",icon:"7001",kind:CardKind.Hp,triType:TriType.HPL,Trigger:50,count:10,target:TalTarget.SELF,effet:TalEffet.C_ATK,vType:BType.VALUE, value:0,attrs:TalAttrs.NON,
|
||
Pts:2,CPts:0,desc:"每失去50%生命值,获得下10次普通攻击暴击"},
|
||
|
||
|
||
|
||
/*** 7400 回血量触发 ***/
|
||
/** 7500 一击必杀触发 */
|
||
};
|
||
export const CanSelectTalents: Record<number, number[]> = {
|
||
// 3级开放攻击类天赋
|
||
3: [7001, 7003, 7005, 7008],
|
||
// 5级必出防御类
|
||
5: [7101, 7102, 7103],
|
||
// 9级混合
|
||
9: [7001, 7003, 7005, 7008, 7101, 7102, 7103],
|
||
// 20级终极天赋
|
||
20: [7301, 7302],
|
||
// 默认全开
|
||
99: [7001, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7101, 7102, 7103, 7104, 7201, 7301, 7302]
|
||
};
|
||
|
||
// ========== 工具函数 ==========
|