From 4f8a955506c14e8219dc3b6bc16dce25ea95b18e Mon Sep 17 00:00:00 2001 From: panw Date: Fri, 15 May 2026 15:44:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E5=A4=9A?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E9=85=8D=E7=BD=AE=E4=B8=8E=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增LangUtil工具类实现统一的多语言映射与参数替换 2. 移除各配置文件中的硬编码多语言包装类,替换为直接中文文本 3. 更新zh.json补充成就相关多语言词条 4. 重构HighlightSet适配新的多语言调用规范 --- assets/resources/language/json/zh.json | 93 ++++++++++- assets/script/game/common/LangUtil.ts | 95 +++++++++++ .../script/game/common/config/HighlightSet.ts | 151 +++++++++--------- assets/script/game/common/config/SkillSet.ts | 143 +++++++---------- assets/script/game/common/config/heroSet.ts | 112 ++++++------- 5 files changed, 368 insertions(+), 226 deletions(-) create mode 100644 assets/script/game/common/LangUtil.ts diff --git a/assets/resources/language/json/zh.json b/assets/resources/language/json/zh.json index c0b76ba1..cc859c54 100644 --- a/assets/resources/language/json/zh.json +++ b/assets/resources/language/json/zh.json @@ -227,5 +227,96 @@ "hl_title_ThriftyPlayer_3": "节俭玩家", "hl_title_ThriftyPlayer_4": "一毛不拔", "hl_title_ThriftyPlayer_5": "理财大师", - "hl_desc_ThriftyPlayer": "金币使用率{0}%" + "hl_desc_ThriftyPlayer": "金币使用率{0}%", + + "hl_title_9011": "初级暴击者", + "hl_desc_9011": "暴击{0}次", + "hl_title_9012": "暴击大师", + "hl_desc_9012": "暴击{0}次", + "hl_title_9013": "致命猎手", + "hl_desc_9013": "暴击{0}次", + "hl_title_9014": "无情处决", + "hl_desc_9014": "暴击{0}次", + "hl_title_9015": "刀刀烈火", + "hl_desc_9015": "暴击{0}次", + + "hl_title_9021": "不怕死", + "hl_desc_9021": "死亡触发{0}次", + "hl_title_9022": "送死达人", + "hl_desc_9022": "死亡触发{0}次", + "hl_title_9023": "亡灵舞者", + "hl_desc_9023": "死亡触发{0}次", + "hl_title_9024": "向死而生", + "hl_desc_9024": "死亡触发{0}次", + "hl_title_9025": "不死灾厄", + "hl_desc_9025": "死亡触发{0}次", + + "hl_title_9031": "坚固盾牌", + "hl_desc_9031": "格挡{0}次", + "hl_title_9032": "铁壁铜墙", + "hl_desc_9032": "格挡{0}次", + "hl_title_9033": "叹息之墙", + "hl_desc_9033": "格挡{0}次", + "hl_title_9034": "不破之阵", + "hl_desc_9034": "格挡{0}次", + "hl_title_9035": "绝对防御", + "hl_desc_9035": "格挡{0}次", + + "hl_title_9041": "迅捷之风", + "hl_desc_9041": "风怒{0}次", + "hl_title_9042": "风暴之王", + "hl_desc_9042": "风怒{0}次", + "hl_title_9043": "狂风骤雨", + "hl_desc_9043": "风怒{0}次", + "hl_title_9044": "无影之手", + "hl_desc_9044": "风怒{0}次", + "hl_title_9045": "神速幻影", + "hl_desc_9045": "风怒{0}次", + + "hl_title_9051": "重击", + "hl_desc_9051": "单次伤害{0}", + "hl_title_9052": "一击必杀", + "hl_desc_9052": "单次伤害{0}", + "hl_title_9053": "毁天灭地", + "hl_desc_9053": "单次伤害{0}", + "hl_title_9054": "核弹打击", + "hl_desc_9054": "单次伤害{0}", + "hl_title_9055": "弑神一击", + "hl_desc_9055": "单次伤害{0}", + + "hl_title_9061": "急救员", + "hl_desc_9061": "治疗总量{0}", + "hl_title_9062": "治愈之光", + "hl_desc_9062": "治疗总量{0}", + "hl_title_9063": "生命之泉", + "hl_desc_9063": "治疗总量{0}", + "hl_title_9064": "起死回生", + "hl_desc_9064": "治疗总量{0}", + "hl_title_9065": "移动泉水", + "hl_desc_9065": "治疗总量{0}", + + "hl_title_9071": "完美通关", + "hl_desc_9071": "20回合全胜且全存活", + + "hl_title_9081": "手气不错", + "hl_desc_9081": "刷新命中率{0}%", + "hl_title_9082": "心想事成", + "hl_desc_9082": "刷新命中率{0}%", + "hl_title_9083": "欧皇附体", + "hl_desc_9083": "刷新命中率{0}%", + "hl_title_9084": "天选之子", + "hl_desc_9084": "刷新命中率{0}%", + "hl_title_9085": "言出法随", + "hl_desc_9085": "刷新命中率{0}%", + + "hl_title_9091": "精打细算", + "hl_desc_9091": "金币使用率{0}%", + "hl_title_9092": "勤俭持家", + "hl_desc_9092": "金币使用率{0}%", + "hl_title_9093": "节俭玩家", + "hl_desc_9093": "金币使用率{0}%", + "hl_title_9094": "一毛不拔", + "hl_desc_9094": "金币使用率{0}%", + "hl_title_9095": "理财大师", + "hl_desc_9095": "金币使用率{0}%" } diff --git a/assets/script/game/common/LangUtil.ts b/assets/script/game/common/LangUtil.ts new file mode 100644 index 00000000..fb3d9fea --- /dev/null +++ b/assets/script/game/common/LangUtil.ts @@ -0,0 +1,95 @@ +/** + * @file LangUtil.ts + * @description 多语言工具 - 在显示阶段进行多语言转换,配置阶段采用硬编码 + * + * === 设计原则 === + * 1. 配置文件(heroSet / SkillSet / HighlightSet 等)中直接使用硬编码中文字符串 + * 2. 当需要显示多语言时,通过本工具的函数在运行时将 uuid 映射到对应语言文本 + * 3. 多语言 key 采用 "类型前缀_uuid" 的命名规范,自动生成,无需手动维护映射表 + * + * === 多语言 key 命名规范 === + * | 前缀 | 含义 | 示例 key | 对应 zh.json 中的值 | + * |-------------|-------------------|---------------------|----------------------| + * | hero_name | 英雄名称 | hero_name_5001 | 盾战士 | + * | hero_info | 英雄描述 | hero_info_5001 | 近战,魔法盾 坦克 | + * | mon_name | 怪物名称 | mon_name_6001 | 兽人战士 | + * | skill_name | 技能名称 | skill_name_6001 | 攻击 | + * | skill_info | 技能描述 | skill_info_6001 | 对单个目标攻击... | + * | fskill_name | 驻场技能名称 | fskill_name_7001 | 召唤精通 | + * | fskill_info | 驻场技能描述 | fskill_info_7001 | 召唤触发... | + * | scard_name | 特殊卡牌名称 | scard_name_7001 | 战术晋升 | + * | scard_info | 特殊卡牌描述 | scard_info_7001 | 升级场上随机... | + * | hl_name | 亮点成就名称 | hl_name_9001 | 暴击大师 | + * | hl_desc | 亮点成就描述 | hl_desc_9001 | 暴击{0}次 | + * + * === 使用示例 === + * import { lang, langf } from "../common/LangUtil"; + * + * // 英雄 + * lang("hero_name", 5001) // → "盾战士" + * langf("skill_info", 6001, 1, 100) // → "对单个目标攻击1次,每次造成100%攻击的伤害" + * + * // 驻场技能 + * lang("fskill_name", 7001) // → "召唤精通" + * langf("fskill_info", 7001, 1) // → "场上所有友方召唤触发技能触发次数+1" + * + * // 亮点成就(与英雄/技能完全一致的调用方式) + * lang("hl_name", 9001) // → "暴击大师" + * langf("hl_desc", 9001, 20) // → "暴击20次" + */ +import { oops } from "db://oops-framework/core/Oops"; + +export type LangPrefix = + | "hero_name" + | "hero_info" + | "mon_name" + | "skill_name" + | "skill_info" + | "fskill_name" + | "fskill_info" + | "scard_name" + | "scard_info" + | "hl_name" + | "hl_desc"; + +function buildKey(prefix: LangPrefix, uuid: number | string): string { + return `${prefix}_${uuid}`; +} + +/** + * 按前缀+uuid获取多语言文本 + * @param prefix 类型前缀,如 "hero_name"、"skill_info"、"hl_name" + * @param uuid 唯一标识 + * @returns 翻译后的文本,找不到则返回 key 本身 + * + * @example + * lang("hero_name", 5001) // → "盾战士" + * lang("skill_name", 6002) // → "火球术" + * lang("hl_title", 9011) // → "初级暴击者" + */ +export function lang(prefix: LangPrefix, uuid: number | string): string { + const key = buildKey(prefix, uuid); + return oops.language.getLangByID(key) || key; +} + +/** + * 按前缀+uuid获取多语言文本,并替换 {0} {1} ... 占位符 + * @param prefix 类型前缀 + * @param uuid 唯一标识 + * @param params 模板参数,按顺序替换 {0} {1} ... + * @returns 翻译并替换参数后的文本 + * + * @example + * langf("skill_info", 6001, 1, 100) // → "对单个目标攻击1次,每次造成100%攻击的伤害" + * langf("hl_desc", 9001, 20) // → "暴击20次" + */ +export function langf(prefix: LangPrefix, uuid: number | string, ...params: any[]): string { + const key = buildKey(prefix, uuid); + let str = oops.language.getLangByID(key) || key; + if (params && params.length > 0) { + for (let i = 0; i < params.length; i++) { + str = str.replace(`{${i}}`, String(params[i])); + } + } + return str; +} diff --git a/assets/script/game/common/config/HighlightSet.ts b/assets/script/game/common/config/HighlightSet.ts index 172a654e..41b394c4 100644 --- a/assets/script/game/common/config/HighlightSet.ts +++ b/assets/script/game/common/config/HighlightSet.ts @@ -1,54 +1,51 @@ /** * @file HighlightSet.ts * @description 亮点成就配置文件 - * + * * 定义所有亮点成就的等级、触发条件、加分以及称号描述。 * 每个亮点都包含5个递进等级,奖励分随等级增加。 + * + * uuid 分组规则:90 + 类型序号(1~9) + 等级(1~5) + * 9011~9015 = CritMaster 暴击大师 + * 9021~9025 = DeathExpert 送死达人 + * 9031~9035 = IronWall 铁壁铜墙 + * 9041~9045 = WindStorm 风暴之王 + * 9051~9055 = OneHitKill 一击必杀 + * 9061~9065 = HealingLight 治愈之光 + * 9071 = PerfectClear 完美通关 + * 9081~9085 = LuckyKing 欧皇附体 + * 9091~9095 = ThriftyPlayer 节俭玩家 + * + * 多语言调用方式(与英雄/技能统一): + * import { lang, langf } from "../common/LangUtil"; + * lang("hl_title", 9011) // → "初级暴击者" + * langf("hl_desc", 9011, 20) // → "暴击20次" */ -import { oops } from "db://oops-framework/core/Oops" - -class I18nString { - constructor(private key: string, private params?: any[]) {} - private getTranslated(): string { - let str = oops.language.getLangByID(this.key) || this.key; - if (this.params && this.params.length > 0) { - for (let i = 0; i < this.params.length; i++) { - str = str.replace(`{${i}}`, String(this.params[i])); - } - } - return str; - } - toString() { return this.getTranslated(); } - valueOf() { return this.getTranslated(); } - toJSON() { return this.getTranslated(); } - get length() { return this.toString().length; } -} -const t = (key: string, ...params: any[]) => new I18nString(key, params) as unknown as string; - export enum HighlightType { - CritMaster = "CritMaster", // 暴击大师 - DeathExpert = "DeathExpert", // 送死达人 - IronWall = "IronWall", // 铁壁铜墙 - WindStorm = "WindStorm", // 风暴之王 - OneHitKill = "OneHitKill", // 一击必杀 - HealingLight = "HealingLight", // 治愈之光 - PerfectClear = "PerfectClear", // 完美通关 (特殊,只有一档或布尔判定) - LuckyKing = "LuckyKing", // 欧皇附体 - ThriftyPlayer = "ThriftyPlayer" // 节俭玩家 + CritMaster = "CritMaster", + DeathExpert = "DeathExpert", + IronWall = "IronWall", + WindStorm = "WindStorm", + OneHitKill = "OneHitKill", + HealingLight = "HealingLight", + PerfectClear = "PerfectClear", + LuckyKing = "LuckyKing", + ThriftyPlayer = "ThriftyPlayer" } export interface HighlightLevel { - level: number; // 成就等级 (1-5) - threshold: number; // 达成阈值 (如:暴击40次) - scoreBonus: number; // 额外加分 - title: string; // 成就称号 - desc: string; // 成就描述模板 + uuid: number; + level: number; + threshold: number; + scoreBonus: number; + title: string; + desc: string; } export interface HighlightConfig { type: HighlightType; - icon: string; // 显示前缀icon,如 "🔥" + icon: string; levels: HighlightLevel[]; } @@ -57,95 +54,95 @@ export const HighlightSet: Record = { type: HighlightType.CritMaster, icon: "🔥", levels: [ - { level: 1, threshold: 20, scoreBonus: 50, title: t("hl_title_CritMaster_1"), desc: t("hl_desc_CritMaster", 20) }, - { level: 2, threshold: 40, scoreBonus: 100, title: t("hl_title_CritMaster_2"), desc: t("hl_desc_CritMaster", 40) }, - { level: 3, threshold: 60, scoreBonus: 150, title: t("hl_title_CritMaster_3"), desc: t("hl_desc_CritMaster", 60) }, - { level: 4, threshold: 80, scoreBonus: 200, title: t("hl_title_CritMaster_4"), desc: t("hl_desc_CritMaster", 80) }, - { level: 5, threshold: 100, scoreBonus: 300, title: t("hl_title_CritMaster_5"), desc: t("hl_desc_CritMaster", 100) }, + { uuid: 9011, level: 1, threshold: 20, scoreBonus: 50, title: "初级暴击者", desc: "暴击20次" }, + { uuid: 9012, level: 2, threshold: 40, scoreBonus: 100, title: "暴击大师", desc: "暴击40次" }, + { uuid: 9013, level: 3, threshold: 60, scoreBonus: 150, title: "致命猎手", desc: "暴击60次" }, + { uuid: 9014, level: 4, threshold: 80, scoreBonus: 200, title: "无情处决", desc: "暴击80次" }, + { uuid: 9015, level: 5, threshold: 100, scoreBonus: 300, title: "刀刀烈火", desc: "暴击100次" }, ] }, [HighlightType.DeathExpert]: { type: HighlightType.DeathExpert, icon: "💀", levels: [ - { level: 1, threshold: 15, scoreBonus: 50, title: t("hl_title_DeathExpert_1"), desc: t("hl_desc_DeathExpert", 15) }, - { level: 2, threshold: 25, scoreBonus: 100, title: t("hl_title_DeathExpert_2"), desc: t("hl_desc_DeathExpert", 25) }, - { level: 3, threshold: 40, scoreBonus: 150, title: t("hl_title_DeathExpert_3"), desc: t("hl_desc_DeathExpert", 40) }, - { level: 4, threshold: 60, scoreBonus: 200, title: t("hl_title_DeathExpert_4"), desc: t("hl_desc_DeathExpert", 60) }, - { level: 5, threshold: 80, scoreBonus: 300, title: t("hl_title_DeathExpert_5"), desc: t("hl_desc_DeathExpert", 80) }, + { uuid: 9021, level: 1, threshold: 15, scoreBonus: 50, title: "不怕死", desc: "死亡触发15次" }, + { uuid: 9022, level: 2, threshold: 25, scoreBonus: 100, title: "送死达人", desc: "死亡触发25次" }, + { uuid: 9023, level: 3, threshold: 40, scoreBonus: 150, title: "亡灵舞者", desc: "死亡触发40次" }, + { uuid: 9024, level: 4, threshold: 60, scoreBonus: 200, title: "向死而生", desc: "死亡触发60次" }, + { uuid: 9025, level: 5, threshold: 80, scoreBonus: 300, title: "不死灾厄", desc: "死亡触发80次" }, ] }, [HighlightType.IronWall]: { type: HighlightType.IronWall, icon: "🛡️", levels: [ - { level: 1, threshold: 15, scoreBonus: 50, title: t("hl_title_IronWall_1"), desc: t("hl_desc_IronWall", 15) }, - { level: 2, threshold: 30, scoreBonus: 100, title: t("hl_title_IronWall_2"), desc: t("hl_desc_IronWall", 30) }, - { level: 3, threshold: 50, scoreBonus: 150, title: t("hl_title_IronWall_3"), desc: t("hl_desc_IronWall", 50) }, - { level: 4, threshold: 70, scoreBonus: 200, title: t("hl_title_IronWall_4"), desc: t("hl_desc_IronWall", 70) }, - { level: 5, threshold: 100, scoreBonus: 300, title: t("hl_title_IronWall_5"), desc: t("hl_desc_IronWall", 100) }, + { uuid: 9031, level: 1, threshold: 15, scoreBonus: 50, title: "坚固盾牌", desc: "格挡15次" }, + { uuid: 9032, level: 2, threshold: 30, scoreBonus: 100, title: "铁壁铜墙", desc: "格挡30次" }, + { uuid: 9033, level: 3, threshold: 50, scoreBonus: 150, title: "叹息之墙", desc: "格挡50次" }, + { uuid: 9034, level: 4, threshold: 70, scoreBonus: 200, title: "不破之阵", desc: "格挡70次" }, + { uuid: 9035, level: 5, threshold: 100, scoreBonus: 300, title: "绝对防御", desc: "格挡100次" }, ] }, [HighlightType.WindStorm]: { type: HighlightType.WindStorm, icon: "⚡", levels: [ - { level: 1, threshold: 10, scoreBonus: 50, title: t("hl_title_WindStorm_1"), desc: t("hl_desc_WindStorm", 10) }, - { level: 2, threshold: 20, scoreBonus: 100, title: t("hl_title_WindStorm_2"), desc: t("hl_desc_WindStorm", 20) }, - { level: 3, threshold: 35, scoreBonus: 150, title: t("hl_title_WindStorm_3"), desc: t("hl_desc_WindStorm", 35) }, - { level: 4, threshold: 50, scoreBonus: 200, title: t("hl_title_WindStorm_4"), desc: t("hl_desc_WindStorm", 50) }, - { level: 5, threshold: 70, scoreBonus: 300, title: t("hl_title_WindStorm_5"), desc: t("hl_desc_WindStorm", 70) }, + { uuid: 9041, level: 1, threshold: 10, scoreBonus: 50, title: "迅捷之风", desc: "风怒10次" }, + { uuid: 9042, level: 2, threshold: 20, scoreBonus: 100, title: "风暴之王", desc: "风怒20次" }, + { uuid: 9043, level: 3, threshold: 35, scoreBonus: 150, title: "狂风骤雨", desc: "风怒35次" }, + { uuid: 9044, level: 4, threshold: 50, scoreBonus: 200, title: "无影之手", desc: "风怒50次" }, + { uuid: 9045, level: 5, threshold: 70, scoreBonus: 300, title: "神速幻影", desc: "风怒70次" }, ] }, [HighlightType.OneHitKill]: { type: HighlightType.OneHitKill, icon: "🎯", levels: [ - { level: 1, threshold: 100, scoreBonus: 50, title: t("hl_title_OneHitKill_1"), desc: t("hl_desc_OneHitKill", 100) }, - { level: 2, threshold: 200, scoreBonus: 100, title: t("hl_title_OneHitKill_2"), desc: t("hl_desc_OneHitKill", 200) }, - { level: 3, threshold: 400, scoreBonus: 150, title: t("hl_title_OneHitKill_3"), desc: t("hl_desc_OneHitKill", 400) }, - { level: 4, threshold: 800, scoreBonus: 200, title: t("hl_title_OneHitKill_4"), desc: t("hl_desc_OneHitKill", 800) }, - { level: 5, threshold: 1500, scoreBonus: 300, title: t("hl_title_OneHitKill_5"), desc: t("hl_desc_OneHitKill", 1500) }, + { uuid: 9051, level: 1, threshold: 100, scoreBonus: 50, title: "重击", desc: "单次伤害100" }, + { uuid: 9052, level: 2, threshold: 200, scoreBonus: 100, title: "一击必杀", desc: "单次伤害200" }, + { uuid: 9053, level: 3, threshold: 400, scoreBonus: 150, title: "毁天灭地", desc: "单次伤害400" }, + { uuid: 9054, level: 4, threshold: 800, scoreBonus: 200, title: "核弹打击", desc: "单次伤害800" }, + { uuid: 9055, level: 5, threshold: 1500, scoreBonus: 300, title: "弑神一击", desc: "单次伤害1500" }, ] }, [HighlightType.HealingLight]: { type: HighlightType.HealingLight, icon: "💊", levels: [ - { level: 1, threshold: 200, scoreBonus: 50, title: t("hl_title_HealingLight_1"), desc: t("hl_desc_HealingLight", 200) }, - { level: 2, threshold: 500, scoreBonus: 100, title: t("hl_title_HealingLight_2"), desc: t("hl_desc_HealingLight", 500) }, - { level: 3, threshold: 1000, scoreBonus: 150, title: t("hl_title_HealingLight_3"), desc: t("hl_desc_HealingLight", 1000) }, - { level: 4, threshold: 2000, scoreBonus: 200, title: t("hl_title_HealingLight_4"), desc: t("hl_desc_HealingLight", 2000) }, - { level: 5, threshold: 4000, scoreBonus: 300, title: t("hl_title_HealingLight_5"), desc: t("hl_desc_HealingLight", 4000) }, + { uuid: 9061, level: 1, threshold: 200, scoreBonus: 50, title: "急救员", desc: "治疗总量200" }, + { uuid: 9062, level: 2, threshold: 500, scoreBonus: 100, title: "治愈之光", desc: "治疗总量500" }, + { uuid: 9063, level: 3, threshold: 1000, scoreBonus: 150, title: "生命之泉", desc: "治疗总量1000" }, + { uuid: 9064, level: 4, threshold: 2000, scoreBonus: 200, title: "起死回生", desc: "治疗总量2000" }, + { uuid: 9065, level: 5, threshold: 4000, scoreBonus: 300, title: "移动泉水", desc: "治疗总量4000" }, ] }, [HighlightType.PerfectClear]: { type: HighlightType.PerfectClear, icon: "🏆", levels: [ - { level: 1, threshold: 1, scoreBonus: 500, title: t("hl_title_PerfectClear_1"), desc: t("hl_desc_PerfectClear") }, + { uuid: 9071, level: 1, threshold: 1, scoreBonus: 500, title: "完美通关", desc: "20回合全胜且全存活" }, ] }, [HighlightType.LuckyKing]: { type: HighlightType.LuckyKing, icon: "🎲", levels: [ - { level: 1, threshold: 0.6, scoreBonus: 50, title: t("hl_title_LuckyKing_1"), desc: t("hl_desc_LuckyKing", 60) }, - { level: 2, threshold: 0.7, scoreBonus: 100, title: t("hl_title_LuckyKing_2"), desc: t("hl_desc_LuckyKing", 70) }, - { level: 3, threshold: 0.8, scoreBonus: 150, title: t("hl_title_LuckyKing_3"), desc: t("hl_desc_LuckyKing", 80) }, - { level: 4, threshold: 0.9, scoreBonus: 200, title: t("hl_title_LuckyKing_4"), desc: t("hl_desc_LuckyKing", 90) }, - { level: 5, threshold: 1.0, scoreBonus: 300, title: t("hl_title_LuckyKing_5"), desc: t("hl_desc_LuckyKing", 100) }, + { uuid: 9081, level: 1, threshold: 0.6, scoreBonus: 50, title: "手气不错", desc: "刷新命中率60%" }, + { uuid: 9082, level: 2, threshold: 0.7, scoreBonus: 100, title: "心想事成", desc: "刷新命中率70%" }, + { uuid: 9083, level: 3, threshold: 0.8, scoreBonus: 150, title: "欧皇附体", desc: "刷新命中率80%" }, + { uuid: 9084, level: 4, threshold: 0.9, scoreBonus: 200, title: "天选之子", desc: "刷新命中率90%" }, + { uuid: 9085, level: 5, threshold: 1.0, scoreBonus: 300, title: "言出法随", desc: "刷新命中率100%" }, ] }, [HighlightType.ThriftyPlayer]: { type: HighlightType.ThriftyPlayer, icon: "💰", levels: [ - { level: 1, threshold: 0.75, scoreBonus: 50, title: t("hl_title_ThriftyPlayer_1"), desc: t("hl_desc_ThriftyPlayer", 75) }, - { level: 2, threshold: 0.85, scoreBonus: 100, title: t("hl_title_ThriftyPlayer_2"), desc: t("hl_desc_ThriftyPlayer", 85) }, - { level: 3, threshold: 0.95, scoreBonus: 150, title: t("hl_title_ThriftyPlayer_3"), desc: t("hl_desc_ThriftyPlayer", 95) }, - { level: 4, threshold: 0.98, scoreBonus: 200, title: t("hl_title_ThriftyPlayer_4"), desc: t("hl_desc_ThriftyPlayer", 98) }, - { level: 5, threshold: 1.00, scoreBonus: 300, title: t("hl_title_ThriftyPlayer_5"), desc: t("hl_desc_ThriftyPlayer", 100) }, + { uuid: 9091, level: 1, threshold: 0.75, scoreBonus: 50, title: "精打细算", desc: "金币使用率75%" }, + { uuid: 9092, level: 2, threshold: 0.85, scoreBonus: 100, title: "勤俭持家", desc: "金币使用率85%" }, + { uuid: 9093, level: 3, threshold: 0.95, scoreBonus: 150, title: "节俭玩家", desc: "金币使用率95%" }, + { uuid: 9094, level: 4, threshold: 0.98, scoreBonus: 200, title: "一毛不拔", desc: "金币使用率98%" }, + { uuid: 9095, level: 5, threshold: 1.00, scoreBonus: 300, title: "理财大师", desc: "金币使用率100%" }, ] } }; diff --git a/assets/script/game/common/config/SkillSet.ts b/assets/script/game/common/config/SkillSet.ts index adec2a7d..3d2e23d9 100644 --- a/assets/script/game/common/config/SkillSet.ts +++ b/assets/script/game/common/config/SkillSet.ts @@ -1,24 +1,5 @@ // ========== 从 HeroAttrs.ts 导入属性相关定义 ========== import { Attrs } from "./HeroAttrs"; -import { oops } from "db://oops-framework/core/Oops"; - -class I18nString { - constructor(private key: string, private params?: any[]) {} - private getTranslated(): string { - let str = oops.language.getLangByID(this.key) || this.key; - if (this.params && this.params.length > 0) { - for (let i = 0; i < this.params.length; i++) { - str = str.replace(`{${i}}`, String(this.params[i])); - } - } - return str; - } - toString() { return this.getTranslated(); } - valueOf() { return this.getTranslated(); } - toJSON() { return this.getTranslated(); } - get length() { return this.toString().length; } -} -export const t = (key: string, ...params: any[]) => new I18nString(key, params) as unknown as string; export enum HSSet { atk = 0, // 普通攻击 @@ -191,39 +172,39 @@ export const SkillUpList = { export const SkillSet: Record = { // ========== 基础技能 ========== 6001: { - uuid:6001,name:t("skill_name_6001"),sp_name:"atk",icon:"1026",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", + uuid:6001,name:"普通攻击",sp_name:"atk",icon:"1026",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", DTType:DTType.single,ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.Melee, - RType:RType.bezier,EType:EType.collision,buffs:[],info:t("skill_info_6001", 1, 100), + RType:RType.bezier,EType:EType.collision,buffs:[],info:"造成攻击力100%的伤害", }, 6002: { - uuid:6002,name:t("skill_name_6002"),sp_name:"ball_fire",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", + uuid:6002,name:"火球术",sp_name:"ball_fire",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", DTType:DTType.single,frz:0,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.bezier,EType:EType.collision,buffs:[],info:t("skill_info_6002", 1, 100), + RType:RType.bezier,EType:EType.collision,buffs:[],info:"发射火球,造成攻击力100%的伤害", }, 6003: { - uuid:6003,name:t("skill_name_6003"),sp_name:"ball_winds",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", + uuid:6003,name:"风刃",sp_name:"ball_winds",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", DTType:DTType.single,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.bezier,EType:EType.collision,buffs:[],info:t("skill_info_6003", 1, 100), + RType:RType.bezier,EType:EType.collision,buffs:[],info:"发射风刃,造成攻击力100%的伤害", }, 6004: { - uuid:6004,name:t("skill_name_6004"),sp_name:"ball_zi",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", + uuid:6004,name:"暗影球",sp_name:"ball_zi",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", DTType:DTType.single,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.bezier,EType:EType.collision,buffs:[],info:t("skill_info_6004", 1, 100), + RType:RType.bezier,EType:EType.collision,buffs:[],info:"发射暗影球,造成攻击力100%的伤害", }, 6005: { - uuid:6005,name:t("skill_name_6005"),sp_name:"arrow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", + uuid:6005,name:"箭矢",sp_name:"arrow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", DTType:DTType.single,ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.bezier,EType:EType.collision,bezier_start_y:20,bezier_mid_y:140,bezier_arc:1.05,buffs:[],info:t("skill_info_6005", 1, 100), + RType:RType.bezier,EType:EType.collision,bezier_start_y:20,bezier_mid_y:140,bezier_arc:1.05,buffs:[],info:"射出箭矢,造成攻击力100%的伤害", }, 6007: { - uuid:6007,name:t("skill_name_6007"),sp_name:"ball_forst",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", + uuid:6007,name:"冰霜球",sp_name:"ball_forst",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", DTType:DTType.single,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.bezier,EType:EType.collision,buffs:[],info:t("skill_info_6007", 1, 100), + RType:RType.bezier,EType:EType.collision,buffs:[],info:"发射冰霜球,造成攻击力100%的伤害", }, 6008: { - uuid:6007,name:t("skill_name_6008"),sp_name:"ball_water",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", + uuid:6008,name:"水球",sp_name:"ball_water",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk", DTType:DTType.single,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.bezier,EType:EType.collision,buffs:[],info:t("skill_info_6008", 1, 100), + RType:RType.bezier,EType:EType.collision,buffs:[],info:"发射水球,造成攻击力100%的伤害", }, @@ -231,97 +212,97 @@ export const SkillSet: Record = { //大招 6101: { - uuid:6101,name:t("skill_name_6101"),sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max", + uuid:6101,name:"烈焰斩",sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max", DTType:DTType.single,bck:20,ap:150,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.Melee, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6101", 6, 150), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"释放烈焰斩击,最多命中6个敌人,造成攻击力150%的伤害,附带20%击退概率", }, 6102: { - uuid:6102,name:t("skill_name_6102"),sp_name:"atk_s4",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"yellow",endAnm:"",act:"max", + uuid:6102,name:"雷霆击",sp_name:"atk_s4",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"yellow",endAnm:"",act:"max", DTType:DTType.single,crt:20,ap:150,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.Melee, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6102", 6, 150), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"释放雷霆一击,最多命中6个敌人,造成攻击力150%的伤害,附带20%额外暴击率", }, 6103: { - uuid:6103,name:t("skill_name_6103"),sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max", + uuid:6103,name:"火焰风暴",sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max", DTType:DTType.range,crt:20,ap:150,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6103", 6, 150), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"召唤火焰风暴,最多命中6个敌人,造成攻击力150%的范围伤害,附带20%额外暴击率", }, 6104: { - uuid:6104,name:t("skill_name_6104"),sp_name:"arrow_big_yellow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"yellow",endAnm:"",act:"max", + uuid:6104,name:"穿云箭",sp_name:"arrow_big_yellow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"yellow",endAnm:"",act:"max", DTType:DTType.single,crt:20,ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.bezier,EType:EType.collision,buffs:[],info:t("skill_info_6104", 6, 100), + RType:RType.bezier,EType:EType.collision,buffs:[],info:"射出强力箭矢,最多穿透6个敌人,造成攻击力100%的伤害,附带20%额外暴击率", }, 6105: { - uuid:6105,name:t("skill_name_6105"),sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max", + uuid:6105,name:"冰封领域",sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max", DTType:DTType.range,frz:0,ap:150,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6105", 6, 150), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"释放冰封领域,最多命中6个敌人,造成攻击力150%的范围伤害", }, 6106: { - uuid:6106,name:t("skill_name_6106"),sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max", + uuid:6106,name:"冲击波",sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max", DTType:DTType.range,bck:20,ap:150,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.remote, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6106", 6, 150), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"释放冲击波,最多命中6个敌人,造成攻击力150%的范围伤害,附带20%击退概率", }, //============================= ====== 辅助技能 ====== ========================== 6301:{ - uuid:6301,name:t("skill_name_6301"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_blue",endAnm:"",act:"atk", + uuid:6301,name:"护盾术",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_blue",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Shield,ap:3,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6301", 3), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"为自己添加护盾,可抵挡3次伤害", }, 6302: { - uuid:6302,name:t("skill_name_6302"),sp_name:"buff_wind",icon:"1292",TGroup:TGroup.Team,readyAnm:"up_green",endAnm:"",act:"atk", + uuid:6302,name:"群体治疗",sp_name:"buff_wind",icon:"1292",TGroup:TGroup.Team,readyAnm:"up_green",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Heal,ap:300,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6302", 1, 300), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"为全体友方恢复攻击力300%的生命值", }, 6303:{ - uuid:6303,name:t("skill_name_6303"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_blue",endAnm:"",act:"atk", + uuid:6303,name:"强化护盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_blue",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Shield,ap:3,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6303", 3), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"为自己添加强化护盾,可抵挡3次伤害", }, 6304: { - uuid:6304,name:t("skill_name_6304"),sp_name:"buff_wind",icon:"1292",TGroup:TGroup.Team,readyAnm:"up_green",endAnm:"",act:"atk", + uuid:6304,name:"持续恢复",sp_name:"buff_wind",icon:"1292",TGroup:TGroup.Team,readyAnm:"up_green",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Heal,ap:200,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6304", 3, 200), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"为全体友方持续恢复,共3次,每次恢复攻击力200%的生命值", }, 6305:{ - uuid:6305,name:t("skill_name_6305"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_blue",endAnm:"",act:"atk", + uuid:6305,name:"团队护盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_blue",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Shield,ap:2,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6305", 3, 2), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"为全体友方添加护盾,每人可抵挡2次伤害,持续3次", }, //==========================buff 技能===================== 6401:{ - uuid:6401,name:t("skill_name_6401"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_ap",endAnm:"",act:"atk", + uuid:6401,name:"攻击强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_ap",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5}],info:t("skill_info_6401", 1, 5), + RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5}],info:"全体友方攻击力提升5点,持续1次", }, 6402:{ - uuid:6402,name:t("skill_name_6402"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk", + uuid:6402,name:"生命强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:20}],info:t("skill_info_6402", 1, 20), + RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:20}],info:"全体友方最大生命值提升20点,持续1次", }, 6403:{ - uuid:6403,name:t("skill_name_6403"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk", + uuid:6403,name:"全面强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5},{buff:Attrs.hp_max,value:20}],info:t("skill_info_6403", 1, 5, 20), + RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5},{buff:Attrs.hp_max,value:20}],info:"全体友方攻击力提升5点,最大生命值提升20点,持续1次", }, 6404:{ - uuid:6404,name:t("skill_name_6404"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_ap",endAnm:"",act:"atk", + uuid:6404,name:"持续攻击强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_ap",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:2}],info:t("skill_info_6404", 3, 2), + RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:2}],info:"全体友方攻击力提升2点,持续3次", }, 6405:{ - uuid:6405,name:t("skill_name_6405"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk", + uuid:6405,name:"持续生命强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:10}],info:t("skill_info_6405", 3, 10), + RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:10}],info:"全体友方最大生命值提升10点,持续3次", }, 6406:{ - uuid:6406,name:t("skill_name_6406"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_ap",endAnm:"",act:"atk", + uuid:6406,name:"持续全面强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_ap",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:2},{buff:Attrs.hp_max,value:10}],info:t("skill_info_6406", 3, 2, 10), + RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:2},{buff:Attrs.hp_max,value:10}],info:"全体友方攻击力提升2点,最大生命值提升10点,持续3次", }, 6501:{ - uuid:6501,name:t("skill_name_6501"),sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_ap",endAnm:"",act:"atk", + uuid:6501,name:"自我强化",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_ap",endAnm:"",act:"atk", DTType:DTType.single,kind:SkillKind.Support,ap:50,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0.2,EAnm:0,DAnm:"",IType:IType.support, - RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:t("skill_info_6501", 50), + RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"自身攻击力提升50点,持续3次", } }; @@ -350,16 +331,16 @@ export interface FieldSkillConfig { } export const FieldSkillSet: Record = { - 7001: { uuid: 7001, name: t("fskill_name_7001"), type: FieldSkillType.SummonCount, value: 1, info: t("fskill_info_7001", 1) }, - 7002: { uuid: 7002, name: t("fskill_name_7002"), type: FieldSkillType.DeadCount, value: 1, info: t("fskill_info_7002", 1) }, - 7003: { uuid: 7003, name: t("fskill_name_7003"), type: FieldSkillType.StartCount, value: 1, info: t("fskill_info_7003", 1) }, - 7004: { uuid: 7004, name: t("fskill_name_7004"), type: FieldSkillType.EndCount, value: 1, info: t("fskill_info_7004", 1) }, - 7005: { uuid: 7005, name: t("fskill_name_7005"), type: FieldSkillType.WaveGold, value: 10, info: t("fskill_info_7005", 10) }, - 7006: { uuid: 7006, name: t("fskill_name_7006"), type: FieldSkillType.SellGold, value: 5, info: t("fskill_info_7006", 5) }, - 7007: { uuid: 7007, name: t("fskill_name_7007"), type: FieldSkillType.WaveHeal, value: 0.3, info: t("fskill_info_7007", 30) }, - 7008: { uuid: 7008, name: t("fskill_name_7008"), type: FieldSkillType.HeroAtk, value: 0.2, info: t("fskill_info_7008", 20) }, - 7009: { uuid: 7009, name: t("fskill_name_7009"), type: FieldSkillType.HeroFrost, value: 0.1, info: t("fskill_info_7009", 10) }, - 7010: { uuid: 7010, name: t("fskill_name_7010"), type: FieldSkillType.HeroCrit, value: 0.1, info: t("fskill_info_7010", 10) }, - 7011: { uuid: 7011, name: t("fskill_name_7011"), type: FieldSkillType.HeroCritDamage, value: 0.5, info: t("fskill_info_7011", 50) }, - 7012: { uuid: 7012, name: t("fskill_name_7012"), type: FieldSkillType.HeroSpeed, value: 0.2, info: t("fskill_info_7012", 20) }, + 7001: { uuid: 7001, name: "召唤强化", type: FieldSkillType.SummonCount, value: 1, info: "召唤触发技能次数+1" }, + 7002: { uuid: 7002, name: "死亡强化", type: FieldSkillType.DeadCount, value: 1, info: "死亡触发技能次数+1" }, + 7003: { uuid: 7003, name: "开场强化", type: FieldSkillType.StartCount, value: 1, info: "战斗开始触发技能次数+1" }, + 7004: { uuid: 7004, name: "结束强化", type: FieldSkillType.EndCount, value: 1, info: "战斗结束触发技能次数+1" }, + 7005: { uuid: 7005, name: "金币收益", type: FieldSkillType.WaveGold, value: 10, info: "每回合金币收益+10" }, + 7006: { uuid: 7006, name: "出售强化", type: FieldSkillType.SellGold, value: 5, info: "卖出英雄金币+5" }, + 7007: { uuid: 7007, name: "战后恢复", type: FieldSkillType.WaveHeal, value: 0.3, info: "战斗结束生命回复量+30%" }, + 7008: { uuid: 7008, name: "攻击加成", type: FieldSkillType.HeroAtk, value: 0.2, info: "英雄攻击力+20%" }, + 7009: { uuid: 7009, name: "冰冻加成", type: FieldSkillType.HeroFrost, value: 0.1, info: "英雄冰冻概率+10%" }, + 7010: { uuid: 7010, name: "暴击加成", type: FieldSkillType.HeroCrit, value: 0.1, info: "英雄暴击率+10%" }, + 7011: { uuid: 7011, name: "暴伤加成", type: FieldSkillType.HeroCritDamage, value: 0.5, info: "英雄暴击伤害+50%" }, + 7012: { uuid: 7012, name: "攻速加成", type: FieldSkillType.HeroSpeed, value: 0.2, info: "英雄攻击速度+20%" }, }; diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index e0325730..1ea0dbce 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -1,24 +1,5 @@ import { v3 } from "cc" import { BoxSet, FacSet } from "./GameSet" -import { oops } from "db://oops-framework/core/Oops" - -class I18nString { - constructor(private key: string, private params?: any[]) {} - private getTranslated(): string { - let str = oops.language.getLangByID(this.key) || this.key; - if (this.params && this.params.length > 0) { - for (let i = 0; i < this.params.length; i++) { - str = str.replace(`{${i}}`, String(this.params[i])); - } - } - return str; - } - toString() { return this.getTranslated(); } - valueOf() { return this.getTranslated(); } - toJSON() { return this.getTranslated(); } - get length() { return this.toString().length; } -} -export const t = (key: string, ...params: any[]) => new I18nString(key, params) as unknown as string; export enum HType { Melee = 0, @@ -145,48 +126,48 @@ export interface HSkillInfo { export const HeroInfo: Record = { // ========== 近战英雄 ========== - 5001:{uuid:5001,name:t("hero_name_5001"),path:"hk1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Melee,hp:150,ap:25,speed:800,atking:[{s_uuid:6301,t_num:2}], - skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0}},info:t("hero_info_5001")}, - 5002:{uuid:5002,name:t("hero_name_5002"),path:"hk3", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Melee,hp:150,ap:75,speed:800,atked:[{s_uuid:6301,t_num:2}], - skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0}},info:t("hero_info_5002")}, - 5003:{uuid:5003,name:t("hero_name_5003"),path:"hk4", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Melee,hp:100,ap:100,speed:800, - skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0}},info:t("hero_info_5003")}, - 5004:{uuid:5004,name:t("hero_name_5004"),path:"hc1", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Melee,hp:100,ap:200,speed:800, - skills:{6001:{uuid:6001,lv:1,cd:0.7,ccd:0}},info:t("hero_info_5004")}, - 5005:{uuid:5005,name:t("hero_name_5005"),path:"hk2", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Melee,hp:100,ap:200,speed:800, - skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0}},info:t("hero_info_5005")}, + 5001:{uuid:5001,name:"盾战士",path:"hk1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Melee,hp:150,ap:25,speed:800,atking:[{s_uuid:6301,t_num:2}], + skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0}},info:"近战,魔法盾 坦克"}, + 5002:{uuid:5002,name:"圣骑士",path:"hk3", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Melee,hp:150,ap:75,speed:800,atked:[{s_uuid:6301,t_num:2}], + skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0}},info:"近战,群体护盾 坦克"}, + 5003:{uuid:5003,name:"风行剑士",path:"hk4", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Melee,hp:100,ap:100,speed:800, + skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0}},info:"近战,闪击 近战dps"}, + 5004:{uuid:5004,name:"刺客",path:"hc1", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Melee,hp:100,ap:200,speed:800, + skills:{6001:{uuid:6001,lv:1,cd:0.7,ccd:0}},info:"近战,火焰击 近战dps"}, + 5005:{uuid:5005,name:"自然骑士",path:"hk2", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Melee,hp:100,ap:200,speed:800, + skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0}},info:"治疗近战,火焰击 近战dps"}, // ========== 法师英雄 ========== - 5101:{uuid:5101,name:t("hero_name_5101"),path:"hm2", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:60,speed:800,revive:{s_uuid:6501,r_num:1,upr:0.5}, - skills:{6201:{uuid:6007,lv:1,cd:1,ccd:0}},info:t("hero_info_5101")}, - 5102:{uuid:5102,name:t("hero_name_5102"),path:"hm1", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Long,hp:130,ap:120,speed:800, - skills:{6203:{uuid:6002,lv:1,cd:1,ccd:0}},info:t("hero_info_5102")}, - 5103:{uuid:5103,name:t("hero_name_5103"),path:"hm9", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:145,ap:180,speed:800, - skills:{6201:{uuid:6002,lv:1,cd:1,ccd:0}},info:t("hero_info_5103")}, - 5104:{uuid:5104,name:t("hero_name_5104"),path:"hm4", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Long,hp:160,ap:240,speed:800, - skills:{6201:{uuid:66002201,lv:1,cd:1,ccd:0}},info:t("hero_info_5104")}, - 5105:{uuid:5105,name:t("hero_name_5105"),path:"hm3", fac:FacSet.HERO,cards_lv:5,lv:1,type:HType.Long,hp:175,ap:300,speed:800, - skills:{6203:{uuid:6002,lv:1,cd:1,ccd:0}},info:t("hero_info_5105") }, + 5101:{uuid:5101,name:"奥术法师",path:"hm2", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:60,speed:800,revive:{s_uuid:6501,r_num:1,upr:0.5}, + skills:{6201:{uuid:6007,lv:1,cd:1,ccd:0}},info:"冰球,冰锥 远法dps"}, + 5102:{uuid:5102,name:"火焰法师",path:"hm1", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Long,hp:130,ap:120,speed:800, + skills:{6203:{uuid:6002,lv:1,cd:1,ccd:0}},info:"火击,火球 远法dps"}, + 5103:{uuid:5103,name:"冰法法师",path:"hm9", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:145,ap:180,speed:800, + skills:{6201:{uuid:6002,lv:1,cd:1,ccd:0}},info:"冰击,冰锥 远法dps"}, + 5104:{uuid:5104,name:"寒霜术士",path:"hm4", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Long,hp:160,ap:240,speed:800, + skills:{6201:{uuid:66002201,lv:1,cd:1,ccd:0}},info:"冰锥,冰刺 远法dps"}, + 5105:{uuid:5105,name:"炎爆法师",path:"hm3", fac:FacSet.HERO,cards_lv:5,lv:1,type:HType.Long,hp:175,ap:300,speed:800, + skills:{6203:{uuid:6002,lv:1,cd:1,ccd:0}},info:"火球,陨石术 远法dps" }, // ========== 远程英雄 ========== - 5201:{uuid:5201,name:t("hero_name_5201"),path:"ha1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:115,ap:60,speed:800, - skills:{6101:{uuid:6005,lv:1,cd:0.9,ccd:0}},info:t("hero_info_5201")}, - 5202:{uuid:5202,name:t("hero_name_5202"),path:"ha2", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:145,ap:180,speed:800, - skills:{6011:{uuid:6005,lv:1,cd:0.9,ccd:0}},info:t("hero_info_5202")}, - 5203:{uuid:5203,name:t("hero_name_5203"),path:"ha3", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:145,ap:180,speed:800, - skills:{6011:{uuid:6005,lv:1,cd:0.9,ccd:0}},info:t("hero_info_5203")}, + 5201:{uuid:5201,name:"射手",path:"ha1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:115,ap:60,speed:800, + skills:{6101:{uuid:6005,lv:1,cd:0.9,ccd:0}},info:"普通射击,暴射 远dps"}, + 5202:{uuid:5202,name:"游侠",path:"ha2", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:145,ap:180,speed:800, + skills:{6011:{uuid:6005,lv:1,cd:0.9,ccd:0}},info:"暴射,光箭 远dps"}, + 5203:{uuid:5203,name:"游侠",path:"ha3", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:145,ap:180,speed:800, + skills:{6011:{uuid:6005,lv:1,cd:0.9,ccd:0}},info:"暴射,光箭 远dps"}, // ========== 辅助英雄 ========== - 5301:{uuid:5301,name:t("hero_name_5301"),path:"hh1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:115,ap:50,speed:800,atking:[{s_uuid:6302,t_num:2}], - skills:{6202:{uuid:6004,lv:1,cd:1.2,ccd:0}},info:t("hero_info_5301") }, - 5302:{uuid:5302,name:t("hero_name_5302"),path:"hz1", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Long,hp:130,ap:50,speed:800,atking:[{s_uuid:6304,t_num:2}], - skills:{6202:{uuid:6004,lv:1,cd:1.2,ccd:0}},info:t("hero_info_5302")}, + 5301:{uuid:5301,name:"牧师",path:"hh1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:115,ap:50,speed:800,atking:[{s_uuid:6302,t_num:2}], + skills:{6202:{uuid:6004,lv:1,cd:1.2,ccd:0}},info:"冰锥1,治疗 远辅助" }, + 5302:{uuid:5302,name:"战地医师",path:"hz1", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Long,hp:130,ap:50,speed:800,atking:[{s_uuid:6304,t_num:2}], + skills:{6202:{uuid:6004,lv:1,cd:1.2,ccd:0}},info:"冰锥1,群体治疗 远辅助"}, - 5303:{uuid:5303,name:t("hero_name_5303"),path:"hm6", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Long,hp:160,ap:80,speed:800, - skills:{6202:{uuid:6004,lv:1,cd:1.2,ccd:0}},info:t("hero_info_5303")}, - 5304:{uuid:5304,name:t("hero_name_5304"),path:"hm7", fac:FacSet.HERO,cards_lv:6,lv:1,type:HType.Long,hp:190,ap:120,speed:800, - skills:{6202:{uuid:6004,lv:1,cd:1.2,ccd:0}},info:t("hero_info_5304")}, + 5303:{uuid:5303,name:"守护祭司",path:"hm6", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Long,hp:160,ap:80,speed:800, + skills:{6202:{uuid:6004,lv:1,cd:1.2,ccd:0}},info:"普通射击,单体攻击buff 射手辅助"}, + 5304:{uuid:5304,name:"秘法精灵",path:"hm7", fac:FacSet.HERO,cards_lv:6,lv:1,type:HType.Long,hp:190,ap:120,speed:800, + skills:{6202:{uuid:6004,lv:1,cd:1.2,ccd:0}},info:"普通射击,群体攻击buff 射手辅助"}, @@ -204,35 +185,32 @@ export const HeroInfo: Record = { //============== 兽人系列 =============== // 近战型 -6001:{uuid:6001,name:t("mon_name_6001"),path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:100, +6001:{uuid:6001,name:"兽人战士",path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:100, skills:{6001:{uuid:6001,lv:1,cd:0.65,ccd:0}},info:""}, -6002:{uuid:6002,name:t("mon_name_6002"),path:"mo3", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:100, +6002:{uuid:6002,name:"兽人斥候",path:"mo3", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:100, skills:{6001:{uuid:6001,lv:1,cd:0.65,ccd:0}},info:""}, -6003:{uuid:6003,name:t("mon_name_6003"),path:"mo4", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:350,ap:30,speed:100, +6003:{uuid:6003,name:"兽人卫士",path:"mo4", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:350,ap:30,speed:100, skills:{6001:{uuid:6001,lv:1,cd:2,ccd:0}},info:""}, -// 4. 远程 -6004:{uuid:6004,name:t("mon_name_6004"),path:"mo2", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:80,ap:45,speed:100, +6004:{uuid:6004,name:"兽人射手",path:"mo2", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:80,ap:45,speed:100, skills:{6001:{uuid:6101,lv:1,cd:1.5,ccd:0}},info:""}, -6005:{uuid:6005,name:t("mon_name_6005"),path:"mo5", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:80,ap:20,speed:100, +6005:{uuid:6005,name:"兽人法师",path:"mo5", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:80,ap:20,speed:100, skills:{6001:{uuid:6203,lv:1,cd:1.5,ccd:0}},info:""}, -// 6. 精英/BOSS型 -6006:{uuid:6006,name:t("mon_name_6006"),path:"mo6", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:1500,ap:20,speed:100, +6006:{uuid:6006,name:"兽人首领",path:"mo6", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:1500,ap:20,speed:100, skills:{6002:{uuid:6002,lv:1,cd:2,ccd:0}},info:""}, //============== 亡灵系列 =============== // 近战型 -6101:{uuid:6101,name:t("mon_name_6101"),path:"mud1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:100, +6101:{uuid:6101,name:"亡灵战士",path:"mud1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:100, skills:{6001:{uuid:6001,lv:1,cd:0.65,ccd:0}},info:""}, -6103:{uuid:6103,name:t("mon_name_6103"),path:"mud3", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:100, +6103:{uuid:6103,name:"亡灵斥候",path:"mud3", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:100, skills:{6001:{uuid:6001,lv:1,cd:0.65,ccd:0}},info:""}, -// 4. 远程 -6102:{uuid:6102,name:t("mon_name_6102"),path:"mud2", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:80,ap:45,speed:100, +6102:{uuid:6102,name:"亡灵射手",path:"mud2", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:80,ap:45,speed:100, skills:{6001:{uuid:6101,lv:1,cd:1.5,ccd:0}},info:""}, // 6105:{uuid:6105,name:"兽人法师",path:"mud5", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:80,ap:20,speed:100, // skills:{6001:{uuid:6001,lv:1,cd:1,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""}, // 6. 精英/BOSS型 -6104:{uuid:6104,name:t("mon_name_6104"),path:"mud4", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:350,ap:30,speed:100, +6104:{uuid:6104,name:"亡灵法师",path:"mud4", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:350,ap:30,speed:100, skills:{6204:{uuid:6204,lv:1,cd:2,ccd:0},6206:{uuid:6206,lv:1,cd:10,ccd:0}},info:""}, -6105:{uuid:6105,name:t("mon_name_6105"),path:"mud5", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:1500,ap:20,speed:100, +6105:{uuid:6105,name:"亡灵首领",path:"mud5", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:1500,ap:20,speed:100, skills:{6002:{uuid:6002,lv:1,cd:2,ccd:0},6005:{uuid:6005,lv:1,cd:10,ccd:0}},info:""}, };