feat(skill-system): 新增计时debuff机制,支持技能命中敌方附加减益效果
本次提交完整实现了技能对敌附加debuff的完整流程: 1. 新增TimedDebuffSnapshot数据结构,用于透传debuff配置 2. 在SkillConfig和SkillOverrides中新增debuff相关配置项 3. 实现HeroAtkSystem中debuff的判定与施加逻辑 4. 完善后台配置、前端编辑器的debuff配置支持 5. 调整了buff目标判定逻辑,修复了原有默认目标的语义混淆问题 6. 优化了BuffSystem的调试日志,新增了debuff分类标识 7. 批量更新了现有英雄技能的debuff配置示例
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { BoxSet } from "../common/config/GameSet";
|
||||
import { SkillOverrides } from "../common/config/SkillSet";
|
||||
import { TimedDebuffSnapshot } from "../hero/DamageQueueComp";
|
||||
|
||||
/** 业务层对象 */
|
||||
//技能数据
|
||||
@@ -20,6 +21,8 @@ export class SDataCom extends ecs.Comp {
|
||||
/** 命中后概率触发额外技能(由 Skill.load 从合并后配置快照;DamageEvent 透传给 HeroAtkSystem 判定;
|
||||
* overrides 字段透传给被触发技能,用于自定义伤害/数值) */
|
||||
proc_skill?: { s_uuid: number; chance?: number; overrides?: SkillOverrides };
|
||||
/** 命中后对敌 debuff(由 Skill.load 从合并后配置快照;DamageEvent 透传给 HeroAtkSystem 结算) */
|
||||
timed_debuff?: TimedDebuffSnapshot;
|
||||
reset() {
|
||||
this.Attrs=null
|
||||
this.group=BoxSet.HERO
|
||||
@@ -32,6 +35,7 @@ export class SDataCom extends ecs.Comp {
|
||||
this.ext_dmg=0
|
||||
this.dmg_ratio=1
|
||||
this.proc_skill=undefined
|
||||
this.timed_debuff=undefined
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -245,6 +245,10 @@ export class Skill extends ecs.Entity {
|
||||
sDataCom.max_hit_count = Math.max(1, sHit)
|
||||
// 快照合并后(基础配置+heroSet overrides/lv_entries)的 proc_skill,命中时由 HeroAtkSystem 判定触发
|
||||
sDataCom.proc_skill = config.proc_skill;
|
||||
// 快照合并后的对敌 debuff 配置,命中时由 HeroAtkSystem 结算(heroSet overrides/lv_entries 注入的 debuff 依赖此透传)
|
||||
sDataCom.timed_debuff = config.timed_debuff_id
|
||||
? { id: config.timed_debuff_id, value: config.debuff_value, duration: config.debuff_duration, chance: config.debuff_chance }
|
||||
: undefined;
|
||||
SView.init();
|
||||
};
|
||||
|
||||
|
||||
@@ -220,6 +220,7 @@ export class SkillView extends CCComp {
|
||||
finalRatio,
|
||||
0,
|
||||
this.sData.proc_skill,
|
||||
this.sData.timed_debuff,
|
||||
);
|
||||
}
|
||||
close_collider() {
|
||||
|
||||
Reference in New Issue
Block a user