Compare commits

...
160 Commits
Author SHA1 Message Date
mgleed 7426e79504 Params config readme cleanup (#870)
* Bump version to v0.7.4

* init

* fix missing |'s

* Update README.md
2022-06-14 17:01:50 -04:00
mgleed 5bceafec8b Bugfix: Hammerdin and FOHdin small fixes, inappropriate vigor casting, etc (#868)
* fixes

* increase timeouts to 3.2...pather is hacky
2022-06-14 14:55:55 -04:00
mgleed 3d004062d7 Bugfix: Character select screen, character not found (#869)
* init

* adjust

* should work on nip br this way
2022-06-14 14:55:43 -04:00
mgleed 0fcddd2aed Enhancement: Reposition teleport and rename tp to town_portal in params 2022-06-13 13:46:19 -04:00
mgleed 237dfd6f34 Bugfix: hammerdin config inheritance 2022-06-12 22:38:58 -04:00
jobithuandmgleed 70debc2b0d Major feature: FOHdin, Chaos Sanctuary (#765)
* Setting Up FOHdin for CS

* replaced hammers with FOH, but not targeted yet

* finish merging

* demo

* implemented all runs. avoid nihlatak.

* replaced FOH with Hammer for Nihl

* using hammers for dia now

* reverted dia hammers to FOH, so pure FOH runs CS

* added non mob-detection attacks to trav

* some tweaks

* tweaked hammer pindle for tele amu

* improved pindle for walker FOHdin

* Pindle, Eld, Shenk, CS tweaked. Trav needs work.

* fix NoneType error if nodes aren't found

* consolidate trav code

* small adjustment

* increase attack duration in loop condition rather than attack sequence

* pindle optimizations

* optimizations of pindle, eld, shenk

* more optimizations, trav still kinda ghetto

* update target detect to include closer targets

* implement concentration with holy bolt

* nihlathak and summoner

* revised CS trash atk pattern

* tweaked sealbosses!

* CS ready for pressure tests

* implement in-chaos pickit, match/case logic over if/elif, consolidate more functions, move some to i_char.py, patch health_manager.py to prevent it from closing inventory, update inspect_items() to allow items to be dropped and not kept to be sold

* revert change

* reserve hammerdin changes for a separate PR

* get rid of extra attack sequence

* disable target/attack logs for merge

* code cleanup

Co-authored-by: mgleed <[email protected]>
2022-06-12 15:44:54 -04:00
mgleed 241fc15269 Enhancement: Debug screenshots for character select failures (#860)
* init

* simplify

* timestamp constant
2022-06-12 15:09:15 -04:00
mgleed 16a9832af0 Bugfix: update active character template 2022-06-12 14:18:46 -04:00
jobithuandmgleed 94f6c82560 Hdin pindle tele charges (#856)
* added tele charges to pindle

* hdin pindle now uses tele charges

* separated native from charges

* True!

* delete unnecessary keyboard.send()

Co-authored-by: mgleed <[email protected]>
2022-06-12 12:05:45 -04:00
mgleed 6eebe281ac Bugfix: update node 300 on trav (#858) 2022-06-12 12:04:02 -04:00
mgleed bd092bd8d2 small error adjustments (#852) 2022-06-10 22:05:57 -04:00
NeoIsrafil cdd16dbb92 Enhancement: Sazabi set
* Add files via upload

Sazabis sword found to add since its decent for barb fury mercs.

* Update pickit.ini

Adds sazabi sword to pickit so users can turn it on if they want it.

* Update pickit.ini

* Add files via upload

sazabi helmet for addition to complete sazabi set

* Add files via upload

there, the pngs.  I don't know why I missed them the first time....sorry bout that

* Add files via upload

* Delete set_sazabi_sword.png

* Delete set_sazabi_helmet.JPG

* Delete set_sazabi_helmet.png

* Delete set_sazabi_sword.JPG

* Add files via upload

Fixed images
2022-06-10 22:01:00 -04:00
mgleed 0870384b8d Feature: Warn users if non-ascii chars in botty path, windows username, or D2R path (#843) 2022-06-08 15:31:57 -04:00
mgleed bcea0129ba Bugfix: NoneType messages if api or hook not set (#842) 2022-06-08 11:31:12 -04:00
mgleed 8989738c58 Bugfix: game recovery if unable to create game (#841)
* bugfix: game recovery if unable to create game

* fix on_init() error, add error msg
2022-06-08 11:30:57 -04:00
roozhouandmgleed b457877623 Bugfix: Select online tab before creating game when d2r switch to offline tab automatically (#834)
* BugFix: Select online tab when server disconnected

Issue #789

* Simplify online/offline tab selection logic

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

Co-authored-by: mgleed <[email protected]>
2022-06-07 22:12:53 -04:00
Wang Xiangandmgleed d047886630 Bugfix: generic_api (#836)
* Fix generic_api

generic_api.py supports custom_loot_message_hook now.

* Simplified logic

Co-authored-by: mgleed <[email protected]>
2022-06-07 14:31:54 -04:00
Legitandmgleed 54888942f5 Bugfix: Better pathing for walkers in trav (#790)
* Better pathing for walkers in trav

* Add files via upload

* trim a few templates

* re-add column asset, utilize another v2 asset

* fix tab/space issue

Co-authored-by: mgleed <[email protected]>
2022-06-07 00:00:04 -04:00
badbrad2889andmgleed 129c00ac44 Feature: Support transmute of all gem quality (chipped, etc.) (#736)
* Added the ability to transmute all gem types and select in params.ini

* Added the assets

* Updated STD to standard for transmute and updated ini for list style

* Changed the assets to standard

* changed list in INI to run only flawless by default

* Optimized the transmute: will only need to go through search once

* update tab selection

* Update params.ini

Co-authored-by: mgleed <[email protected]>
2022-06-06 23:27:13 -04:00
mgleed f7ea236823 Bugfix: character select active asset ignored hardcore characters (#838) 2022-06-06 21:53:35 -04:00
RiddleandRiddle f94bd16b2b Enhancement: Catch missing config params (#835)
Co-authored-by: Riddle <[email protected]>
2022-06-06 20:57:29 -04:00
mgleed 8db079f720 Bugfix: Reduce identify time at cain (#837) 2022-06-06 20:55:46 -04:00
aeon0andmgleed 084bdb6573 feat/cached-img (#734)
* feat/cached-img

* thread safe

* update

* add a force_new param for grab() and enable it for pather, which is more dependent on exact current frame

* use existing img for pather screen object checks

Co-authored-by: mgleed <[email protected]>
2022-06-06 18:07:10 -04:00
Legitandmgleed ac3e79401b Enhancement: Make Nopickup command optional (#819)
* Making Nopickup command optional

* Update bot.py

* Update config.py

* set default on, rework logic

Co-authored-by: mgleed <[email protected]>
2022-06-06 13:39:31 -04:00
reqyl baa6bf0e9b Enhancement: Optimize trav (#829)
* Small optimization by know if current run is last

* Tele amu optimization

Prefer to not use tele changes when getting back inside to loot.
Only use tele charge if pathway was blocked.

This change makes bot use a less tele charges, and thereby improve run speed due to not having to repair as often.

* Pass whole list of runs instead of just last one

This would allow to e.g check first run / only run etc
2022-06-06 11:16:58 -04:00
Legitandmgleed f0c6d5a6b7 Bugfix: getting stuck at act 2 portal location
* Updates act 2 template

* Add files via upload

* Delete a2_town_27.png

* Delete a2_town_22.png

* Add files via upload

* Delete a2_town_20.png

* Add files via upload

* Add files via upload

* Delete a2_town_22.png

* Add files via upload

* Update a2.py

* Update params.ini

* remove guy with shadow. asset already existed and added

Co-authored-by: mgleed <[email protected]>
2022-06-06 11:16:03 -04:00
roozhou fd7294b895 Bugfix: Random guess should be random (#833) 2022-06-06 06:30:45 -04:00
roozhou 7e700ad75e Move _lerp function to i_char.py (#832) 2022-06-06 06:28:42 -04:00
mgleed fcaffc5cf2 Bugfix: Launch options and game recovery 2022-06-05 10:28:03 -04:00
mgleedandaeon0 3e6f9a9bf1 Migrate from Python 3.9 to 3.10 (#826)
* migrate from python 3.9 to 3.10, recompiled tesserocr

* cleanup old types, change all Unions to |

* add a few match/case statements

* Update ci.yml

Co-authored-by: aeon0 <[email protected]>
2022-06-05 08:01:28 -04:00
Riddle 700e7e23b2 Merge pull request #824 from aeon0/fix-pather-main-fn
Bugfix: Update pather _main_ function for recent template_finder update
2022-06-01 13:12:50 -04:00
mgleed d41771a6c4 fix 2022-05-31 21:24:29 -04:00
jagarop 58d2834949 Merge pull request #814 from Aimware0/master
Updated readme for contributions
2022-05-30 13:23:33 -03:00
Riddle 215e589438 Updated readme for contributions 2022-05-29 20:09:12 -04:00
Legitandmgleed cf7eaa6d09 Bugfix: Non-UTF-8 characters in corpse pickup text caused corpse to be missed
* Update to corpse pickup

* Add files via upload

* Update ui_manager.py

Co-authored-by: mgleed <[email protected]>
2022-05-20 22:51:01 -04:00
mgleed a30039bc9e Bugfix: Multiple item detect by shoppers 2022-05-18 01:59:49 -04:00
mgleed 27ebd1b4db Refactor: TemplateFinder() (#770)
* init, wip

* time to test

* remove unused dataclass

* tests passing, just need to run in-game

* fix wait logic

* add threading lock, delete excess funcs

* start putting best_match back in to search_and_wait()

* bugfixes, found a bad template

* scope

* fix npc detect
2022-05-18 01:35:27 -04:00
egut125 203dce6775 Include file in discord embed (#780) 2022-05-18 01:07:51 -04:00
egut125 63b761b5dc Feature: Separate generic and loot discord message webhooks (#729)
* New param custom_loot_message_hook

* Loot web hook fixes
2022-05-14 05:50:56 -04:00
mgleed 580d9c6253 Bugfix: Revert keyboard save/exit 2022-05-14 05:32:51 -04:00
Legit fdc25d6c4d Speed up nihlathak wait to reduce chickens/deaths (#769)
Speed up nihlathak wait timers to reduce chickens/deaths
2022-05-13 21:26:51 -04:00
mgleed 99778ea51f Refactor: Use class objects for mobs for mob checking (#767)
* init, wip

* refactor mob_check, wip

* update hammerdin

* fix hammerdin
2022-05-13 16:18:13 -04:00
mgleed 3e6521c2e6 Bugfix: Fix local pather pytest, update log to accommodate mob detect change (#766)
* init

* fix

* refactor
2022-05-13 16:15:43 -04:00
jobithuandmgleed 648d42ed84 Feature: Mob Detection for Chaos Sanctuary Hammerdin (#598)
* added mob detection to CS to speed up runs

* refactoring - redemption does not work

* remove unused filterimage param for template_finder.search_and_wait

* get rid of selfs, add live view within mob_detection.py

* mobcheck(self) -> mobcheck()

* cleanup, img as an arg to mobcheck

* prefix functions for encapsulation, cleanup redundant code

* simplify further

* trim

* simplify live-viewer, move

* corrected liveviewer -- opencv hue ranges to 180 not to 255

* rename funcs

* consolidate live-view into target_detect.py

* silly ide

* fix nonetype error

fox nonetype error - but no mobs are detected anymore :(

* script runs, but fails to deteect mobs

* add pytest for target detection, fix target sorting

* revert info_ss

* running now! added "mercwait" to debug runtime

* added testing back to pather.py

* update pytest, discrete blue/green filtering, cleanup code

* fix NoneType, add negative test

* consolidate tests

* fix oopsie

* add config param

* fix config param

* fixed atk sequences & logging spam

ready to merge after my final 2 tests

* undo bad import

Co-authored-by: mgleed <[email protected]>
2022-05-12 07:03:29 -04:00
egut125andmgleed 328ff67a4b Feature: Hydra Sorc (#730)
* New Hydra Build

Only runs pindle shenk eld so far

* Adjust hydra sorc to use any alt skill on right click

* Lowered spray

* Update config/params.ini

Co-authored-by: mgleed <[email protected]>
2022-05-11 04:18:51 -04:00
Legit f3d6677ef2 Bugfix: keyboard exit bug (#755)
* Fixing fast exit bug

* Update view.py

* Update view.py

* Update view.py
2022-05-09 19:26:52 -04:00
drallcom3 bbc183e82e Enhancement: Make log chicken an option (#743)
* Make log chicken an option

It can produce a lot of spam for low level bots.

* Game stats fix

Chicken wasn't counted in the report anymore.

* Bugfix
2022-05-09 05:11:35 -04:00
mgleed e879514846 Tests: Added template match tests (#753)
* init

* rename vars

* fix best match

* update per review
2022-05-09 05:00:15 -04:00
slapchop58 0e15b7ccdb Feature: Bone necro (#727)
* Added bone necro char

* Added damage_scaling option

* adjusted some targeting

* Removed colored logging statements, documented damaage_scaling option, and moved its usage to the base class i_char
2022-05-09 04:24:08 -04:00
Legit 5bdc6caa13 Bugfix: Lowered Eldritch End node (#726)
* Lowered Eldritch End node

Need verification doesnt impact hdin or light sorc.

* Fixed light sorc for new node change
2022-05-09 04:16:13 -04:00
roozhou 376fb05225 Enhancement: Faster save and exit using keyboard (#697)
* Enhancement: Faster save and exit using keyboard

* Enhancement: faster chicken

1) Remove delay among key/mouse release (human can do it simutaneously
2) Save screenshot after save_and_exit
2022-05-09 04:07:48 -04:00
aeon0 886fc88816 fix: Release shift in case of out of gold (#740) 2022-05-01 00:56:42 +02:00
SdxHex e156671b17 Bugfix: added CTA to basic and Range (#737)
Basic and range can now buff with CTA as well as use class buffs
2022-04-27 16:40:21 -04:00
roozhou ea5071cf85 BugFix: Do not write ANSI color codes to info.log (#733) 2022-04-23 15:33:25 -04:00
mgleed a15f7207fe Bugfix: Cleanup assets at bottom of shenk stairs, add two more templates 2022-04-23 15:21:10 -04:00
aeon0 e0e0ff01f1 Update docs for new run logic 2022-04-21 08:19:08 +02:00
mgleed 20f59028e2 bump (#721) 2022-04-20 20:19:34 -04:00
mgleed 7bc34a7b2f bump version (#720) 2022-04-20 20:01:03 -04:00
mgleedandaeon0 2dc1356cf7 Bugfixes: A2 TP stuck, also recapture some templates for d2r v2.4
* add _capture_template switch to template_finder.py _main function, replace eldritch templates

* update some trav templates

* update template_finder.py, update act 3 town templates

* update missing Eldritch templates

* add redudant eldritch templates and update nodes

* update shenk templates

* update trav assets, add redundant assets w nodes

* bugfix: a2 tp out of range of a2 templates

Co-authored-by: aeon0 <[email protected]>
2022-04-20 19:06:55 -04:00
mgleed ae0ab54efe Bugfix: Cain loop, etc. with return_to_play() function 2022-04-20 19:05:37 -04:00
mgleed bfb367ee62 Clear default launch_options param for planned upcoming stable release 2022-04-20 19:04:48 -04:00
mgleed 8d925509fa Bugfix: Default pickit errors with berserker axe and war pike 2022-04-20 09:26:40 -07:00
mgleed 811d656022 Increase padding from 1 to 2 spaces, pad gold (#711) 2022-04-20 12:16:24 +02:00
c7c0e9e1a3 Updated pot drinking logic (#710)
* Updated pot drinking logic

* fixed bugs

* simplify

* Fixed bad hp/mana check

* Fixed bad hp/mana check, (last was noob git by me)

Co-authored-by: Your Name <[email protected]>
Co-authored-by: mgleed <[email protected]>
2022-04-20 12:15:50 +02:00
aeon0andmgleed 9bc085af3a feat/restricted-mouse-clicks (#709)
* feat/restricted-mouse-clicks

* fix typos, use GoldBtnInventory ScreenObject, use personal.specific_inventory_roi()

* make smaller gold button, trim ROI, and use grayscale to search

* remove unused roi

* fix circular import by reverting to Config inventory area and adding open_inventory_area variable, adjust code throughout

* simplify

* revert to template finding due to circular import with ui_manager

* grayscale template match

Co-authored-by: mgleed <[email protected]>
2022-04-18 17:00:18 +02:00
roozhou a5d7fdaffa BugFix: Fix indicator_location_to_tab_count (#708)
1) 4 tabs instead of 3
2) Return value should be integer when failed
2022-04-17 12:47:34 +02:00
aeon0 16bf599d88 feat/run-qol (#707) 2022-04-17 12:40:53 +02:00
aeon0 59ba4409b5 Update i_char.py (#706) 2022-04-16 07:53:26 -07:00
mgleed f510965d05 init (#703) 2022-04-16 07:43:55 +02:00
aeon0 d43441358d Bugfix: Create mod folder if it doesnt exist (#701) 2022-04-14 21:47:39 -07:00
Aimware0 1ece05f7a7 Merge pull request #702 from roozhou/tooltip_fix
BugFix: Allow 2 lines of tooltip
2022-04-14 20:58:11 -04:00
roozhou ca93f3aa5d BugFix: Allow 2 lines of tooltip
Fix item_cropper failure in 2.4
2022-04-14 17:47:39 -07:00
tomoyo233 5c6e2211d6 Kill BlizzardError.exe (#688)
Kill the BlizzardError.exe process before restarting the game
2022-04-14 23:08:39 +02:00
mgleed f469d98f74 Bugfix: Item tooltip obscuring close button 2022-04-12 14:32:35 -07:00
Legit 699fcac7af Bugfix: missed pnova overhaul fixed (#694) 2022-04-06 22:54:29 -04:00
Legit c22275c1bb Bugfix: old ui overhaul time out modified for pnova necro (#693) 2022-04-06 18:38:17 -04:00
mgleed 470f42b1b9 Bugfix: renamed mod folder from ifilter to botty and narrowed rmtree (#690)
* fix

* didn't save
2022-04-03 21:13:03 -04:00
Legit 4b5b8385f8 Refactor: Condensed discord message will be the only option (#687)
* Condsensed discord message will be the only option

Condensed message will be default. removed the option from params.

* Update game_stats.py

* Update discord_embeds.py

* Update bot.py

* Update shenk_eld.py

* Update config.py

* removed a line

removed e.set_thumbnail(url=f"{self._psnURL}36L4a4994.png")

* Update README.md
2022-04-03 20:16:27 -04:00
jagarop 42655d5209 Enhancement: Stop gem pickups from logging to item count
Remove gems from loggin
2022-04-02 21:32:55 -04:00
mgleed 09a33ccf3d Feature/enhancement: Support for D2R launch options and cosmetic mods (#677)
Breaking change to param: `d2r_path`
2022-04-02 21:27:03 -04:00
egut125 fd93910941 Bugfix: Extra space (#682) 2022-04-01 13:46:54 -04:00
egut125 51de6f9f00 Bugfix: Placing list manipulation inside try block (#681) 2022-04-01 11:52:11 -04:00
egut125 d615f11608 Bugfix: Divide by zero fix (#680) 2022-03-31 22:39:10 -04:00
egut125andmgleed c6d2f3f068 Bugfix: Quick list manipulation to remove anything before experience in the list (#679)
* Quick list manipulation to remove anything before experience in the list

* update

* stupid ide

* cleanup

Co-authored-by: mgleed <[email protected]>
2022-03-31 22:38:13 -04:00
mgleed 0606adb5da Bugfix: Corpse pickup broken after Exp implementation (#675) 2022-03-31 17:16:39 -04:00
mgleed 82576282ab Enhancement: Update OCR model for large numbers 2022-03-31 17:16:09 -04:00
mgleed e6fe7ef609 Enhancement/bugfix: Refactor checks for item transferring (#673)
* init

* add confirmed action debug line
2022-03-30 19:49:13 -04:00
egut125 45e7a5ca9a Enhancement: Update messages to have better values (#671) 2022-03-30 13:06:50 -04:00
egut125 7d3710d1e8 Bugfix: Remove %exp calculation in player_bar()
Breaks on lvl 99 and doesn’t correctly calculate percent to next level anyways.
2022-03-29 08:40:02 -04:00
mgleed e354ed8074 Bugfix: custom config parsing (#668) 2022-03-28 18:01:12 -04:00
egut125andmgleed c4a5c6fe34 Feature: Runtime breaks (#665)
* New params for runtime and break time

* New params to manage session length and break time

* Starting message

* Message adjustments

* use _default_iff in config

Co-authored-by: mgleed <[email protected]>
2022-03-28 17:55:15 -04:00
egut125 2079b81df4 Feature: Leverage OCR to read exp and track in-game stats (#662)
* Leveraging OCR to read exp and track in game_stats

Start of each game and end of each run OCR exp
game_stats stores starting EXP and current EXP
game_stats summary calculates XP gained, XP per game, XP per hour

* Adding lvl tracking and xp to next level stats

* logic clean up
2022-03-28 09:25:30 -04:00
Aimware0andYour Name e64b312562 Bugfix: error handling for common belt error (#664)
Co-authored-by: Your Name <[email protected]>
2022-03-28 09:18:23 -04:00
Aimware0andYour Name cceb7905c7 Enhancement: Logger colors (#663)
Co-authored-by: Your Name <[email protected]>
2022-03-28 09:17:47 -04:00
4007087ceb Enhancement: variables can be initialized/used in config files
* Added a way to add config variables to ini files.

* Added examples

* Added examples

Co-authored-by: Your Name <[email protected]>
Co-authored-by: mgleed <[email protected]>
2022-03-28 09:17:09 -04:00
e64f1151f3 Enhancement: Use keyboard to select difficulty (#661)
* Enhancement: Use keyboard to select difficulty

* press instead of send

if somehow the select difficult menu is not available when the while True: loop is running, will still work.

* simplify, delete now unused assets

* cleanup more

Co-authored-by: jagarop <[email protected]>
Co-authored-by: mgleed <[email protected]>
2022-03-25 22:35:45 -04:00
mgleed 46202e5a69 Bugfix/enhancement: Fix ocr output wordlist check, replace difflib with Lev (#658)
* init

* remove unused difflib import

* use built-in function

* small changes
2022-03-23 16:11:57 -04:00
Legit 782001d338 Feature: Poison necro config (#597)
* Poison necro config

* Update bot.py

* added "walk"

to move summons after teleporting.

* Add files via upload

* Update params.ini

* Update params.ini

* Update poison_necro.py

* Update poison_necro.py
2022-03-23 14:28:07 -04:00
mgleed 4eeadb934f bump (#653) 2022-03-21 21:17:55 -04:00
mgleed 1f16c13300 Bump to 0.7.2 (#652) 2022-03-19 20:59:05 -04:00
mgleed ee479fb526 Bugfix: Stash tab counts not tracking (#646)
* init

* saved stuff

* fix startup

* fix

* gdi
2022-03-19 12:02:14 -04:00
Legit d05ff50f76 Enhancement: Improved eld attack sequence for Blizz sorc (#608)
* improved eld attack sequence

added an extra attack sequences and added wait timers.

* Update blizz_sorc.py
2022-03-18 17:14:41 -04:00
Aimware0 927ade6108 Bugfix: added error handling for custom.ini when missing section header (#647) 2022-03-18 17:02:12 -04:00
Steve6030 5eda34ded0 Enhancement: Tweaked light sorc attack sequence (#644) 2022-03-18 16:45:04 -04:00
mgleedandVladimir Makaev d9b9d66e3b Feature: Use OCR for gold pickit (#643)
* init

* consolidate

* Update src/config.py

Co-authored-by: Vladimir Makaev <[email protected]>

Co-authored-by: Vladimir Makaev <[email protected]>
2022-03-17 21:31:48 -04:00
mgleed 1adeb3a32a Bugfix: Some NPC's don't open to misc tab (#642)
* init

* cleanup

* clean

* cleanup
2022-03-16 21:52:29 -04:00
mgleed 1abf57eae1 Bugfix/refactor: Safer screen transitions for laggy setups (#641)
* init

* update

* WIP. cleanup code. refactor stashing routines, etc. hopefully now closer to lag-proof

* more simplification, ready for testing

* change default normalize_monitor and adjust code accordingly. testing

* undo save/exit keyboard

* forgot to save a couple

* fix gold checking
2022-03-16 16:06:12 -04:00
Legit 65797eba8f Note for num loot (#637)
created note for num loot to avoid confusion. Per Sosa.
2022-03-14 17:25:34 -04:00
mgleed 03a6e8b05c Bugfix/refactor: Arcane run doesn't turn off health_monitor when in town 2022-03-14 16:01:07 -04:00
mgleed 2c09459bde Bugfix/enhancement: Optimize waits; implement wait_for_expiration(ScreenObject) function (#629)
* init

* simplify

* the

* init

* update

* init

* fix belt open

* rework waiting functions in ui_manager.py
2022-03-13 20:19:41 -04:00
aeon0anduidn4233 7564fea4b0 Remove: Codecov (#632)
* Remove: Codecov

* test commit

* revert test commit

Co-authored-by: uidn4233 <[email protected]>
2022-03-12 22:21:14 -05:00
mgleed 95b27f099f Bugfix/refactor: Search for open panels instead of skill icons (#631)
* init

* add town logic

* add additional close asset for HELP menu

* fin

* a
2022-03-11 17:46:30 -05:00
mgleed e96c042853 Bugfix: Stash tab gold was being read based on prior stash tab image (#628)
* init

* simplify

* the

* init

* update
2022-03-11 13:53:46 -05:00
mgleed 57bf7a0f7d Bugfix: log_item_keep without game_stats (#627)
* init

* simplify

* the
2022-03-11 11:57:32 -05:00
mgleed da892d9043 Bugfix: Laggy inventory loading (#625)
* init

* undo item add

* add msg

* curse you Vladimir for reviewing too carefully
2022-03-10 17:28:22 -05:00
mgleed 7fad5e9aff Bugfixes: Quantity: parse fail handling, if in-game icon not found during return_to_play() 2022-03-10 17:07:35 -05:00
mgleed 840ffcdf0c Update version.py (#621) 2022-03-10 17:06:58 -05:00
Ezro 1078563f2d Bugfix: Prevent join for NoneType and start_detecting_window() in main.py (#624)
* Prevent join for NoneType and start_detecting_window() in main.py

* Start and stop in the debugger toggle
2022-03-09 23:15:36 -05:00
mgleed c1f2cad291 Bugfix: Game recovery after D2 restart (#620)
* init

* bump version
2022-03-09 19:42:20 -05:00
mgleed 285e635b0d Bugfix: Some vendor items obscured by tooltips 2022-03-09 15:40:04 -05:00
mgleed 54203ff036 Bugfix: Chicken if stats/skill icons pop up to avoid accidental allocations (#618)
* init

* simplify

* undo
2022-03-09 15:39:44 -05:00
mgleed 6b378a4606 Bugfix: Avoid entering town portals while walking in town 2022-03-09 15:39:02 -05:00
mgleed 9707fc4563 Enhancement: Cleanup botty startup. Add version to debug log. 2022-03-09 13:30:06 -05:00
mgleed 1a4e6c9533 Bugfix: Gold stashing (#615)
* init

* more places to toggle inventory gold full off
2022-03-08 21:47:13 -05:00
mgleed fb22b86d11 Bugfix: Stash is full message error (#614)
* fix item_cropper.crop_item_descr to allow some edge cases where there is lots of text in the box

* Fix send_stash message when stash is full

* remove self

* undo
2022-03-08 21:46:02 -05:00
mgleed 3c3f95142d Bugfix: crop_item_descr failing on some items 2022-03-08 21:45:37 -05:00
mgleed 029b8dcdc6 Bugfix: Lack of item tooltip causing item_cropper errors for users who turn it off (#612)
* Bugfix: Lack of item tooltip causing item_cropper errors.

* lol
2022-03-06 21:24:15 -05:00
mgleed 400d43c49c Bugfix: Tome discrepancies on some platforms (#611) 2022-03-06 20:55:50 -05:00
mgleed d2a3670a6a Bugfix: More related bugs for town and ui overhaul (#610)
* fix id logic, fix count reset, up to version 0.7.0, trim excess

* attempt to fix loop at cain, etc. when return_to_play() is called

* spell check, simplify

* center mouse after opening NPC menu

* fix messenger item count bug
2022-03-06 15:14:56 -05:00
mgleed bf421a67a9 Bugfixes: Town overhaul stuff (#609)
* fix id logic, fix count reset, up to version 0.7.0, trim excess

* attempt to fix loop at cain, etc. when return_to_play() is called

* spell check, simplify
2022-03-06 09:26:14 -05:00
mgleed f51de30fbd Major feature: Town routine overhaul, id tome, scrolls/keys, simplify gambling (#588)
* init, wip

* migration from original ocr complete, now troubleshooting phase

* first

* starts now

* catching more

* pause here, fix keep_item for ItemText class

* getting close

* adjust consumable quantity to refill per Legit

* fix import, refactor tp scroll tracking

* fixed property checking

* merge master, fix discord embed

* move tp charge setter

* properly track id scrolls after use

* fix accidental stashing

* fix sell_junk and chest_label bugs

* working on drognan instead of lysander

* a2 pathing, drognan support

* fix town-start to wp pathing, change key counting

* better drognan pathing

* comment out pather stuff

* restore old asset

* proper tp tracking

* revert key pickup to decrease need by 1

* fixing gambling, WIP

* working on gambling

* add comments to transfer_items

* add comments to transfer_items

* gambling semi-working, not stashing right

* simplify gambling process

* incorporate OCR gold reading to gamble, WIP

* gambling is painful

* simplified gambling - ~done

* finally finished gambling!

* fix diablo inventory check

* do not fail purchasing routine if item template is not seen

* fix condition

* deprioritize keys, scrolls during pickit; stop clicking Misc tab at repair

* cleanup

* init

* add support for grayscale + color_filtered

* cleanup logic

* only generate grayscale templates if use_grayscale=True

* simplify template_gray logic

* fix false detection of out of gold

* gambling with OCR was too buggy--replace with max gamble item count

* cleanup
2022-03-05 17:47:50 -05:00
Vladimir Makaev 32d7dc2e2a Documentation: Improve readme documentation in general section
Improve the README.md [general] documentation
2022-02-27 23:12:32 +00:00
Vladimir Makaev 37d41ed008 Enhancement/bugfix: Add override_capabilities param to workaround problems with autodetection (#600) 2022-02-27 16:39:08 -05:00
Kellen Stuart 5e55872668 Make improvements 2022-02-26 14:59:49 -07:00
Ezro a299051ecd Bugfix: Fix shopper scripts (#592)
* Fix anya shopper

* Fix drognan.py
2022-02-26 13:22:31 -05:00
Ezro 7056a58958 Enhancement/bugfix: Create find_and_set_window_position in screen.py to be used during testing (#591) 2022-02-26 12:23:26 -05:00
Ezro 006fb6516f Bugfix: Prevent psutil search for a negative process_id (#593) 2022-02-26 12:23:02 -05:00
mgleed 04b3367935 Bugfix: Restore for loop in gamble (#586) 2022-02-26 10:36:28 -05:00
mgleed 32f67d56df Bugfix: Missing import for i_char (#590) 2022-02-26 10:35:00 -05:00
49669e9919 Bugfix: Gambling won't start
* 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

* bugfix

* remove redundant for loop, use set_gold_full

* fix merge

* simplify

Co-authored-by: aeon0 <[email protected]>
Co-authored-by: mgleed <[email protected]>
2022-02-23 20:59:12 -05:00
mgleed ad2cb6a365 Bugfix: Jamella, Halbu, Fara positions (#581)
* Temporary bugfix: Jamella and Halbu roi's poses

npc_manager.py needs roi updates for jamella and halbu as they were statically calculated based on pose positions from a4_vendor, but Skizot updated Jamella pathing and thus these no longer work.

Gonna delete the roi's and pose positions until this can be done--it'll just search by original algorithm for NPc detection in the meantime.

* noticed the same behavior with Fara :(
2022-02-23 20:25:38 -05:00
mgleed 98f69211c1 Bugfix: Properly dismiss NPC dialogue (#584)
* Bugfix: Properly dismiss NPC dialogue

Thought this was fixed in #582 but it seemed to work only in some scenarios. This change is more robust.

* Remove debug line
2022-02-23 20:22:22 -05:00
mgleed 8515b6da92 Refactor: Rearrange inventory functions, code cleanup (#577)
* init

* cleanup, fix messanger typo

* cleanup

* rename player. to personal.

* saved

* merge artifact
2022-02-23 20:20:54 -05:00
mgleed 47993f141c Bugfix/enhancement: Function to show all ScreenObjects (#582)
* init

* cleanup

* cleanup

* bugfix. ran 8 hours without error after this
2022-02-23 10:03:11 -05:00
mgleed 9726690c07 Bugfix: Save/exit error (#579)
Fix bug where save/exit routine would pass an empty template match
2022-02-22 23:01:45 -05:00
mgleed f37c916e72 Bugfix: Suppress warning if no discord webhook set (#571)
* suppress warnings for no discord webhook

* rearrange

* Update discord_embeds.py

* Update generic_api.py

* Update generic_api.py
2022-02-21 23:56:55 -05:00
mgleed 994646d811 Bugfix: Made corpse pickup more robust (#575) 2022-02-21 21:09:57 -05:00
mgleed c8eb88f672 Feature: OCR for item drops and item description boxes (#570)
* initial

* bugfixes. now stable & testing

* narrow ROI to search for 'CLICK TO' tooltip
2022-02-21 19:54:29 -05:00
Legit 8fa729ddab Bugfix: Missing template finder for blizz sorc nihlathak (#574)
added missing template finder after ui merge.
2022-02-21 18:25:32 -05:00
Ezro 59d0795153 Bugfix: Fix bug with screen offset detection in fullscreen (#573) 2022-02-21 01:18:04 -05:00
Legit 69d546f5ee Enhancement: Update default params (#554)
* Params Default Update

Updated some settings as new defaults including changing generic_api to discord.
2022-02-20 23:43:27 -05:00
mgleed 9b22917660 Refactor: UI overhaul (#558)
Summary of changes:
-Rearranged many UI-related functions across the codebase (particularly in ui_manager.py) into individual components. See src/ui_components/. Functions related to components can be called like if waypoint.use_wp("Arcane Sanctuary"): or loading.wait_for_loading_screen(2.0)
-Removed Screen and TemplateFinder dependencies across the codebase
-Screen functions separated from class
-TemplateFinder made into a singleton
-Added generic ScreenObject UI functions to simply detect UI elements on screen; e.g., detect_screen_object(ScreenObjects.TownPortal), wait_for_screen_object(ScreenObjects.Loading, 2). Also included related functions like select_screen_object_match(template_match) to automatically select the match.
-Consolidated assets. Organized templates folder into components. Adjusted some asset ROI's and alpha channels.
-Changed some template searches to grayscale for speed
-Reworked save/exit routine, should now be more consistent and faster with normal exit, chicken exit, and death exit.
-Got rid of unused and consolidated duplicate game.ini parameters
-spelling fix _last_merc_healh
-NPC manager class removed and replaced with functions
-D2 window detection now runs on its own thread for semi-live window position offsets.
-Character selection reworked. OCR your selected character for fun (not that accurate, lol)
-Simplified game start and difficulty select
-Added a get experience function, but this is not called anywhere yet
-Reworked corpse pickup. pickup_corpse is no longer a necessary argument/parameter throughout the codebase (bot.py, game_controller.py, runs, etc.)
2022-02-20 18:49:04 -05:00
mgleed cd979b3e4a Bugfix: check capabilities after corpse pickup (#567) 2022-02-19 21:54:45 -05:00
Vladimir Makaev 528400503c Enhancement: Ability to customize window properties to look for when win32 api searching for d2r window (#563) 2022-02-18 12:27:31 -05:00
mischavandenburg 59c8a898b7 corrected spelling mistakes (#566) 2022-02-18 12:03:34 -05:00
mischavandenburg 637920fc4e Feature: Added 46 uniqe / set items to pickit (#552)
by @mischavandenburg
2022-02-17 15:03:00 -05:00
Vladimir Makaev 3985817b19 Merge pull request #556 from aeon0/mgleed-patch-1
Bump to 0.6.7
2022-02-17 11:14:26 +00:00
mgleed 51c7216068 Revert "Speed up save_and_exit (#555)" (#560) 2022-02-16 22:55:30 -05:00
Ezro 196f99e5e6 Speed up save_and_exit (#555)
* Replace search and mouse click with keyboard sends

* Hardcode x,y and 'double click'

* Remove hardcode x, y since it's not guaranteed to be accurate
2022-02-16 20:28:11 -05:00
mgleed 92300818c3 Bump to 0.6.7 2022-02-16 00:20:05 -05:00
404 changed files with 56747 additions and 5771 deletions
+5 -10
View File
@@ -5,16 +5,16 @@ jobs:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Setup Miniconda Python 3.9
- name: Setup Miniconda Python 3.10
uses: actions/setup-python@v2
with:
python-version: 3.9
python-version: '3.10'
# TODO: The below setp only chaches conda packages, need to cache pip seperatly
- name: Cache conda
uses: actions/cache@v2
env:
# Increase this value to reset cache if environment.yml has not changed
CACHE_NUMBER: 0
CACHE_NUMBER: 1
with:
path: ~/conda_pkgs_dir
key: conda-${{ env.CACHE_NUMBER }}-${{hashFiles('environment.yml') }}
@@ -22,14 +22,14 @@ jobs:
uses: actions/cache@v2
env:
# Increase this value to reset cache if environment.yml has not changed
CACHE_NUMBER: 0
CACHE_NUMBER: 1
with:
path: ~/pip
key: pip-${{ env.CACHE_NUMBER }}-${{ hashFiles('environment.yml') }}
- name: Install Miniconda
uses: conda-incubator/setup-miniconda@v2
with:
python-version: 3.9
python-version: '3.10'
activate-environment: botty
channel-priority: strict
environment-file: environment.yml
@@ -50,8 +50,3 @@ jobs:
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
+100 -93
View File
@@ -4,9 +4,9 @@ Pixelbot for Diablo 2 Resurrected. This project is for informational and educati
[**Download here**](https://github.com/aeon0/botty/releases) and got to have a [**Discord**](https://discord.gg/Jf3J8cuXWg) nowadays I guess :man_shrugging:
## Getting started & Prequists
- D2r needs to be in English Language,
- Botty currently works with 720p D2r window (will be adjusted automatically on auto settings)
## Getting started & Prerequisites
- 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
@@ -15,103 +15,108 @@ All settings will automatically be set when you execute `main.exe` and press the
### 2) Supported builds
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!
Check the documentation for **params.ini** further down. Different Sorc builds, Hammerdin, 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 any of Act 3, 4 or 5 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 **params.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) (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.
## Development
Check out the [development.md](development.md) docu for infos on how to build from source and details of the project structure and code.
## Support this project 💓
You can support this project by giving feedback, reporting bugs, or creating pull requests.
Contributions are welcome, and we encourage you to contribute to this project if you would like to help out. Botty is a open source project and almost excessively maintained by contributors (there has been 50+ contributors! <3). In our [**discord**](https://discord.gg/Jf3J8cuXWg) there is a contributor role, and you can ping one of the admins and ask for the role to talk to other contributors! Though you don't need to be in the [**discord**](https://discord.gg/Jf3J8cuXWg) to contribute, we do encourage you to do so.
## Graphic Debugger
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
## params.ini
Check out the [development.md](development.md) docu for infos on how to build from source and details of the project structure and code.
## param.ini
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:
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 **params.ini** changes to the new version. Example:
```ini
; custom.ini - overwrites 3 params in the param.ini
; custom.ini - overwrites 2 params in the params.ini
[general]
name=MyCustomName
[routes]
run_pindle=1
run_shenk=0
order=run_pindle, run_eldritch
```
| [general] | Descriptions |
| -------------------- | --------------------------|
| name | Name used in terminal and discord messages |
| 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) |
| difficulty | Set to `normal` `nightmare` or `hell` for game difficulty. |
| name | Name used in terminal and discord messages. |
| randomize_runs | Randomize the order of `[routes]` specified in `params.ini`. |
| saved_games_folder | [Optional] Defaults to `~\Saved Games\Diablo II Resurrected`. Used to store configuration settings for `f9` / auto settings. |
| custom_loot_message_hook | Add your message hook here (such as Discord channel) to get info about loot |
| custom_message_hook | Add your message hook here (such as Discord channel) to get info about botty status updates, discord webhook is default. |
| discord_log_chicken | Set to `1` to enable messages about bot chickens, `0` to disable. |
| discord_status_count | Number of games between discord status messages being sent. Leave empty for no status reports. |
| message_api_type | Which api to use to send botty messages. Supports "generic_api" (basic discord), or "discord" (discord embeds with images). |
| break_length_m | Break for `break_length_m` minutes every `max_runtime_before_break_m` minutes |
| max_runtime_before_break_m | ^ |
| d2r_path | [Optional] Path to `d2r.exe`. If not set, it will default to `C:\Program Files (x86)\Diablo II Resurrected\D2R.exe` when attempting to restart. |
| max_consecutive_fails | Botty will stop making games if the number of consecutive fails reaches this max value. |
| max_game_length_s | Max game length in seconds. Botty will attempt to stop whatever it's doing and try to restart a new game at specified interval. If this fails, botty will attempt to shut down D2R and Bnet. |
| 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). |
| 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... |
| [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_nihlathak | Run Nihlathak 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 in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
| order | List of runs botty should do. These will be run in the the order listed unless `randomize_runs` is set to 1. Possible runs: </br> run_trav, run_pindle, run_eldritch, run_eldritch_shenk, run_nihlathak (requires teleport), run_arcane (requires teleport), run_diablo (requires teleport, only hammardin)
| [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" |
| 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! |
| cta_available | 0: no cta available, 1: cta is available and should be used during prebuff |
| num_loot_columns | Number of columns in inventory used for loot (from left!). Remaining space can be used for charms |
| force_move | Hotkey for "force move" |
| inventory_screen | Hotkey to open inventory |
| 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 |
| show_belt | Hotkey for "show belt" |
| show_items | Hotkey for "show items" |
| stand_still | Hotkey for "stand still". Note this can not be the default shift key as it would interfere with the merc healing routine |
| teleport | Hotkey for teleport (set blank if your character can't teleport) |
| town_portal | Hotkey for town portal |
| 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_order | Hotkey for battle orders from cta (only needed if cta_available=1) |
| battle_command | Hotkey for battle command from cta (only needed if cta_available=1) |
| min_gold_to_pick | Minimum quantity of gold to pickup (also must set misc_gold=1 in pickit config) |
| 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_nihlathak | Attack length for hdin or number of attack sequences for sorc when fighting nihlathak |
| atk_len_pindle | Attack length for hdin or number of attack sequences for sorc when fighting pindle |
| atk_len_shenk | Attack length for hdin or number of attack sequences for sorc when fighting shenk |
| atk_len_trav | Attack length for hdin fighting trav (note this atk length will be applied in 4 different spots each) |
| 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 |
| 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 | Attack length for hdin or number of attack sequences when fighting Diablo in Chaos Sanctuary |
| cs_mob_detect | If 1, it will attempt to use holy freeze from merc / conviction aura / poison to detect nearby mobs to help speed-up CS run.
| cs_town_visits | CURRENTLY BROKEN, LEAVE AT 0 FOR NOW |
| 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) |
| belt_hp_columns | Number of belt columns for healing potions |
| belt_mp_columns | Number of belt columns for mana potions |
| belt_rejuv_columns | Number of belt columns for rejuv potions |
| 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 |
@@ -120,78 +125,91 @@ run_shenk=0
| 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 |
| 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. |
| enable_no_pickup | When enabled, will type `/nopickup` into chat at game start, which can help reduce accidental pickups especially for walking characters. |
| 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
| id_items | Will identify items with tome of ID or at Cain if enabled |
| open_chests | Open up chests in some places. E.g. on dead ends of arcane. |
| pre_buff_every_run | 0: Will only prebuff on first run, 1: Will prebuff after each run/boss |
| runs_per_repair | Force repair after `runs_per_repair` of runs. Set to 0 to repair only when needed. |
| 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) |
| sell_junk | 0: Discard unwanted items by dropping them on ground. 1: Discard items by selling them at vendor. |
| [transmute] | Descriptions |
| ------------------ | -------------------------------------------------------------------------------------------------|
| 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)
| transmute | Add any or all of `chipped, flawed, standard, flawless` to trasmute gems of these types |
| 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 |
### Builds
| [sorceress] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| teleport | Required Hotkey for teleport |
| 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 |
| static_field | Optional Hotkey for static field |
| telekinesis | Optional Hotkey for telekinesis |
| [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) |
| frozen_orb | Optional Hotkey for frozen orb (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) |
| ice_blast | Optional Hotkey for ice_blast (must be bound to left skill) |
| [nova_sorc] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| nova | Required Hotkey for Nova (must be bound to right skill) |
| [hammerdin] | Descriptions |
| [hydra_sorc] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| alt_attack | Required Hotkey for any alternate attacking skill. Fireball,Lightning,Frozen Orb, etc. (must be bound to right skill) |
| hydra | Required Hotkey for Hydra (must be bound to right skill) |
| [paladin] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| teleport | Optional Hotkey for teleport. If left empty hammerdin will run instead of teleport. |
| concentration | Required Hotkey for Concentration |
| cleansing | Optional Hotkey for Cleansing |
| 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 |
| [fohdin] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| blessed_hammer | Hotkey for Blessed Hammer. (Optional. Bind to left skill) |
| concentration | Hotkey for Concentration |
| conviction | Hotkey for Conviction |
| foh | Hotkey for Fist of Heavens (Required) |
| holy_bolt | Hotkey for Holy Bolt (Required) |
| [hammerdin] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| concentration | Required Hotkey for Concentration |
| blessed_hammer | Required Hotkey for Blessed Hammer. (must be bound to left skill!) |
| [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 |
| cloak_of_shadows| Optional Hotkey for Cloak of Shadows |
| mind_blast | Optional Hotkey for Mind Blast |
| fade | Optional Hotkey for Fade |
| lightning_sentry | Required Hotkey for Lightning Sentry |
| shadow_warrior | Optional Hotkey for Shadow Warrior |
| skill_left | Optional Hotkey for Left Skill |
| [barbarian] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| teleport | Optional Hotkey for teleport. If left empty barb will run instead of teleport. |
| cry_frequency | Time in seconds between each cast of war_cry. Set to 0.0 if max fcr should be used |
| find_item | Optional Hotkey for Find Item |
| 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 |
@@ -199,19 +217,8 @@ run_shenk=0
| 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 |
| damage_scaling | Adjusts time spent casting attack skills. Ex: 2 will cast twice as long |
| clear_pindle_packs | Clears mobs before pindle |
| [advanced_options] | Descriptions |
| -------------------- | --------------------------------------------------------------------- |
| pathing_delay_factor | A linear scaling factor, between 1 and 10, applied to pathing delays. |
| message_headers | Headers that are sent with each messages |
| message_body_template | Message body of the post message sent |
## Support this project
Support it by contributing in any technical way, giving feedback, bug reports or submitting PRs.
+2 -1
View File
@@ -45,5 +45,6 @@
"Always Run": 1,
"Quick Cast Enabled": 0,
"Display Active Skill Bindings": 0,
"Lobby Wide Item Drop Enabled": 1
"Lobby Wide Item Drop Enabled": 1,
"Item Tooltip Hotkey Appender": 1
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 802 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
{
"name": "botty",
"savepath": "../"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

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