Skip to content
This repository has been archived by the owner on Jul 1, 2022. It is now read-only.

Releases: aeon0/botty

Botty v0.8.1

21 Jun 23:56
Compare
Choose a tag to compare

Bugs fixed

  • variety of adjustments made to default.nip file
  • Improve mod copying from botty assets to d2r folder
  • Bake some config validation for d2r_path
  • Various improvements to nip parser
  • Fix bug that char will not id items even if supposed
  • Merc chicken = 0 caused players to chicken when merc died, botty now continues the good fight if merc chicken is 0
  • Issues related to pathing and HUD position
  • Handful of others

Known issues

  • Some of the more obscure character classes aren't functioning as well (Horker barb). Will be working on these
  • Sometimes target detect will think that valkyrie/shadow master/skeleton health bars are targets
  • Sometimes target detect will attempt to attack "Immune to poison" text
  • Handful of others

Full Changelog: v0.8.0...v0.8.1

v0.8.0

17 Jun 00:04
69c9ec4
Compare
Choose a tag to compare

NIP (BNIP) Integration!

I know you're probably thinking--wait, didn't you just release 0.7.4? The 0.7.4 release was just published in an effort to make a semi-stable version prior to this... massive update! There was a ton of refactoring as you can see below. While we've worked hard to squash bugs before release with multiple testers, you may run into bugs. Please report bugs on discord or in github issues. If you need help, try the support channel on discord. Most of the work for this PR was done by @Ezro and @Riddle1001, well done! Special thanks to @D2RLegit Sosa and others as well!

image
image

Botty has used OCR to some extent for months, but we are finally ready to use it for item detection and item property filtering. To this end, we've integrating NIP (Njaguar's Item Parser) syntax to handle logic for item pickup and item stashing once identified. NIP was used in other bots such as Kolbot. Botty NIP (BNIP) is an extended version of NIP and is (mostly) backwards compatible. See the README documentation for more details.

image

Because Botty now uses exclusively OCR for item finding, template file assets are no longer required. This has reduced Botty's filesize and file count significantly.

The default pickit file is fairly comprehensive and intended for mid-ladder use--feel free to adjust as you desire or put your own .nip files in config/nip/ directory. You no longer need to maintain pickit info in your custom.ini files.

Mods

Starting with 0.8.x, Botty will now leverage mods. You won't see the effects of the mods much in 0.8.0 but you may see more show up over time. Mods were implemented in this release mostly to make OCR more reliable (notice the font change and item word spacing). Mods are installed by pressing F9. If mods fail to install or if they fail to show up in-game, you might have to manually move files to botty directory and add the d2 launch options on your own. The default launch options are found under [advanced_options] in the params.ini file.

Fortunately there's no indication that using mods offline is a problem, but if you are uncomfortable with mods, then that's understandable. I will plan to implement small bugfixes and maintain 0.7.x briefly while actively developing 0.8.x.

Other changes

  • There have been some significant improvements to overall performance particularly with pickit routines. You won't want to miss the performance boost!
  • All logs, screenshots, stats, etc are now saved under log/ directory
  • Path finding from Eldritch to Shenk is still a work in progress, but it should get lost less frequently now right after finishing Eldritch.
  • Revert: paladin timeout on trav by @mgleed in #874
  • New param called safer_routines which will be leveraged in runs / character routines for optional movements for character safety. Intended to help hardcore players. Framework is there but currently only implemented on pindle.

On the horizon for 0.8.x

  • Shopper bots need overhaul now that OCR is used for item properties. (volunteers?)
  • i_char.py and character routine refactoring to allow for easier, cleaner coding (me)
  • Navigation by automap (@roozhou and @jagarop )
  • Less getting "lost" after picking (@jagarop )
  • Config (custom.ini, params.ini, etc) overhaul
  • Optimizations/performance
  • More to come!

If you want to view the full changelog, it'll probably freeze your browser, but you can try by clicking the link below:
Full Changelog: v0.7.4...v0.8.0

Botty v0.7.4

14 Jun 21:39
899bcdb
Compare
Choose a tag to compare

Breaking changes

Params.ini has adjusted the following, please adjust your local params.ini or custom.ini files accordingly:

  • Under [char], tp= was changed to town_portal=
  • Characters with a teleport= param have now all been consolidated, so teleport= can now be found under [char]
  • Paladin is now base class of hammerdin and fohdin. If you run paladin character, you'll likely have to adjust the positioning of your keybinds. See params.ini.

Project now uses python 3.10 rather than python 3.9. If you run from source, you'll need to rebuild your local conda environment.

Params.ini updates

  • In addition to the breaking changes above...
  • There's now a specific parameter custom_loot_message_hook= if you want to send loot to another channel. Thank you @egut125
  • Chicken logging can now be disabled by setting discord_log_chicken=0 in params.ini
  • You can enable/disable the /nopickup command at the start of the game with enable_no_pickup= in params.ini. Thank you @D2RLegit
  • You can now list what types of gems (chipped, flawless, etc.) you'd like to transmute with transmute=. Thank you @badbrad2889

New builds:

  • FOH paladin with basic mob detection. Thank you @jagarop
  • Better basic and ranged classes with precasting. Thank you @SdxHex
  • Bone necro. Thank you @slapchop58
  • Hydra sorc. Thank you @egut125

Build changes:

  • Hammerdin now can use basic mob detect during chaos sanctuary, see cs_mob_detect param. Thank you @jagarop

Optimizations

  • Faster save/exit. Thank you @roozhou
  • Faster nihlathak. Thank you @D2RLegit
  • Better template_finder code.
  • Better random tp during failed pathing. Thank you @roozhou
  • Faster exit when Trav is last run. Thank you @reqyl
  • screen.grab() now caches screen images so no repeat grab operation if last taken within 40 ms (1 frame). Thank you @aeon0
  • Better pathing for walkers in Trav. Thank you @D2RLegit

Bug fixes:

  • Cleaned up assets/templates at Shenk and Travincal. You may still have some failed runs, but these should hopefully be improved slightly. Thank you @D2RLegit
  • Fixed shift being held if character is out of gold. Thank you @aeon0
  • Now detects multiple items in shopper.py rather than just the first.
  • More robust corpse pickup, also support for non-ASCII names. Collab with @D2RLegit
  • Act 2 town TP after arcane should now be more reliable and result in less failed runs. Collab with @D2RLegit
  • Hopefully fixed cain identification. Thank you @reqyl
  • character select active asset ignored hardcore and ladder characters
  • Fixed messenger generic_api. Thank you @xw220
  • Fixed game recovery not appropriately selecting online/offline tab or desired character. Thank you @roozhou
  • Fixed NoneType error messages if api or hook not set
  • Fixed trav node 300 (inside building) sometimes not being detected.
  • Fixed vigor being inappropriately activated by walking/charged TP chars. Thank you @drallcom3

Other:

  • More testing and test cases, which should help with development
  • Added error handling for missing params inside config files. Thank you @Riddle1001
  • Warn users if non-ascii chars in botty path, windows username, etc.
  • Added assets for Sazabi set. Thank you @NeoIsrafil
  • Readme cleanup

New Contributors

Full Changelog: v0.7.3...v0.7.4

Botty v0.7.3

21 Apr 00:10
bae1f02
Compare
Choose a tag to compare

Breaking changes

  • params.ini has changed like so, you don't toggle routes with 0 or 1 anymore:
[routes]
; Add these possible routes to "order" to run them:
; run_trav
; run_pindle
; run_eldritch
; run_eldritch_shenk
; run_nihlathak
; run_arcane
; run_diablo
order=run_pindle, run_eldritch_shenk

New features

  • Poison necro config by @D2RLegit in #597
  • Config variables by @Aimware0 in #651
  • Leveraging OCR to read exp and track in game_stats by @egut125 in #662
  • Runtime breaktime tracking by @egut125 in #665
  • Feature/enhancement: Support for D2R launch options and cosmetic mods by @mgleed in #677

Enhancements

  • Bugfix/enhancement: Fix ocr output wordlist check, replace difflib with Lev by @mgleed in #658
  • Enhancement: Use keyboard to select difficulty by @roozhou in #661
  • added logged colors by @Aimware0 in #663
  • Enhancement/bugfix: Refactor checks for item transferring by @mgleed in #673
  • Remove gems from item logging #4 by @jagarop in #686
  • Condsensed discord message will be the only option by @D2RLegit in #687
  • Kill BlizzardError.exe by @tomoyo233 in #688
  • feat/run-qol by @aeon0 in #707
  • feat/restricted-mouse-clicks by @aeon0 in #709
  • Updated pot drinking logic by @Aimware0 in #710

Bugfixes

  • error handling for common belt error by @Aimware0 in #664
  • Bugfix: Custom config parse by @mgleed in #668
  • Removing percent calc in player_bar by @egut125 in #670
  • Update messages to have better values by @egut125 in #671
  • Update OCR model for large numbers by @mgleed in #674
  • Bugfix: Corpse pickup broken after Exp implementation by @mgleed in #675
  • Quick list manipulation to remove anything before experience in the list by @egut125 in #679
  • Divide by zero fix by @egut125 in #680
  • Placing list manipulation inside try block by @egut125 in #681
  • Extra space by @egut125 in #682
  • Bugfix: renamed mod folder from ifilter to botty and narrowed rmtree by @mgleed in #690
  • old ui overhaul time out modified for pnova necro by @D2RLegit in #693
  • missed pnova overhaul fixed by @D2RLegit in #694
  • Bugfix: Item tooltip obscuring close button by @mgleed in #699
  • BugFix: Allow 2 lines of tooltip by @roozhou in #702
  • Bugfix: Create mod folder if it doesn't exist by @aeon0 in #701
  • Bugfix: False empty stash tabs due to item tooltip by @mgleed in #703
  • fix: Remove ; by @aeon0 in #706
  • BugFix: Fix indicator_location_to_tab_count by @roozhou in #708
  • Fix: Increase item drop padding from 1 to 2 spaces, pad gold by @mgleed in #711
  • Bugfix: Default pickit errors with berserker axe and war pike by @mgleed in #715
  • Disable mods for planned upcoming stable release by @mgleed in #718
  • Bugfix: Cain loop, etc. with return_to_play() function by @mgleed in #717
  • Fix: Recapture some templates for d2r v2.4 by @mgleed in #713

New Contributors

Full Changelog: v0.7.2...v0.7.3

v0.7.2

20 Mar 01:15
badb0d4
Compare
Choose a tag to compare

New features:

  • Bugfix/enhancement: Optimize waits; implement wait_for_expiration(ScreenObject) function by @mgleed in #629
  • Bugfix/refactor: Safer screen transitions for laggy setups by @mgleed in #641
  • Feature: Use OCR for gold pickit by @mgleed in #643
  • Tweaked light sorc attack sequence by @Steve6030 in #644
  • Improved eld attack sequence for Blizz sorc by @D2RLegit in #608

Bug fixes:

  • Bugfix: Prevent join for NoneType and start_detecting_window() in main.py by @Ezro in #624
  • Bugfixes: Quantity: parse fail handling, if in-game icon not found during return_to_play() by @mgleed in #623
  • Bugfix: Laggy inventory loading by @mgleed in #625
  • Bugfix: log_item_keep without game_stats by @mgleed in #627
  • Bugfix: Stash tab gold was being read based on prior stash tab image by @mgleed in #628
  • Bugfix/refactor: Search for open panels instead of skill icons by @mgleed in #631
  • Bugfix/refactor: Arcane run doesn't turn off health_monitor when in town by @mgleed in #635
  • Bugfix: Some NPC's don't open to misc tab by @mgleed in #642
  • Bugfix: Stash tab counts not tracking by @mgleed in #646

Etc.

  • Note for num loot by @D2RLegit in #637
  • added error handling for custom.ini when missing section header by @Aimware0 in #647
  • Remove: Codecov by @aeon0 in #632

New Contributors

  • @Aimware0 made their first contribution in #647

Full Changelog: v0.7.1...v0.7.2

Botty v0.7.1

10 Mar 00:57
cb13933
Compare
Choose a tag to compare

What's Changed

  • Bugfix: Tome discrepancies on some platforms by @mgleed in #611
  • Bugfix: Lack of item tooltip causing item_cropper errors for users who turn it off by @mgleed in #612
  • Bugfix: crop_item_descr failing on some items by @mgleed in #613
  • Bugfix: Stash is full message error by @mgleed in #614
  • Bugfix: Gold stashing by @mgleed in #615
  • Enhancement: Cleanup botty startup. Add version to debug log. by @mgleed in #616
  • Bugfix: Avoid entering town portals while walking in town by @mgleed in #617
  • Bugfix: Chicken if stats/skill icons pop up to avoid accidental allocations by @mgleed in #618
  • Bugfix: Some vendor items obscured by tooltips by @mgleed in #619
  • Bugfix: Game recovery after D2 restart by @mgleed in #620

Full Changelog: v0.7.0...v0.7.1

Botty v0.7.0

06 Mar 21:06
6b7ae34
Compare
Choose a tag to compare

Botty v0.7.0

This release should significantly improve your runtimes; however, there have been significant changes since 0.6.7, so bugs are to be expected with rollout of major changes.

Features

Towning overhaul

-Now checks items every pickup and decides to drop, ID, sell, or stash at the start of towning, so no longer will go to the stash needlessly
-Added a sell_junk char config, set to 0 if you want to drop all items that won't be kept, to 1 to sell all items that won't be kept
-When purchasing items, will use "shift" click to buy stacks if appropriate
-Consolidated certain inventory functions to transfer_items() function
-Reduced various redundant or excessively frequent actions with towning/shopping

Item identification

-Now supports tome of ID in inventory and will utilize if present, otherwise will utilize cain if id_items config parameter = 1
-Will skip identification of items that have no filtered properties in pickit.ini; e.g., if you have uniq_amulets=1 without any inclusion or exclusion properties it will pickup and keep but not identify. If you have other items that need ID and you are using Cain, however, this may be overridden
-No item filtering with OCR yet implemented, but this is planned. If logg_lvl=debug in your params, you will see OCR output for item tooltips

Consumables

-Now supports key count tracking in inventory. Keep your key in your reserved part of inventory where you tomes, etc. are.
-TP, ID, and key counts are now tracked with potion counts, utilizes OCR with open inventory
-Will buy TP, ID, and keys from vendors as needed
-Smarter tracking of consumables during and after runs, should be more accurate now
-No longer sells/buysback tome of TP during repair
-Current limitation in act 2 for buying keys as Drognan doesn't sell keys

Pickit

-Will now pickup TP scrolls, ID scrolls, and keys if these are needed and if you have these set to 1 in the pickit.ini config file.
-Keys, scrolls, and gold are lower priority during pickit sequence
-Added various set and unique items to pickit

Gambling

-Simplified logic
-Now gambles a set number of times rather than attempting to completely drain stash
-Plans to improve gambling further prior to 0.8.0

Other

-Big overhaul to codebase mostly revolving around UI
-Added color_match (color_filter) as a parameter to template_finder.
-Improved corpse detection / corpse pickup
-Updated readme to be more descriptive / user-friendly
-Speedup save and exit
-Discord will send picture of every kept drop as well as the read OCR text

Bug Fixes

-Included parameter override_capabilities= in params.ini for those experiencing problems with discover_capabilities()
-Discord status updates should now show correct total item counts from runs
-Suppress warning if discord webhook not set
-No more tome problems at repair vendor because this has now been replaced with scroll purchase as discussed above
-(Many others I can't remember)

Known bugs remaining

-Some items may show as duplicates in pickup given recent changes to item identification / handling
-Some people experiencing escape loop at Cain when identifying. Best way around this is to just use an ID tome in inventory until a fix is shipped.
-Anya/drognan shopper will not inspect every item of the same type, just the first found.

Contributors:

-Special thanks to all the contributors, particularly @Ezro for a lot of heavy lifting for this release.
-@mischavandenburg made their first contribution in #552
-@Kellen-Stuart made their first contribution in #595

Botty v0.6.7

15 Feb 20:09
f95d220
Compare
Choose a tag to compare

What's Changed

  • Bugfix: Diablo/chaos error if redemption key not set @jobithu in #550
  • Bugfix: Rare error with pickit after killing Diablo by @VladimirMakaev in #551
  • Bugfix: Shenk Tokyo Drift (Shenk should now work consistently for tele ammy and enigma hammerdins) by @mgleed in #548

Full Changelog: v0.6.6...v0.6.7

Botty v.0.6.6

15 Feb 02:20
75a7a7a
Compare
Choose a tag to compare

What's Changed

  • Refactor: Track nopickup status in GameStats and only /nopickup once by @Ezro in #534
  • Bugfix: Messenger has no attribute "send" by @mgleed in #544
  • Bugfix: Fix incorrect path offset for shenk. Optimize tele charges by @VladimirMakaev in #545
  • Enhancement: Diablo optimization & Killing Trash in Chaos Sancturay by @jobithu in #460
  • Enhancement: added more chest templates by @JohnStyleZ in #547

New Contributors

  • @Ezro made their first contribution in #534

Full Changelog: v0.6.5...v0.6.6

Botty v0.6.5

12 Feb 02:58
2e4b81c
Compare
Choose a tag to compare

What's Changed

Breaking changes
-Nihlathak spelling has been corrected/unified throughout the codebase, make sure your custom.ini files have the correct spelling #488
-Changed always_repair to runs_per_repair in params.ini #509
-Botty environment will need to be rebuilt if running from source.

Major features
-Option to gamble if stash gold is full #445
-Added support for nested logic and more item properties for item filtering (Advanced Pickit). See header of pickit.ini. #383
-Option to automatically transmute flawless gems with parameter transmute_every_x_game #491

Other features
-Option to fill shared stash tabs first (useful for HC characters) #472
-Decreased gold priority during pickit #502
-Optimized handling of teleport with charged items #476
-New parameter for max # of failed runs max_consecutive_fails #503
-OCR models with service now included for experimenting and for future updates #505

Fixes / minor adjustments
-Made D2 window detection using win32api default #453
-Improved Nihlathak pathing for lightning sorc #495
-Implement controller item spacing for better image segmentation, fewer false pickups #507
-Add more act 5 paths #506
-Prevent hook messaging errors from shutting down Botty #510
-Kill D2R when botty cannot recover and shuts down #511
-Various bugfixes and performance enhancements

New Contributors

Full Changelog: v0.6.3...v0.6.5