体力计划(ChargePlanApp)是一个自动化执行各种副本挑战的应用,支持实战模拟室、区域巡防、专业挑战室、恶名狩猎等多种副本类型。该应用采用基于状态机的节点图执行模式,能够智能管理电量、自动恢复电量、循环执行计划等。
- 循环执行:所有计划达到计划次数后,按计划次数扣减已运行次数并继续下一轮。
- 跳过计划:当前计划因电量不足或次数限制无法继续时,继续尝试后续计划。
- 每日重置:按游戏刷新日每天首次运行前清零所有计划的已运行次数。
- 恢复电量:体力不足时按配置使用储蓄电量、以太电池或两者。
- 双倍活动:开启后会在识别电量后检查实战模拟室双倍次数;命中活动时按配置的实战模拟室任务生成运行期临时计划,优先执行但不写入正式计划列表。
开始体力计划 → 打开菜单 → 识别电量 → [查看双倍活动] → 查找并选择下一个可执行任务
关键逻辑:
- 重置上次尝试的计划(
last_tried_plan = None) - 如果开启“每日重置”,按游戏刷新日每天首次运行前清零所有计划的已运行次数
- 打开游戏菜单界面
- 识别当前剩余电量(从菜单界面的电量文本区域)
- 开启双倍活动时,识别电量后查看活动次数,生成运行期临时计划(
ChargePlanApp.temp_plan),优先执行但不写入正式plan_list - 根据电量和计划配置选择下一个可执行的任务
电量预估机制:
- 实战模拟室:根据卡片数量计算(
卡片数量 × 20电量) - 实战模拟室默认数量:按 20 电量做菜单态预估
- 区域巡防:固定需要60电量
- 专业挑战室:固定需要40电量
- 恶名狩猎:固定需要60电量
- 特殊情况:未知类型预估为0,交给副本内流程继续判断
任务筛选流程:
- 检查所有计划是否完成,如果完成且开启循环模式则重置计划
- 获取下一个未完成的计划项
- 计算所需电量并与当前电量比较
- 如果电量不足:
- 配置了恢复电量:触发恢复电量流程
- 未配置恢复电量且允许跳过:跳过当前计划继续下一个
- 未配置恢复电量且不允许跳过:结束本轮计划
- 如果电量充足:设置为当前执行计划并继续传送
传送 → 识别副本分类 → [具体副本操作] → 挑战完成
传送阶段:
- 使用快捷手册传送到指定副本位置
- 根据计划配置的标签页、分类、副本类型进行精确传送
副本分类识别:
- 根据传送结果识别当前副本类型
- 分发到对应的副本处理节点
电量检查流程:
等待入口加载 → 选择类型/副本 → 选择卡片数量 → 下一步 → 恢复电量/出战
电量处理逻辑:
- 菜单态已按计划卡片数量预估电量,默认数量按20电量预估
- 进入副本后点击“下一步”,如果出现恢复电量页,则返回电量不足状态
- 未出现恢复电量页且识别到“出战”后继续战斗流程
电量不足处理:
- 检查恢复电量配置,如果允许则调用恢复电量操作
- 否则返回电量不足状态,由上层处理
电量检查流程:
等待入口加载 → 下一步 → 恢复电量/出战
家政券处理:
- 2.5版本已移除家政券功能,当前区域巡防流程跳过家政券节点
电量处理逻辑:
- 菜单态按60电量预估
- 进入副本后点击“下一步”,如果出现恢复电量页,则返回电量不足状态
电量检查流程:
等待入口加载 → 关闭燃竭模式 → 下一步 → 恢复电量/出战
特殊处理:
- 自动关闭深度追猎模式(燃竭模式)
- 菜单态按40电量预估
- 进入副本后点击“下一步”,如果出现恢复电量页,则返回电量不足状态
电量检查流程:
等待入口加载 → 选择副本 → 抉择深度追猎 → 选择难度 → 下一步 → 恢复电量/出战
深度追猎模式:
- 体力计划调用恶名狩猎时传入
use_charge_power=True,优先走深度追猎 - 如果仍有周期挑战奖励次数,深度追猎会被跳过,父流程会标记当前计划跳过后继续后续计划
电量处理逻辑:
- 菜单态按60电量预估
- 深度追猎下点击“下一步”,如果出现恢复电量页,则返回电量不足状态
- 非体力计划的普通恶名狩猎仍按奖励次数运行
选择预备编队 → 出战 → 加载自动战斗指令 → 等待战斗画面 → 自动战斗 → 战斗结束 → 判断下一次
通用战斗流程:
- 选择预备编队:根据计划配置选择指定编队
- 出战:点击出战按钮进入战斗
- 加载自动战斗指令:根据编队或计划配置加载对应的自动战斗脚本
- 等待战斗画面:等待战斗界面完全加载
- 自动战斗:执行自动战斗逻辑,监控战斗状态
- 战斗结束:战斗完成后更新运行次数
- 判断下一次:根据剩余次数决定是否继续战斗
电量不足触发条件:
- 各副本操作返回
STATUS_CHARGE_NOT_ENOUGH状态 - 菜单态恢复电量返回电量不足
- 传送失败且状态为
找不到 代理人方案培养 - 恶名狩猎仍有周期挑战奖励次数时跳过深度追猎
处理策略:
- 菜单态预估电量不足:记录
last_tried_plan,继续查找后续计划 - 副本返回跳过节点:标记当前计划为本次运行跳过,继续查找下一个计划
- 代理人方案培养、恶名狩猎仍有奖励次数:即使未开启跳过计划,也会跳过当前计划
- 非跳过模式:直接结束本轮计划执行
恢复电量触发:
- 在菜单态任务选择阶段检测到预估电量不足且配置了恢复电量
- 各副本内点击“下一步”后出现恢复电量页,且配置了恢复电量
恢复电量逻辑:
- 调用
RestoreCharge操作 - 菜单态恢复会预读可用恢复来源,成功后直接继续前往副本
- 副本内恢复按当前界面重新选择恢复来源
- 恢复失败或恢复后仍不足时,按电量不足处理
循环条件:
- 配置了循环模式(
loop=True) - 所有计划执行完成后自动重置并继续
每日清零:
- “每日重置”独立于循环模式,默认关闭
- 开启后按游戏刷新日每天首次运行前将所有计划的已运行次数清零
- 同一天重复运行不会再次清零,循环模式仍按一轮计划完成后的扣减逻辑继续
结束条件:
- 所有计划完成且未配置循环模式
- 电量不足且无法恢复
- 出现不可恢复的错误
结束处理:
返回大世界 → 保存通知截图 → 发送完成通知
graph TD
A["开始体力计划"] --> B["打开菜单"]
B --> C["识别电量"]
C --> C1{"是否开启双倍活动?"}
C1 -->|是| C2["查看双倍活动"]
C1 -->|否| D["查找并选择下一个可执行任务"]
C2 --> D
D --> E{"电量是否充足?"}
E -->|不足且可恢复| F["恢复电量"]
E -->|不足且不可恢复| G["电量不足处理"]
E -->|充足| H["传送"]
F -->|继续前往副本| H
F -->|电量不足| G
G --> I{"是否跳过计划?"}
I -->|是| B
I -->|否| J["返回大世界"]
H --> K["识别副本分类"]
K --> L["执行对应副本操作"]
L --> M{"副本执行结果"}
M -->|成功| N["挑战完成"]
M -->|电量不足| G
M -->|失败| N
N --> B
D -->|所有计划完成| O{"是否循环模式?"}
O -->|是| P["重置计划"] --> B
O -->|否| J
- 智能电量管理:预估电量需求,动态检查实际消耗
- 灵活的恢复机制:支持多种电量恢复策略
- 容错处理:支持计划跳过、重试机制
- 循环执行:支持计划完成后自动重置循环
- 每日清零:可按游戏刷新日重置已运行次数
- 多副本支持:统一的流程框架适配不同副本类型
- 状态持久化:记录执行进度,支持断点续传