Compare commits

...
209 Commits
Author SHA1 Message Date
aeon0 04dac4070f Bump version to v0.6.3 (#450) 2022-01-14 12:18:39 +01:00
aeon0 bcf5bd4f11 Update nova_sorc.py 2022-01-14 12:16:57 +01:00
aeon0 cf8c393cf1 Sort pather nodes (#449) 2022-01-14 11:37:24 +01:00
Legitandaeon0 070fd9d98e Blizz sorc Nihlathak script (#447)
* Blizz sorc Nihlathak script

* Cold immune assets

* Updated pathing changes that would cause sticking.

* Reduce Timer on pickit if stuck

* Removed white space and lowercased nihl_immune

* increased ingore item timer

3 seconds

* Update src/char/sorceress/blizz_sorc.py

* updated bottom left offset and updated nilh_immune

Co-authored-by: aeon0 <[email protected]>
2022-01-13 22:40:33 +01:00
63476a402d Dia&cs (#444)
* 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]>
2022-01-13 15:07:55 +01:00
aeon0 28ca8d2ee7 Nova sorc trav update (#443) 2022-01-13 12:40:53 +01:00
Francesco bc24fea4e9 No diablo by default (#441)
* 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
2022-01-13 12:37:30 +01:00
Francesco 4ea5e4d265 D2r on top on restart (#442)
* 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.
2022-01-13 12:37:07 +01:00
1fe56c95c6 Merge Diablo (#435)
* 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]>
2022-01-12 23:05:23 +01:00
aeon0 b5c0e8d0dc Check stashing after failed runs or chicken/death (#438)
* Check stashing after failed runs or chicken/death

* optmize

* revert some

* revert
2022-01-12 20:46:14 +01:00
aeon0 39dd868a34 Fix testing (#437)
* test

* with coverage

* add back coverage

* actually fixing test

* ups typo
2022-01-12 19:52:26 +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 01765e0616 Pathing A1 after Town Portal (#433) 2022-01-12 10:27:56 +01:00
aeon0 99c4348bc3 Thread-safe TempalteFinder (#434) 2022-01-12 10:27:09 +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 7f7acf1e2a Bug fix round (#431)
* etheral

* devision by zero

* force move in a2
2022-01-11 19:29:40 +01:00
aeon0 6ddca4c7db Fix hork for windowed (#426) 2022-01-11 10:13:59 +01:00
aeon0 85bc2dae29 Revert "Messaging update (#408)" (#425)
This reverts commit a4e435fec4.
2022-01-11 09:19:43 +01:00
aeon0 c3365e3d02 Update config.py 2022-01-10 23:45:37 +01:00
aeon0 8104b87083 Configure war cry cast frequency (#424) 2022-01-10 23:08:49 +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
aeon0 51715433a9 Update generic_api.py 2022-01-10 09:12:26 +01:00
egut125 a8ba63d968 Add bot name to generic messages (#422) 2022-01-10 09:09:26 +01:00
egut125 39f65ab1fb Add check to create info_screenshots folder and try-catch adding image to discord embed (#416) 2022-01-09 16:34:04 +01:00
aeon0 8dfe8a2163 Catch all config errors (#414) 2022-01-08 19:25:24 +01:00
Legitandaeon0 f450dc7591 Light Sorc Trav/shenk Update (#404)
* Light Sorc Trav/shenk Update

Requires Frozen orb added in params.

* frozen or for lightning sorc

* removed ;

* added frozen orb

* added move outside of trav for pickit start

* Last minute small trav changes

* Added fail safe for loot check

* update light sorc trav

* remove one chain lighting

* revert back to original start

Co-authored-by: aeon0 <[email protected]>
2022-01-08 18:53:54 +01:00
aeon0 c22230756b Fix template search memory allocation issue (#413) 2022-01-08 13:03:51 +01:00
aeon0 48b2c42eb2 Update version.py 2022-01-08 12:39:32 +01:00
aeon0 c3f519aa7b Bump version to v0.6.2 (#412) 2022-01-08 12:29:32 +01:00
aeon0 854509b489 Trav additional templates (#411) 2022-01-08 12:17:04 +01:00
aeon0 640bf93de4 Fix bug in standalone health manager (#410) 2022-01-08 11:43:44 +01:00
Legitandaeon0 19f45d0270 Add some items and filters (rare matriarchal jav, +3 tornado pels, +3 warcry helmets) (#386)
* Fix for blizz_sorc master

* removed delay

* Update src/char/sorceress/blizz_sorc.py

* Additiona pickit items

* Missing items on pickit

* updated pickit

fixed rare jav missing added couple socketed items.

* Garbage item not needed

* Changed eth_ to grey_

* Dont know how to delete eth assets I added.

* revert blizz

* clean unused item assets

* bring back missing file, fix typos

Co-authored-by: aeon0 <[email protected]>
2022-01-08 10:20:45 +01:00
aeon0 dcccee68f2 Check for item again after stashing to figure if it is still there (#409) 2022-01-08 10:04:07 +01:00
aeon0 ded772b377 Move forward during attacking shenk (#407) 2022-01-07 20:37:53 +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 f695954cbb Add message_api_type to readme (#406) 2022-01-07 19:04:06 +01:00
alceasan d9d1dda9cf Additional item properties assets (#402)
* Additional item properties

+3 to Jav skills
+ % Faster Cast Rate
+% Chance of getting magic items

* Add files via upload

+3 to Jav skills
+ % Faster Cast Rate
+% Chance of getting magic items
2022-01-06 20:06:45 +01:00
bjoerm e61933c49f If super potions are not available (e.g. nightmare), buy greater potions. (#401) 2022-01-06 18:35:17 +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
nlapinskiandnlapinski b01ff94b8a Necro class (#337)
* necro rebase

* merge

* necro readme

* removed import

* a

* necro char

* necro parms

* config fix

* example planner

* clear pindle pack

* pindle pack config cast

Co-authored-by: nlapinski <[email protected]>
2022-01-05 23:43:14 +01:00
skizotenigma 739e5d3014 Update pather.py (#398) 2022-01-05 22:15:24 +01:00
Francesco c92d32b6de Improved debugger (#361) 2022-01-05 22:15:10 +01:00
skizotenigma 2924836a32 "Basic" classes (#352)
* Start of "Basic" classes

will left attack unless right attack is available.

* Update basic_ranged.py

* Update basic.py
2022-01-05 22:14:14 +01:00
skizotenigma a65df17323 Adding Lysander in A2 (#399)
Cain & Lysander put to work
2022-01-05 22:08:31 +01:00
aeon0 9339a3b432 Test utils misc load_template() (#396) 2022-01-05 11:42:34 +01:00
mgleedandaeon0 2d1847fce4 utilize per-NPC ROI's and pose positions (#395)
* utilize per-NPC ROI's and pose positions

* mini code improvement

Co-authored-by: aeon0 <[email protected]>
2022-01-05 11:21:41 +01:00
skizotenigma a60849887c Jamella pathing fix. (#393)
* 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
2022-01-05 10:50:25 +01:00
Francesco d35fda18c0 pywin32 dependency fix (#394)
* 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).
2022-01-05 10:49:44 +01:00
aeon0 e099848ed4 Npc serach optimization (#391)
* NPC search optimization

* fix pywin32 version
2022-01-04 12:24:43 +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
aeon0 aa5af79e85 some atk sequence updates (#388)
* some atk sequence updates

* increase wait time to pick up corpse
2022-01-03 21:29:16 +01:00
aeon0 e3093ee50a Clean unused templates (#387) 2022-01-03 20:10:24 +01:00
Legit 4e4dfc695e Fixed sorc 301 pathing. (#384)
* Updated blizz sorc 301 pathing issue

* Fixed 301 pather.

* fixed node 301 offset
2022-01-03 20:02:34 +01:00
Francesco e7d40c286e 1 liner bug fix for game_recovery: name 'config' is not defined (#385)
* 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
2022-01-03 19:59:56 +01:00
Fiseandaeon0 992bfa91e8 Feature Request: Allow Classic players to show hammerdin scepters from Drogan (#379)
Co-authored-by: aeon0 <[email protected]>
2022-01-03 18:40:24 +01:00
skizotenigma 3218d84e02 Act 1 town full usage (#381)
* 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
2022-01-03 18:23:35 +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
bjoerm b12904132c Pre-Buff before each arm - if do_pre_buff is enabled. (#378) 2022-01-03 05:28:22 +01:00
skizotenigma 2bdedf40eb Act 4 - Full usage (#369)
* 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
2022-01-02 22:04:43 +01:00
John Wu df05d9ff02 update run.bat (#377)
* 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
2022-01-02 22:02:50 +01:00
egut125 55313f46bb Merge pull request #356 from aeon0/log-item-on-keep
only log item on keep of item
2022-01-01 15:40:35 -05:00
egut125 e66661c3c8 maye last removal? Probably not 2022-01-01 14:32:19 -05:00
aeon0 32011d815b Allow bo and bc for weapon switch (#373) 2022-01-01 20:24:36 +01:00
aeon0 36d5f2a532 Catch pickit config errors and reduce to print (#372) 2022-01-01 20:24:16 +01:00
egut125 7266468d85 Updating Beautiful Table Styling (#371) 2022-01-01 20:23:40 +01:00
egut125 96bc1ef7cb Removing Game_stats from Pickit 2022-01-01 10:47:57 -05:00
aeon0 2e0be629d8 Take screen as param in Chest Class (#368) 2022-01-01 16:35:59 +01:00
Héctor Giménezandaeon0 0da682043e Fix for crash on A2 Summoner for Sorceress (#365)
* 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]>
2022-01-01 16:19:55 +01:00
aeon0 2a6f1bd6a4 Dont use telekinesis on pindle red portal (#367) 2022-01-01 16:09:31 +01:00
aeon0 a0b2917cc5 fix attacks on summoner for sorc (#366) 2022-01-01 15:50:32 +01:00
aeon0 777c6da302 Optimize nova sorc for trav (#364) 2022-01-01 15:26:15 +01:00
aeon0 5f0a804a41 Warn user about settings not being as required (#363) 2022-01-01 14:58:54 +01:00
skizotenigma a2c308b6f8 Update a3.py (#362)
Cain can now identify in act 3
2022-01-01 14:54:49 +01:00
aeon0 d8942f92b4 A2 Pathing + Arcane run + Static for Sorc + Static Tele robustification + Chest class (#348) 2022-01-01 14:15:13 +01:00
John Wu 0fe0b55661 Create run.bat (#360)
run bat instead of typing commands in cmd
2022-01-01 14:14:57 +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
egut125 d4de72b285 Left in a removed param... 2021-12-31 00:02:05 -05:00
egut125 430b6f5394 Forgot the test name change 2021-12-30 23:52:09 -05:00
egut125 5dbb5c86d4 only log item on keep of item
uiManager now knows game_stats
keep item now logs items pickit
2021-12-30 23:37:41 -05:00
skizotenigma 515e308bab fix for IDing (#353)
* fix for IDing

* Update pather.py
2021-12-30 23:33:19 +01:00
Legitandaeon0 ba1f8de798 Fix for blizz_sorc master (#351)
* Fix for blizz_sorc master

* removed delay

* Update src/char/sorceress/blizz_sorc.py

Co-authored-by: aeon0 <[email protected]>
2021-12-30 20:04:50 +01:00
aeon0 88c9e28d45 Nova Sorc (#350)
* Nova Sorc

* formating
2021-12-30 17:02:03 +01:00
skizotenigma badcd77ea6 Identify Items at Chain (A5) (#339) 2021-12-30 14:12:43 +01:00
skizotenigma b3d756eeba CTA check to make sure you can BO/BC (#347)
* 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
2021-12-29 20:02:10 +01:00
aeon0 579ab25c7d Update README.md 2021-12-29 16:21:59 +01:00
Stathis Papandreou 65f7641884 Update README.md (#334) 2021-12-29 16:20:23 +01:00
aeon0 4ab5908336 Barb improvements (#344)
* barb improvments

* dont do weapon switch
2021-12-29 10:47:29 +01:00
aeon0 8fc3155868 Update Blizz Sorc (@Legit) (#343) 2021-12-28 18:20:01 +01:00
aeon0 69ba480c08 Add ItemFinder unittests (#342)
* Sort items by relevance

* add item finder test
2021-12-28 15:56:06 +01:00
aeon0 7eef36c2df Add Tests and Coverage report (#341) 2021-12-28 14:40:28 +01:00
aeon0 3b6e92fcb1 Update version.py 2021-12-28 11:49:08 +01:00
skizotenigma f1dbce3a69 Repair Each Run (#338)
* Update bot.py

* Update config.py

* Update params.ini

* Update params.ini

removing comments

* Update bot.py

removing comments

* Update config.py

removing comments

* Update README.md
2021-12-28 00:04:41 +01:00
aeon0 22b468e771 New release v0.6.1 (#332)
* Bump version to v0.6.1

* adjust version
2021-12-25 08:51:40 +01:00
aeon0 aaae0ac41c Dont click on merc icon (#331) 2021-12-25 08:08:41 +01:00
mgleed b1e4f82c25 fix gold issue causing pickit_type error (#329) 2021-12-24 13:15:44 -05:00
aeon0 2f37b2b1da dev version 2021-12-24 15:46:17 +01:00
aeon0 da401dc9bc New release v0.6.0 (#328)
* Bump version to v0.6.0

* correct version
2021-12-24 15:34:36 +01:00
aeon0 77d04a0c21 Retry town portal creation on fail (#327) 2021-12-24 15:23:33 +01:00
aeon0 303082ff99 Random move if staris not found (#326) 2021-12-24 12:32:26 +01:00
aeon0 bb523b34fe Trapsin updates (#325) 2021-12-24 12:24:10 +01:00
aeon0 db7c011ded Blizz Sorc adjustments (#324) 2021-12-24 11:34:03 +01:00
aeon0 43244e85b9 Light sorc overhaul (#323)
* Light sorc overhaul

* also use lightning

* readme update
2021-12-24 10:01:15 +01:00
Legitandaeon0 96e42049eb Blizz sorc updates (#321)
* Update blizz_sorc.py

* blizz sorc tuning

* Update blizz_sorc.py

indent fix

* fix indent errors

* shenk assets

* updated pather for shenk

Co-authored-by: aeon0 <[email protected]>
2021-12-23 23:55:34 +01:00
aeon0 d4836a1e4f Buy potions from vendor (#320) 2021-12-23 23:01:04 +01:00
aeon0 68bb17428a Update README.md 2021-12-23 22:10:27 +01:00
Legit ddd92ad303 Cold-sorc-trav-eld-shenk (#300) 2021-12-23 22:03:06 +01:00
aeon0 f60f6539ff If in doubt, just use path a (#318) 2021-12-23 21:53:09 +01:00
Luiz Felipe Aranha 2cc9ee36c7 include mangsong to pickit (#317)
* include mangsong to pickit

* Add files via upload
2021-12-23 21:14:51 +01:00
aeon0 269fd2246f Save stats to new file (#316) 2021-12-23 14:08:49 +01:00
aeon0 5f44213692 Share belt manager instance accross health manager and bot (#315) 2021-12-22 21:53:09 +01:00
aeon0 d6a8de3c80 Configurable ordering of runs (#314) 2021-12-22 21:48:05 +01:00
mgleed b5805a19aa Add require/exclude properties to pickit.ini when stashing items. Also more item templates. (#295) 2021-12-21 20:46:27 +01:00
aeon0 44d9cb40f2 Nihlatak test (#312)
* nihlatak eye at a robustness?

* revert stuff
2021-12-21 19:23:45 +01:00
Luiz Felipe Aranha 616e6b25b9 Update ui_manager.py (#311)
tome bug workaround
2021-12-21 08:48:12 +01:00
egut125 5993e876e8 Config discord condensed (#310)
* Added new discord_status_condensed that can be set =1 to get condensed status report

* Readme update
2021-12-20 20:28:00 +01:00
stephan-01010011 752bd813ea Nihlatak run changed to use the correct path if the template 'NI2_A_SAFE_DIST_2' was detected. (#304)
- Template assets renamed to use an uniform suffix. _save_dist, _noattack
- EyeCheckData class enhanced to contain a destination static path definition that is used instead of the template name
2021-12-19 11:55:24 +01:00
egut125 feafdca33d Correctly Total Failed Runs, Only Set location to shenk when battling, not on run start (#303) 2021-12-19 08:26:40 +01:00
aeon0 a267c9fbf2 Update README.md 2021-12-18 22:06:48 +01:00
aeon0 d766f4222c Dont spam screenshots, forgot if condition 2021-12-18 20:51:42 +01:00
aeon0 e1fa484cb8 Eldritch pathing robustness (#302)
* Robustify eldritch pathing

* failed game screenshot

* remove log
2021-12-18 13:03:35 +01:00
egut125andaeon0 bfcd2babaa Adding location_stats dict to hold stats for each run (#297)
* Adding location_stats dict to hold stats for each run

Logs Items,Deaths,Chickens,Merc Deaths, and Fails for each run
Discord message prints stats by run in table
stats.log lists run table and items by run

* clean up

Co-authored-by: aeon0 <[email protected]>
2021-12-17 19:57:12 +01:00
yhkinsar db63ce66b6 adding more uniq items (#299) 2021-12-17 19:52:15 +01:00
aeon0 29a4eaf9b2 Fix static field param (#296) 2021-12-15 23:53:43 +01:00
aeon0 b33135f704 Bump version to v0.5.1 (#294) 2021-12-15 19:03:52 +01:00
aeon0 67e03fc938 Adjust template for nil on A (#293)
* Adjust template for nil on A

* change order
2021-12-15 18:05:53 +01:00
aeon0 3c39cfa5d9 Fix trav gold pick up only after latest changes + clean ups (#292) 2021-12-15 16:24:55 +01:00
tw1st40 be1f1ce08c Barbarian support (currently War Cry/singer only) with Horking (#288)
* Added Barbarian support (currently War Cry/singer only) with Horking (find item) - thanks Outburst.

* Changes as requested by aeon for pull request to be merged.
2021-12-15 15:49:09 +01:00
yhkinsar 7b7815a021 Support Greater Potion (#290) 2021-12-15 15:47:40 +01:00
EthanJian 5b70c24c7b Add-Mercenary-deaths-counter (#287)
1. Add a merc deaths counter in game_stats.py.

2. Trigger: put it in bot.py while Check if merc needs to be revived.
2021-12-15 08:42:24 +01:00
egut125 636745f47b Add location from the Run procedure (#283)
* Add location from the Run procedure and all Discord messages can leverage

* Removing old area calls

* remove logger

* Shenk Eld improvements

* Cleaning

* Cleaning
2021-12-14 23:04:33 +01:00
aeon0 4d083bee83 Use static for sorc at trav (#285)
* Sorc use static at trav

* Sorc use static at trav
2021-12-13 23:03:41 +01:00
aeon0 fe8c6d5de0 Trav for Sorc (#284) 2021-12-13 20:24:47 +01:00
aeon0 857052c75d Tele dancing sorc nil (#282)
* Implement simple "tele-dancing" for sorc nil

* increase trav atk len
2021-12-13 19:13:53 +01:00
aeon0 bf7ce99c5f Implement Nihlatak for Sorc (#281) 2021-12-13 18:14:03 +01:00
aeon0 b6260327b7 Add area for item pickup 2021-12-13 17:20:47 +01:00
aeon0 8a85f38819 Optional Redemption 2021-12-13 17:17:58 +01:00
aeon0 c2bd99af18 Fix gold stashing bug (#280) 2021-12-13 17:00:52 +01:00
aeon0 5e43da1f02 Bump version to v0.5.0 (#278) 2021-12-12 21:22:45 +01:00
aeon0 f5fb8561c6 Classic min max confusion 2021-12-12 20:41:13 +01:00
aeon0 eb6dd85063 Fix stashing (#277)
* Bump version to v0.5.0

* stash optimization

* add wait times

* revert version

* Fix stashing bug when gold is full

* change location

* force move
2021-12-12 20:30:37 +01:00
aeon0 fd2d57fb0c Fix shopper build (#276) 2021-12-12 18:49:20 +01:00
aeon0 fa1297e15e Config to force prebuff every run (#274) 2021-12-12 18:09:44 +01:00
aeon0 e184db7045 Rename region of interest (#275) 2021-12-12 18:08:38 +01:00
aeon0 d46624e932 Support for trapsin build (#273) 2021-12-12 18:06:23 +01:00
aeon0 6d88ccb379 Fix gold stashing turn off (#272) 2021-12-12 17:21:56 +01:00
aeon0 2d9307cb94 Static path trav and some renaming (#271)
* Static path trav and some renaming

* no random

* fix b node

* fix game recover issue

* adapt dclone stuff

* add back rand
2021-12-12 16:35:15 +01:00
cutebeast 2aff1800ef dclone ip hunting (#270)
* dclone ip hunting

This is add on to pause the bot and send msg to discord if we are able to obtain the correct hot ip for dclone.

* Update for dclone ip check

using messenger instead of discord
update param for section on dclone
move the block to check for ip to after town spawn

* update for dclone for ip hunting

allow setting to disable to ip search
2021-12-12 16:15:20 +01:00
jobithuandaeon0 17b7fcc2a2 Nihlatak (#244)
* nihlatak for testing

* comitting staged changes

* fixed some issues on template syntax

* merged nihlatak routine to all other files in the bot

merged nihlatak routine to all other files in the bot (next to pindle & shenk)

* make it run

* improved consistency for traverse LVL1_B & finding start at LVL2

improved consistency for traverse LVL1_B & finding start at LVL2

* further optimized pathing for LVL1 C & LVL2A

* nil update, pathing on lvl 2 fine tuning still needed

* optimized pathing lvl2

might needs some tweaks on 2_D, but otherwise fine.

* fine tune pathes lvl 2

* adapt to template matching nil arm C

* arm b

* fail save for branch a

* fail save for arm c

* arm d

* small clean up

Co-authored-by: aeon0 <[email protected]>
2021-12-12 13:00:31 +01:00
aeon0 1e1b4a2da0 Code improve for eth only filter (#269)
* Adapt eth checking

* update pickit
2021-12-12 09:57:09 +01:00
mgleed 68f2f0f3ce Allow item = 3 in pickit to make ethereal required to stash (#268)
* initial

* clarify
2021-12-12 08:46:38 +01:00
mgleed 05fe77a5d0 emilio is boring (#267) 2021-12-12 08:27:01 +01:00
nekolr c2a017c517 Use message template to support other hooks (#265) 2021-12-12 08:22:36 +01:00
mgleed 4c52045f08 Update .gitignore (#266)
update for config folder
2021-12-11 21:33:54 -05:00
aeon0 f1d228c9d7 Detect hit recovery on static teleport (#263) 2021-12-11 16:35:40 +01:00
aeon0 0f156be4d6 Params for shop (#262) 2021-12-11 15:41:54 +01:00
aeon0 86db356ca4 Split params and seperate .exe for shop and health manager (#261)
* Split Params and add shop to exe

* rename folder
2021-12-11 15:02:20 +01:00
aeon0 2c53524e79 Set misc_gold=0 in case stash is full of gold (#260)
* Set misc_gold=0 in case stash is full of gold

* fix config

* fix imports
2021-12-11 12:38:46 +01:00
aeon0 ea74a3b43f Only use stash tab and wp tab if needed (#259)
* Clean up imports & move files

* Only use stash tab and wp tab if needed

* break circular imports
2021-12-11 11:50:35 +01:00
aeon0 308c74ac4f Clean up imports & move files (#256) 2021-12-11 07:41:40 +01:00
aeon0 ede3dcd91b Make sure best match is used to determine town location 2021-12-10 15:27:46 +01:00
aeon0 8a773f4e5c Fix tuple assignment issue (#255) 2021-12-10 12:30:27 +01:00
aeon0 496340be8d Esc out of cain focus (#254) 2021-12-10 12:17:48 +01:00
aeon0 5c877c428e Smooth out shenk pathing start (#253) 2021-12-10 12:07:51 +01:00
aeon0 876df0dd5e Trav only gold pickup config 2021-12-10 11:36:21 +01:00
aeon0 d69a9942ac Add offset node func (#252) 2021-12-10 10:59:36 +01:00
aeon0 cec307cf9c Fix config error (#251) 2021-12-10 10:01:46 +01:00
aeon0 825e787dbe Stash gold default 1 2021-12-10 09:54:29 +01:00
Matt StiehmandMatt 702a2ebfca Separate gold and item stashing (#250)
* 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

* implimented and tested seperation of gold and item stash counters

* removing extra newline

* not sure how this keeps creeping back...

Co-authored-by: Matt <[email protected]>
2021-12-10 09:53:58 +01:00
aeon0 0156b80ee6 Adjust item highlight range 2021-12-10 09:20:36 +01:00
aeon0 2043c45d48 Improved clustering & cropping of Items (#247) 2021-12-10 09:17:08 +01:00
mgleed 503be01463 Fix difficulty roi (#249)
* fix ROI for loading and difficulty buttons
2021-12-09 22:10:12 -05:00
aeon0 84a5b6257f Fix trav error handling (#248) 2021-12-09 22:46:04 +01:00
aeon0 81d513b0c9 Move files (#246) 2021-12-09 16:44:59 +01:00
aeon0 e64891dbbf Fix stashing issue (#245) 2021-12-09 15:39:40 +01:00
mgleed 3bd3364b4b Fix black game.ini (#238)
* fix black range

* fix black range
2021-12-09 15:19:33 +01:00
aeon0 afefdfd6b4 Add pathing a4 start to tyrael (#243) 2021-12-09 11:34:38 +01:00
aeon0 7c5e94979b Dont spam debug messages (#242) 2021-12-09 10:38:47 +01:00
aeon0 93d2a4bc8b When your bot doesnt pick up the best item in the game (#241) 2021-12-09 10:35:33 +01:00
aeon0 9559cf0e23 Move cursor on pickit (#240)
* Add area to items found

* Move cursor on pickit to avoid item highlight
2021-12-09 10:32:36 +01:00
aeon0 aacb344f32 Add area to items found log (#239) 2021-12-09 09:35:40 +01:00
aeon0 69870e73c5 Fix tele rebuy after failed tele (#237) 2021-12-08 21:41:40 +01:00
aeon0 ea8fc96f83 Walking Trav (#236)
* some tweaking
2021-12-08 18:26:41 +01:00
aeon0 54d27cace8 Improve trav pathing (#235)
* Log failed games

* Improve Trav Template Pathing
2021-12-08 13:22:36 +01:00
aeon0 7e365fb1cf Log failed games (#234) 2021-12-08 11:02:04 +01:00
aeon0 ca9e459de6 Check if repairing is needed (#233) 2021-12-08 09:28:19 +01:00
aeon0 2efcd66d99 Fix/robustify a4 start (#232) 2021-12-08 08:59:24 +01:00
bobcho 6e38fd5dd7 fix game start in act 4 (adj start tempates) (#231) 2021-12-08 06:16:27 +01:00
aeon0 37a4c8e0b2 Fix select template timeout bug (#230)
* Fix select template timeout bug

* remove print
2021-12-07 22:10:14 +01:00
aeon0 872fcccb00 Fix health manager pause (#227) 2021-12-07 12:54:17 +01:00
aeon0 9644e7a36e Speed up template pathing (#226)
* Speed up template pathing

* change comment
2021-12-07 12:14:50 +01:00
aeon0 19af63f965 Fix item pickup behind obstacles (#225)
* Fix item pickup behind obstacles

* remove debug stuff
2021-12-07 09:11:18 +01:00
aeon0 ee29e0918b Go to A5 Larzuk for repairing from other acts + TP bug fixed (#224)
* Go to A5 Larzuk for repairing from other acts

* Fix tp bug
2021-12-07 08:21:10 +01:00
aeon0 571f2101e8 Rename run.py to main.py (#223) 2021-12-07 08:01:10 +01:00
aeon0 18c5344af7 Refactor runs (#222)
* Refactor code for runs

* add some forced moves for robustification

* move back to save spot for trav
2021-12-07 07:29:45 +01:00
aeon0 f7b1c834c9 Integrate Trav Run (#221) 2021-12-06 20:40:55 +01:00
aeon0 bbda12709f Connect all towns (#220) 2021-12-06 18:15:58 +01:00
aeon0 0b6b1bfa2a Add Npc: Ormus (#218) 2021-12-06 07:17:24 +01:00
aeon0 01284ae62e Add Npc: Tyrael (#217) 2021-12-06 07:07:15 +01:00
aeon0 af5e4ffebe Use merc config (#216)
* Use merc config

* docs
2021-12-06 06:58:14 +01:00
aeon0 e6491d8642 docs 2021-12-06 06:57:03 +01:00
aeon0 589defb38e A4 Town Pathing (#215) 2021-12-06 06:46:39 +01:00
mgleed b0d3552121 Create template masks in __init__() (#212)
* preload template masks

* fix varnames
2021-12-06 06:46:30 +01:00
mgleed 6554ad167b Disable quick cast in default settings until officially supported (#209)
* disable quickcast in settings until this is officially supported

* disable quickcast in settings until this is officially supported

* disable quickcast in settings until this is officially supported

* disable quickcast in settings until this is officially supported

* disable quickcast in settings until this is officially supported
2021-12-04 22:36:30 -05:00
mgleed 5822151d14 Adj template finder (#208)
* swap test templates

* swap test templates
2021-12-04 21:47:13 -05:00
Matt Stiehm 8b438b25ff Run no item pickup command on startup (#205) 2021-12-04 23:25:44 +01:00
Dongwook Kim 3459d4a35e feat: adding magic amulet to pickable item list (#207) 2021-12-04 22:56:36 +01:00
aeon0 84d1bf1559 Revert Merc template (#206) 2021-12-04 21:57:48 +01:00
aeon0 0d6c02486a Bump version to v0.4.4 (#204) 2021-12-04 20:15:46 +01:00
1235 changed files with 9674 additions and 2661 deletions
+16
View File
@@ -0,0 +1,16 @@
# .coveragerc to control coverage.py
[run]
branch = True
[report]
# Regexes for lines to exclude from consideration
exclude_lines =
# Have to re-enable the standard pragma
pragma: no cover
# Don't complain if tests don't hit defensive assertion code:
raise AssertionError
raise NotImplementedError
# Don't complain if non-runnable code isn't run:
if 0:
if __name__ == "__main__":
+12 -2
View File
@@ -39,9 +39,19 @@ jobs:
run: |
C:\Miniconda\condabin\conda.bat init powershell
set PYTHONPATH=./src
- name: Pytest
- name: Pytest & Coverage
shell: powershell
run: |
C:\Miniconda\condabin\conda.bat activate botty
python -c "import sys; print(sys.version)"
pytest -v -s
coverage run --source=./src -m pytest -v -s
- name: Coverage Report Generation
shell: powershell
run: |
C:\Miniconda\condabin\conda.bat activate botty
coverage xml
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v2
with:
verbose: true
files: ./coverage.xml
+10 -4
View File
@@ -8,15 +8,21 @@ playground.py
*.spec
dist/
build/
run.build/
run.dist/
run.onefile-build/
main.build/
main.dist/
main.onefile-build/
generated/
botty_v*/
custom.ini
config/custom.ini
*info_*.png
.vscode
.vs/
info_screenshots/
loot_screenshots/
.venv
stats/
.venv
*.bak
.coverage
htmlcov/
coverage.xml
+142 -85
View File
@@ -1,48 +1,33 @@
# <img src="assets/docs/header_green.png" width="370">
Simple Pixelbot for Diablo 2 Resurrected single player written in python and opencv. Botty does not work for online games and is not intended for this usage!
[**Download here**](https://github.com/aeon0/botty/releases). Got to have a [**Discord**](https://discord.gg/Jf3J8cuXWg) nowadays I guess :man_shrugging:
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!
And please. I urge you to actually read that README! It will make your life a lot easier.
[**Download here**](https://github.com/aeon0/botty/releases) and got to have a [**Discord**](https://discord.gg/Jf3J8cuXWg) nowadays I guess :man_shrugging:
[![Watch the video](assets/docs/video_thumbnail.png)](https://streamable.com/67h9ay)
## Getting started
Botty only supports English language! Botty is currently working in 720p and will either switch to windowed mode or to fullscreen depending on your current monitor res when you run the "Auto Settings".</br>
It is highly recommended to let botty run with /nopickup active. This will reduce the amount of accidently picked up trash by a lot. Espacially when playing builds without teleport.
## Getting started & Prequists
- D2r needs to be in English Language,
- Botty currently works with 720p D2r window (will be adjusted automatically on auto settings)
### 1) Graphics and Gameplay Settings
All settings will automatically be set when you execute `run.exe` and press the hotkey for "Adjust D2R settings" (default f9). Note that D2R should not run during this process, or if it does you will have to restart afterwards. It is not a 100% thing, in rare cases you might still have to fiddle around with your brightness. I suggest using the "Graphic Debugger" to verify your settings.
**Note**: There have been issues reported with image sharpening being truned on via the graphic card settings itself outside of D2R. Try turning it off when running botty. Also HDR should be truned off.
All settings will automatically be set when you execute `main.exe` and press the hotkey for "Adjust D2R settings" (default f9). It is not a 100% thing, in rare cases you might still have to fiddle around with your brightness. I suggest using the "Graphic Debugger" to verify your settings.
**Note**: Make sure that no other external programs adapt your graphics settings (HDR, Geforce Experience, etc.)
### 2) Supported builds
#### Sorceress
You can put any skills on left and right attack and see if it works out. E.g. Glacial Spike on left attack and Blizzard or right attack.
Adjust the hotkeys in the **custom.ini** or **param.ini** for the `[char]` and `[sorceress]` section accordingly. Check out the param.ini section in the Readme for more details on each param.
#### Hammerdin
Your standard Hammerdin. Same story as with sorc, set up your skills in the .ini file to what you have in D2R or the other way around. When running more than just pindle or shenk you need to start with a full tome of tps in your inventory. If you do not have an engima, leave the teleport hotkey empty in the .ini file and the hammerdin will run with vigor instead.
#### Other builds
You can "highjack" the sorc or hdin config to also run other builds. There will be a more flexibel char system comming up in the upcoming releases.
Check the documentation for **param.ini** further down. Different Sorc builds, Hammardin, Barb, Trapsin are already implemented to different extents. It is quite straightforward to implement new classes. Give it a go if you like!
### 3) Start Location
Open up D2R and wait till you are at the hero selection screen. Make sure the char you running with is selected and will be in A5 in the respective difficulty you set in the **param.ini** once the bot starts the game.
Open up D2R and wait till you are at the hero selection screen. Make sure the char you running with is selected and will be in any of Act 3, 4 or 5 in the respective difficulty you set in the **param.ini** once the bot starts the game.
### 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). Start `run.exe` in the botty folder. Focus your D2R window 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
To check if you graphic settings are good and if the bot would pick up items there is a **Graphic Debugger Mode** built in. Start botty and press F10 (Default key). This will open up a (mostly black) window. Start a game in D2R and go to A5. You should see some templates with blue circles detected and scores printed out to the console. E.g. for 720p you should see scores higher 0.8 for the templates. To check item finding, throw some items of different types on the ground. The debug window should show the item names with black background. If you throw an item on the ground that should be picked up, it will have a red circle. The console will print out the scores for each item that would be picked up. Scores should be well above 0.9 for these items.</br>
To check if you graphic settings are good and if the bot would pick up items there is a **Graphic Debugger Mode**. Start botty and press F10 (Default key). This will open up a (mostly black) window. Start a game in D2R and go to A5. You should see some templates with blue circles detected and scores printed out to the console. To check item finding, throw some items of different types on the ground. The debug window should show the item names with black background. If you throw an item on the ground that should be picked up, it will have a red circle. The console will print out the scores for each item that would be picked up. Scores should be well above 0.9 for these items.</br>
<img src="assets/docs/graphic_debugger.png" width="900">
## Development
@@ -51,7 +36,7 @@ Check out the [development.md](development.md) docu for infos on how to build fr
## param.ini
To ease the switch to new botty versions, you can also overwrite any of the param.ini fields in a **custom.ini** file. When a new version of botty is released you just copy the file to the new version without having to port all your **param.ini** changes to the new version. Example:
All botty configuration files are located in the __config__ folder. To ease the switch to new botty versions, you can also overwrite any of the .ini fields in a **custom.ini** file. When a new version of botty is released you just copy the file to the new version without having to port all your **param.ini** changes to the new version. Example:
```ini
; custom.ini - overwrites 3 params in the param.ini
@@ -63,87 +48,159 @@ run_pindle=1
run_shenk=0
```
| [general] | Descriptions |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| name | Name used in terminal and discord messages |
| saved_games_folder | Optional folder path of Diablo 2 : Ressurrected saved games |
| monitor | Select on which monitor D2R is running in case multiple are available |
| 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 |
| exit_key | Pressing this key (anywhere), will force botty to shut down |
| resume_key | After starting the exe botty will wait for this keypress to atually start botting away |
| graphic_debugger_key | Pressing this key will start a debug mode to check if the color filtering works with your settings. It also includes the item search and marks items it would pick up with red circles |
| logger_lvl | Can be any of [info, debug] and determines how much output you see on the command line |
| randomize_runs | If 0, the order will always be pindle -> eldritch/shenk. If 1 the order will be random. |
| difficulty | Set to `normal` `nightmare` or `hell` for game difficulty |
| custom_discord_hook | Add your own discord hook here to get messages about drops and in case botty got stuck and can not resume |
| discord_status_count | Number of games between discord status messges being sent. Leave empty for no status reports.
| 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... |
| [general] | Descriptions |
| -------------------- | --------------------------|
| 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 |
| 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) |
| [routes] | Descriptions |
| ------------ | ------------------------------------------------------------------------ |
| run_trav | Run Trav in each new game. Select "1" to run it "0" to leave it out. Specific trav gear is suggested |
| run_pindle | Run Pindle in each new game. Select "1" to run it "0" to leave it out. |
| run_eldritch | Run Eldritch in each new game. Select "1" to run it "0" to leave it out. |
| run_shenk | Run shenk in each new game. Select "1" to run it "0" to leave it out. |
| run_nihlatak | Run Nihlatak in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
| run_arcane | Run Arcane Sanctuary in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
| run_diablo | Run Diablo (just the Boss, not the trashmobs) in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
| [char] | Descriptions |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| type | Build type. Currently only "sorceress" or "hammerdin" is supported |
| casting_frames | Depending on your char and fcr you will have a specific casting frame count. Check it here: https://diablo2.diablowiki.net/Breakpoints and fill in the right number. Determines how much delay there is after each teleport for example. |
| stash_gold | Bool value to stash gold each time when stashing items |
| 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 |
| num_loot_columns | Number of columns in inventory used for loot (from left!). Remaining space can be used for charms |
| take_health_potion | Health percentage when healing potion will be used |
| take_mana_potion | Mana percentage when mana potion will be used. Currently belt managment is not very clever and it is safest to only pick up health pots and make sure mana reg is enough for pindle to not need mana pots. |
| heal_merc | Merc health percentage when giving healing potion to merc |
| chicken | Will chicken (leave game) when player health percentage drops below set value, range 0 to 1. Set to 0 to not chicken. |
| merc_chicken | Will chicken (leave game) when merc health percentage drops below set value, range 0 to 1. Set to 0 to not chicken. |
| show_items | Hotkey for "show items" |
| inventory_screen | Hotkey to open up inventory |
| stand_still | Hotkey for "stand still". Note this can not be the default shift key as it would interfere with the merc healing routine. |
| tp | Hotkey for using a town portal |
| belt_rows | Integer value of how many rows the char's belt has |
| show_belt | Hotkey for "show belt" |
| potion1 | Hotkey to take potion in slot 1 |
| potion2 | Hotkey to take potion in slot 2 |
| potion3 | Hotkey to take potion in slot 3 |
| potion4 | Hotkey to take potion in slot 4 |
| belt_rejuv_columns | Number of belt columns for rejuv potions |
| belt_hp_columns | Number of belt columns for healing potions |
| belt_mp_columns | Number of belt columns for mana potions |
| cta_available | 0: no cta available, 1: cta is available and should be used during prebuff |
| weapon_switch | Hotkey for "weapon switch" (only needed if cta_available=1) |
| battle_order | Hotkey for battle order from cta (only needed if cta_available=1) |
| battle_command | Hotkey for battle command from cta (only needed if cta_available=1) |
| [char] | Descriptions |
| ------------------ | -------------------------------------------------------------------------------------------------|
| type | Build type. Currently only "sorceress" or "hammerdin" is supported |
| casting_frames | Depending on your char and fcr you will have a specific casting frame count. Check it here: https://diablo2.diablowiki.net/Breakpoints and fill in the right number. Determines how much delay there is after each teleport for example. If your system has some delay e.g. on vms, you might have to increase this value above the suggest value in the table! |
| num_loot_columns | Number of columns in inventory used for loot (from left!). Remaining space can be used for charms |
| show_items | Hotkey for "show items" |
| inventory_screen | Hotkey to open inventory |
| force_move | Hotkey for "force move" |
| stand_still | Hotkey for "stand still". Note this can not be the default shift key as it would interfere with the merc healing routine |
| tp | Hotkey for using a town |
| belt_rows | Integer value of how many rows the char's belt has |
| show_belt | Hotkey for "show belt" |
| potion1 | Hotkey to take potion in slot 1 |
| potion2 | Hotkey to take potion in slot 2 |
| potion3 | Hotkey to take potion in slot 3 |
| potion4 | Hotkey to take potion in slot 4 |
| cta_available | 0: no cta available, 1: cta is available and should be used during prebuff |
| weapon_switch | Hotkey for "weapon switch" (only needed if cta_available=1) |
| battle_order | Hotkey for battle order from cta (only needed if cta_available=1) |
| battle_command | Hotkey for battle command from cta (only needed if cta_available=1) |
| 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_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 |
| cs_clear_trash | If 1, most Trash mob packs from Chaos Sancturay Entrance to Pentagram and Seals A, B, C are cleared (NOT YET IMPLEMENTED). If 0, the run starts at Pentagram and just kills Sealbosses & Diablo |
| 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 |
| take_rejuv_potion_mana | Mana percentag when rejuv potion will be used |
| heal_merc | Merc health percentage when giving healing potion to merc |
| heal_rejuv_merc | Merc health percentage when giving rejuv potion to merc |
| chicken | Will chicken (leave game) when player health percentage drops below set value, range 0 to 1. Set to 0 to not chicken. |
| merc_chicken | Will chicken (leave game) when merc health percentage drops below set value, range 0 to 1. Set to 0 to not chicken. |
| belt_rejuv_columns | Number of belt columns for rejuv potions |
| 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 |
| always_repair | 0: Will only repair when needed, 1: Will repair at the start of each run (EXPENSIVE FOR HIGH RUNEWORDS) |
| 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. |
### Builds
| [sorceress] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| teleport | Required Hotkey for teleport |
| skill_left | Required Hotkey for skill that is used on left mouse btn (e.g. Glacial Spike) |
| skill_right | Required Hotkey for skill that is used on right mouse btn (e.g. Blizzard) |
| frozen_armor | Optional Hotkey for frozen armor (or any of the other armors) |
| energy_shield | Optional Hotkey for energy shield |
| thunder_storm | Optional Hotkey for thunder storm |
| [light_sorc] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| chain_lightning | Optional Hotkey for chain_lightning (must be bound to left skill) |
| lightning | Required Hotkey for lightning (must be bound to right skill) |
| [blizz_sorc] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| ice_blast | Optional Hotkey for ice_blast (must be bound to left skill) |
| blizzard | Required Hotkey for Blizzard (must be bound to right skill) |
| [nova_sorc] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| nova | Required Hotkey for Nova (must be bound to right skill) |
| [hammerdin] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| teleport | Optional Hotkey for teleport. If left empty hammerdin will run instead of teleport. |
| concentration | Required Hotkey for Concentration |
| holy_shield | Hotkey for Holy Shield |
| blessed_hammer | Hotkey for Blessed Hammer |
| redemption | Optional Hotkey for redemption |
| vigor | Optional Hotkey for vigor |
| holy_shield | Required Hotkey for Holy Shield |
| blessed_hammer | Required Hotkey for Blessed Hammer. (must be bound to left skill!) |
| redemption | Optional Hotkey for Redemption |
| vigor | Optional Hotkey for Vigor |
| cleansing | Optional Hotkey for Cleansing |
| [trapsin] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| teleport | Optional Hotkey for teleport. If left empty trapsin will run instead of teleport. |
| skill_left | Optional Hotkey for Left Skill |
| burst_of_speed | Optional Hotkey for Burst of Speed |
| fade | Optional Hotkey for Fade |
| shadow_warrior | Optional Hotkey for Shadow Warrior |
| lightning_sentry | Required Hotkey for Lightning Sentry |
| death_sentry | Required Hotkey for Death Sentry |
| [barbarian] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| teleport | Optional Hotkey for teleport. If left empty barb will run instead of teleport. |
| leap | Required Hotkey for Leap |
| shout | Required Hotkey for Shout |
| war_cry | Required Hotkey for War Cry |
| find_item | Optional Hotkey for Find Item |
| cry_frequency | Time in seconds between each cast of war_cry. Set to 0.0 if max fcr should be used |
| [Necro] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| teleport | leave this blank for now, teleport/static pathing is currently not supported |
| skill_left | Required Hotkey for attack (bonespear/teeth) |
| bone_armor | Required Hotkey for Bone Armor |
| clay_golem | Required Hotkey for Clay Golem |
| raise_skeleton | Required Hotkey for Raise Skeleton |
| amp_dmg | Required Hotkey for Amplify Damage |
| corpse_explosion | Required Hotkey Corpse Explosion |
| raise_revive | Required Hotkey revive |
| clear_pindle_packs | clears mobs before pindle |
| [dclone] | Descriptions |
| -------------------- | --------------------------------------------------------------------- |
| region_ips | Start of the region ip you want to filter for. e.g. EU Server = 37.244.11, 37.244.48 |
| dclone_hotip | Hot ip you are looking for. Botty will stay in game and message you if a message_hook is set |
| [advanced_options] | Descriptions |
| -------------------- | --------------------------------------------------------------------- |
| pathing_delay_factor | A linear scaling factor, between 1 and 10, applied to pathing delays. |
| template_threshold | Threshold to find templates used during pathing. |
| [items] | Descriptions |
| --------- | ----------------------------------------------------------------------------------------------------------------------- |
| item_type | 0: Item will not be picked up. 1: Item will be picked up. 2: Item will be picked up and a discord message will be sent. |
| message_headers | Headers that are sent with each messages |
| message_body_template | Message body of the post message sent |
| message_highligh | 0: Send messages as is, 1: Uses message highlighting for discord |
## Support this project
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

+3 -1
View File
@@ -42,5 +42,7 @@
"Chat Gem Mode": 1,
"Item Name Display": 1,
"Chat Background": 0,
"Always Run": 1
"Always Run": 1,
"Quick Cast Enabled": 0,
"Display Active Skill Bindings": 0
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Some files were not shown because too many files have changed in this diff Show More