diff --git a/assets/cn/combat_ui/PAUSE_SpringInn.png b/assets/cn/combat_ui/PAUSE_SpringInn.png new file mode 100644 index 000000000..2eb3b3a46 Binary files /dev/null and b/assets/cn/combat_ui/PAUSE_SpringInn.png differ diff --git a/assets/cn/combat_ui/QUIT_SpringInn.png b/assets/cn/combat_ui/QUIT_SpringInn.png new file mode 100644 index 000000000..867d21ad7 Binary files /dev/null and b/assets/cn/combat_ui/QUIT_SpringInn.png differ diff --git a/campaign/Readme.md b/campaign/Readme.md index 2c9330b53..53184cd30 100644 --- a/campaign/Readme.md +++ b/campaign/Readme.md @@ -281,4 +281,4 @@ To add a new event, add a new row in here, and run `python -m module.config.conf | 20260129 | coalition 20260122 | Light & Shadow Fashion Shoot! | - | - | - | 光影風尚-拍攝進行時 | | 20260205 | raid 20240328 | From Zero to Hero | 复刻从零开始的魔王讨伐之旅 | From Zero to Hero Rerun | ゼロから頑張る魔王討伐(復刻) | - | | 20260212 | raid 20260212 | Spring Auction Adventure | 春宴怀玉香满庭 | Spring Auction Adventure | 新春玉逸品会 | 春宴懷玉香滿庭 | -| 20260226 | event 20260226 cn | Springtide Inn Online | 春满客栈Online | Springtide Inn Online | 春色旅籠Online | - | +| 20260226 | event 20260226 cn | Springtide Inn Online | 春满客栈Online | Springtide Inn Online | 春色旅籠Online | 春滿客棧Online | diff --git a/module/combat/combat.py b/module/combat/combat.py index 818d3de9b..342aa9e71 100644 --- a/module/combat/combat.py +++ b/module/combat/combat.py @@ -126,6 +126,8 @@ class Combat(Level, HPBalancer, Retirement, SubmarineCall, CombatAuto, CombatMan return PAUSE_MaidCafe if PAUSE_Ancient.match_template_color(self.device.image, offset=(10, 10)): return PAUSE_Ancient + if PAUSE_SpringInn.match_template_color(self.device.image, offset=(10, 10)): + return PAUSE_SpringInn return False def handle_combat_quit(self, offset=(20, 20), interval=3): @@ -177,6 +179,10 @@ class Combat(Level, HPBalancer, Retirement, SubmarineCall, CombatAuto, CombatMan self.device.click(QUIT_MaidCafe) timer.reset() return True + if QUIT_SpringInn.match_luma(self.device.image, offset=offset): + self.device.click(QUIT_SpringInn) + timer.reset() + return True return False def handle_combat_quit_reconfirm(self, interval=2): diff --git a/module/combat_ui/assets.py b/module/combat_ui/assets.py index cf309cd15..e8de38bc1 100644 --- a/module/combat_ui/assets.py +++ b/module/combat_ui/assets.py @@ -20,6 +20,7 @@ PAUSE_Nurse = Button(area={'cn': (1236, 33, 1251, 50), 'en': (1236, 33, 1251, 50 PAUSE_Pharaoh = Button(area={'cn': (1229, 55, 1259, 62), 'en': (1229, 55, 1259, 62), 'jp': (1229, 55, 1259, 62), 'tw': (1229, 55, 1259, 62)}, color={'cn': (164, 119, 78), 'en': (164, 119, 78), 'jp': (164, 119, 78), 'tw': (164, 119, 78)}, button={'cn': (1229, 55, 1259, 62), 'en': (1229, 55, 1259, 62), 'jp': (1229, 55, 1259, 62), 'tw': (1229, 55, 1259, 62)}, file={'cn': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'en': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'jp': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'tw': './assets/cn/combat_ui/PAUSE_Pharaoh.png'}) PAUSE_Seaside = Button(area={'cn': (1214, 31, 1239, 59), 'en': (1214, 31, 1239, 59), 'jp': (1214, 31, 1239, 59), 'tw': (1214, 31, 1239, 59)}, color={'cn': (172, 196, 212), 'en': (172, 196, 212), 'jp': (172, 196, 212), 'tw': (172, 196, 212)}, button={'cn': (1214, 31, 1239, 59), 'en': (1214, 31, 1239, 59), 'jp': (1214, 31, 1239, 59), 'tw': (1214, 31, 1239, 59)}, file={'cn': './assets/cn/combat_ui/PAUSE_Seaside.png', 'en': './assets/cn/combat_ui/PAUSE_Seaside.png', 'jp': './assets/cn/combat_ui/PAUSE_Seaside.png', 'tw': './assets/cn/combat_ui/PAUSE_Seaside.png'}) PAUSE_ShadowPuppetry = Button(area={'cn': (1216, 37, 1234, 55), 'en': (1216, 37, 1234, 55), 'jp': (1216, 37, 1234, 55), 'tw': (1216, 37, 1234, 55)}, color={'cn': (139, 112, 72), 'en': (139, 112, 72), 'jp': (139, 112, 72), 'tw': (139, 112, 72)}, button={'cn': (1216, 37, 1234, 55), 'en': (1216, 37, 1234, 55), 'jp': (1216, 37, 1234, 55), 'tw': (1216, 37, 1234, 55)}, file={'cn': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png', 'en': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png', 'jp': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png', 'tw': './assets/cn/combat_ui/PAUSE_ShadowPuppetry.png'}) +PAUSE_SpringInn = Button(area={'cn': (1212, 37, 1235, 61), 'en': (1212, 37, 1235, 61), 'jp': (1212, 37, 1235, 61), 'tw': (1212, 37, 1235, 61)}, color={'cn': (201, 91, 78), 'en': (201, 91, 78), 'jp': (201, 91, 78), 'tw': (201, 91, 78)}, button={'cn': (1212, 37, 1235, 61), 'en': (1212, 37, 1235, 61), 'jp': (1212, 37, 1235, 61), 'tw': (1212, 37, 1235, 61)}, file={'cn': './assets/cn/combat_ui/PAUSE_SpringInn.png', 'en': './assets/cn/combat_ui/PAUSE_SpringInn.png', 'jp': './assets/cn/combat_ui/PAUSE_SpringInn.png', 'tw': './assets/cn/combat_ui/PAUSE_SpringInn.png'}) PAUSE_Star = Button(area={'cn': (1234, 36, 1250, 57), 'en': (1234, 36, 1250, 57), 'jp': (1234, 36, 1250, 57), 'tw': (1234, 36, 1250, 57)}, color={'cn': (169, 179, 179), 'en': (169, 179, 179), 'jp': (169, 179, 179), 'tw': (169, 179, 179)}, button={'cn': (1234, 36, 1250, 57), 'en': (1234, 36, 1250, 57), 'jp': (1234, 36, 1250, 57), 'tw': (1234, 36, 1250, 57)}, file={'cn': './assets/cn/combat_ui/PAUSE_Star.png', 'en': './assets/cn/combat_ui/PAUSE_Star.png', 'jp': './assets/cn/combat_ui/PAUSE_Star.png', 'tw': './assets/cn/combat_ui/PAUSE_Star.png'}) QUIT = Button(area={'cn': (420, 490, 593, 548), 'en': (473, 508, 567, 532), 'jp': (433, 490, 606, 547), 'tw': (433, 490, 606, 547)}, color={'cn': (199, 122, 114), 'en': (216, 168, 164), 'jp': (196, 120, 113), 'tw': (200, 126, 118)}, button={'cn': (420, 490, 593, 548), 'en': (473, 508, 567, 532), 'jp': (433, 490, 606, 547), 'tw': (433, 490, 606, 547)}, file={'cn': './assets/cn/combat_ui/QUIT.png', 'en': './assets/en/combat_ui/QUIT.png', 'jp': './assets/jp/combat_ui/QUIT.png', 'tw': './assets/tw/combat_ui/QUIT.png'}) QUIT_Christmas = Button(area={'cn': (400, 506, 477, 525), 'en': (410, 507, 469, 524), 'jp': (400, 506, 477, 525), 'tw': (400, 506, 477, 525)}, color={'cn': (195, 139, 166), 'en': (207, 166, 185), 'jp': (195, 139, 166), 'tw': (195, 139, 166)}, button={'cn': (400, 506, 477, 525), 'en': (410, 507, 469, 524), 'jp': (400, 506, 477, 525), 'tw': (400, 506, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Christmas.png', 'en': './assets/en/combat_ui/QUIT_Christmas.png', 'jp': './assets/cn/combat_ui/QUIT_Christmas.png', 'tw': './assets/cn/combat_ui/QUIT_Christmas.png'}) @@ -31,3 +32,4 @@ QUIT_Ninja = Button(area={'cn': (398, 509, 477, 528), 'en': (398, 509, 477, 528) QUIT_Nurse = Button(area={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, color={'cn': (254, 193, 170), 'en': (254, 193, 170), 'jp': (254, 193, 170), 'tw': (254, 193, 170)}, button={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Nurse.png', 'en': './assets/cn/combat_ui/QUIT_Nurse.png', 'jp': './assets/cn/combat_ui/QUIT_Nurse.png', 'tw': './assets/cn/combat_ui/QUIT_Nurse.png'}) QUIT_Pharaoh = Button(area={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, color={'cn': (204, 132, 108), 'en': (204, 132, 108), 'jp': (204, 132, 108), 'tw': (204, 132, 108)}, button={'cn': (400, 507, 477, 525), 'en': (400, 507, 477, 525), 'jp': (400, 507, 477, 525), 'tw': (400, 507, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Pharaoh.png', 'en': './assets/cn/combat_ui/QUIT_Pharaoh.png', 'jp': './assets/cn/combat_ui/QUIT_Pharaoh.png', 'tw': './assets/cn/combat_ui/QUIT_Pharaoh.png'}) QUIT_Seaside = Button(area={'cn': (398, 509, 476, 528), 'en': (398, 509, 476, 528), 'jp': (398, 509, 476, 528), 'tw': (398, 509, 476, 528)}, color={'cn': (247, 208, 188), 'en': (247, 208, 188), 'jp': (247, 208, 188), 'tw': (247, 208, 188)}, button={'cn': (398, 509, 476, 528), 'en': (398, 509, 476, 528), 'jp': (398, 509, 476, 528), 'tw': (398, 509, 476, 528)}, file={'cn': './assets/cn/combat_ui/QUIT_Seaside.png', 'en': './assets/cn/combat_ui/QUIT_Seaside.png', 'jp': './assets/cn/combat_ui/QUIT_Seaside.png', 'tw': './assets/cn/combat_ui/QUIT_Seaside.png'}) +QUIT_SpringInn = Button(area={'cn': (396, 559, 478, 584), 'en': (396, 559, 478, 584), 'jp': (396, 559, 478, 584), 'tw': (396, 559, 478, 584)}, color={'cn': (145, 88, 80), 'en': (145, 88, 80), 'jp': (145, 88, 80), 'tw': (145, 88, 80)}, button={'cn': (396, 559, 478, 584), 'en': (396, 559, 478, 584), 'jp': (396, 559, 478, 584), 'tw': (396, 559, 478, 584)}, file={'cn': './assets/cn/combat_ui/QUIT_SpringInn.png', 'en': './assets/cn/combat_ui/QUIT_SpringInn.png', 'jp': './assets/cn/combat_ui/QUIT_SpringInn.png', 'tw': './assets/cn/combat_ui/QUIT_SpringInn.png'}) diff --git a/module/config/argument/args.json b/module/config/argument/args.json index d32be5698..bc085319e 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -1975,15 +1975,18 @@ "display": "hide", "option_cn": [ "event_20260226_cn" + "event_20260226_cn" ], "option_en": [ "event_20260226_cn" + "event_20260226_cn" ], "option_jp": [ "event_20260226_cn" + "event_20260226_cn" ], "option_tw": [ - "event_20220526_cn" + "event_20260226_cn" ], "option_bold": [ "event_20220526_cn", @@ -2504,15 +2507,18 @@ ], "option_cn": [ "event_20260226_cn" + "event_20260226_cn" ], "option_en": [ "event_20260226_cn" + "event_20260226_cn" ], "option_jp": [ "event_20260226_cn" + "event_20260226_cn" ], "option_tw": [ - "event_20220526_cn" + "event_20260226_cn" ], "option_bold": [ "event_20220526_cn", @@ -2940,15 +2946,18 @@ ], "option_cn": [ "event_20260226_cn" + "event_20260226_cn" ], "option_en": [ "event_20260226_cn" + "event_20260226_cn" ], "option_jp": [ "event_20260226_cn" + "event_20260226_cn" ], "option_tw": [ - "event_20220526_cn" + "event_20260226_cn" ], "option_bold": [ "event_20220526_cn", @@ -5070,15 +5079,18 @@ ], "option_cn": [ "event_20260226_cn" + "event_20260226_cn" ], "option_en": [ "event_20260226_cn" + "event_20260226_cn" ], "option_jp": [ "event_20260226_cn" + "event_20260226_cn" ], "option_tw": [ - "event_20220526_cn" + "event_20260226_cn" ], "option_bold": [ "event_20220526_cn", @@ -5486,15 +5498,18 @@ ], "option_cn": [ "event_20260226_cn" + "event_20260226_cn" ], "option_en": [ "event_20260226_cn" + "event_20260226_cn" ], "option_jp": [ "event_20260226_cn" + "event_20260226_cn" ], "option_tw": [ - "event_20220526_cn" + "event_20260226_cn" ], "option_bold": [ "event_20220526_cn", @@ -5902,15 +5917,18 @@ ], "option_cn": [ "event_20260226_cn" + "event_20260226_cn" ], "option_en": [ "event_20260226_cn" + "event_20260226_cn" ], "option_jp": [ "event_20260226_cn" + "event_20260226_cn" ], "option_tw": [ - "event_20220526_cn" + "event_20260226_cn" ], "option_bold": [ "event_20220526_cn", @@ -6318,15 +6336,18 @@ ], "option_cn": [ "event_20260226_cn" + "event_20260226_cn" ], "option_en": [ "event_20260226_cn" + "event_20260226_cn" ], "option_jp": [ "event_20260226_cn" + "event_20260226_cn" ], "option_tw": [ - "event_20220526_cn" + "event_20260226_cn" ], "option_bold": [ "event_20220526_cn", @@ -6734,15 +6755,18 @@ ], "option_cn": [ "event_20260226_cn" + "event_20260226_cn" ], "option_en": [ "event_20260226_cn" + "event_20260226_cn" ], "option_jp": [ "event_20260226_cn" + "event_20260226_cn" ], "option_tw": [ - "event_20220526_cn" + "event_20260226_cn" ], "option_bold": [ "event_20220526_cn", diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index b96a55962..bfccf5b68 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -1085,7 +1085,7 @@ "event_20250912_cn": "起舞於天原之上", "event_20251023_cn": "颶風與自由群島", "event_20251218_cn": "響徹於天穹之音", - "event_20260226_cn": "Springtide Inn Online", + "event_20260226_cn": "春滿客棧Online", "raid_20200624": "特別演習埃塞克斯級(復刻)", "raid_20210708": "復刻穿越彼方的水線", "raid_20220127": "演習神秘事件調查", diff --git a/module/exercise/hp_daemon.py b/module/exercise/hp_daemon.py index 321a88d24..0170498b4 100644 --- a/module/exercise/hp_daemon.py +++ b/module/exercise/hp_daemon.py @@ -77,6 +77,7 @@ class HpDaemon(ModuleBase): PAUSE_ShadowPuppetry, PAUSE_MaidCafe, PAUSE_Ancient, + PAUSE_SpringInn, ]: self.attacker_hp = self._calculate_hp(image, area=ATTACKER_HP_AREA_New.area, reverse=True) self.defender_hp = self._calculate_hp(image, area=DEFENDER_HP_AREA_New.area, reverse=True)