Files
my-botty/docs/run_countess_plan.md
alex 77f2092572 Refactor bot behavior on TP failure, enhance item processing logic, and improve game stats logging
- 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.
2026-06-05 14:58:50 +02:00

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.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:

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