Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions assets/game_data/screen_info/battle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ area_list:
pc_rect:
- 1180
- 930
- 1330
- 960
- 1400
- 1000
text: 再来一次
lcs_percent: 0.7
template_sub_dir: ''
Expand Down
18 changes: 14 additions & 4 deletions src/sr_od/app/div_uni/operations/ornamenet_extraction.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ def __init__(self, ctx: SrContext, mission: GuideMission, run_times: int,
self.run_times: int = run_times
"""需要挑战的次数"""

self.choose_times: int = 1
"""单次挑战选择的次数"""

self.file_num: int = file_num
"""需要使用的存档 0为不选择"""

Expand Down Expand Up @@ -61,6 +64,7 @@ def handle_init(self) -> Optional[OperationRoundResult]:

return None

@node_from(from_name='等待退出', status='重新选择次数')
@operation_node(name='传送', is_start_node=True)
def tp(self) -> OperationRoundResult:
"""
Expand Down Expand Up @@ -117,6 +121,7 @@ def choose_support(self) -> OperationRoundResult:
def click_challenge_times(self) -> OperationRoundResult:
log.info('本次挑战次数 %d', self.run_times)
if self.run_times > 1:
self.choose_times = min(6, self.run_times)
op = ChooseChallengeTimes(self.ctx, min(6, self.run_times), mission_type='饰品提取')
return self.round_by_op_result(op.execute())
else:
Expand Down Expand Up @@ -172,9 +177,9 @@ def wait_battle_result(self) -> OperationRoundResult:
self.battle_fail_times += 1
return self.round_by_op_result(op_result)
elif op_result.status == battle_screen_state.ScreenState.BATTLE_SUCCESS.value:
self.battle_success_times += 1
self.battle_success_times += self.choose_times
if self.get_reward_callback is not None:
self.get_reward_callback(1)
self.get_reward_callback(self.choose_times)
return self.round_by_op_result(op_result)
else:
return self.round_fail('未知状态')
Expand All @@ -187,7 +192,7 @@ def after_battle_result(self) -> OperationRoundResult:
:return:
"""
screen = self.last_screenshot
if self.battle_fail_times >= 5 or self.battle_success_times >= self.run_times: # 失败过多或者完成指定次数了 退出
if self.battle_fail_times >= 5 or self.battle_success_times + self.choose_times > self.run_times: # 失败过多或者再来一次就会超出指定次数 退出
area_name = '退出关卡按钮'
else: # 还需要继续挑战
area_name = '再来一次按钮'
Expand All @@ -203,4 +208,9 @@ def wait_back(self) -> OperationRoundResult:
:return:
"""
screen = self.last_screenshot
return self.round_by_find_area(screen, '大世界', '角色图标', retry_wait=1)
result = self.round_by_find_area(screen, '大世界', '角色图标', retry_wait=1)

# 如果未完成指定次数, 则继续打
if result.is_success and self.battle_fail_times < 5 and self.battle_success_times < self.run_times:
return self.round_success('重新选择次数')
return result