refactor(skill/hero): 重构技能buff系统,优化属性处理与技能加成逻辑

- 新增HeroAttrsComp的add_special_attr方法,实现动态累加任意数字类型的英雄属性
- 废弃旧的BuffConf数组配置格式,改用单一buff_type字段简化技能buff配置
- 修复金币类技能加成未随技能等级提升的问题,调整计算逻辑为baseGold + sUp.ap * skillLv
- 重构applyActualFriendlyEffect方法,添加技能等级参数,按buff类型匹配对应升级加成
- 更新所有内置技能配置为新的格式规范
This commit is contained in:
walkpan
2026-05-23 13:26:11 +08:00
parent fce7646de6
commit 9eccca7e2a
3 changed files with 73 additions and 45 deletions

View File

@@ -102,11 +102,7 @@ export enum IType {
export const HeroSkillList = [6001,6001,6001,6001,6001,6001]
// Debuff配置接口
export interface BuffConf {
buff:Attrs;
value:number; // 效果值
}
// (已被废弃,采用平铺字段 buff_type 和 buff_value 代替)
interface IReady {
uuid:number,
@@ -155,7 +151,7 @@ export interface SkillConfig {
crt?:number, // 额外暴击率
frz?:number, // 额外冰冻概率
bck?:number, // 额外击退概率
buffs:BuffConf[], // 对目标应用的 buff 配置列表
buff_type?:Attrs, // Buff 类型 (单一职责)
call_hero?:number, // 召唤技能召唤英雄id(可选)
info:string, // 技能描述
}
@@ -169,7 +165,7 @@ export interface SkillOverrides {
crt?: number;
frz?: number;
bck?: number;
buffs?: BuffConf[];
buff_type?: Attrs;
}
/**
@@ -202,123 +198,123 @@ export const SkillSet: Record<number, SkillConfig> = {
6001: {
uuid:6001,name:"普通攻击",sp_name:"atk",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.2,EAnm:0,DAnm:"",IType:IType.Melee,
RType:RType.linear,EType:EType.collision,buffs:[],info:"造成攻击力100%的伤害",
RType:RType.linear,EType:EType.collision,info:"造成攻击力100%的伤害",
},
6002: {
uuid:6002,name:"光箭蓝",sp_name:"atk_c1",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.bezier,EType:EType.collision,buffs:[],info:"近战普通攻击技能",
RType:RType.bezier,EType:EType.collision,info:"近战普通攻击技能",
},
6003: {
uuid:6003,name:"光箭红",sp_name:"atk_c2",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.bezier,EType:EType.collision,buffs:[],info:"一定几率暴击",
RType:RType.bezier,EType:EType.collision,info:"一定几率暴击",
},
6004: {
uuid:6004,name:"光箭绿",sp_name:"atk_c3",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.bezier,EType:EType.collision,buffs:[],info:"一定几率击退目标",
RType:RType.bezier,EType:EType.collision,info:"一定几率击退目标",
},
//怪物战士类型统一使用 6005
6005: {
uuid:6005,name:"光箭深红",sp_name:"atk_c4",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.bezier,EType:EType.collision,buffs:[],info:"一定几率击退目标",
RType:RType.bezier,EType:EType.collision,info:"一定几率击退目标",
},
6006: {
uuid:6006,name:"光箭灰白",sp_name:"atk_c5",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.bezier,EType:EType.collision,buffs:[],info:"一定几率击退目标",
RType:RType.bezier,EType:EType.collision,info:"一定几率击退目标",
},
6007: {
uuid:6007,name:"水球",sp_name:"ball_water",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.bezier,EType:EType.collision,buffs:[],info:"一定几率冰冻目标",
RType:RType.bezier,EType:EType.collision,info:"一定几率冰冻目标",
},
6008: {
uuid:6008,name:"箭矢",sp_name:"arrow",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.bezier,EType:EType.collision,bezier_start_y:20,bezier_mid_y:140,bezier_arc:1.05,buffs:[],info:"造成攻击力100%的伤害",
RType:RType.bezier,EType:EType.collision,bezier_start_y:20,bezier_mid_y:140,bezier_arc:1.05,info:"造成攻击力100%的伤害",
},
6009: {
uuid:6009,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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.bezier,EType:EType.collision,bezier_start_y:20,bezier_mid_y:140,bezier_arc:1.05,buffs:[],info:"造成攻击力100%的伤害",
RType:RType.bezier,EType:EType.collision,bezier_start_y:20,bezier_mid_y:140,bezier_arc:1.05,info:"造成攻击力100%的伤害",
},
6010: {
uuid:6010,name:"箭矢红",sp_name:"arrow_red",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.bezier,EType:EType.collision,bezier_start_y:20,bezier_mid_y:140,bezier_arc:1.05,buffs:[],info:"造成攻击力100%的伤害",
RType:RType.bezier,EType:EType.collision,bezier_start_y:20,bezier_mid_y:140,bezier_arc:1.05,info:"造成攻击力100%的伤害",
},
6101: {
uuid:6101,name:"火球",sp_name:"ball_fire",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
DTType:DTType.single,frz:0,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.linear,EType:EType.collision,buffs:[],info:"造成攻击力100%的伤害,一定几率暴击,高阶技能",
RType:RType.linear,EType:EType.collision,info:"造成攻击力100%的伤害,一定几率暴击,高阶技能",
},
6102: {
uuid:6102,name:"龙卷风",sp_name:"ball_winds",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.linear,EType:EType.collision,buffs:[],info:"造成攻击力100%的伤害,一定几率击退目标,高阶技能",
RType:RType.linear,EType:EType.collision,info:"造成攻击力100%的伤害,一定几率击退目标,高阶技能",
},
//怪物法师统一使用 暗影球
6103: {
uuid:6103,name:"暗影球",sp_name:"ball_zi",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.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.linear,EType:EType.collision,buffs:[],info:"造成攻击力100%的伤害,一定几率上毒(后期加入),高阶技能 ",
RType:RType.linear,EType:EType.collision,info:"造成攻击力100%的伤害,一定几率上毒(后期加入),高阶技能 ",
},
6104: {
uuid:6104,name:"穿云箭",sp_name:"arrow_big_yellow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"yellow",endAnm:"",act:"max",
DTType:DTType.single,crt:20,ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.linear,EType:EType.collision,buffs:[],info:"射出强力箭矢最多穿透6个敌人附带20%额外暴击率",
RType:RType.linear,EType:EType.collision,info:"射出强力箭矢最多穿透6个敌人附带20%额外暴击率",
},
6105: {
uuid:6105,name:"冰刺",sp_name:"ice_up",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max",
DTType:DTType.range,frz:0,ap:150,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.fixedEnd,EType:EType.animationEnd,buffs:[],info:"召唤冰刺攻击一排的敌人,有概率冰冻",
RType:RType.fixedEnd,EType:EType.animationEnd,info:"召唤冰刺攻击一排的敌人,有概率冰冻",
},
6106: {
uuid:6106,name:"冰推",sp_name:"ice_t",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max",
DTType:DTType.range,frz:0,ap:150,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"召唤冰墙阻挡敌人,有概率冰冻,100%击退",
RType:RType.fixed,EType:EType.animationEnd,info:"召唤冰墙阻挡敌人,有概率冰冻,100%击退",
},
6107: {
uuid:6107,name:"陨石",sp_name:"fire_yuns",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max",
DTType:DTType.range,crt:20,ap:150,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote,
RType:RType.fixedEnd,EType:EType.animationEnd,buffs:[],info:"召唤攻击敌人造成攻击力150%的范围伤害附带20%额外暴击率",
RType:RType.fixedEnd,EType:EType.animationEnd,info:"召唤攻击敌人造成攻击力150%的范围伤害附带20%额外暴击率",
},
//============================= ====== 辅助技能 ====== ==========================
6301:{
uuid:6301,name:"护盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_blue",endAnm:"",act:"atk",
DTType:DTType.single,kind:SkillKind.Shield,ap:3,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support,
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"为伙伴/自己添加护盾可抵挡3次伤害",
RType:RType.fixed,EType:EType.animationEnd,info:"为伙伴/自己添加护盾可抵挡3次伤害",
},
6302: {
uuid:6302,name:"治疗",sp_name:"buff_wind",icon:"1292",TGroup:TGroup.Team,readyAnm:"up_green",endAnm:"",act:"atk",
DTType:DTType.single,kind:SkillKind.Heal,ap:300,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support,
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"治疗伙伴/自己",
RType:RType.fixed,EType:EType.animationEnd,info:"治疗伙伴/自己",
},
6303: {
uuid:6303,name:"获取金币",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_blue",endAnm:"gold",act:"atk",
DTType:DTType.single,kind:SkillKind.Gold,ap:0,gold:10,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support,
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"增加一定数量的金币",
RType:RType.fixed,EType:EType.animationEnd,info:"增加一定数量的金币",
},
//==========================buff 技能=====================
6401:{
uuid:6401,name:"攻击强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_ap",endAnm:"",act:"atk",
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support,
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5}],info:"全体友方攻击力提升5点持续1次",
DTType:DTType.single,kind:SkillKind.Support,ap:5,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support,
RType:RType.fixed,EType:EType.animationEnd,buff_type:Attrs.ap,info:"全体友方攻击力提升5点持续1次",
},
6402:{
uuid:6402,name:"生命强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk",
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support,
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:20}],info:"全体友方最大生命值提升20点持续1次",
DTType:DTType.single,kind:SkillKind.Support,ap:20,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support,
RType:RType.fixed,EType:EType.animationEnd,buff_type:Attrs.hp_max,info:"全体友方最大生命值提升20点持续1次",
},
6501:{
uuid:6501,name:"复活",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_ap",endAnm:"",act:"atk",
DTType:DTType.single,kind:SkillKind.Support,ap:50,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support,
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"ap 代表复活的生命值百分比",
RType:RType.fixed,EType:EType.animationEnd,info:"ap 代表复活的生命值百分比",
}
};