- Updated bot behavior to end the game when no TP charges are left, instead of attempting to walk back to town. - Refined item processing logic in `processing_helpers.py` to use identity checks for item comparisons and improved item removal methods. - Enhanced game stats logging to include failure reasons and send Discord notifications for failed games. - Improved health management logic to trigger chicken behavior based on health percentage after rapid rejuvination. - Added error handling for item pickup failures in `pickit.py` to blacklist items that cannot be picked up. - Introduced walking fallback nodes for Countess, Andariel, Mephisto, and Baal runs in `pather.py`. - Implemented path data validation in run scripts for Countess, Andariel, Mephisto, and Baal to ensure paths are correctly defined. - Enhanced item identification and stash processes in `diablo.py` with retry logic for failures. - Updated town management to handle identification failures gracefully and log appropriate warnings. - Improved character selection logic to provide clearer logging messages. - Modified game restart logic to launch the game via PowerShell for better session handling. - Added documentation for recording paths for the Countess run and created a PowerShell script for scheduled task management.
72 lines
2.8 KiB
Markdown
72 lines
2.8 KiB
Markdown
# Run Countess Route Plan
|
|
|
|
## Goal
|
|
Record path data and templates for the Countess run (Act 1 Forgotten Tower) so it executes reliably with Hammerdin.
|
|
|
|
## Current State
|
|
- `src/run/countess.py` exists and is wired into bot.py
|
|
- `Location` constants defined in `pather.py`: A1_TOWER_LEVEL2_ENTER through A1_TOWER_LEVEL5_ENTER, A1_COUNTESS_SAFE_DIST
|
|
- `config/game.ini` has 5 path entries — all set to `0,0` (placeholders)
|
|
- Run is disabled in `params.ini` (`order=run_arcane, run_pindle`)
|
|
|
|
## Paths Needed (5 entries in game.ini)
|
|
|
|
| Config Key | Description | How to Record |
|
|
|---|---|---|
|
|
| `a1_tower_level2_enter` | First click point inside tower after entering from Black Marsh | Walk into tower, record first position on L2 |
|
|
| `a1_tower_level3_enter` | Click point at top of stairs to L3 | Walk up stairs, record position at L3 entrance |
|
|
| `a1_tower_level4_enter` | Click point at top of stairs to L4 | Walk up stairs, record position at L4 entrance |
|
|
| `a1_tower_level5_enter` | Click point at top of stairs to L5 | Walk up stairs, record position at L5 entrance |
|
|
| `a1_countess_safe_dist` | Click point near Countess (safe hammer range) | Walk to Countess, step back to hammer range |
|
|
|
|
## Recording Steps
|
|
|
|
### 1. Record path coordinates
|
|
1. Start botty, let it waypoint to Black Marsh
|
|
2. Enter the tower manually (walk through the door)
|
|
3. Run `static_run_recorder.py`:
|
|
```
|
|
conda activate botty
|
|
cd src/utils
|
|
python static_run_recorder.py
|
|
```
|
|
4. Right-click each target position in game order (L2 enter → L3 enter → L4 enter → L5 enter → Countess safe distance)
|
|
5. Copy the printed coordinate list
|
|
|
|
### 2. Update game.ini
|
|
Replace the `0,0` values with recorded coordinates. Format: `x,y` per line, or comma-separated for multi-point paths.
|
|
|
|
Example:
|
|
```ini
|
|
a1_tower_level2_enter=400,300
|
|
a1_tower_level3_enter=410,280
|
|
a1_tower_level4_enter=420,260
|
|
a1_tower_level5_enter=430,240
|
|
a1_countess_safe_dist=450,200
|
|
```
|
|
|
|
### 3. Test the run
|
|
1. Add `run_countess` back to `order=` in `params.ini`
|
|
2. Start botty and verify it navigates through all tower levels
|
|
3. Adjust coordinates if it misses stairs or clicks in wrong spots
|
|
|
|
## Hammerdin-Specific Notes
|
|
- `atk_len_countess=3.0` is already set in `params.ini`
|
|
- Hammerdin uses `kill_countess()` method — ensure conviction aura is active before engaging
|
|
- Safe distance should account for hammer swing range (~3-4 game units)
|
|
|
|
## Path Recorder Alternative
|
|
If `static_run_recorder.py` is inconvenient, use `node_recorder.py`:
|
|
```
|
|
cd src/utils
|
|
python node_recorder.py
|
|
```
|
|
Follow on-screen prompts to record nodes, then copy the generated path coordinates.
|
|
|
|
## Acceptance Criteria
|
|
- Botty enters Black Marsh via waypoint
|
|
- Navigates L2 → L3 → L4 → L5 without getting stuck
|
|
- Reaches Countess and engages
|
|
- Completes kill and returns to town
|
|
- No false template matches on tower stairs
|