* C1F & B1S switched to static pathing
* Improved overall robustness
* improved A layout check consistency
* added A layout check consistency & CTA rebuff
* Home now a loop, B now first seal to pop.
* Trash clear at pentagram, B1S, C1F loop added.
* Changed DeSeis attack pattern so MERC can kill
* tweaked diablo spawn timer & vizier attack pattern
* fixed minor pickit error.
* fixed Layout B Check loop & improved C1F
* improved C1F pathing home
* improved B layout check by removing trash kill
* added C2G static path to infector & loop home
* tweaked pathing
* lots of pathing tweaks to increase consistency
* Clarified Logger.Info
* Fixed A1L Tele to Lava Bug
* Fixed A1Y Tele Lava bug
* Fixed B2U missing pentagram on loop back
* fixed logger
* Completely reworked layout checks
* Reworked C seal layout check
* fixed ending up too low at Diablo
* optimized loop home for C
* added all seals
* removed duplicate trash sequence at C
* Fixed B2U looping home, added essence
* Template Check Threshold raised for Layout Checks
* Reverted A layout check back to inital version
* Aggressive Layout Checks implemented.
* Replaced Pentagram Templates to improve [602]
* Fixed loops for new pent layout
* Reverted A layout checks back to initial version
* merged 6.1?
i hope it worked.
* Pressure Test: A2Y 98% layout check success
* Massive improvements on Layout Checks
* Integrated Skizot's A4 merchants
* Fixed an error on A1L.
* fixed a small error on final pickit
* Slight Cleanup
* tweaked A2Y nodes to avoid lava jumps
* Added B2U Seal Logging
* Add templ. to 611 & 610 to fix stuck pather
* WiZ/SwePow suggestions
* Some more tweaking
* Trying to improve B layout checks (not full run)
* Seal B logic pressure test (no full run)
* added timeouts to weak traversenodes (no full run)
* Pacifist Version - just checking layouts no bosses
* Pure Layoutcheck Pressure Test (double checks)
* Pacifist mode: Layout Check
* Update bot.py
* Added Templates to improve Layoutchecks
* Tweaked B2U Templates (Pacifist Version)
* add B2U nodes & calibration to impr. layout check
* added nodes to layout checks
* Added A1L Calibration Node for Layoutcheck
* Full running script
* Fixed Calibrations - Full Run
* fixed mousover keyerror
* yet another mousover
* fixed a pather issue on B1S, full run
* yet another mousover. full run.
* mousover... ful run
* yet another mousover. full run
* fixed C2G looping across pentagram
* Update game.ini
* WiZ testing
* added seal_node to sealdance
* added C1F layoutcheck nodes
* Added Wiz Speedrun
* tweaked wait in sealdance
* A1L-Static path to Pentagrram
* added A2Y hop 622
* A2Y static path home
* B1S static path home
* changed C1F fake template
* added new C1F seals & static home
* Speed or no speed
Using kill_cs_trash config
* fixed a 36b key error
* Random guess actually is random now
It wasnt random at all before so trying out if this is better
* Minor fixes and tweaks
* B2U - Static Path Home
* Redworked C1F - not stable yet
* Seal order B,C,A and DeSeis fix
There was copy/paste bug in DeSeis making it use wrong atk_len and then I also tuned the attacks a bit.
* fixed final B2U issue, should be stable now!
* added B2U 644_646 static path
* added mapping
* A seals fixed hopefully
More testing tomorrow!
* run diablo py
Yours is the diabloC, I didnt have time to compare them before sleep and wanted you to have both in case
* so this should be super stable now!
* Reverted A1L & A2Y Seal Order (but kept WiZ Idea)
* Reverted Seal Order
* Added Rudi TP :)
* all loop home now
* added TP template to loop
* typo
* stashs & shrine gfx, TP counter
* removed pent_6 (many false positives looping home)
* clean up for aeon
* fixed typos
* New A2Y & C2G home pathing
* Reworked C1F 704 to avoid stuck
* Ready to test!
* fixed pather clicking outside D2R
* Tweaked Seal A
* Loot to Sealdance() & A2Y tweaks
* removed FALSE from TP fail
* Updated Readme.md
* remove env
* clean up code
* account for used tp
* Removed Dia C1F 700s and replaced with 650s
* Moved Seals, Fights & Pickit to Hammerdin file
* #Trapsin now supported for Arcane and CS
#Trapsin now optionally uses defensive spells Cloak of Shadows and Mind Blast
#Trapsin now waits for Shadow Warrior before using CTA
* Update readme
* Working version
* added trapsin
* added nova sorc
* added nova sorc
* added light & nova sorc
* added clear trash, issue on 1 function
* Added Clearing Trash
* added 1 tele stop between WP & Pentagram
* fixed mistake on i_char
* CS Trash is now available for beta testing
* fixed a minor issue
* percised some debug logging
* Added CS Trash for Necro, Trapsin, Sorc (no blizz)
* added CS trash to Necro, Trapsin, Sorc_Light _Nova
* # moved functions from chars back to diablo.py
# removed CS for all chars execept hammerdin
# added seal_layout to sealboss functions
# added location to cs_kill_trash functions
* removed pickit from hammerdin.py
* trying to fix some attribute errors for pre_move
* forgot to add _char for pather.traverse_nodes
* added & removed some ._char, now it runs :)
* fixed a missing argument & cleaned up
* clear_trash=1 implemented & working
* added more kill_trash options
* added more debug info & generic kill trash spots
* fixed some debugger errors
* hammerdin done
* updated readme for cs_trash
* #merged A1L and A2Y pathing to char.py
# added A2Y static pathing to Pentagram
* fixed some errors ...
* A1L & A2Y work with new pathing logic
* Ok generic Diablo.py should now work
* and hammerdin.py aswell
* full run
* moved C1F static path to hammerdin.py
* fixed an error for pathing
* Improved A LC consistency to >99%
* Colors!
* added 2 A1L LC templates
* moved pickit to hammerdin.py
* 4min runs
* removed timeouts. 88% killrate right now.
* Added Logparser (thanks famE)
* separated log parser columns
* tweaked log parser
* changed positions of de seis kill screenshots
* added clearing trash between Pent & LC
* fixed missing _self
* Added option for cs_town_visits between seals
* Improved B1S loop home & tweaked some messages
* fixed an error not clearing seals & added colors
* removed 632 duplication & not needed LC templates
* added clear trash to A & B LC
* added pickup at 646
* added PENT_2 Template & removed fail shrine checks
* Added C2G Templates currently only 82% good runs
* Added Hybrid Calibration Nodes
* re-added templates for LC
* added 1px to WP->PENT traverse to avoid missing it
* tweaked home from 632 for not missing pent
* added more redemption before 632 calibration
* merged individual seals to one function
* fixed seal template error
* Added LC function. Fixed C2G & Loop to Pent-Stable
* added atk_len for diablo
* fixed typo so log parser stats are right
* added & increased threshold to LC calibration
* fixed new LC threshold oO - should push less often
* reverted B LC back to initial order
* log parser tweaks
* added shrine check to pather.py
* replaced 630640 with 647
* added B1S LC templates & changed shrine check
* swapped LC for B (current had 75%)
* reworked cs_trash up to LC
* log parse counts templates used
* Fixed B Layout checks
* log parser now w. templates. shrine check added
* just changes to debug names & adding a nicer table for botty start :P
* #best match & time_out=0.1,
#return false on nodes
#new shrine ROI
* Force Stashing before running Dia, logger wording
* shrine check less frequent. char.py cleaned up
* reworked trash layout B
* added 603 ROF1 templates
* added info to params.ini to reduce Q&A in discord
* # added stash every run param
# transferred trash choreography to char.py
# reverted some template changes.
* Ready to merge. Not perfect, but much better!
* small fix before merging
* Update nova_sorc.py
* Update basic.py
* added missing templates causing an error @602
* C2G: static path LC 661 & comment screenshots
* various changes--changed some info to debug, changed floats in config, adjusted runs_per_stash logic
* autoformatting made me commit
* nodes for trash between pent & seal. A works B is bad.
* fix bool -> bool(int(
* added calibration nodes for trash pent>seal
* Full run for testing efficacy of new trash nodes
* fixed a pathing issue
* reverted back to old method for trash.
* Ready for merge.
Co-authored-by: WiZ <[email protected]>
Co-authored-by: aeon0 <[email protected]>
Co-authored-by: mgleed <[email protected]>
* Revert tesserocr to conda-forge rather than pip
Tesserocr with Tesseract > 5 works with pip install but installer fails if user doesn't have VS compilers. Will revisit
* fixed by providing precompiled tesserocr
* Update ui_manager.py
Fix for gambling issue. Looks like self._config.char["gamble_items"] always returns true. Therefore im checking if the first entry is empty and go for a not.
not self._config.char["gamble_items"][0]==""
* simplify
Co-authored-by: mgleed <[email protected]>
* 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]>
This branch will detect if stash is full of gold. Afterwards the gambling functionality (currently only in act 4 implemented) will be called. The bot will gamble for specific items (determined in params.ini) until no gold is left. He will check for properties specified in pickit.ini and sell not matching items.
Supported items are: ring, amulet, circlet, coronet, talon
Leverages recent advanced pickit PR.
* logic for ident, first attr. advanced pickit
* logic advanced vs normal pickit
* logic_empty_ID_Tome
* small adj. to fit PR
* converted yaml to ini. changed some val.
* changed param to auto_ident
* pickit integration
* added set in routine
* reset bot init value
* bugfix
* removed old id logic
* added_nested_filter
* changed pickit
* bugfix replace
* added some more props
* Cleanup
* cleanup
* cleanup
* started unittests
* unittest
* small pickit adjustments
* Added missing fct. after merge
* bugfix due to static method in config.py
* added comments in pickit.ini
* Update pickit.ini
* Update params.ini
* Update ui_manager.py
* Update pickit.ini
Co-authored-by: aeon0
Co-authored-by: mgleed
* fix duplicate bot name in status update message
This commit changes the behavior of the _send_status_update method. If the generic_api is in use, it will avoid adding the bot name to the start of the message because the bot name is already added by the generic api.
* fix duplicate bot name in status update message
This commit moves the fix to the DiscordEmbeds class instead of performing it with an if statement in the GameStats class.
* fixed bug w/ walking hammerdin that would cause vigor to be left on while attacking in trav
* added option to fill shared stash first
* reverted a change not related to this PR
* integrated diablo scaffold
still pending pathing & kill logic
* minor changes to cross river of flame - but loop not working
* River of Flame sucessfully skipped - CS Entrance cleared
* Seal B works.
* Everthing is slow :(
* reparied slowness
* revert deleted main code
* Added CS Entrance recognition & changed Pentagram templates
* Merge branch 'diablo' of https://github.com/jobithu/botty into diablo
* Seal B works for both layouts - still clumsy, but it works.
* added Vizier (A). working: A1, B1, B2 - pending: A2,C1,C2,Diaaaa
* C identifcation implemented.
* All seals done, optimization needed for pathing & fighting sequences
* fixed minor error in game.ini
* should now run - badly. all seal spots & paths need optimization
* A1Y works stable
* A1Y stable, WP now has issues
* A2Y seal mouseover added - new bug, could not determine window offset
* Both A seals work great now!
* A2L Seals work consistently. A1Y quite good.
* easteregg
* A2L improvements
* Succesful kill on A2L, B1S, C1G
* Tweaked Diablo Kill Wait Time
* start cleanup
* added functions for each seal layout
* First stable dia kills with fixed map layout
* added Sealdance function
* Fixed Sealdance. A1L is finished. All others work in Progress.
* A2L + B1S Works
* A2L and B1S works
* Script runs well now on A1L, B1S, C1G. Sealdance needs more movement.
* Update diablo.py
* A1L, C2F, B2F working. Kills Dia Hell well.
* added issue log. testing all layouts now.
* Individual runs work, Sealdance needs tweaking
* All seals work, got frustrated, added sorc&she rox
* tweaked sorc vizier & infector fights
* rebuild templates & nodes for A2Y, B1U, C2G
* Forgot to add Seal A to the run oO
* renamed forgotten templates for A2Y
* fixed minor bugs on A1Y. succesfull dia kill
* Optimized A2Y
* Reworked A1Y templates & fight - very stable! Yay!
* A2Y, B2U, C2G work - but i think it should be B1U
* 4/6 seals work (B1S & C1F pending)
* some clean up
* remove unwated code
* 5/6 Seals done - added C1F
* sealdance and error handling
* try to merge stuff somehow
* add additional template coordinates to failed nodes
* fix health manager by adding diablo lcoation
* remove thresholds
* fix template names and error handling for c seals
* C1F added. 5/6 seals done.
* All seals work - let's get it tested!
* B1S fight coregraphy improvements
* New paths for layout check to increase consistency
* fixed A2Y edge lava port (625>626)
* All seals work, lets test with more ppl & finetune
* C1F & B1S switched to static pathing
* Improved overall robustness
* improved A layout check consistency
* added A layout check consistency & CTA rebuff
* Home now a loop, B now first seal to pop.
* Trash clear at pentagram, B1S, C1F loop added.
* Changed DeSeis attack pattern so MERC can kill
* tweaked diablo spawn timer & vizier attack pattern
* fixed minor pickit error.
* fixed Layout B Check loop & improved C1F
* improved C1F pathing home
* improved B layout check by removing trash kill
* added C2G static path to infector & loop home
* tweaked pathing
* lots of pathing tweaks to increase consistency
* Clarified Logger.Info
* Fixed A1L Tele to Lava Bug
* Fixed A1Y Tele Lava bug
* Fixed B2U missing pentagram on loop back
* fixed logger
* Completely reworked layout checks
* Reworked C seal layout check
* fixed ending up too low at Diablo
* optimized loop home for C
* added all seals
* removed duplicate trash sequence at C
* Fixed B2U looping home, added essence
* Template Check Threshold raised for Layout Checks
* Reverted A layout check back to inital version
* Aggressive Layout Checks implemented.
* Replaced Pentagram Templates to improve [602]
* Fixed loops for new pent layout
* Reverted A layout checks back to initial version
* merged 6.1?
i hope it worked.
* Pressure Test: A2Y 98% layout check success
* Massive improvements on Layout Checks
* Integrated Skizot's A4 merchants
* Fixed an error on A1L.
* fixed a small error on final pickit
* Slight Cleanup
* tweaked A2Y nodes to avoid lava jumps
* Added B2U Seal Logging
* Add templ. to 611 & 610 to fix stuck pather
* WiZ/SwePow suggestions
* Some more tweaking
* Trying to improve B layout checks (not full run)
* Seal B logic pressure test (no full run)
* added timeouts to weak traversenodes (no full run)
* Pacifist Version - just checking layouts no bosses
* Pure Layoutcheck Pressure Test (double checks)
* Pacifist mode: Layout Check
* Update bot.py
* Added Templates to improve Layoutchecks
* Tweaked B2U Templates (Pacifist Version)
* add B2U nodes & calibration to impr. layout check
* added nodes to layout checks
* Added A1L Calibration Node for Layoutcheck
* Full running script
* Fixed Calibrations - Full Run
* fixed mousover keyerror
* yet another mousover
* fixed a pather issue on B1S, full run
* yet another mousover. full run.
* mousover... ful run
* yet another mousover. full run
* fixed C2G looping across pentagram
* Update game.ini
* WiZ testing
* added seal_node to sealdance
* added C1F layoutcheck nodes
* Added Wiz Speedrun
* tweaked wait in sealdance
* A1L-Static path to Pentagrram
* added A2Y hop 622
* A2Y static path home
* B1S static path home
* changed C1F fake template
* added new C1F seals & static home
* Speed or no speed
Using kill_cs_trash config
* fixed a 36b key error
* Random guess actually is random now
It wasnt random at all before so trying out if this is better
* Minor fixes and tweaks
* B2U - Static Path Home
* Redworked C1F - not stable yet
* Seal order B,C,A and DeSeis fix
There was copy/paste bug in DeSeis making it use wrong atk_len and then I also tuned the attacks a bit.
* fixed final B2U issue, should be stable now!
* added B2U 644_646 static path
* added mapping
* A seals fixed hopefully
More testing tomorrow!
* run diablo py
Yours is the diabloC, I didnt have time to compare them before sleep and wanted you to have both in case
* so this should be super stable now!
* Reverted A1L & A2Y Seal Order (but kept WiZ Idea)
* Reverted Seal Order
* Added Rudi TP :)
* all loop home now
* added TP template to loop
* typo
* stashs & shrine gfx, TP counter
* removed pent_6 (many false positives looping home)
* clean up for aeon
* fixed typos
* New A2Y & C2G home pathing
* Reworked C1F 704 to avoid stuck
* Ready to test!
* fixed pather clicking outside D2R
* Tweaked Seal A
* Loot to Sealdance() & A2Y tweaks
* removed FALSE from TP fail
* Updated Readme.md
* remove env
* clean up code
* account for used tp
* Removed Dia C1F 700s and replaced with 650s
Co-authored-by: aeon0 <[email protected]>
Co-authored-by: WiZ <[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.
* Set diablo to not run by default
* 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.
* Set diablo to not run by default
* set d2r on top upon restart if configured to do so
* Revert "Set diablo to not run by default"
This reverts commit 6202814a8b6a0ae0ddbcd7c5dcee520ed897f3d0.
* integrated diablo scaffold
still pending pathing & kill logic
* minor changes to cross river of flame - but loop not working
* River of Flame sucessfully skipped - CS Entrance cleared
* Seal B works.
* Everthing is slow :(
* reparied slowness
* revert deleted main code
* Added CS Entrance recognition & changed Pentagram templates
* Merge branch 'diablo' of https://github.com/jobithu/botty into diablo
* Seal B works for both layouts - still clumsy, but it works.
* added Vizier (A). working: A1, B1, B2 - pending: A2,C1,C2,Diaaaa
* C identifcation implemented.
* All seals done, optimization needed for pathing & fighting sequences
* fixed minor error in game.ini
* should now run - badly. all seal spots & paths need optimization
* A1Y works stable
* A1Y stable, WP now has issues
* A2Y seal mouseover added - new bug, could not determine window offset
* Both A seals work great now!
* A2L Seals work consistently. A1Y quite good.
* easteregg
* A2L improvements
* Succesful kill on A2L, B1S, C1G
* Tweaked Diablo Kill Wait Time
* start cleanup
* added functions for each seal layout
* First stable dia kills with fixed map layout
* added Sealdance function
* Fixed Sealdance. A1L is finished. All others work in Progress.
* A2L + B1S Works
* A2L and B1S works
* Script runs well now on A1L, B1S, C1G. Sealdance needs more movement.
* Update diablo.py
* A1L, C2F, B2F working. Kills Dia Hell well.
* added issue log. testing all layouts now.
* Individual runs work, Sealdance needs tweaking
* All seals work, got frustrated, added sorc&she rox
* tweaked sorc vizier & infector fights
* rebuild templates & nodes for A2Y, B1U, C2G
* Forgot to add Seal A to the run oO
* renamed forgotten templates for A2Y
* fixed minor bugs on A1Y. succesfull dia kill
* Optimized A2Y
* Reworked A1Y templates & fight - very stable! Yay!
* A2Y, B2U, C2G work - but i think it should be B1U
* 4/6 seals work (B1S & C1F pending)
* some clean up
* remove unwated code
* 5/6 Seals done - added C1F
* sealdance and error handling
* try to merge stuff somehow
* add additional template coordinates to failed nodes
* fix health manager by adding diablo lcoation
* remove thresholds
* fix template names and error handling for c seals
* C1F added. 5/6 seals done.
* All seals work - let's get it tested!
* B1S fight coregraphy improvements
* New paths for layout check to increase consistency
* fixed A2Y edge lava port (625>626)
* All seals work, lets test with more ppl & finetune
* C1F & B1S switched to static pathing
* Improved overall robustness
* improved A layout check consistency
* added A layout check consistency & CTA rebuff
* Home now a loop, B now first seal to pop.
* Trash clear at pentagram, B1S, C1F loop added.
* Changed DeSeis attack pattern so MERC can kill
* tweaked diablo spawn timer & vizier attack pattern
* fixed minor pickit error.
* fixed Layout B Check loop & improved C1F
* improved C1F pathing home
* improved B layout check by removing trash kill
* added C2G static path to infector & loop home
* tweaked pathing
* lots of pathing tweaks to increase consistency
* Clarified Logger.Info
* Fixed A1L Tele to Lava Bug
* Fixed A1Y Tele Lava bug
* Fixed B2U missing pentagram on loop back
* fixed logger
* Completely reworked layout checks
* Reworked C seal layout check
* fixed ending up too low at Diablo
* optimized loop home for C
* added all seals
* removed duplicate trash sequence at C
* Fixed B2U looping home, added essence
* Template Check Threshold raised for Layout Checks
* Reverted A layout check back to inital version
* Aggressive Layout Checks implemented.
* Replaced Pentagram Templates to improve [602]
* Fixed loops for new pent layout
* Reverted A layout checks back to initial version
* merged 6.1?
i hope it worked.
* Pressure Test: A2Y 98% layout check success
* Massive improvements on Layout Checks
* Integrated Skizot's A4 merchants
* Fixed an error on A1L.
* fixed a small error on final pickit
* Slight Cleanup
* tweaked A2Y nodes to avoid lava jumps
* Added B2U Seal Logging
* Add templ. to 611 & 610 to fix stuck pather
* WiZ/SwePow suggestions
* Some more tweaking
* Trying to improve B layout checks (not full run)
* Seal B logic pressure test (no full run)
* added timeouts to weak traversenodes (no full run)
* Pacifist Version - just checking layouts no bosses
* Pure Layoutcheck Pressure Test (double checks)
* Pacifist mode: Layout Check
* Update bot.py
* Added Templates to improve Layoutchecks
* Tweaked B2U Templates (Pacifist Version)
* add B2U nodes & calibration to impr. layout check
* added nodes to layout checks
* Added A1L Calibration Node for Layoutcheck
* Full running script
* Fixed Calibrations - Full Run
* fixed mousover keyerror
* yet another mousover
* fixed a pather issue on B1S, full run
* yet another mousover. full run.
* mousover... ful run
* yet another mousover. full run
* fixed C2G looping across pentagram
* Update game.ini
* WiZ testing
* added seal_node to sealdance
* added C1F layoutcheck nodes
* Added Wiz Speedrun
* tweaked wait in sealdance
* A1L-Static path to Pentagrram
* added A2Y hop 622
* A2Y static path home
* B1S static path home
* changed C1F fake template
* added new C1F seals & static home
* Speed or no speed
Using kill_cs_trash config
* fixed a 36b key error
* Random guess actually is random now
It wasnt random at all before so trying out if this is better
* Minor fixes and tweaks
* B2U - Static Path Home
* Redworked C1F - not stable yet
* Seal order B,C,A and DeSeis fix
There was copy/paste bug in DeSeis making it use wrong atk_len and then I also tuned the attacks a bit.
* fixed final B2U issue, should be stable now!
* added B2U 644_646 static path
* added mapping
* A seals fixed hopefully
More testing tomorrow!
* run diablo py
Yours is the diabloC, I didnt have time to compare them before sleep and wanted you to have both in case
* so this should be super stable now!
* Reverted A1L & A2Y Seal Order (but kept WiZ Idea)
* Reverted Seal Order
* Added Rudi TP :)
* all loop home now
* added TP template to loop
* typo
* stashs & shrine gfx, TP counter
* removed pent_6 (many false positives looping home)
* clean up for aeon
* fixed typos
* New A2Y & C2G home pathing
* Reworked C1F 704 to avoid stuck
* Ready to test!
* fixed pather clicking outside D2R
* Tweaked Seal A
* Loot to Sealdance() & A2Y tweaks
* removed FALSE from TP fail
* Updated Readme.md
* remove env
* clean up code
* account for used tp
Co-authored-by: aeon0 <[email protected]>
Co-authored-by: WiZ <[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
* fix for pathing from jamella when she walks too far down.
* updated kashya and cain as well
they kept walking into the node!
so i had to adjust it.
* Update pather.py
* 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.
* Moved pywin32 dependency outside of pip (tested a clean install on two machines with this change and worked fine)
Also removed the win32api import that was causing the issue.
Both changes fix the issue that several people are expereincing on discord separately (either would fix it but both are better).
* 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
* Urgent 1 liner bug fix for always_on_top: name 'config' is not defined
* Act 4 - Full usage
Added Jamella as working NPC.
Added Halbu as working NPC.
Set Cain to Identify.
Added stash capabilities.
* Delete pickit.ini
* Delete a3.py
* Update pather.py
* Update npc_manager.py
* oopsy doodle
* Fixing more issues.
* Create pickit.ini
* Update a4.py
* Update a3.py
* Update pather.py
* Update pickit.ini
reverted pickit
* A1 - Completed NPCS
i hate my life.
All npcs that matter are working.
charsi repairs and tomes.
akara heals and pots.
cain identifys.
kashya resurrects.
warriv STANDS IN FRONT OF THE DAMNED STASH SO IT CAN'T BE CLICKED.
the stash .. uh stashes.
waypoints work (as long as it's the SOUTH ONE ONLY.)
#todo: fix the WP's to actively check.
* wp fix.
now it will check south and then go north.
* WP fix
* 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
* Create run.bat
run bat instead of typing commands in cmd
* Update run.bat
added exit option, fixed some typo and it will open new cmd for install/update evn then close, and run.bat will stay open
* Update run.bat
* Update run.bat
* Update src/char/sorceress/light_sorc.py
* Replaced not defined for Sorceress right_attack and left_attack by blizzard and iceblast or chain_lightning and lightning
Co-authored-by: aeon0 <[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
* 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
* CTA check to make sure you can BO/BC
* added a second check to make sure they even HAVE cta.
added a second check to see if BC shows after the change. if not it cancels it all out.
* now it turns off cta_Available if it's not found.,
* Update i_char.py
* Update i_char.py
* Add files via upload
* Update i_char.py
* code rework (thank to aeon)
now with 100% less hacks!
* corrected icon
bc not bo.. duh
* Update i_char.py
* moved button
Pixelbot for Diablo 2 Resurrected. This project is for informational and educational purposes only. Feel free to dig around, add stuff, make PRs, or ask questions should you get stuck!
Pixelbot for Diablo 2 Resurrected. This project is for informational and educational purposes only and is not meant for online usage. Feel free to dig around, add stuff, make PRs, or ask questions should you get stuck!
[**Download here**](https://github.com/aeon0/botty/releases) and got to have a [**Discord**](https://discord.gg/Jf3J8cuXWg) nowadays I guess :man_shrugging:
@@ -23,7 +23,7 @@ Open up D2R and wait till you are at the hero selection screen. Make sure the ch
### 4) Start Botty
You can either run from python. Follow [development.md](development.md) for that. Or you download the a prebuilt release [here](https://github.com/aeon0/botty/releases) (the .rar file!). Start `main.exe` in the botty folder. Focus your D2R window and press the start key (default f11). You can always force stop botty with f12.
You can either run from python. Follow [development.md](development.md) for that. Or you download the a prebuilt release [here](https://github.com/aeon0/botty/releases) (the .rar file!). Start `main.exe` in the botty folder. Focus your D2R window and press the start key (default f11). You can always force stop botty with f12. Note: Botty will use the /nopickup command in the first game to avoid pickup up trash while traversing. This command will only allow item pickup when "show items" is active.
## Graphic Debugger
@@ -41,7 +41,7 @@ All botty configuration files are located in the __config__ folder. To ease the
```ini
; custom.ini - overwrites 3 params in the param.ini
| name | Name used in terminal and discord messages |
| monitor | Select on which monitor D2R is running in case multiple are available |
| custom_message_hook | Add your own message hook here to get messages about drops and botty status updates, discord webhook is default |
| logger_lvl | Can be any of [info, debug] and determines how much output you see on the command line |
| max_game_length_s | Botty will attempt to stop whatever its doing and try to restart a new game. Note if this fails, botty will attempt to shut down D2R and Bnet |
| max_consecutive_fails | Botty will stop making games if the number of consecutive fails reaches this max value |
| randomize_runs | 0: the order will be as seen in the params.ini. 1: the order will be random |
| difficulty | Set to `normal``nightmare` or `hell` for game difficulty |
| message_api_type | Which api to use to send botty messages. Supports "generic_api" (basic discord), or "discord" (discord embeds with images).
| discord_status_count | Number of games between discord status messges being sent. Leave empty for no status reports.
| discord_status_condensed | Toggles condensed view of Discord status messages. 0 Full text, 1 Condensed text.
| info_screenshots | If 1, the bot takes a screenshot with timestamp on every stuck / chicken / timeout / inventory full event. This is 1 by Default, so remember to clean up the folder every once in a while |
| loot_screenshots | If 1, the bot takes a screenshot with timestamp everytime he presses show_items button and saves it to loot_screenshots folder. Remember to clear them once in a while... |
| saved_games_folder | Optional folder path of Diablo 2 : Ressurrected saved games that will be used to overwrite when running the "auto settings" |
| d2r_path | Optional path to find the d2r.exe, if not set will be default to "C:\Program Files (x86)\Diablo II Resurrected\D2R.exe" when attempting to restart |
| restart_d2r_when_stuck | Set to `1` and botty will attempt to restart d2r in the case that botty is unable to recover its state (e.g: game crash) |
| stash_gold | Bool value to stash gold each time when stashing items |
| gold_trav_only | Hacky config that will restrict gold pickup to trav only. misc_gold must be set to 1 for this to have any effect |
| use_merc | Set to 1 for using merc. Set to 0 for not using merc (will not revive merc when dead), default = 1 |
| atk_len_arc | Attack length for hdin/sorc fighting arcane |
| atk_len_trav | Attack length for hdin fighting trav (note this atk length will be applied in 4 different spots each) |
| atk_len_pindle | Attack length for hdin or number of attack sequences for sorc when fighting pindle |
| atk_len_eldritch | Attack length for hdin or number of attack sequences for sorc when fighting eldritch |
| atk_len_shenk | Attack length for hdin or number of attack sequences for sorc when fighting shenk |
| atk_len_nihlatak | Attack length for hdin or number of attack sequences for sorc when fighting nihlatak |
| atk_len_nihlathak | Attack length for hdin or number of attack sequences for sorc when fighting nihlathak |
| atk_len_cs_trashmobs | Attack length for hdin or number of attack sequences when fighting Trash Mobs in Chaos Sanctuary (Diablo) |
| atk_len_diablo_vizier | Attack length for hdin or number of attack sequences when fighting Sealboss A "Vizier of Chaos" in Chaos Sanctuary (Diablo) |
| atk_len_diablo_deseis | Attack length for hdin or number of attack sequences when fighting Sealboss B "Lord De Seis" in Chaos Sanctuary (Diablo) |
| atk_len_diablo_infector | Attack length for hdin or number of attack sequences when fighting Sealboss C "Infector of Souls" in Chaos Sanctuary (Diablo) |
| atk_len_diablo_infector | Attack length for hdin or number of attack sequences when fighting Diablo in Chaos Sanctuary |
| kill_cs_trash | If 1, most Trash mob packs from Chaos Sancturay Entrance to Pentagram are cleared. If 0, the run starts at Pentagram and just kills Sealbosses & Diablo (default) |
| cs_town_visits | If 1, it will go to town, buy pots & stash items between clearing the seals, set 0 to deactivate (default) |
| take_health_potion | Health percentage when healing potion will be used. e.g. 0.6 = 60% helath |
| take_mana_potion | Mana percentage when mana potion will be used |
| take_rejuv_potion_health | Health percentag when rejuv potion will be used |
@@ -111,6 +124,17 @@ run_shenk=0
| belt_hp_columns | Number of belt columns for healing potions |
| belt_mp_columns | Number of belt columns for mana potions |
| pre_buff_every_run | 0: Will only prebuff on first run, 1: Will prebuff after each run/boss |
| runs_per_stash | 0: Will only stash after intentional item pickup, 1+: Will force stash after # of runs set here (recommend at least 4 in case of accidental pickups) |
| runs_per_repair | 0: Will only repair when needed, 1+: Will force repair after # of runs set here |
| id_items | Will identify items at cain before stashing them. Cain must be rescued for this to work.|
| open_chests | Open up chests in some places. E.g. on dead ends of arcane. Note: currently bad runtime. |
| fill_shared_stash_first | Fill stash tabs starting from right to left, filling personal stash last |
| gamble_items | List of items to gamble when stash fills with gold. Leave blank to disable. Supported items currently include circlet, ring, coronet, talon, amulet
| transmute_every_x_game | How often to run transmute routine (currently transmutes flawless gems into perfect gems). Transmute routine depends on stashing routine it will only start after items stashing is done. E.g. so it could take more than X games to perform transmutes if there were no items to stash at the time. Default: 20 |
| stash_destination | Stash tabs by priority to place the results of the transmute. Default: 3,2,1,0. (It means the result will be first placed in stash 3 untils it's full, then to stash 2, etc. 0 - personal tab)
### Builds
| [sorceress] | Descriptions |
@@ -130,16 +154,21 @@ run_shenk=0
| ice_blast | Optional Hotkey for ice_blast (must be bound to left skill) |
| blizzard | Required Hotkey for Blizzard (must be bound to right skill) |
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.