Skip to content

作战档案 D3-3 三战撤退无法加载,且自律寻敌下需先关闭自律再撤退 #275

Description

@swordcry424

在提问之前

  • 我已经搜索了现有的 issues
  • 我在提问题之前至少花费了 5 分钟来思考和准备
  • 我已经阅读了 Wiki 中的常见问题(FAQ)
  • 我正在使用最新版的 AzurPilot

描述问题

在“作战档案”中选择 档案 定向折叠war_archives_20221222_cn),关卡名称填写 D3-3,希望使用说明中“关卡名后追加 -3,三战后撤退”的功能。

目前存在两个连续问题:

  1. D3-3 会被直接当作地图模块名加载,尝试导入 campaign.war_archives_20221222_cn.d3-3,随后提示地图文件不存在。
  2. 如果为该档案补充 d3_3.py 并让解析成功,在开启“使用自律寻敌”时,第三战后直接调用 withdraw() 会卡在撤退流程。此时自律寻敌仍处于运行状态,需要先点击地图右下角的自律寻敌开关将其关闭,回到普通地图状态后再执行撤退。

如何复现

  1. 前往“活动 → 作战档案”。
  2. 活动名称选择“档案 定向折叠”。
  3. 关卡名称填写 D3-3
  4. 开启“使用自律寻敌”。
  5. 启动作战档案任务。

现状:

  • 未适配时直接报 Map file not found: campaign.war_archives_20221222_cn.d3-3
  • 仅补充 d3_3 三战逻辑后,第三战会进入撤退函数,但无法完成撤退。

预期行为

  • D3-3 应解析为该活动目录下的 d3_3.py,同时 UI 入口仍使用 D3
  • 开启自律寻敌时,第三战结算后应先关闭自律寻敌,再执行地图撤退。
  • 未提供对应别名地图的其他活动不应受到影响。

相关 Logs

WARNING | Map file not found: campaign.war_archives_20221222_cn.d3-3
WARNING | Existing files: ['d1', 'c1', 'b1', 'a1', 'c2', 'b2', 'd3', 'a2', 'd2', 'a3', 'c3', 'b3']

INFO | Stage name d3-3 converted to d3_3
INFO | Stage d3_3 uses entrance d3 in UI
INFO | [Map Battle] 3
INFO | BATTLE_2
INFO | Combat end.
INFO | Third auto-search battle finished. Withdrawing immediately.
INFO | <<< MAP WITHDRAW >>>
# 此后卡住,未完成撤退

根因与已验证修复建议

1. 通用处理存在的活动关卡别名

module/campaign/run.py::handle_stage_name() 当前仅对 event_20251218_cn 硬编码转换 d3-3 -> d3_3。建议改为:仅当当前活动目录实际存在下划线别名地图时进行转换。

alias = name.replace('-', '_')
if alias != name and alias in map_files(folder):
    name = alias

这样可以支持档案地图,同时不会让没有 d3_3.py 的活动错误转换。

2. 为定向折叠档案增加 d3_3.py

可复用 .d3MAPConfigCampaign,将 _map_battle 设为 3,并在第三战后撤退。

3. 自律寻敌下先关闭自律再撤退

第三战结算后不能直接调用 withdraw()。已实际验证可行的流程是:

  1. 点击 AUTO_SEARCH_MAP_OPTION_ON,关闭自律寻敌;
  2. 等待 is_in_map()
  3. 调用 withdraw()

示意:

def withdraw_after_auto_search(self):
    self.interval_reset(AUTO_SEARCH_MAP_OPTION_ON)
    for _ in self.loop():
        self.device.screenshot()
        if self.is_auto_search_running():
            self.appear_then_click(AUTO_SEARCH_MAP_OPTION_ON, interval=2)
            continue
        if self.handle_auto_search_exit():
            continue
        if self.is_in_map():
            self.withdraw()

上述修复已在 CN 服“档案 定向折叠”D3 实际运行验证:开启自律寻敌后,第三战结算、关闭自律、撤退均成功。

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions