From 7856c5eba562e514818b76aef24b97b25a88cc0d Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Thu, 27 Jan 2022 18:49:12 +0800 Subject: [PATCH] Add: Joint Battle Mystery Investigation (raid_20220127) --- alas.py | 4 ++ assets/cn/raid/BRISTOL_OCR_REMAIN_EASY.png | Bin 0 -> 6583 bytes assets/cn/raid/BRISTOL_OCR_REMAIN_HARD.png | Bin 0 -> 6660 bytes assets/cn/raid/BRISTOL_OCR_REMAIN_NORMAL.png | Bin 0 -> 6567 bytes assets/cn/raid/BRISTOL_RAID_EASY.png | Bin 0 -> 9013 bytes assets/cn/raid/BRISTOL_RAID_HARD.png | Bin 0 -> 9225 bytes assets/cn/raid/BRISTOL_RAID_NORMAL.png | Bin 0 -> 9165 bytes campaign/Readme.md | 3 +- config/template.json | 3 - module/config/argument/args.json | 31 ++++----- module/config/argument/override.yaml | 1 - module/config/argument/task.yaml | 1 - module/config/i18n/en-US.json | 1 + module/config/i18n/ja-JP.json | 1 + module/config/i18n/zh-CN.json | 1 + module/config/i18n/zh-TW.json | 1 + module/raid/assets.py | 6 ++ module/raid/daily.py | 51 +++++++-------- module/raid/raid.py | 43 ++++++++++--- module/raid/run.py | 64 +++++++++++-------- 20 files changed, 124 insertions(+), 87 deletions(-) create mode 100644 assets/cn/raid/BRISTOL_OCR_REMAIN_EASY.png create mode 100644 assets/cn/raid/BRISTOL_OCR_REMAIN_HARD.png create mode 100644 assets/cn/raid/BRISTOL_OCR_REMAIN_NORMAL.png create mode 100644 assets/cn/raid/BRISTOL_RAID_EASY.png create mode 100644 assets/cn/raid/BRISTOL_RAID_HARD.png create mode 100644 assets/cn/raid/BRISTOL_RAID_NORMAL.png diff --git a/alas.py b/alas.py index a01b65cce..25250b62b 100644 --- a/alas.py +++ b/alas.py @@ -204,6 +204,10 @@ class AzurLaneAutoScript: CampaignWarArchives(config=self.config, device=self.device).run( name=self.config.Campaign_Name, folder=self.config.Campaign_Event, mode=self.config.Campaign_Mode) + def raid_daily(self): + from module.raid.daily import RaidDaily + RaidDaily(config=self.config, device=self.device).run() + def event_ab(self): from module.event.campaign_ab import CampaignAB CampaignAB(config=self.config, device=self.device).run() diff --git a/assets/cn/raid/BRISTOL_OCR_REMAIN_EASY.png b/assets/cn/raid/BRISTOL_OCR_REMAIN_EASY.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b2df88d93481c32b103852ecf3e810fc722b13 GIT binary patch literal 6583 zcmeI0=TnnUw8tNsG%3<>gobs-kuK5 zZuS5WIF@4&V4Awmp)|d3&t$ANvhg|7EfNqCM$@!0o8>d70M;*PwuSqPZWI#4I-_r9StAVFJ&(scf)&_A}+CrB`@Z? z0C!>0_rN3kiMo&;gcSow90I)#;4-E6IP(CIr_XNlRuR&=Mme$#` zs9HTS6F?vtm=R)Gq9;p&0d3NTZEQdrCs1KfWk(030e~AkL`?|z!~m@BK$WO~5mf2~ z2pGxdMbQ9n$N5>(5++IB^c~1Us|ZO`HkFY@nAON?l1DU90saZ5NlYqM zKmR7(5A?{-q$#Tvh<3^Ldbw7e0o>r!@iqr*z{lA0b3h0bAof< z-9D>XgCv+8XbD2unMh$)$P$Hi_eB8UKIr{+dPg~FX^}9y=&bl`6q$IdG zeOez+P6;qS>LHC;E-VaDc(syM_%*ts%z-guz-jux;^sJQ-ebC7K?ia0JI5-QbKmQ= z-Q(k>qo-dJwRzugeLhaxwY z*k2MpZH*2;Ns#EBll%NclKu6j=_{&I3UGZ_X#h zX&~(u8UVPT7kRZpmHOg0HgpqX_BX!zCJ?#xh5ITOMVjt0t6d;O@Y22K%uwYrYyyu^ zeyO0~&byQ~%Uu2K#vO*G8I~uJL@&?-p`UHuh2$tTmt+fw@RpP}+ub)$R1TBI+XQ4^AHS~Gypa}JsZTLL z?x*s#n4kM~OP)`!uN;#_L`J@AFL(82#fX~xqTYwU{d|GY*9o=}y*C&g;zzBY#K&q_ zy)xw%Yvr(AFqJn>l(*$Gz3tD=)0AsXq7fmFi(p-)dHRC+yW8`mBu!IoQ}treRpDxu zS{f7Ds24ZBiwmU|>sE^fu^jvev;lukGJSv+TNk`6m@E2JoRQTs6(Yjeocb;AN+iF!TymIXM=ljn!F43#m_5AtFl1%|em7Oppf94)f; zo2F_*-o_L}N!PbJHs+NFtJ?llM?C&A!P*AuKA#-W4#^HVi_f~q7+XHiY}_5q*6J4Q zX6O!QEY1dV4Hr3^!)8=Do(TMjRvgdF80&NapN<-NE~Qw6(Wt^=qSR z$NhR%l=^Ln@MYTFj$Ov($zIJ}_nm@W&ma1vc< zu2~MXz197`ot8YwPuWEgy5+%bTanQ zZ;h3V;l{hh!)WNx6QU&1eaOU3kH-Xg5eY`(Yl=&er9b?U?$c~@Y>5(m61xT-V>ech zSLs%>RxhmG-Lu{k-E-gT;p^mO;Tux$RS5C+_3QL^^QtEn&dN2TexRC{O&oa~-}~fj z%Y!~XOv1Bd`e%X++>2fpdAtk4r!R1?*Yl-3KN+6@P}79O+0SdD<WiTqvAyI9;uoY1r)PB?5R3=u|soO`5jh(AgE(>M#?;@EsdWkvRlY=NvHk~^}B z!j*!b5<&TaTAu0+Row-di%RTj7ik&H_`Op-n?PGU2evmS93``Q**j=**dOy8Uhfps zzC3g(A*P3BnmNq#G+8BX1WA`cxt)~y%F zXk86l{+oRL&ls%My_Cfqu~K_Dgyz&=-$DT8r!i?5I*qP9%pxp*6uB+hL!0t za%jsGUkfznG!Mi=8X%7cZcaO#t{e!{Kj#Q(NUG4oR#c5(1I;#Pgc>#KIE3R2KmpP> zEMT>EfzBI!p?D{JWyXo#oGHv`%LP8Ml>m$C`|v^i+H(`RbW~b9-lJ^i@mE`R>vTIK zl1t{GxpDYaP`V}B3te3Hr{V#2an9tCEv&M3*1{c-A zUojgDr97K&7I-Y(wWfUE2f6GfbX9kCbWzA#%deSt)}Y6?-rp+N3(5(%z#E^GmSAwB zVq-&%lL5ioj8S~-3R9%C)%q{j0!>^SG(vYh`qrOMCUV>G)HW`LO=2|zbbsb127d^q z-qRovU3@*=CdwNdD{0+fx87WafV~!w5uRhnwXA?IUXQObepg-iCO-W!BzRu$_xtYV ziRP|pL^x)bh6sUQ>jO9Xp`{Ak^Az7VkbcJ(ow6RvbV~!1uL}5v~^c77dQ-J-Nyt-*s(_<$nA2)Ka3wM!naL(7w&M zDCS|QVws|5nAgcHq}<$-XupqNGr3phyQ4!?=q2@sAG$OR`V9XWmbQ2YZy>d-@?bo~ zCV8= z58`?n%iySOZ&C@W9Na40%3t3NSKRz~T-rSzO2U$Ar&}BN5m$~?PW85X4{ckEe(CNj zErpyO%k00{J`(MFck}$WDPRkM=>R~GC;&u60l>l8xnBkVzv}?7Vg&%;w*Ub0OtJj= z000;X(EF-}fn%$apW}Fk`KUL_o9U*S*nMUq7}?smc`PkH9|y|8EJ*oJ}ftoHw?bKiel z*2N`7398e-UP@oe^fg~CMUE>AoIO55y5L53-YARUG1OuV?~f-D0&_EN|YY|<&3zi1KX%T1LnWEGc5(467ay0dvHUo_TEC= zAL&GX_c>ych&-Z;SXHhYHAZUbYN-1#bUbhQB`wTA@B_gq1vH)BnpkNdSj66KH^b@~ z%*hdPepV03lZ34z>aON#$B??!#R?CE=c$G65GJuU;5L*44?g*PhN2rSjR4MjOF<^+tltTdCh4{W9t*lBtDjuc{DHS zlH1r>RS>k0Wb)>3^`0RJTuHjo$Rb9LAb*@D+xWlNl;n*t~R;7O0XI2Sm}?iML^K(OD817961+8zc?Iq8ch zrGc{(JpA;d!N^Pzzv92a$}G7+%TxCM$W9%o7IzGF_{*-v`o^KjyBh(9|K-6%aiP`#`?rYnmaZag{Bc9SmPJ-zk!CJ?(I z>J{??eAMo}rYd;1(G1<;fBVx^>}nDx^Q&X>lBWN7;*=K{;#)3~xKY3Nu($g%2Or&POMd)eK) z)&J>)Li#mQ{07#IG&JaIu~u7KY$kawl*9ItF)3F*7Yw?ef2F_t&}=wyS_jj)gI&kr zOXV#x%`!F4mqnHX?IphW0l`Vxe*UeUlFr54cB83hfA6u(`nY%X`9$llcWaa%k&!?~*YK1g=_e*P)|uXmev|H%cV%+&tjd7K#3JZ0cwi3!#{#b3O{ zub>wEDc*R&1-c>|rw{F0FYPhc{8H#<@nFTt$0(-lZ&&=E{Uh*yPr#!s{QTKIJEH(B X;G?qh8`lH=)`V(2x?iSd_56PT4WzNQ literal 0 HcmV?d00001 diff --git a/assets/cn/raid/BRISTOL_OCR_REMAIN_HARD.png b/assets/cn/raid/BRISTOL_OCR_REMAIN_HARD.png new file mode 100644 index 0000000000000000000000000000000000000000..be5d12ca55d00fa2061a26b62becc52eea452753 GIT binary patch literal 6660 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 C=G(Ra literal 0 HcmV?d00001 diff --git a/assets/cn/raid/BRISTOL_OCR_REMAIN_NORMAL.png b/assets/cn/raid/BRISTOL_OCR_REMAIN_NORMAL.png new file mode 100644 index 0000000000000000000000000000000000000000..940351a6679f400c28b5b7b41b1e5ac2a09d3a82 GIT binary patch literal 6567 zcmeI1=U3Cq)4;z}30+zQ6p$i>?h5kfoiyG3MD3Bk-CIA4~c>f)AKu+!%0AMxp)YUaL^*{t70z43YVg|apVt)Pz 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 XX0S{WKJae?1~9m7e5*>w>FNIfh7ht4 literal 0 HcmV?d00001 diff --git a/assets/cn/raid/BRISTOL_RAID_EASY.png b/assets/cn/raid/BRISTOL_RAID_EASY.png new file mode 100644 index 0000000000000000000000000000000000000000..53b490ebba5bd0895b3b946cc7dc863d0bd740af GIT binary patch literal 9013 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 literal 0 HcmV?d00001 diff --git a/assets/cn/raid/BRISTOL_RAID_NORMAL.png b/assets/cn/raid/BRISTOL_RAID_NORMAL.png new file mode 100644 index 0000000000000000000000000000000000000000..1012b5be59583dd02b105661e56190a03e0fca8b GIT binary patch literal 9165 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 0: - super().run(name=name, mode='hard', total=remain) + super().run(name=name, mode=mode, total=remain) - if self.config.RAID_NORMAL: - remain = self.get_remain(mode='normal') - if remain > 0: - super().run(name=name, mode='normal', total=remain) - - if self.config.RAID_EASY: - remain = self.get_remain(mode='easy') - if remain > 0: - super().run(name=name, mode='easy', total=remain) - - self.reward_recover_daily_reward_settings() + self.config.task_delay(server_update=True) diff --git a/module/raid/raid.py b/module/raid/raid.py index 2447ef201..639ee6050 100644 --- a/module/raid/raid.py +++ b/module/raid/raid.py @@ -34,6 +34,8 @@ def raid_name_shorten(name): return 'ESSEX' elif name == 'raid_20210708': return 'SURUGA' + elif name == 'raid_20220127': + return 'BRISTOL' else: raise ScriptError(f'Unknown raid name: {name}') @@ -71,6 +73,8 @@ def raid_ocr(raid, mode): return RaidCounter(button, letter=(57, 52, 255), threshold=128) elif raid == 'SURUGA': return RaidCounter(button, letter=(49, 48, 49), threshold=128) + elif raid == 'BRISTOL': + return RaidCounter(button, letter=(214, 231, 219), threshold=128) except KeyError: raise ScriptError(f'Raid entrance asset not exists: {key}') @@ -88,7 +92,7 @@ class Raid(MapOperation, Combat): oil_checked = False if emotion_reduce: - self.emotion.wait(fleet=fleet_index) + self.emotion.wait(fleet_index) while 1: self.device.screenshot() @@ -96,13 +100,13 @@ class Raid(MapOperation, Combat): if self.appear(BATTLE_PREPARATION): if self.handle_combat_automation_set(auto=auto): continue - if not oil_checked and self.config.STOP_IF_OIL_LOWER_THAN: + if not oil_checked and self.config.StopCondition_OilLimit: self.ensure_combat_oil_loaded() oil = OCR_OIL.ocr(self.device.image) oil_checked = True - if oil < self.config.STOP_IF_OIL_LOWER_THAN: + if oil < self.config.StopCondition_OilLimit: logger.hr('Triggered oil limit') - raise OilExhausted() + raise OilExhausted if self.handle_raid_ticket_use(): continue if self.handle_retirement(): @@ -128,7 +132,7 @@ class Raid(MapOperation, Combat): bool: If clicked. """ if self.appear(TICKET_USE_CONFIRM, offset=(30, 30), interval=1): - if self.config.RAID_USE_TICKET: + if self.config.Raid_UseTicket: self.device.click(TICKET_USE_CONFIRM) else: self.device.click(TICKET_USE_CANCEL) @@ -136,11 +140,23 @@ class Raid(MapOperation, Combat): return False - def raid_enter(self, mode, raid): - logger.hr('Raid Enter') + def raid_enter(self, mode, raid, skip_first_screenshot=True): + """ + Args: + mode: + raid: + skip_first_screenshot: + + Pages: + in: page_raid + out: BATTLE_PREPARATION + """ entrance = raid_entrance(raid=raid, mode=mode) while 1: - self.device.screenshot() + if skip_first_screenshot: + skip_first_screenshot = False + else: + self.device.screenshot() if self.appear_then_click(entrance, offset=(10, 10), interval=5): continue @@ -155,7 +171,18 @@ class Raid(MapOperation, Combat): return self.appear(RAID_CHECK, offset=(30, 30)) def raid_execute_once(self, mode, raid): + """ + Args: + mode: + raid: + + Returns: + in: page_raid + out: page_raid + """ logger.hr('Raid Execute') self.raid_enter(mode=mode, raid=raid) + + self.config.override(Campaign_Name=f'{raid}_{mode}') self.combat(balance_hp=False, expected_end=self.raid_expected_end) logger.hr('Raid End') diff --git a/module/raid/run.py b/module/raid/run.py index a772581fd..414d2546d 100644 --- a/module/raid/run.py +++ b/module/raid/run.py @@ -1,11 +1,27 @@ -from module.campaign.run import CampaignRun -from module.exception import ScriptEnd +from module.exception import ScriptEnd, ScriptError from module.logger import logger from module.raid.raid import Raid, OilExhausted from module.ui.page import page_raid -class RaidRun(Raid, CampaignRun): +class RaidRun(Raid): + run_count: int + run_limit: int + + def triggered_stop_condition(self): + """ + Returns: + bool: If triggered a stop condition. + """ + # Run count limit + if self.run_limit and self.config.StopCondition_RunCount <= 0: + logger.hr('Triggered stop condition: Run count') + self.config.StopCondition_RunCount = 0 + self.config.Scheduler_Enable = False + return True + + return False + def run(self, name='', mode='', total=0): """ Args: @@ -13,36 +29,27 @@ class RaidRun(Raid, CampaignRun): mode (str): Raid mode, such as 'hard', 'normal', 'easy' total (int): Total run count """ - logger.hr('Raid', level=1) - name = name if name else self.config.RAID_NAME - mode = mode if mode else self.config.RAID_MODE + name = name if name else self.config.Campaign_Event + mode = mode if mode else self.config.Raid_Mode if not name or not mode: - logger.warning(f'RaidRun arguments unfilled. name={name}, mode={mode}') - - self.campaign = self # A trick to call CampaignRun - self.campaign_name_set(f'{name}_{mode}') - - self.device.screenshot() + raise ScriptError(f'RaidRun arguments unfilled. name={name}, mode={mode}') self.run_count = 0 + self.run_limit = self.config.StopCondition_RunCount while 1: - if self.handle_app_restart(): - pass - if self.handle_reward(): - pass - # End if total and self.run_count == total: break # Log - if self.config.STOP_IF_COUNT_GREATER_THAN > 0: - logger.info(f'Count: [{self.run_count}/{self.config.STOP_IF_COUNT_GREATER_THAN}]') + logger.hr(f'{name}_{mode}', level=2) + if self.config.StopCondition_RunCount > 0: + logger.info(f'Count remain: {self.config.StopCondition_RunCount}') else: - logger.info(f'Count: [{self.run_count}]') + logger.info(f'Count: {self.run_count}') # End - if self.triggered_stop_condition(oil_check=False): + if self.triggered_stop_condition(): break # UI ensure @@ -50,9 +57,10 @@ class RaidRun(Raid, CampaignRun): # Run try: - self.raid_execute_once(mode=mode if mode else self.config.RAID_MODE, raid=name) + self.raid_execute_once(mode=mode, raid=name) except OilExhausted: - self.ui_goto_main() + logger.hr('Triggered stop condition: Oil limit') + self.config.task_delay(minute=(120, 240)) break except ScriptEnd as e: logger.hr('Script end') @@ -61,8 +69,8 @@ class RaidRun(Raid, CampaignRun): # After run self.run_count += 1 - if self.config.STOP_IF_COUNT_GREATER_THAN > 0: - count = self.config.STOP_IF_COUNT_GREATER_THAN - self.run_count - count = 0 if count < 0 else count - self.config.config.set('Setting', 'if_count_greater_than', str(count)) - self.config.save() + if self.config.StopCondition_RunCount: + self.config.StopCondition_RunCount -= 1 + # Scheduler + if self.config.task_switched(): + self.config.task_stop()