- 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
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.)
* 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]>
* 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
* 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
* 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]>
* 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
* 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]>
* 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
* 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
* 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