Commit Graph
32 Commits
Author SHA1 Message Date
alex 75f64351ee add stealth system, key detection, click recorder, FOHdin, new routes, and tooling updates 2026-05-21 23:34:20 +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
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 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 ec5a7e4292 Fixed issue with a chicken not counting as a failed game. 2026-02-15 09:54:48 -05:00
Gleed 5127417bd3 Major feature: NTIP pickit syntax integration, OCR pickit, OCR item property filtering (#724)
By @Riddle1001 @Ezro @mgleed @D2RLegit Sosa
2022-06-16 09:46:14 -04:00
mgleed bcea0129ba Bugfix: NoneType messages if api or hook not set (#842) 2022-06-08 11:31:12 -04:00
roozhouandmgleed b457877623 Bugfix: Select online tab before creating game when d2r switch to offline tab automatically (#834)
* BugFix: Select online tab when server disconnected

Issue #789

* Simplify online/offline tab selection logic

* more robust recovery, reusable restart_or_exit() fn in main, move attempts logic, remove param, etc.

Co-authored-by: mgleed <[email protected]>
2022-06-07 22:12:53 -04:00
mgleed fcaffc5cf2 Bugfix: Launch options and game recovery 2022-06-05 10:28:03 -04:00
mgleed 03a6e8b05c Bugfix/refactor: Arcane run doesn't turn off health_monitor when in town 2022-03-14 16:01:07 -04:00
mgleed c1f2cad291 Bugfix: Game recovery after D2 restart (#620)
* init

* bump version
2022-03-09 19:42:20 -05:00
mgleed 9b22917660 Refactor: UI overhaul (#558)
Summary of changes:
-Rearranged many UI-related functions across the codebase (particularly in ui_manager.py) into individual components. See src/ui_components/. Functions related to components can be called like if waypoint.use_wp("Arcane Sanctuary"): or loading.wait_for_loading_screen(2.0)
-Removed Screen and TemplateFinder dependencies across the codebase
-Screen functions separated from class
-TemplateFinder made into a singleton
-Added generic ScreenObject UI functions to simply detect UI elements on screen; e.g., detect_screen_object(ScreenObjects.TownPortal), wait_for_screen_object(ScreenObjects.Loading, 2). Also included related functions like select_screen_object_match(template_match) to automatically select the match.
-Consolidated assets. Organized templates folder into components. Adjusted some asset ROI's and alpha channels.
-Changed some template searches to grayscale for speed
-Reworked save/exit routine, should now be more consistent and faster with normal exit, chicken exit, and death exit.
-Got rid of unused and consolidated duplicate game.ini parameters
-spelling fix _last_merc_healh
-NPC manager class removed and replaced with functions
-D2 window detection now runs on its own thread for semi-live window position offsets.
-Character selection reworked. OCR your selected character for fun (not that accurate, lol)
-Simplified game start and difficulty select
-Added a get experience function, but this is not called anywhere yet
-Reworked corpse pickup. pickup_corpse is no longer a necessary argument/parameter throughout the codebase (bot.py, game_controller.py, runs, etc.)
2022-02-20 18:49:04 -05:00
pokzcodes da6ccc6250 Kill d2r when botty cannot recover and shuts down (#511) 2022-02-05 13:52:41 -05:00
c358282e68 Launch botty from town or main menu; fix character recovery after restart/death (#494)
* Add ability to launch botty from either main menu or town

* Fix game recovery routine is stuck forever on character selection screen

* Move _char_template to class variable to be able to share among instances

* fix character recovery and character select, support offline/online. WIP

Co-authored-by: Vladimir Makayev <[email protected]>
Co-authored-by: mgleed <[email protected]>
2022-02-04 20:27:56 -05:00
egut125 9f8bed6efb New Param for fails, if max is reached, kill botty. Defaults off. 2022-02-03 14:45:45 -05:00
aeon0 09caab2120 Move messanger (#498) 2022-01-30 15:30:47 +01:00
aeon0 2905ee5d31 Remove configs (#497)
* remove config window always on top

* remove message highlights

* only use win32api for window offset
2022-01-30 13:26:10 +01:00
aeon0 e9d31f220f Config cleanup (#496) 2022-01-30 11:59:52 +01:00
aeon0 27f0e3d793 Revert "Add Linting (#487)" (#490)
This reverts commit 5e1a783394.
2022-01-28 18:24:47 +01:00
aeon0 5e1a783394 Add Linting (#487)
* add black linting

* fix linting

* doc update
2022-01-28 17:47:03 +01:00
aeon0 2eb9f84520 Make config static and global (#451) 2022-01-14 23:22:22 +01:00
Francesco 5f1ffd153b D2r restart optional (#417)
* My pick up and sorc parameters

* Moved the game logic away from the main within the new GameController class.
Refactored the main to use built-in keyboard add_hotkey and wait functions instead of self-written main loop.

* Revert "My pick up and sorc parameters"

This reverts commit 0920a406

* Changed number of loot columns

* Changes as per the comments:
Handle non-existing backup file.
Removed newline at the beginning of GameController class.
Changed line splitted into multiple lines back to a single line.

* Refactored graphic debugger with similar logic to botty to now have a controller.

* Added a small comment on the graphic debugger class and fixed a now-typo on the presented menu

* Bug Fix: if pressing F11 repeatedly the main loop may crash due to self.bot not yet initialized in the game_controller.

A safe solution would be to try and catch all but that would also be an overkill as it would most likely mask exceptions that we might want to make the program crash.

Checking that self.bot is initialized should work for the time being.

* No need to re-assign the resume key within the game controlelr anymore

* Urgent 1 liner bug fix for always_on_top: name 'config' is not defined

* Bug fix, keyboard dependency on game_recovery.py
For some reason PyCharm seems to flag this import as unused while it is actually used.

* game_controller.py changes

* config and params.ini changes

* config and params.ini changes

* Added else statement to prevent double logging in case of failed restart

* Removed botty name from logging and api messages as it is redundant information.

Fixed issue with gamerecovery constructor - now it takes template finder as a parameter
2022-01-12 17:53:22 +01:00
aeon0 c8b59c338b Startup speedup (#432)
* etheral

* devision by zero

* force move in a2

* Only one template finder instance
2022-01-11 21:21:19 +01:00
aeon0 85bc2dae29 Revert "Messaging update (#408)" (#425)
This reverts commit a4e435fec4.
2022-01-11 09:19:43 +01:00
skizotenigma a4e435fec4 Messaging update (#408)
* Messaging update

Corrects some messages formats and updates to allow titles.

* Messaging Update

Fixes the new messages and updates some of the others.

* mark 2

fixes some space.

* Update messenger.py

* Update generic_api.py
2022-01-10 22:46:13 +01:00
aeon0andFrancesco faed0154aa Char selector after restart (#403)
* Char selector after restart

* at least make it work...

* Scroll the characters if the template was not found.

TODO: Ideally we would like to understand which character is currently selected rather than assuming we'll always be using the top one.

* make it fancy

Co-authored-by: Francesco <[email protected]>
2022-01-07 19:38:21 +01:00
egut125 dff178bbc7 Breaking Messenger Module into something more flexible for specif… (#370)
* WIP Breaking Messenger Module into something more flexible for specific apis

* Cleanup and removal of data class

* Working embeds sort of

* Simple embeds set up

* Adding image of stashing items to discord embed

* Discord Embed updates with images

death_manager and game_controller both store path to last death/chicken screenshot
Pass last screenshot path along to game_stats and discord_embeds to place in discord message

* Color adjust

* Updating filenames formobile notifications

* Create loot_screenshots folder if it doesn't exist and api=discord

* Fixing missed messenger.send calls

* UI for discord updates

* Switching to i_api and explicit functions

* Update all messenger calls to new functions

* Param name change

* Simplify discord_basic api

* Switching from interface to generic api class

* One new messenger call from master

* spacing
2022-01-06 18:33:59 +01:00
Matt StiehmandMatt fdfdd81b84 Restart game (#374)
* removed 1920_1080 support

* Update ui_manager.py

Fixed bug...

* Update pather.py

fixed scale factor

* Update i_char.py

* Update game.ini

removed tp locations

* Bump version to v0.4.3

* Bump version to v0.4.3

* added working restart module

* tested and looks stable after refactor

* fixed a few things after looking at PR

* switched things back to search after testing and removed 1s delay in save_and_exit search

* fixed tab select bug where the exit game prompt was up, and also fixed max game length bug on WP use

* Update a5.py

Changing back, as not needed.

* adding requested changes

* keyboard went missing from game_recovery

* missed case where restart fails then loops infinitely

* fixed typo. all tested now

* also removed flag resets since we're recreating hm and dm

Co-authored-by: Matt <[email protected]>
2022-01-04 10:08:50 +01:00
Francesco 01e8078067 set D2R window to be always on top (#382)
* My pick up and sorc parameters

* Moved the game logic away from the main within the new GameController class.
Refactored the main to use built-in keyboard add_hotkey and wait functions instead of self-written main loop.

* Revert "My pick up and sorc parameters"

This reverts commit 0920a406

* Changed number of loot columns

* Changes as per the comments:
Handle non-existing backup file.
Removed newline at the beginning of GameController class.
Changed line splitted into multiple lines back to a single line.

* Refactored graphic debugger with similar logic to botty to now have a controller.

* Added a small comment on the graphic debugger class and fixed a now-typo on the presented menu

* Bug Fix: if pressing F11 repeatedly the main loop may crash due to self.bot not yet initialized in the game_controller.

A safe solution would be to try and catch all but that would also be an overkill as it would most likely mask exceptions that we might want to make the program crash.

Checking that self.bot is initialized should work for the time being.

* No need to re-assign the resume key within the game controlelr anymore

* Saving changes before switching repo

* Move the logic to set d2r always on top in the utils package.

* Remvoed unused dependency

* Always on top currently only works in Windows

* Removed one-time used variable

* Moved D2R window always on top to advanced_options.

Now the D2R window is set always on top only when the bot start (F11) and when it pause or F12 is pressed the D2R window (if it still exists) will be restored to its original value
2022-01-03 17:26:07 +01:00
aeon0 5f0a804a41 Warn user about settings not being as required (#363) 2022-01-01 14:58:54 +01:00
Francesco 343934970d Bug Fix: F11 pressed repeatedly might crash the main loop (#359)
* My pick up and sorc parameters

* Moved the game logic away from the main within the new GameController class.
Refactored the main to use built-in keyboard add_hotkey and wait functions instead of self-written main loop.

* Revert "My pick up and sorc parameters"

This reverts commit 0920a406

* Changed number of loot columns

* Changes as per the comments:
Handle non-existing backup file.
Removed newline at the beginning of GameController class.
Changed line splitted into multiple lines back to a single line.

* Refactored graphic debugger with similar logic to botty to now have a controller.

* Added a small comment on the graphic debugger class and fixed a now-typo on the presented menu

* Bug Fix: if pressing F11 repeatedly the main loop may crash due to self.bot not yet initialized in the game_controller.

A safe solution would be to try and catch all but that would also be an overkill as it would most likely mask exceptions that we might want to make the program crash.

Checking that self.bot is initialized should work for the time being.

* No need to re-assign the resume key within the game controlelr anymore
2021-12-31 17:48:45 +01:00
Francesco 268652b4ff Backup and Restore settings (#349)
* My pick up and sorc parameters

* Moved the game logic away from the main within the new GameController class.
Refactored the main to use built-in keyboard add_hotkey and wait functions instead of self-written main loop.

* Revert "My pick up and sorc parameters"

This reverts commit 0920a406

* Changed number of loot columns

* Changes as per the comments:
Handle non-existing backup file.
Removed newline at the beginning of GameController class.
Changed line splitted into multiple lines back to a single line.

* Refactored graphic debugger with similar logic to botty to now have a controller.

* Added a small comment on the graphic debugger class and fixed a now-typo on the presented menu
2021-12-31 09:06:27 +01:00