Files
pixelheros/assets/script/game/common/config/BuffSet.ts
pan 5585149b12 feat: 新增麻痹控制机制,优化击晕与技能CD逻辑
1.  新增麻痹控制相关属性、buff配置与逻辑实现
2.  调整击晕时长与CD削减机制,优化技能CD更新逻辑
3.  修正多个技能预制件的参数与动画配置
4.  扩展控制类型检测与游戏配置项
2026-08-19 16:40:10 +08:00

263 lines
11 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ========== Buff/Debuff 配置定义 ==========
import { Attrs } from "./HeroAttrs";
/** Buff 类别 */
export enum BuffCategory {
Buff = 0,
Debuff = 1,
Control = 2,
}
/** 修饰器运算类型 */
export enum ModOp {
Flat = 0,
PercentAdd = 1,
PercentMul = 2,
}
/** 单条属性修饰器 */
export interface BuffModifier {
attr: Attrs;
op: ModOp;
value: number;
}
/** 周期效果DoT/HoT */
export interface BuffTickEffect {
interval: number;
damage_or_heal: number; // 正=治疗,负=伤害
scale_by_ap_pct: number; // 按施法者 ap 缩放百分比0=不吃加成
}
/**
* debuff 图标节点名枚举。
* 取值即 prefab 节点名top.prefab 的 top/debuff 容器 与 tooltip.prefab 的 loss_life/hp/debuff 容器
* 下存在同名子节点(两处共用一套图标)。
* 注意LightningDamag 为 prefab 原始拼写(少个 e勿"修正"。
*/
export enum DebuffIcon {
AttackDebuff = "AttackDebuff", // 攻击类 debuff
IceDamage = "IceDamage", // 冰系伤害
FireDamage = "FireDamage", // 火系伤害(灼烧)
LightningDamag = "LightningDamag", // 雷系伤害
Penetration = "Penetration", // 穿透
Stun = "Stun", // 击晕
Poison = "Poison", // 中毒
Blood = "Blood", // 出血
}
/**
* buffId → debuff 图标映射。
* 仅伤害类/控制类 debuff 需要图标;未映射的 buff 不显示。
* 新增 debuff 时1) BuffList 加配置 2) 此处加一行映射。
*/
export const DEBUFF_ICON_MAP: Record<number, DebuffIcon> = {
7002: DebuffIcon.FireDamage, // 易伤(灼热火球附加)
7003: DebuffIcon.IceDamage, // 冰冻
7004: DebuffIcon.Stun, // 击晕
7005: DebuffIcon.Poison, // 中毒
7006: DebuffIcon.AttackDebuff, // 减攻
7007: DebuffIcon.Blood, // 出血
7008: DebuffIcon.Penetration, // 破甲
7025: DebuffIcon.LightningDamag, // 麻痹(雷系图标,注意 prefab 原始拼写少个 e
};
/** 易伤 buff 的 idHeroAtkSystem 结算时按此 id 汇总易伤值) */
export const VULNERABLE_BUFF_ID = 7002;
/** 出血 buff 的 id每层使目标被暴击率 +1% */
export const BLEED_BUFF_ID = 7007;
/** 出血每层附加的被暴击率(百分点) */
export const BLEED_CRIT_PER_STACK = 1;
/** Buff 静态定义 */
export interface BuffConfig {
id: number;
name: string;
icon: string;
category: BuffCategory;
duration: number; // 单层持续时间0=永久
max_stack: number; // 默认 0=无限叠加1=不可叠层N=最多N层
modifiers?: BuffModifier[];
tick?: BuffTickEffect;
is_control?: boolean;
control_kind?: 'frost' | 'stun' | 'paralyze' | 'none';
info: string;
}
/** Buff 配置表 */
export const BuffList: Record<number, BuffConfig> = {
// 攻击强化(限时版)
7001: {
id: 7001, name: "攻击强化", icon: "Stat_Attack_03",
category: BuffCategory.Buff, duration: 10, max_stack: 0,
modifiers: [{ attr: Attrs.ap, op: ModOp.PercentAdd, value: 5 }],
info: "攻击力提升 5%,持续 10 秒",
},
// 易伤(灼热火球附加;受到伤害时附加固定值,可被易伤抗性百分比减免)
// 注modifiers.attr 用 hp 仅为占位以通过 aggregateTimedMods 结构校验,实际易伤值由 HeroAtkSystem 按 VULNERABLE_BUFF_ID 直接汇总
7002: {
id: 7002, name: "易伤", icon: "Stat_Burn",
category: BuffCategory.Debuff, duration: 5, max_stack: 5,
modifiers: [{ attr: Attrs.hp, op: ModOp.Flat, value: 10 }],
info: "受到的伤害附加 10 点易伤,可叠加,持续 5 秒",
},
// 冰冻(控制,走统一框架,双写兼容)
7003: {
id: 7003, name: "冰冻", icon: "Stat_Freeze",
category: BuffCategory.Control, duration: 2, max_stack: 1,
is_control: true, control_kind: 'frost',
info: "冰冻目标,无法行动",
},
// 击晕(短控:施加瞬间技能 CD 削减 20%,持续期间 CD 停止增长)
7004: {
id: 7004, name: "击晕", icon: "Stat_Stun",
category: BuffCategory.Control, duration: 1, max_stack: 1,
is_control: true, control_kind: 'stun',
info: "击晕目标 1 秒,无法行动,技能 CD 削减 20% 并停止增长",
},
// 中毒(纯伤害 DoT可叠层
7005: {
id: 7005, name: "中毒", icon: "Stat_PoisonChanceIncrease",
category: BuffCategory.Debuff, duration: 5, max_stack: 5,
tick: { interval: 0.5, damage_or_heal: -10, scale_by_ap_pct: 30 },
info: "每 0.5 秒受到 10 点中毒伤害,可叠加,持续 5 秒",
},
// 减攻(降低目标攻击力)
7006: {
id: 7006, name: "减攻", icon: "Stat_Attack_01",
category: BuffCategory.Debuff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.ap, op: ModOp.PercentAdd, value: -10 }],
info: "攻击力降低 10%,持续 5 秒",
},
// 破甲(降低目标防御值,防御按加法模型累加,由 getFinalDefense 结算)
7008: {
id: 7008, name: "破甲", icon: "Stat_DefenseBreak",
category: BuffCategory.Debuff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.defense, op: ModOp.PercentAdd, value: -50 }],
info: "防御降低 50持续 5 秒",
},
// 出血(每层使目标被暴击率 +1%,微量伤害 DoT暴击率加成由 HeroAtkSystem 按 BLEED_BUFF_ID 层数结算)
7007: {
id: 7007, name: "出血", icon: "Stat_Blood",
category: BuffCategory.Debuff, duration: 5, max_stack: 5,
tick: { interval: 0.5, damage_or_heal: -1, scale_by_ap_pct: 0 },
info: "微量出血,每层使自身被暴击率提升 1%,可叠加,持续 5 秒",
},
// ==================== 玩家计时性强化(药水/技能用,默认 5s ====================
// 计时性回血HoT
7010: {
id: 7010, name: "再生", icon: "Stat_PotionBoost",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
tick: { interval: 0.5, damage_or_heal: 10, scale_by_ap_pct: 0 },
info: "每秒回复生命,持续 5 秒",
},
// 暴击强化(限时)
7012: {
id: 7012, name: "暴击爆发", icon: "Stat_CriticalChance_02",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.critical, op: ModOp.PercentAdd, value: 30 }],
info: "暴击率提升 30%,持续 5 秒",
},
// 击退距离强化(限时)
7013: {
id: 7013, name: "击退爆发", icon: "Stat_Stun_01",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.knockback_chance, op: ModOp.PercentAdd, value: 30 }],
info: "击退距离提升 30%,持续 5 秒",
},
// 穿透强化(限时)
7014: {
id: 7014, name: "穿透爆发", icon: "Stat_Tripleshot",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.puncture_chance, op: ModOp.PercentAdd, value: 30 }],
info: "穿透概率提升 30%,持续 5 秒",
},
// 攻速强化(限时,走 getEffectiveSkillCd 计时修饰)
7015: {
id: 7015, name: "攻速爆发", icon: "Stat_AttackSpeed_02",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.speed, op: ModOp.PercentAdd, value: 40 }],
info: "攻击速度提升 40%,持续 5 秒",
},
// 风怒强化(限时,按概率百分点)
7016: {
id: 7016, name: "风怒爆发", icon: "Stat_CriticalComboChance",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.wfuny, op: ModOp.PercentAdd, value: 20 }],
info: "风怒概率提升 20%,持续 5 秒",
},
// 击晕概率强化(限时)
7017: {
id: 7017, name: "击晕爆发", icon: "Stat_Stun_01",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.stun_chance, op: ModOp.PercentAdd, value: 30 }],
info: "击晕概率提升 30%,持续 5 秒",
},
// 击晕抗性强化(限时)
7018: {
id: 7018, name: "击晕抗性", icon: "Stat_Armor_01",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.stun_res, op: ModOp.PercentAdd, value: 50 }],
info: "击晕抗性提升 50%,持续 5 秒",
},
// 冰冻抗性强化(限时)
7019: {
id: 7019, name: "冰冻抗性", icon: "Stat_Freeze",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.freeze_res, op: ModOp.PercentAdd, value: 50 }],
info: "冰冻抗性提升 50%,持续 5 秒",
},
// 暴伤强化(限时)
7020: {
id: 7020, name: "暴伤爆发", icon: "Stat_Critical_01",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.critical_damage, op: ModOp.PercentAdd, value: 30 }],
info: "暴击伤害提升 30%,持续 5 秒",
},
// 冰冻概率强化(限时)
7021: {
id: 7021, name: "冰冻概率爆发", icon: "Stat_Freeze",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.freeze_chance, op: ModOp.PercentAdd, value: 5 }],
info: "冰冻概率提升 5%,持续 5 秒",
},
// 穿透伤害强化(限时)
7022: {
id: 7022, name: "穿透伤害爆发", icon: "Stat_Tripleshot",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.puncture_dmg_bonus, op: ModOp.PercentAdd, value: 30 }],
info: "穿透后伤害提升 30%,持续 5 秒",
},
// 防御强化(限时,按加法模型累加固定值,由 getFinalDefense 结算)
7023: {
id: 7023, name: "防御强化", icon: "Stat_Defense",
category: BuffCategory.Buff, duration: 10, max_stack: 0,
modifiers: [{ attr: Attrs.defense, op: ModOp.PercentAdd, value: 50 }],
info: "防御提升 50持续 10 秒",
},
// 防御爆发(限时,药水用,统一 5s
7024: {
id: 7024, name: "防御爆发", icon: "Stat_Defense",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.defense, op: ModOp.PercentAdd, value: 100 }],
info: "防御提升 100持续 5 秒",
},
// ==================== 控制 / 麻痹系 ====================
// 麻痹(控制:技能 CD 增长减速 50%,可被麻痹强化 buff 提升,累计达 100% 则停止增长)
7025: {
id: 7025, name: "麻痹", icon: "Stat_LightningDamag",
category: BuffCategory.Control, duration: 5, max_stack: 1,
is_control: true, control_kind: 'paralyze',
info: "麻痹目标,技能 CD 增长减慢 50%,持续 5 秒",
},
// 麻痹强化(提升麻痹对技能 CD 的减速量,与麻痹基础减速按百分点叠加)
7026: {
id: 7026, name: "麻痹强化", icon: "Stat_LightningDamag",
category: BuffCategory.Buff, duration: 5, max_stack: 1,
modifiers: [{ attr: Attrs.paralyze_power, op: ModOp.PercentAdd, value: 30 }],
info: "麻痹对技能 CD 的减速量额外提升 30%,持续 5 秒",
},
};