feat(skill): 添加技能buff附加概率配置与判定逻辑
1. 新增SkillOverrides接口的buff_chance字段,配置buff附加概率 2. 在web常量中添加buff_chance的配置项说明 3. 在HeroAtkSystem中实现基于buff_chance的buff触发判定,默认100%触发
This commit is contained in:
@@ -177,6 +177,7 @@ export interface SkillOverrides {
|
||||
timed_buff_id?: number;
|
||||
buff_value?: number;
|
||||
buff_duration?: number;
|
||||
buff_chance?: number;
|
||||
call_hero?: number;
|
||||
/** 单次施法召唤的技能实体个数(覆盖 prefab 上 SkillView.summon_count;>1 视为召唤类,不再参与风怒等额外触发) */
|
||||
summon_count?: number;
|
||||
|
||||
@@ -260,10 +260,13 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
|
||||
// 命中附带 debuff(如灼烧 DoT):仅普攻路径,复用友方 timed_buff_id 机制;
|
||||
// 施法者 ap/完整属性快照取自伤害事件,供 BuffSystem tick 缩放与暴击/冰冻/击晕判定
|
||||
if (!isDot && skillConf.timed_buff_id) {
|
||||
const buffOverrides: BuffApplyOverrides = { source_attrs: damageEvent.Attrs };
|
||||
if (skillConf.buff_value !== undefined) buffOverrides.value = skillConf.buff_value;
|
||||
if (skillConf.buff_duration !== undefined) buffOverrides.duration = skillConf.buff_duration;
|
||||
buffManager.applyBuff(target, skillConf.timed_buff_id, casterEid, damageEvent.Attrs[Attrs.ap] || 0, buffOverrides);
|
||||
const buffChance = skillConf.buff_chance ?? 100;
|
||||
if (buffChance >= 100 || Math.random() * 100 < buffChance) {
|
||||
const buffOverrides: BuffApplyOverrides = { source_attrs: damageEvent.Attrs };
|
||||
if (skillConf.buff_value !== undefined) buffOverrides.value = skillConf.buff_value;
|
||||
if (skillConf.buff_duration !== undefined) buffOverrides.duration = skillConf.buff_duration;
|
||||
buffManager.applyBuff(target, skillConf.timed_buff_id, casterEid, damageEvent.Attrs[Attrs.ap] || 0, buffOverrides);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -111,6 +111,7 @@ export const OVERRIDE_KEYS = [
|
||||
{ key: 'timed_buff_id', label: 'timed_buff_id 计时buff' },
|
||||
{ key: 'buff_value', label: 'buff_value 修饰数值' },
|
||||
{ key: 'buff_duration', label: 'buff_duration 持续时间' },
|
||||
{ key: 'buff_chance', label: 'buff_chance 附加概率' },
|
||||
{ key: 'summon_count', label: 'summon_count 召唤数' },
|
||||
{ key: 'num', label: 'num 额外释放次数' },
|
||||
{ key: 'call_hero', label: 'call_hero 召唤英雄id' },
|
||||
|
||||
Reference in New Issue
Block a user