Commit Graph
959 Commits
Author SHA1 Message Date
alex 8d1a2f20c8 merge main into mine 2026-05-20 20:02:52 +02:00
Alex ce5816a130 Initial commit 2026-05-20 19:55:00 +02:00
alex e9d88f9763 feat: auto-launch D2R on botty startup
- main.py checks if D2R.exe is running, launches with auto-login if not
- Set char_name=Burr in config for OCR character selection
2026-05-20 09:20:37 +02:00
alex 776a09da5d feat: auto-login + OCR character selection
- Added bnet_name, bnet_pass, char_name to [general] config
- Config._build_launch_options() appends -bnetname/-bnetpass when set
- character_select.py: OCR fallback when template matching fails
2026-05-20 09:16:48 +02:00
alex b3052e50b4 feat: auto-login + OCR character selection
- Added bnet_name, bnet_pass, char_name config options
- Launch options auto-append -bnetname/-bnetpass when credentials set
- character_select.py: OCR fallback when template matching fails
- Scans character list row-by-row, matches by name, clicks and scrolls
2026-05-20 08:55:04 +02:00
alex 8575bc4446 fix: npc_auto_label global declaration order 2026-05-20 07:44:39 +02:00
alex 3f6363aec6 feat: enhanced stealth layer - click delay, endpoint wobble, behavior model
- custom_mouse.click(): added 50-800ms arrival-to-click delay (human hesitation)
- custom_mouse.stealth_move(): added endpoint wobble (2-5px micro-adjustment)
- stealth.py: new functions for keyboard timing, skill hesitation, wrong waypoint, skill mistakes
- params.ini: 8 new tunable stealth config options with documented defaults

All 46 files using mouse module automatically benefit — stealth is centralized.
2026-05-20 07:22:24 +02:00
alex bab6e24438 feat: parallel template search, async mouse moves, NPC auto-label
- template_finder.search(): parallel matching via ThreadPoolExecutor (4 workers)
- utils/custom_mouse.py: async_move() for non-blocking mouse movement
- utils/npc_auto_label.py: detect_visible_npcs() scans 16 NPCs in parallel
2026-05-19 22:47:30 +02:00
alex 9bbc753a16 feat: complete key auto-detection with binary .key parser
- Parse D2R binary .key format (10-byte entries, action=1=skill, action=0=non-skill)
- Detect skill slot bindings and validate against params.ini
- Scan Saved Games for any .key/.keyo file (handles battle tag names)
- Config loads cleanly, warns on skill/non-skill mismatches
2026-05-19 18:32:18 +02:00
alex df501d3ea9 docs: improvements reference + d2r-key-detection skill
- Added references/improvements.md tracking all implemented fixes
- Created d2r-key-detection skill for future sessions
2026-05-19 16:50:10 +02:00
alex 5ea1c17902 fix: target false positives, pickit timing, hardcore death loop
- target_detect: add aspect ratio filtering to reject health bars and immune text
- pickit: add 0.2-0.3s wait after pickup before moving on (fix #939)
- game_controller: detect hardcore mode and stop instead of infinite death loop
- config: add 'hardcore' flag (default 0)

Closes #959, #939, #942
2026-05-19 16:49:24 +02:00
alex 0af8a54116 feat: auto-detect D2R key bindings from .key/.keyo file
- Read character .key file from Saved Games / D2R install dir / APPDATA
- Auto-fill empty hotkeys in [char] section (inventory, belt, potions, etc.)
- Match skill slots to configured skills for validation
- Normalize key variants (left alt ~ alt, left shift ~ shift)
- params.ini values always take priority over detected bindings
- Warn on genuine mismatches between config and .key file
2026-05-19 16:46:24 +02:00
Alex 23e7e54f8d fix: resolve default.bnip merge conflicts from aeon0; fix raw string in config.py 2026-05-17 20:31:38 +02:00
Alex b52f7ebca9 fix: defer npc_manager template loading for headless Linux compatibility 2026-05-17 19:25:56 +02:00
Alex 329b7e77d9 fix: guard Windows-only imports for Linux compatibility (pywin32, mouse._winmouse, mss, rapidfuzz) 2026-05-17 17:56:29 +02:00
Alex 5ab9d1c68a feat: implement boss kill methods for fire_lock, hammerdin, fohdin + resolve params.ini merge conflicts
- Add kill_andariel(), kill_countess(), kill_mephisto(), kill_baal(), kill_baal_waves() to fire_lock (warlock), hammerdin, and fohdin (paladin)
- Use build-appropriate attack patterns (deathmark/chaos combos for fire_lock, hammers/FOH for paladins)
- Add configurable attack durations via atk_len_* in params.ini
- Resolve remaining merge conflicts from prebuff cherry-picks
- Add boss run config section: atk_len_andariel, atk_len_countess, atk_len_mephisto, atk_len_baal, atk_len_baal_waves
2026-05-17 15:53:08 +02:00
Alex 15a90bfd47 feat: add route scaffolding tool and contributor guide 2026-05-17 15:22:24 +02:00
Alex 17f32e65b2 feat: add 4 new boss runs (Andariel, Countess, Mephisto, Baal)
Full run implementations with approach/battle methods following the
existing botty pattern. Added 12 Location constants to pather.py,
12 placeholder path nodes to game.ini (coords recorded in-game later),
and 6 new kill_* methods to IChar interface. Updated params.ini
with new route documentation.

Path nodes are 0,0 placeholders — record real coords with
node_recorder.py in-game before enabling these routes.
2026-05-17 14:25:26 +02:00
Alex b397d07baf feat: implement 4 new boss runs (Andariel, Countess, Mephisto, Baal)
Full run implementations following existing botty patterns:
- andariel.py: Act 1 Catacombs L2→L3→L4, waypoint-based approach
- countess.py: Act 1 Forgotten Tower L1→L5 via Black Marsh WP
- mephisto.py: Act 3 Durance of Hate L2→L3 via A3 WP
- baal.py: Act 5 Throne of Destruction, wave clearing + boss

Added 12 Location constants to pather.py and 12 placeholder
path nodes to game.ini (record in-game with node_recorder.py).

Path node coordinates are 0,0 placeholders — must be recorded
in-game before runs can actually execute.
2026-05-17 14:24:46 +02:00
Alex eee99c069b feat(stealth): wire should_skip_run, maybe_afk_break, reshuffle_each_rotation into bot state machine
- on_end_run: calls maybe_afk_break() after returning to town
- run selection loop: checks should_skip_run() before each run
- on_init: reshuffles _do_runs_reset if reshuffle_each_rotation is enabled

Also scaffolded 4 new run stubs: baal, mephisto, andariel, countess
2026-05-17 14:07:01 +02:00
Alex 81ee6557f4 feat: add route scaffolder CLI, smoke tests, stealth docs 2026-05-17 13:26:31 +02:00
Alex f484a9bef1 feat(stealth): add anti-detection layer with wait jitter, click variance, AFK breaks, and route skip 2026-05-17 13:26:26 +02:00
RedJon18 6d19819de5 Prebuff updates and rare items for pickit logic
Updates the prebuffs for paladin to use holy shield before entering Pindleskin's portal. Also, adds additional pickit logic for picking up and storing all rare items when uncommenting the sections.
2026-05-17 13:21:42 +02:00
aeon0 71311cb584 fix not stashing gold if buying sth before 2026-05-17 13:21:14 +02:00
Riddle 5c4f62ac25 Add @cache to functions 2026-05-17 13:18:14 +02:00
Riddle 869de31315 fixed error code 2026-05-17 12:49:00 +02:00
Randi 6f6c663b43 Added eldritch routine to firelock. Also made minor adjustments to a3 error finding stash to reduce error rate. 2026-03-24 22:51:06 -04:00
Randi fdd0fc2230 Adjusted a3_stash_left pic as it could misclick cain on occasion. 2026-03-23 13:58:40 -04:00
Randi 5d5a9c2a63 Made improvements to resolve issues with finding stash in a3. Created left and right stash pictures to reduce issues of being covered. Also implemented move on first failure in an attempt to move merc. 2026-03-23 13:38:41 -04:00
Randi eb75fc9aee Made adjustment to determining if stash is full of gold. Also remade inv_no_gold picture as it would detect numbers starting with 91 as 0. 2026-03-23 12:11:27 -04:00
Randi 600904e6bc Reverted edge case for handling not finding stash. 2026-03-22 21:30:10 -04:00
Randi ce821695e8 Minor tweak to handle case when stash is covered by merc. 2026-03-22 21:17:24 -04:00
Randi 455fe8e64f Minor adjustments to warlock. 2026-03-22 20:44:23 -04:00
Randi f4bc3b7401 Added trav run to fire warlock and added ability to buff in town with consume. 2026-03-22 10:39:23 -04:00
Randi b528957c40 Minor tweak to cta functionity to disable buff_with_cta if cta_available is false. 2026-03-20 21:32:32 -04:00
Randi f8c9d81f52 Minor tweak to static. 2026-03-20 20:32:40 -04:00
Randi 1a5a261f7c Updated stash inventory roi based on warlock exp updates. 2026-03-19 19:53:07 -04:00
Randi 95e019e88d Updated the Run classes to properly reference the _do_run variables so changes to runs in bot.py will persist into Run classes 2026-03-19 19:09:39 -04:00
Randi 466197fd8b Fixed bug where bot would always check stash when gold was full even when stash_gold is disabled. 2026-03-18 00:20:21 -04:00
Randi 4a4bf0300a Added extra failsafe to ensure no keys get left held down when game controller kills bot thread. It was possible that a max length violation could occur while stashing and cauase ctrl and shift to get stuck down. 2026-03-17 20:35:59 -04:00
Randi 953b9aedb3 Corrected transmute to correctly keep track of transmute counter after x games. 2026-03-17 07:38:57 -04:00
Randi 2ce9636d3a Added additional delay after cta to swap weapons 2026-03-17 07:36:41 -04:00
Randi b03b2fd226 Refined cta and buffing so chars now use cast_buffs routine which doesn't need the cta_available logic. This routine also allows the casting delay to be kept separate from cta as the casting_delay is passed in. Failed buffs will now cause bot to exit game. 2026-03-16 20:42:15 -04:00
Randi d96eb2d34c Fixed bug when bot is killed due to max game length violation while transmuting. Transmuting should now complete before game exits. 2026-03-16 19:10:07 -04:00
Randi 5f2149ed1e Removed last node from trav run as it didn't seem necessary for TP and took extra time. 2026-03-16 18:42:24 -04:00
Randi a7509c90e7 Added functionality to transmute flawless gems from the stash gem tab. Works with the transmute every x games variable in params.ini 2026-03-15 23:24:56 -04:00
Randi 8b48b583b9 Fixed issue in which CTA was not properly detected if bot is started with incorrect weapon swap. 2026-03-15 20:13:03 -04:00
Randi 58f761c372 Added logic if doing trav runs we will skip additional runs if juvs are full. 2026-03-15 10:01:39 -04:00
Randi 36d364517b Reduced telek pickup range as it can fail if item is off screen but text is not. 2026-03-14 20:17:03 -04:00
Randi 869eeb5539 Added transmute routine for graphic debugger which requires manual uncommenting. May need to find a more automated way in future. 2026-03-14 08:42:53 -04:00