Files
my-botty/DEPENDENCIES.md
alexpolo1 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 <noreply@anthropic.com>
2026-06-12 00:18:23 +02:00

2.8 KiB

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.