/** * @file SkillDescSet.ts * @description 技能描述结构化配置表(方案 B:独立描述表,纯 UI 用) * * 职责: * 为触发技能提供"结构化字段 + 占位符模板",供 HeroSkillDesc.buildSkillDesc * 在合并 overrides 后动态拼出效果文案。杜绝 SkillConfig.info 写死数值导致的 * "改数值忘改文案"漂移。 * * 关键设计: * - 与 SkillSet 同 key(skill uuid),但只覆盖需要描述的触发技能; * 普攻/怪物技能不入表,由生成器回退旧 info 兜底。 * - 数值永远从 mergeSkillParams 后的实时 skill 取值(permField/timedField), * overrides 改了数值,文案自动同步。 * - 永久模式(overrides 直接改写 ap 等)与计时模式(overrides 走 timed_buff_id) * 分别用 templPerm / templTimed 两套模板。 * * 模板占位符: * {target} 目标(自身/随机N名队友/全体友方/敌方) * {value} 取值(来自 permField 或 timedField 指向的字段) * {unit} 单位(""/%/次) * {verb} 效果动词(攻击力/暴击率/护盾…) * {dur} 持续时间秒数(计时模式用,取 buff_duration) */ import { SkillOverrides } from "./SkillSet"; /** * 单个技能的结构化描述配置 */ export interface SkillDescConfig { /** 效果动词,如 "攻击力"/"暴击率"/"护盾" */ verb: string; /** 单位,如 ""/"%"/"次" */ unit: string; /** 永久模式取值字段(overrides 直接改写的字段),通常 "ap" */ permField: keyof SkillOverrides; /** 计时模式取值字段(overrides 走 timed_buff_id 时),通常 "buff_value" */ timedField?: keyof SkillOverrides; /** 永久模式文案模板 */ templPerm: string; /** 计时模式文案模板(含 {dur}),不填则该技能不支持计时模式 */ templTimed?: string; } /** * 技能描述表,key = SkillSet 的技能 uuid * 首批覆盖现役英雄涉及的触发技能;未入表技能由生成器回退 skill.info */ export const SkillDescSet: Record = { // 6301 护盾:ap = 可格挡次数 6301: { verb: "", unit: "次", permField: "ap", templPerm: "{target}获得{value}{unit}格挡护盾", }, // 6302 治疗:ap = 攻击力百分比 6302: { verb: "", unit: "", permField: "ap", templPerm: "{target}回复攻击力{value}%生命", }, // 6401 攻击强化:永久 ap=攻击点;计时 buff_value=攻击点 6401: { verb: "攻击力", unit: "", permField: "ap", timedField: "buff_value", templPerm: "{target}{verb}+{value}", templTimed: "{target}{verb}+{value},持续{dur}秒", }, // 6402 生命强化:ap = 最大生命点 6402: { verb: "最大生命", unit: "", permField: "ap", templPerm: "{target}{verb}+{value}", }, // 6403 暴击强化:永久 ap=暴击%;计时 buff_value=暴击% 6403: { verb: "暴击率", unit: "%", permField: "ap", timedField: "buff_value", templPerm: "{target}{verb}+{value}{unit}", templTimed: "{target}{verb}+{value}{unit},持续{dur}秒", }, // 6404 暴伤强化:ap = 暴击伤害% 6404: { verb: "暴击伤害", unit: "%", permField: "ap", templPerm: "{target}{verb}+{value}{unit}", }, // 6405 击晕强化:ap = 击晕概率% 6405: { verb: "击晕概率", unit: "%", permField: "ap", templPerm: "{target}{verb}+{value}{unit}", }, // 6408 穿刺强化:ap = 穿刺概率% 6408: { verb: "穿刺概率", unit: "%", permField: "ap", templPerm: "{target}{verb}+{value}{unit}", }, // 6409 风怒强化:ap = 风怒次数 6409: { verb: "风怒次数", unit: "次", permField: "ap", templPerm: "{target}{verb}+{value}{unit}", }, // 6501 复活:ap = 复活生命值百分比 6501: { verb: "", unit: "", permField: "ap", templPerm: "{target}以{value}%生命复活", }, };