From 9f3cf45b155534588a33f9e3747197f701f61bb4 Mon Sep 17 00:00:00 2001 From: ArecaSapling <115386623+sui-feng-cb@users.noreply.github.com> Date: Fri, 10 Jul 2026 09:06:13 +0800 Subject: [PATCH 1/3] =?UTF-8?q?Fix:=20replace=20character=20=C3=AD=20in=20?= =?UTF-8?q?Valparaiso=20(#5798)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dev_tools/research_extractor.py | 6 +++--- module/research/project_data.py | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dev_tools/research_extractor.py b/dev_tools/research_extractor.py index be28270b0..bdd80c0b1 100644 --- a/dev_tools/research_extractor.py +++ b/dev_tools/research_extractor.py @@ -87,10 +87,10 @@ class TechnologyTemplate: for project in self.projects.values(): project.task.name = DIC_TRANSLATION.get(project.task.name, project.task.name) for item in project.input: - # Change Ägir to Agir - item.name = DIC_TRANSLATION.get(item.name, item.name).replace('Ä', 'A') + # Change Ägir to Agir, Valparaíso to Valparaiso + item.name = DIC_TRANSLATION.get(item.name, item.name).replace('Ä', 'A').replace('í', 'i') for item in project.output: - item.name = DIC_TRANSLATION.get(item.name, item.name).replace('Ä', 'A') + item.name = DIC_TRANSLATION.get(item.name, item.name).replace('Ä', 'A').replace('í', 'i') def load_projects(self, loader): tech = loader.load('sharecfg/technology_data_template.lua') diff --git a/module/research/project_data.py b/module/research/project_data.py index 0b84e90d2..cb1c56b92 100644 --- a/module/research/project_data.py +++ b/module/research/project_data.py @@ -425,12 +425,12 @@ LIST_RESEARCH_PROJECT = [ {'name': 'G-412-MI', 'series': 9, 'time': 5400, 'task': '', 'input': [{'name': 'Coins', 'amount': 1500}], 'output': [{'name': 'Random Blueprint'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T2'}]}, {'name': 'G-236-MI', 'series': 9, 'time': 9000, 'task': '', 'input': [{'name': 'Coins', 'amount': 3000}], 'output': [{'name': 'Random Blueprint'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T2'}]}, {'name': 'G-531-MI', 'series': 9, 'time': 14400, 'task': '', 'input': [{'name': 'Coins', 'amount': 6000}], 'output': [{'name': 'Random Blueprint'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, - {'name': 'D-737-MI', 'series': 9, 'time': 9000, 'task': '', 'input': [{'name': 'Coins', 'amount': 3000}], 'output': [{'name': 'Blueprint - Valparaíso'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T2'}]}, + {'name': 'D-737-MI', 'series': 9, 'time': 9000, 'task': '', 'input': [{'name': 'Coins', 'amount': 3000}], 'output': [{'name': 'Blueprint - Valparaiso'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T2'}]}, {'name': 'D-781-MI', 'series': 9, 'time': 9000, 'task': '', 'input': [{'name': 'Coins', 'amount': 3000}], 'output': [{'name': 'Blueprint - Max Immelmann'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T2'}]}, {'name': 'D-732-MI', 'series': 9, 'time': 9000, 'task': '', 'input': [{'name': 'Coins', 'amount': 3000}], 'output': [{'name': 'Blueprint - Duncan'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T2'}]}, {'name': 'D-740-MI', 'series': 9, 'time': 9000, 'task': '', 'input': [{'name': 'Coins', 'amount': 3000}], 'output': [{'name': 'Blueprint - Takahashi'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T2'}]}, {'name': 'D-747-MI', 'series': 9, 'time': 9000, 'task': '', 'input': [{'name': 'Coins', 'amount': 3000}], 'output': [{'name': 'Blueprint - Orage'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T2'}]}, - {'name': 'D-337-MI', 'series': 9, 'time': 18000, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}], 'output': [{'name': 'Blueprint - Valparaíso'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, + {'name': 'D-337-MI', 'series': 9, 'time': 18000, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}], 'output': [{'name': 'Blueprint - Valparaiso'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-381-MI', 'series': 9, 'time': 18000, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}], 'output': [{'name': 'Blueprint - Max Immelmann'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-332-MI', 'series': 9, 'time': 18000, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}], 'output': [{'name': 'Blueprint - Duncan'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-340-MI', 'series': 9, 'time': 18000, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}], 'output': [{'name': 'Blueprint - Takahashi'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, @@ -657,13 +657,13 @@ LIST_RESEARCH_PROJECT = [ {'name': 'C-038-RF', 'series': 9, 'time': 43200, 'task': '', 'input': [], 'output': [{'name': 'Random Blueprint'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}, {'name': 'Coins'}]}, {'name': 'B-351-RF', 'series': 9, 'time': 14400, 'task': 'Clear Chapter 11 or onward stages for 3 times on Normal Mode ', 'input': [], 'output': [{'name': 'Random Blueprint'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'B-397-RF', 'series': 9, 'time': 14400, 'task': 'Clear Chapter 12 or onward stages for 3 times on Normal Mode ', 'input': [], 'output': [{'name': 'Random Blueprint'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, - {'name': 'D-437-RF', 'series': 9, 'time': 28800, 'task': '', 'input': [{'name': 'Coins', 'amount': 8000}], 'output': [{'name': 'Blueprint - Valparaíso'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, + {'name': 'D-437-RF', 'series': 9, 'time': 28800, 'task': '', 'input': [{'name': 'Coins', 'amount': 8000}], 'output': [{'name': 'Blueprint - Valparaiso'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-481-RF', 'series': 9, 'time': 28800, 'task': '', 'input': [{'name': 'Coins', 'amount': 8000}], 'output': [{'name': 'Blueprint - Max Immelmann'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-432-RF', 'series': 9, 'time': 28800, 'task': '', 'input': [{'name': 'Coins', 'amount': 8000}], 'output': [{'name': 'Blueprint - Duncan'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-440-RF', 'series': 9, 'time': 28800, 'task': '', 'input': [{'name': 'Coins', 'amount': 8000}], 'output': [{'name': 'Blueprint - Takahashi'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-447-RF', 'series': 9, 'time': 28800, 'task': '', 'input': [{'name': 'Coins', 'amount': 8000}], 'output': [{'name': 'Blueprint - Orage'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'H-207-RF', 'series': 9, 'time': 14400, 'task': '', 'input': [{'name': 'Wisdom Cube', 'amount': 10}], 'output': [{'name': 'Random Blueprint'}, {'name': 'T3 Mystery Retrofit Blueprint'}, {'name': 'Cognitive Chips'}]}, - {'name': 'D-037-UL', 'series': 9, 'time': 1800, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}, {'name': 'Wisdom Cube', 'amount': 5}], 'output': [{'name': 'Blueprint - Valparaíso'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, + {'name': 'D-037-UL', 'series': 9, 'time': 1800, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}, {'name': 'Wisdom Cube', 'amount': 5}], 'output': [{'name': 'Blueprint - Valparaiso'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-081-UL', 'series': 9, 'time': 1800, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}, {'name': 'Wisdom Cube', 'amount': 5}], 'output': [{'name': 'Blueprint - Max Immelmann'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-032-UL', 'series': 9, 'time': 1800, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}, {'name': 'Wisdom Cube', 'amount': 5}], 'output': [{'name': 'Blueprint - Duncan'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, {'name': 'D-040-UL', 'series': 9, 'time': 1800, 'task': '', 'input': [{'name': 'Coins', 'amount': 5000}, {'name': 'Wisdom Cube', 'amount': 5}], 'output': [{'name': 'Blueprint - Takahashi'}, {'name': 'Random Gear Design'}, {'name': 'Random Gear Design T3'}]}, From 9233ca623daf6e1a9fcc0b6a03ef8a3e325d68ca Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Fri, 10 Jul 2026 09:14:03 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Upd:=20[CN]=20game=20server=20=E5=B8=B7?= =?UTF-8?q?=E5=B9=95=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/config/argument/args.json | 1 + module/config/config_generated.py | 2 +- module/config/i18n/en-US.json | 1 + module/config/i18n/ja-JP.json | 1 + module/config/i18n/zh-CN.json | 1 + module/config/i18n/zh-TW.json | 1 + module/config/server.py | 2 +- 7 files changed, 7 insertions(+), 2 deletions(-) diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 2280571ef..4c4cbd257 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -68,6 +68,7 @@ "cn_android-26", "cn_android-27", "cn_android-28", + "cn_android-29", "cn_ios-0", "cn_ios-1", "cn_ios-2", diff --git a/module/config/config_generated.py b/module/config/config_generated.py index df931aeab..a3eae55f0 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -20,7 +20,7 @@ class GeneratedConfig: # Group `Emulator` Emulator_Serial = 'auto' Emulator_PackageName = 'auto' # auto, com.bilibili.azurlane, com.YoStarEN.AzurLane, com.YoStarJP.AzurLane, com.hkmanjuu.azurlane.gp, com.bilibili.blhx.huawei, com.bilibili.blhx.honor, com.bilibili.blhx.mi, com.tencent.tmgp.bilibili.blhx, com.bilibili.blhx.baidu, com.bilibili.blhx.qihoo, com.bilibili.blhx.nearme.gamecenter, com.bilibili.blhx.vivo, com.bilibili.blhx.mz, com.bilibili.blhx.dl, com.bilibili.blhx.lenovo, com.bilibili.blhx.uc, com.bilibili.blhx.mzw, com.yiwu.blhx.yx15, com.bilibili.blhx.m4399, com.bilibili.blhx.bilibiliMove, com.hkmanjuu.azurlane.gp.mc - Emulator_ServerName = 'disabled' # disabled, cn_android-0, cn_android-1, cn_android-2, cn_android-3, cn_android-4, cn_android-5, cn_android-6, cn_android-7, cn_android-8, cn_android-9, cn_android-10, cn_android-11, cn_android-12, cn_android-13, cn_android-14, cn_android-15, cn_android-16, cn_android-17, cn_android-18, cn_android-19, cn_android-20, cn_android-21, cn_android-22, cn_android-23, cn_android-24, cn_android-25, cn_android-26, cn_android-27, cn_android-28, cn_ios-0, cn_ios-1, cn_ios-2, cn_ios-3, cn_ios-4, cn_ios-5, cn_ios-6, cn_ios-7, cn_ios-8, cn_ios-9, cn_ios-10, cn_channel-0, cn_channel-1, cn_channel-2, cn_channel-3, cn_channel-4, cn_channel-5, en-0, en-1, en-2, en-3, en-4, en-5, jp-0, jp-1, jp-2, jp-3, jp-4, jp-5, jp-6, jp-7, jp-8, jp-9, jp-10, jp-11, jp-12, jp-13, jp-14, jp-15, jp-16, jp-17 + Emulator_ServerName = 'disabled' # disabled, cn_android-0, cn_android-1, cn_android-2, cn_android-3, cn_android-4, cn_android-5, cn_android-6, cn_android-7, cn_android-8, cn_android-9, cn_android-10, cn_android-11, cn_android-12, cn_android-13, cn_android-14, cn_android-15, cn_android-16, cn_android-17, cn_android-18, cn_android-19, cn_android-20, cn_android-21, cn_android-22, cn_android-23, cn_android-24, cn_android-25, cn_android-26, cn_android-27, cn_android-28, cn_android-29, cn_ios-0, cn_ios-1, cn_ios-2, cn_ios-3, cn_ios-4, cn_ios-5, cn_ios-6, cn_ios-7, cn_ios-8, cn_ios-9, cn_ios-10, cn_channel-0, cn_channel-1, cn_channel-2, cn_channel-3, cn_channel-4, cn_channel-5, en-0, en-1, en-2, en-3, en-4, en-5, jp-0, jp-1, jp-2, jp-3, jp-4, jp-5, jp-6, jp-7, jp-8, jp-9, jp-10, jp-11, jp-12, jp-13, jp-14, jp-15, jp-16, jp-17 Emulator_ScreenshotMethod = 'auto' # auto, ADB, ADB_nc, uiautomator2, aScreenCap, aScreenCap_nc, DroidCast, DroidCast_raw, nemu_ipc, ldopengl Emulator_ControlMethod = 'MaaTouch' # ADB, uiautomator2, minitouch, Hermit, MaaTouch Emulator_ScreenshotDedithering = False diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index 83b704860..ef8a11c46 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -379,6 +379,7 @@ "cn_android-26": "[国服] 冬月计划", "cn_android-27": "[国服] 长弓计划", "cn_android-28": "[国服] 裁决协议", + "cn_android-29": "[国服] 帷幕计划", "cn_ios-0": "[国服] 夏威夷", "cn_ios-1": "[国服] 珊瑚海", "cn_ios-2": "[国服] 中途岛", diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index fdd5bcaab..f8c73caba 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -379,6 +379,7 @@ "cn_android-26": "[国服] 冬月计划", "cn_android-27": "[国服] 长弓计划", "cn_android-28": "[国服] 裁决协议", + "cn_android-29": "[国服] 帷幕计划", "cn_ios-0": "[国服] 夏威夷", "cn_ios-1": "[国服] 珊瑚海", "cn_ios-2": "[国服] 中途岛", diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index a02661630..990208539 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -379,6 +379,7 @@ "cn_android-26": "[国服] 冬月计划", "cn_android-27": "[国服] 长弓计划", "cn_android-28": "[国服] 裁决协议", + "cn_android-29": "[国服] 帷幕计划", "cn_ios-0": "[国服] 夏威夷", "cn_ios-1": "[国服] 珊瑚海", "cn_ios-2": "[国服] 中途岛", diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index 3c199785f..643a19cf2 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -379,6 +379,7 @@ "cn_android-26": "[国服] 冬月计划", "cn_android-27": "[国服] 长弓计划", "cn_android-28": "[国服] 裁决协议", + "cn_android-29": "[国服] 帷幕计划", "cn_ios-0": "[国服] 夏威夷", "cn_ios-1": "[国服] 珊瑚海", "cn_ios-2": "[国服] 中途岛", diff --git a/module/config/server.py b/module/config/server.py index 5feef9318..278885a49 100644 --- a/module/config/server.py +++ b/module/config/server.py @@ -74,7 +74,7 @@ VALID_SERVER_LIST = { '小王冠行动', '波茨坦公告', '白色方案', '瓦尔基里行动', '曼哈顿计划', '八月风暴', '秋季旅行', '水星行动', '莱茵河卫兵', '北极光计划', '长戟计划', '暴雨行动', '水仙行动', '冬月计划', - '长弓计划', '裁决协议', + '长弓计划', '裁决协议', '帷幕计划', ], 'cn_ios': [ '夏威夷', '珊瑚海', '中途岛', '铁底湾', '所罗门', '马里亚纳', From f0d7241be4a623c8f19f3b042d0bc27e50e0fc91 Mon Sep 17 00:00:00 2001 From: nEEtdo0d <66565274+nEEtdo0d@users.noreply.github.com> Date: Thu, 9 Jul 2026 21:29:04 -0400 Subject: [PATCH 3/3] Fix: [EN][JP] private quarters interact button detection restrict to offset top_x and bottom_y (#5800) Co-authored-by: LmeSzinc --- module/private_quarters/interact.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/module/private_quarters/interact.py b/module/private_quarters/interact.py index 3415d343b..ceda5851e 100644 --- a/module/private_quarters/interact.py +++ b/module/private_quarters/interact.py @@ -220,7 +220,7 @@ class PQInteract(UI): # Rare case in the middle of dialogue, so address # before initiating room exit if (not self.appear(PRIVATE_QUARTERS_ROOM_CHECK, offset=(20, 20)) and - not self.appear(PRIVATE_QUARTERS_INTERACT, offset=(0, 60))): + not self.appear(PRIVATE_QUARTERS_INTERACT, offset=(-10, 0, 0, 65))): self._pq_handle_dialogue() self.interval_clear(PRIVATE_QUARTERS_ROOM_BACK) @@ -236,11 +236,14 @@ class PQInteract(UI): def pq_interact(self): """ Execute target interact routine - offset=(0, 60) to account for y-position of asset + offset=(-10, 0, 0, 65) to account for position of asset + top_x=-10, bottom_y=65 Depending on intimacy level, the asset may shift + Parameters identified as stable and server transparent """ # Click target ship girl for 1st stage sequence logger.hr(f'Interact Start', level=2) + interact_offset = (-10, 0, 0, 65) click_timer = Timer(1.5, count=3).start() skip_first_screenshot = True while 1: @@ -250,7 +253,7 @@ class PQInteract(UI): self.device.screenshot() # End - if self.appear(PRIVATE_QUARTERS_INTERACT, offset=(0, 60)): + if self.appear(PRIVATE_QUARTERS_INTERACT, offset=interact_offset): break if click_timer.reached(): @@ -273,7 +276,7 @@ class PQInteract(UI): if self.appear(PRIVATE_QUARTERS_INTERACT_CHECK, offset=(20, 20)): break - if self.appear_then_click(PRIVATE_QUARTERS_INTERACT, offset=(0, 60), interval=1): + if self.appear_then_click(PRIVATE_QUARTERS_INTERACT, offset=interact_offset, interval=1): continue skip_first_screenshot = True @@ -284,7 +287,7 @@ class PQInteract(UI): self.device.screenshot() # End - if self.appear(PRIVATE_QUARTERS_INTERACT, offset=(0, 60)): + if self.appear(PRIVATE_QUARTERS_INTERACT, offset=interact_offset): break if self.appear(PRIVATE_QUARTERS_INTERACT_CHECK, offset=(20, 20), interval=1):