1. 新增Buff数值覆写机制,支持药水卡自定义buff效果数值 2. 重构属性计算逻辑,支持读取药水卡传递的覆写值 3. 新增多组限时强化Buff与药水卡配置 4. 优化UI数值显示,实时展示最终属性值 5. 新增多维度调试日志方便排查问题
150 lines
5.5 KiB
TypeScript
150 lines
5.5 KiB
TypeScript
// ========== 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=不吃加成
|
||
}
|
||
|
||
/** 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' | '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.Flat, value: 5 }],
|
||
info: "攻击力 +5,持续 10 秒",
|
||
},
|
||
// 灼烧(DoT,可叠层)
|
||
7002: {
|
||
id: 7002, name: "灼烧", icon: "Stat_Burn",
|
||
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 伤害,可叠加",
|
||
},
|
||
// 冰冻(控制,走统一框架,双写兼容)
|
||
7003: {
|
||
id: 7003, name: "冰冻", icon: "Stat_Freeze",
|
||
category: BuffCategory.Control, duration: 2, max_stack: 1,
|
||
is_control: true, control_kind: 'frost',
|
||
info: "冰冻目标,无法行动",
|
||
},
|
||
// 击晕(控制)
|
||
7004: {
|
||
id: 7004, name: "击晕", icon: "Stat_Stun",
|
||
category: BuffCategory.Control, duration: 2, max_stack: 1,
|
||
is_control: true, control_kind: 'stun',
|
||
info: "击晕目标,无法行动",
|
||
},
|
||
|
||
// ==================== 玩家计时性强化(药水/技能用,默认 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 秒",
|
||
},
|
||
// 攻击强化(限时)
|
||
7011: {
|
||
id: 7011, name: "攻击爆发", icon: "Stat_Attack_03",
|
||
category: BuffCategory.Buff, duration: 5, max_stack: 1,
|
||
modifiers: [{ attr: Attrs.ap, op: ModOp.PercentAdd, value: 50 }],
|
||
info: "攻击力提升 50%,持续 5 秒",
|
||
},
|
||
// 暴击强化(限时)
|
||
7012: {
|
||
id: 7012, name: "暴击爆发", icon: "Stat_CriticalChance_02",
|
||
category: BuffCategory.Buff, duration: 5, max_stack: 1,
|
||
modifiers: [{ attr: Attrs.critical, op: ModOp.Flat, 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.Flat, 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.Flat, 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.Flat, 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.Flat, 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.Flat, 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.Flat, 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.Flat, value: 50 }],
|
||
info: "冰冻抗性提升 50%,持续 5 秒",
|
||
},
|
||
};
|