refactor(skillText): 重构技能描述生成逻辑,支持英雄自定义技能名
1. 重构getFieldSkillName和getReviveSkillName函数,新增hero参数获取英雄自定义技能名 2. 为FieldEntry和LvReviveEntry新增name字段,支持配置英雄专属技能展示名 3. 更新buildHeroSkillDesc和resolveTriggerSkillName函数,使用新的名称获取逻辑 4. 为部分英雄配置添加专属技能名称,统一技能展示文本
This commit is contained in:
@@ -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 ?? "";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user