feat(skill): add timed buff support for skills

1. 新增timed_buff_id配置项到SkillConfig和SkillOverrides接口
2. 实现计时buff逻辑:配置该id时通过buffManager添加限时buff,跳过永久buff逻辑
3. 优化代码格式和空行规范,修复部分代码细节问题
This commit is contained in:
pan
2026-07-23 16:25:08 +08:00
parent 9a5093d2a4
commit 2381812d06
3 changed files with 9619 additions and 9324 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -154,6 +154,7 @@ export interface SkillConfig {
stun?: number, // 额外击晕概率
bck?: number, // 额外击退概率
buff_type?: Attrs, // Buff 类型 (单一职责)
timed_buff_id?: number, // 计时性 buff 配置 id指向 BuffList存在时走 buffManager 而非永久 add_*
call_hero?: number, // 召唤技能召唤英雄id(可选)
is_accel?: boolean, // 是否逐渐加速飞行
info: string, // 技能描述
@@ -170,6 +171,7 @@ export interface SkillOverrides {
stun?: number;
bck?: number;
buff_type?: Attrs;
timed_buff_id?: number;
call_hero?: number;
is_accel?: boolean;
}

View File

@@ -14,6 +14,7 @@ import { SkillTriggerType } from "../common/config/heroSet";
import { SkillTriggerHelper } from "./SkillTriggerHelper";
import { MissionEconomy } from "../map/MissionEconomy";
import { MissionHeroComp } from "../map/MissionHeroComp";
import { buffManager } from "./BuffManager";
/**
* ==================== 自动施法系统 ====================
@@ -485,6 +486,18 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
}
if (config.buff_type !== undefined) {
// 计时性 buff配置了 timed_buff_id 时走 buffManager 限时路径,
// 同一技能不应既永久加成又限时加成,故提前 return 跳过下方永久 add_* 逻辑
if (config.timed_buff_id) {
buffManager.applyBuff(
target.ent,
config.timed_buff_id,
_cAttrsComp.hero_uuid,
_cAttrsComp.ap
);
return;
}
const baseValue = config.ap;
let upgradeValue = 0;