- 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.
2.8 KiB
2.8 KiB
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.pyexists and is wired into bot.pyLocationconstants defined inpather.py: A1_TOWER_LEVEL2_ENTER through A1_TOWER_LEVEL5_ENTER, A1_COUNTESS_SAFE_DISTconfig/game.inihas 5 path entries — all set to0,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
- Start botty, let it waypoint to Black Marsh
- Enter the tower manually (walk through the door)
- Run
static_run_recorder.py:conda activate botty cd src/utils python static_run_recorder.py - Right-click each target position in game order (L2 enter → L3 enter → L4 enter → L5 enter → Countess safe distance)
- 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:
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
- Add
run_countessback toorder=inparams.ini - Start botty and verify it navigates through all tower levels
- Adjust coordinates if it misses stairs or clicks in wrong spots
Hammerdin-Specific Notes
atk_len_countess=3.0is already set inparams.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