From a07dffbeda2d29d8f5d4087101ec4435feb56ad1 Mon Sep 17 00:00:00 2001 From: positnuec <93694981+positnuec@users.noreply.github.com> Date: Mon, 9 Mar 2026 13:42:55 +0800 Subject: [PATCH] Add: Auto recommend submarine fleet in hard mode --- config/template.json | 12 +++++++ module/config/argument/args.json | 48 ++++++++++++++++++++++++++++ module/config/argument/argument.yaml | 1 + module/config/config_generated.py | 1 + module/config/i18n/en-US.json | 4 +++ module/config/i18n/ja-JP.json | 4 +++ module/config/i18n/zh-CN.json | 4 +++ module/config/i18n/zh-TW.json | 4 +++ module/map/map_fleet_preparation.py | 6 ++++ 9 files changed, 84 insertions(+) diff --git a/config/template.json b/config/template.json index 837fba26b..3c2eb57ce 100644 --- a/config/template.json +++ b/config/template.json @@ -189,6 +189,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -266,6 +267,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -343,6 +345,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -433,6 +436,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -511,6 +515,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -588,6 +593,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -825,6 +831,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -906,6 +913,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -987,6 +995,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -1068,6 +1077,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -1149,6 +1159,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" @@ -1226,6 +1237,7 @@ }, "Submarine": { "Fleet": 0, + "AutoRecommend": false, "Mode": "do_not_use", "AutoSearchMode": "sub_standby", "DistanceToBoss": "2_grid_to_boss" diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 759dfbbd7..074d3f9e2 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -880,6 +880,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -1270,6 +1274,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -1660,6 +1668,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -2149,6 +2161,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -2553,6 +2569,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -2959,6 +2979,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -4335,6 +4359,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -4759,6 +4787,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -5183,6 +5215,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -5607,6 +5643,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -6031,6 +6071,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", @@ -6445,6 +6489,10 @@ 2 ] }, + "AutoRecommend": { + "type": "checkbox", + "value": false + }, "Mode": { "type": "select", "value": "do_not_use", diff --git a/module/config/argument/argument.yaml b/module/config/argument/argument.yaml index 6796e3780..cd2248e47 100644 --- a/module/config/argument/argument.yaml +++ b/module/config/argument/argument.yaml @@ -208,6 +208,7 @@ Submarine: Fleet: value: 0 option: [ 0, 1, 2 ] + AutoRecommend: false Mode: value: do_not_use option: [ do_not_use, hunt_only, boss_only, hunt_and_boss, every_combat ] diff --git a/module/config/config_generated.py b/module/config/config_generated.py index 9efde7720..424d46876 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -110,6 +110,7 @@ class GeneratedConfig: # Group `Submarine` Submarine_Fleet = 0 # 0, 1, 2 + Submarine_AutoRecommend = False Submarine_Mode = 'do_not_use' # do_not_use, hunt_only, boss_only, hunt_and_boss, every_combat Submarine_AutoSearchMode = 'sub_standby' # sub_standby, sub_auto_call Submarine_DistanceToBoss = '2_grid_to_boss' # to_boss_position, 1_grid_to_boss, 2_grid_to_boss, use_open_ocean_support diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index f84beb8bf..3396bee47 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -1023,6 +1023,10 @@ "1": "1", "2": "2" }, + "AutoRecommend": { + "name": "Hard Mode Auto-Recommend", + "help": "Auto-fills empty submarine fleet if using via recommend button in Hard Mode" + }, "Mode": { "name": "Submarine Mode", "help": "Effective only when auto search disabled. Reminder: 'Hunt and Boss' is actually a mix of 'Hunt Only' and 'Boss Only', it does hunt and summon submarines at boss if available.", diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index c8f65fe0a..b16352348 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -1023,6 +1023,10 @@ "1": "1", "2": "2" }, + "AutoRecommend": { + "name": "Submarine.AutoRecommend.name", + "help": "Submarine.AutoRecommend.help" + }, "Mode": { "name": "Submarine.Mode.name", "help": "Submarine.Mode.help", diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index d52fc3d31..1d98fd6d9 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -1023,6 +1023,10 @@ "1": "1 ", "2": "2 " }, + "AutoRecommend": { + "name": "推荐编队", + "help": "困难模式下,如果使用潜艇编队但未配置,会点击推荐自动编队" + }, "Mode": { "name": "潜艇出击方案", "help": "仅在自律寻敌关闭的情况下生效,提醒: '狩猎及BOSS战'为'仅狩猎'与'仅BOSS战'的混合,它会在道中进行狩猎打击,并在BOSS战尝试召唤潜艇。", diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index 596e6b109..2cd35db6a 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -1023,6 +1023,10 @@ "1": "1", "2": "2" }, + "AutoRecommend": { + "name": "推薦編隊", + "help": "困難模式下,如果使用潛艦編隊但未配置,會點擊推薦自動編隊" + }, "Mode": { "name": "潛艇出擊方案", "help": "僅在自律尋敵關閉的情況下生效,提醒: '狩獵及BOSS戰'為'僅狩獵'與'僅BOSS戰'的混合,它會在道中進行狩獵打擊,並在BOSS戰嘗試召喚潛艇。", diff --git a/module/map/map_fleet_preparation.py b/module/map/map_fleet_preparation.py index 8c79cd6df..8a8536ea0 100644 --- a/module/map/map_fleet_preparation.py +++ b/module/map/map_fleet_preparation.py @@ -342,6 +342,12 @@ class FleetPreparation(InfoHandler): if self.config.Fleet_Fleet2: fleet_2.raise_hard_not_satisfied() if self.config.Submarine_Fleet: + if self.config.Submarine_AutoRecommend and h3 is False: + logger.info('AutoRecommend enabled, click recommend to form submarine fleet') + submarine.recommend() + self.device.screenshot() + h3 = submarine.is_hard_satisfied() + logger.info(f'Hard satisfied after recommend: Submarine: {h3}') submarine.raise_hard_not_satisfied() # Skip fleet preparation in hard mode