Skip to content

Commit b9ed5b1

Browse files
LmeSzincguoh064xzjjasper
authored
Bug fix (LmeSzinc#5358)
* Fix: handle get ship in coalition_20251120 (LmeSzinc#5350) * Add: [EN] assets for coalition_20251120 (LmeSzinc#5347) * Fix: handle get ship in coalition_20251120 --------- Co-authored-by: LmeSzinc <[email protected]> * Add: [TW] assets for coalition_20251127 (LmeSzinc#5354) * Add: [EN] assets for coalition_20251120 (LmeSzinc#5347) * Add: [TW] assets for coalition_20251127 --------- Co-authored-by: LmeSzinc <[email protected]> Co-authored-by: guoh064 <[email protected]> * Upd: Config update * Add: [ALAS] Syntactic sugar for state machine with timeout * Fix: Retry on default coalition PT 999999 --------- Co-authored-by: guoh064 <[email protected]> Co-authored-by: xzjjasper <[email protected]>
2 parents 83f103d + b730148 commit b9ed5b1

File tree

9 files changed

+42
-13
lines changed

9 files changed

+42
-13
lines changed
8.62 KB
Loading
8.65 KB
Loading
9 KB
Loading

campaign/Readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,3 +269,4 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
269269
| 20251113 | event 20230914 cn | Effulgence Before Eclipse | 复刻须臾望月抄 | Effulgence Before Eclipse Rerun | 須臾望月抄(復刻) | - |
270270
| 20251121 | event 20220428 cn | Rondo at Rainbow's End | - | - | - | 復刻虹彩的終幕曲 |
271271
| 20251120 | coalition 20251120 | DATE A LANE | DATE A LANE | DATE A LANE | DATE A LANE | - |
272+
| 20251127 | coalition 20251120 | DATE A LANE | - | - | - | DATE A LANE |

module/base/base.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,28 +124,50 @@ def ensure_button(self, button):
124124

125125
return button
126126

127-
def loop(self, skip_first=True):
127+
def loop(self, skip_first=True, timeout=None):
128128
"""
129129
A syntactic sugar to start a state loop
130130
131131
Args:
132132
skip_first (bool): Usually to be True to reuse the previous screenshot
133+
timeout (int | float | Timer): Seconds of timeout or a Timer object
133134
134135
Yields:
135136
np.ndarray: screenshot
136137
137138
Examples:
139+
# state machine that handle clicking until destination
138140
for _ in self.loop():
139141
if self.appear(...):
140142
break
141143
if self.appear_then_click(...):
142144
continue
145+
146+
Examples:
147+
# state machine with timeout
148+
for _ in self.loop(timeout=2):
149+
if self.appear(...):
150+
logger.info('Wait success')
151+
break
152+
else:
153+
logger.warning('Wait timeout')
143154
"""
155+
if timeout is not None:
156+
if isinstance(timeout, Timer):
157+
timeout.reset()
158+
else:
159+
timeout = Timer.from_seconds(timeout).start()
160+
144161
while 1:
162+
if timeout is not None:
163+
if timeout.reached():
164+
return
165+
145166
if skip_first:
146167
skip_first = False
147168
else:
148169
self.device.screenshot()
170+
149171
try:
150172
yield self.device.image
151173
except AttributeError:

module/coalition/assets.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@
2828
DAL_AREA5 = Button(area={'cn': (552, 130, 612, 190), 'en': (552, 130, 612, 190), 'jp': (552, 130, 612, 190), 'tw': (552, 130, 612, 190)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (552, 130, 612, 190), 'en': (552, 130, 612, 190), 'jp': (552, 130, 612, 190), 'tw': (552, 130, 612, 190)}, file={'cn': './assets/cn/coalition/DAL_AREA5.png', 'en': './assets/cn/coalition/DAL_AREA5.png', 'jp': './assets/jp/coalition/DAL_AREA5.png', 'tw': './assets/cn/coalition/DAL_AREA5.png'})
2929
DAL_AREA6 = Button(area={'cn': (656, 303, 716, 363), 'en': (656, 303, 716, 363), 'jp': (656, 303, 716, 363), 'tw': (656, 303, 716, 363)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (656, 303, 716, 363), 'en': (656, 303, 716, 363), 'jp': (656, 303, 716, 363), 'tw': (656, 303, 716, 363)}, file={'cn': './assets/cn/coalition/DAL_AREA6.png', 'en': './assets/cn/coalition/DAL_AREA6.png', 'jp': './assets/jp/coalition/DAL_AREA6.png', 'tw': './assets/cn/coalition/DAL_AREA6.png'})
3030
DAL_DIFFICULTY_EXIT = Button(area={'cn': (1208, 70, 1244, 107), 'en': (1208, 70, 1244, 107), 'jp': (1208, 70, 1244, 107), 'tw': (1208, 70, 1244, 107)}, color={'cn': (122, 158, 172), 'en': (122, 158, 172), 'jp': (122, 158, 172), 'tw': (122, 158, 172)}, button={'cn': (1208, 70, 1244, 107), 'en': (1208, 70, 1244, 107), 'jp': (1208, 70, 1244, 107), 'tw': (1208, 70, 1244, 107)}, file={'cn': './assets/cn/coalition/DAL_DIFFICULTY_EXIT.png', 'en': './assets/cn/coalition/DAL_DIFFICULTY_EXIT.png', 'jp': './assets/jp/coalition/DAL_DIFFICULTY_EXIT.png', 'tw': './assets/cn/coalition/DAL_DIFFICULTY_EXIT.png'})
31-
DAL_FLEET_PREPARATION = Button(area={'cn': (1016, 529, 1100, 550), 'en': (1028, 527, 1090, 553), 'jp': (1004, 527, 1107, 554), 'tw': (1016, 529, 1100, 550)}, color={'cn': (135, 215, 236), 'en': (79, 197, 228), 'jp': (85, 198, 228), 'tw': (135, 215, 236)}, button={'cn': (1016, 529, 1100, 550), 'en': (1028, 527, 1090, 553), 'jp': (1004, 527, 1107, 554), 'tw': (1016, 529, 1100, 550)}, file={'cn': './assets/cn/coalition/DAL_FLEET_PREPARATION.png', 'en': './assets/en/coalition/DAL_FLEET_PREPARATION.png', 'jp': './assets/jp/coalition/DAL_FLEET_PREPARATION.png', 'tw': './assets/cn/coalition/DAL_FLEET_PREPARATION.png'})
31+
DAL_FLEET_PREPARATION = Button(area={'cn': (1016, 529, 1100, 550), 'en': (1028, 527, 1090, 553), 'jp': (1004, 527, 1107, 554), 'tw': (1016, 529, 1101, 551)}, color={'cn': (135, 215, 236), 'en': (79, 197, 228), 'jp': (85, 198, 228), 'tw': (102, 204, 230)}, button={'cn': (1016, 529, 1100, 550), 'en': (1028, 527, 1090, 553), 'jp': (1004, 527, 1107, 554), 'tw': (1016, 529, 1101, 551)}, file={'cn': './assets/cn/coalition/DAL_FLEET_PREPARATION.png', 'en': './assets/en/coalition/DAL_FLEET_PREPARATION.png', 'jp': './assets/jp/coalition/DAL_FLEET_PREPARATION.png', 'tw': './assets/tw/coalition/DAL_FLEET_PREPARATION.png'})
3232
DAL_HARD = Button(area={'cn': (893, 582, 1109, 611), 'en': (893, 582, 1109, 611), 'jp': (893, 582, 1109, 611), 'tw': (893, 582, 1109, 611)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (893, 582, 1109, 611), 'en': (893, 582, 1109, 611), 'jp': (893, 582, 1109, 611), 'tw': (893, 582, 1109, 611)}, file={'cn': './assets/cn/coalition/DAL_HARD.png', 'en': './assets/cn/coalition/DAL_HARD.png', 'jp': './assets/jp/coalition/DAL_HARD.png', 'tw': './assets/cn/coalition/DAL_HARD.png'})
3333
DAL_NORMAL = Button(area={'cn': (600, 583, 818, 610), 'en': (600, 583, 818, 610), 'jp': (600, 583, 818, 610), 'tw': (600, 583, 818, 610)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (600, 583, 818, 610), 'en': (600, 583, 818, 610), 'jp': (600, 583, 818, 610), 'tw': (600, 583, 818, 610)}, file={'cn': './assets/cn/coalition/DAL_NORMAL.png', 'en': './assets/cn/coalition/DAL_NORMAL.png', 'jp': './assets/jp/coalition/DAL_NORMAL.png', 'tw': './assets/cn/coalition/DAL_NORMAL.png'})
3434
DAL_PT_OCR = Button(area={'cn': (1190, 130, 1274, 161), 'en': (1190, 130, 1274, 161), 'jp': (1190, 130, 1274, 161), 'tw': (1190, 130, 1274, 161)}, color={'cn': (79, 86, 72), 'en': (79, 86, 72), 'jp': (79, 86, 72), 'tw': (79, 86, 72)}, button={'cn': (1190, 130, 1274, 161), 'en': (1190, 130, 1274, 161), 'jp': (1190, 130, 1274, 161), 'tw': (1190, 130, 1274, 161)}, file={'cn': './assets/cn/coalition/DAL_PT_OCR.png', 'en': './assets/cn/coalition/DAL_PT_OCR.png', 'jp': './assets/jp/coalition/DAL_PT_OCR.png', 'tw': './assets/cn/coalition/DAL_PT_OCR.png'})
35-
DAL_SWITCH_MULTI = Button(area={'cn': (1060, 473, 1204, 500), 'en': (1061, 474, 1203, 499), 'jp': (1081, 475, 1187, 499), 'tw': (1060, 473, 1204, 500)}, color={'cn': (225, 225, 225), 'en': (195, 195, 195), 'jp': (207, 207, 207), 'tw': (225, 225, 225)}, button={'cn': (1060, 473, 1204, 500), 'en': (1061, 474, 1203, 499), 'jp': (1081, 475, 1187, 499), 'tw': (1060, 473, 1204, 500)}, file={'cn': './assets/cn/coalition/DAL_SWITCH_MULTI.png', 'en': './assets/en/coalition/DAL_SWITCH_MULTI.png', 'jp': './assets/jp/coalition/DAL_SWITCH_MULTI.png', 'tw': './assets/cn/coalition/DAL_SWITCH_MULTI.png'})
36-
DAL_SWITCH_SINGLE = Button(area={'cn': (910, 473, 1055, 500), 'en': (915, 475, 1051, 499), 'jp': (917, 474, 1035, 499), 'tw': (910, 473, 1055, 500)}, color={'cn': (223, 223, 223), 'en': (193, 193, 193), 'jp': (215, 215, 215), 'tw': (223, 223, 223)}, button={'cn': (910, 473, 1055, 500), 'en': (915, 475, 1051, 499), 'jp': (917, 474, 1035, 499), 'tw': (910, 473, 1055, 500)}, file={'cn': './assets/cn/coalition/DAL_SWITCH_SINGLE.png', 'en': './assets/en/coalition/DAL_SWITCH_SINGLE.png', 'jp': './assets/jp/coalition/DAL_SWITCH_SINGLE.png', 'tw': './assets/cn/coalition/DAL_SWITCH_SINGLE.png'})
35+
DAL_SWITCH_MULTI = Button(area={'cn': (1060, 473, 1204, 500), 'en': (1061, 474, 1203, 499), 'jp': (1081, 475, 1187, 499), 'tw': (1098, 477, 1167, 496)}, color={'cn': (225, 225, 225), 'en': (195, 195, 195), 'jp': (207, 207, 207), 'tw': (188, 188, 188)}, button={'cn': (1060, 473, 1204, 500), 'en': (1061, 474, 1203, 499), 'jp': (1081, 475, 1187, 499), 'tw': (1098, 477, 1167, 496)}, file={'cn': './assets/cn/coalition/DAL_SWITCH_MULTI.png', 'en': './assets/en/coalition/DAL_SWITCH_MULTI.png', 'jp': './assets/jp/coalition/DAL_SWITCH_MULTI.png', 'tw': './assets/tw/coalition/DAL_SWITCH_MULTI.png'})
36+
DAL_SWITCH_SINGLE = Button(area={'cn': (910, 473, 1055, 500), 'en': (915, 475, 1051, 499), 'jp': (917, 474, 1035, 499), 'tw': (945, 478, 1013, 495)}, color={'cn': (223, 223, 223), 'en': (193, 193, 193), 'jp': (215, 215, 215), 'tw': (168, 168, 168)}, button={'cn': (910, 473, 1055, 500), 'en': (915, 475, 1051, 499), 'jp': (917, 474, 1035, 499), 'tw': (945, 478, 1013, 495)}, file={'cn': './assets/cn/coalition/DAL_SWITCH_SINGLE.png', 'en': './assets/en/coalition/DAL_SWITCH_SINGLE.png', 'jp': './assets/jp/coalition/DAL_SWITCH_SINGLE.png', 'tw': './assets/tw/coalition/DAL_SWITCH_SINGLE.png'})
3737
EMPTY_FLAGSHIP = Button(area={'cn': (247, 237, 277, 267), 'en': (247, 237, 277, 267), 'jp': (247, 237, 277, 267), 'tw': (247, 237, 277, 267)}, color={'cn': (76, 64, 56), 'en': (76, 64, 56), 'jp': (76, 64, 56), 'tw': (76, 64, 56)}, button={'cn': (247, 237, 277, 267), 'en': (247, 237, 277, 267), 'jp': (247, 237, 277, 267), 'tw': (247, 237, 277, 267)}, file={'cn': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'en': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'jp': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'tw': './assets/cn/coalition/EMPTY_FLAGSHIP.png'})
3838
EMPTY_VANGUARD = Button(area={'cn': (515, 237, 545, 267), 'en': (515, 237, 545, 267), 'jp': (515, 237, 545, 267), 'tw': (515, 237, 545, 267)}, color={'cn': (52, 52, 53), 'en': (52, 52, 53), 'jp': (52, 52, 53), 'tw': (52, 52, 53)}, button={'cn': (515, 237, 545, 267), 'en': (515, 237, 545, 267), 'jp': (515, 237, 545, 267), 'tw': (515, 237, 545, 267)}, file={'cn': './assets/cn/coalition/EMPTY_VANGUARD.png', 'en': './assets/cn/coalition/EMPTY_VANGUARD.png', 'jp': './assets/cn/coalition/EMPTY_VANGUARD.png', 'tw': './assets/cn/coalition/EMPTY_VANGUARD.png'})
3939
FLEET_NOT_PREPARED = Button(area={'cn': (1008, 310, 1110, 334), 'en': (1008, 310, 1110, 334), 'jp': (1008, 310, 1110, 334), 'tw': (1008, 310, 1110, 334)}, color={'cn': (106, 106, 112), 'en': (106, 106, 112), 'jp': (106, 106, 112), 'tw': (108, 107, 112)}, button={'cn': (1008, 310, 1110, 334), 'en': (1008, 310, 1110, 334), 'jp': (1008, 310, 1110, 334), 'tw': (1008, 310, 1110, 334)}, file={'cn': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'en': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'jp': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'tw': './assets/tw/coalition/FLEET_NOT_PREPARED.png'})

module/coalition/coalition.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
from module.campaign.campaign_event import CampaignEvent
44
from module.coalition.assets import *
55
from module.coalition.combat import CoalitionCombat
6-
from module.exception import ScriptError, ScriptEnd
6+
from module.exception import ScriptEnd, ScriptError
77
from module.logger import logger
88
from module.ocr.ocr import Digit
9-
from module.ui.page import page_campaign_menu
109

1110

1211
class AcademyPtOcr(Digit):
@@ -61,7 +60,15 @@ def get_event_pt(self):
6160
logger.error(f'ocr object is not defined in event {event}')
6261
raise ScriptError
6362

64-
pt = ocr.ocr(self.device.image)
63+
pt = 0
64+
for _ in self.loop(timeout=1.5):
65+
pt = ocr.ocr(self.device.image)
66+
# 999999 seems to be a default value, wait
67+
if pt not in [999999]:
68+
break
69+
else:
70+
logger.warning('Wait PT timeout, assume it is')
71+
6572
return pt
6673

6774
def triggered_stop_condition(self, oil_check=False, pt_check=False):

module/coalition/combat.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ def coalition_combat_re_enter(self, skip_first_screenshot=True):
3939
# Stop clicking BATTLE_STATUS because combat ends
4040
status_clicked = False
4141
continue
42+
# Coalition 20251120 has ship drop
43+
if self.handle_get_ship():
44+
continue
4245
if self.handle_battle_status():
4346
status_clicked = True
4447
click_last.reset()

module/config/argument/args.json

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3130,7 +3130,6 @@
31303130
"type": "state",
31313131
"value": "campaign_main",
31323132
"option": [
3133-
"coalition_20250626",
31343133
"coalition_20251120"
31353134
],
31363135
"option_cn": [
@@ -3143,10 +3142,9 @@
31433142
"coalition_20251120"
31443143
],
31453144
"option_tw": [
3146-
"coalition_20250626"
3145+
"coalition_20251120"
31473146
],
31483147
"option_bold": [
3149-
"coalition_20250626",
31503148
"coalition_20251120"
31513149
]
31523150
},
@@ -6316,7 +6314,6 @@
63166314
"type": "state",
63176315
"value": "campaign_main",
63186316
"option": [
6319-
"coalition_20250626",
63206317
"coalition_20251120"
63216318
],
63226319
"option_cn": [
@@ -6329,10 +6326,9 @@
63296326
"coalition_20251120"
63306327
],
63316328
"option_tw": [
6332-
"coalition_20250626"
6329+
"coalition_20251120"
63336330
],
63346331
"option_bold": [
6335-
"coalition_20250626",
63366332
"coalition_20251120"
63376333
]
63386334
},

0 commit comments

Comments
 (0)