diff --git a/docs/zh-cn/manual/introduction/combat.md b/docs/zh-cn/manual/introduction/combat.md
index 21cf3a5613..4495460f39 100644
--- a/docs/zh-cn/manual/introduction/combat.md
+++ b/docs/zh-cn/manual/introduction/combat.md
@@ -7,18 +7,18 @@ icon: hugeicons:brain-02
## 常规设置
-- `药剂恢复` + `源石恢复` 和 `指定次数`、`指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止理智作战。
- - `药剂恢复` 指定补充几瓶理智(可能一次吃多瓶药)。
+- `使用药剂` + `使用源石` 和 `指定次数`、`指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止理智作战。
+ - `使用药剂` 指定补充几瓶理智(可能一次吃多瓶药)。
- `源石恢复` 指定碎几颗石头(一次一颗),当仓库中有理智药时不会碎石。
- `指定次数` 指定刷多少次指定关卡(例如“刷 15 次后停止”)。
- `指定材料` 指定刷多少个指定材料(例如“获取 5 个固源岩后停止”)。
- `指定材料` 与 `关卡选择` 是两个互相独立的逻辑。`指定材料` 只是以材料个数作为任务完成依据,并不会自动导航到相应关卡。
-- `源石恢复` 只会在 `药剂恢复` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `源石恢复` 之后,MAA 会将 `药剂恢复` 的次数锁定为 999,确保将理智药吃光,以避免跳过 `源石恢复` 判断。
+- `使用源石` 只会在 `使用药剂` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `使用源石` 之后,MAA 会将 `使用药剂` 的次数锁定为 999,确保将理智药吃光,以避免跳过 `使用源石` 判断。
::: details 例子
-| 药剂恢复 | 源石恢复 | 指定次数 | 指定材料 | 结果 |
+| 使用药剂 | 使用源石 | 指定次数 | 指定材料 | 结果 |
| :------: | :------: | :------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| | | | | 刷完现有理智即结束。 |
| 2 | | | | 先刷完现有理智,然后吃一次理智药,一共吃 `2` 次,刷完理智后结束。 |
diff --git a/docs/zh-cn/protocol/task-schema.md b/docs/zh-cn/protocol/task-schema.md
index 189f03f095..4d1a3fd7f4 100644
--- a/docs/zh-cn/protocol/task-schema.md
+++ b/docs/zh-cn/protocol/task-schema.md
@@ -84,7 +84,7 @@ JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直
"reduceOtherTimes": ["OtherTaskName1", "OtherTaskName2"],
// 可选项,执行后减少其他任务的执行计数。
- // 例如执行了药剂恢复,则说明上一次点击蓝色开始行动按钮没生效,所以蓝色开始行动要-1
+ // 例如执行了使用理智药,则说明上一次点击蓝色开始行动按钮没生效,所以蓝色开始行动要-1
"specificRect": [100, 100, 50, 50],
// 当 action 为 ClickRect 时有效且必选,表示指定的点击位置(范围内随机一点)。
diff --git a/src/MaaCore/Common/AsstTypes.h b/src/MaaCore/Common/AsstTypes.h
index 40bc2d06ac..610d02c29a 100644
--- a/src/MaaCore/Common/AsstTypes.h
+++ b/src/MaaCore/Common/AsstTypes.h
@@ -593,7 +593,7 @@ struct TaskPipelineInfo
TaskList sub; // 子任务(列表)
TaskList on_error_next; // 任务出错之后要去执行什么
TaskList exceeded_next; // 达到最多次数了之后,下一个可能的任务(列表)
- TaskList reduce_other_times; // 执行了该任务后,需要减少别的任务的执行次数。例如执行了药剂恢复,
+ TaskList reduce_other_times; // 执行了该任务后,需要减少别的任务的执行次数。例如执行了使用理智药,
// 则说明上一次点击蓝色开始行动按钮没生效,所以蓝色开始行动要-1
};
diff --git a/src/MaaCore/Task/Interface/CopilotTask.cpp b/src/MaaCore/Task/Interface/CopilotTask.cpp
index 3a3a7e5acc..738eca9e4d 100644
--- a/src/MaaCore/Task/Interface/CopilotTask.cpp
+++ b/src/MaaCore/Task/Interface/CopilotTask.cpp
@@ -63,7 +63,7 @@ bool asst::CopilotTask::set_params(const json::value& params)
return false;
}
- bool use_sanity_potion = params.get("use_sanity_potion", false); // 是否药剂恢复
+ bool use_sanity_potion = params.get("use_sanity_potion", false); // 是否使用理智药
bool with_formation = params.get("formation", false); // 是否使用自动编队
int formation_index = params.get("formation_index", 0); // 选择第几个编队,0为不选择
if (!params.contains("formation_index") && params.contains("select_formation")) {
diff --git a/src/MaaCore/Task/ProcessTask.cpp b/src/MaaCore/Task/ProcessTask.cpp
index e952d37fda..1577f641be 100644
--- a/src/MaaCore/Task/ProcessTask.cpp
+++ b/src/MaaCore/Task/ProcessTask.cpp
@@ -283,7 +283,7 @@ ProcessTask::NodeStatus ProcessTask::run_task(const HitDetail& hits)
status()->set_number(Status::ProcessTaskLastTimePrefix + task_name, time(nullptr));
// 减少其他任务的执行次数
- // 例如,进入药剂恢复的界面了,相当于上一次点蓝色开始行动没生效
+ // 例如,进入使用理智药的界面了,相当于上一次点蓝色开始行动没生效
// 所以要给蓝色开始行动的次数减一
for (const std::string& other_task : task->reduce_other_times) {
if (int& v = m_exec_times[other_task]; v > 0) {
diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs
index 3c7afe31f8..11efc99a5c 100644
--- a/src/MaaWpfGui/Main/AsstProxy.cs
+++ b/src/MaaWpfGui/Main/AsstProxy.cs
@@ -1983,11 +1983,13 @@ public class AsstProxy
case "BattleFormationOperUnavailable":
{
var oper_name = DataHelper.GetLocalizedCharacterName(subTaskDetails!["oper_name"]?.ToString());
- var requirement_type = subTaskDetails["requirement_type"]?.ToString() == "module"
- ? LocalizationHelper.GetString("BattleFormationModuleUnavailable")
- : subTaskDetails["requirement_type"]?.ToString() ?? "UnknownRequirementType";
+ var requirement_type = subTaskDetails["requirement_type"]?.ToString() switch {
+ "skill_level" => LocalizationHelper.GetString("BattleFormationOperUnavailable.SkillLevel"),
+ "module" => LocalizationHelper.GetString("BattleFormationOperUnavailable.Module"),
+ _ => subTaskDetails["requirement_type"]?.ToString() ?? "UnknownRequirementType",
+ };
- Instances.CopilotViewModel.AddLog(string.Format(LocalizationHelper.GetString("BattleFormationOperUnavailable"), oper_name, requirement_type), Instances.CopilotViewModel.IgnoreRequirements ? UiLogColor.Warning : UiLogColor.Error);
+ Instances.CopilotViewModel.AddLog(LocalizationHelper.GetStringFormat("BattleFormationOperUnavailable", oper_name ?? string.Empty, requirement_type), Instances.CopilotViewModel.IgnoreRequirements ? UiLogColor.Warning : UiLogColor.Error);
break;
}
diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml
index 749a166009..0897faf444 100644
--- a/src/MaaWpfGui/Res/Localizations/en-us.xaml
+++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml
@@ -1190,7 +1190,8 @@ Right-click to clear inactive jobs
Formation parse failed
Selected:
{key=Operator} unavailable: {0}, reason: {1}
- Required module not unlocked
+ Skill level too low
+ Required module not unlocked
Step: {0} {1}
Elapsed time: {0}ms
Deploy
diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml
index 3017ad81ce..6ae77be66b 100644
--- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml
+++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml
@@ -1191,7 +1191,8 @@ C:\\leidian\\LDPlayer9
フォーメーション解析に失敗しました
{key=Operator}を選択:
{key=Operator}が使用できません: {0}、理由: {1}
- 必要なモジュールが未解除
+ スキルレベルが低すぎる
+ 必要なモジュールが未解除
現在の手順: {0} {1}
経過時間: {0}ms
配置
diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml
index 9e99ade3eb..c934ee7c53 100644
--- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml
+++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml
@@ -1192,7 +1192,8 @@ C:\\leidian\\LDPlayer9
편성 분석에 실패했습니다
{key=Operator}를 선택:
사용 불가 {key=Operator}: {0}, 사유: {1}
- 필요한 모듈이 잠금 해제되지 않음
+ 스킬 레벨이 너무 낮음
+ 필요한 모듈이 잠금 해제되지 않음
현재 단계: {0} {1}
경과 시간: {0}ms
배치
diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml
index 73b51be664..9b254db13f 100644
--- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml
+++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml
@@ -704,8 +704,8 @@ C:\\leidian\\LDPlayer9。\n
停止
等待 & 停止
- 药剂恢复
- 源石恢复
+ 使用药剂
+ 使用源石
指定次数
指定材料
刷取数量
@@ -1191,7 +1191,8 @@ C:\\leidian\\LDPlayer9。\n
编队解析失败
选择{key=Operator}:
{key=Operator}不可用: {0}, 原因: {1}
- 所需模组未解锁
+ 技能等级不足
+ 所需模组未解锁
当前步骤: {0} {1}
当前计时器: {0}ms
部署
diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml
index f06cbd4d7f..0086f3b5c4 100644
--- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml
+++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml
@@ -1191,7 +1191,8 @@ C:\\leidian\\LDPlayer9。\n
編隊解析失敗
選擇{key=Operator}:
{key=Operator}不可用: {0}, 原因: {1}
- 所需模組未解鎖
+ 技能等級不足
+ 所需模組未解鎖
目前步驟: {0} {1}
經過時間: {0}ms
部署