mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-15 17:30:27 +08:00
feat: 使用 ocrReplace 重写肉鸽选点策略
This commit is contained in:
@@ -10435,9 +10435,35 @@
|
||||
},
|
||||
"Phantom@Roguelike@LevelName_mode0": {
|
||||
"text": [
|
||||
"迷雾歧途",
|
||||
"噩梦之始",
|
||||
"渴欲大厅"
|
||||
"_aggressive",
|
||||
"_pragmatic",
|
||||
"_default"
|
||||
],
|
||||
"ocrReplace": [
|
||||
[
|
||||
"迷雾歧途",
|
||||
"_aggressive"
|
||||
],
|
||||
[
|
||||
"落阳庭院",
|
||||
"_aggressive"
|
||||
],
|
||||
[
|
||||
"故土残躯",
|
||||
"_aggressive"
|
||||
],
|
||||
[
|
||||
"噩梦之始",
|
||||
"_pragmatic"
|
||||
],
|
||||
[
|
||||
"血月长廊",
|
||||
"_pragmatic"
|
||||
],
|
||||
[
|
||||
"渴欲大厅",
|
||||
"_default"
|
||||
]
|
||||
]
|
||||
},
|
||||
"Phantom@Roguelike@LevelName_mode4": {
|
||||
@@ -10958,9 +10984,39 @@
|
||||
},
|
||||
"Mizuki@Roguelike@LevelName_mode0": {
|
||||
"text": [
|
||||
"天光海岸",
|
||||
"波涛略地",
|
||||
"失尘岩洞"
|
||||
"_aggressive",
|
||||
"_pragmatic",
|
||||
"_default"
|
||||
],
|
||||
"ocrReplace": [
|
||||
[
|
||||
"天光海岸",
|
||||
"_aggressive"
|
||||
],
|
||||
[
|
||||
"离岸孤岛",
|
||||
"_aggressive"
|
||||
],
|
||||
[
|
||||
"波涛略地",
|
||||
"_pragmatic"
|
||||
],
|
||||
[
|
||||
"隐秘温床",
|
||||
"_pragmatic"
|
||||
],
|
||||
[
|
||||
"失尘岩洞",
|
||||
"_default"
|
||||
],
|
||||
[
|
||||
"幽海丛林",
|
||||
"_default"
|
||||
],
|
||||
[
|
||||
"绀碧摇篮",
|
||||
"_SKIP_"
|
||||
]
|
||||
]
|
||||
},
|
||||
"Mizuki@Roguelike@LevelName_mode4": {
|
||||
@@ -11537,9 +11593,39 @@
|
||||
},
|
||||
"Sami@Roguelike@LevelName_mode0": {
|
||||
"text": [
|
||||
"初霜湖泽",
|
||||
"昧明冻土",
|
||||
"无瑕花园"
|
||||
"_aggressive",
|
||||
"_pragmatic",
|
||||
"_default"
|
||||
],
|
||||
"ocrReplace": [
|
||||
[
|
||||
"初霜湖泽",
|
||||
"_aggressive"
|
||||
],
|
||||
[
|
||||
"密静林地",
|
||||
"_aggressive"
|
||||
],
|
||||
[
|
||||
"昧明冻土",
|
||||
"_pragmatic"
|
||||
],
|
||||
[
|
||||
"积冰岩骸",
|
||||
"_pragmatic"
|
||||
],
|
||||
[
|
||||
"无暇花园",
|
||||
"_default"
|
||||
],
|
||||
[
|
||||
"远见之构",
|
||||
"_default"
|
||||
],
|
||||
[
|
||||
"深埋迷境",
|
||||
"_SKIP_"
|
||||
]
|
||||
]
|
||||
},
|
||||
"Sami@Roguelike@LevelName_mode4": {
|
||||
|
||||
@@ -81,6 +81,8 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
|
||||
m_shopping_plugin_ptr->set_roguelike_theme(theme);
|
||||
m_skill_plugin_ptr->set_roguelike_theme(theme);
|
||||
m_stage_encounter_plugin_ptr->set_roguelike_theme(theme);
|
||||
m_strategy_change_plugin_ptr->set_roguelike_theme(theme);
|
||||
|
||||
m_roguelike_task_ptr->set_tasks({ theme + "@Roguelike@Begin" });
|
||||
|
||||
// 0 - 刷经验,尽可能稳定地打更多层数,不期而遇采用激进策略
|
||||
|
||||
@@ -38,38 +38,28 @@ bool asst::RoguelikeStrategyChangeTaskPlugin::_run()
|
||||
std::string theme = m_roguelike_theme;
|
||||
std::string mode = status()->get_properties(Status::RoguelikeMode).value();
|
||||
|
||||
if (mode == "0") {
|
||||
auto image = ctrler()->get_image();
|
||||
OCRer analyzer(image);
|
||||
analyzer.set_task_info(theme + "@Roguelike@LevelName_mode0");
|
||||
if (!analyzer.analyze()) {
|
||||
return false;
|
||||
}
|
||||
const auto& reached_level = analyzer.get_result().front().text;
|
||||
auto& levelname_list = Task.get<OcrTaskInfo>(theme + "@Roguelike@LevelName_mode0")->text;
|
||||
for (int i = 0; i < levelname_list.size(); i++) {
|
||||
if (levelname_list[i] == reached_level) {
|
||||
switch (i) {
|
||||
case 0:
|
||||
// 第一层
|
||||
Task.set_task_base(theme + "@Roguelike@Stages", theme + "@Roguelike@Stages_aggressive");
|
||||
break;
|
||||
case 1:
|
||||
// 中间层,发育
|
||||
Task.set_task_base(theme + "@Roguelike@Stages", theme + "@Roguelike@Stages_pragmatic");
|
||||
break;
|
||||
case 2:
|
||||
// 高层,避战
|
||||
Task.set_task_base(theme + "@Roguelike@Stages", theme + "@Roguelike@Stages_default");
|
||||
break;
|
||||
default:
|
||||
Task.set_task_base(theme + "@Roguelike@Stages", theme + "@Roguelike@Stages_default");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
std::string task_name = theme + "@Roguelike@LevelName_mode" + mode;
|
||||
if (Task.get(task_name) == nullptr) {
|
||||
Log.info("Task", task_name, "doesn't exist.");
|
||||
return false;
|
||||
}
|
||||
|
||||
OCRer analyzer(ctrler()->get_image());
|
||||
analyzer.set_task_info(task_name);
|
||||
if (!analyzer.analyze()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string stages_task_name = theme + "@Roguelike@Stages";
|
||||
std::string current_strategy = analyzer.get_result().front().text;
|
||||
std::string strategy_task_name = stages_task_name + current_strategy;
|
||||
|
||||
if (Task.get(strategy_task_name) == nullptr) {
|
||||
Log.error("Strategy task", strategy_task_name, "doesn't exist!");
|
||||
return false;
|
||||
}
|
||||
|
||||
Task.set_task_base(stages_task_name, strategy_task_name);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user