From 37ba6f996571c2a442d4e4e522d12c8231591fdf Mon Sep 17 00:00:00 2001 From: W1NDes Date: Fri, 27 Jun 2025 02:27:20 +0800 Subject: [PATCH] =?UTF-8?q?Upd(Coalition)=EF=BC=9A=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=BF=9E=E6=88=98=E6=B4=BB=E5=8A=A8=E7=9A=84=E8=88=B0=E9=98=9F?= =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=92=8C=E5=88=B7PT=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.bat | 3 + assets/cn/coalition/SIDEBAR_TEAM_1.png | Bin 7619 -> 9142 bytes assets/cn/coalition/SIDEBAR_TEAM_2.png | Bin 7047 -> 10690 bytes assets/cn/coalition/SIDEBAR_TEAM_3.png | Bin 7115 -> 13763 bytes assets/cn/coalition/SIDEBAR_TEAM_4.png | Bin 7407 -> 8781 bytes config/template.json | 9 ++- dev_tools/button_extract.py | 2 +- module/coalition/assets.py | 8 +-- module/coalition/coalition.py | 4 +- module/coalition/ui.py | 77 ++++++++++++++----------- module/config/argument/args.json | 30 +++++++++- module/config/argument/override.yaml | 12 ++++ module/config/argument/task.yaml | 1 + module/config/config_updater.py | 2 +- module/event_hospital/assets.py | 2 +- 15 files changed, 103 insertions(+), 47 deletions(-) create mode 100644 UPDATE.bat diff --git a/UPDATE.bat b/UPDATE.bat new file mode 100644 index 000000000..05c6ced51 --- /dev/null +++ b/UPDATE.bat @@ -0,0 +1,3 @@ +git fetch --all +git merge upstream/master +pause \ No newline at end of file diff --git a/assets/cn/coalition/SIDEBAR_TEAM_1.png b/assets/cn/coalition/SIDEBAR_TEAM_1.png index 963df2853a574cf97e9847e4fba7fde5f6a352e8..e32a2d69ec0f3febbc07d8afd145dca47d72364d 100644 GIT binary patch literal 9142 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 bY?=v0G(EXDas@Zy(i0MorzA9domKK5D7&o< diff --git a/assets/cn/coalition/SIDEBAR_TEAM_3.png b/assets/cn/coalition/SIDEBAR_TEAM_3.png index 975df07ba61aa73be82441ad63e76d711587af47..f136003fd7213047423ec3319ae277d21c140aec 100644 GIT binary patch literal 13763 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 Kz2^I$fB!$feUFv^ literal 7115 zcmeHKYgAL&8NDC~LQ$${P$6K)<%`NgoZ%5jm{AwwED6?5fsvOO1#uh#43dCAKx?y@ zKw<|Kl-EpI3s#FHMuhMTAWb5JAz)UBdPxF=kbw}AkRc)O-b{bB|NEnB<=1!4J@$kKl|yI_$H<34_`OF zZysIXFM94sdl2aA*?w`%XEn=H@!V4x7gC(3?_R$SVyB01JV`66hFzMDbGy}0>FSjN zs|r>rA~8pE8}p7T)mm+3^+yx5y;1IFX_MAA%J;IDGjVLZ5#J>H}F+ z55wr!)Z&m8A74q$16l%4kL@ov-={eN!2H|ioX+p~_8=gJlr@v#J&rTK>)&>EZr)mO}VEFrc9336?7%3_37i$XRg1MrMF3V~#3 z*2E@j5>o#H%~{YUz#GA%()@DYM(%_HCuI3zv@;WaOTjHF&VtOM2xfz-fBw;I`bENH zFJB99v8oLCjinWZ37yE0YDSv4LZggUp)u-K=p8u}Iba}VTHbzg4Vp#99-zuiY7AZ8 zdzlQ z?p`^1??n^C7QB3t$?u(uXcN7>itSGu>e)doLt2CB&c&NfQ zHVS>Ju7&8}CNt(YFjmp`kjo2xxLuz`4)_Cw-G!>IZ*}W2>va$ljGE##8kN0ZG>S{d zN`9w0-G!q!@eT}C-y;ecq6-`8OlyWc+abf|9{k1jLxKDyN$%eH9F(odEYw;Q)&2Zg z2}@IIEwkJRe;hBz*vPP)?#mQ`rZg>P#7{0y>P89-z!#5WZxn@f3oxEgF>Q3p&aSlEX;7iGeNFgn;#++Y}apLTW*e2&|=$9)&`p+*E7q)Rd>mOePFJ{hCE5sN0g^iOPwv49!vx#t#6 zU%4hW-XT1aaA)Ub4FmIya!_`~CDC6*y&UM|NOrOK@(B3SZ;>hv?|tf5;= zkFJR6Ma_{XA&Ro75woKiBRM|@?`nh34!E)q`)QBhz;C2|Z1W^r^|z7cPF3P~(8 zrP;2^@y+HicB|Q3^*w8K$vTpK`M!RpI87NMcM8B^Tay$Csrk0m(_)arq#LneU5A^d zcFn1<>!y8q(%7|-5mz3x&yE)4EuZwTgHoHcESI_KZ1S&(F{@rznvp;p;13=#ZffpQu4iFqnaLB>o2@Yd~ z4hshe4iFso1jl6wIu0BlI6!ce2aX!aQ7Ha@SIhqhW80h}-Co_kKYHT}$kKrG=g?=V IpIy28F9$voSpWb4 diff --git a/assets/cn/coalition/SIDEBAR_TEAM_4.png b/assets/cn/coalition/SIDEBAR_TEAM_4.png index 14ca2a7751853cb81f8413d29413e87caff4c285..5428a0a1806723e7d7e3d53b5017a9042fdaa25e 100644 GIT binary patch delta 3847 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 d@PN&Bx+T2>T3>T4>T5>T6", + "EventDailySpMapName": "sp", + "EventDailyCD": "HT1>HT2>HT3>HT4>HT5>HT6" + }, "Emotion": { "Mode": "calculate", "Fleet1Value": 119, @@ -921,7 +928,7 @@ "Coalition": { "UseRecommendFleet": true, "Mode": "sp", - "Fleet": "single" + "Fleet": "multi" }, "StopCondition": { "OilLimit": 1000, diff --git a/dev_tools/button_extract.py b/dev_tools/button_extract.py index 52b8636e1..9fc85ecfe 100644 --- a/dev_tools/button_extract.py +++ b/dev_tools/button_extract.py @@ -1,6 +1,6 @@ import os import sys -sys.path.append(r'C:/Users/W1NDes/Documents/GitHub/M-AzurLaneAutoScript') +sys.path.append(r'C:/Users/W1NDe/Documents/GitHub/M-AzurLaneAutoScript') import imageio import numpy as np from tqdm.contrib.concurrent import process_map diff --git a/module/coalition/assets.py b/module/coalition/assets.py index ef78dc6fc..029c06a57 100644 --- a/module/coalition/assets.py +++ b/module/coalition/assets.py @@ -38,10 +38,6 @@ FROSTFALL_SWITCH_SINGLE = Button(area={'cn': (968, 449, 1098, 478), 'en': (968, FROSTFALL_TC1 = Button(area={'cn': (304, 320, 330, 332), 'en': (304, 320, 330, 332), 'jp': (304, 320, 330, 332), 'tw': (304, 320, 330, 332)}, color={'cn': (204, 162, 254), 'en': (204, 162, 254), 'jp': (204, 162, 254), 'tw': (188, 137, 254)}, button={'cn': (304, 320, 330, 332), 'en': (304, 320, 330, 332), 'jp': (304, 320, 330, 332), 'tw': (304, 320, 330, 332)}, file={'cn': './assets/cn/coalition/FROSTFALL_TC1.png', 'en': './assets/en/coalition/FROSTFALL_TC1.png', 'jp': './assets/jp/coalition/FROSTFALL_TC1.png', 'tw': './assets/tw/coalition/FROSTFALL_TC1.png'}) FROSTFALL_TC2 = Button(area={'cn': (631, 160, 658, 173), 'en': (631, 160, 658, 173), 'jp': (631, 160, 658, 173), 'tw': (631, 160, 658, 173)}, color={'cn': (186, 136, 252), 'en': (186, 136, 252), 'jp': (186, 136, 252), 'tw': (186, 136, 252)}, button={'cn': (631, 160, 658, 173), 'en': (631, 160, 658, 173), 'jp': (631, 160, 658, 173), 'tw': (631, 160, 658, 173)}, file={'cn': './assets/cn/coalition/FROSTFALL_TC2.png', 'en': './assets/en/coalition/FROSTFALL_TC2.png', 'jp': './assets/jp/coalition/FROSTFALL_TC2.png', 'tw': './assets/tw/coalition/FROSTFALL_TC2.png'}) FROSTFALL_TC3 = Button(area={'cn': (810, 362, 835, 373), 'en': (810, 362, 835, 373), 'jp': (810, 362, 835, 373), 'tw': (810, 362, 835, 373)}, color={'cn': (197, 153, 255), 'en': (197, 153, 255), 'jp': (197, 153, 255), 'tw': (197, 153, 255)}, button={'cn': (810, 362, 835, 373), 'en': (810, 362, 835, 373), 'jp': (810, 362, 835, 373), 'tw': (810, 362, 835, 373)}, file={'cn': './assets/cn/coalition/FROSTFALL_TC3.png', 'en': './assets/en/coalition/FROSTFALL_TC3.png', 'jp': './assets/jp/coalition/FROSTFALL_TC3.png', 'tw': './assets/tw/coalition/FROSTFALL_TC3.png'}) -SIDEBAR_TEAM_1 = Button(area={'cn': (90, 124, 152, 153), 'en': (90, 124, 152, 153), 'jp': (90, 124, 152, 153), 'tw': (90, 124, 152, 153)}, color={'cn': (50, 59, 67), 'en': (50, 59, 67), 'jp': (50, 59, 67), 'tw': (50, 59, 67)}, button={'cn': (90, 124, 152, 153), 'en': (90, 124, 152, 153), 'jp': (90, 124, 152, 153), 'tw': (90, 124, 152, 153)}, file={'cn': './assets/cn/coalition/SIDEBAR_TEAM_1.png', 'en': './assets/cn/coalition/SIDEBAR_TEAM_1.png', 'jp': './assets/cn/coalition/SIDEBAR_TEAM_1.png', 'tw': './assets/cn/coalition/SIDEBAR_TEAM_1.png'}) -SIDEBAR_TEAM_2 = Button(area={'cn': (199, 126, 266, 155), 'en': (199, 126, 266, 155), 'jp': (199, 126, 266, 155), 'tw': (199, 126, 266, 155)}, color={'cn': (26, 34, 41), 'en': (26, 34, 41), 'jp': (26, 34, 41), 'tw': (26, 34, 41)}, button={'cn': (199, 126, 266, 155), 'en': (199, 126, 266, 155), 'jp': (199, 126, 266, 155), 'tw': (199, 126, 266, 155)}, file={'cn': './assets/cn/coalition/SIDEBAR_TEAM_2.png', 'en': './assets/cn/coalition/SIDEBAR_TEAM_2.png', 'jp': './assets/cn/coalition/SIDEBAR_TEAM_2.png', 'tw': './assets/cn/coalition/SIDEBAR_TEAM_2.png'}) -SIDEBAR_TEAM_3 = Button(area={'cn': (310, 126, 378, 154), 'en': (310, 126, 378, 154), 'jp': (310, 126, 378, 154), 'tw': (310, 126, 378, 154)}, color={'cn': (29, 37, 44), 'en': (29, 37, 44), 'jp': (29, 37, 44), 'tw': (29, 37, 44)}, button={'cn': (310, 126, 378, 154), 'en': (310, 126, 378, 154), 'jp': (310, 126, 378, 154), 'tw': (310, 126, 378, 154)}, file={'cn': './assets/cn/coalition/SIDEBAR_TEAM_3.png', 'en': './assets/cn/coalition/SIDEBAR_TEAM_3.png', 'jp': './assets/cn/coalition/SIDEBAR_TEAM_3.png', 'tw': './assets/cn/coalition/SIDEBAR_TEAM_3.png'}) -SIDEBAR_TEAM_4 = Button(area={'cn': (423, 126, 489, 155), 'en': (423, 126, 489, 155), 'jp': (423, 126, 489, 155), 'tw': (423, 126, 489, 155)}, color={'cn': (29, 36, 43), 'en': (29, 36, 43), 'jp': (29, 36, 43), 'tw': (29, 36, 43)}, button={'cn': (423, 126, 489, 155), 'en': (423, 126, 489, 155), 'jp': (423, 126, 489, 155), 'tw': (423, 126, 489, 155)}, file={'cn': './assets/cn/coalition/SIDEBAR_TEAM_4.png', 'en': './assets/cn/coalition/SIDEBAR_TEAM_4.png', 'jp': './assets/cn/coalition/SIDEBAR_TEAM_4.png', 'tw': './assets/cn/coalition/SIDEBAR_TEAM_4.png'}) NEONCITY_COALITION_CHECK = Button(area={'cn': (230, 36, 276, 82), 'en': (230, 36, 276, 82), 'jp': (230, 36, 276, 82), 'tw': (230, 36, 276, 82)}, color={'cn': (136, 139, 142), 'en': (136, 139, 142), 'jp': (136, 139, 142), 'tw': (136, 139, 142)}, button={'cn': (230, 36, 276, 82), 'en': (230, 36, 276, 82), 'jp': (230, 36, 276, 82), 'tw': (230, 36, 276, 82)}, file={'cn': './assets/cn/coalition/NEONCITY_COALITION_CHECK.png', 'en': './assets/cn/coalition/NEONCITY_COALITION_CHECK.png', 'jp': './assets/cn/coalition/NEONCITY_COALITION_CHECK.png', 'tw': './assets/cn/coalition/NEONCITY_COALITION_CHECK.png'}) NEONCITY_EASY = Button(area={'cn': (255, 252, 308, 270), 'en': (255, 252, 308, 270), 'jp': (255, 252, 308, 270), 'tw': (255, 252, 308, 270)}, color={'cn': (131, 132, 135), 'en': (131, 132, 135), 'jp': (131, 132, 135), 'tw': (131, 132, 135)}, button={'cn': (255, 252, 308, 270), 'en': (255, 252, 308, 270), 'jp': (255, 252, 308, 270), 'tw': (255, 252, 308, 270)}, file={'cn': './assets/cn/coalition/NEONCITY_EASY.png', 'en': './assets/cn/coalition/NEONCITY_EASY.png', 'jp': './assets/cn/coalition/NEONCITY_EASY.png', 'tw': './assets/cn/coalition/NEONCITY_EASY.png'}) NEONCITY_EX = Button(area={'cn': (655, 353, 708, 370), 'en': (655, 353, 708, 370), 'jp': (655, 353, 708, 370), 'tw': (655, 353, 708, 370)}, color={'cn': (151, 150, 151), 'en': (151, 150, 151), 'jp': (151, 150, 151), 'tw': (151, 150, 151)}, button={'cn': (655, 353, 708, 370), 'en': (655, 353, 708, 370), 'jp': (655, 353, 708, 370), 'tw': (655, 353, 708, 370)}, file={'cn': './assets/cn/coalition/NEONCITY_EX.png', 'en': './assets/cn/coalition/NEONCITY_EX.png', 'jp': './assets/cn/coalition/NEONCITY_EX.png', 'tw': './assets/cn/coalition/NEONCITY_EX.png'}) @@ -54,3 +50,7 @@ NEONCITY_PT_OCR = Button(area={'cn': (1179, 166, 1251, 184), 'en': (1179, 166, 1 NEONCITY_SP = Button(area={'cn': (821, 168, 874, 186), 'en': (821, 168, 874, 186), 'jp': (821, 168, 874, 186), 'tw': (821, 168, 874, 186)}, color={'cn': (144, 143, 143), 'en': (144, 143, 143), 'jp': (144, 143, 143), 'tw': (144, 143, 143)}, button={'cn': (821, 168, 874, 186), 'en': (821, 168, 874, 186), 'jp': (821, 168, 874, 186), 'tw': (821, 168, 874, 186)}, file={'cn': './assets/cn/coalition/NEONCITY_SP.png', 'en': './assets/cn/coalition/NEONCITY_SP.png', 'jp': './assets/cn/coalition/NEONCITY_SP.png', 'tw': './assets/cn/coalition/NEONCITY_SP.png'}) NEONCITY_SWITCH_MULTI = Button(area={'cn': (1087, 458, 1217, 486), 'en': (1087, 458, 1217, 486), 'jp': (1087, 458, 1217, 486), 'tw': (1087, 458, 1217, 486)}, color={'cn': (233, 183, 63), 'en': (233, 183, 63), 'jp': (233, 183, 63), 'tw': (233, 183, 63)}, button={'cn': (1087, 458, 1217, 486), 'en': (1087, 458, 1217, 486), 'jp': (1087, 458, 1217, 486), 'tw': (1087, 458, 1217, 486)}, file={'cn': './assets/cn/coalition/NEONCITY_SWITCH_MULTI.png', 'en': './assets/cn/coalition/NEONCITY_SWITCH_MULTI.png', 'jp': './assets/cn/coalition/NEONCITY_SWITCH_MULTI.png', 'tw': './assets/cn/coalition/NEONCITY_SWITCH_MULTI.png'}) NEONCITY_SWITCH_SINGLE = Button(area={'cn': (940, 458, 1071, 486), 'en': (940, 458, 1071, 486), 'jp': (940, 458, 1071, 486), 'tw': (940, 458, 1071, 486)}, color={'cn': (230, 181, 62), 'en': (230, 181, 62), 'jp': (230, 181, 62), 'tw': (230, 181, 62)}, button={'cn': (940, 458, 1071, 486), 'en': (940, 458, 1071, 486), 'jp': (940, 458, 1071, 486), 'tw': (940, 458, 1071, 486)}, file={'cn': './assets/cn/coalition/NEONCITY_SWITCH_SINGLE.png', 'en': './assets/cn/coalition/NEONCITY_SWITCH_SINGLE.png', 'jp': './assets/cn/coalition/NEONCITY_SWITCH_SINGLE.png', 'tw': './assets/cn/coalition/NEONCITY_SWITCH_SINGLE.png'}) +SIDEBAR_TEAM_1 = Button(area={'cn': (78, 141, 149, 188), 'en': (78, 141, 149, 188), 'jp': (78, 141, 149, 188), 'tw': (78, 141, 149, 188)}, color={'cn': (56, 57, 56), 'en': (56, 57, 56), 'jp': (56, 57, 56), 'tw': (56, 57, 56)}, button={'cn': (78, 141, 149, 188), 'en': (78, 141, 149, 188), 'jp': (78, 141, 149, 188), 'tw': (78, 141, 149, 188)}, file={'cn': './assets/cn/coalition/SIDEBAR_TEAM_1.png', 'en': './assets/cn/coalition/SIDEBAR_TEAM_1.png', 'jp': './assets/cn/coalition/SIDEBAR_TEAM_1.png', 'tw': './assets/cn/coalition/SIDEBAR_TEAM_1.png'}) +SIDEBAR_TEAM_2 = Button(area={'cn': (208, 140, 308, 191), 'en': (208, 140, 308, 191), 'jp': (208, 140, 308, 191), 'tw': (208, 140, 308, 191)}, color={'cn': (53, 52, 50), 'en': (53, 52, 50), 'jp': (53, 52, 50), 'tw': (53, 52, 50)}, button={'cn': (208, 140, 308, 191), 'en': (208, 140, 308, 191), 'jp': (208, 140, 308, 191), 'tw': (208, 140, 308, 191)}, file={'cn': './assets/cn/coalition/SIDEBAR_TEAM_2.png', 'en': './assets/cn/coalition/SIDEBAR_TEAM_2.png', 'jp': './assets/cn/coalition/SIDEBAR_TEAM_2.png', 'tw': './assets/cn/coalition/SIDEBAR_TEAM_2.png'}) +SIDEBAR_TEAM_3 = Button(area={'cn': (354, 150, 452, 181), 'en': (354, 150, 452, 181), 'jp': (354, 150, 452, 181), 'tw': (354, 150, 452, 181)}, color={'cn': (157, 160, 164), 'en': (157, 160, 164), 'jp': (157, 160, 164), 'tw': (157, 160, 164)}, button={'cn': (354, 150, 452, 181), 'en': (354, 150, 452, 181), 'jp': (354, 150, 452, 181), 'tw': (354, 150, 452, 181)}, file={'cn': './assets/cn/coalition/SIDEBAR_TEAM_3.png', 'en': './assets/cn/coalition/SIDEBAR_TEAM_3.png', 'jp': './assets/cn/coalition/SIDEBAR_TEAM_3.png', 'tw': './assets/cn/coalition/SIDEBAR_TEAM_3.png'}) +SIDEBAR_TEAM_4 = Button(area={'cn': (507, 146, 595, 187), 'en': (507, 146, 595, 187), 'jp': (507, 146, 595, 187), 'tw': (507, 146, 595, 187)}, color={'cn': (57, 58, 57), 'en': (57, 58, 57), 'jp': (57, 58, 57), 'tw': (57, 58, 57)}, button={'cn': (507, 146, 595, 187), 'en': (507, 146, 595, 187), 'jp': (507, 146, 595, 187), 'tw': (507, 146, 595, 187)}, file={'cn': './assets/cn/coalition/SIDEBAR_TEAM_4.png', 'en': './assets/cn/coalition/SIDEBAR_TEAM_4.png', 'jp': './assets/cn/coalition/SIDEBAR_TEAM_4.png', 'tw': './assets/cn/coalition/SIDEBAR_TEAM_4.png'}) diff --git a/module/coalition/coalition.py b/module/coalition/coalition.py index 30873500f..df552de04 100644 --- a/module/coalition/coalition.py +++ b/module/coalition/coalition.py @@ -107,9 +107,9 @@ class Coalition(CoalitionCombat, CampaignEvent): Coalition_Fleet='multi', ) self.emotion.check_reduce(battle=self.coalition_get_battles(event, stage)) + self.enter_map(event=event, stage=stage, mode=fleet) if self.triggered_stop_condition(oil_check=True): raise ScriptEnd - self.enter_map(event=event, stage=stage, mode=fleet) self.coalition_combat() @staticmethod @@ -183,7 +183,7 @@ class Coalition(CoalitionCombat, CampaignEvent): self.config.Coalition_Mode = next_stage event, mode, fleet = self.get_run_info(event, self.config.Coalition_Mode, fleet) continue - elif self.config.StopCondition_EventSwitch: + elif self.config.EventPt_EventPtSwitch: if not self.config.is_task_enabled('CoalitionSp'): self.config.task_call('CoalitionSp') continue diff --git a/module/coalition/ui.py b/module/coalition/ui.py index ad9438903..b4afba9ea 100644 --- a/module/coalition/ui.py +++ b/module/coalition/ui.py @@ -20,7 +20,7 @@ class TeamSwitch(Switch): bool """ for data in self.state_list: - if main.image_color_count(data['check_button'], color=(222, 222, 222), threshold=221, count=100): + if main.image_color_count(data['check_button'], color=(191, 192, 198), threshold=221, count=100): return True return False @@ -34,7 +34,7 @@ class TeamSwitch(Switch): str: state name or 'unknown'. """ for data in self.state_list: - if main.image_color_count(data['check_button'], color=(222, 222, 222), threshold=221, count=100): + if main.image_color_count(data['check_button'], color=(191, 192, 198), threshold=221, count=100): return data['state'] return 'unknown' @@ -314,42 +314,49 @@ class CoalitionUI(Combat): "This stage can only be farmed once a day, " "but it's the second time that you are entering") raise RequestHumanTakeover - # if self.appear(FLEET_NOT_PREPARED, offset=(20, 20)) and stage != 'sp': - # if self.config.Hospital_UseRecommendFleet: - # fleet_1 = FleetOperator( - # choose=COALITION_FLEET_1_CHOOSE, advice=FLEET_1_ADVICE, bar=FLEET_1_BAR, clear=FLEET_1_CLEAR, - # in_use=COALITION_FLEET_1_IN_USE, hard_satisfied=FLEET_1_HARD_SATIESFIED, main=self) - # logger.info('Recommend fleet') - # fleet_1.recommend() - # continue - # else: - # logger.critical('FLEET_NOT_PREPARED') - # logger.critical('Please prepare you fleets before running coalition battles') - # raise RequestHumanTakeover - # if self.appear(FLEET_NOT_PREPARED, offset=(20, 20)) and stage == 'sp': - # if self.config.Hospital_UseRecommendFleet: - # fleet_1 = FleetOperator( - # choose=COALITION_FLEET_1_CHOOSE, advice=FLEET_1_ADVICE, bar=FLEET_1_BAR, clear=FLEET_1_CLEAR, - # in_use=COALITION_FLEET_1_IN_USE, hard_satisfied=FLEET_1_HARD_SATIESFIED, main=self) - # if fleet_1.in_use(): - # team_id += 1 - # if team_id <= 4: - # self.TEAM_SIDEBAR.set(f'TEAM_{team_id}', main=self) - # continue - # else: - # fleet_1.recommend() - # continue - # # End + def handle_fleet_recommend(stage): + if self.config.Coalition_UseRecommendFleet: + fleet_i = FleetOperator( + choose=COALITION_FLEET_1_CHOOSE, advice=FLEET_1_ADVICE, bar=FLEET_1_BAR, clear=FLEET_1_CLEAR, + in_use=COALITION_FLEET_1_IN_USE, hard_satisfied=FLEET_1_HARD_SATIESFIED, main=self) + nonlocal team_id + if team_id < 5: + if stage in ['sp', 'ex']: + if fleet_i.in_use(): + team_id += 1 + if team_id <= 4: + self.TEAM_SIDEBAR.set(f'TEAM_{team_id}', main=self) + return 'continue' + else: + fleet_i.recommend() + return 'continue' + logger.info('Recommend fleet') + fleet_i.recommend() + return True + else: + return False if self.appear(FLEET_NOT_PREPARED, offset=(20, 20)): - logger.critical('FLEET_NOT_PREPARED') - logger.critical('Please prepare you fleets before running coalition battles') - raise RequestHumanTakeover + result = handle_fleet_recommend(stage) + if result == 'continue': + continue + elif result == False: + logger.critical('FLEET_NOT_PREPARED') + logger.critical('Please prepare you fleets before running coalition battles') + raise RequestHumanTakeover if self.appear(EMPTY_FLAGSHIP, offset=(20, 20)): - logger.critical('EMPTY_FLAGSHIP, Please prepare you fleets before running coalition battles') - raise RequestHumanTakeover + result = handle_fleet_recommend(stage) + if result == 'continue': + continue + elif result == False: + logger.critical('EMPTY_FLAGSHIP, Please prepare you fleets before running coalition battles') + raise RequestHumanTakeover if self.appear(EMPTY_VANGUARD, offset=(20, 20)): - logger.critical('EMPTY_VANGUARD, Please prepare you fleets before running coalition battles') - raise RequestHumanTakeover + result = handle_fleet_recommend(stage) + if result == 'continue': + continue + elif result == False: + logger.critical('EMPTY_VANGUARD, Please prepare you fleets before running coalition battles') + raise RequestHumanTakeover # End if self.appear(BATTLE_PREPARATION, offset=(20, 20)): diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 8a10343ed..a22000380 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -2359,6 +2359,32 @@ "display": "hide" } }, + "EventPt": { + "EventPtSwitch": { + "type": "checkbox", + "value": false + }, + "Event2MapName": { + "type": "textarea", + "value": "HT6", + "display": "hide" + }, + "EventDailyAMapName": { + "type": "textarea", + "value": "T1>T2>T3>T4>T5>T6", + "display": "hide" + }, + "EventDailySpMapName": { + "type": "textarea", + "value": "sp", + "display": "hide" + }, + "EventDailyCD": { + "type": "textarea", + "value": "HT1>HT2>HT3>HT4>HT5>HT6", + "display": "hide" + } + }, "Emotion": { "Mode": { "type": "select", @@ -4860,8 +4886,8 @@ "display": "hide" }, "Fleet": { - "type": "select", - "value": "single", + "type": "state", + "value": "multi", "option": [ "single", "multi" diff --git a/module/config/argument/override.yaml b/module/config/argument/override.yaml index 3b0818471..e82125ec8 100644 --- a/module/config/argument/override.yaml +++ b/module/config/argument/override.yaml @@ -283,6 +283,15 @@ Coalition: MapAchievement: non_stop GetNewShip: false ReachLevel: 0 + EventPt: + Event2MapName: + value: HT6 + EventDailyAMapName: + value: T1>T2>T3>T4>T5>T6 + EventDailySpMapName: + value: sp + EventDailyCD: + value: HT1>HT2>HT3>HT4>HT5>HT6 Emotion: Fleet2Value: 119 Fleet2Record: 2020-01-01 00:00:00 @@ -307,6 +316,9 @@ CoalitionSp: Coalition: # CoalitionSp hard-codes Mode='sp' Mode: sp + Fleet: + value: multi + type: state StopCondition: MapAchievement: non_stop StageIncrease: false diff --git a/module/config/argument/task.yaml b/module/config/argument/task.yaml index 0b13d83cf..180afca0f 100644 --- a/module/config/argument/task.yaml +++ b/module/config/argument/task.yaml @@ -77,6 +77,7 @@ Event: - Campaign - Coalition - StopCondition + - EventPt - Emotion Event: - Scheduler diff --git a/module/config/config_updater.py b/module/config/config_updater.py index 226ac031f..c739d54fa 100644 --- a/module/config/config_updater.py +++ b/module/config/config_updater.py @@ -1,5 +1,5 @@ import sys -sys.path.append(r'C:/Users/W1NDes/Documents/GitHub/M-AzurLaneAutoScript') +sys.path.append(r'C:/Users/W1NDe/Documents/GitHub/M-AzurLaneAutoScript') import re import typing as t from copy import deepcopy diff --git a/module/event_hospital/assets.py b/module/event_hospital/assets.py index a00d87f5f..dd3cb87db 100644 --- a/module/event_hospital/assets.py +++ b/module/event_hospital/assets.py @@ -30,7 +30,7 @@ TAB_CHARACTER = Button(area={'cn': (263, 93, 409, 122), 'en': (263, 93, 409, 122 TAB_LOCATION = Button(area={'cn': (89, 93, 240, 121), 'en': (89, 93, 240, 121), 'jp': (89, 93, 240, 121), 'tw': (89, 93, 240, 121)}, color={'cn': (73, 108, 198), 'en': (73, 108, 198), 'jp': (73, 108, 198), 'tw': (73, 108, 198)}, button={'cn': (89, 93, 240, 121), 'en': (89, 93, 240, 121), 'jp': (89, 93, 240, 121), 'tw': (89, 93, 240, 121)}, file={'cn': './assets/cn/event_hospital/TAB_LOCATION.png', 'en': './assets/cn/event_hospital/TAB_LOCATION.png', 'jp': './assets/cn/event_hospital/TAB_LOCATION.png', 'tw': './assets/cn/event_hospital/TAB_LOCATION.png'}) TAB_RECORD = Button(area={'cn': (416, 93, 509, 121), 'en': (416, 93, 509, 121), 'jp': (416, 93, 509, 121), 'tw': (416, 93, 509, 121)}, color={'cn': (185, 177, 187), 'en': (185, 177, 187), 'jp': (185, 177, 187), 'tw': (185, 177, 187)}, button={'cn': (416, 93, 509, 121), 'en': (416, 93, 509, 121), 'jp': (416, 93, 509, 121), 'tw': (416, 93, 509, 121)}, file={'cn': './assets/cn/event_hospital/TAB_RECORD.png', 'en': './assets/cn/event_hospital/TAB_RECORD.png', 'jp': './assets/cn/event_hospital/TAB_RECORD.png', 'tw': './assets/cn/event_hospital/TAB_RECORD.png'}) TAB_SECRET = Button(area={'cn': (572, 95, 652, 119), 'en': (572, 95, 652, 119), 'jp': (572, 95, 652, 119), 'tw': (572, 95, 652, 119)}, color={'cn': (171, 166, 178), 'en': (171, 166, 178), 'jp': (171, 166, 178), 'tw': (171, 166, 178)}, button={'cn': (572, 95, 652, 119), 'en': (572, 95, 652, 119), 'jp': (572, 95, 652, 119), 'tw': (572, 95, 652, 119)}, file={'cn': './assets/cn/event_hospital/TAB_SECRET.png', 'en': './assets/cn/event_hospital/TAB_SECRET.png', 'jp': './assets/cn/event_hospital/TAB_SECRET.png', 'tw': './assets/cn/event_hospital/TAB_SECRET.png'}) -TEMPLATE_INVEST = Template(file={'cn': './assets/cn/event_hospital/TEMPLATE_INVEST.png', 'en': './assets/en/event_hospital/TEMPLATE_INVEST.png', 'jp': './assets/jp/event_hospital/TEMPLATE_INVEST.png', 'tw': './assets/cn/event_hospital/TEMPLATE_INVEST.png'}) TEMPLATE_INVEST = Template(file={'cn': './assets/cn/event_hospital/TEMPLATE_INVEST.png', 'en': './assets/en/event_hospital/TEMPLATE_INVEST.png', 'jp': './assets/jp/event_hospital/TEMPLATE_INVEST.png', 'tw': './assets/tw/event_hospital/TEMPLATE_INVEST.png'}) +TEMPLATE_INVEST2 = Template(file={'cn': './assets/cn/event_hospital/TEMPLATE_INVEST2.png', 'en': './assets/cn/event_hospital/TEMPLATE_INVEST2.png', 'jp': './assets/cn/event_hospital/TEMPLATE_INVEST2.png', 'tw': './assets/cn/event_hospital/TEMPLATE_INVEST2.png'}) TEMPLATE_REMAIN_CURRENT = Template(file={'cn': './assets/cn/event_hospital/TEMPLATE_REMAIN_CURRENT.png', 'en': './assets/en/event_hospital/TEMPLATE_REMAIN_CURRENT.png', 'jp': './assets/jp/event_hospital/TEMPLATE_REMAIN_CURRENT.png', 'tw': './assets/tw/event_hospital/TEMPLATE_REMAIN_CURRENT.png'}) TEMPLATE_REMAIN_TIMES = Template(file={'cn': './assets/cn/event_hospital/TEMPLATE_REMAIN_TIMES.png', 'en': './assets/en/event_hospital/TEMPLATE_REMAIN_TIMES.png', 'jp': './assets/jp/event_hospital/TEMPLATE_REMAIN_TIMES.png', 'tw': './assets/tw/event_hospital/TEMPLATE_REMAIN_TIMES.png'})