refactor(skill&buff): 优化计时buff配置方式
移除冗余的7112/7113buff配置,统一复用7111基础配置 通过新增buff_duration参数实现持续时间和数值的灵活覆写 简化占卜师技能buff的多档成长配置逻辑
This commit is contained in:
@@ -74,25 +74,13 @@ export const BuffList: Record<number, BuffConfig> = {
|
||||
is_control: true, control_kind: 'stun',
|
||||
info: "击晕目标,无法行动",
|
||||
},
|
||||
// 占卜师战前攻击强化(限时版,三档成长:+30/5s → +60/7s → +90/10s)
|
||||
// 占卜师战前攻击强化(基础档:+30/5s;高阶通过 buff_value/buff_duration 覆写成长)
|
||||
7111: {
|
||||
id: 7111, name: "战前强攻", icon: "Stat_Attack_03",
|
||||
category: BuffCategory.Buff, duration: 5, max_stack: 0,
|
||||
modifiers: [{ attr: Attrs.ap, op: ModOp.Flat, value: 30 }],
|
||||
info: "攻击力 +30,持续 5 秒",
|
||||
},
|
||||
7112: {
|
||||
id: 7112, name: "战前强攻", icon: "Stat_Attack_03",
|
||||
category: BuffCategory.Buff, duration: 7, max_stack: 0,
|
||||
modifiers: [{ attr: Attrs.ap, op: ModOp.Flat, value: 60 }],
|
||||
info: "攻击力 +60,持续 7 秒",
|
||||
},
|
||||
7113: {
|
||||
id: 7113, name: "战前强攻", icon: "Stat_Attack_03",
|
||||
category: BuffCategory.Buff, duration: 10, max_stack: 0,
|
||||
modifiers: [{ attr: Attrs.ap, op: ModOp.Flat, value: 90 }],
|
||||
info: "攻击力 +90,持续 10 秒",
|
||||
},
|
||||
|
||||
// ==================== 玩家计时性强化(药水/技能用,默认 5s) ====================
|
||||
// 计时性回血(HoT)
|
||||
|
||||
@@ -156,6 +156,7 @@ export interface SkillConfig {
|
||||
buff_type?: Attrs, // Buff 类型 (单一职责)
|
||||
timed_buff_id?: number, // 计时性 buff 配置 id(指向 BuffList),存在时走 buffManager 而非永久 add_*
|
||||
buff_value?: number, // 覆写计时 buff 的修饰数值(modifiers.value / tick.damage_or_heal),由药水卡自定义档位
|
||||
buff_duration?: number, // 覆写计时 buff 的持续时间(秒),不配置则用 BuffList 默认值
|
||||
call_hero?: number, // 召唤技能召唤英雄id(可选)
|
||||
is_accel?: boolean, // 是否逐渐加速飞行
|
||||
info: string, // 技能描述
|
||||
@@ -174,6 +175,7 @@ export interface SkillOverrides {
|
||||
buff_type?: Attrs;
|
||||
timed_buff_id?: number;
|
||||
buff_value?: number;
|
||||
buff_duration?: number;
|
||||
call_hero?: number;
|
||||
is_accel?: boolean;
|
||||
}
|
||||
|
||||
@@ -390,13 +390,13 @@ export const HeroInfo: Record<number, heroInfo> = {
|
||||
uuid: 5051, name: "占卜师", path: "hm1", fac: FacSet.HERO, pool_lv: 1, lv: 1, type: HType.Long, hp: 143, ap: 40,
|
||||
skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Mid3].cd, ccd: 0 } },
|
||||
// 战前计时 buff:每波开始全队 AP 限时提升(+30/5s → +60/7s → +90/10s),6级追加暴击驻场光环
|
||||
// 通过 overrides.timed_buff_id 切换 BuffList 中的限时 buff 配置,走 buffManager 限时路径
|
||||
// 统一复用 7111 基础配置,通过 buff_value/buff_duration 覆写实现三档成长
|
||||
fstart: [{ s_uuid: 6401, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111 } }],
|
||||
evolve: {
|
||||
2: { hp_bonus: 80 },
|
||||
3: { fstart: [{ s_uuid: 6401, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7112 } }] },
|
||||
3: { fstart: [{ s_uuid: 6401, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111, buff_value: 60, buff_duration: 7 } }] },
|
||||
4: { hp_bonus: 80 },
|
||||
5: { fstart: [{ s_uuid: 6401, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7113 } }] },
|
||||
5: { fstart: [{ s_uuid: 6401, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111, buff_value: 90, buff_duration: 10 } }] },
|
||||
6: { field: [7204] },
|
||||
},
|
||||
info: "战斗开始时全队攻击力限时提升(+30/5s→+60/7s→+90/10s);6级起全队暴击率+20%(驻场)"
|
||||
|
||||
@@ -490,12 +490,16 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
// 计时性 buff:配置了 timed_buff_id 时走 buffManager 限时路径,
|
||||
// 同一技能不应既永久加成又限时加成,故提前 return 跳过下方永久 add_* 逻辑
|
||||
if (config.timed_buff_id) {
|
||||
// 汇总 buff 覆写参数:value 覆写修饰数值,duration 覆写持续时间
|
||||
const buffOverrides: { value?: number; duration?: number } = {};
|
||||
if (config.buff_value !== undefined) buffOverrides.value = config.buff_value;
|
||||
if (config.buff_duration !== undefined) buffOverrides.duration = config.buff_duration;
|
||||
buffManager.applyBuff(
|
||||
target.ent,
|
||||
config.timed_buff_id,
|
||||
_cAttrsComp.hero_uuid,
|
||||
_cAttrsComp.ap,
|
||||
config.buff_value !== undefined ? { value: config.buff_value } : undefined
|
||||
Object.keys(buffOverrides).length > 0 ? buffOverrides : undefined
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user