2 Commits

Author SHA1 Message Date
panFD
d9575599b3 refactor(config): 统一技能触发名称翻译并修正引用
将技能触发类型的中文命名从"进击/受击"改为更准确的"攻击/受伤",同时修正HeroSkillDesc.ts中对SkillTriggerDesc的错误引用,替换为正确的SkillTriggerName。
2026-07-31 00:48:42 +08:00
panFD
fbaaefea8f refactor(ui/skill): 优化技能描述显示与字段文案
1.  将技能触发类型Field的文案从"场上存活"改为"光环"
2.  为技能名称添加「」引号包裹增强可读性
3.  调整英雄头像面板的UI布局与文字样式
2026-07-31 00:46:51 +08:00
3 changed files with 246 additions and 247 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -23,12 +23,12 @@
* 字段结构一致天然都满足。HeroBoxComp 传 model 显示当前等级;卡池/商店传 heroInfo 显示 1 级。
*
* 依赖:
* - heroSet :SkillTriggerDesc、SkillTriggerType、HeroEvolve
* - heroSet :SkillTriggerName、SkillTriggerType、HeroEvolve
* - SkillSet :SkillSet、mergeSkillParams、SkillOverrides、SkillKind、TGroup
* - SkillDescSet:结构化描述模板
* - FieldSkillSet驻场技能、BuffList计时 buff 默认值兜底、Attrs属性枚举
*/
import { HeroEvolve, SkillTriggerDesc, SkillTriggerType } from "./heroSet";
import { HeroEvolve, SkillTriggerName, SkillTriggerType } from "./heroSet";
import { FieldSkillSet, mergeSkillParams, SkillConfig, SkillKind, SkillOverrides, SkillSet, TGroup } from "./SkillSet";
import { FieldDescSet, FieldValueFmt, SkillDescSet } from "./SkillDescSet";
import { BuffList } from "./BuffSet";
@@ -193,7 +193,7 @@ function buildFieldLine(head: string, uuid: number): ISkillLine | null {
if (!fs) return null;
const desc = FieldDescSet[fs.type];
// 未入表类型回退基础备注 info整行不高亮
if (!desc) return { prefix: `${head}${fs.name} ${fs.info}`, value: "", suffix: "" };
if (!desc) return { prefix: `${head}${fs.name} ${fs.info}`, value: "", suffix: "" };
// 数值按格式渲染为高亮片段
let valueText: string;
@@ -209,7 +209,7 @@ function buildFieldLine(head: string, uuid: number): ISkillLine | null {
valueText = `+${fs.value}`;
break;
}
return { prefix: `${head}${fs.name} ${desc.verb}`, value: valueText, suffix: "" };
return { prefix: `${head}${fs.name} ${desc.verb}`, value: valueText, suffix: "" };
}
/**
@@ -224,10 +224,10 @@ function buildReviveLine(source: ISkillDescSource): ISkillLine | null {
const lv = Math.max(1, source.lv ?? 1);
const maxCount = revive.r_num + Math.floor((lv - 1) * revive.upr);
const hpPct = base.ap ?? 0;
const tpl = SkillTriggerDesc[SkillTriggerType.Revive] ?? "复活";
const tpl = SkillTriggerName[SkillTriggerType.Revive] ?? "复活";
// 高亮片段选回血百分比(数值中最关键的收益指标)
return {
prefix: `${tpl}:${base.name} 可复活${maxCount}次,每次恢复`,
prefix: `${tpl}:${base.name} 可复活${maxCount}次,每次恢复`,
value: `${hpPct}%`,
suffix: "生命",
};
@@ -263,20 +263,23 @@ function buildSkillLines(source: ISkillDescSource): ISkillLine[] {
for (const key of TRIGGER_KEYS) {
const arr = source[key] as { s_uuid: number; t_num: number; overrides?: SkillOverrides }[] | undefined;
if (!arr?.length) continue;
const tpl = SkillTriggerDesc[key] ?? key;
// 触发类型简称(召唤/亡语/起手/生息/进击/受击)
const name = SkillTriggerName[key] ?? key;
// 仅进击/受击带触发次数,拼为"×n";其余简称直接用
const needCount = key === SkillTriggerType.Atking || key === SkillTriggerType.Atked;
for (const item of arr) {
const base = SkillSet[item.s_uuid];
if (!base) continue;
const skill = mergeSkillParams(base, item.overrides);
const trigger = tpl.replace("n", String(item.t_num));
lines.push(buildEffectLine(`${trigger}:${base.name} `, skill));
const trigger = needCount ? `${name}×${item.t_num}` : name;
lines.push(buildEffectLine(`${trigger}:${base.name} `, skill));
}
}
// ---- 驻场光环field查 FieldDescSet 结构化渲染value 数值高亮 ----
const fieldUuids = source[SkillTriggerType.Field] as number[] | undefined;
if (fieldUuids?.length) {
const tpl = SkillTriggerDesc[SkillTriggerType.Field] ?? "场上存活";
const tpl = SkillTriggerName[SkillTriggerType.Field] ?? "光环";
for (const uuid of fieldUuids) {
const line = buildFieldLine(`${tpl}:`, uuid);
if (line) lines.push(line);

View File

@@ -127,8 +127,8 @@ export const SkillTriggerName = {
[SkillTriggerType.FStart]: "起手",
[SkillTriggerType.FEnd]: "生息",
[SkillTriggerType.Field]: "光环",
[SkillTriggerType.Atking]: "击",
[SkillTriggerType.Atked]: "受",
[SkillTriggerType.Atking]: "击",
[SkillTriggerType.Atked]: "受",
[SkillTriggerType.Revive]: "复活",
}
@@ -137,7 +137,7 @@ export const SkillTriggerDesc = {
[SkillTriggerType.Dead]: "死亡时",
[SkillTriggerType.FStart]: "战斗开始时",
[SkillTriggerType.FEnd]: "战斗结束时",
[SkillTriggerType.Field]: "场上存活",
[SkillTriggerType.Field]: "光环",
[SkillTriggerType.Atking]: "攻击n次",
[SkillTriggerType.Atked]: "受击n次",
[SkillTriggerType.Revive]: "复活时",