From 99de5e0d3438fff41ec4cfded900b3c4a42efbb8 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Thu, 1 Jan 2026 23:36:25 +0800 Subject: [PATCH] Upd: Battle UI MaidCafe --- assets/cn/combat_ui/PAUSE_MaidCafe.png | Bin 0 -> 2977 bytes assets/cn/combat_ui/QUIT_MaidCafe.png | Bin 0 -> 5479 bytes module/combat/combat.py | 6 ++++++ module/combat_ui/assets.py | 2 ++ module/exercise/hp_daemon.py | 3 ++- 5 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 assets/cn/combat_ui/PAUSE_MaidCafe.png create mode 100644 assets/cn/combat_ui/QUIT_MaidCafe.png diff --git a/assets/cn/combat_ui/PAUSE_MaidCafe.png b/assets/cn/combat_ui/PAUSE_MaidCafe.png new file mode 100644 index 0000000000000000000000000000000000000000..f51bdf9fb22caef3b7bbdb106ecb14d00ff5f125 GIT binary patch literal 2977 zcmeAS@N?(olHy`uVBq!ia0y~yUc53au8{F zC|Ni$ShVF4uNQwn#(CwVy&^HIZ5^^T<#dC@FGYlK&8%E;fBWp|XD3AdRZ-Cd8Zf}1 zKw&q?PhVaa+Po4=w+mV{_vfR>yI-tp<6~oBXsFw&dG=ZU@2A(F|Ek^iD&}0KQEl$5 zH2dnxD!sj{8=Ha7S5TO^TKE9agbf`OTVAz({s{aR;xX59v$dpL3)7Z-z!KCrYc|3dMDHv&Ml zFRmZ{dsolm^Za*b+^fE%Z;Z*mV+9l*1*0J_8UmvsFd71*Aut*OqaiRF0)sXLIJUDk WT3RvkU*vHCxzW?r&t;ucLK6UYpM)>~ literal 0 HcmV?d00001 diff --git a/assets/cn/combat_ui/QUIT_MaidCafe.png b/assets/cn/combat_ui/QUIT_MaidCafe.png new file mode 100644 index 0000000000000000000000000000000000000000..483934f282a1dfb286a4fab05b4ed6aaa550e6f0 GIT binary patch literal 5479 zcmeI0`#%%MGunlXrbPh`@myXa9JCZb7 z8f}bhmCKGWl}3xrb!K8N*@e-*zJ33K@6TWFUp}AT-tW)z{d&LOpT|4h%j49Bbz9c~ z0Dui=PCK0i0DfA&u6n)%B`!luh*o|GY(q)F_@8| zHK?;0-!;XPvi-Vo2Nga;2K{B5P@CTFEn*9X{73^*NlgPUFtKu#sn$h z73vORa5$X!U9RiaQQ(0{++6Rz9kdJY_}SJKnle_m;ntzqv9YoAP26EVFE>)YIFD&Y z#C1J!Z_P&J^e4Nf!MItbKr-&il`A2_I;>4Y9Y;egE2=|_XH%{R(hP1j6N>e#7Gb{F zAMek)s~@D1Ob8TAW)KY4)zw8p460%7{oF63H{f;Va-`K!29ue9#qK^wt=;7PE9rjF zegoh5cqO*7&iXv%o(I1argH= z#&vP-;QS5wI4snq^kaLw8#~+cq<8-&qLEe9TFH93(bgfWr3!V=v!EpDY^lYT2G!8* z%2%`FDwT>}a;h?@-p0meL0U!$s}>OK`@6c3ep-OlA=gb88v8Ya>EFM5-G5MIGb5UT zP#%&Ueszq&ElqF8hz+P%5~N0YdUh7Xu;){5R4&OF(+gywYODmm)#}q zid%?|bkpS)gzd>`O;2xKmN^Lxa%n~u_Z+z+G_l1`jLm*4g_@z1gwx_Sc@gTYY8ls_eqi#0Bg$3x8W9qFqq&6MPxQc z(w3d7OG2FHD5v@z;)a@ZObPmkX`i*VIXM}Hg-8i8O?E|BUQt;}##!^?2jS>eu@O<9f9^Zt}fha z$}y}$4b?yP-<#i`tZC|vF?~QLQ`7i7@s4LAN?Rg!KXER?b}RY-%b-vmYYPd|L^Mee z#a?$jDW_8>9)LHyDyJlkl-vG>&7LN*s8^+d;50j9cny_)(`MsQ^O8{3S$l%&G|t%@ z(fXHy&3>bQzvtP-O<&fNLhWAKqBN7L8qKt&CXDby>r?F2=j7)*i?dt93@w8LEkq(>d6Yh)Bx1uMPE!`r7eesof!L|R7`26T!!y* zw6(R9l$mo1MROV|D??Zp4=GB1egRqLNwJT|zZ5lEkUL0hhEicqzt*@AudVHxhqW8} zxICZE?lshPPSFKy2WYRBpZV-hqavH%gdpEBmM~zZ9c~ zZtLR`i;WaZvfGV)G#Pvwv>rF(Xw9EW)+8>6N&BRHKmODQltC4`*d-aiO;RA{Drh6Eu782% zm!D@vxz5)YK9Z0g*FC!wLHFt3Z}W00m;s`6hC`&Z07`#DQlhVKPm1fy5j-BR#;awb z2KC@6(;GK?dwbO#&_qi(3;T7HMkWhLoqK|7P)h{#n*R(a+&~Q{DLOtmx%4c}$HjXm z3oA{TeC8rXhlfk1r$v#ac`nXUtXX~slX>9XV@NM^36GD&&&^S5FPr5E=$LTa0lVnA z7w={#fZEfuJnF0yvoy2!_`Y4&}Ni6pE7{JPB75z;F>? zSm;p-$tcJ`G9u}I_X`Saug;FpFP$1z`Y2; z)zK!&`%WXMedUD;hmBIhni>X!Bs*VjFsuuhUfW^6YJfglv&)k7*pIeYb&>v~W5LaH zT0fjCLy79PID7x|lQz9)hGgDGy-%pQ{a!bl8gE&^4pSzQd?IUWJ_g*WuLg0TTFc2r_0G!hQTCDI| RUZny6XPiBpo;!y8`EPNA{e=Jk literal 0 HcmV?d00001 diff --git a/module/combat/combat.py b/module/combat/combat.py index ffeb42ca8..9ff52afbd 100644 --- a/module/combat/combat.py +++ b/module/combat/combat.py @@ -121,6 +121,8 @@ class Combat(Level, HPBalancer, Retirement, SubmarineCall, CombatAuto, CombatMan return PAUSE_Ninja if PAUSE_ShadowPuppetry.match_luma(self.device.image, offset=(10, 10)): return PAUSE_ShadowPuppetry + if PAUSE_MaidCafe.match_template_color(self.device.image, offset=(10, 10)): + return PAUSE_MaidCafe return False def handle_combat_quit(self, offset=(20, 20), interval=3): @@ -168,6 +170,10 @@ class Combat(Level, HPBalancer, Retirement, SubmarineCall, CombatAuto, CombatMan self.device.click(QUIT_Ninja) timer.reset() return True + if QUIT_MaidCafe.match_luma(self.device.image, offset=offset): + self.device.click(QUIT_MaidCafe) + timer.reset() + return True return False def ensure_combat_oil_loaded(self): diff --git a/module/combat_ui/assets.py b/module/combat_ui/assets.py index 109bc4519..f66c58ff1 100644 --- a/module/combat_ui/assets.py +++ b/module/combat_ui/assets.py @@ -11,6 +11,7 @@ PAUSE_DOUBLE_CHECK = Button(area={'cn': (1226, 35, 1231, 60), 'en': (1226, 35, 1 PAUSE_Devil = Button(area={'cn': (1233, 35, 1250, 57), 'en': (1233, 35, 1250, 57), 'jp': (1233, 35, 1250, 57), 'tw': (1233, 35, 1250, 57)}, color={'cn': (193, 98, 108), 'en': (193, 98, 108), 'jp': (193, 98, 108), 'tw': (193, 98, 108)}, button={'cn': (1233, 35, 1250, 57), 'en': (1233, 35, 1250, 57), 'jp': (1233, 35, 1250, 57), 'tw': (1233, 35, 1250, 57)}, file={'cn': './assets/cn/combat_ui/PAUSE_Devil.png', 'en': './assets/cn/combat_ui/PAUSE_Devil.png', 'jp': './assets/cn/combat_ui/PAUSE_Devil.png', 'tw': './assets/cn/combat_ui/PAUSE_Devil.png'}) PAUSE_HolyLight = Button(area={'cn': (1233, 35, 1250, 57), 'en': (1233, 35, 1250, 57), 'jp': (1233, 35, 1250, 57), 'tw': (1233, 35, 1250, 57)}, color={'cn': (54, 40, 27), 'en': (54, 40, 27), 'jp': (54, 40, 27), 'tw': (54, 40, 27)}, button={'cn': (1233, 35, 1250, 57), 'en': (1233, 35, 1250, 57), 'jp': (1233, 35, 1250, 57), 'tw': (1233, 35, 1250, 57)}, file={'cn': './assets/cn/combat_ui/PAUSE_HolyLight.png', 'en': './assets/cn/combat_ui/PAUSE_HolyLight.png', 'jp': './assets/cn/combat_ui/PAUSE_HolyLight.png', 'tw': './assets/cn/combat_ui/PAUSE_HolyLight.png'}) PAUSE_Iridescent_Fantasy = Button(area={'cn': (1232, 33, 1252, 57), 'en': (1232, 33, 1252, 57), 'jp': (1232, 33, 1252, 57), 'tw': (1232, 33, 1252, 57)}, color={'cn': (124, 139, 190), 'en': (124, 139, 190), 'jp': (124, 139, 190), 'tw': (124, 139, 190)}, button={'cn': (1232, 33, 1252, 57), 'en': (1232, 33, 1252, 57), 'jp': (1232, 33, 1252, 57), 'tw': (1232, 33, 1252, 57)}, file={'cn': './assets/cn/combat_ui/PAUSE_Iridescent_Fantasy.png', 'en': './assets/en/combat_ui/PAUSE_Iridescent_Fantasy.png', 'jp': './assets/jp/combat_ui/PAUSE_Iridescent_Fantasy.png', 'tw': './assets/tw/combat_ui/PAUSE_Iridescent_Fantasy.png'}) +PAUSE_MaidCafe = Button(area={'cn': (1230, 35, 1248, 54), 'en': (1230, 35, 1248, 54), 'jp': (1230, 35, 1248, 54), 'tw': (1230, 35, 1248, 54)}, color={'cn': (159, 145, 139), 'en': (159, 145, 139), 'jp': (159, 145, 139), 'tw': (159, 145, 139)}, button={'cn': (1230, 35, 1248, 54), 'en': (1230, 35, 1248, 54), 'jp': (1230, 35, 1248, 54), 'tw': (1230, 35, 1248, 54)}, file={'cn': './assets/cn/combat_ui/PAUSE_MaidCafe.png', 'en': './assets/cn/combat_ui/PAUSE_MaidCafe.png', 'jp': './assets/cn/combat_ui/PAUSE_MaidCafe.png', 'tw': './assets/cn/combat_ui/PAUSE_MaidCafe.png'}) PAUSE_Neon = Button(area={'cn': (1228, 32, 1250, 59), 'en': (1228, 32, 1250, 59), 'jp': (1228, 32, 1250, 59), 'tw': (1228, 32, 1250, 59)}, color={'cn': (106, 137, 80), 'en': (106, 137, 80), 'jp': (106, 137, 80), 'tw': (106, 137, 80)}, button={'cn': (1228, 32, 1250, 59), 'en': (1228, 32, 1250, 59), 'jp': (1228, 32, 1250, 59), 'tw': (1228, 32, 1250, 59)}, file={'cn': './assets/cn/combat_ui/PAUSE_Neon.png', 'en': './assets/cn/combat_ui/PAUSE_Neon.png', 'jp': './assets/cn/combat_ui/PAUSE_Neon.png', 'tw': './assets/cn/combat_ui/PAUSE_Neon.png'}) PAUSE_New = Button(area={'cn': (1231, 29, 1253, 56), 'en': (1231, 29, 1253, 56), 'jp': (1231, 29, 1253, 56), 'tw': (1231, 29, 1253, 56)}, color={'cn': (156, 158, 166), 'en': (156, 158, 166), 'jp': (156, 158, 166), 'tw': (156, 158, 166)}, button={'cn': (1231, 29, 1253, 56), 'en': (1231, 29, 1253, 56), 'jp': (1231, 29, 1253, 56), 'tw': (1231, 29, 1253, 56)}, file={'cn': './assets/cn/combat_ui/PAUSE_New.png', 'en': './assets/en/combat_ui/PAUSE_New.png', 'jp': './assets/jp/combat_ui/PAUSE_New.png', 'tw': './assets/tw/combat_ui/PAUSE_New.png'}) PAUSE_Ninja = Button(area={'cn': (1230, 37, 1246, 53), 'en': (1230, 37, 1246, 53), 'jp': (1230, 37, 1246, 53), 'tw': (1230, 37, 1246, 53)}, color={'cn': (135, 109, 92), 'en': (135, 109, 92), 'jp': (135, 109, 92), 'tw': (135, 109, 92)}, button={'cn': (1230, 37, 1246, 53), 'en': (1230, 37, 1246, 53), 'jp': (1230, 37, 1246, 53), 'tw': (1230, 37, 1246, 53)}, file={'cn': './assets/cn/combat_ui/PAUSE_Ninja.png', 'en': './assets/cn/combat_ui/PAUSE_Ninja.png', 'jp': './assets/cn/combat_ui/PAUSE_Ninja.png', 'tw': './assets/cn/combat_ui/PAUSE_Ninja.png'}) @@ -23,6 +24,7 @@ QUIT = Button(area={'cn': (420, 490, 593, 548), 'en': (473, 508, 567, 532), 'jp' 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'}) QUIT_Cyber = Button(area={'cn': (393, 506, 470, 524), 'en': (393, 506, 470, 524), 'jp': (393, 506, 470, 524), 'tw': (393, 506, 470, 524)}, color={'cn': (255, 198, 190), 'en': (255, 198, 190), 'jp': (255, 198, 190), 'tw': (255, 198, 190)}, button={'cn': (393, 506, 470, 524), 'en': (393, 506, 470, 524), 'jp': (393, 506, 470, 524), 'tw': (393, 506, 470, 524)}, file={'cn': './assets/cn/combat_ui/QUIT_Cyber.png', 'en': './assets/cn/combat_ui/QUIT_Cyber.png', 'jp': './assets/cn/combat_ui/QUIT_Cyber.png', 'tw': './assets/tw/combat_ui/QUIT_Cyber.png'}) QUIT_Iridescent_Fantasy = Button(area={'cn': (391, 522, 464, 540), 'en': (402, 507, 460, 523), 'jp': (391, 522, 464, 540), 'tw': (391, 522, 464, 540)}, color={'cn': (121, 73, 79), 'en': (255, 174, 164), 'jp': (108, 60, 70), 'tw': (121, 73, 79)}, button={'cn': (391, 522, 464, 540), 'en': (402, 507, 460, 523), 'jp': (391, 522, 464, 540), 'tw': (391, 522, 464, 540)}, file={'cn': './assets/cn/combat_ui/QUIT_Iridescent_Fantasy.png', 'en': './assets/en/combat_ui/QUIT_Iridescent_Fantasy.png', 'jp': './assets/jp/combat_ui/QUIT_Iridescent_Fantasy.png', 'tw': './assets/cn/combat_ui/QUIT_Iridescent_Fantasy.png'}) +QUIT_MaidCafe = Button(area={'cn': (423, 549, 501, 568), 'en': (423, 549, 501, 568), 'jp': (423, 549, 501, 568), 'tw': (423, 549, 501, 568)}, color={'cn': (168, 142, 133), 'en': (168, 142, 133), 'jp': (168, 142, 133), 'tw': (168, 142, 133)}, button={'cn': (423, 549, 501, 568), 'en': (423, 549, 501, 568), 'jp': (423, 549, 501, 568), 'tw': (423, 549, 501, 568)}, file={'cn': './assets/cn/combat_ui/QUIT_MaidCafe.png', 'en': './assets/cn/combat_ui/QUIT_MaidCafe.png', 'jp': './assets/cn/combat_ui/QUIT_MaidCafe.png', 'tw': './assets/cn/combat_ui/QUIT_MaidCafe.png'}) QUIT_New = Button(area={'cn': (394, 506, 467, 524), 'en': (404, 506, 463, 523), 'jp': (394, 506, 467, 524), 'tw': (393, 505, 471, 524)}, color={'cn': (255, 180, 171), 'en': (255, 195, 187), 'jp': (255, 180, 171), 'tw': (255, 200, 193)}, button={'cn': (394, 506, 467, 524), 'en': (404, 506, 463, 523), 'jp': (394, 506, 467, 524), 'tw': (393, 505, 471, 524)}, file={'cn': './assets/cn/combat_ui/QUIT_New.png', 'en': './assets/en/combat_ui/QUIT_New.png', 'jp': './assets/cn/combat_ui/QUIT_New.png', 'tw': './assets/tw/combat_ui/QUIT_New.png'}) QUIT_Ninja = Button(area={'cn': (398, 509, 477, 528), 'en': (398, 509, 477, 528), 'jp': (398, 509, 477, 528), 'tw': (398, 509, 477, 528)}, color={'cn': (148, 138, 134), 'en': (148, 138, 134), 'jp': (148, 138, 134), 'tw': (148, 138, 134)}, button={'cn': (398, 509, 477, 528), 'en': (398, 509, 477, 528), 'jp': (398, 509, 477, 528), 'tw': (398, 509, 477, 528)}, file={'cn': './assets/cn/combat_ui/QUIT_Ninja.png', 'en': './assets/cn/combat_ui/QUIT_Ninja.png', 'jp': './assets/cn/combat_ui/QUIT_Ninja.png', 'tw': './assets/cn/combat_ui/QUIT_Ninja.png'}) 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'}) diff --git a/module/exercise/hp_daemon.py b/module/exercise/hp_daemon.py index 7dbe30bd9..e79bce505 100644 --- a/module/exercise/hp_daemon.py +++ b/module/exercise/hp_daemon.py @@ -74,7 +74,8 @@ class HpDaemon(ModuleBase): PAUSE_Seaside, PAUSE_Star, PAUSE_Ninja, - PAUSE_ShadowPuppetry + PAUSE_ShadowPuppetry, + PAUSE_MaidCafe, ]: 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)