Files
pixelheros/assets/script/game/common/config/SkillSet.ts
walkpan 016b501e9a refactor(game): 重构技能配置,移除目标类型枚举并重新组织技能数据
- 删除 TType 枚举及其在 SkillConfig 接口中的引用
- 重新编号并归类技能数据,新增单体、群体、辅助和怪物技能分类
- 为部分技能添加暴击、冰冻、击退等属性字段
- 更新技能描述以反映实际效果
2026-03-19 20:49:18 +08:00

312 lines
15 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ========== 从 HeroAttrs.ts 导入属性相关定义 ==========
import { Attrs } from "./HeroAttrs";
export enum HSSet {
atk = 0, // 普通攻击
skill = 1, // 一般技能
max = 2, // 必杀技
}
export enum TGroup {
Self = 0, // 自身
Ally = 1, // 所有友方,包括自己
Team = 2, // 所有友方
Enemy = 3, // 敌方单位
All = 4 // 所有单位
}
export enum DTType {
single = 0,
range = 1,
}
export enum SkillKind {
Damage = 0,
Heal = 1,
Shield = 2,
Support = 3
}
export enum BuffRunType {
Permanent = 0,
Timed = 1,
Interval = 2
}
//受伤动画名称
export enum AtkedName {
atked = "atked",
ice = "atked_ice",
fire = "atked_fire",
wind = "atked_wind",
crit = "atked_crit",
}
export enum RType {
linear = 0, //直线
bezier = 1, //贝塞尔
fixed = 2, //固定起点
fixedEnd = 3, //固定终点
}
//EType 只负责动画什么时候结束,碰撞体什么时候消失不管,但是消失前一定要关闭碰撞体
export enum EType {
animationEnd = 0, //碰撞够也不消失,动画结束才消失
timeEnd = 1, //碰撞够也不消失,时间到才消失
collision = 2, //碰撞次数够就消失
}
//debuff类型
/*
=== 技能配置系统使用说明 ===
1. 基础属性:
- uuid: 技能唯一ID
- name: 技能名称
- sp_name: 特效名称
- AtkedName: 攻击类型
- path: 图片资源路径
2. 目标和效果:
- TGroup: 目标群体 (敌方、友方等)
- SType: 技能类型 (伤害、治疗、护盾等)
3. 执行参数:
- act: 角色执行的动画
- DTType: 伤害类型 (单体、范围)
- EType: 结束条件
- fname: 特效文件名
- with: 暂时无用
4. 数值参数:
- ap: 攻击力百分比
- cd: 冷却时间
- hit_count: 可命中次数
- t_num: 目标数量
- hitcd: 持续伤害的伤害间隔
- speed: 移动速度
- cost: 消耗值
*/
export enum DType {
ATK= 0, // 物理
ICE=1, // 冰元素
FIRE=2, // 火元素
WIND=3, // 风元素
}
export const HeroSkillList = [6001,6001,6001,6001,6001,6001]
// Debuff配置接口
export interface BuffConf {
uuid:number; // Buff唯一ID
name?:string; // Buff名称
icon?:string; // Buff图标
buff:Attrs;
value:number; // 效果值
time:number; // 持续时间
chance:number; // 触发概率
info?:string; // 描述
runType?:BuffRunType;
interval?:number;
}
interface IReady {
uuid:number,
loop: boolean,
SkillTime: number,// 技能控制存续时间时间
ReadyTime: number,// 技能前摇时间
RType: number, //技能运行类型 0-线性 1-贝塞尔 2-开始位置固定 3-目标位置固定
ready_y: number,
path:string,
}
interface IEndAnm {
uuid:number,
path:string,
loop:boolean,
time:number,
}
// 技能配置接口 - 按照6001格式排列
export interface SkillConfig {
uuid:number, // 技能唯一ID
name:string, // 技能名称
sp_name:string, // 特效名称
icon:string, // 图标ID
TGroup:TGroup, // 目标群体(敌方/友方/自身等)
act:string, // 角色执行的动画
DTType:DTType, // 伤害类型(单体/范围)
ap:number, // 攻击百分比(角色攻击力)
hit_count:number, // 可命中次数
hitcd:number, // 持续伤害的伤害间隔(秒)
speed:number, // 移动速度
with:number, // 宽度(暂时无用)
ready:number, // 前摇时间
readyAnm:string, // 前摇动画名称
endAnm:string, // 结束动画名称
EAnm:number, // 结束动画ID
DAnm:number, // 命中后动画ID
RType:RType, // 技能运行类型(直线/贝塞尔/固定起点/固定终点)
EType:EType, // 结束条件(动画结束/时间结束/距离结束/碰撞/次数结束)
time?:number, // timeEnd 持续时间(秒)
kind?:SkillKind, // 主效果类型
crt?:number, // 额外暴击率
frz?:number, // 额外冰冻概率
bck?:number, // 额外击退概率
buffs:number[], // 对施法者的buff配置列表(Buff UUID 列表)
call_hero?:number, // 召唤技能召唤英雄id(可选)
info:string, // 技能描述
}
/******
*
* 射箭类技能 带暴击属性
* 火法技能 带击退属性
* 冰法技能 带冰冻属性
*
*
*
*
*/
export const SkillSet: Record<number, SkillConfig> = {
// ========== 单体 ========== 6001-6099
6001: {
uuid:6001,name:"近战",sp_name:"atk_s1",icon:"1026",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,
ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个造成100%攻击的伤害",
},
6002: {
uuid:6002,name:"普通射击",sp_name:"arrow_blue",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,
ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
},
6003: {
uuid:6003,name:"暴击射击",sp_name:"arrow_green",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,crt:20,
ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害,暴击率20%",
},
6004: {
uuid:6004,name:"冰球",sp_name:"ball_ice",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,
ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
},
6005: {
uuid:6005,name:"冰锥",sp_name:"ball_forst",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,frz:20,
ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害,冰冻率20%",
},
6006: {
uuid:6006,name:"火击",sp_name:"ball_fire",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,
ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
},
6007: {
uuid:6007,name:"火球",sp_name:"ball_fire",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,bck:20,
ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害,击退率20%",
},
6008: {
uuid:6008,name:"半月波",sp_name:"ball_light",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,
ap:100,hit_count:3,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"穿透多个目标造成100%攻击的伤害",
},
/*********************** 群体******************/
6101: {
uuid:6101,name:"光箭",sp_name:"arrow_big_yellow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max",DTType:DTType.single,crt:20,
ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"对多个目标造成100%攻击的伤害,暴击",
},
6102: {
uuid:6102,name:"电击",sp_name:"atk_s4",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max",DTType:DTType.single,crt:20,
ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.collision,buffs:[],info:"对多个目标造成150%攻击的伤害,暴击率20%",
},
6103: {
uuid:6103,name:"闪击",sp_name:"atk_s3",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max",DTType:DTType.single,
ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"对多个目标造成150%攻击的伤害",
},
6104: {
uuid:6104,name:"火焰击",sp_name:"atk_f2",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max",DTType:DTType.single,bck:20,
ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"对多个目标造成150%攻击的伤害,击退率20%",
},
6105: {
uuid:6105,name:"月波",sp_name:"ball_gquan",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,
ap:100,hit_count:6,hitcd:0.3,speed:300,with:90,ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,buffs:[],info:"不停对多个目标造成100%攻击的伤害",
},
6106: {
uuid:6106,name:"陨石术",sp_name:"atk_f2",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max",DTType:DTType.range,crt:20,
ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"对多个目标造成150%攻击的伤害,暴击率20%",
},
6107: {
uuid:6107,name:"冰锥",sp_name:"atk_f2",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max",DTType:DTType.range,frz:20,
ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"对多个目标造成150%攻击的伤害,冰冻率20%",
},
6108: {
uuid:6108,name:"火墙",sp_name:"atk_f2",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max",DTType:DTType.range,bck:20,
ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"对多个目标造成150%攻击的伤害,击退率20%",
},
//============================= ====== 辅助技能 ====== ==========================
6201:{
uuid:6201,name:"魔法盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,kind:SkillKind.Shield,
ap:30,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"获得30%最大生命值的护盾",
},
6202: {
uuid:6202,name:"治疗",sp_name:"buff_wind",icon:"1292",TGroup:TGroup.Self,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,kind:SkillKind.Heal,
ap:30,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"治疗自己,回复30%最大生命值",
},
6203:{
uuid:6203,name:"群体魔法盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,kind:SkillKind.Shield,
ap:20,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"队友获得20%最大生命值的护盾",
},
6204: {
uuid:6204,name:"群体治疗",sp_name:"buff_wind",icon:"1292",TGroup:TGroup.Team,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,kind:SkillKind.Heal,
ap:20,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"治疗队友,回复20%最大生命值",
},
6205:{
uuid:6205,name:"群体魔法盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Ally,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,kind:SkillKind.Shield,
ap:20,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"全体获得20%最大生命值的护盾",
},
6206: {
uuid:6206,name:"群体治疗",sp_name:"buff_wind",icon:"1292",TGroup:TGroup.Ally,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,kind:SkillKind.Heal,
ap:20,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"全体回复20%最大生命值",
},
// ========== 怪物基础技能 ==========
6501: {
uuid:6501, name:"怪物近战", sp_name:"atk_s1", icon:"3036", TGroup:TGroup.Enemy, readyAnm:"",endAnm:"",act:"atk", DTType:DTType.single,
ap:100, hit_count:1, hitcd:0.2, speed:0, with:0, ready:0, EAnm:0, DAnm:9001, RType:RType.fixed, EType:EType.animationEnd,buffs:[], info:"怪物基础近战攻击",
},
6502: {
uuid:6502, name:"怪物射击", sp_name:"arrow_1", icon:"3039", TGroup:TGroup.Enemy, readyAnm:"",endAnm:"",act:"atk", DTType:DTType.single,
ap:80, hit_count:1, hitcd:0.2, speed:800, with:0, ready:0, EAnm:0, DAnm:9001, RType:RType.linear, EType:EType.collision,buffs:[], info:"怪物基础远程攻击",
},
};
//技能结束动画EAnm 和集中后动画DAnm, 共用设定数组
export const EAnmConf: Record<number, IEndAnm> = {
0:{uuid:0,path:"",loop:false,time:0}, // 无结束动画
9001:{uuid:9001,path:"atked",loop:false,time:0},
};
export const CanSelectSkills: Record<number, number[]> = {
1: [6002],
2: [6004],
3: [6003],
4: [6100],
// 默认
99: [6002, 6004, 6003, 6100]
};
// ==================== 预定义 Buff 列表 ====================
// 使用 ID 作为 Key方便在技能配置中引用或作为模板
export const BuffsList: Record<number, BuffConf> = {
// ========== 攻击类增益 ========== 10001 - 10099
// 攻击力提升 (固定值)
10001: { uuid: 10001, name: "攻击提升", icon: "10001", buff: Attrs.ap, value: 10, time: 5, chance: 1, info: "攻击力+10" },
10002: { uuid: 10002, name: "攻击提升", icon: "10002", buff: Attrs.ap, value: 50, time: 5, chance: 1, info: "攻击力+50" },
10101: { uuid: 10101, name: "生命上限提升", icon: "10101", buff: Attrs.hp_max, value: 20, time: 10, chance: 1, info: "生命上限+20%" },
// 移动速度提升 (固定值)
10111: { uuid: 10111, name: "移速提升", icon: "10111", buff: Attrs.speed, value: 50, time: 5, chance: 1, info: "移速+50" },
10112: { uuid: 10112, name: "移速提升", icon: "10112", buff: Attrs.speed, value: 100, time: 5, chance: 1, info: "移速+100" },
};