实现技能命中后概率触发额外技能的完整流程 1. 新增proc_skill技能配置字段与数据组件 2. 新增公共技能派发工具方法 3. 在HeroAtkSystem中添加触发逻辑 4. 完善伤害事件与技能视图传递proc_skill参数
38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||
import { BoxSet } from "../common/config/GameSet";
|
||
import { SkillOverrides } from "../common/config/SkillSet";
|
||
|
||
/** 业务层对象 */
|
||
//技能数据
|
||
@ecs.register('SDataCom')
|
||
export class SDataCom extends ecs.Comp {
|
||
/** 业务层组件移除时,重置所有数据为默认值 */
|
||
Attrs:any=null
|
||
casterEid: number = -1; // 施法者实体ID,用于安全校验
|
||
group:BoxSet=BoxSet.HERO
|
||
fac: number = 0; // 0:hero 1:monster
|
||
s_uuid:number=0
|
||
skill_lv:number=0
|
||
ext_dmg:number=0 //额外伤害
|
||
dmg_ratio:number=1 //伤害比例
|
||
hit_count:number=0 //击中数量
|
||
max_hit_count:number=0 //最大可命中次数
|
||
/** 命中后概率触发额外技能(由 Skill.load 从合并后配置快照;DamageEvent 透传给 HeroAtkSystem 判定;
|
||
* overrides 字段透传给被触发技能,用于自定义伤害/数值) */
|
||
proc_skill?: { s_uuid: number; chance?: number; overrides?: SkillOverrides };
|
||
reset() {
|
||
this.Attrs=null
|
||
this.group=BoxSet.HERO
|
||
this.fac=0
|
||
this.s_uuid=0
|
||
this.skill_lv=0
|
||
this.casterEid = -1;
|
||
this.hit_count=0
|
||
this.max_hit_count=0
|
||
this.ext_dmg=0
|
||
this.dmg_ratio=1
|
||
this.proc_skill=undefined
|
||
}
|
||
}
|
||
|