Compare commits
2 Commits
bf697906ae
...
d9575599b3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9575599b3 | ||
|
|
fbaaefea8f |
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
|
||||
@@ -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]: "复活时",
|
||||
|
||||
Reference in New Issue
Block a user