From f9ee9f4ce51822c5272de58cd8f43b330c5c3d6f Mon Sep 17 00:00:00 2001 From: FFA <78807750+RJFAC@users.noreply.github.com> Date: Sun, 12 Apr 2026 12:34:12 +0800 Subject: [PATCH] AutoDomainCustomizable - 0.10 (#3108) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * V0.10 * 调整战斗策略设置方式 * 在显示日志中新增说明 * 读我文件排版 * 调试模式新增显示传入参数 * 修正刷完樹脂模式 修正刷完樹脂模式的邏輯 * 修正設置文字 修正刷完模式的文字描述 --- repo/js/AutoDomainCustomizable/README.md | 45 +++- repo/js/AutoDomainCustomizable/main.js | 229 ++++++++++--------- repo/js/AutoDomainCustomizable/manifest.json | 2 +- repo/js/AutoDomainCustomizable/settings.json | 23 +- 4 files changed, 176 insertions(+), 123 deletions(-) diff --git a/repo/js/AutoDomainCustomizable/README.md b/repo/js/AutoDomainCustomizable/README.md index e9b570153..7ab2939ad 100644 --- a/repo/js/AutoDomainCustomizable/README.md +++ b/repo/js/AutoDomainCustomizable/README.md @@ -10,9 +10,11 @@ 遇到无法排除的问题,请将日志去除敏感资讯(如帐户名称)后,至github提issue上传。 本JS脚本修改者没有QQ帐号。 +**强烈建议**先以调试模式运行后再上传日志。 + 没有附上日志纪录的问题将被 **无视** 。 -日志预设位置在 BetterGI\\log\\ +日志预设位置在`BetterGI\log\`。 --- @@ -41,6 +43,8 @@ * 请在下拉菜单中选择目标副本。 * **注意**:【角色天赋】、【武器升级】、【圣遗物】三类选项**互斥** (只能选其中一个),若同时选择多项,脚本将报错停止。 +
+ * **树脂策略配置** * **刷取至树脂耗尽 (最高优先级)** @@ -48,6 +52,8 @@ * 若启用此选项,脚本将**忽略**下方所有具体次数的设定。 * 依照配置中 **树脂刷取顺序** 栏位中的树脂种类依序刷取至耗尽,未填写在顺序栏位中的树脂 **不会** 进行刷取。 +
+ * **指定每种树脂刷取数量** * 仅在“刷取至树脂耗尽”**关闭** 时生效。 @@ -66,34 +72,47 @@ * **适用场景**:仅在确认游戏内有“限时全开”或“精通移涌”活动时使用。 * **警告**:若当日未开放该素材且无活动,勾选此项将会导致刷错素材。 +
+ * **自动切换到指定队伍** - * 输入预设队伍名称(需与游戏内完全一致,支持正则表达式),留空则不切换。 + * 输入队伍名称(需与游戏内完全一致,支持正则表达式),留空则不切换。 + +
* **秘境刷取轮数** * `0`:刷到体力耗尽或达到指定树脂次数(默认)。 * `数字`:刷满该场数后强制停止(无论是否还有体力)。 +
+ * **战斗完成后等待时间** * 设置战斗结算后的缓冲秒数(默认 5 秒),防止因电脑读取卡顿导致过早退出或识别失败。 +
+ * **结束后自动分解圣遗物** * **功能**:开启后,任务结束前会自动执行圣遗物分解逻辑。 * **分解星级**:可指定分解 **1~4 星** 的圣遗物(需配合下拉菜单设置)。 +
+ * **启用调试模式** * 开启后会输出更多详细日志信息,用于脚本出错时排查问题。 -* **战斗策略文件名** +
- * **功能**:指定使用的战斗策略文件。 - * **位置**:文件需放置在 `BetterGI/User/AutoFight/` 目录下。 - * **用法**:填写文件名即可,无需写 `.txt` 后缀(如填写 `胡桃`,实际查找 `User/AutoFight/胡桃.txt`)。 - * **留空**:使用 BetterGI 默认战斗策略。 +* **指定战斗策略** + + * **功能**:指定使用的战斗策略文件,默认根据队伍自动选择战斗策略。 + * **策略文件存放位置**:`BetterGI/User/AutoFight/` + * **用法**:在下拉选单中选择指定战斗策略,并在战斗策略名称栏位中填写文件名,无需写 `.txt` 后缀(如填写 `胡桃`,实际查找 `User/AutoFight/胡桃.txt`)。 + +
--- @@ -124,13 +143,21 @@ ## 📜 更新日志 + +### v0.10 - [RJFAC](https://github.com/RJFAC) +* 调整战斗策略设置方式 +* 在显示日志中新增说明 +* 读我文件排版 +* 调试模式新增显示传入参数 + ### v0.8 - [风铃](https://github.com/zephyr-bell) * 支持自定义战斗策略文件 --- -## 💻 关于作者 + +## 👨‍💻 关于作者 * **原作者**: [huiyadanli](https://github.com/huiyadanli), iris, 霁 * **修改者**: [RJFAC](https://github.com/RJFAC), [风铃](https://github.com/zephyr-bell) -* **辅助生成**: AI \ No newline at end of file +* **辅助生成**: AI diff --git a/repo/js/AutoDomainCustomizable/main.js b/repo/js/AutoDomainCustomizable/main.js index 4208427ab..257adae93 100644 --- a/repo/js/AutoDomainCustomizable/main.js +++ b/repo/js/AutoDomainCustomizable/main.js @@ -1,4 +1,5 @@ -// Version: 1.1 +// Version: 1.7 +// Modified Date: 2026-04-11 (async function () { // ========================================================================= // 0. 动态加载数据 (基于 Genshin_Domains_SC_Live_Source.json) @@ -8,40 +9,30 @@ try { let rawContent = file.ReadTextSync(DB_FILENAME); - - if (!rawContent) { - throw new Error("读取文件返回空内容"); - } + if (!rawContent) throw new Error("读取文件返回空内容"); let sourceData = JSON.parse(rawContent); - - if (!sourceData || !sourceData.domains) { - throw new Error("JSON文件格式不正确,缺少 domains 字段"); - } + if (!sourceData || !sourceData.domains) throw new Error("JSON文件格式不正确,缺少 domains 字段"); - // --- 1. 转换角色天赋素材 --- + // 转换角色天赋素材 if (sourceData.domains.talent_books) { sourceData.domains.talent_books.forEach(item => { let domain = item.domain_name_sc; - let schedule = item.schedule; - if (schedule.Mon_Thu) MATERIAL_DB[schedule.Mon_Thu] = { domain: domain, idx: 1 }; - if (schedule.Tue_Fri) MATERIAL_DB[schedule.Tue_Fri] = { domain: domain, idx: 2 }; - if (schedule.Wed_Sat) MATERIAL_DB[schedule.Wed_Sat] = { domain: domain, idx: 3 }; + if (item.schedule.Mon_Thu) MATERIAL_DB[item.schedule.Mon_Thu] = { domain: domain, idx: 1 }; + if (item.schedule.Tue_Fri) MATERIAL_DB[item.schedule.Tue_Fri] = { domain: domain, idx: 2 }; + if (item.schedule.Wed_Sat) MATERIAL_DB[item.schedule.Wed_Sat] = { domain: domain, idx: 3 }; }); } - - // --- 2. 转换武器升级素材 --- + // 转换武器升级素材 if (sourceData.domains.weapon_materials) { sourceData.domains.weapon_materials.forEach(item => { let domain = item.domain_name_sc; - let schedule = item.schedule; - if (schedule.Mon_Thu) MATERIAL_DB[schedule.Mon_Thu] = { domain: domain, idx: 1 }; - if (schedule.Tue_Fri) MATERIAL_DB[schedule.Tue_Fri] = { domain: domain, idx: 2 }; - if (schedule.Wed_Sat) MATERIAL_DB[schedule.Wed_Sat] = { domain: domain, idx: 3 }; + if (item.schedule.Mon_Thu) MATERIAL_DB[item.schedule.Mon_Thu] = { domain: domain, idx: 1 }; + if (item.schedule.Tue_Fri) MATERIAL_DB[item.schedule.Tue_Fri] = { domain: domain, idx: 2 }; + if (item.schedule.Wed_Sat) MATERIAL_DB[item.schedule.Wed_Sat] = { domain: domain, idx: 3 }; }); } - - // --- 3. 转换圣遗物 (type: 'artifact') --- + // 转换圣遗物 if (sourceData.domains.artifacts) { sourceData.domains.artifacts.forEach(item => { let domain = item.domain_name_sc; @@ -49,9 +40,7 @@ MATERIAL_DB[key] = { domain: domain, type: "artifact" }; }); } - log.info(`【系统】成功加载外部数据文件: ${DB_FILENAME},包含 ${Object.keys(MATERIAL_DB).length} 条记录`); - } catch (e) { log.error(`【致命错误】无法读取或解析 ${DB_FILENAME}`); log.error(`错误详情: ${e.message}`); @@ -59,76 +48,102 @@ } // ========================================================================= - // 1. 读取并验证用户设置 (防呆机制) + // 1. 读取并验证用户设置 (全 input-text 防呆机制) // ========================================================================= let userConfig = settings; let enableDebug = userConfig.EnableDebug; + // --- 调试模式输出所有使用者设定参数 --- + if (enableDebug) { + log.info("[DEBUG] ====== 收到使用者设定参数 (User Config) ======"); + for (let key in userConfig) { + log.info(`[DEBUG] ${key}: ${userConfig[key]}`); + } + log.info("[DEBUG] =============================================="); + } + + let pForceRunMode = userConfig.ForceRunMode; + let pRunUntilDepleted = userConfig.RunUntilResinDepleted; + let pAutoArtifactSalvage = userConfig.AutoArtifactSalvage; + let pMaxArtifactStar = userConfig.MaxArtifactStar || "4"; + + // --- 1.1 秘境目标防呆 --- let pTalent = userConfig.TargetTalentMaterialName; let pWeapon = userConfig.TargetWeaponMaterialName; let pArtifact = userConfig.TargetArtifactName; - let pForceRunMode = userConfig.ForceRunMode; - let selectedCount = (pTalent ? 1 : 0) + (pWeapon ? 1 : 0) + (pArtifact ? 1 : 0); if (selectedCount === 0) { log.error("【配置错误】您未选择任何素材!请在天赋、武器或圣遗物中选择一项。"); return; } - if (selectedCount > 1) { log.error("【配置冲突】您同时选择了多种类型的素材!请只保留一项,将其余两项设为空。"); return; } - let pTargetMaterial = pTalent || pWeapon || pArtifact; - let pPartyName = userConfig.PartyName || ""; - let pRunUntilDepleted = userConfig.RunUntilResinDepleted; - let pAutoArtifactSalvage = userConfig.AutoArtifactSalvage; - let pMaxArtifactStar = userConfig.MaxArtifactStar || "4"; - - let pDomainName = ""; - let pSundaySelectedValue = ""; - let pCombatStrategyFile = userConfig.CombatStrategyFile || ""; - // --- 数值读取与防呆验证 --- + // --- 1.2 队伍名称防呆 (input-text) --- + let pPartyName = (userConfig.PartyName || "").toString().trim(); + if (pPartyName !== "") { + try { + new RegExp(pPartyName); // 测试正则表达式是否合法 + } catch (e) { + log.warn(`【配置警告】队伍名称的正则表达式语法错误: ${pPartyName},已重置为空 (不执行队伍切换)。`); + pPartyName = ""; + } + } + + // --- 1.3 战斗策略防呆 (select + input-text) --- + let pCombatStrategyType = (userConfig.CombatStrategyType || "").toString().trim(); + let pSpecifiedCombatStrategy = (userConfig.SpecifiedCombatStrategy || "").toString().trim(); + let pCombatStrategyPath = ""; + + if (pCombatStrategyType === "指定战斗策略") { + if (!pSpecifiedCombatStrategy) { + log.warn("【配置警告】您选择了'指定战斗策略'但未填写策略名称,系统将自动退回'根据队伍自动选择'。"); + } else if (/[\\/:*?"<>|]/.test(pSpecifiedCombatStrategy)) { + log.warn(`【配置警告】指定的战斗策略名称包含非法字元: ${pSpecifiedCombatStrategy},系统将自动退回'根据队伍自动选择'。`); + } else { + pCombatStrategyPath = pSpecifiedCombatStrategy; + } + } + + // --- 1.4 各项数值与树脂防呆 (input-text 与 select) --- let pOriginalAmount = parseInt(userConfig.OriginalResinAmount) || 0; let pOriginal40 = Math.floor(pOriginalAmount / 40); let pOriginal20 = Math.floor((pOriginalAmount % 40) / 20); - let pCondensed = parseInt(userConfig.CondensedResinUseCount) || 0; let pTransient = parseInt(userConfig.TransientResinUseCount) || 0; - // 脆弱树脂 (手动输入框防呆) + // 脆弱树脂 (input-text) let pFragileRaw = parseInt(userConfig.FragileResinUseCount); let pFragile = (isNaN(pFragileRaw) || pFragileRaw < 0) ? 0 : pFragileRaw; if (userConfig.FragileResinUseCount && (isNaN(pFragileRaw) || pFragileRaw < 0)) { log.warn("【配置警告】脆弱树脂刷取数量输入无效或为负数,已自动重置为 0。"); } - // 秘境轮数 (手动输入框防呆) + // 秘境轮数 (input-text) let pDomainRoundNumRaw = parseInt(userConfig.DomainRoundNum); let pDomainRoundNum = (isNaN(pDomainRoundNumRaw) || pDomainRoundNumRaw < 0) ? 0 : pDomainRoundNumRaw; if (userConfig.DomainRoundNum && (isNaN(pDomainRoundNumRaw) || pDomainRoundNumRaw < 0)) { log.warn("【配置警告】秘境刷取轮数输入无效,已自动重置为 0 (无限轮直至树脂耗尽)。"); } - // 战斗后等待时间 (手动输入框防呆) + // 战斗后等待时间 (input-text) let pFightEndDelayRaw = parseInt(userConfig.FightEndDelay); let pFightEndDelay = (isNaN(pFightEndDelayRaw) || pFightEndDelayRaw < 0) ? 5 : pFightEndDelayRaw; if (userConfig.FightEndDelay && (isNaN(pFightEndDelayRaw) || pFightEndDelayRaw < 0)) { log.warn("【配置警告】战斗完成后等待时间输入无效,已恢复默认值 5 秒。"); } - // 树脂刷取顺序防呆 (正则过滤与去重) + // 树脂刷取顺序 (input-text) let rawOrderStr = (userConfig.ResinUsageOrder || "").toString().trim(); - if (/[^12345]/.test(rawOrderStr) && !pRunUntilDepleted) { + if (/[^12345]/.test(rawOrderStr)) { log.warn(`【配置警告】树脂刷取顺序包含无效字符,非 1~5 的内容已被自动过滤。`); } - - // 仅保留1~5,并去除重复数字 let pOrderStr = [...new Set(rawOrderStr.replace(/[^12345]/g, '').split(''))].join(''); - if (rawOrderStr.replace(/[^12345]/g, '').length !== pOrderStr.length && !pRunUntilDepleted) { + if (rawOrderStr.replace(/[^12345]/g, '').length !== pOrderStr.length) { log.warn(`【配置警告】树脂刷取顺序中存在重复设定的数字,已自动去重处理为: ${pOrderStr}`); } @@ -141,7 +156,6 @@ else if (char === '5') priorityList.push("脆弱树脂"); } - // 零动作警告 if (!pRunUntilDepleted && pOriginalAmount === 0 && pCondensed === 0 && pTransient === 0 && pFragile === 0 && pDomainRoundNum === 0) { log.warn("【配置警告】您未设置任何树脂消耗数量,也未限制秘境轮数!脚本可能进本后无事可做。"); } @@ -151,6 +165,8 @@ // ========================================================================= const WEEK_MAP = ["日", "一", "二", "三", "四", "五", "六"]; let materialInfo = MATERIAL_DB[pTargetMaterial]; + let pDomainName = ""; + let pSundaySelectedValue = ""; if (!materialInfo) { log.error(`【数据错误】无法在数据库中找到项目:${pTargetMaterial}`); @@ -159,7 +175,6 @@ if (materialInfo.type === 'artifact') { pDomainName = materialInfo.domain; - pSundaySelectedValue = ""; log.info(`【圣遗物模式】目标:${pTargetMaterial}`); } else { let requiredIdx = materialInfo.idx; @@ -169,13 +184,11 @@ let serverOffsetMs = ServerTime.GetServerTimeZoneOffset(); let utcNow = Date.now(); let logicTimeMs = utcNow + serverOffsetMs - (4 * 60 * 60 * 1000); - let logicDate = new Date(logicTimeMs); - let dayOfWeek = logicDate.getUTCDay(); + let dayOfWeek = new Date(logicTimeMs).getUTCDay(); let dayStr = WEEK_MAP[dayOfWeek]; if (enableDebug) { - let serverTimeDate = new Date(utcNow + serverOffsetMs); - log.info(`[DEBUG] 游戏服务器时间: ${serverTimeDate.toUTCString()}`); + log.info(`[DEBUG] 游戏服务器时间: ${new Date(utcNow + serverOffsetMs).toUTCString()}`); } let isDateOpen = (dayOfWeek === 0) || @@ -194,63 +207,51 @@ // ========================================================================= // 3. 执行主流程 // ========================================================================= + let taskParam = new AutoDomainParam(pDomainRoundNum); + taskParam.DomainName = pDomainName; + taskParam.PartyName = pPartyName; + taskParam.AutoArtifactSalvage = pAutoArtifactSalvage; + taskParam.MaxArtifactStar = pMaxArtifactStar; + taskParam.SundaySelectedValue = pSundaySelectedValue; - // 处理战斗策略路径 - let pCombatStrategyPath = ""; - if (pCombatStrategyFile) { - // 自动补充 .txt 后缀 - if (!pCombatStrategyFile.toLowerCase().endsWith(".txt")) { - pCombatStrategyFile += ".txt"; + // 调用底层方法以支持路径转换,并将回传值賦予屬性 + taskParam.CombatStrategyPath = taskParam.SetCombatStrategyPath(pCombatStrategyPath); + + taskParam.SpecifyResinUse = !pRunUntilDepleted; + + // 樹脂數量與警告邏輯 + if (!pRunUntilDepleted) { + taskParam.OriginalResin20UseCount = pOriginal20; + taskParam.OriginalResin40UseCount = pOriginal40; + taskParam.OriginalResinUseCount = 0; + taskParam.CondensedResinUseCount = pCondensed; + taskParam.TransientResinUseCount = pTransient; + taskParam.FragileResinUseCount = pFragile; + + if (pOrderStr === "") { + log.warn("【配置警告】树脂刷取顺序完全留空!在指定次数模式下,脚本将不会消耗任何树脂。"); + } else { + if (pCondensed > 0 && !pOrderStr.includes('1')) log.warn("【配置警告】浓缩树脂数量大于0,但未配置在刷取顺序(1)中,将被底层忽略!"); + if (pOriginal40 > 0 && !pOrderStr.includes('2')) log.warn("【配置警告】原粹树脂需要消耗40体力,但未配置在刷取顺序(2)中,将被底层忽略!"); + if (pOriginal20 > 0 && !pOrderStr.includes('3')) log.warn("【配置警告】原粹树脂需要消耗20体力,但未配置在刷取顺序(3)中,将被底层忽略!"); + if (pTransient > 0 && !pOrderStr.includes('4')) log.warn("【配置警告】须臾树脂数量大于0,但未配置在刷取顺序(4)中,将被底层忽略!"); + if (pFragile > 0 && !pOrderStr.includes('5')) log.warn("【配置警告】脆弱树脂数量大于0,但未配置在刷取顺序(5)中,将被底层忽略!"); } - pCombatStrategyPath = `User/AutoFight/${pCombatStrategyFile}`; - log.info(`【战斗策略】使用战斗策略:${pCombatStrategyFile}`); } else { - log.info(`【战斗策略】使用默认策略`); + if (pOrderStr === "") { + log.warn("【配置警告】树脂刷取顺序完全留空!在耗尽模式下,脚本将不会消耗任何树脂。"); + } } - + + // 統一由 priorityList 決定刷取順序 (包含耗盡模式) + if (priorityList.length > 0) { + taskParam.SetResinPriorityList(...priorityList); + } else { + taskParam.SetResinPriorityList(""); + } + while (true) { try { - let taskParam = new AutoDomainParam(pDomainRoundNum); - taskParam.DomainName = pDomainName; - taskParam.PartyName = pPartyName; - taskParam.AutoArtifactSalvage = pAutoArtifactSalvage; - taskParam.MaxArtifactStar = pMaxArtifactStar; - taskParam.SundaySelectedValue = pSundaySelectedValue; - taskParam.CombatStrategyPath = pCombatStrategyPath; - - taskParam.SpecifyResinUse = !pRunUntilDepleted; - - if (!pRunUntilDepleted) { - // 赋值各类型树脂次数 - taskParam.OriginalResin20UseCount = pOriginal20; - taskParam.OriginalResin40UseCount = pOriginal40; - taskParam.OriginalResinUseCount = 0; // 核心逻辑已改用 20/40 独立计算,此项设为0 - taskParam.CondensedResinUseCount = pCondensed; - taskParam.TransientResinUseCount = pTransient; - taskParam.FragileResinUseCount = pFragile; - - // 逻辑冲突警告检查 - if (pOrderStr === "") { - log.warn("【配置警告】树脂刷取顺序完全留空!在指定次数模式下,脚本将不会消耗任何树脂。"); - } else { - if (pCondensed > 0 && !pOrderStr.includes('1')) log.warn("【配置警告】浓缩树脂数量大于0,但未配置在刷取顺序(1)中,将被底层忽略!"); - if (pOriginal40 > 0 && !pOrderStr.includes('2')) log.warn("【配置警告】原粹树脂需要消耗40体力,但未配置在刷取顺序(2)中,将被底层忽略!"); - if (pOriginal20 > 0 && !pOrderStr.includes('3')) log.warn("【配置警告】原粹树脂需要消耗20体力,但未配置在刷取顺序(3)中,将被底层忽略!"); - if (pTransient > 0 && !pOrderStr.includes('4')) log.warn("【配置警告】须臾树脂数量大于0,但未配置在刷取顺序(4)中,将被底层忽略!"); - if (pFragile > 0 && !pOrderStr.includes('5')) log.warn("【配置警告】脆弱树脂数量大于0,但未配置在刷取顺序(5)中,将被底层忽略!"); - } - - // 传入自定义优先级 - if (priorityList.length > 0) { - taskParam.SetResinPriorityList(...priorityList); - } else { - // 若留空,传递空字串防止报错 - taskParam.SetResinPriorityList(""); - } - } else { - taskParam.SetResinPriorityList("浓缩树脂", "原粹树脂"); - } - await dispatcher.RunAutoDomainTask(taskParam); if (pFightEndDelay > 0) { @@ -260,6 +261,24 @@ break; } catch (ex) { let msg = ex.message || ""; + + // --- 战斗策略档案不存在的降级重试逻辑 --- + if (msg.includes("战斗脚本文件不存在")) { + if (taskParam.CombatStrategyPath && taskParam.CombatStrategyPath !== "") { + log.warn(`[脚本] 找不到指定的战斗策略档案!`); + log.warn(`[脚本] 已触发降级机制:退回【根据队伍自动选择】模式,3 秒后重新启动任务...`); + + // 调用底层方法正确切换为目录路径,并将回传值賦予屬性 + taskParam.CombatStrategyPath = taskParam.SetCombatStrategyPath(""); + + await sleep(3000); + continue; + } else { + log.error("[脚本] 自动匹配战斗脚本失败:请检查 User/AutoFight 目录下是否有 txt 脚本,且脚本内角色是否符合当前队伍。"); + break; + } + } + if (msg.includes("背包物品已满") || msg.includes("未检测到秘境结束")) { log.warn(`[脚本] 任务可能已完成,但检测到: ${msg}`); break; @@ -279,4 +298,4 @@ } } } -})(); \ No newline at end of file +})(); diff --git a/repo/js/AutoDomainCustomizable/manifest.json b/repo/js/AutoDomainCustomizable/manifest.json index ca6149f08..5b1c9d78a 100644 --- a/repo/js/AutoDomainCustomizable/manifest.json +++ b/repo/js/AutoDomainCustomizable/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "传送并自动秘境(增强版)", - "version": "0.8", + "version": "0.10", "bgi_version": "0.57.0", "description": "BetterGI自带脚本的增强版,用于传送后并执行自动秘境。秘境中角色死亡复活后继续回去战斗。支持自定义各项参数(如树脂设置、自动废弃圣遗物、轮数设置等)与周期性素材刷取。(本脚本由AI辅助生成)", "authors": [ diff --git a/repo/js/AutoDomainCustomizable/settings.json b/repo/js/AutoDomainCustomizable/settings.json index 865ecd5bd..7d21a47f7 100644 --- a/repo/js/AutoDomainCustomizable/settings.json +++ b/repo/js/AutoDomainCustomizable/settings.json @@ -92,16 +92,10 @@ "label": "自动切换到指定队伍 (支持正则)", "default": "" }, - { - "name": "CombatStrategyFile", - "type": "input-text", - "label": "战斗策略", - "default": "" - }, { "name": "RunUntilResinDepleted", "type": "checkbox", - "label": "刷取至树脂耗尽 (优先用原粹后用浓缩)", + "label": "刷取至树脂耗尽 (依树脂刷取顺序)", "default": false }, { @@ -150,6 +144,19 @@ "options": ["1", "2", "3", "4"], "default": "4" }, + { + "name": "CombatStrategyType", + "type": "select", + "label": "战斗策略选择", + "options": ["根据队伍自动选择(指定策略无效)", "指定战斗策略"], + "default": "根据队伍自动选择(指定策略无效)" + }, + { + "name": "SpecifiedCombatStrategy", + "type": "input-text", + "label": "指定战斗策略名称 (不含.txt)", + "default": "" + }, { "name": "FightEndDelay", "type": "input-text", @@ -168,4 +175,4 @@ "label": "启用调试模式", "default": false } -] \ No newline at end of file +]