From ac14b8563ccd977046ea93bedbf97f05758486aa Mon Sep 17 00:00:00 2001 From: panFD Date: Sat, 8 Aug 2026 23:27:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(hero):=20=E4=BC=98=E5=8C=96=E8=8B=B1?= =?UTF-8?q?=E9=9B=84=E8=AF=A6=E6=83=85=E9=A1=B5=E6=8A=80=E8=83=BD=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增带等级和升级预览的技能描述渲染函数 2. 为技能档位添加专属命名,支持按触发语境显示技能名 3. 给所有技能档位补充技能等级标注,优化面板展示 4. 新增200个游戏技能名称配置文件 --- .../game/common/config/HeroSkillDesc.ts | 96 ++++++- assets/script/game/common/config/heroSet.ts | 256 ++++++++++------- .../game/common/config/游戏技能名称200.md | 265 ++++++++++++++++++ assets/script/game/map/HeroMoreCom.ts | 7 +- 4 files changed, 522 insertions(+), 102 deletions(-) create mode 100644 assets/script/game/common/config/游戏技能名称200.md diff --git a/assets/script/game/common/config/HeroSkillDesc.ts b/assets/script/game/common/config/HeroSkillDesc.ts index 44e21ca7..420d45aa 100644 --- a/assets/script/game/common/config/HeroSkillDesc.ts +++ b/assets/script/game/common/config/HeroSkillDesc.ts @@ -28,7 +28,7 @@ * - SkillDescSet:结构化描述模板 * - FieldSkillSet(驻场技能)、BuffList(计时 buff 默认值兜底)、Attrs(属性枚举) */ -import { SkillTriggerName, SkillTriggerType, TriggerGrouped, LvTriggerEntry, LvFieldEntry, LvReviveEntry, LvBonusEntry, resolveTriggerByLv, resolveFieldByLv, resolveReviveByLv } from "./heroSet"; +import { SkillTriggerName, SkillTriggerType, TriggerGrouped, LvTriggerEntry, LvFieldEntry, LvReviveEntry, LvBonusEntry, resolveTriggerByLv, resolveFieldByLv, resolveReviveByLv, getTriggerSkillName } from "./heroSet"; import { FieldSkillSet, mergeSkillParams, SkillConfig, SkillKind, SkillOverrides, SkillSet, TGroup } from "./SkillSet"; import { FieldDescSet, FieldValueFmt, SkillDescSet } from "./SkillDescSet"; import { BuffList } from "./BuffSet"; @@ -347,7 +347,8 @@ function buildSkillLines(source: ISkillDescSource, showName: boolean = true, sho if (!base) continue; const skill = mergeSkillParams(base, item.overrides); const trigger = needCount ? `${name}×${item.t_num}` : name; - const nameSeg = showName ? `「${base.name}」 ` : ""; + // 触发语境专属名称(如 atked.6301=不屈壁垒),未配置回退通用名 + const nameSeg = showName ? `「${getTriggerSkillName(key, item.s_uuid)}」 ` : ""; lines.push(buildEffectLine(`${trigger}:${nameSeg}`, skill)); } continue; @@ -360,7 +361,7 @@ function buildSkillLines(source: ISkillDescSource, showName: boolean = true, sho const base = SkillSet[Number(sKey)]; if (!base) continue; const sorted = [...entries].sort((a, b) => a.lv - b.lv); - const nameSeg = showName ? `「${base.name}」 ` : ""; + const nameSeg = showName ? `「${getTriggerSkillName(key, Number(sKey))}」 ` : ""; const headOf = (e: LvTriggerEntry) => `Lv${e.lv}: ${needCount ? `${name}×${e.t_num}` : name} ${nameSeg}`; // 取当前等级生效档(≤lv 的最大档) @@ -504,6 +505,92 @@ export function buildEquipRich(fieldUuids: number[], showName: boolean = false): return lines.length > 0 ? lines.join("\n") : "无词条"; } +/** + * 英雄信息弹窗技能描述富文本(HeroMoreCom 用)。 + * + * 格式: + * 「技能名」 Lv.当前技能等级:当前档技能效果 + * 升级提示:Lv.当前 → Lv.下一级:下一级技能效果(金色,仅有更高档时出现) + * + * 数据源为运行时 HeroAttrsComp(lv 取当前英雄等级),逐触发类型逐技能渲染。 + * 技能等级取 LvTriggerEntry.s_lv,未标注时按档位序号(1/2/3...)兜底。 + * + * @param source 英雄运行时数据源(含 lv 与触发技能分组) + * @returns 多行富文本串,\n 分隔 + */ +export function buildSkillDescMoreRich(source: ISkillDescSource): string { + const lv = Math.max(1, source.lv ?? 1); + const lines: string[] = []; + + // 单条效果 → 富文本(技能名蓝色、数值绿色高亮、持续秒数高亮) + const effectRich = (line: ISkillLine): string => { + const prefix = line.prefix.replace(SKILL_NAME_PATTERN, `「$1」`); + const text = line.value + ? `${prefix}${line.value}${line.suffix}` + : `${prefix}${line.suffix}`; + return highlightDuration(text); + }; + + for (const key of TRIGGER_KEYS) { + const grouped = source[key] as TriggerGrouped | undefined; + if (!grouped) continue; + const trigName = SkillTriggerName[key] ?? key; + const needCount = key === SkillTriggerType.Atking || key === SkillTriggerType.Atked; + + for (const sKey in grouped) { + const entries = grouped[sKey]; + if (!entries?.length) continue; + const sUuid = Number(sKey); + const base = SkillSet[sUuid]; + if (!base) continue; + const sorted = [...entries].sort((a, b) => a.lv - b.lv); + // 技能名走触发语境专属命名(如 atked.6301=不屈壁垒) + const skillName = getTriggerSkillName(key, sUuid); + + // 当前生效档(≤lv 最大档),未激活则用最低档 + let activeIdx = -1; + for (let i = 0; i < sorted.length; i++) { + if (sorted[i].lv <= lv) activeIdx = i; + } + const curIdx = activeIdx >= 0 ? activeIdx : 0; + const cur = sorted[curIdx]; + const curSLv = cur.s_lv ?? (curIdx + 1); + const curTrig = needCount ? `${trigName}×${cur.t_num}` : trigName; + const curHead = `「${skillName}」 Lv.${curSLv}: ${curTrig},`; + lines.push(effectRich(buildEffectLine(curHead, mergeSkillParams(base, cur.overrides)))); + + // 升级提示:存在更高档时,金色预览下一档 + if (curIdx + 1 < sorted.length) { + const next = sorted[curIdx + 1]; + const nextSLv = next.s_lv ?? (curIdx + 2); + const nextTrig = needCount ? `${trigName}×${next.t_num}` : trigName; + const nextLine = buildEffectLine(`${nextTrig},`, mergeSkillParams(base, next.overrides)); + const nextText = `${nextLine.prefix}${nextLine.value}${nextLine.suffix}`; + lines.push(`升级 Lv.${curSLv}→Lv.${nextSLv}: ${nextText}`); + } + } + } + + // 驻场光环(field) + const fieldEntries = source[SkillTriggerType.Field] as LvFieldEntry[] | undefined; + if (fieldEntries?.length) { + const tpl = SkillTriggerName[SkillTriggerType.Field] ?? "光环"; + for (const uuid of resolveFieldByLv(fieldEntries, lv)) { + const line = buildFieldLine(`${tpl}: `, uuid, true); + if (line) lines.push(effectRich(line)); + } + } + + // 复活(revive) + const revive = resolveReviveByLv(source[SkillTriggerType.Revive] as LvReviveEntry[] | undefined, lv); + if (revive) { + const reviveName = getTriggerSkillName(SkillTriggerType.Revive, revive.s_uuid); + lines.push(`「${reviveName}」: 死亡后以${Math.round(revive.upr * 100)}%血量复活${revive.r_num}次`); + } + + return lines.join("\n"); +} + /** * 把"持续X秒"中的 X 也包裹绿色高亮(卡片描述后处理)。 * Why: 计时模板 {dur} 不在 \x01\x02 高亮标记内,renderLineRich 仅高亮主数值; @@ -513,6 +600,9 @@ function highlightDuration(text: string): string { return text.replace(DURATION_PATTERN, `持续$1秒`); } +/** 富文本升级提示色(金色,标识"升级后"的下一档预览,与未激活灰区分) */ +const RICH_UPGRADE_COLOR = "#E8A33D"; + /** * 结构化行 → 富文本串(技能名蓝色、数值绿色)。 * buildEquipRich / buildCardDescRich / buildSkillDescRich 共用,保证渲染规则唯一。 diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index c2d159de..45b5f785 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -145,6 +145,70 @@ export const SkillTriggerDesc = { [SkillTriggerType.Revive]: "复活时", } +/** + * 技能等级枚举(与英雄等级同标尺 1~5)。 + * 配置触发技能档位时填入,表达"英雄升到 lv 级 → 该技能提升到 s_lv 级"的成长节奏, + * 与 LvTriggerEntry.lv 并列展示,便于 UI 面板显示"技能Lv.x"。 + */ +export enum SkillLv { + Lv1 = 1, + Lv2 = 2, + Lv3 = 3, + Lv4 = 4, + Lv5 = 5, +} + +/** + * 触发技能标准命名表(按触发方式 → 技能ID 分组命名)。 + * 同一技能在不同触发语境下使用不同名称,贴合流派语义: + * atked=战士反击系 / atking=刺客·射手追击系 / dead=死亡遗产系 / fstart=法师战吼系 / revive=涅槃。 + * 命名参考主流 Roguelike/自走棋技能风格(盾墙、复仇、嗜血、战吼、遗志、凤凰涅槃等)。 + */ +export const TriggerSkillNameSet: Record> = { + [SkillTriggerType.Atked]: { + 6301: "不屈壁垒", // 受击获得护盾,越挨打越硬 + 6302: "嗜血反击", // 受击恢复生命 + 6401: "愈战愈勇", // 受击永久提升攻击 + 6402: "钢筋铁骨", // 受击永久提升生命 + 6403: "复仇之心", // 受击限时提升暴击 + 6404: "以牙还牙", // 受击限时提升暴伤 + 6405: "震慑反扑", // 受击限时提升击晕 + }, + [SkillTriggerType.Atking]: { + 6301: "攻守兼备", // 攻击为自己叠加护盾 + 6302: "治愈祷言", // 攻击治疗低血队友 + 6401: "嗜血连击", // 攻击永久提升攻击(滚雪球) + 6403: "致命节奏", // 攻击限时提升暴击 + 6404: "猎手直觉", // 攻击提升暴伤 + }, + [SkillTriggerType.Dead]: { + 6301: "守护遗志", // 死亡全队获得护盾 + 6401: "英魂永驻", // 死亡全队提升攻击 + 6402: "生命馈赠", // 死亡全队提升生命 + 6403: "致命遗产", // 死亡全队提升暴击 + 6404: "破灭遗产", // 死亡全队提升暴伤 + 6405: "震撼遗言", // 死亡全队提升击晕 + }, + [SkillTriggerType.FStart]: { + 6301: "圣光护盾", // 开局全队护盾 + 6401: "破晓战吼", // 开局全队攻击提升 + 6402: "活力祝福", // 开局全队生命提升 + }, + [SkillTriggerType.Revive]: { + 6501: "凤凰涅槃", // 死亡后原地复活 + }, +} + +/** + * 查询触发技能在指定触发语境下的标准名称。 + * @param type 触发类型(SkillTriggerType) + * @param s_uuid 技能ID + * @returns 语境专属名称;未配置时回退 SkillSet 通用名称 + */ +export function getTriggerSkillName(type: SkillTriggerType, s_uuid: number): string { + return TriggerSkillNameSet[type]?.[s_uuid] ?? SkillSet[s_uuid]?.name ?? ""; +} + /** * 英雄/怪物基础信息接口 */ @@ -191,9 +255,11 @@ export interface HSkillInfo { /** * 触发技能单档配置:达到 lv 级时此档参数生效(t_num/overrides 可随等级变化)。 + * s_lv 标注此档对应的技能等级(SkillLv 枚举),表达"英雄 lv 级 → 技能 s_lv 级"的成长节奏。 */ export interface LvTriggerEntry { lv: number; // 达到该英雄等级时解锁此档 + s_lv?: SkillLv; // 此档对应的技能等级(标注用,便于面板显示"技能Lv.x") t_num: number; overrides?: SkillOverrides; } @@ -253,9 +319,9 @@ export const HeroInfo: Record = { // 成长主线:护盾层数 4→5→6(等效减伤 57%→67%) atked: { 6301: [ - { lv: 1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 4 } }, - { lv: 2, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 5 } }, - { lv: 4, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 4 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 6 } }, ], }, hp_bonus: [{ lv: 3, value: 150 }, { lv: 5, value: 150 }], @@ -267,13 +333,13 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow3].cd, ccd: 0 } }, atked: { 6302: [ - { lv: 1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 250 } }, - { lv: 2, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 300 } }, - { lv: 4, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 350 } }, - { lv: 5, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 350 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 250 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 300 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 350 } }, + { lv: 5, s_lv: SkillLv.Lv4, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 350 } }, ], 6402: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Self, ap: 2 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Self, ap: 2 } }, ], }, hp_bonus: [{ lv: 3, value: 150 }], @@ -284,13 +350,13 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow3].cd, ccd: 0 } }, atked: { 6301: [ - { lv: 1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 3 } }, - { lv: 2, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 4 } }, - { lv: 4, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 5 } }, - { lv: 5, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 5 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 3 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 4 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 5 } }, + { lv: 5, s_lv: SkillLv.Lv4, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 5 } }, ], 6402: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Self, ap: 2 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Self, ap: 2 } }, ], }, hp_bonus: [{ lv: 3, value: 150 }], @@ -301,13 +367,13 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow1].cd, ccd: 0 } }, atked: { 6401: [ - { lv: 1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 1 } }, - { lv: 5, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 1 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 1 } }, + { lv: 5, s_lv: SkillLv.Lv2, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 1 } }, ], 6403: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, - { lv: 2, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, - { lv: 4, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, ], }, hp_bonus: [{ lv: 3, value: 150 }], @@ -318,15 +384,15 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow3].cd, ccd: 0 } }, atked: { 6301: [ - { lv: 1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 3 } }, - { lv: 2, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 4 } }, - { lv: 4, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 5 } }, - { lv: 5, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 5 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 3 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 4 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 5 } }, + { lv: 5, s_lv: SkillLv.Lv4, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 5 } }, ], 6404: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7020, buff_value: 5, buff_duration: 5 } }, - { lv: 2, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7020, buff_value: 7, buff_duration: 5 } }, - { lv: 4, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7020, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7020, buff_value: 5, buff_duration: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7020, buff_value: 7, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7020, buff_value: 10, buff_duration: 6 } }, ], }, hp_bonus: [{ lv: 3, value: 200 }], @@ -337,13 +403,13 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow3].cd, ccd: 0 } }, atked: { 6401: [ - { lv: 1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 1 } }, - { lv: 5, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 1 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 3, overrides: { TGroup: TGroup.Self, ap: 1 } }, + { lv: 5, s_lv: SkillLv.Lv2, t_num: 2, overrides: { TGroup: TGroup.Self, ap: 1 } }, ], 6405: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7017, buff_value: 5, buff_duration: 5 } }, - { lv: 2, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7017, buff_value: 7, buff_duration: 5 } }, - { lv: 4, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7017, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7017, buff_value: 5, buff_duration: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7017, buff_value: 7, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7017, buff_value: 10, buff_duration: 6 } }, ], }, ap_bonus: [{ lv: 3, value: 20 }], @@ -385,8 +451,8 @@ export const HeroInfo: Record = { // 成长主线:滚雪球(AP增量固定1,5级阈值5→4刀) atking: { 6401: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Self, ap: 1 } }, - { lv: 5, t_num: 4, overrides: { TGroup: TGroup.Self, ap: 1 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Self, ap: 1 } }, + { lv: 5, s_lv: SkillLv.Lv2, t_num: 4, overrides: { TGroup: TGroup.Self, ap: 1 } }, ], }, ap_bonus: [{ lv: 3, value: 20 }], @@ -398,13 +464,13 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Fast2].cd, ccd: 0 } }, atking: { 6403: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Self, hit_count: 1, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, - { lv: 2, t_num: 5, overrides: { TGroup: TGroup.Self, hit_count: 1, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, - { lv: 4, t_num: 5, overrides: { TGroup: TGroup.Self, hit_count: 1, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, - { lv: 5, t_num: 4, overrides: { TGroup: TGroup.Self, hit_count: 1, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Self, hit_count: 1, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 5, overrides: { TGroup: TGroup.Self, hit_count: 1, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 5, overrides: { TGroup: TGroup.Self, hit_count: 1, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, + { lv: 5, s_lv: SkillLv.Lv4, t_num: 4, overrides: { TGroup: TGroup.Self, hit_count: 1, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, ], 6401: [ - { lv: 1, t_num: 7, overrides: { TGroup: TGroup.Self, ap: 1 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 7, overrides: { TGroup: TGroup.Self, ap: 1 } }, ], }, ap_bonus: [{ lv: 3, value: 20 }], @@ -416,13 +482,13 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Fast1].cd, ccd: 0 } }, atking: { 6401: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Self, ap: 1 } }, - { lv: 5, t_num: 4, overrides: { TGroup: TGroup.Self, ap: 1 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Self, ap: 1 } }, + { lv: 5, s_lv: SkillLv.Lv2, t_num: 4, overrides: { TGroup: TGroup.Self, ap: 1 } }, ], 6403: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, - { lv: 2, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, - { lv: 4, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 5, overrides: { TGroup: TGroup.Self, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, ], }, hp_bonus: [{ lv: 3, value: 100 }], @@ -454,8 +520,8 @@ export const HeroInfo: Record = { // 成长主线:AP增益固定1,5级 hit_count 1→2(2英雄环境=全队) atking: { 6401: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 1, ap: 1 } }, - { lv: 5, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 2, ap: 1 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 1, ap: 1 } }, + { lv: 5, s_lv: SkillLv.Lv2, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 2, ap: 1 } }, ], }, hp_bonus: [{ lv: 3, value: 60 }], @@ -466,14 +532,14 @@ export const HeroInfo: Record = { skills: { 6008: { uuid: 6008, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal1].cd, ccd: 0 } }, atking: { 6403: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 3, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, - { lv: 2, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 3, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, - { lv: 4, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 4, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, - { lv: 5, t_num: 4, overrides: { TGroup: TGroup.Team, hit_count: 4, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 3, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 3, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 4, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, + { lv: 5, s_lv: SkillLv.Lv4, t_num: 4, overrides: { TGroup: TGroup.Team, hit_count: 4, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, ], 6401: [ - { lv: 1, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 3, ap: 1 } }, - { lv: 4, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 4, ap: 1 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 3, ap: 1 } }, + { lv: 4, s_lv: SkillLv.Lv2, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 4, ap: 1 } }, ], }, hp_bonus: [{ lv: 3, value: 80 }], @@ -490,14 +556,14 @@ export const HeroInfo: Record = { skills: { 6008: { uuid: 6008, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Fast3].cd, ccd: 0 } }, atking: { 6401: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 3, ap: 1 } }, - { lv: 4, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 4, ap: 1 } }, - { lv: 5, t_num: 4, overrides: { TGroup: TGroup.Team, hit_count: 4, ap: 1 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 3, ap: 1 } }, + { lv: 4, s_lv: SkillLv.Lv2, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 4, ap: 1 } }, + { lv: 5, s_lv: SkillLv.Lv3, t_num: 4, overrides: { TGroup: TGroup.Team, hit_count: 4, ap: 1 } }, ], 6404: [ - { lv: 1, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 3, timed_buff_id: 7020, buff_value: 5, buff_duration: 5 } }, - { lv: 2, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 3, timed_buff_id: 7020, buff_value: 7, buff_duration: 5 } }, - { lv: 4, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 4, timed_buff_id: 7020, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 3, timed_buff_id: 7020, buff_value: 5, buff_duration: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 3, timed_buff_id: 7020, buff_value: 7, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 7, overrides: { TGroup: TGroup.Team, hit_count: 4, timed_buff_id: 7020, buff_value: 10, buff_duration: 6 } }, ], }, hp_bonus: [{ lv: 3, value: 100 }], @@ -561,10 +627,10 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow3].cd, ccd: 0 } }, dead: { 6301: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 3 } }, - { lv: 2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 4 } }, - { lv: 4, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, - { lv: 5, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 3 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 4 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, + { lv: 5, s_lv: SkillLv.Lv4, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 6 } }, ], }, hp_bonus: [{ lv: 3, value: 100 }], @@ -575,12 +641,12 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow3].cd, ccd: 0 } }, dead: { 6401: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, ], 6402: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 10 } }, - { lv: 2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 12 } }, - { lv: 4, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 15 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 10 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 12 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 15 } }, ], }, revive: [ @@ -595,14 +661,14 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal1].cd, ccd: 0 } }, dead: { 6405: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7017, buff_value: 5, buff_duration: 5 } }, - { lv: 2, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7017, buff_value: 7, buff_duration: 5 } }, - { lv: 4, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7017, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7017, buff_value: 5, buff_duration: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7017, buff_value: 7, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7017, buff_value: 10, buff_duration: 6 } }, ], 6403: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, - { lv: 4, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 7, buff_duration: 6 } }, - { lv: 5, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 7, buff_duration: 6 } }, + { lv: 5, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, ], }, hp_bonus: [{ lv: 3, value: 100 }], @@ -613,14 +679,14 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Fast3].cd, ccd: 0 } }, dead: { 6403: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, - { lv: 2, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, - { lv: 4, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 5, buff_duration: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 7, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7012, buff_value: 10, buff_duration: 6 } }, ], 6404: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7020, buff_value: 5, buff_duration: 5 } }, - { lv: 4, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7020, buff_value: 7, buff_duration: 6 } }, - { lv: 5, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7020, buff_value: 10, buff_duration: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7020, buff_value: 5, buff_duration: 5 } }, + { lv: 4, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7020, buff_value: 7, buff_duration: 6 } }, + { lv: 5, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7020, buff_value: 10, buff_duration: 6 } }, ], }, hp_bonus: [{ lv: 3, value: 150 }], @@ -636,15 +702,15 @@ export const HeroInfo: Record = { // 死亡释放:5 层护盾 + 全队 +10 HP;复活 1 次血量 50% dead: { 6301: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, - { lv: 2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 6 } }, - { lv: 4, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 7 } }, - { lv: 5, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 8 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 6 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 7 } }, + { lv: 5, s_lv: SkillLv.Lv4, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 8 } }, ], 6402: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 10 } }, - { lv: 2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 12 } }, - { lv: 4, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 15 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 10 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 12 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 15 } }, ], }, revive: [ @@ -662,9 +728,9 @@ export const HeroInfo: Record = { // 统一复用 7111 基础配置,通过 buff_value/buff_duration 覆写实现三档成长 fstart: { 6401: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111 } }, - { lv: 3, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111, buff_value: 60, buff_duration: 7 } }, - { lv: 5, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111, buff_value: 90, buff_duration: 10 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111 } }, + { lv: 3, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111, buff_value: 60, buff_duration: 7 } }, + { lv: 5, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111, buff_value: 90, buff_duration: 10 } }, ], }, hp_bonus: [{ lv: 2, value: 80 }, { lv: 4, value: 80 }], @@ -675,13 +741,13 @@ export const HeroInfo: Record = { skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow1].cd, ccd: 0 } }, fstart: { 6301: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 3 } }, - { lv: 2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 4 } }, - { lv: 4, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, - { lv: 5, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 6 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 3 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 4 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 5 } }, + { lv: 5, s_lv: SkillLv.Lv4, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 6 } }, ], 6402: [ - { lv: 1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 2 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 2 } }, ], }, hp_bonus: [{ lv: 3, value: 80 }], @@ -751,10 +817,10 @@ export const HeroInfo: Record = { // 成长主线:治疗量 200→250→300%,5级 hit_count 1→2(全队) atking: { 6302: [ - { lv: 1, t_num: 5, overrides: { TGroup: TGroup.Team, ap: 200 } }, - { lv: 2, t_num: 5, overrides: { TGroup: TGroup.Team, ap: 250 } }, - { lv: 4, t_num: 5, overrides: { TGroup: TGroup.Team, ap: 300 } }, - { lv: 5, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 2, ap: 300 } }, + { lv: 1, s_lv: SkillLv.Lv1, t_num: 5, overrides: { TGroup: TGroup.Team, ap: 200 } }, + { lv: 2, s_lv: SkillLv.Lv2, t_num: 5, overrides: { TGroup: TGroup.Team, ap: 250 } }, + { lv: 4, s_lv: SkillLv.Lv3, t_num: 5, overrides: { TGroup: TGroup.Team, ap: 300 } }, + { lv: 5, s_lv: SkillLv.Lv4, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 2, ap: 300 } }, ], }, hp_bonus: [{ lv: 3, value: 80 }], diff --git a/assets/script/game/common/config/游戏技能名称200.md b/assets/script/game/common/config/游戏技能名称200.md new file mode 100644 index 00000000..dc519e8e --- /dev/null +++ b/assets/script/game/common/config/游戏技能名称200.md @@ -0,0 +1,265 @@ +# 200个不重复的游戏角色技能名称 + +> 按来源游戏分组排列,共涵盖9款知名游戏。所有技能名称均来自真实游戏,经网络搜索核实。 + +--- + +## 一、原神(20个) + +1. 神变·恶曜开眼 —— 原神(雷电将军·元素战技) +2. 奥义·梦想真说 —— 原神(雷电将军·元素爆发) +3. 梦想一心 —— 原神(雷电将军·元素爆发效果状态) +4. 诸愿百眼之轮 —— 原神(雷电将军·天赋) +5. 雷罚恶曜之眼 —— 原神(雷电将军·元素战技效果) +6. 千早振 —— 原神(枫原万叶·元素战技) +7. 乱岚拨止 —— 原神(枫原万叶·下落攻击) +8. 万叶之一刀 —— 原神(枫原万叶·元素爆发) +9. 风物之诗咏 —— 原神(枫原万叶·天赋) +10. 山泽麟迹 —— 原神(甘雨·元素战技) +11. 猫爪冻冻 —— 原神(迪奥娜·元素战技) +12. 灵刃·重华叠霜 —— 原神(重云·元素战技) +13. 风涡剑 —— 原神(旅行者·风元素战技) +14. 圣仪·苍鹭庇卫 —— 原神(坎蒂丝·元素战技) +15. 萦络纵命索 —— 原神(夜兰·元素战技) +16. 恶曜卜词 —— 原神(雷电将军·命之座第一层) +17. 斩铁断金 —— 原神(雷电将军·命之座第二层) +18. 凶将显形 —— 原神(雷电将军·命之座第五层) +19. 誓奉常道 —— 原神(雷电将军·命之座第四层) +20. 负愿前行 —— 原神(雷电将军·命之座第六层) + +--- + +## 二、英雄联盟(20个) + +21. 大荒星陨 —— 英雄联盟(潘森·R技能) +22. 诺克萨斯断头台 —— 英雄联盟(德莱厄斯·R技能) +23. 海克斯最后通牒 —— 英雄联盟(卡蜜尔·R技能) +24. 狂风绝息斩 —— 英雄联盟(亚索·R技能) +25. 死亡莲花 —— 英雄联盟(卡特琳娜·R技能) +26. 贪婪 —— 英雄联盟(卡特琳娜·被动技能) +27. 弹射利刃 —— 英雄联盟(卡特琳娜·Q技能) +28. 备战 —— 英雄联盟(卡特琳娜·W技能) +29. 瞬步 —— 英雄联盟(卡特琳娜·E技能) +30. 绞喉 —— 英雄联盟(德莱厄斯·被动技能) +31. 毁灭风暴 —— 英雄联盟(德莱厄斯·Q技能) +32. 残废打击 —— 英雄联盟(德莱厄斯·W技能) +33. 索魂夺命 —— 英雄联盟(德莱厄斯·E技能) +34. 坚韧 —— 英雄联盟(盖伦·被动技能) +35. 致命打击 —— 英雄联盟(盖伦·Q技能) +36. 勇气 —— 英雄联盟(盖伦·W技能) +37. 审判 —— 英雄联盟(盖伦·E技能) +38. 德玛西亚正义 —— 英雄联盟(盖伦·R技能) +39. 魅惑妖术 —— 英雄联盟(阿狸·E技能) +40. 灵魄突袭 —— 英雄联盟(阿狸·R技能) + +--- + +## 三、王者荣耀(15个) + +41. 青莲剑歌 —— 王者荣耀(李白·三技能) +42. 将进酒 —— 王者荣耀(李白·一技能) +43. 神来之笔 —— 王者荣耀(李白·二技能) +44. 王者审判 —— 王者荣耀(嬴政·被动技能) +45. 王者惩戒 —— 王者荣耀(嬴政·一技能) +46. 王者守御 —— 王者荣耀(嬴政·二技能) +47. 至尊王权 —— 王者荣耀(嬴政·三技能) +48. 魔神降世 —— 王者荣耀(吕布·三技能) +49. 一骑当千 —— 王者荣耀(关羽·三技能) +50. 圣剑裁决 —— 王者荣耀(亚瑟·三技能) +51. 落·红雨 —— 王者荣耀(貂蝉·一技能) +52. 绽·风华 —— 王者荣耀(貂蝉·三技能) +53. 凋零冰晶 —— 王者荣耀(王昭君·一技能) +54. 国士无双 —— 王者荣耀(韩信·三技能) +55. 背水一战 —— 王者荣耀(韩信·二技能) + +--- + +## 四、魔兽世界(25个) + +56. 灼烧 —— 魔兽世界(法师) +57. 火焰冲击 —— 魔兽世界(法师) +58. 龙息术 —— 魔兽世界(法师) +59. 寒冰护体 —— 魔兽世界(法师) +60. 冲击波 —— 魔兽世界(法师) +61. 炎爆术 —— 魔兽世界(法师) +62. 火球术 —— 魔兽世界(法师) +63. 寒冰箭 —— 魔兽世界(法师) +64. 奥术飞弹 —— 魔兽世界(法师) +65. 奥术弹幕 —— 魔兽世界(法师) +66. 活动炸弹 —— 魔兽世界(法师) +67. 法术偷取 —— 魔兽世界(法师) +68. 影袭 —— 魔兽世界(盗贼) +69. 锁喉 —— 魔兽世界(盗贼) +70. 毁伤 —— 魔兽世界(盗贼) +71. 背刺 —— 魔兽世界(盗贼) +72. 割裂 —— 魔兽世界(盗贼) +73. 暗影斗篷 —— 魔兽世界(盗贼) +74. 刺骨 —— 魔兽世界(盗贼) +75. 闷棍 —— 魔兽世界(盗贼) +76. 圣光术 —— 魔兽世界(圣骑士) +77. 圣疗术 —— 魔兽世界(圣骑士) +78. 圣光道标 —— 魔兽世界(圣骑士) +79. 十字军打击 —— 魔兽世界(圣骑士) +80. 奉献 —— 魔兽世界(圣骑士) + +--- + +## 五、Dota2(30个) + +81. 洪流 —— Dota2(海军上将·昆卡) +82. 潮汐使者 —— Dota2(海军上将·昆卡) +83. 地图地标 —— Dota2(海军上将·昆卡) +84. 幽灵船 —— Dota2(海军上将·昆卡) +85. 野性之斧 —— Dota2(兽王) +86. 野性呼唤 —— Dota2(兽王) +87. 原始咆哮 —— Dota2(兽王) +88. 马蹄践踏 —— Dota2(半人马战行者) +89. 双刃剑 —— Dota2(半人马战行者) +90. 反击 —— Dota2(半人马战行者) +91. 奔袭冲撞 —— Dota2(半人马战行者) +92. 沟壑 —— Dota2(撼地者) +93. 余震 —— Dota2(撼地者) +94. 强化图腾 —— Dota2(撼地者) +95. 回音击 —— Dota2(撼地者) +96. 洗礼 —— Dota2(全能骑士) +97. 驱逐 —— Dota2(全能骑士) +98. 退化光环 —— Dota2(全能骑士) +99. 守护天使 —— Dota2(全能骑士) +100. 雷霆一击 —— Dota2(酒仙) +101. 醉拳 —— Dota2(酒仙) +102. 元素分离 —— Dota2(酒仙) +103. 巨力挥舞 —— Dota2(斯温) +104. 战吼 —— Dota2(斯温) +105. 神之力量 —— Dota2(斯温) +106. 黑洞 —— Dota2(谜团) +107. 午夜凋零 —— Dota2(谜团) +108. 死亡一指 —— Dota2(恶魔巫师·莱恩) +109. 妖术 —— Dota2(恶魔巫师·莱恩) +110. 技能窃取 —— Dota2(大魔导师·拉比克) + +--- + +## 六、艾尔登法环(30个) + +111. 狮子斩 —— 艾尔登法环(战技) +112. 贯穿 —— 艾尔登法环(战技) +113. 突刺 —— 艾尔登法环(战技) +114. 回旋斩 —— 艾尔登法环(战技) +115. 鲜血征收 —— 艾尔登法环(战技) +116. 居合 —— 艾尔登法环(战技) +117. 准备架式 —— 艾尔登法环(战技) +118. 罗蕾塔的斩击 —— 艾尔登法环(战技) +119. 剑舞 —— 艾尔登法环(战技) +120. 辉剑圆阵 —— 艾尔登法环(战技) +121. 神圣刀刃 —— 艾尔登法环(战技) +122. 冰枪 —— 艾尔登法环(战技) +123. 鲜血斩击 —— 艾尔登法环(战技) +124. 夺命拳 —— 艾尔登法环(战技) +125. 重力 —— 艾尔登法环(战技) +126. 风暴刃 —— 艾尔登法环(战技) +127. 撼地 —— 艾尔登法环(战技) +128. 伟哉卡利亚 —— 艾尔登法环(战技) +129. 卡利亚大剑 —— 艾尔登法环(战技) +130. 黑焰漩涡 —— 艾尔登法环(战技) +131. 血刃 —— 艾尔登法环(战技) +132. 幻影枪 —— 艾尔登法环(战技) +133. 寒气冻雾 —— 艾尔登法环(战技) +134. 毒雾 —— 艾尔登法环(战技) +135. 铁壁盾防 —— 艾尔登法环(战技) +136. 卡利亚式奉还 —— 艾尔登法环(战技) +137. 黄金格挡 —— 艾尔登法环(战技) +138. 冻霜踏地 —— 艾尔登法环(战技) +139. 黄金树立誓 —— 艾尔登法环(战技) +140. 水鸟乱舞 —— 艾尔登法环(战技) + +--- + +## 七、明日方舟(25个) + +141. 真银斩 —— 明日方舟(银灰·三技能) +142. 天马视域 —— 明日方舟(白金·三技能) +143. 雪境生存法则 —— 明日方舟(银灰·二技能) +144. 红桃K —— 明日方舟(W·一技能) +145. 惊吓盒子 —— 明日方舟(W·二技能) +146. D12 —— 明日方舟(W·三技能) +147. 炮管敲击 —— 明日方舟(温蒂·一技能) +148. 水炮模式 —— 明日方舟(温蒂·二技能) +149. 液氮大炮 —— 明日方舟(温蒂·三技能) +150. 闭膛连发 —— 明日方舟(风笛·一技能) +151. 高效冲击 —— 明日方舟(风笛·二技能) +152. 铁御 —— 明日方舟(年·一技能) +153. 铜印 —— 明日方舟(年·二技能) +154. 锡灼 —— 明日方舟(年·三技能) +155. 链锯延伸模块 —— 明日方舟(煌·二技能) +156. 沸腾爆裂 —— 明日方舟(煌·三技能) +157. 荒时之锁 —— 明日方舟(莫斯提马·二技能) +158. 序时之匙 —— 明日方舟(莫斯提马·三技能) +159. 满月 —— 明日方舟(赫拉格·三技能) +160. 弦月 —— 明日方舟(赫拉格·二技能) +161. 暮眼锐瞳 —— 明日方舟(黑·三技能) +162. 战术的终结 —— 明日方舟(黑·二技能) +163. 涌潮悲歌 —— 明日方舟(斯卡蒂·三技能) +164. 钙质化 —— 明日方舟(塞雷娅·三技能) +165. 急救 —— 明日方舟(塞雷娅·一技能) + +--- + +## 八、塞尔达传说(15个) + +166. 林克时间 —— 塞尔达传说:旷野之息(完美闪避·子弹时间) +167. 米法恩典 —— 塞尔达传说:旷野之息(英杰米法·能力) +168. 力巴尔的勇猛 —— 塞尔达传说:旷野之息(英杰力巴尔·能力) +169. 达尔克尔的守护 —— 塞尔达传说:旷野之息(英杰达尔克尔·能力) +170. 乌尔波扎的愤怒 —— 塞尔达传说:旷野之息(英杰乌尔波扎·能力) +171. 遥控炸弹 —— 塞尔达传说:旷野之息(希卡石板·能力) +172. 静止器 —— 塞尔达传说:旷野之息(希卡石板·能力) +173. 制冰器 —— 塞尔达传说:旷野之息(希卡石板·能力) +174. 磁力抓取器 —— 塞尔达传说:旷野之息(希卡石板·能力) +175. 照相机 —— 塞尔达传说:旷野之息(希卡石板·能力) +176. 通天术 —— 塞尔达传说:王国之泪(林克·能力) +177. 倒转乾坤 —— 塞尔达传说:王国之泪(林克·能力) +178. 余料建造 —— 塞尔达传说:王国之泪(林克·能力) +179. 超级手 —— 塞尔达传说:王国之泪(林克·能力) +180. 蓄力旋转斩 —— 塞尔达传说系列(林克·剑技) + +--- + +## 九、暗黑破坏神(20个) + +181. 劲风煞 —— 暗黑破坏神3(武僧·武技) +182. 飓风破 —— 暗黑破坏神3(武僧·武技) +183. 金钟破 —— 暗黑破坏神3(武僧·武技) +184. 七星闪 —— 暗黑破坏神3(武僧·武技) +185. 爆裂掌 —— 暗黑破坏神3(武僧·武技) +186. 瞬影打 —— 暗黑破坏神3(武僧·武技) +187. 先祖之锤 —— 暗黑破坏神3(野蛮人·技能) +188. 狂暴冲撞 —— 暗黑破坏神3(野蛮人·技能) +189. 跳跃攻击 —— 暗黑破坏神3(野蛮人·技能) +190. 魔法武器 —— 暗黑破坏神3(法师·技能) +191. 钻石皮肤 —— 暗黑破坏神3(法师·技能) +192. 冰霜射线 —— 暗黑破坏神3(法师·技能) +193. 能量旋风 —— 暗黑破坏神3(法师·技能) +194. 刺穿 —— 暗黑破坏神3(猎魔人·技能) +195. 集束箭 —— 暗黑破坏神3(猎魔人·技能) +196. 复仇 —— 暗黑破坏神3(猎魔人·技能) +197. 烟雾弥漫 —— 暗黑破坏神3(猎魔人·技能) +198. 蝙蝠飞腾 —— 暗黑破坏神3(巫医·技能) +199. 亡者之墙 —— 暗黑破坏神3(巫医·技能) +200. 灵魂漫步 —— 暗黑破坏神3(巫医·技能) + +--- + +## 统计 + +| 游戏名称 | 技能数量 | +|---------|---------| +| 原神 | 20 | +| 英雄联盟 | 20 | +| 王者荣耀 | 15 | +| 魔兽世界 | 25 | +| Dota2 | 30 | +| 艾尔登法环 | 30 | +| 明日方舟 | 25 | +| 塞尔达传说 | 15 | +| 暗黑破坏神 | 20 | +| **合计** | **200** | diff --git a/assets/script/game/map/HeroMoreCom.ts b/assets/script/game/map/HeroMoreCom.ts index 9562625c..62214193 100644 --- a/assets/script/game/map/HeroMoreCom.ts +++ b/assets/script/game/map/HeroMoreCom.ts @@ -17,7 +17,7 @@ import { _decorator, Component, Label, NodeEventType, RichText } from "cc"; import { oops } from "db://oops-framework/core/Oops"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { HeroAttrsComp } from "../hero/HeroAttrsComp"; -import { buildSkillDescRich } from "../common/config/HeroSkillDesc"; +import { buildSkillDescMoreRich } from "../common/config/HeroSkillDesc"; const { ccclass, property } = _decorator; @@ -190,11 +190,10 @@ export class HeroMoreCom extends Component { const finalWfuny = this.model.getFinalWindFury(); this.setStatRow(this.wfuny_all_label, this.wfuny_plus_label, finalWfuny, finalWfuny - (this.model.wfuny ?? 0), "%"); - // ---- 技能描述(全档位合并:每技能一行,已/未激活状态 + 数值富文本高亮) ---- + // ---- 技能描述(技能名+技能等级 Lv.x,附升级提示 Lv.x→Lv.y 金色预览) ---- if (this.skill_label && this.skill_label.isValid) { // 缓存未变则跳过重设,避免降频内 RichText 重复重解析排版 - // showName=false 不显示技能名仅保留效果;showLocked=true 合并全档位 - const desc = buildSkillDescRich(this.model, false, true); + const desc = buildSkillDescMoreRich(this.model); if (desc !== this.skillDescCache) { this.skillDescCache = desc; this.skill_label.string = desc;