feat(skill): 添加技能buff附加概率配置与判定逻辑
1. 新增SkillOverrides接口的buff_chance字段,配置buff附加概率 2. 在web常量中添加buff_chance的配置项说明 3. 在HeroAtkSystem中实现基于buff_chance的buff触发判定,默认100%触发
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user