Skip to content

Commit 6b31532

Browse files
fix: 修复决战技能只识别一艘船的bug (#379)
* fix skills * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent d8db89e commit 6b31532

4 files changed

Lines changed: 15 additions & 14 deletions

File tree

autowsgr/ops/decisive/handlers.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,13 @@ def _handle_prepare_combat(self) -> None:
214214
self._has_chosen_fleet,
215215
)
216216

217+
# 先使用技能,再注册舰船
218+
if self._state.node == 'A' and not self._map.is_skill_used():
219+
gained = self._map.use_skill()
220+
if gained:
221+
_log.info('[决战] 使用技能获得: {}', gained)
222+
self._state.ships.update(gained)
223+
217224
# ── 恢复模式: 扫描当前舰队与可用舰船 ─────────────────────────
218225
# 对齐 legacy: if fleet.empty() and not is_begin(): _check_fleet()
219226
if self._resume_mode:
@@ -228,12 +235,6 @@ def _handle_prepare_combat(self) -> None:
228235
self._sync_ship_states()
229236
self._resume_mode = False # 扫描完成后退出恢复模式
230237

231-
if self._state.node == 'A' and not self._map.is_skill_used():
232-
gained = self._map.use_skill()
233-
if gained:
234-
_log.info('[决战] 使用技能获得: {}', gained)
235-
self._state.ships.update(gained)
236-
237238
best_fleet = self._logic.get_best_fleet()
238239
if self._logic.should_retreat(best_fleet):
239240
_log.info('[决战] 舰船不足, 准备撤退')
@@ -251,8 +252,10 @@ def _handle_prepare_combat(self) -> None:
251252
self._state.fleet = best_fleet
252253

253254
strategy = (
254-
RepairStrategy.NEVER if not self._config.use_quick_repair
255-
else RepairStrategy.MODERATE if self._config.repair_level <= 1
255+
RepairStrategy.NEVER
256+
if not self._config.use_quick_repair
257+
else RepairStrategy.MODERATE
258+
if self._config.repair_level <= 1
256259
else RepairStrategy.SEVERE
257260
)
258261
page.apply_repair(strategy)

autowsgr/server/routes/ops.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,7 @@ async def repair_ship(request: RepairShipRequest):
220220
from autowsgr.ops.repair import repair_ship_by_name
221221

222222
try:
223-
repair_secs = await asyncio.to_thread(
224-
repair_ship_by_name, ctx, request.ship_name
225-
)
223+
repair_secs = await asyncio.to_thread(repair_ship_by_name, ctx, request.ship_name)
226224
if repair_secs < 0:
227225
return ApiResponse(
228226
success=False,

autowsgr/ui/decisive/fleet_ocr.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,10 @@ def use_skill(
139139

140140
screen = ctrl.screenshot()
141141
crop = ship_area.crop(screen)
142-
result = ocr.recognize_ship_name(crop)
142+
result = ocr.recognize_ship_names(crop)
143143
acquired: list[str] = []
144144
if result is not None:
145-
acquired.append(result)
145+
acquired.extend(result)
146146

147147
ctrl.click(*skill_pos) # 快进一下
148148
return acquired

autowsgr/vision/ocr.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ def recognize_ship_names(
297297
if dist > max_threshold:
298298
raise ShipNameMismatchError(text, best_candidate, dist, max_threshold)
299299
_log_fn("[OCR] recognize_ship_names: '{}' 无匹配 (阈值={}),跳过", text, threshold)
300-
_log_fn('[OCR] recognize_ship_names: 共识别 {} : {}', len(matched), matched)
300+
_log_fn('[OCR] recognize_ship_names: 共识别 {} : {}', len(matched), matched)
301301
return matched
302302

303303
# ── 工厂方法 ──

0 commit comments

Comments
 (0)