Files
my-botty/DEPENDENCIES.md
alexpolo1andClaude Fable 5 63248a9437 Hammerdin: hold Concentration through trash clears; add deps doc + keybind tool
- hammerdin.py _cast_hammers: skip aura/hammer re-selection when the slot
  already holds the wanted skill (tracked via _active_skill, invalidated by
  pre_move/_weapon_switch/cast_buffs and all raw redemption/vigor hotkey
  sends). Visible effect: aura stays on right-click and hammers fly from
  plain left-click spam instead of constant F1/F3/F8 churn.
- 35 mid-clear attack casts switched from Redemption to Concentration
  (damage aura while fighting); Redemption still pulses between packs and
  after kills for corpse cleanup.
- DEPENDENCIES.md: full verified working-state snapshot (env paths, package
  versions, tesseract wiring, D2R settings, DPI specifics, safety nets).
- tools/capture_skill_hotkeys.py: presses each params.ini skill hotkey
  in-game and saves labeled left-slot icon crops - verifies binds match the
  character and builds skill-icon templates for future aura checks.
- CLAUDE.md: remove stale main.exe mention (no exe build exists; bat runs
  current source directly).

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-12 00:18:23 +02:00

45 lines
2.8 KiB
Markdown

# Botty working-state dependencies (verified 2026-06-11)
Everything required for the bot to run as well as it did during the verified
full Diablo runs on 2026-06-11. If a future setup misbehaves, diff against this.
## Runtime stack
| Layer | Requirement | Verified value |
|---|---|---|
| Python env | conda env `botty` | `C:\ProgramData\miniforge3\envs\botty` (python 3.10.14) — NOTE: `C:\Users\alex\miniforge3\envs\botty` is a broken leftover (no python.exe); `find_python.bat` skips it correctly |
| OCR binary | Tesseract 5.5.0 (winget) | `C:\Program Files\Tesseract-OCR\tesseract.exe` — wired in `src/d2r_image/ocr.py` (env var `PYTESSERACT_TESSERACT_CMD` → PATH → this default). Conda tesseract must stay UNINSTALLED (access violations) |
| OCR backend | pytesseract fallback | tesserocr wheel is DLL-broken (needs Tesseract 4.x libs) — pytesseract is the working path; startup logs `OCR backend: pytesseract (fallback)` |
| Launcher | `run_botty.bat` | sets conda-like PATH, UTF-8, TESSDATA. No exe build exists — bot always runs current source |
## Key python packages (installed, working)
```
opencv-python==4.5.5.64 numpy==1.26.4 pytesseract==0.3.13
mss==7.0.1 beautifultable==1.1.0 colorama==0.4.6
discord.py==2.7.1 aiohttp==3.14.1 certifi==2026.5.20
pillow==12.2.0 rapidfuzz==2.15.1 pywin32==312
psutil==7.2.2 cryptography==48.0.1
```
## D2R requirements (template matching breaks without these)
- Settings must match `assets/d2r_settings.json` — startup warns loudly if not.
Verified in-game 2026-06-11: 1280x720 windowed, resolution scale 100, DLSS OFF,
AA OFF, AO OFF, texture HIGH, character/environment/transparency/shadow LOW.
(DLSS ON was the root cause of the CS template failures earlier that day.)
- Window: bot enforces client area at (5, 98) size 1280x720 (`enforce_d2r_window`).
- Keybinds file: `C:\Users\alex\Saved Games\Diablo II Resurrected\Fistman*.keyo`
(auto-parsed at startup). Skill hotkeys in `config/params.ini` must match the
in-game skill assignments: blessed_hammer=f1, holy_shield=f2, redemption=f3,
vigor=f4, conviction=f5, concentration=f8, teleport=b, BO=7, BC=8.
Use `tools/capture_skill_hotkeys.py` to verify/capture them from the live game.
- Char: hammerdin "fistman", Hell, CTA swap on weapon slot 2.
## Host specifics
- Windows 11 build 26200, display 1920x1200 physical at 125% scaling (1536x960
logical). D2R renders 1:1 physical. Any DPI-unaware automation (PowerShell
SetCursorPos/mouse_event) lands 1.25x off — use the bot's input_layer from the
conda env with `SetProcessDPIAware()` instead.
- Mouse mode: relative (Win11) with SetCursorPos retry fallback (`win_input.py`).
- `max_consecutive_fails=5`, `max_game_length_s=900`, maintenance timeout ~280s,
per-game WP failure budget = 2 (town_manager) are the safety nets that keep a
bad game cheap.