# 更新记录（History）

## 2026-03-17

### 剥皮等待时间可配置（接入 GUI）

- **新增 GUI 参数**：在 `wow_multikey_gui.py` 的「参数配置」页新增 **剥皮等待时间**（秒）可调项，保存后用于控制脱战后剥皮等待时长。
- **Bot 接入参数**：
  - `auto_bot_move.py`：`AutoBotMove` 新增 `skinning_wait_sec` 参数，`execute_disengage_loot()` 使用该值替代固定等待。
  - `auto_bot.py`：`AutoBot` 新增 `skinning_wait_sec` 参数，`execute_disengage_loot()` 使用该值替代固定等待。
- **配置文件升级与兼容**：
  - `wow_multikey_qt.json` 结构升级为 `{ "keys": {...}, "bot": {...} }`，其中 `bot.skinning_wait_sec` 存储剥皮等待秒数。
  - 兼容旧版仅包含按键配置的结构：加载时会自动包裹为 `keys`，不会丢失旧配置。

### 使用方式

1. 打开 GUI → **参数配置** → 设置 **剥皮等待时间** → 点击 **保存配置**
2. 启动 **巡逻打怪** 或 **自动打怪**，剥皮等待时间按保存值生效。

## 2026-03-23

### 飞行模式接入 GUI

- **GUI 更新**：在 `wow_multikey_gui.py` 的「状态/巡逻/打怪」模式按钮中新增 **飞行模式**（放在「任务跟随」后面）。
- **新建飞行类**：新增 `flight_mode.py`，实现飞行模式状态推进逻辑。
- **目的地选择**：可在飞行模式配置中选择坐标 JSON，取 JSON 中 **最后一个有效坐标点** 作为目的地。
- **运动逻辑**：飞行过程中每帧调用 `coordinate_patrol.py` 的 `simple_flight_navigate()` 完成上马、起飞、飞向坐标与降落。

### 飞行模式降落按键默认改为 p

- **GUI 更新**：在 `wow_multikey_gui.py` 的「飞行模式配置」页，「降落按键」默认值与占位提示从 `x` 改为 `p`。
- **行为更新**：`flight_mode.py` 中 `FlightModeBot` 的默认 `land_key` 从 `x` 改为 `p`，保证未手动填写/未在配置中存在时仍使用 `p`。

## 2026-03-25

### 脱战低血就地吃面包

- **新增逻辑**：`auto_bot_move.py` 在脱战状态下，当 `hp < 30%` 时按一次面包键开始恢复。
- **等待规则**：进入恢复后，最多等待 30 秒；若血量先到 `100%` 则提前结束。
- **行为约束**：恢复期间不巡逻、不主动按 `Tab` 寻找目标。
- **战斗中断**：若恢复过程中被动进入战斗（`combat/target` 变为真），立即中断恢复并进入正常战斗逻辑。

### 吃面包参数接入 GUI 配置

- **参数配置页新增**：`wow_multikey_gui.py` 的「参数配置」页新增：
  - `吃面包按键`（`food_key`，默认 `f1`）
  - `吃面包血量阈值`（`eat_hp_threshold`，默认 `30`）
  - `吃面包最长等待`（`eat_max_wait_sec`，默认 `30.0` 秒）
- **配置持久化**：上述参数保存到 `wow_multikey_qt.json` 的 `bot` 节点。
- **运行时透传**：`start_game_loop` → `GameLoopWorker` → `AutoBotMove` 全链路透传并生效。
- **兼容性**：`AutoBotMove` 保留默认值，旧配置文件可直接运行。

### `navigate_to_point` 对齐 `navigate` 优化

- **到点处理**：`coordinate_patrol.py` 的 `navigate_to_point` 到达判定后不再调用 `stop_all()`，改为仅松开左右修正键并**松开 `w` 停止前进**，避免到点后仍持续向前移动。（用于 death/logistics 等“到点就交互/停止”场景）
- **转向触发逻辑**：`navigate_to_point` 转向决策按 `navigate` 的三档策略调整（死区直行、阈值外脉冲转向、死区与阈值之间不修正），降低航点附近左右抖动。

### `navigate_path` 对齐 `navigate` 优化

- **轮询间隔**：`coordinate_patrol.py` 的 `navigate_path` 阻塞等待轮询由固定 `time.sleep(0.05)` 调整为局部 `poll_sleep_sec = 0.02`，让阻塞模式控制频率更接近 `navigate`，减少航点/转向后的抖动。

### 键盘按键从 `pyautogui` 迁移到 `pydirectinput`

- 将项目中所有键盘按键调用（`pyautogui.keyDown/keyUp/press`）替换为对应的 `pydirectinput.keyDown/keyUp/press`
- 涉及文件：`coordinate_patrol.py`、`stuck_handler.py`、`death_manager.py`、`player_movement.py`、`combat_engine.py`

### 攻击前校验有效目标

- `auto_bot_move.py`：在 `execute_logic` 的战斗/攻击分支中增加对 `state['target']` 的有效性判定，要求 `target_hp` 存在且 `> 0`，避免对无效/已死目标误触发攻击按键
- 同步调整：战斗调用 `execute_combat_logic()` 以及脱战阶段的 `Tab` 寻怪条件，均改为基于有效目标 `effective_target`

### 飞行模式后新增回城修理

- `wow_multikey_gui.py`：在“飞行模式”之后新增独立模式 `回城修理`，用于在回城时执行修理商交互
- 配置项：`回城修理` 模式增加 `修理商 JSON` 下拉选择，并将选择的 JSON 传给 `LogisticsManager`
- 行为约束：按下 GUI 的 `停止` 会将 `running` 置为 `False`，从而让回城路径行走在下一轮状态轮询中中断退出

