From bdcf929c52489fa1385869b8bb83878b78920a0f Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Fri, 26 Jun 2026 02:44:31 +0800 Subject: [PATCH 01/11] Dev: convert siren names --- dev_tools/map_extractor.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dev_tools/map_extractor.py b/dev_tools/map_extractor.py index c5ba6e0e3..28b2825bf 100644 --- a/dev_tools/map_extractor.py +++ b/dev_tools/map_extractor.py @@ -322,11 +322,16 @@ DIC_SIREN_NAME_CHI_TO_ENG = { 'bulaimodun': 'Bremerton', 'fushun_g': 'FuShunG', 'lafeier': 'Raffaello', - 'huangjiafangzhou_g': 'ArkRoyal', + 'huangjiafangzhou_g': 'ArkRoyalG', 'chaijun': 'Cheshire', 'naximofu': 'Nakhimov', 'liekexingdunII': 'Lexington2', 'yuekechengII': 'Yorktown2', + + # Miracle by Midnight + 'youeryuan_boss03': 'MeowfficerBust_Playtime', + 'youeryuan_boss04': 'MeowfficerBust_Hobbies', + 'youeryuan_boss05': 'MeowfficerBust_Studying', } From 5e3ecd20efc407b73581bc2fb978bb9dd4c78541 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Fri, 26 Jun 2026 02:50:42 +0800 Subject: [PATCH 02/11] I18n: AddNewStudent.Favourite is only add favourite ships --- module/config/i18n/en-US.json | 2 +- module/config/i18n/ja-JP.json | 2 +- module/config/i18n/zh-CN.json | 2 +- module/config/i18n/zh-TW.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index e492eb006..9da9161a7 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -1424,7 +1424,7 @@ "help": "" }, "Favorite": { - "name": "Use Favorite Filter", + "name": "Only Favorite Ships", "help": "During student selection apply the favorite filter\nThereby, giving priority to certain ship girls\nApply the favorite status to a ship girl in-game" }, "MinLevel": { diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index 872b8ab51..c6071d3d2 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -1424,7 +1424,7 @@ "help": "" }, "Favorite": { - "name": "好ましい選択", + "name": "お気に入りのみ選択", "help": "" }, "MinLevel": { diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index 15311c96e..7b5060a7a 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -1424,7 +1424,7 @@ "help": "" }, "Favorite": { - "name": "优先选择常用", + "name": "仅选择常用角色", "help": "" }, "MinLevel": { diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index db9cb981d..593502496 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -1424,7 +1424,7 @@ "help": "" }, "Favorite": { - "name": "優先選擇常用", + "name": "僅選擇常用角色", "help": "" }, "MinLevel": { From b3abc16eb44e75f6ca8baddda173c9a32b97e8f6 Mon Sep 17 00:00:00 2001 From: nEEtdo0d <66565274+nEEtdo0d@users.noreply.github.com> Date: Sun, 28 Jun 2026 05:35:47 -0400 Subject: [PATCH 03/11] Add: [EN] add nakhimov private quarters support (#5761) --- .../PRIVATE_QUARTERS_PAGE_LEFT.png | Bin 4313 -> 3786 bytes .../PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png | Bin 0 -> 5059 bytes .../PRIVATE_QUARTERS_PAGE_RIGHT.png | Bin 4712 -> 3764 bytes .../PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png | Bin 0 -> 4278 bytes ...RIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png | Bin 4854 -> 4501 bytes .../PRIVATE_QUARTERS_SHIP_NAKHIMOV.png | Bin 0 -> 11006 bytes .../PRIVATE_QUARTERS_PAGE_LEFT.png | Bin 4313 -> 3786 bytes .../PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png | Bin 0 -> 5059 bytes .../PRIVATE_QUARTERS_PAGE_RIGHT.png | Bin 4712 -> 3764 bytes .../PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png | Bin 0 -> 4278 bytes ...RIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png | Bin 4854 -> 4501 bytes .../PRIVATE_QUARTERS_SHIP_NAKHIMOV.png | Bin 0 -> 11006 bytes .../PRIVATE_QUARTERS_PAGE_LEFT.png | Bin 4313 -> 3786 bytes .../PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png | Bin 0 -> 5059 bytes .../PRIVATE_QUARTERS_PAGE_RIGHT.png | Bin 4712 -> 3764 bytes .../PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png | Bin 0 -> 4278 bytes ...RIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png | Bin 4854 -> 4501 bytes .../PRIVATE_QUARTERS_SHIP_NAKHIMOV.png | Bin 0 -> 11006 bytes .../PRIVATE_QUARTERS_PAGE_LEFT.png | Bin 4313 -> 3786 bytes .../PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png | Bin 0 -> 5059 bytes .../PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png | Bin 0 -> 4278 bytes ...RIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png | Bin 4854 -> 4501 bytes .../PRIVATE_QUARTERS_SHIP_NAKHIMOV.png | Bin 0 -> 11006 bytes module/config/argument/args.json | 3 ++- module/config/argument/argument.yaml | 2 +- module/config/config_generated.py | 2 +- module/config/i18n/en-US.json | 3 ++- module/config/i18n/ja-JP.json | 3 ++- module/config/i18n/zh-CN.json | 3 ++- module/config/i18n/zh-TW.json | 3 ++- module/private_quarters/assets.py | 9 ++++--- module/private_quarters/interact.py | 3 +++ module/private_quarters/private_quarters.py | 23 ++++++++++++------ 33 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png create mode 100644 assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png create mode 100644 assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_NAKHIMOV.png create mode 100644 assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png create mode 100644 assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png create mode 100644 assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_NAKHIMOV.png create mode 100644 assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png create mode 100644 assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png create mode 100644 assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_NAKHIMOV.png create mode 100644 assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png create mode 100644 assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png create mode 100644 assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_NAKHIMOV.png diff --git a/assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png b/assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png index a430a573c01e1a23b2fbc59b479f0add5a075a20..9c6dcc97bc744f8187ab689c5eb5443323b3d9b5 100644 GIT binary patch delta 1143 zcmV--1c>|DA<7+)BmuIKB_Mx}93c#b-#JB&fH!Q8L$OG?L5`oF>TQ-*q?yS>qztGU z+GT9YpG{SozkaUt1C7LUQu8Ral#HfTD>qCcKia&GHRrYGii@r?x@%E-b>lW8^cV7a zyUUOWM!EdG`;%=*UKlF(k)FxP-pJ+do?q=K%H1=+l=pG|d$f35YmI+cc;>XVwP`_o z%Jrdck9f|YcpxxxE-UDc%P{w|SM(mo+6O)eJ^zSt*5(A0mp-&$pmAB6=zSk$yfVRLu>UN zBHF>Mmsnw6%o_vkD9V5Sg%%Ldy5*6b0lxLO4PaqJp|!&tu-o!+F>x3@a!b+)TA*kc zFObQ{)c`^S--gYQfIu!JMuoC7I}zd-;M1^kmZW?D0h#f@E?Gqi-~?~qSmSi+vhhWX z5&{U5A`UcF8d#~CmZYwM9BL+}W>(BCtXeBlv{)&{%dW-d;_5Kw#ofcJw~)}VDB%%N zqovAKP^(r;^%}L-*5I_ka>MEt4T6IYIrOlj9Dc-6kJgcs@c|ZpkxEmi%`$z)tg|ho z+LEQqR$0Dc)z$9QPO9k@v-jlwOpUJ804$x%6iPR05WC+@&^}IVGXpVJ0&(92kkGuD zsFTUNdb)r73n8 z60^9DB{c#SG$hrG&xkzK@Pfmk`sp!!)xfu*|K1S3CsrEx+(^FxLhx--jpApZ00009 za7bBm000ie000ie0hKEb8vpfJ?3ayhZ>6003~sgeU+200I~Q000Cq00008U;qFB5WoNc03d(?002M$0{{Sk z00sa6009gD0Du4n000013;+NC0{BuF7bRLmvn>Ds0KE?2m#^O(e>t%%0000z58$QI zcze2Y`0A200>9q}jY~Zcpd)AHD|$ z005we0X!TobzL{;x}0;1{Ay$C!@;4U0keS%Kn0Uv0}U5$qM!FGS)-ygG!_5=002ov JPDHLkV1hI`4{`ti delta 1724 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 ogGxdO#p=cfWIV*GqZ-2IG9>ZvX%Q literal 0 HcmV?d00001 diff --git a/assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png b/assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png index 3257d80b81b242a12eb6e71c764007acbb45199d..cf7ba16c9eab96533d58b81e1ceede2b5b244642 100644 GIT binary patch delta 1170 zcmV;D1a151B(xonB!97bR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N}?Uq}v+#n2w z-&sYMfN$6=hj5X)gD$^6naRw#j4Ji=Qt5yaGmf!|Kg=Y}AKzE{hDPE!sd)GOYtuMARVwWmILRdOa5or0b z7CPhBGhC-Y;D14|WP&rojI*a}@VEV?qqX`@5$$BwTduG!=8b`N7G>XI1q8INePm~X zul}(CESxB;cA5izTRv_s4x{JZl5~O=7#idaGWobWK#CCCuow~$$c4nHPvGagtat4INy;2j%toK9OdzNt|{0AW(Zfq$k-11nY2lGHV@hnk70nH6&j ztJaDXEmlhLvTL!qxVm|9_wed1Bs45actq4_sd5$6s?}1xMy<6q1a0u#FuO&A;^0FL zJ?tolA92*9b!?xm-FoTXqu1Wj;2}eYjWT@1sH07q*h*8U%`$z)tg|g_wIxfJt+IT@ zs;fPyoqtr*J7%BB{hAuxsR39znJJ7eYEZjhE@&SowwZw#D}lIg0@%>JndKl=-sI9| zmMfzwjIm1Fa0YE+AgGhr7CqQK$$jFMQ1^ezjo*?>8{NMkmo~Z=?xbcx`N3dDgoN7P82|tP32;bRa{vGi z!~g&e!~vBn4jTXf00(qQO+^Rl1{)S520Svl>;M1@mPtfGRCwC$+p%sFK@^73J8O$L zHY**VAOgGrLcISw011hZ6^Yit5mFo~zfU0001ob@J@VtJCM}>s76_ z*4BGw_MP7%fB^siIK1Q8?A_ZpC9>6;nXL(60000+s+98j<%^-@-DcA>4FUiFz=PNS zp!MEbZ>?W0uXZ2Ub_W0eVE+O9+w*_?^+m1q=;)CE1^@tHoB@2_Fzoozt~bB{008_K z1TX*q00I~Q000Cq00008U;qFB5WoNc03d(?002M$0{{Sk00sa6009gD0Du4n004mT zo0 z|FNxqqkaW20001oml50T_Wj56o+YAW=5#s{zyJUMjLm9wy}bG|JD!&k!%!xZQc5uk kvmp&H1(R?C8yD=!PgkXYREzj@^Z)<=07*qoM6N<$f~55uVE_OC delta 2155 zcmXw3dpy(o8=s>PB3&qrxt*iQZLT@x(uw2N$k1GJEtgF$vANGT^-KHZR)>)52{U3t zW5tY4LO7e+Tn>gha)xC?Wr^ub{eGX<>+{d^yq@R%yx-5IO>I%g9t$gd}Oi z#m9!Du7+t~QsTli!je(pAW-tu%6;EFZAG@ zzE@g9g{V7TYljxvb~e+9J;qLFbj|Y-u7gMY+T(k5)}xweWGjIw@(kw5Yj!q^2vIk^ zk=`;f&@7*AH@w0#1**#J)-^Arpi?7sxBf63`M8a8^r(EWS%YihO-H@pO{VqtpC-adCy9(_qhMGN4x2%j`dG~ zUaaJbwcCFe4^w8*w{S3sJm%2}?x8?CyRB<^@AX#CWq?818nVrv|JZSgwhZhoQ!5Od zRU$KM&dzBRjHH1IWjgkkX-Z^Xa>|hni%8TOg*_vNaP^%#BqbiKy)g83kbSeKisLhn z*?hdl$Wi`5ra(&pF!NURX(%nKC1;wBoyN%+MKT^K0?gY}mrbAuFb$^LP;@c_Zj zmc`mAH#JRbrgxPrEkTbMm0Wr0T&c?q4R?3D_?Vxux$=oDL-CM&xd*`GugHl}|EfC< znM+?8bU5zUBBdWGXO}FNFLZP8av9S??mYn%{-TbIrkw{dJ zEx=Mp(jZW98K7>Rido4$31^+A?(rd9~y(UuUZW2>gswnxaUE*;Iy>Ul!{3&VgY-8 zesgIlR2>R$k4e6R1WAc88>h&P=B%F?<9N*G0^mA9?oJdkkyt%SMMlIp_maC?)fp>m zU-{vK>_X4l`nN|S#rzEOLR#?=9u{MMQ6$_P{R4BF(mibD@WNPO-Y1^P_Ck{y4?RCl zJ_(Wpfm*!7^pqOK+m&vO&peBjk;%V{rBp%%Jszp*&2zqgCk@yzzlDNBNr6)}MxH<2XR z;jj2tiMSgxx1*;k|8xg>x=nRFf0qD(o(7|>8*!J%HY;6wB8(h+uq(^%&0XSlY&Gw9WbQ%xaq?x`axWBOV42EcQ@q52(DfUh1<*W zm9p7V_VBc?rRdI8Ns0IAI>bi=UQX!TVX#R_OYuovgj)GsJL@H7L3~A^c%iSCx^@b=<=(T&i;% z{N6tw`Ua}D>AdiO32xVGSfIo=P*zeN)nzGrIw<4XRwJ2*#Ky7BzQ_K`T%uJA*xEg? zqBY70@Kv<>wx(N9MukITOESJ`Of|5k->vU1$&9kUBdrMO21LEC#et}4D(WHtcWD^> z#@X=7!5v6GKOH9&DaL@o>g@p&R5;U$$gzlaX+T*HwR}UfwOhr(L`5dJ)wj9x>^?p} zhW(C;nySk^43AlVB#|fu>{csR>&8w9($)$++Ak!3B@H&@TxL_Zwxpw{35Tt?R35^m ztoi$Bhq0gh{k}LT1N(su@Za-uJ)NOyV7>tI-i?qLFh_;k*A@=@xaD#GPc@}<8LfR;I?PUhQ zQO&y6>eHPh>ZJ)GXSNIobUK~vpWB7L7;D2Vk0Q-qaCuXk2s1iTZJP*~Jkz0z5SiqG?%n0N_A45h%Tj8ukAlxgDA^S?(y?=#)2x_eF5f*#sP UFk23!dGETM9o+26zXad-7ircYY5)KL diff --git a/assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png b/assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d0869b1a2f5ce68143745e4972e03dd547708 GIT binary patch literal 4278 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 I*`xpdFG}V6VgLXD literal 0 HcmV?d00001 diff --git a/assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png b/assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png index a430a573c01e1a23b2fbc59b479f0add5a075a20..9c6dcc97bc744f8187ab689c5eb5443323b3d9b5 100644 GIT binary patch delta 1143 zcmV--1c>|DA<7+)BmuIKB_Mx}93c#b-#JB&fH!Q8L$OG?L5`oF>TQ-*q?yS>qztGU z+GT9YpG{SozkaUt1C7LUQu8Ral#HfTD>qCcKia&GHRrYGii@r?x@%E-b>lW8^cV7a zyUUOWM!EdG`;%=*UKlF(k)FxP-pJ+do?q=K%H1=+l=pG|d$f35YmI+cc;>XVwP`_o z%Jrdck9f|YcpxxxE-UDc%P{w|SM(mo+6O)eJ^zSt*5(A0mp-&$pmAB6=zSk$yfVRLu>UN zBHF>Mmsnw6%o_vkD9V5Sg%%Ldy5*6b0lxLO4PaqJp|!&tu-o!+F>x3@a!b+)TA*kc zFObQ{)c`^S--gYQfIu!JMuoC7I}zd-;M1^kmZW?D0h#f@E?Gqi-~?~qSmSi+vhhWX z5&{U5A`UcF8d#~CmZYwM9BL+}W>(BCtXeBlv{)&{%dW-d;_5Kw#ofcJw~)}VDB%%N zqovAKP^(r;^%}L-*5I_ka>MEt4T6IYIrOlj9Dc-6kJgcs@c|ZpkxEmi%`$z)tg|ho z+LEQqR$0Dc)z$9QPO9k@v-jlwOpUJ804$x%6iPR05WC+@&^}IVGXpVJ0&(92kkGuD zsFTUNdb)r73n8 z60^9DB{c#SG$hrG&xkzK@Pfmk`sp!!)xfu*|K1S3CsrEx+(^FxLhx--jpApZ00009 za7bBm000ie000ie0hKEb8vpfJ?3ayhZ>6003~sgeU+200I~Q000Cq00008U;qFB5WoNc03d(?002M$0{{Sk z00sa6009gD0Du4n000013;+NC0{BuF7bRLmvn>Ds0KE?2m#^O(e>t%%0000z58$QI zcze2Y`0A200>9q}jY~Zcpd)AHD|$ z005we0X!TobzL{;x}0;1{Ay$C!@;4U0keS%Kn0Uv0}U5$qM!FGS)-ygG!_5=002ov JPDHLkV1hI`4{`ti delta 1724 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 ogGxdO#p=cfWIV*GqZ-2IG9>ZvX%Q literal 0 HcmV?d00001 diff --git a/assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png b/assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png index 3257d80b81b242a12eb6e71c764007acbb45199d..cf7ba16c9eab96533d58b81e1ceede2b5b244642 100644 GIT binary patch delta 1170 zcmV;D1a151B(xonB!97bR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N}?Uq}v+#n2w z-&sYMfN$6=hj5X)gD$^6naRw#j4Ji=Qt5yaGmf!|Kg=Y}AKzE{hDPE!sd)GOYtuMARVwWmILRdOa5or0b z7CPhBGhC-Y;D14|WP&rojI*a}@VEV?qqX`@5$$BwTduG!=8b`N7G>XI1q8INePm~X zul}(CESxB;cA5izTRv_s4x{JZl5~O=7#idaGWobWK#CCCuow~$$c4nHPvGagtat4INy;2j%toK9OdzNt|{0AW(Zfq$k-11nY2lGHV@hnk70nH6&j ztJaDXEmlhLvTL!qxVm|9_wed1Bs45actq4_sd5$6s?}1xMy<6q1a0u#FuO&A;^0FL zJ?tolA92*9b!?xm-FoTXqu1Wj;2}eYjWT@1sH07q*h*8U%`$z)tg|g_wIxfJt+IT@ zs;fPyoqtr*J7%BB{hAuxsR39znJJ7eYEZjhE@&SowwZw#D}lIg0@%>JndKl=-sI9| zmMfzwjIm1Fa0YE+AgGhr7CqQK$$jFMQ1^ezjo*?>8{NMkmo~Z=?xbcx`N3dDgoN7P82|tP32;bRa{vGi z!~g&e!~vBn4jTXf00(qQO+^Rl1{)S520Svl>;M1@mPtfGRCwC$+p%sFK@^73J8O$L zHY**VAOgGrLcISw011hZ6^Yit5mFo~zfU0001ob@J@VtJCM}>s76_ z*4BGw_MP7%fB^siIK1Q8?A_ZpC9>6;nXL(60000+s+98j<%^-@-DcA>4FUiFz=PNS zp!MEbZ>?W0uXZ2Ub_W0eVE+O9+w*_?^+m1q=;)CE1^@tHoB@2_Fzoozt~bB{008_K z1TX*q00I~Q000Cq00008U;qFB5WoNc03d(?002M$0{{Sk00sa6009gD0Du4n004mT zo0 z|FNxqqkaW20001oml50T_Wj56o+YAW=5#s{zyJUMjLm9wy}bG|JD!&k!%!xZQc5uk kvmp&H1(R?C8yD=!PgkXYREzj@^Z)<=07*qoM6N<$f~55uVE_OC delta 2155 zcmXw3dpy(o8=s>PB3&qrxt*iQZLT@x(uw2N$k1GJEtgF$vANGT^-KHZR)>)52{U3t zW5tY4LO7e+Tn>gha)xC?Wr^ub{eGX<>+{d^yq@R%yx-5IO>I%g9t$gd}Oi z#m9!Du7+t~QsTli!je(pAW-tu%6;EFZAG@ zzE@g9g{V7TYljxvb~e+9J;qLFbj|Y-u7gMY+T(k5)}xweWGjIw@(kw5Yj!q^2vIk^ zk=`;f&@7*AH@w0#1**#J)-^Arpi?7sxBf63`M8a8^r(EWS%YihO-H@pO{VqtpC-adCy9(_qhMGN4x2%j`dG~ zUaaJbwcCFe4^w8*w{S3sJm%2}?x8?CyRB<^@AX#CWq?818nVrv|JZSgwhZhoQ!5Od zRU$KM&dzBRjHH1IWjgkkX-Z^Xa>|hni%8TOg*_vNaP^%#BqbiKy)g83kbSeKisLhn z*?hdl$Wi`5ra(&pF!NURX(%nKC1;wBoyN%+MKT^K0?gY}mrbAuFb$^LP;@c_Zj zmc`mAH#JRbrgxPrEkTbMm0Wr0T&c?q4R?3D_?Vxux$=oDL-CM&xd*`GugHl}|EfC< znM+?8bU5zUBBdWGXO}FNFLZP8av9S??mYn%{-TbIrkw{dJ zEx=Mp(jZW98K7>Rido4$31^+A?(rd9~y(UuUZW2>gswnxaUE*;Iy>Ul!{3&VgY-8 zesgIlR2>R$k4e6R1WAc88>h&P=B%F?<9N*G0^mA9?oJdkkyt%SMMlIp_maC?)fp>m zU-{vK>_X4l`nN|S#rzEOLR#?=9u{MMQ6$_P{R4BF(mibD@WNPO-Y1^P_Ck{y4?RCl zJ_(Wpfm*!7^pqOK+m&vO&peBjk;%V{rBp%%Jszp*&2zqgCk@yzzlDNBNr6)}MxH<2XR z;jj2tiMSgxx1*;k|8xg>x=nRFf0qD(o(7|>8*!J%HY;6wB8(h+uq(^%&0XSlY&Gw9WbQ%xaq?x`axWBOV42EcQ@q52(DfUh1<*W zm9p7V_VBc?rRdI8Ns0IAI>bi=UQX!TVX#R_OYuovgj)GsJL@H7L3~A^c%iSCx^@b=<=(T&i;% z{N6tw`Ua}D>AdiO32xVGSfIo=P*zeN)nzGrIw<4XRwJ2*#Ky7BzQ_K`T%uJA*xEg? zqBY70@Kv<>wx(N9MukITOESJ`Of|5k->vU1$&9kUBdrMO21LEC#et}4D(WHtcWD^> z#@X=7!5v6GKOH9&DaL@o>g@p&R5;U$$gzlaX+T*HwR}UfwOhr(L`5dJ)wj9x>^?p} zhW(C;nySk^43AlVB#|fu>{csR>&8w9($)$++Ak!3B@H&@TxL_Zwxpw{35Tt?R35^m ztoi$Bhq0gh{k}LT1N(su@Za-uJ)NOyV7>tI-i?qLFh_;k*A@=@xaD#GPc@}<8LfR;I?PUhQ zQO&y6>eHPh>ZJ)GXSNIobUK~vpWB7L7;D2Vk0Q-qaCuXk2s1iTZJP*~Jkz0z5SiqG?%n0N_A45h%Tj8ukAlxgDA^S?(y?=#)2x_eF5f*#sP UFk23!dGETM9o+26zXad-7ircYY5)KL diff --git a/assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png b/assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d0869b1a2f5ce68143745e4972e03dd547708 GIT binary patch literal 4278 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 I*`xpdFG}V6VgLXD literal 0 HcmV?d00001 diff --git a/assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png b/assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png index a430a573c01e1a23b2fbc59b479f0add5a075a20..9c6dcc97bc744f8187ab689c5eb5443323b3d9b5 100644 GIT binary patch delta 1143 zcmV--1c>|DA<7+)BmuIKB_Mx}93c#b-#JB&fH!Q8L$OG?L5`oF>TQ-*q?yS>qztGU z+GT9YpG{SozkaUt1C7LUQu8Ral#HfTD>qCcKia&GHRrYGii@r?x@%E-b>lW8^cV7a zyUUOWM!EdG`;%=*UKlF(k)FxP-pJ+do?q=K%H1=+l=pG|d$f35YmI+cc;>XVwP`_o z%Jrdck9f|YcpxxxE-UDc%P{w|SM(mo+6O)eJ^zSt*5(A0mp-&$pmAB6=zSk$yfVRLu>UN zBHF>Mmsnw6%o_vkD9V5Sg%%Ldy5*6b0lxLO4PaqJp|!&tu-o!+F>x3@a!b+)TA*kc zFObQ{)c`^S--gYQfIu!JMuoC7I}zd-;M1^kmZW?D0h#f@E?Gqi-~?~qSmSi+vhhWX z5&{U5A`UcF8d#~CmZYwM9BL+}W>(BCtXeBlv{)&{%dW-d;_5Kw#ofcJw~)}VDB%%N zqovAKP^(r;^%}L-*5I_ka>MEt4T6IYIrOlj9Dc-6kJgcs@c|ZpkxEmi%`$z)tg|ho z+LEQqR$0Dc)z$9QPO9k@v-jlwOpUJ804$x%6iPR05WC+@&^}IVGXpVJ0&(92kkGuD zsFTUNdb)r73n8 z60^9DB{c#SG$hrG&xkzK@Pfmk`sp!!)xfu*|K1S3CsrEx+(^FxLhx--jpApZ00009 za7bBm000ie000ie0hKEb8vpfJ?3ayhZ>6003~sgeU+200I~Q000Cq00008U;qFB5WoNc03d(?002M$0{{Sk z00sa6009gD0Du4n000013;+NC0{BuF7bRLmvn>Ds0KE?2m#^O(e>t%%0000z58$QI zcze2Y`0A200>9q}jY~Zcpd)AHD|$ z005we0X!TobzL{;x}0;1{Ay$C!@;4U0keS%Kn0Uv0}U5$qM!FGS)-ygG!_5=002ov JPDHLkV1hI`4{`ti delta 1724 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 ogGxdO#p=cfWIV*GqZ-2IG9>ZvX%Q literal 0 HcmV?d00001 diff --git a/assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png b/assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png index 3257d80b81b242a12eb6e71c764007acbb45199d..cf7ba16c9eab96533d58b81e1ceede2b5b244642 100644 GIT binary patch delta 1170 zcmV;D1a151B(xonB!97bR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N}?Uq}v+#n2w z-&sYMfN$6=hj5X)gD$^6naRw#j4Ji=Qt5yaGmf!|Kg=Y}AKzE{hDPE!sd)GOYtuMARVwWmILRdOa5or0b z7CPhBGhC-Y;D14|WP&rojI*a}@VEV?qqX`@5$$BwTduG!=8b`N7G>XI1q8INePm~X zul}(CESxB;cA5izTRv_s4x{JZl5~O=7#idaGWobWK#CCCuow~$$c4nHPvGagtat4INy;2j%toK9OdzNt|{0AW(Zfq$k-11nY2lGHV@hnk70nH6&j ztJaDXEmlhLvTL!qxVm|9_wed1Bs45actq4_sd5$6s?}1xMy<6q1a0u#FuO&A;^0FL zJ?tolA92*9b!?xm-FoTXqu1Wj;2}eYjWT@1sH07q*h*8U%`$z)tg|g_wIxfJt+IT@ zs;fPyoqtr*J7%BB{hAuxsR39znJJ7eYEZjhE@&SowwZw#D}lIg0@%>JndKl=-sI9| zmMfzwjIm1Fa0YE+AgGhr7CqQK$$jFMQ1^ezjo*?>8{NMkmo~Z=?xbcx`N3dDgoN7P82|tP32;bRa{vGi z!~g&e!~vBn4jTXf00(qQO+^Rl1{)S520Svl>;M1@mPtfGRCwC$+p%sFK@^73J8O$L zHY**VAOgGrLcISw011hZ6^Yit5mFo~zfU0001ob@J@VtJCM}>s76_ z*4BGw_MP7%fB^siIK1Q8?A_ZpC9>6;nXL(60000+s+98j<%^-@-DcA>4FUiFz=PNS zp!MEbZ>?W0uXZ2Ub_W0eVE+O9+w*_?^+m1q=;)CE1^@tHoB@2_Fzoozt~bB{008_K z1TX*q00I~Q000Cq00008U;qFB5WoNc03d(?002M$0{{Sk00sa6009gD0Du4n004mT zo0 z|FNxqqkaW20001oml50T_Wj56o+YAW=5#s{zyJUMjLm9wy}bG|JD!&k!%!xZQc5uk kvmp&H1(R?C8yD=!PgkXYREzj@^Z)<=07*qoM6N<$f~55uVE_OC delta 2155 zcmXw3dpy(o8=s>PB3&qrxt*iQZLT@x(uw2N$k1GJEtgF$vANGT^-KHZR)>)52{U3t zW5tY4LO7e+Tn>gha)xC?Wr^ub{eGX<>+{d^yq@R%yx-5IO>I%g9t$gd}Oi z#m9!Du7+t~QsTli!je(pAW-tu%6;EFZAG@ zzE@g9g{V7TYljxvb~e+9J;qLFbj|Y-u7gMY+T(k5)}xweWGjIw@(kw5Yj!q^2vIk^ zk=`;f&@7*AH@w0#1**#J)-^Arpi?7sxBf63`M8a8^r(EWS%YihO-H@pO{VqtpC-adCy9(_qhMGN4x2%j`dG~ zUaaJbwcCFe4^w8*w{S3sJm%2}?x8?CyRB<^@AX#CWq?818nVrv|JZSgwhZhoQ!5Od zRU$KM&dzBRjHH1IWjgkkX-Z^Xa>|hni%8TOg*_vNaP^%#BqbiKy)g83kbSeKisLhn z*?hdl$Wi`5ra(&pF!NURX(%nKC1;wBoyN%+MKT^K0?gY}mrbAuFb$^LP;@c_Zj zmc`mAH#JRbrgxPrEkTbMm0Wr0T&c?q4R?3D_?Vxux$=oDL-CM&xd*`GugHl}|EfC< znM+?8bU5zUBBdWGXO}FNFLZP8av9S??mYn%{-TbIrkw{dJ zEx=Mp(jZW98K7>Rido4$31^+A?(rd9~y(UuUZW2>gswnxaUE*;Iy>Ul!{3&VgY-8 zesgIlR2>R$k4e6R1WAc88>h&P=B%F?<9N*G0^mA9?oJdkkyt%SMMlIp_maC?)fp>m zU-{vK>_X4l`nN|S#rzEOLR#?=9u{MMQ6$_P{R4BF(mibD@WNPO-Y1^P_Ck{y4?RCl zJ_(Wpfm*!7^pqOK+m&vO&peBjk;%V{rBp%%Jszp*&2zqgCk@yzzlDNBNr6)}MxH<2XR z;jj2tiMSgxx1*;k|8xg>x=nRFf0qD(o(7|>8*!J%HY;6wB8(h+uq(^%&0XSlY&Gw9WbQ%xaq?x`axWBOV42EcQ@q52(DfUh1<*W zm9p7V_VBc?rRdI8Ns0IAI>bi=UQX!TVX#R_OYuovgj)GsJL@H7L3~A^c%iSCx^@b=<=(T&i;% z{N6tw`Ua}D>AdiO32xVGSfIo=P*zeN)nzGrIw<4XRwJ2*#Ky7BzQ_K`T%uJA*xEg? zqBY70@Kv<>wx(N9MukITOESJ`Of|5k->vU1$&9kUBdrMO21LEC#et}4D(WHtcWD^> z#@X=7!5v6GKOH9&DaL@o>g@p&R5;U$$gzlaX+T*HwR}UfwOhr(L`5dJ)wj9x>^?p} zhW(C;nySk^43AlVB#|fu>{csR>&8w9($)$++Ak!3B@H&@TxL_Zwxpw{35Tt?R35^m ztoi$Bhq0gh{k}LT1N(su@Za-uJ)NOyV7>tI-i?qLFh_;k*A@=@xaD#GPc@}<8LfR;I?PUhQ zQO&y6>eHPh>ZJ)GXSNIobUK~vpWB7L7;D2Vk0Q-qaCuXk2s1iTZJP*~Jkz0z5SiqG?%n0N_A45h%Tj8ukAlxgDA^S?(y?=#)2x_eF5f*#sP UFk23!dGETM9o+26zXad-7ircYY5)KL diff --git a/assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png b/assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d0869b1a2f5ce68143745e4972e03dd547708 GIT binary patch literal 4278 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 I*`xpdFG}V6VgLXD literal 0 HcmV?d00001 diff --git a/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png b/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png index a430a573c01e1a23b2fbc59b479f0add5a075a20..9c6dcc97bc744f8187ab689c5eb5443323b3d9b5 100644 GIT binary patch delta 1143 zcmV--1c>|DA<7+)BmuIKB_Mx}93c#b-#JB&fH!Q8L$OG?L5`oF>TQ-*q?yS>qztGU z+GT9YpG{SozkaUt1C7LUQu8Ral#HfTD>qCcKia&GHRrYGii@r?x@%E-b>lW8^cV7a zyUUOWM!EdG`;%=*UKlF(k)FxP-pJ+do?q=K%H1=+l=pG|d$f35YmI+cc;>XVwP`_o z%Jrdck9f|YcpxxxE-UDc%P{w|SM(mo+6O)eJ^zSt*5(A0mp-&$pmAB6=zSk$yfVRLu>UN zBHF>Mmsnw6%o_vkD9V5Sg%%Ldy5*6b0lxLO4PaqJp|!&tu-o!+F>x3@a!b+)TA*kc zFObQ{)c`^S--gYQfIu!JMuoC7I}zd-;M1^kmZW?D0h#f@E?Gqi-~?~qSmSi+vhhWX z5&{U5A`UcF8d#~CmZYwM9BL+}W>(BCtXeBlv{)&{%dW-d;_5Kw#ofcJw~)}VDB%%N zqovAKP^(r;^%}L-*5I_ka>MEt4T6IYIrOlj9Dc-6kJgcs@c|ZpkxEmi%`$z)tg|ho z+LEQqR$0Dc)z$9QPO9k@v-jlwOpUJ804$x%6iPR05WC+@&^}IVGXpVJ0&(92kkGuD zsFTUNdb)r73n8 z60^9DB{c#SG$hrG&xkzK@Pfmk`sp!!)xfu*|K1S3CsrEx+(^FxLhx--jpApZ00009 za7bBm000ie000ie0hKEb8vpfJ?3ayhZ>6003~sgeU+200I~Q000Cq00008U;qFB5WoNc03d(?002M$0{{Sk z00sa6009gD0Du4n000013;+NC0{BuF7bRLmvn>Ds0KE?2m#^O(e>t%%0000z58$QI zcze2Y`0A200>9q}jY~Zcpd)AHD|$ z005we0X!TobzL{;x}0;1{Ay$C!@;4U0keS%Kn0Uv0}U5$qM!FGS)-ygG!_5=002ov JPDHLkV1hI`4{`ti delta 1724 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 ogGxdO#p=cfWIV*GqZ-2IG9>ZvX%Q literal 0 HcmV?d00001 diff --git a/assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png b/assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d0869b1a2f5ce68143745e4972e03dd547708 GIT binary patch literal 4278 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 I*`xpdFG}V6VgLXD literal 0 HcmV?d00001 diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 95e737091..68eea4023 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -8283,7 +8283,8 @@ "sirius", "new_jersey", "taihou", - "aegir" + "aegir", + "nakhimov" ] } }, diff --git a/module/config/argument/argument.yaml b/module/config/argument/argument.yaml index 72e3302d5..9594a1377 100644 --- a/module/config/argument/argument.yaml +++ b/module/config/argument/argument.yaml @@ -590,7 +590,7 @@ PrivateQuarters: TargetInteract: true TargetShip: value: anchorage - option: [ anchorage, noshiro, sirius, new_jersey, taihou, aegir ] + option: [ anchorage, noshiro, sirius, new_jersey, taihou, aegir, nakhimov ] # ==================== Daily ==================== Daily: diff --git a/module/config/config_generated.py b/module/config/config_generated.py index 4f7289b7f..4b41f0a38 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -339,7 +339,7 @@ class GeneratedConfig: PrivateQuarters_BuyRoses = True PrivateQuarters_BuyCake = False PrivateQuarters_TargetInteract = True - PrivateQuarters_TargetShip = 'anchorage' # anchorage, noshiro, sirius, new_jersey, taihou, aegir + PrivateQuarters_TargetShip = 'anchorage' # anchorage, noshiro, sirius, new_jersey, taihou, aegir, nakhimov # Group `Daily` Daily_UseDailySkip = True diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index 9da9161a7..4670994ec 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -2102,7 +2102,8 @@ "sirius": "Sirius", "new_jersey": "New Jersey", "taihou": "Taihou", - "aegir": "Aegir" + "aegir": "Aegir", + "nakhimov": "Nakhimov" } }, "Daily": { diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index c6071d3d2..0540a637d 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -2102,7 +2102,8 @@ "sirius": "sirius", "new_jersey": "new_jersey", "taihou": "taihou", - "aegir": "aegir" + "aegir": "aegir", + "nakhimov": "nakhimov" } }, "Daily": { diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index 7b5060a7a..182d9d696 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -2102,7 +2102,8 @@ "sirius": "天狼星", "new_jersey": "新泽西", "taihou": "鹩", - "aegir": "埃吉尔" + "aegir": "埃吉尔", + "nakhimov": "纳希莫夫" } }, "Daily": { diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index 593502496..ca7c61b79 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -2102,7 +2102,8 @@ "sirius": "天狼星", "new_jersey": "紐澤西", "taihou": "大鳳", - "aegir": "埃吉爾" + "aegir": "埃吉爾", + "nakhimov": "纳希莫夫" } }, "Daily": { diff --git a/module/private_quarters/assets.py b/module/private_quarters/assets.py index f4a452f44..44ff56bd4 100644 --- a/module/private_quarters/assets.py +++ b/module/private_quarters/assets.py @@ -8,19 +8,22 @@ PRIVATE_QUARTERS_DAILY_COUNT = Button(area={'cn': (107, 129, 154, 154), 'en': (1 PRIVATE_QUARTERS_INTERACT = Button(area={'cn': (832, 446, 857, 471), 'en': (832, 446, 857, 471), 'jp': (832, 446, 857, 471), 'tw': (832, 446, 857, 471)}, color={'cn': (167, 165, 167), 'en': (167, 165, 167), 'jp': (167, 165, 167), 'tw': (167, 165, 167)}, button={'cn': (832, 446, 1107, 471), 'en': (832, 446, 1107, 471), 'jp': (832, 446, 1107, 471), 'tw': (832, 446, 1107, 471)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_INTERACT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_INTERACT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_INTERACT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_INTERACT.png'}) PRIVATE_QUARTERS_INTERACT_CHECK = Button(area={'cn': (1223, 653, 1245, 675), 'en': (1223, 653, 1245, 675), 'jp': (1223, 653, 1245, 675), 'tw': (1223, 653, 1245, 675)}, color={'cn': (196, 192, 187), 'en': (196, 192, 187), 'jp': (196, 192, 187), 'tw': (196, 192, 187)}, button={'cn': (1223, 653, 1245, 675), 'en': (1223, 653, 1245, 675), 'jp': (1223, 653, 1245, 675), 'tw': (1223, 653, 1245, 675)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_INTERACT_CHECK.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_INTERACT_CHECK.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_INTERACT_CHECK.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_INTERACT_CHECK.png'}) PRIVATE_QUARTERS_LOADING_CHECK = Button(area={'cn': (582, 376, 702, 391), 'en': (582, 376, 702, 391), 'jp': (582, 376, 702, 391), 'tw': (582, 376, 702, 391)}, color={'cn': (200, 232, 255), 'en': (200, 232, 255), 'jp': (200, 232, 255), 'tw': (200, 232, 255)}, button={'cn': (582, 376, 702, 391), 'en': (582, 376, 702, 391), 'jp': (582, 376, 702, 391), 'tw': (582, 376, 702, 391)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_LOADING_CHECK.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_LOADING_CHECK.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_LOADING_CHECK.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_LOADING_CHECK.png'}) -PRIVATE_QUARTERS_PAGE_LEFT = Button(area={'cn': (20, 329, 40, 359), 'en': (20, 329, 40, 359), 'jp': (20, 329, 40, 359), 'tw': (20, 329, 40, 359)}, color={'cn': (231, 234, 238), 'en': (231, 234, 238), 'jp': (231, 234, 238), 'tw': (231, 234, 238)}, button={'cn': (20, 329, 40, 359), 'en': (20, 329, 40, 359), 'jp': (20, 329, 40, 359), 'tw': (20, 329, 40, 359)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png'}) +PRIVATE_QUARTERS_PAGE_LEFT = Button(area={'cn': (27, 332, 39, 356), 'en': (27, 332, 39, 356), 'jp': (27, 332, 39, 356), 'tw': (27, 332, 39, 356)}, color={'cn': (246, 248, 249), 'en': (246, 248, 249), 'jp': (246, 248, 249), 'tw': (246, 248, 249)}, button={'cn': (27, 332, 39, 356), 'en': (27, 332, 39, 356), 'jp': (27, 332, 39, 356), 'tw': (27, 332, 39, 356)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png'}) PRIVATE_QUARTERS_PAGE_LOCALE_BEACH = Button(area={'cn': (24, 504, 99, 527), 'en': (38, 509, 86, 522), 'jp': (36, 506, 87, 525), 'tw': (25, 506, 93, 526)}, color={'cn': (198, 198, 198), 'en': (154, 154, 154), 'jp': (221, 221, 221), 'tw': (200, 200, 200)}, button={'cn': (24, 504, 99, 527), 'en': (38, 509, 86, 522), 'jp': (36, 506, 87, 525), 'tw': (25, 506, 93, 526)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_BEACH.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_BEACH.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_BEACH.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_BEACH.png'}) PRIVATE_QUARTERS_PAGE_LOCALE_LOFT = Button(area={'cn': (23, 502, 99, 528), 'en': (41, 505, 81, 525), 'jp': (35, 507, 86, 525), 'tw': (27, 506, 95, 526)}, color={'cn': (206, 206, 207), 'en': (196, 196, 197), 'jp': (211, 212, 212), 'tw': (204, 204, 205)}, button={'cn': (23, 502, 99, 528), 'en': (41, 505, 81, 525), 'jp': (35, 507, 86, 525), 'tw': (27, 506, 95, 526)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png'}) -PRIVATE_QUARTERS_PAGE_RIGHT = Button(area={'cn': (1240, 329, 1260, 359), 'en': (1240, 329, 1260, 359), 'jp': (1240, 329, 1260, 359), 'tw': (1240, 344, 1260, 359)}, color={'cn': (232, 234, 237), 'en': (232, 234, 237), 'jp': (232, 234, 237), 'tw': (232, 233, 236)}, button={'cn': (1240, 329, 1260, 359), 'en': (1240, 329, 1260, 359), 'jp': (1240, 329, 1260, 359), 'tw': (1240, 344, 1260, 359)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png'}) +PRIVATE_QUARTERS_PAGE_LOCALE_VILLA = Button(area={'cn': (42, 508, 80, 523), 'en': (42, 508, 80, 523), 'jp': (42, 508, 80, 523), 'tw': (42, 508, 80, 523)}, color={'cn': (162, 162, 162), 'en': (162, 162, 162), 'jp': (162, 162, 162), 'tw': (162, 162, 162)}, button={'cn': (42, 508, 80, 523), 'en': (42, 508, 80, 523), 'jp': (42, 508, 80, 523), 'tw': (42, 508, 80, 523)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_VILLA.png'}) +PRIVATE_QUARTERS_PAGE_RIGHT = Button(area={'cn': (1241, 332, 1253, 356), 'en': (1241, 332, 1253, 356), 'jp': (1241, 332, 1253, 356), 'tw': (1240, 344, 1260, 359)}, color={'cn': (248, 248, 249), 'en': (248, 248, 249), 'jp': (248, 248, 249), 'tw': (232, 233, 236)}, button={'cn': (1241, 332, 1253, 356), 'en': (1241, 332, 1253, 356), 'jp': (1241, 332, 1253, 356), 'tw': (1240, 344, 1260, 359)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png'}) PRIVATE_QUARTERS_ROOM_BACK = Button(area={'cn': (28, 40, 43, 60), 'en': (28, 40, 43, 60), 'jp': (28, 40, 43, 60), 'tw': (28, 40, 43, 60)}, color={'cn': (185, 184, 186), 'en': (185, 184, 186), 'jp': (185, 184, 186), 'tw': (185, 184, 186)}, button={'cn': (16, 31, 139, 69), 'en': (27, 30, 147, 70), 'jp': (27, 30, 147, 70), 'tw': (21, 31, 126, 68)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_BACK.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_BACK.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_BACK.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_BACK.png'}) PRIVATE_QUARTERS_ROOM_CHECK = Button(area={'cn': (1218, 651, 1238, 666), 'en': (1218, 651, 1238, 666), 'jp': (1218, 651, 1238, 666), 'tw': (1218, 651, 1238, 666)}, color={'cn': (68, 98, 113), 'en': (68, 98, 113), 'jp': (68, 98, 113), 'tw': (68, 98, 113)}, button={'cn': (1218, 651, 1238, 666), 'en': (1218, 651, 1238, 666), 'jp': (1218, 651, 1238, 666), 'tw': (1218, 651, 1238, 666)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_CHECK.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_CHECK.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_CHECK.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_CHECK.png'}) PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA = Button(area={'cn': (950, 95, 1275, 595), 'en': (950, 95, 1275, 595), 'jp': (950, 95, 1275, 595), 'tw': (950, 95, 1275, 595)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (950, 95, 1275, 595), 'en': (950, 95, 1275, 595), 'jp': (950, 95, 1275, 595), 'tw': (950, 95, 1275, 595)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.png'}) PRIVATE_QUARTERS_ROOM_TARGET_CHECK_1 = Button(area={'cn': (721, 17, 781, 37), 'en': (721, 17, 781, 37), 'jp': (721, 17, 781, 37), 'tw': (721, 17, 781, 37)}, color={'cn': (206, 202, 201), 'en': (206, 202, 201), 'jp': (206, 202, 201), 'tw': (206, 202, 201)}, button={'cn': (721, 17, 781, 37), 'en': (721, 17, 781, 37), 'jp': (721, 17, 781, 37), 'tw': (721, 17, 781, 37)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_1.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_1.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_1.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_1.png'}) PRIVATE_QUARTERS_ROOM_TARGET_CHECK_2 = Button(area={'cn': (667, 71, 717, 86), 'en': (667, 71, 717, 86), 'jp': (667, 71, 717, 86), 'tw': (667, 71, 717, 86)}, color={'cn': (222, 213, 198), 'en': (222, 213, 198), 'jp': (222, 213, 198), 'tw': (222, 213, 198)}, button={'cn': (667, 71, 717, 86), 'en': (667, 71, 717, 86), 'jp': (667, 71, 717, 86), 'tw': (667, 71, 717, 86)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_2.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_2.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_2.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_2.png'}) -PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA = Button(area={'cn': (504, 45, 784, 625), 'en': (504, 45, 784, 625), 'jp': (504, 45, 784, 625), 'tw': (504, 45, 784, 625)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (504, 45, 784, 625), 'en': (504, 45, 784, 625), 'jp': (504, 45, 784, 625), 'tw': (504, 45, 784, 625)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png'}) +PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3 = Button(area={'cn': (709, 185, 754, 200), 'en': (709, 185, 754, 200), 'jp': (709, 185, 754, 200), 'tw': (709, 185, 754, 200)}, color={'cn': (213, 206, 198), 'en': (213, 206, 198), 'jp': (213, 206, 198), 'tw': (213, 206, 198)}, button={'cn': (709, 185, 754, 200), 'en': (709, 185, 754, 200), 'jp': (709, 185, 754, 200), 'tw': (709, 185, 754, 200)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3.png'}) +PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA = Button(area={'cn': (504, 266, 784, 625), 'en': (504, 266, 784, 625), 'jp': (504, 266, 784, 625), 'tw': (504, 266, 784, 625)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (504, 266, 784, 625), 'en': (504, 266, 784, 625), 'jp': (504, 266, 784, 625), 'tw': (504, 266, 784, 625)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png'}) PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX = Button(area={'cn': (1157, 40, 1197, 60), 'en': (1157, 40, 1197, 60), 'jp': (1157, 40, 1197, 60), 'tw': (1157, 40, 1197, 60)}, color={'cn': (173, 161, 155), 'en': (173, 161, 155), 'jp': (173, 161, 155), 'tw': (173, 161, 155)}, button={'cn': (1157, 40, 1197, 60), 'en': (1157, 40, 1197, 60), 'jp': (1157, 40, 1197, 60), 'tw': (1157, 40, 1197, 60)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX.png'}) PRIVATE_QUARTERS_SHIP_AEGIR = Button(area={'cn': (512, 526, 569, 568), 'en': (512, 526, 569, 568), 'jp': (512, 526, 569, 568), 'tw': (512, 526, 569, 568)}, color={'cn': (209, 191, 188), 'en': (209, 191, 188), 'jp': (209, 191, 188), 'tw': (209, 191, 188)}, button={'cn': (512, 526, 569, 568), 'en': (512, 526, 569, 568), 'jp': (512, 526, 569, 568), 'tw': (512, 526, 569, 568)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_AEGIR.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_AEGIR.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_AEGIR.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_AEGIR.png'}) PRIVATE_QUARTERS_SHIP_ANCHORAGE = Button(area={'cn': (713, 246, 778, 311), 'en': (713, 246, 778, 311), 'jp': (713, 246, 778, 311), 'tw': (713, 246, 778, 311)}, color={'cn': (214, 184, 176), 'en': (214, 184, 176), 'jp': (214, 184, 176), 'tw': (214, 184, 176)}, button={'cn': (713, 246, 778, 311), 'en': (713, 246, 778, 311), 'jp': (713, 246, 778, 311), 'tw': (713, 246, 778, 311)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_ANCHORAGE.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_ANCHORAGE.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_ANCHORAGE.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_ANCHORAGE.png'}) +PRIVATE_QUARTERS_SHIP_NAKHIMOV = Button(area={'cn': (944, 373, 994, 431), 'en': (944, 373, 994, 431), 'jp': (944, 373, 994, 431), 'tw': (944, 373, 994, 431)}, color={'cn': (181, 184, 166), 'en': (181, 184, 166), 'jp': (181, 184, 166), 'tw': (181, 184, 166)}, button={'cn': (944, 373, 994, 431), 'en': (944, 373, 994, 431), 'jp': (944, 373, 994, 431), 'tw': (944, 373, 994, 431)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_NAKHIMOV.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_NAKHIMOV.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_NAKHIMOV.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_NAKHIMOV.png'}) PRIVATE_QUARTERS_SHIP_NEW_JERSEY = Button(area={'cn': (973, 307, 1023, 347), 'en': (973, 307, 1023, 347), 'jp': (973, 307, 1023, 347), 'tw': (973, 307, 1023, 347)}, color={'cn': (149, 141, 173), 'en': (149, 141, 173), 'jp': (149, 141, 173), 'tw': (149, 141, 173)}, button={'cn': (973, 307, 1023, 347), 'en': (973, 307, 1023, 347), 'jp': (973, 307, 1023, 347), 'tw': (973, 307, 1023, 347)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png'}) PRIVATE_QUARTERS_SHIP_NOSHIRO = Button(area={'cn': (965, 289, 1027, 362), 'en': (962, 295, 1027, 360), 'jp': (962, 295, 1027, 360), 'tw': (962, 295, 1027, 360)}, color={'cn': (143, 120, 127), 'en': (102, 93, 102), 'jp': (102, 93, 102), 'tw': (102, 93, 102)}, button={'cn': (965, 289, 1027, 362), 'en': (962, 295, 1027, 360), 'jp': (962, 295, 1027, 360), 'tw': (962, 295, 1027, 360)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_NOSHIRO.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_NOSHIRO.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_NOSHIRO.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_NOSHIRO.png'}) PRIVATE_QUARTERS_SHIP_SIRIUS = Button(area={'cn': (908, 411, 966, 478), 'en': (905, 414, 970, 479), 'jp': (905, 414, 970, 479), 'tw': (905, 414, 970, 479)}, color={'cn': (219, 207, 214), 'en': (156, 153, 165), 'jp': (156, 153, 165), 'tw': (156, 153, 165)}, button={'cn': (908, 411, 966, 478), 'en': (905, 414, 970, 479), 'jp': (905, 414, 970, 479), 'tw': (905, 414, 970, 479)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_SIRIUS.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_SIRIUS.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_SIRIUS.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_SIRIUS.png'}) diff --git a/module/private_quarters/interact.py b/module/private_quarters/interact.py index 7fec47099..3415d343b 100644 --- a/module/private_quarters/interact.py +++ b/module/private_quarters/interact.py @@ -18,6 +18,7 @@ class PQInteract(UI): 'new_jersey': (PRIVATE_QUARTERS_SHIP_NEW_JERSEY, PRIVATE_QUARTERS_PAGE_LOCALE_LOFT), 'taihou': (PRIVATE_QUARTERS_SHIP_TAIHOU, PRIVATE_QUARTERS_PAGE_LOCALE_LOFT), 'aegir': (PRIVATE_QUARTERS_SHIP_AEGIR, PRIVATE_QUARTERS_PAGE_LOCALE_LOFT), + 'nakhimov': (PRIVATE_QUARTERS_SHIP_NAKHIMOV, PRIVATE_QUARTERS_PAGE_LOCALE_VILLA), } def _pq_handle_dialogue(self): @@ -70,6 +71,8 @@ class PQInteract(UI): return True if self.appear(PRIVATE_QUARTERS_ROOM_TARGET_CHECK_2, offset=(100, 100)): return True + if self.appear(PRIVATE_QUARTERS_ROOM_TARGET_CHECK_3, offset=(100, 100)): + return True # End, failed expired wait time if settle_timer.reached(): diff --git a/module/private_quarters/private_quarters.py b/module/private_quarters/private_quarters.py index 7dac27365..2105740a3 100644 --- a/module/private_quarters/private_quarters.py +++ b/module/private_quarters/private_quarters.py @@ -8,6 +8,15 @@ from module.ui.page import page_private_quarters, page_dormmenu class PrivateQuarters(PQInteract, PQShop): + # Key: str, server name + # Value: list[str] + not_supported_filter = { + 'cn': ('nakhimov'), + 'en': (), + 'jp': ('nakhimov'), + 'tw': ('taihou', 'nakhimov'), + } + def _pq_get_daily_count(self, retry=3): """ Wrapper func for status_get_daily_count @@ -144,14 +153,18 @@ class PrivateQuarters(PQInteract, PQShop): # Interact with target if enabled if target_interact: + # Ensure target is supported for server + # Update `not_supported_filter` to enable a target + if target_ship in self.not_supported_filter[server.server]: + logger.info(f'Target ship:{target_ship} not supported for {server.server} server.') + return + # Pull count here, exit run if = 0 count = self._pq_get_daily_count(retry=3) if count == 0: logger.info('Daily intimacy count exhausted, exit subtask') return - if server.server in ['tw'] and target_ship in ['taihou']: - logger.info(f'Target ship:{target_ship} not supported for {server.server} server.') - return + # Able to interact with target, execute self.pq_execute_interact(target_ship) @@ -161,7 +174,6 @@ class PrivateQuarters(PQInteract, PQShop): in: Any page out: page_main, may have info_bar """ - self.ui_ensure(page_dormmenu) self.ui_goto(page_private_quarters, get_ship=False) self.handle_info_bar() @@ -171,8 +183,5 @@ class PrivateQuarters(PQInteract, PQShop): target_interact=self.config.PrivateQuarters_TargetInteract, target_ship=self.config.PrivateQuarters_TargetShip ) - if server.server in ['tw']: - logger.info(f'Private Quarters task not presently supported for {server.server} server.') - logger.info('If want to address, review necessary assets, replace, update above condition, and test') self.config.task_delay(server_update=True) From e08db050715bc6a720e4f73bcc8182a3bba8f5c6 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Sun, 28 Jun 2026 18:32:27 +0800 Subject: [PATCH 04/11] Fix: fleet_enter() should ignore default ocr value 0 --- module/equipment/fleet_equipment.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/module/equipment/fleet_equipment.py b/module/equipment/fleet_equipment.py index f2a568e20..4f73c6536 100644 --- a/module/equipment/fleet_equipment.py +++ b/module/equipment/fleet_equipment.py @@ -1,3 +1,5 @@ +from module.logger import logger +from module.base.timer import Timer from module.equipment.assets import * from module.equipment.equipment_change import EquipmentChange from module.ocr.ocr import Digit @@ -10,8 +12,31 @@ OCR_FLEET_INDEX = Digit(OCR_FLEET_INDEX, letter=(90, 154, 255), threshold=128, a class FleetEquipment(EquipmentChange): def fleet_enter(self, fleet): self.ui_ensure(page_fleet) - self.ui_ensure_index(fleet, letter=OCR_FLEET_INDEX, - next_button=FLEET_NEXT, prev_button=FLEET_PREV, skip_first_screenshot=True) + + # ui_ensure_index, set fleet + letter = OCR_FLEET_INDEX + next_button = FLEET_NEXT + prev_button = FLEET_PREV + interval = (0.2, 0.3) + + retry = Timer(1, count=2) + for _ in self.loop(): + current = letter.ocr(self.device.image) + logger.attr("Index", current) + + # ui_ensure_index but ignore default value 0 + # otherwise we would have 1 extra click switching from 1 to 4 + if current == 0: + continue + + diff = fleet - current + if diff == 0: + break + + if retry.reached(): + button = next_button if diff > 0 else prev_button + self.device.multi_click(button, n=abs(diff), interval=interval) + retry.reset() def fleet_equipment_take_on_preset(self, preset_record, enter=FLEET_DETAIL_ENTER_FLAGSHIP, long_click=False, out=FLEET_DETAIL_CHECK): From 54f44a4583911971832f79ddadaf0598c3c99d33 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Tue, 30 Jun 2026 01:19:32 +0800 Subject: [PATCH 05/11] Fix: handle_info_bar before setting meowfficer buy amount --- module/meowfficer/buy.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/module/meowfficer/buy.py b/module/meowfficer/buy.py index c76abdba1..1be738351 100644 --- a/module/meowfficer/buy.py +++ b/module/meowfficer/buy.py @@ -51,6 +51,12 @@ class MeowfficerBuy(MeowfficerBase): logger.info(f'Current coins only enough to buy {count}') self.meow_enter(MEOWFFICER_BUY_ENTER, check_button=MEOWFFICER_BUY) + + # info_bar may covers OCR_MEOWFFICER_CHOOSE, + # and OCR_MEOWFFICER_CHOOSE may detected as 0 causing extra clickings + # info_bar is usually from the previous Dorm task or meowfficer fort + self.handle_info_bar() + self.ui_ensure_index(count, letter=MEOWFFICER_CHOOSE, prev_button=MEOWFFICER_BUY_PREV, next_button=MEOWFFICER_BUY_NEXT, skip_first_screenshot=True) return True From 7daf9b5edeede42adf3ff1e78402121f7bc8278c Mon Sep 17 00:00:00 2001 From: iceynano <34570144+iceynano@users.noreply.github.com> Date: Wed, 1 Jul 2026 13:30:08 +0800 Subject: [PATCH 06/11] Handle log write when config name with underscore (#5766) Alas would write logs of the same prefix before first '_' in config name into one log file, such as write log into "%datatime%_alas.txt" with config name "alas_jp" and "alas_cn". Removed obsolete legacy code. --- module/logger.py | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/module/logger.py b/module/logger.py index 97dc148de..9d9058b8b 100644 --- a/module/logger.py +++ b/module/logger.py @@ -168,26 +168,7 @@ os.chdir(os.path.join(os.path.dirname(__file__), '../')) pyw_name = os.path.splitext(os.path.basename(sys.argv[0]))[0] -def _set_file_logger(name=pyw_name): - if '_' in name: - name = name.split('_', 1)[0] - log_file = f'./log/{datetime.date.today()}_{name}.txt' - try: - file = logging.FileHandler(log_file, encoding='utf-8') - except FileNotFoundError: - os.mkdir('./log') - file = logging.FileHandler(log_file, encoding='utf-8') - file.setFormatter(file_formatter) - - logger.handlers = [h for h in logger.handlers if not isinstance( - h, (logging.FileHandler, RichFileHandler))] - logger.addHandler(file) - logger.log_file = log_file - - def set_file_logger(name=pyw_name): - if '_' in name: - name = name.split('_', 1)[0] log_file = f'./log/{datetime.date.today()}_{name}.txt' try: file = open(log_file, mode='a', encoding='utf-8') From 5d954bc837e0a667d83219bfd2f39e87c0352c2e Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Wed, 1 Jul 2026 13:30:56 +0800 Subject: [PATCH 07/11] Fix: handle_popup_cancel should click POPUP_CANCEL_WHITE --- module/handler/info_handler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/handler/info_handler.py b/module/handler/info_handler.py index 181339948..5b086931f 100644 --- a/module/handler/info_handler.py +++ b/module/handler/info_handler.py @@ -118,7 +118,7 @@ class InfoHandler(ModuleBase): return True if self.appear(POPUP_CANCEL_WHITE, offset=offset, interval=interval): POPUP_CANCEL_WHITE.name = POPUP_CANCEL_WHITE.name + '_' + name - self.device.click(POPUP_CONFIRM_WHITE) + self.device.click(POPUP_CANCEL_WHITE) POPUP_CANCEL_WHITE.name = POPUP_CANCEL_WHITE.name[:-len(name) - 1] return True return False From 410ea1de3cb1a1b6fe175f639bfdb3c527fbd7c6 Mon Sep 17 00:00:00 2001 From: Zel <149077185+Zelfan041210@users.noreply.github.com> Date: Wed, 1 Jul 2026 15:57:15 +0800 Subject: [PATCH 08/11] feat: Add overflow buy for meowfficer boxes (#5310) Refs #5298 --- module/config/argument/args.json | 4 + 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/meowfficer/buy.py | 112 +++++++++++++++++---------- module/meowfficer/meowfficer.py | 4 +- 9 files changed, 95 insertions(+), 43 deletions(-) diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 68eea4023..a4604e51e 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -6959,6 +6959,10 @@ "FortChoreMeowfficer": { "type": "checkbox", "value": true + }, + "OverflowCoins": { + "type": "input", + "value": -1 } }, "MeowfficerTrain": { diff --git a/module/config/argument/argument.yaml b/module/config/argument/argument.yaml index 9594a1377..6bcfb044a 100644 --- a/module/config/argument/argument.yaml +++ b/module/config/argument/argument.yaml @@ -422,6 +422,7 @@ BuyFurniture: Meowfficer: BuyAmount: 1 FortChoreMeowfficer: true + OverflowCoins: -1 MeowfficerTrain: Enable: false Mode: diff --git a/module/config/config_generated.py b/module/config/config_generated.py index 4b41f0a38..feb404576 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -225,6 +225,7 @@ class GeneratedConfig: # Group `Meowfficer` Meowfficer_BuyAmount = 1 Meowfficer_FortChoreMeowfficer = True + Meowfficer_OverflowCoins = -1 # Group `MeowfficerTrain` MeowfficerTrain_Enable = False diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index 4670994ec..1c2123221 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -1547,6 +1547,10 @@ "FortChoreMeowfficer": { "name": "Do Fort Chores", "help": "Completes all 3 chores; clean, feed, and play with meowfficer to get fort exp" + }, + "OverflowCoins": { + "name": "Buy Boxes On Coin Overflow", + "help": "When coins are above this value, keep buying boxes until coins drop to it or boxes run out; -1 to disable" } }, "MeowfficerTrain": { diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index 0540a637d..15730cff0 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -1547,6 +1547,10 @@ "FortChoreMeowfficer": { "name": "Meowfficer.FortChoreMeowfficer.name", "help": "Meowfficer.FortChoreMeowfficer.help" + }, + "OverflowCoins": { + "name": "Meowfficer.OverflowCoins.name", + "help": "Meowfficer.OverflowCoins.help" } }, "MeowfficerTrain": { diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index 182d9d696..20b540822 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -1547,6 +1547,10 @@ "FortChoreMeowfficer": { "name": "喵窝互动", "help": "清扫、喂食和逗猫" + }, + "OverflowCoins": { + "name": "金币溢出时购买猫箱", + "help": "当金币高于此值时,继续购买猫箱直至金币降至此值或猫箱售罄;-1 关闭" } }, "MeowfficerTrain": { diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index ca7c61b79..6b286141f 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -1547,6 +1547,10 @@ "FortChoreMeowfficer": { "name": "喵窩互動", "help": "清掃、餵食和逗貓" + }, + "OverflowCoins": { + "name": "金幣溢出時購買貓箱", + "help": "當金幣高於此值時,繼續購買貓箱直至金幣降至此值或貓箱售罄;-1 關閉" } }, "MeowfficerTrain": { diff --git a/module/meowfficer/buy.py b/module/meowfficer/buy.py index 1be738351..0b354708a 100644 --- a/module/meowfficer/buy.py +++ b/module/meowfficer/buy.py @@ -13,43 +13,75 @@ MEOWFFICER_COINS = Digit(OCR_MEOWFFICER_COINS, letter=(99, 69, 41), threshold=64 class MeowfficerBuy(MeowfficerBase): - def meow_choose(self, count) -> bool: + def meow_get_buy_count(self) -> int: """ + OCR remaining buys and coins, combine with user configs to decide + how many meowfficer boxes to buy this run. + + Baseline: buy up to Meowfficer_BuyAmount per day. + Overflow: when Meowfficer_OverflowCoins is not -1 and current coins + exceed it, keep buying extra boxes until coins drop to threshold or + today's quota runs out. The 1st box per day is free. + + Pages: + in: page_meowfficer + + Returns: + int: 0 to BUY_MAX, number of boxes to buy now. + """ + self.device.screenshot() + remain, bought, total = MEOWFFICER.ocr(self.device.image) + coins = MEOWFFICER_COINS.ocr(self.device.image) + logger.attr('Meowfficer_remain', remain) + logger.attr('Meowfficer_coins', coins) + + if total != BUY_MAX: + logger.warning(f'Invalid meowfficer buy limit: {total}, revise to {BUY_MAX}') + total = BUY_MAX + bought = total - remain + + today_left = max(0, total - bought) + if today_left <= 0: + logger.info(f'Already bought {bought}/{total} today, stopped') + return 0 + + # Baseline buy + baseline = min(max(0, self.config.Meowfficer_BuyAmount - bought), today_left) + + # Overflow buy + overflow_th = self.config.Meowfficer_OverflowCoins + extra = 0 + if overflow_th != -1 and coins > overflow_th: + extra = -(-(coins - overflow_th) // BUY_PRIZE) + extra = min(extra, today_left - baseline) + extra = max(0, extra) + + count = baseline + extra + + # Cap by affordable coins, the 1st box per day is free + free = 1 if bought == 0 else 0 + affordable = coins // BUY_PRIZE + free + if count > affordable: + logger.info(f'Current coins only afford to buy {affordable}') + count = affordable + + logger.info( + f'Meowfficer buy plan: count={count}, baseline={baseline}, ' + f'overflow={extra}, bought={bought}/{total}, coins={coins}' + ) + return count + + def meow_choose(self, count) -> None: + """ + Navigate to MEOWFFICER_BUY and set buy index to `count`. + Pages: in: page_meowfficer out: MEOWFFICER_BUY Args: - count (int): 0 to 15. - - Returns: - bool: If success. + count (int): 1 to BUY_MAX. """ - remain, bought, total = MEOWFFICER.ocr(self.device.image) - logger.attr('Meowfficer_remain', remain) - - # Check buy status - if total != BUY_MAX: - logger.warning(f'Invalid meowfficer buy limit: {total}, revise to {BUY_MAX}') - total = BUY_MAX - bought = total - remain - if bought > 0: - if bought >= count: - logger.info(f'Already bought {bought} today, stopped') - return False - else: - count -= bought - logger.info(f'Already bought {bought} today, only need to buy {count} more') - - # Check coins - coins = MEOWFFICER_COINS.ocr(self.device.image) - if (coins < BUY_PRIZE) and (remain < total): - logger.info('Not enough coins to buy one, stopped') - return False - elif (count - int(remain == total)) * BUY_PRIZE > coins: - count = coins // BUY_PRIZE + int(remain == total) - logger.info(f'Current coins only enough to buy {count}') - self.meow_enter(MEOWFFICER_BUY_ENTER, check_button=MEOWFFICER_BUY) # info_bar may covers OCR_MEOWFFICER_CHOOSE, @@ -59,7 +91,6 @@ class MeowfficerBuy(MeowfficerBase): self.ui_ensure_index(count, letter=MEOWFFICER_CHOOSE, prev_button=MEOWFFICER_BUY_PREV, next_button=MEOWFFICER_BUY_NEXT, skip_first_screenshot=True) - return True def meow_confirm(self, skip_first_screenshot=True) -> None: """ @@ -68,7 +99,6 @@ class MeowfficerBuy(MeowfficerBase): out: page_meowfficer """ # Here uses a simple click, to avoid clicking MEOWFFICER_BUY multiple times. - # Retry logic is in meow_buy() logger.hr('Meow confirm') executed = False with self.stat.new( @@ -108,19 +138,17 @@ class MeowfficerBuy(MeowfficerBase): if self.match_template_color(MEOWFFICER_BUY_ENTER, offset=(20, 20)): break - def meow_buy(self) -> bool: + def meow_buy(self) -> None: """ + Buy meowfficer boxes according to baseline and optional overflow plan. + Pages: in: page_meowfficer out: page_meowfficer """ logger.hr('Meowfficer buy', level=1) - - for _ in range(3): - if self.meow_choose(count=self.config.Meowfficer_BuyAmount): - self.meow_confirm() - else: - return True - - logger.warning('Too many trial in meowfficer buy, stopped.') - return False + count = self.meow_get_buy_count() + if count <= 0: + return + self.meow_choose(count) + self.meow_confirm() diff --git a/module/meowfficer/meowfficer.py b/module/meowfficer/meowfficer.py index 8a29aa8f4..fb93b97c9 100644 --- a/module/meowfficer/meowfficer.py +++ b/module/meowfficer/meowfficer.py @@ -34,6 +34,7 @@ class RewardMeowfficer(MeowfficerBuy, MeowfficerFort, MeowfficerTrain): out: page_meowfficer """ if self.config.Meowfficer_BuyAmount <= 0 \ + and self.config.Meowfficer_OverflowCoins == -1 \ and not self.config.Meowfficer_FortChoreMeowfficer \ and not self.config.MeowfficerTrain_Enable: self.config.Scheduler_Enable = False @@ -42,7 +43,8 @@ class RewardMeowfficer(MeowfficerBuy, MeowfficerFort, MeowfficerTrain): self.ui_ensure(page_meowfficer) self.wait_meowfficer_buttons() # Wait for the ui to load fully - if self.config.Meowfficer_BuyAmount > 0: + if self.config.Meowfficer_BuyAmount > 0 \ + or self.config.Meowfficer_OverflowCoins != -1: self.meow_buy() if self.config.Meowfficer_FortChoreMeowfficer: self.meow_fort() From 21382ba6afbb32315c30c30f4bdfa72297b44393 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:52:29 +0800 Subject: [PATCH 09/11] Chore: Abstract _meow_get_buy_count for testing --- module/meowfficer/buy.py | 67 ++++++++++++++++++++++++++------- module/meowfficer/meowfficer.py | 4 +- 2 files changed, 56 insertions(+), 15 deletions(-) diff --git a/module/meowfficer/buy.py b/module/meowfficer/buy.py index 0b354708a..49e59b585 100644 --- a/module/meowfficer/buy.py +++ b/module/meowfficer/buy.py @@ -13,15 +13,15 @@ MEOWFFICER_COINS = Digit(OCR_MEOWFFICER_COINS, letter=(99, 69, 41), threshold=64 class MeowfficerBuy(MeowfficerBase): - def meow_get_buy_count(self) -> int: + def meow_get_buy_count(self, buy_amount, overflow_th): """ OCR remaining buys and coins, combine with user configs to decide how many meowfficer boxes to buy this run. - Baseline: buy up to Meowfficer_BuyAmount per day. - Overflow: when Meowfficer_OverflowCoins is not -1 and current coins - exceed it, keep buying extra boxes until coins drop to threshold or - today's quota runs out. The 1st box per day is free. + Args: + buy_amount (int): User configured purchase amount (Meowfficer_BuyAmount). + overflow_th (int): Coin overflow threshold (Meowfficer_OverflowCoins), + < 0 to disable overflow buy. Pages: in: page_meowfficer @@ -29,9 +29,16 @@ class MeowfficerBuy(MeowfficerBase): Returns: int: 0 to BUY_MAX, number of boxes to buy now. """ - self.device.screenshot() - remain, bought, total = MEOWFFICER.ocr(self.device.image) - coins = MEOWFFICER_COINS.ocr(self.device.image) + for _ in self.loop(timeout=2): + remain, bought, total = MEOWFFICER.ocr(self.device.image) + coins = MEOWFFICER_COINS.ocr(self.device.image) + if total > 0: + break + # else: retry if MEOWFFICER has ocr error + else: + logger.warning('Failed to get meowfficer buy status') + return 0 + logger.attr('Meowfficer_remain', remain) logger.attr('Meowfficer_coins', coins) @@ -40,19 +47,46 @@ class MeowfficerBuy(MeowfficerBase): total = BUY_MAX bought = total - remain + return self._meow_get_buy_count(bought, total, coins, buy_amount, overflow_th) + + @staticmethod + def _meow_get_buy_count(bought, total, coins, buy_amount, overflow_th): + """ + Calculate how many meowfficer boxes to buy. + + Baseline: buy up to Meowfficer_BuyAmount per day. + Overflow: when Meowfficer_OverflowCoins >= 0 and current coins + exceed it, keep buying extra boxes until coins drop to threshold or + today's quota runs out. The 1st box per day is free. + + Args: + bought (int): Number of boxes already bought today. + total (int): Total available boxes per day (typically BUY_MAX=15). + coins (int): Current coins. + buy_amount (int): User configured purchase amount (Meowfficer_BuyAmount). + overflow_th (int): Coin overflow threshold (Meowfficer_OverflowCoins), + < 0 to disable overflow buy. + + Returns: + int: 0 to BUY_MAX, number of boxes to buy now. + """ today_left = max(0, total - bought) if today_left <= 0: logger.info(f'Already bought {bought}/{total} today, stopped') return 0 # Baseline buy - baseline = min(max(0, self.config.Meowfficer_BuyAmount - bought), today_left) + baseline = min(max(0, buy_amount - bought), today_left) # Overflow buy - overflow_th = self.config.Meowfficer_OverflowCoins extra = 0 - if overflow_th != -1 and coins > overflow_th: - extra = -(-(coins - overflow_th) // BUY_PRIZE) + if overflow_th >= 0 and coins > overflow_th: + if bought == 0: + # First box of the day is free, compensate so (extra-1)*BUY_PRIZE + # coins are spent, ensuring coins drop below overflow_th + extra = -(-(coins - overflow_th + BUY_PRIZE) // BUY_PRIZE) + else: + extra = -(-(coins - overflow_th) // BUY_PRIZE) extra = min(extra, today_left - baseline) extra = max(0, extra) @@ -147,8 +181,15 @@ class MeowfficerBuy(MeowfficerBase): out: page_meowfficer """ logger.hr('Meowfficer buy', level=1) - count = self.meow_get_buy_count() + + buy_amount = self.config.Meowfficer_BuyAmount + buy_amount = max(min(buy_amount, 15), 1) + overflow_th = self.config.Meowfficer_OverflowCoins + + count = self.meow_get_buy_count(buy_amount, overflow_th) if count <= 0: return self.meow_choose(count) self.meow_confirm() + + logger.warning('Too many trial in meowfficer buy, stopped.') diff --git a/module/meowfficer/meowfficer.py b/module/meowfficer/meowfficer.py index fb93b97c9..7154b18ad 100644 --- a/module/meowfficer/meowfficer.py +++ b/module/meowfficer/meowfficer.py @@ -34,7 +34,7 @@ class RewardMeowfficer(MeowfficerBuy, MeowfficerFort, MeowfficerTrain): out: page_meowfficer """ if self.config.Meowfficer_BuyAmount <= 0 \ - and self.config.Meowfficer_OverflowCoins == -1 \ + and self.config.Meowfficer_OverflowCoins < 0 \ and not self.config.Meowfficer_FortChoreMeowfficer \ and not self.config.MeowfficerTrain_Enable: self.config.Scheduler_Enable = False @@ -44,7 +44,7 @@ class RewardMeowfficer(MeowfficerBuy, MeowfficerFort, MeowfficerTrain): self.wait_meowfficer_buttons() # Wait for the ui to load fully if self.config.Meowfficer_BuyAmount > 0 \ - or self.config.Meowfficer_OverflowCoins != -1: + or self.config.Meowfficer_OverflowCoins >= 0: self.meow_buy() if self.config.Meowfficer_FortChoreMeowfficer: self.meow_fort() From b8755ee0e654cd52879df6a3bf1ae66600ba9cdd Mon Sep 17 00:00:00 2001 From: Splash Date: Thu, 2 Jul 2026 03:35:15 +0800 Subject: [PATCH 10/11] Replace 'threshold' with 'similarity' in method calls (#5767) --- module/map/map_operation.py | 2 +- module/os/globe_operation.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/module/map/map_operation.py b/module/map/map_operation.py index af5fa9695..5da58f363 100644 --- a/module/map/map_operation.py +++ b/module/map/map_operation.py @@ -312,7 +312,7 @@ class MapOperation(MysteryHandler, FleetPreparation, Retirement, FastForwardHand MAP_MODE_SWITCH_HARD5, MAP_MODE_SWITCH_HARD6, ]: - if self.appear(button, offset=(20, 20), threshold=0.7): + if self.appear(button, offset=(20, 20), similarity=0.7): if active: return self._is_mod_switch_hard_active(button) else: diff --git a/module/os/globe_operation.py b/module/os/globe_operation.py index 7c1bfc00f..1a9a7895e 100644 --- a/module/os/globe_operation.py +++ b/module/os/globe_operation.py @@ -140,7 +140,7 @@ class GlobeOperation(ActionPointHandler): # Lower threshold to 0.75 # Don't know why buy but fonts are different sometimes return [select for select in ZONE_SELECT if - self.appear(select, offset=self._zone_select_offset, threshold=self._zone_select_similarity)] + self.appear(select, offset=self._zone_select_offset, similarity=self._zone_select_similarity)] def is_in_zone_select(self): """ @@ -190,7 +190,7 @@ class GlobeOperation(ActionPointHandler): if self.is_zone_pinned(): break if self.appear_then_click( - button, offset=self._zone_select_offset, threshold=self._zone_select_similarity, interval=5): + button, offset=self._zone_select_offset, similarity=self._zone_select_similarity, interval=5): continue def zone_type_select(self, types=('SAFE', 'DANGEROUS')): From fc2a26261fceeaac1db28ffcb08d751222b0a7ba Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Thu, 2 Jul 2026 03:47:12 +0800 Subject: [PATCH 11/11] Fix: [ALAS] get MuMuPlayer12_id from mumu15 --- module/device/platform/emulator_base.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/module/device/platform/emulator_base.py b/module/device/platform/emulator_base.py index 522c6b51d..0f51963f5 100644 --- a/module/device/platform/emulator_base.py +++ b/module/device/platform/emulator_base.py @@ -100,12 +100,17 @@ class EmulatorInstanceBase: Convert MuMu 12 instance name to instance id. Example names: MuMuPlayer-12.0-3 + MuMuPlayerGlobal-12.0-0 + MuMuPlayer-15.0-0 YXArkNights-12.0-1 Returns: int: Instance ID, or None if this is not a MuMu 12 instance """ res = re.search(r'MuMuPlayer(?:Global)?-12.0-(\d+)', self.name) + if res: + return int(res.group(1)) + res = re.search(r'MuMuPlayer(?:Global)?-15.0-(\d+)', self.name) if res: return int(res.group(1)) res = re.search(r'YXArkNights-12.0-(\d+)', self.name)