refactor(skillText): 重构技能描述生成逻辑,支持英雄自定义技能名

1. 重构getFieldSkillName和getReviveSkillName函数,新增hero参数获取英雄自定义技能名
2. 为FieldEntry和LvReviveEntry新增name字段,支持配置英雄专属技能展示名
3. 更新buildHeroSkillDesc和resolveTriggerSkillName函数,使用新的名称获取逻辑
4. 为部分英雄配置添加专属技能名称,统一技能展示文本
This commit is contained in:
pan
2026-08-28 17:07:20 +08:00
parent b34fbcf78c
commit d704f3201d
2 changed files with 36 additions and 21 deletions

View File

@@ -216,7 +216,7 @@ export function buildHeroSkillDesc(heroUuid: number, showName: boolean = true, s
const val = desc.fmt === FieldValueFmt.Percent
? `+${Math.round(entry.value * 100)}%`
: desc.fmt === FieldValueFmt.IntMinus ? `-${entry.value}` : `+${entry.value}`;
lines.push(`${nameSeg(getFieldSkillName(entry.uuid))}${desc.verb}${valueRich(val)}`);
lines.push(`${nameSeg(getFieldSkillName(hero, entry.uuid))}${desc.verb}${valueRich(val)}`);
}
// ---- 复活(revive):次数复刻战斗公式 r_num + floor((lv-1)*upr) ----
@@ -224,7 +224,7 @@ export function buildHeroSkillDesc(heroUuid: number, showName: boolean = true, s
if (revive) {
const count = revive.r_num + Math.floor((lv - 1) * revive.upr);
const hpPct = SkillSet[revive.s_uuid]?.ap ?? 0;
lines.push(`${nameSeg(getReviveSkillName())}每回合可复活${valueRich(count)}次, 死亡后以${valueRich(`${Math.round(hpPct)}%`)}生命原地重生`);
lines.push(`${nameSeg(getReviveSkillName(hero, revive.s_uuid))}每回合可复活${valueRich(count)}次, 死亡后以${valueRich(`${Math.round(hpPct)}%`)}生命原地重生`);
}
return lines.join("\n");
@@ -548,13 +548,13 @@ function resolveTriggerSkillName(hero: heroInfo, skillUuid: number): string {
const grouped = hero[type] as TriggerGrouped | undefined;
if (grouped?.[skillUuid]?.length) return getGroupedTriggerName(grouped, skillUuid);
}
// 驻场光环:词条名取 FieldSkillSet
// 驻场光环:词条名取英雄语境(FieldEntry.name 优先,回退 FieldSkillSet 底座名)
if (hero.field?.some(e => e.uuids.some(u => u.uuid === skillUuid))) {
return getFieldSkillName(skillUuid);
return getFieldSkillName(hero, skillUuid);
}
// 复活技能:统一复活称谓
// 复活技能:名称取英雄语境(LvReviveEntry.name 优先,回退固定称谓)
if (hero.revive?.some(e => e.s_uuid === skillUuid)) {
return getReviveSkillName();
return getReviveSkillName(hero, skillUuid);
}
return SkillSet[skillUuid]?.name ?? "";
}